*20 /PROGRAM CONVERT /PDP-12 PROGRAM /INPUT: PACKED LINC SOURCE /FILED IN LAP6,LAP6A-3L,OR /LAP6-3L SYSTEM ON UNIT 1 /OUTPUT: PACKED ASCII SOURCE /IN WA OF DIAL ON UNIT 0 / JMP QAINIT TEX1 ANS1 JMP QARFSH JMP SETUP TEX1, TEXT >FCONVERT H HLAP6 SOURCE PROGRAM HSTARTS IN BLOCK<3 HON UNIT ONE\> ANS1, 7400 0000 3400 /PUT QANA HERE /Q+A ROUTINE FOR PDP-12 QAINIT, LDA I /SAVE JMP RETURN 2 ADD 0 STA I QAB, 0 /JMP +3 ADD QAL+3 STC 1 /PTR TO FIRST PARAM LDA 1 /GET FIRST PARAM ADD QAQ+1 /PTR TO HALFWORD-1 STC QAG-3 LDA I 1 STC QARFSH-1 STC 6 QACA, SET 3 QARFSH-1 SET 4 /XR4 TO PTR TO QUESTIONS QAG-3 /TO HERE IF FIRST TIME THROUGH OR FOLLOWING A CR SET 1 4 JMP QAT NOP /F LDH I 4 /H. BUMP PTR IF H OR F QAD, JMP QAO JMP .+6 /74 JMP QAE /34 SAE I /CR? 43 JMP QAD /NO JMP QACA+4 /INITIALIZE ANSWER BUFR STH 3 /74 TO ANSWERS LDH I 4 /NEXT HALFWORD ADA I -60 COM STC 6 STH I 3 /0 IN AC XSK I 6 JMP .-2 LDH I 3 /BUMP PTR TO ANSWERS JMP QAD /ANSWER BUFR IS INITIATED QAE, STH 3 SET I 4 /XR4 TO PTR TO LAST TYPED CHAR IN ANSWER BUFR 0 /----RE-ENTER HERE TO REFRESH---- QARFSH, LDA I /INITIAL Y POSITION 137 STC QAH-1 SET I 3 /XR3 TO PTR TO HALFWORD QUESTIONS-1 0 SET 5 /XR5 TO PTR TO LAST DISPLAYED CHAR IN ANSWER BUFR QARFSH-1 QAG, SET 1 3 JMP QAT JMP .+7 /F LDH I 3 /H. BUMP PTR LDA I /NEITHER. ASSUME HALF SIZE BCL I STC QAM+2 /SET INSTR TO CLEAR FF FOR HALF SIZE ADD QAW /NOP IN AC JMP QAM LDH I 3 /BUMP PTR LDA I BSE I STC QAM+2 /SET INSTR TO SET FF FOR FULL SIZE ADD QAW+1 /ADD 9U IN AC QAM, STC QAP+3 MSC I 4 /EAD CONTROL REGISTER BSE I /THIS INSTR CHANGES. EITHER BSE & OR BCL & 200 MSC 4 /AC TO CONTROL REGISTER SET I 1 /XR1 TO INITIAL X POSITION 100 LDA I /Y COORDINATE MULTIPLE -40 ADM I /Y COORDINATE 0 QAH, LDH I 3 JMP QAO+1 JMP QAZ /74 BUMP PTR TO NEXT CHAR, PUT 40 IN AC JMP QAJ /34 SHD I /NEITHER 4300 JMP QAG /CR. MOVE X AND Y COORDINATE JMP QAP /ISPLAY CHAR JMP QAH /PICK UP NEXT CHAR JMP QAP /TO HERE IF DISPLAYING ANSWER BUFR SRO I /SWITCH TO DISPLAY CURSOR. EITHER 0000 OR 7777 0 /IFXR4=XR5, THEN SWITCH=7777 JMP QAF /QUESTION MODE QAI, LDH I 5 JMP QAO+1 JMP QAH /74 JMP QAH /34 JMP QAI-4 /NEITHER. DISPLAY IT QAJ, JMP GETKBD /TO HERE IF DISPLAYED BUFFER AZE I JMP QAB /NOTHING TYPED . EXIT SET I 2 QAY SHD 2 /LF? JMP QAK+4 /YES. EXIT SHD I 2 /CR? JMP QAN XSK 6 /IS THERE AN ANSWER FIELD? JMP QARFSH SHD I 2 /? JMP QAK SHD I 2 /ALT? JMP QACA SHD I 2 /BACK SLASH? JMP QARFSH /IGNORE SHD I 2 /RUBOUT? JMP QAL /IGNORE SHD I 2 /TAB? JMP QARFSH /IGNORE STC .+5 /ACCEPTABLE CHAR JMP QAO /TEST NEXT CHAR JMP QAQ /74 BACK PTR UP BY 1 JMP QAQ /34 ^ LDA I /OK. STORE IT 0 STH 4 JMP QARFSH /REDISPLAY QAL, LDH 4 /TO HERE IF RUBBOUT OR < JMP QAO+1 JMP QARFSH /74 IGNORE -6002 LDH 2 /TEST THE CHAR SAE I /RUBOUT? 37 JMP QAQ /NO. BACK PTR UP BY 1 SET 5 4 SET 3 4 JMP .+2 LDH I 5 /BUMP PTR LDH I 3 /GET NEXT CHAR JMP QAO+1 NOP /IF 74 OR 34, REPLACE CURRENT CHAR WITH 0 CLR STH 5 AZE /WAS IT 74 OR 34? JMP .-7 /NO. CONTINUE JMP QAQ /BACK PTR UP BY 1 /TO HERE IF CR QAN, XSK 6 JMP QAK+4 /EXIT ROUTINE IF NO ANSWER FIELD JMP QAO JMP QARFSH /74 MOVE PTR TO NEXT QUESTION FIELD JMP QAE+1 /34 END OF BUFR. MOVE PTR TO FIRST QUESTION FIELD JMP QAN+2 QAO, LDH I 4 /S/R SHD I / +1 74 BEGIN FIELD 7400 / +2 34 END BUFR JMP 0 / +3 NEITHER 74 NOR 34 SAE I 34 XSK I 0 XSK I 0 JMP 0 /S/R TO DISP LINC CHAR IN AC QAP, ROL 1 /MULT BY 2 FOR INDEX TO ADDRESS OF TABLE ADD QAX+4 STC 2 /ADDRESS OF CHAR TO DISP IN XR2 ADD QAU /THIS INSTR CHANGES. EITHER OP OR ADD 9U ADD QAU ADD 1 /ADD 4 TO XR1 TO SPACE CHAR STC 1 ADD 5 /GET ADDRESS OF ANSWER BUFR COM ADD 4 AZE CLR STC QAI-2 /SWITCH=0 OR 7777 ADD QAH-1 /Y COORDINATE IN AC DSC 2 DSC I 2 /DISPLAY CHAR JMP 0 QAQ, LDA I /BACK UP PTR BY 1 -4000 ADM 4 JMP QARFSH /REDISPLAY / QAT, LDH I 1 /S/R SHD I / +1 F 0600 / +2 H JMP 0 / +3 NEITHER SAE I 10 XSK I 0 XSK I 0 JMP 0 / QAZ, LDH I 3 LDA I 40 JMP QAI-4 /TO HERE IF > QAK, LDH I 4 AZE I /IS CURRENT CHAR BLANK? JMP QAQ /YES. IGNORE JMP QAX /MOVE DOT FORWARD /TO HERE TO EXIT WITH SKIP LDA I 1 ADM QAB JMP QAB /CHARACTER PATTERNS QAV, 0101 /KBD 0, ILLEGAL. USED AS MARKER 0101 4477 /1:A 7744 5177 /2:B 2651 4136 /3:C 2241 4177 /4:D 3641 4577 /5:E 4145 4477 /6:F 4044 4136 /7:G 2645 1077 /10:H 7710 7741 /11:I 0041 4142 /12:J 4076 1077 /13:K 4324 0177 /14:L 0301 3077 /15:M 7730 3077 /16:N 7706 4177 /17:O 7741 4477 /20:P 3044 4276 /21:Q 0376 4477 /22:R 3146 5121 /23:S 4651 4040 /24:T 4077 0177 /25:U 7701 0176 /26:V 7402 0677 /27:W 7701 1463 /30:X 6314 0770 /31:Y 7007 4543 /32:Z 6151 4177 /33:/ 0000 /34:BACKSLASH IGNORED ON INPUT 0 /NOT USED 0 /NOT USED 0000 /35:] 7741 /CODES 36:ALT, 37:RUBOUT NOT DISPLAYED QAY, 4543 /LF,CR 7476 /<,> 3634 /ALT, BACKSLASH 3747 /RUBOUT, TAB 0000 /40:SPACE 0000 7500 /41:X! 0000 7000 /42:" 0070 /CODES 43:, 44:, 45:LF NOT DISPLAYED QAX, JMP QAO+1 JMP QAQ JMP QAQ JMP QARFSH QAV 0 /NOT USED 5166 /46: & 0526 /CODE 47:TAB NOT DISPLAYED 0 /NOT USED 0 /NOT USED 3600 /50:( 0041 4100 /51:) 0036 2050 /52:* 0050 0404 /53:+ 0437 0500 /54:, 0006 0404 /55:- 0404 0001 /56:. 0000 0601 /57:/ 4030 4536 /60:0 3651 2101 /61:1 0177 4523 /62:2 2151 4122 /63:3 2651 2414 /64:4 0477 5172 /65:5 0651 1506 /66:6 4225 4443 /67:7 6050 5126 /70:8 2651 5122 /71:9 3651 2200 /72:: 0000 4601 /73:; 0000 /CODE 74: NOT DISPLAYED QAW, NOP ADD QAU 4020 /77:? 2055 / QAF, DSC I 6000 JMP QAI / /END Q+A / / / / /KEYBOARD INPUT ROUTINE / LKRB= 6036 /PDP-8 IOT KBD LTSF= 6041 /TSF LTLS= 6046 /TLS / GETKBD, LDA 0 STC EXIT+6 /SAVE RETURN ADD 1 /SAVE XRS 1 AND 2 STC EXIT+3 ADD 2 STC EXIT+5 STC EXIT+1 KST /WAS SOMETHING TYPED? JMP 0 /NO: EXIT IOB LKRB /GET TTY CHAR, CLEAR FLAG STA I /SAVE IT TY, 0 ADA I -237 APO /BETWEEN 200 AND 237? JMP CNTRL /CONTROL CHAR. CHECK FOR CR,LF, TAB / SET I 1 /NO CHARS-1 SET I 2 -7 LDA TY SAE I 1 JMP .+2 JMP EXIT /ILLEGAL CHAR. DON T ECHO XSK I 2 /CHECKED THEM ALL? JMP .-4 / ADA I -337 APO /BETWEEN 240 AND 337? JMP LEGAL /YES. LEGAL CHAR / SAE I 1 /NO. CHECK FURTHER. JMP .+7 LDA I /RUBOUT 334 JMP TPE /ECHO BACKSLASH LDA I 37 JMP EXIT+2 /LEGAL EXIT / SAE I 1 JMP EXIT /ILLEGAL /ALT JMP EXIT+2 /EXIT, DON T ECHO / LEGAL, LDA TY JMP TPE /ECHO CHAR ADD TY BCL I /STRIP IT TO 6-BIT 7700 JMP EXIT+2 /TO HERE IF CONTROL CHAR CNTRL, SAE I 7755 JMP CKLF LDA I /CR 43 STC EXIT+1 LDA I 215 JMP TPE LDA I 212 JMP TPE JMP EXIT / CKLF, SAE I 7752 JMP .+4 LDA I /LF 45 JMP CNTRL+5 SAE I 7751 JMP EXIT /ILLEGAL LDA I 47 JMP EXIT+2 /EXIT, DON T ECHO / EXIT, LDA I /GET 6-BIT ASCII 0 SET I 1 /RESTORE XRS 0 SET I 2 0 JMP /EXIR S/R GETKBD /S/R TO PRINT C(AC) TPE, IOB LTLS /PRINT IT LDA 0 STC .+4 /SAVE RETURN IOB LTSF JMP .-2 /WAIT FOR FLAG JMP /EXIT CHARS, 243 /HASH 244 /DOLLAR SIGN 245 /PER CENT 247 /APOSTROPHE 300 /AT SIGN 336 /UP ARROW 337 /BACK ARROW 40 /RUBOUT 36 /ALT /END OF S/R GETKBD CONV, 60 /0-9 61 62 63 64 65 66 67 70 71 43 /CR 37 /RO 40 /SPACE 11 /I 56 /P 55 /- 53 /+ 34 /VERT BAR 32 /LB 36 /CASE 01 /A-Z 02 03 04 05 06 07 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31 32 /Z 45 /LF 77 77 /? 75 /= 25 /U 54 /COMMA 56 /PERIOD 52 /ORIGIN 57 /LT BRAC TO SLASH 77 /UNDERLINE?? 74 /QUOTES 76 /QUOTES 74 /QUOTES 76 /QUOTES 35 /RT BRACKET 52 72 /COLON 00 47 /TAB SETUP, LDA I 4000 STA BNIN LDA ANS1+1 AZE JMP SETUP1 LDH ANS1+4000 BCL I 70 ADM BNIN JMP SETUP3 SETUP1, LDH ANS1+4001 AZE JMP SETUP2 LDH ANS1+1 BCL I 70 ADM BNIN LDH ANS1+4000 BCL I 70 ROL 3 ADM BNIN JMP SETUP3 SETUP2, BCL I 70 ADM BNIN LDH ANS1+1 BCL I 70 ROL 3 ADM BNIN LDH ANS1+4000 BCL I 70 ROL 6 ADM BNIN STA NBNIN SETUP3, ADA I 1001 STA BNIN1 /READ INITIAL BLOCKS IN OVRTEX, RDC U BNIN, 0 /2000-2377 RDC U BNIN1, 0 /2400-2777 SET I 10 4\INIT-1 SET I 11 /Q6:3000-3377 6777 LDH I 10 AZE /NULL? JMP .+2 JMP OVRIN /END STH I 11 JMP .-5 INIT, TEXT >*20 /THIS PROGRAM DOES /NOT TRANSLATE ALL /SITUATIONS. /CHECK LISTING!! ZTA=5 LMB=0600 UMB=0640 > 0 OVRIN, SET I 10 4\2001 LDA I 6370 STA TPOUT START, JMP HWD SAE I 66 JMP TXMETA /COMMENT MODE COMMT, SAE I 12 JMP MOCT /END OF COMMENT MORE, JMP LINCD SET 12 10 LDH I 12 SAE I 66 JMP .+2 JMP START SAE I 22 JMP .+2 JMP START MO1, LDA I 100 JMP LINCD JMP START /MORE COMMENTS MOCT, JMP LINCD JMP HWD JMP COMMT /CHECK FOR TEXT META TXMETA, SAE I 70 /ALT-A JMP ICK TXBG, LDA I 0047 JMP LINCD LDA I 0030 JMP LINCD LDA I 53 JMP LINCD LDA I 47 JMP LINCD JMP SPACE LDA I 71 TXAGIN, JMP LINCD JMP HWD SAE I 71 JMP TXAGIN /END OF TEXT META JMP LINCD JMP START /SMALL I CHECK ICK, SAE I 15 JMP UCK /SMALL I JMP LINCD JMP SPACE JMP START /SMALL U CHECK UCK, SAE I 62 JMP TAGCK /SMALL U JMP LINCD JMP SPACE JMP START /TAG CHECK TAGCK, SAE I 22 JMP SYMCK /TAG JMP HWD JMP SWAP JMP COMMA JMP MO1 /SYMBOL CHECK SYMCK, SET 12 10 ADA I -11 APO I /NUMBER? JMP TERM SET 12 /YES 10 LDH I 12 /PEEK AT NEXT HWD ADA I -55 /Z OR BELOW APO I JMP TERM LDH 12 /YES ADA I -23 APO JMP TERM LDH 10 /YES,A-Z JMP SWAP JMP START TERM, LDH 10 SAE I 77 JMP .+3 JMP LINCD JMP QUIT MNEM, SET 12 10 ADA I -55 APO I JMP CRMORE LDH 12 ADA I -23 APO JMP CRMORE /LETTER. IS NEXT CHAR /A LETTER? LDH I 12 ADA I -55 APO I JMP CRMORE LDH 12 ADA I -23 APO JMP CRMORE /YES, CHECK LAST CHAR LDH I 12 ADA I -55 APO I JMP CRMORE LDH 12 ADA I -23 APO JMP CRMORE LDH 10 /MNEMONIC JMP LINCD JMP HWD JMP LINCD JMP HWD JMP LINCD JMP SPACE JMP START CRMORE, LDH 12 SAE I 12 JMP .+2 JMP MORE JMP LINCD JMP START /HWD MUST CHECK /FOR END OF Q4 /AND BRING-IN NEW /HALF WORD HWD, CLR ADD 0 STC BACK LDA 10 SAE I 6377 JMP .+2 JMP EQ4 LDH I 10 BACK, 0 EQ4, SET I 10 7777 LDA NBNIN ADA I 1 STA NBNIN ADA I 1001 STA NBNIN1 RDC U NBNIN, 0 RDC U NBNIN1, 0 JMP BACK-1 /SPACE CREATES A SPACE SPACE, CLR ADD 0 STC BACK1 LDA I 14 JMP LINCD BACK1, 0 /COMMA OUTPUTS A COMMA COMMA, CLR ADD 0 STC BACK2 LDA I 63 JMP LINCD BACK2, 0 /SWAP INTERCHANGES NUMBER /AND LETTER COMBINATIONS /THEN OUTPUTS BOTH SWAP, CLR ADD 0 STC BACK3 LDH 10 STA SWAP1 JMP HWD STA SWAP2 LDA I SWAP2, 0 JMP LINCD LDA I SWAP1, 0 JMP LINCD BACK3, 0 /LINC SETS UP O/P /BUFFER IN Q6 LINCD, STC OPWD ADD 0 STC BACK4 LDA 11 SAE I 7377 JMP OUTPUT WRC /YES, END OF OP BUFFER TPOUT, 0 LDA TPOUT ADA I 1 SAE I 6467 JMP .+2 JMP TPQ+3 STA TPOUT SET I 11 6777 OUTPUT, LDA I OPWD, 0 ADA I CONV STC PICKUP LDA PICKUP, 0 STH I 11 BACK4, 0 QUIT, LDA TPOUT STA TPQ WRC TPQ, 0 0416 JMP .-1 CHK U 0000 0416 JMP .-1 SET I 15 RCG SET I 16 7300 SET I 14 -57 SET I 13 TEXTZ-1 LDA I 13 IOB 6041 /TSF JMP .-2 IOB 6046 /TLS XSK I 14 JMP .-7 JMP 15 TEXTZ, 0215 0212 322 305 315 317 326 305 240 324 301 320 305 240 306 322 317 315 240 325 316 311 324 240 261 /REMOVE TAPE FROM UNIT 1 0215 0212 324 331 320 305 240 314 306 240 301 320 240 263 267 260 254 260 240 303 322 215 212 /TYPE LF AP 370,0 CR /CONVERT /18 DEC 69