CODING ★ MISE AU POINT DE FORMATAGES ★

Formatage spécial: MAPFORMAT
Je reviens une ultime fois ( pour l'instant ) sur les formatages spéciaux de disquette. Le programme proposé, intitulé MAPFORMA , est une aide à la conception de formatages, puisqu'il permet de tenir à jour un petit fichier de formatages, pour lesquels il fait tous les calculs, et surtout de créer les lignes Basic de Datas définissant un DPB.

Quelque chose vous échappe ? Alors (re)lisez mon article « TRUCS POUR L'EXPLOITATION DE... » dans CPC Infos n°34 de Juillet, où sont décrits les formatages sur CPC.

MISE EN ROUTE

1) Tapez le fichier CREEFMT et sauvez-le. Exécutez-le ensuite : un court Instant passe, puis est sauvegardé sur la disquette mise au préalable dans le lecteur le fichier Ascii MAPFORMA.DAT, qui contiendra vos formatages. C'est à faire une fois et une seule évidemment ; après c'est MAPFORMA.BAS qui gère MAPFORMA.DAT.

2) Tapez le programme MAPFORMA.BAS et sauvegardez-le sur la même disquette que MAPFORMA.DAT.

3) Remettez à zéro le CPC. puis lancez MAPFORMA.BAS. Inutile de dire tout de même comment faire. Le programme réserve lors de la première exécution de la place pour les transferts de fichiers et ensuite se construit en quelques secondes l'unique écran du programme. On voit s'afficher dans l'ordre :

  • le titre
  • les options avec les touches-clés
  • les paramètres du DPB
  • les formatages lus dans le fichier MAPFORMA.DAT

Finalement, après quelques très courts instants s'affichent les valeurs des paramètres FDC et le formatage du haut (DATA à l'origine) passe en vidéo inverse. Pour ceux auxquels les couleurs déplairaient, elles sont définies en DATAs en ligne 2340.

LES FONCTIONS D'EDITION

Ce sont des fonctions de gestion de la liste des formatages. Comme ces
commandes sont assez triviales, les touches associées ne sont pas indiquées à l'écran. De plus la place était chère, alors...

1) Touches curseur haut et bas : déplacement vers le haut ou le bas dans la liste. A chaque fois qu'on change de formatage, le nouveau apparaît seul en vidéo inverse et ses paramètres remplacent évidemment les précédents. On sélectionne donc ainsi le formatage sur lequel opéreront toutes les commandes à gauche de la liste. On remarquera vite que la liste est circulaire et qu'on passe de haut en bas et vice versa.

2) Touches curseur gauche et droite : déplacement vers le haut ou le bas dans la liste pour dupliquer le formatage actif. Le fond est bleu pastel ou foncé. On détermine ainsi une position dans la liste où on copiera le formatage alors actif. On peut déplacer Indépendamment ces curseurs (vidéo inverse et foncé) que je qualifierai de "sélection' et "duplication", mais si le curseur de sélection passe sur celui de duplication, ce dernier disparaît alors. Le curseur "duplication" part toujours du curseur "sélection".

3) Touche ENTER ou Return (2 cas se présentent) :

— pas de curseur de duplication : c'est alors pour donner ou changer le nom du formatage actif. Le nom est demandé dans la fenêtre de communication en bas à gauche.
Pas plus de 10 signes (lettres, chiffres, espace et les caractères autorisés pour les noms de fichier AMS-DOS). Le dernier caractère peut être effacé avec la touche DEL. SI on n'entre pas de nom. en tapant directement ENTER, alors le nom n'est pas modifié. Pour effacer en quelque sorte le nom, il faut entrer un espace. SI donc on a tapé un nom, alors il remplace après validation l'ancien.

— curseur de duplication actif : il s'agit alors de copier le formatage actif à la position du curseur "duplication*. Pour éviter un recouvrement par erreur de formatage, une confirmation est demandée. Toute autre réponse que «O» annule le processus. Sinon le format actif prend la place de celui éventuellement présent sous le curseur 'duplication' ; on le constate par la disparition de ce curseur et l'affichage à sa place du nom du format actif.

4) Touche DEL : sert à effacer de la liste le formatage actif. Attention : cette fonction n'est opérante que s'H n'y a pas de curseur "duplication". Là encore il faut confirmer la demande, étant donné l'irréversibi-té de ta fonction. Le nom, les paramètres et les numéros de secteurs ( tout ! ) sont en effet perdus.

DEFINITION DU FORMATAGE

