This monorepo is a set of TRS-80-related libraries, tools, and web apps written in TypeScript. The subprojects are:
- z80-base: Utility functions and data structures for dealing with Z80 code.
- z80-inst: Database of Z80 instructions, their parameters, and other metadata.
- z80-emulator: Z80 emulator.
- z80-test: Tests for Z80 emulators. Any Z80 emulator can be plugged in here, in case you want to test your own emulator.
- z80-disasm: Z80 disassembler.
- z80-asm: Z80 assembler.
- trs80-logger: Logging functions for other TRS-80 libraries and tools.
- trs80-asm: Small library to help z80-asm and trs80-base work together.
- trs80-base: Classes for reading and writing a variety of TRS-80 file formats.
- trs80-disasm: Wrapper around z80-disasm that adds knowledge about the TRS-80, such as the location of ROM routines.
- trs80-emulator: TRS-80 hardware emulator. Can emulate a Model I and Model III, read-only cassette, and floppy disk.
- trs80-emulator-web: Classes for embedding the emulator in a web page.
- trs80-cassette: Library for reading and writing cassette WAV files. Does a good job with cassettes that have been partially damaged and can't be read by other converter tools.
- trs80-cassette-player: Tiny library for letting the TRS-80 emulator mount WAV and CAS files.
- trs80-cassette-webapp: Web utility for reading cassette WAV files and converting them to CAS files.
- my-trs-80: Web app for hosting a virtual TRS-80 and its library of cassettes and floppy disks.
- trs80-tool: Command-line tool for manipulating TRS-80 files.
- trs80-ide: Web app for developing assembly language TRS-80 programs.
- forth: Interpreter for the Forth programming language.
- wolf: A demo inspired by Wolfenstein 3D.
This has been tested with node
version 20 and npm
version 10. You can
get the latest version from the node.js website.
To install dependencies (do this once per clone or pull):
npm install
To do a sequential build:
npm run build --workspaces
Or to do a parallel build:
npx lerna run build
If you're getting build errors, try getting a fresh clone, or clean up your local installations with:
rm -rf node_modules packages/*/node_modules
npm install
npm run clean --workspaces
Copyright © Lawrence Kesteloot, MIT license.