APPLICATIONSDISQUE ★ MONITEUR DE DISQUETTES ★

Moniteur de Disquettes|CPC Revue)Applications Disque

Ce programme vous permettra de vérifier l'action des commandes directes du FDC (Floopy Disc Controller). C'est pourquoi il est préférable de ne travailler que sur des copies et non pas sur des disquettes contenant des données importantes.

N.B. : le chargement s'effectue en lançant le programme BASIC (MONIDISC.BAS). Ce dernier a besoin d'un programme intitulé “OBJET.BIN” créé par le programme “OBJET. DAT” après un simple RUN.

Les CPC dialoguent avec le(s) lecteur(s) de disquettes j" grâce à 3 ports :

- &FA7E = Commande du moteur
- &FB7E = Registre d'état principal
- &FB7F = Registre de données.

Tout le transfert des données entre lecteur et processeur se fait avec le registre de données, soit l'octet se trouvant à l'adresse de port &FB7F. La synchronisation est faite avec la lecture du registre d'état principal, soit l'octet se trouvant à l'adresse de port &FB7E.
Le contrôleur de disquette dispose de 15 instructions ; les programmes internes des CPC (AMSDOS) n'en utilisent que quelques-unes et plusieurs sont accessibles par le BASIC. Seules les opérations de lecture et d'écriture secteur et de formatage ont besoin d'algorithmes en langage machine (très simples).

Ces 15 instructions possibles sont au menu (sauf : interroger l'état d'interruption).
Chaque phase d'une instruction est décomposée et l'appui sur une touche la fait progresser. Lorsqu'il est demandé de fournir une donnée, le programme propose la donnée standard utilisée dans les CPC soit :

- 2 pour la taille secteur (512 octets)
- 0 pour adresse de tête (lecteur à 1 seule tête)
- 82 pour GAP 3 de formatage
- 42 pour GAP 3 de lecture/écriture secteur
- de &41 à &49 pour les numéros de secteur.

