Disk : Gp06.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
A A$0000 (000000) L$0445 (001093) 006
HELLO
B A$9000 (036864) L$00E2 (000226) 002
DISK
B A$0901 (002305) L$05DD (001501) 007
DISK.S
B A$2600 (009728) L$0AF8 (002808) 012
E-BOOT.OBJ
B A$2600 (009728) L$09FF (002559) 012
E-BOOT.OBJ0
B A$2600 (009728) L$09FF (002559) 012
E-BOOT.OBJ1.ORG
B A$2600 (009728) L$09FF (002559) 012
E-BOOT.REVISITED
A A$0000 (000000) L$16E9 (005865) 024 EPYX-BOOT MAKER
1.22
A A$0000 (000000) L$15E2 (005602) 024 EPYX-BOOT MAKER
1.0A
B A$0300 (000768) L$00CF (000207) 002
SREAD_SWRITE
T A$0000 (000000) L$8200 (033280) 130 T.EPYX BOOT
MAKER
B A$4B00 (019200) L$00C1 (000193) 002 VERIF$23
CODEE.E-BOOT
B A$0901 (002305) L$0B18 (002840) 013 VERIF$23
CODEE.E-BOOT.S
T A$0000 (000000) L$2D00 (011520) 045 T.APPENDIX
PROGRAMMES
T A$0000 (000000) L$0600 (001536) 006
T.INTRODUCTION
This catalog contains 15 files. 0 were DELETED.
----------------------------------------------------------------------
DOS 3.3 |
Download GDF's Product 06 rev 1.22 (gzipped) |
Lien | Article |
Introduction. | |
Epyx boot maker. | |
Appendix programmes. |
-------------------------------------------------------------------------------
INTRODUCTION GODFATHER'S PRODUCT #5 : EPYX BOOT MAKER
1.22 Godfather+Deny
-------------------------------------------------------------------------------
Salut et salut,
Enfin, la voici, la
voilà, la version 1.22 du Epyx boot maker !
Que de nuits passées
à essayer de la débugger à fond - par ordre
chronologique - entre moi
meme - père de la chose et débuggeur fou,
entre Adam qui a aussi
plongé son nez dedans pas mal de temps et
enfin Deny, programmateur
expérimenté s'il en est, et qui avait
l'esprit frais pour se
plonger au coeur de ce programme, et qui a
vu ce que l'on ne voyait
plus depuis bien longtemps; bref, à nous
trois, on vous
présente ce boooo soft super utile !...
Enfin, la voici, la
voilà, la version 1.22 du Epyx boot maker !
Elle marche, elle est
belle.. aussi, je vous laisse là tout de
suite pour que vous puissiez
la retrouver au plus vite !
Enfin, enfin, enfin.. avant
la version 1.23 !!...
Amicalement et Erotiquement, Godfather
-------------------------------------------------------------------------------
ATTENTION !!!
-=-=-=-=-=-=-=-=-=-=-
Je préviens tous ceux qui commencent maintenant la lecture de ce
fichier
complémentaire.. Je l'ai écris en vacances,
j'étais ce jour là très en forme et
ça se ressent beaucoup dans ma prose.. alors - poum poum - que
tous ceux qui
n'aiment pas trop que je raconte ma vie se planquent.. Ce jour
là, j'aimais
ça.. et ce n'est pas la dernière fois !.. alors lisez le
de loin !!...
Ah! et puis encore autre chose.. j'emprunte dans ce fichier une dizaine
de
secteurs du cours 13 je crois.. alors sur les 130 secteurs que fait ce
fichier,
venez pas me chier une pendule à cause de dix malheureux
secteurs répétés pour
les besoins de ceux qui ont sauté le cours 13.
Je regle mon rétro'.. Je vérifie ma ceinture.. et je
tourne la clé !...
C'est parti..
===============================================================================
EPYX-BOOT MAKER
1.00
(C) GODFATHER'S PRODUCTS 7-1987
===============================================================================
But du jeu : Tout vous faire comprendre du nouveau Boot-Epyx, et vous
permettre
------------ de mieux le comprendre que les plombeurs d'Epyx eux memes
!!
===============================================================================
INTRODUCTION AU E-BOOT
===============================================================================
Pour leurs deux dernieres news, Championship Wrestling et Movie Monster
Game,
Epyx s'est fait une nouvelle protection, que l'on a completement
décortiquée
dans le cours 10, (et que l'on retrouvera surement sur World Games et
Super
Cycle très bientot...), et s'est aussi fait un nouveau boot...
La protection, on connait par coeur... et meme si ces softs sont nuls,
il
n'y a pas QUE la protection d'interessante.. le boot l'est aussi
beaucoup !!...
Et c'est pour cette raison, que je vous propose ici ce Epyx-Boot Maker
accompagné d'un cours complet concernant la facon dont les
pseudo-fichiers
sont organisés dans le pseudo-catalog...
(Pour ceux qui aiment pas que je raconte ma vie, sautez les 2 ] qui
viennent..)
(sinon, gare !!)
J'ai nommé le boot d'Epyx "E-BOOT", pour pas trainer Epyx-Boot
partout, parce
que la pub' gratuite est interdite à l'antenne, et parce que
ça me fait penser
à "U-BOAT" et que le Silent Service de Microprose a
été interdit à la vente
libre en RFA pour cause de "trop grand realisme pour une simulation
submarine",
et que maintenant, le seul moyen de le trouver dans ce beau pays, c'est
de
l'acheter dans un sex-shop..
Je plaisante pas.. c'est vrai.. alors ça me fait marrer et
voilà..et j'appelle
mon boot "E-Boot" pour U-Boat, et d'abord - petit crachin - je suis pas
là
pour vous dire pourquoi j'appelle ça comme ça.. et
voilà, et voilà..
et puis c'est tout.. et je continue.. et voilà.. arretez de me
poser des
question stupides.. et voilà.. je continue..
===============================================================================
Comment boote un disk sous E-Boot ??
===============================================================================
Pour organiser des fichiers sur un disk, que ce soit des fichiers Basic,
Machine, Texte, S, R.. que ce soit un Apple, un IBM, (un Atari ?), ou un
Cray II,.. que ce soit un disk 5.25", 2.5",.. un disk dur ou un moule
à gauffre
Il faut toujours avoir, dans ce que l'on peut appeler un
"repère" (et que
Wozniak a appelé CATALOG lorsqu'il a programmé le 3.3),
les données suivantes
pour se reperer sur le média magnétique.. Il faut donc
TOUJOURS mettre dans
un pseudo-catalog :
- La localisation du fichier sur le disk / "Début,
Fin.."
ou bien... / "Début, Longueur.."
ou bien... / "Localisation de chaque partie.."
- L'endroit où le charger en Ram (pour
les micro-ordinateurs seulement!)
Ce sont les "coordonnées" d'un fichier sauvé sur disk...
C'est comme pour mettre du beurre dans ses épinards..
Il faut trouver dans quel placard la bonne a rangé le beurre et
savoir dans
quelle assiette en mettre.. (Kristo, il engueule toujours ma mere quand
elle
met du jus sur son riz et pas sur sa viande..., elle a pas de
repère, notre
chère maman!..)
Ca c'était le principe du catalog... le "pourquoi on est
OBLIGé d'avoir,
ce que j'appelerais maintenant un 'pseudo-catalog' !"...
On reparlera de "pseudo-catalog" dans un prochain GODFATHER'S PRODUCTS
concernant le FBoot d'Electronic Arts.. de celui sur le FBoot de Chip
Select..
Aussi, lors des cours sur le Mad-Compactage (Mise en catalog, suite et
fin)..
et surement pour expliquer d'autres boots lors de futurs
déplombages fous..
Maintenant, on va voir un peu comment se passe le boot d'un disk sous
E-Boot
-------------------------------------------------------------------------------
Boot 1 : $0800-08FF ; Boot 3.3 normal
en $0800 :
Valeur HEX 01. (Un seul secteur chargé au boot)
en $0801.. : Boot 3.3
classique..
-------------------------------------------------------------------------------
Boot 2 : $B700-BFFF
en $B700 : la routine qui
s'occupe du pseudo-catalog et de charger les
pseudo-fichiers.
en $B600 : le buffer
où est chargé le pseudo-catalog (B700G)
en $BD00 : la RWTS 3.3
classique...
en $BB00 : la vérif'
du plombage (que l'on a enlevée dans le cours 10)
-------------------------------------------------------------------------------
Boot 3 : Fichier numéro X-reg du pseudo-catalog
Le boot 3 dépend du
pseudo-catalog.. on va décortiquer completement le
principe du pseudo-catalog
pour voir ensuite comment le bloader ($B700)
utilise ce catalog, et
comment controler ce bloader...
On va voir maintenant le
principe du Pseudo-Dos Epyx, en commençant
par la partie "comment c'est
pensé" pour continuer par la partie
"comment c'est
programmé".. Voici tout ce qu'il faut savoir sur le
pseudo-catalog, puis sur le
bloader de programes...
===============================================================================
Le principe du Pseudo-catalog Epyx...
===============================================================================
Les plombeurs de chez Epyx ont juste organisé une table..
(organisation que connait parfaitement la routine de chargement d'un
fichier !)
Supposons que j'ai trois fichiers à mettre sur mon disk en
E-Boot...
Ces 3 fichiers sont les suivants, et sont sous DOS 3.3 :
]CATALOG,S6,D1
*B ???
PACMAN
(A$0800,L$7FFF,Piste $21,D)
*B 033
IMAGE
(A$2000,L$1FF8,Piste $14,2)
*B ???
MOVIE MONSTER GAME (A$0C00,L$86F4,Piste $03,F)
J'ai mis à coté ce qui ne s'affiche pas lorsque l'on tape
catalog, mais qui se
trouve à quelques octets des nom des fichiers.. (voir cours
3,4..)
C'est à dire :
- La piste et le secteur de la liste des secteurs
- L'adresse de départ pour le chargement en
Ram
- La longueur du fichier en nombre d'octets
Ca c'est le CATALOG 3.3...
Wozniak a choisit d'utiliser le principe de la liste des secteurs du
fichier
(technique "Localisation de chaque partie du fichier sur le disk" vue
plus haut
ainsi que la technique "Longueur du fichier en Ram")
Pour charger un fichier, le catalog indique au DOS la piste et le
secteur de
la liste des secteurs du fichier et le DOS va ensuite charger cette
liste en
ram pour ensuite charger chacun des secteurs dans des buffers
consécutifs,
après l'adresse de départ et pour la longueur
donnée.. (Ouf...!)
Pour le E-Boot c'est différent.. Pour charger un fichier, il va
trouver dans le
catalog, le numéro de la piste et du premier secteur du
fichier.. ensuite, il
va voir l'adresse de départ puis le nombre de secteurs du
fichier, et non plus
une liste claire de chacun des secteurs, un par un...
Restriction 1 : Les pseudo-fichiers sous E-Boot doivent commencer
à un certain
--------------- secteur sur une certaine piste (tous deux
indiqués dans la
case du fichier dans le pseudo-catalog) et se trouver sur les
secteurs suivants dans l'ordre des secteurs décroissant et
des pistes croissantes...
Je m'explique : Un fichier qui serait n'importe où sur un disk
en DOS 3.3
et qui serait chargé avec une liste de secteurs, s'il commence
en secteur 06 de la piste 05 sur notre disk en E-Boot, et
qu'il fait 09 secteurs, le pseudo-catalog Epyx connaitra le
secteur de départ et le E-Boot considerera, pour charger ce
fichier que la liste de ses secteurs est la suivante :
(06 05, 06 04, 06 03, 06 02, 06 01, 06 00, 07 0F, 07 0E, 07 0D)
Comprendo ??...
Le Epyx-Boot maker, vous demandera le secteur et la piste où
commencer l'écriture du fichier que vous voulez enregistrer
sur votre E-Boot disk, et ce sera à vous de vérifier
qu'aucun
programme précédemment mis sur ce meme disk ne sera pas
recouvert sans le vouloir.
Pour vérifier, calculez le secteur de fin du fichier en
fonction du nombre de secteurs du fichiers que vous enregistrez
et du secteur de départ.. Il ne faut pas que le dernier secteur
"entamme" le fichier suivant.. ni que le fichier que vous
enregistrez maintenant ne recouvre completment un fichier que
vous désirez garder dans le catalog...
Pour charger un fichier, le catalog 3.3 indique au DOS l'adresse de
chargement
avec 2 octets, indiquant l'un l'adresse basse de chargement du premier
secteur
du programme, et l'autre l'adresse haute.. ($B7F0, $B7F1, si vous vous
rappelez
bien du cours 3...)
Pour le E-Boot, c'est différent.. l'adresse basse de tous les
fichiers mis en
E-Boot doit etre 00. Pas question de charger un fichier ayant une
adresse de
départ qui ne soit pas "entière".. A$7FD ne colle pas du
tout.. Il faudrait
A$700.
Restriction 2 : L'adresse basse de chargement doit toujours etre nulle.
---------------
Mais alors, si ma routine commence en $803 par exemple..?
Mais alors, si le programme à mettre en E-Boot commence en $1FFD
par exemple..?
Comment faire ??... On doit abandonner ??
Je m'explique : L'adresse basse de chargement doit etre nulle..
ça se sont les
plombeurs de chez Epyx qui le disent.. moi je doit qu'on peut
toujours tout bidouiller, et je vais vous le prouver..
Il y a deux moyens pour outre-passer cette 2nde restriction.
Pourquoi cette restriction : Uniquement pour une question de
place dans le pseudo-catalog.. Ils voulaient avoir un pseudo-
catalog d'une page (256 octets) pour une question de facilité
de programmation (ils ont bien raison) et ils avaient à y
mettre pleins de programmes.. alors pourquoi perdre un octet
à indiquer une adresse basse alors que l'on a qu'a commencer
le programme à une adresse fixe.. on a les sources de tous les
programmes, alors pourquoi en assembler n'importe où ??
Cette restriction ne genera personne, s'il possede le source
entier du programme à mettre en E-Boot.. (c'est encore une fois
un avantage de sources). Mais nous, elle nous gene pas mal...
Il faut bien comprendre que, de sauver avec A$800 ou A$8F9
par exemple, on n'a aucune perte sur le disk.. Le programme
ne va pas occuper un secteur de plus !
Seule l'adresse haute peut faire modifier le nombre de secteurs
qu'occupe un programme.. pas l'adresse basse.. si vous me
suivez bien...
Pour contrer cette restriction, il y a une methode bète
et une méthode intelligente... Evidemment, c'est la
méthode
bète qui m'est venu tout de suite à l'esprit..
Voici le principe de la méthode bète, on verra l'autre,
à la
fin de ce fichier quand je parlerais du Bloader Epyx, de
comment le controler complètement et de comment "changer le
buffer" de chargement.
Le principe de la méthode bète est simple, il suffit de
charger le programme à son adresse normale ($89A par exemple)
sous DOS 3.3 (BLOAD AGAGA,A$89A), de passer sous moniteur pour
modifier le début de la page de chargement pour y glisser
un JMP au début du programme ($800: 4C 9A 08). Si le
début du
programme est $802 par exemple, et que vous n'avez pas la place
de glisser un JMP sans effacer le début du programme, vous
n'aurez qu'à NOPer le début. ($800 : EA EA..)
Sauvez ensuite le programme avec A$800 pour etre bon pour le
E-Boot maker, puis mettez le en E-Boot normalement comme on
va le voir plus bas.. !
Je vous donne cette méthode d'un coté pour pas que vous me
disiez "Mais on peut faire comme ça aussi...t'as oublié
!!.."
mais surtout pour ceux qui veulent bien s'embeter avant la
mise en E-Boot et qui ne veulent pas jouer avec les adresses
du bloader comme on le verra plus loin...
===============================================================================
L'ORGANISATION DU PSEUDO-CATALOG EPYX
===============================================================================
Un pseudo-catalog se trouve en piste $00 secteur $0A de toutes les
faces des
softs Epyx (A/B)... et il ne tient qu'en un seul secteur!
On peut y mettre jusqu'à 128 programmes.. soit 23 de plus que
sur 15 secteurs
de catalog d'un DOS 3.3..(voir cours 4) !!.. Déjà un
avantage..
Le pseudo-catalog se compose sous la forme d'une table
"découpée" en cases
fictives de 4 octets.. chaque case correspondant à un
emplacement pour mettre
les coordonnées d'un fichier éventuel...
Voici un exemple de catalog pour l'équivalent du catalog 3.3 qui
se trouve plus
haut...(les adresses ne veulent rien dire)
Case 0 $00 : 21 0D 08
80 (Piste
$21,D,A$0800,L$7FFF)
Case 1 $04 : 14 02 20
20 (Piste
$14,2,A$2000,L$1FF8)
Case 2 $08 : 03 0F 0C
87 (Piste
$03,F,A$0C00,L$86F4)
Chaque case-fichier se compose ainsi :
0. Piste de départ du fichier
1. Secteur de départ du fichier
2. Adresse (haute) du buffer où charger le fichier
3. Nbre de secteurs du fichier
Ensuite vient la case suivante...
Toutes les cases se suivent et sont numérotées de #000
à #127 (de #$00 à $7F)
Ne recherchez ces numéros nulle part.. ils ne sont nulle part en
fait..
C'est le bloader ($B71A) qui charge à chaque fois le catalog en
$B600 pour
y chercher les "coordonnées" du programme que vous appelez avec
son numéro de
case dans le catalog..
Pour mieux vous montrer comment ça se présente, j'ai
boot-trace le
Movie Monster Game de chez Epyx pour arriver jusqu'au catalog...
Après avoir tracé le boot comme pour un dos 3.3 (JMP
($8FD) en $84A), on vot
en $B71D, une routine qui, par le JSR RWTS, lit la piste $00 0A en
$B600...
A ce niveau là, plutot que de continuer à boot-tracer, on
va aller lire ce
secteur de la piste $00..
Voilà ce que l'on trouve en piste $00 secteur $A de la face 1 de
Movie M.Game :
Je laisse la parole à Castor et Pollux.. (vous vous rappelez ??)
*------------------------------*
! $00: 01 0F 09 16 02 09 60 12 ! Castor - "Mon Dieu.. Mon Dieu..
! $08: 03 07 60 16 04 01 60 0E
! Mais qu'est ce
que c'est que ça ?"
! $10: 05 03 60 07 06 0C 60 04 !
! $18: 06 08 60 0B 07 0D 60 0C ! Pollux - "Ca se charge, donc c'est
utile...
! $20: 07 01 60 09 08 08 60 0A ! Ce n'est pas un programme, donc ce
sont des
! $28: 09 0E 60 0B 09 03 60 06 ! données... des données
pour le bloader..."
! $30: 0A 0D 60 06 0A 07 60 22 !
! $38: 0C 05 60 04 0C 01 60 10 ! Castor - "C'est marrant, tous les
octets
! $40: 0D 01 60 10 0E 01 64 09 ! multiples de 4 ($00, $04, $08, $0C,
$10, $14,
! $48: 0F 08 64 0C 10 0E 64 0D ! $18, etc..) sont tous compris entre
#$01 et
! $50: 11 0F 64 0D 11 02 60 22 ! #$1F... et puis tous ceux qui suivent
ces
! $58: 13 00 60 22 16 0E 60 22 ! octets ($01, $05, $09, $0D, $11...)
sont
! $60: 18 0C 60 22 1A 0A 60 22 ! tous compris entre #$0 et #$F"
! $68: 1C 08 60 22 1E 06 60 08 !
! $70: 1F 0E 00 00 00 00 00 00 ! Pollux - "Comme pour des pistes
($00-22) et
! $78: 00 00 00 00 00 00 00 00 ! des secteurs ($00-0F), alors ??"
! $80: 00 00 00 00 00 00 00 00 !
! $88: 00 00 00 00 00 00 00 00 ! Castor - "Tu crois ??"
! :::::::::::::::::::::::::::: !
! $E8: 00 00 00 00 00 00 00 00 ! Pollux - "Ben je sais pas, mais si
c'est ça,
! $F0: 00 00 00 00 00 00 00 00 ! on est en face d'un super catalog sans
DOS..
! $F8: 00 00 00 00 00 00 00 00 ! c'est Epyx qui fait ça ??"
*------------------------------*
Donc le premier fichier serait en piste $01 secteur $0F...
mais comment j'ai trouvé à quoi correspondent les 2
octets qui suivent ?
Simple, c'est toujours la meme chose...
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 !!!
Et là de meme, avant tout accès disk, il faut bien savoir
où l'on va,
et pour y faire quoi...
Cette liste est valable lorsque l'on veut acceder (c'est le cas dans le
cours
3) à un seul secteur.. Quand on veut se servir d'une routine de
lecture pour
charger un fichier, il faut ajouter à la liste des commissions,
la longueur
du fichier...
On va donc décortiquer la liste de ce qu'il faut à notre
bloader, et essayer
de voir ce que l'on trouve de cette liste dans notre pseudo-catalog...
Déjà, le slot, le bloader le connait dés le
départ, et on n'en parle plus...
Ensuite, le drive.. Les softs Epyx se chargent toujours du drive 1...
Ensuite, le volume.. ça aussi, c'est définit dés
le départ.. terminé le volume
Ensuite, la commande.. ah! ça, c'est le bloader qui s'en occupe
lui meme...
Alors qu'est ce qu'il nous reste d'indispensable ??
- La piste de départ
du fichier (piste contenant le premier secteur)
- Le secteur de
départ du fichier
- Le buffer où
charger le fichier
- La longueur du fichier
(Nombre de secteurs à lire)
Normalement, on indique 2 octets pour le buffer.. ($23 et $20 pour
$2023 par
exemple...).. Ici, ce catalog n'en définira qu'un seul,
(l'adresse haute)
car on va toujours avoir à charger des fichiers qui commencent
à l'octet $00
d'une page quelconque.. On peut donc remplacer le mot "Buffer" par
"Page Buffer"...
Voila.. Les CATALOGUES-EPYX s'organisent donc ainsi (chargé en
$B600) :
Fichier0 / $B600: Piste, Secteur, Page Buffer de chargement, Nombre de
Secteurs
Fichier1 / $B604: Piste, Secteur, Page Buffer de chargement, Nombre de
Secteurs
Fichier2 / $B608: Piste, Sect... etc...
===============================================================================
Le principe et les adresses clé du bloader Epyx (ORG $B700)
===============================================================================
Pour les programmeurs ASM, qu'ils sachent que le source complet et
détaillé
du bloader Epyx est en catalog sur ce disk...
En attendant que vous bootiez votre Merlin Pro 2.01, voici ce qu'il
faut en
retenir...
Se servir de ce bloader pour
charger simplement un programme en E-Boot
----------------------------------------------------------------------
On va voir plus loin que
chaque programme que vous allez mettre en
E-Boot portera un
numéro fictif.. Supposons que l'on veuille charger
le programme #9. Il suffit
d'écrire une petite routine qui fasse
ceci :
LDX #$9 (Numéro du programme)
LDA #$5 (Mode lecture E-Boot)
JMP $B71A
Pour le programme de la case
000 du catalog de la face A de movie
monster game, cette routine
aura pour effet (essayez de suivre en
regardant les bons octets de
ce catalog) de charger les $16 secteurs
à partir du secteur
$F de la piste $1 (dans l'ordre décroissant des
secteurs et croissant des
pistes) à partir de $900 en ram, et cette
routine se terminera pas un
JMP $900 pour executer le programmme
chargé. On va voir
comment faire pour ne pas executer ce JMP au cas
où l'on veuille juste
charger, non pas un programme executable mais des
données..
Où se charge en RAM
le programme appelé ??
-----------------------------------------------------------------------
Le programme va se charger
à l'adresse indiquée par le pseudo-catalog
cependant, si votre
programme est relogeable et que vous désirez par
exemple le charger plusieurs
fois à des adresses différentes, ou bien
ne pas le charger toujours
à la meme adresse selon ce que fait
l'opérateur, on peut
outre-passer l'adresse indiquée par le catalog
et ainsi "forcer" l'adresse
au bloader..
Pour annuler l'adresse A$
indiquée par le catalog, il suffit de faire :
-----------------------------------------------------------------------
Pour modifier l'adresse
d'éxécution du programme, il faut, d'une part
annuler la séquence
suivante :
LDA (Adresse du catalog) STA (JMP à l'Adresse du catalog)
Et modifier nous meme
l'adresse du JMP... (STA (JMP..))
Quand vous faites une
quelconque modification à une routine aussi
importante que ce bloader,
n'oubliez pas de tout remettre dans
l'ordre quand votre
modification n'est plus utile.. car elle
resterait en place pour un
autre accès disk...
soit (aa) et (bb) les
adresses (respectivement) haute et basse de
la fin de votre routine
(label : FIN) où se trouve un JMP début
pour sauter au début
du programme chargé ou n'importe où ailleurs...
(Si vous mettez cette
routine en $800 par exempe, la routine FIN se
trouvera en $816.. on aura
donc à mettre (aa = $08) et (bb = $16).)
Pour annuler la premiere
routine et charger un programme, il suffit de
faire ceci :
A9 2C LDA
#$2C ; Pour remplacer
l'instruction
8D 52 B7 STA
$B752 ; STA par BIT.. (aucun effet!)
A9 aa LDA
(aa) ; Remplace l'adresse
haute
8D 7E B7 STA
$B77E ;
A9 bb LDA
(bb) ;
8D 7D B7 STA
$B77D ;
A9 05 LDA
#$05 ; Mode lecture
A2 xx LDA
(xx) ; programme num.xx
4C 1A B7 JSR
$B71A ; Charge le programme n.xx
FIN A9
8D LDA
#$8D ; Remet la bonne
instruction
8D 52 B7 STA
$B752 ; (STA = #$8D) en place..
4C (ORG$) JMP
adresse ; saut à l'adresse voulue...
Pour modifier le Buffer
à volonté, il suffit de faire :
-----------------------------------------------------------------------
Ici, j'ai appelé "cc"
et "dd" les adresses hautes et basses du buffer..
Ne les confondez pas avec
les adresses hautes et basses de l'adresse
d'éxécution du
programme...!
A9 2C LDA
#$2C ; Pour remplacer
l'instruction
8D 4F B7 STA
$B74F ; STA par BIT. (STA BUFFERHI)
A9 cc LDA
(cc) ; Modifie l'adresse haute
8D 95 B7 STA
$B795 ; dans la table IOB...
A9 dd LDA
(dd) ; Puis l'adresse basse
8D 94 B7 STA
$B794 ; de meme...
A9 05 LDA
#$05 ; Mode Lecture
A2 xx LDX
(xx) ; programme n.xx
4C 1A B7 JMP
$B71A ; Charge le programme n.xx
FIN A9
8D LDA
#$8D ; Remet tout ce qu'il
faut
8D 4F B7 STA
$B74F ; à se place...
4C (ORG$) JMP
adresse ; JMP où vous voulez
Ne pas se servir du
bloader.. (!!)
-----------------------------------------------------------------------
Bizarre.. Je vous explique
tout un truc pour finir par vous dire
comment ne pas vous en
servir...
Si vous désirez
écrire ou charger du disk un seul secteur. (fichier de
records d'un jeu, fichier
personnages d'un jeu de role..etc...), vous
pouvez toujours, avec le
cours 3 (RWTS), utiliser la rwts en $BD00 et
la table IOB chargée
en $B78C (IOB) pour faire ce que vous voulez de la
pioche!...
Réécrire un
Bloader différent
-----------------------------------------------------------------------
Si le programme auquel vous
désirez acceder est écrit par exemple, dans
l'ordre croissant des
secteurs et décroissant des pistes (tout le
contraire des softs en
E-Boot), une fois que vous avez bien compris ce
bloader, il est très
simple, avec un minimum de connaissances en
assembleur, de
réécrire un bloader qui satisfera vos besoins...
Relogez le n'importe
où en Ram et chargez le par l'intermédiaire du
catalog..
Voici le bloader en source reconstitué tel qu'il est en source
merlin sur ce
disk...
* Boot $B700 de Movie Monster Game
* Source reconstitué par Godfather le 23/7/87 à Devon,
Angleterre.
* La routine "bloader" est la meme dans Championship Wrestling
*
* (C) Godfather's Products 1987
ORG $B700
RWTS
EQU $BD00
CATALOG EQU $B600
START JMP
HB709 ; JMP qui va etre
annulé par un BIT HB709
JMP HB71A
JMP HB732
HB709 LDA
$2B ; Slot*16 (#$60
pour slot 6)
STA HB78D ;
STA HB79B ;
LDA #$2C ; Remplace
l'instruction JMP par BIT
STA START ; (ruse classique pour
annuler le JMP)
HB716 ========> LDX #$00 ;
Numéro du fichier dans le pseudo-catalog
LDA #$05 ; X = 00, A = 05
HB71A
PHA
; Met 05 dans la pile
TXA
; A = 00
PHA
; Met 00 dans la pile
HB71D LDY
#<CATALOG ; Buffer CATALOG ($B600)
STY BUFHI ;
LDY #$00 ; Piste #$00
STY PISTE ;
LDY #$0A ; Secteur #$A
STY SECTEUR ;
JSR READ ; Read Piste $00
Sect $A en $B600
PLA
; Retire 00 de la pile (last in, first out)
TAX
; X = 00
PLA
; A = 05 (Retire 05 de la pile)
HB732
PHA
; Met 05 dans la pile
AND #$03
STA CMD ; Commande
Lecture (01)
TXA
; On met X dans A..
ASL
; et on le multiplie 2 fois par 2 (*4)
ASL
; (Il y a 4 octets par programme)
TAX
; et on remet ce numéro en X
LDA CATALOG,X ; Recherche dans le catalog, la piste..
STA PISTE ;
LDA CATALOG+1,X ; ..le secteur de départ et..
BMI HB77F ;
HB747 AND
#$0F ;
STA SECTEUR ;
LDA CATALOG+2,X ; ..le buffer (high byte) du fichier à lire
HB74F STA
BUFHI ;
HB752 STA
HB77C+2 ; On modifie ici le JMP au début
du prgm chargé
LDA CATALOG+3,X ; ..ainsi que le nombre de secteurs à charger
STA $B7A2 ;
HB75B JSR
READ ; et on le charge,
secteur par secteur
HB75E DEC
SECTEUR ; on décrémente le secteur
BPL HB76B ; jusqu'à #$00 et
après,..
HB763 LDA
#$0F ; on recommence au
secteur #$0F
STA SECTEUR ; ..(lecture plus rapide de #$0F
à #$00 !)
HB768 INC
PISTE ; ..de la piste suivante...
HB76B INC
BUFHI ; ..et on incrémente
le buffer evidemment
DEC HB7A2 ; ..on
décrémente le nombre de secteurs à lire
BNE HB75B ; et on boucle la boucle
pour tout lire !
PLA
AND #$04
BNE HB779
RTS
HB779 LDX
#$FF
TXS
HB77C JMP
$FF00 ; Sortie (JMP Boot suivant ??)
HB77F JMP
$A751
READ
LDA #>IOB ; Routine de lecture
d'un secteur
LDY #<IOB ;
JSR RWTS ;
BCS READ ; Erreur ?? Si oui,
on recommence la lecture
RTS
; Sinon, on retourne d'où on vient
IOB
HEX 01 ; Type de
la table (doit etre 01)
SLOT
HEX 60 ; Slot *16
HB78E HEX 01
HB78F HEX 00
PISTE HEX
00 ; Piste
à acceder
SECTEUR HEX
0A ; Secteur
à acceder
HB792 HEX 9D
HB793 HEX 00
BUFLO HEX
27 ; Adresse
basse..
BUFHI HEX
B6 ; ..et haute
du buffer pour charger le secteur
HB796 HEX 00
HB797 HEX 00
CMD
HEX 01 ; Commande
IOB (Voir cours 3)
HB799 HEX 00
HB79A HEX 00
HB79B HEX 60
HB79C HEX 01
HB79D HEX 00
HB79E HEX 01
HB79F HEX D8
HB7A0 HEX EF
===============================================================================
UTILISER LE E-BOOT MAKER POUR PLOMBER VOS DISKS COMME LES EPYX..
===============================================================================
Une fois que vous aurez mis un ou des softs sous E-Boot, chargez le
Disk Fixer
4.00 et tapez X pour passez en moniteur. Tapez B942:18 pour passer en
mode
Patched puis 800G pour revenir au Disk Fixer. Chargez ensuite le
secteur 5 de
la piste $00 de la copie plombée d'un des soft Epyx que je vous
ait envoyé à
l'occasion du cour 10 pour le recopier sur le meme secteur/piste, sur
une
copie de votre disk en E-Boot..
Remettez en $84A (Piste $00 secteur $00, octet $4A) le JMP $BB00 qui
est sur
tous les orignaux Epyx et qui appelle la vérif' chargée
en $BB00 de la piste
$00/5.
Ensuite, il faut coder le boot qui va etre décodé par les
résultats de la
vérif'. Pour cela, revenez au Disk Fixer 4.00 et EORez les
secteurs qu'il faut
avec les clé qu'il faut, tout comme on le fait dans le cours 10
révision 1.20.
(méthode ACS à laquelle je n'avais pas pensé sur
le moment...)
Copiez ensuite la copie ainsi modifié de votre disk en E-Boot
avec le programme
de copie que Kristo avait fait spécialement à l'occasion
du cours Epyx...
Votre copie sera ainsi plombée et 100% incopiable.. C'est la
toute nouvelle
protection Epyx!
===============================================================================
Alors, en espèrant que mon téléphone ne sonnera
pas trop pour me demander de
clarifier ce cours, je vous laisse ici avec les autre fichiers et
programmes de
ce disk...
A la prochaine...
Amicalement, GODFATHER, le 23/7/87
_____________________________________________________________________________
!
!
! Appendix des Godfather's Products (C)
1987
Update 06/12/87 !
!
---------------------------------------------------------------------------
!
!
!
! Tous les programmes sont accompagnés de leur source complet et
détaillé !
! ainsi que d'un fichier explicatif révisé comme les
cours, et aussi clair.. !
!
!
!
______________________________________________________________
!
!
!
! !
! ! #1 : Copieur
d'originaux/Plombeur EPYX 1.50 Kristo,Gdf,Sam
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.50
01/11/87 ! !
!
!
! !
! ! Aucun EDD, LOCKSMITH, ECHO +,
CRAZY COPY n'arrive à copier
! !
! ! les originaux Epyx.. alors
voici un copieur fait taillé à la
! !
! ! mesure de la protection
incopiable Epyx..
(désynchro)
! !
! ! + Fichier explicatif sur cette
protection
! !
!
!
! !
! ! Associé au EPYX BOOT
MAKER 1.00 (Godfather's Products #5),
! !
! ! vous pourrez meme vous en
servir pour PLOMBER vos propres
! !
! ! programmes après le
avoir mis sous E-Boot 3.3, avec la
! !
! ! protection actuelle
Epyx...
! !
!
!
! !
! ! Ce programme est à la
fois un programme de copie d'originaux ! !
! ! EPYX et un programme de
plombage avec la protection EPYX.
! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #2 : DOS EOR Maker 1.00 (DOS
indispensable) Godfather
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.00
22/08/87 ! !
!
!
! !
! ! LA PREMIERE PROTECTION SOUS DOS
3.3 CONTRE LES CURIEUX !!
! !
!
!
! !
! ! Codez vos données pour
vous proteger des name-killer ou pour ! !
! ! vous proteger des pirates,
c'est bien.. mais laisser le DOS ! !
! ! faire le boulot de
codage/décodage, c'est
mieux.
! !
! ! Ce nouveau DOS codera tous vos
programmes en catalog ainsi !
!
! ! le catalog lui meme, et meme la
vtoc
!!..
! !
! ! 255 clés de codages..
Compatibilité DOS 3.3 par un seul poke
! !
!
!
! !
! ! Associé au programe de
plombage du cours 6, ou à un autre
! !
! ! plombeur sous DOS (voir plus
bas), la protection devient
! !
! ! redoutable.. (Principe des DOS
indispensables)
! !
!
!
! !
! ! Le programme est fournit avec
tout un fichier explicatif sur ! !
! ! le DOS (un cours en fait), et
un programme pour bien manier ! !
! ! le DOS EOR : DEMUFFIN DOS EOR
1.00.
! !
! ! Tous les sources sont, comme
toujours en
CATALOG.
! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #3 : Les sources des meilleurs
FBOOT / EOA Godfather
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.50
14/11/87 ! !
!
!
! !
! ! TOUT le source du FBoot
d'Electronic
Arts,
! !
! ! entièrement
relogeable..
! !
! ! + Un FBoot maker EOA 1.00 concu
spécialement pour ce boot,
! !
! ! avec un fichier technique
explicatif de pleins de choses !...! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #4 : PLOMBEUR ACTIVISION
1.00 Godfather + Oliver Twist
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.00
20/07/87 ! !
!
!
! !
! ! Plombez vos disks sous DOS 3.3,
BOOT 3.3 ou E-BOOT avec la ! !
! ! première protection
Activision (Cours 14).. TOUT y est..
! !
! ! vous pourrez choisir les 3
pistes à proteger, et les clés
! !
! ! de codage/décodage..
C'est 100% la meme protection, mais
! !
! ! avec le fichier explicatif,
vous pourrez l'adapter à un
! !
! ! FBoot par exemple, ou bien la
compliquer vous meme..
! !
! ! (Voir les critiques faites dans
le cours 14 à ce plombage)
! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #5 : EPYX BOOT MAKER 1.22
(Contient un RWTS 3.3) Godfather
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.22
06/12/87 ! !
!
!
! !
! ! Dans le derniers Epyx, la
protection est passionnante.. mais ! !
! ! le boot aussi !!.. Ce programme
est utile pour
:
! !
!
!
! !
! ! * Mad Compacter des programmes
necessitant un RWTS 3.3
! !
! ! et occupant la
place du Command Handler du
DOS...
! !
! ! * Plomber des disks avec la
protection Epyx (avec le GP#1)
! !
! ! * Gagner la place du DOS sur le
disk pour de programmes ne ! !
! ! necessitant pas la
présence d'un DOS en
mémoire.
! !
! ! * Récuperer tous les
pseudo-fichiers des softs Epyx et les
! !
! ! sauver sous DOS
3.3..
! !
! ! * Rajouter des fichiers aux
softs
Epyx
! !
! ! * Changer le pseudo-BOOT
PROGRAM pour glisser
votre
! !
! ! signature ou une
quelconque animation, avant de charger le
! !
! ! programme de boot
d'origine.
! !
! ! * Permet d'obtenir la TRACK
SECTOR MAP des softs Epyx.
! !
!
!
! !
! ! Bref, on peut TOUT faire sur
les Epyx avec ce E-Boot maker ! ! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #6 : FORMAT.OBJ1 V1.20 (Un
nouveau plombeur) Godfather
! !
! !
------------------------------------------------------------
! !
! ! Révision
2.40
07/11/87 ! !
!
!
! !
! ! Plombez vos disks avec la
protection du cours
2.
! !
! ! Un plombeur inédit vous
permettra toutes les folies : FORMAT ! !
! ! Associé au GP#2 (DOS EOR
MAKER), vous obtiendrez
une
! !
! ! protection sous DOS bien
rusée..
! !
!
!
! !
! ! + Un pseudo-plombeur
inédit "APPLE PROTECTION PROGRAM" 1986
! !
! ! + Un modification de Dos
anti-interruptions "MODIF.PLOMB"
! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #7 : DOS CODE SECTEURS (Une
évolution du DOS EOR) Godfather
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.00
08/08/87 ! !
!
!
! !
! ! LA PROTECTION LA PLUS EVOLUEE
CONTRE LES CURIEUX
!!
! !
!
!
! !
! ! Meme principe que le DOS EOR,
sauf que la clé de codage
! !
! ! varie tout au long du disk
!!... Encore plus indécodable !!
! !
!
!______________________________________________________________!
!
!
______________________________________________________________
!
!
!
! !
! ! #8 : FBOOT de SAM (l'auteur de
Mirage - Cours 6) Sam
! !
! !
------------------------------------------------------------
! !
! ! Révision
1.00
29/08/87 ! !
!
!
! !
! ! LE PLUS FAST DE TOUS LES FAST
BOOT POUR APPLE
!!
! !
!
!
! !
! ! Plus rapide que le fboot de
Chip/Tsunoo, plus rapide que
! !
! ! le FBoot Electronic Arts, plus
rapide que le plus rapide des ! !
! ! boots, voici le source complet
et très clair du dernier né
! !
! ! d'entre le FBoot, le Fboot de
Sam.. qu'il legue à
la
! !
! ! postérité avant
de continuer ses études d'ingenieur info..
! !
!
!______________________________________________________________!
!
!_____________________________________________________________________________!