Commit Graph

238 Commits

Author SHA1 Message Date
nmlgc 9d23be1a92 [Reduction] #91: stpcpy 2014-08-20 17:03:08 +02:00
nmlgc d3aaca7bd3 [Reduction] #90: text_clear 2014-08-20 16:45:24 +02:00
nmlgc eff96385b0 [Reduction] #82-89: PC-98 escape sequences
I don't know anything about ANSI/VT100/??? escape sequences, but after some
quick research, these sequences and their effect seem to be specific to the
PC-98 (although they're implemented as part of DOS, of course).
2014-08-20 16:27:28 +02:00
nmlgc 8f6c28c939 Restore master.lib's FUNC and ENDFUNC macros
With seg000 changed to word alignment and all definitions for "func" removed,
the master.lib functions can keep their exact alignment themselves.

[Binary change] db 0 → nop before get_machine_98() in the MAIN.EXE and
MAINE.EXE files of TH04 and TH05, respectively.
2014-08-20 15:25:40 +02:00
nmlgc b90a1e2320 [Reduction] #80: chmod
Yup, getting rid of all the definitions for "func", so that we can restore the
master.lib macro with the same name.
2014-08-20 14:02:29 +02:00
nmlgc e9701c491d [Reduction] #79: atexit
Once again, random misreferences in one executable slow down the development.
And that function doesn't even seem to be called anywhere.
2014-08-20 14:02:27 +02:00
nmlgc ce00b0b534 [Reduction] #70-78: C start up code
Finally!

[Binary change] Order of the first three relocations in every executable.
Two more relocations in the TH01 executables.
2014-08-20 14:02:26 +02:00
nmlgc 8082ba0434 [Reduction] #52: setupio
Thanks, ZUNSOFT.COM, for turning this function into a mess.

[Binary change] Two relocations in every executable... *except* for TH01's
REIIDEN.EXE.
2014-08-18 19:50:20 +02:00
nmlgc dcb2726799 [Reduction] #51: Standard FILE structures
[Binary change] Relocations in TH01's FUUIN.EXE. (...)
2014-08-18 16:58:24 +02:00
nmlgc 11a91d0e45 [Reduction] #50: setenvp 2014-08-18 14:33:24 +02:00
nmlgc c5860dd7a6 Set up labels to denote the BSS and init/exit table segments
Again, we can't split dseg into the "real" segments just yet, because that
would force us to correct the assumed data segment in every single function.

[Binary change] Relocations in TH01's FUUIN.EXE. Again.
2014-08-17 23:55:59 +02:00
nmlgc aaba4d6149 Fix the declaration of errno
Hooray for underscore confusion. Should have copy-pasted the correct one all
along...
2014-08-17 13:57:24 +02:00
nmlgc 5fb4445ada [Reduction] #48-49: exec
[Binary change] Relocations in TH01's FUUIN.EXE.
2014-08-17 13:57:03 +02:00
nmlgc d4b766ee4e [Reduction] #45-47: Far data segment space allocation 2014-08-15 21:48:43 +02:00
nmlgc a033b347fc [Reduction] #44: graph_extmode 2014-08-15 16:12:09 +02:00
nmlgc a313ae5d78 [Reduction] #43: Text VRAM variables 2014-08-15 14:26:44 +02:00
nmlgc d5a80ee363 [Reduction] #42: Long shift right 2014-08-14 20:07:02 +02:00
nmlgc 554d0325d5 [Reduction] #41: Long pointer comparison 2014-08-14 20:07:00 +02:00
nmlgc 859e48a59f [Reduction] #40: Long multiplication 2014-08-14 20:06:58 +02:00
nmlgc ca18919ee7 [Reduction] #38: Long division 2014-08-14 20:06:55 +02:00
nmlgc bf4edcec28 [Reduction] #37: Long shift left 2014-08-14 20:06:54 +02:00
nmlgc fc9dacd180 [Reduction] #36: Huge pointer addition 2014-08-14 19:55:26 +02:00
nmlgc 3b911b3c20 [Reduction] #35: _isatty 2014-08-14 19:55:23 +02:00
nmlgc 4e3bd76348 [Reduction] #33-34: __IOERROR and __DOSERROR 2014-08-14 15:56:57 +02:00
nmlgc 5764275549 [Reduction] #26: strrchr
Marking the first function that was originally written in C, which means that
there are no original label names we could preserve.
2014-08-14 12:22:44 +02:00
nmlgc a3ab75cd34 [Reduction] #25: _strcat 2014-08-14 12:22:37 +02:00
nmlgc adf8e137d9 [Reduction] #24: _strcmp
[Binary change] Relocation order in TH01's REIIDEN.EXE... do they depend on
some kind of RNG?
2014-08-14 12:22:31 +02:00
nmlgc 18f77cb7da Include RULES.ASI from every executable's dump file.
Having thought this over for a while, I've decided to stay with the "include
slice" model for now, due to various bugs and other reasons.

We need to compile for the 386 CPU, but this causes TASM to automatically
default every segment to 32-bit mode, which of course is not what we want (and
no, .MODEL USE16 sadly does not help either). Appending USE16 to every segment
declaration in all included files seems to work, but for some reason, this
messes up certain jump instructions. WTF? And even if it did work, we would
still have to do this for every single file we include.

The alternative would be to build proper libraries and let the linker merge
all the code. This would add a lot of unwarranted complexity to the build
process. Not to mention all the EXTERN statements we'd have to maintain.

Ultimately, all of the C runtime ASM code is going to vanish anyway once we've
completed the reduction step. Once we're there, we can simply link to the
original version of the library. These initial dumps are not pretty, and I see
no point in wasting time on making intermediary stages of development look
pretty.

Since including RULES.ASI from every slice seems a bit inefficient (and even
potentiall harmful, considering the age of the development tools we have to
work with), we'll only include it once at the top of every main dump file.

[Binary change] Relocations in TH01's REIIDEN.EXE, again.
2014-08-14 09:54:00 +02:00
nmlgc 43f280ab55 [Reduction] #6-18: Far heap functions
Wow, what a slice. Lots of code, and it comes with its own data declarations
inside the code segment! Since all these functions were originally contained
in one code file, it makes sense to do all 13 in one commit. This removes all
erroneous references to the 'NULL CHECK' string.

[Binary change] This also changes some relocations in TH01's REIIDEN.EXE.
2014-08-13 14:40:41 +02:00
nmlgc 534ba2d142 [Reduction] #5: bfill
To get anywhere, we must become able to include assembly files that define
their own segments. But this will only work if we include these files in the
order they appear in in our dumps, *starting from the very first one*. And to
include the very first one, we must first get rid of the erroneous references
to the first few bytes of the data segment... and this function happens to be
the first one referencing those.
2014-08-10 11:47:36 +02:00
nmlgc 130a5c587d [Reduction] #4: _strcpy 2014-08-10 07:52:56 +02:00
nmlgc 23674951e5 [Reduction] #3: _stricmp 2014-08-10 07:52:29 +02:00
nmlgc 4dba5673cb [Reduction] #2: _strlen
Yes, I do have the .CAS files. However, even though they contain the assembly
source, they're actually C source, and we're not that far yet.
2014-08-10 07:51:36 +02:00
nmlgc 713ad758b6 [Reduction] #1: __abort
It begins. And this already shows that the inclusion of TH01's ZUNSOFT.COM
will double the size of all Borland C routines we slice out, because we have
to cover both large and tiny memory models...
2014-08-10 07:50:38 +02:00
nmlgc 60cf35edad Remove IDA's cross reference comments
We're going to rename *everything*, and grep is a much more useful tool to
achieve the same.
2014-08-10 07:40:12 +02:00
nmlgc 0459f03cfe th02/op: Identify performance option string pointers 2014-07-08 03:05:19 +02:00
nmlgc 2bd664c5e4 Compress unitialized memory by replacing bytes with dwords 2014-07-05 23:08:34 +02:00
nmlgc 3186da7cec th02/op: Initial state 2014-07-02 19:18:32 +02:00