📰 newsreader

twostopbits score 0.03 好み 0.62 en

Linux/FreeBSD、ESP32、RPI PICO上で動作するPDP11/70エミュレータ (vanheusden.com)

原題: A PDP11/70 emulator running on Linux/FreeBSD, ESP32, RPI PICO (vanheusden.com)

pdp11/70emulatoresp32unixbsdteensy 4.1raspberry pi picomicrocontrollers
原文 ↗

日本語訳

# タイトル

Linux/FreeBSD、ESP32、RPI PINTCOで動作するPDP11/70エミュレータ (vanheusden.com)

# 本文

Linux/FreeBSD、ESP32、RPI PICO、およびTeensy 4.1システムで動作するPDP11/70エミュレータです。

UNIX 5からUNIX 7までをマルチユーザーモードで実行可能です。最近(2026年4月12日)からは、ESP32上(DZ11シリアルポート・マルチプレクサ・エミュレーションを使用)でもBSD 2.11 UNIXをマルチユーザーモードで実行できるようになりました。浮動小数点エミュレーションは未実装ですが、いずれ対応予定です。

助けてくれたNeil Webber氏と、彼のPython製PDPエミュレータ(実行時の逆アセンブル結果の比較に活用しました)に深く感謝します。Neil氏のエミュレータはGitHubで見つけることができます。

### 速度

ESP32-S3でのBSD 2.11の起動には約5分、Teensy 4.1では約1分、Intel i5-11400Hでは1〜2秒かかります。

ほとんどの機能はコマンドラインから設定可能です。コマンドライン・スイッチの一覧は「kek -h」で確認できます。

コンソール内(kekを -d オプションで実行)では、「help」+ Enterでオンラインヘルプトピックが利用可能です。「0gt;」はデバッガ・プロンプトです。

Kekはスナップショットを作成できます。これにより、スナップショットを撮った時点からエミュレートされたシステムを正確に再開できます。コンソールまたはデバッガで「ser filename」と入力してください。その後、kekを「kek -D filename」で(再)起動できます。注意:これが機能するためには、kekを -P スイッチ(ディスク・スナップショット作成用)付きで起動する必要があります。

また、PiDP11を使用してブリンケンライト(点滅灯)を表示することも可能です。その場合は、PiDP11上でserver11を実行し、kekを「-8 [PiDP11のIPアドレス]」で起動してください。

### 実行例

ホストネットワークの設定:cfgnet / startnet

0>startnet

Start Ethernet

Wait for DHCP

Local IP address: 192.168.65.34

* Adding DZ11

次にdeqnaエミュレーションを設定します(deqna + backend。backendにはvxlanやteensy4.1などが指定可能。helpを参照)。

0>deqna teensy4.1

MAC address: 08:00:2b:2d:cf:46

DEQNA emulation initialized

その後、cfgdiskを使用してディスクを設定します。ブートローダーのロード(cfgdiskメニュー内)を忘れないでください。

0>cfgdisk

1. RK05, 2. RL02, 3. RP06, 9. abort > 2

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 2

Bootloader loaded

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 1

1. local disk, 2. network disk (NBD), 9. abort > 1

Enter filename ("dir" for listing or empty to abort): >xxdp_rl02.dsk

Opening file: xxdp_rl02.dsk

Cartridge loaded

A. xxdp_rl02.dsk

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 9

すべて完了したら、以下を入力します:go

0>go

CHMDLD0 XXDP+ DL MONITOR

BOOTED VIA UNIT 0

28K UNIBUS SYSTEM

ENTER DATE (DD-MMM-YY):

ここでは、Teensy 4.1マイクロコントローラ上でKekを実行しています。

### 写真

テスト環境:カードリーダー、シリアルポート、LEDリング(パネルをシミュレート)を備えたWemos32:

Kekを実行中のTeensaly 4.1。LEDパネルがシミュレートされたフロントパネルです。

この写真では(旧バージョンの)kekがXXDP診断ソフトウェアを実行しています。NBDプロトコルを使用してネットワーク経由で起動しました(これはエミュレータの便利な機能です)。

BSD 2.11が動作しているESP32S3の写真。ESPのみですが :-) このESP32S3には4.3 MBのRAM(および8 MBのフラッシュ)があり、マルチユーザーのBSD環境を動かすには十分すぎる容量です。

