File EYETACH1

Directory of image this file is from
This file as a plain text file

*20
/EYETACH1 PROGRAM
	LMODE
	SEGMNT 0
	*40
/NOTE:LOCATIONS 00020-00037 UNUSED
/
/INTERRUPT HANDLER FOR EYETACH1 PROGRAM.
/POSSIBLE INTERUPTS: EVENT TRIGGERS 1 OR
/2=SACCADE; EVENT TRIGGER 3=RESPONSE 
/CLOCK OVERFLOW=TIME INCREM.
	0
	CLR
	IOB
	6135		/CLSA
	AZE I
ERROR1,	JMP ERROR	/ILLEGAL INTER.
	STA I
EVENTS,	0		/SAVE CLSA BITS
	BCL I
	7727		/EVENT 1 OR 2?
	AZE I
	JMP CHRESP	/NO:RESP?
/EYEMOVEMENT HAS OCCURRED: SET PHASE
/TEMRINATION CODE="M" AND END PHASE IF
/CWD1 BIT 3=0 OR END TRIAL IF=1
	LDA I
	315		/"M"
	STA I 14	/SAVE TERM CODE
	LDA
	CWD1		/PHASE CONTROL 1
	ROL 3		/BIT 3
ENDPHS,	APO
	JMP STOP	/=1:END TRIAL
	LDA
	TIMER
	STA I 14	/SAVE DURATION &
	JMP NEXPHS	/GO TO NEXT PHAS
/
CHRESP,	ADD EVENTS
	BCL I
	7775
	AZE I		/EVENT 3/CLOCK?
	JMP TIME	/CLOCK OVERFLOW
/RESPONSE HAS OCCURRED (TRIGGER 3):
/SAMPLE RESP VALUE (A-D 11 & 12) TO
/DETERMINE WHETHER ITS L OR R RESP, IN
/WHICH CASE PHASE TERM. CODE ="L" OR "R"
/CWD1, BIT 5: END TRIAL(=1) OR GO TO
/NEXT PHASE(=0)
/
/DON"T COUNT RESP UNLESS LATENCY IS AT
/LEAST MINLAT MSECS-PREVENTS ONE PRESS
/REGISTERING MANY TIMES
/
	LDA I
MINLAT,	-226		/-MIN IRI MSECS
	ADD RTIMER
	APO
	JMP RUN		/TOO SOON:IGNORE
	CLR
	STC RTIMER	/RESET IRI TIMER
	SAM 11		/RESP 1:AD11>R0?
	ADA I
MR0,	-600
	APO
	JMP .+4
	LDA I
	314		/LEFT RESP="L"
	JMP .+3
	LDA I
	322		/RIGHT RESP="R"
	STA I 14	/SAVE TERM.CODE
	LDA
	CWD1
	ROL 5		/BIT 5
	JMP ENDPHS
/EITHER EYEMOVEMENT "M" OR RESP "1","2"
/HAS OCCURRED AND TRIAL ENDS IMMEDIATELY
/
STOP,	LDA
	TIMER
	STA I 14	/SAVE PHASE TIME
	LDA
	PHASES
	COM
	ADD PHASE	/=-NO.PHASE LEFT
	AZE I
	JMP FINISH	/LAST PHASE
/FILL DATA FOR REMAINING PHASES WITH
/"*" TERM. CODE AND 0000 DURATION
	STC 1
	LDA I
	252		/"*"
	STA I 14
	CLR
	STA I 14
	XSK I 1
	JMP .-6
	JMP FINISH
/ARRIVES HERE ON CLOCK OVERFLOW INTER.:
/INCREMENT TICK COUNTER (5) AND IF
/"MSECS" TICKS, SAMPLE A-D CHANNELS,
/INCREMENT PHASE TIMER & CHECK FOR
/PHASE TIMEOUT
/
TIME,	XSK I 5
	JMP RUN		/CONTINUE PHASE
	XSK 17		/ROOM LEFT FOR
	SKP		/SIGNAL STORAGE?
	JMP MSECS-1	/NO:SKIP IT
	LDA
	CWD1		/SAMPLE&STORE IF
	APO I		/CWD1 BIT 0=1
	JMP MSECS-1	/NO SAMPLE
