WRITEDSK/DIRDOS 1.1
-------------------
Par Targhan/Arkos
Ces deux petits utilitaires -egalement disponibles en rom-, vous permettent de
tranferer un DSK copie sur un disc au format 720ko (formatte sur PC ou DOSCOPY
par exemple) vers un disc CPC.
Il s'agit du meme principe que DSKCPC de Divine Coding. Biensur, Writedsk est
plus puissant :)
Nouveautes de la V1.1 :
-----------------------
- Nouvelle interface graphique. Les curieux pourront ainsi voir comment sont
organises les secteurs nouvellement crees sur votre disquette.
- Un nouveau parametre facultatif permet d'ecrire directement sur la 2e face de
votre disquette, si vous etes l'heureux possesseur d'un 3"5.
- Buffer interne un peu plus gros, permettant le transfert des DSKs
conventionnels en 2 passes.
- Ctrl+Shift+Esc a tout moment pour quitter.
- Correction d'un bug pouvant empecher le DIRDOS de fonctionner.
- Correction d'un bug pouvant empecher la lisibilite de certains fichiers PC.
- Gestion du deformattage des pistes. A la fin du transfert, les pistes non
codees dans le DSK seront deformattees. De maniere generale, cela permet a
certaines protections de bien passer.
- Ecriture de secteurs de tailles differentes possible, dans une certaine
mesure. De nombreuses protections passent ainsi.
- Ecriture des secteurs effaces possible. Meme resultat.
Autres caracteristiques :
-------------------------
- Prends en compte les formats 'standards' CPC. Les secteurs de taille 0 a 5
sont parfaitement reconnus. Les formats de taille 6 seront rejetes.
- Les DSK Standard et Extended sont pris en compte.
- Idem pour les DSK double-face.
- Vous avez la possibilite d'utiliser le MEME lecteur pour le transfert ! Tres
utile pour ceux qui ne possedent qu'un seul 3'5 par exemple, et qui refusent
l'utilisation de 3' (comme moi :).
Ces programmes ressortiront assez bientot lorsque nous saurons programmer la
CPCBOOSTER+ d'Antitec. De nouvelles fonctions pour transferer les DSKs
directement sur une disquette a partir du PC, ainsi que de transferer des
SNApshots dans la memoire du CPC, seront disponibles. Un reve pour developper !
Il est possible que nous diffusions egalement des outils supplementaires pour
les programmeurs, nous verrons.
UTILISATION
-----------
ùWRITEDSK,"nomdudsk",["SourceDestination[Tete]"]
Transfert le DSK "nomdudsk" du lecteur Source vers le lecteur Destination. Si le
deuxieme parametre est omis, la source est par defaut B, la destination A. Le
nom du DSK est au format court (8+3 lettres) comme sous DOS. Il vous sera peut
etre necessaire d'utiliser le tilde (control+2) si vous avez sauve votre DSK sur
PC avec un long nom.
Notons que votre DSK doit obligatoirement etre a la racine de votre
disquette.
Nouvelle option depuis la V1.1, la "tete" permet d'ecrire directement sur la
2e face de votre disquette. Elle est cependant facultative. Fini le temps ou on
devait changer de face entre chaque passe ! La seule possibilite est d'y mettre
un 1, ce qui indique face 1. J'ai procede ainsi pour ne pas qu'accidentellement
vous effaciez la face 0 en pensant qu'il s'agissait de la 2 (Dans la
terminologie FDC, les faces sont appellees 0 et 1, et non 1 et 2).
Pour finir, je precise que la lecture du disc PC (FAT 12) ne peut marcher que si
vous etes sur la tete 0 !
A noter que l'option 'Tete' est ignoree si le DSK est double face, ce qui est
logique. De plus, cette option ne change en rien le parametre 'Side' inclus dans
les IDs secteurs.
Exemples d'utilisation :
ùWRITEDSK,"thedemo.dsk","AB"
ùWRITEDSK,"bigofull.dsk"
ùWRITEDSK,"dia.dsk","AA1"
-----------------
ùDIRDOS,["Source"]
DIRDOS vous permet de faire un CAT sur le disc DOS, et ainsi voir les fichiers
situes a la racine. Les repertoires sont egalement notes. Conformement a la
logique de WRITEDSK, il est impossible de visualiser autre chose que la racine.
Le lecteur Source est optionnel. Par defaut, c'est le lecteur B qui est utilise.
Encore une fois, n'oubliez pas de laisser la face 0 selectionnee de votre
lecteur.
Exemple d'utilisation :
ùDIRDOS,"a"
ùDIRDOS
L'INTERFACE
-----------
Rien de bien mechant a l'horizon, il y a juste plus de details techniques pour
epater la populace. Vous n'etes biensur pas obliger de comprendre quoi que ce
soit pour tranferer votre DSK correctement. Mais pour ceux que ca interesse, je
vais decrire brievement les colonnes du milieu. Elles correspondent aux IDs des
secteurs a ecrire pour la piste en cours. Toutes les infos de ces colonnes sont
notees en hexadecimal.
TR = Montre le numero de la TRack (piste) ecrites dans l'ID du secteur.
SD = Montre la SiDe (face) de l'ID du secteur.
ID = Tres important, le numero d'IDentification du secteur.
SZ = Tres important aussi, la taille du secteur. Notons qu'il s'agit de la
taille effective du secteur.
Notons qu'a part la Size, ces informations peuvent ressembler a tout et
n'importe quoi. Elles ne servent en verite qu'a identifier le secteur. Si vous
voulez vous y retrouver dans un format que vous avez cree, il est preferable de
faire ca proprement. Encore une fois, ecrire n'importe quoi est surtout le
hobby des protections.
Dans la colonne INFOS peuvent surgir deux petits acronymes obscurs :
ERA = Signifie que le secteur est 'ERAsed', soit 'efface'. En verite, cela
signifie juste que le secteur est marque d'une certaine maniere, et que pour le
lire, il faut utiliser une 'lecture de secteur efface'. Certaines protections
s'amusent comme elles peuvent.
CKS = Signifie 'Bad Checksum'. En gros, que le FDC va rapporter une erreur
lorsqu'il va le lire car il a l'impression que les donnes sont erronnes. Je
reparle de ce cas plus loin, mais la pratique m'a montre qu'on en a rien a
faire, de ce flag. D'ailleurs, je ne tente meme pas de le recreer.
Notons que le 'Size' sur le cote gauche de l'interface represente la taille de
secteur donnee a l'instruction de formattage. Mais il est tout a fait possible
que les secteurs ecrits soient plus petits.
Derniere remarque, pendant que la lecture du disc PC s'effectue, le niveau
d'occupation du buffer est inscrit en bas a droite. Ca permet de patienter un
peu, et de savoir quand la passe va se finir.
Voila, c'est tout pour l'interface.
A SAVOIR
--------
Bien que le format DSK soit complet, de nombreux emulateurs le gerent mal, dont
Winape. Ainsi, si vous formattez une piste en taille 3, le header de celle ci
indiquera taille 2 ! La taille exacte devra etre trouvee dans le header des
secteurs... Il en est de meme pour le GAP#3 qui garde souvent la valeur #4E.
L'emulation partielle du FDC permet aux demos et logiciels de tourner
correctement. Les outils de transfert existants (cpdwrite, cpctrans) connaissent
ces faiblesses et corrigent d'eux meme ces valeurs erronnees. WRITEDSK
egalement. En ce qui concerne le GAP, j'effectue des corrections en fonction du
nombre de secteurs et leur taille. Si vous etes curieux, vous pouvez retrouver
cette table de correction dans la notice de DISC+ULTRA. J'y ais tout de meme
apporte des modifications. Ainsi, la valeur minimale du GAP est fixee a #20, la
maximum a #4E. Toute piste normalement constituee devrait fonctionner. Si le GAP
est inferieur, alors la piste contient trop de secteurs pour sa propre securite
et je ne reponds plus de rien ! De meme un GAP de #80 est completement inutile.
Si votre lecteur en a besoin, c'est qu'il est grand temps d'en changer !
La V1.1 contient de nombreuses ameliorations, car j'ai beaucoup appris entre
temps (un grand merci a Ram7 qui m'a permis de mieux cerner la logique du FDC !)
Ainsi, contrairement a ce que je pensais, il est tout a fait possible de creer
une piste avec des secteurs de tailles differentes. Les routines ici presentes
sont basiques mais permettront a de nombreuses protections de passer.
Ainsi, lorsque je rencontre des secteurs de tailles differentes, je choisis le
plus grand, a condition qu'il ne soit pas marque 'bad checksum'.
A ce sujet, j'avoue que je ne sais pas trop quoi penser de ce flag. La seule
maniere que je vois de le recreer sur CPC serait vraiment crade. En fait je me
demande si ce ne sont pas les logiciels de transfert CPC -> DSK qui le placent
eux meme, par erreur peut etre, lorsqu'ils rencontrent un secteur de taille
differente ? Bref, je n'ai pour l'instant pas rencontre de DSK qui sont genes
par l'absence de ce flag lorsque j'ecris les secteurs...
Le seul DSK que j'ai rencontre qui ne passe pas est la 5KB Demo 3, car elle
possede des secteurs qui possedent tous le meme nom. Le FDC peut donc
potentiellement ecrire sur n'importe lequel en fonction de ce qui se trouve en
dessous de la tete de lecture. The Demo, qui utilise la meme technique, passe
pourtant correctement. Bizarre. Je ferais peut etre une update quand je
connaitrais une technique qui gere ce genre ce cas de maniere fiable.
A ce sujet, il est tout a fait possible que des versions de WriteDSK sortent
pour prendre en compte des formats speciaux, comme ceux sur lesquels je
travaille.
Mais nous verrons ca plus tard...
Si vous avez un DSK qui ne fonctionne pas, n'hesitez pas a me l'envoyer, sous
reserve qu'il est en bon etat !
----------------
Contactez moi ici :
targhanàcpcscene.com
targhanànetcourrier.com
www.arkos.cpcscene.com
www.julien-nevo.com/arkos
www.starkos.cpcscene.com
www.julien-nevo.com/starkos
A+,
Targhan/Arkos.
NOTICE TEXTE n° 2 (6.96 Ko)
WRITEDSK/DIRDOS 1.1
-------------------
By Targhan/Arkos
These two little tools -also available in rom- will allow you to transfer a DSK
from a 720ko disc (formatted on PC or DOSCOPY for example) to a CPC disc. It
works like DSKCPC from Divine Coding. Of course, Writedsk is much more
powerful :) :
New features for V1.1 :
-----------------------
- New interface. You are now able to see how the sectors are organized on the
tracks.
- A new optional parameter allows you to write directly on the second side of
your disc, if the destination drive is a 3"5.
- Bigger internal buffer, most conventionnal DSKs are transfered in 2 passes.
- Ctrl+Shift+Esc to exit anytime.
- Correction of a bug that could prevent DIRDOS from working properly.
- Correction of a bug that could prevent some PC files from being read.
- Managment of tracks unformatting. At the end of the transfert, tracks that are
not coded in the DSK with be unformatted. In a general way, it allows protected
DSKs to work fine.
- Writting of different sized sectors allowed, with limitations. A lot of
protected DSKs can be transfered.
- Writting of erased sectors allowed. Same result.
Other features :
----------------
- It recognizes all standard CPC format, from size 0 to 5. Size 6 sectors aren't
recognized.
- Standard and Extended DSKs are recognized.
- Double sided DSKs too.
- You can use ONE drive only for the transfert ! Very useful for those, like me,
who have only one 3'5 drive and don't want to use 3'.
Both tools will be released once again soon when the Antitec's CPCBOOSTER+ is
released. New functions will allow tranfering DSKs directly on a CPC disc, as
well as SNApshots into the CPC memory. A developer's dream ! We may also release
some cool tools for coders in the same rom.
HOW TO USE IT
-------------
ùWRITEDSK,"dskname",["SourceDestination[Head]"]
Transfert the DSK named "dskname" from Source drive to Destination drive. If the
second parameter is omitted, the Source is B and the destination A. The DSK
name is short (8+3 letters), DOS-like. You may have to use tilde (control+2) if
you've saved your DSK on PC with a long name.
Know that your DSK must always be on the root of your disc.
New option since V1.1, the "head" allows to write directly on the second side of
your disc. It is optional though. Having to switch side between two passes now
belongs to the past ! The only possibility is "1" though, with indicates side 1.
I did this for you not to incidentally erase the side 0, thinking it was the
second one (In the FDC language, sides are noted 0 and 1, not 1 and 2).
Note that the 'head' option is ignored if the DSK is double sided, with is
logical. What's more, this option doesn't change the 'side' included to the
sector IDs.
I should also say that you can ONLY read the PC disc (FAT 12) if the selected
head of your source drive is 0 (else head 0 is no more accessible, as head 1 is
forced. FAT 12 is double sided !).
Examples :
ùWRITEDSK,"thedemo.dsk","AB"
ùWRITEDSK,"bigofull.dsk"
ùWRITEDSK,"dia.dsk","AA1"
-----------------
ùDIRDOS,["Source"]
DIRDOS performs a CAT on the DOS disc, to see the files on the root. Directories
are also noted, but can't be explored. The Source drive declaration is optional.
By default, the B drive is used.
Once again, don't forget to select the side 0 of your drive.
Example :
ùDIRDOS,"a"
ùDIRDOS
THE INTERFACE
-------------
Nothing crazy. You don't have to understand anything to transfert your DSKs. Let
me describe what the columns mean. They all refer to the sectors of the current
track to be written.
TR = Number of TRack written in the sector ID.
SD = Shows the SiDe in the sector ID.
ID = Very important, IDentification number of the sector.
SZ = Very important too, the sector SiZe. It is the actual size of the sector.
Note that, except the SiZe, all this information can be junk, it's only used to
identify a sector. Some protections will have fun at using strange values.
In the INFOS columns can come two acronyms :
ERA = Means ERAsed. It's just a mark set to the sector, it doesn't mean the
sector is actually erased. To read it you must use the 'read erased sector FDC
instruction.
CKS = Means Bad CheckSum. To sum up, the FDC will report an error after reading
the sector, believing an error has been made while reading. I'll talk about it
later, but in a practical case it's completely useless, in fact I simply don't
do anything with this flag.
The 'Size' at the left of the screen represents the sector size given to the
Format instruction. So all sectors of the track can be this size, or less.
Last remark, note the increasing value at the bottom right when reading the PC
disc : it represents the buffer filling. Just to know how long you still have to
wait...
That's all about the interface.
ACKNOWLEDGMENT
--------------
Although the DSK format is well featured, a lot of emulators don't update it
well, like Winape. If you format a track with size 3 sectors, the track header
will read size 2 ! The good size has to be found in the sector headers... The
GAP#3 suffers the same way. Approximated FDC emulation allows demos and software
to run well, but corrections need to be made if you transfert them on CPC.
Existing tools like CPDWRITE and CPCTRANS perform these corrections. WRITEDSK
too. About the GAP, I used the correction table you will find in the DISC+ULTRA
notice. However, I made a lot of changes. Thus, the minimum value is set to #20,
the maximum to #4E. Every well built track will work. If the GAP must be lower
than #20, then the track contains too much sectors for its own good, and it's
not my business ! Bigger than #80 GAP is useless too. If your drive needs it
then you MUST change it quick !
The V1.1 contains a lot of improvments, as I learnt a lot lately (Thanks Ram7 !)
Thus, contrary to what I thought, it is possible to have different sized
sectors. The routines I used here are basic, but allow many protections to be
transfered.
About the 'bad checksum' flag, the only way I see to create it is really
hardcore. In fact I believe it is set by transfer tools that don't like
different sized sectors. Anyway, for now I never found a DSK that tested such
flag, so...
So far the only DSK that doesn't work with Writedsk 1.1 is the 5KB Demo 3,
because it contains tracks whose sectors are all named the same. 'The Demo' uses
the same technic but work fine though... I may try to find a technic to manage
that correctly.
About this topic, it is possible that I update WriteDSK to manage special
formats like the ones I'm working on...
Just wait and see !
If you have a DSK that doesn't work with WriteDSK, don't hesitate to send it to
me, just make sure it works fine on emulators !
----------------
Contact me here :
targhanàcpcscene.com
targhanànetcourrier.com
www.arkos.cpcscene.com
www.julien-nevo.com/arkos
www.starkos.cpcscene.com
www.julien-nevo.com/starkos
See you soon,
Targhan/Arkos.