Google
 

Trailing-Edge - PDP-10 Archives - BB-4172G-BM - language-sources/macro.rnb
There are 6 other files named macro.rnb in the archive. Click here to see a list.
.ap
^september 1979
.FG30
^^COPYRIGHT (C) 1976,1979 BY
.BR
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
.B2
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
OF THE ABOVE
COPYRIGHT NOTICE. ^THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT
BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
.B1
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
.B1
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL\\.
.uc .page
 This file contains last minute information and warnings relevant
to  MACRO V53A  release.  All bug fixes  discovered since the software and
the DOC file were submitted for distribution are listed in here.  This
file serves as additional information to MCR53A.DOC.  Users should
refer to MCR53A.DOC (especially, the known problems and deficiencies
section) for full information.
.s 2
[SYMPTOM]
  When an assignment consists of:  exteranl "operator" assignment (
for  example:  X=B##+<N=N+1>-3 ) MACRO will generate bad code.  In the
above example X will be defined as  absolute  zero  instead  of  being
polish.
.s
[DIAGNOSIS]
 In the ANGLB routines  when  MACRO  decides  that  the  statement
inside  the  angle  brackets  is  an  assignment,  it  "calls" ASSIG1.
However, at this point MACRO already has an assignment  and  therefore
has  INASGN and EXTPNT set up.  When the "call" is made to ASSIG1 from
the ANGLB routines, ASSIG1 will  write  over  the  current  values  in
INASGN  and  EXTPNT.  When MACRO returns to the ANGLB routines, INASGN
and EXTPNT will have different values ( i.e.  the values corresponding
to  the  assignment inside the angle brackets ) from the values of the
original assignment.
.s
[CURE]
 In ANGLB, save the values of  INASGN  and  EXTPNT  on  the  stack
around  the  "call"  to  ASSIG1  and  pop  off  the  saved values upon
returning from ASSIG1.
.s .lt
[FILCOM]
File 1)	DSKC:MCR53A.MAC[30,5456]	created: 1555 05-Sep-1979
File 2)	DSKB:MC1153.MAC[30,5456]	created: 1609 05-Sep-1979
 
1)1	TITLE MACRO %53A(1152)	19-JUL-1979
1)	SUBTTL EDIT BY MCHC/JBC/EGM
1)	;COPYRIGHT (C) 1968, 1979 BY
****
2)1	TITLE MACRO %53B(1153)	5-SEP-1979
2)	SUBTTL EDIT BY MCHC/JBC/EGM/MFB
2)	;COPYRIGHT (C) 1968, 1979 BY
**************
1)1		VUPDATE==1		;DEC UPDATE LEVEL
1)		VEDIT==1152		;EDIT NUMBER
1)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
****
2)1		VUPDATE==2		;DEC UPDATE LEVEL
2)		VEDIT==1153		;EDIT NUMBER
2)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
**************
1)4	;*****END OF REVISION HISTORY*****
****
2)2	;START OF VERSION 53B
2)	;1153	(Q3465)	FIX ASSIGNMENT OF: EXTERNAL "OPERATOR" ASSIGNMEN
	T
2)	;		( X=B##+<N=N+1>-2 ) TO GENERATE CORRECT CODE.
2)	;*****END OF REVISION HISTORY*****
**************
1)27		CALL ASSIG1
1)		MOVE AC0,V
****
2)25	;**; [1153] INSERT @ ANGLB7 + 3L	MFB	5-SEP-79
2)		PUSH P,INASGN		;[1153] SAVE ORIGINAL VALUES OF
	INASGN
2)		PUSH P,EXTPNT		;[1153] AND EXTPNT AROUND CALL T
	O ASSIG1
2)		CALL ASSIG1
2)	;**; [1153] INSERT @ ANGLB7 + 4L	MFB	5-SEP-79
2)		POP P,EXTPNT		;[1153] RESTORE THE VALUES OF EX
	TPNT
2)		POP P,INASGN		;[1153] AND INASGN
2)		MOVE AC0,V
**************
.el .page
[SYMPTOM]
 Phase errors occur in literals  when  searching  universal  files
that contain Polish.
.s
[DIAGNOSIS]
 MACRO does not generate Polish on PASS1 and, therefore, does  not
expect  to see any Polish.  During PASS1, MACRO will try to collapse a
literal even though it contains Polish.  This is because there  is  no
check  to  see  if  MACRO  got  to the Polish handling routines during
PASS1.  On PASS2, literals containing Polish  are  not  collapsed  and
this difference is collapsing will cause phase errors.
.s
[CURE]
 Insert a check in POLPOP in order to determine  if  MACRO  is  in
PASS1  and inside a literal, if so, set ERRF in ER so the literal will
not be collapsed.
.s .lt
[FILCOM]
File 1)	DSKB:MC1153.MAC[30,5456]	created: 1459 06-Sep-1979
File 2)	DSKC:MC1154.MAC[30,5456]	created: 1136 06-Sep-1979
 