/SAMPLE X (AD15), Y (AD17), AND
/D(X+Y)/DT (AD10) IF SW 1,2,3 UP
	SNS 1
	JMP .+4
	SAM 15	
	LDF 6		/X SAVED 15000
	STA 17		/-15777
	SNS 2
	JMP .+4
	SAM 17
	LDF 7		/Y SAVED 16000
	STA I 16	/-16777
	SNS 3
	JMP .+4
	SAM 10
	LDF 7		/D(X+Y)/DT 17000
	STA 17		/-17777
	XSK I 17
	NOP
	LDA I
MSECS,	5
	COM		/RESET TICK
	STC 5		/COUNTER
	ADD C1
	ADM I		/INCR.PHASE TIME
TIMER,	0
	LDA I
	1
	ADM I
CTIMER,	0		/INCR CUM TIMER
	LDA I
RTIMER,	0
	ADD MSECS	/INCR IRI TIMER
	APO I		/UNLESS<0
	STC RTIMER
/CHECK FOR TIMEOUT: CWD2=TIMER (CWD1 BIT
/11=0) OR CWD2=CTIMER (=1)
	LDA 7		/TIMER OR CTIMER
	SAE 15		/CWD2
	JMP RUN		/CONTINUE PHASE
/TIMEOUT HAS OCCURRED: SAVE PHASE TERM.
/CODE="T" AND END PHASE ONLY IF CWD1
/BIT 1=1, ELSE IGNORE
	LDA
	CWD1
	ROL 1
	APO I
	JMP RUN		/CONTINUE PHASE
	LDA I
	324		/"T"
	STA I 14
	JMP ENDPHS+2	/GO TO NEXT PHAS
/
/END OF TRIAL: TURN T-SCOPE OFF, TYPE
/(TERM. CODE, TIME) FOR EACH PHASE
/AND TRANSFER DATA TO OUTPUT FILE VIA
/BUFFER (12) 14000-14377
/
FINISH,	CLR
	ATR		/T-SCOPE OFF
	IOB
	6132		/CLLR:CLOCK OFF
	LDA I
COND,	0
	ROL 6
	ADD PHASES	/1ST WD:COND(LH)
	JMP NEXDAT	/&NO.PHASES(RH)
	CLR
	ADD PHASES
	COM
	STC 1
	SET I 15
	TRDATA-1	/DATA ARRAY
	SET I 14
	CONTRL-1	/CONTROL ARRAY
/FOR EACH PHASE SAVE FOUR WORDS ON DATA
/FILE: 1ST=CWD1, 2ND=TIMEOUT, 3RD=TERM.
/CODE, 4TH=DURATION. FOR EACH PHASE TYPE
/OUT ONLY LATTER TWO.
/
DATOUT,	LDA I 14
	JMP NEXDAT	/PHASE CWD1
	LDA I 14
	JMP NEXDAT	/TIMEOUT
	LDA I
	324
	JMP TYPE	/"T"
	LDA I 15
	JMP TYPE	/TERM.CODE
	ADD C275
	JMP TYPE	/"="
	LDA 15
	JMP NEXDAT
	LDA I 15
	JMP DECPUT	/DURATION
	LDA 15
	JMP NEXDAT
	XSK I 1
	JMP DATOUT
/TYPE FINAL "W" ONLY IF SIGNAL STORAGE
/FILLED DURING TRIAL
	XSK 17
	JMP .+4
	LDA I
	327		/"W"
	JMP TYPE
/DISPLAY EACH SAMPLED SIGNAL ON CHANNEL
/2 OF VR12 FOR 2 SECS OR UNTIL SW
/0 DOWN, WHICHEVER LONGER. EACH GRAPH
/HAS VERTICAL LINES MARKING PHASE
/BOUNDARIES: BELOW EACH BOUNDARY IS
/DESIGNATION OF TERMINATION: "T"=TIMEOUT
/"M"=EYEMOVEMENT "L"=L RESP,"R"=R RESP.
/
	LDA I
SHOW,	0
	AZE I
	JMP NEXTRL	/NO DISPLAY
GRAPH1,	LDA
	17
	STA I
