Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - glxscn.c08
There is 1 other file named glxscn.c08 in the archive. Click here to see a list.
 REP 2/1	;08C1
	SUBTTL Irwin L. Goverman/ILG/LSS/MLB/PJT/WLH/DC   1-Jan-82
 WIT
	SUBTTL Irwin L. Goverman/ILG/LSS/MLB/PJT/WLH/DC/CTK/LWS  1-Mar-84
 REP 32/1	;08C2
			SCNEDT==74		;VERSION OF MODULE
 WIT
			SCNEDT==103		;VERSION OF MODULE
 INS 124/3	;08C3
	;**;Begin Galaxy 4.1 code maintence

	0075		12 Digit octal numbers sign bit is dropped by S%NUMI
			SPR 10-33455		27-SEP-83/CTK

	0076		Fix problem when parsing "-" as a token. Always skip
			spaces following, EOL or not.

	0077		Don't allow defaulted filnames for indirect files.
			Don't ABS when indirect file is too long to put in buffer.

	0100		Fix problems parsing numeric field that has "+" or
			"-" embedded.
			3-Jan-84 /LWS/WD

	0101		Make a $ALTERNATE that points to a $CRLF always work.
			4-Jan-84 /LWS/WD

	0102		Don't let ":" be a valid device name. /LWS

	0103		Fix problem where $DEFAULTing wasn't being done
			correctly for tokens when CRLF was typed instead
			of the token.
			3-Apr-84 GCO 10020 /LWS thanks to WXD
 REP 38/13	;08C4
	NUMI.2:	IMULI	P3,0(S2)	;SHIFT OVER 1 DIGIT
 WIT
	NUMI.2:
	;**;[75]ADD 3 LINES AT NUMI.2:+0L	27-SEP-83/CTK
		CAXN	S2,^D8		;[75] RADIX 8 ???
		LSH	P3,3		;[75] YES, USE SHIFT INSTEAD OF MULTIPLY
		CAXE	S2,^D8		;[75] NON-RADIX 8 ??
		IMULI	P3,0(S2)	;SHIFT OVER 1 DIGIT
 INS 31/17	;08C5
	;**;[76] Insert 1 line at XCOM2+13L. 21-Dec-83 /LWS
			PUSHJ	P,INILCH	;[76] SKIP SPACES
 INS 50/17	;08C6
			PUSHJ	P,CHKCFM	;[101] SEE IF THERE IS A CONFIRM IN THE LIST
			  SKIPA			;[101] NO, REISSUE PROMPT
			JRST	XCOM4		;[101] YES, PROCESS IT
 INS 63/17	;08C7

	;[101] CHKCFM - ROUTINE TO SEE IF A .CMCFM FUNCTION APPEARS ON THE USER'S LIST
	;[101] ACCEPTS  P1/	POINTER TO USER'S FUNCTION BLOCK
	;[101] 	CALL	CHKCFM
	;[101] RETURNS  +1:	IF THERE IS NO .CMCFM ON THE LIST, P1 UNCHANGED
	;[101] 	  +2:	IF A .CMCFM IS ON THE LIST, P1 IS UPDATED FOR THAT BLOCK
	;[101] USES T1.

	CHKCFM:	STKVAR	<LSTPTR>	;[101] TO SAVE P1
		MOVEM	P1,LSTPTR	;[101] SAVE P1 IN CASE WE NEED TO RESTORE IT
	CHKCFL:	LOAD	T1,.CMFNP(P1),CM%FNC	;[101] GET FUNCTION CODE FROM BLOCK
		CAIN	T1,.CMCFM	;[101] CONFIRM?
		 RETSKP			;[101] YES, RETURN SKIP, P1 POINTS TO ITS BLOCK
		LOAD	T1,.CMFNP(P1),CM%LST	;[101] GET THE POINTER TO THE NEXT BLOCK
		HRRM	T1,P1		;[101] UPDATE P1 TO THE NEXT BLOCK
		JUMPN	T1,CHKCFL	;[101] LOOP AND CHECK BLOCK IF IT EXISTS
		MOVE	P1,LSTPTR	;[101] BUT IF AT END, RESTORE OLD VALUE OF P1
		POPJ	P,		;[101] AND RETURN NONSKIP

 INS 56/18	;08C8
	;[100] RESET EVERYTHING SUCH THAT FIELD CAN BE REREAD.
	;[100] THIS ROUTINE IS USEFUL IF FIELD IS READ, AND THEN WE DECIDE WE WANT
	;[100] TO REREAD IT WITH A DIFFERENT LENGTH OR BREAK SET SPECIFIED.

	CMFSET:	PUSHJ	P,CMRSET	;[100] PUT MAIN POINTER TO BEGINNING OF FIELD
		PUSHJ	P,INILCH	;[100] RESET POINTER TO ATOM BUFFER
		TXZ	F,CM%ESC+CM%EOC+CMCFF+CMQUES ;[100] RESET PARSET
		POPJ	P,		;[100]

 INS 32/22	;08C9
	;**;[77] Insert 1 line at CMIND1+1L. 28-Dec-83 /LWS
		JUMPE	P3,CMINE1	;[77] JUMP IF BUFFER FULL
 INS 69/22	;08C10

	;**;[77] Insert 3 lines after CMINDE+4L. 28-Dec-83  /LWS
	CMINE1:	MOVE	S1,IIFN		;[77] GET INDIRECT FILE IFN
		PUSHJ	P,F%REL		;[77] RELEASE THE FILE
		NOPARS	(IFB)		;[77] GIVE THE ERROR MESSAGE
 INS 2/25	;08C11
	;[100] CMRFLN READS EXACTLY N CHARACTERS.  IN OTHER WORDS, THE N + 1ST CHARACTER
	;[100] IS A BREAK CHARACTER, NO MATTER WHAT IT IS.
	;[100] 
	;[100] ACCEPTS:	T1/	-N

	CMRFLN:	MOVEM	T1,CMRBRK	;[100] SET UP SPECIAL COUNT AS BREAK MASK
		PJRST	CMRFLO		;[100] JOIN COMMON CODE

 REP 8/25	;08C12
		TXNE	F,CMDEFF	;DEFAULT GIVEN?
		JRST	CMRATT		;YES, ALREADY IN BUFFER
	CMRAT1:	PUSHJ	P,CMCIN		;GET A CHAR
 WIT
	CMRFLO:	TXNE	F,CMDEFF	;[100] DEFAULT GIVEN?
		JRST	CMRATT		;[100] YES, ALREADY IN BUFFER
	CMRAT1:	PUSHJ	P,CMROOM	;[100] MAKE SURE ROOM FOR ANOTHER CHARACTER
		PUSHJ	P,CMCIN		;[100] GET A CHAR
		SKIPG	CMRBRK		;[100] BREAK SET GIVEN?
		JRST	CMRAT3		;[100] NO, KEEP READING REGARDLESS OF CHARACTER
 REP 17/25	;08C13
		PUSHJ	P,STOLCH	;BUILD KEYWORD STRING
 WIT
	CMRAT3:	PUSHJ	P,STOLCH	;[100] BUILD KEYWORD STRING
 INS 1/26	;08C14
	;[100] CMROOM DECIDES IF WE CAN READ ANOTHER CHARACTER

	CMROOM:	SKIPLE	CMRBRK		;[100] BREAK SET GIVEN?
		POPJ	P,		;[100] YES, SO KEEP READING
		AOSG	CMRBRK		;[100] NO, COUNT.  HAVE WE READ ENOUGH?
		POPJ	P,		;[100] COUNT NOT EXHAUSTED, KEEP READING.
		MOVEI	T1,[EXP -1,-1,-1,-1] ;[100]
		MOVEM	T1,CMRBRK	;[100] COUNT EXHAUSTED, FOR BREAK ON ANYTHING
		POPJ	P,		;[100] GO READ NEXT CHARACTER IN CASE ITS "?".
 REP 9/44	;08C15
		MOVE	S1,.CMABP(P2)	;SETUP NIN
 WIT
	XCMNX1:	MOVE	S1,.CMABP(P2)	;[100] SETUP NIN
 INS 19/44	;08C16
		LOAD	S2,.CMFNP(P1),CM%FNC ;[100] GET FUNCTION CODE
		CAIE	S2,.CMNUX	;[100] A .CMNUX FUNCTION?
		JRST	CMNUM1		;[100] NO, INVALID CHARACTER IN NUMBER
		MOVE	T2,S1		;[100] GET POINTER FROM NIN IN T2
		MOVE	T1,.CMABP(P2)	;[100] AND GET ATOM BUFFER POINTER IN T1
		PUSHJ	P,SUBBP		;[100] FIND NEG NUMBER OF BYTES ACTUALLY READ
		AOJ	T1,		;[100] DON'T INCLUDE THE TERMINATOR
		PUSH	P,T1		;[100] AND SAVE IT
		PUSHJ	P,CMFSET	;[100] RESET ALL POINTERS
		POP	P,T1		;[100] AND GET BACK NUMBER OF BYTES READ BY NIN
		PUSHJ	P,CMRFLN	;[100] AND REREAD THE FIELD UP TO TERM NIN SAW
		JRST	XCMNX1		;[100] NOW TRY NIN AGAIN.
 INS 21/47	;08C17
	;**;[102] Insert 3 lines after CMDEV0+0L. /LWS
		ILDB	S2,S1			;[102] GET FIRST BYTE
		CAIN	S2,0			;[102] NULL?
		NOPARS(NDN)			;[102] YES,,SORRY
 INS 41/50	;08C18
	;**;[77] Insert 2 lines after FILIN+13L. 28-Dec-83 /LWS
		TXNE	F,CMINDF	;[77] IN INDIRECT FILE?
		JUMPE	T1,.POPJ	;[77] YES,,DON'T ALLOW DEFAULT FILEN
 INS 22/51	;08C19
		TXNN	F,CMDEFF	;USING DEFAULT STRING?
		  JRST	CMTOK1		;NO
		MOVE	Q2,Q1		;GET TOKEN POINTER IN Q2
		MOVE	Q1,.CMABP(P2)	;GET POINTER TO ATOM BUFFER (DEFAULT STRING)
	XCMTK1:	ILDB	T1,Q2		;GET NEXT CHARACTER FROM TOKEN
		JUMPE	T1,XCOMXI	;SUCCESS IF END OF STRING
		ILDB	T2,Q1		;GET CHAR FROM DEFAULT STRING
		CAMN	T2,T1		;MATCH?
		JRST	XCMTK1		;YES, CONTINUE
		NOPARS	(NMT)		;NO, DOES NOT MATCH TOKEN
 SUM 84293