RECUPEREZ VOS PROGRAMMES OU FICHIERS PROTEGES
Publie dans Amstrad Magazine numero 3 * Octobre 1985
Vous avez ecrit un programme, puis l'avez enregistre sur une cassette
ou une disquette en le protegeant. Apras quoi, vous l'avez efface de la
memoire de votre AMSTRAD. Malheureusement, dans votre precipitation de
mettre a l'abri votre oeuvre, vous avez oublie de conserver une copie
non protegee de votre travail.
Le programme propose ici vous permettra de recopier vos fichiers de
cassettes, ou disquette a cassette, ou disquette en supprimant le flag
de protection mis en place par le soft du CPC. Il vous est fourni sous
la forme d'un listing Assembleur et d'un listing Basic.
Le listing Assembleur permettra a ceux qui le desirent d'ameliorer ce
programme. (Par exemple en y incluant un traitement des erreurs).
Le listing Basic autorise tous les possesseurs de CPC a utiliser le
programme et permet de choisir le type de support des fichiers entree
et sortie.
Programme Assembleur
--------------------
Le programme Assembleur qui vous est presente aurait pu etre ecrit par
tout possesseur de la precieuse brochure AMSTRAD COMPLETE FIRMWARE
SPECIFICATIONS.
Il permet, pour tout fichier enregistre en "FILE FORMAT" (c'est le cas
des fichiers ou programme crees par la commande SAVE) de charger ce
fichier en RAM, puis de la re-enregistrer sur un support magnetique.
Le fichier obtenu en sortie aura des specifications strictement
identiques au fichier fourni en entree, mais il ne sera plus protege.
Cela signifie que, a l'exception du bit de protection, les differentes
parties, utiles du header du fichier entree (adresse des donnees,
adresse du point d'entree, longueur du fichier, zone utilisateur)
auront les memes valeurs dans le header du fichier sortie.
La routine AFFER1 est destinee a permettre le traitement des erreurs.
Elle n'a pas ete utilisee dans ce programme et se compose uniquement
de deux instructions, mais vous pouvez eventuellement y inclure le
traitement d'erreurs que vous desirez.
Attention toutefois, dans ce cas, a modifier l'adresse de chargement du
programme. Celle qui est donnee (&A4B5) a ete calculee pour permettre
aux possesseurs d'une unite de disquettes d'utiliser ce logiciel.
Programme Basic
---------------
Le programme BASIC permettra a ceux qui ne disposent pas d'un Assembleur
Editeur de mettre en oeuvre ce programme. Il permet en outre a ceux qui
disposent d'une unite de disquettes de choisir le support du fichier
entree et celui du fichier sortie. Pour pouvoir utiliser ce programme,
les utilisateurs AMSTRAD qui ne possadent pas d'unite de disquettes ne
devront pas saisir les lignes 50, 60, 70, 100, 110, 130 et 140.
Donnees et routines utilisees en Assembleur
-------------------------------------------
TYP-IN type de support du fichier entree. sera a 0 pour une cassette,
a 1 pour une disquetta.
TY-OU type de support du fichier en sortie. sera a 0 pour une cassette,
a 1 pour une disquette. Ces deux zones sont renseignees par le
programme Basic. Elles permettent de determiner la longueur
maximum du nom de fichier.
- NOM-IN nom du fichier en entree.
- NOM-OU nom du fichier en sortie.
- LNG-IN longueur du nom du fichier entree.
- LNG-OU longueur du nom du fichier sortie.
- TYP-PG type du fichier entree.
- ADR-DE adresse de chargement du fichier.
- ADR-EN adresse du point d'entree.
- LNG-PG longueur totale du fichier.
- USR-ZO zone utilisateur du header.
Les zones TYP-PG, ADR-DE, ADREN, LNG-PG, USR-ZO, sont renseignees par le
header du fichier entree.
Les zones NOM-IN, NOM-OU, LNGIN, LNG-OU sont renseignees par la demande
de nom de fichier a l'ecran.
Principales routines utilisees
------------------------------
Ces routines sont appelees par un CALL a leur adresse. Les adresses d'appel
sont les suivantes:
BC77 OPEN d'un fichier input. Cette routine retourne:
+ Dans le registre A le type du fichier,
+ Dans le double registre BC la longueur totale du fichier,
+ Dans le double registre DE l'adresse de chargement des donnees,
+ Dans le double registre HL l'adresse d'un buffer contenant le header
du fichier.
La zone utilisateur est contenue dans les octets 28 a 63 de ce buffer.
BC83 READ d'un fichier input.
Cette routine retourne dans le double registre HL l'adresse du point
d'entree.
BC8C OPEN d'un fichier sortie. Cette routine retourne dans le double
registre HL l'adresse d'un buffer contenant le header. La zone
utilisateur obtenue lors de l'OPEN du fichier entree sera reconduite
dans ce buffer.
BC98 WRITE d'un fichier output.
BC0E Mise de l'ecran dans le mode fourni dans le registre A.
BC32 affectation a l'INK dont le numero est donne dans le registre A des
couleurs dont les numeros sont donnes dans les registres B et C.
BB06 Lecture d'un caractare frappe au clavier. Le caractare est donne
dans le registre A.
BB5A Affichage a l'ecran du caractare dont la valeur est dans le
registre A.
BB78 Retourne les positions horizontales du curseur dans les registres
H et L.
BB75 positionne le curseur aux positions donnees dans les registres H
(Numero de colonne) et L (numero de ligne).
Utilisation du programme
------------------------
En ce qui concerne le programme Basic, vous n'avez qu'a taper K pour
une cassette ou D pour une disquette lors de la demande du type de
support. Lors de la copie de fichier, le programme vous demande le nom
du fichier en entree puis celui du fichier en sortie.
Le nom que vous tapez alors doit obeir aux ragles suivantes :
Nom du fichier en entree
------------------------
Il doit contenir au maximum 16 caractares pour une cassette et 12 (8
pour le nom et eventuellement 4 pour le type sous la forme. XXX).
Le programme considare le nom, comme fourni lorsque vous avez atteint
ce maximum ou appuye sur ENTER. Ce nom est obligatoirement pour un
fichier sur disquette, mais facultatif pour un fichier sur cassette.
Si vous ne fournissez pas de nom, appuyez sur ENTER.
Le programme chargera alors le premier fichier trouve sur la cassette.
Si il s'agit d'une disquette, vous aurez le mesage "Bad command"
et le programme vous redemandera le nom du fichier.
Nom du fichier em sortie
------------------------
Il doit obeir aux memes regles que le nom du fichier en entree.
Appuyez sur ENTER directement si vous voulez reconduire le nom du
fichier d'entree sur le fichier de sortie. Toutefois, si vous n'avez pas
fourni de nom de fichier d'entree, le fichier sera ecrit sans nom sur la
cassette (Unnamed File), et sur disquette, vous aurez le message
d'erreur "Bad Ccommand" puis a nouveau la demande d'un autre fichier
en sortie.
Demande d'un autre fichier
--------------------------
Apras le traitement complet d'un fichier, le programme vous demandera:
AUTRE FICHIER (O/N)?
Si vous avez a traiter un autre fichier obeissant aux memes conditions
de support, tapez O. Sinon, tapez N. Le programme effectue alors un
RESET general (par RST 0).
R.P. Spiegel