Utilisation

bebox -romdump flash.bin -hd0 beos_r452.img -ram 32

Fichier de configuration

Au lancement, l'émulateur lit bebox.cfg dans le dossier courant s'il existe : une option par ligne, son nom sans le tiret, =, sa valeur. Les options sans valeur prennent yes ou no, et cpu = 603e vaut -603e. Par exemple :

# ma BeBox
romdump = flash.bin
cpu = 603e
ram = 64
scsi0 = beos.img
net = yes
voodoo = yes

S'il n'existe pas, l'émulateur le crée avec tous les réglages en commentaire (# en début de ligne), à décommenter et remplir : au minimum la ROM (romdump) et un disque (hd0 ou scsi0).

Avec la fenêtre, l'émulateur s'ouvre toujours, même quand la machine ne peut pas démarrer (premier lancement, ROM ou image introuvable) : la BeBox reste arrêtée, un message dit ce qui manque et les réglages s'ouvrent ; une fois corrigé, Démarrer (dans les réglages) ou le bouton Marche la lance. Sans fenêtre (-headless, -noui), l'émulateur s'arrête en le disant.

Il suffit alors de lancer bebox. La ligne de commande passe après le fichier et a donc le dernier mot : bebox -ram 32 change la RAM, -nonet ou -nofast annulent une option que le fichier active, -noconfig ignore le fichier, -config <fichier> en lit un autre. Les chemins relatifs le sont au dossier courant ; un chemin avec des espaces peut se mettre entre guillemets.

ROM de boot

Il faut un dump de la ROM d'une vraie BeBox, fait sous BeOS :

dd if=/dev/flash of=flash.bin bs=1024 count=1024

puis bebox -romdump flash.bin .... Le count est indispensable : le driver ne signale pas la fin de la flash. Sans ROM indiquée, un flash.bin du dossier courant est pris tout seul.

Disques

-hd0 <image> et -hd1 <image> donnent les disques IDE maître et esclave (images brutes). Une image de 500 Mo suffit largement pour BeOS R4.5.2 et des outils de développement.

Le pilote IDE de BeOS R4.5.2 lit et écrit le disque 2 octets à la fois, par un appel de fonction pour chacun : moins de 3 Mo/s sur une vraie BeBox. L'émulateur reconnaît ces boucles du noyau et fait le transfert lui-même : environ 13 Mo/s en lecture et 10 Mo/s en écriture (temps émulé). -slowide garde la vitesse d'une vraie BeBox.

SCSI

