BeBox: Een native PowerPC en Hobbit BeBox-emulator voor Haiku

Ondersteunde Modellen

ModelProcessorsBus
BeBox Dual603-66twee PowerPC 603 op 66 MHz33 MHz
BeBox Dual603e-133twee PowerPC 603e op 133 MHz33 MHz
Hobbit prototype (1993-94)twee AT&T 92010 (Hobbit) op 25 MHzBeBus, 25 MHz

Het venster toont het geëmuleerde scherm tussen twee kolommen met LED-lampjes op het voorpaneel ("blinkenlights"). Elke kolom bestaat uit zestien segmenten: een CPU-belastingsbalk van vijftien LED's boven de aan/uit-LED (links) of de schijf-LED (rechts), in limegroen en amber (of rood en groen, naar keuze).

Geëmuleerde Componenten

Hardware

  • Processors: Beide processors (een PowerPC 603/603e interpreter met de software TLB van de 603), de MPC105 bridge, en de BeBox-interrupt- en CPU-controlregisters.
  • Boot ROM: De nub- en main-ROM in een beschrijfbaar flashgeheugen (de ROM-updater van BeOS werkt), NVRAM en een real-time klok.
  • Video: Standaard de Number Nine #9 GXE64 (S3 Vision864, AT&T 21C498 RAMDAC) met graphics engine, of de Cirrus Logic CL-GD5434. Ondersteunt resoluties van 640x480 tot 1280x1024 met 8 en 32 bits per pixel (conform de BeOS-drivers).
  • Geluid: Crystal CS4231A codec, afgespeeld via de Haiku media kit.
  • Randapparatuur: AT-toetsenbord en PS/2-muis; vier game-poorten (assen en knoppen).
  • Opslag: NCR 53C810 SCSI (schijven en CD-ROM's op ID's 0-6), IDE en floppy.
  • Seriële poorten: Vier poorten die verbonden kunnen worden met een consolevenster, een TCP-server of -client, een host-seriële poort of een logbestand.
  • Netwerk: Een NE2000-compatibele ISA-kaart op een privénetwerk achter de host (NAT via libslirp). De BeBox kan de host en het internet bereiken, en host-poorten kunnen worden doorgezet.
  • Gedeelde mappen: Een Haiku-map verschijnt in BeOS als een SCSI-schijf die gelezen en beschreven kan worden; wijzigingen worden teruggeschreven naar de map wanneer BeOS wordt afgesloten.

Nog niet geëmuleerd: de parallelle poort, GeekPort, MIDI- en infraroodpoorten.

Vereisten

Voor het gebruik van de emulator zijn de volgende bestanden nodig (niet inbegrepen):

  • BeBox boot ROM's: bootnub.rom (16 KB) en bootmain.rom (Be Boot ROM 1.1d7) van een BeBox, geplaatst in een map naar keuze.
  • BeOS voor PowerPC: CD-afbeeldingen (ISO, BIN/CUE of Toast).
  • Voor releases met het Be File System (Advanced Access tot R5): Een nieuwere boot ROM. Deze is te vinden op de CD's van Preview Release 2, R3 en R4.5 onder /beos/etc/bebox_bootmain.image. BeBox extraheert deze automatisch.

Aan de slag

  1. Ga naar Machine > Preferences > ROM & NVRAM en selecteer de map met de ROM's. Voor een BFS-release kies je de bijbehorende CD-afbeelding als Boot ROM image; BeBox kopieert de boot ROM dan van de CD.
  2. Ga naar Storage en plaats de CD-afbeelding op een SCSI-ID als CD-ROM (ID 3 is de klassieke keuze). Ken een ander ID toe aan een schijf voor installatie. Via de knop New disk image... kan direct een nieuw schijfbestand worden aangemaakt.
  3. Selecteer Machine > Power on. De nieuwere boot ROM's stoppen bij hun boot-menu wanneer er nog geen opstartvolume is ingesteld; druk in dat geval op Enter.

Let op: Wijzigingen aan de hardware vereisen een herstart van de machine. Als een apparaattype is ingesteld zonder bijbehorend bestand, wordt dit bij het opslaan van de voorkeuren teruggezet naar "None".

Het Hobbit-prototype

