Tagged Object Code
Revision as of 22:04, 28 June 2013 by Mizapf (talk | contribs) (Created page with "Tagged object code is the output of the TI-99/4A assembler program. It can be loaded by the linking loader included in the Editor/Assembler cartridge or in the [[Extended Bas...")
Tagged object code is the output of the TI-99/4A assembler program. It can be loaded by the linking loader included in the Editor/Assembler cartridge or in the Extended Basic cartridge.
Files containing tagged object code are stored in DIS/FIX 80 format.
Tag | Tag content | Tag | Tag content | ... | EOL tag |
Tag | Tag content | Tag | Tag content | ... | EOL tag |
EOF tag |
In tagged object code the tag content is almost always 2 bytes long (like addresses or memory contents). There are two formats for tagged object code:
- readable code: Contents are encoded as hexadecimal bytes, so the file contents can be edited with a common text editor.
- compressed code: Contents are stored between the tags by their byte values. This results in a considerably smaller output file (half as long) which can be loaded faster.
The Extended Basic loader only supports the readable code format.
Both loaders (Editor/Assembler and Extended Basic) only support a subset of the tags that can be produced by the TI Assembler. These tags are indicated in the following table by a gray background.
(Thanks to Thierry Nouspikel for the remaining codes!)
Tag | Argument | Argument | Argument | Meaning |
---|---|---|---|---|
0x01 | int16 | byte[8] | Identifier, compressed object code | |
'0' | int16 | byte[8] | Identifier, readable object code | |
'1' | int16 | Program entry ("END XXX"), absolute address | ||
'2' | int16 | Program entry, relocatable address | ||
'3' | int16 | byte[6] | REF (relocatable address, symbol) | |
'4' | int16 | byte[6] | REF (absolute address, symbol) | |
'5' | int16 | byte[6] | DEF (relocatable address, symbol) | |
'6' | int16 | byte[6] | DEF (absolute address, symbol) | |
'7' | int16 | Checksum (value) | ||
'8' | int16 | Checksum (value, ignored) | ||
'9' | int16 | Absolute location (location counter, from AORG) | ||
'A' | int16 | Program-relocatable location (location counter, RORG, default) | ||
'B' | int16 | Absolute contents | ||
'C' | int16 | Content, PSEG offset to be added | ||
'D' | int16 | Load bias (address where to start loading, not supported) | ||
'E' | int16 | int16 | REF offset (not supported) | |
'F' | end of record | |||
'G' | int16 | byte[6] | Symbol table dump (not supported), PSEG | |
'H' | int16 | byte[6] | Symbol table dump (not supported), AORG | |
'I' | byte[8] | Program ID (for symbol table) | ||
'J' | int16 | byte[6] | int16 | Symbol table dump (not supported), CSEG, DSEG |
'K' | int16 | byte[6] | External macro reference (not supported) | |
'M' | int16 | byte[6] | int16 | Segment declaration (length in bytes, $DATA for DSEG and $<name> for CSEG '<name>', id), id=0000 for DSEG, 0001 for CSEG<blank>, 0xxx for other CSEG |
'N' | int16 | int16 | Common-relocatable content, CSEG offset to be added (value, id) | |
'P' | int16 | int16 | Common-relocatable location (value, cseg_id) | |
'Q' | int16 | int16 | COBOL segment reference | |
'R' | int16 | int16 | Repeat count | |
'S' | int16 | Data-relocatable location (value) | ||
'T' | int16 | Data-relocatable content, DSEG offset to be added | ||
'U' | int16 | byte[6] | Load symbol | |
'V' | int16 | byte[6] | Secondary reference, PSEG | |
'W' | int16 | byte[6] | int16 | DEF in DSEG or CSEG (location, name, segment_id) |
'X' | int16 | byte[6] | int16 | REF in DSEG or CSEG (location, name, segment_id) |
'Y' | int16 | SREF absolute | ||
'Z' | int16 | int16 | SREF data-relocatable, common-relocatable | |
':' | [string] | End of file (with optional comment) |