blog:pushbx:2026:1013_early_october_work_on_ident86_ldebug
Table of Contents
Early October work on ident86, lDebug
2026-10-11
ident86
- Use IBL2 sequential 1 format, only read the label itself rather than the colon or keyword that is matched before or after it. (No corresponding revision of insbound.py was created.)
- Use IBL2 sequential 2 format, expand local labels to generate their corresponding global labels.
- Simplify getlabelstring, it can be always used on a tuple object rather than the re.Match object, so that the type dispatch is no longer needed.
- Repeat on a debugger error detected in disassemble function, rather than raising an exception. This sometimes allows to handle errors that may occur during data entry or disassembly or dump.
- In insbound.py generate IBL2 sequential 2 file, with new match to only match label name (not colons or keywords around the label) and to expand local labels. This points from the IBL entry to the last base label, not necessarily the last label.
- Fix some indentation in the getlocallabelstrings function. (Hint: Same needed in insbound.py?)
- In matchsize handle simple TIMES directive with a DB, DW, or DD directive and a sequence of numbers or simple operators before the data directive.
- Set the newamount and newoffset_line variables for a matchrep (machine code dump with a repetition specified).
- Keep track of dynamic labels in ident86.py. These are only used for displaying the label found for --show-diff, and a dynamic label is only written separately if it doesn't match the static label already displayed. Dynamic labels are better in that they are easier to associate to the source when considering the resulting labels. They are useless for the original findsourceline purpose, which was to provide coordinates for editsource, so that use continues to operate on static labels.
(NB, the IBL2 sequential 2 format doesn't need to change. A dynamic base label that takes effect can never occur before a static base label, because then the static label would override the dynamic label. Therefore, both static and dynamic labels can be evaluated just by searching starting at the last static base label, which IBL2 sequential 2 format records.)
ETA:
- Pick earlier change to fix indentation in insbound.py's copy of getlocallabelstrings.
lDebug (experimental)
- Add SYMBOL.FAR. or SF. symbol prefix to return a pointer type expression (always Real/Virtual 86 Mode far address). Also relax the SYMBOL.OFFSET. matching so a symbol starting with eg "BASE." can be used. This changes the issymbol? function to allow returning pointer type expression terms.
- Return RIxxP variable as pointer type by default, so specifying an explicit PTR keyword for it is no longer needed. This changes the isvariable? function to allow returning pointer type expression terms.
- Mark DEVICEHEADER, DPRA, and PRA variables as defaulting to pointer type. This changes the isvariable structure to add a new flag, which happens to be located so that the decoded variable length has bit 7 set, which is how isvariable? now returns pointer type.
- Add a manual section exprtypes on the pointer type of expressions.
- Add dynamiclabel mmacro to emit a %note directive for dynamic labels.
You could leave a comment if you were logged in.
blog/pushbx/2026/1013_early_october_work_on_ident86_ldebug.txt · Last modified: by ecm
