File EYESCOP1

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

*20
/EYESCOP1 PROGRAM: LIKE EYETACH2,
/EXCEPT TACHEYE-LIKE STRINGS DISPLAYED
/ON VR-12 SCOPE.
/
/SECTION SAMPLES SIGNALS EVERY "MSECS"
/MSECS, CHECKING FOR DISPLAY TIMEOUTS,
/EYEMOVEMENTS, AND SUBJECT RESPONSES.
/RESFRESHES ACTIVE DISPLAYS FIRST.
/
	LMODE
RUN,	JMP SYNC	/WAIT FOR CLOCK
/
/FIRST DISPLAY POINT ON CHAN 2 CORRESP-
/ONDING TO EYE-POSN COORDINATES
	SAM 15
	SCR 1
	COM
	ADA I
C4400,	4400
	STC 1
	SAM 17
	SCR 1
	DIS 1
/REFRESH FIX,MASK,AND TEST DISPLAYS IF
/CURRENTLY ACTIVE
	LDA
	CWD1
	ROR 4		/BIT 8:FIX DOTS
	APO
	JMP SHOFIX
	LDA
	CWD1
	ROR 5		/BIT 7:MASK STRG
	APO I
	JMP .+4
	SET I 11
ADMASK,	0		/AD-1/2 MASK STR
	JMP DISPLA
	LDA
	CWD1
	ROL 6		/BIT 6:TEST STR
	APO I
	JMP .+4
	SET I 11
	BUFFER+5777	/AD-1/2 STRING
	JMP DISPLA
/DISPLAYS REFRESHED:CHECK FOR SACCADE
	SAM 10		/=D(X+Y)/DT
	COM
	ADA I
PTHRES,	0		/+GOING THRESH
	APO
	JMP MOVE	/SACCADE LEFT/UP
	SAM 10
	COM
	ADA I
MTHRES,	0		/-GOING
	APO
	JMP CHRESP	/NO SACCADE
/EYEMOVEMENT HAS OCCURRED: IGNORE UNLESS
/CWD1, BIT 2=1. IF SO, SET PHASE
/TERMINATION CODE="M" AND END PHASE IF
/CWD1 BIT 3=0 OR END TRIAL IF=1
/
MOVE,	LDA
	CWD1
	ROL 2
	APO I
	JMP TIME
	LDA I
	315		/"M"
	LDF 5
	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,	SAM 13		/-SUM RESP VOLTS
	ADA I
RTHRES,	500		/RESP THRESH
	APO I
	JMP TIME	/TEMPORAL UPDATE
/RESPONSE BUTTON DOWN: IGNORE IF IRI
/(RTIMER) LESS THAN -"MINLAT" MSECS -
/OR IF LAST SAMPLED RESPONSE VALUE WAS
/ALSO ABOVE THRESHOLD:
/PREVENTS SINGLE RESP MULTI-REGISTERING.
	LDA I
RESP0,	0		/PREVIOUS VALUE
	ADD RTHRES
	APO
	JMP TIME	/NO THRESH CROSS
	LDA I
MINLAT,	-226
	ADD RTIMER
	APO
	JMP TIME	/TOO SOON:IGNORE
/
/BONAFIDE RESP: COUNT IF CWD1 BIT 4=1;
/IF SO,SAMPLE RESP VALUE (AD 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)
/
	CLR
	STC RTIMER	/RESET IRI TIMER
	ADD CWD1
	ROL 4
	APO I
	JMP TIME	/NO RESP ALLOWED
	SAM 13
	STC RESP0
	LDF 5
	SAM 11		/RESP 1:AD11>R0?
	COM
	ADD RTHRES
	APO I
	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"
/OR CUMULATIVE TIMEOUT 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 TIMERS AND SAMPLE A-D CHANS &
/CHECK FOR POSSIBLE TIMEOUTS
/
TIME,	SAM 13
	STC RESP0	/SAVE RESP SIG.
	XSK 17		/ROOM LEFT FOR
	SKP		/SIGNAL STORAGE?
	JMP TIMER-3	/NO:SKIP IT
	ADD CWD1
	APO I		/CWD1 BIT 0=1
	JMP TIMER-3	/NO SAMPLE
