.github | ||
arduinojson@071f718473 | ||
BIC | ||
ESP32 | ||
json | ||
RP2040 | ||
tests | ||
work/werkend-mu | ||
.gitignore | ||
.gitmodules | ||
.lgtm.yml | ||
benchmark.txt | ||
breakpoint.cpp | ||
breakpoint.h | ||
breakpoint_and.cpp | ||
breakpoint_and.h | ||
breakpoint_memory.cpp | ||
breakpoint_memory.h | ||
breakpoint_or.cpp | ||
breakpoint_or.h | ||
breakpoint_parser.cpp | ||
breakpoint_parser.h | ||
breakpoint_register.cpp | ||
breakpoint_register.h | ||
bus.cpp | ||
bus.h | ||
CMakeLists.txt | ||
comm.cpp | ||
comm.h | ||
comm_posix_tty.cpp | ||
comm_posix_tty.h | ||
comm_tcp_socket_client.cpp | ||
comm_tcp_socket_client.h | ||
comm_tcp_socket_server.cpp | ||
comm_tcp_socket_server.h | ||
console.cpp | ||
console.h | ||
console_ncurses.cpp | ||
console_ncurses.h | ||
console_posix.cpp | ||
console_posix.h | ||
cpu.cpp | ||
cpu.h | ||
dc11.cpp | ||
dc11.h | ||
dc11.json | ||
debugger.cpp | ||
debugger.h | ||
device.cpp | ||
device.h | ||
disk_backend.cpp | ||
disk_backend.h | ||
disk_backend_file.cpp | ||
disk_backend_file.h | ||
disk_backend_nbd.cpp | ||
disk_backend_nbd.h | ||
disk_device.h | ||
div.py | ||
error.cpp | ||
error.h | ||
gcovr-json-diff.py | ||
gen.h | ||
kw11-l.cpp | ||
kw11-l.h | ||
LICENSE | ||
loaders.cpp | ||
loaders.h | ||
log.cpp | ||
log.h | ||
main.cpp | ||
memory.cpp | ||
memory.h | ||
mingw64.cmake | ||
mmu.cpp | ||
mmu.h | ||
raw_to_simh_bin.cpp | ||
README.md | ||
rk05.cpp | ||
rk05.h | ||
rl02.cpp | ||
rl02.h | ||
rp06.cpp | ||
rp06.h | ||
terminal.cpp | ||
terminal.h | ||
tm-11.cpp | ||
tm-11.h | ||
tty.cpp | ||
tty.h | ||
utils.cpp | ||
utils.h | ||
win32.cpp | ||
win32.h |
KEK
Kek is a DEC PDP-11 (11/70) emulator capable of running UNIX-v7.
You need to retrieve the git repository with the --recursive switch for the git command:
git clone --recursive https://github.com/folkertvanheusden/kek
To build for e.g. linux:
mkdir build
cd build
cmake ..
make
Required:
* libncursesw5-dev
To build for e.g. windows:
mkdir build-win32
cd build-win32
cmake -DCMAKE_TOOLCHAIN_FILE=../mingw64.cmake ..
make
To run an RK05 disk image:
./kek -r filename.rk -R rk05 -b 2> /dev/null
To run an RL02 disk image:
./kek -r filename.rk -R rl02 -b 2> /dev/null
To run an RP06 disk image:
./kek -r filename.rk -R rp06 -b 2> /dev/null
To run a tape image:
./kek -T filename.bin -b 2> /dev/null
When you run UNIX 7, you can (if your system has enough RAM - use an ESP32 with 2 MB PSRAM or more) run multi-user via the DC-11 emulation. Note that UNIX 7 starts in single user mode first; press ctrl+d to switch to multi user (recognizable by the login-prompt). Also make sure to configure networking ('startnet') to be able to connect (using telnet) to the DC-11 ports (TCP port 1101 upto and including 1104).
ESP32
The ESP32 version needs platformio to be build.
cd ESP32
pio run -t upload
pio run -t uploadfs
That should build & upload it to a connected ESP32.
Wiring of SDCARD (or use disk-images exported via NBD over wifi using nbdkit (because of older NBD protocol implementation)):
- MISO: 19
- MOSI: 23
- SCK : 18
- SS : 5
- and of course connect VCC/GND of the SD-card
Heart beat LED:
- pin 25
Wiring of the MAX232 connection:
- TX : 17
- RX : 16 Note that you need to use different pins for the MAX232 connection when you want to use the PSRAM of the ESP32.
Raspberry PI PICO / RP2040
Wiring of SDCARD:
- MISO: 16
- MOSI: 19
- SCK : 18
- SS : 17
- and of course connect VCC/GND of the SD-card
The RP2040 version needs platformio to be build.
cd RP2040
pio run
Then copy RP2040/.pio/build/BUILD_FOR_RP2040/firmware.uf2 to the PICO.
SHA2017-badge
This procedure will remove the default micropython environment. Maybe you can undo that, but I have not tried that.
-
esptool.py erase_flash
-
pio run -e SHA2017-badge
-
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 ./.pio/build/ESP32-wemos/bootloader.bin
-
pio run -e SHA2017-badge -t upload
After this, you can connect a serial terminal to /dev/ttyUSB0 at 115k2 bps.
more info
For more info: https://vanheusden.com/emulation/PDP-11/kek/
thanks
Thanks a lot to Neil Webber for his help and for his python PDP emulator (which allowed me to compare disassembly of runs). Neil's emulator can be found at https://github.com/outofmbufs/python-pdp11-emulator
Kek is released under MIT license.
Folkert van Heusden