*20 LMODE /AUTOMATIC-LINE VERSION (NO Y):RECT MASK /120 CPS SAMPLING /NEW SW OPTIONS: 1 UP=DOUBLE PRECISION X /SAMPLING. 2 UP=CALIB. ALT. LINES DATA=LDF 1 DTEXT=LDF 2 TABLES=LDF 3 PROG0=LIF 0 PROG1=LIF 1 XSAMP=SAM 15 /JOB PARAMETERS SEGMNT 0 *20 PGCODE, 313 SUBSES, 0 TEXTAP, 0 TEXBLK, 0 DATBLK, 0 QBLK, -1 TOPLIN, 8 LINES, 4 SPACIN, 6 XCRIT, 2 LINEXL, 20 LINEXR, 22 PMODE MDT, -1501 /120 CPS SAMPLES C2000, 2000 /100 KHZ CLOCK LMODE /THIS SECTION HANDLES INTERRUPTS. /TWO POSSIBLE INTERRUPTS: RESP PANEL=END /PAGE,UP A LINE, OR END "VERIFY" /CLOCK INTERRUPT=RESAMPLE EYE-POSN *40 0 /INTERRUPT PC STC ACSAVE /SAVE AC AND 0000 BUT NOT L OR MQ. /10&11 COUNT ELAPSED SECS.:120 SAMPS/SEC ADD STC SAVE0 IOB 6135 /CLSA APO I JMP PANEL /CHECK PANEL INT XSK I 10 /ANOTHER SECOND? JMP .+5 XSK I 11 /INCR SECONDS NOP SET I 10 -170 /SAMPLE X SIGNAL (A-D 15) /COMPUTE TABLE LOOKUP FOR X, GIVEN YFIX LDA I YFIX, 0 /FIXATION LINE SNS I 2 /SW 2 ON: USE SCR 1 /1 CAL/2 LINES ROR 4 /C(16)*256 STC /AD CDF 10 X-TAB XSAMP ADD C1000 SCR 2 ADD /12-BIT AD X-POS STC PDP PMODE CDF 10 /IN PDP DF 1 TAD I CDF LINC LMODE STC 17 /17 HOLDS X-POS /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 ADD 17 APO I COM /COMPARE X-CHANG ADD XCRIT /WITH X CRIT. STC D /"FIXING"=0: FIXATION; ELSE, MOVING SAE I FIXING, 0 JMP MOVING ADD D />0:NO X CHANGE APO JMP SACCAD /FIXATION ENDS! /FIXATION PERSISTS: INCREMENT FIXATION /TIMER (REGISTER 14) ONLY UP TO 776 LDA 14 SAE I 776 XSK I 14 /NOW RETURN TO DISPLAY IN PROGRESS. RESTOR, LDA C40, 40 BSE I 6000 /FORM RETURN JMP STC RETURN SET I 0 SAVE0, 0 /RESTORE SUBR PC DJR LDA I ACSAVE, 0 /RESTORE AC IOB 6244 /RMF IOB C6001, 6001 /ION RETURN, HLT /RETURN JUMP / /CONTROL HERE WHENEVER FIXATION ENDS: /ZERO SACCADE-TIMER (REGISTER 15), SET /"FIXING" NON-ZERO, SAVE (XFIX,YFIX) / SACCAD, SET I 15 0 /INIT SACCADE TM ADD C2000 STC FIXING /NON-ZERO=MOVING ADD XFIX ROL 6 ADD YFIX /SAVE(XFIX,YFIX) JMP STORE /INCREMENT SACCADE TIMER TO MAX OF 7 MORMOV, LDA 15 SAE I 7 XSK I 15 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 SAMPLES WITHIN FIXATION CRITERION. / MOVING, LDA I D, 0 /<0:STILL MOVING APO JMP MORMOV /END OF MOVEMENT: NEW FIXATION BEGINS. /STORE TIMES OF LAST FIXATION AND SACCAD /AS DATA: BITS 0-2 SACCADE+3-11 FIXATION LDA 15 C303, ROR 3 ADD 14 JMP STORE CLR STC FIXING /FIXATION MODE SET I 14 /INIT FIX TIMER 1 ADD 17 STC XFIX /NEW XFIX /SET LNFLAG NON-0 IF XFIX BEYOND MXR ADD XFIX ADA I MXR, 0 APO I STC LNFLAG /LNFLAG SET>0 /CHECK FOR CHANGE TO NEXT FIXATION LINE /(LNFLAG>0 AND XFIX0), /NEXT CHAR=DIAL-TAB (47),FOLLOWED BY /ASCII ANSWER AND THEN CR. IF NOT:ERROR! SAE I 47 /DIAL-TAB? JMP ERROR LDA 6 APO JMP ERROR AZE I /MUST HAVE>0 LNS JMP ERROR COM STC MLINES /MLINES=-C(6) JMP NXTCH JMP SETPAG+4 /BUFFER END JMP NXTCH /ANSWER IN BUFFR JMP SETPAG+4 /CR NOT " " SAE I 43 /CR? JMP ERROR JMP SETRET-4 /BEGINNING OF LINE OF TEXT NEWLN, LDA 7 STA I 3 /NEXT LINE PTR JMP NXTCH JMP SETPAG+4 /RESET BUFFER SAE I /SKIP TO END OF 43 /LINE=43 JMP .-4 ADD C7000 /EACH LINE INIT= STA I 4 /ALL PERIPH<<0 XSK I 6 /ANOTHER LINE? JMP CODLIN LDA 7 STC ENDPAG /SAVE END PTR STA I 3 /DUMMY LINAD=0 SETRET, HLT /RJ /END OF FILE ENCOUNTERED: DECREASE NO. /OF LINES TO BE DISPLAYED (NORMAL MODE) /OR JMP "FINISH" (QUESTION-MODE). / ENDFIL, ADD 6 APO />-0:QUEST.-MODE JMP .+4 AZE JMP ERROR />0:QST W/O ANSW JMP FINISH /NO MORE QUESTS. COM ADD MLINES STC MLINES JMP SETRET-1 /RETURN / /SUBR INPUTS NEXT CHAR FROM TEXT FILE BY /LDH I 7. CHECKS FOR TEXT POINTER=END OF /TEXT BUFFER. IF AT END, PUSHES ENTIRE /BUFFER DOWN SO THAT "PAGEPT" IS IN 1ST /BUFFER BLOCK; THEN RETURNS CALL+1 WITH /AC=0. ELSE RETURNS CALL+2 WITH AC=CHAR. / NXTCH, SET 5 0 /SAVE RJ LDA 7 SAE I 7377 /7377=END BUFFER JMP NXTRET+1 /NOT END LDA PAGEPT BCL I 6377 /BITS 2,3=BLOCK SCR 10 /=NO. SHIFT DOWN ADD TBLK /NEW LOW TBLK JMP TEXTIN /SUBR READS TEXT ADD PAGEPT BCL I 1400 /RESET PAGEPT STC PAGEPT /INTO 1ST BLOCK NXTRET, JMP 5 /RETURN CALL+1 XSK I 5 LDH I 7 /WITH AC=CHAR, JMP 5 /RETURN CALL+2 / /SUBR TAKES AC=TBLK, STRIPS BITS 0-2, /AND THEN READS IN 3 TBLKS (UNIT 0) INTO /TEXT BUFFER (BLOCKS 0-2 LDF 2) / TEXTIN, BCL I C7000, 7000 STC TBLK ADD STC TXIRET /RJ STD JMP .-1 /WAIT IF BUSY AXO /NO EXT.TAPE OPS DTEXT ADD C4000 JMP TBLKIN /1ST BLOCK IN LDA I 5001 JMP TBLKIN /2ND BLOCK LDA I 6002 JMP TBLKIN /3RD BLOCK TXIRET, HLT /RJ / /SUBR TAKES MBLK FROM AC, ADDS TBLK /TO IT, AND THEN READS BLOCK (UNIT 0) / TBLKIN, ADA I TBLK, 0 STC .+2 RDC 0 JMP / /END OF PAGE ENCODING ROUTINE / /SUBR INPUTS 1ST 3 BLOCKS OF TEXT FILE /INTO BUFFER, TAKING TBLK FROM AC. /SETS PAGEPT=6001 (SKIPS INITIAL "*20" /LINE OF FILE) AND THEN CALLS "SETPAG". / NEWTEX, STC D /SAVE AC=TBLK ADD STC NEWRET ADD C6001 STC PAGEPT ADD D JMP TEXTIN JMP SETPAG NEWRET, HLT /RJ / /SUBR POSITIONS TAPE UNIT 0 AT TBLK=AC /WITH "NO PAUSE" OPTION / TAPPOS, STC TAPRET-1 ADD STC TAPRET /RJ STD JMP .-1 /WAIT IF BUSY LDA I C10, 10 AXO /NO PAUSE CHK 0 TAPRET, HLT /RJ / /ERROR ROUTINE. CONTROL ARRIVES HERE /WHEN FATAL OPERATIONAL ERROR OCCURS. /TYPES OUT "ERROR" AND HALTS WITH /JMP-TO-PC INSTR. IN AC. / ERROR, LDA 0 STC D SET I 12 ERLABL-4000 /PTR TO "ERROR" PROG1 /LIF 1 JMP MESSAG /CR,CR,"ERROR" ADD D /JMP PC IN AC / /SYSTEM MONITOR HERE. HALTS AND WHEN /STARTED, RUNS NEW JOB / MONIT, HLT LDA I CALBLK, 270 /GET ADJ&CALIBR& JMP TAPPOS /VFY TEXTS NO PS /INITIALIZE "TYPE" FOR NO DISPLAY PAUSE CLR IOB 6046 /DUMMY TLS INIT. ADD C456 /=SKP STC HOLDIS /START CLOCK AT 120 CPS PULSE RATE LDA I 100 PDP PMODE CLEN TAD C2000 /2100=100 KHZ CLLR CLA TAD MDT CLAB LINC LMODE /NOW READ IN PARAMETER VALUES FOR NEXT /READING TASK. /CTRL/C DURING INPUT RESTARTS AT MONIT DATA SET I 13 PGCODE /PGCODE FIXED SET I 12 /AD-1/2 PARAM LABEL1-4000 /LABELS (HF-WDS) SET I 6 -13 PGET, XSK I 13 PROG1 JMP MESSAG /TYPE PARAM LABL TYVAL, LDA 13 PROG1 JMP DECPUT /TYPE CUR VAL PROG1 JMP GETDEC /I3 DEC INPUT STC Y /SAVE INPUT LDA /C(2003)=-4: 2003 /INITIAL CR:KEEP ADD C4 /CURRENT VALUE AZE I JMP .+4 LDA Y STA 13 XSK I 6 /ANOTHER PARAM? JMP PGET /NOW ACCEPT VECTOR INPUT FOR WINDOW SIZE /,POS"N, AND PERIPHERY-TYPE. AFTER LABEL /FOR EACH, INPUT 1-15 NUMBERS AS ABOVE, /SEPARATED BY ",", WITH CR AFTER LAST. LDA I 17 /AD-1 1ST VECTOR STA ADVEC+2000 /VECTORS IN LDF1 SET I 16 -3 VECTOR, PROG1 JMP MESSAG /VECTOR LABEL PROG1 JMP GETVEC /INPUT XSK I 16 JMP VECTOR /PARAMETERS OBTAINED. COMPUTE YTOP AND /PROCEED TO "ADJUST". LDA TOPLIN APO JMP ERROR /CANT BE <0 MUL I M20, -20 ADA I C361, 361 STC YTOP ADD C40 /ENABLE 1/2-SIZE C4, ESF /NO TTY INTERUPT JMP ADJUST / /THIS SECTION "RUNS" PAGE DISPLAY, /WINDOW CONTROL AND DATA ACQUISITION. / RUNPAG, PROG1 JMP PAGPAR /FETCH VECTORS JMP STORE /AC=INCR. NPAGE LDA MLINES COM JMP STORE LDA MWIDE COM JMP STORE LDA POSN JMP STORE LDA 1 JMP STORE /INITIALIZE EYE-POSITION SAMPLERS SO /THAT PROGRAM STARTS IN "MOVING" MODE /WITH LAST FIXATION AT (0,20). GIVES /DUMMY (15,14) TIMING WORD AT TOP OF /DATA. ALLOWS IST WINDOW TO BE SET /IMMEDIATELY. INIT, STC FIXING ADD C20 STC XFIX STC YFIX STC 14 STC 15 STC LNFLAG JMP SETXR /INITIAL MXR IOB 6314 /CLEAR PANEL DISPLA, IOB 6001 /ION JMP SHPAGE JMP .-1 /KEEP DISPLAYING / /THIS SECTION DISPLAYS 3 X 3 "X" PATTERN /OVER PARAMETER-SELECTED DISPLAY AREA, /PROCEEDING TO CALIBRATE WHEN SW 5 DOWN. /FIRST READS IN TBLKS=270-272:3 LINES /ADJUST PATTERN+16 LINES CALIBR/VERIFY, /AND THEN (WITHOUT PAUSING) MOVES TAPE /TO TEXT SOURCE (DOESN"T READ IT YET). / ADJUST, LDA I 3 STC DLINES ADD CALBLK JMP NEWTEX ADD TEXBLK JMP TAPPOS LDA I M1, -1 ADD LINES MUL SPACIN SCR 1 MUL I -20 STC DY STC PERDEF /ALL TEXT IOB 6314 /CLR PANEL JMP SHPAGE /PATTERN ON SNS 5 JMP CALIBR /UNTIL SW 5 OFF IOB 6311 /OR PANEL HIT JMP .-5 / /CALIBRATION SECTION. /THIS CALIBRATION IS 8 POINTS /LINE, /WITH A SEPARATE X-CALIB. FOR EACH LINE, /UNLESS SW 2 UP: THEN ONE CALIB/2 LINES / CALIBR, LDA LINES ADD M20 APO I /00? AZE I JMP ERROR MUL I -20 STC DY ADD M1 ADD LINES MUL SPACIN ADD TOPLIN ADA I -37 APO I /LAST LINE<32? JMP ERROR LDA XCRIT /XCRIT>0? APO JMP ERROR AZE I JMP ERROR C1000, LDA ENDPAG STC PAGEPT JMP SETPAG /SETUP CALBLK LDA I -32 STC PERDEF /NORMAL PERIPH. ADD C4000 STC BLKDEF /WITH BLANKS SNS 4 JMP VERIFY /SET "TYPE" FOR DISPLAY THRU TTY OUTPUT ADD JMPCAL /=JMP SHOCAL STC HOLDIS /SAMPLE X AT "LINES" X 8 PTS; STORE /SCALED X-VALUES VIA 17 AT 2420-2617 /S FIXATES EACH SQUARE SUPERIMPOSED ON /CALIB. TEXT (ALL PERIPH.) AND WHILE /FIXATING HITS PANEL KEY, THEN MOVES ON. ADD LINES SNS 2 /1/2 SW 2 JMP .+3 ADD ONE SCR 1 COM STC 14 SET I 17 2417 /AD-1 X-STORE TABLES ADD YTOP CLINE, STC YCAL /V.C. CURRENT LN ADD C776 STC XFIX /H.C. CALIB PT. /CR,LF IF CALIB. TYPEOUT (SW 0 ON) SNS 0 JMP .+5 SET I 12 LINLAB-4000 PROG1 JMP MESSAG SET I 15 M10, -10 CSPOT, IOB 6314 /CLEAR PANEL JMP SHPAGE JMPCAL, JMP SHOCAL /AND CALIB. SQ. IOB 6311 /DISPLAY UNTIL JMP .-4 /PANEL HIT /DONT SAMPLE UNTIL CLOCK INTERRUPT FOR /AC SYNCHRONY IOB 6135 /CLSA IOB 6131 /CLSK JMP .-2 XSAMP /GET X-VOLTAGE ADD C1000 SCR 2 STC 11 /TEMP X /TYPE X FOR EACH POINT IF SW 0 ON /DISPLAY REMAINS ON THROUGH TYPE-OUT SNS 0 JMP NOTYPE ADD 11 PROG1 JMP DECPUT /TYPE X SET I 12 CALLAB-4000 /" " PROG1 JMP MESSAG NOTYPE, ADD 11 TABLES STA I 17 /STORE X-VAL LDA I 110 /CAL PT SPACING ADM XFIX /H.C. NEXT PT. XSK I 15 /ANOTHER PT/LINE JMP CSPOT LDA DY SNS I 2 /SKIP LINE SW 2 ADD DY ADD YCAL XSK I 14 /ANOTHER LINE? JMP CLINE /READY FOR INTERPOLATION: EXECUTED LIF 3 LIF 3 EXIT1, JMP INTERP / SEGMNT 3 *20 /NOW FOR EACH L (L=0,LINES-1), SETUP A /256-ELEMENT MATRIX FOR X-POSN AS /FUNCTION OF X-VOLT.: FOR EACH VOLTAGE V /(0,377 OCT) INTERPOLATE X-POS (0,70 O) /AT 256*L+V IN PDP FIELD 1. /2 LINES/INTERP SW 2 UP INTERP, LDF LDA LINES+2000 SNS 2 JMP .+4 ADA I 1 SCR 1 COM STC 11 SET I 15 417 /AD-1 X-VALUES SET I 16 420 /AD X-VALS LDA I LDF 4 /INITIAL LDF=4 NEWLDF, STC TABLDF LDA I 2000 INTERX, STC LOOKUP /BEGIN CUR LDF ADD LOOKUP ADA I 377 STC 17 /TOP OF TABLE STC 6 /START X-POS=0 SET I 14 -7 /8-1 INTERVALS INTX1, LDA I 16 COM /FORM VOLT. DIFF ADA I 15 /NEXT INTERVAL APO JMP CALERR /MUST BE>0 AZE I JMP CALERR STC DV SET I 10 /INTERP. 8 PTS -10 /PER INTERVAL SET I 2 /AT 1/16,3/16, 1 /...,15/16 *D ADD 2 INTX2, MUL I /FORM NEXT POINT DV, 0 /=N*DV/16 SCR 4 COM /POSN REL.TO TOP ADA 15 /(LEFT)OF INTER. JMP TABFIL /AND FILL DOWN XSK I 6 /NEXT X-POSN LDA I 2 ADM 2 /NUMER. NEXT PT. XSK I 10 /ANOTHER PT/INT? JMP INTX2 XSK I 14 /ANOTHER INTERV? JMP INTX1 CLR /FILL DOWN REST JMP TABFIL /X=70 (RIGHTMOST /END OF INTERPOLATION CURRENT TABLE. /INCREMENT LOOKUP BY 400 (AND TABLDF IF /NEEDED) AND DO NEXT TABLE. XSK I 11 /ANOTHER TABLE? SKP JMP CALERR+3 /CALIB. DONE XSK I 15 /POINTERS TO XSK I 16 /NEXT SET X-AVGS LDA I 400 ADD LOOKUP /AD NEXT TABLE SAE I 4000 /END CUR LDF? JMP INTERX /DO NEXT TABLE ROL 1 /AC=1 ADD TABLDF JMP NEWLDF /NEW LDF,LOOKUP / CALERR, PROG0 DJR /SAVE ERROR PC JMP ERROR PROG0 JMP VERIFY /CALIB DONE!! / /SUBROUTINE FILLS DOWN THRU ADR=AC /(INCLUSIVE), SETTING EACH ELEMENT=C(6). /STARTING FILL AD=C(17) IN LDF=TABLDF / TABFIL, ADA I LOOKUP, 0 /PARAM=AD TABLE STC FILEND /LOWEST FILL ADR TABLDF, HLT /LDF OF TABLE LDA 6 /X POSN STA 17 LDA I -1 ADM 17 /NEXT LOWER ADR COM ADA I FILEND, 0 /DONE IF >-0 APO I JMP /DONE:RETURN DJR /PROTECT RJ JMP TABFIL+4 / /END INTERP. SEC. / SEGMNT 0 *EXIT1+1 / /SUBR DISPLAYS "X"(XFIX,YCAL) / SHOCAL, SET 1 XFIX LDA I YCAL, 0 DSC I 1463 DSC I 6314 JMP / /"VERIFY" SECTION: PUTS WINDOW OF TEXT /WHEREVER SUBJECT FIXATES;USES CALIBR. /TEXT AND INHIBITS DATA STORAGE/OUTPUT. /PANEL KEY PROCEEDS TO "READ" TASK. SW /3 DOWN AT START SKIPS DIRECTLY TO "READ / VERIFY, SNS 3 JMP READ /SKIP VERIFY LDA I JMP STC STORE+1 /INHIBIT WRITING LDA I -3 /USE 3-CHAR STC MWIDE /WINDOW CENTERED ADD M1 /ON FIXATION PT. STC POSN ADD C4 /FIXING NON-0 JMP INIT /START DISPLAY / /THIS SECTION EXECUTES "READ" TASK. / READ, LDA I STA I 13 /DISINHIBIT STC STORE+1 /DATA WRITING STC 11 SET I 10 /INITIALIZE -170 /TIMERS 10,11 STA I NPAGE, 0 /INIT.PAGE=0 ADD C456 /RESET "TYPE" TO STC HOLDIS /NO-DISPLAY MODE /INITIALIZE PROG1 PTRS TO PARAM.-VECTORS DATA SET I 1 2014 ADD C17 STA I 1 /14: 2020 UP ADD C20 STA I 1 /15: 2040 UP ADD C20 STA I 1 /16: 2060 UP LDA TEXBLK JMP NEWTEX /FETCH TEXT /POSITION DATA FILE (UNIT 1) AT DATBLK /WITH NO PAUSE ADD DATBLK STC .+4 ADD C10 AXO /NO PAUSE CHK U 0 /WRITE PARAMETER HEADER BLOCK OUT AT /BEGINNING OF DATA FILE DATA SET I 13 2777 /START AT 3000 SET I 12 PGCODE-1 /PARAMETER ARRAY SET I 6 -14 LDA I 12 STA I 13 XSK I 6 JMP .-3 JMP RUNPAG /RUN 1ST PAGE / /CONTROL REACHES HERE WHEN TEXT-READING /COMPLETE. IF QBLK>=0, COMPREHENSION /TEST IS TO BE GIVEN. SIGNALLED BY AN /NPAGE=0 AFTER THE 7777. IF NO /TEST, WRITE ANOTHER 7777 AND QUIT. /BEFORE DOING EITHER, TYPE OUT TOTAL /READING TIME IN SECS.& TOTAL LINES READ / QUESTN, LDA QBLK />0:POSN TAPE APO I /W/NO PAUSE AT JMP TAPPOS /QUEST. FILE SET I 12 LABEL2-4000 PROG1 JMP MESSAG /"TIME" ADD 11 PROG1 JMP DECPUT PROG1 JMP MESSAG /" SECS FOR " /NO LINES READ=LINES*NPAGE IF TEXT ENDED /WITH FULL PAGE(I.E.,MLINES=-0),ELSE= /LINES*(NPAGE-1)-MLINES ADD MLINES AZE ADD LINES COM STC D ADD NPAGE MUL LINES ADD D PROG1 JMP DECPUT PROG1 JMP MESSAG /"LINES" /NOW DO QUESTIONS STC 10 /COUNT CORRECTS STC 11 /COUNT QUESTIONS COM /DLINES=-0 FOR STC DLINES /"SETPAG" Q-MODE ADD QBLK APO JMP FINISH /NO QUESTIONS JMP NEWTEX /FETCH Q-FILE LDA I -40 STC DY /DOUBLE SPACING ADD C4000 STC BLKDEF ADD ONPER-5 STC PERDEF-1 /ALL CHARS SHOWN ADD C303 STC YTOP JMP STORE /NPAGE=0 /QUESTION-FILE FORMAT: ANY NUMBER OF /TEXT LINES FOR DISPLAYING EACH QUESTION /AND ALTERNATIVE ANSWERS. FOLLOWING CR /AFTER LAST ALTERNATIVE SHOULD BE THE /ANSWER RATHER THAN "/": LEFTMOST KEY /CORRESPONDS TO "A",NEXT TO "B",ETC. /AFTER CORRECT ANSWER (1 CHAR), HAVE /ANOTHER CR. THEN TEXT FOR NEXT QUESTION /ETC, WITH 0 AS USUAL = END FILE. / NXQST, IOB 6314 /CLEAR PANEL JMP SHPAGE /DISPLAY IOB 6311 /RESP YET? JMP .-3 CLR IOB 6312 /READ RESP /HAVE RESP IN AC: COUNT ROTATIONS OF AC /UNTIL RESP BIT IN BIT 2 (LEFTMOST RESP) SET I 1 1 /COUNTS ROTS. SAE I 1000 C456, SKP /NOT YET:ROTATE JMP .+4 XSK I 1 ROL 1 JMP .-6 /1 NOW HOLDS ASCII RESP CODE. 7 ENDS UP /AT LAST CR BEFORE TAB&ANSWER (SHPAGE) /COMPARE THEM; IF CORRECT, INCR. 10. /SAVE CORECT&OBTAINED RESPS IN LEFT HALF /AND RIGHT HALF OF NEXT DATA WORD. LDH I 7 /SKIP TAB=47 LDH I 7 /LOAD ANSWER SHD 4001 /RIGHT HALF 1 XSK I 10 /INC.NO.CORRECT XSK I 11 /" " QUESTIONS ROL 6 /CORRECT TO LH ADD 1 /OBTAINED LH JMP STORE LDA ENDPAG STC PAGEPT JMP SETPAG /ENCODE NEXT Q JMP NXQST /DO NEXT ONE /NOW WRITE FINAL END-MARKER (7777) - /WILL BE THIRD IF NO QUESTIONS FINISH, LDA I 7777 JMP STORE /BEFORE QUITTING, MUST WRITE OUT LAST /DATA MBLK NOT YET BUFFERED OUT. ONLY /IF LAST END-MARKER TRIGGERED BUFFER, /WON"T NEED TO DO THIS. LDA 13 BSE I 7400 /WILL BE 7777 AZE I /IFF END MBLK JMP WDONE /IN PROG:WAIT /NOT YET OUTPUT: WRITE CURRENT MBLK STD JMP .-1 CLR JMP WRITE WDONE, STD JMP .-1 /FINALLY TYPE OUT NO QUESTIONS/NO.CORREC /LAST MESSAGE INCLUDED "COMPREHENSION" CLR ADD 10 PROG1 JMP DECPUT /NO.CORRECT PROG1 JMP MESSAG /" OF" ADD 11 PROG1 JMP DECPUT /NO.QUESTIONS ENDJOB, JMP MONIT /DONE!! / /SECTION HANDLES DIVERSION FROM TYPE /(PROG1): DISPLAYS PAGE & CALIB. PT. IF /HOLDIS=JMP SHOCAL (BUT NEITHER IF =SKP) /WHENEVER TTY BUSY. / HOLDIS, HLT /=SKP/JMP SHOCAL JMP SHPAGE PROG1 JMP TYPE+3 /RETURN TO TSF / /FOLLOWING SUBROUTINES AND OUTPUT LABELS /FIT INTO PROG1 (LIF 1) BELOW THE 2-BLOK /DATA OUTPUT BUFFER.20-77:VECTOR STORAGE / SEGMNT 1 *100 /SECTION CALLED BY "RUNPAG" EACH TIME /PAGE OF TEXT RUN: SETS WINDOW SIZE,POSN /AND PERIPHERY-COND.FROM THEIR VECTORS /AT 20,40,60 VIA (15,16,17).=5000,RESET /TO START OF VECTOR. / PAGPAR, LDF LDA I 15 SAE I 5000 JMP .+4 SET I 15 17 JMP .-6 COM STA MWIDE+2000 LDA I 16 SAE I 5000 JMP .+4 SET I 16 37 JMP .-6 STA POSN+2000 LDA I 17 SAE I 5000 JMP .+4 SET I 17 57 JMP .-6 BCL I 3777 STA BLKDEF+2000 LDA 17 STA 2001 APO I COM STA PERDEF+2000 LDA I 1 ADM NPAGE+2000 /INCR NPAGE PROG0 JMP RUNPAG+2 /RJ,AC=NPAGE / /SUBR TYPES AC AS SIGNED DECIMAL INTEGER / DECPUT, STC 4 /SAVE ARG ADD STC DECRET /RET AD ADD 4 APO I JMP .+6 />0:NO "-" COM STC 4 /ABS(ARG) ADD C255 JMP TYPE /"-" ADD 4 SET I 2 260 /COUNT DIGIT ADA I -144 /HUNDREDS APO JMP .+3 XSK I 2 /INCR. DIGIT JMP .-5 AZE I /-0? JMP .-3 /KEEP GOING ADA I 144 /RSETORE REM. STC 4 ADD 2 JMP TYPE /HUNDREDS SET I 2 C260, 260 ADD 4 ADD MD10 APO JMP .+3 XSK I 2 JMP .-4 AZE I JMP .-3 ADD D10 STC 4 ADD 2 JMP TYPE /TENS ADD C260 ADD 4 JMP TYPE /UNITS PROG0 /RETURN IN PROG0 DECRET, HLT /R.J. / /AFTER TYPING INITIAL SPACE, /SUBR ACCEPTS SIGNED 3-DIGIT DECIMAL /INTEGER FROM TTY. LEADING ZEROES NEEDNT /BE ENTERED; AND A CR IS THE /TERMINATOR. THE OBTAINED VALUE IS /RETURNED VIA AC. /AN INITIAL CR LEAVES AC=0&3=-4 (LIF 1) /ILLEGAL CHARS/SIGN GENRATE JMP "ENTERR" / GETDEC, LDA 0 STC GETRET /R.J. LDA I 240 JMP TYPE /SPACE JMP INPUT ADD ASCII SAE I 215 /LAST CHAR=CR? JMP ENTERR LDA 4 PROG0 /RETURN PROG0 GETRET, HLT /WITH AC=VAL / /SUBR TAKES SIGNED DECIMAL INTEGER FROM /TTY. LEAD BLANKS IGNORED, LEAD 0"S MAY /BE SUPPRESSED. ECHOES ALL NON-CR CHARS. /AND EXITS WHEN NON-DIGIT APPEARS (CHAR /LEFT IN ASCII), WITH SIGNED VAL IN 4. / INPUT, LDA 0 STC INPRET STC 4 /BUILDS VALUE SET I 2 -2 /INDEXES SIGN SET I 3 -4 /INDEXES DIGITS JMP INCHAR /CH&ECHO NON-CR SHD I 4000 /SKIP LEAD BLNK JMP .-3 SAE I 215 SKP JMP HAVEIT /INITIAL CR SAE I C255, 255 /"-"? JMP NEXDIG+1 /SHOULD BE DIGIT XSK I 2 /SIGN FLAG NEXDIG, JMP INCHAR ADA I /DIGIT? -257 APO JMP HAVEIT /NO:RETURN ADA I MD10, -12 /DIGIT? APO I JMP HAVEIT ADD C11 /RESTORE DIGIT AZE I C11, CLR /-0 TO +0 STC 5 XSK I 3 />3 DIGITS? SKP JMP HAVEIT ADD 4 MUL I D10, 12 /DEC. SHIFT LEFT ADD 5 STC 4 JMP NEXDIG HAVEIT, LDA 4 XSK I 2 /SIGN? SKP COM STC 4 INPRET, HLT /RJ / /SUBR ACCEPTS TTY CHAR AND ECHOES NON-CR /LEAVES CHAR IN "ASCII" & AC. IF CTRL/C, /RESTARTS AT MONIT. / INCHAR, LDA 0 STC INCRET IOB 6031 /KSF JMP .-2 IOB 6036 /KRB STA I ASCII, 0 SAE I 203 /CTRL/C? JMP .+3 PROG0 JMP MONIT SAE I C215, 215 JMP TYPE /ECHO NON-CR LDA ASCII INCRET, HLT /RJ / /CONTROL ARRIVES HERE WHEN TYPED ENTRY /FOR PARAMETER IS ILLEGAL. / ENTERR, LDA I 277 JMP TYPE /? LDA I C275, 275 /= JMP TYPE PROG0 /REDO ENTRY JMP TYVAL / /INPUT FOR VECTOR-PARAMETERS: SAME INPUT /BUT NULL ENTRIES AREN"T ALLOWED, "," /SEPARATES MULTIPLE ENTRIES,AND ERRORS /RESTART ENTIRE VECTOR INPUT. VECTOR AT /C(ADVEC)+1 UP. / GETVEC, SET I 1 -17 /MAX 15/VECTOR SET I 15 ADVEC, 0 JMP INPUT /GET & STORE ADD 4 STA I 15 /VECTOR ENTRY LDA I 4 ADD 3 /NULL ENTRY? AZE I JMP VECERR LDA ASCII /LAST INPUT CHAR SHD I 5400 /","? JMP NXITEM /YES:GET NEXT N SAE I 215 /CR? JMP VECERR VECFIN, LDA I 5000 /END VECTOR=5000 STA I 15 LDA I 20 ADM ADVEC /AD-1 NEXT VECT. PROG0 JMP VECTOR+4 /RETURN NXITEM, XSK I 1 /ROOM 4 1 MORE? JMP ADVEC+1 JMP VECFIN /NO:CLOSE VEC. / /CONTROL HERE IF ERROR DURING VECTOR /INPUT. TYPES ?,CR,= & RESTART " ". / VECERR, LDA I 277 JMP TYPE /? JMP CRLF ADD C275 JMP TYPE /= PROG0 JMP VECTOR+2 /RESTART VECTOR / /SUBR TYPES OUT MESSAGE FROM PACKED /ASCII CODE - 43 GENERATES CR&LF, AND 00 /TERMINATES OUTPUT. ADDRESS OF SOURCE /POINTED (+1/2) BY 12 FROM PROG0;HENCE /MUST BE READ AND RETURNED THERE. / MESSAG, LDA 0 STC MESRET /R.J. PDP PMODE TAD 12 /PASS PROG0(12) LINC /W/O DIFF LDF LMODE STC 12 NXCHAR, LDH I 12 AZE I JMP C100+1 /SETUP RETURN SAE I 43 /CR? JMP .+3 JMP CRLF /DO CR,LF JMP NXCHAR ADA I -37 /ADD 100 OR 200 APO /FOR 8-BIT CODE ADD C100 ADA I 237 JMP TYPE /TYPE 8-BIT CODE JMP NXCHAR C100, 100 ADD 12 /PASS PTR BACK PDP /TO 1 IN PROG0 PMODE DCA 12 LINC LMODE PROG0 /RETURN IN PROG0 MESRET, HLT /R.J. / /SUBR GENERATES CR&LF:CALLED ONLY FROM /PROG1, WHERE IT RESIDES / CRLF, LDA 0 STC CARRET /R.J. ADD C215 JMP TYPE /CR LDA I 212 JMP TYPE /LF CARRET, HLT /RETURN / /SUBR TYPES OUT 8-BIT ASCII AC /CALLED FROM & RESIDES IN PROG1. HAS /SPECIAL "DISPLAY" MODE (WHEN HOLDIS= /JMP SHPAGE) IN WHICH CURRENT PAGE & /CALIB. PT. DISPLAYED WHILE TSF-ING. / TYPE, SET 13 0 /RJ STC 14 /SAVE ASCII IOB 6041 /TSF JMP .+7 /BUSY:WAIT LDA 14 /RECOVER & IOB 6046 /TYPE CHAR CLR JMP 13 /RJ PROG0 JMP HOLDIS /DISPLAY & WAIT? / /TEXT (PACKED ASCII) PARAMETER LABELS / ERLABL, 4343 TEXT *ERROR* LABEL1, 4343 TEXT *SUB-SESS ID=* 0043 TEXT *TEXT TAPE =* 0043 TEXT *TEXT BLOCK =* 0043 TEXT *DATA BLOCK =* 0043 TEXT *QUEST.BLOCK=* 0043 TEXT *TOP LINE NO=* 0043 TEXT *NO.OF LINES=* 0043 TEXT *LN SPACING =* 0043 TEXT *X-CRITERION=* 0043 TEXT *LEFT LN POS=* 0043 TEXT *RIGHT " " =* 0043 TEXT *WINDOW SIZES* 4375 0043 TEXT *WINDOW POSNS* 4375 0043 TEXT *PERIPHERAL CONDS* 4375 0000 LABEL2, 4343 TEXT *TIME=* TEXT * SECS. FOR * TEXT * LINES* 4303 /CR,*C* TEXT *OMPREHENSION=* LABEL3, TEXT * OF * LINLAB, 4300 /CR CALLAB, 4000 /" " /END OF PROG1 SECTION. 3000-4000 THIS /SEGMENT USED FOR DATA OUTPUT BUFFERING. / /SEGMENT 2: 1ST 3 BLOCKS TEXT BUFFERING /(4000-5377). THEN PATTERN WORDS (5400- /5577). THEN LINE ADRESS AND LINE-CONTRL /WORDS FOR DISPLAY (5600 UP) / /END OF PROG1 SECTION. 3000-4000 THIS /SEGMENT USED FOR DATA OUTPUT BUFFERING. / /SEGMENT 2: 1ST 3 BLOCKS TEXT BUFFERING /(4000-5377). THEN PATTERN WORDS (5400- /5577). THEN LINE ADRESS AND LINE-CONTRL /WORDS FOR DISPLAY (5600 UP) / SEGMNT 2 *1400 /PATTERN WORDS FOR CHAR DISPLAY FOLLOWS 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 / /LINE ADDRESS POINTERS (1/2 WORD).UP TO /16 OF THEM + 1 EXTRA FOR WRAP-UP / LINADS, 0 *.+20 /LINE CONTROL WORDS: 16 MAX LINCON, 0