END13,	0		/END GRAPHS 1&3
	STC ENDGRP
	SNS 1
	JMP GRAPH2
	LDF 6
	ADD C2777
	STC POINT0
	SET I 11
	ADM1X		/PTR TO "X"
	JMP GRAPH	/SHOW GRAPH
GRAPH2,	LDF 7
	SNS 2
	JMP GRAPH3
	LDA I
	3777
	STC POINT0
	ADD 16
	STC ENDGRP	/END GRAPH2
	SET I 11
	ADM1Y		/PTR TO "Y"
	JMP GRAPH	/SHOW GRAPH
GRAPH3,	SNS 3
	JMP NEXTRL
	LDA I
C2777,	2777
	STC POINT0
	ADD END13
	STC ENDGRP
	SET I 11
	ADM1D		/PTR TO "D"
	JMP GRAPH
	JMP NEXTRL
/
/DISPLAY LABELS "X","Y","D","T","M","L"
/AND "R" FOR GRAPHS
/
ADM1X,	1463
	6314
ADM1Y,	0770
	7007
ADM1D,	4177
	3641
ADM1T,	4040
	4077
ADM1M,	3077
	7730
ADM1L,	0177
	0301
ADM1R,	4477
	3146
/
/SUBR SHOW GRAPH: MUST ENTER AC=0
/
GRAPH,	ADD
	STC RJGRP
	IOB
	6132		/CLLR
	IOB
	6134		/CLEN
	IOB
	6133		/CLAB
	LDA I
	5100		/100 HZ CLOCK
	IOB
	6132		/CLLR
	SET I 17
POINT0,	0
/
/DISPLAY LABEL UPPER LEFT HAND CORNER
	LDA I
	340
	SET 10
	11		/PW PTR
	SET I 1
	4000		/CHAN 2
	DSC 10
	DSC I 10
/
	SET I 10
	5777		/GRAPH CHAN 2
	LDA I 17
	SCR 1		/SCALE
	DIS I 10
	LDA
	17
	SAE I
ENDGRP,	0
	JMP .-7
/FULL GRAPH REFRESHED: SHOW VERT. LINES
/AT PHASE BOUNDARIES
	SET I 14
	TRDATA-1
	SET I 15
	CONTRL-1
	LDA
	PHASES
	COM
	STC 2
	SET I 10
C4000,	4000		/H.C=0,CHAN=2
PLINE,	LDA I 14
	STC TCODE
	XSK I 14
	LDA I 15
	XSK I 15
	APO I		/PHASE SAMPLED?
	JMP NXLINE	/NO:SKIP IT
	LDA 14		/PHASE DURATION
	ADM
	10
/GET DESIGNATION FOR BOUNDARY TYPE
	LDA I
TCODE,	0
	SAE I
	324		/"T"
	JMP .+4
	SET I 3
	ADM1T
	JMP LINE
	SAE I
	315		/"M"
	JMP .+4
	SET I 3
	ADM1M
	JMP LINE
	SAE I
	314		/"L"
	JMP .+4
	SET I 3
	ADM1L
	JMP LINE
	SET I 3
	ADM1R		/"R"
LINE,	LDA I
	-40
	SET 1
	10
	DSC 3
	DSC I 3		/DESIGNATION
	SET I 3
	-200
	CLR
	DIS 10
	ADD C1
	XSK I 3
	JMP .-3		/VERT. LINE
NXLINE,	XSK I 2
	JMP PLINE
/REFRESH OF GRAPH & LINES COMPLETE:
/CHECK TO SEE IF DISPLAY TIME UP
	SNS I 0
	JMP POINT0-1	/SW 0 OVERRIDE
	IOB
	6137		/CLCA
	APO
	JMP RJGRP
	COM
	ADD SHOW
	APO I
	JMP POINT0-1
RJGRP,	HLT		/RJ
/
/END GRAPH SUBROUTINE
/
/SUBR BUFFER OUTPUT OF AC ONTO UNIT 1
/TAPE FILE (ONLY IF SW 4=1) VIA 12 PTR
/BUFFER=14000-14377
/
NEXDAT,	SNS 4
	JMP
	LDF 6
	STA I 12
	LDA
	12
	SAE I
	2377		/END BUFFER?
	JMP
/BUFFER FILLED: WRITE IT OUT ON NEXT
/BLOCK OF UNIT 1 FILE
WRITE,	LDA I
C1,	1
	ADM I
