Trailing-Edge
-
PDP-10 Archives
-
bb-bt99e-bb
-
movgen.c05
There are 2 other files named movgen.c05 in the archive. Click here to see a list.
INS 18/1 ;05C1
;
;DMN 8-Dec-82 [1442] Fix MOVE of Separate Sign Display item to 1-word COMP.
;RLF 18-OCT-82 [1421] MAKES LEFT TRUNCATION IF SIGNED NUMERIC IS MOVED
; TO SMALLER AND RIGHT JUSTIFIED ALPHA FIELD.
;SMI 28-SEP-82 [1410] FIX ILL MEM REF IN PHASE G IF DATA ITEM
; IN LINKAGE SECTION > 100000 CHARACTERS
;RLF 05-AUG-82 [1377] GIVES WARNING ON TRUNCATION
;RJD 28-JUN-82 [1371] Display destination name on truncation warning
;JEH 05-MAY-82 [1353] If literal > max, give error and exit LITD.
;JEH 16-FEB-82 [1341] ELIMINATE EXTRA WARNING ON IMMEDIATE FIELDS
;JEH 12-FEB-82 [1337] GENERATE CODE FOR MOVE OF LITERAL TO 1 CHAR
; EDITED FIELD
;RJD 08-FEB-82 [1336] CONVERT MODES FOR INDEX AND COMP-3 FIELDS
;JEH 05-NOV-81 [1324] NON-BIS MOVE OF FIELD > 3770 FAILS
;JSM 14-OCT-81 [1323] FLAG RIGHT TRUNC ON EDITED ALPHA-NUM FIELDS
;
;V12B ****************
INS 24/8 ;05C2
CAIN TD,IXMODE ;[1336] INDEX MODE?
MOVEI TD,D1MODE ;[1336] YES -- SET IT TO 1-WORD COMP
CAIN TD,%US.C3-1 ;[1336] COMP-3 MODE?
MOVEI TD,C3MODE ;[1336] YES -- USE INDEX'S SLOT
INS 32/8 ;05C3
CAIN TD,IXMODE ;[1336] INDEX MODE?
MOVEI TD,D1MODE ;[1336] YES -- SET IT TO 1-WORD COMP
CAIN TD,%US.C3-1 ;[1336] COMP-3 MODE?
MOVEI TD,C3MODE ;[1336] YES -- USE INDEX'S SLOT
INS 15/31 ;05C4
MOVE TE,EMODEA ;[1341] IF "A" IS AN IMMEDITATE,
CAIN TE,IMMODE ;[1341] ALREADY WARNED IN LITD.3
JRST MDD.3 ;[1341]
INS 24/31 ;05C5
HRRZ TC,OPERND ;[1371] MAKE SURE "B" OPERAND
MOVEM TC,CUREOP ;[1371] IS IN CUREOP
INS 52/33 ;05C6
MOVE TA,ETABLB ;[1421]
PUSHJ PP,LNKSET ;[1421]
LDB TE,DA.JST ;[1421] IS IT
SKIPN TE ;[1421] JUSTIFIED RIGHT?
TDCA TD,TD ;[1421] NO
HRLZI TD,1B18 ;[1421] YES
IORM TD,EMODEB ;[1421]
LDB TE,DA.EDT ;[1421] IS IT EDITED
LDB TD,DA.BWZ ;[1421] OR 'BLANK WHEN ZERO"
IORI TE,(TD) ;[1421]
JUMPE TE,MXX. ;[1421] NO
MOVEI TD,EDMODE ;[1421] YES,SET NEW MODE
HRRM TD,EMODEB ;[1421] SET UP EMODEB AGAIN,
REP 13/35 ;05C7
SKIPGE EFLAGA ;SEPARATE SIGN?
WIT
SKIPGE CH,EFLAGA ;[1442] SEPARATE SIGN?
INS 18/35 ;05C8
IFN ANS74,<
TLNN CH,LDN.SN ;[1442] IS IT LEADING SIGN?
JRST MDC.0 ;[1442] NO, ITS OK TO TRUNCATE FROM LEFT
ADD TE,ESIZEA ;[1442] CHECK TO SEE IF ANYTHING LEFT IN "A"
JUMPLE TE,MDC.2 ;[1442] NO, MOVE ZERO TO "B"
JRST MDC.1 ;[1442] GET ALL OF NUMBER
MDC.0:> ;[1442]
REP 22/50 ;05C9
MOVSI CH,MOVEI.+AC1 ;YES--GENERATE <MOVEI 1,<SIZE>>
HRR CH,ESIZEZ
PUSHJ PP,PUTASY
WIT
HRRZ CH,ESIZEZ ;[1410] GET SIZE
CAILE CH,77777 ;[1410] SMALL ?
SKIPA CH,[MOVEI.+AC1+ASINC,,AS.CNB] ;[1410] NO, SAVE SIZE FOR MOVE
HRLI CH,MOVEI.+AC1 ;[1410] YES, MOVE SIZE TO RH SIDE
PUSHJ PP,PUTASY ;[1410] GENERATE "MOVEI 1,SIZE"
HRRZ CH,ESIZEZ ;[1410] GET SIZE
CAILE CH,77777 ;[1410] UPDATE SIZE FOR MOVE ?
PUSHJ PP,PUTASN ;[1410] YES
;[1410] MOVSI CH,MOVEI.+AC1 ; YES--GENERATE <MOVEI 1,<SIZE>>
;[1410] HRR CH,ESIZEZ ;
;[1410] PUSHJ PP,PUTASY ;
REP 3/79 ;05C10
MAC1C.: PUSHJ PP,CUTC1 ;CUT DOWN INTEGER PLACES IF NECESSARY
WIT
MAC1C.: PUSHJ PP,CUTCX ;[1442] CUT DOWN INTEGER PLACES IF NECESSARY
INS 17/88 ;05C11
IFN ANS74,<
SKIPGE EFLAGA ;[1442] SEPARATE SIGN?
ADDI TE,1 ;[1442] YES, ACCOUNT FOR IT
>
INS 18/89 ;05C12
IFN ANS74,<
SKIPGE EFLAGA ;[1442] SEPARATE SIGN?
ADDI TE,1 ;[1442] YES, ACCOUNT FOR IT
>
INS 8/91 ;05C13
TSWF FERROR ;[1353] TOO LARGE TO STORE
POPJ PP, ;[1353]
REP 43/106 ;05C14
NOTBDP: SETZM CONVSV## ;DON'T WORRY ABOUT SAVING ACS ANYMORE
IFE BIS,< PUSHJ PP,B2PARD## ;BUILD PARAMETERS IN TEMP>
WIT
NOTBDP: SETZM CONVSV## ;DON'T WORRY ABOUT SAVING ACS
IFE BIS,< ;[1324]
IFE ANS74,< MOVE TA,ESIZEZ ;[1324] TEST ON SIZE OF FIELD
CAILE TA,MXPSZ. ;[1324] BREAK INTO SMALLER PARTS
JRST GMOVE9 ;[1324] IF GREATER THAN 3770
>; [1324] END OF IFE ANS74
PUSHJ PP,B2PARD## ;[1324] ELSE USE AS ONE CHUNK
>;[1324] END OF IFE BIS
REP 10/130 ;05C15
CFPCX.: HRRZ TE,EMODEA
WIT
CFPCX.: MOVE TE,ESIZEB ;[1377] SEE IF
SUB TE,EDPLB ;[1377] "A" NEEDS
ADD TE,EDPLA ;[1377] TO BE
SUB TE,ESIZEA ;[1377] TRUNCATED,
SKIPGE TE ;[1377] IF SO,
PUSHJ PP,MSERA. ;[1377] GIVE WARNING.
HRRZ TE,EMODEA
INS 9/143 ;05C16
MOVE TD,EMODEA ;[1341] IF "A" IS AN IMMEDIATE,
CAIN TD,IMMODE ;[1341] ALREADY WARNED IN LITD.3
JRST SETED1 ;[1341]
CAMG TE,ESIZEA ;[1323] "A" LONGER THAN "B"?
PUSHJ PP,RTERA. ;[1323] YES, WARN RIGHT TRUNCATION
REP 82/143 ;05C17
PUSHJ PP,MXX. ;MOVE 'A' TO TEMP
POP PP,SW
WIT
MOVE TD,EMODEA ;[1337] GET MODE OF "A"
CAIN TD,IMMODE ;[1337] IF IMMEDIATE MODE,
JRST SETIMM ;[1337] SET UP CALL TO GMOV.I
PUSHJ PP,MXX.
JRST SETED5 ;[1337]
SETIMM: MOVE TD,ESAVMB+2 ;[1337] GET SIZE OF "B"
MOVEM TD,ESIZEZ ;[1337]
MOVE TD,ESAVMB+3 ;[1337] GET MODE OF "B"
MOVEM TD,EMODEB ;[1337]
MOVEM TD,ESAVMA+3 ;[1337] SAVE IN "A" FOR EDIT/CONVERSION STMTS
PUSHJ PP,GMOV.I ;[1337] GENERATE IMMEDIATE MOVE
SETED5: POP PP,SW ;[1337]
SUM 210951