Cours de déplombage 24



Ecran
Ecran
Ecran
Ecran


Disk : Gdf24.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 B A$0800 (002048) L$0300 (000768) 005 BOOT1.DATAEAST
 B A$0901 (002305) L$1772 (006002) 025 BOOT1.DATAEAST.S
 B A$D300 (054016) L$0700 (001792) 009 BOOT2.DATAEAST
 B A$0901 (002305) L$2845 (010309) 042 BOOT2.DATAEAST.S
 B A$0901 (002305) L$13AD (005037) 021 FILEB.DATAEAST.S             
 T A$0000 (000000) L$6800 (026624) 104 T.COURS 24 REVISION 1.00
 T A$0000 (000000) L$0700 (001792) 007 T.INTRODUCTION
 T A$0000 (000000) L$0400 (001024) 004 T.LES PROGRAMMES DE CE DISK
 A A$0000 (000000) L$00E9 (000233) 003 HELLO
-A A$0000 (000000) L$01FF (000511) 014 LECTEUR.PRG
-B A$01FF (000511) L$60A9 (024745) 006 P.FLOB4                      !
 A A$0000 (000000) L$0C61 (003169) 014 LECTEUR.PRG

This catalog contains 12 files. 2 were DELETED.
----------------------------------------------------------------------


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


Sommaire


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

hr cours GDF

Introduction.


_______________________________________________________________________________

INTRODUCTION COURS 24                                                 Godfather
_______________________________________________________________________________

Révision 1.00                                                     Decembre 1988



Salut tout le monde !!!

Pourquoi un cours sur la protection et le boot Data East ???

D'abord parce que le boot est très interessant et la protection simple donc
représentant un bon test pour voir vos progrès.. essayez d'abord de logiquement
déplomber platoon seul, en espérant que vous ne serez pas bloqué par de trop
simples notions en assembleur - mais je ne pense pas - , avant de lire le
cours de ce disk.. ok ?

Ce cours est à rajouter aux cours Epyx, Broderbund, Activision, Sierra..etc,
qui, ensemble, forment reelement la bible de toutes les protections actuelles
disponibles sur Apple et utilisée par ces éditeurs sans grandes modifications
assez régulièrement... donc, mis à part leur interet en tant que tel,
en tant que protection défi, c'est aussi actuel et "pratique" si vous
recevez, si vous achetez vous memes, ou si vous aidez une des deux coopératives
d'achat sur Apple à nous fournir les prochains originaux 5'25 de tel ou tel
éditeur concerné.. et vous pourrez déplomber et signer ces disks vous-memes !

Allez va.. bonne chance avec Platoon.. et Data East en général !!!

_____________________________________________ Salutations digitales, GDF. Dec88


Retour sommaire

hr cours GDF

Cours 24 révision 1.00.


_______________________________________________________________________________

COURS 24 : PROTECTION ET MINI_DOS (c) DATAEAST 1985,1987              Godfather
_______________________________________________________________________________

Révision 1.00                                         Update : 25 Decembre 1988


Salut les fous !!


Je viens de terminer à l'instant tous les sources de ce cours !!
d'après platoon, le tout dernier data east..

C'était fou ! J'ai bien cru que je ne comprendrais jamais à quoi servent tous
les paramètres d'entrée de la routine load file du minidos dont je vais vous
parler.. (c) Quicksilver Software, pour Data East!...

La protection dont je vais vous parler maintenant est ridicule, meme par
rapport à une protection Epyx très simple en soi (cf cours 10 et 10.2),
mais le mini_dos qui suit cette protection est beaucoup plus enrichissant!

A noter avant de partir : tous les listings, tous les programmes et routines
dont je vous parle dans ce cours sont en catalog en source détaillé et clair
sur ce disk ! pour vous.. alors bootez un merlin pro pour les étudier plus à
fond qu'ici, ca vous apportera beaucoup d'éclaircissement supplémentaires..

Pour l'instant, les originaux Data East disponibles sont les suivants :

                - Commando
                - Ikari Warriors
                - Platoon                              Demandez les moi !!!

Allez, je commence.. voici le sommaire de ce cours..

SOMMAIRE 1.     - Quelle protection en présence..? Retrouver la vérif.
                - Listing de la vérification trouvée (source en catalog)
                - Annuler la vérification sur une copie!

