CODING ★ TRANSFERT DE FICHIERS ENTRE DES DISQUETTES A FORMATAGE STANDARDDU SPECIAL ★

Formatage spécial : TRANSFIL (CPC Infos)
Le programme proposé permet de transférer des fichiers BASIC, binaire ou ASCII entre des disquettes de formatage quelconque, que ce soit sur un lecteur A, ou B ou entre les deux.

PREAMBULE

L'utilitaire proposé est donc un transféreur de fichiers. Il est certes moins pratique d'utilisation que certains utilitaires CP/M ou que DISCOLOGY , mais il est beaucoup plus performant car il peut travailler avec toutes sortes de formatages (ce que ne savent pas faire DISCOLOGY et d'autres). Cet utilitaire, baptisé TRANSFIL fait suite à FORMAT+. utilitaire de formatage dans le format de son choix, et à la série de programmes proposés pour l'exploitation de disquettes à formatage spécial.

La lecture de l'article concernant ces derniers est fortement conseillée pour comprendre comment sont déterminés les formatages sur les CPCs.

MISE EN ŒUVRE

1) Tapez le programme TRANSFIL. BAS et sauvegardez-le.
2) Remettez à zéro le CPC, puis tapez le programme CHARGEUR.BAS. Ensuite sauvegardez-le. par prudence, avant de le lancer. Au bout d'une vingtaine de secondes, si tout va bien, le fichier binaire TRANSFIL.COD est sauvegardé. Le chargeur détecte 2 types d'erreurs : une erreur dans une donnée ou une Interversion de données dans une ligne (pour peu que les données interverties ne soient pas de même parité). Dans un tel cas le programme s'arrête avec indication du type d'erreur et de la ligne erronée. Il faut alors la corriger et le chargeur peut être relancé par un "RUN 160".
3) Pour travailler vous n'avez plus besoin désormais que des fichiers TRANSFIL.BAS et TRANSFIL.COD. sur une même face de disquette naturellement.

CHOIX DES FORMATAGES

1) Mise en route de TRANSFIL : après avoir remis à zéro le CPC. lancez TRANSFIL.BAS. Suit une attente de 3 ou 4 secondes pendant laquelle le magnifique écran de choix est créé. N.B.: je parlerai de blanc ou de noir pour les couleurs, ce qui sera évident pour le possesseur d'un écran couleur ; le possesseur de monochrome traduira aisément cela en clair ou obscur. Le possesseur de moniteur couleur, généralement beaucoup moins net en haute résolution qu'un monochrome, modifiera à sa convenance les couleurs en ligne 250.

2) Choix des formatages : la partie intéressante est le tableau central où apparaissent dans une ligne et dans une colonne les différents formatages connus de TRANSFIL (pour l'adaptation à ses formatages personnels voir le chapitre PERSONNALISATION DE TRANSFIL). Les noms sont blancs sur fond noir, sauf pour les 2 "DATA", noirs sur fond blanc et pour la case à l'intersection de leurs ligne et colonne.

Dans cette version de TRANSFIL. on a le choix entre DATA (format de données standard), VENDOR (format système standard), DATA+ (extrapolé de DATA en ajoutant un secteur de numéro CA et en utilisant les pistes 40 et 41, ce qui donne 208 KO de capacité), DB1-198K (même formatage par piste que pour DATA+, mais restreint aux pistes 00-39) et DB2-198K (même chose que DB1-198K sauf qu'il s'applique entre les pistes 40 et 79 ; ce format n'a donc d'utilité que sur un lecteur 80 pistes. Avec DB1-198K, il permet de partager une disquette 80 pistes en deux disquettes virtuelles de 40 pistes, avec tout le profit que l'on peut en tirer, surtout si on a lu mon article sur les trucs pour l'exploitation de disquettes à formatage spécial en lecteur A ou B). Comme indiqué sur la ligne sous le tableau, on change de sélection au moyen des touches curseur. Un coup à droite et on passe à DATA+ sur la ligne, un coup en haut et on passe à VENDOR (le tableau est défini circulairement ; on saute d'un bord à l'autre, ce qui est plus agréable). La case du tableau à

l'intersection des ligne et colonne des formatages sélectionnés est toujours "allumée'. Pas besoin d'être Einstein donc pour comprendre comment choisir deux formatages.

3) Validation du choix : comme écrit à l'écran. Il suffit de taper ENTER ou RETURN. L'écran s'efface alors et on doit patienter 3 ou 4 secondes avant que l'écran de transfert n'apparaisse.

