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