In a macro language with an IBM-like syntax, local labels are implementable with macros defined approximately as
&a lbl define a label
aif (&f(&a) eq '').n
&b(&a) setc &f(&a) copy from forward to backward list
&b(&a) setc 'm&sysndx' will be backward-...
[Uncle Bod's answer nails it. Vote for him. This is more of a background add on.]
The underlying issue is a hodgepodge of language and number mixup, further complicated by using a different notation when thinking about the problem (writing the question) as the one used within the code written.
In the question the OP asks about 0x9FFF vs. 0xA000, which is a ...
Without reading the manuals it seems that both vasm and tasm decides if an operand is a number or a label is decided from the first character. A number MUST start with a digit in the decimal range, anything starting with a letter is considered a label. So you need to enter the number as '0A000H'.
So, when tasm finds an argument A000H it thinks it a label ...
See the IIc Technical Reference Manual, pages 64-66.
$FDED jumps to the user output vector ($0036) which is generally COUT1 (the 40-column firmware) or C3COUT1 (after a PR#3/JSR $C300).
COUT1 is strictly 40-column and the only control codes it supports are LF, CR, BS, and BELL. C3COUT1 is (obviously) 80-column aware and supports 21 control codes, including ...
For the record: IBM's first Fortran compiler did not necessarily produce machine code output (it depends on how you look at it). Most of the compilation process is spent building up symbolic instructions (i.e., lines of assembly) in a table called CIT (Compiled Instruction Table). Parts of the program depend on the symbolic format; for instance, section four ...
In the first case, I do not encounter any problem in the rest of my program.
That's because you are calling into ROM routines which set up everything for you.
In the second case I notice significant display problems, in particular if the display was in 80 columns before, and if the COUT routine is used after.
Well, you only switched the hardware. You didn'...
(It would be useful if you could describe what problems are encountered Without it's hard to give any help - beside citing the manual, and/or giving a friendly RTFM)
Usage works, as so often on two level, by using the 'OS' (well, firmware) or direct access.
In general the 80 column firmware needs to be activated first
PR#3 to turn on the 80 ...
(From memory, don't have the manuals at hand)
IIRC, there are not four pages, but 'only' two.
Using AUX memory does not give additional pages, but expands HGR into DHGR.
According to the "Apple IIc Reference Manual - Volume 1", page 45,
First of, when checking manuals, make sure to use the one referring to the computer you're using, As there are ...
Or, more specifically, IBM/360
All labels were always global.
The 360 assembler did not provide such relative labels (*1).
On the other hand it provided procedural macro language (*2), which as well included the ability to generate symbols and thus labels in arbitrary manner. All needed to make them local is using a unique number - which quite ...
Yes, maybe, in a way. It depends on how you define “IBM assembly language”. If it must be officially produced and distributed by IBM, then this isn't an answer, but if the sole criterion is that it is an assembly language for an IBM computer, then the answer is definitely yes.
The IBM 650 had an assembler called SOAP, for Symbolic Optimum Assembly Program. ...
This is not documented anywhere, as far as I can tell. But the source code of a few versions of the assemblers is available, so we can look there.
It turns out that there is a third form of macro definition. If you say MACRO* instead of MACRO, then the contents of the first parameter of your macro will be * if the macro was invoked with an asterisk, and ...