Envoyer un e-mail à Collection ThomsonCollection Thomson
EditoForum 2002Liens
Nanoreseau
Docs
Logiciels
Matériel
Imprimer le documentLa documentation de Prehis-To
Retour à la liste

Présentation de la ROM contrôleur

L'identificateur de la ROM contrôleur (IDDISK)
       Les 3 caractères débutant toute ROM moniteur donnent une évaluation des capacités du moniteur à gérer ses périphériques:

Adresse  
MO TO Caractère Signification
$A000 $E000 M
D
Q
R
Contrôleur Thomson Micro-Informatique
Contrôleur Western Digital
Contrôleur QDD
Contrôleur de nanoréseau
$A001 $E001 T
K
FAT de 160 octets
FAT de 80 octets
$A002 $E002 D
C
Double densité
Simple densité
$A003 $E003 $XX Checksum de l’identificateur de ROM

       Le caractère en $A001/$E001 renseigne sur la taille de la FAT, et donne donc une idée du nombre de pistes du support. Une FAT de 160 octets implique un disque de 80 pistes. Une FAT de 80 octets implique un disque de 40 pistes ou moins.
       On peut remarquer que le caractère contenu à l'adresse $A002/$E002 est le même que celui qui est renvoyé dans DKSTA ($204E/$604E) lors de l'initialisation moniteur d'un contrôleur disque (DKSTA est en fait initialisé par le programme, sans rapport nécessaire avec le registre $A002/$E002).
Les exceptions sont à réserver pour les ROM nanoréseau dont l’identificateur n’a qu’une signification restreinte : « REC » pour la version 3, « RES » pour la version 2, etc… A l'initialisation du moniteur, seul le premier caractère ("R") renseigne alors sur la présence d'un contrôleur nanoréseau.
       Ces trois premiers caractères permettent à certains logiciels de savoir comment traiter les données du support.
       Le caractère en $A003/$E003 est le checksum, soit la somme des trois premiers caractères augmentée de $55. La validité de ce checksum renseigne le système, au reset, sur la présence d’une ROM contrôleur. Il renseigne aussi l’ExtraMoniteur sur le type de support qu’il aura à gérer. Lors de son initialisation, l’ExtraMoniteur reconnaît quatre types de contrôleur d’après le checksum  d’IDDISK et met à jour leur caractéristique :

Checksum Densité Pistes par face Secteurs par piste Octets par secteur
$27 Simple 40 16 128
$28 Double 40 16 255
$30 et $34 Simple 25 Xx 128
Autre Double 80 16 255

      Pour le test de reconnaissance par l’ExtraMoniteur, seuls les bits 0 à 5 du checksum sont significatifs. Si vous concevez un nouveau contrôleur, veillez à ce que votre checksum d’IDDISK corresponde bien aux possibilités du lecteur ou inversement.

Les fonctions standard de la ROM contrôleur
      Les appels aux différentes fonctions de la ROM contrôleur ont des entrées normalisées (ici, avec leur nom officiel).
      Les 3 premières entrées concernent les opérations physiques de base, dont la structure logicielle interne varie en fonction des contraintes de chaque contrôleur :

        $A004/$E004  DKCONT   Fonctions standard (équivalant à $E82A sur TO et au SWI de code $26 sur MO)
        $A007/$E007  DKBOOT   Lancement du boot
        $A00A/$E00A  DKFMT    Formatage

       Suivent les 8 entrées relatives au système d’exploitation logique. Cet embryon de système d'exploitation a été utilisé par toute une gamme de logiciels (ColorPaint, Polyphonia,...) lorsque le système n'assurait pas l'exploitation logique des lecteurs de disquette (sur MO, TO7 et TO7-70) et comporte de pratiques raccourcis de fonctions. Les routines concernées ont à peu de choses près toujours la même structure logicielle, car n’ayant pas beaucoup évolué. Les registres d’entrée et de retour sont invariables :

        $A00D/$E00D  LECFA    Lecture de la FAT (chargement et swap de la FAT)
        $A010/$E010  RECFI    Recherche d'un fichier (Ouverture en écriture et en lecture)
        $A013/$E013  RECUP    Récupération de la place occupée par un fichier (effacement d'un fichier)
        $A016/$E016  ECRSE    Ecriture d'un secteur
        $A019/$E019  ALLOD    Allocation de départ (allocation d'une entrée de fichier dans le catalogue)
        $A01C/$E01C  ALLOB    Allocation d'un bloc (recherche d’un bloc libre dans la FAT)
        $A01F/$E01F  MAJCL    Mise à jour cluster (décomposition du numéro de bloc en numéros de piste et secteur)
        $A022/$E022  FINTR    Fin du transfert (clôture du fichier)

Pour les contrôleurs QDD, il existe une entrée de plus :

        $A025/$E025           Fonctions standard avec numéro de secteur réel

… et éventuellement :

        $A028/$E028           Fonctions système avec numéro de secteur réel

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