Cours de déplombage 19


Mise à jour du 19/09/2011.

A l'époque de leur rédaction, les cours de Godfather ont changé de numérotation. A part l'auteur lui-même, il est peu probable que quelqu'un possède la dernière version de chacun de ces cours. Après un récent envoi de LoGo (& Kristo), je me retrouve avec 2 cours "20" au contenu différent.

J'ai donc décidé de débaptiser celui que j'avais (cours 20 : 18 secteurs) en cours 19 pour l'aligner avec la dernière liste de cours en ma possession.
Le cours 20 concernera donc la  protection Datasoft 1988, cours qui sera mis en ligne le 20/09/2011.
Outre les références des textes édités ici, j'ai du modier le contenu du dsk pour qu'apparaisse partout "19" au lieu de "20", écrans compris.
Par ailleurs, l'ancien cours 20 ne bootait pas. J'ai changé le boot 1 pour que cela passe.
A noter que bien que le menu le propose, il n'y a pas de fichier "INFORMATIONS COURS" sur cette disquette.
Probablement pour gagner de la place.
L'option ne fonctionnera pas si vous la sélectionnez dans le menu.



Ecran
Ecran
Ecran
Ecran
Ecran
Ecran


Disk : Gdf19.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 B A$1F00 (007936) L$12FF (004863) 022 COPIEUR N6
 B A$3000 (012288) L$0537 (001335) 007 EPYX_FURY
 B A$0901 (002305) L$19E7 (006631) 027 EPYX_FURY.S
 B A$3000 (012288) L$06F3 (001779) 008 GOGSMITH                     
*A A$0000 (000000) L$0208 (000520) 004 GOGSMITH.PRG
 B A$0901 (002305) L$2BD3 (011219) 045 GOGSMITH.S
 A A$0000 (000000) L$0CCD (003277) 014 LECTEUR.PRG
 B A$0300 (000768) L$0051 (000081) 002 LECTURE PISTE AIRHEART
*A A$0000 (000000) L$00C5 (000197) 002 LECTURE WING.BAS.PRG
 B A$40E8 (016616) L$0018 (000024) 002 MODULE_IOB
 B A$4000 (016384) L$0400 (001024) 006 PAGE_TXT
 B A$4E00 (019968) L$04B0 (001200) 006 RWTS AIRHEART
 B A$4000 (016384) L$0800 (002048) 010 RWTS16
 B A$4000 (016384) L$04F0 (001264) 006 RWTS18                       
 A A$0000 (000000) L$029E (000670) 004 HELLO
 T A$0000 (000000) L$8900 (035072) 137 T.COURS 19 REVISION 1.00     
 B A$0901 (002305) L$3730 (014128) 057 GOGSMITH 1.20.S
 B A$3000 (012288) L$0762 (001890) 009 GOGSMITH 1.20
 A A$0000 (000000) L$020D (000525) 004 GOGSMITH 1.20.PRG            
 T A$0000 (000000) L$0800 (002048) 008 T.LES PROGRAMMES DE CE DISK
 T A$0000 (000000) L$0400 (001024) 004 T.INTRODUCTION
 A A$0000 (000000) L$001D (000029) 000 COPYN6.PRG                   
 B A$0901 (002305) L$059D (001437) 007 CHRCH_NIB.S
 B A$1000 (004096) L$0053 (000083) 002 CHRCH_NIB
 B A$1000 (004096) L$0051 (000081) 002 CHRCH_NIB2
 A A$0000 (000000) L$01DB (000475) 003 CHRCH_NIB.PRG
 B A$0901 (002305) L$03DD (000989) 005 CHRCH_NIB2.S

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


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


Sommaire


Lien Article
Voir Introduction.
Voir Cours 19 révision 1.00.
Voir Les programmes de ce disk.

hr cours GDF

Introduction.


===============================================================================
COURS 19 : Protections BR0DERBUND / 18 secteurs par piste.         INTRODUCTION
===============================================================================

18 secteurs par piste ?.. mais vous dites n'importe quoi cher monsieur !

Tout le monde sait qu'il y a toujours 16 secteurs par piste, et pas plus !

Pourquoi pas 43 dents par bouche ou 15 ans pour le septennat présidentiel ?

Ma foi.. peut etre que c'est possible, non ?



En informatique Apple, on peut tout faire.. tout modifier.. tout bidouiller..

La seule chose, c'est de savoir comment faire !..

Alors voici le comment faire !

=============================================================== Amicalement, G.


Retour sommaire

hr cours GDF

Cours 19 révision 1.00.


===============================================================================
COURS 19 : Protections BR0DERBUND / 18 secteurs par piste.            Godfather
===============================================================================
Révision 1.00                                              Update : 07 Mai 1988

La réalisation de ce cours n'aurait pas été aussi brillante sans l'aide
précieuse de personnes comme Mister DD, The Gog's, Numéro 6 et bien sur,
l'auteur de tout ce bordel : Roland Gustafsson!, de chez BR0DERBUND. Merci !

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

