Files
vt1200/tools/tms34010-sdk/README.md
T

4.4 KiB
Raw Blame History

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.