P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05

TABLE OF CONTENTS



    32-    4	STACKING COMMANDS

    32-    6	P.STKG	STACK GLOBAL, EXTERNAL SYMBOL

    32-   24	P.STKL	STACK LITERAL VALUE

    33-   55	P.STKS	STACK SYMBOL

    34-   93	P.BDST	BRANCH DESTINATION GENERATION

    35-  169	P.RDEF	REDEFINE ADDRESS FOR .TRANSFER

    36-  187	P.LGLAB	LABEL ROUTINE, CHECKS FOR PHASE ERRORS

    36-  197	P.OP	OPCODE GENERATOR

    36-  221	NXTOPR	MOVE LISTING POINTER TO NEXT OPERAND FIELD

    37-  241	P.REF	OPERAND REFERENCE GENERATION

    38-  299	ROUTINES CALLED BY "P.REF"

    39-  515	DATA TRUNCATION CHECK ROUTINES

    40-  564	P.END	END OF PROGRAM ACTION ROUTINE

    40-  596	P.ILG	ILLEGAL INTERMEDIATE COMMAND

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 26





      1						.IDENT	\X03.11\

      2					;

      3					; COPYRIGHT (C) 1977, 1978

      4					; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASSACHUSETTS 01754

      5					;

      6					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ON A SINGLE

      7					; COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION OF THE

      8					; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

      9					; MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

     10					; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

     11					; TERMS.  TITLE TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES

     12					; REMAIN IN DEC.

     13					;

     14					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

     15					; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT

     16					; CORPORATION.

     17					;

     18					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS

     19					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

     20					;

     21

     22					;++

     23					; FACILITY:	VAX-11 MACRO OBJECT MODULE LIBRARY "MAR.OLB"

     24					;

     25					; ABSTRACT:	THIS MODULE IS PART OF THE VAX-11 MACRO ASSEMBLER, ITS DESCRIPTION

     26					;		IS ON THE FOLLOWING PAGE.

     27					;

     28					;

     29					; ENVIRNOMENT:	VAX-11 MACRO RUNS ON ANY VAX-11 WITH COMPATIBILITY MODE, UNDER

     30					;		THE CME (COMPATIBILITY MODE EMULATOR) OF VAX/VMS OR ON A PDP-11

     31					;		WITH EXTENDED INSTRUCTIONS UNDER RSX-11/M.

     32					;

     33					; AUTHOR:	STEVE POULSEN, CREATION DATE:  22-JUL-76

     34					;		DALE A. ROEDGER, 10-JAN-77 - 19-DEC-77

     35					;		DAVE N. CUTLER

     36					;		BENN L. SCHREIBER

     37					;

     38					; MODIFIED BY:

     39					;

     40					;--

     41					.IF NDF $DATA$

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 32





      1					.TITLE	P2ACT1	ACTION ROUTINES

      2	000000				.PSECT	P2ACT1

      3

      4					.SBTTL	STACKING COMMANDS

      5

      6					.SBTTL	P.STKG	STACK GLOBAL, EXTERNAL SYMBOL

      7

      8	000000				P.STKG::				; STACK GLOBAL

      9	000000					LET R5	:= (R5)				; POINT TO SYMBOL BLOCK

     10	000002					LET R0	:= R5 + #SYMVL1

     11	000010					LPUSH	(R0)+, (R0)			; PUSH VALUE ON STACK

     12	000024					LET R5	:= R5 + #SYMLEN			; POINT TO NAME

     13	000030					LET R1	:B= (R5)+			; LENGTH OF NAME

     14	000032					IF R1 GT #15. THEN

     15	000040					    LET R1 := #15.			; 15 CHARS MAX

     16	000044					END

     17	000044					DATA	#STAG				; STORE GLOBAL

     18	000056					DATA	R1				; LENGTH OF NAME

     19	000066					REPEAT THRU R1

     20	000066					    DATA	(R5)+			; WRITE OUT NAME

     21	000076					END

     22	000100					RETURN

     23

     24					.SBTTL	P.STKL	STACK LITERAL VALUE

     25

     26	000102				P.STKL::				; STACK LITERAL VALUE

     27	000102					LET R0	:= R5				; POINT TO DATA

     28	000104					LPUSH	(R0)+, (R0)			; PUSH VALUE ON STACK

     29	000120					LET R0	:= #4				; ASSUME LONG WORD

     30	000124					LET R1	:= #STAL

     31	000130					IF 2(R5) IS EQ THEN			; OPTIMIZE?

     32	000136					    LET R0	:= #2			; WORD

     33	000142					    LET R1	:= #STAUSW		; STACK UNSIGNED WORD

     34	000146					    IFB 1(R5) IS EQ THEN		; OPTIMIZE?

     35	000154						LET R0	:= #1			; YES! USE BYTE

     36	000160						LET R1	:= #STAUSB		; STACK UNSIGNED BYTE

     37	000164					    END

     38	000164					ELSE

     39	000166					    IF 2(R5) EQ #-1 AND (R5) IS LT THEN	; OPTIMIZE?

     40	000202						LET R0	:= #2			; WORD

     41	000206						LET R1	:= #STASW		; STACK SIGNED WORD

     42	000212						IFB 1(R5) EQ #-1 ANDB (R5) IS LT THEN ; OPTIMIZE?

     43	000226						    LET R0	:= #1		; BYTE

     44	000232						    LET R1	:= #STASB	; STACK SIGNED BYTE

     45	000236						END

     46	000236					    END

     47	000236					END

     48

     49	000236					DATA	R1				; STACK COMMAND

     50	000246					REPEAT THRU R0				; COPY DATA

     51	000246					    DATA	(R5)+

     52	000256					END

     53	000260					RETURN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 33

