*20 SEGMNT 0 /A/D 17 IS IN PLACE OF A/D 12 /2 LIM1 PTR DURING SMPL /3 CURSAM PTR " " /14 PRECS CS SKIP /11 PRECS TIMER /13 CS US TIMER /1 IS COMMITTED TO PDP INT /USES A FIXED TIME OF 10MSEC/BIN / SET AT TIMSET (1303 LINE?) / MSEC IN OCTAL -1 IS CORRECT SETTING / FIXED BIN SIZE OF 256 BINS(10) LIM=10 AVGPTR=12 TIME=20 SBINS=21 TPEBLK=22 SAMN=23 N=24 WRTBLK=25 *1 PMODE JMP INT+3 LMODE *41 JMP INT FACTOR, 0 *170 INT, NOP NOP PDP 7300 6135 6141 APO I JMP SYNC LDA I 4100 SAE I CS, 0 JMP US XSK I 17 /CLOCK SERVICE CONT, XSK I 4 XSK I 5 XSK I 6 XSK I 7 XSK I 15 /END OF RUNTIME JMP .+2 JMP ENDBLK IOB 6001 XSK I 11 JMP SMPL LDA I 0040 ATR SET I 14 1777 /SHOW CS TIME SMPL, NOP /SFA /GET SPEC FUNCTION REG /BSE I /0100 /ENABLE FAST SAMPLE /ESF /SAM 10 SET I 1 5173 SMPL1, SET I 3 CURSAM-1 SET I 2 LIM1-1 CLR NOP NOP SAM 10 XSK I 3 ADA I DED, 7777 APO SKP STA 3 /SAV SAM 10 CLR JMP HGHT /BYPASS OTHER A/DS NOP NOP SAM 17 XSK I 3 ADA DED APO SKP STA 3 /SAV SAM 11 CLR NOP NOP SAM 13 XSK I 3 ADA DED APO SKP STA 3 CLR NOP NOP SAM 14 XSK I 3 ADA DED APO SKP STA 3 CLR NOP NOP SAM 10 XSK I 3 ADA DED APO SKP STA 3 HGHT, SET I 3 /AMPLITUDE SERVICE CURSAM-1 SET I 2 LIM1-1 SET I 16 PRESAM-1 JMP HGET APO I JMP BMP10 /PEAKED NOP TEST11, JMP SMPL1 /S/B JMP HGET / / APO I JMP BMP11 NOP TEST12, JMP HGET APO I JMP BMP12 NOP TEST13, JMP HGET APO I JMP BMP13 NOP TEST14, JMP HGET APO I JMP BMP14 NOP JMP SMPL1 HGET, LDA 0 STC HGTRET XSK I 16 LDA I 3 /CURSAM(I) COM ADA I 2 /LIM(I)-CURSAM(I) APO /+ IF PEAKED JMP HPLUS /POSITIVE SLOPE LDA 16 /PRESAM FLAG(I) APO /+ IF PEAKED JMP FLGSET /PEAKED BUT NOT SET,DO IT LDA 2 /LIM-PASS-CURSAM ADA I PASS, -10 COM ADA 3 APO I /-IF OK TO BUMP JMP HGTRET-1 LDA HGTRET STC 0 LDA I 100 JMP 0 LDA I /FLAG PREVIOUSLY SET GO TO NEXT TEST HGTRET, 0 ADA I 3 STC 0 JMP 0 / FLGSET, LDA I 100 /+ FLAG STA 16 JMP 0 / HPLUS, LDA 3 STA 2 /MOVE CURSAM TO LIM1 LDA I -100 STA 16 JMP HGTRET-1 / / / BMP10, LDF 7 JMP BMP LDA I 2200 JMP INC JMP TEST11 BMP11, LDF 6 JMP BMP LDA I 2210 JMP INC JMP TEST12 BMP12, LDF 5 JMP BMP LDA I 2220 JMP INC JMP TEST13 BMP13, LDF 4 JMP BMP LDA I 2230 JMP INC JMP TEST14 BMP14, LDF 3 JMP BMP LDA I 2240 JMP INC JMP SMPL1 / SWAP, LDA 3 STA 2 JMP 0 / BMP, LDA 0 STC HRET LDA 2 ADA I -600 APO JMP .+10 LDA I KU, 1 ADM 7 LDA I 0 STC BMPPTR JMP HRET-1 LDA 2 ADA I -400 APO JMP .+10 LDA KU ADM 6 LDA I 1 STC BMPPTR JMP HRET-1 LDA 2 ADA I -200 APO JMP .+10 LDA KU ADM 5 LDA I 2 STC BMPPTR JMP HRET-1 LDA KU ADM 4 LDA I 3 STC BMPPTR LDA I HRET, 0 STC 0 JMP 0 / CURSAM, 0 0 0 0 0 0 0 0 LIM1, 0 0 0 0 0 0 0 0 0 0 BMPPTR, 0 PRESAM, 0 0 0 0 0 0 / / INC, NOP ADM BMPPTR /AC=ELECTRODE,1=AMPLITUDE DJR XSK 14 /CS PERIOD JMP .+6 /NO LDA I 4 /YES AMP+4+ELECTRODE ADM BMPPTR JMP .+1 /DISABLE DJR LDF 2 LDA 16 STA I SAV16, 0 LDA BMPPTR STC 16 LDA I 1 ADM 16 /BMP CNT AAFO AMP,ELEC,PERIOD LDA SAV16 STC 16 LDA I -777 STA 2 STA 3 /RESET CURSAM AND LIM(I) JMP 0 ENDBLK, SET I 1 5173 MORE, LDA I 0060 STA CS ATR SET I 13 -63 /END OF CS TIME SET US (K1) AND CS(K0) FOR 50 BINS US, XSK I 13 JMP ASTART-3 /KEEP RELAYS SET LDA I 0 ATR /CLEAR THEM SNS I 5 JMP .+3 LIF 2 JMP TYPER TRT, XSK I AVGPTR JMP CLKSET JMP AVG / SYNC, SET I 17 TABLE, 3777 SET 15 BINS, SBINS SET 4 TABLE SET I 5 DELBIN, 2377 SET I 6 DLBIN2, 2777 SET I 7 DLBIN3, 3377 SET I 11 -200 /PRECS TIMER SET I 2 LIM1-1 SET I 3 PRESAM-1 SET I 14 CURSAM-1 SET I 16 -5 LDA I -777 STA I 2 STA I 3 STA I 14 XSK I 16 JMP .-4 SET I 14 1 /SHOW CS LDA WRTBLK ADA I 1 STA WRTBLK LDA TIME IOB 6133 /PRESET TIMER LDA I 4100 /1KC AND PRESET STA CS /SHOW SYNC IOB 6132 /CLLR IOB 6135 /CLSA POSSIBLE FLAG LDA I 300 /ENABLE CLOCK IOB 6134 /SET CLOCK INT IOB 6001 JMP SMPL /WAIT FOR CLOCK ASTART, LDA I 4000 BSE TPEBLK STA WRTBLK /INITIALIZE WRTBLK STA AVGBLK LDA I 60 ESF /IO PRESET CLR IOB 6132 /CLLR TO STOP CLOCK AVGSET, SET I AVGPTR 3777 LDF 3 CLR STA I AVGPTR LDF 4 STA AVGPTR LDF 5 STA AVGPTR LDF 6 STA AVGPTR LDF 7 STA AVGPTR XSK AVGPTR JMP AVGSET+2 SET I AVGPTR -400 SET I 13 2177 CLR LDF 2 STA I 13 XSK I AVGPTR JMP .-2 CLR SET AVGPTR SAMN /N FOR AVERAGE CLKSET, LDA TIME IOB 6133 /CLAB, PRESET NUMBER CLR IOB 6132 /CLLR TO STOP CLOCK LDA I 60 IOB 6134 /CLEN IOB 6135 /CLSA TO CLEAR CLOCK IOB 6001 LIF 1 JMP DISPLA /WAIT FOR SYNC --- /CUT IN HERE FOR TTY SERVICE BEFORE IOB AND 6001 / / AVG, STD JMP .-1 LDA I 60 ESF SET I 17 3777 CLR SET 14 SBINS SNS I 0 JMP RESET /SUPPRESS TAPE FIELD 1 LDF 7 JMP WRTSET JMP RESET LDF 6 JMP WRTSET LDF 5 JMP WRTSET LDF 4 JMP WRTSET LDF 3 JMP WRTSET JMP RESET / WRTSET, LDA 0 STC WRET SET I 17 4000 JMP SET1 JMP WRITE SET I 17 5000 JMP SET1 JMP WRITE SET I 17 6000 JMP SET1 JMP WRITE SET I 17 7000 JMP SET1 JMP WRITE LDA I WRET, 0 STC 0 JMP 0 / SET1, LDA 0 STC RET4 LDA AVGBLK BCL I 7000 BSE 17 STC AVGBLK LDA I RET4, 0 STC 0 JMP 0 / WRITE, LDA 0 STC RET LDA AVGBLK ADA I 1 STA AVGBLK STD JMP .-1 WRI U AVGBLK, 0 LDA I RET, 0 STC 0 JMP 0 / RESET, SET I 17 3777 SET 15 SAMN LDA I 60 ESF /IO PRESET TO STOP TAPE JMP AVGSET / / /DISPLAY PROGRAM FOR DATA COLLECTION / SEGMNT 1 *20 DISPLA, CLR LDF 0 JMP .+1 /ENABLE INTERUPT LDA SBINS!2000 STA I DBINS, 0 SET I 17 WRTABL-1 SET I 16 -3 /DISPLAY TRIAL NUMBER LDA WRTBLK!2000 ROL 3 STC TEMWRT UNPACK, LDA I TEMWRT, 0 ROL 3 STA TEMWRT BCL I 7770 ROL 1 ADA I PATERN STA 3 LDA 3 STA I 17 /GET HALF CHAR LDA I 3 /GET OTHER HALF STA I 17 XSK I 16 JMP UNPACK DISGO, SET I 17 WRTABL-1 SET I 1 10 SET I 16 -6 SET 3 DBINS LDA I 300 DSC I 17 XSK I 16 JMP .-4 /DIS TRIAL NUMBER LDF 0 SET I 17 BLKTBL-1 SET I 16 -3 /DIS BLOCK NUMBER LDA AVGBLK!2000 ROL 3 STC TEMWRT BKPACK, LDA TEMWRT ROL 3 STA TEMWRT BCL I 7770 ROL 1 ADA I PATERN STA 3 LDA 3 STA I 17 LDA I 3 STA I 17 XSK I 16 JMP BKPACK DISBK, SET I 17 BLKTBL-1 SET I 1 600 SET I 16 -6 SET 3 DBINS LDA I 300 DSC I 17 XSK I 16 JMP .-4 /DIS BLOCK NUMB CLR RSW BCL I 7770 BSE I 0640 STA IELD IELD, 0 /SET DF SELECTED BY RITE SWTCHS SNS I 1 /SMALLEST JMP .+5 SET I 2 K3777, 3777 SAM 1 JMP DISLOP SET I 2 KBMP2, 2377 SNS I 2 JMP .+3 SAM 2 JMP DISLOP SET I 2 KBMP3, 2777 SNS I 3 JMP .+3 SAM 3 JMP DISLOP SET I 2 KBMP4, 3377 SNS I 4 JMP .+3 SAM 4 JMP DISLOP JMP DISGO / / /DISPLAY SUBROUTINE DISLOP, STA I DTEM, 0 LDA 0 STC DRET SET 3 DBINS XSK I 2 LDA DTEM ADA 2 DIS 2 XSK I 3 JMP .-6 LDA I DRET, 0 STC 0 JMP 0 / / PATERN, 4136 3641 2101 0177 4523 2151 4122 2651 2414 0477 5172 0651 1506 4225 4443 6050 5126 2651 5120 WRTABL, 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 BLKTBL, 0 0 0 0 0 0 0 0 0 AAHERE, CLR /STARTING POINT FOR PROGRAM IOB 6046 LDF 0 JMP QAINIT COMNT ANSWER JMP QARFSH JMP QAINIT QEST1 ANSWER JMP QARFSH /GET TAPEBLOCK AND N FOR AVG LDA I TIMSET, 7612 STA TIME!2000 /SET TIME TO 10 MSEC PER BIN LDA I -400 STA SBINS!2000 /SET BINS TO 256 SET I 14 ANSWER CLR STA I TEMP, 0 JMP FETCH JMP RTEMP /GET TAPEBLOCK COM STA TPEBLK!2000 CLR STC TEMP LDH I 14 JMP FETCH /GET N FOR AVG JMP RTEMP STA SAMN!2000 COM STA N!2000 CLR JMP QAINIT COACH ANSWER JMP QARFSH PATCH, JMP GETFTR ANSWER, 0 0 0 0 0 0 0 0 0 0 FETCH, SET I 13 -3 LDH I 14 BCL I 7770 ADD TEMP ROL 3 STC TEMP XSK I 13 SKP JMP 0 DJR JMP FETCH+2 QEST1, TEXT ZFSTART TAPE BLOCK<3 FN FOR AVG<3\Z COACH, TEXT ZFDATA IS COLLECTED FON TAPE 1 FDEPRESS LF TO START<1\Z COMNT, TEXT ZFALL ANSWERS IN OCTAL FRESTART BY I/O PRESET FLEFT SWITCHES TO 2313 FDEPRESS LS, NOW - L/F<1\Z / / /SCALE FACTOR SUBROUTINE TO SET FACTOR CNTR=11 GETFTR, CLR STC CNTR LDA N!2000 ROR I 1 LZE JMP .+3 XSK I CNTR /BMP CNTR, LINK=0 JMP .-4 LDA FACTOR!2000 BSE CNTR STA FACTOR!2000 LDF 3 LIF 2 AATCH, JMP HEADER / RTEMP, LDA TEMP ROR 3 COM JMP 0 SEGMNT 2 *1200 / /TYPE OUT ROUTINE / TYPER, CLR IOB 6046 /TLS JMP CRLF LDF 2 SET I 1 TSTRT, 2177 SET I 2 2477 /PRE AND PRE-CS TABLE SET I 3 -50 /NUMBER OF DIFFERENCES SET I 4 2203 SET I 5 -4 JMP DIFF /ELEC 1 SET I 1 2207 SET I 4 2213 JMP DIFF /ELEC 2 SET I 1 2217 SET I 4 2223 JMP DIFF /ELEC 3 SET I 1 2227 SET I 4 2233 JMP DIFF /ELEC 4 SET I 1 2237 SET I 4 2243 /ELEC 5 JMP DIFF TBSET, SET I 1 2477 /START OF P,P-C TABLE SET I 5 /NUM OF LINES -1 WDSET, SET I 2 -10 /NUM OF WORDS/LINE CHRSET, SET I 3 -5 /NUM OF CHARS B4 3 BLANKS LDA I 1 JMP MINUS /TEST +- JMP PRINT XSK I 2 JMP CHRSET JMP CRLF XSK I 5 /END OF LINES JMP WDSET /NO JMP CRLF SET I 1 2177 SET I 2 -400 CLR STA I 1 XSK I 2 JMP .-2 LIF 0 SET I 1 5173 JMP TRT / / / DIFF, LDA I 1 STA I 2 /MOVE PRECS COM ADA I 4 /CS-PRECS STA I 2 /INTERLACE DJR XSK I 5 JMP DIFF SET I 5 -4 JMP 0 / / CRLF, LDA 0 STC RET9 LDA I 215 JMP TYPEIT LDA I 212 JMP TYPEIT SET I 17 0000 XSK I 17 JMP .-1 LDA I RET9, 0 STC 0 JMP 0 / PRINT, LDA 0 STC RET6 CLR LDA MINUS+1 ROL 3 STA MINUS+1 BCL I 7770 ADA I 260 JMP TYPEIT XSK I 3 JMP PRINT+3 SET I 4 -3 BLANK, LDA I 240 JMP TYPEIT XSK I 4 JMP BLANK LDA I RET6, 0 STC 0 JMP 0 / TYPEIT, STA I 0 LDA 0 STC RET8 LDA TYPEIT+1 IOB 6041 JMP .-2 IOB 6046 LDA I RET8, 0 STC 0 JMP 0 / / MINUS, STA I 0 LDA 0 STC RET10 LDA MINUS+1 APO I JMP T100+4 COM STA MINUS+1 LDA I 255 /NUMBER WAS NEGATIVE JMP TYPEIT T100, XSK I 3 JMP TOUT JMP CRLF JMP TOUT LDA I 240 JMP T100-1 /NUMBER WAS PLUS TYPE A SPACE TOUT, LDA I RET10, 0 STC 0 EOP, JMP 0 / HEADER, CLR SNS I 5 /SUPPRESS HEADER JMP START IOB 6046 JMP CRLF JMP SPACE JMP SPACE JMP SPACE SET I 1 PTAB-1 SET I 2 -7 LDA I 1 JMP TYPEIT XSK I 2 JMP .-3 SET I 2 -21 JMP SPACE XSK I 2 JMP .-2 SET I 2 -5 LDA I 1 JMP TYPEIT XSK I 2 /UNITS JMP .-3 SET I 2 -21 JMP SPACE XSK I 2 JMP .-2 SET I 2 -10 LDA I 1 JMP TYPEIT XSK I 2 JMP .-3 JMP CRLF JMP CRLF SET I 2 -4 SET I 3 -20 SET I 1 CRTAB-1 LDA I 1 JMP TYPEIT XSK I 3 / JMP .-3 XSK I 2 JMP .-11 JMP CRLF JMP CRLF START, LIF 0 JMP ASTART / / CRTAB, 320 322 305 303 323 240 240 303 323 255 320 322 305 240 240 240 / SPACE, LDA 0 STC SPRET LDA I 240 JMP TYPEIT LDA I SPRET, 0 STC 0 JMP 0 / PTAB, 314 301 322 307 305 323 324 /LARGEST 325 316 311 324 323 /UNITS 323 315 301 314 314 305 323 324 /SMALLEST /END OF TYPEING NOLIST SEGMNT 1 /QANDA SUBROUTINE FOR THE /PDP-12 /REMOVE *1000 BELOW IF /INSERTING SOURCE DIRECTLY /INTO YOUR PROGRAM SOURCE *1000/REMOVE,IF DESIRED / /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 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 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