OUTBLK,	0
	SAE I
C1000,	1000
	SKP
ERROR2,	JMP ERROR	/TAPE FULL
	ADD C4000	/MBLK=4
	STC .+2
	WRC U
	0
	SET I 12
	3777		/RESET PTR
	JMP
/
/EACH TRIAL BEGINS HERE
/
NEXTRL,	JMP CRLF	/CR,LF
	SET I 17
	3000		/INITIALIZE PTRS
	SET I 16	/FOR SIGNAL
	3777		/STORAGE
	SET I 15	/FOR PHASE CONTR
	CONTRL-1	/WORDS
	SET I 14	/AND TRIAL DATA
	TRDATA-1	/ARRAY
/READ IN "PHASES" AND 2*PHASES CONTROL
/WORDS FROM 14400-14777, BUFFERED FROM
/UNIT 0 TAPE FILE
	JMP NEXWRD	/SUBR FETCHES IT
	AZE I
	JMP ENDBLK	/PHASES=0:END
	STA I 15	/1ST WD CONTRL
	JMP NEXDAT	/TO OUTPUT FILE
	LDA 15
	BCL I
	7700		/R.H.=NO.PHASES
	STA I
PHASES,	0
	ROL 1
	COM
	STC 1
	STC RTIMER	/CLEAR IRI TIMER
	STC CTIMER	/" CUM. TIMER
	JMP NEXWRD
	STA I 15
	XSK I 1
	JMP .-3
	SET I 15
	CONTRL		/RESET PTR
/TYPE OUT TRIAL NO, "C"COND NO.
	LDA I
	1
	ADM I
NTRIAL,	0
	JMP DECPUT
	LDA I
	303		/"C"
	JMP TYPE
	LDH 15		/COND.NO.
	ADD C260
	JMP TYPE
	ADD C240	/" "
	JMP TYPE
/SW 5 UP: RUN CALIBRATION BEFORE TRIAL
/TTY BELL ON ANY EVENT: BUTTON PRESS OR
/EYEMOVEMENT (UNPLUG ONE TO TEST OTHER)
/T-SCOPE CHAN 1 ON FOR CALIB DISPLAY
/
CALIBR,	IOB
	6135		/CLSA
	CLR
	IOB
	6132		/CLLR
	LDA I
	25
	ATR		/CHAN 1,LUMIN 2
	IOB
	6134		/CLEN
CWAIT,	SNS 5
	JMP READY
	CLR
	IOB
	6135		/CLSA
	AZE I
	JMP CWAIT
	LDA I
	207
	JMP TYPE	/RING BELL
	JMP CWAIT
/
READY,	LDA I
	2100
	IOB
	6132		/CLLR:START 100
	LDA I		/KHZ CLOCK
	7634		/TICKING EVERY
	IOB		/MSEC
	6133		/CLAB
	LDA I
	40		/DISABLE TTY
	ESF		/INTERRUPT
	CLR
	IOB
	6135		/CLSA
	APO I
	JMP .-4		/WAIT 1ST TICK
	LDA
	MSECS		/TICKS/UNIT TIME
	COM
	STC 5		/INITIALIZE CTR
	STC PHASE	/& PHASE NO.
/SECTION HANDLES TRANSITION TO NEW PHASE
/
NEXPHS,	LDA I
PHASE,	0
	SAE
	PHASES
	SKP
	JMP FINISH	/LAST PHASE:DONE
	ADD C1
	STC PHASE	/NEW PHASE NO.
	STC TIMER	/CLEAR PHASE TMR
	LDA I 15
	STA I		/GET 1ST