Définir un formatage, c'est définir son DPB pour l'AMSDOS. L'utilisateur peut tout définir du DPB hormis le Flag LoGIn (FLG), qui est toujours à 255 (c'est la volonté du programmeur et non une contrainte du DOS). Pour fixer les valeurs des 16 paramètres restants (n'oublions pas que BCT et FTO sont variables et réservés au DOS. ce qui explique leur absence de la liste des paramètres). Il suffit de donner 10 valeurs. Examinons-les dans l'ordre de leur touches-clés, qui est l'ordre numérique :

0) Nombre de pistes : de manière générale, aussi ne le diral-Je qu'une fois puisque c'est valable pour les 9 fols suivantes, apparaissent dans la fenêtre de communication/dialogue un libellé de la valeur à donner ( «Nombre de pistes :» Ici ), puis une Indication de l'intervalle de définition de la valeur (entre 1 et 80 ici, signifié par une mise entre crochets des valeurs extrêmes autorisées), L'espèce de E arrondi entre le nom de la variable et l'Intervalle signifie "appartient à" ; on lit ici que N, le nombre de pistes, appartient à 1-80. Autrement dit l'utilisateur est censé ne rentrer qu'une valeur dans l'intervalle autorisé. Enfin est demandée la valeur. Le nombre peut être entré en base dix (notation usuelle) ou en base hexadécimale. Il faut alors qu'il débute par le caractère «&», comme en BASIC. Dans chaque base ne sont autorisés que les caractères nécessaires pour écrire les "chiffres" (0-9 en base 10 : 0-9 et A-F' en base 16). Le dernier caractère peut être effacé par DEL.

Ici est demandé le nombre de pistes que reconnaîtra le formatage. Comme le savent ceux qui ont bien lu mon article cité en avant-propos, le DOS ignore le nombre de pistes et ne connaît que le nombre de blocs (avec d'autres paramètres : taille de bloc, taille de secteur et nombre de secteur par piste). Cependant j'ai jugé plus agréable et plus pratique de considérer le nombre de pistes car on définit en général un formatage d'après la disquette utilisée pour (40 pistes ou 42 ou 80).

Si on valide sans avoir rien entré, alors le processus est annulé. Donc si on a sélectionné par erreur une commande attendant une entrée, quelle qu'elle soit, l'appui de ENTER l'annule. Le texte associé disparaît naturellement de la fenêtre.

Si la valeur entrée est correcte (et dans l'intervalle et compatible avec les autres), alors tous les paramètres qui en dépendent sont calculés et la liste des valeurs à l'écran est remise à jour. Enfin le contenu de la fenêtre de dialogue est effacé.

Si la valeur entrée est hors intervalle (ce qui est de l'étourderie) ou si elle est incompatible avec les autres paramètres du DPB (ce qui est beaucoup plus délicat à déterminer), alors s'affiche pendant environ 2.5 secondes, à la place du texte de la commande, le message terriblement laconique «Attention aux valeurs !». Laconique en effet car il ne sera pas donné d'indication sur la cause de l'invalidité. Que c'est méchant pensez vous. Que nenni :
si on conçoit bien son formatage. Il n'y a pas de raison qu'une erreur arrive. Et surtout la description des entrées de valeurs pour le DPB va en fait consister à Indiquer les causes d'irrecevabilité. Enfin Il y aura plus loin un formulaire garanti sans erreur pour les as du calcul mental ou de la calculette.
Refus pour le nombre de pistes (hormis la valeur hors Intervalle, ce qui ira de soi aussi pour les 9 valeurs suivantes) :

  • 0 secteur par piste
  • taille de secteur nulle (pas encore définie)

Pas plus dans ce cas que dans les suivants je ne justifierai les causes d'irrecevabilité ou ne les détaillerait. Pour s'en faire une Idée, consulter le FORMULAIRE (dernier chapitre) et le listing, surtout pour les opérations effectuées après si la valeur est correcte. Qu'on se le dise.

1) Nombre de secteurs par piste :
Refus pour :

  • dépassement de la capacité d'une piste (5120 octets), c'est-à-dire taille secteur trop grande pour ce nombre
  • GAP3 de formatage trop grand
  • les numéros de secteur ne resteraient pas sur la même "selzalne" (X0 à XF)

2) Taille de bloc :
Une remarque qui vaut pour Ici comme pour les paramètres où sont demandées des valeurs non consécutives (Ici 1,2,4 ou 8 ; pour les secteurs 512, 1024 , 2048 ou 4096. etc..) : toute valeur différente de celles prévues est ramenée à la plus proche inférieure.
Par exemple pour une taille de secteur. 700 sera ramené à 512.

Refus pour :
— taille de bloc inférieure à taille de secteur

3) Taille de secteur :
Refus pour :

  • dépassement de la capacité d'une piste, c'est-à-dire nombre de secteurs trop grand pour cette taille
  • taille supérieure à celle d'un bloc

