Directory of image this file is from
This file as a plain text file
*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 XFIX<LINEXL)
LDA I
LNFLAG, 0
AZE I
JMP RESET /SAME LINE
LDA
XFIX
ADA I
MXL, 0
APO I
JMP RESET
/NEXT LINE (UNLESS ON LAST): YFIX=YFIX+1
LDA
YFIX
ADD ONE
SAE
LINES
SKP
JMP RESET /LAST LN: SKIP
STC YFIX
STC LNFLAG /CLR IF INC YFIX
JMP SETXR /SUBR RESETS MXR
/RESET LINE CONTROL WORD ARRAYS
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
YFIX
ADD ADLIN2 /=AD-1 WINDOW
STC 4 /LINE
ADD XFIX
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
/
/SUBR SETS UP RETURN SWEEP DETECTORS FOR
/LINE HAVING D CHARS. MXR=-D+LINEXR &
/MXL=-LINEXL IF LINEXR+LINEXL+8<D;ELSE
/MXR=-3/4*D-1 & MXL=-D/4.
/
SETXR, DJR /PROTECT RJ
LDA
YFIX
ADD ADLIN1
STC 1 /AD-1 Y LINE PTR
DTEXT
CLR /CLR LINK
LDA I 1
COM
ADA I 1
ROL I 1 /NO CHARS/LINE
STC 2
ADD LINEXR
ADD LINEXL
ADD C10
COM
ADD 2
APO I
JMP WIDLIN
LDA
2
SCR 2
ADD ONE
COM
STC MXL
ADD 2
SCR 2
COM
ADD 2
COM
JMP .+10 /USE UP DJR
WIDLIN, LDA
LINEXL
COM
STC MXL
ADD 2
COM
ADD LINEXR
STC MXR
JMP
/
/CONTROL REACHES HERE WHENEVER INTERRUPT
/OCCURS FROM RESPONSE PANEL. IF TBLK=
/CALBLK, MEANS END "VERIFY"-GO TO "READ
/ELSE, ALREADY IN "READ": END OF PAGE IF
/LEFT BUTTON, SHIFT UP LINE IF RIGHT
/
PANEL, IOB
6311 /PANEL FLAG?
JMP ERROR /NO:SPURIOUS
/RECORD CURRENT FIX DATA
LDA
FIXING
AZE
JMP .+7
ADD XFIX
ROL 6
ADD YFIX
JMP STORE
CLR
JMP .+4
LDA
15
ROR 3
ADD 14
JMP STORE
CLR
IOB
6316 /READ&CLR PANEL
SHD I
0 /LEFT KEY?
JMP NUPAGE
/SHIFT UP LINE: Y=MAX(0,Y-1)
LDA
YFIX
ADD M1
APO
CLR
STC YFIX
JMP SETXR /RESET MXR
JMP RESET /PREPARE NEW FIX
/HERE IF LEFT KEY: UNLESS TBLK=CALBLK,
/SIGNALS END-PAGE
NUPAGE, LDA
TBLK
SAE
CALBLK
SKP
JMP READ /END "VERIFY"
LDA I
7777
JMP STORE /PAGE END-MARKER
/NOW CHECK IF THERE"S MORE OF TEXT.
LDA I
DLINES, 0
ADD MLINES /LAST PAGE DONE
AZE /IF MLINES<LINES
JMP QUESTN /DO QUESTIONS
/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 QUESTN /DONE!DO QUESTNS
JMP RUNPAG /DO NEXT PAGE
/
/SUBR STORES AC VIA 13 INTO DATA BUFFER;
/WHENEVER END OF MBLK REACHED, ITS
/WRITTEN OUT VIA THE "NO PAUSE" AXO OPT.
/
STORE, DATA /DATA FILE LDF
STA I 13 /=JMP IF INHIBIT
LDA
13
BSE I
7400 /WILL BE 7777
AZE /IFF END MBLK
JMP /NOT END:RETURN
/END MBLK: WRITE IT UNIT 1 & INCR DATBLK
STD /HAVE TIMING ERR
JMP ERROR /IF IN PROGRESS
WRITE, 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
WRC U
0
ADD /SAVE RET JMP
STC STORET
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
STORET, HLT /RJ
JMP ERROR /NO WRITE-AROUND
/
/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
XFIX
MUL I
11
ADD C4000 /CHAN 2
STC 1
ADD Y
ADD C20
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.
/
/QUESTION MODE:
/WHEN DLINES INITIALIZED=-0 (THEN 6
/COUNTS LINES). END OF TEXT FOR EACH
/QUESTION SIGNALLED BY NON-"/" AT LINE
/START, FOLLOWED BY ANSWER, THEN CR.
/
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
SHD I
5700 /START OF LINE?
JMP NEWLN
/LINE DOESN"T BEGIN WITH "/": SHOULD BE
/QUESTION MODE. IF SO (6>0),
/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 /0<LINES<17
JMP ERROR
ADA I
C20, 20
APO
JMP ERROR
STC DLINES
ADD C20-1
STC PERDEF-1 /PERDEF CHECK ON
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<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