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