# CPCEC — built here

| | |
|---|---|
| Source | https://github.com/cpcitor/cpcec.git (git archive of CNGSOFT's releases) |
| Pinned at | `c025aab961a796b918cc99bc3e16216ea65bb5d1` |
| Licence | GPL-3.0 (`LICENSE-cpcec.txt`) |
| ROMs | `rom/`, Amstrad's firmware and AMSDOS as CPCEC ships them, unmodified |
| French / Spanish firmware | `rom/fr/`, `rom/es/`, unmodified, from http://cngsoft.no-ip.org/cpc-rom-fra.zip and http://cngsoft.no-ip.org/cpc-rom-esp.zip |
| Refreshed by | `node tools/fetch-cpcec.mjs` |

`cpcec.js` and `cpcec.wasm` are compiled from that commit with Emscripten
(SDL2 port, ASYNCIFY). **Do not edit them** — the next refresh overwrites them.
One change to `cpcec-ox.h`, which does not touch what the emulator computes:
`session_delay()` sleeps through `emscripten_sleep()`, and the event pump
yields to the browser when nothing has for 40 ms (a machine running late would
otherwise never give the page its thread back).

Three files are Emulo's:

- `emulo.html` — the page, hand-written.
- `emulo-player.js` — the protocol the shell speaks, over `postMessage`.
- `cpc-keys.js` — the keyboard: what a key types is translated to the CPC
  key that types it under the firmware booted.