P.STKS	STACK SYMBOL



     55					.SBTTL	P.STKS	STACK SYMBOL

     56

     57	000262				P.STKS::				; STACK SYMBOL VALUE

     58	000262					LET R1	:= (R5)				; POINT TO SYMBOL BLOCK

     59	000264					IF R1 IS EQ THEN RETURN			; SPECIAL COMMAND CANCEL (BRANCH DEST)

     60	000272					IF #S.ABS SET.IN SYMFLAG(R1) THEN	; ABSOLUTE VALUE?

     61	000302					    LET R5	:= R1 + #SYMVL1		; YES, POINT TO VALUE

     62	000310					    GOTO P.STKL				; AND STACK LITERAL VALUE

     63	000312					END

     64	000312					IF #S.DF OFF.IN SYMFLAG(R1) THEN	; SYMBOL NOT DEFINED IN THIS MODULE

     65	000322					    IF #S.LOCL SET.IN SYMFLAG(R1) OR #S.EXTN OFF.IN SYMFLAG(R1) THEN

     66	000342						P2ERR	UNDEFS			; UNDEFINED SYMBOL (LOCAL OR NOT EXTERNAL)

     67	000352					    ELSE

     68	000354						JUMPTO	P.STKG			; EXTERNAL OR DEFAULT EXTERNAL (NOT LOCAL)

     69	000360					    END;IF

     70	000360					END;IF

     71	000360					LET R0	:= R1 + #SYMVL1			; POINT TO SYMBOL'S VALUE

     72	000366					LPUSH	(R0)+, (R0)			; PUSH SYMBOL'S VALUE

     73	000402					LET R3	:B= SYMSEG(R1)			; GET SEG NUMBER

     74	000406					LET R1	:= R1 + #SYMVL1			; POINT TO VALUE

     75	000412					LET R0	:= #4				; ASSUME LONGWORD

     76	000416					LET R2	:= #STPBL			; STACK PSECT BASE + LONGWORD

     77	000422					IF 2(R1) IS EQ AND (R1) IS GE THEN	; OPTIMIZE?

     78	000434					    LET R0	:= #2

     79	000440					    LET R2	:= #STPBW		; STACK PSECT BASE + WORD

     80	000444					    IFB 1(R1) IS EQ ANDB (R1) IS GE THEN ; OPTIMIZE TO BYTE?

     81	000456						LET R0	:= #1			; ONE BYTE

     82	000462						LET R2	:= #STPBB		; STACK PSECT BASE + BYTE

     83	000466					    END

     84	000466					END

     85	000466					DATA	R2				; STACK COMMAND

     86	000476					DATA	R3				; SEGMENT

     87	000506					REPEAT THRU R0				; LENGTH OF DATA

     88	000506					    DATA (R1)+				; COPY VALUE

     89	000516					END

     90	000520					RETURN

     91

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 34

P.BDST	BRANCH DESTINATION GENERATION



     93					.SBTTL	P.BDST	BRANCH DESTINATION GENERATION

     94

     95	000522				P.BDST::				; GENERATE BRANCH DESTINATION

     96	000522					LET OPSIZE	:= (R5)			; COPY FLAGS

     97	000526					LET (R5)	:= (R5) OFF.BY #^O20000	; CLEAR LAST OPR FLAG

     98	000532					IF LSTLPT HI #LSTLIN-18. THEN		; CONTINUED LINE?

     99	000542					    LET LSTLPT	:= #LSTLIN-18.		; YES

    100	000550					    LET MOPNUM	:= 0			; FIRST OPERAND

    101	000554					END

    102	000554					LET R2	:= 2(R5)			; POINT TO SYMBOL

    103	000560					LET R3	:= 4(R5)			; GET SEG #

    104	000564					IFB 1(R5) IS EQ AND R2 IS NE THEN	; SPECIAL PASS2 RESOLUTION?

    105	000576					    IFB R3 EQ SYMSEG(R2) AND #S.DF SET.IN SYMFLAG(R2) THEN

    106	000614						LET 2(R5)	:= SYMVL1(R2)	; YES!  RESOLVE SYMBOL!!

    107	000622						LET 4(R5)	:= SYMVL2(R2)	; SET SYMBOL'S VALUE

    108	000630						LET 1(R5)	:B= #1		; PRETEND IT IS OPTIMIZED!

    109	000636					    ELSE				; ELSE STACK SYMBOL IN LINKER

    110	000640						PUSH	R5			; SAVE PTR

    111	000642						LET R5	:= R5 + #2		; POINT TO SYMBOL POINTER

    112	000646						CALL P.STKS			; STACK THE SYMBOL

    113	000652						POP	R5

    114	000654					    END

    115	000654					END

    116	000654					IFB 1(R5) IS NE THEN			; OPTIMIZED OFFSET?

    117	000662					    LPUSH 2(R5),4(R5)			; STACK TARGET ADDR

    118	000702					END

    119	000702					LPUSH	PC1,PC2				; STACK CURRENT PC

    120

    121	000722					IFB (R5) EQ #1 THEN

    122	000730					    LPUSH #1,#0				; STACK A 1

    123	000750					    CALL X.ADD				; ADD TO PC

    124	000754					    CALL X.SUB				; AND CALCULATE PC OFFSET

    125	000760					    LET LSTLPT := LSTLPT - #2		; SINGLE BYTE OPERAND

    126	000766					    IFB 1(R5) IS NE THEN		; OPTIMIZE OFFSET

    127	000774						IF V2STACK(R4) IS EQ THEN	; CHECK FOR TRUNCATION

    128	001002						    IF #^C177 SET.IN V1STACK(R4) THEN

    129	001012							P2ERR	BDSTER		; BRANCH DESTINATION OUT OF RANGE

    130	001022						    END

    131	001022						ELSE

    132	001024						    LET R1 := V1STACK(R4) SET.BY #^O177 ; CHECK FOR NEGATIVE DISPLACEMENT

    133	001034						    IF V2STACK(R4) NE #-1 OR R1 NE #-1 THEN

    134	001052							P2ERR	BDSTER

    135	001062						    END

    136	001062						END

    137	001062						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE OFFSET

    138	001072					    ELSE

    139	001074	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    140	001102						GEN STOBD			; ELSE STORE BYTE DISPLACED

    141	001112					    END

    142	001112					    FORMAT #1				; 1 BYTE TO LISTING

    143	001122					ELSE

    144	001124					    LPUSH #2,#0				; STACK A 2

    145	001144					    CALL X.ADD				; ADD TO PC

    146	001150					    CALL X.SUB				; CALCULATE PC OFFSET

    147	001154					    IFB 1(R5) IS NE THEN		; OPTIMIZE OFFSET

    148	001162						IF V2STACK(R4) IS NE THEN

    149	001170						    IF V2STACK(R4) NE #-1 OR V1STACK(R4) IS GE THEN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 34-1

