★ APPLICATIONS ★ DIVERS ★ "REM-OFF" OU LA SUPPRESSION DES COMMENTAIRES ★ |
Disque virtuel pour Amstrad CPC 6128 sous CPM 2.2 | Applications Divers |
Lors de l'utilisation du CP/M 2.2 sur le CPC 6128, seuls 64 Ko sont employés sur les 128 Ko disponibles. Ce programme astucieux permet d'utiliser les 64 Ko restant à la création d'un deuxième disque (virtuel) à accès quasiment instantané. Les programmes nécessitant de nombreux accès disques seront grandement accélérés. Telle la compilation avec Turbo-Pascal d'un long programme segmenté en plusieurs fichiers.La méthode utilisée consiste à détourner quelques vecteurs de la table du Bios (Basic I/O System), qui sert d'intermédiaire entre le CP/M et la machine en ce qui concerne toutes les entrées/sorties. En premier lieu, c'est le vecteur SELDSK, dont la fonction est de sélectionner le drive et de retourner l'adresse du DPH (Disk Para-meters Header), qui est détourné vers une nouvelle routine NEWSELDSK. Par la suite, lors de la sélection du drive, c'est la nouvelle routine qui sera appelée et qui va effectuer un filtrage en fonction du drive demandé. Si le drive M est appelé, alors les vecteurs READ et WRITE (lecture et écriture d'un secteur de 128 octets), du Bios sont détournés à leur tour vers de nouvelles routines NEWREAD et NEW-WRITE. Sinon, les vecteurs READ et WRITE sont initialisés et c'est la vraie routine SELDSK qui est appelée. La part la plus importante du travail est effectuée par les routines NEWREAD et NEWWRITE, qui doivent calculer la banque (bloc mémoire de 16 Ko) à commuter à partir de l'adresse ± 4000, et la position du secteur dans cette banque, en fonction du numéro de secteur et du numéro de piste sélectionnés auparavant. Rappel : avant tout accès disque à la lecture ou à l'écriture, les routines SETTRK, SETSEC, SETDMA sont utilisées pour sélectionner respectivement la piste, le secteur, et la position mémoire à utiliser pour lire ou écrire un secteur. Les transferts de données du disque virtuel à ia mémoire doivent s'effectuer à travers un tampon, de façon à ce que l'écriture ou la lecture en mémoire se produisent une fois la banque désactivée, afin de pouvoir accéder à la zone mémoire où sont commutées les banques. L'inconvénient de cette méthode est le suivant. Après chaque warm-boot, c'est-à-dire après un CTRL-C ou à la sortie d'une commande non résidente, les vecteurs des Bios sont initialisés, et il faut à nouveau dérouter le vecteur SELDSK pour utiliser le disque virtuel. Il existe quelques exceptions à cette règle : les commandes STAT et DUMP. Cependant, l'initialisation du disque virtuel est une opération qui prend très peu de temps et cette contrainte est vite oubliée à côté des nombreux services que peut rendre celui-ci. Réalisation La commande RD (listing 1) commence par placer en mémoire les trois nouvelles routines NEWSELDSK, NEWREAD, NEWWRITE à partir de l'adresse #BE80. Puis le vecteur SELDSK est détourné vers NEWSELDSK, et 2 octets du DPH B sont modifiés pour fixer la taille mémoire disponible et supprimer les pistes systèmes du disque virtuel. La commande FRD (listing 2) a pour fonction de formater le disque virtuel, c'est-à-dire que toutes les banques sont remplies avec l'octet #ES. Cette commande a été prévue pour une extension mémoire de 256 Ko, mais elle fonctionne aussi bien avec une extension de 64 Ko. Remarques :
Ce programme fonctionne sur CPC 6128 ou CPC 464/664 doté d'une extension mémoire. Utilisez au moins une fois FRD pour initialiser le contenu du nouveau disque. Puis la commande RD devra être lancée pour activer le disque virtuel qui sera disponible jusqu'au prochain warm-boot, après lequel il sera nécessaire de l'employer à nouveau avant de réutiliser l'unité virtuelle. Lorsqu'il est activé, le disque virtuel (M) s'utilise de la même façon que les autres disques. Des fichiers pourront être échangés avec le disque virtuel grâce à la commande PIP, tandis que STAT M:DSK: indiquera les caractéristiques du nouveau disque.
|