Vóór de PowerPC BeBox bouwde Be zijn machine rond twee AT&T 92010 "Hobbit"-processors, drie AT&T DSP3210 signaalprocessors en de BeBus. Er zijn enkele prototypes bewaard gebleven met schijven waarop het systeem uit 1993-94 draait (inclusief window server, console, Browser en dock).

Geëmuleerde aspecten van de Hobbit

  • Processors: Beide Hobbit-processors (een interpreter gebaseerd op de programmeursreferentie van AT&T: stack cache, MMU, timers, event sequences).
  • Moederbord: I/O- en interruptregisters, processor-resets, floppy DMA, PC-compatibele I/O-chips (toetsenbord, PS/2-muis, real-time klok, twee seriële poorten, floppy) en de NCR 53C94 SCSI-controller.
  • Videokaart: Een Trident VGA met een XGA-stijl graphics engine op de BeBus (640x480 of 800x600, 256 kleuren).

Niet geëmuleerd: de drie DSP's en de bijbehorende functies (geluid, telefoon en modem), de Ethernet-kaart, de joystick-controller en de parallelle poort. Het systeem start zonder deze componenten (de sound server zal een foutmelding geven).

Omdat er geen boot ROM's van deze machines bewaard zijn, neemt BeBox deze taak over door /system/kernel te laden vanaf het opstartvolume (eerst de floppy, anders de SCSI-schijf met het laagste ID).

Gebruiksaanwijzing Hobbit:

  1. Kies in Preferences > Machine voor Hobbit prototype en selecteer het geheugen (4, 8, 16, 20 of 32 MB).
  2. Plaats in Storage een Hobbit-schijfafbeelding op een SCSI-ID. Om een eigen kernel te gebruiken, selecteer je deze in ROM & NVRAM > Hobbit kernel.
  3. Selecteer Machine > Power on. De voortgang van de kernel is te volgen via seriële poort 1 (open hiervoor een consolevenster in Serial).

Aanvullende opmerkingen voor Hobbit:

  • De schijven uit november 1994 starten /system/Browser (bestandsnaam /system/browser), maar vaak start de console. Typ /system/browser & in de console om de Browser handmatig te starten.
  • De floppy-drive is drive 1 voor de kernel.
  • Het systeem schrijft naar de schijf (swap-bestanden etc.). Gebruik kopieën van afbeeldingen of QCOW2-overlays (bebox-img create -b IMAGE OVERLAY.qcow2).
  • De frontpaneel-LED's zijn verborgen, aangezien de Hobbit-kernel deze niet aanstuurt.

Installeren vanaf floppies (Hobbit)

De installer-floppy en schijven 1 tot en met 7 installeren het systeem van november 1994 op een nieuwe schijf.

  1. Plaats een kopie van een Hobbit-schijf (of overlay) op SCSI ID 0 en een nieuwe schijfafbeelding (120 MB is voldoende) op ID 1.
  2. Start de machine, typ /bin/format in de console, kies de SCSI-schijf met ID 1, geef het volume een naam en kies '0' om af te sluiten. Zet de machine uit.
  3. Verwijder de schijf van ID 0 en plaats de nieuwe schijf daar.
  4. Steek de installer-floppy in en zet de machine aan. Wacht ongeveer een minuut (alleen de cursor is zichtbaar) en zet de machine daarna uit en verwijder de floppy.
  5. Zet de machine aan. De console start vanaf de nieuwe schijf. Typ /Installer, klik op Begin, steek schijf 1of7 in (Media > Insert floppy...) en klik op Continue. Herhaal dit tot 7of7.
  6. De Installer comprimeert, verifieert en extraheert het archief. Een foutmelding (System Error 0) tijdens het uitpakken is onschadelijk en komt voor op echte Hobbit-machines.
  7. Herstart en typ /system/browser & om de Browser te starten.
  8. Optioneel: draai /Installer opnieuw met update.img als schijf #1 voor de update van 28 november 1994.

Profielen

Omdat verschillende releases specifieke instellingen vereisen (boot ROM, schijven, kloksnelheid), kan de machine worden opgeslagen in een profiel. Een profiel bevat alle voorkeuren behalve toetsenbord, muis en LED-uiterlijk, plus de boot ROM-flash en NVRAM.

Je kunt schakelen tussen profielen via Machine > Profile. Hier kun je ook nieuwe profielen aanmaken, hernoemen of verwijderen. Profielen worden opgeslagen in ~/config/settings/BeBox/Profiles/.