/SAMPLE X (AD15), Y (AD17), AND
/D(X+Y)/DT (AD10)
	SAM 15	
	LDF 6		/X SAVED 15000
	STA 17		/-15777
	SAM 17
	LDF 7		/Y SAVED 16000
	STA I 16	/-16777
	SAM 10
	LDF 7		/D(X+Y)/DT 17000
	STA 17		/-17777
	XSK I 17
	NOP
	LDA I
	1
	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)
	LDF 5
	LDA 7		/TIMER OR CTIMER
	SAE 15		/CWD2
	JMP RUN		/CONTINUE PHASE
/TIMEOUT HAS OCCURRED: SAVE PHASE TERM.
/CODE="T" ONLY IF CWD1 BIT 1=1(IGNORE=0)
/IF CUMUL (BIT 11=1) OR PHASE (=0)
/TIMEOUT, END PHASE OR TRIAL.
	LDA
	CWD1
	ROL 1
	APO I
	JMP RUN		/CONTINUE PHASE
	LDA I
	324		/"T"
	STA I 14
/CUMULATIVE TIMEOUT:STOP; PHASE TIMEOUT,
/ADVANCE TO NEXT PHASE
	LDA
	CWD1
	ROR 1
	JMP ENDPHS
/
/END OF DISPLAY: DISPLAY MASK STRING &
/FIX DOTS FOR "PTMASK" TIME UNITS
/
FINISH,	LDA I
PTMASK,	0
	AZE I
	JMP ENDTRL
	COM
	STC 7
	SET 11
	ADMASK
	JMP SYNC
	JMP SHOFIX
	JMP DISPLA
	XSK I 7
	JMP .-6
/
/END OF TRIAL:
/DISPLAY EACH SAMPLED SIGNAL ON CHANNEL
/2 WHILE SW 1(X),2(Y),OR 3(D) UP. EACH
/HAS VERTICAL LINES MARKING PHASE
/BOUNDARIES: BELOW EACH BOUNDARY IS
/DESIGNATION OF TERMINATION: "T"=TIMEOUT
/"M"=EYEMOVEMENT "L"=L RESP,"R"=R RESP.
/
ENDTRL,	CLR
	ESF		/RESET 1/2-SIZE
	ADD 17
	STA I
END13,	0		/END GRAPHS 1&3
	STC ENDGRP
	LDA I
	SNS 1
	STC SNSGRP
	ADD LDF6
	STC LDFGRP
	ADD C2777
	STC POINT0
	SET I 11
	PATRN+2056	/"X" PWS
	JMP GRAPH	/SHOW GRAPH
	LDA I
	LDF 7
	STC LDFGRP
	LDA I
	SNS 2
	STC SNSGRP
	LDA I
	3777
	STC POINT0
	ADD 16
	STC ENDGRP	/END GRAPH2
	SET I 11
	PATRN+2060	/"Y" PWS
	JMP GRAPH	/SHOW GRAPH
	LDA I
	SNS 3
	STC SNSGRP
	LDA I
C2777,	2777
	STC POINT0
	ADD END13
	STC ENDGRP
	SET I 11
	PATRN+2006	/"D" PWS
	JMP GRAPH
/
/TYPE OUT AND STORE (SW 4 UP)
/TRIAL DATA: TERM. CODE & DURATION FOR
/EACH PHASE OF TRIAL
/
	LDA
	PHASES
	COM
	STC 1
	SET I 15
	TRDATA+1777
DATOUT,	LDF 5
	LDA I 15
	JMP TYPE	/TERM CODE
	ADD C275
	JMP TYPE	/"="
	LDA 15
	JMP NEXDAT
	LDF 5
	LDA I 15
	JMP DECPUT	/DURATION
	LDA 15
	JMP NEXDAT
	XSK I 1
	JMP DATOUT
	JMP NEXTRL	/TRIAL OVER!
/
/SUBR SHOW GRAPH: MUST ENTER AC=0
/
GRAPH,	ADD
	STC .+2
SNSGRP,	HLT		/SNS N
	HLT		/RJ WHEN SW DOWN
	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
	LDF 5
	DSC 10
	DSC I 10
/
	SET I 10
	5777		/GRAPH CHAN 2
LDFGRP,	HLT		/LDF N
	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
	LDF 5
	SET I 14
	TRDATA+1777
	SET I 15
	CONTRL+1777
	LDA
	PHASES
	COM
	STC 2
	SET I 10
