★ CODING ★ AMSLIVE ★ AMSLIVE n°06 - HAPPY DRIVERS : LES RSX AMSDOS ★ |
AMSLIVE n°06 - Rsx Amsdos | Coding Amslive |
L'accès disque est une opération des plus importantes. Cette série d'articles ambitionne d'en améliorer la fiabilité, la rapidité. Nous verrons comment se servir des routines de la ROM, détourner les messages d'erreur, personnaliser votre gestion de lecture/écriture tout en restant compatible AMSDOS (dame, il faut bien penser aux formats spéciaux, au futur disque dur...). Attaquons par les RSX AMSDOS. Pas |A, |B, |CPM, | REN ... que vous connaissez déjà, mais les RSX 1 à 9. On ne peut pas y accéder à partir du BASIC, car celui-ci n'accepte pas les noms contenant des caractères spéciaux ou formés comme ici d'un chiffre. Alors que les routines système permettent de manipuler des noms avec espaces, minuscules... L'opération se déroule en 2 temps : recherche de la RSX, et son appel ! LE VECTEUR BCD4 La recherche se fait une fois pour toute pour chaque RSX. Le vecteur BCD4 (KL-FIND-COMMAND) s'en charge pour peu que HL contienne l'adresse du nom de la RSX. Attention à bien entrer ce nom : cpm par exemple ne sera pas trouvé. Si le BASIC convertissait automatiquement en majuscules, ce n'est pas le cas de BCD4 qui cherche strictement la même chaîne. Au retour, AF, BC et DE sont modifiés. Si une RSX a été trouvé, CARRY est vrai, C contient le numéro de ROM et HL l'adresse de la routine. Sinon CARRY est faux, soit parce que le nom esi incorrectement entré dans votre source, soit parce que la ROM n'est pas initialisée (ceci fera l'objet d'un prochain article). Le programmeur consciencieux prévoira un message d'erreur en cas d'échec. QUELLE ADRESSE ! Ca y est, C et HL contiennent les informations nécessaires à l'appel de la routine. Le vecteur &1B (KL-FAR-PCHL) lit justement ces registres pour déterminer où sauter. On peut donc l'utiliseï immédiatement après BCD4. Cependant, il n'est pas indiqué si on veut réutiliser la commande plus tard. De plus, certaines routines attendent des paramètres dans HL ou C justement. On va donc stocker ces valeurs ; la RSX sera appelée par le vecteur &18 (KL-FAR) qui doit être suivi de l'adresse à laquelle sont placés, dans l'ordre, l'adresse de la routine et le numéro de ROM correspondant. VECTEURS & RSX, MEME COMBAT Une fois connues, pourquoi ne pas entrer directement dans un source les adresses des différentes RSX ? Sacrebleu, parce que si ces adresses ne risquent pas de changer du jour au lendemain sur votre CPC, elles peuvent changer d'un CPC à l'autre. Celles de la ROM DISC des CPC+ sont par exemple décalées par rapport aux CPC classiques. Alors que les noms restent constants. RAPIDE DESCRIPTIF Passons en revue ces RSX mystères. 1 : Autorise ou interdit les messages d'erreurs physiques (ceux qui demandent Retry, Ignore or Cancel ?). Conditions d'entrée : Si A est nul, autorise. Dans tous les autres cas, interdit. Conditions de sortie : A contient l'ancienne valeur, HL est modifié. 2 : Modifie les paramètres de drive. CE : HL pointe sur une table de 9 octets qui 3 : Définit les paramètres de format. CE : E contient le numéro du lecteur (0 pour A, 1 pour B). Les bits 7 et 6 de A déterminent le format. 4 : Lit secteur. CE : Les bits 0 et 1 de E déterminent le numéro du lecteur (seul le bit 0 importe sur CPC), le bit 2 de E la tête à utiliser, D la piste, C le "nom" du secteur (son numéro + décalage format), HL l'adresse du buffer de #200 octets. 5 : Ecrit secteur. CE : Idem 4 CS : Idem 4 6 : Formate une piste. CE : DE comme pour 4. HL pointe sur les IDentificateurs secteurs (n * 4 fois octets numéro piste, numéro tête, numéro secteur taille secteur). Certains octets du DPB sont lus. 7 : Recherche piste. CE : DE comme pour 4. CS : Mêmes indicateurs que pour 4 suivant la réussite du déplacement de la tête. 8 : Teste lecteur. CE : A contient le numéro du lecteur. 9 : Nombre d'essais. CE : A contient le nombre de tentatives à effectuer en cas d'erreur lors de la recherche de piste. La valeur nulle correspond à 256. Et voilou, n'hésitez pas à faire pleins d'essais, c'est sans aucun risque (sauf celui de vous tromper en insérant votre disquette préférée à la place de la disquette de travail. Mais bon, on vous a conseillé cent fois de faire des copies de sauvegarde). Les exemples dans le numéro 7 ... , AMSLIVE n°6
|