Trailing-Edge
-
PDP-10 Archives
-
ap-c796e-sb
-
mcr53.doc
There are no other files named mcr53.doc in the archive.
MACRO.DOC -- Changes from MACRO V52(551) to V53(1020)
March 1978
COPYRIGHT (C) 1976,1978 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.
MCR53.DOC Page 2
MACRO.DOC -- Changes from MACRO V52(551) to V53(1020)
March 1978
1.0 SUMMARY
The purpose of this release is to provide a software
multiple-segmentation (PSECT) facility.
MACRO version 53 is supported by Digital Equipment Corporation, and
runs on all supported monitors as released. Version 53 fully
supersedes all previous versions, and includes edits up to #1020.
MACRO V53 requires field image HELPER.REL to be on SYS: in order to
type out the help file MACRO.HLP, which should be placed on HLP: or
REL:.
MACRO V53 requires that if PSECTS are used, the resultant .REL files
be loaded with LINK V4, which fully supports the PSECT facility.
MACRO is documented in the DECsystem-10 User's Guide, and in the
DECsystem-10 MACRO User's Guide.
2.0 EXTERNAL CHANGES
1. .PSECT pseudo-op:
The .PSECT pseudo-op directs MACRO to start or continue
placing code and/or data into the named program section.
Syntax:
.PSECT name, origin
Where "name" is the name of the program section; name may be
any construction which would be valid as a symbol but will
not conflict with a symbol or macro of the same name.
MACRO will generate a global symbol having the PSECT name and
at load time the symbol will take on the PSECT origin as its
value.
The origin, if supplied in the program, tells LINK where the
PSECT origin should be. If not supplied then it must be set
by the /SET:NAME:ORIGIN switch to LINK. If both are
supplied, whichever occurs first is used and cannot be
over-ridden by a later declaration.
MCR53.DOC Page 3
2. .ENDPS pseudo op:
The .ENDPS pseudo-op directs MACRO to stop placing code
and/or data into the current program section and to start
placing it in the previous (more outer nested) program
section. Syntax:
.ENDPS [name]
The name field is optional and if present will be checked
against the current .PSECT name. If there is a disagreement,
a warning diagnostic will be issued. This check cannot be
done for the blank .PSECT.
3. "PSECT" Nesting
.PSECT and .ENDPS are essentially brackets which surround the
code and/or data which is to be loaded into the named program
section. These brackets may be nested to a maximum depth
which is an assembly parameter normally set to 16 decimal
when the MACRO assembler is assembled. Another such assembly
parameter within MACRO is the maximum number of distinct
.PSECT names which may occur within a single assembly; it is
normally set to 64 decimal.
4. Restrictions
a. .PSECT and .ENDPS are not allowed within a "UNIVERSAL"
file.
b. While MACRO allows a macro and a symbol to have the same
name, this can produce unpredictable results if the two
are not in the same symbol table during an assembly.
This can happen if one is in a universal symbol table and
the other is not, or if the two appear to be in separate
segments. It is recommended that symbols and macros of
the same name not be employed. If they are, DEC reserves
the right to change the implementation of the MACRO
assembler with respect to how this situation is treated.
c. If universal files are searched while assembling a
program with multiple program sections, symbols within
the universal files will appear to be in the blank
program section. This is particularly relevant to
relocatable symbols.
d. .PSECT, HISEG, and TWOSEG are all mutually exclusive.
e. Literals containing inter-PSECT references will not be
collapsed, therefore if there are two such identical
literals, two separate entries in the literal table will
be made.
f. PRGEND is illegal with .PSECT and MACRO will treat it
like END and the rest of the file will be truncated.
MCR53.DOC Page 4
5. New Error Messages:
"S" Errors:
a. Attempt to nest .PSECTs too deep.
b. Attempt to unnest .PSECTs too far.
c. .PSECT occurs while assembling a universal.
d. Too many distinct .PSECT names.
e. Attempt to mix .PSECT with HISEG/TWOSEG.
"Q" Warning (additional):
a. .ENDPS specifies the wrong name.
b. .PSECT specifies conflicting attributes.
c. .PSECT specifies unknown attributes.
New MCR error messages:
a. MCRSTO -- Search table overflow
b. MCRATS -- Argument too small.
c. MCRLTL -- Literal too long.
d. MCRISD -- Illegal syntax in DEFINE.
e. MCRISR -- Illegal syntax in REPEAT.
f. MCRISC -- Illegal syntax in conditional.
g. MCRISI -- Illegal syntax in IRP or IRPC or REPEAT.
6. .IF ARG,REFERENCED,< .... >
.IF ARG,NEEDED,< .... >
REFERENCED -- The code will be assembled if arg is in the
symbol table.
NEEDED -- The code will be assembled if arg is in the
symbol table and its value is undefined.
7. Alternate Interpretations of MACRO Arguments
The normal argument passed by a macro call is simply the
string of characters given with the call. MACRO offers three
alternate interpretations of the passed argument.
MCR53.DOC Page 5
If you prefix a backslash (\) to an argument, MACRO expects a
numerical value and the ASCII string representation of the
value is passed.
If you prefix a backslash-apostrophe (\') to an argument, the
argument is expected to have a value of a SIXBIT string. The
ASCII representation of that SIXBIT value is passed.
If you prefix a backslash-quotemark (\") to an argument, the
argument is expected to have a value of a ASCII string. The
ASCII string value is passed.
LALL
DEFINE LOOKIE(STR,ARG) <
REMARK The passed argument is: ARG
REMARK build a new string: str'arg >
;Example of prefixing actual argument with \
CASE1: VALUE=0
LOOKIE LPT,<VALUE+1>^
REMARK The passed argument is: VALUE+1
REMARK build a new string: LPTVALUE+1
CASEA1: REPEAT 3,<
LOOKIE LPT,\<VALUE+1>
VALUE=VALUE+1>
LOOKIE LPT,\<VALUE+1>^
REMARK The passed argument is: 1
REMARK build a new string: LPT1 ^
VALUE=VALUE+1
LOOKIE LPT,\<VALUE+1>^
REMARK The passed argument is: 2
REMARK build a new string: LPT2 ^
VALUE=VALUE+1
LOOKIE LPT,\<VALUE+1>^
REMARK The passed argument is: 3
REMARK build a new string: LPT3 ^
VALUE=VALUE+1
;Example of prefixing argument with \'
CASE2: VALUE='A'
LOOKIE DSK,VALUE^
REMARK The passed argument is: VALUE
REMARK build a new string: DSKVALUE ^
CASE2A: REPEAT 3,<
LOOKIE DSK,\'VALUE
VALUE=VALUE+1>
LOOKIE DSK,\'VALUE^
REMARK The passed argument is: A
REMARK build a new string: DSKA ^
VALUE=VALUE+1
MCR53.DOC Page 6
LOOKIE DSK,\'VALUE^
REMARK The passed argument is: B
REMARK build a new string: DSKB ^
VALUE=VALUE+1
LOOKIE DSK,\'VALUE^
REMARK The passed argument is: C
REMARK build a new string: DSKC ^
VALUE=VALUE+1
;Example of prefixing argument with \"
CASE3: VALUE="XIT"
LOOKIE <?ERROR IN LINK MODULE LNK>,VALUE^
REMARK The passed argument is: VALUE
REMARK build a new string: ?ERROR IN LINK MODULE LNKVALUE ^
CASE3A: LOOKIE <?ERROR IN LINK MODULE LNK>,\"VALUE^
REMARK The passed argument is: XIT
REMARK build a new string: ?ERROR IN LINK MODULE LNKXIT
8. Polish bugs fixed in the following areas:
<XWD POL,POL> or <POL,,POL>
<IOWD POL>
-<POL>
-EXP where EXP is a relocatable expression
@POL(AC)
OPDEF FOO [ POL ]
Generate full word fixup for FOO##
9. Polish listing format
A number sign (#) in the listing indicates that a Polish
expression is required to resolve the expression:
For example:
561 02 000 000000# ;requires right half Polish fixup
000000000000# ;requires full word Polish fixup
000000# 000002 ;requires left half Polish fixup
MCR53.DOC Page 7
10. PSECT index in listing
PSECT index is output at the end of relocation counter value
in the listing, see example below:
5172 ;GETNAM - RETURN LOCAL NODE NAME
5173
5174 005654'02 256 04 0 00 007001' GETNAM: UMOVE T2,2 ;GET ADDRESS OF USER'S ARGUMENT BLOCK
5175 005655'02 256 04 0 00 007002' UMOVE T1,.NDNOD(T2) ;GET POINTER TO WHERE NODE NAME IS TO GO
5176 005656'02 201 03 0 02 000000 MOVEI T3,.NDNOD(T2) ;GET ADDRESS TO RETURN UPDATED POINTER
5177 005657'02 561 02 0 00 000000# HRROI T2,OURNAM-1 ;GET POINTER TO SOURCE STRING
5178 005660'02 260 17 0 00 000000* CALL CPYTU1 ;COPY STRING TO USER SPACE, RETURN POINTER
5179 005661'02 254 00 0 00 005653* RETSKP ;DONE, RETURN SUCCESS
5180
5181
5182 TNXEND
5183 END
PROGRAM BREAK IS 000000
PSECT 1 BREAK IS 000534 FOR RSCOD
PSECT 2 BREAK IS 007036 FOR NRCOD
PSECT 3 BREAK IS 000066 FOR BGSTR
PSECT 4 BREAK IS 000011 FOR BGPTR
CPU TIME USED 02:28.153
98P CORE USED
11. Polish not allowed with RELOC & BLOCK & Conditionals
12. KL instructions have been updated
JRST and JFCL Mnemonics
-----------------------
254 04 0 00 000000 HALT 254 04 0 00 000000 JRST 4,
255 06 0 00 000000 JCRY 255 06 0 00 000000 JFCL 6,
255 04 0 00 000000 JCRY0 255 04 0 00 000000 JFCL 4,
255 02 0 00 000000 JCRY1 255 02 0 00 000000 JFCL 2,
254 12 0 00 000000 JEN 254 12 0 00 000000 JRST 12,
255 01 0 00 000000 JFOV 255 01 0 00 000000 JFCL 1,
255 10 0 00 000000 JOV 255 10 0 00 000000 JFCL 10,
254 02 0 00 000000 JRSTF 254 02 0 00 000000 JRST 2,
254 01 0 00 000000 PORTAL 254 01 0 00 000000 JRST 1,
254 06 0 00 000000 XJEN 254 06 0 00 000000 JRST 6,
254 05 0 00 000000 XJRSTF 254 05 0 00 000000 JRST 5,
254 07 0 00 000000 XPCW 254 07 0 00 000000 JRST 7,
254 14 0 00 000000 XSFM 254 14 0 00 000000 JRST 14,
MCR53.DOC Page 8
KL10 EXTEND Instruction Mnemonics
---------------------------------
002 00 0 00 000000 CMPSE 010 00 0 00 000000 CVTDBO
007 00 0 00 000000 CMPSG 011 00 0 00 000000 CVTDBT
005 00 0 00 000000 CMPSGE 004 00 0 00 000000 EDIT
001 00 0 00 000000 CMPSL 016 00 0 00 000000 MOVSLJ
003 00 0 00 000000 CMPSLE 014 00 0 00 000000 MOVSO
006 00 0 00 000000 CMPSN 017 00 0 00 000000 MOVSRJ
012 00 0 00 000000 CVTBDO 015 00 0 00 000000 MOVST
013 00 0 00 000000 CVTDBT 020 00 0 00 000000 XBLT
13. Tags defined in a literal:
Tags in literals may be referenced anywhere from the program
with the following restrictions.
a. May NOT be used in an arbitrary expression.
b. May NOT be referenced from another PSECT.
14. Code Generation Changes:
The descriptions of the block types 24,23, and 22 supercede
the descriptions in the LINK manual.
BLOCK 24 -- MACRO generates a set of block 24's at the
beginning of the Rel file for each PSECT in this assembly. A
type 24 contains three data words -- a PSECT name in SIXBIT,
its attributes (right half) and its index (left half), and
its origin. A block 24 establishes a PSECT and associates it
with an index number so that block 22's and block 11's that
follow may reference PSECTs by the PSECT index number.
BLOCK 22 -- Interspersed with the type 1 and type 2 codes
there are type 22 codes. A type 22 directs the linking
loader to place subsequent type 1 and type 2 information into
the named .PSECT. A type 22 will also precede the type 7
block if one occurs and other type 22s have been emitted. A
type 22 contains only one data word which is the PSECT index.
MCR53.DOC Page 9
BLOCK 23 -- MACRO generates a set of block 23's for all the
PSECTs at the end. A type 23 contains two data words. The
first is a .PSECT name in SIXBIT. The second contains the
.PSECT break.
BLOCK 11 -- There is an additional type of Polish fixup which
occurs for assemblies with multiple .PSECTs. With multiple
.PSECTs, it is necessary to distinguish among the .PSECTs
within the fixups in order that relocation will occur
properly. Halfword PSECT index of the form 400000+(n-1)
indicates next relocatable address is to be relocated with
respect to the PSECT which is named by the n'th type 23
block. The very first PSECT index in block 11 defines the
current PSECT and the relocation counter for the store
address. Any relocatable operand with a different relocation
counter must be preceded by the proper PSECT index.
BLOCK 10 -- Forward references of a tag defined in a LITERAL
are chained similarly to that of an external chain. A block
10 is generated containing the value of the tag and the start
of the chain. A separate chain is generated for each PSECT
just as a separate external chain is generated for PSECT.
15. Better RELOC,LOC, .ORG interactions
16. Add .NODDT pseudo-op --
Suppress DDT and part of symbol names
17. REL files generated by MACRO V52 and MACRO V53 may not
compare with FILCOM.
18. Universals are not searched when processing label, ##, END
statement and the following pseudo-ops: EXTERN, OPDEF,
.ASSIGN, SYN, INTEGER, ARRAY, .COMMON, DEFINE. Pseudo-ops
INTERN and ENTRY will still search universals since they are
not truely defining occurrences.
19. OPDEF's may be declared INTERNAL only if no label of the same
name exists.
20. LABEL+OFFSET error reporting is now entirely source-oriented.
Specifically, blank lines are reflected in the offset, and
MACRO/REPEAT expansion lines are not.
MCR53.DOC Page 10
3.0 KNOWN BUGS AND DEFICIENCIES
1. MACRO can't generate any Polish block which will use more
than 17 words.
2. You can't forward reference a Polish symbol,
should do:
FOO=EXT##+1
.
.
.
MOVE 1,FOO
3. A Polish OPDEF is treated internally as a full word
assignment. As a result, AC and address may not be used with
it.
4. MACRO's floating point input routines do not agree with those
of other compilers, FORTRAN in particular.
5. MACRO will not assemble a line in PIP correctly:
DISP ),0
Add angle brackets around the un-paired close paren in
PIP.MAC:
DISP <)>,0
6. MACRO will not assemble a line in RUNOFF correctly:
MSG$ ..."
Delete the unpaired quote mark at the end of the line
RUNOFF.MAC:
MSG$ ...
7. MACRO prevents the TWOSEG pseudo-op from working across
PRGEND. LOGIN 57 took advantage of the bug. Correct LOGIN
sources as follows: remove the TWOSEG pseudo-op from page 1
of LGNUNV. On page 2 of LGNUNV, add a TWOSEG to the LGNDCL
macro definition just before the RELOC 400000. In LGNLOW,
add a TWOSEG before the RELOC 400000. This fix is included
in LOGIN version 60, which is fully compatible with versions
50A, 52, and 53 of MACRO.
8. MACRO currently will not allow pooling of literals which
contain labels.
MCR53.DOC Page 11
9. If the right hand side of an assignment statement is an
expression containing Polish, angle-brackets must surround
the expression.
10. Expressions of the form
<EXT +1>B7
generate a ?MCREPP error message.
11. Incorrect CREF listings generated when:
.zero loop of IRP is done.
.references suppressed by XLIST inside macro expansion.
12. Phase errors will be generated by MACRO when assembling the
distributed MIC source. MACRO allows macro calls to occur in
the operand field of a source statement. The sample program
below shows the sequence of instructions in the MIC source
which causes the phase errors to occur.
SEARCH MACTEN
JRST MACERR
MACERR:
END
As shown above, MIC.MAC forward-references MACERR, a
user-defined label. However, MACERR also happens to be
defined in MACTEN as a macro. Since MIC searches MACTEN, and
since macro calls are allowed in operand fields, the macro
definition is used in assembling the statement "JRST MACERR"
in pass one. This causes phase errors in pass two when the
correct label definition is used. Problem may be fixed by
changing the lable name MACERR so as not to conflict with the
macro name.
13. In SETSRC.MAC, MACRO encounters a forward reference of a
symbol name JSYS, and MACRO assembles in TOPS20 JSYS opcode
instead of user label address. By changing the label name
and all its references in SETSRC, you will get the correct
assembly.
4.0 INSTALLATION INSTRUCTIONS
The MACRO source file as distributed assembles and loads into a
sharable segment. For this release, MACRO.EXE is being distributed.
Installations without .EXE file support must reload to get MACRO.SHR.
To install MACRO Version 53 on your system, copy the file MACRO.EXE to
SYS:.
MCR53.DOC Page 12
The distributed version of MACRO.CTL was used to first build MACRO
using field image (MACRO 52) MACRO, and then use this created version
to create itself. The two versions of MACRO V53 were then checked for
inconsistancies. None were found.
Customers who wish to rebuild MACRO after installing any changes can
use MACRO.CTL as a guide to the building process. It is unlikely,
however, that the .CTL file can be executed without modification on
most user systems. In particular, attention should be given to ERSATZ
devices, structure names, PPNs and other such system parameters.
MACRO requires field image HELPER, which is loaded implicitly via an
imbedded .REQUIRE pseudo-op in the MACRO source file.
5.0 INTERNAL CHANGES
;Continued Version 52
;553 (22193) Flag non-sixbit in single-quote strings with
Q-error
;554 (10382) Don't replace ^Z with LF unless input DEV is TTY
;555 (10202) Warn user if code stored before .COMMON
;556 (22425) Allow leading numeric char in arguments to
"SEARCH"
;557 (22491) Generate -X (where X is relocatable) properly
;560 (22488) Place all occurences of flags 'INASGN', 'INANGL'
under Polish Feature Test
;561 (22490) Generate -1^!X (where X is relocatable) properly
;562 (22544) Fix page offset after PRGEND
;563 (22495) Fix ;; comments listing when defined under LALL
;564 (22493) Prevent "IO TO UNASSIGNED CHANNEL" error after
"?POLISH TOO COMPLEX" error message
;565 (22489) Prevent terminal wait after PRGEND after being
detached or CCONTED
;566 (22498) Remove Edit 531; broke listing of embedded macro
calls under XALL
;567 (22500) Enhancement EDIT/REQUEST REL:HELPER,LC SYMBOL
TYPES,U-LC MONTHS
;570 (10570) Prevent E-errors after purge of UNDEF or EXT
symbol
;571 (22676) Force HISEG to start on page boundary, not
K-boundary
;572 (22748) Replace Edit 556 by alternate edit accomplishing
same purpose
;573 (22321) Fix LOC/RELOC in TWOSEG RELOC programs
;574 (22501) Add "ILLEGAL SYNTAX IN MACRO DEFINITION" error
message
;575 (22492) Put all PSECT-RELATED code under FTPSECT switch
;576 (22485) Fix LABEL+OFFSET accross segments, and when OFFSET
> 1000
;577 (22187) Fix listing of MACRO expansion with errors under
SALL
;Start of Version 53
MCR53.DOC Page 13
;600 Turn on FTPSEC
;601 Fix tags in LIT used with PSECTs
;602 Allow .PSECT/.ENDPS in LIT
;603 Force expression evaluation in conditional.
;604 Comment out 1LINE @BOUT20+5 (needs re-work)
;605 Fix bug with wrong RELOC value for PSECT @%SWSG2+6
;606 E-error if FOO##=EXP @ASSIG3+6
;607 Generate a word of 0 for [SIXBIT\\] @SIXB20+
;610 Do expression of Polish symbols from UNV in PASS2
@EVNUM+
;611 Alphabetize .IF/.IFN attribute table.
;612 Fix bug with "IOWD A##,FOO" when used with PSECT
;613 Store current RADIX in CURADX and free up RX as
FRR.
;614 Output "#" bin binary listing to indicate Polish
fixup.
;615 Output number of pages used instead.
;616 Don't allow Polish for "BLOCK" & "RELOC"
pseudo-ops.
;617 Don't make LTAGF symbols externals at end of
PASS1.
;620 Q-error if externals purged.
;621 Add .IF FOO,REFERENCED,<...>
;622 Fix bug with outputting "#"
;623 Allow expressions of externals and PSECT-SYMBOLS.
;624 Allow Polish with OPDEF
;625 Generate Polish FWF for [A##]
;626 Add .IF FOO,NEEDED,<...>
;627 Update KL instructions
;630 More on Edit 625 to check for LH=0,INDIRECT,INEX,
& POLISH
;631 Generate a set of BLOCK23's before all the symbols
;632 (Same as 577)
;633 Output "#" and "*" for assignments and symbol
tables.
;634 Allow "A FOO##+1(1)".
;635 Add special chars \' and \" in a macro call.
;636 Allow POLISH and INDEXing
;637 Don't do FWF for OPDEF A[B##]
;640 Save AC FR on stack before doing exponent in
number processing.
;641 Check for PSECT when doing FWF @OCTFW+
;642 Set PSECT index to 0 before generating BLOCK 5
;643 Fix bug with FOO##(1)
;644 Fix bug with EXP FOO##,FOO##,FOO##
;645 FWF for undefined symbol in operator field.
;646 Illegal to use PRGEND with PSECT, treat it as end
;647 Output PSECT INDEX in listing
;650 (22327) Fix disappearing macro calls with FF under SALL
;651 (22226) Fix variety of listing bugs tied to error-flagging
;652 (22999) Fix "ENTRY FOO" where FOO is also an OPDEF
;653 (22497) Flag "VERSION SKEW" if old-style UNV with SYN
;654 Fix typographical error in published Edit 564
;655 (22482) Fix too many LINES/PAGE with XLIST inside SALL
MACRO
MCR53.DOC Page 14
;656 (22499) Fix "?ILL MEM REF" while expanding macro calls
embedded commas
;657 (Q1382) Extend new MACRO ARG handling to parenthesized a
ARG string
;660 (23098) Restore IFE/IFN A## handling to old (pre-52) way
;661 (22515) Prevent ILL MEM REF on unclosed text in multi-line
assignment
;662 Simplify Edit 561
;663 (23170) Fix lost errors in PASS1 during line "IMAGE"
typeout
;664 Speed and efficiency enhancements; ROUTINES:
GETCHR,PRINT,CHARAC,READ1A
;665 (23246) Don't treat leading commas as semicolons
;666 Fix various bugs tied to "LABEL+OFFSET" typeout
;667 Fix bad ASCIZ in LITERALS (side-effect of Edit
661)
;670 Allow >NODDT of OPDEF (i.e., .NODDT PJRST,CALL,
etc.)
;671 Remove Edit 657 (i.e., take familiar path of least
resistance with regard to existing programs)
;672 Ignore redundant search ARGs, add "Search Table
Overflow" error message
;673 (Q1286) List CRLFs in parenthesized MACRO ARGs correctly
;674 Give E-error for external array name
;675 Handle INTERN of mixed ARG types correctly
;676 Prevent the use of argumens < 4 to /NNL
;677 Allow .IF EXPRESSION,QUALIFIER<CODE> (omitting
comma)
;700 Alter "Core Allocation Problem" error message,
force reallocation unless /U (memory-resident
universals)
;701 Flag non-sixbit in SIXBIT Pseudo-op correctly,
terminating string
;702 Replace MBR,MBC,MBI messages with ISR,ISC,ISI
(syntax checks)
;703 (22939) Handle comples forward REF of SYM where SYM=POLISH
correctly
;704 Fix bad CREF output when listing MACRO ARGS
W/CRLFs and "\"
;705 (23527) Fix ILL MEM REF with IFX <POLISH SYMBOL> (side
effect of 660)
;706 (22484) Make <LH,,POLISH>,<POLISH,,RH>,<POLISH,,POLISH>
work
;707 Fix bug with LITERAL PC when doing PSECT changes
at end.
;710 Get correct relocation when evaluating "!".
;711 Enter Psect-names as external symbols.
;712 Collapse 2 instructions into EXTRN2 routine
;713 Move no UNV search flag into AC FRR.
;714 Reset symbol table pointer when a tag has other
use in DIFF PSECTs
;715 Search only current symbol table in looking for
VARs.
;716 Reset REL1P pointer at pass initialization
;717 Bug fix with PSECT output format
MCR53.DOC Page 15
;720 Flag .DIRECT no no ARG with Q-error
;721 Fix bug in Edit 573 with RELOC/RELOC/LOC/RELOC ARG
;722 (10945) Flag IOWD A,B where A is RELOC with R-error
;723 (10929) Fix truncating or garbling of long PRINTX text
;724 (23826) Give "UNASSIGNED" error message for undefined
symbols with unresolved 36BIT values (e.g.
B=B+1000000).
;725 (23588) Don't collapse literals which contain labels.
This edit should be removed when a facility is
added to update label values after literal
pooling.
;726 Implement "LTL LITERAL TOO LONG" error message.
;727 Generate correct Polish for <POL>.
;730 Generate correct Polish for <IOWD POL,POL>
;731 BBN Bug fix with GETCHR
;732 Include S-error in definition of errors.
;733 (24065) Fix bad entry block caused by bad SEARCH/ENTRY
interaction
;734 (23987) Handle negative relocation correctly with Polish
;735 Allow forward-ref of tags in LIT(generate
10-blocks).
;736 Fixup SYMTAB after FORWARD-REF to USER-DEFINED
operator. (MACRO,OPDEF,SYN)
;737 Fix bug with the new IOWD code.
;740 Check for non-referenced literal tags.
;741 A-error when LH-truncated with RELOC.
;742 VARF (TREF) used with LTAGF mean tag referenced.
;743 Suppress PASS1 IFX V-error.
;744 (Q2191) Make sure LTGSW gets cleared each time.
;745 Check for SPTR before update in ASSIGN.
;746 Give ERRMSG when MRP points to 0 due to MACRO
expansion ERR.
;747 Generate correct Polish for <E,,K>,<K,,E>, &
<E,,E>.
;750 Fix bug with @POL(K).
;751 <Point K,POL,POL> to use ANGFP routines.
;752 Resolve edit 736 & 675 conflict in OPDEF handling.
;753 (18606) Prevent extra line listing with FF inside repeat 0
or failing conditional.
;754 (22804) Clear XLIST after END/PRGEND (doesn't affect lits,
etc.).
;755 (22442) Output title ".MAIN" for untitled PRGEND modules
during RPG assembly.
;756 (24473) Fix too few lines/listing-page with PRINTX.
;757(Removed) Make sure ^- has higher precedence over binary
operators.
;760 Output binary on block statement in a long line
inside MACRO.
;761 (Q2201) Fix bug in EOUT that generated wrong count for
block 4.
;762 (Q2204) E-error for BYTE (N)...POL... where N .NE. ^D36.
;763 (Q2211) Generate block 22 with symbol table instead of
block 23.
;764 Check for internal OPDEF at INDEF.
;765 (Q2195) Don't generate empty entry block.
MCR53.DOC Page 16
;766 Same as 733.
;767 (Q2185) Re-do calculation of RC in EVADR.
;770 (Q2210) Fix bug with flagging multiply defined tags in
different PSECTS.
;771 Test for NOPSW at closing angle bracket.
;772 Fix bug with referencing Polish OPDEF.
;773 Replace edit 747
;774 Make LABEL+OFFSET hangling consistant.
;775 (Q2200) Check CPU value before typeout of size info.
;776 Don't do PSECT check for phased label.
;777 Allow BYTE(18) of Polish if half word aligned.
;1000 Add 2 cells for building OPDEF code to avoid
problem with nested literals.
;1001 Don't let MACRO expansions change LABEL+OFFSET
settings.
;1002 (Q2235) Don't store UNV name until it's verified.
;1003 (24751) Make FF list correctly (supersedes edit 753).
;1004 Minor source changes: tabs in long line, page,
etc.
;1005 Don't generate global request for a symbol where
symbol=UND.
;1006 Save INOPDF @SQBRK+ to allow literal in OPDEF
definition.
;1007 Give EPP message due to typos causing illegal
Polish.
;1010 Add a word to differentiate <0,,POL> with <POL>
;1011 (Q2276) Save INOPDEF @ANGLB+ to allow nested <...> in
OPDEF definition.
;1012 Recover EXTPNT if needed at OP3.
;1013 Move left Polish to free Polish to free space
before storing the ptr in XWDANG.
;1014 Allow ENTRY, INTERN statements to appear in diff.
PSECT then the tag.
;1015 Fix bug with setting up correct MP for macros
nested in conditionals.
;1016 Define a relocatble PSECT bit for PSECTS with no
fixed origin.
;1017 Carry undefined bit accross assigment during
pass1.
;1020 Modify block 22's and block 23's and add block
24's.
;*****End of Revision History*****
MCR53.DOC Page 17
6.0 SUGGESTIONS
The following is a list of suggestions accumulated from various
sources. The appearance of a suggested change in this list does not
imply any commitment or intent on the part of DEC to implement any
such change.
1. Use a hash table instead of binary search. Add a switch to
specify the hash size.
2. Better core management scheme.
3. Search UUOSYM.
4. Use MACTEN and JOBDAT.
5. Allow curvy brackets to work the same as angle brackets < >
for conditionals, REPEATs, IRPs, etc.
6. Add an error file to contain all assembly errors to be used
with /N switch.
7. Allow the line continuation character (^_) to work over
end-of-macro, -IRP, etc.
8. Allow more than ten universal files to be created or read
during a given assembly.
[End of MCR53.DOC]