PDP-11/70 emulator
Find a file
2024-04-25 13:24:32 +02:00
.github Add CodeQL workflow for GitHub code scanning 2022-12-05 19:10:52 +00:00
BIC tests 2024-04-24 22:44:52 +02:00
ESP32 clean-up 2024-04-25 01:39:42 +02:00
images movie 2023-04-07 20:32:12 +02:00
json verify MMR* registers 2024-04-12 18:04:03 +02:00
RP2040 SD card interface 2023-04-08 16:49:09 +02:00
tests comments 2024-04-23 21:48:45 +02:00
.gitignore RL02 verification code 2024-04-23 21:30:34 +02:00
.gitmodules shabadge display 2023-04-01 20:40:45 +02:00
.lgtm.yml meta 2022-03-21 20:45:10 +01:00
breakpoint.cpp breakpoints 2024-04-16 10:52:12 +02:00
breakpoint.h breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_and.cpp breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_and.h breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_memory.cpp memory breakpoint (4) 2024-04-16 14:26:25 +02:00
breakpoint_memory.h memory breakpoint 2024-04-16 14:22:06 +02:00
breakpoint_or.cpp breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_or.h breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_parser.cpp memory breakpoint 2024-04-16 14:22:06 +02:00
breakpoint_parser.h breakpoints 2024-04-16 10:52:12 +02:00
breakpoint_register.cpp split bus class into a mmu class 2024-04-25 09:45:55 +02:00
breakpoint_register.h psw breakpoint 2024-04-16 20:10:02 +02:00
bus.cpp mmu is now of device type 2024-04-25 13:24:32 +02:00
bus.h mmu is now of device type 2024-04-25 13:24:32 +02:00
CMakeLists.txt split bus class into a mmu class 2024-04-25 09:45:55 +02:00
config.h debug config 2023-03-27 21:57:50 +02:00
console.cpp load images from the debugger 2024-04-12 00:25:40 +02:00
console.h wip: commandline history 2024-04-11 17:09:07 +02:00
console_ncurses.cpp ncurses fixes 2024-04-24 23:51:05 +02:00
console_ncurses.h license 2023-03-26 21:47:42 +02:00
console_posix.cpp tweaks to get history working 2024-04-11 17:20:56 +02:00
console_posix.h WIN32 build 2023-03-27 12:52:15 +02:00
cpu.cpp split bus class into a mmu class 2024-04-25 09:45:55 +02:00
cpu.h interrupt scheduling debugging 2024-04-21 22:48:52 +02:00
debugger.cpp split bus class into a mmu class 2024-04-25 09:45:55 +02:00
debugger.h load images from the debugger 2024-04-12 00:25:40 +02:00
device.h clean-up 2024-04-25 01:39:42 +02:00
disk_backend.cpp license 2023-03-26 21:47:42 +02:00
disk_backend.h license 2023-03-26 21:47:42 +02:00
disk_backend_file.cpp SD logging 2024-04-19 21:28:37 +02:00
disk_backend_file.h license 2023-03-26 21:47:42 +02:00
disk_backend_nbd.cpp coverity suggestions; nbd disk-backend garbage output fix 2024-04-21 21:06:44 +02:00
disk_backend_nbd.h "int" is 16 bit on an ESP32 2023-03-26 22:38:13 +02:00
div.py remove any \r or \n 2024-04-04 21:22:35 +02:00
error.cpp compiles 2023-04-07 23:10:26 +02:00
error.h license 2023-03-26 21:47:42 +02:00
gcovr-json-diff.py coverage compare tool 2022-03-01 15:53:49 +01:00
gen.h split bus class into a mmu class 2024-04-25 09:45:55 +02:00
kw11-l.cpp set_thread_name 2024-04-23 16:00:00 +02:00
kw11-l.h compiles 2023-04-07 23:10:26 +02:00
LICENSE Create LICENSE 2023-03-26 21:51:02 +02:00
loaders.cpp debugger can now load tape/bic files (useful for esp32 platform) 2024-04-08 00:18:11 +02:00
loaders.h license 2023-03-26 21:47:42 +02:00
log.cpp swapped file/screen for setll 2024-04-25 01:15:05 +02:00
log.h swapped file/screen for setll 2024-04-25 01:15:05 +02:00
main.cpp split bus class into a mmu class 2024-04-25 09:45:55 +02:00
memory.cpp license 2023-03-26 21:47:42 +02:00
memory.h "int" is 16 bit on an ESP32 2023-03-26 22:38:13 +02:00
mingw64.cmake restructured 2023-03-27 13:02:46 +02:00
mmu.cpp mmu is now of device type 2024-04-25 13:24:32 +02:00
mmu.h mmu is now of device type 2024-04-25 13:24:32 +02:00
raw_to_simh_bin.cpp license 2023-03-26 21:47:42 +02:00
README.md meta 2023-04-08 16:53:34 +02:00
rk05.cpp clean-up 2024-04-25 01:39:42 +02:00
rk05.h clean-up 2024-04-25 01:39:42 +02:00
rl02.cpp fill buffer with data from memory before writing it to disk 2024-04-23 22:01:30 +02:00
rl02.h clean-up 2024-04-25 01:39:42 +02:00
terminal.cpp license 2023-03-26 21:47:42 +02:00
terminal.h license 2023-03-26 21:47:42 +02:00
tm-11.cpp reset in ESP32 mode now will not reset complete ESP32, only the emulation 2024-04-11 17:44:14 +02:00
tm-11.h clean-up 2024-04-25 01:39:42 +02:00
tty.cpp set_thread_name 2024-04-23 16:00:00 +02:00
tty.h reset in ESP32 mode now will not reset complete ESP32, only the emulation 2024-04-11 17:44:14 +02:00
utils.cpp logging tweak 2024-04-23 16:14:25 +02:00
utils.h logging tweak 2024-04-23 16:14:25 +02:00
win32.cpp restructured 2023-03-27 13:02:46 +02:00
win32.h restructured 2023-03-27 13:02:46 +02:00

KEK

Kek is a DEC PDP-11 (11/70) emulator capable of running UNIX-v6.

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 a disk image:

./kek -R filename.rk -b 2> /dev/null

Kek emulates an RK05.

To run a tape image:

./kek -T filename.bin -b 2> /dev/null

ESP32

The ESP32 version needs platformio to be build.

cd ESP32
pio run -t upload

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

Wiring of the MAX232 connection:

  • TX : 17
  • RX : 16

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.

pictures

(running on a regular ESP32 connected to a VT510 terminal)

(running on a SHA2017-badge)

Click on the following picture to see it running (opens a youtube link):

running on a Linux laptop

Released under MIT license.

Folkert van Heusden