Mauvais " disque souple de composition de la " voie 0
Ce programme est employé pour composer ces disques souples qui ont de mauvais secteurs sur leur voie 0 et quand sont composés avec le DOS ou les fenêtres, messages d'erreur d'affichage comme le " MAUVAIS de la voie 0 ". Cependant vous pouvez également l'employer pour composer les disques souples normaux.
Le codage du programme a été donné dans le disque inclus avec ce livre avec le nom " TTFORMAT.C ". La logique fonctionnante du programme correspond le programme édité en magasin d'ordinateur de PCQUEST, en février 2003 édition.
Dans ce programme, nous essayons de rendre ce type des disques souples réutilisable en les composant. Les bruits de programme que vous pouvez manipuler la disquette même avec quelques mauvais secteurs là-dessus. Cependant, si le premier secteur du disque est mauvais, le disque souple ne peut pas être composé.
Le programme récrit tous DBR, FAT et information de répertoire racine. S'il y a de mauvais secteurs sur la surface du disque, ils sont marqués en tant que mauvais dans le FAT.
Dans le codage du programme, la structure BPB est employée à l'auteur le bloc de paramètre de BIOS du DBR. Le boot_sector de structure est employé pour écrire le DBR du disque. L'address_field de structure est employé pour agir l'un sur l'autre avec le nombre du cylindre, des têtes, et des secteurs par voie et avec la taille du secteur.
Différentes fonctions utilisées dans le codage du programme et de leur description ont été données dans la table donnée après.
Fonction |
Description |
Random_VolumeID () |
Cette fonction fournit l'identification de volume du disque. (Comment le DOS se produit le numéro de série du disque souple a été discuté à côté de cette table) |
mark_bad () |
Marquer le mauvais secteur en utilisant la fonction 04H de 13H INTERNE pour vérifier les secteurs. |
sector_no_to_physical () |
Cette fonction est employée pour convertir le nombre de secteurs en voies, têtes et secteurs |
format_term () |
Pour terminer le formatage et sortir le programme |
write_boot_info () |
Écrit le secteur d'initialisation du disque |
set_media_type_for_format () |
La fonction est employée pour placer le type de supports pour le format en utilisant la fonction 18H de 13H INTERNE |
volume_label () |
La fonction obtient l'étiquette de volume d'écrire l'étiquette de volume du disque |
format () |
Essuie la surface du disque pendant le formatage aussi bien que manipuler le mauvais compte de secteurs. |
get_drive_parameters () |
La fonction emploie 13H INTERNE, la fonction 08H pour obtenir des paramètres d'entraînement. |
mark_bad () |
Tient l'information du mauvais faisceau pour marquer dans le FAT |
ask_for_continue () |
Fonction à confirmer avant de composer le disque |
check_bad () |
Fonctionner pour vérifier si le statut retourné est code d'erreur pour le MAUVAIS secteur |
erreur () |
Cette fonction montre le message d'erreur pour le code d'erreur correspondant |
lock_volume () |
La fonction est employée pour fermer la commande en utilisant 21H INTERNE, fonction 44H et fonction secondaire 0DH |
unlock_volume () |
La fonction est employée pour ouvrir la commande en utilisant 21H INTERNE, fonction 44H et fonction secondaire 0DH |
physical_to_sector_no () |
La fonction est employée pour calculer le nombre de secteurs du nombre de voie, de tête et de secteur |
Le numéro de série de volume de la disquette est calculé par le DOS selon la date du jour et l'heure de l'horloge de système.
La première partie du numéro de série est calculée par la somme de l'heure (des secondes et des centièmex d'une seconde) et de la date (mois et jour). La deuxième partie du numéro de série est égale à la somme de l'heure (des heures et des minutes) et de la date (année).
Tous calculs sont exécutés dans le système hexadécimal. Par exemple, nous laisser supposent que vous avez composé le disque souple dans l'environnement de DOS chez 11:16 : 28 : 65 sur 10/23/2003. Nous laisser maintenant calculent le numéro de série du disque.
Le temps dans (des secondes et des centièmex des secondes) le format est
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
De même, la date dans (mois et jour) le format est
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
De même, le temps dans (des heures et des minutes) le format est,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
Et l'année sera
= 2003
= 07D3
Maintenant, nous laisser calculent le numéro de série de la disquette, selon la description donnée avant. La première partie du puits de numéro de série soit (1C41 + 0A17) = 2658 et la deuxième partie du numéro de série sera (0B10 + 07D3) = 12E3.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|