4) Nombre d'entrées au dlrectory :
Refus pour :

  • taille de répertoire correspondante Inférieure à 1 bloc

5) Premier secteur :
Refus pour :

  • les numéros de secteur ne resteraient pas dans la même "seizalne"

6) Décalage de piste : pas d'erreur décelée à part le "hors intervalle'. Faire attention à ne pas mettre un décalage qui, avec le nombre de pistes, ferait aller au delà de la capacité de la disquette (40. 42 ou 80 piste).

7) GAP 3 de lecture/écriture :
Refus pour :

  • ce GAP ferait plus de 0.8 fois celui de formatage. C'est un rapport arbitraire. Plus il est grand, plus les risques de problèmes sont grands.

8) GAP 3 de formatage :
Refus pour :

  • ce GAP serait supérieur au maximum autorisé par le nombre et la taille des secteurs (cf formulaire)
  • ce GAP serait moins de 1.25 fois (1/0.8) supérieur au GAP de lecture/ écriture

9) Octet de remplissage : pas de raison que cela coince si la valeur est dans l'intervalle possible.
C'est en forgeant qu'on devient forgeron. Ne soyez pas effrayé par ces possibilités d'irrecevabilité. Avec un peu de pratique on surmonte l'obstacle en quelques essais ; histoire d'expérience. Le chapitre « EXEMPLE DE MISE AU POINT DE FORMATAGE » est là pour guider. On a fini avec définition du DPB. Voyons le reste.

AUTRES FONCTIONS

Les fonctions restantes sont d'usages très divers. Examinons les dans leur ordre à l'écran :

0) Ordre des secteurs : si le DPB suffit à l'exploitation d'un formatage par le DOS, Il faut cependant connaître en plus l'ordre physique des secteurs sur une piste pour formater. Ce programme reconnaît 3 ordres, que l'on va montrer avec un formatage à 10 secteurs (C1-CA) :

0) C1,C2,C3,C4,C5,C6,C7,C8,C9,CA
1) C1,C6,C2,C7,C3,C8,C4,C9,C5,CA
2) C1,C3,C5,C7,C9,C2,C4,C6,C8,CA

L'ordre 0 est l'ordre numérique. L'ordre 1 est celui des formats standard, où on Intercale les éléments de la 2ème moitié de la liste (en ordre numérique) entre ceux de la première. L'ordre 2 est obtenu en écrivant d'abord les secteurs de même parité que le premier. Ce dernier ordre peut être indispensable pour des lecteurs du genre 5'1/ 4 à 80 pistes, qui tournent trop rapidement avec l'ordre standard (on obtient avec des WRITE FAILED). Dans le fichier original MAPFORMA.DAT, les formatages DB1-198K et DB2-198K utilisent cet ordre pour un 5"¼ 80 pistes (chaque face physique de 400 KO est divisée en 2 faces logiques de 200 KO. grâce au décalage de 40 de la deuxième).
Lorsqu'on presse O, un message indique le fonctionnement. Dès qu'on presse ENTER, les secteurs apparaissent dans leur ordre original. Avec les touches curseur on passe d'un ordre à l'autre. ENTER valide l'ordre affiché et la fenêtre est effacée.

A noter que l'ordre n'est pas stocké dans le fichier MAPFORMA.DAT. Après que les formatages aient été lus. le programme identifie les ordonnancements. En cas a'échec dans l'identification, il attribue l'ordre numérique, 0.

5) Sauvegarde du fichier des formatages : entrer S pour lancer la sauvegarde. Toute autre entrée stoppe le processus. Seuls les formatages dont le nom a été défini sont sauvegardés ; cela explique qu'on ne puisse pas effacer un nom de formatage (sinon apparemment en le remplaçant par un espace). Attention à ne pas oublier d'indiquer un nom pour un formatage !
Après sauvegarde du nouveau fichier MAPFORMA.DAT il y a effacement de la fenêtre de dialogue et poursuite en attente de commande.

I) Impression des lignes de DATA définissant le formatage, soit nom, paramètres DPB et ordre des secteurs : encore une fois il y a demande de confirmation. Plus la peine de revenir là-dessus désormais.
Si l'imprimante n'est pas prête (bit 6 du port B = &F500 mis, pour les spécialistes hardware), alors s'affiche pendant environ 2,5 secondes le message "Imprimante pas prête !" avec ordre d'interrompre le processus.
Sinon s'impriment les lignes de DATAS telles qu'elles seront sauvées en fichier Basic-ASCII. Encadrés par des lignes de REM on trouve le nom, puis les paramètres du DPB vraiment au standard du CP/M, puis les paramètres restant liés au CPC, puis les secteurs pour l'ordre en vue de formatage. Par exemple :