CWD1,	0		/PHASE CONTRL WD
/PHASE CONTROL WORDS FORMAT: 1ST WORD
/(=CWD1): BIT 0: SAMPLE AD"S ONLY IF=1;
/BIT 1: PHASE ADVANCE ON TIMEOUT ""=1;
/BIT 2:DETECT SACCADE IF=1; BIT 3: END
/TRIAL(=1) OR ADVANCE PHASE(=0) ON SACC;
/BIT 4: DETECT RESP IF=1; BIT 5: END
/TRIAL(=1) OR ADVANCE PHASE(=0) ON RESP;
/BITS 6,7,8: DISPLAY-SCOPE CHANNELS 1,2,
/3 IF=1; BIT 9: UNUSED; BIT 10: CUMUL.
/TIMER CLEARED(=0) OR KEPT RUNNING(=1);
/BIT 11: TIMEOUT ON PHASE(=0) OR
/CUMULATIVE(=1) TIMER.
/  WORD 2: TIME UNITS TO TIMEOUT-BIT 1=1
	ATR		/BITS 6-8:TSCOPE
	ROR 1
	APO		/BIT 11=0=CLEAR
	JMP .+3		/CUMUL. TIMER
	CLR
	STC CTIMER
	LDA 15
	ROR 2
	APO		/BIT 10:TIMEOUT
	JMP .+4
	SET I 7
	TIMER		/ON PHASE(=0)OR
	JMP .+3
	SET I 7
	CTIMER		/CUMUL.TIMER
	SET I 1
	300		/SETUP CLEN BITS
	ROL 2
	APO I		/BIT 2:DETECT
	JMP .+5		/EYEMOVEMENTS?
	LDA I		/YES: ACTIVATE
	74		/TRIGGERS 1&2
	ADM
	1
	LDA 15
	XSK I 15	/PTR TO 2ND WORD
	ROL 4		/BIT 4:DETECT
	APO I		/EYEMOVEMENT?
	JMP .+4		/YES: ACTIVATE
	LDA I		/TRIGGER 3
	3
	SKP
	CLR
	ADD 1
	IOB
	6134		/CLEN
RUN,	IOB
	6001		/ION
	JMP .		/PHASE BEGINS
/
/SUBR INPUTS NEXT CONTROL WORD FROM TAPE
/FILE UNIT 0: BUFFERED VIA 13 INTO 14400
/-14777
/
NEXWRD,	DJR
	LDF 6
	LDA I 13	/NEXT WORD
	STC BACK+1
	ADD 13
	SAE I
	2777		/END BUFFER?
	JMP BACK	/NO:RETURN
/END BUFFER:READ-IN NEXT TAPE BLOCK
	JMP .+1		/USE UP DJR
READ,	LDA I
	1
	ADM I
INBLK,	0
	SAE I
	1000
	SKP
ERROR3,	JMP ERROR	/TAPE FULL
	ADD C5000	/SET MBLK=5
	STC .+2
	RDC
	0		/READ BLOCK
	SET I 13
	2377		/RESET PTR
BACK,	LDA I
	0		/SAVED C(13)
	JMP		/RETURN
/
/SECTION HANDLES END OF BLOCK: WRITES
/OUT FINAL BUFFER CONTENTS & TYPES MESG.
/
ENDBLK,	CLR
	JMP NEXDAT	/FINAL 0 IN DATA
	SNS I 4		/IF SW 4 UP
	JMP WRITE	/OUTPUT BUFFER
	SET I 11
	FINLAB-4000
	JMP MESSAG	/E-O-F MESSAGE
/IF OUTPUT FILE (SW 4 UP) TYPE OUT
/LAST TBLK USED
	SNS 4
	JMP NOPUT
	JMP MESSAG	/"LAST TBLK="
	ADD OUTBLK
	JMP DECPUT	/TYPE LAST TBLK
	JMP END
NOPUT,	SET I 11
	ENDLAB-4000
	JMP MESSAG	/"NO OUTPUT"
END,	HLT
	JMP START
/
/PROGRAM (AND EACH BLOCK) BEGINS HERE
/INPUT FOLLOWING PARAMETERS
/
/"SESSID" - SESSION ID NO.
/"SUBJID" - SUBJECT ID NO.
/"DESIGN" - STARTING TBLK UNIT 0 FILE
/           FOR CONTROL WORDS INPUT
/"OUTPUT" - STARTING TBLK UNIT 1 FILE
/           FOR DATA OUTPUT
/"MSECS " - NUMBER MSECS/TIME UNIT
/"LUMIN1" - LUMINANCE T-SCOPE CHAN 1
/"LUMIN2" - CHANNEL 2
/"LUMIN3" - CHANNEL 3
/"GRAPHS" - SECS/100 DISPLAY/GRAPH
/
/NOTE: LUMIN1,2,3 & DISTC1,2,3 FOR
/BOOKEEPING PURPOSES ONLY
/
START,	SET I 12	/PTR TO DATA
	3777
	LDF 6
	LDA I