Le contrôleur SCSI NCR 53C810 de la carte mère est toujours présent, comme sur une vraie BeBox. -scsi0 <image> à -scsi6 <image> placent des images sur les ID SCSI 0 à 6 (le contrôleur est l'ID 7) : une image .iso ou .cue est un CD-ROM en lecture seule, toute autre image un disque.

bebox -romdump flash.bin -scsi0 beos.img

La ROM démarre BeOS depuis un disque SCSI, et BeOS l'utilise avec son propre pilote (/dev/disk/scsi/0/<ID>/0/). Une image du disque SCSI d'une vraie BeBox (dd if=/dev/disk/scsi/0/0/0/raw ...) s'utilise donc telle quelle, en SCSI comme en IDE : seul le contrôleur change, les secteurs sont les mêmes.

Les transferts se font en une fois, bien plus vite qu'un vrai disque SCSI.

Installer BeOS depuis le CD

La ROM boote un CD par le SCSI : -scsi3 beos_r452.cue -scsi0 disque.img devrait démarrer sur le CD d'installation (non essayé avec le CD BeOS lui-même). Autre solution, déjà éprouvée : la piste de données d'une image .cue/.bin ou .iso présentée comme un disque IDE maître en lecture seule, avec le disque cible en esclave :

bebox -cdide beos_r452.cue -cdoffset <secteur> -hd1 disque.img -log log.txt

bebox -log scan.txt -cdscan beos_r452.cue indique le secteur de départ du volume PowerPC (sur un volume BFS big-endian, le superbloc est au début du volume ; sur x86 il est 512 octets plus loin).

La fenêtre

La fenêtre de l'émulateur
La fenêtre de l'émulateur

L'écran de BeOS est encadré de deux barres sombres et plates, dessinées par l'émulateur lui-même (même aspect sous Windows, Linux et BeOS) : rien en elles ne ressemble à BeOS, on ne les confond pas avec l'écran émulé.

La barre d'outils, de gauche à droite :

  • marche / arrêt : arrête la BeBox comme son interrupteur (après confirmation) en laissant la fenêtre ouverte, ses images disque fermées ; le même bouton la redémarre ;
  • pause, qui devient reprise une fois en pause ;
  • reset : la BeBox redémarre comme avec son bouton (après confirmation) ;
  • Ctrl Alt Suppr : envoyé à BeOS (le Team Monitor) ;
  • Rapide : sans limite de vitesse, comme -fast ;
  • capture d'écran : bebox_0001.bmp, bebox_0002.bmp… dans le dossier courant ;
  • réglages (voir plus bas) ;
  • éteindre ou suspendre ;
  • à droite, la fréquence émulée, le pourcentage du temps réel et la charge de chaque processeur (hors boucle d'attente de BeOS).

Une infobulle explique chaque bouton et chaque périphérique quand la souris s'y arrête. La barre d'état donne à gauche les messages de l'émulateur, à droite les périphériques avec leur témoin d'activité (vert en lecture, orange en écriture) : disques IDE et SCSI, CD-ROM, réseau, son. Un clic sur l'un ouvre son menu : l'image utilisée et sa taille, et pour un CD-ROM SCSI Changer de disque… et Éjecter (BeOS voit le changement de disque comme sur une vraie BeBox). Le menu du son coupe ou rétablit le son.

Réglages

Les réglages
Les réglages

Le panneau des réglages, en onglets (Machine, Disques, Vidéo, Son, Réseau, Avancé), écrit dans bebox.cfg en gardant le reste du fichier (commentaires compris). Les images, la ROM et le dossier partagé se choisissent dans un sélecteur de fichiers (double clic pour entrer dans un dossier, flèche vers le haut pour remonter, Entrée pour choisir). Pour un disque, Nouvelle image… y crée une image vide (512 Mo à 8 Go) dans le dossier affiché ; BeOS l'initialise ensuite avec DriveSetup.

Ce qui peut changer pendant que la machine tourne s'applique tout de suite (vitesse, son, volume, journal). Le reste (processeur, mémoire, disques, cartes) demande un redémarrage : un bandeau orange le signale et le bouton Redémarrer relance la BeBox avec les nouveaux réglages, sans quitter l'émulateur. Si elle ne démarre pas avec eux (une image introuvable…), elle redémarre avec les précédents et dit pourquoi.

Au redémarrage depuis le panneau, le fichier a le dernier mot pour ce qu'il gère, même si la ligne de commande donnait autre chose.

Éteindre et suspendre

Fermer la fenêtre (ou le bouton d'alimentation) demande quoi faire :

  • Éteindre coupe l'alimentation, comme l'interrupteur de la BeBox : mieux vaut arrêter BeOS avant (menu Be, Shut Down) ;
  • Suspendre enregistre l'état complet de la machine dans bebox.sav (dossier courant) puis quitte : au lancement suivant, la BeBox reprend exactement là où elle était, applications ouvertes comprises, avec les réglages qu'elle avait ;
  • Annuler revient à l'émulation.

La reprise est refusée (avec un message, puis un démarrage normal) si une image disque a changé depuis la suspension : BeOS l'abîmerait. Le fichier est effacé une fois relu. -noresume démarre normalement sans le toucher. Le dossier partagé, reconstruit à chaque démarrage, empêche la suspension.

Si l'émulation se perd (le processeur exécute des données, par exemple avec une ROM ou un disque de démarrage abîmé) ou si BeOS s'arrête sur une erreur du noyau (PANIC sur le port série), la BeBox se met en pause et une boîte le dit, avec le choix de continuer, de redémarrer ou d'arrêter.

Au lancement, un écran d'accueil présente l'émulateur et ses raccourcis ; la coche Ne plus afficher au démarrage l'enregistre dans bebox.cfg (nosplash = yes), le bouton À propos… des réglages (onglet Avancé) le rouvre.

Ctrl+C dans la console quitte directement. -noui donne la fenêtre nue d'avant, sans barres (la fréquence est alors dans le titre).

Clavier et souris

TouchesEffet
clic sur l'écran de BeOScapture la souris
Ctrl droit + F12libère la souris
Ctrl droit + F10passe de la vitesse réelle à la vitesse maximale et retour
Ctrl droit + F11resynchronise le dossier partagé (voir plus bas)

Tant qu'un menu, le panneau ou un dialogue est ouvert, le clavier est à lui (Échap ferme, Entrée valide) et BeOS ne reçoit rien.

Vitesse

En mode fenêtré, l'émulation est limitée au temps réel : l'horloge de BeOS reste juste. -fast (ou Ctrl droit + F10) retire cette limite, sauf pendant qu'un son est joué (sinon il serait accéléré).

La version Windows traduit le code PowerPC en code x86 à la volée (JIT) ; -nojit revient à l'interpréteur. La version BeOS le traduit en code PowerPC.

Son

Le codec CS4231A de la BeBox (ports 0x830-0x833, DMA 6 en lecture et 7 en enregistrement) est émulé. Le pilote sound de BeOS le trouve et le serveur média l'utilise comme sortie audio, ce qui suffit à BSoundPlayer et donc à SDL. Le son sort par SDL à 44,1 kHz. L'entrée audio enregistre du silence.

-nosound coupe la sortie ; -wav <fichier> enregistre en plus ce qui est joué (aussi avec -headless).

Dossier partagé avec l'hôte

-share <dossier> présente un dossier de la machine hôte à BeOS comme un disque FAT (esclave IDE, donc sans -hd1). Dans BeOS, le monter avec le menu Mount du bureau, ou dans un Terminal :

mkdir /share ; mount -t dos /dev/disk/ide/ata/0/slave/0/0_0 /share

Ce que BeOS crée, modifie ou supprime est recopié dans le dossier quand l'émulateur se ferme : démonter le volume (ou taper sync) avant de quitter.

Sans redémarrer : démonter le volume dans BeOS, appuyer sur Ctrl droit + F11 (les changements de BeOS partent vers le dossier, puis le disque est refait à partir du dossier), remonter le volume.

Un fichier modifié des deux côtés garde la version de l'hôte ; la version BeOS est enregistrée à côté sous <nom>.from-beos. -sharefree <Mo> règle l'espace libre du disque (256 Mo par défaut, 2 Go au total au plus).

Le disque est en FAT : copier les archives (.tar, .tar.gz, .zip) sur le disque de BeOS avant de les décompresser, pour garder les attributs et les liens symboliques.

Écran

Le pilote Cirrus de BeOS R4.5 ne propose que le 8 et le 32 bits (pas de 15/16 bits) et ne reconnaît que 2 Mo de mémoire vidéo, d'où 800x600 au plus en 32 bits. cirrus4mb.sh (dans les téléchargements), lancé dans BeOS, le patche pour utiliser les 4 Mo de la carte émulée et ajoute le 1024x768 en 32 bits (redémarrer BeOS ensuite ; l'original est gardé dans /boot/home/cirrus.orig).

Carte 3D

-voodoo ajoute une 3dfx Voodoo Graphics. Tout est dans voodoo.md.

Réseau

-net ajoute une carte Ethernet NE2000 PCI reliée à une interface TAP de l'hôte : la BeBox émulée a sa propre adresse IP, joignable en FTP ou en telnet depuis le PC. Tout est dans reseau.md.

Toutes les options

OptionEffet
-config <fichier>, -noconfiglit un autre fichier de configuration que bebox.cfg, ou aucun
-no<option>annule une option sans valeur activée par le fichier de configuration (-nonet, -nofast…)
-romdump <fichier>ROM d'une vraie BeBox (voir plus haut)
-ram <Mo>taille de la RAM : 16 à 256 Mo par pas de 16, en barrettes de 32 et 16 Mo comme une vraie BeBox (32 par défaut)
-hd0 <image>, -hd1 <image>disques IDE maître et esclave
-slowidetransferts IDE à la vitesse d'une vraie BeBox (voir plus haut)
-scsi0 <image> … -scsi6 <image>disque (ou CD-ROM pour .iso et .cue) sur l'ID SCSI 0 à 6
-cdide <image>image de CD (.cue, .bin, .iso) vue comme disque IDE maître en lecture seule
-cdoffset <n>avec -cdide : secteur de 512 octets du CD vu comme secteur 0
-cdscan <image>décrit l'organisation d'une image de CD (mettre -log avant)
-cdextract <image> <secteur> <nombre> <fichier>copie des secteurs bruts d'une image de CD
-share <dossier>, -sharefree <Mo>dossier partagé avec l'hôte
-voodoo, -voodoo1tmucarte 3dfx Voodoo Graphics à deux TMU, ou à un seul
-net, -tap <nom>carte réseau NE2000 PCI reliée à la première interface TAP de l'hôte, ou à celle de ce nom (voir reseau.md)
-fastpas de limite au temps réel
-nojitinterpréteur seul
-nosound, -wav <fichier>pas de sortie son ; enregistrement du son joué
-volume <n>volume du son en pourcentage (100 par défaut)
-nouifenêtre sans barre d'outils ni barre d'état
-noresumedémarrage normal, sans reprendre la machine suspendue dans bebox.sav
-nosplashpas d'écran d'accueil au lancement
-log <fichier>journal de l'émulateur (stderr par défaut)
-serial <fichier>copie de la sortie de COM1
-headless, -seconds <n>, -shot <fichier.ppm>pas de fenêtre, arrêt après n secondes émulées, capture d'écran en sortant
-v, -stoponpanicjournal détaillé des périphériques ; arrêt sur un PANIC du noyau

Une option inconnue (par exemple bebox -h) affiche la liste.