1. Introduction
2. L'enregistrement magnétique des données sur le disk
3. Le stockage des données sur la disquette (nibbles)
4. La routine rwts18, lecture, ecriture, formattage, recalibrage, etc...
5. Programme de copie
6. Problemes supplémentaires : numéros de pistes sur de mauvaises pistes, vérif
7. Adapter son copieur aux divers nouveaux broderbund
8. Historique et diagnostic de tous les derniers broderbund
9. 18 secteur par piste. qui dit mieux ?

===============================================================================
1. INTRODUCTION AU 18 SECTEURS PAR PISTE et au probleme que ca nous pose..
===============================================================================

Au menu, aujourd'hui, le plombage courant de l'éditeur us a sortir les softs
Apple les plus beaux, vous l'avez reconnu si je vous parle de karateka, de
captain goodnight, de wings of fury pour ne citer que ceux-ci.. BR0DERBUND.
En bootant ce cours, vous vous etes peut etre demandé qui était le gars
concerné par la dédicace : Roland Gustafsson. Qui c'est ce poireau
Gustafsson, outre un rédacteur chevronné du magazine américain NIBBLE,
est le plombeur "officiel" de Broderbund. et donc l'auteur de la protection que
nous allons étudier ici : le 18 secteurs par piste.


>>>>>>>>>>>>>>>>>>>>
Notes de Deckard du 07/05/2007: tout d'abord dans tout le texte de GDF, le
nom mentionné est Steven Gustavson au lieu de Roland Gustafsson. j'ai corrigé.
Il faut savoir que Steven a un lien quand même avec Roland!
Il s'agit d'un easter eggs utilisé dans son soft PRINTSHOP COMPANION.
Si vous bootez la face 1 du soft et tapez STEVEN suivi de la touche ESC,
et bien l'écran s'affiche à l'envers!! Inutile mais rigolo.
Ensuite Roland n'a rien écrit dans le magazine Nibble. Par contre, j'ai retrouvé
plusieurs articles signés de sa main dans le magazine A+. Il s'est intéressé à
la programmation du son sur Apple IIGS.
<<<<<<<<<<<<<<<<<<<<

Imaginez un disk qui contienne 18 secteur par piste de données sur $23 pistes,
numérotées normalement de $00 à $22.. c'est à dire autant de pistes qu'un disk
au format 3.3, mais contenant chacunes deux secteurs de données en plus, soit
deux fois $FF octets. ($1FF octets en plus par piste!).
Le déplombage d'une protection "format", vous le savez bien, passe toujours par
une étape de conversion de format. Le disk original a un format non standard,
on va le convertir en premier lieu au format standard, soit en 16 secteurs
par piste!.. seulement ici, un grave probleme se pose !
Voici, pour essayer de vous l'expliquer, la "contenance" de ces deux formats :

16 secteurs par piste pour 35 pistes à $FF octets par secteur.....143360 octets
18 secteurs par piste pour 35 pistes à $FF octets par secteur.....161280 octets

Vous comprenez le probleme ? non, pas encore ? alors je continue..

16 secteurs par piste pour 35 pistes : 560 secteurs de données par face !
18 secteurs par piste pour 35 pistes : 630 secteurs de données par face !

Ca veut dire qu'en considérant que vous retrouviez la routine de lecture
18 secteurs dans un quelconque original broderbund, et que vous soyez à meme,
comme toujours, de préparer la conversion de format, une question reste posée :

Vous avez 70 secteurs "en trop" qui sont indispensables..
Où allez vous les mettre puisqu'il faut les mettre sur un disk "déplombé" -
c'est le but du jeu - donc en 16 secteurs par piste... en se rappelant que ces
16 secteurs par piste sont - en théorie - déjà occupé par des données du soft!
Suis-je assez clair ?

Pierrette a un pot au lait qui ne peut contenir qu'un litre, et elle doit
ramener au village - sous peine de cataclysme galactique et sidéral - un litre
et demi de lait. vous avez une solution à ce probleme vous ?

Je vais essayer, avec ce cours et théoriquement un cours futur numéro 19.2,
de vous expliquer et de vous clarifier les deux solutions qui se présentent à
nous, après - croyez le bien - d'intenses reflexions de par la planète entière!

===============================================================================
2. L'ENREGISTREMENT MAGNETIQUE DES DONNEES SUR LE DISK
===============================================================================

Première chose messieurs, vous allez vous ouvrir l'esprit.. etre bien ouvert à
tout ce qui pourrait etre dit ici.. à toute nouveauté.. élargissez votre champ
de reflexion possible, concentrez vous, inspirez.., expirez.. et comprenez!

