*20 SEGMNT 2 *20 CLR PDP PMODE JMP I .+1 20 LMODE SEGMNT 1 PMODE *2020 MAJORD,0 SKP CLA PCHECK TAD I .-1 SZA CLA TAD FUDGE TAD PSTRING DCA QP1 LINC LMODE LIF 1 LDF 1 SET I 17 -10 JMP QAINIT QP1,0 DUMMY NOP NOP XSK I 17 JMP QARFSH LIF 0 LDF 0 CLR PDP PMODE JMP I MAJORD FUDGE,FIRST-LAST PSTRING,LAST LMODE FIRST,TEXT 6F*** CHECKSUM ERROR *** FALL BINARY DATA LOST 6 LAST,TEXT 6 F OPTIONS HD---RETURN TO DIAL HH---READ IN TAPE ON HIGH SPEED READER HL---READ IN TAPE ON LOW SPEED READER \6 DUMMY,0 0 0 0 *.+DUMMY-FIRST /Q AND A PROGRAM / /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 BSE I 200 MSC 4 SET I 1 100 LDA I -40 ADM I 0 QAH,LDH I 3 JMP QAO+1 JMP QAZ JMP QAJ SHD I 4300 JMP QAG JMP QAP JMP QAH JMP QAP SRO I 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 IODE ISZ BLOCK /INCREMENT RETURN JMP I BLOCK /OR BACK COUNTA, 0 /COUNTER NO OF DATA WRDS COUNTB, 0 /COUNTER 1ST 12 WORDS TEMPA, 0 /RANDOM USAGE BKBNS, 0000 /SAVE BKWD BN AS CALLED BKBNA, 0000 /FORM BKBWD BN THAT /WILL BE WRITTEN ON TAPE B1TAB, 0400 /TABLE USED TO FORM 1000 /BACKWARD BLOCK NO. 2000 4000 0020 0040 0100 0200 0001 0002 0004 0010 K0016, 0016 /CONSTANTS K7764, 7764 KB1TAB, B1TAB KWAIT, WAIT KWMKWD, WMKWD K5252, 5252 *4600 /SUBROUTINE TO WAIT FOR COMPLETION /OF/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 / / GETKBD,CLR JMP 0 / / SEGMNT 0 / / PMODE *600 /BINARY LOADER ADDRESS SWITCH,0 MEMTEM,0 CHAR,0 CHKSUM,0 ORIGIN,0 BEGG,0 DCA SWITCH JMS READ TAD M376 SPA SNA CLA JMP .+4 ISZ SWITCH CMA JMP BEGG+1 TAD SWITCH SZA CLA JMP BEGG+2 TAD CHAR AND MASK TAD M200 SPA ISZ BEGG SPA SNA CLA JMP I BEGG TAD CHAR AND FMASK TAD CHANGE DCA MEMTEM JMP BEGG+2 FMASK,70 CHANGE,CDF READ,0 0 LOR,KSF JMS DILLYDALLY KRB DCA CHAR TAD CHAR JMP I READ HIR,6011 JMS DILLYDALLY 6016 JMP LOR+3 MASK,300 BEND,JMS ASSEMB CIA TAD CHKSUM JMP I .+1 DONE M376,HLT BEGIN,KCC 6014 6214 TAD CHANGE DCA MEMTEM TAD I GETRED SMA CLA TAD HIRI TAD LORI DCA READ+1 JMS BEGG JMP .-1 GO,DCA CHKSUM TAD MEMTEM SKP DOMEMF JMS I .-1 TAD CHAR DCA WORD1 JMS READ DCA WORD2 JMS BEGG JMP BEND JMS ASSEMB SNL JMP MEMFLD DCA ORIGIN CHEX,TAD WORD1 TAD WORD2 TAD CHKSUM JMP GO MEMFLD,NOP JMS I .+2 SKP PUTW ISZ ORIGIN M200,7600 JMP CHEX ASSEMB,0 TAD WORD1 CLL RTL RTL RTL TAD WORD2 JMP I ASSEMB LORI,JMP LOR HIRI,HIR-LOR 0 WORD1,0 WORD2,0 GETRED,HORLOW DILLYDALLY,0 CLA CMA CLL RAL/-2 TAD DILLYDALLY DCA DILLYDALLY TAD I 14 CMA RTR TAD I 14 DCA 17 TAD I 17 TAD I 14 CML IAC RTL TAD I 14 DCA 17 TAD I 17 TAD I 14 LINC LMODE DIS I 17 PDP PMODE TAD I 17 CMA RTL TAD I 14 LINC LMODE DIS I 14 PDP PMODE CLA CLL JMP I DILLYDALLY / / / / / / / *20 0002 / COMMON START FOR EITHER CLA CLL / 8 OR LINC MODE JMP I .+1 /MAJOR START START / MAIN STARTING ADDRESS JMP 177 /MAJOR START MESS,0 CLA CLL TAD I MESS ISZ MESS SNA JMP I MESS 6046 6041 JMP .-1 JMP MESS+1 INBUF,0 CLA CLL TAD I INBUF ISZ INBUF SNA JMP I INBUF JMS BUF JMP INBUF+1 BUF,0 LINC LMODE WHERE,0 BUF1,STH I 15 XSK I 12 JMP OUTBUF SET I 12 -1000 SET I 15 BUFF1-1+4000 LDA I JMP BUF2 STC WHERE ADD 10 BCL I 7000 BSE I 2000 STD JMP .-1 STC .+2 WRC 0 XSK I 10 XSK I 10 JMP OUTBUF BUF2,STH I 16 XSK I 13 JMP OUTBUF SET I 13 -1000 SET I 16 BUFF2-1+4000 LDA I JMP BUF1 STC WHERE ADD 11 BCL I 7000 BSE I 3000 STD JMP .-1 STC .+2 WRC 0 XSK I 11 XSK I 11 JMP OUTBUF / OUTBUF,PDP PMODE CLA CLL JMP I BUF LINBUF,0 JMS INBUF 252 262 260 43 320 315 317 304 305 43 306 311 305 314 304 240 260 43 0 JMP I LINBUF A1,701 A2,7300 B1,4016 B2,4017 *200 PUTW,0 DCA HUMPH TAD ORG CMA TAD I PORIGIN SZA CLA JMP NOTOK BACK1,TAD HUMPH JMS PUTO TAD I PORIGIN DCA ORG JMP I PUTW NOTOK,JMS INBUF 252 0 TAD I PORIGIN JMS PUTO JMP BACK1 HUMPH,0 PORIGIN,ORIGIN ORG,0 PUTO,0 SNA JMP PZERO DCA 1 DCA TEST TAD 1 RTL RTL JMS PUTWO TAD 1 RTR RTR RTR JMS PUTWO TAD 1 RTR RAR JMS PUTWO TAD 1 JMS PUTWO JMS INBUF 43 0 JMP I PUTO PZERO,JMS INBUF 60 43 0 JMP I PUTO PUTWO,0 AND L7 SNA JMP PUTT PUTENT,TAD L260 DCA OUTP ISZ TEST JMS INBUF OUTP,0 0 JMP I PUTWO L7,7 L260,260 TEST,0 PUTT,TAD TEST SNA CLA JMP I PUTWO JMP PUTENT DOMEMF,0 LINC LMODE BCL I 7707 ROR 3 STA FIELD3 PDP PMODE CIA TAD FIELD2 SNA CLA JMP I DOMEMF JMS INBUF 306 311 305 314 304 240 0 TAD FIELD3 DCA FIELD2 TAD FIELD2 JMS PUTO JMP I DOMEMF FIELD2,-1 FIELD3,-1 *400 START,0 LINC LMODE LIF 0 LDF 0 RDC 6300 RDC 7301 LDA I 3002 STA 1002 LDA I 7776 STA 1524 STA 1522 LDA I 6450 STA 1527 WRC 6300 WRC I 7301 LDA I 10 AXO RDC /MAIN UNIT=0 3360 SET I 10 360 SET I 11 361 SET I 12 -1000 SET I 13 -1000 SET I 15 BUFF1-1+4000 SET I 16 BUFF2-1+4000 LDA I JMP BUF1 STC WHERE LDA I -1 STA FIELD STC ORG PDP PMODE JMS LINBUF JMP MORE DONE,DCA PCHECK TAD PCHECK SNA CLA JMP MORE JMS MESS 207 207 207 0 JMP START+1 MORE=. MLOOP,6031 SKP JMP .+3 JMS I DUPPY JMP .-4 6036 TAD M304 SNA JMP END TAD M4 SNA JMP RHIGH TAD M4 SNA JMP RLOW TAD M11 SNA JMP I PBEGIN JMP MLOOP PBEGIN,BEGIN M304,-304 M4,-4 M11,-11 M1001,-1001 PCHECK,0 DUPPY,MAJORD RLOW,CLA CMA RHIGH,DCA HORLOW JMP I PBEGIN HORLOW,-1 END,CLA CLL TAD M1001 DCA 3 JMS INBUF 44 43 43 44 43 0 JMS INBUF 44 0 ISZ 3 JMP .-4 TAD A1 DCA I B1 TAD A2 DCA I B2 LINC LMODE STD JMP .-1 CLR AXO LDF 3 LIF 2 JMP 16/RESTART DIAL AAALOC=.-1 BUFF1=1000 BUFF2=BUFF1+400