[Maintenance] [th04] Split code segment #1 into two

So yes, we *can* technically decompile from anywhere, by splitting the
segment after the function we want, then .SEQuentially GROUPing the two
segments back together into one virtual segment matching the original
one. This gives us one more point where we can slot in new compilation
units that emit their code into the same segment, in the order given on
the link command line.

*But* since all ASM in ReC98 heavily relies on being assembled in MASM
mode, we then start to suffer from MASM's group addressing quirk,
described in the "Accessing data in a segment belonging to a group"
section in the Turbo Assembler Version 5 User's Guide.
Which then forces us to manually prefix every single function call

• from inside the group
• to anywhere else within the newly created segment

with the group name. It's stupidly boring busywork, because of all the
function calls you *mustn't* prefix. Special tooling might make this
easier, but I don't have it, and I'm not getting crowdfunded for it.

And while this is faster than porting the entire codebase to Ideal
mode, I'll only do this on rare occasions.
Like the upcoming, particularly awful piece of reverse-engineering.

Completes P0031, funded by zorg.
This commit is contained in:
nmlgc 2019-09-17 22:47:44 +02:00
parent 3383a4558b
commit 9f764fa6fb
2 changed files with 532 additions and 526 deletions

View File

@ -11,4 +11,4 @@ _grcg_fill_playfield_rows proc near
jge short _grcg_fill_playfield_rows
retn
_grcg_fill_playfield_rows endp
even
nop

File diff suppressed because it is too large Load Diff