Pour l'explication qui va suivre, et je dit ça pour les perfectionnistes, je
vous préviens, j'ai du déformer des faits pour une meilleure compréhension.
Par exemple, je vais sous-entendre que la tete de lecture tourne autour des
pistes alors que c'est la disquette qui tourne sous la tete de lecture.
Vous m'accorderez bien que l'effet est identique selon le point où l'on se
place, et vous m'accorderez également que j'ai le droit de me permettre les
quelques "mensonges" qui vont suivre, dans votre interet.. alors si vous
decelez des anomalies - parce que vous en savez déjà trop - vous ne pourrez
plus m'accuser ici, je m'en excuse ici par avance. Allons-y..

Je vais vous demander d'imaginer la piste d'une disquette.. piste que l'on va
comparer pour simplifier les choses à une piste cycliste, telle celle de bercy
si je ne m'abuse. une piste circulaire, sur laquelle se déplace un petit
bonhomme (le coureur) à une certaine vitesse. Ce cycliste qui fait un tour de
piste en un certain temps est à comparer, lui, avec la tete de lecture de votre
drive qui ferait le tour d'une piste donnée en un certain temps.
Le probleme qui nous est posé est celui du formattage. Si la lecture d'une
piste peut se faire secteur par secteurs en un temps quelconque (on peut lire
une piste en prenant quelques secteurs à chaque fois, et si son drive est trop
rapide ou la routine de lecture trop lent, devoir repasser une seconde fois,
voir une troisième fois pour prendre le reste..).

Le formattage est une "découpe" d'une piste en secteurs selon un format donné.
Pour le formattage, le probleme est différent. On découpe le disk, et le
3eme secteur p.e., quel que soit le format, 19, 18, 16, 13 secteurs ou autre,
doit obligatoirement se trouver enregistré pile après le 2nd (sect.physiques),
et pile après le 1er.. tout doit donc etre découpé depuis le secteur 0,
qui marque le "début de la découpe", et jusqu'au dernier secteur, en une seule
passe!.. en un seul tour de terrain.

