Cours de déplombage 23
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.
----------------------------------------------------------------------

|
DOS 3.3
|
Download Cours GDF 23 rev 1.00 (gzipped)
|
Sommaire
Lien |
Article |
 |
Introduction. |
 |
Cours 23 révision 1.00. |
 |
Cours mini DOS Taito. |
 |
Les programmes de ce disk. |
 |
Originaux en attente. |
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
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
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
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
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