File PPNEXSYM

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search