2020-10-25 15:58:00 -04:00
|
|
|
# Z80 emulation
|
2019-05-09 12:58:41 -04:00
|
|
|
|
2019-05-20 12:11:45 -04:00
|
|
|
This folder contains a couple of tools running under the [libz80][libz80]
|
|
|
|
emulator.
|
|
|
|
|
2020-05-23 08:24:39 -04:00
|
|
|
## Requirements
|
|
|
|
|
|
|
|
You need `ncurses` to build the `forth` executable. In debian-based distros,
|
|
|
|
it's `libncurses5-dev`.
|
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
For `sms` and `ti84` emulators, you need XCB and pkg-config.
|
|
|
|
|
2019-05-20 12:11:45 -04:00
|
|
|
## Build
|
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
Running `make` builds all targets described below
|
2019-05-20 12:11:45 -04:00
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
## Vanilla Forth
|
2020-05-23 14:20:50 -04:00
|
|
|
|
2020-06-27 07:53:58 -04:00
|
|
|
The `./forth` executable here works like the one in `/cvm`, except that it runs
|
|
|
|
under an emulated z80 machine instead of running natively. Refer to
|
|
|
|
`/cvm/README.md` for details.
|
2020-03-24 13:46:05 -04:00
|
|
|
|
2020-06-27 07:53:58 -04:00
|
|
|
`./forth` doesn't try to emulate real hardware
|
|
|
|
because the goal here is to facilitate "high level" development.
|
2020-05-23 14:20:50 -04:00
|
|
|
|
2020-06-27 07:53:58 -04:00
|
|
|
These apps run on imaginary hardware and use many cheats to simplify I/Os.
|
2019-11-23 15:22:26 -05:00
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
## RC2014 emulation
|
|
|
|
|
|
|
|
This emulates a RC2014 classic with 8K of ROM, 32K of RAM and an ACIA hooked to
|
|
|
|
stdin/stdout.
|
|
|
|
|
|
|
|
Run `./rc2014 /path/to/rom` (for example, `os.bin` from RC2014's recipe).
|
|
|
|
Serial I/O is hooked to stdin/stdout. `CTRL+D` to quit.
|
|
|
|
|
|
|
|
There are 2 options. `-s` replaces the ACIA with a Zilog SIO and
|
|
|
|
`-c/path/to/image` hooks up a SD card with specified contents.
|
|
|
|
|
|
|
|
You can press `CTRL+E` to dump the whole 64K of memory into `memdump`.
|
|
|
|
|
|
|
|
## Sega Master System emulator
|
|
|
|
|
|
|
|
This emulates a Sega Master system with a monochrome screen and a Genesis pad
|
|
|
|
hooked to port A.
|
|
|
|
|
|
|
|
Launch the emulator with `./sms /path/to/rom` (you can use the binary from the
|
|
|
|
`sms` recipe.
|
|
|
|
|
|
|
|
This will show a window with the screen's content on it. The mappings to the
|
|
|
|
pad are:
|
|
|
|
|
|
|
|
* W --> Up
|
|
|
|
* A --> Left
|
|
|
|
* S --> Down
|
|
|
|
* D --> Right
|
|
|
|
* H --> A
|
|
|
|
* J --> B
|
|
|
|
* K --> C
|
|
|
|
* L --> Start
|
|
|
|
|
|
|
|
If your ROM is configured with PS/2 keyboard input, run this emulator with the
|
|
|
|
`-k` flag to replace SMS pad emulation with keyboard emulation.
|
|
|
|
|
2020-10-25 16:53:58 -04:00
|
|
|
The `-c` option connects a SD card in the same way as the RC2014 emulator.
|
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
In both cases (pad or keyboard), only port A emulation is supported.
|
|
|
|
|
|
|
|
Press ESC to quit.
|
|
|
|
|
|
|
|
## TI-84
|
|
|
|
|
|
|
|
This emulates a TI-84+ with its screen and keyboard. This is suitable for
|
|
|
|
running the `ti84` recipe.
|
|
|
|
|
|
|
|
Launch the emulator with `./ti84 /path/to/rom` (you can use the binary from the
|
|
|
|
`ti84` recipe. Use the small one, not the one having been filled to 1MB).
|
|
|
|
|
|
|
|
This will show a window with the LCD screen's content on it. Most applications,
|
|
|
|
upon boot, halt after initialization and stay halted until the ON key is
|
|
|
|
pressed. The ON key is mapped to the tilde (~) key.
|
|
|
|
|
|
|
|
Press ESC to quit.
|
|
|
|
|
|
|
|
As for the rest of the mappings, they map at the key level. For example, the 'Y'
|
|
|
|
key maps to '1' (which yields 'y' when in alpha mode). Therefore, '1' and 'Y'
|
|
|
|
map to the same calculator key. Backspace maps to DEL.
|
2020-05-03 12:51:21 -04:00
|
|
|
|
2020-10-25 15:58:00 -04:00
|
|
|
Left Shift maps to 2nd. Left Ctrl maps to Alpha.
|
2020-05-03 12:51:21 -04:00
|
|
|
[libz80]: https://github.com/ggambetta/libz80
|