File TIP2

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search