Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ll-34 — PDP-11/34-Emulator auf Schaltungsebene | Kitploit
Tools/GitHubGitHub/dbrll/ll-34
Embedded-System-SicherheitReverse EngineeringDebuggerHardware-SicherheitLernen & BildungKuratierte RessourcenFirmware-Analyse
GitHubdbrll/ll-34

ll-34

PDP-11/34-Emulator auf Schaltungsebene

Repository anzeigen
6941vor 5 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ll/34

ll/34 ist ein Schaltkreis-Emulator für die PDP-11/34A (1976), der eine virtuelle CPU ausführt, die aus den Schaltplänen, dem Mikrocode und den Logikaufzeichnungen einer echten PDP-11/34A zurückentwickelt wurde.

Ursprünglich wurde es als digitales Abbild der echten CPU entwickelt, um bei der Fehlersuche auf Signalebene zu helfen. Die virtuelle KD11-EA CPU besteht im Wesentlichen aus einer C-Übersetzung der Schaltpläne und Lookups auf die ROM-Tabellen. Alle kombinatorischen ROMs sind zurückentwickelt, und der Taktgenerator ist präzise modelliert.

Die Schaltkreisebene (ROM-Wahrheitstabellen + kombinatorische Logik) wurde der Gatterebene (Verilog) vorgezogen, da sie niedrig genug ist, um Hardware-Fehler zu reproduzieren, aber dennoch schnell genug für Programme.

Emulierte Geräte

  • UNIBUS-Rückwandbus (zeitlich und signalgenau)
  • KD11-EA CPU (Schaltkreisebene)
  • M9301 Boot-Karte mit originalem Boot- und Diagnose-ROMs
  • DL11 serielle Karte (zeitlich genau)
  • KW11 Leitungsuhr (50/60 Hz)
  • Programmierkonsole (einschließlich Wartungsmodus zur CPU-Fehlerbehebung)
  • RK05-Laufwerke (Hochauflösende Emulation des RK11-Controllers)
  • RL01- und RL02-Laufwerke (Hochauflösende Emulation des RL11-Controllers)
  • Bandleser
  • VT100-Terminal mit stdio, TCP-Port oder PTY-Modi

Architektur

Alle Geräte sind in den UNIBUS-Rückwandbus (unibus.c) eingesteckt, der Adressdecodierung, Zeitsteuerung und Buszyklen durchführt.

Intern besteht die CPU aus folgenden Komponenten:

DateiBeschreibung
ucode_rom.h512x48-Bit Mikrocode-Speicher (bipolare PROMs), basierend auf Bitsavers Verilog und Dumps. Jedes Mikrowort steuert ALU, Zwischenspeicher, Bus-Schnittstelle und Verzweigung für einen Mikrozyklus.
combo_roms.hKombinatorische ROMs (E51-E83, E107), IR-Dekodierung (E59/E60/E63/E69/E70/E71/E74), ALU-Funktionsauswahl (E61/E82/E83), Trap/Service-Priorität (E52/E53) und Bedingungscode-Logik (E68/E107), alle rekonstituiert aus den Schaltplänen und Logikaufzeichnungen. Open-Collector-ROMs verdrahten-ODER auf den MPC-Bus.
kd11ea.cDatenpfad-Engine. Durchläuft den Mikrocode einen Mikrobefehl pro Zyklus. Grundlegende 74xx-Gatter werden mit C-Logikoperatoren (!, &&, >> usw.) simuliert. Die 74S181 Bit-Slice-ALU ist vollständig modelliert (4 Slices, 16-Bit).
mmu.cSpeicherverwaltung. Kernel/Benutzer-Adressräume, 18-Bit-Relocation (3x 74S283 Addierer), 16 PAR/PDR-Paare, SR0/SR2-Abort-Register mit Freeze-Logik.
clockgen.cTaktgenerator. Modelliert die E106-Verzögerungsleitung (TAP 30/90/120 Rückkopplung, TRAN INH Bus-Warten). Kurze Zyklen: 180 ns, lange Zyklen: 240 ns, Bus-Transfers dehnen sich bis SSYN zurückkommt.
clock.cEchtzeit-Taktung. Hält die simulierte Zeit synchron mit der Wanduhrzeit.
int.cInterrupt-Arbiter. BR4-BR7 Prioritätswarteschlange, nähert die UNIBUS Daisy-Chain Grant-Reihenfolge an.

Programmierkonsole (Strg-P)

Emuliert die Frontschalter und Anzeigen der PDP-11/34A. Aktiv, wenn die CPU angehalten ist (Einschalten, HALT-Befehl oder Strg-P).

Erlaubt das Initialisieren des Busses, Booten der CPU, Einzelschritt-Ausführung, Anzeigen und Ablegen von Daten an beliebigen Adressen sowie Beenden des Emulators.

Das Frontend ist von der Engine entkoppelt, so dass auch eine fotorealistische Frontpanel-GUI in WebAssembly bereitgestellt wird.

Debug-Konsole (Strg-E)

