Directory of image this file is from
This file as a plain text file
*20 /SINPRE /PAGE 0 PMODE *10 XR0, 0 XR1, 1 XR2, 2 *20 LINC LMODE LIF 2 JMP BEGIN PMODE *50 FTB, 0 LTB, 0 ITU, 0 OFTB, 0 OTU, 0 *70 C700, 700 C704, 704 RTBLK, 0 STSW, 0 BBUFA, TBUF+377 TBUFA, TBUF READA, READ WRITEA, WRITE INWORD, 0 0 MAX, 0 0 PTR, 0 C7400, 7400 CTR, 0 OTBLK, 0 OBUFA, OBUF-1 OEND, OBUF+377 TCTR, 0 C777, 777 TTYOA, TTYO C1X, 10 CRLFA, CRLF ALDONE, DONEAL XOINP, 0 XOOUT, 0 C4X, 4000 C5X, 5000 RSTRTA, RSTRT M4X, -400 *200 XEGIN, CLA CLL DCA MAX DCA MAX+1 TAD ITU CLL RAR DCA XOINP TAD C700 SZL TAD C1X DCA R2 TAD OTU CLL RAR DCA XOOUT TAD C704 SZL TAD C1X DCA W2 DCA CTR TLS JMS I CRLFA JMP I .+1 SRCH / / /THIS ROUTINE WILL SHIFT THE /MAX DP VALUE TO 8 BITS /THE NUMBER OF SHIFTS IS IN CTR / / SHIFT, CLA CLL TAD MAX RAL SZA SNL CLA JMP S3 TAD MAX+1 SZA JMP S3 TAD C17X DCA CTR JMP I S4 S3, CLA TAD MAX SZA CLA CLL JMP S1 TAD MAX+1 AND C7400 SNA CLA JMP I S4 CLL JMP S2 S1, TAD MAX RAR DCA MAX S2, TAD MAX+1 RAR DCA MAX+1 ISZ CTR JMP SHIFT S4, TRAN C17X, 17 / / /READ OR WRITE 1 BLOCK TO /THE SPECIFIED UNITS / / READ, 0 TAD RTBLK AND C777 TAD C4X DCA R1 LINC LMODE ADD XOINP AXO CLR LDF 1 R2, 0 R1, 0 CLR PDP PMODE JMP I READ WRITE, 0 TAD OTBLK AND C777 TAD C5X DCA W1 LINC LMODE ADD XOOUT AXO CLR LDF 1 W2, 0 W1, 0 CLR PDP PMODE JMP I WRITE / /ALL ERROR CONDITIONS END UP HERE /RETURN TO MSG 1 OF SET UP / RSTRT, LINC LMODE LIF 2 JMP BEGIN PMODE / / / /SEARCH THE INPUT FILE FOR THE /THE MAX VALUE (ABSOLUTE) /IF A VALUE IS NEG. MAKE IT POS /SEARCHES FROM THE END OF THE /INPUT FILE AND SKIPS THE /ENDING ZEROS /THE MAX VALUE IS LEFT IN MAX *400 SRCH, CLA TAD LTB DCA RTBLK IAC DCA STSW TAG1, IAC TAD BBUFA DCA PTR JMS I READA TAD STSW SNA CLA JMP TAG2 TAG4, JMS GETWRD TAD INWORD SZA CLA JMP TAG3 TAD INWORD+1 SZA CLA JMP TAG3 / /CHECK FOR TOP OF BUFFER / TAD PTR CIA TAD TBUFA SPA CLA JMP TAG4 / /CHECK FOR START OF FILE / TAD RTBLK CIA TAD FTB SNA CLA JMP TAGA CMA TAD RTBLK DCA RTBLK JMP TAG1 / /HERE AFTER FIRST NON ZERO VALUE / TAG3, ISZ PTR ISZ PTR DCA STSW / /NON ZERO VALUES / TAG2, JMS GETWRD TAD INWORD SMA CLA JMP TAG5 / /IF NEG MAKE POS / TAD INWORD CMA DCA INWORD TAD INWORD+1 CIA SNA ISZ INWORD DCA INWORD+1 / /COMPARE TO MAX / TAG5, TAD MAX CLL CML CIA TAD INWORD SZL SPA JMP TAG6 SZA CLA JMP FMAX TAD MAX+1 CIA CLL TAD INWORD+1 SNL CLA JMP TAG6 / /REPLACE MAX IF INWORD /IS LARGER (OR EQUAL) / FMAX, TAD INWORD DCA MAX TAD INWORD+1 DCA MAX+1 / /TOP OF BUFFER CHECK / TAG6, TAD PTR CIA TAD TBUFA SPA CLA JMP TAG2 / /END OF TAPE CHECK / TAD RTBLK CIA TAD FTB SNA CLA / /DONE IF END OF FILE / JMP I TAG7 CMA TAD RTBLK DCA RTBLK JMP TAG1 TAG7, SHIFT TAGA, TAD NDAT JMS I TTYOA JMP I RSTRTA NDAT, NODAT-1 / /DECREMENTS PTR AND LEAVES DP WORD /AT INWORD / GETWRD, 0 CMA TAD PTR DCA PTR TAD I PTR DCA INWORD CMA TAD PTR DCA PTR TAD I PTR DCA INWORD+1 JMP I GETWRD / / /TRANSLATES EACH VALUE OF THE /INPUT FILE TO A SINGLE PRECISION /NUMBER /IT CONSTRUCTS THE OUTPUT FILE /STARTING AT OFTB /DOES NOT LET THE OUTPUT FILE /OVERLAP THE INPUT FILE IF THE UNITS /ARE COMMON *600 TRAN, CLA TAD FTB DCA RTBLK TAD OFTB DCA OTBLK TAD OBUFA DCA XR2 TR1, JMS I READA CMA TAD TBUFA DCA XR1 TR2, TAD I XR1 DCA INWORD+1 TAD I XR1 DCA INWORD / /NO SHIFT IF CTR IS 0 / TAD CTR SNA JMP TR6 CIA DCA TCTR / /SHIFT RIGHT TCTR TIMES / TR3, CLL TAD INWORD SPA STL RAR DCA INWORD TAD INWORD+1 RAR DCA INWORD+1 ISZ TCTR JMP TR3 / /LSB TO OUTPUT BUFFER / TR6, TAD INWORD+1 DCA I XR2 / /CHECK OUTPUT BUFFER FULL / TAD XR2 CIA TAD OEND SZA CLA JMP TR5 JMS I WRITEA ISZ OTBLK TAD OBUFA DCA XR2 / /CHECK TAPE LIMIT / TAD OTBLK CIA TAD C777 SMA CLA JMP TR4 / /NO MORE INPUT IF AT LIMIT / JMS CIBF SNA CLA JMP ERROR JMS CIPT SNA CLA JMP ERROR JMP I ALDONE ERROR, TAD OUTOVA JMS I TTYOA JMP I RSTRTA OUTOVA, OUTOV-1 DATOVA, DATOV-1 / /CHECK FOR OVERFLOW IF UNITS /ARE EQUAL / TR4, TAD ITU CIA TAD OTU SZA CLA JMP TR5 TAD OTBLK CIA TAD FTB SZA CLA JMP TR5 TAD DATOVA JMS I TTYOA JMP I RSTRTA / /CHECK FOR END OF INPUT / TR5, JMS CIBF SNA CLA JMP TR2 JMS CIPT SZA CLA JMP I ALDONE ISZ RTBLK JMP TR1 / / /CHECK STATUS OF INPUT BUFFER / CIBF, 0 TAD XR1 CIA TAD BBUFA SNA CLA IAC JMP I CIBF / / /CHECK STATUS OF INPUT FILE / CIPT, 0 TAD RTBLK CIA TAD LTB SNA CLA IAC JMP I CIPT / / /FILL REMAINING PORTION OF THE /OUTPUT BUFFER WITH ZEROS /THEN WRITE IT ON TAPE DONEAL, TAD XR2 CIA TAD OEND TAD M4X SNA CLA JMP DONE1 DONE2, DCA I XR2 TAD XR2 CIA TAD OEND SZA CLA JMP DONE2 JMS I WRITEA DONE1, LINC LMODE LIF 2 JMP M5 / / / PMODE *1000 TTYO, 0 DCA XR0 JMS CRLF TT1, TSF JMP .-1 TAD I XR0 SNA JMP TT2 TLS CLA JMP TT1 TT2, JMS CRLF JMP I TTYO CRLF, 0 TAD CC TSF JMP .-1 TLS CLA TAD LF TSF JMP .-1 TLS CLA JMP I CRLF CC, 215 LF, 212 / / NODAT, 316 317 240 304 301 324 301 207 212 0 OUTOV, 317 325 324 320 325 324 240 317 326 305 322 306 314 317 327 207 212 0 DATOV, 304 301 324 301 240 317 326 305 322 306 314 317 327 207 212 0 / / /INPUT FILE BUFFER *2000 TBUF, 0 / / /OUTPUT FILE BUFFER *2400 OBUF, 0 LMODE SEGMNT 2 *20 BEGIN, LDA I 20 ESF /SET IO PRESET START, JMP M1 JMP M2 JMP M3 JMP M4 PDP PMODE JMP I .+1 200 LMODE JMP M5 M1, SET 17 0 M1A, JMP QAINIT MESS1 ANSWER JMP CHKSNS SET I 10 ANSWER LDH I 10 SHD I 0300 /A C? JMP 17 JMP M1A M2, SET 17 0 M2A, JMP QAINIT MESS2 ANSWER JMP CHKSNS SET I 10 ANSWER LDA I /SET UP FOR 10 /OCTAL INPUT STA /TO OCTAL MULWD /CONVERSION COM STC UPLIM JMP CHAR SKP JMP M2A LDA OCTAC JMP ZERO STC FBLK2 /FIRST BLK NO JMP CHAR SKP JMP M2A LDA OCTAC JMP ZERO STC LBLK2 /LAST BLK NO LDA FBLK2 ADA I -1 COM ADD LBLK2 APO /LSTBLK>FSTBLK? JMP M2A /NO JMP CHAR /YES SKP JMP M2A LDA OCTAC JMP ZERO STC UNIT2 /UNIT NO JMP 17 M3, SET 17 0 M3A, JMP QAINIT MESS3 ANSWER JMP CHKSNS SET I 10 ANSWER JMP CHAR SKP JMP M3A LDA OCTAC JMP ZERO STC FBLK3 /FIRST BLK TEMP JMP CHAR SKP JMP M3A LDA OCTAC JMP ZERO STA UNIT3 /UNIT3 TEMP SAE UNIT2 /UNIT3 = UNIT2? JMP OK LDA /YES FBLK2 COM ADD FBLK3 AZE I JMP M3A APO JMP OK LDA FBLK3 COM ADD LBLK2 AZE I JMP M3A APO SKP /NO JMP M3A /YES OK, JMP CHARLY JMP 17 M4, SET 17 0 M4A, JMP QAINIT MESS4 ANSWER JMP CHKSNS SET I 10 ANSWER LDH I 10 SHD I 0300 /A C? JMP 17 JMP M4A /NO M5, JMP QAINIT MESS5 ANSWER JMP QARFSH SET I 10 ANSWER LDH I 10 SHD I 2200 /AN R? JMP BEGIN HLT /STOP CHAR, SET 16 0 CLR STC OCTAC LOOP1, LDH I 10 SHD I 7400 /E O ANS.F. JMP 16 SHD I 3400 /E O M? JMP 16 SHD I 0 /A BLANK? JMP LOOP1 ADA I -60 /A DIGIT? STA NUM ADA I 1 APO /NUM IS NONNEG? JMP XIT /SHOULD BE ADA I UPLIM, 0 /IS NUM LESS APO I /THAN 10? JMP XIT /SHOULD BE LDA OCTAC MUL I MULWD, 0 ADD NUM STC OCTAC JMP LOOP1 CHARLY, LDA 0 STC RTN1 SET 15 INPTR LDF 0 LDA FBLK2 STA I 15 LDA LBLK2 STA I 15 LDA UNIT2 STA I 15 LDA FBLK3 STA I 15 LDA UNIT3 STA I 15 RTN1, 0 XIT, XSK I 16 JMP 16 CHKSNS, SNS 0 JMP QARFSH JMP START ZERO, SAE I 7777 SKP CLR JMP 0 OCTAC, 0 NUM, 0 FBLK2, 0 LBLK2, 0 UNIT2, 0 FBLK3, 0 UNIT3, 0 INPTR, 2047 MESS1, TEXT ZF SINPRE H CONVERT A DOUBLE PRECISION FILE H TO A SINGLE PRECISION FILE FTYPE C TO CONTINUE <1\Z MESS2, TEXT ZFDBLE PRECISION FILE F FIRST BLOCK <3 F LAST BLOCK <3 F UNIT <1\Z MESS3, TEXT ZFSNGL PRECISION FILE F FIRST BLOCK <3 F UNIT <1\Z MESS4, TEXT ZF MOUNT TAPES F ON PROPER UNITS FTYPE C TO CONVERT <1\Z MESS5, TEXT ZF REQUESTED DATA F HAS BEEN CONVERTED H TYPE R FOR ANOTHER JOB F REPLY <1\Z ANSWER, 0 *.+7 NOLIST /QANDA SUBROUTINE FOR THE /PDP-12 /REMOVE *1000 BELOW IF /INSERTING SOURCE DIRECTLY /INTO YOUR PROGRAM SOURCE / /TO HERE TO INITIALIZE THE ROUTINE / 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 /XR6 USED AS A SWITCH. =0 IF NO ANSWER FIELD, =1777 IF YES QACA, SET 3 /XR3 TO PTR TO ANSWERS 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 /EXAMINE NEXT CHAR /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 277 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 QAL SHD I 2 />? JMP QAK SHD I 2 /ALT? JMP QACA /REINITIALIZE 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 QAU, 2 /CONSTANT 0 /NOT USED 1212 /75:= 1212 /CODE 76:> NOT DISPLAYED QAW, NOP ADD QAU 4020 /77:? 2055 / QAF, DSC I 6000 JMP QAI / /END Q+A / / / / /KEYBOARD INPUT ROUTINE / QAKRB=6036 /PDP-8 IOT KBD QATSF=6041 /TSF QATLS=6046 /TLS / GETKBD, LDA 0 STC QAEXIT+6 /SAVE RETURN ADD 1 /SAVE XRS 1 AND 2 STC QAEXIT+3 ADD 2 STC QAEXIT+5 STC QAEXIT+1 KST /WAS SOMETHING TYPED? JMP 0 /NO: EXIT IOB QAKRB /GET TTY CHAR, CLEAR FLAG STA I /SAVE IT QATY, 0 ADA I -237 APO /BETWEEN 200 AND 237? JMP QACNTR /CONTROL CHAR. CHECK FOR CR,LF,TAB / SET I 1 /NO QACHAR-1 SET I 2 -7 LDA QATY SAE I 1 JMP .+2 JMP QAEXIT /ILLEGAL CHAR. DONT ECHO XSK I 2 /CHECKED THEM ALL? JMP .-4 / ADA I -337 APO /BETWEEN 240 AND 337? JMP QALEGL /YES. LEGAL CHAR / SAE I 1 /NO. CHECK FURTHER. JMP .+7 LDA I /RUBOUT 334 JMP QATPE /ECHO BACKSLASH LDA I 37 JMP QAEXIT+2 /LEGAL EXIT / SAE I 1 JMP QAEXIT /ILLEGAL /ALT JMP QAEXIT+2 /EXIT, DONT ECHO / QALEGL, LDA QATY JMP QATPE /ECHO CHAR ADD QATY BCL I /STRIP IT TO 6-BIT 7700 JMP QAEXIT+2 /TO HERE IF CONTROL CHAR QACNTR, SAE I 7755 JMP QACKLF LDA I /CR 43 STC QAEXIT+1 LDA I 215 JMP QATPE LDA I 212 JMP QATPE JMP QAEXIT / QACKLF, SAE I 7752 JMP .+4 LDA I /LF 45 JMP QACNTR+5 SAE I 7751 JMP QAEXIT /ILLEGAL LDA I 47 JMP QAEXIT+2 /EXIT, DONT ECHO / QAEXIT, 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) QATPE, IOB QATLS /PDP-8 IOT TLS LDA 0 STC .+4 /SAVE RETURN IOB QATSF /WAIT FOR FLAG JMP .-2 JMP /EXIT / QACHAR, 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 LIST AAAEND, 0