Cours de déplombage 23



Ecran
Ecran
Ecran
Ecran


Disk : Gdf23.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 B A$0800 (002048) L$0100 (000256) 003 BOOT1.TAITO
 B A$0901 (002305) L$06CF (001743) 008 BOOT1.TAITO.S
 B A$0901 (002305) L$18F3 (006387) 026 BOOT2.TAITO.S
 B A$4100 (016640) L$0092 (000146) 002 BOOT4PAGES.ARKA
 B A$0901 (002305) L$02CA (000714) 006 BOOT4PAGES.ARKA.S
 A A$0000 (000000) L$00FF (000255) 003 HELLO
 A A$0000 (000000) L$0C2E (003118) 014 LECTEUR.PRG
 B A$0400 (001024) L$0400 (001024) 006 P.FLOB
 B A$0400 (001024) L$0400 (001024) 006 P.FLOB2                      
 B A$0400 (001024) L$0400 (001024) 006 P.FLOB3
 B A$0400 (001024) L$0400 (001024) 006 P.FLOB4
 B A$0400 (001024) L$0400 (001024) 006 P.FLOBY.PROPA
 T A$0000 (000000) L$0200 (000512) 002 T.ADR.TAITO
 T A$0000 (000000) L$2200 (008704) 034 T.BOOT2.TAITO
 T A$0000 (000000) L$5400 (021504) 084 T.COURS 23 REVISION 1.00
 T A$0000 (000000) L$4700 (018176) 071 T.COURS MINIDOS TAITO        
 T A$0000 (000000) L$0C00 (003072) 012 T.GODFATHER RACONTE...
 T A$0000 (000000) L$0800 (002048) 008 T.INTRODUCTION
 T A$0000 (000000) L$0500 (001280) 005 T.LES PROGRAMMES DE CE DISK
 T A$0000 (000000) L$1500 (005376) 021 T.ORIGINAUX EN ATTENTE
 T A$0000 (000000) L$1C00 (007168) 028 T.VERIF.TAITO
 B A$4000 (016384) L$01F8 (000504) 003 VERIF.TAITO
 B A$0901 (002305) L$11A4 (004516) 019 VERIF.TAITO.S

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


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


Sommaire


Lien Article
Voir Introduction.
Voir Cours 23 révision 1.00.
Voir Cours mini DOS Taito.
Voir Les programmes de ce disk.
Voir Originaux en attente.

hr cours GDF

Introduction.


_______________________________________________________________________________

INTRODUCTION COURS TAITO 1988                                     GDF Speaking!
_______________________________________________________________________________

Révision 1.00                                                  23 Decembre 1988



Salut les fous !


Ce cours regroupe TOUT ce qu'il faut savoir sur LA PROTECTION TAITO..

Taito en est à son premier soft sur apple, et en annonce beaucoup d'autres
comme vous l'avez vu au boot.. alors, affaire à suivre, hein ??
et on a de la chance : ils n'ont pas racheté la protection Epyx.. mais ils
en ont fait développé une bien à eux... ainsi qu'un minidos..

Au moment où j'écris ces lignes, personne n'a recu Arkanoid chez lui..
et personne n'a eu le loisir comme moi, de tout décortiquer.. pour vous !

Alors amusez vous bien, en avant première.


                     VOUS VOULEZ M'AIDER ET VOUS AIDER ??
                     ____________________________________

Pour m'aider, ou vous aider vous memes.. si vous souhaiter avant vraiment avant
tout le monde, le tout dernier soft Taito, voici les adresses où vous pourrez
commander leurs toutes dernières news pour IIe, //c..

Taito Software, Inc.
Distribution Center
11715 North Creek Pkwy South, Suite 110
Bothell, Washington 98011
U.S.A.

Taito Software, Inc.
267 West Esplanade
North Vancouver
B.C.
Canada
V7M 1A5

Vous souhaitez participer à un achat groupé à ce sujet, pour commander ca
directement des etats-unis ??? alors faites moi signe avec votre prochaine
commande...
____________________________________________ Amicalement! GDF, en pleine forme!


Retour sommaire

hr cours GDF

Cours 23 révision 1.00.


_______________________________________________________________________________

COURS DE DEPLOMBAGE #23                                               Godfather
                  ____________________________________________
                 !                                            !
                 !      LA PROTECTION TAITO CORPORATION !     !
                 !____________________________________________!


                                  Révision 1.00

                            Update : 1er Janvier 1989

_______________________________________________________________________________




Salut et salut !!



Argh !!

Depuis que je me suis lancé sur PC à la va-vite, et à Wordstar entre autres,
j'ai la manie des titres centrés automatiquement.. faudrait voir quand meme
que je n'attrape pas trop le syndrome de la machine à coudre.. ou alors,
ce serait la fin de tout !!

Je vous parle de quoi aujourd'hui, en exclusivité la plus totale ???

Ma foi, de la protection TOUTE NOUVELLE ET INEDITE - que meme aucun autre
déplombeur que moi dans ce beau pays n'a eu le loisir de l'admirer !!! -
qui nous arrive d'une belle disquette 5'25 signée et labellée TAITO en gros
et en rouge, comme le font soit les nippons, soit les mégalos...

Pas de pot, Taito Corporation, est une boite nippone...

Et pas n'importe laquelle, puisque c'est la première au niveau consoles de jeu
dans le monde capitaliste.. est-ce que ca signifie que l'on va bientot recevoir
pleins de jeux betes de leur part ??.. ma foi oui, puisqu'ils annoncent au
meme format, meme machhine, les jeux suivants :
                    _________________________________
                   !                                 !
                   !    Originaux TAITO, à venir.    !
                   !    -------------------------    !
                   !                                 !
                   !         * BUBBLE BOBBLE         !
                   !         * RENAGADE              !
                   !         * ALCON                 !
                   !         * RASTAN                !
                   !         * SKY SHARK             !
                   !         * OPERATION WOLF        !
                   !         * GLADIATOR             !
                   !_________________________________!

La meme protection ???



