Directory of image this file is from
This file as a plain text file
*20
/NEXTCH ROUTINE: READS IN NEXT CHAR
/FROM SOURCE TAPE, ENTERING NEW TBLK
/AS NEEDED; SKIPS CONT MARK (47)
/SOURCE FILE BUFFERED IN 17000-17377
/B-REG. 17=HALF-WORD POINTER TO TEXT
/RETURNS WITH CHAR IN AC; CHAR CAN ALSO
/BE HAD AFTER RETURN VIA LDH 17
PMODE
*20
LMODE
NEXTCH, LDF 7
LDA
0
STC RTRN1 /SET RETURN JUMP
/CHECK FOR CTRL/A: INTERRUPT IF FOUND
KST
JMP .+7
IOB
6036 /KRB
SAE I
201
SKP
JMP SYSTEM /SYSTEM MONITOR
/CHECK FOR END OF SOURCE BUFFER - IF
/FOUND, READ IN NEXT TAPE BLOCK
LDA
17
SAE I
7377
JMP TBLK+1
LDA I /NEW TBLK NEEDED
6000
ADD TBLK
STC .+2 /2ND LTAPE INSTR
RDC /RDC OR RDC U
0
SET I 17 /RESET POINTER
6777
LDA I
1
ADM I /INCR TBLK
TBLK, 0
LDH I 17 /NEXT CHAR
AZE I /0=FILE END
JMP EOFILE
SAE I
47 /CON"T MARK?
JMP RTRN1-1 /CHAR O.K.
LDA I
1
ADM I
SGMNT, 0 /INCR SEGMENT
SNS 5 /PRINT IF SW 5
JMP NEXTCH+4
PDP
PMODE
JMS I CRLF
JMS I TAB
LINC
LMODE
JMP NEXTCH+4 /IGNORE CON"T
SNS 5 /PRINT CHAR?
RTRN1, HLT /RETURN JUMP
PDP
PMODE
TAD M40
SPA
TAD C100
TAD C240
JMS I TIPE
LINC
LMODE
LDH 17 /RESTORE CHAR
JMP RTRN1
/INITIALIZATION REQUIRED:
/SET TBLK=STARTING TAPE BLOCK OF SOURCE
/SET 17=6001 AND READ IN FIRST TBLK
/SET RDC OR RDC U AT TBLK-7
/
/TEMPORARY CHECKOUT SECTION BELOW
SYSTEM, HLT
EOFILE, HLT
PMODE
M40, -40
C100, 100
C240, 240
TIPE, TYPE
TYPE, 0
TLS
TSF
JMP .-1
CLA
JMP I TYPE
CRLF, CARRET
CARRET, 0
CLA
TAD C212
JMS I TIPE
TAD C215
JMS I TIPE
JMP I CARRET
C212, 212
C215, 215
TAB, TABOUT
TABOUT, 0
CLA
TAD C311
JMS I TIPE
JMP I TABOUT
C311, 311
/NEXSYM SUBR: READS NEXT SYMBOL FROM
/SOURCE (VIA NEXTCH) AND LEAVES IT IN
/SYMBUF ON UP IN PACKED ASCII FORM WITH
/A TRAILING 00. A SYMBOL IS EITHER AN
/IDENTIFIER (SYMCOD=1), A SINGLE CHAR OP/(+-,:*^/><;)( ETC SYMCOD=0), A NUMERICL
/CONSTANT (NOT EVALUATED BY NEXSYM, JUST
/SAVED AS CHAR STRING, SYMCOD=-2,-3,-4)
/TEXT CONSTANT (".....", SYMCOD=-1)
/DEPENDING ON WHETHER THE TERMINATOR FOR
/THE SYMBOL WAS (POSSIBLY) PART OF THE
/NEXT SYMBOL, IN WHICH CASE IT MUST BE
/SAVED (SAVECH>0 VIA EXIT2) OR NOT
/(SAVECH=0 VIA EXIT1)
LMODE
NEXSYM, LDA
0
STC RTRN2 /SETUP RET.JUMP
SET I 10
SYMBUF-4000 /AD-1/2 SYMBOL
LDA I
SAVECH, 0 /LEAD CHAR YET
AZE I /DECODED?
JMP NEXTCH /NO: FETCH IT
ADA I
LM32, -32
APO I /=LETTER?
JMP RTRN2+1 /NOT LEAD LETTER
ADA I
C32, 32 /RESTORE CHAR
SKP /SYMBOL IS IDENT
ID, LDH 17 /RESTORE CHAR
JMP STOSYM /SAVE IT
JMP NEXTCH /GET NEXT CHAR
ADD LM32
APO /LETTER?
JMP ID /YES:STILL IN ID
ADA I
LM26, -26
APO /DIGIT? TEST 1
JMP EXIT2-2 /NO END OF ID
ADA I
LM10, -10
APO /DIGIT?TEST 2
JMP ID /YES:STILL IN ID
/END OF IDENT.:STORE SYMCOD=1 AND RETURN/VIA EXIT2, SAVING CURRENT CHAR AS LEAD
/CHAR FOR NEXT SYMBOL IN SAVECH
LDA I
IDCODE
EXIT2, STC SYMCOD
LDH 17
STC SAVECH
JMP STOSYM /SAVE TRAILING 0
RTRN2, HLT /RETURN JUMP
/LEAD CHAR NOT LETTER: NOT AN IDENT.
/CHECK FOR NUMERICAL CONSTANT, TEXT
/CONSTANT, OR SINGLE CHAR OP
ADD LM26
APO /DIGIT TEST 1
JMP C60-1
ADD LM10 /TEST 2
APO
JMP CONST-2 /DIGIT:ENCODE
/STILL MIGHT BE CONST IF LEADING "."
ADA I /RESTORE AC
C10, 10 /AFTER TEST 2
ADA I
C60, 60 /AFTER TEST 1
SHD I
5600 /PERIOD?
JMP CONST
/NOT A NUM. CONST;WILL BE TEXT CONS IF "
SAE I
42 /QUOTE
JMP OPCHAR /MUST BE OP CHAR
/ITS A TEXT CONSTANT;STORE EVERYTHING
/BETWEEN QUOTES (BUT NOT QUOTES)
EQUOTE, JMP NEXTCH
SHD I
4200 /QUOTE
JMP EXIT1-2
JMP STOSYM
JMP EQUOTE
LDA I
-1 /QUOTE CODE
EXIT1, STC SYMCOD
JMP RTRN2-2 /SAVECH=0,EXIT
/SECTION ENCODES (BUT DOES NOT EVALUATE)
/NUMERICAL CONSTANTS. ENTER AT CONST-2
/OCCURS WITH LEAD DIGIT, AT CONST WITH
/LEAD "." STRING OF DIGITS FOLLOWED BY
/"O" = OCTAL INTEGER; COSTANT FOLLOWED
/BY "E" IS INTERPRETED IN EXP. FORMAT
ADA I /RESTORE AC
C70, 70
CONST, JMP STOSYM /SAVE CHAR
JMP NEXTCH
ADA I
LM60, -60
APO /DIGIT TEST 1
JMP .+6
ADD LM10
APO I /TEST 2
JMP .+3
LDH 17 /IS DIGIT:RESTOR
JMP CONST
LDH 17 /RESORE CHAR
SHD I /NOT DIGIT:="."?
5600
JMP CONST
SHD I /= "E"?
0500
JMP LM3-1 /EXP. FORM. CON.
SHD I
1700 /= "O"?
JMP LM4-1 /OCTAL INTEGER
/CHAR NOT DIGIT,".","O","E":MUST BE END
/OF SYMBOL;MUST TAKE EXIT2 (SAVECH>0)
/WITH SYMCOD=-2 (NORMAL CONSTANT)
LDA I
LM2, -2
JMP EXIT2
/EXPONENTIALLY FORMATTED CONSTANT;EXP.
/PART READ UNDER SUBSEQUENT CONTROL
LDA I
LM3, -3
JMP EXIT1 /DONT SAVECH
/OCTAL CONSTANT (INTEGER): SYMCOD=-3
LDA I
LM4, -4
JMP EXIT1 /DONT SAVECH
/PROGRAM GETS HERE ONLY IF SYMBOL IS
/SINGLE-CHAR OPERATOR
OPCHAR, JMP STOSYM /SAVE IT
CLR /SYMCOD=0
JMP EXIT1 /DONT SAVECH
/SUBR STORES PACKED ASCII CHAR AS PART
/OF CURRENT SYMBOL ARRAY. POINTER IS
/B-REG 10
STOSYM, STH I 10
LDA
10
SAE I
SYMBUF+20 /CURRENT LIMIT
JMP /ON CHARS/SYMBOL
DJR /SAVE TRACE
JMP SYMERR /TOO MANY CHARS
/NOTE: SYMBUF+20 MEANS LIMIT=40 CHARS/
SYMERR, HLT
SYMCOD, 0
SYMBUF, 0
/
/
/
/FOLLOWING SECTION IS TEMPORARY FOR
/DEBUGGING PURPOSES
*SYMBUF+100
START, CLR
LDF 7
LSW
ADA I
6000
STC .+2
RDC U
0
SET I 17
7001
LSW
ADA I
1
STC TBLK
SYMBOL, JMP NEXSYM
PDP
PMODE
JMS I CRLF
LINC
LMODE
SET I 10
SYMBUF-4000
CHR, LDA I
JMP CHTEST
STC RTRN1
LDH I 10
JMP RTRN1+1
CHTEST, LDH 10
AZE I
JMP CHTEST-2
LDA I
C240, 240
STC 1
ADD SYMCOD
ADA I
C265, 265
STC 2
PDP
PMODE
TAD 1
JMS I TIPE
TAD 2
JMS I TIPE
LINC
LMODE
JMP SYMBOL