また、「SHA2017バッジ」でもこのエミュレータを動かすことができます。

Linuxでの実行(*BSD、macOS、Microsoft Windowsでも動作します):

2026年5月13日には、RP2040(Raspberry Pi PicoのRP2040マイクロプロセッサ)への移植版が登場予定です。

2026年5月11日からは、Ethernetアダプタ(DEQNA)をある程度エミュレートできるようになりました。そのために、非常に限定的でシンプルなHTTPサーバーを実装しました。クラッシュするまでの間、http://pdp.komputilo.nl:8080/ でアクセス可能です(IPv6非対応、HTTPS非対応)。

原文(英語)を表示

A PDP11/70 emulator running on Linux/FreeBSD, ESP32, RPI PICO and Teensy 4.1 systems

It is capable of running UNIX 5 upto and including UNIX 7 in multi-user mode. Since recently (April 12, 2026) it can also run BSD 2.11 UNIX in multi-user mode on e.g. an ESP32 (using DZ11 serial port multiplexer emulation). Floating point emulation is missing but that'll change eventually.

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 on github.

speed

An ESP32-S3 takes about 5 minutes to boot BSD 2.11, a Teensy 4.1 around 1 minute and an Intel i5-11400H needs a second or 2.

Most things can be configured via the commandline. Run "kek -h" to see a list of commandline switches.

In the console (run kek with -d), there's on-line help available by entering "help" (+ enter). "0gt;" is the debugger-prompt.

Kek can create snapshots. That way you can restart the emulated system exactly from the point you snapshotted it. Enter "ser filename" in the console/debugger for that. Afterwards kek can be (re-)started with "kek -D filename". Note: kek must be started with the -P switch for this to work (=create disk snapshots).

It can also use a PiDP11 for the blinkenlights. For that, only run server11 on the PiDP11 and start kek with -8 ip-address-of-the-pidp11.

example session

configure the host-network: cfgnet / startnet

0>startnet

Start Ethernet

Wait for DHCP

Local IP address: 192.168.65.34

* Adding DZ11

then configure the deqna emulation (deqna + backend where backend is e.g. vxlan, teensy4.1, see help)

0>deqna teensy4.1

MAC address: 08:00:2b:2d:cf:46

DEQNA emulation initialized

after that, configure a disk using cfgdisk - do not forget to load the bootloader (in the cfgdisk menu)

0>cfgdisk

1. RK05, 2. RL02, 3. RP06, 9. abort > 2

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 2

Bootloader loaded

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 1

1. local disk, 2. network disk (NBD), 9. abort > 1

Enter filename ("dir" for listing or empty to abort): >xxdp_rl02.dsk

Opening file: xxdp_rl02.dsk

Cartridge loaded

A. xxdp_rl02.dsk

Select cartridge to setup, 1. to add a cartridge, 2. to load a bootloader or 9. to exit > 9

when all of that is finished, enter: go

0>go

CHMDLD0 XXDP+ DL MONITOR

BOOTED VIA UNIT 0

28K UNIBUS SYSTEM

ENTER DATE (DD-MMM-YY):

Here I run Kek on a Teensy 4.1 microcontroller:

pictures

Test setup: Wemos32 with a card-reader and a serial port and a led ring (which simulates the panel):

A Teensy 4.1 running Kek. The LED panel is the simulated front-panel.

In this photo it (old version of kek) runs the XXDP diagnostics software. It booted over the network using the NBD protocol (this is a convenience feature of the emulator).

Picture on an ESP32S3 on which BSD 2.11 is running. Only the ESP though :-) This ESP32S3 has 4.3 MB of RAM (and 8 MB flash): more than enough to run a multi-user BSD setup.

Also a 'SHA2017 badge' is capable of running this emulator:

Running on Linux (also runs on *BSD, macos and microsoft windows systems):

May 13, 2026 brings a port to the RP2040 (Raspberry Pi Pico RP2040 microprocessor).

Since May 11, 2026 it is somewhat capable of emulating an Ethernet adapter (DEQNA). I implemented a very limited and simple HTTP-server for it. Things are reachable on http://pdp.komputilo.nl:8080/ (no ip6, no https) until it crashes.

← 一覧に戻る