Titre Fast Boot / Fast Load


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:

Bidouillage drive
Bidouillage drive
Bidouillage drive


Principe du Fast Load

DOS & 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 ;-))

Speak to your drive


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

Life without DOS

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.

Copy Taiwan
Copy Taiwan
Tools Taiwan


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:

Ultra Disk Pack 1
Ultra Disk Pack 1
Ultra Disk Pack 1
Ultra Disk Pack 1

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

Floppy
DOS 3.3 compatible
Download Ultra Disk Pack 1 (gzipped)


hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot

Floppy
FBoot
Download Copy Pack by MicMac & The Softman (gzipped)


hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot

Floppy
DOS 3.3
Download (bugged?) Quick Loader 2.0 source code By Philippe Guiochon (gzipped)


hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot

Floppy
FBoot
Download Copy Pack BCB (gzipped)


hr FBoot


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


Ecran Fast Boot
Ecran Fast Boot

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



hr FBoot


A présent, un pack d'utilitaires orientés graphisme en Fast Boot signé par David Microcosm (1986).

Ecran Fast Boot

Floppy
Fboot
Download Fboot utilities by David Microcosm (gzipped)


hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot

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



hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot

Floppy
Fboot
Download Excel Displayer Dhgr side 1 by Patchman (gzipped)
Floppy
Fboot
Download Excel Displayer Dhgr side 2 by Patchman (gzipped)


hr FBoot


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!

Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot

Floppy
Fboot
Download Ze Enfoires Copy Disk by Kristo (gzipped)


hr FBoot


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.

Ecran Fast Boot
Ecran Fast Boot

Floppy
Fboot
Download TBT Copy 1989 by The Brain Trust (gzipped)


hr FBoot


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

Ecran Fast Boot
Ecran Fast Boot
Ecran Fast Boot
Lettre Bytlejuice
Lettre Bytlejuice
Lettre Bytlejuice

Floppy
Fboot
Download Fboot Color Maker By The Bytlejuice (gzipped)


hr FBoot


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

Ecran Fast Boot
Disk Speedycopy



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

HGR & text

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

Disk II book
Disk II book
Disk II book

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

Insert Disk


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


Programming


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:

Bidouillage drive
Bidouillage drive


Flash DOS


Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS
Ecran Flash DOS

Ecran Flash DOS
Ecran Flash DOS


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


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

Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive
Bidouillage drive


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.

Paul-DOS

La version est bien de Paul puisqu'on y trouve Bag of Tricks avec sa signature pirate:

Paul-DOS
Paul-DOS

Floppy
DOS 3.3 compatible
Download Paul-DOS (gzipped)