Cours de déplombage 17.2



Ecran


Disk : Gdf17_2.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 A A$0000 (000000) L$0C94 (003220) 014 HELLO
 B A$0800 (002048) L$14FB (005371) 022 ADVANCED DEMUFFIN 1.1
 B A$0800 (002048) L$17FF (006143) 026 DISK MUNCHER ULTIMA
 B A$2700 (009984) L$08FF (002303) 011 RWTS.ULTIMA5
 T A$0000 (000000) L$6600 (026112) 102 T.COURS 17 ULTIMA 5
 T A$0000 (000000) L$2801 (010241) 040 T.DOC LOCKSMITH 6.0
 T A$0000 (000000) L$0700 (001792) 007 T.INTRODUCTION

This catalog contains 7 files. 0 were DELETED.
----------------------------------------------------------------------


Floppy
DOS 3.3
Download Cours GDF 17.2 rev 1.00 (gzipped)


Sommaire


Lien Article
Voir Introduction.
Voir Cours 17 rev 1.00 Ultima V.
Voir Doc de Locksmith 6.0.

hr cours GDF

Introduction.


===============================================================================
INTRODUCTION COURS 17.2                                           REVISION 1.00
===============================================================================

Salut et salut,

        Quand on dit Origin Systems, on pense aussitot à la série des Ultima,
        maintenant au nombre de 5, mais encore à la série naissante d'Autoduel
        (en effet 2400AD attend une suite!)... De très bons produits, mais
        aussi de très bonnes protections, qui se regroupent au nombre de trois,
        en deux cours :

        Cours 17   : Tout sur les protections Origin Systems 1985-1987.
        (avec comme originaux : Autoduel et 2400AD, 2 ex. de ces 2 plombages)

        Cours 17.2 : La protection d'Ultima 5 , la dernière protection de O.S.
        (avec comme original  : Ultima 5 - Warriors of Destiny)

        Trois protections, trois originaux ou plus, deux cours..
        Tout origin systems!.. pour le passé et pour l'avenir..

        En effet, Origin Systems vient d'annoncer une suite pour 2400AD, ainsi
        qu'un programme de Basketball (jeu de stratégie) : Homecourt, et un jeu
        de role galactique : Space Rogue. donc, encore des softs à venir,
        et à déplomber vous meme!...dés leur arrivée!

        Vous voici maintenant au cours 17.2...

        Alors une question se pose : On va tous les bouffer ?

======================================================== Amicalement, Godfather


Retour sommaire

hr cours GDF

Cours 17 rev 1.00 Ultima V.


.PS^
===============================================================================
COURS 17.2 : Les protections ORIGIN SYSTEMS en notre belle année 88 / Godfather
===============================================================================
Révision 1.00                                                 Update : 16/04/88



Salut et salut,

        Depuis quelques années, Origin systems et Lord British nous abreuvent
        sur Apple de leurs chefs-d'oeuvres logiciels.. Quand on parle d'OSI
        (stands for Origin Systems) dans le milieu de la micro, on pense tout
        de suite à la vaste série des Ultima qui furent meme traduits pour
        certains par des éditeurs français, aux Autoduel, à Moebius, etc..
        Tous ses softs, du point du vue du déplombage, se disputaient deux
        protections.. protections décortiquées dans le premier cours 17 qui
        permettait ainsi à tout le monde de déplomber tous les softs osi_Apple
        sauf.. sauf, et ce malgré mon pari à ce sujet :

                         ULTIMA 5 - THE WARRIORS OF DESTINY

        J'ai gagné quand à la prévision de la protection de 2400AD, mais perdu
        quand à ULTIMA 5.. on ne peut pas gagner à tous les coups, ma foi !..
        enfin, je me rattrape ici avec ce cours qui tente de décortiquer de
        A à Z cette fameuse troisieme protection osi_Apple, utilisée pour U5,
        mais qui le sera surement encore sur les softs à venir !

        Softs à venir de chez Origin systems, ils sont au nombre de trois
        mais je vous en parlerai plus loin.

===============================================================================

        Le cours que vous allez suivre se découpera de la façon suivante :

1. Découverte et étude de la protection au nibble editor Nibbles Away II
2. Analyse du disk : savoir manipuler le disk editor du  Locksmith 6.0
3. Demuffin, comment-faire ?
4. Faire booter le disk converti au format 3.3
5. Copie des originaux plombés ainsi, il faut un copieur adapté
6. Plombage : comment plomber vos disks ( ProDOS ) avec cette protection
7. Un mot sur la doc du locksmith 6.0

===============================================================================
1. DECOUVERTE ET ETUDE DE LA PROTECTION                                15/04/88
===============================================================================

La première chose que l'on fasse quand on est en face d'un nouvel original est
toujours de booter un locksmith rapide pour "tester" la protection, pour juger
de quelle type elle est (type format ou pas! ce qui est un début indispensable)

A vrai dire, parfois, quand certaines personnes m'apportent un original à
déplomber que je n'ai jamais vu, elle s'étonnent de ne pas me voir en premier
le booter..mais d'y preferer le boot d'un locksmith rapide !...
c'est simple.. on a tellement hate de le cracker qu'on veut tout de suite en
savoir plus, peut importe la beauté du soft!.. bien que le booter pourrait
nous apporter enormement d'élements supplémentaires sur le plombage, à savoir
par exemple quel systeme dos est employé (3.3, ProDOS, Boot3.3, Fastboot,
ou autre spiralling..ce qui vous permettra parfois de me croiser l'oreille
collée à mon drive pour écouter le bruit du boot..mais ceci est une autre
histoire!).. je referme ce paragraphe.

Première chose donc, booter un locksmith 6.0 rapide (fdb) pour essayer de
copier l'original, qui, ma foi, refuse d'etre bien lu par ce copieur!
La (première) protection à analyser est donc un protection format.. ce qui
ne nous étonne guère, chers amis, après les deux précédentes protections
format vues dans le précédent cours 17 osi...n'est ce pas ?

On essaye de copier les autres faces du jeu qui se lisent impec..
on peut penser (et ca se vérifiera bien par la suite) que la première face est
la seule face plombée. on ne s'occupera donc que de cette face à moi que ce
crack ne nous mene sur une autre face.. en attendant, on considèrera les autres
disks comme nom plombés. (une seule face suffit, vous diront certains
editeurs!)

On essayera de booter ensuite par exemple un Disk Muncher 8.00 qui est censé
copier plus de formats que ne peut en copier le locksmith rapide, à savoir
les formats patched par modification de fin de champs et autres simples modifs
(referez vous au cours 6). On remarquera ici un phénomère bizarre c'est que
tout le disk original se lit bien, mais la réécriture des pistes n'est bonne
que pour les piste $00-02.. après, ca délire!.. pourquoi ? c'est ce que nous
allons voir messieurs, dames !

Bien.. protection format et boot simple en ProDOS.. c'est donc un
ProDOS modifié.. nous allons vite etre fixés en bootant (2eme programme à
toujours avoir sous la main!) un Nibble Editor..
A ce niveau là, vous avez le choix entre celui du locksmith (option "D" pour
Disk Editor) mais je lui préfère et préfèrerais toujours le Nibbles Away II
version C3 Nibble Editor (qui est dans le ENFOIRES COPY DISK, comme tous les
bons softs d'aide à la déplombe).

Vous etes sous nibbles away, donc. faites "T" pour Track/Bit Editor, puis
Ctrl-R pour Read (en partant de la piste $3 comme toujours pour les protections
format car, comme on l'a déjà vu dans de précédents cours, souvent un boot/dos
occupe les piste $0-2 et - contenant la read-routine - n'est pas du meme format
disk que le programme lui meme...). Vous voici devant des nibbles lus de la
piste $3.. Si vous avez une imprimante, le mieux est de les sortir sur papier
pour mieux les étudier, en tapant Ctrl-P pour Print.

J'ai obtenu ceci (exemple, tout peux varier dans le fond selon le secteur lu,
soit l'emplacement où se trouvait sur la piste lue la pioche avant la lecture,
si vous voyez ce que je veux dire..) :

                    ----------------------------------------
                    2200-FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
                    2210-FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
                    2220-FFFFFFFF D5AA96AA ABABABAA BBABBBAB
                    2230-FFF9BA93 FFFFFFFF FFFFD5AA ADE6FEF4
                    2240-CFB5CFF4 9BCDACEE CFB9FFF6 E5F3E9F2
                    ----------------------------------------

Je décortique ca, pour ceux qui n'ont pas encore lu le cours 6 (un conseil,
dés la fin de ce cours-ci, sautez dessus car il est reelement indispensable!)
sur les formats disks modifiés!

D'abord, un grand nombre de FF. Ceci caractérise le début du premier secteur
de la piste concernée (ici la piste $03 du disk Ultima 5 original). c'est ce
qu'on appelle des nibbles de synchro. Ca permet - en gros - à la pioche de
se fixer sur le début réel du premier secteur de la piste, comme point de
repère pour atteindre ensuite tous les secteurs de la piste concernée au choix.

Ensuite, les premiers paramètres du format : D5AA96
Ce sont les headers de début de champ adresse, qui sont normaux..
la modification format n'a donc pas été faite à ce premier niveau. on continue.

                             Le numéro du Volume
                         ---------------------------
                               ( format 3.3 )

Ensuite, le numéro de volume du disk original sur cette piste (en 4&4) : AA AB
Je vous décortique ça vite fait pour qu'on puisse retrouver ce fameux numéro de
volume.. le principe de décodage est le suivant, en décomposant le numéro de
volume ainsi (en 8 bits numérotés de 7 à 0) :

        Data byte - D7 D6 D5 D4 D3 D2 D1 D0
               xx -  1 D7  1 D5  1 D3  1 D1
               yy -  1 D6  1 D4  1 D2  1 D0

Je m'explique.. le champ adresse se constitue de D5AA96 puis du numéro de
volume sous la forme xx yy codée si dessus.. on a ici AA AB, on décompose
ces nombres, ce qui nous donne :

        xx = $AA = %10101010
        yy = $AB = %10101011
        --------------------
        volume   = %00000001

Ce qui nous donne si on extrait les D0-D7, le nombre en binaire suivant :

   volume = $01

Le volume est de 1.. c'est un paramètre modifié - sauf si l'on concoit que
le soft vérifie ce volume pour un protection - on en a rien à faire.
A noter, ultima 5 fait plusieurs faces. et il se pourrait - comme dans
l'ancestral Alternate Reality (The City) de Datasoft - que les faces soient
numérotées par le numéro de volume. en effet, nous sommes bien sur la face 1.
On devra repasser sur ce point à la fin du crack (y a-t-il bien reconnaissance
des diverses faces du jeu par le soft, n'y a t'il pas de vérifs du volume..?),
mais aussi quand on parlera de faire des copies intactes de ces originaux.

                            Le numéro de la Piste
                        -----------------------------
                               ( format 3.3 )

Ensuite suit le numéro de la piste... qui se décode de la meme façon,
mais pour vous donner la possibilité d'éviter ces calculs bizarres, voici une
table pour trouver les numéros habituels track/sector :

        NIBBLES   VALEUR         NIBBLES   VALEUR         NIBBLES   VALEUR
       --------- --------       --------- --------       --------- --------
         AA AA      00            AE AE      0C            AE BA      18
         AA AB      01            AE AF      0D            AE BB      19
         AB AA      02            AF AE      0E            AF BA      1A
         AB AB      03            AF AF      0F            AF BB      1B
         AA AE      04            AA BA      10            AE BE      1C
         AA AF      05            AA BB      11            AE BF      1D
         AB AE      06            AB BA      12            AF BE      1E
         AB AF      07            AB BB      13            AF BF      1F
         AE AA      08            AA BE      14            BA AA      20
         AE AB      09            AA BF      15            BA AB      21
         AF AA      0A            AB BE      16            BB AA      22
         AF AB      0B            AB BF      17            BB AB      23

Après le numéro de volume, vient le numéro de piste. on trouve : AB AB
ce qui correspond bien (regardez la table ci-dessus ou bien décodez les
nibbles 4&4 vous memes comme je viens de le faire pour le numéro de volume)
à la piste que nous venons de lire, soit la piste $3. Essayez d'aller lire
une autre piste (un nibble editor peut aussi servir pour verifier l'eventuelle
présence d'une piste $23 au format quelconque du moment que basé sur ce type
de format originel (3.3)) et de verifier que le numéro trouvé ds la table
correspond bien au numéro de la piste lue, et vous vous apercevrez vite que
les numéros de pistes sont normaux également.. on passe à la suite.. le
numéro de secteur.

                            Le numéro du Secteur
                        ----------------------------
                              ( format 3.3 )