SOMMAIRE 2.     - Boot tracer jusqu'au mini_dos
                - Le principe de ce minidos : le disk est en catalog 3.3
                - Adresses clé, et mode d'emploi de ce Mini_Dos

Allons y.. ok ??
_______________________________________________________________________________

PROTECTION DATA EAST : QUELLE PROTECTION EN PRESENCE ???
_______________________________________________________________________________

1. Essai de copie locksmith : le disk passe parfaitement mais quand vous le
----------------------------- bootez, il reboote aussitot.. le reflexe, à ce
moment là, est de penser à l'adresse $C600 dont je vous ai parlé en long et
en large dans le cours d'assembleur de la derniere révision du cours 1.
En effet, le moyen le plus utilisé pour faire rebooter un disk comme c'est le
cas pour platoon, donc, est de faire un JMP direct à la routine de boot $C600.

2. Principe : vérification disk
-------------------------------
Si la copie rebote et que l'original ne reboote pas, c'est qu'une routine de
vérification va voir si le disk est un original ou non.. si elle repere une
copie, la routine execute un JMP $C600, sinon elle continue.. moralité, il
suffit, pour retrouver la vérif sur le disk de recherche les octets
4C 00 C6 (JMP $C600) et l'on trouvera logiquement, si rien n'est codé,
la vérification du disk original directement avant..

Attention! Tout ce qui va suivre et les modifications qui suivront devront
absolument etre effectuées sur une copie de votre original, et jamais sur
l'original lui meme sous peine de tout le perdre ce qui serait.. dur!

3. Recherche disk : Scan for 4C 00 C6
-------------------------------------
Bootez simplement un Copy II+ 5.x (du Copy Disk / ZE ENFOIRES, par exemple),
et selectionnez l'option "SECTOR EDITOR", introduisez votre copie d'original
en drive A, puis tapez "S" pour Scan for Bytes.. c.a.d. recherche d'octets.
et rentrez "H" pour recherche Hexadécimal et non Texte, puis entrez les 3
octets que l'on recherche : 4C 00 C6. Vous les trouverez presque aussitot :

        PISTE $00 SECTEUR $0E OCTET $4A : 4C 00 C6     JMP $C600

On n'en trouve d'ailleurs qu'un seul sur toute la face 1, c'est donc celui ci.
Reste ensuite à voir ce que l'on a comme programme AVANT l'octet $4A.. et
donc de lister la routine en $00... On trouvera, je vous le dit, la
vérification disk que l'on recherche.. tout simplement grace à cette recherche
d'un reboot, grace à la logique de notre raisonnement !.. Mais avant que je ne
vous la liste ici, on va la retrouver autrement : par boot tracing, si vous le
voulez bien.. ne serait-ce que pour voir à quelle adresse elle se trouve.

4. Boot tracing pour retrouver cette meme routine
-------------------------------------------------
On commence le boot tracing tout simplement : 1600<C600.C700M puis 16F8:60 et
on lance le boot tracer qui nous chargera juste le boot1 par un 1600G. et
voilà ce que l'on a en boot1, c'est à dire à partir de $0800.

H0800   HEX 03          ; Le boot1 fait 3 pages (de $0800 à $0AFF)

H0801   JMP $0A00       ; JMP à la routine ci-dessous.. la vérification disk!
H0804   NOP
        BNE H082E
        SEI
        ...
        ...             ; Suite du boot1

Comme nous l'indique le contenu de l'adresse $0800, le boot1 se compose de 3
secteurs, logés donc en $0800, $0900, et de $0A00 à $0AFF. Le jmp $A00 que l'on
trouve en $0801 est donc un jmp à une routine déjà chargée en $A00.. il n'y a
qu'à aller à cette adresse et lister.. rien de plus simple..
                                 ___________________________________________
H0A00   NOP                     !                                           !
        NOP                     ! Cette routine est bien la routine trouvée !
        LDX #$60                ! en piste $00 secteur $0E (le secteur du   !
H0A04   LDA #$56                ! jmp $C600), car on retrouve en $4A, le    !
        STA $FD                 ! meme et unique jmp $C600, et que le       !
