Articles

Emulateurs DOS : 8086tiny

Après RPI X86, je vous présente 8086 TINY, un autre émulateur DOS.

8086 Tiny est une machine virtuel émulant un PC XT. 8086 Tiny est écrit en C.IBM PC XT

8086 Tiny été créé par Adrian CABLE. Ce projet lui a fait gagné l’ IOCCC  (The International Obfuscated C Code Contest) en 2013.

Son 8086tiny a remporté un franc succès avec ses 4043 octets de C qui sont « seulement » capables d’émuler (excusez du peu) un compatible IBM PC du milieu des années 1980 comprenant :

  • CPU Intel 8086/186
  • 1 Mo de RAM
  • Contrôleur de disquette 3.5  » (1.44MB/720KB) 8072A
  • Contrôleur de disque dur (prend en charge un seul disque dur 528MB)
  • Carte graphique Hercules 720×348 graphiques en 2 couleurs (64 Ko de RAM vidéo), et CGA 80×25 16 couleurs avec support du mode texte
  • Timer programmable 8253 (PIT)
  • Contrôleur d’interruption programmable 8259 (PIC)
  • Contrôleur de clavier XT 83 touches 8042
  •  Horloge temps réel MC146818 (RTC)
  • Haut-parleur du PC

L’émulateur utilise la bibliothèque graphique SDL pour la portabilité, et se compile sur Windows, Mac OS X, Linux et probablement sur la plupart des autres systèmes 32-bit/64-bit également.


Installation de 8086 Tiny

Après avoir démarré votre RPi avec Raspbian, ouvrez le terminal et tapez les commandes suivantes

sudo mkdir tiny
cd tiny
sudo wget https://github.com/adriancable/8086tiny/archive/master.zip
sudo unzip master.zip

Afin de pouvoir compiler le code, il faut rajouter le paquet SDL

sudo apt-get install libsdl1.2-dev

Renommage du dossier 8086tiny-master en 8086tiny (à cause de la différence qu’il y a entre le répertoire d’installation et ce qu’il y a dans le fichier makefile)

sudo mv 8086tiny-master 8086tiny

Compilation

cd 8086tiny
sudo make

Puis exécution

sudo ./runme

Et voilà, le terminal affiche maintenant l’écran d’accueil de 8086 Tiny

Ecran d'accueil 8086tiny

Ecran d’accueil 8086tiny

Pour sortir de l’émulation il suffit de taper après le A:\> quitemu

quitemu

Créer un Disque Dur

Pour mettre des programmes dans cet environnement d’émulation, c’est quand même mieux d’avoir sa propre place…

Nous allons donc créer une partition FAT…

Utilisation de la commande DD pour créer une partition de 256Mo ce qui devrait être bien suffisant par rapport à la taille des applications/logiciels de la fin des années 80

sudo dd if=/dev/zero of=./hd.img bs=1024K count=256

Nous pouvons de nouveau lancer l’émulateur

sudo ./runme

Création de la partition avec la commande a:\> FDISK

fdisk

Voici les réponses aux questions des différents écrans :

  • Dire NON to large disk support: N
  • Entrer 1 pour créer une DOS partition or logical drive
  • Entrer 1 pour créer une primary DOS partition
  • Dire Oui  use the maximum available size… and make active: Y
  • Escape
  • Escape
  • Escape
  • Et maintenant quittez l’émulateur (a:\>quitemu)
    et redémarrez le (sudo ./runme).

Il faut maintenant formater le disque C: en y ajoutant le système (c’est le /s)

format c: /s

A la question : Warning: all data… (YES,NO) => répondre YES
et donnez un nom à votre disque dur

On quitte l’émulateur pour monter le disque sous raspbian

quitemu

On vérifie l’existence du disque sous raspbian

fdisk -lu hd.img
Ecran partition DD 8086 tiny

Ecran partition DD 8086 tiny

Nous avons besoin de savoir taille des secteurs (ici 512) et le secteur de démarrage de la partition (ici 63).
Ensuite, nous pouvons utiliser la boucle de montage pour monter le disque et y accéder

sudo losetup /dev/loop0 hd.img -o $((63 * 512))
sudo file -s /dev/loop0
sudo mount /dev/loop0 /mnt

 

Et voilà votre disque dur est accessible depuis le système de fichiers de Raspbian

Après transfert des logiciels que vous voulez installer sur votre système DOS, il faut démonter le disque

sudo umount /mnt
sudo losetup -d /dev/loop0
sudo reboot

Dépôt 8086 Tiny

Il existe un dépôt 8086 Tiny. Pour l’installer il suffit donc de taper

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install 8086tiny

Mais je n’ai pas réussi à le faire fonctionner. Donc si vous avez la solutions, je suis preneur…