*20 LODSYM LISTAPE -1 PMODE *KSTRQ 0 PAGE P1DAC, 0 /ADD 1 TO DAC CLA IAC DCA ARGLO DCA ARGHI JMS I KDADD JMP I P1DAC LOHI, 0 /SA LO HI TAD CURNLO /TO TABLE DCA I INIPTR TAD CURNHI DCA I INIPTR TAD CURNLO DCA DBLLO TAD CURNHI DCA DBLHI JMS I KKDCIA /DBL PREC CIA TAD DBLLO /-SA LO HI DCA I INIPTR /TO TABLE TAD DBLHI DCA I INIPTR DCA DBLLO DCA DBLHI JMP I LOHI KKDCIA, DCIA GBLK, 0 /DETERMINE /BUFER LEN /AS A FCN OF /TBLKS FOR /TAPE ROUTS CLA TAD QUEIN /-LAST USED DCA DBLLO /CORE LOC TAD QUEOUT DCA DBLHI TAD MINADR DCA ARGLO TAD MINCDF DCA ARGHI JMS I KDADD /DAC NOW=- /TOT CORE /LOCS USED TAD PL400 DCA ARGLO DCA ARGHI DCA BCNTR JMS I KDADD /ADD 400 ISZ BCNTR /COUNT TBLKS SZL /DONE ? JMP .-3 /NO IAC RAL /2 BLKS OF HDR TAD BCNTR CIA DCA I KBLKCT JMP I GBLK PL400, 400 HLTMS, 0 /PUT HLT MESS TAD AHLTMS /ADDR OF MESS JMS I KQUPUT /INPUT MESS JMS NUMPUT /DEV NUM TO QUE TAD MODE SMA CLA /PAUSE MODE ? JMP I HLTMS /YES TAD DEVNUM /CHK FOR PAUSE DCA BCNTR /ALL SELECT CMA /WORDS MUST TAD SELPTR /BE 0 DCA ADPTR HLTLOP, TAD I ADPTR SZA CLA /DEV K HALTED ? JMP I HLTMS /NO EXIT ISZ BCNTR /CHKED ALL ? JMP HLTLOP /NO TAD HALTAL /PAUSE MODE JMS I KQUPUT /INPUT MESS DCA MODE /0=PAUSE CLEN /CLR CLOCK JMP I HLTMS GOMS, 0 /PUT GO MESS TAD AGOMS JMS I KQUPUT /INPUT MESS JMS NUMPUT JMP I GOMS AHLTMS, MSHLT /ADDR OF HLT MS AGOMS, MSGO /ADDR OF GO MS HALTAL, ALLHLT /ADDR OF PAUSE /MODE MESS NUMPUT, 0 TAD TEMP TAD KNUM DCA BETA1 TAD I BETA1 JMS I KQUPUT JMP I NUMPUT KNUM, NUM0 /X-Y TABLE /FOR DSC OF /X=----- /Y=--- LMODE DCODEX, 3075 /X, = CR1 00 /EOL, 100K 0000 /10K, 1K 0000 /100, 10 00 CR /UNITS, EOL DCODEY, 3175 /Y, = CR1 00 /EOL, 100 0000 /10, UNITS ENDWD1 /EOM /TABLE OF VERT /COORDS FOR /HELP FRAME /DISPLAY VCTAB, 340 /D DIAL 240 /A/D MODE 200 /CTRL/H 160 /HN 140 /P 120 /F 20 /PAUSE MODE -20 /GN -40 /S -60 /W -100 /C -120 /M -140 /L -160 /P -200 /F /TABLE OF HORIZ /COORDS HCTAB, 20 /D 260 /DIAL 164 /A/D 354 /MODE 310 /CTRL/H 454 /HALT ALL 310 /HN 454 /HLT INST 310 /P 454 /POLARITY 276 /F 454 /FREEZE 164 /PAUSE 354 /MODE 310 /GN 454 /GO 310 /S 454 /SETUP 310 /W 454 /WRITE 310 /C 454 /CATACAL 310 /M 454 /MAGSPY 310 /L 454 /LOADER 310 /P 454 /POLARITY 276 /F 454 /FREEZE /DIAL ENCODED MESSAGE /FORMAT IS: /D DIAL / / / A/D MODE / / CTRL/H HALT ALL INSTRUMENTS / HN HALT INSTRUMENT N / P POLARITY / F FREEZE / / PAUSE MODE / GN GO INSTRUMENT N / S SETUP / W WRITE TAPE / C CATACAL / M MAGSPY / L LOADER / P POLARITY / F FREEZE HLPTAB, TEXT 9FD^DIAL FA/D^MODE CTRL/H^HALT ALL INSTRUMENTS HN^HALT INSTRUMENT N P^POLARITY F^FREEZE FPAUSE^MODE GN^GO INSTRUMENT N S^SETUP W^WRITE TAPE C^CATACAL M^MAGSPY L^LOADER P^POLARITY F^FREEZE ?9 AAAS1, 0 /QANDA AND SETUP ROUTINES SEGMNT 2 QAFLD=4000 *1 /ONCE ONLY LDA I EXTMTP /NO PAUSE AXO CHK 270 LIF 3 /DETERMINE JMP MEMCHK /CORE SIZE /RTN TO SETUP *15 DIAL, LDF 3 /RESTART RCG I /DIAL 7300 START, JMP SETUP CHKSNS, SNS 0 /INIT SETUP JMP QARFSH /ON SSW0=1 SETUP, PDP PMODE JMS I KFRSTR /INIT ALL LINC /DSC LMODE /PARAM INPUT MESS1, JMP QAINIT /DO - TXT1 /1 LINC TAPE ANSWER /2 KEYBOARD JMP CHKSNS LDH ANSWER+HBIT SHD I 6100 /READ ? JMP READ /YES SAE I 62 /KEYBRD ? JMP MESS1 /NO ERROR PDP PMODE /INIT ARGS FOR MESS2, JMS I KRESTR /DEV K JMS I KLOHI LINC /DSC LMODE /INST K IS - REMS2, JMP QAINIT /(1=ANA, 2=ENC) TXT2 /ST PNT ----- ANSWER /TOT PT ----- JMP CHKSNS /SAM FREQ -- SET I ANSPTR ANSWER+1 LDH /CHK ANA OR ANSWER+HBIT /ENC SHD I 6100 /ANALOG ? JMP SETANA /YES SAE I 62 /ENCODED ? JMP REMS2 /NO ERROR PDP PMODE CLA TAD I ENCPTR /ANY MORE SNA /ENCODERS ? JMP I KERENC /NO ENC ERROR ISZ ENCPTR /SET FOR NXT JMP A1CONT LMODE SETANA, LDA I ANAVAL PDP PMODE A1CONT, DCA I INIPTR /SELECT WD TO /INIT TABLE ISZ CNTR /UP DV CNT /X COORD DV K A2LOP, JMS I KDIG /GET 1 DIGIT /FROM QA FLD JMP MESS2 /INPUT ERROR JMP A2CONT /DONE QA FLD JMS I KDSCL4 /1 BCD VAL IS /AC SCALE AND /PACK IN DAC JMP A2LOP A2CONT, JMS I KUPACK /UNPACK AND PUT /IN TABLE /TOTAL POINTS A3LOP, JMS I KDIG /GET 1 DIGIT JMP MESS2 /INPUT ERROR JMP A3CONT /DONE QA FLD JMS I KMUL10 /DECIMAL TO /OCTAL CVERT /ANSWER IN DAC JMP A3LOP A3CONT, CLA /CHK FOR TAD DBLLO /NO POINTS SZA CLA JMP NOT0 TAD DBLHI SNA CLA JMP I KER0PT /ERR 0 PTS NOT0, TAD CURNLO /GET ST ADDR DCA ARGLO /NXT DV TAD CURNHI /=TOT PTS+ DCA ARGHI /ST ADDR DV K JMS I KDADD TAD DBLLO /SAVE NXT SA DCA CURNLO TAD DBLHI DCA CURNHI JMS I KDCIA /2S COM DAC TAD DBLLO DCA I INIPTR /-SA ADDR TAD DBLHI /NEXT DEV DCA I INIPTR TAD DBLLO /SAVE FOR DCA QUEIN /GBLK SR TAD DBLHI DCA QUEOUT JMS I KP1DAC TAD DBLLO /-END ADDR DCA I INIPTR /DEV K TAD DBLHI DCA I INIPTR /CHK FOR TAD MAXCDF /BUFFER FULL DCA ARGHI CMA DCA ARGLO JMS I KDADD /IF -END ADR IS /GT BUF LEN /BUF IS EXCEDED SNL /IS DAC - ? JMP I KCONMS JMS I KERFUL /YES BUF ERROR JMP MESS2 KCONMS, CONMS2 KFRSTR, FRSTR KRESTR, RESTR KERENC, ERRENC KDSCL4, DSCL4 KUPACK, UPACK KER0PT, ERR0PT KDCIA, DCIA KERFUL, ERRFUL KLOHI, LOHI KP1DAC, P1DAC *QAFLD+200 CONMS2, TAD DBLLO SZA CLA /SET BUFF FULL JMP OK2 TAD DBLHI /SWITCH SZA CLA /7777=FULL JMP OK2 CMA /ITS FULL OK2, DCA STATUS DCA DBLLO /SAM FREQ A4, JMS I KDIG /1 DIGIT JMP I KMESS2 /INPUT ERROR JMP A4CONT /DONE QA FLD JMS I KMUL10 /DEC TO OCT JMP A4 A4CONT, CLA TAD DBLLO /CHK GT 10 TAD NEG12 SMA SZA CLA JMP ERFREQ /ERROR FREQ TAD DBLLO /SET 0=1 SNA IAC CIA /- FREQ TO TAB DCA TEMPLO TAD TEMPLO DCA I INIPTR TAD TEMPLO DCA I INIPTR TAD TEMPLO DCA I INIPTR LINC /DSC LMODE /DO - MESS3, JMP QAINIT /1 MORE INSTS TXT3 /2 START ANSWER JMP CHKSNS LDH ANSWER+HBIT SHD I 6200 /START ? JMP ALLDUN /YES SAE I 61 /MORE DVS ? JMP MESS3 /NO ERROR PDP PMODE /CHK FOR NO CLA /MORE DEVICES TAD CNTR /=NUM DEFINED TAD MAXDVN /=-NUM ALLOWED SNA CLA JMP ERRDEV /ERROR NO MORE /DEVICES TAD STATUS /CHK FOR NO SMA CLA /MORE PTS JMP OK1 JMS ERRFUL /NONE LEFT FOR JMP MESS3-1 /NEXT DEV OK1, JMS I KNXSTR /SET ARGS FOR /DEVICE K+1 JMP I KMESS2 /DO IT ALL /OVER AGAIN LMODE ALLDUN, LDA I 20 /I\O PRESET ESF PDP PMODE JMS I KGBLK /GET BLK CNT JMP I .+1 QADUN KNXSTR, NXSTR KMESS2, MESS2 NEG12, -12 KGBLK, GBLK ERRENC, LINC LMODE /DSC JMP QAINIT /ERR ENC TXT14 0 JMP CHKSNS JMP REMS2 ERR0PT, 6141 /LINC JMP QAINIT /DSC TXT10 /ERR 0 PTS 0 JMP CHKSNS JMP MESS2-1 ERRFUL, 0 6141 /LINC JMP QAINIT /DSC TXT11 /ERR BUF FULL 0 JMP CHKSNS PDP PMODE JMP I ERRFUL LMODE ERFREQ, 6141 /DSC JMP QAINIT /ERR FREQ TXT12 FREE, 0 JMP CHKSNS JMP MESS2-1 ERRDEV, 6141 /DSC JMP QAINIT /ERR DEV TXT13 0 JMP CHKSNS JMP MESS3 6141 /LINC READ, JMP QAINIT /DSC TXT5 /READ TBLK --- ANSWER /UNIT - JMP CHKSNS SET I ANSPTR ANSWER PDP PMODE JMP I .+1 DORDC PAGE WRIT, IOF /IGNORE KBRD /DURING WRITE TAD I KBLKCT /-NUM TO DO CIA LINC LMODE STC FREE SET I ANSPTR /PUT TBLK TXT6+3 /NUM (3 DIGITS) ADD FREE /IN QANDA TEXT ROR 6 /AT TXT6+3, BCL I /TXT6+4, 7770 /AND TXT6+5 ADD PL60 STH I ANSPTR LDA FREE ROR 3 BCL I 7770 ADD PL60 STH I ANSPTR LDA FREE BCL I 7770 ADD PL60 STH I ANSPTR LDF 3 /EXP NAME JMP QAINIT /-------- TXT4 ANS4+2000 JMP QARFSH LDA I /PATCH SPACE 40 /AROUND NAME STH /FOR MAGSPY ANS4+2000 JMP QAINIT /DSC TXT6 /WRITE --- ANSWER /TBLKS JMP QARFSH /1ST TBLK --- SET I ANSPTR /UNIT - ANSWER PDP PMODE JMP I .+1 DOWRC LMODE LOAD, JMP QAINIT /DSC TXT7 /LOAD -------- ANSWER /UNIT - JMP QARFSH LDH ANSWER+HBIT AZE I JMP LOAD LIF 0 JMP KLOAD DIGCHK, 0 /CHK NUMERIC 6141 /INPUT DLOOP, LDH I ANSPTR /FROM QA FLD SHD I QAEOL1 JMP EOLXIT-QAFLD AZE I /BLANK INPUT ? JMP DLOOP /YES IGNORE SHD I QAEOM1 JMP EOLXIT-QAFLD ADA I -57 APO /DIGIT ? JMP ERRXIT-QAFLD/NO ILLEGAL /INPUT ADA I UPLIM, -12 /-10 OR -12 APO I /DIGIT ? JMP ERRXIT-QAFLD LDH ANSPTR BCL I /PUT DIGIT PL60, 60 /IN AC PDP PMODE ISZ DIGCHK /P+3 IS NORMAL SKP EOLXIT, 2 /PDP ISZ DIGCHK /P+2 IS EOL SKP ERRXIT, 2 /P+1 IS ERR JMP I DIGCHK /RTN LMODE ANSWER, 0 0 0 0 0 0 0 0 0 TXT1, TEXT ?FPARAMETER INPUT FDO<1 F1 LINC TAPE F2 KEYBOARD\? TXT2, TEXT ?FINSTRUMENT XY IS<1 (1=ANALOG, 2=ENCODED) FSTARTING POINT=<5 FTOTAL POINTS=<5 FSAMPLING FREQ=<2\? TXT3, TEXT ?FDO<1 F1 MORE INSTRUMENTS F2 START\? TXT4, TEXT ?FEXPERIMENT NAME F<8\? TXT5, TEXT ?FREAD TBLK<3 FUNIT<1\? TXT6, TEXT ?FWRITE XYZ (OCT) TBLKS FFIRST TBLK=<3 FUNIT<1\? TXT7, TEXT ?FLOAD<8 FUNIT<1\? TXT10, TEXT ?FERR 0 PTS\? TXT11, TEXT ?FERR BUF FULL\? TXT12, TEXT ?FERR FREQ\? TXT13, TEXT ?FERR INST\? TXT14, TEXT ?FERR ENC\? NOLIST 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 /END OF S\R GETKBD LIST AAAS2, 0 SEGMNT 3 *1 FIRST, 4040 /SPACE FMT 4040 /AROUND NAME 4040 /FOR MAGSPY 4040 ANS4, 0 /EXPERIMENT 0 /NAME 0 0 0 4040 4040 4040 4040 PMODE /INITIALIZATION TABLE FILLED BY /SETUP AND READ ROUTS /17 VALUES PER DEVICE 4 DEVICES INISTR, 1 /SA LO 2 /SA HI 3 /-SA LO 4 /-SA HI 5 /SELECT WORD 6 /X COORD 1S 7 /10S 8 /100S 9 /1000S 10 /10000S 11 /-SA LO NXT DV 12 /-SA HI NXT DV 13 /-(EA LO,EA HI) 14 / 15 /-SAM FREQ 16 /-SAM FREQ INIEND, 17 /-SAM FREQ 1 /DEVICE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 /DEVICE 2 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 /DEVICE 3 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 /DEVICE 4 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 BLKCNT, 0 LAST, 0 /TABLE OF ADDR THAT TELL WHERE /INIT VALS GO INIAD, TISTR0 /DEVICE 0 TISTR0+1 LIMVL0 LIMVL0+1 TISTR0+2 BCD0 BCD0+1 BCD0+2 BCD0+3 BCD0+4 LIMVL1 LIMVL1+1 ELODV0 EHIDV0 TISTR0+3 TISTR0+4 LIMVL0+2 TISTR1 /DEVICE 1 TISTR1+1 LIMVL1 LIMVL1+1 TISTR1+2 BCD1 BCD1+1 BCD1+2 BCD1+3 BCD1+4 LIMVL2 LIMVL2+1 ELODV1 EHIDV1 TISTR1+3 TISTR1+4 LIMVL1+2 TISTR2 /DEVICE 2 TISTR2+1 LIMVL2 LIMVL2+1 TISTR2+2 BCD2 BCD2+1 BCD2+2 BCD2+3 BCD2+4 LIMVL3 LIMVL3+1 ELODV2 EHIDV2 TISTR2+3 TISTR2+4 LIMVL2+2 TISTR3 /DEVICE 3 TISTR3+1 LIMVL3 LIMVL3+1 TISTR3+2 BCD3 BCD3+1 BCD3+2 BCD3+3 BCD3+4 LIMVL4 LIMVL4+1 ELODV3 EHIDV3 TISTR3+3 TISTR3+4 LIMVL3+2 TISTR4 /DEVICE 4 TISTR4+1 LIMVL4 LIMVL4+1 TISTR4+2 BCD4 BCD4+1 BCD4+2 BCD4+3 BCD4+4 LIMVL5 LIMVL5+1 ELODV4 EHIDV4 TISTR4+3 TISTR4+4 LIMVL4+2 /TABLE OF VALUES FOR GO ROUTS /5 PER DEVICE TISTR0, 1 /SALO 2 /SAHI 3 /SELECT WD 4 /-SAM FREQ 5 /-SAM FREQ TISTR1, 1 /DV1 2 3 4 5 TISTR2, 1 /DV2 2 3 4 5 TISTR3, 1 /DV3 2 3 4 5 TISTR4, 1 2 3 4 5 /TABLE OF ADDR FOR GO VALUES /6 PER DEVICE TIAD0, LODV0 HIDV0 SELDV0 SFDV0 KSFDV0 OSDV0 TIAD1, LODV1 HIDV1 SELDV1 SFDV1 KSFDV1 OSDV1 TIAD2, LODV2 HIDV2 SELDV2 SFDV2 KSFDV2 OSDV2 TIAD3, LODV3 HIDV3 SELDV3 SFDV3 KSFDV3 OSDV3 TIAD4, LODV4 HIDV4 SELDV4 SFDV4 KSFDV4 OSDV4 /ADDR OF START OF EACH TABLE /FOR GO ROUTS VALTAB, TISTR0 TISTR1 TISTR2 TISTR3 TISTR4 ADRTAB, TIAD0 TIAD1 TIAD2 TIAD3 TIAD4 /TTY QUE HOLDS 20 MESS ADDRS MAX STRQUE, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ENDQUE, 20 /TABLES FOR SCOPE ROUTINES /POWERS OF TEN /FOR OCTAL TO /DECIMAL /CONVERSION RADVAL, 7747 /-100,000 4540 7775 /-10,000 4360 7777 /-1,000 6030 7777 /-100 -144 7777 /-10 -12 -144 /-100 +144 /+100 -12 /-10 +12 /+10 /HOLDS BCD VAL /OF X COORD BCDVAL, 0 /100K 0 /10K 0 /1K 0 /100S 0 /10S 0 /UNITS /DEVICE INFO /TABLE FOR /XYGET SETUP /AT QANDA STAGE LIMVL0, 0 /-ST ADDR DV0 0 /LO, HI 0 /- SAM FREQ DV0 BCD0 /ADDR OF BCD /VAL FOR DEV 0 LIMVL1, 0 /DV1 ARGS 0 0 BCD1 LIMVL2, 0 /DV2 ARGS 0 0 BCD2 LIMVL3, 0 /DV3 ARGS 0 0 BCD3 LIMVL4, 0 /DV4 ARGS 0 0 BCD4 LIMVL5, 0 /1ST UNUSED 0 /BUFFER CORE /LOC COMES /RIGHT AFT LAST /USER DEFINED /DEVICE BCD0, 0 /HOLDS USER 0 /DEFINED INIT 0 /X VALUE 0 /5 DIGITS 0 /1 EACH DV BCD1, 0 /UNITS 0 /TENS 0 /HUNDREDS 0 /THOUSANDS 0 /10 THOUS BCD2, 0 0 0 0 0 BCD3, 0 0 0 0 0 BCD4, 0 0 0 0 0 NUM0, MS0 /NUM TAGS NUM1, MS1 /MUST BE NUM2, MS2 /CONTIGUOUS NUM3, MS3 NUM4, MS4 /TISA MESSAGES MSHLT, 310 /H 301 /A 314 /L 324 /T 240 /SPACE 311 /I 316 /N 323 /S 324 /T 322 /R 325 /U 315 /M 305 /E 316 /N 324 /T 240 /SPACE 0 /EOM MSGO, 307 /G 317 /O 240 /SPACE 311 /I 316 /N 323 /S 324 /T 322 /R 325 /U 315 /M 305 /E 316 /N 324 /T 240 /SPACE 0 /EOM MS0, 260 215 212 0 MS1, 261 215 212 0 MS2, 262 215 212 0 MS3, 263 215 212 0 MS4, 264 215 212 0 MSMOT, 315 /M 317 /O 324 /T 311 /I 317 /O 316 /N 215 /CR 212 /LF 0 /EOM MSFR, 306 /F 322 /R 305 /E 305 /E 332 /Z 305 /E 215 212 0 MSNOR, 316 /N 317 /O 322 /R 315 /M 301 /A 314 /L 215 212 0 MSINV, 311 /I 316 /N 326 /V 305 /E 322 /R 324 /T 305 /E 304 /D 215 212 0 ALLHLT, 320 /P 301 /A 325 /U 323 /S 305 /E 240 /SP 315 /M 317 /O 304 /D 305 /E 215 212 0 MSBUSY, 310 /H 301 /A 316 /N 304 /D 323 /S 240 317 /O 306 /F 306 /F 215 212 0 MSAD, 301 /A 257 // 304 /D 240 315 /M 317 /O 304 /D 305 /E 215 212 0 AAAS3, 0 LMODE *1000 P4, 4 /FIND OUT HOW /MUCH EXT MEM MEMCHK, LDF 0 /PUT ANYTHING LDA I /EXCEPT LDF K LDF 0 /IN LDF 0 STA 2000 STA /SET LDF NLDF /INST LOOP, ADD P4 /PUT LDF K STA /K=4,10,...,34 NLDF /IN LOC NLDF NLDF, 0 STA /PUT LDF K 2000 /IN LDF K LDA /GET IT 2000 /BACK SAE /DID WE NLDF /MAKE IT ? JMP DUN /NO LDF 0 /CHK FOR SAE /CONTROL LOGIC 2000 /ONLY SKP /STILL OK JMP DUN /4K ONLY SAE I /CHK FOR LDF 34 /MAX CORE JMP LOOP /DO SOME MORE ADD P4 /WE HAVE 32K STC NLDF DUN, LDA /PUT FIRST NON NLDF /EXISTANT LDF /IN AC ADA I -640 ROR 2 /=1ST NON CDF ADA I -1 AZE I CLR PDP PMODE CDF 0 DCA MAXCDF TAD P4040 DCA I K6K /FIXUP 6000 JMP I .+1 SETUP P4040, 4040 K6K, 6000 /DEFINITIONS FOR INPUT ROUTINES ADRMIN=7000 /1ST BUF ADDR CDFMIN=0 DRPMAX=20 /MAX X AX DROP WRMBLK=4000 /1ST MBLK FOR /WRITE FIRLDF=643 /1ST BUF LDF RDMBLK=6000 /1ST MBLK FOR /READ /ANALOG ASSIGNMENTS FOR DEVICES /X AXIS XAXDV0=10 XAXDV1=XAXDV0+1 XAXDV2=XAXDV1+1 XAXDV3=XAXDV2+1 XAXDV4=20 /Y AXIS YAXDV0=14 YAXDV1=YAXDV0+1 YAXDV2=YAXDV1+1 YAXDV3=YAXDV2+1 YAXDV4=24 /DEFINITIONS FOR SCOPE ROUTINES CHGHC=3600 /CHANGE HORIZ /COORD CR=0043 /EOL RH CR1=4300 /EOL LH ENDWD=0077 /END OF MESS ENDWD1=7700 /END OF MESS FUL=0006 /FULL SIZ CHARS FUL1=0600 GRDPTR=14 /PTR TO GRID /TABLE GRDTAB=QAV /ADDR OF GRID /TABLE HBIT=4000 HCPTR=15 /PTR TO TABLE /HORIZ COORDS KURLEN=-30 /- LENGTH OF /CURSOR MSPTR=17 /=XCORD /PTR TO DIAL /ENCODED MESS VCPTR=16 /PTR TO TABLE /VERT COORDS XCURHI=ARGHI /PAGE 0 XCURLO=ARGLO /PAGE 0 XYHC=0 /INIT HORIZ /COORD FOR /X-Y DISP /DEFINITIONS FOR QANDA SETUP ROUTINES ANAVAL=4000 /ANALOG SELECT ANSPTR=14 CURNHI=ADMESS /PAGE 0 CURNLO=KBDBUF /PAGE 0 DVNMAX=-5 ENCPTR=TTYFLG /PAGE 0 EXTMTP=10 /XOB CONSTANT QAEOL1=7400 QAEOM1=3400 /TISA 15 APR 70 /P2 SAVSYM 2