Trailing-Edge
-
PDP-10 Archives
-
BB-H138F-BM_1988
-
7-sources/macro.bwr
There are 20 other files named macro.bwr in the archive. Click here to see a list.
September 1979
COPYRIGHT (C) 1976,1979 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
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.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE
WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
BY DIGITAL EQUIPMENT CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY
DIGITAL.
Page 2
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.
[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.
[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.
[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.
[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
**************
Page 3
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
**************
Page 4
[SYMPTOM]
Phase errors occur in literals when searching universal
files that contain Polish.
[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.
[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.
[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?
****
Page 5
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?
**************
Page 6
[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.
[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.
[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 ).
[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?
Page 7
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)?
**************