P.BDST	BRANCH DESTINATION GENERATION



    150	001206							P2ERR	BDSTER

    151	001216						    END

    152	001216						ELSE

    153	001220						    IF V1STACK(R4) IS LT THEN

    154	001226							P2ERR	BDSTER		; OUT OF RANGE

    155	001236						    END

    156	001236						END

    157	001236						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE OFFSET

    158	001246						LET R0	:B= V1STACK+1(R4)

    159	001252						CALL STOIM

    160	001256					    ELSE

    161	001260	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    162	001266						GEN STOWD			; STORE WORD DISPLACED

    163	001276					    END

    164	001276					    FORMAT #2				; 2 BYTES TO LISTING

    165	001306					END

    166	001306					CALL	NXTOPR				; MOVE TO NEXT OPERAND FIELD

    167	001312					RETURN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 35

P.RDEF	REDEFINE ADDRESS FOR .TRANSFER



    169					.SBTTL	P.RDEF	REDEFINE ADDRESS FOR .TRANSFER

    170

    171	001314				P.RDEF::

    172	001314					LET R5	:= (R5)				; POINT TO SYMBOL BLOCK

    173	001316					LET R0	:= R5 + #SYMVL1

    174	001324					LPUSH	(R0)+, (R0)			; PUSH VALUE ON STACK

    175	001340					LET R5	:= R5 + #SYMLEN			; POINT TO NAME

    176	001344					LET R1	:B= (R5)+			; LENGTH OF NAME

    177	001346					IF R1 GT #15. THEN

    178	001354					    LET R1 := #15.			; 15 CHARS MAX

    179	001360					END

    180	001360					DATA	#REDEF				; STORE GLOBAL

    181	001372					DATA	R1				; LENGTH OF NAME

    182	001402					REPEAT THRU R1

    183	001402					    DATA	(R5)+			; WRITE OUT NAME

    184	001412					END

    185	001414					RETURN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 36

P.LGLAB	LABEL ROUTINE, CHECKS FOR PHASE ERRORS



    187					.SBTTL	P.LGLAB	LABEL ROUTINE, CHECKS FOR PHASE ERRORS

    188

    189	001416				P.LGLAB::				; LABEL

    190	001416					LET R2		:= (R5)			; POINT TO LABEL

    191	001420					IF PC1 NE SYMVL1(R2) OR PC2 NE SYMVL2(R2) THEN

    192	001440					    P2ERR	PHASER			; PHASE ERROR!

    193	001450					END

    194	001450					LET MEBLST	:= #-1			; FORCE LABELS TO BE LISTED

    195	001456					RETURN

    196

    197					.SBTTL	P.OP	OPCODE GENERATOR

    198

    199	001460				P.OP::					; OPCODE

    200	001460					LET LSTLPT	:= #LSTLIN-13.		; MOVE TO OPCODE FIELD

    201	001466					LET MOPNUM	:= 0			; NO OPERANDS YET

    202	001472					LET R4		:= 0			; PREVENT STACK UNDERFLOW

    203	001474					LPUSH		(R5),#0			; PUSH OPCODE TO PRINT

    204	001512					IFB 1(R5) IS NE THEN

    205	001520					    CALL LFORM	<#2>			; 2 BYTE OPCODE

    206	001530					ELSE

    207	001532					    CALL LFORM <#1>			; 1 BYTE OPCODE

    208	001542					    LET LSTLPT	:= LSTLPT - #2		; PLUS TWO SPACES

    209	001550					END

    210	001550					IFB 1(R5) IS NE THEN

    211	001556					    LET R0	:B= (R5)+		; EXTENDER

    212	001560					    CALL	STOIM			; STORE IT

    213	001564					    LET R0	:B= (R5)+		; OPCODE

    214	001566					    CALL	STOIM			; STORE IT

    215	001572					ELSE

    216	001574					    CALL	STOIM <(R5)+>		; STORE OPCODE IN IMAGE

    217	001602					END

    218	001602					RETURN

    219

    220

    221					.SBTTL	NXTOPR	MOVE LISTING POINTER TO NEXT OPERAND FIELD

    222

    223	001604				NXTOPR::				; MOVE TO NEXT OPERAND FIELD

    224	001604					IF MOPNUM IS LE THEN			; END OF 1ST OPERAND OR INDEX?

    225	001612					    IF LSTLPT HI #LSTLIN-32. THEN	; ROOM?

    226	001622						LET LSTLPT := #LSTLIN-32.	; TAB TO SECOND OPERAND COLUMN

    227	001630					    END

    228	001630					    LET MOPNUM	:= MOPNUM +1		; MARK SECOND OPERAND

    229	001634					ELSE

    230	001636					    PUSH LPTCT				; END OF SECOND OPERAND

    231	001642					    CALL P.CHKL				; ALIGN LISTING

    232	001646					    IF (SP)+ EQ LPTCT AND #^O20000 OFF.IN OPSIZE THEN

    233	001664						CALL WRTLST			; MUST SKIP LINE

    234	001670					    END

    235	001670					    LET LSTLPT	:= #LSTLIN-18.		; MOVE TO FIRST POSITION

    236	001676					    LET MOPNUM	:= 0			; SIGNAL FIRST OPERAND

    237	001702					END

    238	001702					RETURN					;

    239

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 37

