Directory of image this file is from
This file as a plain text file
*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 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
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