Google
 

Trailing-Edge - PDP-10 Archives - bb-d868c-bm_tops20_v4_2020_distr - language-sources/macro.rnd
There are 6 other files named macro.rnd in the archive. Click here to see a list.
.LM0.RM70.F.J.PS58,70.FLAG CAP
\\
<MACRO.DOC -- ^CHANGES FROM <V53(1020) TO <V53A(1152)
.br
^August 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\\.
.TITLE <MCR53A.DOC
.PG
<MACRO.DOC -- ^CHANGES FROM <V53(1020) TO <V53A(1152)
.br
^August 1979
.b3
1.0##<SUMMARY
.B1
^The purpose of this release is to provide a more reliable version of
the product.
.B 1;.LM 0
<MACRO VERSION <53A IS SUPPORTED BY ^DIGITAL ^EQUIPMENT ^CORPORATION, AND
RUNS ON ALL SUPPORTED MONITORS AS RELEASED.  ^VERSION <53A FULLY
SUPERSEDES ALL PREVIOUS VERSIONS, AND INCLUDES EDITS UP TO _#1152.
.B1
<MACRO <53A REQUIRES THAT IF <PSECTS ARE USED, THE RESULTANT <.REL FILES
BE LOADED WITH <LINK <V4 or later versions, WHICH SUPPORT THE <PSECT FACILITY.
.B1
^FOR <TOPS-10 SYSTEMS, <MACRO IS DOCUMENTED IN THE <DEC<SYSTEM-10
^USER'S ^GUIDE, AND IN THE <DEC<SYSTEM-10 <MACRO ^Assembler ^Reference ^Manual,
order number ^A^A-^C780^C-^T^B.
.B
^FOR <TOPS-20 SYSTEMS, <MACRO IS DOCUMENTED IN THE <TOPS-20 ^USER'S ^GUIDE,
AND IN THE <DECSYSTEM-20 <MACRO ^ASSEMBLER ^REFERENCE ^MANUAL, order number
^A^A-4159^C-^T^M.
.B 3;.LM 0
2.0##<EXTERNAL <CHANGES
.lm9.b1.i-4
1.##<BYTE pseudo-op:
.s
^Externals must be loaded into either fullword (36 bit) or halfword (18 bit)
bytes. ^Relocatables must be loaded into fullword or halfword bytes, with the
exception that a right half only relocatable can be loaded into a right
justified byte that is between 18 and 36 bits in length. ^Examples:
.s .lt
	BYTE (18) REL1, REL2 (6) 3 (30) RHREL3
	BYTE (10) 5 (26) RHREL4
.el .s
.i-4
2.##^Unary operators:
.s
^Unary operators now properly take precedence over all binary and shift
operators. ^This conflicts with the existing documentation. ^The hierarchy
is now as follows:
.s .lm 12 .i-3
a.)#^All unary operators (+, -, _^-, _^^D, _^^O, _^^B, _^^F, _^^L, ^E, ^K, ^M, ^G)
.br .i-3
b.)#^Shift operators (^B-shift, underscore-shift)
.br .i-3
c.)#^Logical binary operators (_!, _^_!, _&)
.br .i-3
d.)#^Multiplicative operators (*, /)
.br .i-3
e.)#^Additive operators (+, -)
.s .pg .lm 9 .i-4
3.##^Error message standard:
.s
^ON <TOPS-10 SYSTEMS,
<MACRO will now observe the setting of the message level bits during error
message typeout (reference monitor <GETTAB table <.GTWCH(35)).
.s .i-4
4.##^Macro call statements and <XALL
.s
<MACRO will now list the entire statement in which a macro call appears if
<XALL is in effect. ^This may cause the source line to be broken up in the
listing if multiple macro calls appear on the same line, and the called
macros have imbedded line terminators. ^Comments on macro calls imbedded
within conditionals will also be listed, with the comment appearing along
with the last line of the macro expansion, even if no code is generated
for that line.
.s .i-4
5.##<.IF/.IFN pseudo-ops
.s
^Contrary to what the documentation states, the <.IF and <.IFN pseudo-ops
were never intended to take angle-bracketed expressions as arguments. ^Instead,
they are intended to provide a powerful mechanism for querying symbol table
attributes, given a valid mnemonic consisting of up to six <RADIX50
characters. ^The newly defined attribute, <"NAME", can be used to determine
if the argument is a single <RADIX50 symbol name. ^Such a symbol may be
enclosed in angle brackets, nested to any depth. ^The use of angle-bracketed
expressions is allowed, and treated as decribed below, however their use
is not recommended.
.s
^Limited expression handling has been implemented to handle situations in
which angle-bracketed expressions are used as arguments. ^Such an argument
will return the combined (<IOR<ed) attributes of its components, except in
the case of relocation attributes, which are handled correctly only for a
symbol. ^In addition, an angle-bracketed expression will have the newly
defined attribute <"EXPRESSION", providing a means of defending against
angle-bracketed expressions passed as arguments to macro calls. ^Note that
all arguments that work outside angle brackets will work inside them.
.s .i-4
6.##^Psects and literals
.s
^Proper termination of literals within code bounded by <.PSECT/.ENDPS is
now enforced. ^Early termination of a literal which was started in the same
<PSECT but at a higher level (due to nesting), or the failure to terminate
a literal which was started in the current <PSECT will produce an ^L error,
and will generate the new <MCRLNI ^Literal nesting incorrect message.
.s .i-4
7.##^Suppressed symbols
.s
^Symbols declared as suppressed internal, but defined by externals or ^Polish
will now retain the suppressed attribute and will not be typed out by <DDT.
.s .i-4
8.##<PSECT attributes
.s
^Valid <PSECT attributes and their definitions are as follows:
.s .lm 24 .i-15
<CONCATENATED###^When loading multiple modules, all <PSECT blocks having the
same name will be concatenated at load time.
.s .i-15
<OVERLAID#######^When loading multiple modules, all <PSECT blocks having the
same name will be loaded starting at the same origin (each one will
'overlay' the previous one).
.s .i-15
<RWRITE#########^The <PSECT can be read and written (<TOPS-20 only).
.s .i-15
<RONLY##########^The <PSECT can only be read (<TOPS-20 only).
.s .i-15
<PALIGNED#######^When loading relocatable <PSECT<s (not yet supported),
the <PSECT origin will be started at a page boundary.
.lm 9 .s .i-4
9.##<PSECT<s and <PRGEND
.s
<PRGEND<s can now occur in a source file containing <PSECT<s.
.s .i-4
10.#^Assembler typeout for <PRGEND<ed programs
.s
^When <MACRO is executed via a <RUN command, and the listing device is not
the terminal, the informational messages (<BREAK, <CPU <TIME, <CORE <USED, etc...), will be typed out for each program module in a <PRGEND<ed source file.
^The particular program module will be identified by a line following the
error counts, indicating "<PROGRAM <XXXX", where <"XXXX" is the information
appearing on the <TITLE statement for the module. ^If no <TITLE is specified,
the default <TITLE, <".MAIN" will be typed. ^The program identification line
will no longer be output to the listing file, however, it will now appear
with the errors typed out when <MACRO is invoked via the <CCL entry point,
as done by the <COMPIL class commands under <TOPS-10.
.s .pg .lm 9 .i-4
8.##^NEW ^ERROR ^MESSAGES:
.s .lm 13 .i-6
<"Q" errors:
.s .i-4
a.##@ appearing in or before <AC field
.br .i-4
b.##^Index value has left half for <POLISH(INDEX)
.br .i-4
c.##<BYTE (n) <RELOCATBLE where n is not 36 or halfword 18
.br .i-4
d.##@ in unbracketed expression to <DEC/EXP/OCT
.br .i-4
e.##^Multiple <TITLE<s or <TITLE/UNIVERSAL conflicts (was ^M error)
.s .i-6
<"E" errors:
.s .i-4
a.##<BYTE (n) <EXTERNAL where n is not 36 or halfword 18
.br .i-4
b.##<BYTE (n) <POLISH symbol, where n is not 36 or halfword 18
.br .i-4
c.##<EXTERN/INTERN conflicts
.s .i-6
<"X" errors:
.s .i-4
a.##^Created symbol exceeds ..7777
.s .i-6
<"A" errors:
.s .i-4
a.##<OPDEF produces no code
.br .i-4
b.##<PSECT origin not absolute
.s .i-6
<"L" errors:
.s .i-4
a.##<PSECT literal level mismatch
.br .i-4
b.##^Assignment involves a label defined within a literal
.s .i-6
^New <MCR error messages:
.s .i-4
a.##<MCRLNI -- ^Literal nesting incorrect at end of <PSECT <XXXXXX
.s .i-6
^Modified <MCR error messages:
.s .i-4
a.##<MCRPTC -- ^Polish too complex for location nnnnnn
.br .i-4
b.##<MCRPTC -- ^Polish too complex for symbol <XXXXXX
.s .i-6
^Deleted <MCR error messages:
.s .i-4
a.##<MCRPIP -- <PRGEND illegal with <PSECT
.s .pg .lm 9 .rm 70 .ps 58,70 .f .j .i-4
9.##^POLISH BUGS FIXED IN THE FOLLOWING AREAS:
.s
<_<POINT <K,POLISH>
.s
<_<POLISH>B_<EXP>
.s
^Polish imbedded within a polish expression such as:
.br
<A_#_#+^B_#_#+_<^C_#_#+^D_#_#>
.s
<_<EXT_#_#,,POLISH>
.s
<_<EXT_#_#+1,,0>
.s
<POLISH(INDEX)
.s
<OP <AC,ADDR(POLISH)
.s
<OP <AC,-_<POLISH>
.s
<OP <AC,POLISH(LH,,RH)
.s
^Generate fullword fixups only for externals such as:
.br
<0,,EXT_#_#
.s
^Simplex forward references to ^Polish such as:
.br
<EXP <POLISH
.br
<POLISH=EXT_#_#+k
.s
^Generate ^Polish when needed for expressions such as:
.br
<A+B or <A-B
.br
when ^A or ^B is relocatable.
.s
^Generate proper polish when referencing relocatables across <PSECT<s
.B1.LM9.F.J.I-4
.pg .lm 0
3.0##<KNOWN <BUGS <AND <DEFICIENCIES
.B1.LM9.I-4
1.##<MACRO CAN'T GENERATE ANY ^POLISH BLOCK WHICH WILL USE MORE THAN 17 WORDS.
.B1.I-4
2.##^You cannot forward reference a ^Polish symbol of other than the form:
<EXT_#_#+<k or <EXT_#_#-<k
.BR
instead, you should do the following:
.B1.I5
<FOO=EXT1_#_#+EXT2_#_#
.I5
#####_.
.I5
#####_.
.I5
#####_.
.I5
<MOVE##<1,FOO
.B1.I-4
3.##^A ^POLISH <OPDEF IS TREATED INTERNALLY AS A FULL WORD ASSIGNMENT.
^AS A RESULT, <AC AND ADDRESS MAY NOT BE USED WITH IT.
.B.LM0.F.J
.lm9.b1.i-4
4.##<MACRO<'S FLOATING POINT INPUT ROUTINES DO NOT AGREE WITH THOSE
OF OTHER COMPILERS, <FORTRAN IN PARTICULAR.
.B1.I-4
5.##<MACRO WILL NOT ASSEMBLE A LINE IN <TOPS-10 <PIP CORRECTLY. ^The following
represents edit 346 to the product:
.b
^At <DSPTAB + 12^L:
.B1.I6
<DISP###),0
.B1
^ADD ANGLE BRACKETS AROUND THE UN-PAIRED CLOSE parenthesis such as:
.B1.I6
<DISP###_<)>,0
.B1.I-4
6.##<MACRO WILL NOT ASSEMBLE 2 lines IN <RUNOFF CORRECTLY:
.b
^At <FRCEND + 4^L and <FIN2 + 13^L:
.B1.I6
<MSG$###<ARG1,ARG2,,....."
.B1
^Enclose the last macro argument in angle brackets, such as:
.B1.I6
<MSG$###<ARG1,ARG2,,_<.....">
.s
or include the statement <.DIRECTIVE#<NO#<MACMPD somewhere near the beginning
of the program.
.B1.I-4
7.##<MACRO CURRENTLY WILL NOT ALLOW POOLING OF LITERALS WHICH CONTAIN LABELS.
.B1.I-4
8.##^IF THE RIGHT HAND SIDE OF AN ASSIGNMENT STATEMENT IS AN EXPRESSION CONTAINING ^POLISH, ANGLE-BRACKETS MUST SURROUND THE EXPRESSION.
.B1.I-4
9.#^INCORRECT <CREF LISTINGS GENERATED WHEN:
.B1.I5
_.ZERO LOOP OF <IRP IS DONE.
.B1.I5
_.REFERENCES SUPPRESSED BY <XLIST INSIDE MACRO EXPANSION.
.B1.I-4
10.#^PHASE ERRORS WILL BE GENERATED BY <MACRO WHEN ASSEMBLING
THE DISTRIBUTED <TOPS-10 <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.
.B1.NF.I5
^^SEARCH MACTEN
.I5
JRST MACERR
.I5
MACERR:
.I5
END\\
.B1.F.J
^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.
.B1.I-4
11.#^IN <TOPS-10 <SETSRC.MAC, <MACRO ENCOUNTERS A FORWARD REFERENCE OF A
SYMBOL NAME <JSYS, AND <MACRO ASSEMBLES IN <TOPS20 <JSYS
OPCODE INSTEAD OF USER LABEL ADDRESS. ^The following change represents
edit 47 to the product, which eliminates the problem.
.s
^In macro <CTAB, 6 lines down, the macro definition:
.s .i 6
<DEFINE###<CC#<(NAM,ADDR)_<ADDR>
.s
should be changed to:
.s .i 6
<DEFINE###<CC#<(NAM,ADDR)_<Z <ADDR>
.s
.s .i-4
12.#^Attempts to compile field image <BACKRS.MAC to rebuild <BACKUP will
produce <R errors. ^These errors occur on erroneous <BYTE statements
that attempt to modify the high order bit of an 18  bit relocatable quantity.
^This type of error was not detected by previous versions of <MACRO.
.s
^At <FRSDTM + 0^L:
.s .lt
	FRSDTM:	BYTE (1)0 (17)FRSDAT (18)L$DATE	;LABEL CREATION
		BYTE (1)1 (17)FRSDSD (18)L$DSTR	;DESTROY DATE
		BYTE (1)0 (17)FRSSDT (18)S$DATE	;SAVE SET DATE
