Directory of image this file is from
This file as a plain text file
*20
LMODE
/CORE MAP: MAINLINE PROGRAM IN LIF 0.
/TELETYPE I/O SUBROUTINES IN LIF 1 UP TO
/2777. 2-BLOCK DATA BUFFER IN LDF 1 3000
/TO 3777. 3-BLOCK TEXT BUFFER IN LDF 2
/4000-5377. DISPLAY PATTERN WORDS IN LDF
/2 5400-5577. DISPLAY CONTROL CONSTANTS
/IN LDF 2 5600-5777. EYE-POSITION LOOKUP
/TABLES IN LDF 3: Y TABLES 6000-6377;
/X-TABLES 6400-6777. CALIBRATION WORK
/AREA ABOVE TABLES IN LDF 3.
DATA=LDF 1
DTEXT=LDF 2
TABLES=LDF 3
PROG0=LIF 0
PROG1=LIF 1
YSAMP=LSW
XSAMP=RSW
/FOR DEBUGGING, XSAMP=RSW/SAM 4, YSAMP=
/LSW/SAM 0; FOR EXPTS, XSAMP=SAM 17,
/YSAMP=SAM 16
/
/JOB PARAMETERS STORED HERE: ARE WRITTEN
/OUT AS HEADER ON DATA FILES
SEGMNT 0
*20
PGCODE, 1111 /PROGRAM CODE
SUBSES, 0 /SUBJ.-SESS. ID
TEXTAP, 0 /SOURCE TAPE ID
TEXBLK, 0 /1ST TEXT TBLK
DATBLK, 0 /1ST DATA TBLK
TOPLIN, 0 /TOP LINE NO.
LINES, 0 /DISPLAY LINES
SPACIN, 0 /LINE SPACING
WIDTH, 0 /WINDOW WIDTH
POSN, 0 /REL. WINDOW POS
QBLK, -1 /QUESTION BLOCK
NPAGE, 0 /DISPLAY PAGE NO
/
PMODE
MDT, -144 /10 MSEC/SAMPLE
C3000, 3000
LMODE
/
/BEGINNING OF EACH JOB, PROGRAM ACCEPTS
/INPUTS FOR ABOVE PARAMETERS, EXCEPT FOR
/"PGCODE" AND "NPAGE", WHICH ARE AUTOM-
/ATICALLY SET.
/
/"SUBSES": ID FOR SUBJECT AND SESSION
/"TEXTAP": TAPE ID FOR SOURCE AND QUEST.
/"TEXBLK": STARTING TBLK FOR TEXT SOURCE
/"DATBLK": " " " DATA OUTPUT (UNIT 1)
/"TOPLIN": LINE NO. FOR UPPER DISPLAY
/ LINE: 0=TOP,...,37=BOTTOM
/"LINES" : NO. LINES DISPLAYED PER PAGE
/"SPACIN": 1=SINGLE SPACING,2=DOUBLE,ETC
/"WIDTH" : WINDOW WIDTH IN CHARS
/"POSN" : POSITION OF LEFT WINDOW EDGE
/ W/R/T FIXATION PT: -N MEANS
/ N TO LEFT,+N N TO RIGHT
/"QBLK" : QUESTION TBLK:<0=NO QUESTIONS
/
/THIS SECTION HANDLES INTERRUPTS.
/TWO POSSIBLE INTERRUPTS: ON RESP.PANEL,
/SUBJECT SIGNALS END OF PAGE/END VERIFY.
/CLOCK OVERFLOW INTERRUPT SIGNALS TIME
/TO RESAMPLE X AND Y SIGNALS AND PERFORM
/THE NECESSARY UPDATING.
*40
0 /INTERRUPT PC
STC ACSAVE /SAVE AC
/INTERRUPT LINK&MQ AREN"T SAVED!
/HOWEVER, SUBROUTINE PC=0000 MUST BE
/SAVED AND RESTORED. EACH CLOCK INTER-
/RUPT IS COUNTED BY 10&11.
ADD
STC SAVE0
IOB
6135 /CLSA
APO I /<0:CLOCK OFLOW
JMP PANEL /CHECK PANEL INT
XSK I 10 /ANOTHER SECOND?
JMP .+5
XSK I 11 /INCR SECONDS
NOP /MAX=1023 SECS.
SET I 10
-144 /100 SAMPLES/SEC
/SAMPLE Y AND X SIGNALS (A-D 16 & 17)
/COMPUTE TABLE LOOKUP FOR EACH OF THEM
TABLES /LDF FOR LOOKUP
YSAMP /GET Y-VOLTAGE
ADD C1000
SCR 2 /INTO (0,377)
ADD C2000 /INTO VOLT-ADDR.
STC 16 /Y-POINTER
XSAMP /GET X-VOLTAGE
ADD C1000
SCR 2
ADD C2400 /X VOLT-ADDR.
STC 17 /X-POINTER
/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
ADA 17
APO I
COM /GET -ABS.VAL.
ADA I /OF X-DIFF AND
XCRIT, 4 /COMPARE WITH
STC D /X-MOVE CRITERIA
/"FIXING"=0 IF SUBJECT LAST IN FIXATION
/MODE,NOT=0 IF IN MOVEMENT MODE
SAE I
FIXING, 0
JMP MOVING
ADD D />0:NO X CHANGE
APO
JMP SACCAD /NO LONGER FIXIN
/X POSITION HAS NOT CHANGED: CHECK Y
/POSITION FOR PERSISTING FIXATION
LDA I
YFIX, 0 /Y FIX. POS.
SAE 16
JMP SACCAD /Y HAS CHANGED!
/FIXATION PERSISTS: INCREMENT FIXATION
/TIMER (REGISTER 14) ONLY UP TO 777
LDA
14
SAE I
777
XSK I 14
/NOW RETURN TO DISPLAY IN PROGRESS.
RESTOR, LDA
C40, 40
BSE I
6000 /FORM RETURN JMP
STC RETURN /JUMP INTSR.
SET I 0
SAVE0, 0 /RESTORE SUBR PC
DJR /HOLD PC ON EXIT
LDA I
ACSAVE, 0 /RESTORE AC
IOB
6244 /RMF
IOB
C6001, 6001 /ION
RETURN, HLT /RETURN JUMP
/
/CONTROL ARRIVES HERE WHENEVER CHANGE IN
/X OR Y DEFINES END OF FIXATION.
/ZERO SACCADE-TIMER (REGISTER 15), SET
/"FIXING" NON-ZERO (MOVEMENT MODE),
/SAVE (XFIX,YFIX) AS DATA, AND THEN
/REDEFINE XFIX AND YFIX AND RETURN.
SACCAD, SET I 15
0 /INIT SACCADE TM
ADD C215 /WILL BE >0
STC FIXING /NON-ZERO=MOVING
ADD XFIX
ROL 6
ADD YFIX /(XFIX,YFIX)
JMP STORE /SUBR STORES WD
TABLES /LDF FOR LOOKUP
/INCREMENT SACCADE TIMER TO MAX OF 7
MORMOV, LDA
15
SAE I
7
XSK I 15
LDA 16
STC YFIX /UPDATE Y
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 AND Y SAMPLES WITHIN FIXATION CRITERI
/
MOVING, LDA I
D, 0 /<0:STILL MOVING
APO
JMP MORMOV /STILL MOVING
LDA
YFIX /X STOPPED:CHECK
SAE 16 /Y POSN.
JMP MORMOV /Y CHANGED
/END OF MOVEMENT: NEW FIXATION BEGINS.
/STORE DURATIONS OF LAST FIXATION AND OF
/SUCCEEDING SACCADE AS NEXT DATA WORD:
/BITS 0-2 SACCADE+BITS 3-11 FIXATION.
/THEN SETUP NEW DISPLAY CONTROLS.
LDA
15 /SACCADE DURATIO
ROR 3 /INTO BITS 0-2
ADD 14 /FIXATION DURAT.
JMP STORE /SAVE WORD
TABLES /LOOKUP LDF
CLR
STC FIXING /FIXATION MODE
SET I 14 /INIT FIX TIMER
1
LDA 17
STC XFIX /NEW XFIX
/WHEN NEW FIXATION POINT ESTABLISHED,
/CURRENT DISPLAY NOT COMPLETED, BUT
/RATHER RESTARTED AT "YFIX" LINE.
/NOW RESET LINE CONTROLS IN TEXT LDF.
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
MLW, 0 /NO. CHARS TO
COM /LEFT OF WINDOW
APO I /TOO FAR LEFT?
JMP NOROOM /TOO FAR LEFT
STA I 4 /=CONTROL WORD
LDA I
MWIDE, -10 /-WINDOW WIDTH
STC MWIDTH
JMP DISPLA /EXIT TO DISPLAY
NOROOM, ADD MWIDE /DECREASE WINDOW
STC MWIDTH
COM
STA I 4 /CONTROL WORD=-0
JMP DISPLA
/
/CONTROL REACHES HERE WHENEVER INTERRUPT
/OCCURS FROM RESPONSE PANEL.
/THIS SIGNALS END OF PAGE, AND TWO END-
/MARKERS (7777) ARE STORED IN DATA FILE.
/THEN THE NEXT PAGE (IF ANY) IS RUN.
/IF DURING "VERIFY", THIS SIGNALS
/PROCEED TO "READ" TASK.
/
PANEL, IOB
6311 /PANEL FLAG?
JMP RESTOR /NO:SPURIOUS
IOB
6314 /CLEAR FLAG
LDA
TBLK
SAE /IN "VERIFY" IF
CALBLK /TBLK=CALBLK
SKP
JMP READ
LDA I
7777
JMP STORE
LDA I
7777
JMP STORE
/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 MIGHT BE END OF TEXT: 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 /DTA 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 /START WRITING
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 /R.J.
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 LINE NOT
/SHOWN, BUT ITS LEFT AND RIGHT MARGINS
/ARE MARKED. CONTROL<0 (EVEN -0) MEANS
/(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 /SETUP RETURN
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 /TEMP
SET I 6
MLINES, -10 /-LINES TO SHOW
ADD /STARTING LINE
ADD ADLIN1 /=LINADS-1
STC 3 /AD-1 ST. LIN AD
C2000, ADD
ADD ADLIN2 /=LINCON-1
STC 4 /AD-1 ST.LIN.CON
ADD
MUL
DY
ADD YTOP
STC Y /STARTING Y V.C.
NXLINE, SET I 1
M2, -2 /STARTING H.C.
LDA I 3
AZE I /LINAD=0:GO TO
JMP WRAPUP /TOP OF DISPLAY
STC 7 /AD-1/2 LINE TXT
LDA I 4 /LINE C-WORD
APO
JMP SHOLIN /<0: SHOW LINE
ADD Y /=0: SHOW MARGNS
DSC I
7777 /LEFT MARGIN
SET I 1
772
DSC I
7777 /RIGHT MARGIN
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
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.
/
/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 /R.J.
DTEXT /TEXT,PWS,CTRLS
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 /ENTRY END BUFFR
AZE I
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 /6>0:QUEST.-MODE
JMP ERROR
AZE I /MUST HAVE>0 LNS
JMP ERROR
COM
STC MLINES /MLINES=-6
JMP NXTCH
JMP SETPAG+4 /PUSH-DOWN BUFFR
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,IN WHICH
/CASE QUESTIONS DONE.)
/
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, DJR /PROTECT RJ
LDA
7
SAE I
7377 /7377=END BUFFER
JMP NXTRET+1 /NOT END
JMP .+1 /DISABLE DJR
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, HLT /RETURN
XSK I 0 /RETURN CALL+2
LDH I 7 /WITH CHAR IN AC
JMP
/
/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
/
/SUBR POSITIONS TAPE UNIT 0 AT TBLK=AC
/WITH "NO PAUSE" OPTION
/
TAPPOS, STC TAPRET-1 /2ND LTAPE INSTR
ADD
STC TAPRET /RJ
STD
JMP .-1 /WAIT IF BUSY
LDA I
10
AXO /NO PAUSE
CHK
0
TAPRET, HLT /RJ,NO PAUSE
/
/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
LDA I
CALBLK, 270 /GET ADJ&CALIBR&
JMP TAPPOS /VFY TEXTS NO PS
/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
C361, 361
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 C361 /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
ADD CALBLK /READ POS"NED
JMP NEWTEX /ADJ/CAL/VER TXT
ADD TEXBLK /POSN TAPE AT
JMP TAPPOS /TEXT, NO PAUSE
SNS 5
JMP CALIBR /OFF:TO CALIBRAT
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 /KEEP DISPLAYING
JMP .-2 /UNTIL SW 5 OFF
/
/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 D /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
D
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 D
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 VOLT-ADR
STC 1
ADD XFIX
STA 1 /STORE X-POSN
ADA I
10
STC XFIX /NEXT X-POSN
XSK I 15 /ANOTHER CAL PT?
JMP FILLX
/NOW FILL IN EACH OF THE 7 INTERVALS
/BETWEEN SUCCESSIVE CALIB. PTS. WITH 8
/LINEARLY INTERPOLATED POINTS.
SET I 17
3377
SET I 10
3400
SET I 11
-7
SET I 6
0 /HOLDS X-POSN
INTERX, LDA I 10 /FORM DIFF TWEEN
COM /NEXT PAIR PTS
ADA I 17 /MUST BE>0!!
APO
JMP ERROR
AZE I
JMP ERROR /MUST BE>0!
STC D
ADD M10
STC 12 /8 INTERIOR PTS
/1ST PT. 1/16 THRU INTERVAL, 2ND 3/16,
/...,8TH 15/16 THRU INTERVAL.
ADD ONE
STA
XFIX /NUM OF ABOVE/16
INTX1, MUL
D
SCR 4 /DIV 16
COM
ADA 17 /INTERP. VOLT AD
STC 1
XSK I 6 /NEXT INT. X-POS
ADD 6
STA 1
LDA I
2
ADM
XFIX /NEXT NUMERATOR
XSK I 12 /ANOTHER INT.PT?
JMP INTX1 /NEXT INT. PT.
XSK I 11 /ANOTHER INTRVL?
JMP INTERX /NEXT INTERVAL
/NOW GO THRU AND FILL IN REMAINING
/VOLTAGE ADDRESSES: ENTRIES NOT YET SET
/=-1; FILL THEM WITH NEAREST (I.E.,
/LEFTMOST) DEFINED X-POSN. SINCE TOP OF
/VOLTAGE ARRAY=2777 REPRESENTS MAX VOLTS
/, WHICH IS LEFTMOST X-P0SN=0, MUST WORK
/DOWN THRU ARRAY
SET I 17
2777
CLR
STC XFIX /RUNNING X-POSN
INTX2, LDA 17
APO I /ALREADY FILLED?
JMP .+4 /YES: SKIP
LDA
XFIX
STA 17 /FILL WITH CUR X
STC XFIX /RESET CUR X
ADD M1
ADM
17 /DECREMENT V-ADR
SAE I
2377 /LAST VOLT-AD?
JMP INTX2
/DONE FILLING IN X-LOOKUP TABLE.
/NOW FILL IN Y-LOOKUP TABLE, CREATING
/MATRIX IN 2000-2377 IN TABLES LDF:
/Y-VOLTAGE V SHOULD CORRESPOND TO LINE
/NO. L IN (0,LINES-1) AT 2000+V.
/
/ASSUMES LOW VOLTAGE - LOW LINE NO.
SET I 16
2777 /AD-1 Y-AVGS
SET I 10
3000
SET I 6 /HOLDS LN NO.
0
SET I 17
3777 /AD-1 2000
SET 15
MLINES
SNS 0
JMP .+5
SET I 1
YLABEL-4000
PROG1 /"Y-VOLTS:"
JMP MESSAG /IF SW 0 UP
/FILL VOLTAGE ADDRESSES FROM 1/2 LAST
/INTERVAL TO 1/2 NEXT INTERVAL WITH
/CURRENT LINE NO.
INTERY, LDA I 16
SNS 0
JMP .+3
PROG1
JMP DECPUT /TYPE IF SW 0 UP
XSK I 15 /LAST INTERVAL?
JMP .+4
LDA I
2377
JMP FILLY-1 /FILL TO END
LDA 16
COM
ADA I 10 /VOLT. DIFF.
APO
JMP ERROR /MUST BE>0
SCR 1 /VOLT.DIF./2
AZE I
JMP ERROR
ADD C2000 /=ADR. TOP VOLT.
ADA 16
STC VSTOP /FOR CURRENT LN
FILLY, LDA
6 /CURRENT LN NO.
STA I 17 /INTO NEXT V-AD
LDA
17
SAE I
VSTOP, 0 /LIMIT FOR CUR L
JMP FILLY /KEEP GOING
XSK I 6 /NEXT LINE NO.
XSK 15 /DONE LAST ONE?
JMP INTERY /DO NEXT ONE.
/
/END CALIBRATION SECTION. GO TO "VERIFY"
/
/"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
-5 /USE 5-CHAR
STC MWIDE /WINDOW CENTERED
ADD M2 /ON FIXATION PT.
STC MLW
ADD C4 /FIXING NON-0
JMP INIT /START DISPLAY
/
/THIS SECTION EXECUTES "READ" TASK.
/CONTROL REACHES HERE ONLY FROM PANEL
/INTERRUPT DURING "VERIFY" TASK.
/
READ, LDA I
STA I 13 /DISINHIBIT
STC STORE+1 /DATA WRITING
STC 11
SET I 10 /INITIALIZE
-144 /TIMERS 10,11
ADD POSN
STC MLW
ADD WIDTH
COM
STC MWIDE
STC NPAGE /INIT NPAGE=0
ADD TEXBLK
JMP NEWTEX /FETCH TEXT
/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
-13
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 TWO 7777"S. IF NO
/TEST, WRITE A THIRD 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 1
LABEL2-4000
PROG1
JMP MESSAG /"TIME"
ADD 11
PROG1
JMP DECPUT /N SECS.
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 /N LINES READ
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
-20
STC DY /SINGLE SPACING
STC PERDEF /ALL CHARS SHOWN
ADD C361
STC YTOP /TOP DISPLAY
STC YFIX /NO WRAP-UP
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
SKP /NOY 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 /WAIT FOR TAPE
JMP .-1
CLR
JMP WRITE /WRITE IT
WDONE, STD
JMP .-1 /WAIT FINAL BLOC
/FINALLY TYPE OUT NO QUESTIONS/NO.CORREC
SET I 1
LABEL3-4000
/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!!
/
/FOLLOWING SUBROUTINES AND OUTPUT LABELS
/FIT INTO PROG1 (LIF 1) BELOW THE 2-BLOK
/DATA OUTPUT BUFFER
/
SEGMNT 1
*20
/SUBR TYPES AC AS SIGNED DECIMAL INTEGER
/IN FORMAT "="XXX ". ENTRY HERE BUT
/JUMPS TO SEGMENT 1 BELOW TEXT BUFFER.
/
DECPUT, STC 4 /SAVE ARG
ADD
STC DECRET /RET AD
LDA I
275
JMP TYPE /"="
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
LDA I
240
JMP TYPE /FINAL SPACE
PROG0 /RETURN IN PROG0
DECRET, HLT /R.J.
/
/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.
STC 4 /BUILDS VALUE
SET I 2
-2 /INDEXES SIGN
SET I 3
-4 /INDEXES DIGITS
NEXDIG, IOB
6031 /KSF
JMP .-2
IOB
6036 /KRB
SAE I
C215, 215 /CR?
JMP GETRET+1
LDA
4 /NO:CHECK FOR
XSK I 2 /SKIP ON SIGN
SKP
COM /NEGATE
PROG0 /RETURN PROG0
GETRET, HLT /R.J.
NOTYET, STC 5 /SAVE CHAR
ADD 5
JMP TYPE /ECHO
ADD 5
SAE I
C255, 255 /="-"?
JMP .+4 /NO
XSK I 2 /SECOND SIGN?
JMP NEXDIG /YES:SIGN SET
JMP ENTERR /YES:ERROR
XSK I 3 /TOO MANY DIGITS
SKP /NO
JMP ENTERR /YES:ERROR
ADA I /IS CHAR DIGIT?
-257
APO
JMP ENTERR /NON-DIGIT
ADA I
MD10, -12 /DIGIT?
APO I
JMP ENTERR /NON-DIGIT
ADD C11 /RESTORE DIGIT
AZE I
C11, CLR /-0 TO +0
STC 5
ADD 4
MUL I
D10, 12 /DEC. SHIFT LEFT
ADD 5
STC 4
JMP NEXDIG
/CONTROL ARRIVES HERE WHEN TYPED ENTRY
/FOR PARAMETER IS ILLEGAL: >1"-",>3 DIGS
/OR ILLEGAL CHAR. TYPES "?" : TRY AGAIN!
/
ENTERR, LDA I
277
JMP TYPE /"?"
PROG0 /TRY AGAIN AT
JMP TYVAL /TYVAL IN PROG0
/
/SUBR TYPES OUT MESSAGE FROM PACKED
/ASCII CODE - 43 GENERATES CR&LF, AND 00
/TERMINATES OUTPUT. ADDRESS OF SOURCE
/POINTED (+1/2) BY 1 FROM PROG0;HENCE
/MUST BE READ AND RETURNED THERE.
/
MESSAG, LDA
0
STC MESRET /R.J.
PDP
PMODE
TAD 1 /PASS PROG0(1)
LINC /W/O DIFF LDF
LMODE
STC 1
NXCHAR, LDH I 1
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 1 /PASS PTR BACK
PDP /TO 1 IN PROG0
PMODE
DCA 1
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
/
TYPE, PDP
PMODE
TLS
TSF
JMP .-1
CLA
LINC
LMODE
JMP /RETURN
/
/TEXT (PACKED ASCII) PARAMETER LABELS
/
ERLABL, 4343
TEXT *ERROR*
LABEL1, 4343
TEXT *SUB-SES ID*
0043
TEXT *TEXT TAPE *
0043
TEXT *TEXT BLOCK*
0043
TEXT *DATA BLOCK*
0043
TEXT *TOP LINE *
0043
TEXT *NO. LINES *
0043
TEXT *SPACING *
0043
TEXT *WINDOW *
0043
TEXT *POSITION *
0043
TEXT *QUES-BLOCK*
0043
LABEL2, 4343
TEXT *TIME*
0040
TEXT *SECS. FOR*
TEXT *LINE*
2343 /*S*,CR
TEXT *COMPREHENSION*
LABEL3, TEXT *OF *
XLABEL, 4343
TEXT *X-VOLTS: *
YLABEL, 4343
TEXT *Y-VOLTS: *
/
/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
2000 /^
2077
3410 /BACK ARROW
1010
0 /BLANK
0
7500 /!
0
6006 /"
60
3614 /NUMBER SIGN
1436
7721 /DOLLAR SIGN
4677
1446 /%
6130
5166 /&
0523
500 /APOSTROPHY
6
4163 /(
0
0 /)
6341
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 /<
0042
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 MAORDS: 16 MAX.
LINCON, 0