*20 /SACPACK1: / /BASIC SUBROUTINE PACKAGE FOR CONTINGENT /EYE-MOVEMENT STIMULUS CONTROL AND /RESPONSE DETECTION. ABSOLUTE BINARY /LOAD OVER PS-12 MAINLINE PROGRAM: 16000 /PASSES VARIABLES FROM FORTRAN COMMON, /WHICH MUST BEGIN WITH THE FOLLOWING /INTEGER VARIABLES: / /XA1, XA2, XA3, XB1, XB2, XB3, FIX1RG, /FIX2RG, MXSCRT, MNSCRT, MAXSAC, MINSAC, /S1DUR, S2DUR, HOLMIN, MAXRT, EYERT, /SACDUR, RESP, RT, PRESTM(10), /SACSTM(10), STIM1(10), STIM2(10), /STIM3(10) / /ALL DURATIONS EXPRESSED IN MSECS. / /XA1,XA2,XA3: X-COORDINATES OF LEFT, / MIDDLE & RIGHT OF LEFT FIXATION REGION / /XB1,XB2,XB3: AS ABOVE FOR RIGHT FIX REG / /MAXSAC & MINSAC: MAX & MIN DURATIONS / FOR SACCADES / /FIX1RG & FIX2RG: CODES FOR STARTING & / TARGET FIXATION REGIONS: LEFT-RIGHT / =(-0,1), R-L=(1,-0) / /MXSCRT & MNSCRT: MAX & MIN DURATIONS / FOR SACCADE ONSET AFTER START KEY HIT / /PRESTM,SACSTM,STIM1,STIM2,STIM3: / ADDRESSES OF STIMULUS CONTROL VECTORS / IN MAINLINE COMMON: GUIDE SINGLE / REFRESH OF VARIOUS STIMULI (W/O FIX. / DOTS)-PRESTM & SACSTM=STIMULI BEFORE / & DURING SACCADE; STIM1,STIM2,STIM3= / STIMULI AFTER SACCADE. VECTOR FORMAT: / 1ST WD=NO. OF PWS (0=NULL STIM) / 2ND WD=STARTING H.C. OF STIMULUS / 3RD WD=0 (HALF-SIZE) OR 200 (FULL) / 4TH-10TH = STIMULUS PWS / /S1DUR,S2DUR: DURATIONS OF STIM1 & STIM2 / /MINHOL: MINIMUM TIME TARGET MUST BE /HELD AFTER STIM3 ONSET - SHOULD BE LONG /ENOUGH TO INSURE SACCADE STOPPED THERE / /MAXRT: LONGEST STIM3 DURATION WHILE / AWAITING RESPONSE (NO RESPONSE ALLOWED / EXCEPT DURING STIM3). / /BUTCOR: 10-BUTTON PANEL KEY CODE FOR / CORRECT RESP ON A TRIAL / /SECTION ESTABLISHES DUMMY "COMMON" AT /10200 UP (LDF 4) - NOT LOADED!!! / SEGMNT 4 *200 XA1, 0 XA2, 0 XA3, 0 XB1, 0 XB2, 0 XB3, 0 FIX1RG, 0 FIX2RG, 0 MXSCRT, 0 MNSCRT, 0 MAXSAC, 0 MINSAC, 0 S1DUR, 0 S2DUR, 0 MINHOL, 0 MAXRT, 0 BUTCOR, 0 EYERT, 0 SACDUR, 0 RESP, 0 RT, 0 PRESTM, 0 *.+11 SACSTM, 0 *.+11 STIM1, 0 *.+11 STIM2, 0 *.+11 STIM3, 0 / /ACTUAL PACKAGE BEGINS HERE / PMODE *6020 / /PS-12 ENTRY FOR CALIBRATION: FIELD 1 /ASSUMED FOR BOTH ENTRIES & EXITS / CENTRY, 0 LINC LMODE LDF 4 /"COMMON" ACCESS JMP CALIBR PDP PMODE CLA CLL JMP I CENTRY /RETURN / /RUN-A-TRIAL ENTRY POINT / TENTRY, 0 LINC LMODE LDF 4 JMP STRIAL PDP PMODE CLA CLL JMP I TENTRY / /SUBR SAMPLES X-EPS AND RETURNS VALUE /THRU AC CORRESPONDING TO X-REGION / LMODE REGION, SAM 15 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 WAITS 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 4 LTIMER-4000 /AD-1/2 ER LABEL JMP SCOPE JMP .-3 /TRAP ERROR LTIMER, TEXT "INTERNAL TIMING FAILURE" / /SUBR DISPLAYS FIXATION DOTS AT A2 & B2 / DOTS, SET 1 XA2+2000 /FROM COMMON CLR ESF LDA I YDOTS, 20 DSC I DOTPW, 7777 SET 1 XB2+2000 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 UNDER CONTROL OF STIMULUS /VECTOR WHOSE ADDR IN STIMUL. / HOLREG, STC TIMOUT STC TIMER /12-BIT TIMER SET 10 0 /R.J. HS, JMP SYNC JMP DOTS SET I 2 /GET ADDR-1 STM STIMUL, PRESTM+1777 /CONTROL VECTOR LDA I 2 AZE I JMP KEYREG-2 /NULL STIM COM STC 3 /XSK ON PWS LDA I 2 STC 1 /INIT HC LDA I 2 /0 OR 200 ESF LDA I YSTIM, 60 /Y FOR STIMULI DSC I 2 /SHOW PW VECTOR XSK I 3 JMP .-2 JMP REGION SAE I KEYREG, -0 /"HOLD" REGION JMP 10 /EXIT CALL+1 LDA I 1 ADM I TIMER, 0 SAE I TIMOUT, 0 /TIMEOUT YET? SKP JMP EXIT1+1 /TIMEOUT IOB 6311 /RESP YET? JMP HS /SKIPS KEY HIT EXIT1, XSK I 10 /CALL+3 XSK I 10 /CALL+2 JMP 10 / /SUBR OBTAINS CALIB. READING AT /(XCAL,YDOTS) AND RETURNS IT /THRU AC. XCAL PASSED THRU AC. / CALPT, STC XCAL ADD STC CLPTRT /RJ ESF /HALF-SIZE IOB 6135 /INITIAL CLSA IOB 6304 /CLEAR 4-PANEL JMP SYNC SET I 1 XCAL, 0 ADD YDOTS DSC DOTPW IOB 6301 /READY YET? JMP XCAL-2 /WAIT FOR KEY UP JMP SYNC SAM 15 CLPTRT, HLT /RETURN / /SUBR DISPLAYS MESSAGE AFTER BRIEF PAUSE /MESSAGE VECTOR PTR IS 4 / SCOPE, LDA 0 STC SCOPRJ ESF SET I 5 -400 JMP SYNC XSK I 5 JMP .-2 SLOOP, SET 3 4 SET I 1 240 NEXCH, LDH I 3 AZE I JMP SCOPRJ-2 /00=END VECTOR ROL 1 ADA I ADPWS, PATRN-2 STC 2 LDA I YMESS, 200 DSC 2 DSC I 2 XSK I 1 JMP NEXCH XSK I 5 JMP SLOOP SCOPRJ, HLT / /CALIBRATION FOR END-POINTS OF TWO /FIXATION INTERVALS: (XA1,XA3)&(XB1,XB3) / PMODE MFRESH, -144 /CLOCK CONSTANTS CRATE, 2100 /SO 1 MSEC/BEAT LMODE / CALIBR, LDA 0 STC CALRJ CAL1, PDP /TURN CLOCK ON PMODE CLA TAD MFRESH /-BEATS/SYNC CLAB CLA CLEN CLLR TAD CRATE CLLR LINC LMODE / /SW 4 UP: SHOW DOTS FOR INITIAL ADJUST /UNTIL SW 4 BACK DOWN / SNS 4 JMP POINTS IOB 6135 JMP SYNC JMP DOTS SNS I 4 JMP .-3 POINTS, LDA XA1+2000 /FROM "COMMON" JMP CALPT SAE I 777 /EXTREME LEFT? SKP JMP CALER1 COM STC MVA1 LDA XB1+2000 JMP CALPT STA I VB1, 0 ADD MVA1 APO I /VA1 > VB1 JMP CALER2 LDA XA3+2000 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 -1000 ADD DVA3B1 APO JMP CALER4 /GAIN TOO LOW LDA XB3+2000 JMP CALPT SAE I 7000 /EXTREME RIGHT? SKP JMP CALER3 COM ADD VB1 APO JMP CALER2 /VB1 > VB3? STC DVB1B3 CALRJ, HLT /RJ / /SECTION HANDLES CALIBRATION ERRORS: /DISPLAYS MESSAGE & RESTARTS / CALER1, SET I 4 CEL1-4000 JMP CALERR CALER2, SET I 4 CEL2-4000 JMP CALERR CALER3, SET I 4 CEL3-4000 JMP CALERR CALER4, SET I 4 CEL4-4000 CALERR, JMP SCOPE /DISPLAY MESSAGE JMP CAL1 /RECALIBRATE!! / CEL1, TEXT "EXTREME LEFT " CEL2, TEXT "BAD READINGS " CEL3, TEXT "EXTREME RIGHT" CEL4, TEXT "GAIN TOO LOW " / /SUBR RUNS TRIAL TYPES CALLING FOR /PREMASK OFFSET - STIM ONSET /TRIGGERED BY PRESCRIBED SACCADE. /ANY TIME SW 5 THROWN UP & DOWN, A NEW /CALIBRATION IS OBTAINED BEFORE TRIAL. /STIMULUS SEQUENCE (+DOTS AT ALL TIMES): / / ON OFF STIM SUBR / / - - - START KEY "DOTS" / START KEY SAC ONSET "PRESTM" / SAC ONSET SAC OFFSET "SACSTM" / SAC OFFSET S1DUR MSECS "STIM1" / STIM1 OFF S2DUR MSECS "STIM2" / STIM2 OFF RESP/TIMEOUT "STIM3" / STRIAL, LDA 0 STC STRLRJ IOB 6135 /CLSA INITIALIZE IOB 6304 /CLEAR LOWER TWAIT, JMP SYNC JMP DOTS /GET NEW CALIBRATION IF SW 5 UP & DOWN SNS 5 JMP .+5 SNS I 5 JMP .-1 JMP CALIBR JMP STRIAL+3 IOB 6301 JMP TWAIT IOB 6314 /CLEAR UPPER / /NOW EYES MUST REMAIN IN FIXATION REGION /(FIX1RG) UNTIL SACCADE STARTS. IF NO /SACCADE WITHIN MXSCRT MSECS, ERROR. / JMP REGION SAE FIX1RG+2000 /FIXATING? JMP TRER4 STC KEYREG LDA I PRESTM+1777 /AD-1 STIM VECTO STC STIMUL LDA MXSCRT+2000 /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 SACSTM+1777 /SAC STIM VEC STC STIMUL ADD TIMER STA EYERT+2000 /SAVE EYE RT COM ADA MNSCRT+2000 /TOO QUICK? APO I JMP TRER5 /TOO QUICK ONSET LDA MAXSAC+2000 /MAX SAC DUR JMP HOLREG JMP .+3 /END OF SAC? JMP TRER6 /SAC TOO LONG JMP TRER3 /PREMATURE RESP SAE FIX2RG+2000 /IN TARGET REG? JMP TRER7 /ILLEGAL SAC STC KEYREG ADD TIMER COM ADA MINSAC+2000 /MIN SAC DUR APO I /SAC TOO FAST? JMP TRER8 LDA TIMER STA SACDUR+2000 /SAVE SAC TIME / /TARGET FIXATION BEGINS. PRESENT THREE /STIMULUS INTERVALS. NO RESP ALLOWED /UNTIL START OF 3RD INTERVAL, DURING /WHICH RESP MUST OCCUR. / LDA I STIM1+1777 /STIM 1 VEC STC STIMUL LDA S1DUR+2000 AZE I JMP .+5 /NO STIM1 PHASE JMP HOLREG JMP TRER9 /ILLEGAL SAC SKP /S1 OVER - OK JMP TRER3 /PREMATURE RESP LDA I STIM2+1777 /STIM 2 VEC STC STIMUL LDA S2DUR+2000 AZE I JMP .+5 /NO STIM2 PHASE JMP HOLREG JMP TRER9 /ILLEGAL SAC SKP /S2 OVER - OK JMP TRER3 /PREMATURE RESP LDA I STIM3+1777 /STIM 3 VEC STC STIMUL LDA MINHOL+2000 /MIN S3 FIXAT. JMP HOLREG JMP TRER9 /BAD TARGET FIX. SKP /OK! JMP HAVRSP /HAVE RESP! /TARGET FIXATION ACCEPTABLE - MAINTAIN /STIM3 UNTIL RESP OCCURS OR TIMEOUT, /WITH NO DEMAND THAT FIXATION BE HELD LDA TIMOUT COM ADA MAXRT+2000 /REMAINING TIME JMP HOLREG JMP .+3 JMP TRER1 /TIMEOUT! JMP HAVRSP /LEFT TARGET, SO REDEFINE IT AS NEW /KEY REGION & KEEP WAITING FOR RESP: /RE-ENTER HOLREG W/0 ZEROING TIMERS - /RETURN AS ABOVE / STC KEYREG JMP KEYREG+2 /RESUME HOLREG / /STIMULUS SEQUENCE OVER - SAVE RESP=0 /IF ERROR,=KEY>0 IF CORRECT, AND -N FOR /TRIAL ERROR N, WHERE N=JMP ADDR OF ERR. / HAVRSP, CLR IOB 6312 /READ RESP SAE BUTCOR+2000 /CORRECT? CLR STA RESP+2000 LDA TIMER STA RT+2000 STRLRJ, HLT /RETURN / / /SECTION HANDLES VARIOUS TRIAL ERRORS. /DISPLAYS ERROR MESSAGE, THEN /SETS RESP=PC OF ERROR (<0) & RETURNS / TRER1, SET I 4 TEL1-4000 JMP TRERR TRER2, SET I 4 TEL2-4000 JMP TRERR TRER3, SET I 4 TEL3-4000 JMP TRERR TRER4, SET I 4 TEL4-4000 JMP TRERR TRER5, SET I 4 TEL5-4000 JMP TRERR TRER6, SET I 4 TEL6-4000 JMP TRERR TRER7, SET I 4 TEL7-4000 JMP TRERR TRER8, SET I 4 TEL8-4000 JMP TRERR TRER9, SET I 4 TEL9-4000 JMP TRERR TRERR, LDA 0 /JMP PC STA RESP+2000 JMP SCOPE /SHOW MESSAGE JMP STRLRJ / /TRIAL-ERROR MESSAGES / TEL1, TEXT "RESP TOO LATE" TEL2, TEXT "MOVE TOO LATE" TEL3, TEXT "EARLY RESPNSE" TEL4, TEXT "OFF FIXATION " TEL5, TEXT "MOVE TOO SOON" TEL6, TEXT "MOVE TOO SLOW" TEL7, TEXT "MISSED TARGET" TEL8, TEXT "MOVE TOO FAST" TEL9, TEXT "LEFT TARGET " / /PATTERN WORDS FOR CHAR DISPLAY / 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 7000 /APOST.(TYPE ^) 0 3410 /BACK ARROW 1010 0 /BLANK 0 7500 /! 0 7000 /" 70 3614 /NO. SIGN 1436 7721 /$ 4677 1446 /% 6130 5166 /& 0523 500 /APOSTROPHY 6 3600 /( 41 4100 /) 36 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 /< 42 1212 /= 1212 4200 /> 1024 4020 /? 2055 /