forked from arti/vt1200
92 lines
4.4 KiB
Markdown
92 lines
4.4 KiB
Markdown
# TMS34010 SDK (curated subset)
|
||
|
||
Source: **https://github.com/tms34010guy/tms34010-sdk** — a cleaned-up mirror of
|
||
TI's TMS34010 development material that was previously scattered across bitsavers.
|
||
|
||
Cloned here because the project's goal is to run **custom, self-compiled
|
||
TMS34010 code** on a real VT1200, and this repo already had a disassembler
|
||
(`tools/smart34010`) and a Ghidra processor module (`tools/ghidra-tms34010`) but
|
||
**no assembler, linker or compiler**.
|
||
|
||
## What is committed
|
||
|
||
The two tool packages — the only parts with durable technical value:
|
||
|
||
```
|
||
1987-05 TMS34010 SDK/
|
||
1985-05-20 ... Assembly Language Package (1 of 4) ASM-LNK-ARCH ....img
|
||
1985-05-20 ... Assembly Language Package (2 of 4) GSPSIM-COMP ......img
|
||
1985-05-20 ... Assembly Language Package (3 of 4) GSPSIM-TIPC ......img
|
||
1985-05-20 ... Assembly Language Package (4 of 4) ROM-DEMO ........img
|
||
1987-11-06 TMS34010 Simulator-C Tools-ASM Tools ...................img
|
||
... plus sample/graphics libraries
|
||
1990-11 TMS340 Family SDK/
|
||
1990-11-19 ... Code Generation Tools (1 of 2) r5.01 ...........zip
|
||
1990-11-19 ... Code Generation Tools (2 of 2) r5.01 ...........zip
|
||
1990-11-19 ... C Source Debugger r5.00 ........................zip
|
||
1990-11-19 ... Graphics Library (1..3 of 3) r2.01 .............zip
|
||
1990-11-19 ... TIGA SDK r2.01 .................................zip
|
||
```
|
||
|
||
## It works, and the round trip is byte-exact
|
||
|
||
The **1987** toolchain runs headless in DOSBox: **GSPA 2.00** (assembler),
|
||
**GSPLNK 2.00** (linker), **GSPROM 2.01**, and the **K&R C compiler**.
|
||
|
||
**There is no `as34`/`lnk34`** — the assembler is `GSPA`. (`smart34010`'s README
|
||
names `as34`; that appears to be a later name or another part, not this SDK.)
|
||
|
||
**The round trip is proven against this exact firmware**: 32 KB at bit
|
||
`0x3F208000` reassembles **byte-for-byte identical** (region md5
|
||
`43adb6669571041985f3e26fd9ff7cb9`), plus a 16 KB and two 4 KB regions. Five
|
||
fixups are needed on the disassembly first: `0x`→`h` suffix, `MOVI` W/L forms,
|
||
the B-file `SP`, long relative `JR` misprinted as `JA` by `dis34`, and raw
|
||
`.word` for branches landing on non-instruction boundaries. Detail:
|
||
`reference/tms34010-sdk.md`.
|
||
|
||
**The linker's origin is a bit address**, and its COFF output carries the full
|
||
32-bit address — which is what makes this usable for placing *our* code at a
|
||
VT1200 bit address, not merely for verifying the firmware.
|
||
|
||
The **1990 r5.01 tools are OS/2 1.x NE binaries and do not run in DOS**, so that
|
||
half of the package is unusable here. The TIGA kit, debugger/monitor and
|
||
video-DAC material are equally irrelevant.
|
||
|
||
## Speed: prefer dosemu
|
||
|
||
Benchmarked on the same workload, timestamp-normalised output identical:
|
||
**DOSBox ≈1.99–2.23 s vs dosemu ≈0.35–0.43 s — 5.2–5.7× faster.** dosemu needs a
|
||
private drive and a batch file (`exitemu`); **DOSBox remains the known-good
|
||
fallback**, and `DOSBOX.md` documents its verified headless invocation.
|
||
|
||
## Traps worth knowing
|
||
|
||
* **`dis34` misreported two encodings** — long relative branches as `JA` and the
|
||
B-file `SP` as plain `sp`. **Both fixed** (`af7d3565a502`): `0x00` + a 16-bit
|
||
displacement is `JRcc` (2 words), only `0x80` + a 32-bit address is `JAcc` (3
|
||
words), and register field `0x1F` is `b15`. The round-trip fixup list dropped
|
||
from **5 to 3** as a result. For scale: the correction changes **2623** ROM
|
||
lines for `sp`→`b15` and **6235** for `JA`→`JR`, so disassembly read before
|
||
that date may have misreported those branches. The proof is reproducible —
|
||
the harness is committed at `harness/sdk-roundtrip/`.
|
||
* **`gsprom`'s hex addresses wrap at 64 KB** — use the COFF file or the map for
|
||
placement.
|
||
* **GSPA's `MOVI` auto-shortening can silently change sign extension.**
|
||
|
||
## What is NOT committed
|
||
|
||
`Docs/`, `Patents/` and `1991-07 TIGA Promo Kit and Art Software/` — about
|
||
**243 MB** of scanned manuals, patents and promotional material. They are
|
||
re-obtainable from the upstream repo above, and they would triple the size of
|
||
this repository for no build-time benefit.
|
||
|
||
`docs/TMS34010-users-guide.pdf` / `.txt` were already in this project and cover
|
||
the instruction set, so prefer those over the SDK's scans for programming
|
||
reference.
|
||
|
||
## Licence
|
||
|
||
TI material of this vintage, mirrored by a third party. It is vendored here as
|
||
reference/tooling for interoperability work on hardware the project owner
|
||
possesses. The upstream repository is the authority on provenance.
|