This is Emu The X65 Computer Emulator.
Emu is based on chip emulators by Andre Weissflog.
The USP of the chip emulators is that they communicate with the outside world through a 'pin bit mask': A 'tick' function takes an uint64_t as input where the bits represent the chip's in/out pins, the tick function inspects the pin bits, computes one tick, and returns a (potentially modified) pin bit mask.
A complete emulated computer then more or less just wires those chip emulators together just like on a breadboard.
Fedora:
dnf install libX11-devel libXi-devel libXcursor-devel mesa-libEGL-devel alsa-lib-devel
Ubuntu:
apt install libx11-dev libxi-dev libxcursor-dev libegl1-mesa-dev libasound2-dev
Build using CMake and a modern C/C++ compiler.
Tip
This repository uses submodules.
You need to do git submodule update --init --recursive
after cloning
or clone recursively:
> git clone --recursive https://github.com/X65/emu.git
Install Emscripten toolchain. Next, run the following commands:
mkdir wasm
cd wasm
emcmake cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
Linux
> build/emu --help
Usage: emu [OPTION...] [ROM.xex]
> build/emu roms/SOTB.xex
Windows
> build/emu.exe file=roms/SOTB.xex
The emulator supports opcode based breakpoints, if an specified opcode is executed, the emulator will stop. Possible breakpoint values are EA (NOP) 42 (WDM #xx) and B8 (CLV).
> build/emu.exe file=roms/SOTB.xex break=EA