Directory of image this file is from
This file as a plain text file
*20
/EYESCOP4 PROGRAM: LIKE EYESCOP1, EXCEPT
/THAT ONLY THE TOTAL TRIAL DURATION
/TYPED AND STORED, RATHER THAN TWO WORDS
/PER PHASE. 7 WORDS SAVED/TRIAL: 1ST=0
/(UNUSED), 2ND-5TH=4 RESPONSES, 6TH=CODE
/AND 7TH=TOTAL DURATION
/
/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
LDF6, 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
PTDIS, SET 11
ADMASK
JMP SYNC
JMP SHOFIX
JMP DISPLA
XSK 17 /ROOM FOR SAMPL?
SKP
JMP NOSIG
SAM 15
LDF 6
STA 17
SAM 17
LDF 7
STA I 16
SAM 10
STA 17
XSK I 17
NOP
NOSIG, XSK I 7
JMP PTDIS
/
/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
/
/COMPUTE TOTAL DURATION FOR TRIAL: SUM
/ALL BUT 1ST PHASE DURATIONS
/
LDA I
-1
ADD PHASES
COM
STC 1
SET I 15
TRDATA+2001 /SKIP IST PAIR
LDF 5
XSK I 15 /SKIP TERM CODE
ADA I 15
XSK I 1
JMP .-3
STA I
TDUR, 0
JMP DECPUT
JMP NEXDAT /1ST WORD=0
/NOW ACCEPT TTY INPUT: 4 CHARS FOR RESPS
/+5TH CHAR FOR CODE. RUBOUT BEFORE FINAL
/LF RESTARTS IT.
/
RINPUT, SET I 1
-4
SET I 11
RBUFR-1
LDA I
275
JMP TYPE /"="
RIN, KST
JMP RIN
IOB
6036 /KRB
SAE I
377 /RUBOUT?
SKP
JMP RINPUT /RESTART
STA I
INCH, 0
JMP TYPE /ECHO
ADD INCH
BCL I
7700 /STRIP TO 6 BITS
STA I 11
XSK I 1
JMP RIN
KST
JMP .-1
IOB
6036
SAE I
377
SKP
JMP RINPUT
STA
INCH
JMP TYPE
ADD INCH
BCL I
7770 /STRIP TO 3 BITS
STA I 11
KST
JMP .-1
IOB
6036
SAE I
212 /FINAL LF?
JMP RINPUT /NO: RESTART
SET I 11
RBUFR-1 /PUT INTO DATA
SET I 1
-5
LDA I 11
JMP NEXDAT
XSK I 1
JMP .-3
LDA
TDUR
JMP NEXDAT /LAST(7TH)=DUR
JMP NEXTRL /TRIAL OVER!
/HOLDS 5 DATA WORDS
/
RBUFR, 0
0
0
0
0
/
/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 VIA 12 PTR
/BUFFER=14000-14377
/
NEXDAT, 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
JMP WRITE /OUTPUT BUFFER
SET I 11
FINLAB+5777
JMP MESSAG /E-O-F MESSAGE
ADD OUTBLK
ADA I
-1
JMP DECPUT /TYPE LAST TBLK
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, 204 /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:LAST TBLK="
/
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