:: Utilisation du lecteur de disquettes C= 1541 ::




Ce lecteur de disquettes 5 pouces 1/4 plutôt mastoc est le plus répandu. Avant de commencer, je rappelle quelques détails : Quand l'encoche de la disquette est débouchée, cela signifie qu'elle est en lecture/écriture, sinon, elle est en lecture seulement. Une seule face est utilisée, mais n'oubliez pas qu'une disquette, ça peut se retourner. Dernière chose : Vous pourrez stocker environ 2 fois 170Ko de données sur une biscotte.




1/ Formatage d'une disquette :

OPEN 15,8,15,"N0:NOM D7,00"
CLOSE 15

L'opération prend environ 1 minute et 30 secondes durant laquelle il ne se passe rien à l'écran. Au début, le lecteur émet un son qui peut laisser penser qu'il va exploser, mais c'est normal. Le premier formatage peut fort bien échouer si votre lecteur a dormi au grenier pendant quelques années, n'hésitez pas à recommencer 2-3 fois en cas de pépin. Si vous faites plusieurs essais, pensez bien à taper CLOSE 15 entre chacun d'eux. Retenez bien que le nom du disque ne peut pas excéder 16 caractères.



Remarque du 29/11/2006 : Je sais d'où vient le bruit épouvantable que produit le 1541 au début du formatage de la D7. J'ai appris sur ce site que le lecteur ne dispose d'aucun dispositif lui permettant de savoir quand la tête de lecture est revenue en position initiale, c'est-à-dire, sur la piste 0. La solution trouvée par les ingénieurs de Commodore est simple et bourrine : Faire reculer la tête pendant un temps t suffisamment long pour être sûr que la position 0 est atteinte. Ainsi, on a droit à un joli bruit de mitrailleuse et on est certain de désaligner les têtes...



Consultez le site que j'ai mis en lien au-dessus, il propose une solution.




2/ Initialisation d'une disquette :

OPEN 15,8,15,"I0"
CLOSE 15

Cette commande initialise la BAM (Block Availability Map) présente en mémoire. Pratique quand on utilise des disquettes qui ont le même numéro de disque. Si les disquettes n'ont pas le même numéro de disque, le C64 fait une initialisation automatique. On en déduit donc que le Commodore 64 différencie les disquettes non pas par leur nom, mais par leur numéro.




3/ Reconstruire la BAM (Block Availability Map) / Défragmenter la disquette :

La BAM est en quelque sorte la table des matières de la disquette qui permet au C64 de savoir ce qu'y s'y trouve et à quel endroit. Elle est située sur la piste 18 du secteur 0 et pése 128 octets.



Au bout d'un moment, à force d'avoir créé, effacé ou dupliqué des fichiers, finissent par apparaître des espaces vides sur la disquette qui ne sont pas utilisés, car généralement trop petits pour servir. On perd donc de la place.



Ce phénomène de fragmentation du disque peut ne pas être clair pour tout le monde, alors je vais prendre 5 minutes pour l'expliquer. Il nous est tous arrivés un jour de tourner pendant un bout de temps en ville à la recherche d'une place pour garer notre voiture et de nous dire en voyant un espace d'1m50 entre deux véhicules stationnés que si les gens s'étaient mieux garés et bien on aurait de la place pour nous. En gros, si les voitures étaient plus sérées, ça nous ferait un coin où nous arrêter. C'est pareil sur la disquette : Il y a des interstices entre les fichiers qui, si on réorganisait un peu tout ça, pourraient être mis à profit au lieu de rester vides. C'est à ça que sert la commande VALIDATE (à ne surtout pas confondre avec VERIFY !) :



OPEN 15,8,15,"V0"
CLOSE 15

Cela a pour conséquence de réorganiser les fichiers sur le disque afin d'éviter les pertes de place, un peu comme on chasse le bulles d'air d'une seringue ; ça élimine également tous les fichiers invalides.




4/ Voir le contenu d'une disquette :

LOAD "$",8
LIST

La liste des fichiers apparaît à l'écran.


5/ Charger un fichier en mémoire :

LOAD "NOM PROG",8

Le fichier NOM PROG est chargé en mémoire. Si c'est un programme, tapez RUN pour l'exécuter ou LIST pour voir les instructions qui le composent.




6/ Sauvegarder un fichier sur disquette :

Deux solutions :

La méthode numéro 1 s'emploie quand on sauvegarde un fichier pour la première fois. La deuxième méthode est à utiliser quand on sauvegarde un programme déjà existant sur le disque. Admettons par exemple que nous avons chargé le programme TRUC en mémoire et que nous l'avons modifié. Il faut que nous utilisions la commande SAVE "@0:TRUC",8 pour l'enregistrer de nouveau sur le disque.



Attention, le nom du fichier est limité à 16 caractères. Il n'est pas utile d'utiliser la commande OPEN.