On supposera que notre cycliste parte de la ligne de départ (qui se trouvera
etre à peu de choses près aussi la ligne d'arrivée - fin de la piste),
avec une série de 18 drapeaux, puisqu'on est dans le 18 secteurs par piste.
Il va devoir en déposer un tous les 22.22 metres autour d'une piste de 400
mettres de circonference..par exemple.
Il met un certain temps à saisir un drapeau et son piquet, et encore un
certain temps à viser et à le planter pour marquer le début d'une des coupes
de la piste, d'une des divisions qu'il veut y faire.. d'un des secteurs de la
piste qu'il va parcourir. Le probleme, je le rapelle, est qu'il doit planter
tous les drapeaux en un seul tour.. et si, sur ces 18 drapeaux, il n'arrive à
en planter que 17 p.e., le formattage de cette piste est à recommencer.. il
faut qu'il arrive au moins à en planter le nombre désiré au départ, relatif
au format.

Vous comprenez bien que plus le cycliste roulera lentement autour de la piste,
plus il aura de temps pour planter ces drapeaux, et donc plus il sera en mesure
d'en planter un grand nombre.
En 1979, le DOS 3.2 ne contenait que 13 secteurs par piste pour une question
de vitesse. le drive proposé par Apple à l'époque n'était pas assez fiable,
aussi le formattage se faisait il plus lentement, et notre cycliste ne pouvait
avoir le temps de ne poser guère que 13 drapeaux..
Comprenez par "drapeau", l'écriture du champ adresse, point de séparation entre
deux secteurs de la piste, et comprenez qu"entre deux drapeaux, des données
sont écritures (la trace du pneu reste sur la piste.. si vous voulez (!?)).
Nous allons voir plus loin la tete de ces drapeaux et la marque de la trace du
pneu sur chaque piste 18 secteurs, quand je parlerais du format 18'.

Maintenant, on est allé jusqu'à 16, et BR0DERBUND, avec des drives lents,
est arrivé à formatter un disk en 18 secteurs. Si vos drives sont d'une
vitesse sympa pas trop rapides (vous pouvez tester leur vitesse avec un soft
tel Copy II+ 5.x, ou EDD IV v4.2), vous pourrez donc copier les Broderbund
sans trop de problemes.. bien qu'il y ait parfois quelques modifications à
apporter au boot (en piste $0 en général) pour avoir une copie qui marche.
La lecture, je vous l'ai expliqué, pouvant se faire en plusieurs fois, donc
whatever the speed of your disk drive head, les softs 18 secteurs bootent
aussi bien sur n'importe quel drive, mais ne se copient pas partout..au nibble
copieur. (en théorie, le copieur que l'on va réaliser doit marcher partout,
fonctionnant à une vitesse maximale "normale".)

Apple n'a pas encore fait - et ne fera pas - de DOS 3.4 en 18 secteurs pour
cette raison là : tous les drives, s'ils peuvent lire le 18 secteurs, ne
peuvent pas tous le formatter.

===============================================================================
3. LE STOCKAGE DES DONNEES SUR LA DISQUETTE 18 SECTEURS
===============================================================================

En général, quelques pistes (piste $00, ou bien pistes $00 et $01) sont au
format 3.3, 16 secteurs par piste.. tout ce qu'il y a de plus normal, et ce
sont ces pistes qui contiennent la fameuse rwts18. mais laissez moi plutot
vous parler du format 18 secteurs dont il est question.

En fait , on parle de 18 secteurs par pistes car chaque piste contient
l'equivalent en données de 18 secteurs dos 3.3 de $FF octets, soit $17FF octets
mais sur le disk, les données sont regroupées en macro secteurs.
On ne compte pas, donc, 18 secteurs de $FF octets mais 6 secteurs de (3 * $FF)
octets, ce qui revient au meme compte incroyable de $17FF octets par piste,
contre les $15FF par piste que nous offre le format 3.3.

Le premier macro-secteur correspond aux secteurs 00,06,12.
Le second  macro-secteur correspond aux secteurs 01,07,13.
Le trois_  macro-secteur correspond aux secteurs 02,08,14.
Le quatr_  macro-secteur correspond aux secteurs 03,09,15.
Le cinqu_  macro-secteur correspond aux secteurs 04,10,16.
Le sixieme macro-secteur correspond aux secteurs 05,11,17...soit 18 secteurs!!

Chaque macro-secteur est constitué de la manière suivante :
(pour avoir une comparaison avec le format 3.3, reportez vous au cours 6)
 _____________________________________________________________________________
!                                                                             !
!                                                   ( LE FORMAT 18 SECTEURS ) !
!                                                                             !
! - Un champ adresse : Prologue D5 9D                                         !
!                                                                             !
!                      Piste    NN    ! A TRANSFORMER A L'AIDE D'UNE          !
!                      Secteur  NN    ! TABLE DE CONVERSION                   !
!                      Checksum NN                                            !
!                      Epilogue AA                                            !
!                                                                             !
! - Deux nibbles self-sync      FF FF                                         !
!                                                                             !
! - Un champ données : Prologue A4    ! variable , selon le soft..ATTENTION!  !
!          (je reparlerais de ce prologue comme "le header qui peut varier"!) !
!                                                                             !
!                      Données  $400 NIBBLES (4 Nibbles --> 3 Octets)         !
!                      Checksum NN                                            !
!                      Epilogue D4                                            !
!_____________________________________________________________________________!

Les nibbles sont transformé en octets au fur et à mesure de la lecture,
à l'aide d'une table de conversion. contrairement au dos 3.3, où la conversion
(post-nibblelisation) se fait après la lecture des nibbles dans un buffer.

D'autre part, sur certains broderbund, comme ce fut le cas pour airheart,
la piste $1C n'existe pas. Elle était identique à la piste $1B et portait le
numéro de piste $1B en champ adresse. mais c'est un "plus" qui n'est pas
vraiment important quant à la protection pure "18 secteurs" et qui n'a plus
été employé dans les tous derniers Broderbund. donc, pas de panique!
On en reparlera dans le cours 'déplombage' mais que peu ici bas..

===============================================================================
4. LE BOOT (EXEMPLE : AIRHEART) ET LES ROUTINES DE LECTURE-ECRITURE 18'
===============================================================================

On a suivi le boot de Airheart, boot que je prendrais comme exemple ici, mais
tout peut changer, tout changera, et - encore une fois - ceci n'est qu'un plus
à ce cours, et importera peut pour ce que l'on veut obtenir en fin de ce cours
c'est à dire un copieur d'un original donné plombé en 18 secteurs...

Voici donc l'exemple du boot de Airheart.
Le soft chargeait successivement 3 routine de lecture/écriture :

- La première en $D000, est une routine read utilisée par le boot 2 (load only)
- La seconde fait partie du Disk Operating System de Gustafsson ($0400-09FF),
  et est adressée par un vecteur en $040F.
- La troisième, qui est cette fois bel et bien un routine lecture/écriture,
  est chargée en $4E00 (Airheart) au moment de l'écriture des records.
  Sur Wings of Fury, cette rwts figurait à une autre adresse, mais c'était
  comme nous allons le voir, à peu de choses près, la meme routine.
  Elle est sauvé en catalog sur ce disk sous le nom "RWTS18".
  Figure aussi sur ce disk la routine prise ds Airheart "RWTS AIRHEART".

Après cet apparté relatif au boot, voici le principal du sujet :
 _____________________________________________________________________________
!                                                                             !
! LA LISTE DES COMMANDES DE LA RWTS18                                         !
! -----------------------------------                                         !
!                                                                             !
! La routine d'accès disk se trouve en $4E00. Je la labelle RdDisk, car cette !
! adresse peut changer selon les softs. ce que je verrais plus loin.          !
!                                                                             !
! La syntaxe d'utilisation est la suivante : JSR RdDisk, suivi de un octet de !
! commande et de 0 à 18 octets de paramètres relatifs à cette commande , dont !
! va suivre la liste.                                                         !
!                                                                             !
! 3 adresses de la page zero sont modifiées à chaque accès disk, aussi, si    !
! elles sont importantes dans votre soft, il va falloir les copier dans trois !
! autres adresses avant l'accès disk. ce sont :                               !
!                                                                             !
! $FD Numéro du Slot drive * $10. (généralement $60 pour le slot 6)           !
! $FE Numéro de piste où la pioche devra se rendre.                           !
! $FF Numéro de la piste actuelle multiplié par 2, où se trouve la pioche     !
!                                                                             !
! Voici maintenant la liste des commandes disk, suivie du nombre de           !
! paramètres necessaires, et tous les détails concernant la commande          !
! concernée et ses paramètres.                                                !
!                                                                             !
! Commande 00 (2 paramètres)                                                  !
! -----------                                                                 !
! Mise en route du moteur.                                                    !
! Paramètre P1 : Drive (toujours 01)                                          !
! Paramètre P2 : Temporisation (souvent 0A)                                   !
!                                                                             !
! Commande 01 (Aucun paramètre demandé)                                       !
! -----------                                                                 !
! Arret du moteur                                                             !
!                                                                             !
! Commande 02 (2 paramètres)                                                  !
! -----------                                                                 !
! Déplacement de la tete de lecture (seekabs).                                !
! Pamamètre P1 : 00 _ Pas de controle sur la piste actelle. Le déplacement se !
!                     fait en supposant que vous etes sur la piste dont le    !
!                     numéro est mémorisé en $FF. (multiplié par 2)           !
!                FF _ Lecture d'un champ adresse sur la piste actuelle pour   !
!                     définir où se trouve la tete, et assurer de bien la     !
!                     déplacer sur la bonne piste destination.                !
! Paramètre P2 : Numéro de la piste à atteindre.                              !
!                                                                             !
! Commande 03 (1 paramètre)                                                   !
! -----------                                                                 !
! Lecture séquentielle d'une piste.                                           !
! Paramètre P1 : Numéro de la page mémoire où doit commencer le chargement    !
! ($20 fera commencer le chargement en $2000).                                !
!                                                                             !
! Commande 04 (18 paramètres)                                                 !
! -----------                                                                 !
! Lecture sélective de secteurs sur une piste.                                !
! Paramètres P1 à P18 : Numéros des pages mémoires à charger.                 !
! Les valeurs 00 sont transformées en $CF, c'est à dire que le chargement     !
! s'effectue en rom : rien ne se passe!. (il n'est rien possible de charger   !
! directement en page 0, elle contient tous les paramètres relatifs aux       !
! pistes actuelle/dest..). Si vous voulez charger des données en page 0, il   !
! faut les charger ailleurs et les mover (cf cours 12) en $00,X.              !
!                                                                             !
! Commande 05 (1 paramètre)                                                   !
! -----------                                                                 !
! Ecriture (analogue à la commande 03)                                        !
!                                                                             !
! Commande 06 (18 paramètres)                                                 !
! -----------                                                                 !
! Ecriture (analogue à la commande 04)                                        !
!                                                                             !
! Les options                                                                 !
! -----------                                                                 !
! Pour les commandes 03 à 06, les bits 6 et 7 du caractère de commande sont   !
! significatifs. si le bit 6 est levé, $FE sera incrémenté à la fin de la     !
! lecture. La prochaine lecture sera faite automatiquement sur la piste       !
! suivante. Si le bit 7 est levé, la lecture sera répétée tant qu'une erreur  !
! est détectée lors de l'accès disk. (avec un beau bip sonore pour dire "je   !
! recommence").                                                               !
!                                                                             !
! Exemple : JSR RdDisk                                                        !
!           HEX C3                                                            !
!           HEX 20                                                            !
!                                                                             !
! Cette routine lit la piste dont le numéro est dans $FE, en déplacant au     !
! besoin la tete de lecture sur cette piste si elle ne s'y trouvait pas déjà, !
! et charge les données de cette piste dés $2000. L'opération se répète s'il  !
! y a erreur lors de l'accès disk, et $FE, le numéro de la piste, est         !
! incrémenté à la fin de la lecture. A ce moment là, le programe ci dessus    !
! reprend son cours, juste après les paramètres.                              !
!_____________________________________________________________________________!
     