H0A08   LDA #$08                ! listing en $A00 est le meme qu'à l'octet  !
H0A0A   DEC $FC                 ! $00 de ce secteur, tout simplement...     !
H0A0C   BNE H0A12               ! ----------------------------------------- !
        DEC $FD                 ! Le secteur $00 0E correspond donc à $0A00 !
H0A10   BEQ H0A4A               !___________________________________________!

H0A12   LDY $C08C,X     ; Lecture d'un nibble .
        BPL *-3         ;
        CPY #$FB        ; Est-ce un  :           ( #$FB )
        BNE H0A08       ;
        BEQ H0A1D       ; (instruct.inutile puisque 0A1D suit...)
        ...
        ...

        LDA $C08C,X     ; Lecture d'un nibble...
        BPL *-3         ;
        SEC             ;
        ROL             ;
        AND $FC         ;
        EOR #$FF        ;
        BEQ H0A4D       ; Le resultat doit donner 00. : Original.

H0A4A   JMP $C600       ; Et voici le JMP trouvé sur le disk !!

*** SUITE DU BLOADER

H0A4D   LDA #$60        ; Original.. suite du boot bloader...
        STA $2B         ; (init adresses indispensables à la suite du boot)
        LDA #$09        ;
        STA $27         ;
        LDA #$01        ; $0800 : 01
        STA H0800       ;       : A5 27       LDA $27
        LDA #$A5        ;       : C9 09       CMP #$09
        STA H0801       ;
        LDA #$27        ; au lieu de :
        STA H0801+1     ;
        LDA #$C9        ; $0800 : 03
        STA H0801+2     ;       : 4C 00 0A    JMP $0A00
        LDA #$09        ;       : EA          NOP
        STA H0804       ;
        JMP H0801       ; qui vient de s'éxécuter.

Quand on liste toute la routine directement de $0A00, on voit bien la
vérification disk qui lit des nibbles (LDA $C08C,X) sur le disk original et
qui :
        - execute la routine en $A4D si elle trouve certaines valeurs
        - reboote par un Jmp $C600 si elle ne les trouve pas

Il suffit donc pour déconnecter cette vérif, de mettre un JMP $0A4D à son
tout début, c'est à dire en $0A00.. ou mieux de mettre un JMP $0A4D à la
place du JMP $0A00 que l'on trouve en $801 pour annuler completement les
accès à cette vérif,.. ça c'est si on a pas tout compris..

On pourrait aussi supprimer le JMP $C600, car la routine en $0A4D se trouve
juste après, donc à défaut de rebooter (copie) la routine 'original found'
s'éxécuterait... c'est aussi une solution..

Maintenant, si on a tout compris, on liste avec attention la routine en $0A4D
et l'on voit qu'il ne fait que remplacer le JMP $0A00 en $0801 par ce qu'il y
avait à l'origine c'est à dire un LDA $27 CMP #$9, précédé d'un 01 pour le
nombre de secteurs à charger.. why not.. il suffit donc de remplacer cela
directement sur le boot sector..

C'est à dire de modifier sur le disk (l'un ou l'autre, le dernier étant le
plus clean de tous) :
  ____________________________________________________________________________
 !                                                                            !
 ! Déconnection totale : P$00 S$00 B$01 : 4C 4D 0A       (was 4C 00 0A)       !
 ! Suppression reboot  : P$00 S$0E B$4A : EA EA EA       (was 4C 00 C6)       !
 ! Suppression totale  : P$00 S$00 B$00 : 01 A5 27 C9 09 (was 03 4C 00 0A EA) !
 !____________________________________________________________________________!

Et c'est déplombé !!!

5. Signer la version déplombée
------------------------------
A défaut d'utiliser un Accolade boot (cf liste cours!) pour inclure comme dans
la version qui circule, une méga animation / méga signature de cracker, vous
pouvez tout simplement laisser le JMP $0A00 et remplacer la vérif' par une
signature text du crack que vous terminerez pas un JMP $0A4D en ayant laissé la
meme routine que ci-dessus en $0A4D. Pour écrire une telle routine de signature
de manière sympa, codée par exemple, etc.. il suffit de vous reporter au
cours 12 sur les signatures text !!!.. et là, no more pb...
J'ai plusieurs cours sur la signature de vos cracks, c'est pas pour rien que je
vous ait conseillé de les prendre dés le début, hein !...

