Directory of image this file is from
This file as a plain text file
*20
LMODE
DATA=LDF 3 /LDF FOR DATA
TABLES=LDF 2 /LOOKUP LDF
DTEXT=LDF 1 /TEXT BUF LDF
SEGMNT 0
/JOB PARAMETERS STORED HERE: ARE WRITTEN
/OUT AS HEADER ON DATA FILES
*20
PGCODE, 1111 /PROGRAM CODE
JOB, 0 /JOB CONTROL WD
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
MLW, 0 /REL. WIND.POSN.
NPAGE, 0 /DISPLAY PAGE NO
/
PMODE
MDT, -144 /10 MSEC/SAMPLE
C2720, 2720
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
/"MLW" : POSITION OF LEFT WINDOW EDGE
/ W/R/T FIXATION PT: -N MEANS
/ N TO LEFT,+N N TO RIGHT
/
/NOTE THAT (LINES-1)*SPACIN+TOPLIN<40 OC
/
/THIS SECTION HANDLES INTERRUPTS.
/TWO POSSIBLE INTERRUPTS: ON SCHMIDT
/TRIGGER, SUBJECT SIGNALS FROM PULSE BOX
/SIGNAL END OF READING FOR PAGE OR
/END OF FIXATION DURING CALIBRATION.
/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
ADD
STC SAVE0
IOB
6135 /CLSA
APO I /<0:CLOCK OFLOW
JMP TRIGGR />0:PULSE I"RUPT
/SAMPLE Y AND X SIGNALS (A-D 16 & 17)
/COMPUTE TABLE LOOKUP FOR EACH OF THEM
TABLES /LDF FOR LOOKUP
SAM 16 /Y SIGNAL
ADA I
C1000, 1000 /MAKE POS
SCR 2 /SCALE=(0,377)
ADA I
2000 /Y TABLE IN LDF
STC 16 /LOOKUP ADDRESS
SAM 17 /X SIGNAL
ADD C1000
SCR 2 /(0,377)
ADA I
2400 /LDF + 400
STC 17 /LOOKUP ADDRESS
/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 MAINLINE DISPLAY
RESTOR, LDA
40
BSE I
C6000, 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
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
/DON"T NEED TO REDEFINE YFIX, SINCE IT
/MUST BE IDENTICAL FOR NEW FIXATION.
/NOW REDEFINE DISPLAY CONTROL WORDS.
SET I 4
LINCON-1
SET 6
MLINES
ADD C7000 /EACH LINE SET
STA I 4 /TO ALL PERIPH.
XSK I 6
JMP .-2
LDA 16 /16=YFIX
ADD ADLIN2 /=AD-1 WINDOW
STC 4 /LINE
ADD XFIX
ADD MLW /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
/WHEN NEW FIXATION POINT ESTABLISHED,
/THE ABOVE EXIT IS DIRECTLY TO THE
/DISPLAY ROUTINE, SO THAT REFRESHING MAY
/BEGIN ON THE NEW WINDOW LINE, RATHER
/THAN CONTINUING FROM THE INTERRUPT SPOT
/
NOROOM, ADD MWIDE /DECREASE WINDOW
STC MWIDTH
COM
STA I 4 /CONTROL WORD=-0
JMP DISPLA
/
/CONTROL REACHES HERE WHENEVER INTERRUPT
/OCCURS ON SCHMIDT TRIGGER 1 (I.E.,
/POSITIVE PULSE). IF DURING READING,
/THIS SIGNALS END OF PAGE, AND ANY DATA
/STORED BUT NOT YET WRITTEN OUT BY THE
/OUTPUT BUFFERING ROUTINES IS OUTPUT;
/THEN THE NEXT PAGE (IF ANY) IS RUN.
/IF DURING CALIBRATION (SW 0 UP), PULSE
/MEANS SAMPLE CHANNELS FOR CALIB POINT.
/
TRIGGR, BCL I
7737 /SAVE BIT 6
AZE I /EVENT 1?
JMP RESTOR /SPURIOUS INTER.
SNS I 0 /READING OR CALI
JMP EXCALB /CALIBRATION
/MUST BE END OF PAGE: SAVE TWO 7777"S
/AS END-MARKERS.
LDA I
7777
JMP STORE
LDA I
7777
JMP STORE
/NORMALLY HAVE CURRENT DATA BLOCK TO
/WRITE OUT, UNLESS THE END-MARK (7777)
/HAPPENED TO END AN MBLK, IN WHICH CASE
/BLOCK WILL HAVE BEEN WRITTEN ALREADY.
/RETURN FROM ABOVE CALL TO "STORE" WILL
/HAVE AC=DATBLK>0 IF SO WRITTEN, ELSE<0
APO I
JMP EPAGE /ALREADY WRITTEN
LDA
13
BCL I
6377 /GET MBLK 1ST AD
ADD C6000 /ABS WRITE ADDR
STD /WAIT FOR TAPE
JMP .-1
JMP WRITE /ENTRY IN "STORE
/RETURNS WHEN OUTPUT STARTED (NO PAUSE).
/NOW CHECK IF THERE"S MORE OF TEXT.
EPAGE, LDA
LINES
ADD MLINES /LAST PAGE DONE
AZE I /IF MLINES<LINES
JMP NEXPAG /DO NEXT PAGE
/
/NORMALLY QUESTION-RUNNING ROUTINE FITS
/HERE: TEMPORARY RETURN TO MONITOR
QUESTN, HLT
/
/SUBR STORES AC VIA 13 INTO DATA FIELD
/WHENEVER END OF MBLK REACHED, ITS
/WRITTEN OUT VIA THE "NO PAUSE" AXO OPT.
/
STORE, DATA /DTA LDF
STA I 13
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
LDA I
3401 /CONVERT 13 INTO
ADD 13 /6000+400*MBLK
WRITE, TMA /ABS ADR TO TMA
LDA I
30 /ENABLE EX AD &
AXO /NO PAUSE OPTION
LDA
DATBLK
STC .+2
WRC U /START WRITING
0
ADD ONE
ADM
DATBLK /INCR.FOR NEXT
SAE I
1000
JMP /RETURN
JMP ERROR /NO WRITE-AROUND
/
/THIS SECTION "RUNS" PAGE DISPLAY AND
/WINDOW CONTROL AND DATA ACQUISITION.
/
NEXPAG, LDA I /ANOTHER PAGE?
ENDPAG, 0 /PTR END LAST PG
STC PAGEPT /NEXT PAGE PTR
JMP SETPAG /GET PAGE TEXT
ADD MLINES
AZE I /NO LINES: DONE!
JMP QUESTN /DO QUESTIONS
/BEFORE RUNNING PAGE DISPLAY, SET-UP
/PARAMETER HEADER BLOCK AT BEGINNING OF
/DATA FIELD.
RUNPAG, DATA
SET I 13
3777 /START AT 2000
SET I 12
PGCODE-1 /PARAMETER ARRAY
SET I 6
-13
LDA I 12
STA I 13
XSK I 6
JMP .-3
LDA I
1
ADM I 12 /INCR. NPAGE
STA I 13 /AND COPY
/13 NOW IS AT DATA STORAGE ADDRESS-1
/INITIALIZE EYE-POSITION SAMPLERS
CLR
STC FIXING /START WITH
STC XFIX /ASSUMED FIXATON
STC YFIX /AT (0,0) OF 0
STC 14 /DURATION
/TURN ON CLOCK INTERRUPTS FOR EITHER
/CLOCK OVERFLOW OR SCHMIDT TRIGGER 1
LDA I
160
PDP
PMODE
CLEN /CLOCK ENABLED
TAD C2720 /160+2720=3100
CLLR /10 KHZ CLOCK
CLA
TAD MDT /SAMPLING RATE
CLAB /TO BUFFER PRSET
CLSA /CLEAR REQUESTS
LINC
LMODE
LDA I
40 /SET 1/2 SIZE &
ESF /NO TTY INTERPT.
DISPLA, IOB
6001 /ION
JMP SHPAGE /DISPLAY ON
JMP .-1 /KEEP DISPLAYING
/
/END OF PAGE-RUNNING SECTION
/
/THIS SECTION DISPLAYS 3 X 3 "X" MATRIX
/FOR SENSOR ALIGNMENT. CALLED FROM
/MONITOR WITH SW 5 UP. ENDS SW 5 DOWN.
/
ADJUST, CLR
ESF /HALF-SIZE
SET I 6
-3
LDA I
C360, 360
STC Y
ADJLN, SET I 1
-2
SET I 5
-3
ADJCH, LDA
Y
DSC I
1463
DSC I
6314 /"X"
LDA I
364
ADM
1
XSK I 5
JMP ADJCH
LDA I
-360
ADM
Y
XSK I 6
JMP ADJLN
SNS I 5
JMP ADJUST+2 /REPEAT CYCLE
JMP MONIT /BACK TO MONITOR
/
/END OF ADJUSTMENT SECTION
/
/
/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 AT "YFIX" LINE
/
SHPAGE, LDA
0
STC PGEXIT /SETUP RETURN
SET I 6
MLINES, -10 /-LINES TO SHOW
ADD YFIX /STARTING LINE
ADD ADLIN1 /=LINADS-1
STC 3 /AD-1 ST. LIN AD
ADD YFIX
ADD ADLIN2 /=LINCON-1
STC 4 /AD-1 ST.LIN.CON
ADD YFIX
MUL
DY
ADD YTOP
STC Y /STARTING Y V.C.
DTEXT /TEXT LDF
NXLINE, SET I 1
XLEFT, -2
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
/
SHOLIN, AZE I
JMP WINDOW /-0:NO LEFT PER.
STC 5
NXCHP, LDH I 7 /NEXT PERIPH CHR
SHD I
4000 /DONT DISPLAY
JMP BLANK /BLANKS
SHD I
4300 /END OF LINE?
JMP CHNXLN
ADA I
M32, -32 /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-2 /FORM PW ADDR.
STC 2
LDA
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.
/
WRAPUP, SET I 3
ADLIN1, LINADS-1 /AD-1 LINAD VECT
SET I 4
ADLIN2, LINCON-1 /AD-1 LINCON VEC
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.
/
SETPAG, LDA
0
STC STEXIT /SETUP RETURN
ADD LINES
COM
STA
MLINES
STC 6
SET I 7
PAGEPT, 6001 /PTR START PAGE
DTEXT /TEXT LDF
SET I 3
LINADS-1 /LINE POINTERS
SET I 4
LINCON-1 /CONTRL WDS
CODLIN, JMP NXTCH /SUBR CHECKS BUF
LDH I 7
AZE I
JMP ENDFIL /END OF FILE
SAE I
57 /SKIP LEAD "/"
JMP ERROR /FIRST NOT "/"
LDA
7
STA I 3 /NEXT LINE PTR
JMP NXTCH
LDH I 7
SAE I /SKIP TO END OF
43 /LINE=43
JMP .-4
CLR /EACH LINE CONTR
COM /INIT.=-0:
STA I 4 /IN ALL-PERIPH.
XSK I 6 /ANOTHER LINE?
JMP CODLIN
ADD 7
STC ENDPAG /SAVE END PTR
STA I 3 /DUMMY LINAD=0
STEXIT, HLT /RETURN JUMP
/END OF FILE ENCOUNTERED: DECREASE NO.
/OF LINES TO BE DISPLAYED.
ENDFIL, ADD 6
COM
ADD MLINES
STC MLINES
JMP STEXIT-1 /RETURN
/
/SUBR CHECKS FOR TEXT POINTER=END OF
/DTEXT LDF. IF AT END, SHIFTS ENTIRE
/TEXT LDF DOWN SO THAT PAGEPT IS IN
/FIRST SEGMENT OF IT.
/
NXTCH, LDA
7 /TEXT PTR
AZE /7777=END
JMP /NOT END:RETURN
ADD PAGEPT
BCL I
6377 /GET BITS 2-3
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 SEGM.
JMP SETPAG+3 /REENCODE TEXT
/
/SUBR TAKES AC=TBLK, STRIPS BITS 0-2,
/AND THEN READS IN 4 TBLKS (UNIT 0)
/INTO DTEXT LDF
/
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
LDA I
C4000, 4000
JMP TBLKIN /SUBR READS TBLK
LDA I
5001
JMP TBLKIN /2ND BLOCK
LDA I
6002
JMP TBLKIN /3RD BLOCK
LDA I
7003
JMP TBLKIN /4TH 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
/
/ARRAY OF LINE CONTROL WORDS:
LINCON, 0
*.+20
/ARRAY OF TEXT-LINE ADDRESSES (-1/2)
LINADS, 0
*.+20
/
/ERROR ROUTINE. CONTROL ARRIVES HERE
/WHEN FATAL OPERATIONAL ERROR OCCURS.
/TYPES OUT "ERROR=XXXX", WHERE XXXX IS
/LAST JUMP INSTR (TO ERROR). RETURNS TO
/MONITOR
/
ERRMES, 4343
0522
2217
2200 /CR,CR,"ERROR"
ERROR, LDA
0
STC ERRRET
SET I 1
ERRMES-4000 /PTR TO "ERROR"
JMP MESSAG /CR,CR,"ERROR"
LDA I
ERRRET, 0
JMP OCTPUT /"=XXXX"
/SYSTEM MONITOR HERE. HALTS AND WHEN
/STARTED, SW 5 UP: SENSOR ADJUSTMENT
/SECTION. SW 0 UP: CALIBRATION SECTION.
/BOTH DOWN, READING SECTION.
/
MONIT, HLT
SNS I 5
JMP ADJUST
SNS I 0
JMP CALIBR
/NOW READ IN PARAMETER VALUES FOR NEXT
/READING TASK. EACH PARAMETER
/NAME IS TYPED OUT, FOLLOWED BY "=",
/AND THEN ITS CURRENT VALUE (OCTAL) AND
/THEN A SPACE. THEN A NUMBER (UNSIGNED
/OCTAL) MAY BE ENTERED FOLLOWED BY A CR
/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.
/
PARAMS, 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
JMP CRLF /CR,LF
JMP MESSAG /TYPE PARAM LABL
TYVAL, LDA 13
JMP OCTPUT /"=XXXX" (OCT.)
LDA I
240
JMP TYPE /" "
JMP GETPAR /INPUT PAR BY 13
XSK I 6 /ANOTHER PARAM?
JMP PGET
/
/PARAMETERS OBTAINED. FILL NEEDED VALUES
/
LDA
TOPLIN
APO
JMP ERROR /CANT BE <0
MUL I
-20
ADD C360
STC YTOP
ADD SPACIN
APO
JMP ERROR
AZE I
JMP ERROR /SPACING MUST>0
MUL I
-20
STC DY
ADD WIDTH
APO
JMP ERROR
COM
STC MWIDE
LDA I
-1
ADD LINES
MUL
SPACIN
ADD TOPLIN
ADA I
-37 /LAST LINE NO.
APO I /MUST <40
JMP ERROR
CLR
STC NPAGE /INIT. NPAGE=0
/READ IN 1ST 4 BLOCKS OF TEXT SOURCE
ADD TEXBLK
JMP TEXTIN
LDA I
6001 /SKIP "*20"CR
STC PAGEPT /TEXT AD-1/2
JMP SETPAG /SETUP PAGE
JMP RUNPAG /RUN 1ST PAGE
/
/SUBR TYPES AC AS UNSIGNED OCTAL INTEGER
/IN FORMAT "=XXXX". USES "Y" FOR STORE.
/
OCTPUT, STC Y
ADD
STC OCTRET /RETURN JMP
LDA I
275
JMP TYPE /"="
LDA
Y
ROL 3
JMP OUTDIG /TYPE DIGIT
ROR 6
JMP OUTDIG
ROR 3
JMP OUTDIG
JMP OUTDIG
OCTRET, HLT /RETURN
/
/SUBR TYPES OCTAL DIGIT FROM AC 9-11
/
OUTDIG, BCL I
7770 /STRIP DIGIT
ADA I
C260, 260 /ASCII CODE
STC D /TEMP
ADD
STC DIGRET /RETRN JMP
ADD D
JMP TYPE
LDA
Y /RESTORE AC
DIGRET, HLT /RETURN
/
/SUBR ACCEPTS UNSIGNED OCTAL INTEGER
/FROM TTY. LEADING
/ZEROES NEEDNT ENTER, AND A CR IS THE
/TERMINATOR. THE OBTAINED VALUE IS
/STORED VIA 13 (ONLY ON VALID INPUT).
/AN INITIAL CR LEAVES CURRENT VALUE
/INTACT. THE ENTRY IS RUBBED OUT AND
/RESTARTED BY ANY NON-CR,NON-OCTAL KEY.
/
GETPAR, LDA
0
STC GETRET /R.J.
STC D /D BUILDS VALUE
STC 2 /INDEXES INPUT
JMP INDIG /GET CHAR
JMP INDIG
JMP INDIG
JMP INDIG
JMP INDIG
/RETURNS FROM INDIG ONLY WHEN OCTAL
/INTEGER ENTERED: IF RETURNS AFTER LAST
/CALL, MORE THAN 4 DIGITS ENTERED: ENTRY
/IS INVALID AND "?" TYPED ANY ENTRY
/RESTARTED AT "TYVAL"
ENTERR, LDA I /INVALID
277
JMP TYPE /"?"
JMP TYVAL /REDO ENTRY
/
/SUBR ACCEPTS CHAR FROM TTY. IF A CR,
/TERMINATES ENTRY BY GOING TO "VALENT"
/(UNLESS INITIAL CR, SIGNALLED BY Y<0,
/IN WHICH CASE KEEP CURRENT VALUE AND
/RETURN TO GETRET). IF AN OCTAL DIGIT,
/SHIFTS Y TO LEFT AND ADDS DIGIT (CLEARS
/Y FIRST IF <0 MEANING NEW ENTRY).
/ANY OTHER CHARACTER RESTARTS ENTRY
/
INDIG, LDA
0
STC INDRET /R.J.
IOB
6031 /KSF
JMP .-2
IOB
6036 /KRB
SAE I
C215, 215 /CR?
JMP NOTCR
/HAVE CR: END ENTRY. IF 2=0, THEN WAS
/NULL ENTRY (I.E., INITIAL CR): RETAIN
/CURRENT PARAMETER VALUE. 2>0 STORE
/NEW VALUE (D). RETURN FROM GETPAR
LDA
2 /2 NON-0 IF DIG
AZE I
GETRET, HLT /RETRN GETPAR
LDA
D
STA 13 /STORE NEW VALUE
JMP GETRET
NOTCR, JMP TYPE /ECHO NON-CR
ADA I
-257
APO /OCTAL DIGIT?
JMP ENTERR /NO:RESTART
ADA I
-10 /OCTAL DIGIT?
APO I
JMP ENTERR /NO: RESTART
ADA I
7 /RESTORE DIGIT
AZE I
CLR /-0=0
STC 0 /TEMP.
ADD D
ROL 3 /SHIFT ENTRY
ADD 0 /NEXT DIGIT
STC D
XSK I 2 /SET NON-NULL
INDRET, HLT /RETURN INDIG
/
/SUBR TYPES OUT MESSAGE FROM PACKED
/ASCII CODE - 43 GENERATES CR&LF, AND 00
/TERMINATES OUTPUT. ADDRESS OF SOURCE
/POINTED (+1/2) BY 1.
/
MESSAG, LDA
0
STC MESRET /R.J.
LDH I 1
AZE I
MESRET, HLT /RETRN
SAE I
43 /CR?
JMP .+3
JMP CRLF /DO CR,LF
JMP MESRET-2 /NEXT CHAR
ADA I
-37 /ADD 200 OR 300
APO /FOR 8-BIT CODE?
ADD C100
ADA I
237
JMP TYPE /TYPE 8-BIT CODE
JMP MESRET-2 /NEXT CHAR
C100, 100
/
/SUBR GENERATES CR&LF
/
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
/
TYPE, PDP
PMODE
TLS
TSF
JMP .-1
LINC
LMODE
JMP /RETURN
/
/TEMPORARY DEBUGGING SECTION
EXCALB, HLT
CALIBR, HLT
/
/TEXT (PACKED ASCII) PARAMETER LABELS
/
LABEL1, 4312 /CR,J
1702 /OB
4027 / W
1722 /OR
0400 /D
2325 /SU
0212 /BJ
0503 /EC
2455 /T-
2305 /SE
2323 /SS
1117 /IO
1600 /N
2405 /TE
3024 /XT
4024 / T
0120 /AP
0500 /E
2405 /TE
3024 /XT
4002 / B
1417 /LO
0313 /CK
0004 / D
0124 /AT
0140 /A
0214 /BL
1703 /OC
1300 /K
2417 /TO
2040 /P
1411 /LI
1605 /NE
0014 / L
1116 /IN
0523 /ES
0023 / S
2001 /PA
0311 /CI
1607 /NG
0027 / W
1116 /IN
0417 /DO
2700 /W
2017 /PO
2311 /SI
2411 /TI
1716 /ON
0000 /
/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