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.
----------------------------------------------------------------------
DOS 3.3 |
Download Cours GDF 24 rev 1.00 (gzipped) |
Lien | Article |
Introduction. | |
Cours 24 révision 1.00. | |
Les programmes de ce disk. |
_______________________________________________________________________________
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
_______________________________________________________________________________
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 !!!.
_______________________________________________________________________________
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