PROGID,	100		/IST DATA WD=
	STA I 12
	SET I 11	/SET PTR TO
	PARAMS-1	/PARAMETER LABEL
	JMP MESSAG	/TYPE PAR. LABEL
	JMP GET		/DEC. INPUT TTY
	STA I 12
	JMP MESSAG
	JMP GET
	STA I 12
	JMP MESSAG
	JMP GET
	STA I 12
	STA
	INBLK		/INPUT FILE
/VERIFY THAT INPUT FILE IS PROPERLY
/FORMATTED: IST WORD=7777
	ADA I
C5000,	5000		/MBLK=5
	STC .+2
	RDC
	0
	SET I 13	/INITIALIZE PTR
	2377
	LDA I 13
	SAE I
	7777
ERROR4,	JMP ERROR	/INVALID FILE
	JMP MESSAG
	JMP GET
	STA I 12
	STC OUTBLK	/DATA FILE
	JMP MESSAG
	JMP GET
	STA I 12
	STC MSECS
	SET I 1
	-4
	JMP MESSAG
	JMP GET
	STA I 12
	XSK I 1
	JMP .-4
	STC SHOW
/PARAMETERS IN AND HEADER WRITTEN ON
/OUTPUT FILE. TYPE MESSAGE "SW 5 UP FOR
/CALIB.", THEN HALT AND START BLOCK
	JMP MESSAG
	HLT
	STC NTRIAL
	JMP NEXTRL
/
/CONTROL ARRIVES HERE ON ERRORS: TYPE
/"ERROR!" AND LEAVE ERROR ADDR IN AC
/
ERROR,	SET I 1
	0		/ERROR ADDR
	SET I 11
	ERRLAB-4000
	JMP MESSAG
	ADD 1
	HLT
	JMP START
/
/SUBR TYPES AC
/
TYPE,	PDP PMODE
	TLS
	TSF
	JMP .-1
	CLA
	LINC LMODE
	JMP
/
/SUBR TYPES CR.LF + PACKED ASCII MESSAGE
/POINTED BY 11
/
MESSAG,	LDA
	0
	STC RJMESG
	LDH I 11
	AZE I
RJMESG,	HLT		/RETURN:00=END
	SAE I
	43		/CRLF?
	JMP .+3
	JMP CRLF
	JMP RJMESG-2
	ADA I
	-37		/ADD 100 OR 200
	APO		/FOR 8-BIT CODE
	ADD C100
	ADA I
	237
	JMP TYPE
	JMP RJMESG-2
C100,	100
/
/SUBR TYPES AC AS SIGNED DECIMAL INTEGER
/WITH (I5,1X) FORMAT. LEAD 0"S BLANKED
/
DECPUT,	STC NUM
	ADD
	STC RJDCPT
	STC ZERO	/LEADING-0 FLAG
	ADD NUM
	APO
	JMP .+4
	LDA I
C240,	240
	JMP .+5
	COM
	STC NUM
	LDA I
	255
	JMP TYPE	/" " OR "-" SIGN
	STC 7		/COUNTS DIGITS
	ADD NUM
	ADA I
	-1750		/THOUSANDS
	APO
	JMP .+3
	XSK I 7
	JMP .-5
	AZE I		/-0?
	JMP .-3
	ADA I
	1750		/RESTORE
	STC NUM
	ADD 7
	ADM I
ZERO,	0		/TOTAL DIGIT SUM
	AZE I
	JMP .+5		/LEADING ZERO
	LDA I
	260
	ADD 7
	SKP
	ADD C240
	JMP TYPE
	STC 7
	ADD NUM
	ADA I
	-144		/HUNDREDS
	APO
	JMP .+3
	XSK I 7
	JMP .-5
	AZE I
	JMP .-3
	ADA I
	144
	STC NUM
	ADD 7
	ADM
	ZERO
	AZE I
	JMP .+5
	LDA I
	260
	ADD 7
	SKP
	ADD C240
	JMP TYPE
	STC 7
	ADD NUM
	ADA I
	-12		/TENS
	APO
	JMP .+3
	XSK I 7
	JMP .-5
	AZE I
	JMP .-3
	ADA I
	12
	STC NUM
	ADD 7
	ADD ZERO
	AZE I
	JMP .+5
	LDA I
