/BATCH MODE EDITOR FOR EDUSYSTEM-30 BASIC / /18-NOV-70 P. KNUEVEN / /COPYRIGHT 1970 DIGITAL EQUIPMENT CORPORATION / MAYNARD, MASSACHUSETTS / / ENTRY POINT = 1000 / / SYMBOL DEFINITIONS / / SYSTEM PARAMETERS BUFAD=0000 /ADDRESS OF INPUT BUFFER / AUTO-INDEX REGISTERS XR1=11 XR2=12 XR3=13 XR4=14 / CARD READER IOT'S RCSF=6631 /SKIP ON DATA READY RCRB=6634 /READ BINARY DATA RCSD=6671 /SKIP ON CARD DONE RCSE=6672 /SELECT CARD AND SKIP IF READER READY / LP08 LINE PRINTER IOT'S LPC=6666 /LOAD PRINT CHARACTER LSF=6661 /SKIP ON LINE PRINTER FLAG / CONSTANTS WHICH CAN BE GENERATED IN AC ONE=CLA IAC TWO=CLA STL RTL MTWO=STA CLL RAL MTHREE=STA CLL RTL K4000=CLA STL RAR / / POINTERS TO GLOBAL ROUTINES / *20 READ, DREAD WRITE, DWRITE PPRINT, PRINT /PRINT RTN. PTR. MUST BE AT 22 RDFILE, READFILE WRFILE, WRITEFILE PSEP, SEP PMSG, MSG PREADY, READY PJOB, JOBCARD PNEWLINE,NEWLINE PPRERR, PRERR PHEDING,HEDING PPACK, PACK PGETLINE,GETLINE PMOVE, MOVE PBASE, BASE PFINDNEXT,FINDNEXT PGETNUM,GETNUM PRING, RING / / POINTERS TO SYSTEM CONTROL AREAS IN PAGE 7600 / PREC, REC PKFLG, KFLG PRUNCNT,RUNCNT PRUNNO, RUNNO PPFLG, PFLG PRDTIM, RDTIM CTBL, CTBEG-1 / / OTHER GLOBAL POINTERS / PFILE, 400 PLINE, BUFAD PLINE1, BUFAD+1 PLINE2, BUFAD+2 PLINE3, BUFAD+3 PLINE4, BUFAD+4 MLINEM1,-BUFAD+1 / / GLOBAL CONSTANTS / L4, 4 L7, 7 L12, 12 L37, 37 L40, 40 L45, 45 L77, 77 L200, 200 L207, 207 L212, 212 L215, 215 L3700, 3700 L3740, 3740 L4100, 4100 L7403, 7403 L7461, 7461 L7600, 7600 L7700, 7700 L7706, 7706 L7740, 7740 L7741, 7741 L7763, 7763 L7764, 7764 L7766, 7766 L7773, -5 L7774, 7774 LASTL, 0 LASTLP, 0 TEMP1, 0 INC=TEMP1 ERRCNT, 0 /MUST BE INITIALLY 0 CNT, 0 LFLG, 0 EFLG, 0 INVFLG, 0 BADFLG, 0 CFLG, 0 COL, 0 POINT, 0 LCTR, 0 FROM, 0 CHAR, 0 LINENO, 0 NUM, 0 OFFSET, 0 TO, 0 TEMP, 0 TEMP3, 0 DADR=TEMP3 PCTAB, CTAB CTLEN, -CTEND+1 FILEND, 7377 CONST=L7741 OUTFLG, 0 OUTPUT, 0 OUTSW, JMP .+1 JMP OUTTTY TAD OUTFLG SPA JMP OUTTTY LPC CLA LTIM, ISZ I PRDTIM LSKIP, LSF JMP LTIM JMP I OUTPUT OUTTTY, TLS CLA TTIM, ISZ I PRDTIM TSKIP, TSF JMP TTIM JMP I OUTPUT CRLF, 0 TAD L215 JMS OUTPUT TAD L212 JMS OUTPUT JMP I CRLF PAGE MOVE, 0 DCA TO TAD I MOVE DCA FROM ISZ MOVE TAD TO CLL CIA TAD FROM SNL CLA JMP TOGT CDF 10 KEEPON, TAD I FROM SNA JMP LAST DCA I TO ISZ FROM ISZ TO JMP KEEPON LAST, DCA I TO CDF 10 JMP I MOVE TOGT, TAD FROM DCA POINT CDF 10 LOOK, TAD I POINT SNA CLA JMP GOTIT ISZ POINT JMP LOOK GOTIT, CDF CLA CLL TAD TO TAD POINT CMA CML IAC TAD FILEND TAD FROM SNL CLA JMP OKFITS JMS I PPRERR TEXT /NO ROOM IN FILE/ OKFITS, TAD FROM CIA TAD TO TAD POINT DCA TO TAD POINT CMA TAD FROM DCA FROM CDF 10 LOOP, TAD I POINT DCA I TO CLA CMA TAD POINT DCA POINT CLA CMA TAD TO DCA TO ISZ FROM JMP LOOP CDF JMP I MOVE GETNUM, 0 DCA OFFSET DCA NUM LUP, TAD OFFSET CLL RAR TAD I PBASE DCA TEMP CDF 10 TAD I TEMP CDF SZL JMP .+4 RTR RTR RTR AND L77 TAD L7706 CLL TAD L12 DCA TEMP SNL JMP I GETNUM TAD NUM CLL RAL SZL SPA JMP I EXITEP RAL TAD NUM SZL SPA JMP I EXITEP RAL TAD TEMP SZL JMP I EXITEP DCA NUM ISZ OFFSET JMP LUP EXITEP, EXITE *360 ERRMAX, 0 RUN, JMS I PMSG TAD ERRCNT CIA TAD ERRMAX SMA CLA JMP .+4 JMS I PPRINT NOTRUN JMP I PREADY JMS I PHEDING JMS I WRFILE JMS I READ /LOAD AND GO TO PASS1 0 -22 BPASS1 PAGE JOBCARD,ISZ EFLG JMS I PGETLINE DCA EFLG CDF 10 TAD I PLINE CDF TAD (-1714 SNA JMP OLD TAD (1714-1605 SZA CLA JMP JOBCARD NEW, JMS COMMON CDF 10 DCA I PFILE CDF JMP I PREADY OLD, JMS COMMON JMP I (LOAD COMMON, 0 DCA ERRCNT TAD I PRUNNO DCA I PRUNCNT ONE AND I PKFLG DCA I PKFLG JMS I (HDSAVE RETRY, TAD PLINE1 DCA XR1 TAD I (PFREE DCA XR2 TAD L7774 TAD LCTR CLL RAR CIA DCA CNT TAD XR2 TAD (-3550 SPA CLA JMP MOVLP JMS I PSEP JMS I (PRLOG JMP RETRY MOVLP, CDF 10 TAD I XR1 CDF DCA I XR2 ISZ CNT JMP MOVLP TAD XR2 DCA I (PFREE DCA I XR2 JMS I WRITE 2400 -11 BATLOG JMS I PSEP JMS I PMSG DCA LASTLP TAD (4040 /INSURE ENOUGH BLANKS CDF 10 DCA I TEMP3 TAD (HEADLINE-1 DCA XR1 TAD (PSNAME DCA TO TAD I PLINE2 JMS KILSP TAD I PLINE3 JMS KILSP TAD I PLINE4 JMS KILSP CDF JMP I COMMON KILSP, 0 CDF DCA MSG TAD MSG DCA I XR1 TAD MSG AND L7700 CLL RAL SZA RAR DCA I TO TAD MSG AND L77 TAD L7740 SZA TAD L40 TAD I TO DCA I TO ISZ TO CDF 10 JMP I KILSP HEDING, 0 /PRINT HEADING UNLESS NH IS INDICATED TAD I PLINE2 TAD (6170 SNA CLA JMP I HEDING JMS I PPRINT HEADLINE JMP I HEDING MSG, 0 JMS CRLF JMS CRLF CDF 10 JMS I PPRINT BUFAD TAD BADFLG SNA CLA JMP .+3 JMS I PPRINT INVMSG JMS CRLF JMP I MSG PAGE READY, KCC ANOTHER,JMS I PGETLINE ISZ CFLG JMP NOTCMD TAD I XR1 DCA TEMP JMP I TEMP NOTCMD, TAD BADFLG SZA CLA JMS I PMSG TAD PLINE DCA BASE JMS I PGETNUM TAD OFFSET SNA CLA JMP WHAT TAD LASTL CLL CIA TAD NUM SZL CLA TAD LASTLP TAD PFILE DCA BASE TAD NUM DCA LASTL LINEMORE, JMS I PGETNUM TAD NUM CLL CIA TAD LASTL SNA CLA JMP EQNUM SNL JMP LASTWD JMS FINDNEXT JMP LINEMORE FINDNEXT, 0 CDF LOOK4, TAD I BASE SNA JMP LASTWD AND L7700 TAD L4100 SNA CLA JMP .+4 TAD I BASE AND L77 TAD L7741 ISZ BASE SZA CLA JMP LOOK4 CDF JMP I FINDNEXT LASTWD, CDF JMS GETCNT TAD TEMP3 CIA TAD BASE JMS I PMOVE BASE, 0 BRING2, TAD PLINE DCA TEMP2 CDF 10 BRING, TAD I TEMP2 DCA I BASE ISZ BASE ISZ TEMP2 ISZ TEMP3 JMP BRING CDF JMP ANOTHER EQNUM, TAD BASE DCA TEMP1 JMS FINDNEXT TAD BASE DCA TEMP2 TAD TEMP1 DCA BASE TAD LCTR IAC CLL RAR TAD TEMP1 JMS I PMOVE TEMP2, 0 JMS GETCNT JMP BRING2 GETCNT, 0 TAD BASE TAD (-400 DCA LASTLP TAD LCTR SNA JMP ANOTHER CLL CMA CML IAC RAR DCA TEMP3 JMP I GETCNT PACK, 0 /PACK CHARACTER IN AC ONTO END OF INPUT BUFFER DCA TEMP3 / PLINE POINTS TO START OF BUFFER TAD LCTR / LCTR IS NUMBER OF CHARS IN BUFFER CLL RAR TAD PLINE DCA TEMP CDF 10 SZL TAD I TEMP TAD TEMP3 SZL JMP .+4 CLL RTL RTL RTL DCA I TEMP CDF ISZ LCTR JMP I PACK RING, 0 TAD L7773 DCA CNT TAD L207 JMS OUTPUT ISZ CNT JMP .-3 JMP I RING WHAT, JMS I PPRERR TEXT /WHAT?/ PAGE HELLO, TAD I (SYSIO IAC SNA CLA JMP I (KEY0 TAD I (LPTFLG TAD OUTSW DCA OUTSW DCA I (DEBNOL DCA I (CHAIN ISZ I (BREAK JMP .+3 JMS I PPRINT INTRUP DCA I (BREAK TAD I PRUNCNT SNA CLA JMP I PJOB JMS I RDFILE JMP I PREADY INTRUP, TEXT /__STOPPED BY OPERATOR__/ PRINT, 0 DCA LFLG TAD .+3 RDF DCA LILOOP CDF TAD I PRINT DCA TEMP KCC ISZ PRINT LILOOP, CDF TAD I TEMP RTR RTR RTR JMS FILL TAD I TEMP JMS FILL NLINE, ISZ TEMP KSF JMP LILOOP KRB TAD (-203 /INTERRUPT ONLY IF ^C SZA CLA JMP LILOOP JMS CRLF PRRET, CDF DCA LFLG JMP I PRINT FILL, 0 AND L77 SNA JMP PRRET TAD L7741 SZA JMP REGULAR JMS CRLF TAD LFLG SZA CLA JMP NLINE JMP I FILL REGULAR,SPA TAD (100 TAD (237 JMS OUTPUT JMP I FILL PRERR, 0 JMS CRLF CDF 10 JMS PRINT BUFAD ISZ ERRCNT TAD PRERR DCA .+2 JMS PRINT 0 JMS PRINT NOTU JMP I PNEWLINE CTBEG=. TEXT /OLD /; *.-1; OLD TEXT /NEW /; *.-1; NEW TEXT /KEY /; *.-1; KEY TEXT /RUN /; *.-1; RUN TEXT /MSG /; *.-1; MESSAGE TEXT /LIST/; *.-1; LIST TEXT /OPR /; *.-1; OPERATOR CTEND, 0 /ZERO MUST MARK END OF TABLE PAGE READFILE, 0 TAD I (TXTLEN DCA .+4 CDF 10 JMS I READ 400 7750 FILEREC JMP I READFILE WRITEFILE, 0 JMS GETLENGTH CIA DCA I (TXTLEN TAD I (TXTLEN DCA .+4 CDF 10 JMS I WRITE 400 7750 FILEREC JMP I WRITEFILE GETLENGTH, 0 TAD (377 DCA XR4 CDF 10 TAD I XR4 SZA CLA JMP .-2 CDF TAD XR4 TAD L7600 RTL RTL RTL AND L37 JMP I GETLENGTH LOAD, CIF 10 JMS I L7700 10 TAD (5723 DCA OLDDEV DCA OLDDEV+1 TAD (7200 DCA OLDHND CIF 10 JMS I L200 1 OLDDEV, 0 0 OLDHND, 0 HLT /NO DSK:? TAD (PSNAME DCA .+5 TAD OLDDEV+1 CIF 10 JMS I L200 2 0 0 JMP NOFILE /BAD NAME, NOT THERE TAD .-3 DCA DBLK CDF 10 JMS I READ 0400 -34 DBLK, 0 JMP I PREADY NOFILE, JMS I PPRINT NOTFND JMP I PJOB NOTFND, TEXT /FILE NOT SAVED_/ OPERATOR,K4000 DCA OUTFLG JMS I PRING MESSAGE,JMS I PMSG DCA OUTFLG JMP I PREADY PAGE COLMAX=50 GETLINE,0 NEWLINE,TAD L200 KRS TAD L7403 SNA CLA KSF SKP JMP KEYX RCSE /START CARD IF READY JMP NOTRDY /NO CARD READY GO ASK ABOUT IT DCA LCTR /INIT CHAR COUNT TO ZERO DCA BADFLG /CLEAR BAD CHAR COUNT DCA INVFLG /CLEAR INVALID CHAR COUNT DCA CFLG /CLEAR COMMAND FOUND FLAG DCA COL /INIT CARD COLUMN COUNT TO ZERO NEXTC, TAD CONST /INIT COUNTERS FOR TIMEOUT LOOP DCA TEMP1 DCA I PRDTIM TEST, RCSF /IS NEXT COLUMN READY? JMP EOC /NO, GO SEE IF CARD IS DONE RCRB /READ THE CHAR AND SAVE IT DCA CHAR TAD COL TAD (COLMAX SPA CLA JMS I (TRANS ISZ COL JMP NEXTC EOC, RCSD /IS CARD DONE? JMP STALL /NO, GO DO TIMEOUT LOOP TAD L40 JMS I PPACK MTWO TAD LCTR CLL RAR TAD PLINE EOC1, DCA TEMP3 CDF 10 TAD I TEMP3 TAD L3740 SZA CLA JMP .+4 STA TAD TEMP3 JMP EOC1 ISZ TEMP3 TAD L3700 DCA I TEMP3 CDF TAD TEMP3 TAD MLINEM1 CLL RAL DCA LCTR TAD INVFLG SNA CLA JMP I GETLINE TAD EFLG SZA CLA JMP NEWLINE JMS I PPRERR INVMSG, TEXT /BAD CHARACTER/ STALL, ISZ I PRDTIM JMP TEST ISZ TEMP1 JMP TEST NOTRDY, JMS I PRING KCC K4000 /SWITCH TO TTY OUTPUT DCA OUTFLG JMS I PPRINT EOF JMS I PRING KSF JMP .-1 KCC TAD L200 KRS TAD L7461 DCA TEMP KRS JMS OUTPUT JMS CRLF DCA OUTFLG ISZ TEMP JMP NEWLINE JMS I PSEP DCA I (SYSIO KEY1, ONE DCA I PREC JMP I (BOOT KEY, TAD I PKFLG SZA JMP I (WHAT K4000 DCA I PKFLG JMS I PMSG KEYX, DCA I PPFLG TAD PFILE JMP KEY1-1 KEY0, K4000 DCA OUTFLG JMS I PRING JMP KEY1 NOTRUN, TEXT /NOT RUN--ERRORS_/ PAGE TRANS, 0 TAD COL TAD L7773 STL RAR DCA C3OR4 TAD C3OR4 /-1 IFF IN COL 3 OR 4 RAL SZA /0 IFF IN COL 5 JMP .+6 TAD CFLG SPA CLA JMP .+3 TAD L40 JMS I PPACK SPA CLA STA DCA F5 /-1 IFF IN COL 0-4; 0 OTHERWISE TAD L7763 DCA INC DCA CNT TAD CHAR SNA JMP BLANK BIT1, CLL RAL SZL JMP BIT2 ISZ CNT JMP BIT1 BIT2, SNA JMP LOOKUP DCA CHAR TAD F5 SZA CLA JMP INVAL TAD INC CMA TAD CNT DCA CNT ISZ INC TAD CHAR CLL RAL SNL JMP BIT2 SZA CLA JMP BADM LOOKUP, TAD CNT CLL RAR SNA JMP SYSC ISZ C3OR4 SKP JMP CFIELD TAD PTRT1 DCA TEMP /GET CHAR FROM TABLE AND SELECT LEFT OR RIGHT TAD I TEMP / HALF DEPENDING ON LINK SZL JMP .+4 RTR RTR RTR AND L77 SNA /TRANSLATION CHAR=0 MEANS INPUT WAS INVALID JMP BADM GPACK, JMS I PPACK /PUT CHAR IN BUFFER ONWARD, JMP I TRANS SYSC, ISZ F5 JMP BADM TAD LCTR SZA CLA JMP INVAL TAD COL CML RAL DCA XR1 TAD XR1 RAL TAD XR1 TAD CTBL DCA XR1 TAD XR1 TAD CTLEN SMA CLA JMP INVAL TAD I XR1 CDF 10 DCA I PLINE CDF TAD I XR1 CDF 10 DCA I PLINE1 CDF TAD L4 DCA LCTR STA DCA CFLG JMP I TRANS BLANK, ISZ F5 SKP JMP I TRANS TAD L40 JMP GPACK INVAL, ISZ INVFLG BADM, ISZ BADFLG TAD L45 JMP GPACK F5, 0 /-1 IFF IN COL 0-4; 0 OTHERWISE C3OR4, 0 /-1 IFF IN COL 3 OR 4 PTRT1, TRTAB1-1 PBKEY, BKEY-1-1 CFIELD, RAL /COMPUTE AND SAVE TABLE INDEX TAD PBKEY DCA TEMP1 TAD COL CLL RAR SNL CLA TAD L12 TAD TEMP1 DCA TEMP1 TAD CFLG SZA CLA JMP INVAL ISZ CFLG /INDICATE COMMAND FOUND TAD L40 /INSURE AT LEAST ONE BLANK AND FORCE JMS I PPACK / NEXT CHAR TO COME ON WORD BOUNDARY TAD LCTR CLL RAR SZL CLA JMP .-5 TAD I TEMP1 /GET SET TO MOVE CHOSEN BASIC COMMAND FROM RTR / TABLE TO BUFFER; COMPUTE "FROM" ADDRESS RAR AND L77 TAD PCTAB DCA FROM TAD I TEMP1 /COMPUTE NUMBER OF WORDS TO MOVE AND L7 STL CIA RAR DCA CNT TAD LCTR /COMPUTE "TO" ADDRESS CLL RAR TAD PLINE DCA TO TAD I FROM /PERFORM THE MOVE CDF 10 DCA I TO CDF ISZ FROM ISZ TO ISZ CNT JMP .-7 TAD I TEMP1 /UPDATE COUNT OF CHARS IN LINE AND L7 TAD LCTR DCA LCTR JMP I .+1 ONWARD / / CHARACTER TRANSLATION TABLE / / USED TO TRANSLATE CHARACTERS FROM EDUSYSTEM-30 TEMPLATE CODE / TO 6-BIT ASCII CODE / / A TABLE ENTRY OF 00 MEANS THE INPUT CHARACTER WAS NOT VALID / TRTAB1=. / 6-BIT ASCII CHARACTERS MARKED CARD ROWS 6061 / 0 1 0 1 6263 / 2 3 2 3 6465 / 4 5 4 5 6667 / 6 7 6 7 7071 / 8 9 8 9 0104 / A D 12-11 11-0 0712 / G J 0-1 1-2 1520 / M P 2-3 3-4 2326 / S V 4-5 5-6 3154 / Y , 6-7 7-8 0002 / INV B 8-9 12-0 0510 / E H 11-1 0-2 1316 / K N 1-3 2-4 2124 / Q T 3-5 4-6 2732 / W Z 5-7 6-8 0003 / INV C 7-9 12-1 0611 / F I 11-2 0-3 1417 / L O 1-4 2-5 2225 / R U 3-6 4-7 3056 / X . 5-8 6-9 0000 / INV INV 12-2 11-3 0000 / INV INV 0-4 1-5 0000 / INV INV 2-6 3-7 0000 / INV INV 4-8 5-9 3344 / [ $ 12-3 11-4 7772 / ? : 0-5 1-6 0000 / INV INV 2-7 3-8 0035 / INV ] 4-9 12-4 4641 / & ! 11-5 0-6 0000 / INV INV 1-7 2-8 0053 / INV + 3-9 12-5 5075 / ( = 11-6 0-7 4234 / " \ 1-8 2-9 5551 / - ) 12-6 11-7 4347 / # ' 0-8 1-9 5274 / * < 12-7 11-8 7357 / ; / 0-9 12-8 7636 / > ^ 11-9 12-9 / / BASIC KEYWORD POINTER TABLE / / EACH ENTRY IS A POINTER TO A 6-BIT ASCII CHARACTER STRING OF A / BASIC STATEMENT KEYWORD / / MIDDLE TWO DIGITS OF ENTRY CONTAIN OFFSET OF THE STRING / FROM THE START OF THE CHARACTER TABLE / / LOW-ORDER DIGIT CONTAINS THE NUMBER OF CHARACTERS IN THE STRING / BKEY=. PRINT0-CTAB^10+5 LET-CTAB^10+3 FOR-CTAB^10+3 READ0-CTAB^10+4 GOSUB-CTAB^10+5 GOTO-CTAB^10+4 INPUT-CTAB^10+5 WRITE0-CTAB^10+5 CHAIN0-CTAB^10+5 END-CTAB^10+3 REM-CTAB^10+3 IF-CTAB^10+2 NEXT-CTAB^10+4 DATA-CTAB^10+4 RETURN-CTAB^10+6 DEF-CTAB^10+3 DIM-CTAB^10+3 RESTORE-CTAB^10+7 STOP-CTAB^10+4 RANDOM-CTAB^10+6 / / CHARACTER TABLE / / 6-BIT ASCII CODE CHARACTER STRINGS OF BASIC STATEMENT KEYWORDS / / EACH KEYWORD BEGINS ON A WORD BOUNDRY AND IS PADDED ON THE RIGHT / WITH 00 IF KEYWORD HAS ODD NUMBER OF CHARACTERS / / THESE CHARACTER STRINGS ARE ACCESSED VIA THE POINTERS IN THE / BASIC KEYWORD POINTER TABLE / CTAB=. LET, TEXT /LET@/ *.-1 READ0, TEXT /READ@/ *.-1 INPUT, TEXT /INPUT@/ *.-1 PRINT0, TEXT /PRINT@/ *.-1 FOR, TEXT /FOR@/ *.-1 GOSUB, TEXT /GOSUB@/ *.-1 GOTO, TEXT /GOTO@/ *.-1 DIM, TEXT /DIM@/ *.-1 CHAIN0, TEXT /CHAIN@/ *.-1 END, TEXT /END@/ *.-1 WRITE0, TEXT /WRITE@/ *.-1 DATA, TEXT /DATA@/ *.-1 RESTORE,TEXT /RESTORE@/ *.-1 REM, TEXT /REM@/ *.-1 NEXT, TEXT /NEXT@/ *.-1 RETURN, TEXT /RETURN@/ *.-1 IF, TEXT /IF@/ *.-1 DEF, TEXT /DEF@/ *.-1 STOP, TEXT /STOP@/ *.-1 RANDOM, TEXT /RANDOM@/ *.-1 EXITE, CLA JMS I PPRERR TEXT /LINE NO. TOO BIG/ DASHES, TEXT /__------_/ SEP, 0 STA JMS CRLF JMS I PPRINT DASHES JMP I SEP NOTU, TEXT /--LINE NOT USED_/ LIST, JMS I PMSG JMS I (HEDING TAD PLINE3 DCA I PBASE JMS I PGETNUM TAD NUM DCA LINENO TAD PFILE DCA I PBASE MOREFL, JMS I PGETNUM TAD LINENO CLL CIA TAD NUM SZL CLA JMP GOTTIT JMS I PFINDNEXT JMP MOREFL GOTTIT, TAD I PBASE DCA .+4 ONE CDF 10 JMS I PPRINT 0 JMS CRLF JMP I PREADY EOF, TEXT /_MORE CARDS?/ PAGE PFREE, LOG-1 /POINTER TO FIRST FREE WORD - 1 PRLOG, 0 ONE JMS I PPRINT LOGHD TAD PLOG DCA PFREE DCA LOG JMP I PRLOG HDSAVE, 0 TAD PTR1 DCA XR1 TAD PHEADR DCA XR2 TAD L7771 DCA CNT TAD I XR2 DCA I XR1 ISZ CNT JMP .-3 JMP I HDSAVE PTR1, LOGHD+6 PLOG, LOG-1 PHEADR, HEADLINE-1 L7771, 7771 LOGHD, TEXT /__BATCH LOG EDUSYSTEM-30____/ *.-1 LOG, 0 PAGE /INPUT CHARACTER TRANSLATION ROUTINE FOR CARDS PUNCHED WITH DEC 029 KEYPUNCH / LOADED AT 1600 TRANS2, 0 DCA CNT /CLEAR TRANSLATION TABLE INDEX TAD CHAR /TRANSLATE ZONE PUNCH INTO 0,1,2 OR 3 CLL RTL RTL AND L7 JMS SCC TWO /MULTIPLY INDEX BY 2 AND ADD IN 8-PUNCH AND CHAR SZA CLA STL TAD CNT RAL DCA CNT TAD CNT /MULTIPLY BY 9 CLL RTL RAL TAD CNT DCA CNT TAD CHAR /TRANSLATE SINGLE (OR NO) PUNCH IN COL. 1-7,9 AND (775 / INTO 0,1,2,...,8 AND ADD THIS TO TABLE INDEX CLL RAR SZL IAC JMS SCC TAD CNT /COMPUTE TABLE WORD ADDRESS AND SET LINK CLL RAR / TO INDICATE LEFT OR RIGHT HALF TAD (TRTAB2 DCA TEMP TAD I TEMP SZL /SELECT 6-BIT TRANSLATED CHARACTER JMP .+4 RTR RTR RTR AND L77 SNA /TRANSLATED CHAR = 0 IFF INVALID PUNCH JMP BAD2 GPACK2, JMS I PPACK /GO PUT CHARACTER IN BUFFER MTHREE /IF THIS IS 4-TH CARD COLUMN DO TABLE LOOKUP TAD COL / TO SEE IF THIS IS SYSTEM COMMAND SZA CLA JMP I TRANS2 /ELSE RETURN TAD CTBL IAC DCA TEMP1 CMDLP, TAD I TEMP1 SNA JMP I TRANS2 CIA CDF 10 TAD I PLINE CDF ISZ TEMP1 SNA CLA JMP WD2 NXTENT, ISZ TEMP1 ISZ TEMP1 JMP CMDLP WD2, CDF 10 TAD I PLINE1 CDF AND L7700 CIA TAD I TEMP1 AND L7700 SZA CLA JMP NXTENT TAD TEMP1 DCA XR1 STA DCA CFLG JMP I TRANS2 / /ROUTINE TO SCAN FOR A 1-BIT IN AC / / INCREMENTS CNT BY N WHERE / N = (NUMBER OF 0-BITS TO RIGHT OF THE FIRST 1-BIT) + 1 / 0 IF AC=0 / / IF THERE IS MORE THAN ONE 1-BIT THE BAD CHARACTER EXIT IS TAKEN / FROM THE TRANSLATION ROUTINE / SCC, 0 SNA /IS THERE AT LEAST ONE 1-BIT? JMP I SCC /NO, GO BACK RIGHT AWAY SCCLP, ISZ CNT /SCAN AC AND INCREMENT CNT CLL RAR SNL JMP SCCLP SNA CLA /MORE THAN ONE 1-BIT? JMP I SCC /NO, EVERYTHING IS OK BAD2, ISZ BADFLG /SIGNAL INVALID CHARACTER WARNING TAD L45 /GO STORE "%" AS THE CHARACTER AND RETURN JMP GPACK2 / / CHARACTER TRANSLATION TABLE / / USED TO TRANSLATE CHARACTERS FROM 029 KEYPUNCH CODE / TO 6-BIT ASCII CODE / / A TABLE ENTRY OF 00 MEANS THE INPUT CHARACTER IS NOT VALID / TRTAB2=. / 6-BIT ASCII CHARACTERS PUNCHED ROWS 4071 / 9 BLANK 9 6766 / 7 6 7 6 6564 / 5 4 5 4 6362 / 3 2 3 2 6170 / 1 8 1 8 0042 / INV " 8-9 8-7 7547 / = ' 8-6 8-5 0043 / INV # 8-4 8-3 7200 / : INV 8-2 8-1 6032 / 0 Z 0 0-9 3027 / X W 0-7 0-6 2625 / V U 0-5 0-4 2423 / T S 0-3 0-2 5731 / / Y 0-1 0-8 0077 / INV ? 0-8-9 0-8-7 7600 / > INV 0-8-6 0-8-5 0054 / INV , 0-8-4 0-8-3 3500 / ] INV 0-8-2 0-8-1 5522 / - R 11 11-9 2017 / P O 11-7 11-6 1615 / N M 11-5 11-4 1413 / L K 11-3 11-2 1211 / J Q 11-1 11-8 0034 / INV \ 11-8-9 11-8-7 7351 / ; ) 11-8-6 11-8-5 5244 / * $ 11-8-4 11-8-3 4100 / ! INV 11-8-2 11-8-1 4611 / & I 12 12-9 0706 / G F 12-7 12-6 0504 / E D 12-5 12-4 0302 / C B 12-3 12-2 0110 / A H 12-1 12-8 0036 / INV ^ 12-8-9 12-8-7 5350 / + ( 12-8-6 12-8-5 7456 / < . 12-8-4 12-8-3 3300 / [ INV 12-8-2 12-8-1 PAGE