Maintenant, passons à la suite de ce cours : Avec le Quicksilver Program Loader
_______________________________________________________________________________

LE MINI DOS QUICKSILVER QUI EST AU BOOT DE TOUS LES SOFTS DATA EAST
_______________________________________________________________________________

1. Boot Tracer jusqu'au mini_dos Quicksilver
--------------------------------------------
Pour boot-tracer jusqu'au mini dos, il m'a suffit de regarder le boot1..
en effet, il charge des secteurs qui correspondent au boot2, puis se sert de
ce boot2 pour charger la suite. ce boot2 est justement ce que l'on recherche..
et il s'en sert exactement comme on se sert de ce Program Loader..

        ORG $0800
                         __________________________________________________
H0800   HEX 01          !                                                  !
                        ! Le début du boot1 que j'ai mis ici est celui que !
H0801   LDA $27         ! l'on aura après avoir déplombé Platoon par       !
H0803   CMP #$09        ! exemple, de la manière la plus clean ci-dessus.  !
        BNE H082E       !__________________________________________________!
        SEI              __________________________________________________
                        !                                                  !
        LDA $C083       ! Le Mini_Dos sera chargé en carte language banc 1 !
        LDA $C083       ! Ces deux commutateurs permettent d'écrire dans   !
                        ! la mémoire banc1 $D000, ou d'y charger un progrm !
        LDA $2B         !__________________________________________________!
        LSR              __________________________________________________
        LSR             !                                                  !
        LSR             ! Cette routine retrouve, par calculs, en fonction !
        LSR             ! du slot d'où a booté le disk original, l'adresse !
        ORA #$C0        ! de la routine en rom "read sector"..             !
        STA $3F         ! ici, avec le slot $06 en $2B, il calcule $C65C,  !
        STA $FFFD       ! comme adresse "read sector" en rom, et il met    !
                        ! 5C en 3E, et C6 en 3F d'ou JMP ($3E) = JMP $C65C !
        LDA #$5C        ! Cette routine me aussi en $FFFC, $FFFD, l'adr.   !
        STA $3E         ! de la routine de reboot $C600.                   !
        LDA #$00        ! C'est très classique!                            !
        STA $FFFC       !_______________________Plus de détails : cours 7__!
                                          _________________________________
        CLC                              !                                 !
        LDA H08BF ; Buffer Hi            ! Ensuite, vient le "bloader" du  !
        ADC H08C0 ; Nbre sect. to load   ! boot suivant.. le boot2...      !
        STA H08BF ; Buffer Hi            !_________________________________!

H082E   LDX H08C0       ; Nbre sect. to load
        BEQ H0848       ; S'il n'y en a plus. on continue le boot...
        LDA H08C1,X     ; On prend le numéro du sect.phys to load
        STA $3D         ; mis en $3D pour la rwts qui le chargera
        DEC H08C0       ; Nbre sect. to load
        LDA H08BF       ; Buffer Hi
        STA $27         ; mis en $27 pour la rwts qui le chargera
        DEC H08BF       ; Buffer Hi     ___________________________________
                                       !                                   !
*** ON CHARGE LEDIT SECTEUR            ! Ici, on voit enfin le JMP ($003E) !
                                       ! qui correspond donc maintenant à  !
        LDX $2B                        ! un JMP $C65C. soit un appel à la  !
        JMP ($003E)                    ! routine de lecture d'un secteur   !
                                       ! donné, en mémoire.. la meme       !
*** SAUT AU BOOT 2                     ! routine qui se trouve à la fin    !
                       ______________  ! du boot0 et qui a chargé de boot, !
H0848   BIT $C051     !              ! ! et qui se termine par JMP $0801   !
        BIT $C054     ! Une fois ce  ! ! en $C6F8 comme vous le savez..    !
        BIT $C052     ! boot chargé, ! ! ainsi, on revient vite à ce       !
        STA $C00C     ! la routine   ! ! bloader pour charger les autres   !
        STA $C000     ! suivante, en ! ! secteurs du boot2 en mémoire...   !
        JSR $D32A     ! $0848, se    ! !___________________________________!
        LDA #$00      ! lance..      !_____________________________________
        STA $48       !                                                    !
        STA $3C       ! elle va pointer Control-Reset sur $D327,           !
                      ! une routine qui justement vient de se charger...   !
