Finalement, pour ne pas avoir a me soucier du controleur, de la machine et du Basic, je renonce au changement de densite automatique. Ce sera moins elegant, mais beaucoup plus facile a programmer. J'ai deja termine. Voici donc comment est traite le changement de densite dans dcmoto 9.6, pour tous les controleurs de disquette, internes ou externes :
- Initialisation en double densite en l'absence de disquette
- Initialisation à la densite reelle de la disquette si un fichier .fd est deja charge au demarrage de dcmoto. La taille et le contenu du fichier .fd determinent la densite : simple si inferieure a 81 Ko, ou si l'octet 0x14100 n'est pas nul. Double dans le cas contraire.
- en cas de changement de densite (suite au chargement d'une autre disquette), il faut l'indiquer au systeme par la commande DENSITY, si elle existe dans le Basic en cours d'execution. Si elle n'existe pas (en particulier en Basic 512 TO et Basic 128 MO6) il suffit d'une réinitialisation programme pour fixer automatiquement la bonne densite. Si on omet cette procedure, la prochaine lecture de secteur produit une erreur 53. Heureusement, on a alors une deuxieme chance (et meme des vies infinies
).
L'inconvénient est l'absence d'automatisme. L'enorme avantage est de laisser le systeme fixer lui-meme les bons parametres. Lui, au moins, il sait où il stocke les densites, alors que beaucoup de Thomsonistes semblent l'ignorer, ou n'ont pas ose me repondre
Pour finir, il faut preciser que la simple densite dans dcmoto n'est possible que pour l'unite 0, au moins dans un premier temps. Si vous trouvez des disquettes simple densite double face, prevenez-moi, j'essaierai de faire mieux
Daniel