collapseos/emul/8086
Virgil Dupras 475caf35f4 Make KEY non-blocking
... and rename it to KEY?. Then, add KEY from KEY? for its blocking
version.

I need this for an upcoming Remote Shell feature. If a Collapse OS
system remotely controls another shell, it needs to be able to poll
both the remote system and the local keyboard at the same time. A
blocking KEY is incompatible with this.

In some places, the polling mechanism doesn't make sense, so this
new KEY? always returns a character. In some places, I just haven't
implemented the mechanism yet, so I kept the old blocking code and
added a "always 1" flag as a temporary shim.

I have probably broken something, but in emulators, Collapse OS runs
fine. It's an important reminder of what will be lost with the new
"dogfooding" approach (see recent mailing list message): without
emulators, it's much harder to to sweeping changes like this without
breaking stuff.

It's fine, I don't expect many more of these core changes to the
system. It's nearly feature-complete.
2021-01-01 08:23:59 -05:00
..
.gitignore emul/8086: add PC/AT emulator 2020-10-25 10:27:52 -04:00
cpu.c emul/8086: a little bit of cleanup in cpu.c 2020-10-25 14:25:12 -04:00
cpu.h emul/8086: add PC/AT emulator 2020-10-25 10:27:52 -04:00
forth.c emul/8086: add PC/AT emulator 2020-10-25 10:27:52 -04:00
Makefile emul+cvm: link to curses instead of ncurses 2020-11-07 08:45:26 -05:00
pcat.c emul/8086/pcat: fix broken AT-XY 2020-10-25 18:42:48 -04:00
README.md emul+cvm: link to curses instead of ncurses 2020-11-07 08:45:26 -05:00
xcomp.fs Make KEY non-blocking 2021-01-01 08:23:59 -05:00

8086 emulator

This folder contains emulator for 8086 binaries of Collapse OS. The bulk of it is a fork of Fake86 by Mike Chambers.

forth is an imaginary hardware used for userspace development and testing. This machine has an imaginary interrupt API and does not conform to PC/AT.

pcat is a very simple PC/AT emulator. The BIOS interrupt hooks implemented in it only cover Collapse OS' own needs.

Requirements

You need curses to build the forth executable.

Build

Run make and it builds the forth and pcat interpreters.

Usage

The ./forth executable here works like the one in /cvm, except that it runs under an emulated 8086 machine instead of running natively. Refer to /cvm/README.md for details.

pcat needs to be suppied a path to a floppy disk image with a proper MBR. disk.bin provided by the pcat recipe is sufficient.