Cliquez sur l'image pour l'agrandir

TRANSFERT DE FICHIERS

1) Description de l'écran ; l'écran est composé de 4 parties qui sont, de haut en bas :

a) le bandeau supérieur avec le nom, le numéro de version et le copyright à gauche et des Indications beaucoup plus Intéressantes à droite, à savoir : les formatages choisis, les lecteurs et users actuellement actifs ainsi que le sens de transfert. Par exemple on lira : A(0):DATA "-» B(A):DATA+. Cela signifie qu'on transfère du lecteur A/User 0 en format DATA vers le lecteur B/User 10 en format DATA+.

b) la fenêtre source, surmontée d'une ligne en gris avec "SOURCE' inscrit dessus. C'est Ici que s'afficheront le catalogue ou le directory de la disquette source.

c) la fenêtre destination, surmontée d'une ligne en gris avec "DESTINATION" inscrit dessus. C'est Ici que s'afficheront le catalogue ou le dl-rectory de la disquette destination.

d) la fenêtre du menu principal ou des messages pour les transferts ou effacements. Le menu principal est en fait le seul qui soit. Il indique les commandes de modification des paramètres de transfert, de copie et d'effacement. On va sans plus tarder les décrire.

2) Modification des paramètres de transfert :
TAB : inversion du sens de copie. Bien évidemment la flèche désigne le formatage de la disquette destination. Ceci explique que le choix dans le tableau au début se fait sans Indication de sens. En prenant DATA en ligne et VENDOR en colonne, ils se retrouvent seulement placés dans le bandeau supérieur respectivement à gauche et à droite. A l'origine le transfert se fait donc dans le sens DATA->VENDOR mais une pression de le touche TAB suffit à l'Inverser.

  • gauche (touche curseur) : permutation du lecteur source, qui passe de A à B, et vice versa.
  • droite (touche curseur) : permutation du lecteur destination, qui passe de A à B, et vice versa.
  • haut (touche curseur) : Incrémentation du User source. Il y a retour après 15 à 0. Le numéro est exprimé en hexadécimal (chiffres 0,1, 2, 3,4, 5, 6, 7,8, 9, A, B, CD. E, F).
  • bas. (touche curseur) : incrémentation du User destination. Mêmes remarques que pour le User, source.

3) Catalogue ou directory

  • F1 (touche du pavé numérique ou bien touche 1 du clavier !) : permet de cataloguer la disquette source. La fenêtre source est effacée et un message invite à Insérer le disc source, avant de presser une touche pour lancer le catalogue. Le catalogue apparaît ensuite. Une remarque d'ordre général : les messages d'erreur éventuels dûs à l'AMSDOS ne sont pas détournés et sont ceux sous BASIC. Il ne doit donc pas y avoir de difficulté pour y réagir.
    On peut interrompre cette opération lors de l'attente de touche en pressant la touche ESC, auquel cas s'affiche dans la fenêtre de catalogue "'Abandon ". Il y a retour alors au menu.
  • F4 (touche pavé numérique ou bien touche 4 du clavier) : permet de faire le Directory (fichiers sans indication de taille) de la disquette source. Même processus que pour F1.
  • F2 : fonction similaire à F1. mais pour le disc destination.
  • F5 : fonction similaire à F4. mais pour le disc destination.

4) Effaçage de fichier

Il suffit de presser la touche DEL. Le menu en bas s'efface, remplacé par une phrase invitant à insérer le disc source dans le lecteur adéquat et à taper le nom du fichier à effacer. A noter que cette opération n'est faisable que sur le disc source. Si. par exemple, on vient de transférer par erreur un fichier, il suffit d'inverser le sens de copie pour pouvoir l'effacer.

Le nom du fichier est saisi sur la deuxième ligne. Les minuscules sont automatiquement converties en majuscules. Les caractères admis sont entre l'espace et le Z, ce qui comprend tous les caractères autorisés par l'AMSDOS. On ne peut entrer plus de 12 caractères. La touche DEL permet d'effacer le dernier caractère entré. Une pression de la touche ESC interrompt le processus et il y a retour au menu. Les jokers ("?" et "*") sont autorisés; c'est en fait comme sous BASIC. Une pression de la touche ENTER (ou RETURN selon le CPC) valide pour l'effaçage le nom entré (si un nom a bien été entré, sans quoi c'est Inopérant). Puis s'affiche en dessous "efface...". Il y a enfin retour au menu après exécution de la routine d'effaçage.

