CODING ★ INITIATION A CP/M - CPC n°27 ★

Initiation a CP/M (19/xx) (CPC Revue n°27)
Nous voici donc arrivés à l'étude de la fonction 50, présente, rappelons-le, uniquement en CP/M Plus et destinée à un interfacage "propre" avec le BIOS. Le mécanisme d'appel est très simple et utilise une zone de travail qui contient les différents paramètres dont voici la description :
– 1 octet : numéro de la fonction BIOS à rappeler
– 1 octet : contenu du registre A à passer au BIOS
– 2 octets : contenu du registre BC
– 2 octets : contenu du registre DE
– 2 octets : contenu du registre HL

En entrée :

C = 50
DE= adresse de la zone de travail contenant les paramètres.

En sortie :

A contient le code retour éventuel de la fonction BIOS. Mais quelles sont les fonctions BIOS ?


La figure 1 vous donne la liste utilisant les abréviations standard des noms de ces fonctions. Notre propos n'est pas de vous les décrire toutes, car d'ailleurs la plupart ne sont que des appels aux périphériques permettant d'effectuer physiquement les fonctions du BDOS de CP/M.


Figure 1: Les fonctions du Bios de CP/M Plus.

Nous allons voir dans le détail les fonctions du BIOS se rapportant aux opérations sur disquettes, car celles-ci sont parfois utiles et ne font pas double emploi avec les fonctions du BDOS qui opèrent sur des fichiers.

Les fonctions "disquettes" du BIOS

HOME : positionne la tête de lecture du lecteur courant sur la piste 0
SELDSK : sélectionne pour toutes les fonctions "disque" suivantes le lecteur qui sera concerné. Le numéro du lecteur est passé dans le registre C avec 0 pour A:, 1 pour B: etc. Par précaution mettre B à zéro. Registre E à 0 force la sélection, c'est-à-dire la relecture de la disquette. Indispensable pour ne pas avoir de problème lors d'un changement de support. Renvoie dans HL adresse table DPH du lecteur ou 0 si erreur.
SETTRK : sélectionne le numéro de piste passé dans le registre C
SETSEC : sélectionne le numéro du secteur passé dans le registre C
SETDMA : sélectionne l'adresse du transfert disque passée dans registre BC
READ : lecture du secteur physique déterminé par numéro piste/numéro secteur à l'adresse passée par SETDMA. Code retour dans A.
WRITE : écriture d'un secteur physique. Code retour dans A.

Utilitaire simple de lecture/écriture physique d'une disquette

La fonction 50 va nous permettre d'écrire simplement et proprement un petit programme qui, en liaison avec DDT ou SID nous permettra d'examiner une disquette en y accédant au niveau physique, c'est-à-dire piste/secteur.
Rappelons le détail de cette organisation :

– une disquette comporte 40 pistes, numérotées de 0 à 39
– chaque piste est décomposée en 9 secteurs de 512 octets. Quel que soit le formatage de la disquette, système CP/M ou données seules, pour le BIOS les secteurs sont toujours numérotés de 0 à 8.

Donc, chaque lecture vous permettra de visualiser 4 "secteurs CP/M" de 128 octets.

La figure 2 vous donne la liste du programme.

Après avoir saisi le texte source, vous devez en effectuer l'assemblage par RMAC ou ASM, suivi du LINK ou du LOAD. Si vous n'avez pas fait d'erreur, les zones suivantes se trouveront aux adresses ci-dessous :

DISQUE 226H
PISTE 227H
SECTEUR 228H
BUFDSK 240H
LECTURE 100H
ECRITURE 109H
FIN 10FH

Comment maintenant utiliser cet utilitaire appelé, par exemple, DUMPDSK ? Il faut utiliser DDT ou SID.
Voici la marche à suivre, l'exemple étant donné sous SID.

SID DUMPDSK.COM chargement du programme en 100H

S226 pour visualiser et modifier les valeurs des paramètres DISQUE, PISTE et SECTEUR.

Puis G100,10 F pour effectuer une lecture ou

G109,10 F pour une écriture.

D230 vous visualisera le buffer contenant le secteur physique qui débute en 240H et finit en 43FH.


Figure 2: Utilitaire disque pour CP/M Plus.

Précautions d'emploi : il est impératif, pour ne pas avoir de problèmes, de terminer l'utilitaire par un CTRL+SHIFT + ESC pour effectuer un redémarrage à froid.

Voilà, vous avez maintenant ce qu'il vous faut pour percer à jour les mystères du catalogue ou plus intéressant pour récupérer un fichier perdu. Bien sûr, rien ne vous empêche d'améliorer l'utilitaire pour le rendre indépendant.

Bonnes découvertes, mais attention aux fausses manœuvres !

CPC n°27

★ ANNÉE: ???
★ AUTEUR: Francis VERSCHEURE

Page précédente : Initiation a CP/M (18/xx)

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Initiation a CP/M (01/xx) (CPC Revue n°7)
» Coding » Initiation a CP/M (03/xx) (CPC Revue n°9)
» Coding » Initiation a CP/M (15/xx) (CPC Revue n°22)
» Coding » Initiation a CP/M (16/xx) (CPC Revue n°23)
» Coding » Initiation a CP/M (07/xx) (CPC Revue n°13)
» Coding » Initiation a CP/M (02/xx) (CPC Revue n°8)
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 204 millisecondes et consultée 1582 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.