.el .s
^Replace the 3 lines with:
.s .lt
		FRDUM1==0B18+FRSDAT		;[330]
		FRDUM2==1B18+FRSDSD		;[330]
		FRDUM3==0B18+FRSSDT		;[330]
	FRSDTM:	BYTE (18)FRDUM1 (18)L$DATE	;[330]LABEL CREATION
		BYTE (18)FRDUM2 (18)L$DSTR	;[330]DESTROY DATE
		BYTE (18)FRDUM3 (18)S$DATE	;[330]SAVE SET DATE
.el
.s .i-4
13.#^The opcode field of an instruction must evaluate to an absolute quantity at
compile time. ^Note that no error is generated if this condition is not met,
to allow for <OPDEF<s which contain relocatables, or externals in the address
portion of the instruction.
.s .i-4
14.#^Polish is not allowed an index field (eg. <ADDR(POLISH) ). ^Also,
externals are not allowed in the index field if the expression evaluates
to other than a zero in the left half. ^This restriction is imposed because
there is no polish swap operator. ^Note that the expression ( "<OP <AC,POLISH(1B1)" )
falls into this class of problems, however, it is not currently flagged as an error.
.s .i-4
15.#^Error lines in macros under <SALL do not list. ^They can not be listed
since the original source line is not around when the macro call line is
finally listed.
.s .i-4
16.#^Long binary generating lines under <XALL list only partially.
.s .i-4
17.#^Lines in an <IRP will usually not be indeneted properly when <LALL is in
effect.
.s .i-4
18.#^Under <SALL, the following example involving <REPEAT does not list as
expected.
.s .lt
	REPEAT 2,<MOVE
		COUNT=0>
.el .s
^The <REPEAT is closed off before the last line is listed.
.s .i-4
19.#^A formfeed followed by another formfeed causes MACRO to skip a page header.
.s .i-4
20.#<CREF reference line numbers can be incorrect for variables seen in <XLIST<ed
code. ^In the following example, <A is <CREF<ed as being referenced on the
line following <LABEL.
.s .lt
	A=1
	DEFINE X,<XLIST
	A
	LIST>
LABEL:	X
	Z
.el .s .i-4
21.#<MACRO<'s command scanner is very archiac, and does not neccessarily
conform to the currently accepted method of file specification scanning, such
as that used by <SCAN. ^In particular, the command:
.s .lt
	FIL E.REL=FILE.MAC
.el .s
is accepted without error, and <FILE.REL is created. ^Also, a single filespec
will cause the <TOPS-20 version of <MACRO to loop until it eventually runs out
of core.
.s .i-4
22.#^The <.DIRECTIVE <.NOBIN does not work properly with <PRGEND<ed files, since
the directive immediately closes the <.REL file.
.s .i-4
23.#<.DIRECTIVE<s <MACPRF and <.NOUUOS do not get cleared across a <PRGEND.
.s .i-4
24.#<MACRO is unable to <PEEK ahead across the end of macro args, the end of a 
macro, the end of an <IRP, or the end of a <REPEAT. ^This means that constructs
such as "==", "=:", "::", and others cannot be recognized across these limits.
^This is related to not being able to continue a line across these boundaries.
.s .i-4
25.#^Either "<A=B_#_#" or "<A=EXP <B_#_#" should generate fullword ^Polish. ^At
present, the first case generates a right half external fixup, and the second
case generates bad listing output and an incorrect <.REL file.
.s .i-4
26.#^Polish used as the argument to a <B shift operator may generate a bad
<.REL file, depending upon whether or not angle brackets surround the entire
expression, such as:
.s .lt
	<<POLISH>B7*4>
.el .s .i-4
27.#^Characters that are not specified to be in <MACRO'<s recognized character
set, such as vertical bar, will be converted to a strange up-arrow character,
if they are passed over as part of an unprocessed conditional.
.s .i-4
28.#^A macro which contains <SALL and <XLIST will cause an extra blank line to
appear in the listing file, because both <SALL and <XLIST attempt to finish off
the current output line before changing listing modes.
.s .i-4
29.#^An unary minus preceeding a relocatable expression such as:
.s .lt
	-<RELOC+2>
.el .s
generates garbage ^Polish.
.s .i-4
30.#^A ^Polish assignment statement with an imbedded assignment statement, such as:
.s .lt
	A=B##+<N=3>