Patience !!

En attendant, voici le sommaire de ce giga-cours inédit !!...
_______________________________________________________________________________

SOMMAIRE 1 : LE DEPLOMBAGE
_______________________________________________________________________________


1. Comment se présente ce plombage ? Premiers essais de copie..
2. Retrouver la vérification. Méthode 1 : boot tracing
3. Retrouver la vérification. Méthode 2 : recherche disk directe (cours 8)
4. Annuler cette protection : plusieures méthodes proposées.
5. Comprendre. Le listing complet et commenté de cette protection

_______________________________________________________________________________

1)  COMMENT SE PRESENTE CE PLOMBAGE.. PREMIERS ESSAIS DE COPIE....
_______________________________________________________________________________

La première chose que l'on fait toujours en présence d'un original quel qu'il
soit, rappelez vous, c'est de tenter une copie locksmith pour juger s'il est :

        - Illisible au locksmith        ( protection format    , voir cours 6 )
        - Lisible mais la copie plante  ( protection invisible , voir cours 7 )
        - Non plombé                    ( la copie marche comme l'original !! )

Dans ce cas, si vous essayer de copie l'original avec le locksmith rapide,
et que vous bootez la copie obtenue, vous vous appercevrez vite que l'on est
dans le second cas, c'est à dire que le disk original contient une petite bete
quelque part ( que l'on va retrouver dans ce cours ) , qui est incopiable
( au moins au locksmith rapide! , on va voir ca aussi.. ) , et qui est
vérifiée ( il faut donc retrouver la vérification et l'annuler , c'est ce que
l'on va voir tout de suite ... ).

Quand vous bootez la copie ( en face B de ce cours ), vous remarquerez qu'elle
plante (arret total) après quelques secondes de chargement au boot..

Pour retrouver selon une logique désormais classique, la vérification, on va
proposer deux méthodes :

        - Boot tracing, jusqu'à ladite vérification disk
        - Recherche Disk de cette meme routine

Je commence déjà par la première méthode...

_______________________________________________________________________________

2)  METHODE 1 : BOOT TRACING POUR TENTER DE RETROUVER LA VERIFICATION DISK
_______________________________________________________________________________


a) Vider la mémoire avant le boot tracing
-----------------------------------------
Avant de commencer à boot tracer ce soft, on va commencer par vider la mémoire
de manière a etre sur que tout ce que l'on pourra par la suite trouver en ram
proviendra bien du boot et du boot tracing de notre original seulement !.. et
pas de résidus de programmes utilisés avant ce boot tracing..

Pour cela, on passe en moniteur ( CALL - 151 ) et on tape la séquence suivante:

*800:EA                 ( on met l'instruction NOP en $0800 _ No Operation )
*801<800.BFFFM       ( on recopie en chaine cette instruction jusqu'en $BFFF )


b) Le boot tracing commence...
------------------------------
On move, comme toujours, la routine de boot qui est en rom en $C600, à
l'adresse ram $1600, de manière à pouvoir la modifier à volonté.. pour que
l'on puisse reprendre le controle de tout, à tout moment du boot de notre
giga-original Taito.

*1600<C600.C700M

On poke en $16F8, à la fin de cette routine, un JMP au moniteur (reprise de
la 'main' pour nous) à la place du JMP $0801 (jmp au début du boot chargé
par cette dite routine, en $0800). On va ainsi faire charger le boot1
de notre original ($0800-$08FF) et pouvoir reprendre la min et l'étudier.

*16F8: 4C 59 FF       ( 4C pour l'instruction JMP. 59 FF pour l'adresse $FF59 )

Puis enfin, on lance le tout... avec l'original en drive 1.

*1600G

Maintenant, le boot est commencé. le boot1 est chargé en $800.. à nous de le
décortiquer.... et de remarquer ce qui est remarquable pour continuer à suivre
ce boot jusqu'à la vérification disk recherchée.


c) L'étude du boot1
-------------------
Un source complet et clair du boot1 est en catalog sur ce disk.. commenté!
Pour ceux que ca interesse, je vous invite à vous y reporter.. mais pour les
autres, il suffisait de remarquer le jmp au boot suivant (le boot2 chargé
justement par ce boot1) qui est - pour Arkanoid en tout cas - en $0853.

$0853- 4C 00 BC         JMP $BC00

L'adresse du boot2 est donc $BC00.

Pour le faire se charger et reprendre la main, il faut taper le boot tracer
suivant, juste après la routine de boot en ram, comme toujours qui transforme
ce JMP Boot2, encore une fois, en JMP Moniteur c'est à dire qui mette en
$0854 la valeur 59 et en $0855 la valeur $FF ( adresse moniteur $FF59 ,
voir cours 1 ) et qui saute en $0801 au boot1 ( voir cours 7 ) :

*16F8: A9 59             LDA #$59
       8D 54 08          STA $0854
*16FD: A9 FF             LDA #$FF
       8D 55 08          STA $0855
       4C 01 08          JMP $0801

Relancez ensuite le boot tracer ainsi créé, et ca plantera après le chargement
du boot2 en $BC00.. que nous allons décortiquer tout de suite.. en tt logique!


d) Boot2 : $BC00
----------------
Dans le boot2, ne comportant rien de trop remarquable mais tout de meme
décortiqué pour les perfectionnistes comme moi ( voir catalog de ce cours )
et commenté à leur attention sous l'assembleur merlin pro, as always,
on devra juste également remarquer un jmp... le jmp boot3...

$BC4B: A2 60            LDX #$60
$BC4D: 4C 00 40         JMP $4000

On va le modifier en continuant encore notre boot tracer, jusqu'à la fin !!

D'abord on va changer la routine ci-dessus (boot précédent) pour qu'elle nous
mene en $1710 où se trouvera la routine qui s'occupe de ce nouveau boot,
puisque les boots doivent bien sur se dérouler dans l'ordre pour que le boot
soit 'complete' comme on dit quand on fait semblant de toucher ..

*16F9:10
*16FE:17