1000 '
1010 DATA "DATA"
1020 DATA 0024,03,07,00,0063,003F,00C0,0010,0000
1030 DATA C1,09,2A,52,E5,02,04,00,00,FF
1040 DATA C1,C6,C2,C7,C3.C8,C4,C9,C5
1050 '

Telles quelles ces lignes peuvent être directement utilisées pour l'utilitaire de formatage FORMAT+.

D) numéro de la première ligne des lignes DATAs (cf exemple juste avant) : il suffit d'Indiquer un numéro entre 1 et 60000. Les lignes seront numérotées de 10 en 10.

A) sauvegarde des lignes de DATA définissant le formatage actif sous forme de fichier Basic ASCII : ces lignes sont celles qui sont Imprimées comme déjà indiqué. On donne un nom pour le fichier ASCII qui les contiendra. Plus tard il n'y a qu'à fusionner ce fichier au programme de son choix ( FORMAT+, utilitaire d'installation de DPB du type de BOOT-DPB.BAS - cf CPC 34 de Juillet ) avec MERGE "nom de fichier". Rappelons au passage que la fonction MERGE fonctionne même avec un 464, du moment que le fichier fusionné soit en ASCII. L'usage de la commande A signifie l'aboutissement d'une mise au point de formatage et sera certainement la moins utilisée.

R) Résumé du format : affichage dans la fenêtre de dialogue d'un "résumé" du format de manière assez parlante. C'est une manière rapide de vérifier ce qu'on a fait.

  • Il y a ignorance de la commande si le formatage n'a pas été nommé.
  • Il y a message d'erreur si le nombre de secteurs par piste ou si la taille de secteur n'a pas été définie.
  • Sinon on obtient ce qu'on désirait. L'affichage est de la forme (pour DATA) : 40 pistes (00-39)-180 KO 9 sect. (C1-C9) de 512 oct. bloc de 1 KO - DIR de 2 KO
    • SI le nombre de pistes n'a pas été défini, il n'y a pas de capacité d'indiquée.
    • Si le nombre d'entrées donne une taille de répertoire Inférieure à 1 bloc, alors on lit «DIR ???",

