ExtraMoniteur économique
L'ExtraMoniteur offre beaucoup de facilités au développement d'un système d'exploitation. Mais dans un tel programme, le plus
coûteux en mémoire sont les déclarations des espaces réservés aux buffers de FCB, FAT et secteur. Pour
limiter la dépense, il est toutefois possible de recourir à certaines astuces.
La fonction FCBINI est censée exiger la déclaration d'un buffer de secteur,
autant de FCB que de fichiers ouvrables et autant de FAT que de lecteurs demandés.
Lors de chaque appel à l'ExtraMoniteur, le pointeur de FAT recherchée est calculé
en rapport au numéro de lecteur. Il suffit donc de ne déclarer qu'un seul FCB, une seule FAT et de calculer
systématiquement loffset afin de positionner le pointeur de FAT de telle façon que l'ExtraMoniteur
opère toujours avec le même buffer de FAT, ce qui, en fin de compte, revient à ne déclarer que 256+166+283
soit 705 octets pour gérer le lecteur que l'on veut (mais un et un seul à la fois, bien sûr). L'initialisation
se fera donc ainsi:
...
* Initialisation ExtraMoniteur
LDB #$00 ColdReset
JSR $EC0C ExtraMoniteur
* Initialisation FCBINI
LDX #SECBUF | Initialise
STX $6197 | SECBUF
CLR $6049 Initialise DK.DRV
LDX #FATBUF | Initialise
STX $6199 | FATPTR
LDD #$0102 1 fichier/code d'appel de FCBINI
LDX #FCBBUF Pointeur FCB Thomson
LDY #$0001 1 lecteur
JSR $EC0C ExtraMoniteur
...
Ne pas oublier évidemment de calculer l'offset de la FAT à chaque changement de lecteur:
...
LDA $6049 Numéro de lecteur
LDB #166 | Calcule
MUL | offset
COMA | pour
COMB | FATPTR
LDX #FATBUF+1 Pointeur FAT
LEAX D,X Ajuste pointeur
STX $6199 Sauve FATPTR
CLR FATBUF | Effacement des codes d'ouverture =
CLR FCBBUF | chargement systématique de la FAT
...
Si vous désirez opérer avec plusieurs fichiers simultanément, il faudra déclarer le nombre de fichiers
ouvrables et le nombre de FCB en conséquence mais, pour notre affaire, les déclarations mémoires suivantes
suffiront:
...
FATBUF RMB 166 Buffer pour FAT
FCBBUF RMB 283 Buffer pour FCB
SECBUF RMB 256 Buffer pour secteur
...
|