X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Fbatch.pa;fp=sw%2Fos8%2Fv3d%2Fsources%2Fextensions%2Fdectapes%2Fdectape2%2Fbatch.pa;h=239fae7366c8345a0c78d7b068bc46877051f5b8;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/os8/v3d/sources/extensions/dectapes/dectape2/batch.pa b/sw/os8/v3d/sources/extensions/dectapes/dectape2/batch.pa new file mode 100644 index 0000000..239fae7 --- /dev/null +++ b/sw/os8/v3d/sources/extensions/dectapes/dectape2/batch.pa @@ -0,0 +1,1641 @@ +/3 CONCISE OS8 BATCH PROCESSOR 1-AUG-1975 +/ +/ +/ +/ +/ +/ +/ +/ +/ +/COPYRIGHT (C) 1975,1977 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE +/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT +/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY +/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. +/ +/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER +/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED +/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH +/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ + /EF,RL,SR + +/ABSTRACT--- +/BATCH IS THE INITIALIZING PROGRAM FOR THE OS/8 BATCH +/PROCESSING MONITOR. TO SET UP A BATCH RUN, TYPE +/ .R BATCH +/BATCH WILL CALL THE COMMAND DECODER TO OBTAIN ITS +/PARAMETERS AND INPUT FILE LOCATION. + + VERSON= 7 + + + +/ BATCH SWITCHES: + +/C BATCH FROM CARDS +/E IGNORE KMON, CD, AND CCL ERRORS +/H HUSH (SUPPRESSES $JOB, #END, AND ECHOING) +/P BATCH FROM PAPER TAPE +/Q QUIET - NO BATCH LOG +/T FORCE BATCH LOG TO TELETYPE +/U UNATTENDED +/6 USE 026 CARD CODES (ONLY IF /C) + + +/MAINTENANCE RELEASE CHANGES BY S.R. ON 1-AUG-75: + +/1. CHANGED VERSION NUMBER TO 6 +/2. INCORPORATED V5A PATCH SEQ # 1 APR-75 DSN +/ ALLOWS BATCH TO PASS ALTMODE TO KBM +/3. INCORPORATED V5B PATCH SEQ #2 17-JULY-75 WSN +/ SLOWS BATCH DOWN WHEN READING FROM CARDS +/4. ALLOW BATCH TO IGNORE NULLS FROM BATCH STREAM +/ (PATCH TO BE PUBLISHED IN DSN.) +/5. SET BATCH SO THAT IT RESTORES OLD SOFTWARE CORESIZE +/ UPON NORMAL TERMINATION. + +/CHANGES BY S.R. ON 3-FEB-77: + +/1. ADDED HUSH SWITCH (/H) +/2. SAVED REST OF 7777 AROUND BATCH +/3. FIXED BUG CONCERNING MANUAL HELP NEEDED +/4. ALLOWED CORE IMAGE TO BE PRESERVED AFTER BATCH TERMINATION + /SYSTEM DEPENDENT PARAMETERS + + AMFLAG=17 /ALTMODE FLAG FOR KBM + CDREC=51 /COMMAND DECODER + KMREC=7 /KEYBOARD MONITOR + BUFFER=3000 + JSW=7746 /JOB STATUS WORD + DCB=7760 /DEVICE CONTROL BLOCK + MTWO=CLA CLL CMA RAL + MTHREE=CLA CLL CMA RTL + SYSTEM=7607 + MPARAM=7643 +/******************************************** + KEYMON=403 + BEGLN=1000 + PRINT=200 + XGLINE=1200 + BATCH=35 /REFERS TO KEYBOARD MONITOR!!!!!!! + BCHGO=46 /THEY MUST!!!!! BE CORRECT!!!!!! + CBATCH=4562 /CONTENTS OF LOC "BATCH" IN KEYBOARD MONITOR +/******************************************* + CDOVER=326 + CDBEGLN=1200 /CD BUFFER AREA + ANALYZ=202 /CD ANALYSIS + TYPE=1367 /ERROR OUTPUT ROUTINE + CGLINE=1002 + TT=21 /THESE REFER TO CD ASSEMBLY***VOLATILE*** + DVICE=43 /IF CD OR MAIN OS/8 ASSEMBLY CHANGES, + DEFALT=42 /V3D NOT NEEDED + LKUPSW=245 /V3D IF CONTENTS=0, IN SPECIAL MODE + OUTSW=41 /THESE VALUES MUST BE ALTERED ALSO. + NAMECT=31 + DEV1=33 + RESTRT=676 +/******************************************** + ORIGIN=5400 + PSKF=6661 /LE8 IOT'S + PCLS=6666 + RCRA=6632 /CARD READER IOT'S + RCSE=6672 + RCSD=6671 + RCSF=6631 + RCRD=6674 +/***************************** + /BATCH USES CERTAIN SYSTEM WORDS AS FLAGS AND STATUS +/INDICATORS. THEY ARE: + +/LOC. 07777. THIS IS USED AS THE BATCH IN PROGRESS FLAG. +/BIT 1 IS BATCH IN PROGRESS. (BIP) =1 MEANS BATCH IS ON +/BITS 6-8 HOLD THE FIELD WHERE BATCH IS SITTING +/BIT 10 IS USED BY BAT: TO SIGNAL IT HAS READ A DOLLAR SIGN +/BIT 11 IS USED BY THE COMMAND DECODER TO SIGNAL BATCH NOT THERE + +/THE JOB STATUS WORD USES BIT 3 AS AN INDICATOR AS TO +/WHETHER THE BATCH MONITOR IS CURRENTLY IN CORE. =1 MEANS +/THAT THE BATCH SYSTEM NEED NOT BE RE-READ. + +/BOSSW IS A FLAG WORD INTERNAL TO THE BATCH MONITOR. +/IT IS SET UP DURING BATCH INITIALIZATION. +/BIT 0: 1 IF USE OF PTR IS PROHOBITED DURING RUN +/BIT 1: 1 IF LPT OR TTY LISTINGS ARE TO BE SPOOLED +/BIT 2: 1 IF KMON AND CD ERRORS ARE NON-FATAL +/BIT 10: 1 IF LP08 IS OUTPUT DEVICE +/BIT 11: 1 IF OPERATOR IS NOT PRESENT + +/IF SYS IS INPUT, LOCATIONS 7774 AND 7775 IN THE TOP FIELD +/ARE USED AS POINTERS TO THE CORRECT DATA BLOCK ON THE +/SYSTEM DEVICE. THE BUFFER IS RE-READ WHENEVER THE +/BATCH MONITOR MUST BE RE-READ. + + SPLNUM= 7776 /SPOOL SEQUENCE NUMBER + SYCNT= 7775 /CHARACTER COUNT IN BUFFER + SYBLKN= 7774 /SYSTEM DEVICE BLOCK NUMBER + +/IF SPOOLING IS USED, LOC. N7776 IS USED TO HOLD THE +/XX IN 'BTCHXX.TM'. + +/BATCH INITIALIZER PAGE 0 + *16 +XR1, 0 +XR2, 0 +TEMP, 0 +TEMP2, 0 +COUNT, 0 +BOSCTL, 1101 /CONTROL WORD TO READ/WRITE BOS +CDFTOP, 0 +TOPCDF, HLT /CDF TO TOP FIELD + JMP I CDFTOP +T1, 0 +T2, 0 + PAGE + START, SKP + JMP BCHAIN /IF CHAINED TO + JMS I (GETCOR /DETERMINE CORE SIZE; PUT IN 7777 +BATASK, CIF 10 + JMS I [200 + 5 + 0211 /.BI ASSUMED EXT + SKP +BCHAIN, JMS I (GETCOR + DCA I [BOSSW + CDF 10 + TAD I [MPARAM+1 + AND (4 /GET /V SWITCH + SNA CLA /IS IT ON? + JMP .+3 /NO + JMS I [MESSG + VERMSG /PRINT BATCH VERSION NUMBER + CDF 10 + TAD I (7620 + DCA T1 /GET STARTING BLOCK + TAD I (7617 + SNA + JMP NOTSYS /NO FILE - BATCH FROM PTR OR CDR + AND [17 + TAD (MPARAM+3 /POINT INTO HANDLER TABLE + DCA T2 + TAD I T2 + CLL + TAD [200 /IS THE DEVICE SYS OR CORESIDENT WITH SYS? + SNL CLA + JMP INDERR /NO + TAD I T2 /GET DEVICE HANDLER ENTRY POINT + CDF 0 + DCA I (SYSINH /STORE AS BATCH INPUT HANDLER + JMS CDFTOP + TAD T1 + DCA I (SYBLKN + TAD (-601 + DCA I (SYCNT /SET UP PARAMETERS FOR INPUT FILE + CDF 0 + TAD (SYSIN-1 + JMP STODEV /INPUT DEV = SYS + +NOTSYS, TAD I (MPARAM + RTL /GET C FLAG IN SIGN BIT + SMA CLA + JMP NOTCDR + JMS I (CHANGE /SET 026/029 CARD CODE + TAD (CDR-1 + JMP STODEV /INPUT DEV = CDR + NOTCDR, TAD I [MPARAM+1 + AND (400 + CDF 0 + SNA CLA + JMP BATASK /NO INPUT SPECIFIED + STL RAR + DCA I [BOSSW /PTR INPUT FLAG + TAD (PTR-1 +STODEV, JMS I (MVINSB /MOVE THE PROPER ROUTINE INTO THE BATCH MONITOR + CDF 10 + TAD I [MPARAM+1 + CDF 0 + AND (210 /GET /Q AND /U SWITCHES + CLL RTL + RTL + RAL / /Q INTO LINK + SZA CLA + ISZ I [BOSSW /SET UNATTENDED BIT IF /U SPECIFIED + SNL + JMP .+3 /NO /Q + TAD (NULOUT-TTYOUT /EIGHTY-SIX THE BATCH LOG + JMP NOLPT/SET LPT MODE SO $MSG WILL ECHO + JMS I (LPTTST /DO WE HAVE AN LP, LS, OR LV LINE PRINTER? + JMP NOLPT /NO + CDF 10 + TAD I [MPARAM+1 + CDF 0 + AND (20 /CHECK /T SWITCH + CLL CIA + SZL CLA /SKIP IF /T SPECIFIED + TAD (BOSLPT-TTYOUT +NOLPT, TAD (TTYOUT + DCA I (OUTPUT /SET OUTPUT DEVICE TO TTY OR LPT OR NULOUT + RTL + TAD I [BOSSW + DCA I [BOSSW /AND SET FLAG + CDF 10 + TAD I [7600 + CDF 0 + SNA + JMP I (CONT /NO SPOOLING + AND [17 + DCA T1 + TAD T1 + TAD (DCB-1 + DCA T2 + CDF 10 + TAD I T2 + CDF 0 + JMP I (SPCONT + INDERR, JMS I [MESSG + NODEV + JMP BATASK + PAGE + SPCONT, SMA CLA + JMP BADSPL + TAD T1 + DCA I (SPLDEV + STL RTR + TAD I [BOSSW + DCA I [BOSSW +CONT, JMS I (EOPTN /CHECK FOR /E SWITCH + TAD (BATPTR /SET POINTER TO BATCH.SV + DCA FILPTR + CLA IAC /DO LOOKUP ON SYS + CIF 10 + JMS I [200 +K2, 2 +FILPTR, BATPTR + 0 /WHO CARES ABOUT THE LENGTH? + JMP NOBACH /BATCH FILE NOT FOUND + TAD I K7777 /PUT IN FIELD OF BOS + AND (70 + TAD (CDF 0 + DCA CDFBOS + TAD (201 + JMS I [SYS /READ AND ALTER KEYBOARD MON. + BUFFER + KMREC + /GET RECORD # OF BOS + JMS I [VERTST /GET VERSION OF MONITOR + TAD (EOINIT + AND (7400 + CLL RTL + RTL + RAL + TAD K2 + TAD FILPTR + DCA BOSREC /WE WILL RE-WRITE BOS LATER + TAD BOSREC /ALTER KEYBOARD MONITOR + DCA I (BUFFER+BATCH+3 /RECORD # + TAD CDFBOS + AND (70 /ALTER CONTROL WORD + TAD BOSCTL + DCA I (BUFFER+BATCH+1 + TAD BOSREC-1 + DCA I (BUFFER+BATCH+2 + CLA CLL CML RTL + TAD CDFBOS + DCA I (BCHGO+BUFFER /JMP TO CORRECT FIELD + TAD (BOS /START ADD. OF MONITOR + DCA I (BCHGO+BUFFER+2 /ENTRY POINT + TAD (4200 /RE-WRITE KEYBD. MON. + JMS I [SYS + BUFFER + KMREC + TAD (201 /READ IN COMMAND DECODER + JMS I [SYS + BUFFER /AND INSERT BOS RECORD + CDREC + TAD CDFBOS /NOW FILL IN THE COMMAND DECODER + DCA I (TT+BUFFER + TAD (CDBOS + DCA I (DVICE+BUFFER /ALLOW CD TO CHECK BATCH VALIDITY + TAD I (CDBOS + CIA /STORE COMPLEMENT ALSO + DCA I (OUTSW+BUFFER + CLL CML RTL /CREATE CIF CDF BATCH + TAD CDFBOS + DCA I (NAMECT+BUFFER + TAD (CDBOS + DCA I (DEV1+BUFFER + TAD (4200 + JMS I [SYS /RE WRITE CD. + BUFFER + CDREC + JMS I (SETH /SET HUSH IF /H SPECIFIED + CLA CLL CML RAR + TAD BOSCTL + JMS I [SYS /INPUT POINTERS SET UP. + ORIGIN&7400 +BOSREC, HLT + CLA CLL CML RTR /BATCH IN PROGRESS + JMS I [INCOR +K7777, 7777 + CLA STL RAR /4000 + DCA I (DOLFLG /SET FOR INITIAL $JOB + JMS I (MOVE /PUT IMAGE OF BOS INTO HIGH CORE + ORIGIN-7600 + ORIGIN +CDFBOS, HLT + ORIGIN + TAD (0160 /SET SPOOL FILENAME TO BTCHA0 + JMS CDFTOP + DCA I (SPLNUM +BATRET, CIF CDF 0 + JMP I [7605 + +NOBACH, JMS I [MESSG /BATCH.SV NOT THERE + NBATCH + JMP BATRET +BADSPL, JMS I [MESSG + SPLERR + JMP I (BATASK + PAGE + MESSG, 0 /MESSAGE PRINTING ROUTINE + CLA + CDF 0 + JMS I [CRLF /GENERATE CARRIAGE RET., LINE FEED + TAD I MESSG /ADDRESS OF ERROR MESSAGE + ISZ MESSG /POINT TO RETURN + DCA TEMP +MCONT, TAD I TEMP /GET TEXT CHARACTERS IN AC + CLL RTR + RTR + RTR + JMS PCHAR /PUNCH IT + TAD I TEMP + JMS PCHAR /SECOND OF TWO. + ISZ TEMP /NEXT TEXT WORD + JMP MCONT /CONTINUE + +PCHAR, 0 /ROUTINE TO UNPACK AND PRINT TEXT + AND [77 + SNA /0 TERMINATES THE LIST + JMP MSGXIT /UNCLEAN RETURN, BUT WHO CARES? + TAD (-37 /SEPARATE DIGITS FROM ALPHAS + SNA + JMP PCRLF /_ IS SPECIAL CHAR + SPA + TAD (100 /MAKE IT ALPHABETIC + TAD (237 + JMS I (TTYOUT + JMP I PCHAR +MSGXIT, TSF + JMP MSGXIT + JMP I MESSG + +PCRLF, JMS I [CRLF + JMP I PCHAR + LZERO=0 +GETCOR, 0 /ONCE ONLY ROUTINE TO DETERMINE CORE SIZE + TAD I (7777 /GET CORE-SIZE WORD + RTL /PUT BATCH IN-PROGRESS BIT IN LINK + SZL CLA /ARE WE RUNNING BATCH FROM A BATCH JOB? + JMP .+3 /YES, DON'T TOUCH ORIGINAL CORE SIZE + TAD I (7777 /NO, GET OLD SOFTWARE CORE SIZE + DCA I (OLDCOR /SAVE CURRENT SOFTWARE CORE SIZE + TAD I (7777 /GET BATCH CTL WD + AND (70 /IT MIGHT ALREADY CONTAIN THE ANSWER + SZA + JMP STOCOR + TAD [7607 + DCA LZERO +CHUG, CDF 10 + TAD K + DCA I (LZERO +K10, 10 + TAD LZERO + CIA + TAD [7607 + SZA CLA + JMP DUN + TAD I (LZERO + NOP + CIA + TAD K + SZA CLA + JMP DUN + TAD [10 + TAD CHUG + DCA CHUG + ISZ K + JMP CHUG-2 + CLA CMA +DUN, CIF CDF 0 + TAD K + TAD K10 + CLL RTL /STORE HIGHEST FIELD # INTO 7777 + RAL +STOCOR, DCA INCOR + TAD INCOR + TAD (-10 /TEST FOR AT LEAST 12 K + SPA SNA + JMP NOCORE + TAD (-60 /LIMIT TO FIELD 6, SO AS NOT + SNA CLA /TO DISTURB ROM IN F. 7 + TAD (-10 + TAD INCOR + DCA INCOR + TAD INCOR + TAD (CDF + DCA TOPCDF + TAD I (7777 + AND (7707 /V3D + TAD INCOR + DCA I (7777 + TAD INCOR + TAD (201 + DCA I (SYCNTL + TAD TOPCDF + DCA I (BOSCDF + JMP I GETCOR +NOCORE, CLA + JMS I [MESSG + COR8 + JMP I [7600 +K, -10 + +INCOR, 0 /INCLUSIVE OR ROUTINE. USE THE + DCA TEMP /FOLLOWING: + TAD I INCOR /A .OR. B= .NOT. A .AND. B +A + DCA TEMP2 + TAD TEMP + CMA + AND I TEMP2 + TAD TEMP + DCA I TEMP2 + ISZ INCOR + JMP I INCOR + PAGE + PTR, 0 /HI SPEED READER HANDLER + RDF /** MOVED TO 5400 IN BATCH FIELD ** + TAD PCDIF0 + DCA PTRRET + JMS I PTRDOL /CHECK FOR $ INSERTION + JMP PTRISZ /YES + DCA PTIMER + JMS I TCTRLC + RFC +PTM2, RSF + JMP PTMER + TAD PTR200 /FORCE PARITY ON + RRB +PTRISZ, ISZ PTR +PTRRET, HLT + JMP I PTR +PCDIF0, CDF CIF 0 +TCTRLC, CTRLC + +PTMER, AND I 0 + AND I 0 + ISZ PTIMER + JMP PTM2 /TIMES OUT IN 16 MS. + JMP PTRRET +PTIMER, 0 +PTR200, 200 +PTRDOL, GETDOL + /SYS PERFORMS I/O TO SYSTEM DEVICE. THE CALLING SEQUENCE +/CONFORMS TO THAT OF THE STANDARD OS/8 CALL SEQUENCE, EXCEPT +/THAT WE HAVE ONE ERROR RETURN FROM THE ROUTINE, NOT A LOT +/OF SEPARATE ERROR RETURNS. + +SYS, 0 + DCA SYCTL /AC HAD CONTROL WORD + TAD I SYS + DCA SYBUFF /BUFFER FOR TRANSFER + ISZ SYS + TAD I SYS + DCA SYREC /RECORD OF TRANSFER + ISZ SYS + CIF 0 + JMS I (SYSTEM +SYCTL, HLT +SYBUFF, HLT +SYREC, HLT + SKP CLA + JMP I SYS + JMS I (PRMESG + SERMSG + JMP I (BATRET + +BATPTR, FILENAME BATCH.SV + CHANGE, 0 /ROUTINE TO ALTER CARD TABLE + CDF 10 + TAD I (MPARAM+2 + CDF 0 + AND (10 /GET /6 SWITCH + SZA CLA /IF IT IS SPECIFIED, + TAD (C026-C029 /USE DEC 026 CARD CODES, + TAD (C029 /OTHERWISE USE DEC 029 CODES + DCA XR1 /ADDDRESS OF CORRECT LIST + TAD (CLST-1 + DCA XR2 /THE LOCS. THAT GET ALTERED + TAD [-15 + DCA COUNT /13 ENTRIES. + TAD I XR2 + DCA CHPTR + TAD I XR1 + DCA I CHPTR /ALTER TABLE IN MONITOR. + ISZ COUNT + JMP .-5 + JMP I CHANGE +CHPTR, 0 + +CLST, CDT+5 /ADDRESSES OF CARD CONVERSION LOCS. + CDT+6 + CDT+7 + CDT+15 + CDT+16 + CDT+17 + CDT+25 + CDT+26 + CDT+27 + CDT+30 + CDT+35 + CDT+36 + CDT+37 + + C026=.-1 + 7735 /CODES FOR 026 CARDS + 4076 + 0774;3314;1002;0305;3204;1273;3606;1341;3716;1175 + 3401 + +C029=.-1 + 3203;4007;3502;7514;0577;3637;0104;1211;3374;0641;7316;3410 + 1376 + +SETH, 0 /SET HUSH + CDF 10 + TAD I (MPARAM /LOOK AT A-L SWITCHES + AND (20 /IN PARTICULAR, LOOK AT /H BIT + CDF 0 + DCA I (HUSH /SAVE THIS BIT + JMP I SETH + + PAGE + BILEN= 0 /INITIALIZE MAX INPUT ROUTINE LENGTH + +SYSIN, 0 /INPUT FROM SYSTEM DEVICE + RDF /** MOVED INTO 5400 IN BATCH FIELD ** + TAD SYCDIF + DCA SYSRET +SYSIN4, JMS I SYSDOL /CHECK FOR $ INSERTION + JMP SYSISZ /YES + TAD BLOK /RE-READ BUFFER? + SZA CLA + JMP SYGETC /NO. STILL THERE + TAD I PSYBLKN + DCA BLOK + TAD I PSYCNT +IOSYS, DCA SYCHCN /RESTORE CHARACTER COUNT + CIF 0 + JMS I SYSINH /READ THE BLOCK +SYCNTL, 0 +BTBUF, ORIGIN-400 +BLOK, 0 + JMP I PSYIERR + TAD BTBUF /SET BUFFER POINTER. + DCA WPTR /NOW DETERMINE FROM COUNT WHICH WORD + TAD SYS601 /WAS INTERRUPTED. WHEN AC GOES NEG., + TAD SYCHCN /WE ARE AT PROPER 2 WORD GROUP. +GWDLP, TAD SYSM3 /THEN WE FORM A JMP TO CORRECT WORD + SPA + JMP GEWD + ISZ WPTR /SKIP 2 WORDS + ISZ WPTR + JMP GWDLP +GEWD, TAD SYS3 /FORM A JMP CHARX, X=1,2,3 + TAD JMPDOT + DCA JMPCH /SET UNPACK SWITCH +SYGETC, ISZ JMPCH /NORMAL CHAR. FETCH + ISZ SYCHCN /NEED NEW BLOCK? +JMPDOT, JMP JMPCH /NO + ISZ BLOK /YES. NEXT BLOCK + TAD SYM601 + JMP IOSYS /READ IT. +JMPCH, JMP JMPCH /3 WAY SWITCH + JMP ICHAR1 /FIRST OF 3 + JMP ICHAR2 /SECOND + TAD JMPDOT + DCA JMPCH /RESET 3 WAY SWITCH + JMS I PCTRLC + TAD I WPTR /NOTE THAT WE CAN'T DESTROY WPTR BY + AND SY7400 /BY DOING ISZ'S UNTIL THE 3RD CHAR. + CLL RTR /THAT IS BECAUSE IF WE ARE BROKEN + RTR /UP, WE CAN ONLY POINT TO THE 2 WORD + DCA SYTEMP /GROUP AS A WHOLE. + ISZ WPTR + TAD I WPTR + AND SY7400 + CLL RTL + RTL + RAL + TAD SYTEMP + ISZ WPTR /BUMP TO NEXT GROUP + JMP CHCOM +ICHAR2, CLA IAC +ICHAR1, TAD WPTR + DCA SYTEMP /THIRD CHAR NEEDS WPTR! + TAD I SYTEMP +CHCOM, AND SYS177 + DCA SYTEMP + TAD SYCHCN + DCA I PSYCNT + TAD BLOK + DCA I PSYBLKN + TAD SYTEMP /CHECK FOR ^Z +/ SNA /V3C +/ JMP SYSISZ /RETURN NULL AS NULL + TAD SYSM32 + SZA + JMP CHOUT /NOPE. OK + TAD SYEXT /^Z. DISABLE INPUT + DCA SYSIN4 +SYEXT, JMP SYSRET +CHOUT, TAD SYS232 +SYSISZ, ISZ SYSIN +SYSRET, HLT /CDF CIF RETURN FIELD + JMP I SYSIN + +SYCHCN, 0 +WPTR, 0 +SYSCHR, +SYTEMP, 0 +PSYBLK, SYBLKN +PSYCNT, SYCNT +SYSINH, 0 /GETS ADDRESS OF INPUT HANDLER (7607 OR CO-RES) +PSYIER, SYIERR +SYS601, 601 +SYM601, -601 +SYSM3, -3 +SYS3, 3 +PCTRLC, CTRLC +SY7400, 7400 +SYS177, 177 +SYSM32, -32 +SYS232, 232 +SYCDIF, CDF CIF 0 +SYSDOL, GETDOL + + IFZERO .-SYSIN-BILEN&4000 + PAGE + /CARD READER HANDLER. BUFFERS AN ENTIRE CARD IN THE LINE BUFFER. +/ON END OF CARD, WE CAST OUT EXTRANEOUS SPACES IN THE BUFFER + +CDR, 0 + RDF + TAD CCDIF0 + DCA CDRRET + JMS I CDRDOL /CHECK FOR $ INSERTION + JMP CDRISZ /YES + ISZ CHCNT /STILL CHARACTERS IN BUFFER? + JMP GETCH /YES. +NEWCRD, TAD PLNBUF + DCA CDRPTR /NO. READ A NEW CARD +CSLCT, JMS I CCTRLC + RCSE /SELECT A CARD + JMP CSLCT +RDNEXC, DCA CTIMER +RDCOLM, RCSF /WAIT FOR DATA + JMP EOC /AND CHECK FOR END OF CARD + RCRA + CLL RAR /TRANSLATE INTERNAL INTO ASCII + TAD PCDT + DCA CTEMP + TAD I CTEMP + SZL /LEFT OR RIGHT? + JMP .+4 + RTR;RTR;RTR + AND CDR77 + TAD CDR240 + ISZ CDRPTR + DCA I CDRPTR + ISZ CHCNT /CAN'T SKIP +EOC, RCSD /CARD DONE? + JMP TIME /NO - CHECK TIMEOUT + TAD CHCNT /GET REAL NUMBER OF CHARACTERS + CMA + DCA CHCNT +CHKSPC, TAD I CDRPTR + TAD CDM240 + SNA CLA + JMP SPCIG + ISZ CDRPTR +CDCR, TAD CDR215 /INSERT END OF LINE MARKER + DCA I CDRPTR + TAD PLNBUF + DCA CDRPTR +GETCH, ISZ CDRPTR + TAD I CDRPTR +CDRISZ, ISZ CDR +CDXIT, RCRD /CLEAR CARD DONE FLAG +CDRRET, HLT + JMP I CDR + +SPCIG, CLA CMA /BACK UP ONE CHAR + TAD CDRPTR + DCA CDRPTR + ISZ CHCNT /IF SKIP, IT'S A BLANK LINE + JMP CHKSPC + JMP CDCR + +TIME, AND I 0 /CHECK TIME OUT - FIRST DELAY A WHILE + TAD CDM240 /V3C + DCA TIME /TIME OUT A LOT + ISZ TIME + JMP .-1 + ISZ CTIMER + JMP RDCOLM + DCA CHCNT + JMP NEWCRD /CARD HUNG - WAIT FOR READER READY +CCDIF0, CDF CIF 0 +CHCNT, -1 +PLNBUF, LINBUF-1 +CCTRLC, CTRLC +PCDT, CDT +CDR77, 77 +CDR240, 240 +CDM240, -240 +CDR215, 215 +CDRPTR, 0 +CTEMP, 0 +CTIMER, 0 +CDRDOL, GETDOL + + IFZERO .-CDR-BILEN&4000 + /*** THIS CAUSES BUGS TO RTS/8 BECAUSE IT OUTPUTS TO LPT! + +LPTTST, 0 /SKIP IF BATCH-TYPE LINE PRINTER AVAILABLE + TAD (240 + PCLS /PRINT AN INNOCUOUS BLANK + CLA + AND I 0 + AND I 0 /FLAG COMES UP IN UNDER 10 MICROSECONDS + AND I 0 + PSKF /WELL? + JMP I LPTTST /NO WAY! + CLA IAC /DON'T BE FOOLED - COULD STILL BE AN ANALEX + 6654 /LOAD ANALEX BUFFER + SNA CLA + JMP ANALEX /IF IOT CLEARED AC, ITS AN ANALEX + TAD (215 + PCLS /CLEAR LINE BUFFER BY PRINTING CR + PSKF + JMP .-1 + CLA + ISZ LPTTST + JMP I LPTTST /TAKE SKIP RETURN + +ANALEX, 6652 /CLEAR FLAGS + 6662 /CLEAR BUFFER + JMP I LPTTST /TAKE NO LPT RETURN + PAGE + NBATCH, TEXT /BATCH.SV NOT FOUND ON SYS:/ +COR8, TEXT /INSUFFICIENT CORE FOR BATCH RUN/ +BADMON, TEXT /WRONG OS8 MONITOR/ +NODEV, TEXT /DEV NOT IMPLEMENTED_/ +SPLERR, TEXT /ILLEGAL SPOOL DEVICE_/ +VERMSG, TEXT /BATCH / + *.-1 + VERSON+2660 /"VN" + TEXT /A_/ + VERTST, 0 + TAD I (BUFFER+BATCH /SHOULD BE 4562 IN V3 + TAD (-CBATCH + SNA CLA + JMP I VERTST + JMS I [MESSG + BADMON + JMP I [7600 + +MVINSB, 0 + DCA XR1 /ADDR OF INPUT ROUTINE + TAD (BATIN-1 /ADDR OF PLACE IN BATCH MONITOR + DCA XR2 + TAD (-BILEN + DCA BMVCNT + TAD I XR1 + DCA I XR2 + ISZ BMVCNT + JMP .-3 /MOVE ROUTINE UP + JMP I MVINSB +BMVCNT, 0 + +EOPTN, 0 /CHECK FOR /E OPTION + CDF 10 + TAD I (MPARAM + CDF 0 + AND (200 /ISOLATE E SWITCH + SNA CLA + JMP I EOPTN /NOT ON + TAD (1000 + JMS I (INCOR /OR 1000 INTO BOSSW + BOSSW + JMP I EOPTN + + EOINIT=. + PAGE + FIELD 0 /DUMP PAGE 0 LITERALS HERE + *ORIGIN /THIS CODE ACTUALLY EXECUTES IN TOP FIELD! + +BATIN, ZBLOCK BILEN /BATCH INPUT ROUTINE GOES HERE + +END, TAD I (HUSH + SZA CLA + JMP BKILL /SUPPRESS #END WHEN HUSHED + JMS I (PRMESG + EOBMSG +BKILL, CDF 10 + STA + TAD I (7700 /V3D + DCA I (7700 /ALLOWS CORE IMAGE TO BE PRESERVED ACROSS BATCH + JMP I (MORKIL + +SETJSW, 0 /ROUTINE TO SET JOB + TAD (7377 /STATUS WORD TO INDICATE THAT + CDF 0 /BATCH IS STILL IN CORE + AND I (JSW + TAD (400 + DCA I (JSW + JMS I (CDFRST /RESTORE TRUE DATA FIELD + JMP I SETJSW + + PAGE + /THIS IS THE ACTUAL BATCH MONITOR. THIS ENTRY IS FOR THE +/INTERFACE WITH THE KEYBOARD MONITOR. + +BATVFY, 2214 /** THIS LOCATION IS VERIFIED BY BAT: ** + +BOS, CDF 0 /SEE IF CD FOUND AN ERROR + TAD I (7777 /IF BIT 11 SET, IT DID. + CLL RAR + CLA + TAD I (7777 /RESTORE IT. + AND M2 /ERASE IT + DCA I (7777 + JMS I (CDFRST /RESTORE DATA FIELD + SZL CLA + JMP CDERR + JMS I (KMLINK /LINK I/O OF BOS AND K.M. +BOSSB, TAD OUTPUT + DCA BOUTDV /SET MESSAGES + JMS I (GLINE /READ LINE OF INPUT + TAD HUSH + SZA CLA + JMP BOSRE /DON'T ECHO LINES WHEN HUSHED + TAD I (LINBUF + TAD (-"$ + SNA CLA + TAD I (LINBUF+1 + TAD (-"J /DON'T ECHO $JOB CARD HERE + SNA CLA + TAD I (LINBUF+2 + TAD (-"O + SZA CLA + JMS I (ECHO /BUT ECHO ANY OTHER LINE +BOSRE, TAD I (LINBUF /ENTER HERE FROM CD IF KM COMMAND SEEN + DCA I (BNAM /GET THE FIRST CHAR ON THE LINE + TAD DOLFLG /DO WE NEED $? + SMA CLA + JMP I (NXPRG /NO. LOOK FOR . OR / + TAD I (BNAM /SEE IF WE HAVE IT + TAD (-"$ + SZA CLA + JMP BOSSB /NOT YET. + JMP I (KMDOLR /SEE IF IT'S $JOB + +CDERR, JMS I (PRMESG + CDEMSG + JMP BOS + /HERE TO ECHO $JOB CARD + +DOLECH, TAD HUSH + SZA CLA + JMP HUSH2 /DON'T ECHO $JOB WHEN HUSHED + TAD (214 + JMS OUTCHR + TAD I (BOSSW + CLL RTR /ECHO A PAGE OF $JOBS TO LPT ONLY + SNL CLA /IS LPT OUTPUT? + JMP DOLEC2 + TAD (-36 /YES + DCA DOLFLG + TAD (212 + JMS OUTCHR /SPACE DOWN TO MIDDLE OF PAGE + ISZ DOLFLG + JMP .-3 /REPLACE NEXT THREE LOCS IF CENTRONIX PRINTER: + JMS I (ECHO /216 + JMS I (ECHO /TAD .-1 + JMS I (ECHO /JMS OUTCHR /PRINT LARGE CHARS + JMS I (ECHO +DOLEC2, TAD (214 + JMS OUTCHR + JMS I (ECHOT /PUT $JOB TO TTY IF NEEDED + JMS I (CRLF +HUSH2, DCA DOLFLG + JMP BOSSB + +GETDOL, 0 /ROUTINE TO PUT BACK ANY $ READ BY BAT: + CDF 0 + TAD I (7777 /GET BATCH CONTROL WORD + CLL RTR + SZL CLA /TEST BIT 10 + JMP GOTDOL /ITS ON - MUST PUT IN A $ + JMS I (CDFRST /NO - SET DF TO THIS FIELD + ISZ GETDOL + JMP I GETDOL /TAKE SKIP RETURJ +GOTDOL, CLL STA RTL /7775 + AND I (7777 + DCA I (7777 /REMOVE THE BIT + TAD ("$ + JMP I GETDOL /TAKE NON-SKIP RETURN WITH $ IN AC + GETCOM, JMS I (MOVE + -112 /PUT BUFFER INTO KEYBOARD MON. + LINBUF+1 + CDF 0 + BEGLN + TAD I (AMODE /V3C GET BATCH ALTMODE FLAG + SZA CLA + STL RAL /SET KBM ALTMODE FLAG IF NECESSARY + CIF CDF 0 + DCA I (AMFLAG /IT'S IN FIELD 0 + JMP I .+1 /AND GO PROCESS IT + KEYMON+1 +M2, -2 + +OUTCHR, 0 + JMS I BOUTDV + JMP I OUTCHR + +BOUTDV, TTYOUT +OUTPUT, 0 +DOLFLG, 0 /$ SLEW FLAG - NEGATIVE IF SLEW +HUSH, 0 /NON-0 MEANS HUSHED (/H) + PAGE + BOSSW, 0 /BATCH STATUS FLAG. +MSG, 0 + TAD I (DOLFLG /IF $JOB SLEW SET, DON'T PAUSE + SPA CLA + JMP I MSG + TAD BOSSW /NO ECHO IF TTY IS OUTPUT + CLL RTR + SZL CLA + JMS I (ECHOT + TAD BOSSW /IS OPERATOR AVAILABLE? + CLL RAR + SZL CLA + JMP I MSG /NO. CONTINUE + TAD (207 + JMS I (TTYOUT + KCC /WAIT A WHILE + JMS I (TTY + JMP I MSG + +TESTB, 0 /TEST ROUTINE. TEST LIST AGAINST BNAM + TAD I TESTB + DCA PRMESG /# ELEMENTS IN LIST +TSTB2, ISZ TESTB /POINT TO ELEMENT + TAD I TESTB + ISZ TESTB + TAD I (BNAM /TEST IT + SNA CLA + JMP TSBOVR /A MATCH + ISZ PRMESG + JMP TSTB2 + ISZ TESTB + JMP I TESTB /NO MATCH +TSBOVR, TAD I TESTB + DCA TESTB + JMP I TESTB + +OLDCOR, 0 /V3C HOLDS OLD SOFTWARE CORE SIZE WORD + /MUST HAVE ADDRESS .GT. 6000 + PRMESG, 0 /MESSAGE PRINTER + DCA TESTB /SET FOR NO SKIP ON ISZ + TAD I PRMESG /INDEX INTO MESSAGE LIST + DCA PRTEMP + JMS I (CRLF + TAD ("# /BATCH ERROR SIGNAL + JMS I (OUTCHR +PRMSG2, TAD I PRTEMP + CLL RTR;RTR;RTR + JMS PNCH + TAD I PRTEMP + JMS PNCH + ISZ PRTEMP + JMP PRMSG2 /CYCLE UNTIL A 0 +PNCH, 0 + AND (77 + SNA + JMP PRTTY /COULD BE OPTIMIZED + TAD (240 + AND (77 + TAD (240 + JMS I (OUTCHR + JMP I PNCH + + +PRTTY, JMS I (CRLF + ISZ TESTB /PUT IT ON TTY, TOO + CLA CLL CML RTL /+2 SKIPPED IF SECOND TIME THROUGH + AND BOSSW /SEE IF LP08 IS OUTPUT + SNA + JMP PRMOUT /ALREADY ON TTY + AND TESTB /CALL WITH AC=1 MEANS NO TTY OUTPUT + SZA CLA + JMP PRMOUT + TAD (TTYOUT + DCA I (BOUTDV /SET TTY + CLA CMA /SET TESTB TO SKIP + JMP PRMESG+1 +PRMOUT, TAD I (OUTPUT /RESTORE OUTPUT + DCA I (BOUTDV + ISZ PRMESG /SKIP ARGUMENT + JMP I PRMESG + KMLINK, 0 /LINK BATCH AND KEYBOARD I/O. + RIF + TAD BCDIF0 /SETUP A JUMP IN KEYBOARD. + DCA KMLST + TAD KMLST /AND ANOTHER FOR PRINT ROUTINE + DCA KMLST2 + JMS I (MOVE /PUT NEW CODE INTO KEYBOARD + -3 + KMLST + CDF 0 + PRINT+1 /THIS IS OUTPUT LINK + JMS I (MOVE /NOW INPUT LINK. + -3 + KMLST2 + CDF 0 + XGLINE+1 + JMP I KMLINK + +/** NEXT 3 WORDS LOAD INTO "PRINT+1" IN KEYBOARD MONITOR ** + +KMLST, CIF CDF 0 /ALTERED AT RUN-TIME + PRINT+3&177+5600 /ALLOWS TALKING THRU BATCH + BOSPRT + +/** NEXT 3 WORDS LOAD INTO "XGLINE+1" IN KEYBOARD MONITOR ** + +KMLST2, CIF CDF 0 + XGLINE+3&177+5600 /"JMP I .+1" + BOS + +BCDIF0, CIF CDF 0 +PRTEMP, 0 + NXPRG, JMS TESTB /SEE IF WE HAVE . OR / + -4 + -".;GETCOM + -"/;BOSSB + -"$;KMDOLR + -"*;BOSSB /ERRONEOUS CD CARD. + JMP I (KJOB + PAGE + GLINE, 0 /LINE COLLECTION ROUTINE + TAD (LINBUF-1 + DCA GLPTR +GET, JMS I (BATIN /GO TO SPECIFIED INPUT DEVICE + JMP EOF /TIME-OUT OR FATAL + DCA BNAM + JMS I (TESTB /TEST FOR SPECIAL CHARS. + -5 + -215;CARROT + -212;GET /IGNORE LINE FEEDS. + -214;GET /IGNORE FORM FEEDS + -337;BKAROW /CD DOESN'T LIKE _, ONLY < + -200;GET /IGNORE BLANKS (NULLS) V3C + TAD BNAM + SKP +BKAROW, TAD ("< + ISZ GLPTR + DCA I GLPTR + TAD GLPTR + TAD (-LINBUF-110 /OVERFLOW BUFFER? + SPA CLA + JMP GET /NOT YET. +CARROT, TAD I GLPTR /GET LAST CHAR INPUT + TAD (-244 /$? + SZA CLA + JMP NALTMD /NO + TAD I GLPTR /GET $ + SKP +NALTMD, ISZ GLPTR /BUMP TO NEXT CHAR IF NO ALTMODE + DCA AMODE /STORE ALTMODE FLAG + DCA I GLPTR /CLEAR END CHAR IN BUFFER + TAD I (LINBUF + SNA CLA /WAS LINE NULL? + JMP GLINE+1 /YES - IGNORE + JMP I GLINE + +EOF, KCC /HANG ON INPUT ACTION + JMS I (PRMESG /INDICATE FAILURE + INPMSG + JMS I (TTY /WAIT FOR INPUT + JMP GET /AND RETURN + +AMODE, 0 +GLPTR, 0 + /DOLRD INTERPRETS $ CARDS + +DOLRD, 0 + TAD (LINBUF /GET THE NAME OF THE $ COMMAND + DCA BLPTR + DCA BNAM +GWRD2, ISZ BLPTR + TAD I BLPTR + SNA + JMP NOCMD /FUNNY..NOTHING THERE! + TAD (-240 /IGNORE LEADING SPACES + SNA + JMP GWRD2 + TAD (-240 /NOT A SPACE. TAKE WHATEVER IT IS. + AND (77 + CLL RTL;RTL;RTL + DCA BNAM /KEYBOARD MON. WILL EXAMINE IT. + ISZ BLPTR + TAD I BLPTR + AND (77 + TAD BNAM + DCA BNAM +NOCMD, TAD BNAM + SNA CLA + JMP I (KJOB + JMS I (TESTB /TEST IT + -3 + -0516;END /$END CARD + -1523;MSGST /$MSG CARD IMAGE + -1217;JOB /$JOB CARD +DLCRUD, ISZ DOLRD /$CRUD +JOB, TAD I DOLRD + DCA DOLRD + JMP I DOLRD + +MSGST, JMS I (MSG /PRINT MESSAGE + JMP DLCRUD /TREAT LIKE CRUD + +CDOLLR, JMS DOLRD + CDKBD /$JOB + CDGET /$OTHER + +KMDOLR, JMS DOLRD + DOLECH /$JOB + BOSSB /$OTHER + +BLPTR, 0 +BNAM, 0 + /HERE FROM CD WHEN DONE TO ANALYZE CD AREA + +CDRENT, CDF 0 + TAD I (LKUPSW /GET THE DEFAULT EXTENSION + JMS I (CDFRST /SET CURRENT DF + JMS I (CDSCN /SCAN CD LINE + KCC + TCF /CLEAR FLAGS JUST LIKE CD WOULD + CDF CIF 0 + JMP I (CDOVER+3 /RESUME CD AT TERMINATION CODE + PAGE + CDT, 0021;2223;2425;2627;3031;3203;4007;3502 + 2017;6364;6566;6770;7172;7514;0577;3637 + 1552;5354;5556;5760;6162;0104;1211;3374 + 0641;4243;4445;4647;5051;7316;3410;1376 + +TTYOUT, 0 /TESTS AC FOR FORM FEED + TAD (-214 + SNA + JMP TFORM /GENERATE LINE FEEDS + TAD (214 + JMS TTYPE + JMP I TTYOUT +TFORM, TAD (-4 + DCA TCOUNT + TAD (212 + JMS TTYPE + ISZ TCOUNT + JMP .-3 + JMP I TTYOUT +TCOUNT, 0 + +NULOUT, 0 + CLA /DEEP-SIX THE CHARACTER + JMS I (CTRLC + JMP I NULOUT + TTYPE, 0 /TELETYPE OUTPUT STUFF + TLS + TSF + JMP .-1 + CLA + JMS I (CTRLC + JMP I TTYPE + +BOSPRT, JMS ERHDR /PRINT MESSAGE + CIF CDF 0 + JMP I (PRINT+10 + +CDFRST, 0 +BOSCDF, HLT + JMP I CDFRST + +ERHDR, 0 /ERROR HEADER ROUTINE + DCA CDFRST /SAVE CHARACTER + TAD I (DOLFLG /FIRST ENTRY? + SZA CLA + JMP .+3 /NO. + TAD ("# /ERROR PROMPT + JMS I (OUTCHR + TAD I (BOSSW /GET BATCH FLAGS WORD + CMA + AND (1000 /SET $ SLEW FLAG NEGATIVE IF NO /E, + STL RTL /NON-ZERO IN ANY CASE + DCA I (DOLFLG + TAD CDFRST + JMS I (OUTCHR + JMP I ERHDR + +CRLF, 0 + TAD (215 + JMS I (OUTCHR + TAD (212 + JMS I (OUTCHR + JMP I CRLF + +BOSLPT, 0 /BATCH LINE PRINTER ROUTINE + PCLS + CLA + JMS I (CTRLC + PSKF + JMP .-2 + JMP I BOSLPT + +MORKIL, JMS I (CDFRST + TAD I (OLDCOR + CIF CDF 0 + DCA I (7777 /RESTORE WORD + JMP I (7605 + PAGE + /ERROR MESSAGES + +CDEMSG, TEXT /MONITOR OVERLAYED/ +INPMSG, TEXT /INPUT FAILURE/ +BADMSG, TEXT /BAD LINE. JOB ABORTED/ +SERMSG, TEXT /SYS ERROR/ + +LINBUF, ZBLOCK 113 + + PAGE + BATABT, JMS I (CDFRST /THIS CODE IS HERE FOR CCL! + TAD I (BOSSW /GET BATCH SWITCHES + CMA + AND (1000 /IF /E FLAG IS UP CCL ERRORS ARE NON-FATAL, + CLL RTL + JMP CDKILX /OTHERWISE WE SHOULD ABORT BATCH ON THEM + +CDGET, JMS I (GLINE /READ INPUT + TAD I (HUSH + SNA CLA /DON'T ECHO CD LINES IF HUSHED + JMS I (ECHO + TAD (LINBUF-1 + DCA CDGPTR + TAD I (DOLFLG /$JOB FLAG UP? + SPA CLA + JMP CDKBD /SLEW UNTIL $JOB + ISZ CDGPTR + TAD I CDGPTR + DCA I (BNAM + JMS I (TESTB /TEST PROMPT CHAR. + -4 + -"*;CDLINE /* IS OK + -"/;CDGET /REMARK + -"$;CDOLLR + -".;CDKBD /RECALL KEYBOARD MON. +KJOB, JMS I (PRMESG + BADMSG /ILLEGAL CHARACTER +CDKILL, STL CLA RAR /4000 +CDKILX, DCA I (DOLFLG /ABORT TO NEXT $JOB + JMS I (SETJSW /MARK BATCH IN CORE + CIF CDF 0 + JMP I .+1 + 7605 /RESTART. + +CDKBD, CIF 0 + JMS I (SYSTEM + 1000 + 0 + KMREC +SYIERR, SKP CLA + JMP .+4 + JMS I (PRMESG + SERMSG + HLT + JMS I (SETJSW /MARK BATCH IN CORE + JMS I (KMLINK /LINK TO NEW KEYBOARD + TAD (BOSRE /WE WANT TO RETAIN OLD LINE + CIF CDF 0 + DCA I (BCHGO+2 + JMP I (BEGLN+1 + +CDGPTR, 0 + CDLINE, JMS I (MOVE /PUT LINE INTO CD + -112 + LINBUF+1 + CDF 0 + CDBEGLN + TAD I (AMODE + CDF 10 + SZA CLA /CHECK WHETHER ALTMODE TERMINATED LINE + STL RAR /IT DID - SET CD ALTMODE FLAG + DCA I (MPARAM-1 + CIF CDF 0 + JMP I .+1 + ANALYZ + +DEVKIL, JMS I (PRMESG + PTRMSG + JMP CDKILL + +HLPMSG, TEXT /MANUAL HELP NEEDED/ +PTRMSG, TEXT /ILLEGAL INPUT DEVICE/ +EOBMSG, TEXT /END BATCH/ +SPLMSG, TEXT /SPOOL TO FILE / + *.-1 +BCHFIL, TEXT /BTCHA0/ + PAGE + /SUBROUTINE TO ANALYZE CD AREA - ENTER FROM ANY FIELD +/WITH DEFAULT EXTENSION IN AC + +CDSCN, 0 + DCA EXT /SAVE EXTENSION + RDF + TAD (CDF CIF 0 + DCA CDSCRT /SAVE RETURN FIELD + TAD (7600 + DCA CDTEMP /LOOK AT CD AREA + MTHREE + DCA CDCNT +CDSCAN, JMS I (CDFRST + TAD I (BOSSW + CLL RTL + CDF 10 + SZL CLA /IS SPOOLING ENABLED + TAD I CDTEMP /AND IS THERE AN OUTPUT? + AND (17 + SNA + JMP NCKSPL /NO - DON'T LOOK + TAD (DCB-1 /CHECK FILE OR NON-FILE STATUS + DCA CDTMP2 + TAD I CDTMP2 /SPOOL NON-FILE DEVICES + SPA CLA + JMP NCKSPL /FILE STRUCTURED OUTPUT + TAD I CDTEMP + AND (7760 + TAD SPLDEV /RESET CD AREA + DCA I CDTEMP + ISZ CDTEMP /POINT TO FILENAME AREA + JMS I (CDFRST + TAD I (SPLNUM + AND (11 + CIA + TAD (11 + SNA CLA + TAD (66 + IAC + TAD I (SPLNUM + DCA I (BCHFIL+2 + JMS I (MOVE + -4 + BCHFIL + CDF 10 +CDTEMP, 0 /76XX + JMS I (PRMESG /PRINT FILENAME + SPLMSG + TAD I (BCHFIL+2 /SET NEW FILENAME + DCA I (SPLNUM + CLA CMA +NCKSPL, TAD CDTEMP + TAD (5 + DCA CDTEMP + TAD EXT + SNA CLA + JMP CDSCRT /YES - LOOK NO MORE + ISZ CDCNT + JMP CDSCAN /KEEP LOOKING + CDX1, TAD (-11 /SCAN INPUT AREA + DCA CDCNT + TAD (7617 + DCA CDPTR /PICK UP MANUAL INPUTS. +INPSCN, CDF 10 + TAD I CDPTR + SNA /ANY INPUTS? + JMP CDSCRT /3 GUESSES! + AND (17 + TAD (DCB-1 /GET DEVICE IDENTIFIER + DCA CDTMP2 + TAD I CDTMP2 + AND (770 + JMS I (CDFRST + SNA + JMP RBELL /TELETYPE INPUT - CHECK OPERATOR + TAD (-10 + SZA CLA + JMP CDX3 /OK INPUT DEVICE + TAD I (BOSSW + SPA CLA /PTR: INPUT - IS BATCH FROM PTR? + JMP I (DEVKIL /YES - ILLEGAL +RBELL, TAD I (BOSSW /OPERATOR AVAILABLE? + CLL RAR + SZL CLA + JMP I (DEVKIL /NO. ABORT THE JOB + TAD (207 + JMS I (TTYOUT + JMS I (PRMESG + HLPMSG /MANUAL INTERVENTION REQUIRED. + JMS I (CRLF + JMP CDSCRT +CDX3, CLA CLL CML RTL + TAD CDPTR + DCA CDPTR + ISZ CDCNT + JMP INPSCN +CDSCRT, HLT + JMP I CDSCN /RETURN TO CALLER + +SPLDEV, 0 /GETS SPOOL DEVICE # +EXT, 0 +CDPTR, 0 +CDCNT, 0 +CDTMP2, 0 + PAGE + /THIS ROUTINE IS NOT REFERENCED FROM BATCH- +/IT PROVIDES A WAY FOR A USER TO OUTPUT MESSAGES +/TO THE BATCH LOG DEVICE + +BATOUT, 0 /CALLABLE FROM ANY FIELD + DCA CTRLC /WITH CHARACTER IN AC + RDF + TAD CDCF0 /GET CDF CIF TO CALLING FIELD + DCA BATORT + JMS I (CDFRST /CDF TO CURRENT FIELD + TAD CTRLC + JMS I (OUTCHR /OUTPUT THE CHARACTER +BATORT, HLT + JMP I BATOUT + /ENTER HERE FROM COMMAND DECODER WHEN CD CALLED + +CDBOS, RIF /FILL IN CIF CDF N + TAD CDCF0 /TO LINK CD AND BOS + DCA CDLST1 + TAD CDLST1 + DCA CDLST2 + TAD CDLST2 + DCA CDLST3 + JMS MOVE +CM3, -3 + CDLST1 + CDF 0 + TYPE+1 /LINK ERROR PRINTOUT TO BOS + + JMS MOVE + -3 + CDLST2 +MCDF0, CDF 0 + CGLINE /LINK INPUT TO BOS + + JMS MOVE + -3 + CDLST3 + CDF 0 + CDOVER /EXIT FROM LINE ANALYSIS +CDCF0, CIF CDF 0 + JMP I .+1 + RESTRT+1 /START UP CD + +/** THESE 3 WORDS LOAD INTO "TYPE+1" IN THE COMMAND DECODER ** +CDLST1, CIF CDF 0 + TYPE+3&177+5600 /"JMP I .+1" + CDPRT + +/** THESE 3 WORDS LOAD INTO "CGLINE" IN THE COMMAND DECODER ** +CDLST2, CIF CDF 0 + CGLINE+2&177+5600 /"JMP I .+1" + CDGET /RETURN TO CDGET AFTER ZEROING CD AREA + +/** THESE 3 WORDS LOAD INTO "CDOVER" IN THE COMMAND DECODER ** +CDLST3, CIF CDF 0 + CDOVER+2&177+5600 /"JMP I .+1" + CDRENT + CTRLC, 0 /CHECK FOR ^C + KRS + AND (177 + TAD CM3 + SNA CLA + KSF + JMP I CTRLC + JMP I .+1 + BKILL + +ECHOT, 0 /ECHOES LINE ON TTY + TAD (TTYOUT /SET TTY AS OUTPUT + DCA I (BOUTDV + JMS ECHO /ECHO IT + JMS I (CRLF + TAD I (OUTPUT + DCA I (BOUTDV /RESET OUTPUT + JMP I ECHOT + +TTY, 0 + KSF + JMP .-1 + JMS CTRLC + KCC + JMP I TTY + +ECHO, 0 /ECHO INPUT LINE + TAD (LINBUF-1 + DCA EPTR +ECHO2, ISZ EPTR + TAD I EPTR + SNA + JMP ECO3 + JMS I (OUTCHR + JMP ECHO2 +ECO3, TAD I (AMODE /NEED $ PRINTED? + SZA + JMS I (OUTCHR /YES + JMS I (CRLF + JMP I ECHO + MOVE, 0 + RDF + TAD MCDF0 + DCA MVIPUT + TAD I MOVE + DCA MVTMP /COUNT + ISZ MOVE + CLA CMA + TAD I MOVE + DCA MVPT1 /INPUT STUFF + ISZ MOVE + TAD I MOVE + DCA MVOPUT /OUTPUT FIELD + ISZ MOVE + CLA CMA + TAD I MOVE + DCA MVPT2 + ISZ MOVE +MVIPUT, HLT + ISZ MVPT1 + TAD I MVPT1 +MVOPUT, HLT + ISZ MVPT2 + DCA I MVPT2 + ISZ MVTMP + JMP MVIPUT + JMS I (CDFRST + JMP I MOVE + +MVTMP= CTRLC + +MVPT1, 0 +MVPT2, 0 +EPTR, 0 + +CDPRT, JMS I (ERHDR + CIF CDF 0 /LINK BACK TO CD + JMP I .+1 + TYPE+10 + PAGE + + FIELD 0 + *200 + $$$$$$$$$$ +