PROGRAMME DE LECTURE D'UNE PISTE
================================

VOICI UN PROGRAMME QUI PERMET DE LIRE N'IMPORTE QUELLE PISTE DE LA DISQUETTE
AIRHEART (SAUF LES PISTES 00 ET 1C) AUX ADRESSES 2000.31FF. ON PEUT AINSI
(ET C'EST CE QUE J'AI FAIT) COPIER TOUTE LA DISQUETTE SOUS FORME DE FICHIERS
BINAIRES. LE RESTE N'EST PLUS QU'UNE QUESTION DE PATIENCE !


0300-   A2 00                   LDX #$00
0302-   B5 00           BOUCLE1 LDA $00,X       ;SAUVE PAGE 0
0304-   9D 00 1F                STA $1F00,X     ;EN PAGE $1F
0307-   E8                      INX
0308-   D0 F8                   BNE BOUCLE1
030A-   A9 60                   LDA #$60
030C-   85 FD                   STA $FD
030E-   20 00 4E                JSR RdDisk      ;MOTEUR EN MARCHE
0311-   00                      BYT $00
0312-   01                      BYT $01         ;DRIVE 1
0313-   00                      BYT $00
0314-   A9 A0                   LDA #$A0        ;RECALIBRE LA TETE
0316-   85 FF                   STA $FF         ;EN PISTE 0
0318-   A9 00                   LDA #$00
031A-   20 E3 50                JSR $50E3
031D-   A9 00                   LDA #$00
031F-   85 FF                   STA $FF
0321-   20 00 4E                JSR RdDisk      ;DEPLACE LA TETE
0324-   02                      BYT $02         ;EN PISTE 1
0325-   00                      BYT $00
0326-   01                      BYT $01
0327-   AD 80 03                LDA $0380       ;NUM. DE PISTE EN $0380
032A-   8D 3C 03                STA PIS TE
032D-   C9 15                   CMP #$15
032F-   90 06                   BCC INF15
0331-   20 00 4E                JSR RdDisk      ;SI PISTE A LIRE >= $15
0334-   02                      BYT $02         ;DEPLACE D'ABORD LA TETE
0335-   FF                      BYT $FF         ;EN PISTE $19
0336-   19                      BYT $19
0337-   20 00 4E        INF15   JSR RdDisk      ;POSITIONNE LA TETE
033A-   02                      BYT $02
033B-   FF                      BYT $FF
033C-   01              PISTE   BYT $01
033D-   20 00 4E                JSR RdDisk      ;LECTURE
0340-   C3                      BYT $C3         ;D'UNE PISTE
0341-   20                      BYT $20         ;AUX ADRESSES $2000.31FF
0342-   20 00 4E                JSR RdDisk      ;ARRET MOTEUR
0345-   01                      BYT $01
0346-   A2 00                   LDX #$00        ;RESTAURE PAGE 0
0348-   BD 00 1F        BOUCLE2 LDA $1F00,X
034B-   95 00                   STA $00,X
034D-   E8                      INX
034E-   DO F8                   BNE BOUCLE2
0350-   60                      RTS