7/ Effacer un fichier de la disquette :

OPEN 15,8,15,"S0:NOM FICHIER"
CLOSE 15

Si vous ne connaissez pas précisement le nom du fichier à supprimer, faites d'abord :



LOAD"$",8
LIST

Vous pouvez réitérer cette opération pour vous assurer que le fichier a bien disparu une fois les commandes d'effacement exécutées.




8/ Vérifier qu'un fichier s'est correctement sauvegardé :

VERIFY "NOM FICHIER",8

Le C64 vérifie que le fichier "NOM FICHIER" enregistré sur la disquette est identique à celui présent en mémoire vive. Si le test se passe bien, le message "OK" apparaît à l'écran, sinon, "?VERIFY ERROR" s'affiche. Dans ce cas, sauvegardez à nouveau le fichier à l'aide de la commande SAVE "@0:NOM FICHIER",8.




9/ Copier ou fusionner des fichiers :

OPEN 15,8,15,"C0:DESTINATION=SOURCE"
CLOSE 15

Cela a pour conséquence de copier SOURCE dans un nouveau fichier nommé DESTINATION.



On peut également fusionner de 2 à 4 fichiers :

OPEN 15,8,15,"C0:DESTINATION=SOURCE1,SOURCE2,SOURCE3,SOURCE4"
CLOSE 15

DESTINATION va donc contenir SOURCE1, SOURCE2, SOURCE3 et SOURCE4.


10/ Explications complémentaires :

Je vais vous en dire un peu plus au sujet du format de la commande OPEN :

        OPEN FICHIER#,PERIPHERIQUE#,CANAL#,COMMANDE$

        FICHIER# :

Ce nombre va de 1 à 255 et sert tout simplement de nom de fichier. Evitez quand même d'aller au-delà de 127, l'enfer sodomite vous y attend. C'est pas moi qui le dit, c'est le manuel : "[...] But numbers greater than 127 should be avoided, because they cause the PRINT# statement to generate a linefeed after the return character. These numbers are really meant to be used with non-standard printers". Personnellement j'ai essayé en mettant 200 et tout s'est bien passé.



Ceux qui ont lu l'extrait ci-dessus et qui comprennent l'anglais doivent se demander pourquoi ils nous parlent de PRINT#. C'est simple, j'ai simplifié la syntaxe dans les exemples que j'ai donné en 1, 2 et 3. Je vous en reparle à la fin de ce paragraphe.



        PERIPHERIQUE# :

C'est le numéro du lecteur auquel on s'adresse. On peut faire une analogie entre ce chiffre et les lettres que Windows attribue aux périphériques de stockage raccordés au PC.



        CANAL# :

Peut être compris entre 2 et 15. Pour ceux qui savent un peu comment fonctionne la pile de protocoles TCP/IP, c'est comparable au numéro de port. Pour les autres, imaginez que le C64 et le 1541 ont plusieurs fils par lesquels ils peuvent s'échanger des données ; Les fils 0 et 1 servent au système d'exploitation pour faire les LOAD et les SAVE, les fils 2 à 14 permettent l'accès au contenu des fichiers et le fil 15 est utilisé pour envoyer des commandes au petit ordinateur qui est intégré dans le 1541.



        COMMANDE$ :

C'est la commande qu'on envoie au 1541 pour qu'il l'exécute.



Maintenant, je vais éclaircir le mystère du PRINT#. Voici la démarche normale à suivre lorsqu'on veut envoyer des commandes au lecteur de disquettes (pour formater un disque ou reconstruire la BAM par exemple) :



        OPEN 10,8,15
        PRINT #10,"COMMANDE A EXECUTER"
        CLOSE 10

Pour être bien clair, voyons comment devrait se faire, en "version longue", le formatage d'une disquette :

        OPEN 10,8,15
        // Littéralement : "Utilise le canal numéro 15 (canal de commandes) du périphérique numéro 8 pour créer un fichier nommé 10 dans lequel on écrira les commandes que le 1541 devra exécuter".
        PRINT #10,"N0:NOM D7,00"
        // Littéralement : "Ecrit N0:NOM D7,00 dans le fichier appelé 10". Quand le 1541 s'aperçoit qu'on lui envoie des commandes, il se met au travail.
        CLOSE 10
        // Littéralement : "Ferme l'accès au fichier 10, on a fini de s'en servir (c'est comme le frigo, on le ferme quand on n'a rien à faire dedans)".

On peut faire plusieurs PRINT# d'affilée pour envoyer une série d'instructions. J'arrête là pour les explications, mais sachez que j'en ajouterai encore pas mal, on peut vraiment s'éclater comme des bêtes avec un C64 et un 1541. Au menu : Gestion des fichiers séquentiels, analyse de la BAM, gestion de fichiers indépendants, on va mettre les mains dans le camboui !