Ainsi, le JMP $FF59 (Moniteur) sera remplacé par un JMP $1710... et on y met :

*1710: A9 59
       8D 4E BC
       A9 FF
       8D 4F BC
       4C 00 BC

Puis on lance le boot tracer qui va donc maintenant laisser charger et nous
rendre la main après un boot supplémentaire, le boot suivant, le 3,
implanté à l'adresse $BC00 comme nous l'indiquait justement le jmp boot3
trouvé au milieu du boot2. Essayez de comprendre si vous n'avez déjà suivi
avec moi aucun cours tel le cours sur la protection epyx traitant longuement
du boot tracing, c'est en fait très logique...

1600G

On peut donc maintenant gentiment décortiquer le boot3 en $4000.
(voir JMP $4000 dans le boot2)

N.B. : il faut rentrer - pour lancer le boot3 en mode direct p.e. - avec la
______ valeur #$60 dans le registre X.


e) Boot3 : $4000
----------------
En étudiant ce boot, on remarque vite sur quoi on est tombé..
En le lancant en mode semi-direct (300:A2 60 4C 00 40, puis 300G), on voit bien
que le jeu plante et que c'est la vérif du disk original...
laisse moi vous dire quelques mots d'abord sur ce que l'on a en $4000..
puis ensuite, je dirais quelques mots sur ce type de vérification disk de
ce que j'ai appelé des petites betes, et qui se nomme plutot un nibble count.

En $4000, (source complet et très bien détaillé, en catalog), on a :

$4000-  LDA     $C036
        AND     #$7F
        STA     $C036
        LDA     #$00
        STA     $40F7
        JSR     $4090
        LDA     $40F8
        BNE     $4018
        JMP     $0200

A noter, ici, le JMP en $0200 qui est le jmp au boot suivant.

Comment comprendre maintenant que la routine qui vient de se charger en
$4000 est la routine de vérification disk, ma foi.. il y a plusieurs méthodes :
3, en vérité, que voici..


f) Comprendre que c'est une vérification disk
---------------------------------------------
Une vérification disk , ou plutot un accès disk en général , se caractérise par
plusieurs choses.. pour acceder au disk au niveau des nibbles, il faut
actionner certaines commutateurs parmi lesquels $C0EC, $C0ED, $C0EF...
mais pour cela, on fait rarement appel directement à ces adresses, mais de
manière indéxée avec X.. X contenant la valeur #$60, et l'adresse étant
diminuée de #$60.

Pourquoi cette standardisation des appels aux commutateurs drive ?
Au départ, c'est du au fait que Steffen Wozniak, créateur de l'Apple et auteur
de la rwts 3.3 ( voir cours 3 ), en eu décidé ainsi en mettant dans X le
numéro du slot drive (6 pour le drive 1, ou 7 pour le drive 2) multiplié par 16
(6*16 = #$60) et en transformant $C0EC en $C08C,X... et que toutes les
connaissances qui ont été utilisées par la suite en vue de plombage, ont été
tirées de ce programme giga qu'est la rwts 3.3 de Wozniak..

Il a lancé un style ayant une utilité.. et tout le monde lui suit
encore 10 ans après !!! Tout le monde sachant ( voir cours 2 ) que les premiers
protections qui sont parfois les plus interessantes, ont été tirées du DOS 3.3.
et de l'étude de son module rwts.

En clair et enfin sans décodeur ca veut dire que quand je vois en $BC4B, la
routine suivante listée ci-dessus : LDX #$60 JMP $4000, et que l'on s'attend
à trouver pas trop loin une vérification disk, on devine assez facilement que
le LDX #$60 correspond au slot et qu'on trouvera en $4000 la vérification disk
ou au minimum un appel à la vérification disk... ce qui est le cas ici !!

Vous voulez d'autres raisons ???

Une autre raison simple qui démontre qu'on est tout tout tout près de la
vérification disk que l'on recherche - mais qui n'est pas une preuve
absolue bien sur, je vous l'accorde - est tout simplement le bruit de boot.

On voit bien que le soft plante quand on le boote normalement après avoir fait
un certain bruit avec la tete de lecture.. on a vu avec ce boot tracer que ce
bruit venait juste de se produire avant le LDX #$60 JMP $4000.. la conclusion
est donc simple à tirer..

Il faut bien savoir qu'en déplombage, on a pas besoin de preuves dans ce type
de recherche.. puisqu'il suffit d'essayer.. On pense que telle routine est
la routine qui fait tout planter, il suffit de la lancer en mode semi-direct.

La troisieme raison qui est une preuve cette fois ci, mais qui demande plus de
travail et moi de cette intuition qui nous fait tant plaisir quand elle aboutit
apparait quand on décortique la routine à partir de $4000.. ou quand on la
suit dans l'ordre d'execution à partir de $4000.. on trouve vite en $4133 déjà
des appels aux commutateurs drives à la Wozniak'way ( LDA $C08C,X ).. preuve
absolue qu'on a affaire à une routine drive.

Je l'ai donc désossée completement pour vous.. encore une fois, je vous
reporte au source complet et très longuement décortiqué et commenté en cat.

Nom du fichier : VERIF.TAITO


On a retrouvé cette vérif, on va la commenter plus loin.. et voir comment
l'annuler, mais d'abord, je vous parle d'une seconde methode qui nous aurait
permis de la trouver très rapidement..

_______________________________________________________________________________

METHODE 2 : RECHERCHE DISK
_______________________________________________________________________________

On a vu plus haut ce qui caractérisait une routine disk : elle contient un
LDA $C08C,X c'est à dire les valeurs hexa BD 8C C0. On va donc tout simplement
rechercher ces 3 octets directement avec un scanner d'octets (voir copy II+ 5.x
ou bien encore le cours 8).. mais attention à une chose : ce disk contient
une routine de chargement (lecture des secteurs) et la vérification que l'on
recherche, et ces deux routines contiennent DES instructions BD 8C C0..
Il faudra faire le tri au flair.. alors ce que je propose c'est que l'on
commence notre scan depuis la piste $01 à $22.. puisque la rwts de l'original
est sur la piste $00.. certes, il se peut que l'on trouve - comme avec la
protection epyx , cours 10 , que bcp d'entre vous connaissent! - la
vérification finalement en piste $00, mais avant de risquer de se perdre dans
la routine de lecture en la prenant pour la vérif, mieux vaut voir où l'on est
sur de ne pas la trouver cette belle rwts taito...