Pour lancer ce programme, il suffit de faire :

]BLOAD RWTS AIRHEART,A$4E00                     ; chargement rwts
]BLOAD LECTURE PISTE AIRHEART,A$300             ; et chargement bloader piste
]POKE 896,<NUMERO DE PISTE>                     ; et mettre Airheart en drive 1
]CALL 768                                       ; la piste se charge..

===============================================================================
5. PROGRAMMES DE COPIE 18 SECTEURS PAR PISTE     Par numero6, Mr.DD, Gog's, Gdf
===============================================================================

Plusieurs programmes de copie ont été developpé à partir de la routine rwts de
Gustafsson. Pour l'instants, les programmes disponibles avec ce cours sont au
nombre de deux. mais à vrai dire, ils font presque double emploi.

Le premier à ma connaissance fut celui de Numéro 6 pour Toy Shop,
qu'il adapta peu de temps après à Where in the world is Carmen SanDiego?.
Le second fut réalisé mi-avril par the acs et moi meme, pour Wings of Fury.

Je ne vais pas vous en dire très long dans ce passage puisque les programmes
sont déjà faits - et les sources disponibles sont sur ce disk meme ! - et que
les commandes de la rwts18 qu'utilisent ces copieurs viennent à peine d'etre
passées en revue. Il vous suffit donc pour en savoir plus de booter un merlin,
et de charger le fichier "GOGSMITH".

On va voir plus loin les problemes que l'on peut nous greffer en plus sur ce
plombage, et aussi le "comment adapter ce gogsmith à d'autres Broderbund".

===============================================================================
6. PROBLEMES SUPPLEMENTAIRES : UN FAUX NUMERO DE PISTE et VERIF' AU BOOT
===============================================================================

a) UN FAUX NUMERO DE PISTE
--------------------------

Il est possible, car ca a été fait par Gustafsson, de mettre une piste numérotée
16 à l'endroit de la piste 17.. n'est ce pas ?. Un numéro n'est qu'un numéro.

Il faut, pour la lire, 1/ s'avoir où se trouve la pioche..
                       2/ se déplacer sur la piste concernée
                       3/ lire la piste avec le numéro quelle contient
                       (différent du numéro de piste où se trouve la pioche)

Mais permettez moi de ne pas en rajouter sur ce sujet étant donné que R.Gustaf'
a arreté de manipuler ainsi les numéro de pistes.. ca ne vous sera donc plus
utile dans le futur.. à moins qu'il décide de s'y remettre, cas dans lequel je
reviendrais sur ce chapitre aussitot!