Compatibiliteitstabel

ReleaseBoot ROMBoot vanaf CDInstallatie op schijf
DR6 (BeOS 1.1d6)originele 1.1d7jaja
DR7 (BeOS 1.1d7)originele 1.1d7jaja
DR8originele 1.1d7jaja
Advanced Accessvan PR2jaja
Preview Release 1van PR2ja-
Preview Release 2vanaf eigen CDjaja
R3vanaf eigen CDjaja
R4.5vanaf eigen CDjaja
R5.0.3van R3jaja
  • "-" betekent: niet getest.
  • DR8.2 is een Mac-updater; R4 is uitsluitend voor x86.
  • De boot ROM van de R3-CD werkt met alle geteste releases.
  • DR6 gaat vooraf aan de 1.1d7 boot ROM; BeBox geeft de PCI-apparattentabel door in het oudere formaat dat DR6 verwacht. Installeer DR6 volgens de CD-instructies: boot de CD, start de Installer, formatteer de SCSI-schijf en maak deze het opstartvolume.
  • De muisdriver van DR6 beweegt de cursor onjuist (twee keer zo ver naar links/beneden als naar rechts/boven); dit is een eigenschap van DR6, niet van de emulator.
  • In Developer Releases wordt het jaar weergegeven als jaren sinds 1900 (bijv. 126 voor 2026).

Gebruik

Interactie

Wanneer het venster actief is, worden toetsenbordcommando's naar de BeBox gestuurd. Klik op het scherm om de muis te vangen; de host key (standaard rechter Ctrl) laat de muis weer los. De host key en muissnelheid kunnen worden aangepast in de voorkeuren.

Bediening en Prestaties

  • Game-poorten: Koppel host-joysticks aan de vier sticks in de voorkeuren.
  • Statusregel: Toont floppy-, CD- en harddiskactiviteit. Klik op de floppy om een schijf in te voegen.
  • Machine-menu: Bevat schakelaars voor stroom, reset en interrupt. Herstarten met de boot-menu of kernel debug output op seriële poort 4 (houd F1 ingedrukt bij het aanzetten).
  • Ctrl+Alt+Delete: Stuur Send Ctrl+Alt+Delete om BeOS de toetsencombinatie te geven die Haiku normaal reserveert. BeOS R3 en later tonen dan de Team Monitor.
  • Multiprocessing: De twee processors draaien op twee host-cores wanneer ze beide bezet zijn (Preferences > Advanced, standaard aan). Dit kan de snelheid bijna verdubbelen, wat essentieel is voor het 133 MHz-model op tragere computers. De statusregel toont de snelheid als percentage van een echte BeBox.

Extra Functies

  • Tools > Serial console: Toont een seriële poort verbonden aan een console.
  • View: Pas de schermgrootte aan (actueel, dubbel of passend in venster) en toon/verberg de LED's.

Netwerk

  1. Zet in Preferences > Network de Ethernet-kaart aan (standaard poort 300h, IRQ 5).
  2. Voeg in de netwerkvoorkeuren van BeOS een "Novell NE2000 compatible adapter (ISA)" toe met dezelfde poort en IRQ.
  3. Kies voor DHCP (R4.5) of stel handmatig in:
  • IP: 10.0.2.15
  • Masker: 255.255.255.0
  • Gateway: 10.0.2.2
  • DNS: 10.0.2.3
  1. De host is bereikbaar via 10.0.2.2. Door host-poorten door te zetten (bijv. tcp:2121:21), worden services in BeOS bereikbaar vanaf de host.

Gedeelde Mappen

In Preferences > Storage kun je een SCSI-ID instellen als Shared folder en een Haiku-map kiezen.

  • Bij het aanzetten kopieert BeBox de map naar een nieuw BFS-volume dat BeOS als gewone schijf mount.
  • Wanneer BeOS netjes wordt afgesloten (Be menu > Shut Down) en de BeBox wordt uitgeschakeld, worden wijzigingen (nieuwe bestanden, attributen, verwijderingen) teruggestuurd naar de Haiku-map.
  • Bij conflicten (bestanden op beide zijden gewijzigd) prevaleert de Haiku-versie; de BeOS-versie wordt opgeslagen als "NAAM (BeBox)".
  • Bij een crash wordt het volume behouden zodat BeOS het bij de volgende start kan herstellen.
  • Houd de map klein, aangezien de volledige inhoud bij elke start wordt gekopieerd.

