Dernière révision: Mercredi 22/11/2006.
Introduction
Dans le cadre de la réalisation de mon projet FASTDSK
(création de disks images pour les émulateurs Apple II),
j'ai eu à mettre en place une routine de lecture rapide.
Pour cela je n'ai pas utilisé les accès officiels
documentés des systèmes d'exploitation livrés par
Apple Computer.
Tout simplement parce que ces operating systems sont trop lents
(à mon goût) pour ce
type d'usage!
Pour parvenir à mes fins, j'ai utilisé un "Fast Loader".
Si vous ne savez pas ce que c'est, ça tombe bien, j'explique
dans les grandes lignes ici même le principe du Fast Boot/Fast
Load.
Il faut en préambule préciser qu'un Fast Boot est en fait
un Fast Load qui a été installé sur une disquette
de manière à être chargé tout de suite
après l'amorçage du drive lors de la procédure de
boot (ctrl-pomme-reset ou autre PR#6). Plutôt que de continuer
à mentionner les 2 termes, je ne parlerai que de Fast Load la
plupart du temps.
Les Fast Loads sont prévus pour des drives standards et 100%
compatibles. Attention aux drives avec des caractéristiques
particulières comme celui décrit ici:
Principe du Fast Load
Les différentes versions des DOS existant sur Apple ne sont pas
des Fast Loads à proprement parlé et un Fast Load n'est
en aucune façon un DOS complet.
Certes de nombreuses personnes ont optimisé le DOS 3.3 pour le
rendre plus véloce (ex : ProntoDOS, David DOS, DOS 3.4,
ZDOS 3.3, ...) mais ce gain de temps s’est fait
uniquement via un
changement de l’interleaving et une réécriture partielle
du
code de la RWTS.
Certains de ces DOS optimisés ont même
été créés par des habitués de
l'Underground. Je pense par exemple au Flash DOS
du groupe Apple Star
System comptant comme membres: Indiana Disk,
Master Power, Warren
Murphy et Richard Sapir. Pour
illustration, j'ai mis à la fin de
ce dossier la version 1.1 du Flash DOS avec des
copies d'écran
de la présentation.
J'ai vu passé aussi un PAUL-DOS et bien
que j'en n'ai pas la
confirmation, je
pense qu'il a été fait par le Paul
qui oeuvrait à
l'époque de JPL, Mic-Mac
et The Softman. (Paul n'a
pas
répondu à mon email de demande d'interview).
22/11/2006: rajout en fin de page de ce DOS.
Si vous comparez la vitesse de chargement d'un objet entre un Fast Load
et un DOS même optimisé, le Fast Load sera toujours le
plus rapide.
En fait, un Fast Load et un DOS ne sont pas concurrents mais
complémentaires: ils n'ont tout simplement pas la même
finalité.
Un DOS modifié ou pas est
toujours soumis aux contraintes de la mise à disposition de
l’utilisateur final.
C’est la première différence entre un DOS et un Fast Load
: son usage.
Un DOS a pour objectif de satisfaire le plus grand nombre
d’utilisateurs en lui permettant de charger et sauvegarder des
données dans le cadre de son travail. L'utilisateur est actif et
le DOS son outil.
Au contraire, un Fast Load ne gère que des fichiers
figés, c'est à dire une fois que l'auteur a
terminé sa phase de programmation et de mise au point (travail
réalisé sous DOS pour des raisons pratiques).
Et comme son nom l'indique, un Fast Load a pour vocation unique de
charger des objets.
(Si dans sa production l'auteur a besoin de faire des écritures,
il aura récupéré le morceau du code de la RWTS qui
écrit des secteurs et se contentera de faire des JSR à
cette routine en accès direct).
Un Fast Load ne s'utilise que sur une production achevée. Il
n'est pas un outil de conception mais un outil pratique pour charger
rapidement des données pré-enregistrées.
L'utilisateur est passif (au mieux il ne fait que sélectionner
un fichier proposé par le Fast Load via un menu).
La seconde différence entre un DOS et un Fast Load touche
à la standardisation.
Beaucoup de programmes terminés (commerciaux ou non) sont
livrés tels quels sous
DOS (bootables ou non). Les auteurs se sont contentés de la
vitesse standard de l'operating system sans chercher plus
loin. Ils ont tout simplement privilégié l'ouverture et
la
standardisation.
Un Fast Load, lui, s'affranchit de l'organisation standard du DOS de
l'Apple II. Il gère sa propre organisation dans l'optique
principale de gagner du temps dans le chargement. Si vous faites un
CATALOG avec un DOS en mémoire sur une disquette en Fast Load,
vous avez toutes les chances d'avoir un I/O Error ou ne rien voir du
tout.
Un Fast Load est aussi un moyen pour l'auteur de cacher ses objets au
reste du monde même si ce n'est pas la raison première qui
pousse à son utilisation (enfin normalement!!)
A noter que beaucoup de productions de l'Underground français
utilisent des Fast Loads, ce qui risque de vous agacer si vous
êtes un adepte du standard et utilisez beaucoup des outils comme
CiderPress pour visualiser et examiner le
contenu des disks images!!
C'est un fait: en France, les hackers et crackers ont avant tout
privilégié la vitesse au détriment des standards.
C'était aussi l'occasion de montrer ce qu'ils savaient faire et
dans ce domaine, les français ne sont pas les plus humbles...
Parlons un peu technique dans la 3ème différence:
Comme le DOS ne sait
pas à l’avance combien
de données il va y avoir et quelle sera la longueur des fichiers
sauvegardés, il fait ce qu’il peut en remplissant
progressivement la place disponible (vierge après le formattage
de la
disquette ou plus tard de nouveau free si libérée par un
delete d'un fichier
existant). Afin de remplir le mieux possible chaque disquette, le DOS
doit gérer un catalog, une table de mapping des secteurs
libres/occupés (VTOC) et pour chaque fichier quelque soit son
type ce
qu'on appelle une TSL (track sector list), c'est à dire la liste
de tous les secteurs occupés par cet objet + ces secteurs
eux-mêmes. Tout cela requiert
un process lourd avec de nombreuses lectures.
Bien qu'Apple ait utilisé des ruses (par exemple la piste
contenant le catalogue est en plein au milieu de la
disquette, permettant ainsi d’optimiser les allers/retours de la
tête
de lecture à chaque fois qu'il doit se référer
à la descriptions des fichiers), l'utilisateur peut à
tout moment chambouler ses fichiers et ainsi changer l'organisation de
la disquette.
La conséquence de cela, c'est qu'avec un DOS chaque fichier peut
se retrouver étalé sur des secteurs un peu partout sur
les pistes de la disquette. Et si l'utilisateur demande le chargement
de cet objet, le DOS doit aller controler dans le catalogue (=15
secteurs possibles) qu'il existe bien, lire le ou les secteurs
contenant la TSL puis seulement ensuite lire individuellement avec la
RWTS chacun de ces secteurs. Pour un gros fichier tartiné sur de
nombreuses pistes, l'attente peut être pénible.
Surtout que pour chaque secteur de la TSL, il parcourt la piste
jusqu'à trouver ce dernier. Si par exemple dans la liste des TSL
il y a piste $05 secteur $03 puis piste $05 secteur $04, si la
tête de lecture tombe en 1er sur le secteur $04, le programme va
l'ignorer puisqu'il doit charger en 1er le secteur $03. Et au final la
disquette peut très bien devoir effectuer plusieurs rotations
dans le drive pour ne charger que quelques secteurs d'une même
piste...
L'idée de base du Fast Load est de se substituer au DOS non
seulement pour l'organisation de la disquette finale mais aussi pour la
routine de lecture des fichiers.
C'est l'auteur qui ici définit où il veut mettre ses
objets.
Au mieux il va gérer un pseudo catalog (par exemple sur
un seul secteur chargé en 1er et chaque objet aura un nom
codé par une seule lettre) s'il doit gérer un menu
sélectionnable par l'utilisateur. Pour cela soit il peut
utiliser un Fast Boot Maker (il y en a plein)
soit écrire un
petit programme qui charge classiquement par BLOAD (commande DOS)
chaque programme et qui l'écrit ensuite sur la disquette cible
secteur par secteur via la RWTS selon une cartographie qu'il aura
définie.
Au pire, il n'y aura pas de catalog du tout et le chargement se fera
selon les besoins en faisant un JSR à la routine de Fast Load
avec les paramètres de l'objet à charger. Tous les objets
placés sur la disquette Fast Loadée sont
enregistrés proprement sur des secteurs et pistes
séquentiels (pas de puzzle). Les
paramètres passés au Fast Load sont du type:
- Piste/Secteur du 1er secteur de l'objet
- Adresse de début du chargement
- Nombre de secteurs à charger
Après en fonction du Fast Load, la séquence des pistes et
des secteurs peut être croissante ou décroissante.
Un Fast Load travaille avant tout au niveau de la piste.
Il charge les secteurs qu'il trouve dans leur ordre d'arrivée et
ce à des adresses qui auront été au
préalable pré-calculées (table de 16 adresses pour
chacun des 16 secteurs).
L'objectif est de charger les secteurs d'une piste en une seule
rotation de la disquette.
La plupart des préparatifs (pré-calcul adresse de
chargement des secteurs, etc...) sont effectués avant de
commencer la lecture d'une piste car on peut prendre plus de temps
à ce moment là (le traitement d'une piste est quant
à lui plus soumis à des contraintes de temps).
Pour chacun des secteurs trouvés, il y aura lecture de son champ
adresses puis lecture de son champ de données.
Un Fast Boot digne de ce nom fera bien entendu la phase de
post-nibblizing à la volée en s'affranchissement en plus
de l'usage d'un buffer superflu.
Il est intéressant de noter que quasiment TOUS les Fast Loads
(les plus rapides) ont la même routine de lecture du champ de
donnée avec le denibblizing à la volée. Il s'agit
de la routine que l'on retrouve dans ProDOS et qui est encensée
dans le très fameux chapite 9 des 2 versions du livre
"Understanding the Apple II" de Jim
Sather.
On peut trouver quelques différences mais très mineures
comme la gestion par
exemple d'un code erreur retournée à l'appelant.
Ces routines de Fast Load sont franchement toutes très
semblables car elles reposent avant tout sur le même principe de
fonctionnement hard des lecteurs de disk II et leurs softswitchs.
Aussi quand le pirate Godfather affirmait que Chip Select n'avait rien
inventé avec son propre Fast Boot, c'était totalement
justifié... le plus important dans ces routines, c'est cette
routine core de post-nibblizing à la volée et son timing
plus que délicat. A ce niveau là, la communication avec
le lecteur de disquettes est particulièrement sensible et comme
pour un autre type d'échanges, il convient de ne pas dire et
faire n'importe quoi ;-))
Le reste n'est que mise en forme (boucle de la routine pour les 16
secteurs d'une piste, lecture du champ adresses, gestion des erreurs,
gestion interleaving), application des règles du drive (routine
de déplacement de la tête de lecture) ou tout simplement
gadget (softswitch $C030 pour faire du bruit pendant le chargement, non
arrêt du drive, ...)
Quelques exemples de Fast Boot / Fast Load
S'affranchir des contraintes du DOS par le biais d'un Fast Load a
été une étape naturelle sur cette machine surtout
caractérisée par sa liberté de manoeuvre et le
fait que si on voulait quelque chose, il suffisait de retrousser ses
manches et s'y coller...
Sur mon site ont déjà été
évoqués les cas de 3 Fast
Boots (ou FBoot, ça veut dire la même chose écrit
par un fainéant).
Dans les cours de déplombage du pirate Godfather,
il a
été question du FBoot de Sam et du FBoot utilisé
par la société Electronic Arts (nom souvent
condensé en EOA).
J'ai aussi fait une page sur le FBoot ProDOS version 2.0 d'un autre
illustre pirate: Chip Select.
S'il y a bien un mythe à retenir autour des Fast Loads, c'est
incontestablement celui du Locksmith Fast Copy.
En fait, c'est une grosse rigolade ce truc :-)))
Très souvent pour le hacker de base, le must ultime (dans ses
rêves) consistait à extraire la routine disk de ce copieur
génial et en faire le chargeur le plus rapide et le plus
géant de la planète (galaxie aurait écrit
Godfather!)
Bien entendu les apparences sont
souvent trompeuses et un tel chargeur n'a jamais vu le jour.
Et pour cause! Les personnes sérieuses qui se sont
attelées à cette tâche ont très très
vite déchantées.
Car le Locksmith Fast Copy cache une
vérité inconnue des
néophytes.
Et cette vérité, c'est qu'il n'en a rien à cirer
de ce qui se trouve sur la disquette qu'il copie!
Pour lui un nibble c'est un nibble et qu'il s'agisse d'un programme ou
d'une image, il s'en tape car son objectif n'est pas de lancer un
programme qui marche ou d'afficher une image telle que son auteur l'a
dessinée. Il se contente de duppliquer des informations sans
chercher à en comprendre le sens.
A partir de ce but, l'auteur du Locksmith Fast Copy
(un malin le gars!) ne s'est pas
compliqué la vie!
A quoi bon s'enquiquiner à reconstituer les octets réels
à partir des nibbles en faisant un post-nibblizing
pénible selon la méthode 6-2?
Certes il fait du post-nibblizing (uniquement pour transformer les 342
nibbles en 256 octets et donc gagner de la place en mémoire)
mais selon son propre algorithme qui n'est en rien compatible avec le
6-2.
Ce qui fait que le rigolo qui a extrait la routine de chargement et qui
essaie de charger le contenu d'une piste se retrouve avec des
octets complètement foireux en mémoire qui ne
correspondent pas à ce qu'il peut voir avec par exemple un
éditeur de secteurs comme Copy II+.
Comme le Locksmith Fast Copy denibblizing
(lecture) puis
renibblizing (avant écriture) selon la
même logique algorithmique, la copie est parfaite et on pourrait
croire qu'il le fait selon la méthode 6-2 mais ce n'est pas du
tout le cas...
C'est inexploitable et le mythe finit à la poubelle!
Pas trop déçu j'espère???? ;-)
Tout ça pour dire que la plupart des routines FBoot de base ont
été repiquées par des hackers / crackers sur
des logiciels commerciaux de jeux (qui ne fonctionnaient pas sous DOS
et qui eux ont réellement besoin de charger et
décoder correctement les données) puis
ont été modifiés et introduits dans
l'Underground.
Beaucoup ont servis dans le cadre de packs de copieurs ou d'autres
outils.
L'utilisateur boote la disquette et appuie sur la touche correspondant
au copieur désiré (ou à l'outil à charger).
A présent, je voudrais casser une autre affirmation.
Je me marre car elle émane d'un crack du piratage, un de ces
dieux de l'ancien temps.
Dans son introduction du Fast Boot ProDOS 2.0, Chip Select faisait une
rétrospective des Fast Boots et s'attribuait la paternité
de ce terme: "IL EST INTERESSANT DE REMARQUER QUE LA DENOMINATION
FBOOT OU FAST-BOOT A ETE TROUVEE PAR ERIC (note Deckard: Eric Irq) ET
MOI EN ANALOGIE AU SPEEDY
BOOT DE MICMAC & THE SOFTMAN".
Malheureusement pour Chip Select, j'ai la
certitude qu'il n'est pas
l'inventeur de ce terme puisque la société
Computer-Advanced Ideas l'avait
déjà employée dans sa production Ultra
Disk Pack 1
et
ce en 1982, soit un an avant l'apparition du Speedy
Boot.
La preuve par l'image:
Ce pack comprend un copieur peu rapide par rapport au Locksmith
Fast Copy puisqu'il fonctionne en lisant une piste et en
l'écrivant sur la disquette duplicata (et ce pour les $23
pistes). Mais pour 1982,
c'était déjà largement mieux que le standard COPYA.
Le pack comprend un Fast Boot Maker, ce qui prouve aussi que les
pirates de l'Underground qui ont sorti ensuite ce type de softs n'ont
rien inventé non plus...
|
DOS 3.3 compatible
|
Download Ultra Disk Pack 1 (gzipped)
|
A présent une petite sélection de FBoots.
Il y en a plein d'autres mais je ne peux pas y passer trop de temps
pour le moment (projet FASTDSK oblige) aussi
j'ai pris un peu le tout
venant. A noter que plusieurs ne passent pas forcément sur tous
les émulateurs. Certains sont ok seulement avec Applewin
et
d'autres uniquement avec Apple Oasis. Il
faudrait consacrer un moment pour
analyser les raisons.
Il y a aussi des FBoots qui ne passent que sur un vrai Apple II (et que
je n'ai donc pas mis ici). Par exemple le
très bôôô FBoot Color
(16 couleurs) du groupe ACS qui
comme
d'hab s'amuse à utiliser des softswitchs inhabituels et non
supportés par les émulos (cf ma page
sur Déplombage Mode D'emploi 6)
Commençons par l'ancêtre. Le vénérable et
unanimement respecté comme précurseur français Speedy
Boot de
MicMac & Softman
(1983).
|
FBoot
|
Download Copy Pack by MicMac & The Softman
(gzipped)
|
Evidement, à moins de l'extraire et le désassembler, il
n'y a pas sources en circulation.
Bahh, si vous voulez un source approchant, vous pouvez toujours
récupérer celui de Philippe Guiochon
qui fut un
contributeur régulier au début des années 80 de la
revue apple II intitulé Golden. (J'ai
rajouté un article de lui en fin de dossier pour illustrer ce
qu'il faisait).
Sa
carbon copie s'appelait Quick
Loader...
D'ailleurs c'est marrant, car dans le texte lui même du source,
il est mentionné que c'est un pompage!!
Néanmoins j'ai le souvenir d'avoir constaté qu'il y avait
un bug dans ce source sur la routine de déplacement de la
tête de lecture/écriture (une inversion). A relire et
corriger avant usage.
Le disk mis ici en pièce jointe
était un disk de travail perso. Il n'y a donc pas que le source
de Philippe Guiochon mais aussi des trucs
à moi plus ou moins
inachevés dessus. Pas le temps de faire le tri. J'ai juste
reconnu un petit programme perso qui me servait pour écrire mes
programmes directement sur un disk à mettre en fast boot (RUN
INSTALL.SPEEDY).
|
DOS 3.3
|
Download (bugged?) Quick Loader 2.0 source code By
Philippe Guiochon (gzipped)
|
Ensuite un exemplaire inhumé du Fast Boot de Chip
Select
daté de 1984 (1ère génération) à
l'époque de son Binary Crack Band
(B.C.B.)
|
FBoot
|
Download Copy Pack BCB (gzipped)
|
Le grand Patchman avait aussi son Fast Boot
maker (Fresboot, nom
tiré en partie de son nom de famille!!)
Ici une vieille version restée confidentielle de 1984/1987.
Rappelez vous que Patchman avait un
faible pour le terme Excel, et on le trouvait
un peu partout devant ses
noms de productions (Excel-Boot, Excel-Reader,
...)
|
FBoot (DOS 3.3 compatible)
|
Download FresBoot Maker by Patchman (gzipped)
|
File: Excel_Fresboot_Patchman.dsk
Disk: DOS 3.3 Volume 254 (140KB)
Name
Type Auxtyp Modified
Format Length
------------------------------------------------------------------------------
HELLO
BAS $0801 [No
Date]
DOS 1277
ROUTINE.$9600
BIN $9600 [No
Date]
DOS 1188
ROUTINE.$B100
BIN $B100 [No
Date]
DOS 1224
ROUTINE.$BA00
BIN $BA00 [No
Date]
DOS 1224
ROUTINE.$D100
BIN $D100 [No
Date]
DOS 1188
CREAT.COPY.A1411.17H03
BAS $0801 [No
Date]
DOS 5131
RWTS
BIN $B700 [No
Date]
DOS 2304
DOS
BIN $2000 [No
Date]
DOS 8960
BOOT1.ANCIEN
BIN $2000 [No
Date]
DOS 512
SCROLL/ERR
BAS $0801 [No
Date]
DOS 1342
MAJ.TABLE.EBM
BAS $0801 [No
Date]
DOS 1015
TAB.DEF50
BIN $9807 [No
Date]
DOS 650
E-B.MAKERV3.COPY.A1411.20H03 BAS
$0801 [No Date]
DOS 3623
TABLE.EBM
BIN $2000 [No
Date]
DOS 4092
EBM.OBJ.OK2.ANCIEN
BIN $8400 [No
Date]
DOS 5798
CREAT.DISK
BAS $0801 [No
Date]
DOS 5131
CHECK
BIN $0300 [No
Date]
DOS 207
E-B.MAKERV3.COPY.A2603.16H40 BAS
$0801 [No Date]
DOS 6835
CREAT.COPY.A1411.18H38
BAS $0801 [No
Date]
DOS 5119
VERIF
BAS $0801 [No
Date]
DOS 267
TAB.DEF
BIN $92F4 [No
Date]
DOS 780
E-B.MAKERV3
BAS $0801 [No
Date]
DOS 6828
BOOT1
BIN $0800 [No
Date]
DOS 512
EBM.OBJ.OK2
BIN $8400 [No
Date]
DOS 5756
E-B.MAKERV3.COPY.A1911.23H34 BAS
$0801 [No Date]
DOS 5913
EBM.OBJ.OK3
BIN $0800 [No
Date]
DOS 6060
TAB.DEF64
BIN $1C49 [No
Date]
DOS 832
TAB.INVE50
BIN $2000 [No
Date]
DOS 200
TABMASK50
BIN $2100 [No
Date]
DOS 50
TAB.DRAW50
BIN $2140 [No
Date]
DOS 400
TAB.DEF60
BIN $92F4 [No
Date]
DOS 780
E-B.MAKERV3.COPY.A2011.10H00 BAS
$0801 [No Date]
DOS 5860
E-B.MAKERV3.COPY.A1001.12H23 BAS
$0801 [No Date]
DOS 6523
E-B.MAKERV3.COPY.A1101.??HXX BAS
$0801 [No Date]
DOS 6558
TABDEF60
BIN $92F4 [No
Date]
DOS 780
EBM.UTIL
BAS $0801 [No
Date]
DOS 2985
------------------------------------------------------------------------------
|
A présent, un pack d'utilitaires orientés graphisme en
Fast Boot signé
par David Microcosm (1986).
|
Fboot
|
Download Fboot utilities by David Microcosm
(gzipped)
|
On revient à Patchman mais cette fois
avec une version
récente de ses outils (sous forme de sources top secrets).
A noter que Patchman utilisait à fond les
spécificités de l'assembleur Merlin
avec l'emploi
abondant de macros.
Il avait sa propre bibliothèque de macros (en plusieurs versions
selon l'usage).
Attention: pour comprendre le source du Fboot et celui du reader, il
faut au préalable avoir détricoté sa biblio de
macros...
|
DOS 3.3
|
Download Excel sources from Patchman (gzipped)
|
File: Sources_Excel_Patchman.dsk
Disk: DOS 3.3 Volume 254 (140KB)
Name
Type Auxtyp Modified
Format Length
------------------------------------------------------------------------------
DISK*
BAS $0801 [No
Date]
DOS 119
MACLIB.S
BIN $0901 [No
Date]
DOS 9761
SHELL.COURT.S
BIN $0901 [No
Date]
DOS 1478
SHELL.LONG.S
BIN $0901 [No
Date]
DOS 3171
SHELL.LONG
BIN $8000 [No
Date]
DOS 804
BROWSER+LOADER.S
BIN $0901 [No
Date]
DOS 18502
BROWSER+LOADER
BIN $D600 [No
Date]
DOS 2283
EXCEL-READ
6.1.S
BIN $0901 [No
Date]
DOS 6700
EXCEL-READ
BIN $D000 [No
Date]
DOS 1210
EXCEL-BOOT
2.6.S
BIN $0901 [No
Date]
DOS 11833
EXCEL-BOOT2.6
BIN $0800 [No
Date]
DOS 1700
EBW.BOOT.S
BIN $0901 [No
Date]
DOS 2379
EXCEL-READER.S
BIN $0901 [No
Date]
DOS 4638
------------------------------------------------------------------------------
Encore du Patchman avec un exemple d'emploi de
ses outils: un soft
resté lui aussi top secret, son Excel Displayer
DHGR
(E.D.D. à ne
pas confondre avec le copieur) datant de 04/1989. Cet outil affiche des
images en double haute résolution black'n white converties
depuis un format
Atari ST (résolution plus grande que celle de l'Apple II, ce qui
explique l'impression de tronquée pour certaines).
|
Fboot
|
Download Excel Displayer Dhgr side 1 by Patchman
(gzipped)
|
|
Fboot
|
Download Excel Displayer Dhgr side 2 by Patchman
(gzipped)
|
Ze Enfoirés Copy Disk fut signé
par le frère de
Godfather, j'ai nommé Kristo,
bien avant qu'il épouse la cause tibétaine.
Sa particularité selon ses
termes: le physical-Boot.
Quelques trucs sympas à noter malgré le fait que ce soit
un pack de copieurs comme les autres.
Tout d'abord une fausse version de Locksmith Fast Copy
portant le numéro
fantaisiste 37.2 et la mention "Ultra Fast Copy"!
Elle donne l'illusion d'aller plus vite que n'importe quel copieur et
pour cause: elle ne copie rien du tout!!! N'oublions pas la fascination
de la prestidigitation chez cette famille de pirates/hackers même
si ici cette
version rigolotte sans aucune utilité aurait plus sa place dans
un "pif gadget" ;-))
Il y a aussi la version de Locksmith Fast Copy
où
l'affichage des
pistes/secteurs a été déconnecté et
à la place il y a un écran bidon (faux catalog
signé avec le trigramme KRS = Kristo). Cette version
était bien pratique lors de copy parties dans des lieux sous
surveillance comme la Fnac par exemple, histoire de ne pas attirer
l'attention avec un écran -hum- trop connu!
|
Fboot
|
Download Ze Enfoires Copy Disk by Kristo (gzipped)
|
Les mégalos de service (ce n'est pas une critique mais le terme
qu'ils utilisaient eux même pour se décrire) du groupe The Brain
Trust ne
pouvaient pas utiliser le pack de copieurs d'un autre groupe, honneur
oblige. Il y eu donc plusieurs TBT Copy Disk
(TBT = The Brain Trust). Ici la version sortie
en 1989 (probablement à partir du Fast Boot de Patchman
qui faisait partie du groupe à ce moment là).
A noter le copieur de
softs originaux en 18 secteurs (Brainsmith)
protégé par un
mot de passe.
|
Fboot
|
Download TBT Copy 1989 by The Brain Trust (gzipped)
|
Les bidouilleurs s'en donnaient à coeur joie et on a vu
apparaître une multitude de variantes pas
franchement innovantes et correspondant souvent à des versions
existantes patchées et... renommées.
Le cas ici du Bytlejuice Boot
System
en 05/1989 basé sur le FBoot repompé par Tsunoo
et
modifié par The Bytlejuice pour
ressembler au FBoot d'ACS! Tiré par les
cheveux mais cas concret réel: j'ai ses aveux écrits
dans un de ses courriers!
J'espère qu'avec cette illustration vous comprenez mieux
à présent la difficulté pour attribuer la
paternité d'un FBoot à quelqu'un...
|
Fboot
|
Download Fboot Color Maker By The Bytlejuice
(gzipped)
|
Un des derniers en date et non des moindres: le Speedycopy
d’Astraban
qu'il m'avait envoyé début 1989 (marche sur Apple Oasis).
|
FBoot
|
Download Speedycopy 3.1 by Astraban (gzipped)
|
Mon expérience avec les Fast Loads
A l'époque où je passais beaucoup de temps à
programmer mon Apple II, je m'étais surtout
intéressé aux divers points me permettant de faire des
jeux de rôle, avec par exemple les solutions pour écrire
du texte sur une page graphique...
Bien qu'ayant utilisé des fast boots et des fast loads, je ne
m'étais pas intéressé plus que celà au
détail de leur fonctionnement.
Ce n'est que pour mon projet FASTDSK que je
potassé un peu plus
le sujet déjà à l'aide des livres disponibles.
Tout au moins les généralités techniques car aucun
des ouvrages en ma possession n'abordent dans le cadre d'un chapitre
les fast boots et les fast loads.
Concernant ces livres, en fait, ce qu'il est ressort en premier lieu,
c'est l'impossibilité d'avoir une source unique d'informations.
Pas un ouvrage est suffisant. J'ai passé mon temps à
naviguer d'un livre à l'autre en pestant contre les points
laissés en suspend ou pas détaillés du tout ou
l'absence d'exemples de programmes pour certains qui auraient pourtant
bien facilité la compréhension.
Certes tous ces livres abordent les connaissances de 1er niveau
(codification des données, organisation du disk, etc...) et
certains se démarquent du lot pour une raison qui leur est
propre.
Exemples:
De par son style, ses sources abondants et son approche unique sur des
méthodes anti-pirates, le livre de Jean-Pierre
Lagrange
(Systèmes d'exploitation et systèmes de
protection sur
Apple II) me tient particulièrement à coeur.
Les ouvrages de Marcel Cottini sur le DOS 3.3 et
le ProDOS couvre une
large part de la connaissance indispensable et ce en français.
Dans la langue de Shakespeare, on retiendra surtout les 2 ouvrages de
Don Worth et Pieter Lechner
parus chez Quality Software: Beneath
Apple
DOS et Beneath Apple ProDOS.
Le fin du fin reste de l'avis de beaucoup (y compris des auteurs de la
série des Beneath Apple qui renvoie
à cet ouvrage dans
leur chapitre sur le Logic State Sequencer - LSS) le chapter 9 des
livres de James F. Sather (Understanding
the apple II &
Understanding the Apple IIe).
Pour compléter ces informations, il faut aussi savoir fouiner
dans les revues spécialisées (par exemple Apple
Orchard
ou encore Computist) et consacrer du temps
à lire l'historique
des forums de discussion sur l'Apple II où on trouve des
messages intéressants de certaines pointures par exemple de
Michael J. Mahon, Eric Smith
(qui a aussi travaillé sur le
Z-Machine d'Infocom) et d'autres...
Mais lorsqu'on a fait la synthèse de ces informations et qu'on
veut les mettre en pratique (dans le cadre d'un FBoot), c'est là
qu'intervient un autre niveau de connaissance pour répondre aux
nouvelles questions qu'on se pose. Et les réponses ne courent
pas les rues...
Par exemple, j'ai voulu en savoir plus sur le denibblizing à la
volée utilisé dans ProDOS.
Dans le livre "Systèmes d'exploitation et
systèmes de
protection sur Apple II", je suis resté sur ma faim
après
la lecture des pages 171 à 176. Pour faire pédagogique
(et donc simple à comprendre), l'auteur reprend le principe de
la routine dos 3.3 qui commence par la lecture complète des
nibbles puis s'en va faire sa postnib après. La conclusion de la
page 176 est sans appel: "c'est ok mais il y a mieux: c'est la routine
de ProDOS" qui bosse à la volée. De la routine en
question, pas de listing ni détail (Note de précision
après relecture: une bonne partie de ce livre a
été amputée avant publication car soumis à
l'approbation d'Apple France et censurée
pour éviter les
conflits avec des sociétés tierces).
Même son de cloche
chez Cottini: "c'est compliqué" qu'il
dit, aussi il zappe (par
contre là aucune idée s'il y eu amputation ou pas ;-))) )
Jim Sather lui applaudit des 2 mains et
complimente l'auteur de cette
routine mais, respect des copyrights oblige, en parle sans l'illustrer
par un source commenté.
Autre cas intéressant lié, le comptage des cycles dans
les routines d'accès au disk II.
Tous les bouquins ont souligné l'importance du comptage des
cycles pour
l'écriture des nibbles.
Moi, c'est autre chose qui m'intéresse: le comptage pour la
lecture (fast LOAD).
Ben oui, je sais, au 1er abord, ma remarque est débile. Vous me
répondrez comme un ami me l'a fait: "pas besoin de compter pour
la lecture, on a tout le temps. Ce n'est que pour l'écriture que
c'est important".
Pourtant il suffit de trouver/se faire un source de ProDOS ou tout au
moins se pencher sur cette fameuse routine de postnibblizing à
la volée pour se poser quelques questions...
(->Désolé mais là, si vous ne connaisssez pas,
vous ne comprendrez pas de quoi je parle!!)
De mon côté à partir des sources de ProDOS 1.7,
j'ai
localisé la routine de lecture du champ adresses et du champ
datas. J'ai capté le principe du découpage du buffer en 3
parties +
l'auxiliary buffer mais il y a cette histoire de non traitement du
dernier octet de la 1ère partie du buffer. L'auteur de la
routine fait un PHA à un moment (entre le traitement du buffer
"bottom third" et le buffer "middle third") et tout à la fin de
la routine de denibblizing un PLA+LDY+STA pour enfin stocker cet octet
mis de côté. Pourquoi???
Je regarde le supplément du livre Beneath Apple
ProDOS et
découvre qu'il y a un soucis de timing (les auteurs n'en disent
pas plus!)
Ha bon??? Un soucis de timing alors que jusqu'à présent
on ne comptait pas les cycles???
Etrange, étrange tout celà.
Finalement, chez Sather je comprends qu'à
partir d'une attente
de 30 cycles 6502 entre 2 lectures, on risque de paumer des nibbles (cf
page 9-45 de l'Understanding version IIe), donc
de faire merder le
checksum+les datas chargées d'où dans la routine ProDOS
cette suspension du traitement (par manque de temps) pour
le finir plus tard en fin de routine quand le risque est
écarté. Pourtant 30 cycles, c'est que dalle!!!!
Je ne sais pas ce que vous en pensez mais moi franchement je trouve
qu'il y a là une lacune monstrueuse dans toutes les sources
traitant du disk II pour les personnes voulant écrire leur
propre routine ou tout au moins essayer d'optimiser au maximum. Vous
imaginez le résultat si je vire le PHA et le remplace par le
LDY+STA manquant en pensant avoir le temps?
30 cycles, c'est encore moins que la contrainte d'écriture. Pour
cette dernière, on peut faire du remplissage en glandant avec
des instructions bidons genre PHA-PLA ou JSR-RTS. Mais pendant le
denibblizing à la volée, pas question de se tourner les
pouces, on est même obligé de se préoccuper du
changement de page mémoire dans les instructions pour
économiser un cycle ou encore du mode d'adressage des
instructions pour bouffer le moins de cycles. Bref, avoir constamment
sous le coude par exemple la bible sur le sujet: la programmation
du
6502 par Rodnay
Zaks...
Et les interrogations sans réponse ne sont pas finies pour ma
routine de lecture de FASTDSK.
Je souhaite faire comme Locksmith Fast Copy,
à savoir afficher
le résultat de la lecture secteur par secteur (ok ou pas ok
-dans ce dernier cas sous forme de comptage pour arrêter au bout
de 10 essais). Je dois donc faire des traitements annexes au moment
où passe sous la tête de lecture les 2 derniers trailers
champ datas et les nibbles de synchro. Bien entendu pour ne pas perdre
de temps, il faut impérativement que je finisse ces
extra-traitements avant l'arrivée des markers champ adresse du
prochain secteur (je veux lire la piste en une seule rotation -l'ordre
des secteurs je m'en fiche car j'ai une table d'équivalence
secteur/adr buffer et je stocke à fur et à mesure de la
lecture quelque soit l'ordre).
Là encore c'est l'angoisse.
Par exemple, dans le fast boot de Sam il y a ce
que j'appelle un "user
exit".
Il propose un JSR pour aller faire ce qu'on veut entre le traitement de
2 secteurs.
Mais ce que j'ignore c'est de combien de cycles 6502 je dispose avant
de devoir rendre la main pour ne pas sauter un secteur parce que
j'aurais raté le coche du D5AA96.
D'où mon énorme surprise que cette question de timing
lors de la lecture soit tout simplement ignorée.
Dans ces conditions ou parce qu'ils ont jugé que ce
n'était pas nécessaire dans leur routine de Fast Loads,
beaucoup de programmeurs n'ont pas vérifié les trailers
de fin des champs
data voire le checksum
(et je ne parle même pas du checksum en 4-4 et des trailers des
champs
adresse qui sont purement et simplement systématiquement
ignorés!!!)
Envie de vous raffraichir la mémoire sur les techniques autour
du disk II?
Allez donc lire l'excellente prose de mon ami Jean-Pierre
sur le lecteur de
disquettes 5 pouces 1/4 de l'apple II.
Les possesseurs de disk II sont confrontés à la
même situation que les propriétaires de voitures anciennes.
Le minimum est d'avoir le permis de conduire.
Après chacun est libre de faire ce qu'il veut.
Certains iront lever le capot et chercheront à comprendre
comment fonctionne le moteur.
D'autres iront encore plus loin en cherchant à savoir ce qui a
motivé le choix de tel ou tel matériau.
Si vous voulez fabriquer vous même une pièce qui a
laché et qui n'existe plus dans le commerce ou si vous souhaitez
la customiser façon "Pump my ride", vous avez
intérêt à maîtriser votre sujet à fond.
Il est possible de tuner une routine de lecture pour obtenir un Fast
Load en travaillant au niveau "track".
Dans sa version actuelle, ma routine de lecture fonctionne. Mais il ne
fait aucun doute que si je veux les réponses à toutes mes
questions
il va falloir que je passe par la case apprentissage d'un
élément clef du disk II. Jean-Pierre
est formel: pour tout capter, il n'y a pas d'autres solutions que de
maitriser le fonctionnement du LSS (Logic State Sequencer).
Et là, le maitre après Steve Wozniak,
c'est Jim Sather et
son chapitre 9...
Dos optimisé: Flash DOS 1.1
Voici une disquette issue de l'Underground contenant un de ces DOS
patché pour booster ses capacités en lecture.
A noter aussi la bidouille hard pour accéder à la piste
$23.
Il n'était pas rare à l'époque de voir dans
des magazines des solutions pour modifier son matériel,
opération pouvant annuler la garantie du drive. Exemple d'une
autre manipulation:
|
|
|
|
|
Disk : Flashdos_Maker.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
*R A$0000 (000000) L$0000 (000000) 000 @HHHHHHH
*R A$0000 (000000) L$0000 (000000) 000 AHHHHHHH APPLE STAR SYSTEM
*R A$0000 (000000) L$0000 (000000) 000 BHHHHHHH
*R A$0000 (000000) L$0000 (000000) 000 CHHHHHHH FLASH
DOS 1.1
*R A$0000 (000000) L$0000 (000000) 000 EHHHHHHH
*R A$0000 (000000) L$0000 (000000) 000 FHHHHHHH BY INDIANA
DISK
*R A$0000 (000000) L$0000 (000000) 000 IHHHHHHH
*R A$0000 (000000) L$0000 (000000) 000 KHHHHHHH
*A A$0000 (000000) L$021E (000542) 004 FLASH SYSTEM
*B A$4000 (016384) L$1FF8 (008184) 033 APPLE STAR SYSTEM.LOGO
*B A$4000 (016384) L$1FF8 (008184) 033 FLASH DOS.LOGO
*A A$0000 (000000) L$1106 (004358) 019 FLASH DOS MAKER
*B A$2500 (009472) L$081D (002077) 010 FLASH LOADER.S
*B A$1F00 (007936) L$0069 (000105) 002 FLASH LOADER
*A A$0000 (000000) L$10B8 (004280) 018 FLASH DOS MAKER.A
*A A$0000 (000000) L$261E (009758) 040 INSTRUCTIONS
*A A$0000 (000000) L$261E (009758) 040 INSTRUCTIONS.MIN
*B A$4000 (016384) L$1FF8 (008184) 033 DRIVE.LOGO
*B A$0800 (002048) L$1800 (006144) 026 LOCKSMITH 5.0 $24 TRACKS
*A A$0000 (000000) L$027D (000637) 004 CONTROL 1.0
*A A$0000 (000000) L$01D6 (000470) 003 FLASH DEMO
*B A$4000 (016384) L$1FF8 (008184) 033 ASS.LOGO2
*B A$4000 (016384) L$1FF8 (008184) 033 ASS.LOGO3
*B A$4000 (016384) L$1FF8 (008184) 033 ASS.LOGO4
*A A$0000 (000000) L$02EA (000746) 004
COPYRIGHT
*A A$0000 (000000) L$06F9 (001785) 008
SYSTEM-1
*A A$0000 (000000) L$02B5 (000693) 004 SYSTEM-2
*A A$0000 (000000) L$04FD (001277) 006 SYSTEM-3
*A A$0000 (000000) L$04F6 (001270) 006 SYSTEM-4
*A A$0000 (000000) L$12DE (004830) 020
SYSTEM-5
-B A$01FF (000511) L$27A5 (010149) 003
FLASH.S
W
This catalog contains 31 files. 1 were DELETED.
----------------------------------------------------------------------
|
DOS 3.3 compatible
|
Download Flash DOS Maker (gzipped)
|
Exemple de contribution à Golden
Article de Philippe Guiochon choisi pour le
dessin avec le bras
d'honneur au pirate...
Dos optimisé: PAUL-DOS
Ce DOS fait aussi office de "tracer" en affichant les secteurs en bas
à droite de l'écran texte à fur et à mesure
qu'il les traite.
La version est bien de Paul puisqu'on y trouve Bag of Tricks avec sa
signature pirate:
|
DOS 3.3 compatible
|
Download Paul-DOS (gzipped)
|