Trailing-Edge
-
PDP-10 Archives
-
BB-5255D-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