Godfather's Product 06



Ecran
Ecran
Ecran
Ecran
Ecran
Ecran


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.
----------------------------------------------------------------------


Floppy
DOS 3.3
Download GDF's Product 06 rev 1.22 (gzipped)


Sommaire


Lien Article
Voir Introduction.
Voir Epyx boot maker.
Voir Appendix programmes.

hr cours GDF

Introduction.


-------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------


Retour sommaire

hr cours GDF

Epyx boot maker.


                                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


Retour sommaire

hr cours GDF

Appendix programmes.


 _____________________________________________________________________________
!                                                                             !
! 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..   !      !
!       !______________________________________________________________!      !
!_____________________________________________________________________________!


Retour sommaire