Cet affichage persiste jusqu'à l'entrée d'une nouvelle commande. Personnellement. Il correspond à ce que Je "pose" quand je définis un formatage, à savoir :

  • le nombre de pistes
  • la capacité d'une piste, ce qui donne la capacité de la disquette et le nombre et la taille des secteurs
  • la taille de bloc
  • la taille du répertoire ( y en auraient-ils qui ne sauraient toujours pas que c'est le DIRECTORY ? ) en KO ou en nombre d'entrées ( 32 octets l'entrée )

Grâce à cette commande vous pourrez rapidement faire le tour des formatages du fichier original MAPFORMA.DAT et vous testerez votre sagacité en découvrant l'usage des formats non standards.

Et voilà le tour des commandes est presque terminé. La dernière est la commande de terminaison de la session de travail, c'est ESC ! L'écran est effacé et mis en MODE 2. Le programme peut être relancé par RUN. Le fichier MAPFORMA.DAT est lu à nouveau, etc.. En cas d'arrêt accidentel (étourdi, va!) et alors qu'on n'a pas déjà sauvegardé le fichier des formatages (S). Il faut faire (avant altération ou effacement de variables) GOSUB 1550 pour appeler directement le sous-programme de sauvegarde (ouf ! ).

EXEMPLE DE MISE AU POINT DE FORMATAGE

Supposons qu'on veuille mettre au point le formatage suivant : 40 pistes (00-39) - 200 KO 5 secteurs de 1024 octets bloc de 1 KO - DIR de 2 KO (64 entrées)

  1. on se place sur une "case libre' de la liste et on entre le nom du formatage ; c'est facultatif à cet Instant mais autant le faire avant.
  2. entrer le nombre de secteurs par piste (1): 5
  3. entrer la taille de bloc (2): 1
  4. entrer la taille de secteur (3): 1024
  5. entrer le nombre d'entrées au directory (4): 64
  6. entrer le nombre de pistes (0): 40
  7. entrer le GAP 3 de formatage (8): &60
  8. entrer le GAP 3 de lecture/écriture (7): &30
  9. entrer le décalage de piste (6): 00
  10. entrer le numéro du premier secteur (5): 8c70
  11. entrer l'octet de formatage (9): &E5

Le DPB proprement dit est créé. Le parcours est presque imposé des étapes 1 à 4. Ensuite c'est libre, sauf que la 7 doit précéder la 8 la première fois.

Il ne reste plus qu'à choisir l'ordre des secteurs. On peut alors vérifier son travail par le "résumé", choisir le numéro de ligne, imprimer pour constater le résultat (heureux possesseurs d'une imprimante !) et sauvegarder le fichier ASCII correspondant pour usage ultérieur, sans oublier évidemment de sauver le nouveau fichier des formatages.

FORMULAIRE

Le formulaire va vraiment mériter son nom en n'étant qu'un ramassis de formules. On va y retrouver toutes les formules déjà données pour les calculs de DPB dans le CPC Infos 34, et d'autres qui en sont tirées et sont très utiles. Cela simplifiera la tâche de celui qui se plongera dans la compréhension du programme.
L'unité d'un paramètre, s'il en a une, est indiquée entre parenthèses : o pour octets, KO pour Kilo-Octets et b pour bloc.
On définit les paramètres suivants :

  • NBP : nombre de pistes
  • TC : taille du catalogue, ou répertoire, ou DIRECTORY
  • TB : taille de bloc
  • TS : taille de secteur

SPT = PST*2^BPS=PST*RPS
BSH = LOG(TB(o)/128)/LOG(2)
BLM = 2^BSH-1
EXM = TB(KO)-1
DSM = ((NBP"SPT*128)/TB(o))-1=((NBP*SPT)/(BLM+1))-1
DRM = (TC(KO)'32)-1
TC(b) = (DRM+1)/(4*2^BSH)=(DRM+1)/(32*TB(KO))
CKS = (DRM+1)/4
BPS = LOG(TS(o)/128)/LOG(2)
RPS = 2^BPS=TS(o)/128
TB(KO)= (2^BSH)/8
TS(o) = 128"2^BPS=128*RPS
NBP = ((DSM + 1 ) * TB(o))/(SPT*128)=((DSM+1 )*(BLM+1 ))/SPT

Enfin pour le calcul du GAP 3 maximum possible. Je me suis basé sur la description d'une organisation de piste donnée dans LE LIVRE DU LECTEUR DE DISQUETTE de Micro-Application (1985) pages 171-177:

  • 6250 octets maximum
  • 146 octets d'Information pour la piste
  • 62 octets d'Information pour chaque secteur

D'où la formule pour GAP3 maximum:

GAP3 = FIX(((6250-146)/PST)-62-(128*RPS))

Cette formule est utilisée telle quelle dans la fonction GAP3. On n'a pas effectué la sosutraction (6250-146) pour des facilités de modification, si certains voulaient donner une plus grande capacité (qui sait si elle n'existe pas ?) pour avoir de plus grands GAPs. Rappelons enfin que la fonction FIX supprime la partie décimale.

CONCLUSION

Ce programme de Mise Au Point de FORMatages (et jeu de mot anglais en plus) devrait simplifier la vie de
ceux à qui la conception de formatages spéciaux posaient des problèmes, si ce n'est qu'elle ne les rebutait, à cause de la complexité de certains calculs. Une fois encore le programme fait tout (à part bien sûr entrer les données caractéristiques de formatages). Grâce à lui on n'a même plus à créer ses DATAs pour le DPB et c'est là l'essentiel de ce genre d'utilitaire : simplifier la "vie" à son utilisateur, J'espère qu'il incitera encore plus de monde à expérimenter dans ce domaine très intéressant et très fructueux même des formatages spéciaux. Désormais le lecteur de CPC Infos a tous les outils en main :

» MAPFORMA : mise au point de formatage et création des DATAs.
» FORMAT+ : formatage au format de son choix,
» TRANSFIL : transfert de fichiers entre tous formats.
» Routines et Minis-programmes de CPC Infos 34 : exploitation des disquettes à formatage spécial.

Que demander de plus ? Bons "formatages" !

CPCINFOS n°37 p10-p19, Yannick GOUR

★ EDITEUR: CPCINFOS
★ ANNÉE: 1991
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: Yannick GOUR
 

Page précédente : Formatage spécial en Lecteur A ou B
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» MapFormat    (CPC  Infos)    FRENCHDATE: 2021-04-22
DL: 292
TYPE: ZIP
SiZE: 9Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Formatage spécial : TRANSFIL (CPC Infos)
» Coding » Formatage spécial en Lecteur A ou B
» Coding » Formatage spécial : TRANSFIL v2 (CPC Infos)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 600 millisecondes et consultée 2315 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.