*** INIT RESET ($3F2) ! puis va effacer la page texte (voir source en cat) !
                      ! puis va afficher le texte du boot "Quicksilver     !
        LDA #$27      ! program loader (c) 1985,1987.. etc..."...          !
        STA $03F2     !____________________________________________________!
        LDA #$D3       ____________________________________________________
        STA $03F3     !                                                    !
        ...           ! Il faut noter au passage les parms de chargement   !
        ...           ! de ce boot2.. il se charge depuis $D2+1 c'est à    !
                      ! dire que le premier secteur sera chargé en $D300,  !
                      ! et 7 secteurs sont chargés.. c'est à dire jusqu'a  !
                      ! $D9FF dans la carte language banc 1 donc..         !
                      !____________________________________________________!

*** PARAMETRES DE CHARGEMENT BOOT2

H08BF   HEX  D2  ; Buffer
H08C0   HEX  07  ; Nbre de secteurs à charger

* Liste des secteurs physique piste $00 à charger...

H08C1   HEX 000D0B0907050301
        ...            ____________________________________________________
        ...           !                                                    !
        ...           ! et si l'on considère que le boot2 commence dés la  !
        ...           ! fin de son chargement, alors il commence en $08A7. !
                      ! ainsi... avec des LDA LDX LDY JSR...               !
                      !____________________________________________________!

2) Comprendre le mode d'emploi de ce Mini_Dos
---------------------------------------------
J'ai mis longtemps à comprendre comment fonctionnait le boot2, le Quicksilv.
bloader.. car il entrait avec 3 valeurs en A,X,Y pour charger un fichier et
je n'ai trouvé aucune liaison logique entre ces valeurs et des buffer, ou
autre paramètre classique et universel de pseudo_catalog comme je vous en ait
parlé précédemment très longuement dans le cours sur la protection Taito.
Ici, le chargement d'un fichier se fait de la manière suivante.. par exemple..
                         _______________________________________________
H08A7   LDA #$C1        !                                               !
        LDX #$00        ! D'après vous, $C1 correspond à quoi , avec le !
        LDY #$D0        ! $C2 qui suit.. le numéro du programme à       !
        JSR $D300       ! charger ??.. peut etre.. mais alors, ou       !
        ...             ! seraient les coordonnées disk piste/sect. de  !
        ...             ! ce fichier ??.. et si le #$D0 correspond au   !
        ...             ! buffer, pourquoi le second fichier a t'il la  !
                        ! meme valeur #$D0 dans le meme registre...     !
        LDA #$C2        ! et si l'on imagine que le LDX contient le     !
        LDX #$01        ! numéro du fichier, que signifie le #$C0 #$C1? !
        LDY #$D0        ! Grand mystère, non ???                        !
        JMP $D300       !_______________________________________________!

Pour tout comprendre, j'ai passé plusieurs heures à reconstitué et à
m'expliquer à moi meme le boot suivant, c'est à dire la routine chargée en
$D300 et appelée ici, une fois par un JSR et une fois par un JMP.

Le probleme est donc le suivant : il charge des fichiers d'un apparent pseudo-
catalog comme chez Taito, Epyx, le boot de alf et tous les autres, mais nul
par je n'ai retrouvé plus de détails sur ce pseudo catalog.... par contre
j'ai trouvé en décortiquant $D300 (boot2, cf source en catalog) que l'adresse
$D6A3 correspondait à la piste courante et que $D6A4 correspondait au secteur.
ainsi, j'ai trouvé deux routines qui m'ont parues très bizarres aux adresses
$D3EB et $D631... d'autant plus qu'elles se terminaient par un accès à $D595
qui justement charge en mémoire la piste et le secteur courant.

HD3EB   LDA #$11        Mon étonnement venait du fait que cette routine n'a
        STA $D6A3       pas d'autre effet que celui de charger en mémoire la
        LDA #$0F        piste $11 secteur $0F .. alors de là à penser que
        STA $D6A4       ce bloader gère non pas un pseudo_catalog mais bien
        STA $D6A5       le catalog classique dos qui commence en effet
        JSR $D595       en piste $11 secteur $0F, il n'y a pas loin...
        RTS
                        Toutes les infos que je ne trouve pas sur les
