*20 LMODE *20 /STEP1: BEGINS WITH SW 5 DOWN. DISPLAYS /CENTER PATTERN FOR CENTER ALIGNMENT /AND ZEROING ON RIGHT-EYE CHANNEL. /SW 5 UP WHEN ZEROED START, CLR ESF /HALF-SIZE SNS I 5 JMP .-1 CENTER, JMP CLOCK /MSEC CLOCK SUBR ADD YC /VERT. COORD. SET I 1 XC, 370 /MIDDLE-LEAD 4 DSC FIXPAT DSC FIXPAT+2 /SHOW "X" JMP DELAY /REFRESH TIMING SNS 5 /DONE WHEN UP JMP CENTER /THIS SECTION DISPLAYS LINEAR CALIBRATIN/PATTERN OF 8 EQUALLY SPACED "X"S, /EXTENDING THE ENTIRE (TO THE DOT) RANGE /OF A 57-CHAR LINE (DX=1). HOR. SIGNAL /FROM RIGHT-EYE VIA A-D CHAN 17. EACH /"X" SHOWN UNTIL EITHER (SW 0 UP) POS. /PULSE IN A-D CHAN 14 OR (SW 0 DOWN) /2 SEC. INTERVAL; THEN VALUE READ&STORED /BEGINS WITH SW 4 UP / RECORD, SNS 4 JMP .-1 SET I 10 HVOLTS-1 /AD-1 STOR.TABLE SET I 11 -10 /EIGHT POINTS LDA I -4 /LEAD ON H.C. STC X SET I 12 RDWELL, -620 /2 SEC./POINT JMP CLOCK SET 1 X ADD YC DSC FIXPAT DSC FIXPAT+2 JMP DELAY SNS 0 JMP TIMEIT /DOWN:WAIT 2 SEC SAM 14 /UP:UNTIL +PULSE ADA I -300 APO JMP RDWELL+1 /NO PULSE YET RVOLT, SAM 17 /A-D VOLTAGE STA I 10 /SAVE RAW VALUE XSK I 11 /ANOTHER POINT? SKP JMP PRINT /DONE:PRINTOUT LDA X /SETUP NEXT H.C. ADA I 110 /72 POINTS JMP RDWELL-2 TIMEIT, XSK I 12 /2 SECS. YET? JMP RDWELL+1 JMP RVOLT /SECTION PRINTS OUT 8 VALUES (L-R) /AS SIGNED 3-DIGIT OCTAL INTEGERS PRINT, SET I 10 HVOLTS-1 SET I 11 -10 LDA I C212, 212 JMP TYPE LDA I C215, 215 JMP TYPE /CR,LF LDA I C240, 240 JMP TYPE /" " LDA I 10 /NEXT VALUE APO I /PRINT "+"OR"-" JMP C255+2 COM STC N /SAVE ABS.VAL. LDA I C255, 255 /PRINT "-" JMP C253+1 STC N LDA I C253, 253 /"+" JMP TYPE LDA I N, 0 SCR 6 ADA I C260, 260 JMP TYPE /1ST DIGIT LDA N ROR 3 BCL I 7770 ADD C260 JMP TYPE /2ND DIGIT LDA N BCL I 7770 ADD C260 JMP TYPE /3RD DIGIT XSK I 11 /ANOTHER VALUE? JMP C240-1 /SECTION FILLS IN 256-ELEMENT LOOKUP /ARRAY: ELEMENT J HOLDS THE HORIZ. CHAR. /POS. (0,56) CORRESPONDING TO A TRANFORM /VOLTAGE=J. VOLTS TRANSFORMED BY ADDING /400 AND THEN DIVIDING BY 4: (0,255) SET I 11 -400 SET I 17 2000 /LDF LDA I -1 /SET ALL=-1 STA 17 XSK I 17 XSK I 11 JMP .-3 SET I 11 /FILL OBSERVED -10 /CALIB. VALUES SET I 10 HVOLTS-1 CLR INT1, STC XCH /XCH=CHAR. POSN. LDA I 10 /NEXT CALIB.VAL. ADD C1000 SCR 2 /TRANFORM IT BSE I 2000 /LDF ADDR. STA 10 /RESET HVOLT TAB STC 17 ADD XCH /SET XCH INTO STA 17 /VOLTAGE ADDR. ADA I C10, 10 /XCH NEXT CAL.PT XSK I 11 JMP INT1 /NOW FILL EACH OF THE SEVEN INTERVALS /BETWEEN SUCCESSIVE CALIBRATION POINTS /WITH 8 LINEARLY INTERPOLATED POINTS SET I 7 HVOLTS-1 SET I 10 HVOLTS SET I 11 -7 SET I 6 0 /6 HOLDS XCH INT2, LDA I 10 /RIGHT END-PT. COM ADA I 7 /LEFT END-PT. STC D /VOLT. DIFF. SET I 12 -10 /8 INTERIOR PTS. /1ST PT. 1/16 THRU INTERVAL, 2ND 3/16, /ETC.,...,8TH 15/16 THRU INTERVAL LDA I 1 /NUMERATOR=1,3 STA /5,...,15 NUM MUL I D, 0 SCR 4 /DIV 16 COM ADA 7 /=INTERPOLATED STC 17 /VOLTAGE ADDRESS XSK I 6 /NEXT INTER.XCH ADD 6 STA 17 LDA I 2 ADM I NUM, 0 /NEXT NUMERATOR XSK I 12 /ANOTHER PT.? JMP D-1 XSK I 11 /ANOTHER INTERV? JMP INT2 /NOW GO THRU AND FILL IN REMAINING /VOLTAGE ADDRESSES: ENTRIES NOT YET SET /HAVE VALUE=-1; FILL THEM WITH NEAREST /(I.E., LEFTMOST) DEFINED CHAR POSN. SET I 17 2377 /TOP ENTRY CLR STC XCH /START XCH=0 INT3, LDA 17 APO I /ALREADY FILLED? JMP XCH+2 />0: YES LDA I /<0:NO, FILL IT XCH, 0 /W/ CURRENT XCH STA 17 STC XCH /=CURRENT XCH LDA I -1 ADM 17 /NEXT ENTRY ADDR XSK 17 /LAST ENTRY=2000 JMP INT3 /DONE FILLING IN TABLE. ADD C1000 /POINT OF FIXATION. USES CRUDE TABLE /LOOKUP TO ESTIMATE POINT EVERY 200 MSEC /IF LEFT OF LEFTMOST POINT, PUTS IT /AT LEFTMOST POINT (AND SAME FOR RIGHT) STEP3, SNS 3 JMP .-1 SAM 10 STC HFIX /OBS. VOLTS ADD HVOLTS /LEFTMOST VALUE COM ADD HFIX APO I JMP LEFT /AT LEFTMOST ADD HVOLTS /RESTORE HFIX COM ADD HVOLTS+12 /RIGHTMOST VALUE APO I JMP RIGHT /AT RIGHTMOST /NOT AN EXTREME VALUE: FIND PAIR OF /POINT-VALUES BETWEEN WHICH HFIX LIES SET I 10 HVOLTS LOOP, LDA I 10 /NEXT POINT-VALU COM ADA I HFIX, 0 APO JMP LOOP /RIGHT OF CUR.PT /BETWEEN CURRENT POINT-VALUE AND /PRECEDING (TO LEFT) POINT-VALUE /INTERPOLATE TO NEAREST QUARTER VALUE LDA 10 ADA I -1 STC 7 /AD PRECEDING PT ADA 10 COM ADA 7 /=1/4 VOLT SPAN ADA I 2 /BETWEEN POINTS SCR 2 COM STC HQUART /SAVE -1/4 SPAN LDA I -HVOLTS ADD 7 /POINTS FROM LEF MUL DPOINT ADA /H.C.OF POINT X0, 0 /PRECEDING HFIX STC XFIX LOOP2, ADD HFIX COM ADA 7 ADA I HQUART, 0 APO I SKP /STILL NOT THERE JMP SPOT /HAVE NEAREST STC N ADD XFIX ADA I C12, 12 /QUARTER SPACING STC XFIX ADD N JMP HQUART-1 /TRY NEXT QUARTE /IF HERE, PUT XFIX AT LEFTMOST POINT LEFT, LDA XLEFT STC XFIX JMP SPOT /IF HERE, PUT XFIX AT RIGHTMOST POINT RIGHT, LDA DPOINT MUL I 5 ADD X0 STC XFIX SPOT, LDA I -14 /CENTER BAR ADD XFIX /AT XFIX STC XFIX /NOW DISPLAY BAR AND 11 "X"S ONCE EVERY /10 MSECS FOR 200 MSECS, THEN RESAMPLE SET I 13 DTFIX, -24 /20 10-MSEC CYCS SHOW, JMP CLOCK SET I 1 XFIX, 0 LDA Y SET I 11 -7 /SHOW BAR DSC I 7777 XSK I 11 JMP .-3 SET 1 XLEFT SET I 11 -13 /11 POINTS DSC I FIXPAT, 1463 DSC I 6314 LDA 1 ADA I DX, 40 /DPOINT-10 STC 1 /H.C. NEXT POINT ADD Y XSK I 11 /ANOTHER POINT? JMP FIXPAT-1 /DONE WITH DISPLAY. WAIT FOR 10 MSEC /TIMEOUT, THEN REPEAT UP TO 200 MSECS JMP DELAY XSK I 13 /ANOTHER CYCLE? JMP SHOW /ANOTHER CYCLE JMP STEP3 /NEXT SAMPLE / /END OF MAINLINE PROGRAM / /SUBR STARTS MSEC CLOCK CLOCK, PDP PMODE CLA CLLR TAD C2100 CLLR CLA LINC LMODE JMP / /SUBR WAITS FOR 10-MSEC TIMEOUT DELAY, PDP PMODE CLCA TAD MWAIT SPA CLA JMP .-3 CLLR LINC LMODE JMP / PMODE C4100, 4100 MWAIT, -12 LMODE / /SUBR TYPES OUT AC TYPE, PDP PMODE TLS TSF JMP .-1 LINC LMODE JMP / /STORAGE TABLE FOR 11 VOLTAGE VALUES HVOLTS, 0 0 0 0 0 0 0 0 0 0 0