5) Transfert de fichier

Presser la touche ENTER ou RETURN. Insérer le Disc source dans le lecteur adéquat puis entrer le nom du fichier à transférer. Toutes les remarques pour la saisie du nom de fichier à effacer sont valables ici, hormis celle pour les jokers. On transfère les fichiers un par un et il ne peut y avoir d'ambiguïté sur le nom.

Une fois le nom validé, un message sur la troisième ligne, "lit...'. Indique l'opération de lecture. SI le fichier est introuvable, il y a retour immédiat à la saisie d'un nom de fichier. Si une erreur de lecture apparaît, alors la copie est Interrompue. Il y a affichage sous "lit..." de *' Abandon " et attente d'une pression de touche pour saisir un nouveau nom. Ceci peut se produire "aisément" si on tente de lire, par exemple, une disquette formatée en DATA comme si elle l'était en DATA+.

Cela arrive aussi dès le début si un fichier BASIC ou binaire est trop long ou en cours de lecture si un fichier ASCII l'est (cf remarque no 1).
La lecture achevée, il est demandé d'Insérer le disc destination dans le lecteur adéquat, puis de presser une touche pour lancer l'écriture. On peut ici aussi Interrompre le processus en pressant ESC, pour retourner aussitôt à la saisie de nom. Le processus d'écriture est signalé par le message "écrit...".

Un problème lors de cette opération se traduit comme pour ta lecture par un message d'abandon. Lorsque l'écriture est finie. Il y a retour à une nouvelle saisie de nom.

Remarques:

1) les fichiers sont copiés en une seule fois. Aussi sont-ils "limités" en taille pour les fichiers BASIC et BINAIRE à environ 42 KO et des poussières et pour les fichiers ASCII à environ 40 KO. Autant dire que 99.99% des fichiers existant sur CPC seront transférables.

2) bien attendre lors d'une écriture l'apparition du message de saisie d'un fichier à transférer avant de changer de disquette, même si l'on croit que c'est terminé. En effet, après la sauvegarde, le fichier est rapidement réouvert (sur le disc destination) pour en modifier l'entête et y inscrire les valeurs originelles (et non résultant de la sauvegarde). Les spécialistes du langage machine trouveront plus de détails au dernier chapitre.

Résumé des commandes

  • Touches curseur et TAB pour sélectionner les lecteurs et Users de source et destination et pour changer le sens de copie.
  • Touches du pavé numérique ou du clavier 1,4 et 2.5 pour faire les catalogue/directory des dises source et destination.
  • Touche DEL pour effacer un (ou des) fichier(s) sur le disc source dans une syntaxe similaire à celle de la commande RSX "|ERA'.
  • Touche ENTER ou RETURN pour transférer un fichier.
  • Touche ESC pour interrompre les opérations de catalogue/directory. effaçage ou transfert avec retour au niveau précédent (au menu ou à la saisie de nom de fichier à transférer).

PERSONNALISATION DE TRANSFIL

Comme son prédécesseur FORMAT+, TRANSFIL a été conçu dans un souci de simplicité d'emploi et de modification. De même que pour FORMAT+, la personnalisation porte sur les formatages utilisés. Comme on va le voir l'adaptation est enfantine, pour peu que l'on sache ce qu'est un DPB. Mais encore une fols Je renvoie pour cela à mon article sur l'exploitation de disquettes à formatage spécial.
Les lignes de données de formatages, dans la version de TRANSFIL proposée, vont de 870 à 1090. Chaque formatage est composé de trois lignes. Voyons-les par l'exemple :

930 DATA "DATA+"
940 DATA 0028,03,07,00,00D1,003F,00C0,0010,0000
950 DATA C1,0A,18,24,E5,02,04,00,00,FF

Sur la 1ère ligne on trouve le nom du format. Sur la 2ème on trouve les 9 premiers paramètres du DPB, exprimés en hexadécimal sur un ou deux octets (paramètres SPT à OFF). Sur la 3ème ligne sont les paramètres FDC. de FSC au flag LOGIN. On a donc tout simplement le nom du formatage (entre guillemets pour éviter au BASIC des confusions) suivi du DPB exprimé en hexadécimal. Ce n'est que pour des raisons de facilité de lecture que l'on a mis cela en trois lignes et aussi séparé les formatages les uns des autres.