HD631   LDA #$11        fichiers à charger seraient donc tout simplement
        STA $D6A3       dans un catalog standard dos 3.3 en piste $11.
        LDA #$0F        et c'est en effet ce qui se passe!
        STA $D6A4
        STA $D6A5       Il m'a suffit de booter un dos et de taper CATALOG
        JMP $D595       avec une copie en drive courant. et j'ai eu le catalog
                        de platoon sous les yeux, par exemple...

Voici le catalog de la face A de platoon :
 ____________________
!                    !  Le probleme que j'ai est toujours le meme..
! DISK VOLUME 254    !
!                    !  Que signifie les paramètres de chargement d'un fichier,
! B 067 A            !  Que signifie la routine en $08A7 qui apparament charge
! B 005 B            !  deux fichiers en mémoire ? A quoi correspondent A,X,Y ?
! B 011 E            !
! B 022 G            !  Pour cela aussi, j'ai mis un moment à réaliser...
! B 067 D            !  puis j'ai trouvé..
! B 067 H            !
! B 019 F            !  La routine en $08A7 est la suivante :   LDA #$C1
! B 051 I            !                                          LDX #$00
! B 018 J            !                                          LDY #$D0
! B 004 Z            !                                          JSR $D300
! B 005 K            !
! B 004 O            !  J'ai mis longtemps à réaliser que :
! B 067 C            !
! B 026 M            !     Le Reg-A contient LE NOM DU PROGRAMME (#$C1 = "A")
! B 013 L            !     Le Reg-X contient la commande : BLOAD=00, BRUN=01
! B 018 ED           !     Le Reg-Y contient la page catalog...
! B 012 N            !
! B 018 P            !  Je vais vous expliquer ca, ne vous affolez pas !!!
!____________________!

Dans le source reconstitué, on voit que les 3 premiers secteurs du catalog 3.3
du disk concerné, sont chargés en $D000 , $D100 et $D200.. j'ai mis longtemps à
désosser suffisamment le boot2 pour comprendre ca , et une fois cela fait ,
j'ai mis longtemps à comprendre que le paramètre mis en Registre-Y
correspondait justement à la page mémoire ($D0,$D1 ou $D2) où se trouvait le
fichier recherché... ainsi, si le fichier #$C1 (nommé "A" dans le catalog)
avait été sauvé sur le disk dans le second secteur du catalog dos par exemple,
la valeur en Y aurait été $D1.. toi comprendre l'ami ???

Rien de plus simple à utiliser ensuite, une fois que l'on a le "savoir !!".

Pour savoir dans quel page du catalog se trouve un fichier donné, on peut soit
aller voir directement sur le disk au secteur editeur, soit penser que seuls
7 fichiers peuvent tenir sur un secteur (en théorie, les 7 premiers si aucun
fichier de ce secteur n'a subit un DELETE dos) et faire un simple calcul...
le mieux étant toujours d'aller voir..

Ainsi, la routine en $08A7 charge les fichiers dos nommés "A" et "B", en ram.
Le premier (qui est en fait l'image double haute résolution du jeu du boot)
est chargé en $4000 et juste bloadé, le second (la suite du bloader du jeu)
est chargé en $0800 et bruné (bloadé puis éxécuté, d'où le JMP $D300 au lieu
d'un simple JSR. car il n'y aura pas de retour au boot1.)
Le fichier "B" est d'ailleurs "sourcé" également sur ce disk face A, et il
appelle lui meme beaucoup d'autre fichiers...

Pour ceux qui ne connaissent pas l'organisation du catalog sur le disk, j'ai
fait un cours sur les dos, leur organisation, qui par du catalog au niveau
disk, de la vtoc, etc.. tout y est clair.. c'est le cours 4. Alors reportez-y
vous pour avoir plus de détails là dessus, ok ?

Voilà, je vous ai expliqué tout ce qu'il y avait de plus interessant dans la
protection Quicksilver / DataEast.. et tous les sources sont en catalog!!

Avant de vous quitter, quelques mots sur la signature de ces cracks !!!

4) Quelques routines intéressantes du Apple Program Loader Quicksilver
----------------------------------------------------------------------
J'ai trois routines que je voulais juste vous signaler, et que l'on trouve au
sein du quicksilver mini_dos, à savoir :

- une routine clear memory (qui empeche tout boot tracing complet!)
- une routine reboot       (en cas d'erreur de lecture)
- le texte du boot         (modifiable, pour signer ce disk cracked)

D'abord quelques mots sur la routine Clear_Memory qui a pour effet, donc,
entre autre d'effacer la zone $1600-16FF dans laquelle vous auriez pu mettre
un boot tracer. c'est une des nombreuses parades anti-boot tracing...
Cette routine dans laquelle on rentre (en $D32C) avec en Y l'adresse haute
de la première page mémoire à effacer (ici 09 pour commencer en $0900)
effacera la mémoire jusqu'en $BEFF. La voici :

$D32A    LDY #$09       ; On effacera depuis $0900
Clear    STY $31        ;
         LDA #$00       ;
         STA $30        ;
         TAY            ;
Lp_Clear STA ($30),Y    ;
         INY            ;
         BNE Lp_Clear   ;
         INC $31        ;
         LDX $31        ;
         CPX #$BF       ;
         BNE Lp_Clear   ;
         RTS            ;

Deuxieme routine dont je voulais vous dire quelques mots, la routine reboot..
En effet, en $D5D1 par exemple, est appelée la routine $D800 qui a pour
fonction de lire un secteur en fonction des paramètres cités ci-dessus pour
la piste et le secteur, en mémoire.. et comme toute rwts (cette routine n'est
en fait que le 'relogé' du source de la rwts qu'à utilisé data east, et que
vous pourrez retrouvé dans le cours 3!), il sort avec la carry à 00 s'il n'y a
aucune erreur de lecture, et avec carry à 1 s'il y en a..
Voici l'appel de $D800 et le test de la carry..

HD5D1    JSR $D800      ; Accès à la routine read sector
         BCC HD5D9      ; si carry=0 alors, lecture bonne..  no pb..
Err      JMP Reboot     ; si carry=1 alors, err de lecture.. reboot..
         ...
         ...

La routine reboot en cas d'erreur de lecture est la suivante :
(la routine clear memory est utilisée ici aussi)

Reboot   LDY #$08       ; Efface RAM de $0800 à $BEFF
         JSR Clear      ;
         ...            ;
         ...            ;
                        ;
         LDA #$00       ; 00 pour $C600 (adr basse)
         STA $3E        ;
         LDA $2B        ; Slot
         LSR            ; = 6.
         LSR            ;
         LSR            ; L'adresse de la routine boot est calculée de
         LSR            ; manière analogue au précent calcul de $C65C.
         ORA #$C0       ;
         STA $3F        ; C6 pour $C600 (adr haute calculée /slot)
         JMP ($003E)    ; JMP (H003E) = $C600 : REBOOT

La troisième et dernière chose que je voulais vous montrer dans ce boot :
les textes qui apparaissent toujours au boot.. vous pouvez le rechercher sur
votre copie déplombée pour le modifier au sector editor..

$D641    ASC "Quick-DOS(TM) Apple Program Loader"
         HEX 00
$D664    ASC "Copyright (c) 1985,1987"
         HEX 00
$D67C    ASC "Quicksilver Software, Inc., Irvine, CA"
         HEX 00

Ils sont sur le disk en piste $00 secteur $04 octet $41. Ok ?



Voilà! J'en ai terminé avec ce cours sur le mini dos et le plombage Data East.
et je vous le rappelle, pour en savoir plus, vous pouvez lister les sources
détaillées présents sur ce disk en catalog 3.3...
__________________________________________________ Bonne chance avec Platoon !!

Amicalement, GDF. Dec88. et JOYEUSES FETES DE FIN D'ANNEE !!!.


Retour sommaire

hr cours GDF

Les programmes de ce disk.


_______________________________________________________________________________

LES PROGRAMMES DE CE DISK          Sources DATA EAST reconstitués par Godfather
_______________________________________________________________________________

Révision 1.00                                                     Decembre 1988


Vous trouverez en catalog sur ce disk :


* SOURCE DU BOOT 1 DATA EAST PLATOON

* SOURCE DU BOOT 2 DATA EAST PLATOON (MINI_DOS)

* SOURCE DU FICHIER "B" EN CATALOG (SUITE DU BLOADER, CHARGE A LA FIN DU BOOT1)



_____________________________________________ Salutations digitales, GDF. Dec88


Retour sommaire