Google
 

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