*20 /BASIC SUBROUTINE PACKAGE FOR CONTINGENT /EY-MOVEMENT STIMULUS CONTROL AND /RESPONSE DETECTING. /ANY TIME SW 5 UP, PROGRAM ABORTS & /RESTARTS AT "MONIT". SAMPLE=SAM 17 READ=6306 CLEAR=6304 /SUBR SAMPLES X-EPS AND RETURNS VALUE /THRU AC CORRESPONDING TO X-REGION / REGION, SAMPLE ADD C1000 DJR ADA I MVA1, -0 /LEFT OF A1? APO I JMP REGM1 ADA I DVA1A3, 0 APO I /IN (A1,A3)? JMP REGM0 ADA I DVA3B1, 0 APO I /IN (A3,B1)? JMP REGP0 ADA I DVB1B3, 0 APO I /IN (B1,B3)? JMP REGP1 JMP REGP2 /USE UP DJR REGP2, LDA I 2 /RIGHT OF B3 JMP /RETURN REGP1, LDA I 1 /IN (B1,B3) JMP REGP0, CLR /IN (A3,B1) JMP REGM0, LDA I -0 /IN (A1,A3) JMP REGM1, LDA I -1 /RIGHT OF A1 JMP / /SUBR STARTS 100KHZ CLOCK WITH BEATS /EVERY MSEC; WAITS FOR 1ST ONE / SYNC0, PDP PMODE CLA TAD M144 /100 TICKS/BEAT CLAB CLA CLEN CLLR TAD C2100 CLLR CLSA CLA CLSA SMA CLA JMP .-2 /WAIT FOR 1ST LINC LMODE JMP /RETURN PMODE M144, -144 C2100, 2100 LMODE / /SUBR WAIT FOR NEXT BEAT. IF PRESENT AT /ENTRY, CALLS TIMING ERROR / SYNC, PDP PMODE CLA CLSA SPA CLA JMP TIMERR /TIMING ERROR CLSA SMA CLA JMP .-2 LINC LMODE JMP /RETURN PMODE TIMERR, LINC LMODE SET I 1 LTIMER-4000 /AD-1/2 ER LABEL JMP MESSAG JMP MONIT /FATAL ERROR LTIMER, TEXT "INTERNAL TIMING FAILURE " 4300 / /SUBR DISPLAYS FIXATION DOTS AT A2 & B2 / DOTS, SET I 1 XA2, 0 CLR ESF LDA I YDOTS, 0 DSC I DOTPW, 0606 SET I 1 XB2, 0 DSC DOTPW JMP / /SUBR DISPLAYS "DOTS" AND OTHER STUFF /EVERY MSEC WHILE SAMPLING UNTIL 1 OF 3 /EVENTS OCCUR: (1) FIXATION LEAVES /"KEYREG" REGION (EXIT CALL+1 W/NEW REG /IN AC (2) TIMEOUT: C(AC) MSECS ELAPSE /(EXIT CALL+2) (3) A BUTTON IS PRESSED /ON 4-KEY RESPONSE PANEL (EXIT CALL+2 /WITH RESP. CODE IN AC) ..."OTHER STUFF" /DISPLAYED CALLED BY JMP ? IN "STIMUL" / HOLREG, STC TIMOUT STC TIMER /12-BIT TIMER SET 10 0 /R.J. HS, JMP SYNC JMP DOTS STIMUL, NOP /OTHER-DISP SUBR JMP REGION SAE I KEYREG, -0 /"HOLD" REGION JMP EXIT1+2 /NEW REGION LDA I 1 ADM I TIMER, 0 SAE I TIMOUT, 0 /TIMEOUT YET? SKP JMP EXIT1+1 /TIMEOUT CLR IOB READ /READ PANEL AZE I JMP HS /NO RESP:CON"T EXIT1, XSK I 10 /CALL+3 XSK I 10 /CALL+2 JMP 10 /CALL+1 / /SUBR OBTAINS CALIB. READING AT /(XCAL,YDOTS) AND RETURNS ITS TRANSFORM /THRU AC. XCAL PASSED THRU AC. WAITS FOR /RIGHT BUTTON-PRESS ON 4-KEY PANEL /TYPES OUT VOLTAGE IF SW 0 UP. / CALPT, STC XCAL ADD STC CLPTRT /RJ IOB CLEAR /CLEAR PANEL C1, JMP SYNC SET I 1 XCAL, 0 LDA YDOTS DSC DOTPW CLR IOB READ AZE I JMP C1 /WAIT FOR KEY SAE I CALKEY, 4000 /CORRECT KEY? JMP CALER1 SAMPLE ADD C1000 STA XCAL /TEMP SNS I 0 JMP DECPUT SNS I 5 JMP MONIT LDA XCAL CLPTRT, HLT /RETURN / /CALIBRATION SECTION I: CALIBRATES /INTERVAL END-POINTS AROUND TWO FIXATION /POINTS. (XA1,XA3) & (XB1,XB3) / CAL1, LDA 0 STC CAL1RJ SNS I 0 JMP CRLF LDA I XA1, 0 JMP CALPT COM STC MVA1 LDA I XB1, 0 JMP CALPT STA I VB1, 0 ADD MVA1 APO I /VA1 > VB1 JMP CALER2 LDA I XA3, 0 JMP CALPT STA I VA3, 0 ADD MVA1 COM APO /VA1 > VA3? JMP CALER2 STC DVA1A3 ADD VB1 COM ADD VA3 APO /VA3 > VB1? JMP CALER2 STC DVA3B1 LDA I XB3, 0 JMP CALPT COM ADD VB1 APO JMP CALER2 /VB1 > VB3? STC DVB1B3 /NOW DISPLAY 4 VOLTAGE VALUES ON SCOPE /CHAN 2 FROM SW 5 UP TO SW 5 DOWN. ADD C2000 ADD MVA1 SCR 1 ADD C4000 STC 3 ADD DVA1A3 SCR 1 ADD 3 STC 4 ADD DVA3B1 SCR 1 ADD 4 STC 5 ADD DVB1B3 SCR 1 ADD 5 STC 6 SNS 5 JMP CAL1RJ C2, JMP SYNC CLR DIS 3 DIS 4 DIS 5 DIS 6 SNS I 5 JMP C2 CAL1RJ, HLT /RETURN / /CALIBRATION SECTION 2: TIMES SACCADES /FROM FIX1RG TO FIX2RG. SAVES MIN & MAX /OF SACCADES. WHEN READY, S FIXATES /FIX1RG & PRESSES START KEY, THEN MOVES /TO TARGET (FIXRG2) REGION, WHERE HE /STAYS UNTIL HITTING ANOTHER KEY. /DOES 4 SACCADES OR 8 IF SW 1 UP. /ABORTS IF ERROR OCCURS OR IF SW 5 UP. / CAL2, LDA 0 STC CAL2RJ STC SACMAX STC SACSUM ADD C2000 STC SACMIN SNS I 0 JMP CRLF LDA I 4 SNS I 1 ROL 1 /4 OR 8 COM STC 4 ADD JMPNOP /DOTS ON ONLY STC STIMUL /NO STIMULUS C3, IOB CLEAR C4, JMP SYNC JMP DOTS IOB READ AZE I JMP C4 SAE CALKEY /RIGHT ONE? JMP CALER1 LDA FIX1RG /FIX. REG. CODE STC KEYREG ADD MXSCRT /MAX EYE RT JMP HOLREG JMP .+3 /HAS LEFT FIX PT JMP CALER3 /TOO LONG ON FIX JMP CALER4 /ILLEGAL RESP. SAE I 0 /IN (A3,B1) ? JMP CALER5 STC KEYREG LDA I MAXSTM, 62 /50 MSEC MAX JMP HOLREG JMP .+3 /CHECK IT JMP CALER6 /TOO LONG JMP CALER4 SAE FIX2RG /INTO TARGET? JMP CALER7 /WRONG PLACE STC KEYREG LDA I MINSTM, 12 /10 MSEC MIN COM ADD TIMER APO JMP CALER8 /TOO QUICK LDA TIMER STC SACTIM /SAVE SAC TIME /NOW S MUST HOLD TARGET REGION UNTIL /BUTTON PRESS LDA RTMAX /RESP. TIMEOUT JMP HOLREG JMP CALER9 /LEFT BEFORE KEY JMP CALE10 /NO RESP /END OF CAL SAC: PROCESS IT & DO NEXT LDA SACTIM ADM I SACSUM, 0 /TOTAL OVER SACS LDA SACTIM COM ADD SACMAX APO JMP NUMAX /NEW MAX SAC LDA I SACMIN, 0 COM ADD SACTIM APO I JMP AGAIN /DO NEXT ONE LDA SACTIM STC SACMIN /NEW MIN JMP AGAIN NUMAX, LDA SACTIM STC SACMAX /NEW MAX JMP SACMIN-1 /CHECK MIN AGAIN, LDA SACTIM SNS I 0 JMP DECPUT /TYPE IF SW 0 SNS I 5 JMP MONIT /ABORT SW? XSK I 4 /ANOTHER? JMP C3 /TYPE OUT MIN, MAX, AVG JMP CRLF LDA SACMIN JMP DECPUT LDA SACMAX JMP DECPUT LDA SACSUM ADD C2 SCR 2 /DIV 4 OR 8=AVG SNS I 1 SCR 1 JMP DECPUT JMP MONIT LDA I DECMIN, -2 ADM SACMIN /ADJUST MIN LDA I INCMAX, 2 ADM SACMAX /& MAX CAL2RJ, HLT /RETURN / /SECTION HANDLES CALIBRATION ERRORS: /TYPES MESSAGE AND THEN RESTARTS PROG. / CALER1, SET I 1 CEL1-4000 JMP CALERR CALER2, SET I 1 CEL3-4000 JMP CALERR CALER3, SET I 1 CEL3-4000 JMP CALERR CALER4, SET I 1 CEL4-4000 JMP CALERR CALER5, SET I 1 CEL5-4000 JMP CALERR CALER6, SET I 1 CEL6-4000 JMP CALERR CALER7, SET I 1 CEL7-4000 JMP CALERR CALER8, SET I 1 CEL8-4000 JMP CALERR CALER9, SET I 1 CEL9-4000 JMP CALERR CALE10, SET I 1 CEL10-4000 CALERR, JMP MESSAG JMP MONIT / /CALIBRATION ERROR MESSAGES - MOST FROM /TRIAL-ERROR MESSAGES / CEL1=TEL1 CEL2, TEXT "VALUES NON-MONOTONE " 4300 CEL3=TEL2 CEL4=TEL3 CEL5=TEL4 CEL6=TEL6 CEL7=TEL7 CEL8=TEL8 CEL9=TEL9 CEL10=TEL10 / /SUBR RUNS TRIAL TYPES CALLING FOR /PREMASK OFFSET - STIM ONSET /TRIGGERED BY PRESCRIBED SACCADE. / STRIAL, LDA 0 STC STRLRJ IOB CLEAR /DISPLAY DOTS UNTIL START KEY HIT F1, JMP SYNC JMP DOTS CLR IOB READ AZE I JMP F1 /WAIT FOR KEY SAE I BUTST, 4000 /START KEY? JMP TRER1 /WRONG KEY / /NOW EYES MUST REMAIN IN FIXATION REGION /(FIX1RG) UNTIL SACCADE STARTS. IF NO /SACCADE WITHIN MXSCRT MSECS, ERROR. / LDA I FIX1RG, -0 /FIXATION REGION STC KEYREG LDA I JMP PREMSK /PREMASK DISPLAY STC STIMUL LDA I MXSCRT, 3000 /MAX EYE RT JMP HOLREG JMP .+3 /CHECK FOR SAC. JMP TRER2 /TOO LONG EYE RT JMP TRER3 /ILLEGAL RESP SAE I 0 /SACCADE REG? JMP TRER4 /SPURIOUS SAC. STC KEYREG LDA I NOP /ONLY DOTS SHOWN STC STIMUL ADD TIMER STA I EYERT, 0 /SAVE EYE RT COM ADA I MNSCRT, 310 /.2 SEC