.el .s
will not generate the proper ^Polish fixup block for symbol <A.
.s .i-4
31.#^Phase errors can occur in a <PSECT<ed program that has a symbol defined
as a ^Relocatable, and also as a <MACRO/OPDEF/SYNONYM. ^This occurs because of the
following:
.s .lm 12 .i-3
^A.#<MACRO maintains a seperate symbol table for each <PSECT. ^This is done
to keep <EXTERNAL fixup chains seperate, and also for ^Relocatables since they
may be referenced from another <PSECT.
.s .i-3
^B.#<MACRO expects the two definitions for the same symbol (^Relocatable and
<MACRO/OPDEF/SYNONYM) to appear together in the same symbol table. <MACRO
frequently makes decisions concerning the treatment of a symbol using the
knowledge that both symbol definitions exist.
.s .i-3
^C.#^In a <PSECT<ed program, the two symbol definitions may actually appear in
different <PSECT symbol tables. ^This can also occur differently during the
two passes, depending on <IF1 and <IF2 conditionals. ^Also, if the
<MACRO/OPDEF/SYNONYM
is defined in a <UNIVERSAL, the situation is complicated since such
definitions are usually entered into the symbol table for the ^Global <PSECT
when the symbol is referenced.
.s .lm 9
^Given the above, it is possible to reference the wrong definition of a symbol
during pass 2 of the assembly, generating a different amount of code than was
generated during pass 1, causing the phase errors.
.LM0.B3
4.0##<INSTALLATION <INSTRUCTIONS
.B2
^THE <MACRO SOURCE FILE AS DISTRIBUTED ASSEMBLES AND LOADS
INTO <MACRO.EXE.
.B1
^TO INSTALL <MACRO ^VERSION <53A ON YOUR SYSTEM, COPY THE FILE
<MACRO.EXE TO <SYS:.
.B1
^THE DISTRIBUTED VERSION OF <MACRO.CTL WAS USED TO FIRST BUILD
<MACRO USING FIELD IMAGE software (<MACRO version <53(1020)), AND THEN THIS
CREATED VERSION was used TO CREATE ITSELF. ^THE TWO VERSIONS OF <MACRO <V53A
WERE THEN CHECKED FOR INCONSISTeNCIES. ^NONE WERE FOUND.
.B1
^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, <PPN<S AND OTHER SUCH SYSTEM
PARAMETERS.
.B1
<MACRO REQUIRES FIELD IMAGE <HELPER, WHICH IS LOADED
IMPLICITLY VIA AN IMBEDDED <.REQUIRE PSEUDO-OP IN THE
<MACRO SOURCE FILE.
.B3;.LM 0;.F;.J .pg
5.0##<INTERNAL <CHANGES
.B1.LM20.TS10,20
.i -20
^Edit######<SPR/QAR#####################description
.I-20
^START OF VERSION <53A
.i -20
^FOLLOWING 3 PATCHES ARE DOCUMENTED IN THE <MACRO 53 <BWR FILE
.i -20
1021		^WHEN MULTIPLE <.PSECT STMNTS EXIST FOR THE SAME <PSECT, ORIGIN NEED ONLY BE IN ONE.
.i -20
1022		^IN <ARRAY PSEUDO OP, ALLOW <UNV<-SEARCHING OF SYMBOLS USED IN DIMENSION ARGUMENT.
.i -20
1023		^CORRECT ASSEMBLY OF STMNTS LIKE: <"FOO=IFNB#_<>,<_<BAR=5>".
.i -20
1024		^SOME CLEANUP
.i -20
1025		^DON'T GO ^POLISH CALCULATING "<REPEAT" COUNT
.i -20
1026		^FIX BUG CAUSED BY EDIT 1010 ( <_<POINT <K,POL> )
.i -20
1027		^MAKE SURE <UOUT ROUTINE SEARCHES ALL <PSECT SYMBOL TABLES.
.i -20
1030		<AC0 TO <AC2 IN PART OF EDIT1021; CAUSE ^P-ERROR IN <PSECT PROGAM
.i -20
1031		^TURN OFF FLAG IN <RC TO INDICATE UNDEF IN LITERAL IN <STOLIT 
.i -20
1032	(25358)	^FIX <.XTABM WITH PARENTHESIZED MACRO CALL ARG LISTS
.i -20
1033	(25358)	^CLEAR <MACMPD AND <.XTABM/.ITABM SETTINGS ACROSS PASSES
.i -20
1034	(25555)	^FIX FATAL ERRORS CAUSED BY BAD RECOVERY FROM ^N-ERRORS.
.i -20
1035	(26078)	^FIX <OPDEF WITH <TEXT PSEUDO-OPS AND INSIDE LITS (REWORK
EDIT 1000)
.i -20
1036		^UP <CTLSIZ TO 1000 CHARACTERS
.i -20
1037		^ADD CODE TO USE <FORCEP FOR <_<POLISH>B_<EXP> WHEN NOT IN LARGER EXP.
.i -20
1040		^MOVE EMBEDDED ^POLISH INTO FREE SPACE WHEN DOING <POLPSH.
.i -20
1041		^ADD <.DIRECTIVE <.NOUUO
.i -20
1042		^CALCULATE TOTAL SYMBOL COUNT BEFORE TURNING ON ATTRIBUTE BITS
(MOVE EDIT 1021 ONE INSTRUCTION LOWER AND REMOVE EDIT 1027)
.i -20
1043		^CHANGE <.DIRECTIVE <.NOUUO TO <.DIRECTIVE <.NOCALLIS
.i -20
1044	(25015)	^FIX BAD LOAD-TIME RELOCATION FOR EXPRESSIONS OF THE FORM
<"A+B" OR <"A-B" WHERE ^A OR ^B IS RELOCATABLE.
.i -20
1045	(25581)	^PRESERVE SYMBOL CHARACTERISTICS ACROSS NESTED
ASSIGNMENTS (E.G., <A==:_<B==2>)
.i -20
1046	(11716)	^FIX <"ILL <MEM <REF" TO ADDR 777777 DUE TO BAD MACRO
CALL SYNTAX
.i -20
1047		^MAKE EXPRESSIONS OF THE FORM <_<A_#_#,,POLISH> WHERE <POLISH
IS A ^POLISH EXPRESSION ASSEMBLE CORRECTLY
.i -20
1050		^FIX <"?MCREPP" ERROR DURING PROCESSING OF EXPRESSIONS
WITH COMPLEX EXTERNAL LEFT HALVES (E.G., <_<EXT_#_#+1,,0>)
.i -20
1051		^FIX <"?ILL <MEM <REF" AFTER <"?MCREPP" (EXPAND EDIT 1007)
.i -20
1052	(26137)	^FIX <"?ILL <MEM <REF" WITH LARGE <PRGEND<ED FILES
.i -20
1053		^GENERATE ^X-ERROR IF EXCEEDED MAX OF CREATED SYMBOL (..7777);
START OVER FROM ..0000 RATHER THAN CREATING ./0000
.PG
.i -20
^Edit######<SPR/QAR#####################description
.i -20
1054	(25910)	^GIVE UNARY OPERATORS PRECEDENCE OVER SHIFT OPERATORS AND
LOGICAL OPERATORS.
.i -20
1055	(26428)	^DON'T GENERATE ^POLISH FOR <REL-ABS IN SINGLE-SEGMENT,
NON-^HISEG, NON-<PSECT PROGRAM.
.i -20
1056	(25357)	^MAKE <MACRO MORE FLEXIBLE IN HANDLING ANGLE-BRACKETED
ARGS TO <.IF/.IFN; IMPLEMENT <"EXPRESSION" ATTRIBUTE.
.i -20
1057	(12055)	^RESTORE CORRECT <.PSECT/.ORG INTERACTION IN WAKE OF EDIT 573
.i -20
1060	(25477)	^IMPROVE <"?MCRPTC ^POLISH TOO COMPLEX" ERROR MESSAGE BY
APPENDING "FOR SYMBOL XXXXXX" OR "FOR LOCATION XXXXXX"
.i -20
1061	(25715)	^RE-DO "^ERROR WHILE EXPANDING" ERROR-TRAPPING (SUPERSEDES
EDITS 1046,746)
.i -20
1062	(25907)	^FIX LISTING OF <LIT INSIDE <SALL MACRO EXPANSION
.i -20
1063	(25777)	^MAKE <.XCREF, <.CREF WORK INSIDE LITERALS
.i -20
1064	(25777)	^FIX LISTING OF <LALL INSIDE <SALL MACRO
.i -20
1065	(25777)	^MAKE <LALL, <XALL, <SALL, <LIST, <XLIST, <.DIREC WORK INSIDE
LITERALS (REQUIRES EDIT 1064)
.i -20
1066	(25838)	^MAKE MACRO OBSERVE THE SETTINGS OF MESSAGE LEVEL BITS DURING
ERROR MESSAGE TYPEOUT (SEE <GETTAB 35 MONITOR TABLE)
.i -20
1067	(26529)	<BYTE PSUEDO-OP SPECIFYING EXTERNALS ON OTHER THAN FULL OR HALF
WORD BOUNDARIES PRODUCES <EPP ERRORS AND <ILL <MEM <REF.
.i -20
1070	(26571)	^CORRECTLY INDICATE <EXTERN/INTERN CONFLICTS AS ^E ERRORS INSTEAD
OF ^P OR ^A ERRORS
.i -20
1071	(26690)	^SET ^POLISH FLAG IN CORRECT HALF OF <FR WHEN DOING FORCED
RIGHT HALF ^POLISH IN ANGLE BRACKETS
.i -20
1072	(26749)	^LIST COMPLETE MACRO CALL LINE WHEN <XALL IS IN EFFECT
.i -20
1073	(26884)	^FIX <?ILL <MEM <REF AND ^E ERRORS DURING ^POLISH INDEXING
.i -20
1074	(12239)	^FORCE PAIRING OF <LIT BRACKETS WITHIN <.PSECT/.ENDPS.
^MAKE <END ILLEGAL WITHIN LITERAL OF ANY <PSECT, NOT JUST CURRENT.
^CORRECT ERROR MSG. TAG OFFSET IF WITHIN NESTED LITS WITH LABELS.
.i -20
1075	(27082)	^LIST COMMENT ON MACRO CALL LINE WHEN <XALL IS IN EFFECT
.i -20
1076	(27099)	^DO NOT ALLOW '@' IN <AC FIELD, FLAG AS QUESTIONABLE
.i -20
1077		^ALLOW RIGHT JUSTIFIED RELOCATABLES TO BE GTR. than 18 BITS FOR <BYTE.
^MAKE <BYTE ALLOW ^POLISH SYMBOLS ONLY FOR FULL AND HALF WORDS.
.i -20
1100		^ELIMINATE PHASE ERRORS PRODUCED BY EDIT 1074
.i -20
1101		^FIX BAD ^POLISH FOR EXPRESSIONS INVOLVING INTER-<PSECT REFERENCES
OF RELOCATABLES. ^ADDITION TO EDIT 1040.
.i -20
1102		^KEEP <DDT SUPPRESS BITS WHEN SYMBOL DEFINED AS INTERNAL HAS AN
EXTERNAL OR ^POLISH VALUE
.i -20
1103		^REWORK <REL+ABS, <REL+REL, <REL-ABS, <REL-REL CODE ADDED BY EDITS
1044 AND 1055 TO HANDLE <RH RELOCATABLES ONLY
.i -20
1104	(12505)	^DO NOT GENERATE ^POLISH <FWF WHEN DOING ^POLISH INDEXING
.PG
.i -20
^Edit######<SPR/QAR#####################description
.i -20
1105	(12506)	^MAKE  <OP <AC,-_<POL> GENERATE CORRECT <RH FIXUP
.i -20
1106	(12637)	^DO NOT GENERATE FULLWORD FIXUP UNLESS EXTERNAL IS OF THE
FORM <0,,EXT
.i -20
1107	(27389)	^DO NOT ALLOW ^POLISH IN INDEX FIELD, DO NOT ALLOW EXTERNALS IN <OP
CODE INDEX, MAKE PSUEDO-OP IN INDEX FIELD WORK IN ALL CASES
.i -20
1110		^GENERATE CORRECT ^POLISH FOR <V=EXT_#_#+K WHEN <V IS STILL DEFINED
BY A SPECIAL EXTERNAL POINTER (NOT YET DEFINED IN PASS 2).
^MORE OF EDIT 703.
.i -20
1111		^AUGMENT EDIT 1103 TO GENERATE LESS ^POLISH. ^CASES IMPROVED
INVOLVE NEGATIVE RELOCATABLES AND RELOCATABLES SLIGHTLY LESS
THAN <HMIN (RANGE <HMIN-400).
.i -20
1112	(27167)	^EXPAND <.IF/.IFN FEATURE BY ADDING <"NAME" ATTRIBUTE INDICATING
		A SINGLE <RADIX50 NAME (SYMBOL) HAS BEEN PASSED AS AN ARGUMENT.
.i -20
1113	(27418)	^ELIMINATE <OPDEF PROCESSING INCONSISTENCIES
.i -20
1114	(27388)	^ADD THE SWAPPED LEFT HALF VALUE OF THE INDEX TO THE ^POLISH
		GENERATED FOR STATEMENTS OF THE FORM <'OPCODE <AC,POLISH(LH,,RH)'
.i -20
1115	(27544)	^FOR <DEC/EXP/OCT, GIVE ^Q ERROR FOR UNBRACKETED EXPRESSIONS
		INVOLVING '@'. ^FORCES USE OF BRACKETS FOR FULL ADDRESS CALC.
.i -20
1116		^FIX INTER-<PSECT REFERENCES TO SPECIAL POINTERS OF EXTERNALS
		SO THE EXTERNAL CHAIN DOES NOT CROSS <PSECT<S.
.i -20
1117	(27728)	^MAKE <.PSECT HANDLE ATTRIBUTE SPECIFICATIONS CORRECTLY
.i -20
1120	(12962)	^RESET <RP AND <MP IN THE <END CODE SINCE MACROS MUST BE COMPLETED
.i -20
1121		^INCREASE THE NUMBER OF EXTRA (<XTRA) LOCATIONS TO SAVE FOR <PRGEND
		TO 8 TO PREVENT POSSIBLE <ILL <MEM <REF<S
.i -20
1122	(27813)	^DO NOT COPY NULLS INTO STATEMENT OUTPUT BUFFER
.i -20
1123	(27976)	^GENERATE ^Q ERROR FOR MULTIPLE <TITLE<S/OR <TITLE/UNIVERSAL
		CONFLICTS, INSTEAD OF ^M ERROR DURING ONLY PASS 1
.i -20
1124	(^Q3051)	^INCREASE <.UNIV TO 50.
.i -20
1125	(^Q3038)	^RE-INSTALL MACROS FOR <DIRECTIVE ARGS AND ROUTINES
.i -20
1126	(^Q3045)	^FLAG MOST ASSIGMENTS INVOLVING A LABEL DEFINED WITHIN A LITERAL
		AS ^L ERRORS. ^LABEL MAY NOT BE DEFINED TILL END OF PASS 2.
.i -20
1127	(^Q3053)	^GENERATE THE DESIRED <ASCII STRING FOR MACRO CALL ARG <'_\N '
		WHEN <N IS A SYMBOL OR EXPRESSION - BROKEN BY EDIT 137
.i -20
1130		^RESET ASSEMBLY MODE TO RELOCATABLE (1) AT PASS INITIALIZATION.
.i -20
1131		^REMOVE EDIT 646, MAKE <PRGEND WORK WITH <PSECT<S
.i -20
1132		^FIX NUMEROUS <PSECT BUGS - <PSECT <FOO,1000 / <PSECT <FOO LOSES ORIG.
		<PSECT AND <LOC INCONSISTENCIES, <PSECT AND <PHASE INCONSISTENCIES.
.i -20
1133	(^Q3047)	^FIX <RSW3 TO PROPERLY DETECT WHEN THE LISTING OUTPUT BUFFER IS
		FULL - HANDLE TABS PROPERLY AFTER THE 128 CHARACTER LIMIT
.PG
.i -20
^Edit######<SPR/QAR#####################description
.i -20
1134		^MAKE <LOCO STAY IN SYNC. WITH <LOCA DURING PASS 1. <PSECT<S NESTED
		WITHIN LITERALS CAUSE OUT-OF-SYNC.
.i -20
1135	(28104)	^DO <'OP' PROCESSING INSTEAD OF A FULL WORD FIXUP FOR CASES SUCH
		AS <'OP_#_# <AC,ADDR'. ^THIS AND ^POLISH OPCODES WILL NOT PRODUCE THE
		PROPER CODE FOR LEFT HALF EXTERNALS.
.i -20
1136		^CLEAR <PSECT NESTING COUNTER AND OTHER <PSECT ITEMS AT <PRGEND,
		PLUS CHECK FOR <PRGEND INSIDE LITERALS
.i -20
1137		^FLAG NON-ABSOLUTE <PSECT ORIGINS AS AN <'A' ERROR
.i -20
1140		^EDIT 1123 BROKE 5 CHARACTER <TITLE<S IN <PRGEND<ED FILES, CLEAR OUT
		2ND WORD OF <TITLE WHEN LOADING DEFAULT <TITLE OF <.MAIN.
.i -20
1141	(^Q3085)	^FOR <PRGEND<ED PROGRAMS, PRINT <BREAK, <CPU <TIME, <CORE <USED DATA
		FOR EACH PROGRAM MODULE.
.I -20
1142	(^Q3181)	^REPEAT THE EOL CHAR. IF A TERMINATING ANGLE BRACKET IS MISSING.
.I -20
1143		<SYN <A,B WILL NOT CREF <B AS DEFINING OCCURANCE
.I -20
1144		^SAVE/CLEAR/AND RESTORE CPU TYPE OVER <PRGEND<S.
.I -20
1145		^EDIT 1135 STOPPED GENERATION OF FULL WORD FIXUP FOR [<FOO##].
.I -20
1146		^ALLOW <NUL: AS CREF DEVICE.
.I -20
1147		^EDIT 1113 CAUSED THE <OPDEF IN <"EXP <OPDEF <AC,ADDR" TO BE
		PROCESSED AS AN ADDRESS, DISCARDING THE REMAINING FIELDS.
.I -20
1150	(^Q3261)	<XLIST UNDER <SALL PUTS EXTRA CHARACTERS IN THE LISTING FILE.
.I -20
1151		^DO NOT OUTPUT BLOCK 22'S AFTER THE END BLOCK FOR <PRGEND.
.I -20
1152	(^Q3410)	^EDIT 1143 CAUSED BAD <CREF DATA TO BE GENERATED FOR A <SYN
		SUCH AS "<SYN#<IFE,IF".
.B1.I-20
;*****^END OF ^REVISION ^HISTORY*****
.PG.B3.LM0.F.J
6.0##<SUGGESTIONS
.b1
^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.
.b1.lm9.i-4
1.##^USE A HASH TABLE INSTEAD OF BINARY SEARCH.  ^ADD A SWITCH TO SPECIFY THE HASH SIZE.
.b1.i-4
2.##^BETTER CORE MANAGEMENT SCHEME.
.b1.i-4
3.##^SEARCH <UUOSYM.
.b1.i-4
4.##^USE <MACTEN AND <JOBDAT.
.b1.i-4
5.##^ALLOW CURVY BRACKETS TO WORK THE SAME AS ANGLE BRACKETS _<#> FOR CONDITIONALS, <REPEAT<S, <IRP<S, ETC.
.b1.i-4
6.##^ADD AN ERROR FILE TO CONTAIN ALL ASSEMBLY ERRORS TO BE USED WITH </N SWITCH.
.b1.i-4
7.##^ALLOW THE LINE CONTINUATION CHARACTER (_^__) TO WORK OVER END-OF-MACRO, <-IRP, ETC.
.B1.I-4
8.##^Add all of the <KL10 hardware opcode mnemonics.
.B3.LM0.F.J
[^END OF <MCR53A.DOC]
.s
[<MCR53.DOC is appended as an integral part of <MCR53A.DOC]
.TITLE <MCR53.DOC
.PG
<MACRO.DOC -- ^CHANGES FROM <V52(551) TO <V53(1020)
.BR
^MARCH 1978
.B3
1.0##<SUMMARY
.B1
^THE PURPOSE OF THIS RELEASE IS TO PROVIDE A SOFTWARE MULTIPLE-SEGMENTATION (<PSECT) FACILITY.
.B 1;.LM 0
<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.
.B1
<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:.
.b1
<MACRO ^V53 REQUIRES THAT IF <PSECTS ARE USED, THE RESULTANT <.REL FILES
BE LOADED WITH <LINK <V4, WHICH FULLY SUPPORTS THE <PSECT FACILITY.
.B1
<MACRO IS DOCUMENTED IN THE <DEC<SYSTEM-10 ^USER'S ^GUIDE, AND
IN THE <DEC<SYSTEM-10 <MACRO ^USER'S ^GUIDE.
.B 3;.LM 0
2.0##<EXTERNAL <CHANGES
.lm9.b1.i-4
1.##<.PSECT PSEUDO-OP:
.B1
^THE <.PSECT PSEUDO-OP DIRECTS <MACRO TO START OR CONTINUE PLACING CODE AND/OR
DATA INTO THE NAMED PROGRAM SECTION. ^SYNTAX:
.B1.I5
<_.PSECT NAME, ORIGIN
.B1
^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.
.B1
<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.
.B1
^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.
.PG.B1.I-4
2.##<.ENDPS PSEUDO OP:
.B1
^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:
.B1.I5
<_.ENDPS [NAME]
.B1
^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.
.B1.I-4
3.##"<PSECT" ^NESTING
.B1
_.<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.
.B1.I-4
4.##^RESTRICTIONS
.B1.LM13.I-4
A.##<.PSECT AND <.ENDPS ARE NOT ALLOWED WITHIN A "<UNIVERSAL" FILE.
.B1.I-4
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.
.B1.I-4
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.
.B1.I-4
D.##<.PSECT, <HISEG, AND <TWOSEG ARE ALL MUTUALLY EXCLUSIVE.
.B1.I-4
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.
.B1.I-4
F.##<PRGEND IS ILLEGAL WITH <.PSECT AND <MACRO WILL TREAT IT LIKE  <END AND THE REST OF THE FILE WILL BE TRUNCATED.
.B1.LM9.I-4
5.##^NEW ^ERROR ^MESSAGES:
.B1.I-2
"^S" ^ERRORS:
.B1.LM13.I-4
A.##^ATTEMPT TO NEST <.PSECT<S TOO DEEP.
.B1.I-4
B.##^ATTEMPT TO UNNEST <.PSECT<S TOO FAR.
.B1.I-4
C.##<.PSECT OCCURS WHILE ASSEMBLING A UNIVERSAL.
.B1.I-4
D.##^TOO MANY DISTINCT <.PSECT NAMES.
.B1.I-4
E.##^ATTEMPT TO MIX <.PSECT WITH <HISEG/TWOSEG.
.B1.LM9.I-2
"^Q" ^WARNING (ADDITIONAL):
.B1.LM13.I-4
A.##<.ENDPS SPECIFIES THE WRONG NAME.
.B1.I-4
B.##<.PSECT SPECIFIES CONFLICTING ATTRIBUTES.
.B1.I-4
C.##<.PSECT SPECIFIES UNKNOWN ATTRIBUTES.
.B1.LM9.I-2
^NEW <MCR ERROR MESSAGES:
.B1.LM13.I-4
A.##<MCRSTO -- ^SEARCH TABLE OVERFLOW
.B1.I-4
B.##<MCRATS -- ^ARGUMENT TOO SMALL.
.B1.I-4
C.##<MCRLTL -- ^LITERAL TOO LONG.
.B1.I-4
D.##<MCRISD -- ^ILLEGAL SYNTAX IN <DEFINE.
.B1.I-4
E.##<MCRISR -- ^ILLEGAL SYNTAX IN <REPEAT.
.B1.I-4
F.##<MCRISC -- ^ILLEGAL SYNTAX IN CONDITIONAL.
.B1.I-4
G.##<MCRISI -- ^ILLEGAL SYNTAX IN <IRP OR <IRPC OR <REPEAT.
.B1.LM9.I-4
6.##<.IF <ARG,REFERENCED,_< .... >
.BR
<.IF <ARG,NEEDED,_< .... >
.B1.LM25.TS25.I-16
<REFERENCED#--	^THE CODE WILL BE ASSEMBLED IF ARG IS IN THE SYMBOL TABLE.
.B1.I-16
<NEEDED#####--	^THE CODE WILL BE ASSEMBLED IF ARG IS IN THE SYMBOL TABLE AND ITS VALUE IS UNDEFINED.
.B1.LM9.I-4
7.##^ALTERNATE ^INTERPRETATIONS OF <MACRO ^ARGUMENTS
.B1
^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.
.PG.B1
^IF YOU PREFIX A BACKSLASH (_\) TO AN ARGUMENT, <MACRO EXPECTS A NUMERICAL VALUE AND THE <ASCII STRING REPRESENTATION OF THE VALUE IS PASSED.
.B1
^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.
.B1
^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.
.B1.LM8.RM80.TS16,24,48,56,62.NF.NJ
<LALL
<DEFINE <LOOKIE(STR,ARG) _<
	<REMARK	^THE PASSED ARGUMENT IS:  <ARG
	<REMARK	BUILD A NEW STRING:	STR'ARG >
.B1.I-8
;^EXAMPLE OF PREFIXING ACTUAL ARGUMENT WITH _\
.I-8
<CASE1:##<VALUE=0
<LOOKIE <LPT,_<VALUE+1>_^
	<REMARK	^THE PASSED ARGUMENT IS:  <VALUE+1
	<REMARK	BUILD A NEW STRING:	<LPTVALUE+1
.I-8
<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
.I-8
;^EXAMPLE OF PREFIXING ARGUMENT WITH _\'
.I-8
<CASE2:##<VALUE='A'
<LOOKIE	<DSK,VALUE_^
	<REMARK	^THE PASSED ARGUMENT IS:	<VALUE
	<REMARK	BUILD A NEW STRING:	<DSKVALUE	_^
.I-8
<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
.PG
<LOOKIE	<DSK,_\'VALUE_^
	<REMARK	^THE PASSED ARGUMENT IS:	<B
	<REMARK	BUILD A NEW STRING:	<DSKB	_^
	<VALUE=VALUE+1
.B1
<LOOKIE	<DSK,_\'VALUE_^
	<REMARK	^THE PASSED ARGUMENT IS:	<C
	<REMARK	BUILD A NEW STRING:	<DSKC	_^
	<VALUE=VALUE+1
.B1.I-8
;^EXAMPLE OF PREFIXING ARGUMENT WITH _\"
.I-8
<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	_^
.I-8
<CASE3A:##<LOOKIE	_<<?ERROR <IN <LINK <MODULE <LNK>,_\"VALUE_^
	<REMARK	^THE PASSED ARGUMENT IS:	<XIT
	<REMARK	BUILD A NEW STRING:	?<ERROR <IN <LINK <MODULE <LNKXIT
.B1.LM9.RM70.PS58,70.F.J.I-4
8.##^POLISH BUGS FIXED IN THE FOLLOWING AREAS:
.B1
^^_<XWD POL,POL>\\ OR ^^_<POL,,POL>\\
.B1
^^_<IOWD POL>\\
.B1.I3
^^-_<POL>\\
.B1.I3
-<EXP WHERE <EXP IS A RELOCATABLE EXPRESSION
.B1.I3
^^@POL(AC)\\
.B1.I3
^^OPDEF FOO [ POL ]\\
.B1
^GENERATE FULL WORD FIXUP FOR <FOO_#_#
.B1.LM9.F.J.I-4
9.##^POLISH LISTING FORMAT
.B1
^A NUMBER SIGN (_#) IN THE LISTING INDICATES THAT A ^POLISH EXPRESSION IS REQUIRED
TO RESOLVE THE EXPRESSION:
.B1
^FOR EXAMPLE:
.B1.LM9.NF.NJ
561  02  000  000000_#      ;REQUIRES RIGHT HALF ^POLISH FIXUP
000000000000_#              ;REQUIRES FULL WORD ^POLISH FIXUP
000000_# 000002             ;REQUIRES LEFT HALF ^POLISH FIXUP
.PG.B1.F.J.LM9.I-5
10.##<PSECT INDEX IN LISTING
.B1
<PSECT INDEX IS OUTPUT AT THE END OF RELOCATION COUNTER VALUE IN THE LISTING, SEE EXAMPLE BELOW:
.B1.LM0.RM130.TS36,44,52,66.NF.NJ
^^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
.B1
98P CORE USED\\
.PS58,70.B1.LM9.F.J.I-5
11.##^POLISH NOT ALLOWED WITH <RELOC _& <BLOCK _& ^CONDITIONALS
.I-5
12.##<KL INSTRUCTIONS HAVE BEEN UPDATED
.B1.LM0.RM70.C
<JRST AND <JFCL ^MNEMONICS
.C
-----------------------
.B2.LM5.NF.NJ.TS 28,38,60
^^
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,
\\
.PG.LM0.C
<KL10 <EXTEND ^INSTRUCTION ^MNEMONICS
.C
---------------------------------
.B2.LM5.NF.NJ.TS 28,38,60
^^
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\\
.B1.LM9.F.J.I-5
13.##^TAGS DEFINED IN A LITERAL:
.B1
^TAGS IN LITERALS MAY BE REFERENCED ANYWHERE FROM THE PROGRAM WITH THE FOLLOWING RESTRICTIONS.
.B1.LM13.I-4
A.##^MAY <NOT BE USED IN AN ARBITRARY EXPRESSION.
.B1.I-4
B.##^MAY <NOT BE REFERENCED FROM ANOTHER <PSECT.
.B1.LM9.F.J.I-5
14.##^CODE ^GENERATION ^CHANGES:
.B1
^THE DESCRIPTIONS OF THE BLOCK TYPES 24,23, AND 22 SUPERCEDE THE DESCRIPTIONS IN THE <LINK MANUAL.
.B1
<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 <PSECT<S BY THE <PSECT INDEX NUMBER.
.B1
<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.
.PG.B1
<BLOCK 23#--#^<MACRO GENERATES A SET OF BLOCK 23'S FOR
ALL THE <PSECT<S AT THE END.  ^A TYPE 23 CONTAINS TWO DATA WORDS.  ^THE FIRST IS A <.PSECT NAME IN <SIXBIT.  ^THE SECOND CONTAINS
THE <.PSECT BREAK.
.B1
<BLOCK 11#--#^THERE IS AN ADDITIONAL TYPE OF ^POLISH FIXUP WHICH OCCURS FOR ASSEMBLIES
WITH MULTIPLE <.PSECT<S.  ^WITH MULTIPLE <.PSECT<S, IT IS NECESSARY TO DISTINGUISH AMONG
THE <.PSECT<S 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.
.B1
<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.
.B1.I-5
15.##^BETTER <RELOC,LOC, <.ORG INTERACTIONS
.B1.I-5
16.##^ADD <.NODDT PSEUDO-OP --
.B1
^SUPPRESS <DDT AND PART OF SYMBOL NAMES
.B1.I-5
17.##<REL FILES GENERATED BY <MACRO <V52
AND <MACRO <V53 MAY NOT COMPARE WITH <FILCOM.
.B1.I-5
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.
.B1.I-5
19.##<OPDEF<'S MAY BE DECLARED <INTERNAL ONLY IF NO LABEL OF THE SAME
NAME EXISTS.
.B1.I-5
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.
.PG.LM0.B3
3.0##<KNOWN <BUGS <AND <DEFICIENCIES
.B1.LM9.I-4
1.##<MACRO CAN'T GENERATE ANY ^POLISH BLOCK WHICH WILL USE MORE THAN 17 WORDS.
.B1.I-4
2.##^YOU CAN'T FORWARD REFERENCE A ^POLISH SYMBOL,
.BR
SHOULD DO:
.B1.I5
<FOO=EXT_#_#+1
.I5
#####_.
.I5
#####_.
.I5
#####_.
.I5
<MOVE##<1,FOO
.B1.I-4
3.##^A ^POLISH <OPDEF IS TREATED INTERNALLY AS A FULL WORD ASSIGNMENT.
^AS A RESULT, <AC AND ADDRESS MAY NOT BE USED WITH IT.
.B2.LM0.F.J
.lm9.b1.i-4
4.##<MACRO<'S FLOATING POINT INPUT ROUTINES DO NOT AGREE WITH THOSE
OF OTHER COMPILERS, <FORTRAN IN PARTICULAR.
.B1.I-4
5.##<MACRO WILL NOT ASSEMBLE A LINE IN <PIP CORRECTLY:
.B1.I6
<DISP###),0
.B1
^ADD ANGLE BRACKETS AROUND THE UN-PAIRED CLOSE PAREN IN <PIP.MAC:
.B1.I6
<DISP###_<)>,0
.B1.I-4
6.##<MACRO WILL NOT ASSEMBLE A LINE IN <RUNOFF CORRECTLY:
.B1.I6
<MSG$###..."
.B1
^DELETE THE UNPAIRED QUOTE MARK AT THE END OF THE LINE <RUNOFF.MAC:
.B1.I6
<MSG$###...
.B1.I-4
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
50^A, 52, AND 53 OF <MACRO.
.B1.I-4
8.##<MACRO CURRENTLY WILL NOT ALLOW POOLING OF LITERALS WHICH CONTAIN LABELS.
.PG.B1.I-4
9.##^IF THE RIGHT HAND SIDE OF AN ASSIGNMENT STATEMENT IS AN EXPRESSION CONTAINING ^POLISH, ANGLE-BRACKETS MUST SURROUND THE EXPRESSION.
.B1.I-4
10.#^EXPRESSIONS OF THE FORM
.B1.I5
_<<EXT##+1>^B7
.B1
GENERATE A ?<MCREPP ERROR MESSAGE.
.B1.I-4
11.#^INCORRECT <CREF LISTINGS GENERATED WHEN:
.B1.I5
_.ZERO LOOP OF <IRP IS DONE.
.B1.I5
_.REFERENCES SUPPRESSED BY <XLIST INSIDE MACRO EXPANSION.
.B1.I-4
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.
.B1.NF.I5
^^SEARCH MACTEN
.I5
JRST MACERR
.I5
MACERR:
.I5
END\\
.B1.F.J
^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.
.B1.I-4
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.
.LM0.B3
4.0##<INSTALLATION <INSTRUCTIONS
.B2
^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.
.B1
^TO INSTALL <MACRO ^VERSION 53 ON YOUR SYSTEM, COPY THE FILE
<MACRO.EXE TO <SYS:.
.B1
^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.
.B1
^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, <PPN<S AND OTHER SUCH SYSTEM
PARAMETERS.
.B1
<MACRO REQUIRES FIELD IMAGE <HELPER, WHICH IS LOADED
IMPLICITLY VIA AN IMBEDDED <.REQUIRE PSEUDO-OP IN THE
<MACRO SOURCE FILE.
.B3;.LM 0;.F;.J
5.0##<INTERNAL <CHANGES
.B1.LM20.TS10,20.I-20
;^CONTINUED ^VERSION 52
.I-20
;553	(22193)	^FLAG NON-SIXBIT IN SINGLE-QUOTE STRINGS WITH ^Q-ERROR
.I-20
;554	(10382)	^DON'T REPLACE _^^Z WITH <LF UNLESS INPUT <DEV IS <TTY
.I-20
;555	(10202)	^WARN USER IF CODE STORED BEFORE <.COMMON
.I-20
;556	(22425)	^ALLOW LEADING NUMERIC CHAR IN ARGUMENTS TO "<SEARCH"
.I-20
;557	(22491)	^GENERATE -^X (WHERE ^X IS RELOCATABLE) PROPERLY
.I-20
;560	(22488)	^PLACE ALL OCCURENCES OF FLAGS '<INASGN', '<INANGL' UNDER ^POLISH ^FEATURE ^TEST
.I-20
;561	(22490)	^GENERATE -1_^!^X (WHERE ^X IS RELOCATABLE) PROPERLY
.I-20
;562	(22544)	^FIX PAGE OFFSET AFTER <PRGEND
.I-20
;563	(22495)	^FIX ;; COMMENTS LISTING WHEN DEFINED UNDER <LALL
.I-20
;564	(22493)	^PREVENT "<IO <TO <UNASSIGNED <CHANNEL" ERROR AFTER "^^?POLISH TOO COMPLEX\\" ERROR MESSAGE
.I-20
;565	(22489)	^PREVENT TERMINAL WAIT AFTER <PRGEND AFTER BEING DETACHED OR <CCONTED
.I-20
;566	(22498)	^REMOVE ^EDIT 531; BROKE LISTING OF EMBEDDED MACRO CALLS UNDER <XALL
.I-20
;567	(22500)	^ENHANCEMENT <EDIT/REQUEST <REL:HELPER,LC <SYMBOL <TYPES,U-LC <MONTHS
.I-20
;570	(10570)	^PREVENT ^E-ERRORS AFTER PURGE OF <UNDEF OR <EXT SYMBOL
.I-20
;571	(22676)	^FORCE <HISEG TO START ON PAGE BOUNDARY, NOT ^K-BOUNDARY
.I-20
;572	(22748)	^REPLACE ^EDIT 556 BY ALTERNATE EDIT ACCOMPLISHING SAME PURPOSE
.I-20
;573	(22321)	^FIX <LOC/RELOC IN <TWOSEG <RELOC PROGRAMS
.I-20
;574	(22501)	^ADD "^^ILLEGAL SYNTAX IN MACRO DEFINITION"\\ ERROR MESSAGE
.I-20
;575	(22492)	^PUT ALL <PSECT-RELATED CODE UNDER <FTPSECT SWITCH
.I-20
;576	(22485)	^FIX <LABEL+OFFSET ACCROSS SEGMENTS, AND WHEN <OFFSET > 1000
.I-20
;577	(22187)	^FIX LISTING OF <MACRO EXPANSION WITH ERRORS UNDER <SALL
.I-20
.B1.I-20
;^START OF ^VERSION 53
.I-20
;600		^TURN ON <FTPSEC
.I-20
;601		^FIX TAGS IN <LIT USED WITH <PSECT<S
.I-20
;602		^ALLOW <.PSECT/.ENDPS IN <LIT
.I-20
;603		^FORCE EXPRESSION EVALUATION IN CONDITIONAL.
.I-20
;604		^COMMENT OUT <1LINE <@BOUT20+5 (NEEDS RE-WORK)
.I-20
;605		^FIX BUG WITH WRONG <RELOC VALUE FOR <PSECT <@%SWSG2+6
.I-20
;606		^E-ERROR IF <FOO_#_#=EXP <@ASSIG3+6
.I-20
;607		^GENERATE A WORD OF 0 FOR [<SIXBIT_\_\] <@SIXB20+
.I-20
;610		^DO EXPRESSION OF ^POLISH SYMBOLS FROM <UNV IN <PASS2 <@EVNUM+
.I-20
;611		^ALPHABETIZE <.IF/.IFN ATTRIBUTE TABLE.
.I-20
;612		^FIX BUG WITH "<IOWD <A_#_#,FOO" WHEN USED WITH <PSECT
.I-20
;613		^STORE CURRENT <RADIX IN <CURADX AND FREE UP <RX AS <FRR.
.I-20
;614		^OUTPUT "_#" BIN BINARY LISTING TO INDICATE ^POLISH FIXUP.
.I-20
;615		^OUTPUT NUMBER OF PAGES USED INSTEAD.
.I-20
;616		^DON'T ALLOW ^POLISH FOR "<BLOCK" _& "<RELOC" PSEUDO-OPS.
.I-20
;617		^DON'T MAKE <LTAGF SYMBOLS EXTERNALS AT END OF <PASS1.
.I-20
;620		^Q-ERROR IF EXTERNALS PURGED.
.I-20
;621		^ADD <.IF <FOO,REFERENCED,_<...>
.I-20
;622		^FIX BUG WITH OUTPUTTING "_#"
.I-20
;623		^ALLOW EXPRESSIONS OF EXTERNALS AND <PSECT-SYMBOLS.
.I-20
;624		^ALLOW ^POLISH WITH <OPDEF
.I-20
;625		^GENERATE ^POLISH <FWF FOR [<A_#_#]
.I-20
;626		^ADD <.IF <FOO,NEEDED,_<...>
.I-20
;627		^UPDATE <KL INSTRUCTIONS
.I-20
;630		^MORE ON ^EDIT 625 TO CHECK FOR <LH=0,INDIRECT,INEX, _& <POLISH
.I-20
;631		^GENERATE A SET OF <BLOCK23<'S BEFORE ALL THE SYMBOLS
.I-20
;632		(^SAME AS 577)
.I-20
;633		^OUTPUT "_#" AND "*" FOR ASSIGNMENTS AND SYMBOL TABLES.
.I-20
;634		^ALLOW "<A <FOO_#_#+1(1)".
.I-20
;635		^ADD SPECIAL CHARS _\' AND _\" IN A MACRO CALL.
.I-20
;636		^ALLOW <POLISH AND <INDEX<ING
.I-20
;637		^DON'T DO <FWF FOR <OPDEF <A[B_#_#]
.I-20
;640		^SAVE <AC <FR ON STACK BEFORE DOING EXPONENT IN NUMBER PROCESSING.
.I-20
;641		^CHECK FOR <PSECT WHEN DOING <FWF <@OCTFW+
.I-20
;642		^SET <PSECT INDEX TO 0 BEFORE GENERATING <BLOCK 5
.I-20
;643		^FIX BUG WITH <FOO_#_#(1)
.I-20
;644		^FIX BUG WITH <EXP <FOO_#_#,FOO_#_#,FOO_#_#
.I-20
;645		<FWF FOR UNDEFINED SYMBOL IN OPERATOR FIELD.
.I-20
;646		^ILLEGAL TO USE <PRGEND WITH <PSECT, TREAT IT AS END
.I-20
;647		^OUTPUT <PSECT <INDEX IN LISTING
.I-20
;650	(22327)	^FIX DISAPPEARING MACRO CALLS WITH <FF UNDER <SALL
.I-20
;651	(22226)	^FIX VARIETY OF LISTING BUGS TIED TO ERROR-FLAGGING
.I-20
;652	(22999)	^FIX "<ENTRY <FOO" WHERE <FOO IS ALSO AN <OPDEF
.I-20
;653	(22497)	^FLAG "<VERSION <SKEW" IF OLD-STYLE <UNV WITH <SYN
.I-20
;654		^FIX TYPOGRAPHICAL ERROR IN PUBLISHED ^EDIT 564
.I-20
;655	(22482)	^FIX TOO MANY <LINES/PAGE WITH <XLIST INSIDE <SALL <MACRO
.I-20
;656	(22499)	^FIX "<?ILL <MEM <REF" WHILE EXPANDING MACRO CALLS EMBEDDED COMMAS
.I-20
;657	(^Q1382)	^EXTEND NEW <MACRO <ARG HANDLING TO PARENTHESIZED A <ARG STRING
.I-20
;660	(23098)	^RESTORE <IFE/IFN <A_#_# HANDLING TO OLD (PRE-52) WAY
.I-20
;661	(22515)	^PREVENT <ILL <MEM <REF ON UNCLOSED TEXT IN MULTI-LINE ASSIGNMENT
.I-20
;662		^SIMPLIFY ^EDIT 561
.I-20
;663	(23170)	^FIX LOST ERRORS IN <PASS1 DURING LINE "<IMAGE" TYPEOUT
.I-20
;664		^SPEED AND EFFICIENCY ENHANCEMENTS; <ROUTINES: <GETCHR,PRINT,CHARAC,READ1A
.I-20
;665	(23246)	^DON'T TREAT LEADING COMMAS AS SEMICOLONS
.I-20
;666		^FIX VARIOUS BUGS TIED TO "<LABEL+OFFSET" TYPEOUT
.I-20
;667		^FIX BAD <ASCIZ IN <LITERALS (SIDE-EFFECT OF ^EDIT 661)
.I-20
;670		^ALLOW <>NODDT OF <OPDEF (I.E., <.NODDT <PJRST,CALL, ETC.)
.I-20
;671		^REMOVE ^EDIT 657 (I.E., TAKE FAMILIAR PATH OF LEAST RESISTANCE
WITH REGARD TO EXISTING PROGRAMS)
.I-20
;672		^IGNORE REDUNDANT SEARCH <ARG<S, ADD "^SEARCH ^TABLE ^OVERFLOW" ERROR MESSAGE
.I-20
;673	(^Q1286)	^LIST <CRLF<S IN PARENTHESIZED <MACRO <ARG<S CORRECTLY
.I-20
;674		^GIVE ^E-ERROR FOR EXTERNAL ARRAY NAME
.I-20
;675		^HANDLE <INTERN OF MIXED <ARG TYPES CORRECTLY
.I-20
;676		^PREVENT THE USE OF ARGUMENS _< 4 TO _/<NNL
.I-20
;677		^ALLOW <.IF <EXPRESSION,QUALIFIER_<CODE> (OMITTING COMMA)
.I-20
;700		^ALTER "^CORE ^ALLOCATION ^PROBLEM" ERROR MESSAGE, FORCE
REALLOCATION UNLESS _/^U (MEMORY-RESIDENT UNIVERSALS)
.I-20
;701		^FLAG NON-SIXBIT IN <SIXBIT ^PSEUDO-OP CORRECTLY, TERMINATING STRING
.I-20
;702		^REPLACE <MBR,MBC,MBI MESSAGES WITH <ISR,ISC,ISI (SYNTAX CHECKS)
.I-20
;703	(22939)	^HANDLE COMPLES FORWARD <REF OF <SYM WHERE <SYM=POLISH CORRECTLY
.I-20
;704		^FIX BAD <CREF OUTPUT WHEN LISTING <MACRO <ARGS <W/CRLF<S AND "_\"
.I-20
;705	(23527)	^FIX <ILL <MEM <REF WITH <IFX _<<POLISH <SYMBOL> (SIDE EFFECT OF 660)
.I-20
;706	(22484)	^MAKE _<<LH,,POLISH>,_<POLISH,,RH>,_<POLISH,,POLISH> WORK
.I-20
;707		^FIX BUG WITH <LITERAL <PC WHEN DOING <PSECT CHANGES AT END.
.I-20
;710		^GET CORRECT RELOCATION WHEN EVALUATING "!".
.I-20
;711		^ENTER ^PSECT-NAMES AS EXTERNAL SYMBOLS.
.I-20
;712		^COLLAPSE 2 INSTRUCTIONS INTO <EXTRN2 ROUTINE
.I-20
;713		^MOVE NO <UNV SEARCH FLAG INTO <AC <FRR.
.I-20
;714		^RESET SYMBOL TABLE POINTER WHEN A TAG HAS OTHER USE IN <DIFF <PSECT<S
.I-20
;715		^SEARCH ONLY CURRENT SYMBOL TABLE IN LOOKING FOR <VAR<S.
.I-20
;716		^RESET <REL1P POINTER AT PASS INITIALIZATION
.I-20
;717		^BUG FIX WITH <PSECT OUTPUT FORMAT
.I-20
;720		^FLAG <.DIRECT NO NO <ARG WITH ^Q-ERROR
.I-20
;721		^FIX BUG IN ^EDIT 573 WITH <RELOC/RELOC/LOC/RELOC <ARG
.I-20
;722	(10945)	^FLAG <IOWD <A,B WHERE <A IS <RELOC WITH ^R-ERROR
.I-20
;723	(10929)	^FIX TRUNCATING OR GARBLING OF LONG <PRINTX TEXT
.I-20
;724	(23826)	^GIVE "<UNASSIGNED" ERROR MESSAGE FOR UNDEFINED SYMBOLS
WITH UNRESOLVED <36BIT VALUES (E.G. <B=B+1000000).
.I-20
;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.
.I-20
;726		^IMPLEMENT "<LTL <LITERAL <TOO <LONG" ERROR MESSAGE.
.I-20
;727		^GENERATE CORRECT ^POLISH FOR _<<POL>.
.I-20
;730		^GENERATE CORRECT ^POLISH FOR _<<IOWD <POL,POL>
.I-20
;731	<BBN	^BUG FIX WITH <GETCHR
.I-20
;732		^INCLUDE ^S-ERROR IN DEFINITION OF ERRORS.
.I-20
;733	(24065)	^FIX BAD ENTRY BLOCK CAUSED BY BAD <SEARCH/ENTRY INTERACTION
.I-20
;734	(23987)	^HANDLE NEGATIVE RELOCATION CORRECTLY WITH ^POLISH
.I-20
;735		^ALLOW FORWARD-REF OF TAGS IN <LIT(<GENERATE 10-BLOCKS).
.I-20
;736		^FIXUP <SYMTAB AFTER <FORWARD-REF TO <USER-DEFINED OPERATOR.
(<MACRO,OPDEF,SYN)
.I-20
;737		^FIX BUG WITH THE NEW <IOWD CODE.
.I-20
;740		^CHECK FOR NON-REFERENCED LITERAL TAGS.
.I-20
;741		^A-ERROR WHEN <LH-<TRUNCATED WITH <RELOC.
.I-20
;742		<VARF (<TREF) USED WITH <LTAGF MEAN TAG REFERENCED.
.I-20
;743		^SUPPRESS <PASS1 <IFX ^V-ERROR.
.I-20
;744	(^Q2191)	^MAKE SURE <LTGSW GETS CLEARED EACH TIME.
.I-20
;745		^CHECK FOR <SPTR BEFORE UPDATE IN <ASSIGN.
.I-20
;746		^GIVE <ERRMSG WHEN <MRP POINTS TO 0 DUE TO <MACRO EXPANSION <ERR.
.I-20
;747		^GENERATE CORRECT ^POLISH FOR <_<E,,K>,_<K,,E>, _& <_<E,,E>.
.I-20
;750		^FIX BUG WITH <@POL(K).
.I-20
;751		_<^POINT <K,POL,POL> TO USE <ANGFP ROUTINES.
.I-20
;752		^RESOLVE EDIT 736 _& 675 CONFLICT IN <OPDEF HANDLING.
.I-20
;753	(18606)	^PREVENT EXTRA LINE LISTING WITH <FF INSIDE REPEAT 0 OR FAILING CONDITIONAL.
.I-20
;754	(22804)	^CLEAR <XLIST AFTER <END/PRGEND (DOESN'T AFFECT LITS, ETC.).
.I-20
;755	(22442)	^OUTPUT TITLE ".<MAIN" FOR UNTITLED <PRGEND MODULES DURING <RPG ASSEMBLY.
.I-20
;756	(24473)	^FIX TOO FEW LINES/LISTING-PAGE WITH <PRINTX.
.I-20
;757(^REMOVED)	^MAKE SURE _^- HAS HIGHER PRECEDENCE OVER BINARY OPERATORS.
.I-20
;760		^OUTPUT BINARY ON BLOCK STATEMENT IN A LONG LINE INSIDE <MACRO.
.I-20
;761	(^Q2201)	^FIX BUG IN <EOUT THAT GENERATED WRONG COUNT FOR BLOCK 4.
.I-20
;762	(^Q2204)	^E-ERROR FOR <BYTE (^N)...<POL... WHERE ^N .<NE. _^^D36.
.I-20
;763	(^Q2211)	^GENERATE BLOCK 22 WITH SYMBOL TABLE INSTEAD OF BLOCK 23.
.I-20
;764		^CHECK FOR INTERNAL <OPDEF AT <INDEF.
.I-20
;765	(^Q2195)	^DON'T GENERATE EMPTY ENTRY BLOCK.
.I-20
;766		^SAME AS 733.
.I-20
;767	(^Q2185)	^RE-DO CALCULATION OF <RC IN <EVADR.
.I-20
;770	(^Q2210)	^FIX BUG WITH FLAGGING MULTIPLY DEFINED TAGS IN DIFFERENT <PSECTS.
.I-20
;771		^TEST FOR <NOPSW AT CLOSING ANGLE BRACKET.
.I-20
;772		^FIX BUG WITH REFERENCING ^POLISH <OPDEF.
.I-20
;773		^REPLACE EDIT 747
.I-20
;774		^MAKE <LABEL+OFFSET HANGLING CONSISTANT.
.I-20
;775	(^Q2200)	^CHECK <CPU VALUE BEFORE TYPEOUT OF SIZE INFO.
.I-20
;776		^DON'T DO <PSECT CHECK FOR PHASED LABEL.
.I-20
;777		^ALLOW <BYTE(18) OF ^POLISH IF HALF WORD ALIGNED.
.I-20
;1000		^ADD 2 CELLS FOR BUILDING <OPDEF CODE TO AVOID PROBLEM WITH NESTED LITERALS.
.I-20
;1001		^DON'T LET <MACRO EXPANSIONS CHANGE <LABEL+OFFSET SETTINGS.
.I-20
;1002	(^Q2235)	^DON'T STORE <UNV NAME UNTIL IT'S VERIFIED.
.I-20
;1003	(24751)	^MAKE <FF LIST CORRECTLY (SUPERSEDES EDIT 753).
.I-20
;1004		^MINOR SOURCE CHANGES:  TABS IN LONG LINE, PAGE, ETC.
.I-20
;1005		^DON'T GENERATE GLOBAL REQUEST FOR A SYMBOL WHERE SYMBOL=<UND.
.I-20
;1006		^SAVE <INOPDF <@SQBRK+ TO ALLOW LITERAL IN <OPDEF DEFINITION.
.I-20
;1007		^GIVE <EPP MESSAGE DUE TO TYPOS CAUSING ILLEGAL ^POLISH.
.I-20
;1010		^ADD A WORD TO DIFFERENTIATE _<0,,<POL> WITH _<<POL>
.I-20
;1011	(^Q2276)	^SAVE <INOPDEF <@ANGLB+ TO ALLOW NESTED _<...> IN <OPDEF DEFINITION.
.I-20
;1012		^RECOVER <EXTPNT IF NEEDED AT <OP3.
.I-20
;1013		^MOVE LEFT ^POLISH TO FREE ^POLISH TO FREE SPACE BEFORE STORING THE PTR IN <XWDANG.
.I-20
;1014		^ALLOW <ENTRY, <INTERN STATEMENTS TO APPEAR IN DIFF. <PSECT THEN THE TAG.
.I-20
;1015		^FIX BUG WITH SETTING UP CORRECT <MP FOR MACROS NESTED IN CONDITIONALS.
.I-20
;1016		^DEFINE A RELOCATBLE <PSECT BIT FOR <PSECTS WITH NO FIXED ORIGIN.
.I-20
;1017		^CARRY UNDEFINED BIT ACCROSS ASSIGMENT DURING PASS1.
.I-20
;1020		^MODIFY BLOCK 22'S AND BLOCK 23'S AND ADD BLOCK 24'S.
.B1.I-20
;*****^END OF ^REVISION ^HISTORY*****
.PG.B3.LM0.F.J
6.0##<SUGGESTIONS
.b1
^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.
.b1.lm9.i-4
1.##^USE A HASH TABLE INSTEAD OF BINARY SEARCH.  ^ADD A SWITCH TO SPECIFY THE HASH SIZE.
.b1.i-4
2.##^BETTER CORE MANAGEMENT SCHEME.
.b1.i-4
3.##^SEARCH <UUOSYM.
.b1.i-4
4.##^USE <MACTEN AND <JOBDAT.
.b1.i-4
5.##^ALLOW CURVY BRACKETS TO WORK THE SAME AS ANGLE BRACKETS _<#> FOR CONDITIONALS, <REPEAT<S, <IRP<S, ETC.
.b1.i-4
6.##^ADD AN ERROR FILE TO CONTAIN ALL ASSEMBLY ERRORS TO BE USED WITH </N SWITCH.
.b1.i-4
7.##^ALLOW THE LINE CONTINUATION CHARACTER (_^__) TO WORK OVER END-OF-MACRO, <-IRP, ETC.
.B1.I-4
8.##^ALLOW MORE THAN TEN UNIVERSAL FILES TO BE CREATED OR READ DURING A GIVEN ASSEMBLY.
.B3.LM0.F.J
[^END OF <MCR53.DOC]