P.REF	OPERAND REFERENCE GENERATION



    241					.SBTTL	P.REF	OPERAND REFERENCE GENERATION

    242					;+

    243					;

    244					; PASSED DATA IS ONE WORD OF MODE(S) AND ONE WORD OF REG(S).  THE VALUE

    245					; (IF ANY) ASSOCIATED WITH THE REF IS ON THE STACK.

    246					;

    247					;-

    248

    249	001704				P.REF::					; GENERATE REFERENCE

    250	001704					LET OPSIZE	:= 4(R5)		; GET FLAGS WORD

    251	001712					LET 4(R5)	:= 4(R5) OFF.BY #^O20000 ; CLEAR LAST OPRAND FLAG

    252	001720					IF LSTLPT HI #LSTLIN-18. THEN		; CONTINUED LINE?

    253	001730					    LET LSTLPT	:= #LSTLIN-18.		; FIRST OPERAND

    254	001736					    LET MOPNUM	:= 0

    255	001742					END

    256	001742				X.REF:	IFB 5(R5) IS NE THEN			; OPTIMIZED?

    257	001750					    PUSH R4				; SAVE STACK PTR

    258	001752					    LPUSH 6(R5),8.(R5)			; YES, PUSH VALUE

    259	001772					END

    260	001772					LET R0	:B= (R5)			; PICK UP MODE

    261	001774					IF R0 IS LT OR R0 GT #15. THEN

    262	002006					    P2ERR	SYSMOD			; ILLEGAL MODE

    263	002016					    LET R0	:= 0			; FILL IN MODE 0

    264	002020					END

    265	002020					LET R1	:= R0				; MOVE MODE TO UPPER BYTE

    266	002022					PUSH	R0				; SAVE MODE

    267	002024	072127 	000004 			ASH	#4,R1				; LEFT SHIFT MODE 4 BITS

    268	002030					LET R2	:B= 2(R5)			; GET REGISTER

    269	002034					IF R2 IS LT OR R2 GT #15. THEN

    270	002046					    P2ERR	ILRGNM			; ILLEGAL REG NUMBER

    271	002056					END

    272	002056					LET LSTLPT	:= LSTLPT - #2		; ONE BYTE OPERAND

    273	002064					LET R1 :B= R1 SET.BY R2			; PACK MODE/REGISTER

    274	002066					LPUSH	R1,#0

    275	002104					CASE (SP)+				; BRANCH TO MODE ROUTINE

    276	002114	002200'				    P.REF0				; LITERAL

    277	002116	002414'				    P.REF1				; IMMEDIATE (PC)+

    278	002120	002404'				    P.REF2				; DEFERRED IMMEDIATE @(PC)+

    279	002122	003670'				    P.REF3				; POSITION INDEPENDENT (G^)

    280	002124	002302'				    P.REF4				; INDEXED

    281	002126	002362'				    P.REF5				; REGISTER

    282	002130	002362'				    P.REF6				; REGISTER DEFERRED

    283	002132	002362'				    P.REF7				; AUTODECREMENT

    284	002134	002362'				    P.REF8				; AUTOINCREMENT

    285	002136	002362'				    P.REF9				; DEFERRED AUTOINCREMENT

    286	002140	002726'				    P.REFA				; BYTE DISPLACEMENT

    287	002142	002726'				    P.REFB				; DEFERRED BYTE DISPLACEMENT

    288	002144	003144'				    P.REFC				; WORD DISPLACEMENT

    289	002146	003144'				    P.REFD				; DEFERRED WORD DISPLACEMENT

    290	002150	003402'				    P.REFE				; LONGWORD DISPLACEMENT

    291	002152	003402'				    P.REFF				; DEFERRED LONGWORD DISPLACEMENT

    292	002154					END

    293	002162					IFB 5(R5) IS NE THEN			; OPTIMIZED?

    294	002170					    POP R4				; YES, RESET STACK

    295	002172					END

    296	002172					CALL	NXTOPR				; MOVE TO NEXT OPERAND FIELD

    297	002176					RETURN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 38