On n'a donc qu'à modifier ces lignes selon ses besoins personnels. On peut mettre aussi le nombre de formatages que l'on désire, (en ajouter mais attention au remplissage de l'écran, ou en supprimer) : le programme s'occupe de tout le reste et gère toute la mise en page. Il ne faut pas oublier après le dernier DPB le DATA "FIN*.

OCCUPATION DE LA MéMOIRE PAR TRANSFIL (partie binaire)

Ce chapitre intéressera surtout ceux connaissant le langage machine. Quant aux autres, Ils pourront améliorer leurs connaissances de ta RAM du CPC.

Comme TRANSFIL travaille par chargement de fichier entier en mémoire, un souci constant a été de réserver le maximum de mémoire (en continu) comme BUFFER I/O. D'où l'utilisation de zones peu orthodoxes pour caser des routines ou des données, comme le montre ta pagination mémoire ci-après. En deuxième lieu, il me semble Intéressant d'expliquer comment il est procédé au transfert de tous les fichiers, dans les limites du BUFFER, indépendamment de toute adresse de chargement.

1) Pagination sous TRANSFIL binaire

. 0000 routine d'affichage d'un texte qui s'achève par un zéro '0006
. 0007 type du fichier en transfert
. 0008 sauts standards en RAM ROM
. 002F
. 0030 TXT OUTPUT (copie du vecteur en BB5A)
. 0032
. 0033 RAM standard
. 003F
. 0040 programme principal de gestion des commandes, de transfert e
. 02FF d'effaçage avec les messages
. 0300 BUFFER I/O ABFB
. ABFC 4 octets requis par l'AMSDOS
. ABFF
. AC00 début de la RAM du DOS (RAMDOS)
. AD64 buffer pour les vecteurs cassette utilisé ici pour stocker les
. AD8A LOC,LEN,EXEC, nom et sa longueur de fichiers + chiffres Hexa
. B0FF fin de la RAMDOS
. B100 RAM nécessaire au système d'exploitation
. B8FF
. B900 VECTEURS du système d'exploitation
. BBB9
. BBBA VECTEURS des packs GRA.SCR et CAS remplacés par routines de
. BC67 saisie de nom.chargement, sauvegarde, vérification, arrêt.
. BC68 VECTEURS du système d'exploitation
. BD37
. BD38 Vecteur JP RESTORE+vect. BASIC remplacés par routines de paramétrage.
. BDCC gestion de fenêtres. activation de lecteur, DPB...
. BDCD Indirections du système d'exploitation
. BDF0
. BDF1 adresses pour FAR CALL des RSXs de lecture/écriture de
. BDFF secteur recherche de piste, DIR et ERA
. BE00 DPB n° 1 et DPB numéro 2
. BE31
. BE32 paramètres pour détermination des lecteur et
. BE3F user source et destination et pour le sens de copie
. BE40 RAM strictement réservée à l'AMSDOS (pas touche)
. BE7F
. BE80 texte du menu
. BF41
. BF42 RAM affectable par la pile
. BFFF
. C000 RAM vidéo
. FFFF

Comme on peut le voir on s'est servi de 2 Restarts : le numéro 0, qui ne sert qu'à remettre à zéro le CPC et le numéro 6 (RST 30H). qui n'est utilisé qu'à l'initialisation avant d'être Inhibé. On peut donc les employer dans tout programme pour loger de très courtes routines ou des sauts à des routines.

Dans la RAM réservée à l'AMSDOS, il y a un buffer de stockage des vecteurs cassette détournés par le DOS. Comme on n'aura pas besoin de ces vecteurs avec TRANSFIL , cette zone sert pour le stockage de données.

Les vecteurs auxquels on peut toucher sans risque .si on n'utilise pas le BASIC, sont justement ceux dédiés aux BASIC, de BD3A à BDCC. Comme de plus ici il n'est aucunement fait appel à des routines graphiques, tous les vecteurs du Pack graphique ont pu être recouverts par des routines. De même ceux du Pack "écran" (SCR). qui est certes utilisé par le Pack Texte, mais directement en ROM. Enfin les 6 premiers vecteurs du Pack Cassette étant exclusivement destinés au travail sur cassette, on peut eux aussi utiliser leur place à loisir.

