*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