C4000,	4000		/H.C=0,CHAN=2
PLINE,	LDA I 14
	BCL I
	7700		/STRIP TO 6 BITS
	ROL 1
	ADD ADPWS
	STC 3		/PW FOR BOUNDARY
	XSK I 14
	LDA I 15
	XSK I 15
	APO I		/PHASE SAMPLED?
	JMP NXLINE	/NO:SKIP IT
	LDA 14		/PHASE DURATION
	ADM
	10
	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
	JMP SNSGRP	/REFRESH DONE
/
/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
LDF6,	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
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
	LDA I
C1,	1
	ADM
	OUTBLK
	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+1777	/WORDS
	SET I 14	/AND TRIAL DATA
	TRDATA+1777	/STORAGE
	STC RTIMER	/CLEAR IRI TIMER
	STC CTIMER	/" CUM. TIMER
	STC RESP0
/ENCODE NEXT TWO LINES OF STRING FILE
/AS DISPLAY AND MASK STRINGS.
	SET I 11
	BUFFER+5777	/AD-1/2 STR BUF
	JMP NEXCHR
	AZE I
	JMP ENDBLK	/00=END FILE
	SAE I
	57		/LINE BEGINS "/"
ERROR3,	JMP ERROR	/ILLEGAL LINE!
	JMP NEXCHR
	STH I 11	/CHAR INTO BUFR
	SAE I
	43		/43=END OF LINE
	JMP .-4
	LDA
	11
	STC ADMASK	/SAVE AD-1/2 MSK
	JMP NEXCHR
	SAE I
	57
	JMP ERROR3
	JMP NEXCHR
	STH I 11
	SAE I
	43
	JMP .-4
/STRINGS IN BUFFER: TYPE TRIAL NO. & GO
	LDA I
	1
	ADM I
NTRIAL,	0
	JMP DECPUT	/TYPE TRIAL NO.
	STC PHASE
/
/SW 5 UP: RUN CALIBRATION BEFORE TRIAL
/TTY BELL ON MOVEMENT OR BUTTON PRESS.
/USES A-D KNOBS 0&4 FOR SACCADE "THRESH"
/DISPLAYING THEM ON SCOPE WITH  D(X+Y)/
/DT SIGNAL (A-D 10) AS MOVING POINT.
/ /DT. WHEN SW 5 DOWN, STORE ADJUSTED
/THRESHOLD AS "THRESH". (X-SIGNAL,Y-SIG)
/ALSO PLOTTED AS CONT. POINT.
/ALL THIS SHOWN VR-12 CHAN 2.
/MEANWHILE ON CHAN 1, FIXATION X SHOWN
/TO S AT (X,Y): X=XFIX0+RSW(6-11) IF SW
/0 UP; Y=Y0+RSW(6-11) IF SW 1 UP.
	SET I 4
	4000		/CHAN 2
	CLR
	STC BELFLG
CALIBR,	SAM 0
	APO
	COM
	STC PTHRES	/+GOING THRESH
	SAM 4
	APO I
	COM
	STC MTHRES	/-GOING THRESH
	SNS 5
	JMP CLOCK	/START TRIAL
	SET I 3
	-40
	SET I 2
	4000		/CHAN 2
	LDA
	PTHRES
	DIS 2
	LDA
	MTHRES
	DIS I 2
	XSK I 3
	JMP .-7
	SAM 10
	DIS I 4
	CLR
	SNS 0
	JMP .+4
	RSW
	BCL I
	7700
	ADD XFIX0
	STC XFIX
	SNS 1
	JMP .+4
	RSW
	BCL I
	7700
	ADD Y0
	STC Y
	JMP SHOFIX
/PLOT (X-SIGNAL,Y-SIGNAL) ON CHAN 2
	SAM 15
	SCR 1
	COM
	ADD C4400
	STC 5
	SAM 17
	SCR 1
	DIS 5
/
/IN ORDER TO PREVENT DISPLAY BLINKING
/DURING BELL, MUST KEEP REFRESHING WHILE
/WAITING FOR TTY FLAG: HENCE CHECK FOR
/NEW EVENT ONLY IF BELFLG=0
/
	LDA I