Pour en apprendre plus sur le sujet, reportez vous au cours 17.2 sur
le plombage - entre autre - d'ultima 5.. la meme chose avait été faite avec les
numéros de secteurs d'un disk prodos standard.. impressionnant!.

b) VERIF DU DISK ORIGINAL AU BOOT
---------------------------------

Je n'ai jamais travaillé avec de vrais originaux Broderbund dans mon drive,
en effet, j'ai toujours eu des copies de taiwan entre autre, qui bootent comme
l'original mais que je soupconnes d'avoir été déjà un peu trafiquée..

On m'a parlé d'une vérif au boot des originaux-originaux Broderbund qu'il
fallait oter sur une copie echo+ pour quelle boote..mais je ne peut rien vous
en dire , ma foi ! (mais rien de bien méchant sans doute!)

Priez pour que vous receviez comme moi toujours des copies d'originaux, sinon
on en reparlera ici meme.. (je voulais vous prévenir, ne pouvant pour l'instant
vous en dire plus sur le sujet!)

===============================================================================
7. LE FIN DU FIN : ADAPTER LE GOGSMITH AUX DIVERS NOUVEAUX SOFTS BR0DERBUND
===============================================================================

Pour permettre au gogsmith de venir à bout de n'importe quel disk original de
chez Broderbund, en laissant pour l'instant le copieur indépendant de
l'original (pour mettre le copieur au boot, c'est une autre histoire),
il faut modifier dans ce copieur, plusieurs parametres relatifs à cet original.

1) Le plan des faces
--------------------
Le copieur permet de copier des faces "A" ou "B" (on peut modifier le source
facilement pour prendre une touche "C" voir "D" si les parms ne sont pas les
memes sur toutes ces faces), et fait correspondre à la face A une table 1618.
Sur la face A de wings of fury par exemple, les deux premieres pistes sont en
16 secteurs, les pistes $02-22 sont en 18 secteurs et enfin, à cause du copieur
rajouté où il restait de la place, il existe une piste $23 en 16 secteurs.
Le "plan" de la face A est donc paramétré ainsi dans le copieur :

MAP_A   HEX   161618181818181818181818181818181818
        HEX   181818181818181818181818181818181816
        HEX   00

Le 00 délimite la fin du disk. Ca indique ainsi aussi le nombre de pistes pour
la ou les faces concernées par une map donnée.
Pour la face B qui ne fait que $22 pistes de 18 secteurs si je ne m'abuse, on
a la map suivante :

MAP_B   HEX   181818181818181818181818181818181818
              181818181818181818181818181818181800

