/SHOW LINE: FIRST CONTROL CHARS ARE /SHOWN IN PERIPHERAL STATUS, THEN UP TO /"WIDTH" IN WINDOW STATUS, AND THEN /REMAINING ONES IN PERIPH. STATUS /PERIPHERAL SPACES ARE SHOWN IF BLKDEF= /4000; WONT BE IF BLKDEF=0 / SHOLIN, AZE I JMP WINDOW /-0:NO LEFT PER. STC 5 NXCHP, LDH I 7 /NEXT PERIPH CHR SHD I BLKDEF, 4000 JMP BLANK SHD I 4300 /END OF LINE? JMP CHNXLN /PERDEF=-33:ONLY NON-LETTER CHARS SHOWN /IN PERIPHERY;PERDEF=0,ALL CHARS SHOWN ADA I PERDEF, -33 /SHOW NON-LETTER APO /CHARS IN PERIPH JMP MASKCH /LETTER: MASK IT LDH 7 ROL 1 ADD ADPWS /FORM PW ADDRESS STC 2 ADD Y DSC 2 /SHOW CHAR DSC I 2 XSK I 1 /ADVANCE H.C. XSK I 5 /ANOTHER P-CHAR? JMP NXCHP JMP WINDOW BLANK, LDA I 11 ADM 1 /SKIP BLANK CHAR XSK I 5 /ANOTHER P-CHAR? JMP NXCHP JMP WINDOW MASKCH, LDA I Y, 0 DSC I MASKPW, 7007 /MASK PW LDA I 5 ADM ONE, 1 /SKIP 2ND PW XSK I 5 /ANOTHER P-CHAR? JMP NXCHP /DONE WITH LEFT PERIPHERY. NOW DO WINDOW WINDOW, SET I 5 MWIDTH, -10 /WINDOW WIDTH NXCHW, LDH I 7 SHD I 4300 /END OF LINE? JMP CHNXLN ROL 1 ADA I ADPWS, PATRN+1776 /PW AD IN LDF 2 STC 2 ADD Y DSC 2 DSC I 2 /SHOW W-CHAR XSK I 1 /ADVANCE HC XSK I 5 /ANOTHER W CHAR? JMP NXCHW /DONE WITH WINDOW: FINISH LINE IN /PERIPHERAL MODE; 5 IS AT -0 AND HENCE /WILL XSK UNTIL END OF LINE DETECTED JMP NXCHP / /CONTROL PASSES HERE WHEN DISPLAY BEGAN /AT NON-TOP LINE OF PAGE. NOW MUST RESET /POINTERS 3 (LINADS) AND 4 (LINCONS) /AND Y. CONTINUE DISPLAY AT TOP LINE /(AC=+0) OR AT BOTTOM LINE (AC=-0 WHEN /FIXATION BELOW BOTTOM LINE: CAN"T OCCUR /UNLESS <"LINES" SHOWN & FIXATION BELOW /BOTTOM LINE.) / WRAPUP, SET I 3 ADLIN1, LINADS+1777 /L ADS-1 LDF 2 SET I 4 ADLIN2, LINCON+1777 /L CTRL-1 LDF 2 LDA I YTOP, 360 /TOP LINE Y JMP NXLINE-1 / /END OF PAGE DISPLAY SUBROUTINE. / /SUBROUTINE SETS UP PAGE DISPLAY. /FILLS ARRAY "LINADS" WITH 1/2 WORD /POINTERS-1/2 FOR EACH OF NEXT "LINES" /OF TEXT, WITH EXTRA +0 AT END FOR WRAP- /AROUND DISPLAY. SKIPS LEADING 57 ("/") /AT BEGINNING OF EACH LINE. / SETPAG, LDA 0 STC STEXIT /SETUP RETURN DTEXT /TEXT,PWS,CTRLS ADD DLINES /NO. TO DISPLAY COM STA MLINES STC 6 SET I 7 PAGEPT, 6001 /PTR START PAGE DTEXT /TEXT LDF SET I 3 LINADS+1777 /LINE POINTERS SET I 4 LINCON+1777 /LINE CONTRL WDS CODLIN, JMP NXTCH /SUBR CHECKS BUF LDH I 7 AZE I JMP ENDFIL /END OF FILE SAE I 57 /SKIP LEAD "/" JMP ERROR /FIRST NOT "/" LDA 7 STA I 3 /NEXT LINE PTR JMP NXTCH LDH I 7 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 STEXIT, HLT /RETURN JUMP /END OF FILE ENCOUNTERED: DECREASE NO. /OF LINES TO BE DISPLAYED. / ENDFIL, ADD 6 COM ADD MLINES STC MLINES JMP STEXIT-1 /RETURN / /SUBR CHECKS FOR TEXT POINTER=END OF /TEXT BUFFER. IF AT END, SHIFTS ENTIRE /BUFFER DOWN SO THAT START=PAGEPT IS IN /FIRST BLOCK OF BUFFER. / NXTCH, LDA 7 /TEXT PTR SAE I 7377 /7377=END BLOK 3 JMP /NOT END:RETURN 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 JMP SETPAG+4 /REENCODE TEXT / /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 /DEFINES TBLK ADD STC TXIRET /RETURN JUMP STD JMP .-1 /WAIT IF BUSY AXO /NO EXT.TAPE OPS DTEXT /TEXT LDF ADD C4000 JMP TBLKIN /1ST BLOCK IN LDA I 5001 JMP TBLKIN /2ND BLOCK LDA I 6002 JMP TBLKIN /3RD BLOCK TXIRET, HLT /RETURN / /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 /RETURN / /ERROR ROUTINE. CONTROL ARRIVES HERE /WHEN FATAL OPERATIONAL ERROR OCCURS. /TYPES OUT "ERROR" AND HALTS WITH /JMP-TO-PC INSTR. IN AC.CONTINUES:MONIT / ERROR, LDA 0 STC D SET I 1 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 /NOW READ IN PARAMETER VALUES FOR NEXT /READING TASK. EACH PARAMETER /NAME IS TYPED OUT, FOLLOWED BY "=", /AND THEN ITS CURRENT VALUE AND /THEN A SPACE. THEN A NUMBER (SIGNED /DECIMAL INTEGER) IS ENTERED, /IF A NEW VALUE IS DESIRED (LEADING /ZEROES MAY BE SURPRESSED), OR A DIRECT /CR IF THE SAME VALUE IS DESIRED. A /"RUBOUT" BEFORE THE CR RESTARTS THE /INPUT AT THE "=" FOR THE PARAMETER. / SET I 13 PGCODE /PGCODE FIXED SET I 1 /AD-1/2 PARAM LABEL1-4000 /LABELS (HF-WDS) SET I 6 -12 PGET, XSK I 13 PROG1 JMP MESSAG /TYPE PARAM LABL TYVAL, LDA 13 PROG1 JMP DECPUT /"=XXX"SG DECIM. PROG1 JMP GETDEC /I3 DEC INPUT STC Y /SAVE INPUT DATA /C(3) IN LIF 1 LDA /=-4 MEANS 2003 /INITIAL CR:KEEP ADD C4 /CURRENT VALUE AZE I JMP .+4 LDA Y STA 13 XSK I 6 /ANOTHER PARAM? JMP PGET /PARAMETERS OBTAINED. COMPUTE YTOP AND /PROCEED TO "ADJUST". LDA TOPLIN APO JMP ERROR /CANT BE <0 MUL I M20, -20 ADA I C360, 360 STC YTOP ADD C40 /ENABLE 1/2-SIZE C4, ESF /NO TTY INTERUPT JMP ADJUST / /THIS SECTION "RUNS" PAGE DISPLAY AND /WINDOW CONTROL AND DATA ACQUISITION. / RUNPAG, LDA I 1 ADM NPAGE /INCR NPAGE&PUT JMP STORE /INTO DATA FILE LDA MLINES COM JMP STORE /SAVE LINES/PAGE /INITIALIZE EYE-POSITION SAMPLERS SO /THAT PROGRAM STARTS IN "MOVING" MODE /WITH LAST FIXATION AT (0,0). WILL GIVE /DUMMY (15,14) TIMING WORD AT TOP OF /DATA. ALLOWS IST WINDOW TO BE SET /IMMEDIATELY. INIT, STC FIXING />0:MOVING FROM ADD C360 /ASSUMED FIXATON STC XFIX /(360,0):CANT BE STC YFIX /THERE:INITIAL STC 14 /FIXATION SETUP STC 15 /0 DURATION /TURN ON CLOCK INTERRUPT LDA I 100 PDP PMODE CLEN /CLOCK ENABLED TAD C3000 /3000+100=3100 CLLR /10 KHZ CLOCK CLA TAD MDT /SAMPLING RATE CLAB /TO BUFFER PRSET CLSA /CLEAR REQUESTS 6314 /CLEAR PANEL LINC LMODE DISPLA, IOB 6001 /ION JMP SHPAGE /DISPLAY ON JMP .-1 /KEEP DISPLAYING / /END OF PAGE-RUNNING SECTION / /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 /3-LINE ADJ PATT LDA I CALBLK, 270 /SYSTEM SOURCE JMP NEWTEX /FETCH FILE LDA I 10 AXO /SET NO PAUSE LDA TEXBLK STC .+2 CHK /POSN TAPE AT 0 /TEXT FILE SNS 5 JMP CALIBR /SKIP ADJUST LDA I M1, -1 ADD LINES MUL SPACIN SCR 1 MUL I -20 STC DY STC PERDEF /ALL TEXT JMP SHPAGE /PATTERN ON SNS I 5 JMP .-2 /ON UNTIL 5 DOWN / /CALIBRATION SECTION.USES NEXT "LINES"OF /"CALBLK" SYSTEM FILE READ IN DURING /ADJUST FOR TEXT AND SUPERIMPOSES SMALL /SQUARES ONE-BY-ONE FOR VOLTAGE SAMPLING /THIS CALIBRATION IS LINES BY 8 POINTS, /WITH X AVERAGED W/R/T Y ("LINES") AND Y /W/R/T X (8 OF THEM). /USES JOB PARAMETERS, AND AFTER CHECKING /THEM, SKIPS TO "VERIFY" IF SW 4 DOWN. / CALIBR, LDA I -33 STC PERDEF /NORMAL PERIPHER ADD LINES ADD M20 APO I /NO MORE THAN 16 JMP ERROR /LINES/PAGE ADA I 20 /MUST BE>0 APO JMP ERROR STC DLINES ADD SPACIN APO JMP ERROR /SPACING>0? AZE I JMP ERROR MUL I -20 STC DY ADD M1 ADD LINES MUL SPACIN ADD TOPLIN ADA I -37 APO I /LAST LINE NO. JMP ERROR /MUST <32 LDA ENDPAG STC PAGEPT /SETUP NEXT JMP SETPAG /LINES OF CALBLK SNS 4 JMP VERIFY /ACQUIRE X & Y READINGS AT 8 POINTS FOR /EACH OF "LINES". TEMPORARY STORAGE IN /TABLES LDF FOR RUNNING SUM OF Y READING /W/R/T X (16:3000 UP) AND X READINGS /W/R/T Y (17,3400 UP). /S FIXATES EACH SQUARE SUPERIMPOSED ON /CALIB. TEXT (ALL PERIPH.) AND WHILE /FIXATING HITS PANEL KEY, THEN MOVES ON. /SW 0 ON: GET TYPEOUT OF TRANSFORMED /VOLTAGE AVGS: 1ST LINE=X"S, 2ND=Y"S. ADD MLINES STC 14 SET I 15 -10 /ZERO 8 X-SUMS SET I 17 3377 TABLES /LDF STA I 17 XSK I 15 JMP .-2 SET I 16 3000 ADD YTOP CLINE, STC YFIX /V.C. CURRENT LN ADD M2 /INIT HC/LINE STC XFIX /H.C. CALIB PT. STA 16 /ZERO Y SUM SET I 15 -10 /8 PTS./LINE SET I 17 /AD-1 X-SUMS 3377 CSPOT, IOB 6314 /CLEAR PANEL JMP SHPAGE /DISPLAY PAGE SET 1 XFIX C1000, LDA YFIX DSC I /SUPERIMPOSE 7777 /SQUARE AT DSC I /(XFIX,YFIX) 7777 IOB 6311 /DISPLAY UNTIL JMP CSPOT+2 /PANEL HIT TABLES YSAMP /GET Y-VOLTAGE ADD C1000 SCR 2 /INTO (0,377) ADM 16 /ADD TO Y-SUM XSAMP /GET X-VOLTAGE ADD C1000 SCR 2 ADM I 17 /ADD TO X-SUM LDA I CDX, 110 ADM XFIX /H.C. NEXT PT. XSK I 15 /ANOTHER PT/LINE JMP CSPOT /END-OF-LINE: AVERAGE Y-VALUE OVER 8 PTS LDA 16 SCR 3 STA 16 XSK I 16 /NEXT LINE Y-SUM LDA DY ADD YFIX XSK I 14 /ANOTHER LINE? JMP CLINE /SAMPLING COMPLETE: AVERAGE X-VALUES /BY DIVIDING EACH BY "LINES" SNS 0 JMP .+5 SET I 1 XLABEL-4000 /CR,"X-VOLTS:" PROG1 /IF SW 0 UP JMP MESSAG SET I 15 M10, -10 SET I 17 3377 /DIVIDE BY "LINES"(12 BITS - IGNORE SIGN XAVG, CLR /CLEAR LINK STC 3 /QUOTIENT COUNTR SET I 2 -2 /INDEX PSEUDO"-" LDA I 17 APO I /PSEUDO SIGN? JMP .+3 /SIGN BIT (AC0) SET: ROTATE IT OUT WITH /ROR I 1 (LINK CLEAR) AND INDEX 2 TO -1 /LATER WILL HAVE TO DOUBLE QUOTIENT XSK I 2 /YES:SET IT AND ROR I 1 /ROTATE IT OUT ADD MLINES /BEGIN SUBTRACTN APO JMP .+3 XSK I 3 /INCR.QUOTIENT JMP .-4 AZE I /INCR. IF -0 XSK I 3 LDA 3 /GET QUOTIENT XSK I 2 /DOUBLE " IF SKP /PSEUDO-SIGN WAS ROL 1 /ROTATED OUT /PROPER QUOTIENT NOW IN AC STA 17 SNS 0 JMP .+3 PROG1 JMP DECPUT /TYPE IF SW 0 UP LDA I C2400, 2400 ADM 17 /FORM VOLT-ADR. XSK I 15 /ANOTHER? JMP XAVG /NOW SET-UP (0,377) MATRIX FOR X-LOOKUP /AS FUNCTION OF HORIZ. VOLTAGE. FOR /EACH VOLTAGE V, PUT INTERPOLATED X POSN /IN (0,70) AT 2400+V IN TABLES LDF. SET I 17 2377 SET I 15 -400 CLR STC XFIX /WILL HOLD X-POS ADD M1 STA I 17 /INIT ALL=-1 XSK I 15 JMP .-2 /NOW FILL IN OBTAINED CALIB PTS. SET I 17 3377 SET I 15 -10 FILLX, LDA I 17 /NEXT X VO