ExtraMoniteur de course
Les routines de chargement et de sauvegarde sur disque proposées par l'ExtraMoniteur sont très
pratiques, presque au point d'être... basiques! La seule gêne est que jamais chargement et sauvegarde
n'ont été aussi lents que par l'utilisation de ces routines avec des disquettes en entrelacement standard
(entrelacement 7). Pour y remédier, on peut évidemment faire appel à la routine FILES, mais au risque
de perdre de la place en mémoire, sans être véritablement sûr de gagner du temps avec un programme utilisateur
en outre plus lourd. L'astuce résiderait dans l'optimisation de ces routines.
Or, les mystérieux FCB, dont le pointeur doit être chargé dans le registre
X avant l'exécution de la routine FCBINI, offrent la possibilité de contrôler "manuellement"
chargement et sauvegarde en intelligence avec l'ExtraMoniteur. Ils contiennent chacun les paramètres
de lecture ou d'écriture du secteur en travail suivis des données de ce secteur.
Les deux petites routines ci-après, extraites de Paragraphe, vont donc vous
permettre d'accélérer notablement chargement et sauvegarde de fichiers.
Pour la lecture séquentielle, donc:
INPUT PSHS X |
LDX FCBPTR Pointeur sur le FCB courant (+$10)
LDB $07,X | Si pas de donnée à lire dans le secteur,
BNE EXIT | fin de la lecture
LDB $08,X | Si la fin du secteur
DECB | est atteinte,
BEQ INPUT1 | charge un nouveau secteur
STB $08,X Sauve le décompteur de données
LDB -$0B,X Récupère l'offset sur la donnée courante
INC -$0B,X Incrémente l'offset sur la donnée courante
ABX Calcule le pointeur sur la donnée courante
LDB $0B,X Lit la donnée courante
PULS X,PC |
INPUT1 LDB #$05 | Lit la donnée suivante (le secteur
BSR EXTRAM | suivant, en fait) par l'ExtraMoniteur
LDB $6178 | Si pas de secteur chargé,
BNE EXIT | fin de la lecture
LDB $6196 Récupère la première donnée lue
PULS X,PC |
...et pour l'écriture séquentielle:
WRITE PSHS X |
LDX FCBPTR Pointeur sur le FCB courant (+$10)
LDB $08,X | Si on se trouve
INCB | en bout de secteur,
CMPB $0A,X | sauve le secteur
BEQ WRITE1 | par l'ExtraMoniteur
STB $08,X Sauve l'offset sur la donnée courante
ABX Calcule le pointeur sur la donnée courante
STA $0A,X Ecrit la donnée dans le secteur
PULS X,PC |
WRITE1 LDB #$04 | Sauve la donnée (le secteur,
BSR EXTRAM | en fait) par l'ExtraMoniteur
PULS X,PC |
Que l'espace mémoire des FCB ait été réservé par vous ou par le basic, le pointeur sur le FCB
du dernier fichier ouvert (en lecture comme en écriture) se trouve en $6245. FCBPTR doit donc contenir
ce pointeur, augmenté de $10 pour optimiser l'adressage indexé.
La gestion de ces routines est la même que les routines INPUT et WRITE de l'ExtraMoniteur,
excepté que la routine de lecture ci-dessus renvoie directement la donnée lue par l'accumulateur B.
|