ROUTINES CALLED BY "P.REF"



    299					.SBTTL	ROUTINES CALLED BY "P.REF"

    300					;

    301					; MODE DEFINITIONS

    302					;

    303		000010 				M.RPLUS = 8.				; (R)+

    304		000011 				M.DRPLUS = 9.				; @(R)+

    305

    306	002200				P.REF0:						; LITERAL

    307	002200					LET R4	:= R4 - #2			; IGNORE MODE/REG

    308	002204					IFB 5(R5) IS NE THEN			; OPTIMIZE

    309	002212					    IF V2STACK(R4) IS NE OR V1STACK(R4) HI #63. THEN

    310	002230						P2ERR	DTATRU			; DATA TRUNCATION ERROR

    311	002240					    END

    312	002240					    CALL STOIM <V1STACK(R4)>		; STORE IMMEDIATE

    313	002250					ELSE

    314	002252	112777 	000047 	000000G		    MOVB #'',@LSTLPT			; PUT QUOTE IN LISTING

    315	002260					    GEN		STOLI			; STORE SHORT LITERAL

    316	002270					END

    317	002270					FORMAT	#1

    318	002300					RETURN

    319

    320	002302				P.REF4:						; INDEXED

    321	002302					CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    322	002312					LET LSTLPT	:= LSTLPT + #2		; THIS IS A 2 BYTE OPERAND

    323	002320					FORMAT	#1				; OUTPUT MODE/REG

    324	002330					LET LSTLPT	:= LSTLPT + #3		; NO SPACE AFTER INDEX OPERAND

    325	002336					LET (R5) :B= 0				; POINT TO 'E' MODE

    326	002340	000315 				SWAB	(R5)

    327	002342					LET 2(R5) :B= 0				; RESET TO 'E' REG

    328	002346	000365 	000002 			SWAB	2(R5)

    329	002352					LET MOPNUM	:= MOPNUM -1		; DON'T SKIP TO NEW OPERAND FIELD

    330	002356					JUMPTO	X.REF				; AND RECURSE

    331

    332	002362				P.REF5:						; REGISTER

    333	002362				P.REF6:						; REGISTER DEFERRED

    334	002362				P.REF7:						; AUTODECREMENT

    335	002362				P.REF8:						; AUTOINCREMENT

    336	002362				P.REF9:						; AUTOINCREMENT DEFERRED

    337	002362					CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    338	002372					FORMAT	#1				; OUTPUT MODE/REG

    339	002402					RETURN					; THAT WAS EASY

    340

    341	002404				P.REF2:						; ABSOLUTE @(PC)+

    342	002404					LET V1STACK(R4) := #M.DRPLUS*16.+15.	; @(PC)+

    343	002412					GOTO IMM

    344	002414				P.REF1:	LET V1STACK(R4) := #M.RPLUS*16.+15.	; (PC)+

    345	002422				IMM:	CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    346	002432					FORMAT #1				; MODE/REG

    347	002442					IFB 4(R5) EQ #1 THEN			; BYTE FORMAT

    348	002452					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    349	002460						CALL BCHK			; CHECK FOR TRUNCATION

    350	002464						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    351	002474					    ELSE

    352	002476	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    353	002504						GEN STOB

    354	002514					    END

    355	002514					    FORMAT #1

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 38-1

ROUTINES CALLED BY "P.REF"



    356	002524					    RETURN

    357	002526					END

    358	002526					    IFB 4(R5) EQ #2 THEN		; WORD FORMAT

    359	002536						IFB 5(R5) IS NE THEN		; OPTIMIZE

    360	002544						    CALL WCHK			; CHECK FOR TRUNCATION

    361	002550						    CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    362	002560						    LET R0	:B= V1STACK+1(R4)

    363	002564						    CALL STOIM

    364	002570						ELSE

    365	002572	112777 	000047 	000000G			    MOVB #'',@LSTLPT		; PUT QUOTE IN LISTING

    366	002600						    GEN STOW			; STORE SIGNED WORD

    367	002610						END

    368	002610						FORMAT #2

    369	002620					    ELSE				; LONGWORD FORMAT

    370	002622						LET R2		:= V2STACK(R4)	; SAVE SIGN

    371	002626						IFB 5(R5) IS NE THEN		; OPTIMIZE

    372	002634						    CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    373	002644						    LET R0	:B= V1STACK+1(R4)

    374	002650						    CALL STOIM

    375	002654						    CALL STOIM <V2STACK(R4)>

    376	002664						    LET R0	:B= V2STACK+1(R4)

    377	002670						    CALL STOIM

    378	002674						ELSE

    379	002676	112777 	000047 	000000G			    MOVB #'',@LSTLPT		; PUT QUOTE IN LISTING

    380	002704						    GEN STOL

    381	002714						END

    382	002714						FORMAT #4

    383	002724					    END

    384	002724					RETURN

    385

    386

    387	002726				P.REFA:						; 8 BIT DISPLACEMENT

    388	002726				P.REFB:						; 8 BIT DEFERRED DISPLACEMENT

    389	002726					CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    390	002736					FORMAT	#1				; OUTPUT MODE/REG

    391	002746					IF R2 EQ #15. THEN			; PC RELATIVE ?

    392	002754					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    393	002762					    LPUSH	PC1,PC2			; SUBTRACT PC FOR LISTING

    394	003002					    LPUSH	#1,#0			; PLUS 1 FOR OPERAND

    395	003022					    CALL	X.ADD

    396	003026					    CALL	X.SUB

    397	003032						CALL BCHK1			; CHECK FOR TRUNCATION

    398	003036						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    399	003046					    ELSE

    400	003050	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    401	003056						GEN STOBD			; STORE BYTE DISPLACED

    402	003066					    END

    403	003066					ELSE

    404	003070					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    405	003076						CALL BCHK1			; CHECK FOR TRUNCATION

    406	003102						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    407	003112					    ELSE

    408	003114	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    409	003122						GEN STOB			; STORE SIGNED BYTE

    410	003132					    END

    411	003132					END

    412	003132					FORMAT	#1

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 38-2