Il va falloir modifier ce plan des pistes pour chacune des faces en fonction du
format de chacune des pistes de l'original concerné. Pour cela, pour définir
pour un original quelles sont les pistes en 16 ou en 18 secteurs, il suffit
de tenter une copie locksmith de l'original concerné. (tapez "1" puis return
au "menu" du locksmith 6.0 fdb et mettez votre original en drive 1, pour lire
uniquement et non pas tenter l'ecriture).
Notez ensuite toutes les pistes copiables et celles qui ne le sont pas.
Ainsi, vous releverez que les pistes copiables au locksmith rapide sont les
pistes en 16 secteurs, et les pistes incopiables sot les pistes en 18 secteurs.
A vous ensuite de reporter, comme nous venons de le voir, ces résultats dans le
source du gogsmith. (prière d'en creer une nouvelle version).

L'idéal serait de rajouter un paramétrage possible du copieur avant la copie,
comme le locksmith 6.0 et sa possibilité de modifier n'importe quelle adresse..
(reportez vous au cours 6 ou au doc on the rocks #16 pour plus de précisions).
Mais on est tous trop fainéants..

2) Le "Header" qui peut varier.. yé! yé!
----------------------------------------
Le header qui peut varier, vous vous rappelez ? j'en parlais plus haut lorsque
je décortiquais le format 18 secteurs, au nibble editor.
Le format, je vous le rappelle est le suivant :

                        D5 9D pp ss cc AA FF FF hh

           (pp = piste, ss = secteur, cc = checksum, hh = header).

Selon les originaux, le headers hh peut varier. et empecher la lecture!
C'est comme si sous dos 3.3 (reportez vous au cours 6) je mettais un D4 AA EB
au lieu de DE AA EB, ou encore une autre valeur de nibble valide puis   AA EB.
L'incompatibilité de lecture est assurée, donc pas de copie.
Il faut parametrer ce point là donc également, non pas dans le copieur mais
dans la rwts18 elle meme qui se charge en $4E00.

Ce header se trouve en $4E8E pour ce qui est de la routine write18.
Ce header se trouve en $5001 pour ce qui est de la routine read.18.

Deux solutions donc : modifiez la rwts18 avant de la resauver sur le disk,
ce qui n'est pas conseillé car il faudrait avoir 15 rwts pour 15 originaux,
ou encore rajouter dans le source un couple de LDA STA pour modifier ces
adresses pour un original donné, avant la lecture ecriture 18 secteurs.

Là encore, un copieur à adresses paramétrables ferait un malheur..

Pour mettre le copieur au boot du disk copie plombée, il vous faudra vous
referer au accolade boot 1.00. C'est trop compliqué pour etre expliqué ici,
puisque j'ai au de quoi en faire tout un cours : le godfather's products 12.

===============================================================================
8. HISTORIQUE DES QUELQUES DERNIERS SOFTS PLOMBES PAR BR0DERBUND
===============================================================================
(cette rubrique reste encore à completer..)

Airheart        18 secteurs - Header variable D4
Toy Shop        18 secteurs - Header variable ..
Carmen USA      18 secteurs - Header variable ..
Wings of Fury   18 secteurs - Header variable 96

===============================================================================
9. 18 SECTEURS PAR PISTE , QUI DIT MIEUX ?
===============================================================================

"Le 18 secteurs par piste, on ne peut mieux!". Je cite ********************,
**************************************************************************.
Ma foi ***, tu te trompes.. et c'est encore une fois Gustafsson qui te le prouve
avec le plombage que lui a demandé Infocom : du 19 secteurs par piste !

Voici l'anecdote telle que la légende nous la rapporte :

Dans le monde du soft, du coté éditeurs, un disk vaut une petite fortune...et
le lancement d'un soft se chiffre au bas mot à plus d'un million de dollars,
rien que ca.. aussi, tout éditeur a intéret à publier des softs occupant un
minimum de place disk. moins il y aura de disks, moins il y aura
d'investissement initial pour l'éditeur. donc, sourire sur son visage.
Jusqu'à présent, Infocom - qui est un éditeur us peut connu des francais sur
Apple puisqu'il ne publie que des jeux d'aventures textuels en anglais ! -
n'utilisait aucune protection (16 secteurs par piste), et pour pouvoir mettre
un maximum de données sur un minimum de place, utilisait un compresseur de
texte...petit programme génial, tel un compresseur graphique.

Seulement, pour un de leurs derniers softs au mois d'avril 88, TRINITY,
il leur aurait fallu, texte compressé au maximum, deux disquettes.. et ça,
ils ne voulaient meme pas y penser.. aussi ont-ils fait appel à Gustafsson
pour qu'ils leur parlent de son 18 secteurs par piste, ce qui, vous le
comprennez bien, aurait-pu bien arranger leur probleme!..
Seulement, après de simples calculs de longueur de data et de nombre de
secteurs, meme les 18 secteurs n'y suffisaient pas.. il leur fallait un
19 secteurs par piste..

Ma foi, je ne peut guère vous en parler plus longuement ici car ca
nécessiterait également un cours et des mois entiers d'étude , believe me ,
m'enfin TRINITY est bel et bien sorti en 19 secteurs de $FF octets par piste,
sur une seule disquette !

*** a perdu son pari.. Gustafsson a encore fait plus fort.. et Broderbund
s'est fait b.. puisque Infocom a racheté les droits exclusifs de ce plombage!
moralité, on verra sans doute à jamais, du 18 secteurs sur les Broderbund,
ou dumoins, pas de 19 secteurs - sauf accord galactique Infocom/Broderbund.

Seul chose à retenir : 18 secteurs par piste, on peut faire mieux!
mais c'est une autre histoire! essayez déjà de bouffer correctement ce cours!

================================================= Good luck Captain Goodnight !


Retour sommaire

hr cours GDF

Les programmes de ce disk.


===============================================================================
COURS 19 : Protections BR0DERBUND / 18 secteurs par piste.            Godfather
===============================================================================
Révision 1.00                                              Update : 07 Mai 1988

Les programmes de ce disk sont :

        1) COPYN6.PRG
        -------------
        Le programme de copie d'originaux 18 secteurs de numéro 6..
        Le premier qui ait jamais été écrit par des déplombeurs.

        2) GOGSMITH.PRG
        ---------------
        Le programme de copie 18 secteurs réalisé par the gogs et moi meme.
        (je revendique la paternité du titre - toute ressemblance avec un
        nom de copieur déjà éxistant serait bien evidemment fortuite.)
        On en parle dans ce cours.
        La version améliorée 1.20 est encore en chantier! (sur ce disk).

        3) RWTS16
        ---------
        Quoi de plus bete qu'une routine de lecture/ecriture/formattage
        16 secteurs relogée ?.
        Toutes les commandes de cette rwts sont expliquées dans le cours 3.

        4) RWTS18
        ---------
        Le principal sujet de ce cours : la rwf de Gustafsson 18 secteurs.
        Toutes les commandes de cette rwts sont expliquées dans ce cours.

        5) LECTURE WING.BAS.PRG
        -----------------------
        On reparlera de ce bete programme dans un futur cours sur les
        Broderbund relatifs aux methodes de conversion 18/16 secteurs.
        Cela permet de lire et de visionner les pistes de Wings of fury,
        un peu comme le ferait picscan (cours 5), mais en 18 s. bien sur.

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


Retour sommaire