Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93e-bb - 7,6/ap013/getitm.c13
There are 10 other files named getitm.c13 in the archive. Click here to see a list.
 REP 46/3	;13C1
		SKIPN	AMARFL		;[1316] FLAG ON FOR COPY REPL "LF" KLUDGE?
					;[1316] TELL SQURL. USER-NAME IS IN A-MARGIN
		CAIGE	TE,^D12		;IN A-MARGIN?
		IORI	CT,AMRGN.	;YES--SET FLAG
		SETZM	AMARFL		;[1316] TURN OFF FLAG FOR COPY REPL "LF" KLUDGE
 WIT
	;[1576] Delete 1L plus a second line of comment
		CAIGE	TE,^D12		;IN A-MARGIN?
		IORI	CT,AMRGN.	;YES--SET FLAG
	;[1576] Delete 1L - removing edit 1316
 REP 51/10	;13C2
		SETZB	CT,LC		;CLEAR COUNTERS
 WIT
		TSWT	FRTST		;[1576] ARE WE READING FOR REPLACEMENT TEST?
		JRST	GTW1CC		;[1576] NO
		DMOVE	W1,LIBBH+1	;[1576] STORE LIB FILE BUFFER HDR
		DMOVEM	W1,ENDTKN##+1	;[1576]  AT THE POINT WHERE THE TOKEN STARTS,
		MOVE	CT,RPLBLK	;[1576]  NOT AT WHERE THE SCAN FOR THE TOKEN
		MOVEM	CT,ENDTKN	;[1576]  STARTS, COULD BE POINTING TO COMMENT
		SKIPE	TKNBH+1		;[1576] HAS THE FIRST TOKEN IN REPLACEMENT
		JRST	GTW1CC		;[1576]  STRING BEEN STORED?

	GTW1CD: MOVEM	CT,TKNBH##	;[1576] NO
		DMOVEM	W1,TKNBH+1	;[1576]
		
	GTW1CC:	SETZB	CT,LC		;[1576] CLEAR COUNTERS
 INS 36/13	;13C3
		MOVEM	CT,TKNSIZ	;[1576]
		AOS	TKNSIZ		;[1576] Add 2 for
		AOS	TKNSIZ		;[1576]  open and close quotes
 REP 3/24	;13C4
	ENDWRD:	TLNE	W1,GWLIT	;LITERAL?
 WIT
	ENDWRD:	MOVEM	CT,TKNSIZ##	;[1576] Store token size
		TLNE	W1,GWLIT	;LITERAL?
 REP 45/29	;13C5
	;[D1316]	JRST	FINLIN		;YES
	;[1316] AT THIS POINT, WE HAVE THE LF AND WE HAVE TO DECIDE WHETHER TO
	;[1316] TO PUT IT ON THE LISTING. IT GOES ON LISTING IF THE FOLLOWING
	;[1316] FIVE SWITCHES HAVE THE APPROPRIATE SETTINGS: FCOPY - OFF,
	;[1316] FRLIB - ON, FNOCPY - ON, FRTST - ON, NOCONT - ON. (CONTINUATIONS
	;[1316] ARE FORTUITOUSLY DISALLOWED FOR * COMMENT LINES.)
	;[1316] OTHERWISE FINLIN WILL BE ALLOWED TO BEHAVE AS BEFORE.
	;[1316]
		JRST	[SKIPN	NOCONT		;[1316] CONTIN'S DISALLOWED?
			 JRST	FINLIN		;[1316] NO
			 TSWF	FRLIB		;[1316] READING LIB FILE?
			 TSWF	FCOPY		;[1316] COPY REPL IN PROGRESS?
			 JRST	FINLIN		;[1316]
			 TSWF	FRTST		;[1316] TESTING FOR REPL MATCH?
			 TSWT	FNOCPY		;[1316] NOT PUTTING LF TO LISTING?
			 JRST	FINLIN		;[1316]
			 SWOFF	FNOCPY		;[1316] FORCE IT TO LISTING
			 SWON	FNCOFF		;[1316] NOTE THAT WE FORCED IT
			 JRST	FINLIN]		;[1316] GO FORCE IT
						;[1316]
 WIT
		JRST	FINLIN		;[1576] YES

	;[1576] Delete 11L and all associated comments
 REP 17/30	;13C6
	;[1316] IF WE FORCED THE LF TO THE LISTING, WE HAVE TO RESET FNOCPY SO
	;[1316] THAT IT WON'T CAUSE PROBLEMS BEFORE WE GET TO GETSQ9
	;[1316]
		TSWFZ	FNCOFF		;[1316] DID WE FORCE LF TO LISTING?
		SWON	FNOCPY		;[1316] YES, ALSO RESET FNOCPY
					;[1316]
 WIT
	;[1576] Delete 2L and associated comments
 REP 17/33	;13C7
	;[1316] HERE WE HAVE TO DO THE SAME RAIN DANCE AS AT GETCH5 ABOVE. THIS
	;[1316] TIME THE OBJECTIVE IS TO GET THE SIX SPACES IN FRONT OF THE NEW
	;[1316] LINE ONTO THE LISTING. ALSO, NOT SURPRISINGLY, WE HAVE TO HOLD
	;[1316] OFF ON PUTTING THE FIRST CHARACTER OF THE USER NAME TO THE LISTING
	;[1316] IN SITUATIONS WHERE THE FIVE CONDITIONS ARE MET.
	;[1316]
	;[D1316] GETSQ9:	TSWF	FNOCPY	;IGNORE IF NOT OUTPUTING TO CPYFIL
	;[1316]
	GETSQ9:				;[M1316]
		SKIPN	NOCONT		;[1316] CONTIN'S DISALLOWED?
		JRST	GTSQ9A		;[1316] NO
		TSWF	FRLIB		;[1316] READING LIB FILE?
		TSWF	FCOPY		;[1316] COPY REPL IN PROGRESS?
		JRST	GTSQ9A		;[1316]
		TSWF	FRTST		;[1316] TESTING FOR REPL MATCH?
		TSWT	FNOCPY		;[1316] NOT PUTTING SPACES TO LISTING?
		JRST	GTSQ9A		;[1316]
		SWOFF	FNOCPY		;[1316] FORCE THEM TO LISTING
		SWON	FNCOFF		;[1316] NOTE THAT WE FORCED THEM
	GTSQ9A:				;[1316]
		TSWF	FNOCPY		;[M1316] IGNORE IF NOT PUTTING OUT TO CPYFIL
		JRST	GETSQ2

 WIT

	;[1576] Delete 12L and associated comments

	GETSQ9:	TSWF	FNOCPY		;[1576] Ignore if not outputting to CPYFIL
		JRST	GETSQ2
 REP 44/33	;13C8
	;[1316] IF WE ARE FORCING SPACES TO LISTING, PUT IN TWO MORE TO TIDY IT UP.
		TSWF	FNCOFF		;[1316]
		ADDI	TD,2		;[1316]
					;[1316]
 WIT
	;[1576] Delete 2L and associated comments
 REP 52/33	;13C9
	;[1316] IF WE ARE FORCING SPACES TO LISTING, SUPPRESS FIRST CHARACTER OF
	;[1316] USER NAME FOR NOW. IT WILL GET ONTO LISTING LATER.
		TSWT	FNCOFF		;[1316]
					;[1316]
		PUSHJ	PP,PUTCPY
	;[1316] NOW WE SET SWITCH TO INDICATE USER NAME IS IN A-MARGIN, AND THEN
	;[1316] RESTORE FNOCPY AND FNCOFF SWITCHES.
		TSWF	FNCOFF		;[1316] ARE WE FORCING SPACES TO LISTING?
		SETOM	AMARFL		;[1316] SET A-MARGIN FLAG FOR KLUDGE
		TSWFZ	FNCOFF		;[1316] CLEAR THIS FLAG, IF SET
		SWON	FNOCPY		;[1316] AND RE-SET THIS ONE, IF NECESSARY
					;[1316]
 WIT
	;[1576] Delete 1L and associated comments
		PUSHJ	PP,PUTCPY
	;[1576] Delete 4L and associated comments
 REP 43/39	;13C10
		JRST	SKPSR4
 WIT
	;[1576]	JRST	SKPSR4
		JRST	SKPSR1		;[1576] character has already been output
 REP 31/43	;13C11
	CPLB20:	CAIN	TYPE,PIC.	;PICTURE IS SPECIAL
 WIT
	CPLB20:	CAIE	TYPE,PIC.+AMRGN. ;[1576]
		CAIN	TYPE,PIC.	;PICTURE IS SPECIAL
 INS 38/47	;13C12
		SETO	TB,		;[1576] MAY HAVE BEEN A COUPLE OF TERMINATING
		ADJBP	TB,SRCBH+1	;[1576]  CHARACTERS SINCE SCAN DOESN'T
		LDB	TB,TB		;[1576]  STOP ON A LINE FEED, SO BACK UP
		CAIN	TB,$LF		;[1576]  THE POINTER AND LOOK
		AOS	SRCBH+2		;[1576]
 INS 42/51	;13C13
		SETZM	TKNBH+1		;[1576] Zero ptr so will store new one
 INS 4/53	;13C14
		PUSH	PP,W1		;[1576] NO AC'S ANYWHERE
		MOVE	W1,RPLBH+1	;[1576] WHERE SCAN FOR REPLACEABLE TOKEN STARTS
		CAME	W1,TKNBH+1	;[1576] WHERE TOKEN WAS FOUND
		MOVE	W1,L1CPO	;[1576] GET THE OUTPUT CHAR POSIT BEFORE LOOK-
		MOVEM	W1,SAVECP	;[1576]  AHEAD STARTED TO RESTORE ACTIVE VALUE
		PUSHJ	PP,WRTCMT	;[1576] WRITE OUT THE DIFFERENCE, PROB. COMMENT

		MOVE	W1,TKNSIZ	;[1576] SIZE OF LAST TOKEN SCANNED
		HLRZ	CH,TE		;[1576] GET COPY OF W1, LOOK AT FLAGS
		CAIE	CH,GWRESV.+PRIOD.	;[1576] WAS LAST MATCH FOR A PERIOD?
		SOS	W1		;[1576] SUBTRACT 1 SINCE BPTR WILL BE ADVANCED
		MOVE	CH,W1		;[1576]
		ADJBP	W1,ENDTKN+1	;[1576] POINT AT END OF LAST REPLACED TOKEN
		CAMLE	CH,ENDTKN+2	;[1576] ALL IN SAME BUFFER?
		JRST	[SUB	CH,ENDTKN+2	;[1576] NO - ADJUST BUFFER HEADER
			 AOS	ENDTKN+0	;[1576] ADVANCE BLOCK NUMBER
			 MOVNS	CH		;[1576] RESET COUNT OF UNPROCESSED
			 ADDI	CH,1200		;[1576]  CHARACTERS
			 MOVEM	CH,ENDTKN+2	;[1576]
			 SUBI	W1,200		;[1576] BACK UP BYTE POINTER
			 JRST	.+1]		;[1576]
		CAMN	W1,LIBBH+1	;[1576] IF MATCHES, NO TRAILING COMMENT, ETC.
		SETZ	W1,		;[1576]  SO ZERO THE BYTE POINTER
		MOVEM	W1,ENDTKN+1	;[1576] STORE IN BUFFER HEADER
		POP	PP,W1		;[1576] 

 INS 1/57	;13C15
	;[1576] Write out comment preceding/following replaced token to cpyfil
	WRTCMT:				;[1576]
		PUSH	PP,TE		;[1576] GET SOME AC'S
		PUSH	PP,W1		;[1576]
		PUSH	PP,W2		;[1576]
		MOVE	TE,RPLBH+0	;[1576] GET THE BLOCK NBR WHERE TEXT STARTED
		CAMN	TE,RPLBLK	;[1576] DOES IT MATCH THE CURRENT NBR?
		JRST	WTCMT2		;[1576] YES
	WTCMT1:	MOVE	TE,RPLBH	;[1576] PUT IT IN TE
		PUSHJ	PP,WTSTBF	;[1576] BACK UP THE LIBRARY FILE
		AOS	RPLBH+0		;[1576] 
	WTCMT2: SOSG	RPLBH+2		;[1576] DECREMENT AVAILABLE CHARACTER COUNT
		 JRST	WTCMT1		;[1576]  NO MORE, GET ANOTHER BUFFER FULL
		IBP	RPLBH+1		;[1576] ADVANCE THE BYTE POINTER
		MOVE	CH,RPLBH+1	;[1576] HAVE WE PROCESSED ALL THE CHARACTERS
		CAMN	CH,TKNBH+1	;[1576]  UP TO THE TOKEN TO BE REPLACED?
		JRST	WTCMT4		;[1576] YES
		MOVE	CH,@RPLBH+1	;[1576] NO, LOOK AT THE CONTENTS OF THE WORD
		TRNN	CH,1		;[1576] IS IT A LINE NUMBER WORD?
		JRST	WTCMT3		;[1576] NO, LIBRARY  TEXT
		JUMPL	CH,WTCMT4	;[1576] END OF PROGRAM?
		MOVNI	CH,5		;[1576] NO--JUMP OVER 5 CHARACTERS
		ADDB	CH,RPLBH+2	;[1576]
		JUMPLE	CH,WTCMT1	;[1576] JUMP IF BUFFER NOW EMPTY
		AOS	RPLBH+1		;[1576] IT ISN'T--BUMP BYTE POINTER
		MOVEI	CH,40		;[1576] PUT OUT SIX BLANKS
		MOVNI	TE,6		;[1576]
		PUSHJ	PP,PUTCPY	;[1576]
		AOJN	TE,.-1		;[1576]
		MOVE	CH,RPLBH+1	;[1576] HAS THE BYTE POINTER NOW BEEN ADVANCED
		CAMN	CH,TKNBH+1	;[1576]  TO THE TOKEN TO BE REPLACED?
		JRST	WTCMT4		;[1576] YES
		
	WTCMT3:	LDB	CH,RPLBH+1	;[1576] LOAD A LIBRARY TEXT CHARACTER
		JUMPE	CH,WTCMT2	;[1576] 
		AOS	L1CPI		;[1576] ADVANCE INPUT CHAR START POSITION
		PUSHJ	PP,PUTCIF	;[1576] WRITE OUT THE CHAR. TO CPYFIL
		JRST	WTCMT2		;[1576]

	WTCMT4:	MOVE	TE,SAVECP	;[1576] PUT THE NEW OUTPUT CHAR POSITION
		MOVEM	TE,L1CPO	;[1576]  IN COPY REPLACING PLACE HOLDER
		MOVE	TE,RPLBLK	;[1576] IF LIBBH+1 POINTS TO A DIFFERENT
		CAME	TE,TKNBH+0	;[1576]  BUFFER, RELOAD IT NOW
		PUSHJ	PP,WTSTBF	;[1576]
		POP	PP,W2		;[1576] RESTORE AC'S
		POP	PP,W1		;[1576]
		POP	PP,TE		;[1576]
		POPJ	PP,		;[1576]

	WTSTBF:	PUSH	PP,LIBBH	;[1576] SAVE CURRENT LIB FILE BUFFER HEADER
		PUSH	PP,LIBBH+1	;[1576]
		PUSH	PP,LIBBH+2	;[1576]

		USETI	LIB,(TE)	;[1576]
		IN	LIB,		;[1576]
		  SKIPA	TE,LIBBH+1	;[1576] OK
		JRST	GETLB9		;[1576] ERROR

		DMOVE	W1,LIBBH+1	;[1576] PUT THE ACTIVE BUFFER HEADER
		SKIPG	RPLBH+2		;[1576]  INTO THE REPLACEMENT BUFFER HEADER
		DMOVEM	W1,RPLBH+1	;[1576]
		POP	PP,LIBBH+2	;[1576] RESTORE THE LIB FILE'S ACTUAL HEADER
		POP	PP,LIBBH+1	;[1576]
		POP	PP,LIBBH	;[1576]
		POPJ	PP,		;[1576]

 REP 33/58	;13C16
	GETCP4:	SWOFF	FCOPY		;TURN OFF REPLACING REQUIRED
 WIT
	;[1576] Have now finished replacing token. If there is a trailing comment,
	;[1576] copy it now.
	GETCP4:				;[1576]
		MOVE	CH,ENDTKN+1	;[1576] POINTER TO END OF REPLACED TOKENS
		JUMPE	CH,GTCP4B	;[1576] CONTINUE
		CAMN	CH,LIBBH+1	;[1576]  IF NO TRAILING DATA
		JRST	GTCP4B		;[1576]
		HRLZI	CH,ENDTKN	;[1576] COPY TRAILING BUFFER HEADER
		HRRI	CH,RPLBH	;[1576]  INTO REPLACEMENT BUFFER HEADER
		BLT	CH,RPLBH+2	;[1576]
		MOVEI	CH,1		;[1576] BACK UP LIB FILE POINTER BY ONE
		ADJBP	CH,LIBBH+1	;[1576]  AND STORE IN TKNBH+1 TO MARK
		MOVEM	CH,TKNBH+1	;[1576]  WHERE TO STOP COPY
		PUSHJ	PP,WRTCMT	;[1576] WRITE OUT TRAILING DATA
		MOVE	CH,INPTCP	;[1576] REPLACE INPUT CHAR POSITION AFTER COPY
		MOVEM	CH,L2CPI	;[1576]  WITH NEW ACTUAL COUNT FOR PADDING CALC

	GTCP4B:	SWOFF	FCOPY		;[1576] TURN OFF REPLACING REQUIRED
 REP 20/78	;13C17
	EXTERN	AMARFL		;[1316] IF -1 FORCE A-MARGIN AFTER LF FOLLOWING
				;[1316]  * COMMENT
 WIT
	;[1576] Delete unnecessary symbol AMARFL
 SUM 41983