ROUTINES CALLED BY "P.REF"



    413	003142					RETURN

    414

    415	003144				P.REFC:						; 16 BIT DISPLACEMENT

    416	003144				P.REFD:						; 16 BIT DEFERRED DISPLACEMENT

    417	003144					CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    418	003154					FORMAT	#1				; OUTPUT MODE/REG

    419	003164					IF R2 EQ #15. THEN			; PC RELATIVE ?

    420	003172					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    421	003200					    LPUSH	PC1,PC2			; SUBTRACT PC FOR LISTING

    422	003220					    LPUSH	#2,#0			; PLUS SIZE OF OPERAND

    423	003240					    CALL	X.ADD

    424	003244					    CALL	X.SUB

    425	003250						CALL WCHK1			; CHECK FOR TRUNCATION

    426	003254						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    427	003264						LET R0	:B= V1STACK+1(R4)

    428	003270						CALL STOIM

    429	003274					    ELSE

    430	003276	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    431	003304						GEN STOWD			; STORE WORD DISPLACED

    432	003314					    END

    433	003314					ELSE

    434	003316					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    435	003324						CALL WCHK1			; CHECK FOR TRUNCATION

    436	003330						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    437	003340						LET R0	:B= V1STACK+1(R4)

    438	003344						CALL STOIM

    439	003350					    ELSE

    440	003352	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    441	003360						GEN STOW			; STORE SIGNED WORD

    442	003370					    END

    443	003370					END

    444	003370					FORMAT	#2

    445	003400					RETURN

    446

    447	003402				P.REFE:						; 32 BIT DISPLACEMENT

    448	003402				P.REFF:						; 32 BIT DEFERRED DISPLACEMENT

    449	003402					CALL	STOIM <V1STACK(R4)>		; MODE/REG TO OBJECT CODE

    450	003412					FORMAT	#1				; OUTPUT MODE/REG

    451	003422					IF R2 EQ #15. THEN			; PC RELATIVE ?

    452	003430					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    453	003436					    LPUSH	PC1,PC2			; SUBTRACT PC FOR LISTING

    454	003456					    LPUSH	#4,#0			; PLUS SIZE OF OPERAND

    455	003476					    CALL	X.ADD

    456	003502					    CALL	X.SUB

    457	003506						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

    458	003516						LET R0	:B= V1STACK+1(R4)

    459	003522						CALL STOIM

    460	003526						CALL STOIM <V2STACK(R4)>

    461	003536						LET R0	:B= V2STACK+1(R4)

    462	003542						CALL STOIM

    463	003546					    ELSE

    464	003550	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    465	003556						GEN STOLD

    466	003566					    END

    467	003566					ELSE

    468	003570					    IFB 5(R5) IS NE THEN		; OPTIMIZE

    469	003576						CALL STOIM <V1STACK(R4)>	; STORE IMMEDIATE

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 38-3

ROUTINES CALLED BY "P.REF"



    470	003606						LET R0	:B= V1STACK+1(R4)

    471	003612						CALL STOIM

    472	003616						CALL STOIM <V2STACK(R4)>

    473	003626						LET R0	:B= V2STACK+1(R4)

    474	003632						CALL STOIM

    475	003636					    ELSE

    476	003640	112777 	000047 	000000G			MOVB	#'',@LSTLPT		; PUT QUOTE IN LISTING

    477	003646						GEN STOL			; STORE LONG WORD

    478	003656					    END

    479	003656					END

    480	003656					FORMAT #4

    481	003666					RETURN

    482

    483

    484	003670				P.SPIC::				; STORE POSITION INDEPENDENT CODE

    485	003670				P.REF3:						; "G^EXPR"

    486	003670					LET R4	:= R4 - #2			; IGNORE MODE/REGISTER

    487	003674					IFB 5(R5) IS NE THEN			; OPTIMIZED?

    488	003702					    LET R1	:= #VAL1		; POINT TO ADDRESS

    489	003706					    LET (R1)	:= V1STACK(R4)		; LOAD RELATIVE ADDRESS

    490	003712					    LET 2(R1)	:= V2STACK(R4)		;

    491	003720					    LET R2	:= #STPBL		; STACK PSECT BASE + LONGWORD

    492	003724					    LET R0	:= #4			; LENGTH OF DATA

    493	003730					    IF 2(R1) IS EQ AND (R1) IS GE THEN	; COMMAND CAN BE OPTIMIZED

    494	003742						LET R0	:= #2			; LENGTH OF DATA

    495	003746						LET R2	:= #STPBW		; STACK PSECT BASE + WORD

    496	003752						IFB 1(R1) IS EQ ANDB (R1) IS GE THEN ; COMMAND CAN BE OPTIMIZED MORE

    497	003764						    LET R0 := #1		; LENGTH OF DATA

    498	003770						    LET R2 := #STPBB		; STACK PSECT BASE + BYTE

    499	003774						END;IF

    500	003774					    END;IF

    501	003774					    DATA R2				; OUTPUT COMMAND

    502	004004					    DATA PSTNUM				; CURRENT PSECT NUMBER

    503	004016					    REPEAT THRU R0			; LENGTH OF DATA

    504	004016						DATA (R1)+			; OUTPUT OFFSET

    505	004026					    END;R

    506	004030					END;IF

    507	004030					GEN	STOPIC				; GENERATE POSITION IND. REF.

    508	004040					CALL	LSTCHAR <#'F>			; PRINT "F"

    509	004050					CALL	LSTCHAR <#'G>			; PRINT "G"

    510	004060					CALL	LSTCHAR	<#''>			; PRINT "'"

    511	004070					INCRPC	#1				; COUNT "MODE-REG." BYTE

    512	004102					FORMAT	#4				; PRINT LONGWORD ON STACK

    513	004112					RETURN					;

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 39

DATA TRUNCATION CHECK ROUTINES



    515					.SBTTL	DATA TRUNCATION CHECK ROUTINES

    516

    517	004114				BCHK::				; CHECK FOR BYTE TRUNCATION

    518	004114					IF V2STACK(R4) IS EQ THEN	; POSITIVE VALUE

    519	004122					    IFB V1STACK+1(R4) IS NE THEN ; UPPER 3 BYTES MUST BE ZERO

    520	004130						GOTO TRUN		 ; TRUNCATION!

    521	004132					    END;IF

    522	004132					ELSE

    523	004134					    IF V2STACK(R4) NE #-1 ORB V1STACK+1(R4) NE #-1 THEN

    524	004154						GOTO TRUN		; NEGATIVE TRUNCATION

    525	004156					    END;IF

    526	004156					END;IF

    527	004156					RETURN

    528

    529

    530	004160				WCHK::				; CHECK FOR WORD TRUNCATION

    531	004160					IF V2STACK(R4) IS NE THEN	; UPPER 2 BYTES 0 OR -1

    532	004166					    IF V2STACK(R4) NE #-1 THEN

    533	004176						GOTO TRUN

    534	004200					    END;IF

    535	004200					END;IF

    536	004200					RETURN

    537

    538

    539	004202				BCHK1:				; CHECK SIGNED BYTE TRUNCATION

    540	004202	105764 	000000G			TSTB	V1STACK(R4)		; GET BYTE SIGN

    541	004206	006700 				SXT	R0			; EXTEND SIGN INTO R0

    542	004210					IF R0 NE V2STACK(R4) ORB R0 NE V1STACK+1(R4) THEN

    543	004224					    GOTO TRUN			; TRUNCATION ERROR

    544	004226					END;IF

    545	004226					RETURN

    546

    547

    548	004230				WCHK1:				; CHECK SIGNED WORD TRUNCATION

    549	004230	005764 	000000G			TST	V1STACK(R4)		; GET SIGN OF WORD

    550	004234	006700 				SXT	R0			; EXTEND SIGN INTO R0

    551	004236					IF R0 NE V2STACK(R4) THEN	; MATCH?

    552	004244					    GOTO TRUN			; TRUNCATION ERROR

    553	004246					END;IF

    554	004246					RETURN

    555

    556

    557					;+

    558					; SIGNAL TRUNCATION ERROR

    559					;-

    560

    561	004250				TRUN:	P2ERR	DTATRU			; DATA TRUNCATION ERROR

    562	004260					RETURN

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 40

