# 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.