Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - movgen.c07
There is 1 other file named movgen.c07 in the archive. Click here to see a list.
 INS 19/1	;07C1
	;JEH	28-NOV-83	[1507] Make handling of figurative constants more
	;				consistent
	;JEH	28-NOV-83	[1506] Trigger FIPS Flagger on figurative constant
	;				extensions
	;JEH	10-OCT-83	[1500] Warning if high or low values to numeric field
	;JEH	06-Jun-83	[1473] Don't produce truncation warnings on RPW line/pg
	;				counters
 REP 21/6	;07C2
		LDB	TE,DA.EDT	;IS IT
 WIT
		LDB	TE,DA.LPC##	;[1473] Is source a RPW line/page ctr?
		JUMPE	TE,MOVG4B	;[1473] No
		MOVE	TE,ESIZEB	;[1473] Yes, don't want a truncation warning
		CAIGE	TE,^D10		;[1473]  but don't make it larger
		MOVEM	TE,ESIZEA	;[1473] 
	MOVG4B:	LDB	TE,DA.EDT	;IS IT
 INS 37/10	;07C3

 REP 47/10	;07C4
		JRST	(TC)
 WIT
	IFN ANS74,<
		SKIPE	FLGSW##		;[1506] IF FIPS NEEDED
		JRST	MXX.6B		;[1506]   PERFORM FOLLOWING TESTS
	>; END ANS74
		MOVE	TA,EFLAGA	;[1500] GET THE TYPE OF FIG CON.
		CAIL	TA,3		;[1507][1500] 3 = QUOTE., 4 = HIVAL.
		CAIL	TA,6		;[1507][1500] 5 = LOVAL.
		JRST	(TC)

	MXX.6B:	HRRZ	TA,EBASEB	;[1506][1500] IS DESTINATION A DATAB ITEM?
		LDB	TB,LNKCOD	;[1500]
		CAIE	TB,CD.DAT	;[1500]
		JRST	(TC)		;[1500] NO, ERROR CAUGHT ELSEWHERE
		PUSHJ	PP,LNKSET	;[1500]
		LDB	TB,DA.CLA	;[1500] GET ITS CLASS
		CAIE	TB,%CL.NUM	;[1500] IT'S NOT NUMERIC, SO
		JRST	(TC)		;[1500]  CONTINUE WITH 'MOVE' INSTRUCTION
		LDB	TB,DA.USG	;[1500] GET ITS USAGE
		HRRZ	TA,EFLAGA	;[1506] AND TYPE OF FC
		CAIN	TA,3		;[1507] IS IT QUOTE.?
		JRST	BADFIG		;[1507]  YES, NOT IN NUMERIC FIELDS
	IFN ANS74,<
		CAIG	TB,DSMODE	;[1506] IF "B" (DEST) IS DISPLAY MODE, NUMERIC
		CAIN	TA,2		;[1506]  AND "A" IS NOT ZERO
		JRST	MXX.6C		;[1506]
		SKIPN	FLGSW##		;[1506] AND FIPS FLAGGING
		JRST	MXX.6C		;[1506]
		PUSH	PP,TC		;[1506] SAVE ROUTINE ADDRESS
		MOVE	TC,CUREOP	;[1506] GET "B" OPERAND ADDRESS
		MOVE	TC,(TC)		;[1506] GET FIRST WORD OF OPERAND PAIR
		LDB	LN,TCLN		;[1506] LOAD LINE NBR
		LDB	CP,TCCP		;[1506] LOAD CP
		MOVEI	TA,%LV.NS	;[1506] SET NON-STANDARD FLAGGING
		PUSHJ	PP,FLG.ES##	;[1506] CALL FLAGGER ROUTINE
		POP	PP,TC		;[1506] RESTORE TC
		HRRZ	TA,EFLAGA	;[1506] RESTORE TA
	MXX.6C:	CAIE	TA,4		;[1506] IF FIGURE CONSTANT IS HI-VALUES
		CAIN	TA,5		;[1506]  OR LOW-VALUES
		SKIPA			;[1506] SKIP
		JRST	(TC)		;[1506]
	>; END ANS74
	MXX.6D:	HRRZI	DW,E.657	;[1506][1500] GENERAL TYPE WARNING
		CAIE	TA,4		;[1500] HIGH-VALUES?
		JRST	MXX.6E		;[1506][1500] NO
		HRRZI	DW,E.655	;[1500] YES
		CAILE	TB,%US.DS	;[1500] AND NON-DISPLAY?
		HRRZI	DW,E.656	;[1500] YES
	MXX.6E:	PUSH	PP,TC		;[1506][1500] SAVE TC
		PUSHJ	PP,OPNWRN	;[1500] PRINT OUT WARNING
		POP	PP,TC		;[1500] RESTORE TC
		JRST	(TC)		;[1500] CONTINUE ON

 REP 28/65	;07C5
		JRST		@MZX.(TB)	;GO TO PROPER ROUTINE
 WIT
	IFN ANS74,<
		HLRZ	TC,	OPERND		;[1506] GET "A" OPERAND ADDRESS
		MOVE	TC,	(TC)		;[1506] GET FIRST WORD
		SKIPE	FLGSW			;[1506] NO FLAGGER WANTED
		TLNN	TC,	GNALL		;[1506] IF 'ALL 0', FLAG AS EXTENSION
	>;
		JRST		@MZX.(TB)	;GO TO PROPER ROUTINE
	IFN ANS74,<
		MOVEI	TC,	@MZX.(TB)	;[1506] STORE ROUTINE'S ADDRESS
		JRST	MXX.6B			;[1506]	SET UP FOR FLAGGER
	>;
 INS 14/66	;07C6
		JUMPE	TC,MZC1.	;[1507] MLAC1. DIDN'T GEN CODE IF LIT = 0
 REP 9/71	;07C7
	MLAC1.:	HLRZ	TA,OPERND	;[621] IS "ALL" SPECIFIED?
 WIT
	MLAC1.:	MOVEI	LN,EBASEA	;[1507] 
		PUSHJ	PP,CONVNL	;[1507] CONVERT THE LITERAL TO BINARY
		TSWF	FERROR		;[1507] CONTINUE IF NO ERROR
		POPJ	PP,		;[1507]	

		SKIPG	ESIZEA		;[1507] ANYTHING LEFT IN LITERAL?
		JRST	MLAC1A		;[1507] NO

		TSWF	FANUM		;[1507] NO QUOTED LITERALS
		JUMPE	TC,CPOPJ	;[1507] IF LITERAL = 0, EXIT NOW

		HLRZ	TA,OPERND	;[621] IS "ALL" SPECIFIED?
 REP 13/71	;07C8
		MOVEI	LN,EBASEA
		PUSHJ	PP,CONVNL
		TSWF	FERROR;
		POPJ	PP,
 WIT

 DEL 21/71	;07C9
		SKIPG	ESIZEA		;ANYTHING LEFT IN LITERAL?
		JRST	MLAC1A		;NO

		JUMPE	TC,CPOPJ	;YES--IS VALUE ZERO?

 REP 24/72	;07C10
		JUMPE	TC,MZC1.		;0 IS SAME AS ZERO
		PUSHJ	PP,MFP%L0		;NOT ZERO, GENERATE LITERAL
 WIT
		TRNE	FANUM			;[1507] "0" IS NOT ZERO
		JUMPE	TC,MZC1.		;0 IS SAME AS ZERO
		PUSHJ	PP,MFP%L0		;NOT ZERO, GENERATE LITERAL
		PUSH	PP,TC			;[1507] SAVE LITERAL
		HLRZ	TA,OPERND		;[1507]	GET THE ADDRESS OF SRC OPERAND
		MOVE	TD,0(TA)		;[1507] GET FIRST WORD
		TLNE	TD,GNALL		;[1507] WAS 'ALL' SPECIFIED?
		PUSHJ	PP,BADALL##		;[1507]  NOT ALLOWED
		POP	PP,TC			;[1507] RESTORE LITERAL
 REP 31/82	;07C11

 WIT

 SUM 47648