P.END	END OF PROGRAM ACTION ROUTINE



    564					.SBTTL	P.END	END OF PROGRAM ACTION ROUTINE

    565

    566	004262				P.END::					; END OF PASS 2

    567	004262					CALL	SETPC				; UPDATE PC

    568	004266					CALL	WRTLST				; WRITE OUT LAST LISTING LINE

    569	004272					CALL	FINISH				; FINISH UP ASSEMBLY

    570	004276					LET RECTYP	:= #OB.EOM		; END OF MODULE RECORD

    571	004304					IF ERRCT IS EQ AND WARNCT IS EQ THEN

    572	004320					    LET R0	:= #ER.OK		; NO ERRORS OR WARNINGS

    573	004324					ELSE

    574	004326					    IF ERRCT IS EQ THEN			;

    575	004334						LET R0	:= #ER.WRN		; WARNINGS

    576	004340						IF STATUS LT #EX$WAR THEN LET STATUS := #EX$WAR ; SET WARNING STATUS

    577	004356					    ELSE

    578	004360						LET R0	:= #ER.ERR		; ERRORS!

    579	004364						LET STATUS := #EX$ERR		; SET ERROR STATUS

    580	004372					    END

    581	004372					END

    582	004372					DATA	R0				; OUTPUT MODULE ERROR STATUS

    583	004402					LET R1		:= TRNSFR		; POINT TO TRANSFER SYMBOL

    584	004406					IF R1 IS NE THEN			; IF IT EXISTS

    585	004412					    DATA	SYMSEG(R1)		; SEGMENT

    586	004424					    DATA	SYMVL1(R1)		; ADDRESS

    587	004436					    DATA	SYMVL1+1(R1)

    588	004450					    DATA	SYMVL2(R1)

    589	004462					    DATA	SYMVL2+1(R1)

    590	004474					END

    591	004474					LET TRNSFR	:= 0			; RESET TRANSFER ADDR

    592	004500					CALL WRTOBJ				; WRITE OUT THE RECORD

    593	004504					LET PARSE	:= FALSE		; SIGNAL END OF PASS 2

    594	004510					RETURN					;

    595

    596					.SBTTL	P.ILG	ILLEGAL INTERMEDIATE COMMAND

    597

    598	004512				P.ILG::					; ILLEGAL INTERMEDIATE CODE

    599	004512	000003 				BPT					;

    600	004514					RETURN

    601

    602		000001 			.END

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 40-1

SYMBOL TABLE



A3    = 000000   	L112    003276R     002	L42     001276R     002	PSECV2= 000014   	STPBL = ****** GX

BCHK    004114RG    002	L113    003314R     002	L43     001360R     002	PSTNUM= ****** GX	STPBW = ****** GX

BCHK1   004202R     002	L114    003370R     002	L44     001440R     002	P.BDST  000522RG    002	SYMCHR= 000012

BDSTER= ****** GX	L115    003352R     002	L45     001450R     002	P.CHKL= ****** GX	SYMFLA= 000002

BLNK  = 000040   	L116    003370R     002	L46     001532R     002	P.END   004262RG    002	SYMLEN= 000011

B0      000066R     002	L117    003570R     002	L47     001550R     002	P.ILG   004512RG    002	SYMLIN= 000000

B1      000246R     002	L12     000354R     002	L5      000236R     002	P.LGLA  001416RG    002	SYMMAX= 000017

B2      000506R     002	L120    003550R     002	L50     001574R     002	P.OP    001460RG    002	SYMSEG= 000010

B3      001402R     002	L121    003566R     002	L51     001602R     002	P.RDEF  001314RG    002	SYMVL1= 000004

B4      004016R     002	L122    003656R     002	L52     001636R     002	P.REF   001704RG    002	SYMVL2= 000006

COMMA = 000054   	L123    003640R     002	L53     001630R     002	P.REFA  002726R     002	SYSMOD= ****** GX

CR    = 000015   	L124    003656R     002	L54     001702R     002	P.REFB  002726R     002	S.ABS = 004000

DTATRU= ****** GX	L125    004030R     002	L55     001670R     002	P.REFC  003144R     002	S.ASN = 000200

ERRCT = ****** GX	L126    003774R     002	L56     001742R     002	P.REFD  003144R     002	S.DBG = 002000

ER.ERR= ****** GX	L127    003774R     002	L57     001772R     002	P.REFE  003402R     002	S.DF  = 100000

ER.OK = ****** GX	L13     000360R     002	L6      000272R     002	P.REFF  003402R     002	S.EPT = 000100

ER.WRN= ****** GX	L130    004134R     002	L60     002006R     002	P.REF0  002200R     002	S.EXTN= 010000

EX$ERR= ****** GX	L131    004132R     002	L61     002020R     002	P.REF1  002414R     002	S.GLOB= 020000