C260,	260
	ADD 7
	SKP
	ADD C240
	JMP TYPE
	ADD C260
	ADD NUM
	JMP TYPE
	ADD C240
	JMP TYPE
RJDCPT,	HLT
/
/SUBR TYPES CR.LF
/
CRLF,	LDA
	0
	STC RJCRLF
	LDA I
	212
	JMP TYPE
	LDA I
	215
	JMP TYPE
RJCRLF,	HLT
/
/SUBR ACCEPTS SIGNED DECIMAL INTEGER
/FROM TTY.FORMAT: OPTIONAL SIGN&LEADING
/BLANKS,1-4 DECIMAL DIGITS, FOLLOWED BY
/LINE FEED. ILLEGAL CHARACTER OR RUBOUT
/RESTARTS INPUT. INITIAL "=" & ALL
/NUMERIC CHARS ECHOED. RETURNED IN AC.
/
GET,	LDA
	0
	STC RJGET
	STC NUM
	SET I 7
	-5		/MAX 4 DIGITS
	STC SIGN	/SIGN FLAG
	LDA I
C275,	275
	JMP TYPE	/TYPE "="
	JMP INCHAR	/GET & ECHO CHAR
	SAE I
	240
	SKP
	JMP .-4		/SKIP LEAD BLANK
	SAE I
	255		/="-"?
	JMP .+3
	STC SIGN	/SET SIGN FLAG
NEXDIG,	JMP INCHAR
	ADA I
	-257		/DIGIT?
	APO
	JMP ENTERR	/ILLEGAL CHAR
	ADA I
	-12
	APO I		/DIGIT?
	JMP ENTERR
	XSK I 7		/TOO MANY DIGITS
	SKP
	JMP ENTERR	/TOO MANY!
	ADA I
	11		/RESTORE DIGIT
	AZE I
	CLR		/-0 TO +0
	STC DIGIT
	ADD NUM
	MUL I
	12		/DEC.SHITF LEFT
	ADA I
DIGIT,	0
	STC NUM
	JMP NEXDIG
ENTERR,	LDA I		/ENTRY ERROR:
	277
	JMP TYPE	/"?"
	JMP GET+3	/RESTART INPUT
/
/SUBR ACCEPTS TTY CHAR, CHECKS FOR LF
/TERMINATOR, ECHOES NON-LF & RETURNS AC
/
INCHAR,	LDA
	0
	STC DONE-1	/SAVE RJ
	PDP PMODE
	KSF
	JMP .-1
	KRB
	LINC LMODE
	SAE I
	212
	SKP
	JMP DONE	/LF=ENTRY IN
	STA
	DIGIT
	JMP TYPE	/ECHO
	ADD DIGIT
	HLT		/RJ:DIGIT IN AC
DONE,	LDA I
SIGN,	0		/CHECK FOR -
	AZE
	JMP .+3
	ADD NUM
RJGET,	HLT		/MAINLINE RETURN
	LDA I
NUM,	0
	COM
	JMP RJGET
/
/END GET SUBR
/
/WORKING STORAGE ARRAYS
/
CONTRL,	0
	*.+100		/UP TO 40 PHASES
TRDATA,	0
	*.+100
/
/PARAMETER INPUT LABELS
/
PARAMS,	4343		/2CR,LF
	TEXT "SESSID"
	0043
	TEXT "SUBJID"
	0043
	TEXT "DESIGN"
	0043
	TEXT "OUTPUT"
	0043
	TEXT "MSECS "
	0043
	TEXT "LUMIN1"
	0043
	TEXT "LUMIN2"
	0043
	TEXT "LUMIN3"
	0043
	TEXT "GRAPHS"
	0043
	TEXT "SW 5 UP FOR CALIB."
	4300
/
FINLAB,	4343
	TEXT "END OF BLOCK:"
	TEXT " END OUTPUT TBLK="
ENDLAB,	TEXT " NO OUTPUT FILE"
/
ERRLAB,	4343
	TEXT "ERROR!"
	4300
ENDEND,	0



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