Directory of image this file is from
This file as a plain text file
*20 LMODE /EXPERIMENTAL REPLAY PROGRAM FOR /EXPERIMENTS RUN BY X-READ3A PROGRAM. /SW 5 UP: RUNS AT SPEED DETERMINED /FROM A-D KNOB 4 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. /MAINTAIN CURRENT FIXATION UNLESS TIMER /EXPIRES, IN WHICH CASE DATA FOR NEXT /FIXATION IS READ IN FROM DATA TAPE. *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 RESTOR /IGNORE-SPURIOUS XSK I 10 /ANOTHER "BEAT" JMP RESTOR /CURRENT FIXATION HAS EXPIRED: GET NEXT /(X,Y) (D,S) PAIR FROM DATA FILE - /UNLESS SW 1 UP, IN WHICH CASE CURRENT /FIXATION HELD / SNS 1 JMP SKIPIT SET I 10 -1 JMP RESTOR SKIPIT, JMP FETCH SAE I 7777 /END OF PAGE? SKP JMP PAGDON STC ADD BCL I 7700 STC YFIX ADD BCL I 77 ROL 6 STC XFIX JMP FETCH SAE I 7777 SKP JMP PAGDON /END OF PAGE AZE I /0=EDITED OUT JMP SKIPIT STC ADD BCL I 7000 STC 10 /BEATS/FIX ADD BCL I 777 ROL 3 ADD 10 COM STC 10 /SHOW NEXT FIXATION FOR D+S COUNTS /AFTER SETTING UP NEW DISPLAY CONTROL /AND RESTARTING DISPLAY. FIRST GET BEAT /"TIME" FROM KNOB 4 IF SW 0 UP LDA I -1500 SNS I 0 SAM 4 IOB 6133 /CLAB=BEAT TIME JMP RESET /ARRIVES HERE IF CURRENT DISPLAY RESUMED / 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: /RESET LINE CONTROL WORD ARRAYS AND /RESTART NEW DISPLAY! / RESET, 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 I YFIX, 0 ADD ADLIN2 /=AD-1 WINDOW STC 4 /LINE LDA I XFIX, 0 ADA I POSN, 0 /NO. CHARS TO COM /LEFT OF WINDOW APO I /TOO FAR LEFT? JMP NOROOM STA I 4 /=CONTROL WORD LDA I MWIDE, -10 /-WINDOW WIDTH STC MWIDTH JMP DISPLA /START NEW DISPL NOROOM, ADD MWIDE /DECREASE WINDOW AZE I JMP .+3 APO JMP .+3 LDA I -1 /MIN W=1 STC MWIDTH C17, COM STA I 4 /CONTROL WORD=-0 JMP DISPLA / /END OF PAGE: PAUSE IF SW 5 UP, ELSE /GO ON TO NEXT PAGE / PAGDON, SNS 5 HLT /NOW CHECK IF THERE"S MORE OF TEXT. LDA I DLINES, 0 ADD MLINES /LAST PAGE DONE AZE /IF MLINES<LINES JMP MONIT /END 0F EXPT! /STILL LAST PAGE? FETCH NEXT PAGE TO SEE LDA I ENDPAG, 0 /PTR END CURR PG STC PAGEPT JMP SETPAG /GET NEXT PAGE ADD MLINES /0 LINES:DONE AZE I JMP MONIT JMP RUNPAG /DO NEXT PAGE / /SUBR RETRIEVES NEXT WORD FROM DATA FILE /INTO AC, BUFFERING IN MORE DATA OFF /TAPE 1 AS NEEDED. / FETCH, DATA SET 11 0 /RJ LDA I 13 STC WORD ADD 13 BSE I 7400 /WILL BE 7777 AZE /IF END MBLK JMP 11 /RJ /END MBLK: READ IT UNIT 1 & INCR DATBLK STD /HAVE TIMING ERR JMP ERROR /IF IN PROGRESS ADD 13 /CONVERT TO ABS. BCL I /ADDR.BEGIN.MBLK 377 /=3000 OR 3400 TMA LDA I 30 /ENABLE EX AD & AXO /NO PAUSE OPTION LDA DATBLK STC .+2 RDC U 0 XSK 13 /IF LAST MBLK OF JMP .+3 /BUFFER, RESET SET I 13 /13 TO AD-1 1ST 2777 /BUFFER MBLK ADD ONE ADM DATBLK /INCR.FOR NEXT SAE I 1000 SKP JMP ERROR /NO WRAP-AROUND LDA I WORD, 0 /RETURN VALUE JMP 11 /RJ / /SUBROUTINE DISPLAYS PAGE OF TEXT = /"MLINES" OF TEXT, USING THE ARRAY OF /TEXT-LINE POINTERS AND LINE CONTROL /WORD ARRAYS.CONTROL<+0 MEANS THAT /(UP TO) -CONTROL CHARS SHOWN LEFT OF /WINDOW (IF ANY), FOLLOWED BY WINDOW /AND THEN (IF ANY) REMAINING CHARS IN /PERIPHERAL DISPLAY CONDITION. /ALWAYS BEGINS DISPLAYING LINE NO. L, /WHERE L=MIN(YFIX,-1-MLINES) / SHPAGE, LDA 0 STC PGEXIT DTEXT /TEXT,PWS,CONTRL ADD MLINES ADD YFIX APO I JMP TOOLOW /BEGIN BOTTOM LN AZE I /-0: " " " JMP TOOLOW LDA YFIX /BEGIN "YFIX" LN JMP TOOLOW+4 TOOLOW, LDA I 1 ADD MLINES COM C4000, STC SET I 6 MLINES, -10 /-LINES TO SHOW ADD /STARTING LINE ADD ADLIN1 STC 3 /AD-1 ST. LIN AD ADD ADD ADLIN2 STC 4 /AD-1 ST.LIN.CON ADD MUL DY ADD YTOP STC Y /INITIAL V.C. NXLINE, SET I 1 C776, 776 /=-2 HC CHAN 1 LDA I 3 AZE I /LINAD=0:CONT ON JMP WRAPUP /TOP OF DISPLAY STC 7 /AD-1/2 LINE TXT LDA I 4 /LINE C-WORD APO JMP SHOLIN /<0: SHOW LINE JMP ERROR /NEVER? CHNXLN, LDA I DY, -40 /LINE SPACING ADM Y /Y FOR NEXT LINE XSK I 6 /ANOTHER LINE? JMP NXLINE PGEXIT, HLT /RETURN / /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 ADD MASKPW STA PATRN+2076 /MASK FOR BLANKS NXCHP, LDH I 7 /NEXT PERIPH CHR SHD I BLKDEF, 4000 JMP BLANK SHD I 4300 /END OF LINE? JMP CHNXLN /PERDEF=-32:ONLY NON-LETTER /DIGIT SHOWN /IN PERIPHERY;PERDEF=0,ALL CHARS SHOWN ADA I PERDEF, -32 APO JMP MASKCH /LETTER: MASK IT LDH 7 ADA I -57 APO JMP ONPER ADA I -12 APO JMP MASKCH /DIGIT: MASK IT ONPER, 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, 7777 LDA I 5 ADM ONE, 1 /SKIP 2ND PW XSK I 5 /ANOTHER P-CHAR? JMP NXCHP /DONE WITH LEFT PERIPHERY. NOW DO WINDOW /AFTER DISPLAYING FIXATION DOTS WINDOW, SET I 5 MWIDTH, -0 /WIND WIDTH SET 2 /HOLD HC 1 LDA I XFIX, 0 MUL I 11 ADD C4000 /CHAN 2 STC 1 ADD Y ADA I C20, 20 DSC I 77 SET 1 2 /RESTORE HC CLR STA PATRN+2076 /RESTORE BLANK 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 CLR JMP NXCHP-3 / /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 / WRAPUP, SET I 3 ADLIN1, LINADS+1777 SET I 4 ADLIN2, LINCON+1777 LDA I YTOP, 361 /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 SETRET DTEXT ADD DLINES /NO. TO DISPLAY COM STA MLINES STC 6 SET I 7 PAGEPT, 6001 /PTR START PAGE SET I 3 LINADS+1777 /LINE POINTERS SET I 4 LINCON+1777 /LINE CONTRL WDS CODLIN, JMP NXTCH /SUBR GETS NX CH JMP SETPAG+4 /RET.HERE BF FLO AZE I /" " AC=NEXT CH. JMP ENDFIL /END OF FILE SAE I 57 /"/" AT START JMP ERROR /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 / ENDFIL, ADD 6 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 / D, 0 /TEMP / /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. /JMP-TO-PC INSTR. IN AC. / ERROR, LDA 0 / /SYSTEM MONITOR HERE. HALTS AND WHEN /STARTED, RUNS NEW JOB / MONIT, HLT CLR RSW /GET DATA FILE STC DATBLK AXO DATA ADD DATBLK ADA I 3000 STC .+2 RDC U /INPUT IST DATA 0 /BLOCK INTO 3000 ADD ONE ADM DATBLK /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 SET PARAMETER VALUES FOR NEXT /JOB FROM HEADER ON DATA FILE SET I 13 3000 /DATA FILE SET I 12 PGCODE SET I 6 -13 LDA I 13 STA I 12 XSK I 6 JMP .-3 LDA TOPLIN MUL I M20, -20 ADA I C361, 361 STC YTOP ADD C40 /ENABLE 1/2-SIZE C4, ESF /NO TTY INTERUPT JMP READ / /THIS SECTION "RUNS" PAGE DISPLAY, /FIRST GET PAGE PARAMETERS / RUNPAG, JMP FETCH /PAGE=0: DONE AZE I HLT /SHOULDNT BE JMP FETCH COM STC MLINES JMP FETCH COM STC MWIDE JMP FETCH STC POSN JMP FETCH STC 1 ADD 1 BCL I 3777 STC BLKDEF ADD 1 APO I COM STC PERDEF /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 DISPLA, IOB 6001 /ION JMP SHPAGE JMP .-1 /KEEP DISPLAYING / /THIS SECTION EXECUTES "READ" TASK. / READ, LDA TEXBLK JMP NEWTEX /FETCH TEXT JMP RUNPAG /RUN 1ST PAGE / / /3000-3777 THIS LDF USED FOR DATA BUFFER / /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