Envoyer un e-mail à Collection ThomsonCollection Thomson
EditoForum 2002Liens
Nanoreseau
Docs
Logiciels
Matériel
Imprimer le document
Retour à la liste

Visualisation d’une disquette

Qui ne voudrait pas savoir où se trouvent ces satanées « I/O Error » sur la disquette ? Ou tout simplement savoir si une disquette est bien pleine ?

Le programme suivant (pour MO et TO) vous permettra d’afficher l’état de chaque secteur de la disquette. La grille d’affichage subdivise en blocs verticalement et est graduée toutes les dix pistes horizontalement. Vous définirez le numéro de lecteur en ligne 40, le nombre de pistes de votre support en ligne 50 et le type de donnée dans le cas de votre lecteur (les secteurs vides sont remplis par &HFF pour le QDD et par &HE5 pour les autres contrôleurs) en ligne 60. Dans le cas où le secteur est plein, un carré plein est affiché. Dans le cas où le secteur est vide, un point est affiché. Si le secteur est illisible, un tiret est affiché. En sortie de programme, vous connaîtrez le nombre de secteurs vides, le nombre de secteurs pleins et le nombre de secteurs erronés :

10 '
20 ' A définir par l'utilisateur
30 '
40 L=0                                                      Numéro de lecteur
50 Z=79                                                     Nombre de pistes
60 R=&HE5                                                   Remplissage pour secteur vide
70 '
80 ' Préparation de l'écran
90 '
100 SCREEN4,6,6:CLS                                         Initialise l’écran
110 LOCATE0,10,0                                            Positionne/efface le curseur
120 FORI=40 TO Z*4 STEP 80:BOXF(I,4)-(I+39,17*4-2),-8:NEXT  | Affiche
:FOR I=3 TO 72 STEP 32:LINE(0,I)-(319,I),3:NEXT             | la grille
130 '
140 ' Check de la disquette
150 '
160 A=0:B=0:C=0                                             Efface les compteurs
170 C$=STRING$(10,CHR$(R))                                  Comparatif pour secteur vide
180 ONERRORGOTO230                                          Gestion des erreurs
190 FOR P=0 TO Z                                            Pour toutes les pistes
200 FOR S=1 TO 16                                           Pour tous les secteurs
210 A$=DSKI$(L,P,S)                                         Lit le secteur
220 IF LEFT$(A$,10)=C$ THEN PSET(P*4+1,S*4+1):A=A+1:        | Affiche un secteur
GOTO250 ELSE BOXF(P*4,S*4)-(P*4+2,S*4+2):B=B+1:GOTO250      | plein ou vide
230 C=C+1:LINE(P*4,S*4+1)-(P*4+2,S*4+1)                      | Affiche une
240 RESUME250                                                | I/O Error
250 NEXT S,P                                                Pour toute la disquette
260 '
270 ' Affichage des compteurs
280 '
290 PRINTA;"secteur(s) vide(s)"
300 PRINTB;"secteur(s) plein(s)"
310 PRINTC;"secteur(s) erroné(s)":PRINT

Même pour une disquette pleine, il reste toujours des secteurs vides : les blocs de 8 secteurs sont réservés en entier chaque fois. Il est toujours possible de les occuper avec un fichier de données ou un fichier en langage machine mais il faudrait élaborer un système d’exploitation spécial qui permettrait d’accéder à tous les secteurs de la disquette après en avoir, bien sûr, repéré tous les secteurs libres.

Site
Plus
Forums
Code
Créations

*Site en favoris
*Page en favoris
*Site en démarrage
*Page en démarrage


Haut de page

Collection Thomson 2015 © Ghislain Fournier & François Mouret