A TypeScript reimplementation of AMOS Pro, so you can put your old games on the web.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Click a shot to play it, or drop a file (.amos, .adf, .zip, .lha etc) into amos.bitplane.net and see how it plays.
The AMOS language and the extensions already taken on are broadly complete.
Some native-machine behavior remains approximated; KEYWORDS.md records the
current per-keyword status.
<div id="game" style="max-width: 640px"></div>
<script type="module">
import { createPlayer } from 'https://amos.bitplane.net/v/latest/assets/amos-player.js'
const player = createPlayer(document.getElementById('game'))
const bytes = new Uint8Array(await (await fetch('MyGame.zip')).arrayBuffer())
await player.loadArchive(bytes, 'MyGame.zip')
</script>Versions are paths, so swap latest for a version number to pin it.
/v/latest/ is under heavy development, so pin it unless you want the breakage.
npm install amos-ts gets the package with tools and other non-web things.
- docs/library.md, the npm package: the interpreter, the loaders and the headless runner.
- docs/internals.md, what each subsystem covers, where it lives, and the formats and semantics recovered from the original.
- docs/cli.md, every CLI tool, and the gen* tools that rebuild the checked-in data.
- docs/extensions/, the extension slot model, identification and evidence tiers.
- docs/amos3d/, the AMOS 3D file formats and engine, recovered from the binary.
CLAUDE.md holds the working rules: how evidence is ranked, what a quotation
may and may not do, and what each coverage classification claims.
npm run dev # the player, on a local server
npm test # vitest, with the coverage gate at teardown
npm run typecheck # tsc --noEmit
npm run lint # oxlint, correctness and suspicious rules only
npm run build # vite lib build to dist/
npm run cli -- src/cli/<tool>.ts <args> # run a CLI tool via tsx
npm test runs the faithfulness gate after vitest prints its summary, so read
the exit code. A run can report every test passing and still exit 1.
Core AMOS Professional is complete. KEYWORDS.md is the generated coverage
inventory. Faithful means the observable behavior was checked against shipped
source or a disassembled binary; it does not claim cycle-exact emulation.
src/amiga/ contains shims for dos, graphics, intuition, asl, locale, diskfont,
workbench and a few more, modelled as far as the programs reach.
UNIMPLEMENTED.md summarizes the remaining backend boundaries without
duplicating the generated keyword list.
fixtures/ is not committed for the usual licensing reasons. Put your .AMOS
and .Abk files there. The corpus integration test and src/cli/gentable.ts
expect fixtures/official-amos (the AMOS/ release tree from
AMOS-Professional-Official) and fixtures/aga-releases. Extension libraries go
in fixtures/extensions/<id>/.
MIT. See LICENSE.
Speech is narrator-ts (MIT), a
reimplementation of the Amiga narrator.device and translator.library.
The code and AMOS graphics were derived from AMOS-Professional-Official, everything else was reverse engineered for compatibility purposes.
The library on amos.bitplane.net contains copyrighted works that are assumed to be abandonware - if you'd like something removed please email gaz@bitplane.net or open a ticket here and I'll purge it from the history.





