Trailing-Edge
-
PDP-10 Archives
-
bb-bt99g-bb
-
ifgen.c05
There are 2 other files named ifgen.c05 in the archive. Click here to see a list.
INS 22/1 ;05C1
;[1416] 68274 Generate warning if size of literal and data item not the same.
;[1404] If LITTAB is expanded, update byte pointer to literal.
;[1374] Check coll. seq. when generating high-values
;[1353] If literal generated by call to LITD. too large, FERROR set to force
; exit
;[1351] STORE READ .. INTO OPERANDS IN A FIXED LOCATION - AVOID LINK FAILURES
;[1317] FIX COBOL-74 COMPARE NUMERIC TO NON-NUMERIC ITEMS
REP 3/21 ;05C2
IFGN9: MOVEI LN,EBASEB
WIT
IFGN9: ;[1416]
IFN FT68274,< ;[1416]
MOVEI DW,E.765 ;[1416] SET UP WARNING MESSAGE
MOVE TA,ESIZEA ;[1416] GET SIZE OF OPERATOR
TSWT FBNUM ;[1416] NUMERIC LITERAL ?
CAMN TA,ESIZEB ;[1416] OR SIZE EQUAL ?
SKIPA ;[1416] YES
PUSHJ PP,OPNWRN## ;[1416] NO, GENERATE WARNING
> ;[1416]
MOVEI LN,EBASEB ;[1416]
INS 44/28 ;05C3
IFN BIS,< ;[1317]
MOVE TD,EMODEA ;[1317] NO NEED TO BREAK DOWN THE SIZE
CAME TD,EMODEB ;[1317] IF THE MODES ARE THE SAME
JRST IFDD3F ;[1317]
IFN ANS74,< ;[1317]
SKIPN COLSEQ ;[1317] AND NO SPECIAL COLLATING
> ;END IFN ANS74 ;[1317]
JRST IFDD3B ;[1317] SO USE THE WHOLE SIZE
IFDD3F: ;[1317]
> ;END IFN BIS ;[1317]
INS 50/28 ;05C4
PUSH PP,TD ;[1317] SAVE TD FOR A SECOND
IDIVI TE,3770 ;[1317] FIND OUT HOW MANY
SKIPE TD ;[1317] PARTS LEFT
ADDI TE,1 ;[1317]
MOVEM TE,ECNTA ;[1317] SAVE PART COUNT
POP PP,TD ;[1317] RESTORE TD
INS 54/28 ;05C5
HRROI TE,-1 ;[1317] DECREMENT NUMBER
ADDM TE,ECNTA ;[1317] OF PARTS LEFT
INS 16/33 ;05C6
HRRZ TA,EBASEB ;[1404] SET UP ETABLB AGAIN
PUSHJ PP,LNKSET ;[1404] INCASE THE TABLES EXPANDED
HRRM TA,EBYTEB ;[1404]
INS 51/33 ;05C7
TSWF FERROR ;[1353] LITERAL TOO LARGE
POPJ PP, ;[1353]
REP 7/39 ;05C8
HRRZI TC,2(TA) ;TC POINTS TO INTO ITEM
HRRZI TA,0(TA) ;TA POINTS TO RECORD ITEM
MOVEM TC,CUREOP ;SETUP CUREOP THE WAY MOVGN. LIKES
PUSHJ PP,MOVGN. ;GENERATE THE MOVE CODE
WIT
HRLI TB,0(TA) ;[1351] MOVE HLDTAB ENTRY
HRRI TB,EINTO## ;[1351] TO A FIXED LOCATION
MOVEI TC,EINTO ;[1351] BECAUSE TABLE EXPANSION
ADDI TC,OPNSIZ+OPNMAX;[1351] IS CLOBBERING CUREOP'S PTR
BLT TB,-1(TC) ;[1351]
MOVEI TA,EINTO ;[1351] TA POINTS TO RECORD ITEM
MOVEI TC,2(TA) ;[1351] TC POINTS TO INTO ITEM
MOVEM TC,CUREOP ;[1351] SETUP CUREOP THE WAY MOVGN. LIKES IT
;[1351] HRRZI TC,2(TA) ;TC POINTS TO INTO ITEM
;[1351] HRRZI TA,0(TA) ;TA POINTS TO RECORD ITEM
;[1351] MOVEM TC,CUREOP ;SETUP CUREOP THE WAY MOVGN. LIKES
PUSHJ PP,MOVGN. ;GENERATE THE MOVE CODE
SETZM EINTO ;[1351] RESET EINTO
INS 27/51 ;05C9
IFN ANS74,<
SKIPL TD,COLSEQ ;[1374] WAS ASCII OR EBCDIC COLL SEQ DECLARED?
JRST IFHIVA ;[1374] NO, CONT
TRNE TD,%AN.EB ;[1374] YES, WAS IT EBCDIC?
MOVEI TE,D9MODE ;[1374] YES, CHANGE MODE OF HIGH-VAL TO EBCDIC
IFHIVA: ;[1374]
>
REP 3/69 ;05C10
ADDRS3: MOVEI TC,3
WIT
ADDRS3: MOVEI TC,4 ;[1317] OFFSET BASE FOR JRSTS EQUALS
IMUL TC,ECNTA ;[1317] NUMBER OF PIECES LEFT TIMES 4
TLNE W1,NOTF ;[1317] UNLESS THIS IS A "NOT"
SETZ TC, ;[1317] THEN THE OFFSET BASE = 0
PUSH PP,TC ;[1317] SAVE THE OFFSET BASE
ADDI TC,3 ;[1317] FIRST OFFSET
REP 8/69 ;05C11
MOVEI TC,2
WIT
POP PP,TC ;[1317] RESTORE OFFSET BASE
ADDI TC,2 ;[1317] SECOND OFFSET BASE
INS 13/69 ;05C12
SKIPE ECNTA ;[1317] IF THIS ISN'T THE LAST PART
POPJ PP, ;[1317] DON'T WANT THIRD JRST
SUM 138607