Ouf.. j'ai terminé ma phrase.

Bref, bootez votre copy II+ 5.x , entrez dans le sector editor , puis tapez "S"
pour Scan for bytes, et entrez les octets BD 8C C0 (LDA $C08C,X) à rechercher
et - comment je l'ai mal expliqué ?? , non! - à partir de la piste $01.
(faites Read 01 00 en mode simple sector editor avant de taper "S" si vous
avez booté un copy II+ <6, quelconque; ou Read 01 0F si c'est le Copy II+ 5.x).

Comprendo ??

Vous allez - sur Arkanoid, je peux vous l'annoncer, on a le meme disk! -
trouver des BD 8C C0 aux coordonnées disk suivantes depuis la piste $01 :

                   Piste $20 Secteur $01 Octet $33
            (et de nombreuses autres fois dans ce secteur)

En passant, je signale qu'on n'aurait trouvé des BD 8C C0 concernant la rwts
de Taito uniquement en piste $00 00 et $00 01. Mais on s'en fout...

On va donc aller étudier cette routine en $20 01.. qui commence à l'octet $00

En fouillant un peu avec notre sector editor préféré, on ira voir en $20 00..
et là, on trouvera, comme bien entendu, la routine que l'on retrouve en ram
en $4000...et dont je vous parle ci-dessus... en $20 01, on a $4100 Ram.

On a donc la encore retrouvé la meme routine de vérification.


Voyons comment l'annuler...
_______________________________________________________________________________

4)  ANNULER LA VERIFICATION AINSI RETROUVEE
_______________________________________________________________________________

Quand on la trouve sur disk , on remarque bien vite les STA $40// et $41//...
On a donc pas de mal - d'intuition - à deviner que le secteur 20 01 est chargé
en $4100, et le 20 00 en $4000.. on peut meme essayer cette intuition : c'est
à dire aller la vérifier en bootant le soft, et en l'arretant par Pomme-Ctrl-R
avant d'aller voir en moniteur si on a bien la meme chose en $4000 et en 20 00.

On a donc en main : - la routine complete de vérification
                    - l'adresse de la routine
                    - les coordonnées disk de la routine

Il suffit de la comprendre (c'est de l'assembleur très simple, pas besoin de
d'etre capable de la programmer pour etre capable de la deconnecter!.. comme
souvent)... allons y..


a) Deux types de vérifs'
------------------------
Il existe deux types de vérification disk.. les vérifs qui laissent des flags
utiles, et celle qui marche par flags inutiles.. Je m'explique..
La routine lit la petite bete du disk original.. si elle la trouve, certaines
valeurs appelées flag (drapeaux, en anglais _ c'est à dire qu'ils signalent
"hep! c'est une copie" ou "hep! c'est bien un original! miracle!!") seront
en mémoire à une certaine valeur, et si elle ne la trouve pas, ces valeurs
seront en mémoire à d'autres valeurs... Alors soit la vérif ne se sert de ces
valeurs que pour faire planter le soft en cas de copie, soit elle s'en sert
plus intelligemment comme dans le cours 14 sur la première protection
Activision ou dans le cours Epyx en fonction de la version de la protection,
pour décoder des données indispensables..

Pour en savoir plus, tout est très longuement expliqué dans les cours 10 et 14.

C'est à dire qu'il y a deux types de vérifs :

        - les vérifs déconnectables
        - les vérifs non déconnectables de manière directe.

Celle ci est - il suffit de refaire le source et de le comprendre, cf cat -
déconnectable, pour notre plus grande joie.. c'est à dire qu'on peu l'annuler
sans probleme...


b) Etudier le début de cette vérification
-----------------------------------------
Le source complet de cette vérif, chargé en $4000,$4100,$4200 et executé par
un JMP $4000 trouvé à la fin du boot2 (voir sources, et ci-dessus je crois),
commence ainsi (list $4000) (cf.source boot2 taito)

*=======================================*
* Protection TAITO                      *
* Décortiquée pour le cours gdf 23      $
* 12 Decembre 1988 , Paris              *
*                                       *
* Fichier pseudo cat Taito : Numéro 9   *
* (voir fichier cours "minidos taito")  *
*=======================================*

$4000 - LDA     $C036   ; Ca, on s'en fout..
        AND     #$7F    ;
        STA     $C036   ;
        LDA     #$00    ;
        STA     H40F7   ; mais alors, vraiment!

*** SAUT A LA VERIFICATION DISK
*** (la vérif disk se fait, resultat en $40F8.)
*** (un original donnera $40F8 : 00)
*** (une copie donnera   $40F8 : ?? différent de 00)

        JSR     H4090   ; JSR Vérif. Résultat en $40F8

*** VERIFIE RETOUR VERIF $40F8
*** (adresse modifiée en fonction du résultat de la vérif appelée ci-dessus)

        LDA     H40F8   ; Prend l'adr résultat vérif
        BNE     H4018   ; si différent de 0, alors plante!

*** SAUT AU JEU.
*** Si $40F8 contient bien 00, alors saut en $0200 (début du jeu)

        JMP     $0200   ; Début du jeu (présentation space...)

*** PLANTAGE
*** Sinon, le programme plante...de manière complexe.

H4018   LDA     TXTSET
        LDA     H40F7
        ...
        ...

Pour la déconnecter, il suffit donc de remplacer le JMP $4000 par un JMP $0200,
puisque l'on a vu que cette vérif était déconnectable simplement, c'est à dire
que le disk soit un original ou une copie ou que la vérif ne soit pas apellée,
aucune adresse necessaire au bon fonctionnement du logiciel en question n'est
modifiée; les seules adresses modifiées étant des adresses "drapeau" au sein
meme de ladite vérification disk.. alors déconnectons donc..

