forked from arti/vt1200
The 1987 DOS toolchain (GSPA/GSPLNK/GSPROM) runs under DOSBox and reassembles 32 KB of the v2.2 ROM byte-for-byte after five documented fixups to smart34010 output. The 1990 r5.01 tools are OS/2 NE and do not run in DOS. Adds the converter, round-trip script, and the DOSBox/dosemu benchmark.
48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
# SDK scratch: the 1987 TMS34010 DOS toolchain
|
|
|
|
This directory is a scratch area for the investigation in
|
|
`reference/tms34010-sdk.md`. The SDK under `tools/tms34010-sdk/` is only read;
|
|
everything here is extracted work product.
|
|
|
|
## Round trip
|
|
|
|
```sh
|
|
./roundtrip.sh 0x1000 32768 3F208000
|
|
```
|
|
|
|
`OFFSET SIZE BASE_BIT`: disassemble that ROM region with
|
|
`tools/smart34010/dis34 -o`, convert it to GSPA syntax with `dis2as34.py`,
|
|
assemble/link/convert with the 1987 DOS tools under DOSBox, interleave the
|
|
high/low Intel-hex files, and diff against the ROM. It prints `BYTE-EXACT`
|
|
and the md5 of the reassembled region on success.
|
|
|
|
The tools are extracted on first use from:
|
|
|
|
```
|
|
tools/tms34010-sdk/1987-05 TMS34010 SDK/
|
|
1987-11-06 TMS34010 Simulator-C Tools-ASM Tools.img
|
|
```
|
|
|
|
into `work/` (A2 = assembler/linker, C2 = C compiler/runtime). The ROM is
|
|
never written.
|
|
|
|
## Benchmark
|
|
|
|
```sh
|
|
python3 -u bench2.py # DOSBox vs dosemu, 3 runs, two workloads
|
|
```
|
|
|
|
`bench2.py` uses `dosbox-bench.conf` (dynamic core, `cycles=max`) and a private
|
|
dosemu `HOME` in `dosemu-home/`. The dosemu batch must end in `exitemu`;
|
|
`-E` alone leaves DOS running. Results are in the report.
|
|
|
|
## Notes
|
|
|
|
* `dis2as34.py` needs the `-o` opcode comments from `dis34`; they are what
|
|
disambiguate `MOVI` short/long, long relative `JR` vs absolute `JA`, and the
|
|
B-file `SP`.
|
|
* `gsprom -i` writes two files (high and low byte); interleave low then high.
|
|
Its record addresses are 16-bit word indices, not bit addresses.
|
|
* DOSBox 8.3 names are uppercased; check for `RT.OBJ`, not `rt.obj`. dosemu's
|
|
`lredir` keeps lowercase names.
|