Ah! le numéro du secteur!
En fait, c'est là que réside toute la protection !
Le premier numéro de secteur que j'avais trouvé était censé etre celui
du premier secteur étant donné la présence juste avant du timing gap, ce
bloc de dizaines de nibbles de synchro $FF qui en général est juste avant
le premier secteur de chaque piste.. le numéro de secteur trouvé donc
après le D5AA96 xx yy xx yy (volume, piste,..) était AA BB soit (d'après ma
table) $11 au lieu de $00. si on continue (fleche "->" pour passer à la
page suivante de nibbles sous nibbles away II), on voit ensuite l'équivalent
de $12, $13, etc.. mais jamais de $00 à $10.. puis ainsi jusqu'à l'équivalent
de $20 pour le plus grand numéro de secteur de chaque piste, normalement $0F.
On conclut vite : le plombeur a rajouté $11 à chaque numéro de secteur pour
le plombage de la face de boot d'ultima 5.

         ILS ONT RAJOUTE $11 AU NUMERO DES SECTEURS DE CHAQUE PISTE !!!

(les numéros des secteurs étant comme toujours codés en 4&4 dans le chp adress)

Question format, le disk est également en dos patched (pas de DE AA EB en fin
de champ adresse uniquement) comme nous l'indique le nibble away II (cours 6).

===============================================================================
2. SAVOIR MANIPULER LE DISK EDITOR DU LOCKSMITH 6.0
===============================================================================

Si je n'utilise jamais ce nibble editor pour lui préférer nibbles away II, ce
n'est pas que je le trouve nul, bien au contraire.. et meme, si je peux vous
donner un conseil, essayez de bien vous faire à celui-ci, seulement, vous savez
ce que c'est, quand on prend de l'age, on a du mal à changer ses vieilles
habitudes!.. et c'est exactement le cas par rapport aux nibbles editor!
Le pire étant que je me rende parfaitement compte que je ne suis plus dans le
coup.. m'enfin ?

J'ai fait un effort, et voici une analyse des originaux ultima quasi
automatique!.. je me lance..

Bootez un locksmith pleine face 6.0, et au menu général, tapez "N" pour
"Nibble / Disk Editor". Ensuite, introduisez ds le drive votre face A (plombée)
d'ultima 5, et tapez Ctrl-R pour "Read Track / Lecture Piste" et entrez le
numéro de la première piste à lire.. comme on l'a dit : $03 (ou autre $03-22).
Les zones en inverse (comme dans nibbles away II après avoir fait la meme
commande Ctrl-R, ma foi) sont les champs adresse.. le reste ce sont soit
le contenu de ce champ adresse, soit le champ données. (data field).

A ce point là, tapez "D" - commande oh! combien magique et utile du locksmith
pour le déplombeur - et vous obtenez quelque chose comme ca (piste$3) :
                 ________________________________________
                !                                        !
                !              DISK EDITOR               !
                !                                        !
                ! 20BD V01 03/18 ?      2244 V01 03/19 ? !
                ! 23CA V01 03/1A ?      2550 V01 03/1B ? !
                ! 26D7 V01 03/1C ?      285C V01 03/1D ? !
                ! 29E2 V01 03/1E ?      2B67 V01 03/1F ? !
                ! 2CEE V01 03/20 ?      2EDB V01 03/11 ? !
                ! 3067 V01 03/12 ?      31EE V01 03/13 ? !
                ! 3374 V01 03/14 ?      34FC V01 03/15 ? !
                ! 3683 V01 03/16 ?      380B V01 03/17 ? !
                ! 3991 V01 03/18 ?      3B18 V01 03/19 ? !
                ! 3C9F V01 03/1A ?      3E25 V01 03/1B ? !
                ! 3FAC V01 03/1C ?      4131 V01 03/1D ? !
                ! 42B7 V01 03/1E ?      443C V01 03/1F ? !
                ! 45C3 V01 03/20 ?      47B0 V01 03/11 ? !
                ! 493C V01 03/12 ?      4AC3 V01 03/13 ? !
                ! 4C49 V01 03/14 ?      4DD1 V01 03/15 ? !
                ! 4F58 V01 03/16 ?      50E0 V01 03/17 ? !
                !________________________________________!

Ca veut dire quoi ?..
Pour que vous compreniez bien en détail cette fonction du locksmith, qui est
la fonction de décodage du champ adresse des disks en format 16 secteurs,
vous pouvez vous referer à la documention du locksmith 6.0 que j'ai faite
completement traduire en français pour vos beaux yeux, et qui se trouve en
catalog sur ce disk (et dans le menu fichiers de ce cours).

Pour pas que j'ai à plagier la doc originale, en voici le passage utile :
  _____________________________
 !
 !   Avec N vous passez en mode Editeur de Disque (en fait c'est un Nibble
 !   Editor).
 !
 !   Le curseur se déplace avec les touches I,J,K,M ou avec les flèches sur
 !   les  //e et //c. Les touches '<' et '>' font avancer/reculer d'une
 !   page en mémoire. Les touches ',' et '.' permettent de se déplacer dans
 !   le buffer.
 !
 !   'D'    est la commande de décodage de l'adresse en 16 secteurs. Les 4
 !          premiers nombres sont l'adresse du buffer suivi de la lettre V
 !          et du n° de volume en hexa, un nombre à deux chiffres avec (/)
 !          puis encore une nombre à deux chiffres pour la piste/secteur. A
 !          la suite, on trouve '?', 'CS', ou '**'.  Le '?' signifie que le
 !          checksum ou le prologue est incorrect. 'CS' signifie que le
 !          checksum du champ de données est incorrect et '**' signifie que
 !          les données sont incorrectes ou qu'on est en 13 secteurs.

Comprendo ?.. l'analyse que nous venons de faire faire automatiquement au 6.0
nous confirme donc sur plusieurs points :

        - le volume du disk original face A est bien V=$01
        - le checksum ou/et le prologue peut etre incorrect

De plus, en étudiant les numéros de secteurs donnés ici, on remarque tout de
suite qu'ils se situent tous entre $11 et $20, au lieu de $00 et $0F.. mais
l'écart est le meme entre ces deux couples de valeurs : on voit donc bien que

        - pour obtenir les numéros de secteurs en format normal, il faut
          enlever $11 à leur valeur.

===============================================================================
3. DEMUFFIN, COMMENT FAIRE ?
===============================================================================

