17Fermer19
Jeff_HxC2001Le 10/10/2007 à 22:53
Amiga ? Je pense que tu vas avoir du mal avec cette machine.
Je pense que tu sais que l'Amiga a un contrôleur de floppy un peu plus "rustique" que ce que l'on peut trouver sur d'autres machines : il s'agit uniquement d'un DMA permettant de sérialiser les bits MFM en provenance du floppy. Il peut tout de même se synchroniser sur un motif particulier.
Le décodage des secteurs et de tout ce qui va avec est donc quasiment réalisé à 100% par du soft.
Cette caractéristique rend le contrôleur de l'Amiga très flexible, ce qui lui permet de lire/écrire toutes sortes de format de disquette.
La contrepartie c'est que beaucoup de programmeur ont traité le floppy de différentes façons :
Lecture secteur par secteur (synchro sur $4489), lecture du premier secteur au dernier, synchro sur l'index, etc.
Sur cette machine le terme "trackloader" prend tout son sens ;-).

En gros si tu veux faire fonctionner un emulo floppy de façon fiable avec cette machine tu es obligé de travailler en "mode track" et non plus en mode secteur, car beaucoup de trackloader ne supporte pas la présence de temps mort entre les secteurs.

Concernant l'écriture, étant en train de travailler dessus je peux te dire que c'est du "one shot" : sous workbench, les modifications sur une track sont mis en cache coté Amiga, puis la track est entièrement réécrite, à la manière d'un formatage.

La même chose mais venant de wikipedia:
http://en.wikipedia.org/wiki/Original_Amiga_chipset:
<<
Floppy disk controller:

The floppy controller is unusually flexible. It can read and write raw MFM or GCR data in any format via DMA or programmed I/O. It also provides a number of convenient features, such as sync-on-word (in MFM coding, $4489 is usually used as the sync word). MFM encoding/decoding is usually done with the blitter — one pass for decode, three passes for encode. Normally the entire track is read or written in one shot, rather than sector-by-sector.

In addition to the native 880 KiB 3.5-inch disk format, the controller can handle many foreign formats, such as:

IBM PC
Apple II
Mac 800 kB (requires a Mac drive)
AMAX Mac emulator (A special floppy of only 200 kB to exchange data between Amiga and Macintosh could be formatted by Amiga, and it could be read and written by floppy drivers of both systems)
Commodore 1541 (requires 5.25 inch drive slowed to 280 rpm)
Commodore 1581 formatted 3.5" floppy for C64 and C128
>>


C'est la machine qui m'a donné le plus de mal : le moindre bit de travers et c'est le crash assuré avec pas mal de trackloader, en effet la vérification des checksums n'étaient pas souvent implémentée (bande de féniasse ;-) ) !!
En tout cas ça ma permis de fiabilisé fortement mon émulo, notamment grâce à des outils d'analyse de disque comme diskmontools.

Je ne sais pas si tu connais mais en fait un émulateur basé sur une sdcard pour Amiga existe déjà depuis mi-2005:
http://www.amiga.org/modules/myalbum/photo.php?lid=2486&cid=5
http://www.amiga.org/modules/myalbum/photo.php?lid=3154&cid=5
http://www.amiga.org/modules/newbb/viewtopic.php?topic_id=28022&forum=8&viewmode=flat&order=ASC&start=0

Sur cet émulo l'ensemble de l'image est encodée puis stockée dans une RAM de 2Mo avant le démarrage de l'émulation ce qui permet de garantir le maintient du flux lors des opérations de lecture et d'écriture. La contrepartie est le temps de chargement d'une image : 20-30 secondes.

J'en profite aussi pour annoncer que le support de l'écriture du HxCFloppyEmulator à bien avancé : Sur Atari ST le formatage, la copie et l'écriture sont ok.
Sur Amiga j'ai encore qq bugs (et oui encore cet Amiga capricieux ;-) )

A+
Jeff