En BDF1 on empiète sur un vecteur d'indirection lié à l'impression, qui n'est pas mise à profit dans TRANSFIL. Donc aucun risque. A la suite la RAM libre jusqu'à BE3F est pleinement employée.

Enfin l'occupation de la RAM par TRANSFIL s'achève par le texte du menu, logé en BE80 et s'étendant jusqu'à environ BF40. Après il vaut mieux laisser trop de place à la pile du processeur que pas assez.

2) Procédé de transfert

Pour un fichier ASCII il n'y a pas d'en-tête et pas d'adresse de chargement donc, ce qui est assez logique. Les octets sont simplement lus un par un et écrits un par un.

Pour un fichier BASIC ou BINAIRE, on procède à la sauvegarde de son adresse de chargement, de sa longueur et de son type après son ouverture et à ta sauvegarde de son adresse d'exécution après son chargement. Cependant il est toujours chargé à une adresse constante, 0300H dans la version présentée de TRANSFIL. Il est donc sauvegardé avec cette adresse de chargement, les autres valeurs étant elles cependant égales aux originales. Le fichier est ensuite normalement fermé avant d'être aussitôt simplement ouvert. Cette ouverture permet en effet d'obtenir à l'adresse RAMDOS+19H. soit ici AC19, le numéro du premier bloc du fichier sauvegardé, bloc qui débute par l'en-tête de fichier. Par calcul, en fonction du formatage employé, on détermine les pistes et secteurs correspondants. On lit ce secteur. On remplace l'adresse de chargement 0300H en position 15H par la véritable que l'on avait stockée. Ensuite on calcule la nouvelle somme de contrôle ou CHECKSUM. Cette valeur est la somme des 67 premiers octets du header et elle est écrite en position 67. Lorsque le DOS ouvre un fichier. Il calcule ce CHECKSUM et vérifie si il est égal à ce qu'il y a en position 67. SI oui il s'agit d'un fichier à en-tête, sinon c'est interprété comme un fichier ASCII. Bref le nouveau CHECKSUM est calculé et sa valeur écrite là où il faut. Enfin le secteur ainsi modifié est écrit sur la disquette. Ceci explique pour les experts du suivi à l'œil des opérations du lecteur de disquette qu'il se passe "quelque chose" après la sauvegarde normale, ce "quelque chose" étant donc l'écriture de la vraie adresse de chargement du fichier.

CONCLUSION

Ce programme TRANSFIL et cet article contient ma série d'articles et programmes sur l'utilisation de formatages spéciaux de disquettes. Avec FORMAT+ je vous ai offert la possibilité de formater selon votre fantaisie des disquettes (mais je me permets de préconiser le format DATA+). Grâce à TRANSFIL vous pouvez transférer d'une disquette à une autre, du moment que vous en connaissiez les formatages, tous les fichiers de toutes sortes (ou au moins 99.99%). Enfin avec l'ensemble de routines proposées dans mon premier article maintes fois cité, vous pouvez adapter les programmes transférés pour qu'ils reconnaissent les formatages spéciaux ou bien faire en sorte qu'ils les reconnaissent sans modification, selon vos compétences en BASIC et langage machine. Ces articles et programmes sont le fruit d'une très longue expérience dans ce domaine des formatages spéciaux de disquette sur CPC. J'ai ainsi pu utiliser pleinement les possibilités d'un lecteur B à 80 pistes, avec autant de souplesse qu'un lecteur A. De surcroît je dispose de 792 KO par disquette (5"¼ à quelques francs l'unité). Je ne peux donc que souhaiter à tous autant de profit dans l'utilisation de leur système de disque sur CPC, qui est un des plus souples qui soient ou qui aient été, grâce à ta compatibilité CP/M. Vive l'AMSDOS !

CPCINFOS n°36, Yannick GOUR

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

Page précédente : Formatage spécial: MAPFORMAT
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» TransFil    (CPC  Infos)    (Sources)    FRENCH    LISTINGDATE: 2021-04-22
DL: 154
TYPE: PDF
SiZE: 1222Ko
NOTE: 7 pages/PDFlib v1.6

» TransFil    (CPC  Infos)    FRENCHDATE: 2021-04-22
DL: 297
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Coding » Formatage spécial: MAPFORMAT
» Coding » Formatage spécial : TRANSFIL v2 (CPC Infos)
» Coding » Formatage spécial en Lecteur A ou B
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 307 millisecondes et consultée 1756 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.