EX$WAR= ****** GX	L132    004156R     002	L62     002046R     002	P.REF2  002404R     002	S.LOCL= 001000

E0      000100R     002	L133    004154R     002	L63     002056R     002	P.REF3  003670R     002	S.ODBG= 000040

E1      000260R     002	L134    004156R     002	L64     002154R     002	P.REF4  002302R     002	S.REF = 000400

E2      000520R     002	L135    004200R     002	L65     002172R     002	P.REF5  002362R     002	S.TKMS= 000377

E3      001414R     002	L136    004200R     002	L66     002252R     002	P.REF6  002362R     002	S.WEAK= 040000

E4      004030R     002	L137    004224R     002	L67     002230R     002	P.REF7  002362R     002	TAB   = 000011

FF    = 000014   	L14     000466R     002	L7      000312R     002	P.REF8  002362R     002	TRNSFR= ****** GX

FINISH= ****** GX	L140    004226R     002	L70     002240R     002	P.REF9  002362R     002	TRUN    004250R     002

IIII  = 177777   	L141    004246R     002	L71     002270R     002	P.SPIC  003670RG    002	TYPS0 = 000000

ILRGNM= ****** GX	L142    004326R     002	L72     002526R     002	P.STKG  000000RG    002	TYPS1 = 000000

IMM     002422R     002	L143    004372R     002	L73     002476R     002	P.STKL  000102RG    002	TYPS2 = 000000

LBLS0 = 000147   	L144    004360R     002	L74     002514R     002	P.STKS  000262RG    002	TYPS3 = 000000

LBLS1 = 000146   	L145    004356R     002	L75     002622R     002	P2EMSG= ****** GX	TYPS4 = 000000

LBLS2 = 000145   	L146    004372R     002	L76     002572R     002	RECTYP= ****** GX	UNDEFS= ****** GX

LBLS3 = 000041   	L147    004474R     002	L77     002610R     002	REDEF = ****** GX	VAL1  = ****** GX

LBLS4 = 000037   	L15     000466R     002	MEBLST= ****** GX	RGTANG= 000076   	V1STAC= ****** GX

LF    = 000012   	L16     000554R     002	MOPNUM= ****** GX	RTNVAL=%000000   	V2STAC= ****** GX

LFORM = ****** GX	L17     000654R     002	M.ARGC= 000014   	R6    =%000006   	WARNCT= ****** GX

LFTANG= 000074   	L2      000164R     002	M.ARGS= 000016   	R7    =%000007   	WCHK    004160RG    002

LOWCAS= 000140   	L20     000640R     002	M.DRPL= 000011   	SEMI  = 000073   	WCHK1   004230R     002

LPTCT = ****** GX	L21     000654R     002	M.END = 000012   	SETPC = ****** GX	WRTLST= ****** GX

LPTLEN= 000074   	L22     000702R     002	M.GETL= 000004   	SPACE = 000040   	WRTOBJ= ****** GX

LSTCHA= ****** GX	L23     001124R     002	M.IFLV= 000006   	STAG  = ****** GX	X.ADD = ****** GX

LSTLIN= ****** GX	L24     001074R     002	M.IFVL= 000010   	STAL  = ****** GX	X.REF   001742R     002

LSTLPT= ****** GX	L25     001024R     002	M.LINK= 000000   	STASB = ****** GX	X.SUB = ****** GX

L0      000044R     002	L26     001022R     002	M.NXTL= 000002   	STASW = ****** GX	$DIDDO= 000000

L1      000166R     002	L27     001062R     002	M.RPLU= 000010   	STATUS= ****** GX	$E$   = 000001

L10     000360R     002	L3      000236R     002	NXTOPR  001604RG    002	STAUSB= ****** GX	$F$   = 000000

L100    002724R     002	L30     001052R     002	OBJBYT= ****** GX	STAUSW= ****** GX	$I$   = 000001

L101    002676R     002	L31     001062R     002	OB.EOM= ****** GX	STOB  = ****** GX	$L    = 000005

L102    002714R     002	L32     001112R     002	OPSIZE= ****** GX	STOBD = ****** GX	$LL   = 000003

L103    003070R     002	L33     001306R     002	OUTOBJ= ****** GX	STOIM = ****** GX	$L$   = 000000

L104    003050R     002	L34     001260R     002	PARSE = ****** GX	STOL  = ****** GX	$O$   = 000000

L105    003066R     002	L35     001220R     002	PC1   = ****** GX	STOLD = ****** GX	$R    = 177777

L106    003132R     002	L36     001206R     002	PC2   = ****** GX	STOLI = ****** GX	$SV$  = 000000

L107    003114R     002	L37     001216R     002	PHASER= ****** GX	STOPIC= ****** GX	$T    = 000150

L11     000342R     002	L4      000236R     002	PSECCH= 000020   	STOW  = ****** GX	$T1   = 000000

L110    003132R     002	L40     001236R     002	PSECOP= 000016   	STOWD = ****** GX	$T2   = 000147

L111    003316R     002	L41     001236R     002	PSECV1= 000012   	STPBB = ****** GX	$Y$   = 000007

P2ACT1	ACTION ROUTINES	MACRO M1110  21-AUG-78 23:05  PAGE 40-2

SYMBOL TABLE



$Z$   = 000000   	$$T   = 000145   	$$TT  = 000140   	.GEN  = ****** GX	.$T   = 000001

$$S   = 000000



. ABS.	000000	   000

      	000000	   001

P2ACT1	004516	   002

ERRORS DETECTED:  0



VIRTUAL MEMORY USED:  12808 WORDS  ( 51 PAGES)

DYNAMIC MEMORY:  14388 WORDS  ( 55 PAGES)

ELAPSED TIME:  00:06:06

OBJ$:P2ACT1,LIS$:P2ACT1/-SP=SRC$:MD,COMMON,P2ACT1