Schijfafbeeldingen

Harde schijven kunnen raw-afbeeldingen of QCOW2-afbeeldingen zijn. QCOW2 gebruikt alleen de ruimte die daadwerkelijk is beschreven (thin provisioning) en kan dienen als overlay bovenop een basisafbeelding.

De tool bebox-img beheert deze afbeeldingen en leest bestanden van BeOS BFS-volumes en Hobbit-schijven:

  • bebox-img create [-f raw|qcow2] [-b BACKING] FILE SIZE
  • bebox-img info FILE
  • bebox-img check FILE
  • bebox-img convert [-O raw|qcow2] SOURCE DESTINATION
  • bebox-img ls IMAGE [PATH]
  • bebox-img attr IMAGE PATH
  • bebox-img extract IMAGE PATH OUTPUT

Voorbeeld: bebox-img extract "BeOS Release 3 PowerPC.iso" /beos/etc/bebox_bootmain.image r3.rom

Op een Hobbit-schijf kopieert extract ook hele directories naar een nieuwe map. Omdat geen enkele BeOS-release het bestandssysteem van de Hobbit kan lezen, is dit de enige manier om bij de bestanden te komen: extraheer ze en geef de map aan een BFS-release als gedeelde map. Let op: Hobbit-programma's draaien niet op PowerPC.

Scripting

Het machinevenster reageert op hey-commando's:

  • hey BeBox get Running of Window BeBox (status opvragen of instellen)
  • hey BeBox get Speed of Window BeBox (percentage van real-time)
  • hey BeBox get LedLevels of Window BeBox (links, rechts 0-15)
  • hey BeBox get SerialLog 4 of Window BeBox (output van een consolepoort)
  • hey BeBox set Floppy of Window BeBox to /path/disk.img
  • hey BeBox type of Window BeBox with text=ls (tekst typen via toetsenbord)
  • hey BeBox shot of Window BeBox with path=/tmp/screen.png

Andere commando's zijn onder meer get Mips, get EmulatedTime, get DiskLed, get AudioStats, get Profiles, get Profile en set Profile. Daarnaast zijn er commando's voor pwon (power on), pwof (power off), rset (reset) en cadl (Ctrl+Alt+Delete).

Command Line

BeBox start de machine met diverse opties: BeBox [--profile NAME] [--rom-dir DIR] [--boot-rom IMAGE] [--model 66|133|hobbit] [--kernel FILE] [--ram MB] [--video s3|cirrus] [--scsiN-disk FILE] [--scsiN-cd FILE] [--scsiN-share FOLDER] [--ide0 FILE] [--floppy FILE] [--net] [--net-forward SPEC] [--power-on]

bebox-headless start een machine zonder venster, ideaal voor tests en debugging (seriële poorten naar bestanden/TCP, gescripte input, screenshots, memory dumps). Gebruik bebox-headless --help voor meer opties.

Bouwen (Building)

Op Haiku (met haikudevel, zlibdevel en libslirp_devel):

  • make bouwt de applicatie.
  • package/build-package.sh bouwt de app en tools en maakt het pakket.

Op Linux: De core is geschreven in portable C++17.

  • make -C tests/linux check voert processor-tests uit (met qemu-ppc als referentie), Hobbit-tests, multiprocessor- en device-tests, en QCOW2-tests (met qemu-img), onder AddressSanitizer en UndefinedBehaviorSanitizer.
  • tests/boot-regression.sh boot elke BeOS-release en de Hobbit-schijven headless via overlays.
  • tests/vm-test.sh user@haiku-host bouwt de app op een Haiku-machine en bestuurt deze met hey.

Details over de hardware en het ontwerp zijn te vinden in de map design/.

Auteurs en Licentie

  • Auteurs: Claude Opus 5.5, John Rash.
  • Licentie: MIT (zie LICENSE).
  • Artwork: Het applicatie-icoon (artwork/BeBox.hvif) is gemaakt door zuMi (MIT License). De iconen in artwork/icons komen uit de Haiku-iconenset (MIT, Haiku, Inc.).

De BeBox ROM's en BeOS maken geen deel uit van dit project.