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 07000-07377
/B-REG. 7=HALF-WORD POINTER TO TEXT
/RETURNS WITH CHAR IN AC; CHAR CAN ALSO
/BE HAD AFTER RETURN VIA LDH 7
PMODE
PAGE
NEXTCH, 0
LINC
LMODE
LDF 3
/CHECK FOR END OF SOURCE BUFFER - IF
/FOUND, READ IN NEXT TAPE BLOCK
LDA
7
SAE I
7377
JMP NXCHAR
LDA I /NEW TBLK NEEDED
1
ADM I
TBLK, 0
LDA I
6000
ADD TBLK
STC .+2 /2ND LTAPE INSTR
RDC /COULD BE RDC U
0
SET I 7
6777
NXCHAR, LDH I 7
AZE I
JMP EOFILE /0=END SOURCE
SAE I
47 /47=LINE CON"T
JMP EXIT1 /USE CHAR
LDA I /IGNORE CON"T
1
ADM
SGMNT /INCR. LINE SEGM
JMP NEXTCH+3 /GET NEXT CHAR
EXIT1, PDP
PMODE
JMP I NEXTCH /RETURN CH IN AC
/
/END OF NEXTCH SUBR
/INIT. REQUIRED FOR IT IS TO DEFINE TBLK
/READ IN INIT TBLK INTO 7000-7377 AND
/TO SET 7=7001
/
/NEXSYM SUBR: READS NEXT SYMBOL FROM
/SOURCE (VIA NEXTCH) AND LEAVES IT IN
/SYMBUF ON UP IN PACKED ASCII FORM WITH
/3 TRAILING 00"S; SYMBUF IN TOP OF CORE
/ABOVE END OF STACK IN FIELD 1 (LDF 7).
/A SYMBOL IS EITHER AN ALPHANUMERIC NAME
/(SYMCOD=0), A NUMERICAL CONSTANT
/(SYMCOD=-2 REGULAR, -3 IN E FORMAT,-4
/IN OCTAL FORMAT), A TEXT CONSTANT
/("...", SYMCOD=-1) OR A SINGLE CHAR
/SYMBOL (+,-;()<> ETC, SYMCOD=ASCII>0
/RETURNS WITH SYMCOD IN AC. NOTE THAT
/NUMERICAL CONSTANTS NOT EVALUATED BY
/THIS ROUTINE, JUST STORED AS STRINGS.
/
/SAVECH=0 MEANS LEAD CHAR OF SYMBOL
/NOT YET READ BY NEXTCH;SAVECH>0 MEANS
/LEAD CHAR READ BY NEXTCH & =SAVECH
/
NEXSYM, 0
CLA
TAD SYMBF1 /AD-1 SYM BUFFER
DCA 10
TAD SAVECH
SNA />0:= LEAD CHAR
JMS NEXTCH
TAD M40 /X-40
SNA
JMP .-3 /SKIP LEAD BLNKS
TAD C5 /X-33
SMA /=LETTER?
JMP NONAME /NO: NOT NAME
NAME, TAD C33 /RESTORE X
JMS STOCHR /X INTO SYMBUF
JMS NEXTCH
TAD M33 /X-33
SPA /ANOTHER LETTER?
JMP NAME
TAD M25 /X-60
SPA /DIGIT? TEST 1
JMP ENDNAM /NO: END OF NAME
TAD M13 /X-73
SMA /DIGIT? TEST 2
JMP ENDNAM+2
TAD C73 /DIGIT: RESTORE
JMP NAME+1
ENDNAM, TAD C60 /RESTORE X
SKP
TAD C73 /RESTORE X
DCA SAVECH /LEAD NEXT SYMB
EXIT2, DCA SYMCOD /NAME:CODE=0
JMS STOCHR
JMS STOCHR
JMS STOCHR /3 TRAILING 00"S
TAD SYMCOD
JMP I NEXSYM /EXIT AC=SYMCOD
NONAME, TAD M25 /X-60:NOT NAME
SPA /LEAD DIGIT?
JMP CHLEAD-2
TAD M13 /X-73:DIG TEST 2
SMA
JMP CHLEAD /NOT LET OR DIG
CONST, TAD C73 /RESTORE DIGIT
JMS STOCHR
JMS NEXTCH
TAD M60 /X-60
SPA /ANOTHER DIGIT?
JMP CHCONS /="."/"E"/"O"?
TAD M13 /X-73
SPA /DIGIT TEST 2
JMP CONST
TAD C73 /END:RESTORE X
DCA SAVECH /SAVE LEAD
STA CLL RAL /CONS: CODE=-2
JMP EXIT2
CHCONS, TAD C4 /X-56
SZA /="." ?
JMP .+3
TAD C56 /RESTORE PERIOD
JMP CONST+1 /PART OF CONSTAN
TAD C51 /X-5
SZA /= "E" FORMAT?
JMP .+4
DCA SAVECH /DONT SAVE LEAD
STA CLL RTL /E CONS:CODE=-3
JMP EXIT2
TAD M12 /X-17
SZA /= "O" FORMAT?
JMP .+4
DCA SAVECH /DONT SAVE LEAD
TAD M4 /O CONS:CODE=-4
JMP EXIT2
TAD C17 /END CONS:RESTOR
JMP CHCONS-3
TAD C4 /X-56
SKP
CHLEAD, TAD C17 /X-56
SNA /= "." ?
JMP CHCONS+3 /START OF CONST
TAD C14 /X-42:SYMBL NOT
SZA /NAME/CONS:TEXT?
JMP OPCHAR /NO:MUST BE SING
EQUOTE, JMS NEXTCH /TEXT:DONT SAVE"
TAD M42 /SAVE IF NOT = "
SNA
JMP .+4
TAD C42 /RESTORE,SAVE X
JMS STOCHR
JMP EQUOTE
DCA SAVECH /DONT SAVE "NOR
STA /LEAD NEXT SYMB.
JMP EXIT2 /TEXT:CODE=-1
OPCHAR, TAD C42 /SINGLE CHAR OP:
DCA SYMCOD /RESTORE CODE=X
DCA SAVECH /DONT SAVE LEAD
JMP EXIT2+1 /DONT ENCODE X
/
/END NEXSYM SUBR
/BELOW IS STOCHR SUBR CALLED BY NEXSYM
/WHICH SAVES (UNLESS SINGLE CHAR OP)
/PACKED ASCII ENCODED SYMBOL IN SYMBUF
/
STOCHR, 0
LINC
LMODE
XSK 10 /TOO MANY CHARS
JMP .+3 /IN SYMBOL:OUT
AZE I /OF CORE?
JMP SYMERR /YES:SKIP SYMBOL
LDF 7 /SYMBUF IN LDF 7
STH I 10 /STORE HALF WORD
PDP
PMODE
JMP I STOCHR
/
/END OF NEXSYM PACKAGE
/INITIALIZATION REQUIRED: NONE