On n'a plus besoin de lire les DE AA EB, on est en dos patched, on doit
rajouter $11 avant la lecture de chaque secteur du disk dés la piste $03
et uniquement dés la piste $03.. on va donc patcher un dos 3.3 (le boot de
l'original est un ProDOS.. vous avez déjà essayé de boot-tracer du ProDOS ?
C'est bien balaise, ma foi !)

On boote donc un dos 3.3, on tape CALL-151 puis $B98BL. On tombe sur ceci :

B98B-   BD 8C C0        LDA $C08C,X
        10 FB           BPL *-3
        C9 DE           CMP #$DE
        D0 AE           BNE $B942
        EA              NOP
        BD 8C C0        LDA $C08C,X
        10 FB           BPL *-3
        C9 AA           CMP #$AA
        D0 A4           BNE $B942
        18              CLC
        60              RTS

C'est la routine de lecture du dos 3.3 des headers de fin de champ adresse.
On en a plus besoin comme on vient de le voir, on va donc remplacer cette
routine par une routine qui rajoute $11 au numéro du secteur à écrire (c'est
pile à ce moment là qu'on doit le changer par exemple pour que ca marche).

Mettez ici ceci (sachant que le numéro du secteur est gardé en $2D) :

B98B-   A5 2D           LDA $2D
        38              SEC
        E9 11           DEC $11
        18              CLC
        85 2D           STA $2D
        EA              NOP
        EA              NOP...jusqu'en $B99D
        18              CLC
        60              RTS

Pour convertir le disk original, il suffit de charger juste avant de faire
ces modifications, un ADVANCED DEMUFFIN 1.1 en $800, puis de le lancer après.
Tapez 800G, commencez le démuffin dés la piste $03, et ca marche ! ça lit impec
Pour convertir les premières pistes, faites un bete B942:18 du cours 1,
et ca marchera. (conversion des piste $00,01,02 only).

Vous avez ainsi une copie 3.3 du disk Ultima 5 original. mais boote-t-elle ?

Pour les fainéants de la frappe hexa, sachez que le fichier RWTS.MODULE
d'ultima 5 est sur ce disk de cours. il vous suffit de le charger en page $B7
à partir du menu d'Advanced Demuffin 1.1. et de l'utiliser comme si vous
veniez de faire les dites modifications au dos.

*** Il faut convertir les pistes $00-02 en patched
*** Il faut convertir les pistes $03-22 avec ces modifications dans le dos

===============================================================================
4. FAIRE BOOTER LE DISK CONVERTI AU FORMAT 3.3
===============================================================================

Une fois que vous aurez obtenu la version demuffin de votre original, ce qui se
fait en cinq minutes ma foi, vous allez tout de suite essayer de la booter.. et
elle bootera impec! Pourtant, si l'on s'interroge.. on a d'un coté l'original
avec des numéros de secteurs que lit la rwts prodos du boot de l'original,
et qui ont $11 de plus que la normale... et de l'autre coté, on a la copie
demuffin, qui a des numéros de secteurs "normaux".. et si les deux bootent,
c'est que la meme routine de lecture sait reconnaitre quel format il y a ?
ok.. mais pourquoi ?..

Je me suis longuement posé la question.. une rwts peut lire un format modifié
quand elle connait ce format, mais alors pourquoi la meme rwts a-t-elle été
prévue pour lire deux formats : le format original, et pour ainsi dire,
le format "déplombé" ?.. le format normal 3.3 ?..

Je me suis longuement posé la question.. et la réponse est venue.
Les plombeurs avaient décidé de ne protéger que la face de boot, la face A,
avec une protection format. A ce niveau, il fallait tout de meme que la
routine de lecture lise les data disk (autres faces au format normal)..
et c'est pour cette raison que nous n'avons aucune modification à apporter
au boot de notre version demuffin d'ultima 5 : la rwts est bi-format!

Pour ceux qui se demandent pleins de choses à propos du "comment" de la chose,
la réponse va venir dans une rubrique suivante de ce cours : "quelques mots à
propos du plombage".

===============================================================================
5. COPIE DES ORIGINAUX PLOMBES AVEC CETTE PROTECTION
===============================================================================

Le disk est au départ en format patched..et il me fallait essayer de faire au
plus vite pour ce cours un copieur d'originaux avec ce plombage. je n'allais
donc pas tout reprendre à zero, mais plutot essayer de reprendre un copieur du
marché, et l'adapter..ce qui serait plus rapide certainement que mon programme
fait à la va-vite, et également plus facile.

Je me suis donc mis en catalog un disk muncher 8.00, pour aller l'étudier de
plus pret. Comme je le disait au début de ce cours, ce copieur copie bien les
3 premières pistes, lit bien les autres, mais les ré-écrit mal.. à cause des
numéros de secteurs trop élevé.. il fallait modifier ce test de numéro de
secteur pour qu'il accepte ces "grands" numéros.

A l'aide d'un copy II+ 5.x, j'ai donc recherché dans ce fichier un CMP #$10
à savoir que c'est le premier numéro de secteur invalide.. le dernier valide
étant bien sur $0F. et j'ai modifié cette valeur de $10 en $21 ($10+11 pour
plus de sécurité, je crois meme avoir mis $10+12).. et ca marche, la copie se
fait impec, seulement elle ne boote pas suite à un test à la lecture venant
surement du numéro de volume ou autre petit probleme..

A ce jour je n'ai pas encore eu le temps de régler ca, d'où la "mauvaise" copie
d'original que je vous ai donné avec ce cours, mais ce probleme sera réglé au
plus vite, si Dieu m'offre le temps de m'en occuper bientot.

===============================================================================
6. PLOMBAGE (quelques mots)
===============================================================================

Sur la copie demuffin d'ultima 5 (ProDOS) on trouve en piste $01 04 81, une
routine de lecture de nibbles DE AB (au lieu de normalement DE AA EB si je
ne m'abuse) puis en $93 la routine suivante :

        LDA $5D
        SBC #$11
        STA $5D
        CLC
        RTS

===============================================================================
7. UN MOT SUR LA DOC DU LOCKSMITH 6.0
===============================================================================

Je vous ai copié sur ce disk la doc traduite du locksmith 6.0 (qui ne fait pas
comme l'indique automatiquement le catalog 040 secteurs mais 256+40 soit 296
secteurs de texte!..hum!) et comme je m'en doute, vous n'allez pas pouvoir
l'ingurgiter entière en une fois.. néanmoins, en la relisant, j'ai relevé ce
passage interessant.. alors je l'ai coupé et je le recolle ici,pour vous servir
  _____________________________
 !
 !   FORMAT DES PISTES (13 et 16 secteurs):
 !
 !        Sur Apple II, il y a plusieurs systèmes de formatages. Par
 !   exemple, on peut utiliser 13 secteurs par piste ou, sur les modèles
 !   récents utilisant des algotrithmes perfectionnés, on peut avoir 16
 !   secteurs par piste.
 !
 !        Ces deux formats sont fondamentalements identiques, seule la
 !   manière de coder les informations est différente. De plus les
 !   Prologues adresse diffèrent de manière à identifier le système
 !   utilisé. Puisque le format 13 secteurs est tombé en désuétude, nous
 !   perlerons du format 16 secteurs et ensuite nous pointerons les
 !   différences entre les deux sytèmes.
 !
 !        Une piste est formée de secteurs (16 ou 13): chaque secteur
 !   contient un champ adresse et un champ données. Le champ adresse
 !   contient des informations sur le champ données qui le suit. Le schamps
 !   sont séparés par des 'vides' remplis d'octets de synchro. Ces octets
 !   sont des nibbles spéciaux qui obligent la carte controleur à se
 !   synchroniser, rendant possible la lecture du champ suivant.
 !
 !        Les champs adresse et données contiennent chacun un Prologue, des
 !   informations et un Epilogue. Les Prologues du champ adresse sont D5 AA
 !   96 (ou D5 AA B5 en 13 secteurs), suivis de 4 informations codées en
 !   double nibbles. Deux nibbles consécutifs indiquent le n° de volume, le
 !   n° de piste, le n° de secteur et le checksum. Ce checksum est un OU
 !   exclusif des trois autres données. Vous trouverez une table dans ce
 !   manuel pour convertir ces doubles nibbles en les valeurs qu'ils
 !   représentent. Ensuite vient l'Epilogue du champ adresse: DE AA.
 !
 !        Après les octets de synchro, on trouve le champ de données: il y
 !   a un prologue (D5 AA AD), suivi de 342 nibbles (ou 410, en format 13
 !   secteurs). Ces nibbles sont codés suivant une table 6 bits (voir la
 !   table "Data Field Nibble Encoding"). En 13 secteurs on utilise une
 !   table 5-bits. après les données il y a un octet de checksum puis
 !   l'épilogue DE AA.
 !
 !        Certaines protections sont basées sur des modifications des
 !   Prologues et Epilogues.

                                                         Amicalement, Godfather
===============================================================================


Retour sommaire

hr cours GDF

Doc de Locksmith 6.0.









             Cette DOC du 6.0 vous est offerte gracieusement par :


                             le célèbre B.CAPSLOCK


                                 LOCKSMITH 6.0

                        (C) ALPHA LOGIC BUSINESS SYSTEMS
                  4119 NORTH UNION ROAD, WOODSTOCK, ILL 60098

     Matériel nécessaire:

          Apple II, Apple II+, Apple //e, Apple //c, ou compatible. Il faut
     au moins 48K de mémoire. On peut utiliser ce logiciel avec 1 ou 2
     lecteurs de disquettes.

     Matériel supplémentaire en option:

          Cartes RAM de 16K, 32K, 64K, 128K, 256K ou toute autre carte d
     emémoire RAM additionnelle. Une imprimante est conseillée, mais non
     nécessaire.

     LES TOUCHES DE COMMANDES:

     Les commandes suivantes peuvent ètre tapées à tout moment:

     CTRL-Z - l'écran texte est imprimé sur l'imprimante connectée en
              slot1. On peut changer ce slot par le paramètre PRT.SLOT.

        ESC - annule l'opération en cours et vous ramène au menu précédent.

      RESET - reboote la disquette

     Note: Laissez la disquette LOCKSMITH dans le drive 1 jusqu'à ce que le
     programme vous avertisse que vous pouvez l'oter. Cependant, vous
     devrez la remettre à chaque changement d'opération (à partir du menu
     principal).

     Les 7 premières lignes affichent l'opération en cours. Les pistes sont
     numérotées de 0-23 (hex) soit 0-36 (decimal). On peut également
     utiliser les 1/4 et 1/2 pistes.

     MENU PRINCIPAL:

     Lors du boot de LS, vous arrivez dans le menu principal. Les messages
     en inverse vous indiquent quelles sont les touches à enfoncer pour
     obtenir l'option désirée.

     (B) BACKUP/COPY - Copie de logiciels utilisant des routines de
                       protection.













     (F) FAST BACKUP - Copie rapide de logiciels non protégés. Cette option
                       utilise la mémoire additionnelle pour accélérer le
                       processus de copie.
     (/) CLR STATUS  - Effacer les informations présentes sur la ligne en
                       dessous des n° de pistes.
     (N) DISK EDITOR - Il s'agit du NIBBLE EDITOR permettant la lecture, la
                       modification, la recherche .... de données situées
                       sur la disquette (format SECTOR ou NIBBLE). On peut
                       aussi éditer des données situées en RAM.
     (L) LOAD RAM CD - Permet de charger dans la RAM du slot 0 les données
                       situées sur les pistes 12, 13 et 14 (hex) de la
                       disquette LS. On l'utilise pour charger Inspector ou
                       Watson.  La touche I permettra ensuite d'appeler ces
                       fonctions une fois que ces utilitaires seront en
                       mémoire.
     (*) PARAMETERS  - Permet de modifier les paramètres utilisés par LS.
     (T) TEXT EDITOR - Edition de fichiers en LANGAGE DE PROGRAMMATION
                       LOCKSMITH (LPL), qui peuvent ètre chargés et sauvés
                       sur le disque de paramètres. La fonction BACKUP
                       permet alors de faire des copies de logiciels en
                       donnant leurs noms.
     (R) RAMCD UTILS - Permet de tester les cartes RAM situées dans votre
                       Apple. Il y a deux tests: un simple et un complet.
                       Ces tests peuvent se faire de manière complète ou
                       partielle pour déterminer une erreur précise. De
                       plus, le contenu de chaque banc 16K de la carte RAM
                       peut ètre copié en mémoire principale puis édité
                       avec le DISK EDITOR et ensuite relogé en mémoire
                       RAM.
     (Q) SCAN DISK   - Permet d'afficher sur l'écran Haute Résolution une
                       image de votre dique, piste par piste. Très pratique
                       pour déterminer quelles sont les pistes réellement
                       utilisées.
     (A) BOOT TRACER - C'est un débugger très sophistiqué simulant le
                       fonctionnement du processeur 6502. Du fait de la
                       simulation des accès disques, on peut booter un
                       disque (protégé ou non) sous controle du debugger et
                       suivre le boot à la trace.
     (C)CERTIFY DISK - Ceci permet de vérifier le bon état de la disquette
                       en écrivant certaines informations sur les pistes.
     (U) 16-S UTILS  - Appel un menu permettant certaines opérations sur
                       les disques en format 16 secteurs/piste.
     (D) DOS3.3 UTIL - Appel d'un menu d'utilitaires DOS 3.3.
     (X) DSK RECOVER - Permet de lire un disque endommagé et d'en faire une
                       copie de meilleure qualité sur une autre disquette.
                       Très utile pour recopier une disquette écrite avec
                       un lecteur ayant ses tètes mal alignées.
     (S) DISK SPEED  - Permet de modifier la vitesse de rotation des
                       lecteurs.
     (E) ERASE DISK  - Efface tout ou partie d'une disquette.
     (I) INSPECTOR   - Appel de Inspector ou de Watson s'ils ont été
                       préalablement chargés par la fonction L.

     Backup/Copy Disk:

     En tapant B, on peut copier la majorité des logiciels utilisant une
     protection.














     En tapant F, on passe en copie rapide: ceci ne fonctionne qu'avec des
     disquettes au format standard; de plus toute la mémoire RAM disponible
     est utilisée. Voici les commandes disponibles:

          12   Copie du lecteur 1 vers le lecteur 2
          21   Copie du lecteur 2 vers le lecteur 1
          11   Copie du lecteur 1 vers le lecteur 1
          22   Copie du lecteur 2 vers le lecteur 2
          1    Lecture du disque 1
          2    Lecture du disque 2
          10   Copie du lecteur 1 vers la mémoire
          20   Copie du lecteur 2 vers la mémoire
          01   Copie de la mémoire vers le lecteur 1
          02   Copie d ela mémoire vers le lecteur 2
          V    Permet de mettre/oter la vérification lors de la copie
     (SPACE ou RETURN) pour commencer

     De plus on peut modifier certains paramètres ce qui permettra la
     lecture/écriture avec des formats non standards. Voici la liste de ces
     paramètres:

     0007=00 N° de volume désiré ou 0 si c'est le mème que l'original
     0008=00 N° de piste de départ
     0009=22 N° de piste de fin
     0010=08 Nombre de d'essais de lecture maximum: 1 à 9 et A à Z
     0011=03 Nombre maxi de vérifications après l'écriture.
     0012=10 Délai de mise en route du moteur pour la lecture. Maxi 7F.
     0013=10 Délai de mise en route du moteur pour l'écriture. Maxi 7F.
     0014=80 Délai de positionnement du bras (Seek Off) en lecture. Le DOS
             utilise FF, valeur maxi. Un délai de 00 est suffisant et
             permet de gagner 1s lors de la copie.
     0015=80 Délai de positionnement du bras (Seek Off) en écriture. Ne pas
             mettre de valeur inférieure à 80 sinon le lecteur va commencer
             à écrire avant que le bras soit positionné.
     0016=0B Nombre d'octets de synchro avant le champ adresse (il y en a
             toujours 5 de plus que le nombre indiqué).  La valeur par
             défaut met 16 octets de synchro, la valeur 01 en met seulement
             6. Une valeur trop basse va permettre l'écriture par dessus le
             champ adresse suivant; une valeur trop grande ne permettra pas
             d'écrire les 16 secteurs sur la piste.
     0017=08 Nombre d'octets de synchro avant le champ de donnée (voir
             0016).
     0018=00 Ecriture alternée sur les lecteurs 1 et 2. La valeur FF permet
             d'écrire alternativement sur les deux disques et permet de
             gérer au mieux la mémoire en optimisant les duplications.

     Pour modifier un paramètre, taper les 4 chiffres de son adresse et
     taper RETURN: la valeur utilisée est affichée. Tapez alors une autre
     valeur.

     CLEAR TRACK STATUS DISPLAY:

     La ligne située sous les numéros de piste ne s'efface pas
     automatiquement. Avec la commande /, vous effectuez le
     rafraichissement de cette zone à volonté.

     EDITEUR DE DISQUE D'OCTET ET DE MEMOIRE:














     Avec N vous passez en mode Editeur de Disque (en fait c'est un Nibble
     Editor).

     Le curseur se déplace avec les touches I,J,K,M ou avec les flèches sur
     les  //e et //c. Les touches '<' et '>' font avancer/reculer d'une
     page en mémoire. Les touches ',' et '.' permettent de se déplacer dans
     le buffer.

     CTRL-A vous activez/désactivez l'affichage ASCII. Avec 'B' vous passez
            du mode byte au mode nibble. En mode nibble, les octets de
            synchro sont en inverse.
     CTRL-R permet de charger une piste dans le buffer.
     CTRL-W va écrire le buffer sur une piste. (Si vous ne spécifiez pas
            les pistes de départ et de fin, LS attend que le buffer soit
            plein avant d'écrire).
     CTRL-V permet de vérifier le début de piste: placez le curseur sur le
            nibble à partir duquel se fera la vérification.
     CTRL-I permet d'insérer des nibbles dans le buffer, à droite de votre
            curseur.
     CTRL-D efface des nibbles
     CTRL-F recherche de nibbles. En tapant RETURN, on cherche la chaine de
            nibbles stockés dans PATO, 'L' vous demande la longueur (1-F).
     CTRL-B déplace le curseur sur le début de piste
     CTRL-E déplace le curseur sur la fin de piste
     '('    définit la position du curseur comme étant le début de piste
     ')'    définit la position du curseur comme étant la fin de piste
     'S'    le nibble sous le curseur devient l'octet de synchro
     'N'    remet le nibble en état normal
     'C'    passe en mode CHANGE
     'H'    affiche le buffer sur l'écran HGR
     'HG'   imprime l'écran HGR (si l'imprimante est graphique).
            L'initialisation de l'imprimante se fait avec le paramètre
            GR.CHARS.
     'G'    à partir du mode texte, va afficher une représentation du
            buffer en mode texte.
               - (.) veut dire que les nibbles de la chaine sont normaux
               - ( ) en inverse caractérise les octets de synchro
               - (+) signifie une combinaison de normaux et de synchro
     'D'    est la commande de décodage de l'adresse en 16 secteurs. Les 4
            premiers nombres sont l'adresse du buffer suivi de la lettre V
            et du n° de volume en hexa, un nombre à deux chiffres avec (/)
            puis encore une nombre à deux chiffres pour la piste/secteur. A
            la suite, on trouve '?', 'CS', ou '**'.  Le '?' signifie que le
            checksum ou le prologue est incorrect. 'CS' signifie que le
            checksum du champ de données est incorrect et '**' signifie que
            les données sont incorrectes ou qu'on est en 13 secteurs. En
            tapant '#' on affiche la piste dans le buffer de '(' à ')'.
            CTRL-S effectue l'analyse du mode de lecture de la piste afin
            de positionner les pointeurs en vue de la prochaine écriture.

     CERTIFIER LES DISQUES:

          Cette fonction s'appelle en tapant C à partir du menu principal
     de LS. Cela permet de vérifier si une disquette n'est pas abimée
     physiquement.

     ATTENTION: cet utilitaire détruit le contenu de la disquette à
     certifier.













          Indiquez le lecteur de disque concerné, la piste de départ et de
     fin ainsi que l'incrément. Mettez la disquette à certifier et tapez
     ESPACE.

          Cette fonction écrit une suite d'octets sur chaque piste. Ensuite
     les pistes sont relues et si la suite d'octets qui s'y trouve n'est
     pas conforme à l'original,  LS affiche une erreur sur la piste
     concernée. Il y a trois sources d'erreurs: ce peut ètre du à un
     mauvais fonctionnement du lecteur de disquette tant en lecture qu'en
     écriture, ou plus vraissemblablement il s'agit d'une altération
     physique de la disquette.

          Chaque piste correctement écrite/lue est marquée par un point (.)
     et les erreurs sont signalées par un (*).

     LES UTILITAIRES 16 SECTEURS:

          Ceci vous donne la possibilité de traficoter les disques au
     format 16 secteurs normal (Dos 3.3,Prodos,CP/M...). Ces fonctions
     s'appellent par 'U' à partir du menu principal.

     La Vérification en 16 secteurs:

          En tapant 'V' à partir de ce menu, vous passez dans l'utilitaire
     FAST DISK VERIFY. Indiquez le n° du lecteur où se trouve la disquette
     à tester et LS va tester les pistes 0 à $22.

          Chaque piste correctement lue est marquée par un point (.) et les
     erreurs sont signalées par un (*). S'il y a un chiffre, cela
     représente le nombre de fois que le lecteur a du recommencer sa
     lecture pour lire correctement les 16 secteurs de la piste. Sous les
     pistes se trouvent les indications relatives aux secteurs:

     - un point (.) signifie que le secteur concerné a été correctement lu
       du premier coup.
     - un 'A' inverse signifie qu'une erreur est intervenue dans la lecture
       des champs adresses. Un 'D' inverse signifie qu'une erreur est
       intervenue dans le champ données.
     - un nombre indique le nombre de fois que la lecture a été faite avant
       de décoder correctement les informations.

     Le Formatage en 16 secteurs:

          Tapez 'F' pour formatter une disquette. Cet utilitaire permet de
     ne formatter qu'une partie de la disquette avec le n° de volume de
     votre choix. Avec cet utilitaire, on peut reformater une piste abimée.
     Mais ATTENTION, les données situées sur la piste reformatée sont
     définitivement perdue.

          Indiquez le lecteur utilisé, la piste de départ et de fin et
     l'incrément puis le n° de volume.

     Comparaison de disques 16 secteurs:

          Tapez 'C' pour accéder à cette fonction. Chaque secteur de la
     disquette est lu et un double octet (16-bit) de checksum lui est
     associé et est comparé  au checksum du secteur original. S'ils ne
     correspondent pas, un 'C' apparait en regard du secteur. Lors de la













     première lecture, il est normal d'avoir beaucoup de C: on n'a pas de
     référents en mémoire.

          Lorsque le dique à comparer est stocké en mémoire (par ses octets
     de checksum), mettez la deuxième disquette et tapez ESPACE: la
     comparaison se fait. Chaque comparaison réussie se traduit par un
     point (.) en face du secteur correspondant. En cas de non identité, un
     'C' est affiché. On peut aussi obtenir des 'A' ou des 'D' inverse
     selon qu'on a détecté ou non des erreurs dans les champs adresses ou
     données.

     Signature 16 Secteurs Synchronisée:

          Cet utilitaire permet de détecter la synchronisation des pistes
     sur un disque 16 secteurs. Indiquez le drive utilisé: la lecture
     commence piste $00 secteur $00, ensuite on passe à la piste 1 et le n°
     du premier secteur lu est affiché; on passe à la suite jusqu'à la
     piste $22.

          La signature de la synchronisation est affichée sans fin et va
     varier en fonction des fluctuations de vitesse de la tète de lecture.
     Vous quittez la fonction par ESC à tout moment.

          On peut aussi utiliser cette routine pour déterminer quel
     programme de copie a été utilisé pour dupliquer la disquette.

          Cette signature est normalement constituée d'une suite de
     chiffres hexa en sens croissant ou décroissant. Exemple:

         0FEDCBA9876543210FEDCBA9876543210FE

          Cette progression est décroissante de (-1): chaque nombre est
     plus petit que son prédécesseur de 1. La table suivante donne la
     signature caractéristique de certains copieurs. Notez que la seule
     écriture sur disque ne modifie pas la signature; il faut
     impérativement qu'il y ait formatage.

                    Program      Signature     Identificateur
                    ------------ ------------- --------------
                    Dos Init     0DA741EB85...  (-3)

                    Locksmith
                     Format      048C048C...    (+4)

                    Locksmith
                     Fast Backup 0FEDCBA987...  (-1)

                    Penulta Copy 0ECA8...       (-2)

                    Copywriter
                     (no verify) 0000000...     (+0)

                    Copywriter
                     (verify)    0FEDCBA987...  (-1)

                    Disk Muncher 0D852FC964...  (**)

                    Rack Pat     0D85630DA5...  (**)













          La signature à la mème progression uniquement si le formatage a
     été fait en une seule passe. Par exemple, la signature suivante a été
     générée par Locksmith FAST DISK BACKUP en une seule passe avec une
     carte 128K.

         0FEDCBA9876543210FEDCBA9876543210FE

     Chaque nombre hexa est inférieur de 1 au précédent, conformément à la
     table spécifiée plus haut. Maintenant examinez la signature suivante:

         0FEDCBA9873210FEDCBA6543210FED98765
                   !         !         !

          Dans ce cas la progression est encore de (-1), sauf aux trois
     endroits marqués par un ! où la progression est de (-4). Ceci provient
     du fait que ce disque a été créé par Locksmith FAST DISK BACKUP sans
     carte RAM. Toutes les 10 pistes, une interruption du processus de
     copie se produit (on lit la disquette originale par tranche de 10
     pistes). Si la copie avait été effectuée avec l'option VERIFY du
     Locksmith FAST DISK BACKUP, la progression aurait été de (-3). Ainsi à
     partir de cette signature on peut découvrir pas mal de choses
     interessantes sur l'origine de la disquette.

      LES UTILITAIRES DOS 3.3:

          En tapant 'D' à partir du menu principal, vous passez dans les
     utilitaires DOS 3.3..

     Catalog Disk:

          L'option 'C' du menu UTILITIES permet d'afficher le catalog du
     disque. Les fichiers effacés sont marqués avec un"D".

     Load fichiers DOS en mémoire:

          L'option 'L' permet de charger un fichier en mémoire pour
     l'éditer. Le fichier est chargé entre $2000 et $7EFF. La TSL
     (track/sector list) est placée à partir de $7F00, ainsi on peut sauver
     le fichier sur disque à partir de l'éditeur.

     Carte d'occupation du disque:

          La touche 'M' affiche la carte d'occupation du disque. Les
     secteurs libres sont marqués par '-' et les secteurs utilisés par '#'.
     Les secteurs vont de bas en haut et de gauche à droite.  Tapez ESPACE
     pour revenir au menu.

     Modifier le nombre de secteurs utilisés:

          Certaines erreurs DOS modifient le décompte des secteurs utilisés
     par un fichier. En tapant 'K' dans ce menu, vous corrigez
     automatiquement ces erreurs. Les secteurs utilisés par le fichiers
     sont dénombrés et le résultat est comparé avec l'information du
     catalogue. En cas de différence, les deux nombres sont affichés et LS
     vous demande de taper ESPACE pour faire les corrections (ESC permet de
     quitter).

     Vérifier la validité du VTOC:













          La VTOC (volume table of contents) est une bit-map des secteurs
     libres d'un disque. Le catalogue est la liste des noms de fichiers
     avec une ou plusieurs TSL (track/sector lists) par fichier indiquant
     quels sont les secteurs attribués à chaque fichier. Si vous faites une
     erreur de manipulation alors que des fichiers sont ouverts, il se peut
     que la VTOC et le catalogue ne correspondent désormais plus à la
     réalité.
          Avec l'option 'V', vous vérifierez la validité du VTOC/Catalog.
     L'affichage ressemble à celui de lacarte d'occupation (option M): il y
     a les "-" (secteurs libres) et les "#" (secteurs utilisés). De plus 3
     types d'erreurs peuvent ètre détectés et affichés:

          - les secteurs marqués dans la bit-map mais non utilisés par un
            fichier sont notés par un "A" inverse.
          - les secteurs utilisés par un fichier mais non notés sont
            affichés par "U" inverse. Dans ce cas, certaines informations
            du fichier pourront ètre effacées par les prochaines
            sauvegardes. La seule solution consiste à ne plus utiliser la
            diquette pour faire des sauvegardes et à copier les fichiers
            sur une nouvelle disquette avec l'utilitaire FID de la
            disquette DOS 3.3 MASTER.
          - les secteurs alloués à plusieurs fichiers en mème temps sont
            notés par "2" inverse (2 fichiers en mèlme temps) ou "3", etc.
            Ceci signifie qu'un fichier est écrit par dessus un autre. Dans
            ce cas, copiez les fichiers sur une autre disquette avec
            l'utilitaire FID de la disquette DOS 3.3 MASTER.

     Oter le DOS du disque:

          En tapant 'R', vous otez le DOS du disque et libérez ainsi 32
     secteurs pour sauvegarder vos fichiers. Ces 32 secteurs appartiennent
     aux pistes $1 et $2. On peut également libérer la piste $0, mais vous
     ne pourrez sauver de fichier sur cette piste, mème si elle est
     déclarée libre.

          La carte d'occupation est affichée, en tapant ESPACE, le DOS est
     oté, la VTOC est remise à jour et la carte d'occupation est réaffichée
     (avec les pistes $1 et $2 libres !)

     UN-DELETE un fichier:

          En tapant 'U' vous pourrez récupérer un fichier préalablement
     effacé sous réserve qu'aucune sauvegarde n'ait été effectuée depuis
     l'effacement du fichier. Tapez ESPACE pour revenir au menu.

     Trier le catalogue:

          Tapez 'A' pour trier le catalogue puis tapez ESPACE pour
     conserver ce catalogue trié sur disquette.

     Coder un fichier:

          Après avoir tapé 'E' et donné le nom du fichier à coder, le
     catalogue est lu pour vérifier la présence du fichier et on vous
     demande un mot de passe. Celui-ci n'est pas affiché et on vous
     demandera de le taper une deuxième fois pour confirmer. Ce mot de
     passe sert à coder le fichier; ne l'oubliez pas: c'est le seul moyen
     de décrypter le fichier ! Si vous le perdez, votre fichier ne pourra













     plus jamais ètre décodé.

     Décoder un fichier

          En tapant 'D' vous décoderez un fichier préalablement codé. Cette
     fonction est la symétrique de la précédente. Si vous ne donnez pas le
     mot de passe ayant servi à coder le fichier, vous obtiendrez un
     résultat curieux !

          Notez que vous pouvez coder un fichier deux fois de suite. Par
     exemple une fois avec le mot de passe "LOCK" puis avec le mot de passe
     "SMITH", le décodage se fera en ordre inverse: d'abord avec "SMITH"
     puis "LOCK".

          Faites une copie de sécurité des fichiers cryptés: en effet toute
     tentative de décryptage avec un mauvais mot de passe va coder une fois
     de plus le fichier. Pour décoder un fichier altéré par une tentaive de
     décodage erronée, il faut d'abord recoder le fichier avec le mème mot
     de passe (et réciproquement).

     ADVANCED DISK RECOVERY:

          Lorsque des erreurs de type I/O se produisent sur votre
     disquette, il est temps de procéder à une analyse de celle-ci. En
     effet, il se peut que votre diquette a été écrite avec un drive
     défectueux.

          Locksmith Advanced Disk Recovery (ADR) permet de récupérer les
     informations écrites sur un disque et que vous ne pouvez plus
     reprendre pour une des raisons suivantes:

     - piste mal alignée
     - vitesse de rotation du lecteur non conforme
     - décentrage de la disquette

          Un mauvais alignement de la tète de lecture est un problème qui
     ne pourra qu'empirer avec le temps pusi qu'il est lié à l'usure du
     mécanisme du drive.

          Le réalignement de la tète de lecture ne peut se faire que par un
     technicien compétent. Cependant voici les signes avant-coureur d'une
     telle situation: une disquette écrite sur un drive ne peut ètre lue
     par un autre lecteur. Un décalage de 1/4 de piste est suffisant pour
     produire une erreur, spécialement sur les pistes centrales (pistes
     $20, $21, $22) où la densité des informations est plus importante.

          Les problèmes de décentrage (courants sur les vieux lecteurs où
     sur les disquettes sans anneau central de renforcement) sont
     imprévisibles et très graves. Lorsque vous fermez la porte du drive,
     le sytème d'entrainement descend au centre de la disquette. Si
     celle-ci est mal centrée, le sytème la repositionne correctement. Mais
     il arrive que la disquette reste mal positionnée: lors de la lecture,
     vous entendrez un bruit d'enfer; il suffit alors d'ouvrir et de
     refermer la porte du lecteur pour que la disquette se repositionne
     correctement. Cependant, si cette erreur de positionnement se fait
     lors du formatage ou de l'écriture, les données seront écrites avec un
     disque mal centré et elles ne pourront ètre relues lorsque le disque
     sera positionné correctement.













          L'écriture avec un lecteur tournant trop vite va faire que la fin
     d'un secteur va mordre sur le champ adresse. Donc le champ données est
     correct mais la disparition du champ adresse causera une erreur I/O
     lors de la lecture.

          Locksmith Advanced Disk Recovery va permettre de relire une
     disquette avec  les pistes mal-alignées, avec un mauvais centrage ou
     une vitesse non conforme. Les données seront alors écrites sur un
     disque vierge préalablement formatté.

          Indiquez les disques source et  destination ainsi que
     l'intervalle à recopier (normalement $00 à $22) et Locksmith Advanced
     Disk Recovery va lire le disque abimé. si vous voulez simplement voir
     si LS peut lire le disque altéré sans ré-écrire les informations sur
     un dique vierge, tapez 0 pour le n° du lecteur destination. Les pistes
     sont lues 6 par 6; la ligne du haut affiche le résultat du processus
     et la partie inférieure de l'écran affiche les secteurs lus (dans
     l'ordre naturel c'est à dire (0,7,E,6,D,...). Voici ce que LS va
     indiquer en face de chaque n° de secteur:

     - (.) lecture correcte sur l'original
     - (A inverse) prologue adresse non trouvé
     - (D inverse) prologue adresse trouvé, mais prologue donné non lu
     - (+) lecture effectuée sur le 1/4 ou 1/2 piste supérieure
     - (-) lecture effectuée sur le 1/4 ou 1/2 piste inférieure
     - (;) indique qu'il manque un champ adresse, mais que le problème est
           corrigé

          Remarquez que seuls les messages A et D inverse signifient que la
     lecture a été impossible.


          Voici un exemple de disquette décentrée dont les données ont été
     relues par LS:

                               DSK RECOVER
                .00
                .25
                .50
                .75
                HEX 000000000000000011111111111111110000
                TRK 0123456789ABCDEF0123456789ABCDEF0123
                   0++--.+.-.+.-+.-.+.-.+.--+.--+.--+.-0
                   7+.--++--.+-.+.-++--.+.-.+.--+.-.+.-7
                   E+.-.+.-.++-.+-.+.--.+--.+.-.+--.+--E
                   6+.-.+.-.+.-.+-.+.-.+.--.+--..--.+--6
                   D+--.+.-.+.-+.-.+.-.+.-.+.--..--+.--D
                   5.--++--++.-+.-++--.+.-.+.-.+.-.+.--5
                   C.-.+.-.++--+.-+.--.+--.+.-.+--.+.-.C
                   4.-.+.-.+.-.+-.+.-.+.--.+--.+--.+--.4
                   BD-++.-.+.-.+-.+.-.+.-.+.--.+--+.--+B
                   3A.++--++.-..-.+--.+.-.+.-.+.-.+.--+3
                   AA.+.-.++--+.-+.--+.--.+.-.+.-.+--.+A
                   2A.+.-.+.-.+.-+.-.+.--+.--.+.-..--.+2
                   9.++.-.+.-.+-.+.-.+.-.+.--+.-.+.--.+9
                   1.++--++.-.+-.+--.+.-.+.-.+.-.+.-.+.1
                   8+.+-.++--++-.+-.+.--.+.-.+.-.+--.+.8
                   F.+.-.+.-.+.-+.-.+.--+.--.+--+.--.+-F













          Il arrive qu'en relisant un disque décentré, certaines données
     situées sur la piste 0 ne soient pas récupérables. Ceci provient du
     fait qu'il faudrait lire en dessous de la piste 0, et que c'est
     physiquement impossible. En général cela ne pose pas de problème,
     puisque cette piste contient le DOS.

     TEST DE VITESSE:

          Avec 'S' vous passez en mesure de vitesse de rotation du lecteur.
     Il faut indiquer à quelle vitesse vous voulez effectuer le test: la
     première est 300 RPM. C'est la vitesse normale recommandée par le
     fabriquant.
          Le second choix sert à calibrer votre lecteur à sa vitesse
     optimale: c'est à dire à une vitesse plus petite que la normale (à
     utiliser pour les copies). Avec cette vitesse, vous ètes sur de copier
     toute la piste de l'original indépendamment du drive ayant servi à la
     créer.
          La troisième option sert à calibrer votre lecteur à la mème
     vitesse que l'original. Vous devrez insérer l'original pour que LS
     détermine la vitesse à laquelle les données ont été enregistrées.
     Ensuite vous aurez trois possibilités d'affichage des résultats.
     Normallement vous prendrez FINE ADJUST. Les deux autres options ne
     sont utilisées que pour les diques dont les vitesses sont tellement
     éloignées de la normale qu'on ne pourrait lire le résultat en FINE
     ADJUST. Ensuite indiquez le nombre de fois que la vitesse sera
     controlée avant que le résultat soit affiché. En principe un test par
     affichage suffit. Lorsque cela est fait, on vous demande de mettre un
     disque vierge dans le lecteur à tester et de presser ESPACE. Alors LS
     va écrire/lire des données sur la piste 0 (c'est pour cela qu'on
     utilise un disque vierge: la piste 0 sera en effet détruite).

     EFFACER LES DIQUES:

          Avec 'E' on efface tout ou partie d'une disquette. Le message de
     mise en garde suivant est affiché:

                     THIS UTILITY DESTROYS DATA ON THE TARGET DISK.

          Lorsque le disque est effacé, les E sur la ligne du haut
     indiquent quelles sont les pistes effacées.

          Certaines protections consistent à détecter si une piste (ou
     plusieurs) sont vierges. La seule façon de reproduire la protection
     est donc d'effacer la (les) piste (s) précédemment effacées.

     INSPECTOR/WATSON:

          Si vous avez chargé Inspector/Watson en carte RAM en tapant 'L'
     dans le menu principal, il suffit de booter la disquette contenant ces
     utilitaires pour qu'ils soient chargés en RAM. Vous y accédez ensuite
     en tapant I à partir de Locksmith.
          Les programmes Inspector/Watson fonctionnent alors normalement à
     une exception près: lorsque Inspector/Watson redonnent le controle à
     LS, le buffer par défaut sera $4000 au lieu de $0800, car $800 est
     utilisé par LS.
          Si vous n'avez que Inspector, le controle sera passé à cet
     utilitaire. Si vous avez Inspector ET Watson, le controle sera passé à
     Watson. Toutes les commandes sont alors disponibles sauf ESC. Pour













     quitter Inspector/Watson tapez 'Ctrl C' et voius repassez à LS.
          Si Inspector/Watson est en RAM du slot 0, ESC permet également de
     revenir à LS. Si Inspector/Watson est en ROM, vous devrez utiliser
     'Ctrl C' pour quitter.

          Pour de plus amples informations sur Inspector/Watson, veuillez
     consulter leurs manuels respectifs.

     FORMAT DES PISTES (13 et 16 secteurs):

          Sur Apple II, il y a plusieurs systèmes de formatages. Par
     exemple, on peut utiliser 13 secteurs par piste ou, sur les modèles
     récents utilisant des algotrithmes perfectionnés, on peut avoir 16
     secteurs par piste.

          Ces deux formats sont fondamentalements identiques, seule la
     manière de coder les informations est différente. De plus les
     Prologues adresse diffèrent de manière à identifier le système
     utilisé. Puisque le format 13 secteurs est tombé en désuétude, nous
     perlerons du format 16 secteurs et ensuite nous pointerons les
     différences entre les deux sytèmes.

          Une piste est formée de secteurs (16 ou 13): chaque secteur
     contient un champ adresse et un champ données. Le champ adresse
     contient des informations sur le champ données qui le suit. Le schamps
     sont séparés par des 'vides' remplis d'octets de synchro. Ces octets
     sont des nibbles spéciaux qui obligent la carte controleur à se
     synchroniser, rendant possible la lecture du champ suivant.

          Les champs adresse et données contiennent chacun un Prologue, des
     informations et un Epilogue. Les Prologues du champ adresse sont D5 AA
     96 (ou D5 AA B5 en 13 secteurs), suivis de 4 informations codées en
     double nibbles. Deux nibbles consécutifs indiquent le n° de volume, le
     n° de piste, le n° de secteur et le checksum. Ce checksum est un OU
     exclusif des trois autres données. Vous trouverez une table dans ce
     manuel pour convertir ces doubles nibbles en les valeurs qu'ils
     représentent. Ensuite vient l'Epilogue du champ adresse: DE AA.

          Après les octets de synchro, on trouve le champ de données: il y
     a un prologue (D5 AA AD), suivi de 342 nibbles (ou 410, en format 13
     secteurs). Ces nibbles sont codés suivant une table 6 bits (voir la
     table "Data Field Nibble Encoding"). En 13 secteurs on utilise une
     table 5-bits. après les données il y a un octet de checksum puis
     l'épilogue DE AA.

          Certaines protections sont basées sur de smodifications des
     Prologues et Epilogues.



     ANALYSEUR DE BITS DE SYNCHRO (Framing Bit Analyzer):

          Les bits de synchro sont les bits 0 qui se trouvent entre les
     octets de données sur le disque. Ces nibbles sont appelés octets de
     synchronisation. Les disques 16 secteurs utilisent une synchro en
     10-bits ou 2 framing bits.  L'analyse statistique utilise un
     décomptage précis du temps pour décoder les données. On appelle
     l'analyseur par '$' à partir de l'éditeur de disque et en lisant une













     piste.
          Exemple: Passez en mode Editeur de Disque et tapez CTRL-R pour
     lire une piste. Placez le pointeur '(' au début du champ adresse (D5
     AA 96).  Descendez le curseur d'environ 10 lignes et placez le
     pointeur de fin ')'. Ensuite reculez le curseur sur DE AA après le
     début du champ adresse.
          L'analyseur utilise les données à partir du pointeur de départ
     jusqu'à l'octet immédiatement avant le curseur comme une 'clef'. Si
     vous mettez le '(' avant l'octet D5 et le curseur sur l'octet DE, la
     longueur de la clef sera de $0B octets.

          Passez dans l'analyseur en tapant '$'. L'affichage montre les
     données analysées à gauche et les statistiques à droite.
          Les commandes suivantes sont alors opérantes:
          SPACE fait une pause, vous pouvez examiner les statistiques
          RETURN pour recommencer
          < et > font défiler
          T passage des statistiques de timing aux nibbles
     A droite de l'écran, vous lirez une information du type:
             R=0007
             F=07
                 ??
               --  ++
             0   02
             1 00  25
             2 25  03
             3 02  00
             4 01  01
             5 00  18
             6 0B  00
             7 00  07
             8   03
     La valeur R est le nombre de lectures effectuées; F= est le nombre de
     lectures où la 'clef' des données a été trouvée. Comme le buffer est
     limité, si on donne une grande zone de données il se peut que le
     buffer ne contienne pas totalement les données spécifiées. Le tableau
     représente les différences entre la donnée lue et les valeurs
     "idéales" 10, 20, 30, etc.  Ces différences sont comprises entre -7 et
     +7, avec 00 comme valeur idéale. Par exemple, dans le tableau
     précédent, le décompte pour +1 est 25 (hex). Cela signifie qu'il y a
     25 fois des nibbles avec des valeurs de timing plus grand de 1 par
     rapport aux valeurs idéales (11, 21, 31, etc.).  Le décompte pour "8"
     est 03; cela signifie qu'il y 3 fois des valeurs de timing situées
     juste au milieu des valeurs idéales. Cela indique qu'il faut
     poursuivre l'analyse. Le "??" est affiché lorsque les valeurs pour les
     décomptes +- 6,7, et 8 sont différents de zéro et indiquent donc qu'il
     faut plus d'informations.
          Lorsque les octets sont affichés à gauche de l'écran, l'état
     inverse/normal des octets indique le nombre de framing bits après
     l'octet. Le mode normal signifie qu'il n'y a pas de framing bit, les
     deux chiffres en inverse pour 2 framing bits et un chiffre en inverse
     pour 1 framing bit. Le mode flash signifie qu'il y a au moins 3
     framing bits.
         Si l'octet de donnée à le bit fort off, cela veut dire qu'au moins
     une lecture s'est produite avec la donnée qui ne correspondait pas
     après la clef. Cela provient parfois d'une perte de la synchro lors de
     la lecture ou par une clef trop petite ce qui fait que plusieurs
     parties de la piste sont analysées et non une seule.













     `LOAD RAM CARD:

          En tapant L à partir du menu principal, on charge les pistes $12,
     $13, et $14 aux adresses $D000-$FFFF de la carte RAM située dans le
     slot 0 (ou les 16K supérieurs des //e et //c).
          On peut donc charger Inspector ou Watson par ce procédé:
       1. Booter Inspector ou Watson.
       2. Entrer dans Inspector ou Watson, mettre le disque LS et taper:
                       B D 0 <return>
                       T 1 2 <return>
                       CTRL-W
       3. taper CTRL-I 15 fois.
     Ceci va écrire Inspector ou Watson sur la disquette LS.
          Normalement, LS contient le BASIC INTEGER et le Moniteur sur les
     pistes $13 et $14.  Inspector/Watson sera sur la piste $12.

     LES PARAMETRES:

          En tapant '*' vous afficherez et modifierez certains paramètres
     en utilisant le Langage de Programmation LS. Pour afficher un
     paramètre, tapez "SHOW" suivi du nom du paramètre. Par exemple, pour
     lister le contenu du paramètre SLOT, tapez SHOW SLOT. Pour changer une
     valeur, tapez le nom du paramètre suivi de la nouvelle valeur: exemple
     SLOT 4. en cas d'erreur, LS va émettre un bip et refusera la
     modification.
          Voici un patch très pratique pour lire un disque où les secteurs
     sont normalement non lisibles. Ce patch de la RWTS va empècher le
     recalibrage du bras après une erreur I/O: BDCC 4C C1 BD. Pour remettre
     la valeur normale, taper BDCC 10 F3 AD. Pour remettre les valeurs
     originales aux paramètres, rebootez votre disquette LS.

     Copie avec des paramètres particuliers:

          La fonction Text Editeur permet de sélectionner un fichier de
     paramètre pour faire une copie. Pour cela tapez 'N' pour NEW (effacer
     le buffer) puis 'B' pour copier (Backup).
          Si le disque de paramètre n'est pas dans le lecteur, un message
     vous invite à le mettre et la liste des fichiers disponibles est
     affichée. Déplacez la barre lumineuse avec les flèches pour faire
     votre choix (ou CTRL-K, CTRL-J).  CTRL-N et CTRL-P permettent de
     changer de page. Vous pouvez aussi taper la première lettre du nom du
     fichier pour vous déplacer rapidement dans la liste. Tapez RETURN pour
     confirmer la sélection.

     Charger un fichier de paramètres:

          Tapez 'L' pour charger un fichier de paramètres et suivez les
     indications pour effectuer la copie.

     Sauver un fichier de paramètres:

          'S' va sauver le fichier sur la disquette de paramètres. Vous
     pouvez créer votre propre fichier ou transférer un fichier d'un disque
     sur un autre.

     New - créer un espace de travail vierge:

          'N' efface l'Editeur de Texte et permet de rentrer les













     paramètres.

     l'Editeur de Texte:

          Pour entrer dans l'Editeur de Texte, tapez 'E'. Vous quittez
     l'éditeur avec ESC . Avec 'N' vous effacez la zone de travail pour
     saisir un autre fichier.
          L'Editeur de Texte est un éditeur avec numérotation des lignes:
     elles apparaissent automatiquement en inverse à gauche de l'écran.
     Elles sont exprimées en hexa et celles qui font référence à une
     portion du fichier avec ".I" sont exprimées en langage LPL (Locksmith
     Programming Language).
          Une ligne est constituée de 38 cractères plus les deux caratères
     pour la numérotation. Si une entrée doit tenir sur plusieurs lignes,
     la première ligne doit se terminer par le signe -
          Il y a deux curseurs dans l'Editeur: si le n° de la ligne
     clignote, le curseur est sur la ligne. Si un caractère clignote, le
     curseur est à cet endroit. On peut insérer des caractères à partir de
     la position du curseur avec CTRL-I, et en effacer avec CTRL-D.
          Utilisez 'X' pour vérifier la syntaxe de votre texte une fois que
     vous avez terminé la saisie.

     RAM CARD UTILITIES:

          Avec 'R' on sélectionne les utilitaires RAM card. Ils sont très
     documentés et on dispose d'un test de la RAM card avec copie de la RAM
     vers la mémoire principale (2000-5FFF) et réciproquement.

               2000-2FFF RAM card pages D0-DF alternate
               3000-3FFF    "       "   D0-DF
               4000-4FFF    "       "   E0-EF
               5000-5FFF    "       "   F0-FF

     SCAN DISK:

          'Q' permet de déterminer quelles sont les pistes réellement
     utilisées sur le dique à dupliquer. Cette option cherche les zones du
     disque contenant des données. L'affichage se fait en HGR et se lit du
     bas vers le haut. La première fois que vous utilisez cet utilitaire,
     prenez un disque DOS 3.3 normal pour vous familiariser avec
     l'affichage d'un disque normal. Les séries de points sous chaque piste
     correspondent aux octets de synchro entre chaque secteur. Normalement
     sur un disque 16 secteurs, il doit y avoir 16 ou 17 points, un disque
     13 secteurs en a 13 ou 14. Sur un disque 16 secteurs, il y a un point
     plus gros que les autres: c'est ce qui correspond aux octets de
     synchro de la piste 0. Vous noterez le décalage des points d'une piste
     à l'autre: ceci est du au temps mis par la tète de lecture pour passer
     d'une piste à l'autre.
          Ensuite, essayez de scanner de la piste .5 à 22.5 par pas de 1.
     Vous verrez de longues lignes blanches sans forme particulière: cela
     veut dire qu'il n'y a rien sur ces pistes.
          Les pistes en spirales (1/4 de pistes) affichent des lignes
     blanches séparées par des zones noires.

     LE BOOT TRACER:

          Le Boot Tracer s'adresse aux utilisateurs chevronnés. Il simule
     le fonctionnement du processeur 6502 avec une vitesse permettant de













     suivre le déroulement des opérations lors du boot d'une disquette
     normale ou protégée.
          Vous appelez cette fonction avec 'A'; il faut une carte RAM d'au
     moins 16K (les 16K supérieurs des //e et //c conviennent
     parfaitement).  LS vous demande le slot où se situe votre carte RAM:
     normalement vous répondez 0.
          L'écran est effacé et une ligne en inverse apparait en haut de
     l'écran. Tapez RESET pour entrer dans le debugger et bootez un disque
     par 6CTRL-P. Si le disque boote dans la carte RAM, cela va détruire le
     fonctionnement du debugger.

     La ligne d'informations:

          La ligne du haut affiche normalement:

          FA62  CLD       A=00 X=00 Y=00 P=34 S=FD

          Les 4 premiers caractères sont le contenu de PC avec
     l'instruction à exécuter; ensuite vous trouvez les registres A, X, et
     Y puis le registre d'état P et la valeur du pointeur de pile.
          Tapez alors 'R' puis une touche de A à Z: la barre d'affichage
     sera placé à un autre endroit de l'écran (avec Y et Z on ote
     l'affichage de l'écran).

     Le mode Attente:

          Le simulateur est en mode ATTENTE. Le programme fonctionne et
     s'est interrompu à l'adresse indiquée.
          Tapez CTRL-C pour rendre opérantes les instructions du 65C02 si
     vous possédez un //e kitté ou un //c.
          La touche 'S' permet de lancer l'exécution du programme sous
     controle du débugger. L'affichage va changer rapidement lors de
     l'exécution du boot. Le "beep" que vous entendrez est différent du bip
     normal.
          Pour stopper le simulateur, tapez CTRL-Z et vous passez en mode
     ATTENTE. On  peut redéfinir la touche d'arrèt (par ex si CTRL-Z est
     utilisé par votre programme). Pour cela, stopez avec CTRL-Z, puis
     tapez CTRL-X suivi de la touche qui servira désormais de commande
     d'interruption.
          Passez en mode ATTENTE et tapez ESPACE pour faire avancer le
     programme pas à pas. Un "+" ou un "-" apparait après les branchements
     conditionnels selon qu'ils ont été réussis ou pas.
          En mode ATTENTE, CTRL-Y vous fait passer en mode moniteur et vous
     pouvez désassembler le programme avec 'L'. Vous revenez dans le
     simulateur en tapant alors CTRL-Y <RETURN>. Avant de passer en mode
     moniteur, le simulateur sauvegarde les pages 00 à 07 dans la carte
     RAM. Lorsque vous reviendrez dans le simulateur, il re-transferrera
     ces pages dans la mémoire principale pour poursuivre correctement le
     déroulement du programme.

          Les autres commandes diponibles en mode ATTENTE:

             T - Trace jusqu'à ce qu'un JSR ou RTS soit rencontré
        CTRL-R - simule un RESET: le PC contient le contenu de $FFFC.
        CTRL-I - simule une interruption IRQ
        CTRL-F - déconnecte les interruptions IRQ
        CTRL-N - simule une interruption NMI
        CTRL-Q - quitter le simulateur et passer en moniteur













             1 - mode single-cycle: utilisez ESPACE pour effectuer un cycle
                 du 6502 au lieu de l'instruction complète.
             0 - mode instruction: valide uniquement si une instruction est
                 effectuée complètement
             B - connecte/déconnecte le beep
             C - connecte/déconnecte le clic
        CTRL-C - connecte/déconnecte le 65C02
             K - place la valeur de la prochaine touche pressée dans le
                 buffer clavier. Lorsqu'une instruction lit le clavier,
                 cette commande permet de rentrer une commande clavier sans
                 passer en mode EXECUTION.
           ESC - passer au menu du simulateur

     Les fenètres du simulateur:

          Tapez ESC à partir du mode ATTENTE: une fenètre est affichée et
     le curseur est positionné en haut à gauche.
          Utilisez RETURN et les flèches DROITE et GAUCHE pour vous
     déplacer dans la fenètre. Positionnez le curseur sur une valeur à
     changer et tapez la nouvelle valeur. Vous revenez en mode ATTENTE en
     tapant de nouveau ESC; à noter que CTRL-C annule les modifications
     faites.
          Sur la ligne du haut de la fenètre le PC est décalé à droite et
     aucune instruction n'est désassemblée. Le nombre à gauche sert à lire,
     écrire et éditer un octet de la mémoire. Tapez une valeur suivie de
     'R' pour lire, 'W' pour écrire et 'E' pour éditer.
          Pour changer le mode d'affichage (texte, graphique, haute
     résolution ou basse résolution, page 1 ou 2, plein écran ou mixte),
     tapez l'adresse de commutation ($C050-$C057) puis 'R'. Lorsque vous
     débuggez un programme utilisant le mode graphique, placez la ligne
     d'information avec U, V, W, ou X et passez en mode mixte (4 lignes en
     bas de l'écran).
          Pour éditer, tapez 'E' et le contenu de la mémoire est affiché en
     haxa et ASCII. Déplacez le curseur avec les flèches et tapez RETURN.
          La seconde ligne de la fenètre contient:

              RU=65   0=I 1=I 2=I 3=S 4=I 5=I 6=D 7=I
     "RU=65" (decimal 101) est la valeur de mise à jour du registre, c'est
     le nombre d'instructions simulées avant que PC et les registres soient
     affichés à l'écran en mode EXECUTION. Si ce chiffre est petit, les
     registres sont mis à jour après chaque instruction. A ce moment le
     simulateur fonctionne beaucoup plus lentement du fait du temps mis
     pour les affichages fréquents.

     Désigner les Slots:

          Le reste de la seconde ligne affiche les n° de slots et leurs
     utilisations. Comme le simulateur est en RAM (indiqué par 'S' comme
     SYSTEM dans l'affichage des slots), il doit savoir où se trouvent les
     autres cartes pour les utiliser correctement. Au départ, les slots
     sont marqués 'I' (INVALID).  tout accès à un de ces slots invalide va
     interrompre le simulateur et vous fera passer en mode ATTENTE. Les
     valeurs de désignation des slots sont:

             S - system (simulateur)
             I - invalid
             D - carte controleur de disquette
             A - RAM card de 16K ou 32K













             B - RAM card de 64K ou plus
             F - carte Firmware ou carte ROM
             T - transparent

     Si la désignation est T, toute commande pour le périphérique connecté
     à ce slot se fera sans conversion. Le mode TRANSPARENT sera utilisé
     pour:
          Les cartes ROM et RAM sélectionnant les bancs entre $D000-$FFFF,
     qui est utilisé par le simulateur.
          Les périphériques où le temps d'accès est critique (ex: les
     lectaurs de disque).
          Les périphériques utilisant des accès mémoire directs pour
     modifer les contenus de $0000-$07FF, puisque cette zone est utilisée
     par le simulateur.

     Comparaison d'Adresse et Stop:

          La troisième ligne commence par "PC": c'est la Comparaison
     d'Adresse et Stop. On peut mettre jusqu'à 4 valeurs de comparaisons.
     Si le PC contient une des valeurs indiquées, le simulateur effectue un
     arrèt (STOP) et passe en mode ATTENTE. De plus, une zone de
     comparaison peut ètre indiquée. Pour spécifier les valeurs de
     compraison  ou la zone de comparaison, modifier la valeur (0 au
     départ) pour indiquer le nombre d'adresses et tapez ces adresses. Si
     vous remettez 0, vous annulez les comparaisons.
          La ligne "MR" est la ligne de 'comparaison avec la mémoire lors
     de la lecture pour stopper'. On peut aussi spécifier 4 valeurs et 1
     zone. Lorsque le simulateur lit une de ces adresses, soit par
     adressage direct, indirect ou par la pile, il passe en mode ATTENTE.
          La ligne "MW" est la ligne de 'comparaison avec la mémoire lors
     de l'écriture pour stopper'. Elle fonctionne comme la ligne 'MR'.

     Changement du contenu du PC:

          La zone "PCSW" de la fenètre permet de faire des échanges de
     valeur dans le PC. On peut spécifier 4 paires de valeurs. Si le PC
     contient la première valeur d'une paire, le simulateur lui met
     immédiatement la deuxième et l'exécution se poursuit. Ceci est
     pratique pour sauter les boucles non indispensables (ex les boucles de
     ralentissement). Au départ, 3 paires de valeurs sont données:

              FCA8 FCB3 - routine d'attente moniteur
              BA00 BA10 - délai de calibrage du bras en DOS 3.3
              BD9E BDAB - délai de mise en route du moteur en DOS 3.3

     Tableau des valeurs du PC:

          Les 8 dernières lignes contiennent les 64 dernières valeurs du
     PC.

     Les interruptions du programme:

          On interrompt le déroulement du programme suivi par le simulateur
     et on passe en mode ATTENTE quand une des conditions suivantes est
     remplie:

               - la touche STOP est tapée
               - Un opcode non valide est rencontré (il est désassemblé













                 sous la forme ???)
               - un JSR ou un RTS est rencontré alors qu'on est en mode "T"
                 (trace)
               - lecture ou écriture sur un périphérique dont le slot est
                 marqué "I" (invalide)
               - une comparaison avec une valeur de STOP pour PC, MR, ou MW
                 est rencontrée en cours d'exécution
               - on essai d'écrire sur disquette
               - on essaie d'accèder à certaines routines d'erreurs (en
                 particulier $C060 et $C068 pour la lecture et l'écriture)

     Remarques diverses:

          La lecture de disquette se fait en lisant une piste complète puis
     en passant les octets un à un au simulateur. Lorsque le simulateur a
     besoin d'un octet, le premier octet du buffer est envoyé. Comme le
     simulateur n'a pas besoin que le bit de poids fort soit analysé, les
     temps de framing bit ne sont pas présevés. De plus la piste lue n'est
     pas synchronisée avec les autres pistes. Et enfin on ne peut écrire
     sur disquette.
          Lorqu'on lit une diquette, la piste lue est conservée en RAM tant
     qu'une autre piste (d'un autre rang) n'est pas lue ou que le slot
     n'est pas changé. Ce n'est que si cette image de la piste n'est pas
     valide que la disquette est lue une deuxième fois. Cependant, si
     l'utilisateur effectue un CATALOG sous controle du debugger, puis
     qu'il change la disquette et qu'il fasse un deuxième CATALOG, le
     contenu du catalogue de la première disquette sera affiché car cette
     opération n'a pas obligé la tète à lire une autre piste. Pour vider le
     buffer, changez la désignation du slot en mettant 'I' puis 'D' lorsque
     le simulateur est en fonction
          Le simulateur est doté d'une analyse de secteur: c'est à dire que
     si le programme lit des octets et qu'il effectue une comparaison avec
     $D5, le simulateur trouve le prochain $D5 dans le buffer et le
     transmet au programme, au lieu d'attendre que tous les octets soient
     lus en attendant de trouver un $D5.
          Les adresses du joystick ($C064-$C067 et $C06C-$C06F) sont
     simulées correctement si l'instruction utilisée est semblable à la
     routine moniteur en $FB1E ($PREAD). Si ce n'est pas le cas, on passe
     en mode ATTENTE.

          Une dernière remarque: le simulateur RALENTI l'exécution du
     programme. Les 30 secondes de boot d'un disque vont durer pas loin de
     40 minutes avec le débugger ! Cependant les informations ainsi



     obtenues sont parfois précieuses ! Il faut savoir ètre patient !

     LE LANGAGE DE PROGRAMMATION LOCKSMITH:

          Ce langage LPL est un outil permettant de donner des directives à
     Locksmith. Ainsi vous pourrez définir des procédures de copie très
     particulières, rechercher des suites d'octets, restaurer des disques
     endommagés ...etc.  Les commandes LPL sont tapées au clavier et
     stockées dans un fichier sur disque.

     La commande  .I (Include):

          Les fichiers sont sauvés avec un nom rappelant leur utilité. par
     exemple, si un fichier de paramètres s'appelle "BRODERBUND", on peut
     raisonnablement supposer que cela concerne la copie de softs de cette













     maison d'édition. Pour utiliser ce fichier, tapez la commande

               .I BRODBUND

     Le .I doit ètre en début de ligne, puis on doit mettre un espace et
     enfin le nom du fichier. Pour récupérer une partie d'un fichier,
     indiquez les lignes de départ et de fin:

               .I TESTFILE,4-1F

     Dans cet exemple, on récupère la partie du fichier TESTFILE comprise
     entre les lignes 4 et 1F. On peut mettre autant de .I qu'on le désire;
     la seule limite étant qu'on ne peut avoir plus de $FF lignes dans le
     fichier.
          Chaque ligne du fichier LPL est numérotée en hexa (et affichée en
     inverse). Ces numéros ne servent qu'à référencer les lignes . Chaque
     ligne ne peut excéder 38 caractères. Voici un exemple de ligne LPL:

               FIND D5 AA 96

     Ceci était une commande simple. si on met plusieurs commandes, on les
     sépare avec deux points:

               SLOT 6 : IN.DRIVE 1 : OUT.DRIVE 2

     Les espaces avant et après les : ne sont pas indispensables. Si une
     ligne dépasse les 38 caractères, on peut la continuer sur la ligne
     suivante en la terminant par "-"

               DEPOSIT (DF) (F4) (DF) (D4) (FF) -
               D5 AA 96 AA AA

     On peut mettre des commentaires en les faisant précéder d'un
     astérisque (*).

               * SET SLOT NUMBER : SLOT 6
               SLOT 6 : * SET SLOT NUMBER

     Ces deux lignes sont équivalentes: les deux points séparateurs
     indiquent que ce qui suit est une commande.

     Les instructions LPL:

          On utilise des codes pour représenter des variables, des
     constantes, des noms de paramètres ou des routines. On sépare ces
     codes par des espaces. Il y a 4 catégories de codes:

               les commentaires
               les instructions
               les désignations
               les commandes

     On peut précéder une instruction par une désignation de label. Ceci
     sert à effectuer les branchements.

               LABEL READ.TRACK.AGAIN :
               GOTO READ.TRACK.AGAIN














               LABEL A2:ERROR:PRT "LENGTH ERROR"
               GOTO A2.ERROR

     Les constantes:

          Voci les différents types de constantes utilisés en LPL:

          un octet en Hexa:
               D5
               6
               00
               (FF) un octet entre parenthèse indique un octet de synchro

          plusieurs octets en hexa:
               (FF) D5 AA 96
               00 10 20 30 40 50 60 70 80

          deux octets en hexa:
               1A70 ce sont en général de sadresses ou des longueurs.

          des valeurs de pistes en hexa:
               12.5
               1A.75
               11.0
               0.
               Ces valeurs contiennent un point pour indiquer qu'il s'agit
     de pistes.

          un caractère
               "X"
               'X' on utilise les guillemets ou l'apostrophe

          plusieurs caratères:
               "DON'T FORGET TO COVER NOTCH."
               Si un des guillemets fait partie du message, utilisez
     l'autre pour la délimitation de la chaine.

          on peut mélanger les valeurs hexa et ASCII:
               89 'GRD' 8D

          les valeurs spéciales:
               ? - représente une valeur dont on ne tient pas compte (dans
     une séquence de recherche par exemple)

          les indicateurs
               YES
               NO
               ON
               OFF
               Equivalents à 0-FF, mais bien plsu 'parlants'

     Les types de variables:

          Les variables sont de différents types selon leur usage.

          Variables pour un octet:
               SLOT
               IN.DRIVE













               OUT.DRIVE

          Variables pour plusierurs octets/caractères:
               GR.CHARS
               PAT1
               SYNC.PAT
               Les variables Pattern/chaine sont de longueur variable et
     ont un octet de longueur en début. Cependant cette longueur ne peut
     excéder 15 (decimal).

          Variables pour plusieurs octets:
               RD.NIB.TRANS
               SEC.TRANS
               SELECT.TAB
               Ces variables font référence à des zones de plusieurs octets
     (par exemple des tables de conversion).

     Si vous devez utiliser un seul octet dans une variable faite pour
     plusieurs octets, faites précéder la référence dans la table par un
     plus (+)

             NIB.TRANS +2F

          Les pointeurs à deux octets
             START
             END
             TRK.LEN
             CURSOR
             PTR.W
             PTR.X
             PTR.Y
             PTR.Z
             ces pointeurs peuvent également représenter des longueurs

          les variables de pistes
             BEGIN.TRK
             END.TRK
             INCR.TRK
             SYNC.TRK
             on peut utiliser des valeurs entières ou par 1/4, 1/2 ou 3/4

          les indicateurs
             SYNC
             COUNT
             SHOW.ADDR
             ce sont des variables à un seul octet contenant un indicateur
     YES/NO, ON/OFF, ou FF/0 et agissant comme des switches pouvant ètre
     testés et modifiés. Si vous utilisez d'autres valeurs que celles
     spécifiées, les résultats seront imprévisibles.

     Assignation de valeur:

          Pour donner une valeur à une variable. On peut lui donner une
     valeur constante ou variable. Cependant la variable et la constante
     doivent ètre de mème type. Par exemple, une variable pointeur ne peut
     étre assignée qu'à une autre variable pointeur.

             START CURSOR - assigne à la variable START (début de la piste













     de données) la variable CURSOR (position du curseur)
             CURSOR 2040 - la variable CURSOR pointe en 2040.
             SLOT 6 - la var SLOT à un octet contient 6
             BEGIN.TRK 12.5 - la var de piste BEGIN.TRK contient 12.5
             COUNT YES - la var indicateur contient la valeur yes.

             PAT4 D5 AA 96
             PAT4 PAT7 - encore deux exemples corrects

             GR.CHARS 89 'GRD' - la var chaine GR.CHARS contient 4 octets:
     la valeur hexa 89 (CTRL-I) suivi des valeurs ASCII 'GRD'.

             DF.HDR3 B4 : AF.HDR3 DD - le 3ème octet du prologue de données
     contient B4 (normalement AD) et le troisème octet du prologue adresse
     contient DD.

             AF.TRL1.TEST IGNORE.TRL
             AF.TRL2.TEST IGNORE.TRL
             DF.TRL1.TEST IGNORE.TRL
             DF.TRL2.TEST IGNORE.TRL - permet d'indiquer à la RWTS
     d'ignorer les prologues Adresse et Données.

             AF.TRL1.TEST NORM.TRL1
             DF.TRL1.TEST NORM.TRL1 - remet la RWTS avec des prologues
     normaux

             AF.CSUM.TEST IGNORE.CSUM
             DF.CSUM.TEST IGNORE.CSUM
             AF.CSUM.TEST NORM.AF.CSUM
             DF.CSUM.TEST NORM.DF.CSUM - pour que la RWTS ignore ou utilise
     les checksums des prologues Adresse et Donnée

             AF.HDR1 D5
             AF.HDR2 AA
             AF.HDR3 96
             AF.TRL1 DE
             AF.TRL1 AA
             DF.HDR1 D5
             DF.HDR2 AA
             DF.HDR3 AD
             DF.TRL1 DE
             DF.TRL1 AA - la valeur par défaut des Epilogues et Prologues
     des Adresses et Données pour la lecture.

             DF.HDR1.WRT D5
             DF.HDR2.WRT AA
             DF.HDR3.WRT DD
             DF.TRL1.WRT DE
             DF.TRL2.WRT AA
             DF.CSUM.SEED.WRT 00 - indique la valeur des Epilogues et
     Prologues Données en ecriture. La dernière instruction sert au calcul
     du checksum pour écrire les données.

     Les Routines du LPL:

          Ces routines LPL (les algorithmes des précédentes versions) sont
     accessibles par l'utilisateur. Certaines sont complexes et nécessitent
     l'emploi de plusieurs variables et d'autres ne nécessitent qu'une ou













     deux variables.  Certaines routines utilisent des paramètres
     constitués de constantes ou de pointeurs et d'autres n'ont pas besoin
     de paramètres. La syntaxe exacte de ces routines est décrite en
     Appendix. Cependant nous allons en étudier quelques unes
     immédiatement. Le disque de Paramètres contient de bons exemples
     d'utilisation de ces routines.

             ABORT "DATA NOT FOUND" - interrompt l'opération en cours et
     revient au menu LS

             PAUSE "ENTER 1,2 OR 3:" - après la frappe d'une touche, la
     valeur de la touche est placée dans KEY.IN

             PRT "DISK MUST BE WRITE/ENABLED" - affiche un message à
     l'écran. Si le dernier caractère est un espace, le curseur reste sur
     la mème ligne.

             SHOW SLOT - affiche le contenu de la variable SLOT. Si
     l'indicateur SHOW.ADDR est YES ou NO, l'addresse de la variable SLOT
     est aussi affiché.

             GOTO READ.AGAIN - Branchement au label READ.AGAIN

             FIND D5 AA 96 - Recherche à partir de la position du curseur
     jusqu'au pointeur END de la séquence D5 AA 96.

             FIND PAT4 - identique au précédent, mais la recherche se fait
     sur la chaine contenue dans PAT4.

             ERROR '5' - le caractère '5' est placé sur la ligne d'état
     sous le n° de la piste

             PAT4 D4 DD FF
             PAT5 D5 AA 96
             CHANGE PAT4 PAT5 - Remplace toutes les occurences de la
     première chaine par la deuxième chaine entre START et END.

             ERASE - efface la piste sur le disque Output

             FORWARD TRK.LEN
             BACK TRK.LEN - Déplace le CURSEUR en avant ou en arrière selon
     la valeur comprise dans TRK.LEN. On peut aussi coder ces routines avec
     une constante sur 2 octets: FORWARD 024E ou BACK 0042

             CODE AD CUR.TRK 0A 0A 0A 0A 60 - la routine CODE est appelée,
     les paramètres sont décodés puis placés dans une zone mémoire et le
     controle est donné à une instruction JSR.

             PRT "ASCII TEXT TO PRINT" - la routine PRT affiche des
     informations à l'écran. si le dernier carctère est un espace, le
     curseur reste sur la mème ligne. Exemple:

             PRT "TRACK INCREMENT IS " : SHOW INCR.TRK

     Certaines routines fonctionnent différemment selon qu'on est en mode
     Nibble ou Byte. Si la dernière commande de lecture ou d'écriture était
     NREAD ou NWRITE, on passe ne mode nibble. Si la dernière commande de
     lecture ou d'écriture était SREAD, SWRITE, TREAD ou TWRITE on passe ne
     mode byte.

     Les routines fonctionnant différemment selon qu'on est en mode byte ou
     nibble sont: FIND, VER, et CHANGE.

     En mode nibble, une valeur nulle dans le pattern spécifié agit comme
     une valeur à ne pas tenir compte. On peut mettre soit "?" soit "0".

     En mode byte (utilisé lors de la lecture ou de l'écriture de
     secteurs), une valeur nulle est significative:

             NREAD : FIND D5 00 96

     On fait une lecture de nibbles de la piste, on place le curseur sur la
     première valeur D5 rencontrée, suivie de n'importe quelle valeur et
     suivi enfin de la valeur 96.

     Les routines suivantes acceptent soit des variables chaine soit des
     constantes à plusieurs octets:

             FIND
             VER
             REP
             DEPOSIT

     Le mode nibble ou byte peut se changer manuellement ou en mettant
     l'indicateur BYTE.MODE à YES pour le mode byte et à NO pour le mode
     nibble.

     les procédures de Piste:

          Une procédure de piste est une séquence d'instructions LPL qui
     seront exécutées pour chaques pistes copiées. La procédure de piste
     est définie par BEGIN.PROC et END.PROC. La procédure est ensuite
     appelée pour chaque piste copiée par la routine appelant la procédure
     de piste. Il n'y a actuellement qu'une procédure permettant cela:
     c'est COPY.  La procédure en cours est la dernière définie. Si aucune
     procédure n'est définie, c'est la procédure LPL par défaut qui sera
     utilisée:

              BEGIN.PROC
                ...
                 ... procédure de piste A
                ...
              END.PROC

              COPY 12 18 2


              BEGIN.PROC
                ...
                 ... procédure de piste B
                ...
              END.PROC

              COPY 1 9 2
              COPY 13 19 2

     Dans cet exemple, les 2 premières procédures de copie utilisent la
     procédure de piste A, et les deux suivantes utilisent B.

          Les instructions LPL avec les procédures de piste peuvent ètre
     employées selon deux modes: nibble et byte. Le mode nibble avec les
     routines NREAD, NWRITE, NVERIFY, qui traitent les pistes sous forme de
     nibbles; et le mode secteur avec les routines TREAD, TWRITE, TVERIFY
     qui traitent les pistes sous forme de 16 secteurs séparés.
          La commande COPY s'utilise comme ceci:

            COPY <begin track> <end track> <track increment>.

     Les valeurs sont stockées dans les variables BEGIN.TRK, END.TRK, et
     INCR.TRK.
          Si les pistes doivent ètre synchronisées ou si on veut utiliser
     le nibble-count, mettez les variables de piste SYNC ou COUNT à YES.
     Ces variables SYNC et COUNT ne sont pas mis à YES comme dans la
     version 5.0 du LS.

     Les codes d'erreur du LPL:

          Pendant l'exécution du programme LPL, des erreurs peuvent se
     produire qui n'auront pas été détectées par le syntax checking.
     Lorsqu'une erreur se produit, le processus en cours est interrompu et
     le message suivant est affiché:

              LPL CODE ABORTED

               ERROR CODE xx

     où xx est un des numéros suivants:

     01 GOTO sans LABEL correspondant
     02 BEGIN.PROC rencontré alors qu'on est déja en procédure piste
     03 END.PROC rencontré alors qu'on a déja quitté une procédure piste
     04 COPY rencontré alors qu'on est en procédure piste. La procédure
        COPY fait en effet appel à une procédure piste et ne peut donc ètre
        utilisée dans une autre procédure piste.
     05 USE.DEFAULT.PROC rencontré alors qu'on est en procédure piste.


     Table de Codage des Nibbles:

          La table de transformation suivante sert à calculer les checksums
     des champs données (voir le chapitre traitant la commande D)

              00:96    01:97    02:9A    03:9B
              04:9D    05:9E    06:9F    07:A6
              08:A7    09:AB    0A:AC    0B:AD
              0C:AE    0D:AF    0E:B2    0F:B3
              10:B4    11:B5    12:B6    13:B7
              14:B9    15:BA    16:BB    17:BC
              18:BD    19:BE    1A:BF    1B:CB
              1C:CD    1D:CE    1E:CF    1F:D3
              20:D6    21:D7    22:D9    23:DA
              24:DB    25:DC    26:DD    27:DE
              28:DF    29:E5    2A:E6    2B:E7
              2C:E9    2D:EA    2E:EB    2F:EC
              30:ED    31:EE    32:EF    33:F2
              34:F3    35:F4    36:F5    37:F6
              38:F7    39:F9    3A:FA    3B:FB
              3C:FC    3D:FD    3E:FE    3F:FF

     Table de décodage des pistes:

00:AA AA  01:AA AB  02:AB AA  03:AB AB  04:AA AE  05:AA AF  06:AB AE  07:AB AF
08:AE AA 09:AE AB  0A:AF AA  0B:AF AB  0C:AE AE  0D:AE AF  0E:AF AE  0F:AF AF
10:AA AB 11:AA BB  12:AB BA  13:AB BB  14:AA BE  15:AA BF  16:AB BE  17:AB BF
18:AE BA 19:AE BB  1A:AF BA  1B:AF BB  1C:AE BE  1D:AE BF  1E:AF BE  1F:AF BF
20:BA AA 21:BA AB  22:BB AA  23:BB AB

     Table de décodage des secteurs:

                 NIBBLES VALUE   NIBBLES VALUE
                 ------- -----   ------- -----
                  AA AA   00      AE AA   08
                  AA AB   01      AE AB   09
                  AB AA   02      AF AA   0A
                  AB AB   03      AF AB   0B
                  AA AE   04      AE AE   0C
                  AA AF   05      AE AF   0D
                  AB AE   06      AF AE   0E
                  AB AF   07      AF AF   0F

Table de décodage des Nibbles:
0:AA AA  20:BA AA  40:AA EA  60:BA EA  80:EA AA  A0:FA AA  C0:EA EA  E0:FA EA
1:AA AB  21:BA AB  41:AA EB  61:BA EB  81:EA AB  A1:FA AB  C1:EA EB  E1:FA EB
2:AB AA  22:BB AA  42:AB EA  62:BB EA  82:EB AA  A2:FB AA  C2:EB EA  E2:FB EA
3:AB AB  23:BB AB  43:AB EB  63:BB EB  83:EB AB  A3:FB AB  C3:EB EB  E3:FB EB
4:AA AE  24:BA AE  44:AA EE  64:BA EE  84:EA AF  A4:FA AE  C4:EA EE  E4:FA EE
5:AA AF  25:BA AF  45:AA EF  65:BA EF  85:EA AF  A5:FA AF  C5:EA EF  E5:FA EF
6:AB AE  26:BB AE  46:AB EE  66:BB EE  86:EB AE  A6:FB AE  C6:EB EE  E6:FB EE
7:AB AF  27:BB AF  48:AB EF  67:BB EF  87:EB AF  A7:FB AF  C7:EB EF  E7:FB EF
8:AE AA  28:BE AA  48:AE EA  68:BE EA  89:EE AA  A8:FE AA  C8:EE EA  E8:FE EA
9:AE AB  29:BE AB  49:AE EB  69:BE EB  90:EE AB  A9:FE AB  C9:EE EB  E9:FE EB
A:AF AA  2A:BF AA  4A:AF EA  6A:BF EA  8A:EF AA  AA:FF AA  CA:EF EA  EA:FF EA
B:AF AB  2B:BF AB  4B:AF EB  6B:BF EB  8B:EF AB  AB:FF AB  CB:EF EB  EB:FF EB
C:AE AE  2C:BE AE  4C:AE EE  6C:BE EE  8C:EE AE  AC:FE AE  CC:EE EE  EC:FE EE
D:AE AF  2D:BE AF  4D:AE EF  6D:BE EF  8D:EE AF  AD:FE AF  CD:EE EF  ED:FE EF
E:AF AE  2E:BF AE  4E:AF EE  6E:BF EE  8E:EE AF  AE:FF AE  CE:EF EE  EE:FF EE
F:AF AF  2F:BF AF  4F:AF EF  6F:BF EF  8F:EF AF  AF:FF AF  CF:EF EF  EF:FF EF
0:AA BA  30:BA BA  50:AA FA  70:BA FA  90:EA BA  B0:FA BA  D0:EA FA  F0:FA FA
1:AA BB  31:BA BB  51:AA FB  71:BA FB  91:EA BB  B1:FA BB  D1:EA FB  F1:FA FB
2:AB BA  32:BB BA  52:AB FA  72:BB FA  92:EB BA  B2:FB BA  D2:EB FA  F2:FB FA
3:AB BB  33:BB BA  53:AB FB  73:BB FB  93:EB BB  B3:FB BB  D3:EB FB  F3:FB FB
4:AA BE  34:BA BE  54:AA FE  74:BA FE  94:EA BE  B4:FA BE  D4:EA FE  F4:FA FE
5:AA BF  35:BA BF  55:AA FF  75:BA FF  95:EA BF  B5:FA BF  D5:EA FF  F5:FA FF
6:AB BE  36:BB BE  56:AB FE  76:BB FE  96:EB BE  B6:FB BE  D6:EB FE  F6:FB FE
7:AB BF  37:BB BF  57:AB FF  77:BB FF  97:EB BF  B7:FB BF  D7:EB FF  F7:FB FF
8:AE BA  38:BE BA  58:AE FA  78:BE FA  98:EE BA  B8:FE BA  D8:EE FA  F8:FE FA
9:AE BB  39:BE BB  59:AE FB  79:BE FB  99:EE BB  B9:FE BB  D9:EE FB  F9:FE FB
A:AF BA  3A:BF BA  5A:AF FA  7A:BF FA  9A:EF BA  BA:FF BA  DA:EF FA  FA:FF FA
B:AF BB  3B:BF BB  5B:AF FB  7B:BF FB  9B:EF BB  BB:FF BB  DB:EF FB  FB:FF FB
C:AE BE  3C:BE BE  5C:AE FE  7C:BE FE  9C:EE BE  BC:FE BE  DC:EE FE  FC:FE FE
D:AE BF  3D:BE BF  5D:AE FF  7D:BE FF  9D:EE BF  BD:FE BF  DD:EE FF  FD:FE FF
E:AF BE  3E:BF BE  5E:AF FE  7E:BF FE  9E:EF BE  BE:FF BE  DE:EF FE  FE:FF FE
F:AF BF  3F:BF BF  5F:AF FF  7F:BF FF  9F:EF BF  BF:FF BF  DF:EF FF  FF:FF FF

     Table de translation Physique -> Logique:

     Les n° de secteurs contenus dans le champ adresse d'une disquette
     formatée en 16 secteurs apparaissent en ordre croissant ($0 to $F).
     Ces n° de secteurs physiques sont convertis par le système
     d'exploitataion en nombres logiques pour permettre des
     écritures/lectures de plusieurs secteurs à la fois. La table

     ci-dessous montre la relation entre les n° physiques et les n°
     logiques des secteurs.

                 PHYSIQUE  LOGIQUE
                 --------  -------
                    0         0
                    1         7
                    2         E
                    3         6
                    4         D
                    5         5
                    6         C
                    7         4
                    8         B
                    9         3
                    A         A
                    B         2
                    C         9
                    D         1
                    E         8
                    F         F



             Cette DOC du 6.0 vous est offerte gracieusement par :
                             le célèbre B.CAPSLOCK


Retour sommaire