Le plus simple en fait est de mettre en piste $20 secteur $00 octet $00,
les octets suivants :
                     ____________________________________
                    !                                    !
                    !   ARKANOID _ DEPLOMBAGE COOKBOOK   !
                    !                                    !
                    ! P$20 S$00 O$00 : 8D E8 C0 4C 00 02 !
                    !____________________________________!

c'est à dire d'arreter le drive comme c'est fait à la fin de la vérification
disk (puisque tout le jeu est chargé et que la vérif' est passée) puis de
sauter du début du jeu.. (le 8D E8 C0 correspond à un STA $C0E8 soit à un
appel du commutateur "drive off" qui arrete le drive, et le 4C 00 02 est un
simple JMP au début du jeu comme on le trouve en $4000 et quelques, après
l'appel de la vérif, seulement celui-ci est avant l'appel de la vérif!)

Et c'est déplombé !!!

Allez maintenant, si vous voulez en savoir plus sur ce soft, jeter un coup
d'oeil au fichier 2 de ce cours, concernant le minidos taito... ok?

C'est tout aussi passionnant, sinon plus..
_______________________________________________________________________________

Amicalement, GDF _________________________________

SOMMAIRE 2 : PLOMBAGE
_______________________________________________________________________________


1. La petite bete, ou se situait-elle ?? Analyse au nibble editor.
2. Y'a-t-il un moyen d'obtenir une copie d'original parfaite ?


Retour sommaire

hr cours GDF

Cours mini DOS Taito.


===============================================================================
ARKANOID...2ND FICHIER (PROTECTION et BOOT TAITO)                     Godfather
===============================================================================
Révision 1.00                                         Update : 20 Decembre 1988


Salut les fous !!

                        TOUT SUR LE "DOS TAITO" !!!
                        ___________________________

Voici la suite du cours Taito avec la description totale du boot d'Arkanoid
qui est en fait un pseudo_dos tel le Epyx_boot et de nombreux autres boots
de jeux en une face.. laissez moi ici vous dire quelques mots du fonctionnement
et des adresses clé de ce dos taito, qui charge..entre autres..la vérif !!!

D'abord, voici un listing du boot en question, commenté.. puis toutes les
explications à ce sujet. Ok?

Allez y.. essayez déjà de comprendre un peu de boot...

HBC00   STA     $C000
        LDA     $C08B
        LDA     $C08B

*** CLEAR PAGE HGR1 ($2000-3FFF)

        LDA     #$00
        TAY
        STA     $00
        LDX     #$20
        STX     $01
HBC12   STA     ($00),Y
        INY
        BNE     HBC12
        INC     $01
        DEX
        BNE     HBC12

*** AFFICHE PAGE HGR (ECRAN VIDE)

        LDA     HIRES
        LDA     MIXCLR
        LDA     LOWSCR
        LDA     TXTCLR

*** BLOADER

        LDA     #$00
        STA     $82
        LDX     #$00 ; Numéro du programme à charger.. catalog
HBC2E   STX     HBC9C

        JSR     HBC50
        INC     HBC9C
        LDX     HBC9C
        CPX     #$04
        BNE     HBC47
        LDA     $C083
        LDA     $C083
        JMP     HBC2E

HBC47   CPX     #$09
        BNE     HBC2E

        LDX     #$60    ; Saut au boot3 ($4000)
        JMP     Boot3   ;

*** GESTION DU CATALOG TAITO
*** ENTREE . X = NUMERO DU FICHIER A CHARGER
***
*** Table bufferHi : $BC8A
*** Table secteurs : $BC78
*** Table pistes   : $BC81 (phases drive arm)
*** Table Nbr_Sect : $BC93
***
*** Nbre secteurs  : $BC9D
*** Buffers décroissants
*** Secteur décroissants

HBC50   LDA     cat_trk,X       ; Table pistes
        TAY                     ; Piste
        LDA     cat_buf,X       ; BufferHi (décroissant)
        STA     Buf             ;
        LDA     cat_nbr,X       ;
        STA     Nbr_Sect        ; Table cat_nbr,X
        LDA     cat_sct,X       ; Table secteurs
        TAX                     ; Secteur

HBC63   JSR     LoadSkt         ; Routine de chargement d'un seul skt.
        DEC     Nbr_Sect        ; Table cat_nbr,X
        BEQ     loaded          ; Plus de secteurs.. rts
        DEC     Buf             ; secteur suivant : buffer décroissant!
        DEX                     ; secteur décroissant
        BPL     HBC63           ; On le charge..
        LDX     #$0F            ; On le remet à 0F..
        DEY                     ; Piste précédente.....(décroit de 2 phases)
        DEY                     ;
        JMP     HBC63           ;
loaded  RTS

*** CATALOG
*** FILE :  010203040506070809

cat_trk HEX 141212040402000040  ; Attention! TOUT EST DANS CES 4 TABLES
cat_sct HEX 0D0F0702040F0F0B03  ; Warning!
cat_buf HEX EDBFB7DEDD1F0C0643  ; Warnungen!
cat_nbr HEX 0E0258030210050504  ; Attention!

HBC9C   HEX 00
NbrSect HEX 00
HBC9E   HEX FA
        HEX 60


Allons y maintenant, je vous explique en détail ce mini_dos taito,
que personne n'a encore eu le loisir d'étudier puisque j'ai eu arkanoid en
avant première planétaire, et fait ce cours avant meme d'en faire passer une
copie à quiconque.. si ca peut nous rendre fiers, lets do it right !

D'abord, pour le comprendre, il faut bien se rappeler les fonctions minimales
et les données minimales que doit posseder tout système d'exploitation disk
(Disk Operating System Taito soit D.O.S. Taito)... On a vu ca avec le
Epyx boot Maker maintenant en vente directement avec le cours 10 Epyx.


                      LE PRINCIPE DES PSEUDO_CATALOG.
                      _______________________________

Microsoft a appelé ça un Directory, quand ils ont écrit leur MSDOS sur IBM PC.
Wozniak a appelé ça un Catalog, quand il a écrit son DOS 3.3...
On va appeler ca un Pseudo_Catalog, en désossant ce Mini Dos_Taito, ok?

Pour organiser des fichiers sur un disk, que ce soit des fichiers Basic,
Machine, Texte, S, R.. que ce soit un Apple, un IBM ou un Cray II,..
que ce soit un disk 5.25", 3.5",.. un disk dur ou un moule à gauffre..
Il faut toujours avoir les données suivantes pour se reperer sur le média
magnétique.. Il faut donc TOUJOURS mettre dans un "pseudo-catalog" :

   - L'endroit où charger le fichier en Ram...
   - La localisation du fichier sur le disk. (pistes, secteurs..)

                             (            / "Début, Fin.."                    )
                             ( ou bien... / "Début, Longueur.."               )
                             ( ou bien... / "Localisation de chaque partie.." )


                        L'ORGANISATION DU MINI_DOS TAITO
                        ________________________________

Le pseudo-catalog se compose sous la forme de 4 tables de data, à savoir :

        Table 1 : Repere des pistes de début pour chaque fichier
        Table 2 : Secteurs de début..
        Table 3 : Buffer de début..
        Table 4 : Nombre de secteurs à charger..

Chaque table se constitue en l'occurence de 9 octets, le premier de chaque
table correspondant au premier fichier de ce catalog; le second, au second, etc
Ainsi, quand le dos veut charger le fichier 3 par exemple (je les aient
numéroté dans ce source de 01 à 09), il prendra comme paramètres de chargement
le 3eme octet de chaque table et s'en servira pour savoir d'où charger le
programme, et où le charger en mémoire.. on va revoir ca..

La première table ne correspond pas directement au numéro des pistes, mais
à deux fois ce numéro. par exemple, pour un fichier qui commencerait en piste
$05, on aura la valeur $0A ($05=5, et $0A=10!). Pourquoi ? Tout simplement
parce que - et on aura l'occasion d'en reparler très bientot dans un prochain
cours - le moteur du drive Apple s'actionne par demi-piste.. et non par pistes!
on indique donc ici le nombre de phases de moteur à faire pour atteindre le
programme, ce qui permettrait d'écrire des programmes sur des demi-pistes !!

Table 1 - nombre de phases moteur drive pour atteindre la bonne piste

Les autres tables contiennent bien ce qu'elles veulent dire.. Sect, buf, etc..
Il faut savoir ceci également :
        _____________________________________________________________
       !                                                             !
       ! Ordre des secteurs lors du chargement : Décroissants        !
       ! Ordre des pistes                      : Décroissantes       !
       ! Buffer                                : Décroissant         !
       !_____________________________________________________________!

Ca veut dire que si l'on a : phases $40 secteur $0F Buffer $5F Nb_Secteurs $20,
le premier secteur sera chargé de la piste $20 ($40/2) secteur $0F, en $5F00..
le second secteur sera chargé de la piste $20 secteur $0E en $5E00...etc...
jusqu'au $20eme secteur chargé.. (le compteur de secteurs revient à 0 lors du
chargement du dernier secteur.. normal!).

