Trailing-Edge
-
PDP-10 Archives
-
bb-kl11c-bm_tops20_v6_1_atpch1_16
-
autopatch/getitm.c11
There are 2 other files named getitm.c11 in the archive. Click here to see a list.
REP 3/1 ;11C1
SUBTTL GET NEXT SOURCE WORD AL BLACKINGTON/CAM/SEB/DMN
WIT
SUBTTL GET NEXT SOURCE WORD AL BLACKINGTON/CAM/SEB/DMN/JEH
REP 38/10 ;11C2
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 27/13 ;11C3
MOVEM CT,TKNSIZ ;[1576]
AOS TKNSIZ ;[1576] ADD 2 FOR
AOS TKNSIZ ;[1576] OPEN AND CLOSE QUOTES
REP 3/24 ;11C4
ENDWRD: TLNE W1,GWLIT ;LITERAL?
WIT
ENDWRD: MOVEM CT,TKNSIZ## ;[1576] Store token size
TLNE W1,GWLIT ;LITERAL?
REP 43/39 ;11C5
JRST SKPSR4
WIT
;[1576] JRST SKPSR4
JRST SKPSR1 ;[1576] character has already been output
REP 28/43 ;11C6
CPLB20: CAIN TYPE,PIC. ;PICTURE IS SPECIAL
WIT
CPLB20: CAIE TYPE,PIC.+AMRGN. ;[1576]
CAIN TYPE,PIC. ;PICTURE IS SPECIAL
INS 38/47 ;11C7
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 39/51 ;11C8
SETZM TKNBH+1 ;[1576] Zero ptr so will store new one
INS 4/53 ;11C9
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 ;11C10
;[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]
IFE TOPS20,<
USETI LIB,(TE) ;[1576]
IN LIB, ;[1576]
SKIPA TE,LIBBH+1 ;[1576] OK
JRST GETLB9 ;[1576] ERROR
>
IFN TOPS20,<
SKIPE TE ;[1576]
SOS TE ;[1576] CONVERT TO WORD ADDRESS
LSH TE,7 ;[1576]
PUSHJ PP,SFPLIB## ;[1576] SET FILE POINTER
PUSHJ PP,GETLBA## ;[1576] FILL BUFFER
>
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 ;11C11
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
SUM 143396