BELFLG,	0
	AZE
	JMP CHKFLG	/TTY IN PROGR
	SAM 10
	COM
	ADD PTHRES
	APO
	JMP BELL	/EYEMOVEMENT
	SAM 10
	COM
	ADD MTHRES
	APO I
	JMP BELL	/EYEMOVEMENT
	SAM 13
	ADD RTHRES
	APO I		/BUTTON PRESS?
	JMP CALIBR
BELL,	LDA I
	207
	IOB
	6046		/TLS
	STC BELFLG	/SET FLAG>0
CHKFLG,	IOB
	6041		/TSF
	JMP CALIBR
	JMP CALIBR-2	/CLEAR FLAG
/
/SUBR STARTS 100 KHZ CLOCK TICKING
/EVERY 100*"MSECS" COUNTS
/
SYNC0,	CLR
	IOB
	6132		/CLLR
	LDA I
MSECS,	0
	MUL I
	144
	PDP PMODE
	CIA
	CLAB
	CLSA
	CLA
	TAD C2100
	CLLR
	CLSA
	SMA CLA
	JMP .-2		/WAIT 1ST TICK
	LINC LMODE
	JMP		/RJ
	PMODE
C2100,	2100
	LMODE
/
/CONTROL ARRIVES HERE BEFORE STARTING
/1ST PHASE: INITIALIZE CLOCK
/
CLOCK,	JMP SYNC0
	LDA I
XFIX0,	376		/FIXATION H.C.
	STC XFIX
	LDA I
Y0,	0		/DISPLAY V.C.
	STC Y
/
/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
	LDF 5
	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;