Rappelez vous le cours 3 sur la RWTS... Je disais ceci :
      __________________________________________________________________
     !                                                                  !
     !  "Avant un JSR RWTS, il faut définir plusieurs choses...         !
     !                                                                  !
     !   - La piste à lire/écrire/formatter/déplacer la pioche sur...   !
     !   - Le secteur de cette piste                                    !
     !   - Le buffer en mémoire (2 octets : Adresse Haute et Basse      !
     !   - Le slot concerné                                             !
     !   - Le drive concerné                                            !
     !   - Le volume de la galette                                      !
     !   - La commande (00=SEEK, 01=READ, 02=WRITE, 04=INIT)..."        !
     !__________________________________________________________________!

Voilà.. Tout ça, c'est indispensable à toute routine RWTS qui se respecte..
de meme à toute routine FBoot... Si on vous dit d'aller faire les courses sans
vous dire quoi acheter, vous avez l'air assez con.. et ça que ce soit au pole
nord ou Rue Mouffetard...

La liste des courses est une LISTE DE DONNEES INDISPENSABLE !!!
La liste que consitue ce pseudo-catalog est   INDISPENSABLE !!! au mini_dos.

Le pseudo-catalog (en fait, dans ce dos, il vaudrait mieux dire "les tables
de paramètres de tous les fichiers") est inclus dans le dos taito.. on
retrouve les 4 tables en mémoire aux adresses suivantes :
        _________________________________________________________________
       !                                                                 !
       ! Table 1 parm : Phases moteur (pistes*2)         Adresse : $BC78 !
       ! Table 2 parm : Secteurs                         Adresse : $BC81 !
       ! Table 3 parm : Buffers                          Adresse : $BC8A !
       ! Table 4 parm : Nb_Secteurs                      Adresse : $BC93 !
       !_________________________________________________________________!

Sur le disk, on retrouve ces paramètres avec un boot du mini dos en
piste $00 secteur $05 octet $78.. que voici :

*------------------------------*
! $00: 8D 00 C0 AD 8B C0 AD 8B !        ; Début du bloader      ($BC00)
! $08: C0 A9 00 A8 85 00 A2 20 !
! $10: 86 01 91 00 C8 D0 FB E6 !
! :::::::::::::::::::::::::::: !
! $78: 14 12 12 04 04 02 00 00 !        ; et voilà les tables   ($BC78)
! $80: 40 0D 0F 07 02 04 0F 0F !
! $88: 0B 03 ED BF B7 DE DD 1F !
! $90: 0C 06 43 0E 02 58 03 02 !
! $98: 10 04 05 04 00 00 FA 60 !
! :::::::::::::::::::::::::::: !
! $E8: 20 A4 A1 D0 1F C9 8D D0 !        ; suite du bloader (après les tables)
! $F0: F7 AE 5F AA AD 65 AA 1D !
! $F8: 0A A9 5D 0A A9 D0 93 AE !
*------------------------------*

               Vous avez compris le principe de ce catalog ???

                                  Non ???

                   Alors laissez moi vous le décortiquer...


                        LE PSEUDO_CATALOG D'ARKANOID
                        ____________________________

Les tables sont les suivantes (vue sur Arkanoid, piste $00 secteur $05) :

Numéro des fichiers   : 01 02 03 04 05 06 07 08 09
---------------------------------------------------
Phases                : 14 12 12 04 04 02 00 00 40
Secteurs              : 0D 0F 07 02 04 0F 0F 0B 03
Buffer de départ      : ED BF B7 DE DD 1F 0C 06 43
Nombre de secteurs    : 0E 02 58 03 02 10 04 05 04

et l'on a déduit la table des pistes de départ à partir de la table des phases.

Numéro des fichiers   : 01 02 03 04 05 06 07 08 09
---------------------------------------------------
Piste de départ       : 07 06 06 02 02 01 00 00 20

On déduit donc le catalog suivant :
 __________________________________________
!                                          ! TOUT LE PSEUDO_CATALOG D'ARKANOID.
! Fichier 01                    / Arkanoid !  ________________________________
! ----------                               ! !                                !
! Piste de départ                 : $07    ! ! <- 1er octet table1 * 1/2      !
! Secteur de départ               : $0D    ! ! <- 1er octet table2            !
! Buffer de départ                : $ED00  ! ! <- 1er octet table3            !
! Nombre de secteurs à charger    : $0E    ! ! <- 1er octet table4            !
!__________________________________________! !________________________________!
 __________________________________________   ________________________________
!                                          ! !                                !
! Fichier 02                    / Arkanoid ! !                                !
! ----------                               ! !                                !
! Piste de départ                 : $06    ! ! <- 2eme octet table1 div./2    !
! Secteur de départ               : $0F    ! ! <- 2eme octet table2           !
! Buffer de départ                : $BF00  ! ! <- 2eme octet table3           !
! Nombre de secteurs à charger    : $0E    ! ! <- 2eme octet table4...etc...  !
!__________________________________________! !________________________________!
 __________________________________________
!                                          ! Le bloader charge le secteur de
! Fichier 03                               ! départ dans le buffer de départ,
! ----------                               ! puis décrémente :
! Piste de départ                 : $06    !
! Secteur de départ               : $07    ! - le buffer
! Buffer de départ                : $B700  ! - le secteur (et piste..)
! Nombre de secteurs à charger    : $58    ! - le nombre de secteurs à charger
!__________________________________________!
 __________________________________________   ________________________________
!                                          ! !                                !
! Fichier 04                               ! ! Chargé de la P$02 S$02 : $DE00 !
! ----------                               ! ! Chargé de la P$02 S$01 : $DD00 !
! Piste de départ                 : $02    ! ! Chargé de la P$02 S$00 : $DC00 !
! Secteur de départ               : $02    ! !________________________________!
! Buffer de départ                : $DE00  ! !                                !
! Nombre de secteurs à charger    : $03    ! ! prg. chargé en carte language. !
!__________________________________________! !________________________________!
 __________________________________________   ________________________________
!                                          ! !                                !
! Fichier 05                               ! ! prg. chargé en carte lang.     !
! ----------                               ! !                                !
! Piste de départ                 : $02    ! ! Chargé de la P$02 S$04 : $DD00 !
! Secteur de départ               : $04    ! ! Chargé de la P$02 S$03 : $DC00 !
! Buffer de départ                : $DD00  ! !________________________________!
! Nombre de secteurs à charger    : $02    !  ________________________________
!__________________________________________! !                                !
 __________________________________________  ! Chargé de la P$01 S$0F : $1F00 !
!                                          ! ! Chargé de la P$01 S$0E : $1E00 !
! Fichier 06                               ! ! Chargé de la P$01 S$0D : $1D00 !
! ----------                               ! ! Chargé de la P$01 S$0C : $1C00 !
! Piste de départ                 : $01    ! ! Chargé de la P$01 S$0B : $1B00 !
! Secteur de départ               : $0F    ! ! Chargé de la P$01 S$0A : $1A00 !
! Buffer de départ                : $1F00  ! ! Chargé de la P$01 S$09 : $1900 !
! Nombre de secteurs à charger    : $10    ! ! Chargé de la P$01 S$08 : $1800 !
!__________________________________________! ! Chargé de la P$01 S$07 : $1700 !
 __________________________________________  ! Chargé de la P$01 S$06 : $1600 !
!                                          ! !________________________________!
! Fichier 07                               !  ________________________________
! ----------                               ! !                                !
! Piste de départ                  : $00   ! ! Chargé de la P$00 S$0F : $0C00 !
! Secteur de départ                : $0F   ! ! Chargé de la P$00 S$0E : $0B00 !
! Buffer de départ                 : $0C00 ! ! Chargé de la P$00 S$0D : $0A00 !
! Nombre de secteurs à charger     : $04   ! ! Chargé de la P$00 S$0C : $0900 !
!__________________________________________! !________________________________!
 __________________________________________   ______________
!                                          ! !              DEBUT DU PROGRAMME
! Fichier 08                               ! !                                !
! ----------                               ! ! Chargé de la P$00 S$0B : $0600 !
! Piste de départ                  : $00   ! ! Chargé de la P$00 S$0A : $0500 !
! Secteur de départ                : $0B   ! ! Chargé de la P$00 S$09 : $0400 !
! Buffer de départ                 : $0600 ! ! Chargé de la P$00 S$08 : $0300 !
! Nombre de secteurs à charger     : $05   ! ! Chargé de la P$00 S$07 : $0200 !
!__________________________________________! !________________________________!
 __________________________________________   ________________________________
!                                          ! !                                !
! Fichier 09                               ! ! VERIFICATION DU DISK ORIGINAL. !
! ----------                               ! !                                !
! Piste de départ                  : $20   ! ! Chargé de la P$20 S$03 : $4300 !
! Secteur de départ                : $03   ! ! Chargé de la P$20 S$02 : $4200 !
! Buffer de départ                 : $4300 ! ! Chargé de la P$20 S$01 : $4100 !
! Nombre de secteurs à charger     : $04   ! ! Chargé de la P$20 S$00 : $4000 !
!__________________________________________! !________________________________!

Quand le nombre de secteurs à charger arrive à zero, le chargement est terminé.

J'espère qu'à ce niveau là du cours Taito, vous savez tout sur son catalog et
sur son minidos !.. non ??

encore des questions ??

Alors je vous écoute...

=============================================== Godfather, en pleine évolution!

A NOTER
-------
En préparation : Cours 13.2 sur le Mini Dos que l'on trouve au boot de ALF !!!
Pas vraiment du plombage, pas vraiment du déplombage.. mais passionant comme
ce fichier peut l'etre.. non ??? jamais ???

Vous pouvez le commander dés maintenant...


Retour sommaire

hr cours GDF

Les programmes de ce disk.


_______________________________________________________________________________

LES PROGRAMMES DE CE DISK
_______________________________________________________________________________

Rev1.00


Les programmes de ce disk sont les suivants :





* Vérification disk Taito sauvé en catalog. (source reconstitué)

 B 003 VERIF.TAITO
 B 019 VERIF.TAITO.S

* Boot 1 Taito, sauvé en catalog (source reconstitué)

 B 003 BOOT1.TAITO
 B 008 BOOT1.TAITO.S

* Boot 2 Taito, sauvé en catalog (source reconstitué)

 B 026 BOOT2.TAITO.S

* Boot écrit à l'origine pour la signature de la version "floby spécial"

 B 006 BOOT4PAGES.ARKA.S                ; A reprendre pour d'autres cracks!
 B 002 BOOT4PAGES.ARKA
___________________________________________________________________ GDF, Dec 88


Retour sommaire

hr cours GDF

Originaux en attente.


_______________________________________________________________________________

Liste des dernieres news Godfather                            Update : Noel 88!
_______________________________________________________________________________

                                                         Last Update : 18/12/88
 ______________________________________ 
!                                      !
! Utilitaires 88                       !  ____________________________________
!                                      ! !                                    !
! Déplombage mode d'emploi 9      (2f) ! ! Aventures, Simulations, Autres..   !
! Music for everybody 2,3         (2f) ! !                                    !
! Laser compact disk              (2f) ! ! Deathlord                     (3f) !
! Ultima 5.Doc                    (2f) ! ! Bards Tale III (ver.ss codes) (3f) !
! II Write                        (2f) ! ! Pirates! (ver.ss codes!)      (2f) !
!______________________________________! ! Murder on the Altantic        (1f) !
 ______________________________________  ! King Quest III                (10) !
!                                      ! ! Alternate Real. the city      (3f) !
! Arcades 88                           ! ! Wasteland                     (4f) !
!                                      ! ! Ultima V                      (8f) !
! Captain Power + Fix             (2f) ! ! Panzer Strike Africa          (4f) !
! Viper Patrol + Fix              (1f) ! ! Batman                        (1f) !
! Rods Revenge + Fix              (1f) ! ! Sons of Liberty               (2f) !
! Matterhorn Screamer + Fix       (1f) ! !                                    !
! Dive Bomber                     (2f) ! ! et beaucoup d'autres...            !
! Test Drive + Fix v2.00          (2f) ! !____________________________________!
! Xevious    + Fix                (1f) !  ____________________________________
! Force 7    + Fix                (1f) ! !                                    !
! Eagle Nest + Fix                (1f) ! ! Originaux à déplomber vous-memes!  !
! Gauntlet                        (2f) ! ! Dernières arrivées Dec 1988 :      !
! Space Quest II                  (8f) ! !                                    !
! Paperboy   + Fix                (1f) ! ! Sky Travel              Cours 06   !
! The Last Ninja + Fix            (2f) ! ! Los Angeles Crackdown   Cours 10   !
! Platoon                         (2f) ! ! Dive Bomber             Cours 10.2 !
! The Games : Summer Edition      (4f) ! ! The Games : Summer .Ed  Cours 10.2 !
! Times of Lore                   (2f) ! ! Rampage                 Cours 14.2 !
! Star Trek                       (4f) ! ! Crossbow                Cours 14.2 !
! Neuromencer                     (4f) ! ! Times of Lore           Cours 17.2 !
!______________________________________! ! The Last Ninja          Cours 19   !
                                         ! Arkhanoid               Cours 23   !
                                         !____________________________________!

De plus, de très nombreux originaux EPYX, SIERRA ON LINE et ORIGIN SYSTEMS sont
attendus en cette fin décembre.. Ils seront aussitot à votre disposition en
versions plombées si vous avez prévu le coup avec le cours correspondant..
et sinon, en version déplombée bien sur..
 ___________________________________________________________________
!                                                                   !
! Originaux 89 attendus!                                            !
!                                                                   !
! SIERRA :                      EPYX :            DATASOFT :        !
! --------                      ------            ----------        !
! Manhunter                     VCR Workshop      Mind Pursuit      !
! Police Quest 128k             Deflexor          Bismark           !
! Silpheed                      Spiderbot         Crosscheck        !
! King Quest IV                 Super Cycle                         !
! Space Quest III               S.Sp.Soccer                         !
!                               Tank simulator                      !
! ORIGIN SYSTEMS :              The Legend of Black Silver          !
! ----------------              Impossible Mission II               !
! Homecourt Basketball          Omnicron Conspiracy                 !
! Space Rogue                   Sporting News Baseball              !
!                               The Games : Winter Edition          !
!                                                                   !
! Mais aussi : Howard The Duck, A.D.D., Demon's Winter...           !
! ------------ Might and Magic II, Rogger Rabbit...                 !
!___________________________________________________________________!

________________________________________________________ Amicalement, Godfather


Retour sommaire