Die Debug-Konsole bietet einen interaktiven Debugger sowohl auf Mikrocode- als auch auf Befehlsebene:

  • s [n]: Einzelschritt von n Mikroinstruktionen mit vollständigem Zustandsdump (MPC, ALU, Bus, Register)
  • b addr: Setze PC-Breakpoint (oktal), bl zum Auflisten, bd n zum Löschen
  • g: Ausführung fortsetzen
  • u [addr] [n]: Befehle disassemblieren
  • c [addr] [n]: Speicherdump (oktal)
  • mmu: MMU-Status anzeigen (Kernel + Benutzer PAR/PDR, aktueller Modus markiert)
  • r: Registerdump

Logikanalysator (Strg-L)

Die Fehlersuche an ll-34 während seiner Entwicklung erwies sich als so ähnlich wie die Fehlersuche an der echten Hardware, dass ein interner Logikanalysator implementiert wurde, um die Signale zu verfolgen und den Datenpfad zu untersuchen. Dies erwies sich als unverzichtbar, um subtile ROM- und Timing-Fehler in der virtuellen CPU aufzuspüren. Er kann auch als Referenz zur Fehlersuche an der echten Hardware verwendet werden, genauso wie die funktionierende Hardware bei der Entwicklung des Emulators half.

Der Logikanalysator ermöglicht das Abfragen von 102 Punkten auf wichtigen CPU-Signalen, abgebildet auf physische Chip-Pins (KD1:Exx:Pin-Notation entsprechend den DEC-Schaltplänen K1-5 bis K2-9). Logische Aliasnamen (MPC, ALU_OUT, IR, PSW…) werden zur Bequemlichkeit bereitgestellt.

Die Abtastrate ist der Echtzeit-CPU-Takt (5.555.556 Hz) mit einer Auflösung von 180 ns pro Abtastung. Ein konfigurierbarer Teiler reduziert die Abtastrate für längere Aufzeichnungsfenster.

Aufzeichnungen verwenden einen Ringpuffer (bis zu 64K Abtastungen) mit konfigurierbarem Trigger auf jedem Signal, einstellbarer Triggerposition (Pre/Post-Verhältnis) und CSV-Export für die Offline-Analyse.

Logikaufzeichnungen wurden im gesamten Projekt großzügig verwendet, um schlecht verstandene Multiplexing-Pfade zu kartieren und zu debuggen.

Beispielprogramme

ll-34 enthält einige Programme und Systeme zum Ausprobieren: ein Game of Life, V6 UNIX, RT-11 V4 mit dem originalen Tetris-Spiel und ATTN/11, ein kleiner trainierbarer Transformer mit Self-Attention.

RT-11

root@kitploit:~
./ll-34 --rk ./wasm/demos/rtv4_rk.dsk

Das Boot-ROM lädt automatisch vom RK11 und startet das Betriebssystem. DIR listet Dateien auf, HELP gibt Hilfe aus, RUN TETRIS startet das Tetris-Demo (obwohl das $TERM wahrscheinlich falsch sein wird?). RUN ADVENT startet das Colossal Cave Adventure, erstellt auf einer echten PDP-11/34.

v6 Unix

root@kitploit:~
./ll-34 --rk ./wasm/demos/v6bin.rk

Der Bootloader gibt eine minimale @-Eingabeaufforderung aus. Geben Sie rkunix ein und drücken Sie die Eingabetaste, und nach einigen Sekunden sollten Sie eine login:-Eingabeaufforderung erhalten. Geben Sie den Benutzernamen root ohne Passwort ein und Sie sind drin! Eine Anmerkung: cd heißt in frühen Unix-Versionen chdir.

Erstellen

make + ein C11-Compiler, es gibt keine weiteren Abhängigkeiten.

Verifiziert, dass es auf Linux (x86_64 und aarch64) sowohl mit musl als auch glibc, macOS aarch64 und NetBSD 10 aarch64 ohne Warnungen kompiliert.

Ausführen

Neben der CLI ist eine eigenständige WebAssembly-Version mit fotorealistischer GUI hier verfügbar: https://dbrll.github.io/ll-34.

Hinweis: ll-34 ist ein ressourcenintensiver Emulator. Im Gegensatz zu Befehlsemulatoren durchläuft er den Mikrocode Zyklus für Zyklus und führt bei jedem Schritt die ALU, kombinatorische ROMs, Zwischenspeicher, Taktgenerator und Bustiming aus. Der Host muss den 5,5 MHz Taktgenerator kontinuierlich aufrechterhalten, um zyklengenau zu bleiben.

Beim Start führt der Emulator einen Benchmark durch und meldet seine Geschwindigkeit relativ zu einer echten KD11-EA. Ein Verhältnis unter 1x bedeutet, dass der Host nicht mithalten kann und die Zeitgenauigkeit nicht garantiert ist. Der Benchmark ist in der WebAssembly-Version nicht verfügbar, da die Browser-Zeitauflösung ihn unzuverlässig macht. Da der WASM-Build langsamer ist als der native, ist das Ausführen auf einem Smartphone in der Regel zu langsam.

Tool herunterladen