Il suffit d'appuyer sur RETURN pour valider la donnée proposée.
Les données à fournir sont en décimal sauf pour les données des numéros secteurs dans le formatage d'une piste qui doivent être en HEXADECIMAL.
Les numéros de piste sont de 0 à 41 car il est possible d'aller jusqu'à 42 pistes sur les lecteurs CPC (chercher une piste 43 ou plus risque d'endommager le lecteur). Le formatage se fait par pistes indépendantes avec des tailles ae secteur :

- 0 pour 128 octets
- 1 pour 256 octets
- 2 pour 512 octets = standard CPC
- 3 pour 1024 octets
- 4 pour 2048 octets
- 5 pour 4096 octets (maximum sur disquette 3" double densité).

Chaque instruction commencée doit être poursuivie jusqu'à la fin car le contrôleur de disquette oblige à lire tous les octets de la phase résultat. Si une erreur s'est faite dans le choix du menu ou d'une donnée demandée, retirer la disquette et appuyer sur RETURN jusqu'au retour du menu.
L'option 16 est à éviter ou, au moins, on ne doit pas modifier les valeurs données par défaut car les CPC ne pourront plus accéder à la disquette par leurs propres programmes (AMSDOS). (Ceux-ci sont les temps de réaction de la tête de lecture/écriture en ms).
Une zone mémoire située entre &7000 et &9FFF permet de recevoir les données de secteurs. Il est possible d'écrire dans cette zone puis de les envoyer sur la disquette. Le formatage se sert aussi de cette zone pour prendre les numéros de secteur.
 

Registre d'état principal

7 0 NO-TRANS    Indique s'il peut recevoir ou transmettre un octet
  1 TRANSFERT   en &FB7F
6 0 INPUT       Sens des données le contrôleur attend un octet
  1 OUTPUT      le contrôleur envoie un octet
5 0 NO EXECUTE  Indique s'il exécute l'instruction
  1 EXECUTION
4 0 NO BUSY     Indique que le contrôleur a commencé une
  1 BUSY        instruction et qu'il doit la terminer
3     D
2     C          Drive utilisé
1     B

Registre de donnée      1er octet : Etat d'interruption

----------------------------------------------------------------------
  11 READY CHANGE      Bit 5 du registre d'état lecteur s'est modifiée
                       en cours d'instruction.
----------------------------------------------------------------------
7 10 INSTR-ILLEGALE    Cette instruction n'existe pas.
----------------------------------------------------------------------
6 01 INTERRUP-INSTR    Instruction interrompue *NOTA
  00   SUCCESSFULL     Instruction terminée avec succès.
----------------------------------------------------------------------
5 0      EN-COURS      Indique que l'instruction est terminée.
  1     FIN-INSTR
----------------------------------------------------------------------
4 0         OK         Indique une erreur dans le traitement de
  1        ERROR       l'instruction.
----------------------------------------------------------------------
3 0        READY       Indique l'état du contrôleur.
  1      NO-READY
----------------------------------------------------------------------
2 0       HEAD-1       Tête utilisée pendant l'instruction.
  1       HEAD 2
----------------------------------------------------------------------
  11      DRIVE D
  10      DRIVE C      Drive utilisé pendant l'instruction.
  01      DRIVE B
  00      DRIVE A
----------------------------------------------------------------------

* NOTA : ce message n'indique pas forcément une erreur, il intervient dans l'option 3 si le pre mier secteur est le même que le dernier.
 

      Registre de donnée      2ème octet : Etat 1
----------------------------------------------------------------------
7  0        OK          Indique la fin normale de la piste
   1      END-TRACK
----------------------------------------------------------------------
6  0        0           Toujours à 0 : inutilisé
----------------------------------------------------------------------
5  0        OK          Erreur dans la valeur de contrôle (Check sum)
   1     DATA ERROR
----------------------------------------------------------------------
4  0        OK E        change de données trop lent (> 26ms)
   1       OVERRUN
----------------------------------------------------------------------
3  0           0        Toujours à 0 : inutilisé. _
----------------------------------------------------------------------
2  0          OK        Identification de secteur non trouvée.
   1        NO DATA
----------------------------------------------------------------------
1  0          OK        Disquette protégée contre l'écriture lors d'une opération
   1       W/PROTECT    d'écriture.
----------------------------------------------------------------------
0  0          OK        Identification de la data adress mark non trouvée.
   1         NO-ID
----------------------------------------------------------------------

Registre de donnée 3ème octet : Etat 2

----------------------------------------------------------------------
7  0           0        Toujours à 0 : inutilisé.
----------------------------------------------------------------------
6  0           OK       Indique une data adress mark effacée.
   1         EFFACEE
----------------------------------------------------------------------
5  0           OK       Erreur dans la lecture secteur.
   1         DATA ER
----------------------------------------------------------------------
4  0           OK       Erreur dans le numéro de piste indiqué et celui
   1         TRACK ER   indiqué lors du formatage
----------------------------------------------------------------------
3  0       SCAN ER      Indique si une opération scan a donné un résultat
   1         OK         positif : sinon toujours à 0.
----------------------------------------------------------------------
2  0         OK         Indique lors d'une instruction scan qu'il n'a pas
   1       NO-SECTOR    trouvé le secteur indiqué.
----------------------------------------------------------------------
1  0         OK         Indique qu'il n'a pas trouvé la piste indiquée.
   1       TRACKER
----------------------------------------------------------------------
0  0         OK         Identification de la data adress mark non trouvée
   1        NO-ID       lors de l'écriture secteur.
----------------------------------------------------------------------

Registre de donnée Registre d'état lecteur (drive status)

----------------------------------------------------------------------
7  0         OK          Indique une erreur dans le lecteur de disquette.
   1        FAULT
----------------------------------------------------------------------
6  0         W/R         Indique si la disquette est protégée ou non.
   1      W-PROTECT
----------------------------------------------------------------------
5  0       NO-READY      Indique l'état du lecteur de disquette : disquette
   1        READY        présente et en rotation.
----------------------------------------------------------------------
4  0        TRACK ?      Indique s'il se trouve rée lement sur la piste 0
   1        TRACK 0
----------------------------------------------------------------------
3  0        DOUBLE       Indique si le lecteur a 2 têtes.
   1        SIMPLE
----------------------------------------------------------------------
2  0         HEAD-1      Indique la tête sélectionnée.
   1         HEAD-2
----------------------------------------------------------------------
   11         D
1  10         C          Indique le lecteur sélectionné.
   01         B
   00         A

LIGNE BASIC

150 Initialisation des variables
170 Menu
270 Arrêt moteur
300 Marche moteur
330 Lire des donnée»
350 Ecrire des donnée»
370 Lire données effacée»
390 Ecrire données effocées
410 Lecture d'une piste
430 Formater une piste •620 Lire ID
650 Scan equal
670 Scan low or equal
690 Scan high or eaual -710 Chercher piite ô
760 Chercher piste No
840 Lire état lecteur
900 Indiquer données lecteur
1040 Lire buffer
1110 Réinitialiser

SOUS-PROGRAMME

+ 1140 Dessine cadre ETAT PRINCIPAL et ETAT LECTEUR et 2 instructions
+ 1150 Dessine cadre ETAT PRINCIPAL et ETAT LECTEUR et 1 instruction
- 1280 Destine codre ETAT INTERRUPTION
+ 1330 Des»ine ETAT ST1 et ST2 et nom in»truct»on et envoie 2 instructions
+ 1430 Affiche nom instruction et envoie 2 instructions
+ 1450 Envoie 2 instructions
- 1490 lit et affiche ETAT PRINCIPAL ou ST1 ou ST2
+ 1540 Ut et affiche ETAT LECTEUR
+ 1550 Affiche ETAT LECTEUR
- 1610 Lit et affiche ETAT INTERRUPTION
- 1620 Affiche ETAT INTERRUPTION
+ 1690 Lit et affiche 7 résultats et FIN
+ 1810 Affiche FIN
- 1840 Demande les 7 instructions
- 2010 Test les valeurs en entrées
- 2070 DATA

VARIABLES

m$(18) - Tableau des options du menu

p$(48) - Tableau de correspondance des bits du registre PRINCIPAL et ST1 et ST2
p$(48) - Tableau des positions sur la liane du registre PRINCIPAL et ST1 et ST2
i$(16) - Tableau de correspondance aes bits du registre d'INTERRUPTION
i(16) - Tableau des positions sur la ligne du registre d'INTERRUPTION
s$( 16) - Tableau de correspondance des bits au registre d'ETAT LECTEUR
s(16) - Tableau des positions sur la ligne du registre d'ETAT LECTEUR
h(27) - Tableau des numéros secteurs standard (format système).
x, xx, y, z - Variable de boucle x$, y$, z$ - Variable de read et input
d = adresse du registre d'état principal ou de donnée &FB7F  - &FB7E
c = décalage pour registre d'état principal ou st1 ou st2 dans tableau p$ 0 - 16-32
t = appuyer sur une touche pour continuer 0 - 1
I = ligne pour registre d'état principal ou stl ou st2 4 - 10 - 13
zz = affichage en hexa ou décimai 0 - 1
o$ = input du menu 1 à 18
a = numéro du menu appelé 1 à 18
m = mémoire du buffer pour données des secteurs &7000 à &9FFF
i = instruction à exécuter 0 à 255
b = taille secteur (formatage et secteur) 0 - 1 - 2  - 3 - 4 - 5
e = secteur par piste (formatage) 1 à 27
f = nb octets GAP 3 (formatage) 0 à 255
g = octet de remplissage (formatage) 0 à 255
j = numéro de piste (formataae et secteur) 0 à 41
r = adresse de téte (secteur) 0 - 1
s = adresse secteur Isecteur) 0 à 255
u = dernier secteur (secteur) 0 à 255
v = nb octets GAP 3 (secteur) 0 à 255
w = long secteur (secteur) 0-1 - 2 - 3 - 4 - 5
k = step rate (lecteur) 2 à 32 step 2
n = off head [lecteur) 0 à 480 step 32
o = on head (lecteur) 4 à 512 step 4
p = mode dmo (lecteur) 0 - 1
q = nb secteur lecture buffer 0-27

ATTENTION A VOS DISQUETTES ET AUX VALEURS ENTREES VOUS N'ETES PLUS PROTEGES PAR LES PROGRAMMES DE L'AMSDOS POUR LES EVENTUELLES ERREURS.

CPC n°35 - Juin 1988

★ ÉDITEUR: CPC Revue
★ LICENCE: LISTING
★ ANNÉE: 1987
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ AUTEUR: PASCAL ARRIBAT

★ AMSTRAD CPC ★ DOWNLOAD ★

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Diskrepair (CPC Amstrad International)
» Applications » Trans (Jürgen Weber)
» Applications » Transfert (Amstrad Computer User)
» Applications » Backlist (CPC Amstrad International)
» Applications » Disc Poker (Amstrad Accion)
» Applications » Copieur Basic

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 091 millisecondes et consultée 833 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.