/BIT 6: DISPLAY STRING 1; BIT 7: DISPLAY
/STRING 2; BIT 8: DISPLAY FIXATION DOTS
/(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
	ROR 2
	APO		/BIT 10=0=CLEAR
	JMP .+3		/CUMUL. TIMER
	CLR
	STC CTIMER
	LDA 15
	XSK I 15	/PTR 2ND WORD
	ROR 1
	APO		/BIT 11:TIMEOUT
	JMP .+4
	SET I 7
	TIMER		/ON PHASE(=0)OR
	JMP .+3
	SET I 7
	CTIMER		/CUMUL.TIMER
	JMP RUN		/START TRIAL
/
/SUBR INPUTS NEXT (6-BIT) CHAR FROM
/STRING FILE, BUFFERED VIA 6 INTO
/13400-13777
/
NEXCHR,	DJR
	LDF 5
	LDA
	6
	AZE
	JMP ROOM
/END OF STRING FILE BUFFER: READ IN NEXT
/TBLK FROM STRING FILE & RESET PTR 6.
	ADD C1
	ADM I
STBLK,	0
	STC .+2
	RDC
	0
	SET I 6
	7377
	JMP .+1		/USE UP DJR
ROOM,	LDH I 6
	JMP
/
/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+5777
	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
	ADA I
	-1
	JMP DECPUT	/TYPE LAST TBLK
	JMP END
NOPUT,	SET I 11
	ENDLAB+5777
	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.
/"INPUT FILE": STARTING TBLK UNIT 0
/           FOR DISPLAY STRINGS
/"OUTPUT" - STARTING TBLK UNIT 1 FILE
/           FOR DATA OUTPUT
/"MSECS " - NUMBER MSECS/TIME UNIT
/"PTMASK" - NUMBER OF "MSEC" UNITS OF
/           MASK STRING AFTER DISPLAY
/
START,	SET I 12	/PTR TO DATA
	3777
	LDA I
PROGID,	201		/1ST DATA WORD
	JMP NEXDAT
	SET I 11	/SET PTR TO
	PARAMS+5777	/PARAMETER LABEL
	JMP MESSAG	/TYPE PAR. LABEL
	JMP GET		/DEC. INPUT TTY
	JMP NEXDAT
	JMP MESSAG
	JMP GET
	JMP NEXDAT
	JMP MESSAG
	JMP GET
	ADA I
C7000,	7000		/MBLK=7
	STA
	STBLK		/STRINGS FILE
	JMP NEXDAT
/VERIFY THAT STRING FILE IS VALID DIAL
/SOURCE FILE: 1ST WD=5262, 2ND=6043.
	LDF 5
	LDA
	STBLK
	STC .+2
	RDC
	0
	SET I 6
	7377		/AD-1 S FILE BUF
	LDA I 6
	SAE I
	5262
ERROR4,	JMP ERROR	/NOT DIAL FILE
	LDA I 6
	SAE I
	6043
	JMP ERROR4
/INPUT FILE VALID & LOADED
	JMP MESSAG
	JMP GET
	STC OUTBLK	/DATA FILE
	JMP MESSAG
	JMP GET
	STA
	MSECS
	JMP NEXDAT
	JMP MESSAG
	JMP GET
	STA
	PTMASK		/DUR. OF POSTMSK
	JMP NEXDAT
	JMP MESSAG
	JMP GET
	STA I
PHASES,	0
	JMP NEXDAT
	LDA
	PHASES
	COM
	STC 1
	STC PHASE
/
/NOW ACCEPT PHASE CONTROL WORDS FOR
/BLOCK OF TRIALS: ONE PAIR OF WORDS PER
/PHASE: 1ST WORD=CWD1 WHICH IS ENTERED
/AS 1-CHAR ANSWERS TO 12 QUESTIONS (THE
/12 CONTROL BITS) - EACH "Y" SETS THE
/CORRESPONDING BIT ("Y " ECHOED), EACH
/NON-"Y" (ECHOES "N") CLEARS IT. 2ND
/WORD ACCEPTED AS DECIMAL INTEGER=TIMOUT
/THESE 2*PHASES+1 WORDS WRITTEN ONTO
/DATA FILE HEADER.
/
	SET I 15
	CONTRL+1777	/AD-1 IN LDF 5
	JMP MESSAG	/"ENTER..."
INPHAS,	SET I 11
	PHSLAB+5777	/AD-1/2 IN LDF
	JMP MESSAG	/"PHASE"
	STC W
	SET I 2
	-14
	ADD C1
	ADM
	PHASE
	JMP DECPUT	/PHASE NO.
INBIT,	JMP MESSAG	/NEXT QUESTION
/
/ACCEPT SINGLE TTY CHAR: IF="Y" ECHO
/"Y" AND SET CONTROL BIT, ELSE ECHO "N"
/
	KST
	JMP .-1
	IOB
	6036		/KRB
	SAE I
	331		/="Y"?
	JMP NOBIT
	JMP TYPE
	ADD C1
	ADM I
W,	0
	XSK I 2
	SKP
	JMP HAVEW	/CONTROL WORD IN
	ROL 1
	STC W
	JMP INBIT
NOBIT,	LDA I
	316		/"N"
	JMP TYPE
	ADD W
	JMP W+1
HAVEW,	LDF 5
	STA I 15	/SAVE CWD1
	JMP NEXDAT	/& OUTPUT FILE
	JMP MESSAG	/"TIMEOUT="
	JMP GET		/GET TIMEOUT WD
	LDF 5
	STA I 15
	JMP NEXDAT
	XSK I 1		/ANOTHER PHASE?
	JMP INPHAS
/PARAMETERS & CONTROL WORDS IN AND
/OUTPUT HEADER WRITTEN.
/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 1
	0		/ERROR ADDR
	SET I 11
	ERRLAB+5777	/AD-1/2 LDF
	JMP MESSAG
	ADD 1
	HLT
	JMP START
/
/SUBR "WAITS FOR NEXT CLOCK TICK, 
/GENERATING TIMING ERROR IF PRESENT ON
/ENTRY
/
SYNC,	PDP PMODE
	CLA
	CLSA
	SPA CLA
	JMP E1		/TIMING ERROR
	CLSA
	SMA CLA
	JMP .-2
	LINC LMODE
	JMP		/RJ
	PMODE
E1,	LINC LMODE
ERROR1,	JMP ERROR
/
/SUBR REFRESHES FIXATION "X" AT (XFIX,Y)
/USING 1/2-SIZE GRID
/
SHOFIX,	DSC I
	0		/PRIOR TO ESF
	CLR
	ESF
	SET I 1
XFIX,	376
	LDA
	Y
	DSC I
	1463
	DSC I
	6314
	JMP
/
/SUBR REFRESHES PACKED ASCII STRING
/VIA PTR 11, LDF 5, USING FULL-SIZE GRID
/
DISPLA,	LDA
	0
	STC RJDISP
	DSC I
	0		/PRIOR TO ESF
	LDF 5
	SET I 1
X0,	104
	LDA I
	200
	ESF
	LDH I 11
	SHD I
	4300		/43=CR=END STRNG
RJDISP,	HLT
	ROL 1
	ADA I
ADPWS,	PATRN+1776	/AD-2 PWS LDF
	STC 2
	LDA I
Y,	0
	DSC 2
	DSC I 2
	LDA I
DX,	4
	ADM
	1
	JMP RJDISP-3
/
/SUBR TYPES AC
/
TYPE,	PDP PMODE
	TLS
	TSF
	JMP .-1
	CLA
	LINC LMODE
	JMP
/
/SUBR TYPES CR.LF + PACKED ASCII MESSAGE
/POINTED BY 11, LDF 5
/
MESSAG,	LDA
	0
	STC RJMESG
	LDF 5
	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
ENDEND,	JMP RJGET
/
/END GET SUBR
/END LIF PROGRAM
/
/FOLLWOING STUFF IN LDF 5
	SEGMNT 5
	*2
/WORKING STORAGE ARRAYS
/
CONTRL,	0
	*.+40		/UP TO 16 PHASES
TRDATA,	0
	*.+40
/
/PARAMETER INPUT LABELS
/
PARAMS,	4343		/2CR,LF
	TEXT "SESSID"
	0043
	TEXT "SUBJID"
	0043
	TEXT "INPUT FILE"
	0043
	TEXT "OUTPUT"
	0043
	TEXT "MSECS "
	0043
	TEXT "PTMASK"
	0043
	TEXT "PHASES"
	0040
	TEXT "ENTER CONTROL WORDS:"
	4300
PHSLAB,	4343
	TEXT "PHASE"
	TEXT " SAMPLE?"
	0040
	TEXT "TIMEOUT?"
	0040
	TEXT "DETECT SAC?"
	TEXT " STOP?"
	0040
	TEXT "DETECT RESP?"
	0040
	TEXT "STOP?"
	4340
	TEXT "STRING?"
	TEXT " MASK?"
	0040
	TEXT "FIX DOTS?"
	TEXT " DUMMY?"
	TEXT " KEEP C.T. RUNNING?"
	4340
	TEXT " CUMUL TIMEOUT?"
	TEXT " TIMEOUT:"
	4343
	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
/
/BUFFER STORAGE FOR PACKED ASCII DISPLAY
/AND MASK STRINGS.
/
BUFFER,	0
	*.+37
/PATTERN WORDS FOR CHAR DISPL.
PATRN,	4477		/A
	7744
	5177		/B
	2651
	4136		/C
	2241
	4177		/D
	3641
	4577		/E
	4145
	4477		/F
	4044
	4136		/G
	2645
	1077		/H
	7710
	7741		/I
	0041
	4142		/J
	4076
	1077		/K
	4324
	177		/L
	301
	3077		/M
	7730
	3077		/N
	7706
	4177		/O
	7741
	4477		/P
	3044
	4276		/Q
	376
	4477		/R
	3146
	5121		/S
	4651
	4040		/T
	4077
	177		/U
	7701
	176		/V
	7402
	677		/W
	7701
	1463		/X
	6314
	770		/Y
	7007
	4543		/Z
	6151
	4177		/[
	0000
	2040		/\
	0410
	0		/]
	7741
	2000		/^
	2077
	3410		/BACK ARROW
	1010
	0		/SPACE
	0
	7500		/!
	0
	6006		/"
	60
	3614		/NUMBER SIGN
	1436
	7721		/DOLLAR SIGN
	4677
	1446		/%
	6130
	5166		/&
	0523
	500		/APOSTROPHY
	6
	4163		/(
	0
	0		/)
	6341
	2050		/*
	50
	404		/+
	437
	605		/,
	0
	404		/-
	404
	1		/.
	0
	601		//
	4030
	4136		/0
	3641
	2101		/1
	177
	4523		/2
	2151
	4122		/3
	2651
	2414		/4
	477
	5172		/5
	651
	1506		/6
	4225
	4443		/7
	6050
	5126		/8
	2651
	5120		/9
	3651
	4200		/:
	0
	2601		/;
	0
	2410		/<
	0042
	1212		/=
	1212
	4200		/>
	1024
	4020		/?
	2055



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