1)1	TITLE MACRO %53B(1153)	5-SEP-1979
1)	SUBTTL EDIT BY MCHC/JBC/EGM/MFB
****
2)1	TITLE MACRO %53B(1154)	6-SEP-1979
2)	SUBTTL EDIT BY MCHC/JBC/EGM/MFB
**************
1)1		VEDIT==1153		;EDIT NUMBER
1)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
****
2)1		VEDIT==1154		;EDIT NUMBER
2)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
**************
1)4	;*****END OF REVISION HISTORY*****
****
2)4	;1154		FIX PHASE ERRORS IN LITERALS CAUSED BY FINDING P
	OLISH
2)	;		IN UNIVERSAL FILES.
2)	;*****END OF REVISION HISTORY*****
**************
1)38		JUMP2 POLPOP		;[610] YES, OUTPUT IT IN PASS2
1)	   >
****
2)38	;**; [1154] CHANGE @ EVNUM + 14L	MFB	6-SEP-79
2)		JUMPA POLPOP		;[1154][610] YES, OUTPUT IT IN P
	ASS2
2)	   >
**************
1)44	POLPOP:	CALL POLFRR		;[636] SET UP FRR POLISH FLAGS
1)		SKIPE INBYTE		;[1077] DOING BYTE?
****
2)44	;**; [1154] INSERT @ POLPOP	MFB	6-SEP-79
2)	POLPOP:	JUMP1 [	SKIPE LITLVL	;[1154] INSIDE A LITERAL?
2)			TRO ER,ERRF	;[1154] YES, PREVENT COLLAPSING
2)			RET]		;[1154]
2)		CALL POLFRR		;[636] SET UP FRR POLISH FLAGS
2)		SKIPE INBYTE		;[1077] DOING BYTE?
**************
.el .page
[SYMPTOM]
 MACRO gets confused when it is switching from a Macro  definition
to a relocatable symbol definition in another Psect.  The program will
assemble but the code generated will be wrong.
.s
[DIAGNOSIS]
 In the expression evaluator, if MACRO finds  a  Macro  definition
and  then  successfully  finds  a relocatable symbol definition by the
same name in another Psect,  the  inter-Psect  reference  bit  is  not
turned on in IO.  This leads MACRO to believe that it found the symbol
in the current Psect and will compute the  relocatable  value  of  the
symbol  to  be  relocatable  from  the  current  Psect  origin  value.
However, this is not correct.
.s
[CURE]
 Insert a check at EVAS2 to check to see if the symbol  was  found
in the current Psect.  If was not, check to relocation bits in ARG and
if either are set then turn on the inter-Psect reference bit in  IO  (
i.e.  RSASSW ).
.s .lt
[FILCOM]
File 1)	DSKB:MC1154.MAC[30,5456]	created: 0947 10-Sep-1979
File 2)	DSKB:MCR53B.MAC[30,5456]	created: 0949 10-Sep-1979
 
1)1	TITLE MACRO %53B(1154)	6-SEP-1979
1)	SUBTTL EDIT BY MCHC/JBC/EGM/MFB
****
2)1	TITLE MACRO %53B(1155)	7-SEP-1979
2)	SUBTTL EDIT BY MCHC/JBC/EGM/MFB
**************
1)1		VEDIT==1154		;EDIT NUMBER
1)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
****
2)1		VEDIT==1155		;EDIT NUMBER
2)		VCUSTOM==0		;NON-DEC UPDATE LEVEL
**************
1)4	;*****END OF REVISION HISTORY*****
****
2)4	;1155		SET INTER-PSECT REFERENCE BIT ON IN IO IF SWITCH
	ING FROM
2)	;		MACRO TO SYMBOL AT EVAS3.
2)	;*****END OF REVISION HISTORY*****
**************
1)36	EVAS2:	SKIPE .IFFLG		;[1056] DOING .IF(N)?
****
2)36	;**; [1155] INSERT @ EVAS3 + 6L	MFB	7-SEP-79
2)		PUSH P,SX		;[1155] SAVE SX ON STACK
2)		MOVE SX,SGNCUR		;[1155] GET CURRENT PSECT NUMBER
2)		CAMN SX,SGWFND		;[1155] SYMBOL FOUND IN CURRENT
	PSECT?
2)		JRST EVAS3A		;[1155] YES, CONTINUE
2)		TLNE ARG,LELF!RELF	;[1155] NO, RELOCATION BITS ON?
2)		TLO IO,RSASSW		;[1155] YES, SET INTER-PSECT REF
	 BIT
2)	EVAS3A:	POP P,SX		;[1155] RESTORE SX
2)	EVAS2:	SKIPE .IFFLG		;[1056] DOING .IF(N)?
**************
.el