*20 PMODE *20 /PARAMETERS OF OPERATION: MEASURED /IN NUMBERS OF REFRESH CYCLES: WHEN /REFRESH(=-RFRESH)=144 (1 MSEC), /TIMES ARE MEASURED IN MSECS. / PAUSE, 764 /NOW=1/2 SEC. /LENGTH OF INTERTRIAL INTERVAL: FIXATION /DOTS ON THROUGHOUT EXPT EXCEPT HERE. /MEASURED FROM OFFSET OF POSTMASK. / AFTER, 764 /NOW=1/2 SEC. /POSTMASK: DISPLAYED AFTER CHAR DISPLAY /UNTIL S RESPONDS (10-KEY PANEL) AND /THEN FOR ADDITIONAL "AFTER" COUNTS / /TO CHANGE POSTMASK PATTERN WORDS, PUT /DESIRED ONES (NOW 7777 7777) INTO /LOCATIONS PATRN-2 AND PATRN-1 / BEFORE, 144 /NOW=1/10 SEC. /PREMASK (USUALLY BLANK) ON (WITH FIXATN /ION DOTS UNTIL S HITS "READY" AND THEN /FOR ADDITIONAL "BEFORE" COUNTS. / /TO CHANGE PREMASK FROM BLANK, FILL /LOCATIONS PATRN+100 & PATRN+101 WITH /DESIRED PATTERN WORDS FOR PREMASK / M50,-50 K7, 7 TEMP, 0 R1, 0 R2, 0 R3, 0 INDEX6, 0 RNDM3, 0 RNDM2, 0 ADTIMS, TIME1 /AD TIME CONDS. ADCHRS, CHAR1 /AD CHAR CODES RNDM1, RNDM SH1, 0 SH2, 0 SH3, 0 SHUFEL, SHUFL RMNDR, RMNDRX TIMER, 0 DX, 24 /POSN SPACING CHAR, 0 IRX, IR RNX, RN NTRIAL, 0 TIME, 0 TRTYPE, 0 KEY, 0 CHARS, 12 /NO. CHARS/COND POSNS, 5 /NO. DISP POSNS TIMES, 3 /NO. TIME CONDS ADSDIF, RESP1-CHAR1 C40, 40 /SUBR TYPES OUT AC (LESS THAN 100) /AS 2 DIGIT DECIMAL NUMBER PLUS SPACE DECPUT, 0 DCA 0 TAD C260 DCA TIMER TAD 0 TAD MD10 SPA JMP .+3 ISZ TIMER JMP .-4 TAD C272 DCA 0 TAD TIMER JMS TYPE TAD 0 JMS TYPE TAD C240 JMS TYPE JMP I DECPUT C240, 240 MD10, -12 C260, 260 C272, 272 /SUBR TYPES CHAR FROM AC TYPE, 0 TLS TSF JMP .-1 CLA JMP I TYPE /SUBR GIVES CR+LF CRLF, 0 TAD C212 JMS TYPE TAD C215 JMS TYPE JMP I CRLF C212, 212 C215, 215 /SUBR STARTS CLOCK AT 1OO KHZ RATE CLOCK, 0 CLA CLLR TAD C2100 CLLR CLA JMP I CLOCK C2100, 2100 /SUBR PAUSES UNTIL RFRESH SECS*10^-5 DELAY, 0 CLCA CIA TAD RFRESH SPA SNA CLA JMP I DELAY /DONE WAITING JMP DELAY+1 /KEEP WAITING RFRESH, 144 /REFRESH RATE /SUBR DISPLA SHOWS FIXATION POINTS /AND KEY CHAR IN KEY POSN /CHAR=40 IS THE PREMASK CODE: /(NORMALLY BLANK:NO PREMASK) /CHAR=0 IS THE POSTMASK CODE (NORMALLY /=7777S:FULL POSTMASK) DISPLA, 0 JMS CLOCK /START CLOCK LINC LMODE SNS I 0 ADD C200 /CHAR SIZE: SW 0 ESF /1/2-SIZE CHARS SET I 1 X0, 374 /FIXATION CENTER LDA I 20 /LINE ABOVE CHAR SNS I 0 ROL 1 /DOUBLE IF FULL ADD VERCO DSC I FIXAT1, 400 /LEFT FIX.N PW DSC I FIXAT2, 4 /RIGHT FIXN. PW SET 1 X0 LDA I -20 /LINE BELOW CHAR SNS I 0 ROL 1 /DOUBLE IF FULL ADD VERCO DSC I FIXAT3, 1000 DSC I FIXAT4, 10 LDA DX MUL I KEYPOS, 0 ADD IHORCO STC 1 ADD CHAR ROL 1 ADA I LMODE /CORE MAP: MAINLINE PROGRAM IN LIF 0. /TELETYPE I/O SUBROUTINES IN LIF 1 UP TO /2777. 2-BLOCK DATA BUFFER IN LDF 1 3000 /TO 3777. 3-BLOCK TEXT BUFFER IN LDF 2 /4000-5377. DISPLAY PATTERN WORDS IN LDF /2 5400-5577. DISPLAY CONTROL CONSTANTS /IN LDF 2 5600-5777. EYE-POSITION LOOKUP /TABLES IN LDF 3: Y TABLES 6000-6377; /X-TABLES 6400-6777. CALIBRATION WORK /AREA ABOVE TABLES IN LDF 3. DATA=LDF 1 DTEXT=LDF 2 TABLES=LDF 3 PROG0=LIF 0 PROG1=LIF 1 YSAMP=LSW XSAMP=RSW /FOR DEBUGGING, XSAMP=RSW/SAM 4, YSAMP= /LSW/SAM 0; FOR EXPTS, XSAMP=SAM 17, /YSAMP=SAM 16 / /JOB PARAMETERS STORED HERE: ARE WRITTEN /OUT AS HEADER ON DATA FILES SEGMNT 0 *20 PGCODE, 1111 /PROGRAM CODE SUBSES, 0 /SUBJ.-SESS. ID TEXTAP, 0 /SOURCE TAPE ID TEXBLK, 0 /1ST TEXT TBLK DATBLK, 0 /1ST DATA TBLK TOPLIN, 0 /TOP LINE NO. LINES, 0 /DISPLAY LINES SPACIN, 0 /LINE SPACING WIDTH, 0 /WINDOW WIDTH POSN, 0 /REL. WINDOW POS QBLK, -1 /QUESTION BLOCK NPAGE, 0 /DISPLAY PAGE NO / PMODE MDT, -144 /10 MSEC/SAMPLE C3000, 3000 LMODE / /BEGINNING OF EACH JOB, PROGRAM ACCEPTS /INPUTS FOR ABOVE PARAMETERS, EXCEPT FOR /"PGCODE" AND "NPAGE", WHICH ARE AUTOM- /ATICALLY SET. / /"SUBSES": ID FOR SUBJECT AND SESSION /"TEXTAP": TAPE ID FOR SOURCE AND QUEST. /"TEXBLK": STARTING TBLK FOR TEXT SOURCE /"DATBLK": " " " DATA OUTPUT (UNIT 1) /"TOPLIN": LINE NO. FOR UPPER DISPLAY / LINE: 0=TOP,...,37=BOTTOM /"LINES" : NO. LINES DISPLAYED PER PAGE /"SPACIN": 1=SINGLE SPACING,2=DOUBLE,ETC /"WIDTH" : WINDOW WIDTH IN CHARS /"POSN" : POSITION OF LEFT WINDOW EDGE / W/R/T FIXATION PT: -N MEANS / N TO LEFT,+N N TO RIGHT /"QBLK" : QUESTION TBLK:<0=NO QUESTIONS / /THIS SECTION HANDLES INTERRUPTS. /TWO POSSIBLE INTERRUPTS: ON RESP.PANEL, /SUBJECT SIGNALS END OF PAGE/END VERIFY. /CLOCK OVERFLOW INTERRUPT SIGNALS TIME /TO RESAMPLE X AND Y SIGNALS AND PERFORM /THE NECESSARY UPDATING. *40 0 /INTERRUPT PC STC ACSAVE /SAVE AC /INTERRUPT LINK&MQ AREN"T SAVED! /HOWEVER, SUBROUTINE PC=0000 MUST BE /SAVED AND RESTORED. EACH CLOCK INTER- /RUPT IS COUNTED BY 10&11. ADD STC SAVE0 IOB 6135 /CLSA APO I /<0:CLOCK OFLOW JMP PANEL /CHECK PANEL INT XSK I 10 /ANOTHER SECOND? JMP .+5 XSK I 11 /INCR SECONDS NOP /MAX=1023 SECS. SET I 10 -144 /100 SAMPLES/SEC /SAMPLE Y AND X SIGNALS (A-D 16 & 17) /COMPUTE TABLE LOOKUP FOR EACH OF THEM TABLES /LDF FOR LOOKUP YSAMP /GET Y-VOLTAGE ADD C1000 SCR 2 /INTO (0,377) ADD C2000 /INTO VOLT-ADDR. STC 16 /Y-POINTER XSAMP /GET X-VOLTAGE ADD C1000 SCR 2 ADD C2400 /X VOLT-ADDR. STC 17 /X-POINTER /NOW COMPARE X-POS WITH LAST ONE="XFIX" /IF DIFFERENCE IS LESS THAN OR EQUAL TO /"XCRIT" CHAR POSNS, NO CHANGE IS JUDGED LDA I XFIX, 0 COM ADA 17 APO I COM /GET -ABS.VAL. ADA I /OF X-DIFF AND XCRIT, 4 /COMPARE WITH STC D /X-MOVE CRITERIA /"FIXING"=0 IF SUBJECT LAST IN FIXATION /MODE,NOT=0 IF IN MOVEMENT MODE SAE I FIXING, 0 JMP MOVING ADD D />0:NO X CHANGE APO JMP SACCAD /NO LONGER FIXIN /X POSITION HAS NOT CHANGED: CHECK Y /POSITION FOR PERSISTING FIXATION LDA I YFIX, 0 /Y FIX. POS. SAE 16 JMP SACCAD /Y HAS CHANGED! /FIXATION PERSISTS: INCREMENT FIXATION /TIMER (REGISTER 14) ONLY UP TO 777 LDA 14 SAE I 777 XSK I 14 /NOW RETURN TO DISPLAY IN PROGRESS. RESTOR, LDA C40, 40 BSE I 6000 /FORM RETURN JMP STC RETURN /JUMP INTSR. SET I 0 SAVE0, 0 /RESTORE SUBR PC DJR /HOLD PC ON EXIT LDA I ACSAVE, 0 /RESTORE AC IOB 6244 /RMF IOB C6001, 6001 /ION RETURN, HLT /RETURN JUMP / /CONTROL ARRIVES HERE WHENEVER CHANGE IN /X OR Y DEFINES END OF FIXATION. /ZERO SACCADE-TIMER (REGISTER 15), SET /"FIXING" NON-ZERO (MOVEMENT MODE), /SAVE (XFIX,YFIX) AS DATA, AND THEN /REDEFINE XFIX AND YFIX AND RETURN. SACCAD, SET I 15 0 /INIT SACCADE TM ADD C215 /WILL BE >0 STC FIXING /NON-ZERO=MOVING ADD XFIX ROL 6 ADD YFIX /(XFIX,YFIX) JMP STORE /SUBR STORES WD TABLES /LDF FOR LOOKUP /INCREMENT SACCADE TIMER TO MAX OF 7 MORMOV, LDA 15 SAE I 7 XSK I 15 LDA 16 STC YFIX /UPDATE Y LDA 17 STC XFIX /UPDATE X JMP RESTOR /RETURN / /CONTROL REACHES HERE WHENEVER SUBJECT /IN "MOVEMENT" PHASE ("FIXING" NOT 0) /STAYS IN "MOVEMENT" UNTIL TWO SUCCESSIV /X AND Y SAMPLES WITHIN FIXATION CRITERI / MOVING, LDA I D, 0 /<0:STILL MOVING APO JMP MORMOV /STILL MOVING LDA YFIX /X STOPPED:CHECK SAE 16 /Y POSN. JMP MORMOV /Y CHANGED /END OF MOVEMENT: NEW FIXATION BEGINS. /STORE DURATIONS OF LAST FIXATION AND OF /SUCCEEDING SACCADE AS NEXT DATA WORD: /BITS 0-2 SACCADE+BITS 3-11 FIXATION. /THEN SETUP NEW DISPLAY CONTROLS. LDA 15 /SACCADE DURATIO ROR 3 /INTO BITS 0-2 ADD 14 /FIXATION DURAT. JMP STORE /SAVE WORD TABLES /LOOKUP LDF CLR STC FIXING /FIXATION MODE SET I 14 /INIT FIX TIMER 1 LDA 17 STC XFIX /NEW XFIX /WHEN NEW FIXATION POINT ESTABLISHED, /CURRENT DISPLAY NOT COMPLETED, BUT /RATHER RESTARTED AT "YFIX" LINE. /NOW RESET LINE CONTROLS IN TEXT LDF. DTEXT SET I 4 LINCON+1777 SET 6 MLINES ADD C7000 /EACH LINE SET STA I 4 /TO ALL PERIPH. XSK I 6 JMP .-2 LDA YFIX ADD ADLIN2 /=AD-1 WINDOW STC 4 /LINE ADD XFIX ADA I MLW, 0 /NO. CHARS TO COM /LEFT OF WINDOW APO I /TOO FAR LEFT? JMP NOROOM /TOO FAR LEFT STA I 4 /=CONTROL WORD LDA I MWIDE, -10 /-WINDOW WIDTH STC MWIDTH JMP DISPLA /EXIT TO DISPLAY NOROOM, ADD MWIDE /DECREASE WINDOW STC MWIDTH COM STA I 4 /CONTROL WORD=-0 JMP DISPLA / /CONTROL REACHES HERE WHENEVER INTERRUPT /OCCURS FROM RESPONSE PANEL. /THIS SIGNALS END OF PAGE, AND TWO END- /MARKERS (7777) ARE STORED IN DATA FILE. /THEN THE NEXT PAGE (IF ANY) IS RUN. /IF DURING "VERIFY", THIS SIGNALS /PROCEED TO "READ" TASK. / PANEL, IOB 6311 /PANEL FLAG? JMP RESTOR /NO:SPURIOUS IOB 6314 /CLEAR FLAG LDA TBLK SAE /IN "VERIFY" IF CALBLK /TBLK=CALBLK SKP JMP READ LDA I 7777 JMP STORE LDA I 7777 JMP STORE /NOW CHECK IF THERE"S MORE OF TEXT. LDA I DLINES, 0 ADD MLINES /LAST PAGE DONE AZE /IF MLINES