Envoyer un e-mail à Collection ThomsonCollection Thomson
EditoForum 2002Liens
Nanoreseau
Docs
Logiciels
Matériel
Imprimer le document
Retour à la liste

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.

Site
Plus
Forums
Code
Créations

*Site en favoris
*Page en favoris
*Site en démarrage
*Page en démarrage


Haut de page

Collection Thomson 2015 © Ghislain Fournier & François Mouret