CODING ★ Fonctionnement FDC ★

Fdc - 01 - Fonctionnement Fdc|SOS Programmeurs)

ETUDE DU FDC 1ére partie
Chapitre 1.1 : Généralités

Le Floppy Disc Controller est  un  petit animal parallélépipédique pourvu de nombreuses pattes et vivant dans  une  jungle  de circuits divers . Prenez  toute suite note qu'il obéit à  des  lois  très  strictes  . Il est à même de  perturber gravement son  habitat  si  il  se  trouve  contrarié  ! Ses moeurs  particulières  lui  interdisent  toute  cohabitation  avec  le  BASIC  .  Les  instructions d'Entrée - Sortie (E/S)  ,  rédigées  en assembleur sont le seul  mode de communication envisageable avec ce spécimen de l'électronique CPC .

Chapitre 1.2 : E/S

Définition d'une E/S : Tout d'abord ,  il  faut savoir ou l'envoyer si il  s'agit d'un sortie (OUT) et  ou  l'attendre  si  c'est  une  entrée (IN) . La  source ou la destination d'une  E/S  se  nomme  un  PORT  . Ce dernier permet  d'acheminer ou prélever  une  information  en  un  point  précis d'un circuit  déterminé . C'est la valeur  16  bits  précédant  OUT  ou  IN qui opère cette  sélection . Elle est contenue  dans  le  registre  BC  . En conséquence , les  instructions Z80 du type OTIR qui  modifient le registre B sont difficilement  utilisables . La transmission  d'un  octet  par  OUT  ressemble à l'opération  consistant à ouvrir ou fermer  un  maximum  de  8  interrupteurs . Un bit mis  correspond à un contact fermé , un bit  à  0  et le courant ne passe plus (En  réalité il  est  dérivé  vers  la  masse)  .  Une  simple  conversion  (PRINT  BIN$(valeur,8) vous permet de visualiser  la  valeur  d'une E/S de façon plus  claire (Voir DETBANK dans la partie réponses) .

Chapitre 1.3 : Les  ports E/S du FDC

On dispose de 3 possibilités selon la nature du port :
1 - On peut envoyer une donnée sur le port : C'est une sortie .
2 - On peur recevoir une donnée sur le port : C'est une entrée .
3 - On peut faire les 2 .

Adresse du port ! Fonction sortie ! Fonction entrée ! Rôle
&FA7E           ;!       OUI       !        NON      ! Mise en route moteur
&FB7E           ;!       NON       !        OUI      ! Information état FDC
&FB7F           ;!       OUI       !        OUI      ! Transmission données

A / Le port moteur &FA7E : Ici rien de plus simple . Envoyer  une  valeur non nulle met le moteur en route , envoyer une valeur nulle  le  stoppe  .  Vous  pouvez même le faire à partir du BASIC : OUT &FA7E,1 , le moteur  se met en route . OUT &FA7E,0 : Il  s'arrête . Mais si on veut lire ou écrire des  données sur le disque , ce n'est plus  aussi simple . Il faudra attendre que  le  moteur  tourne à plein régime ! La  vitesse de transmission des données de la tête de lecture au FDC est en effet  constante et suppose  un  temps  de  révolution  déterminé  du  disque  . Une  rotation trop rapide , et le début  de l'information se trouve lu une seconde  fois . Un peu trop lent et une partie des données est omise .

B / Le port &FB7E également nommé registre d'état : Ce registre ne peut être que lu  .  Il vous permettra de connaître à tout moment le bilan de santé du FDC .

C / Le port &FB7F ou registre de données : On peut lire ou  écrire  sur  ce  registre  .  En  écriture  ,  il sert à  transmettre les ordres au  FDC  ou  à  envoyer  les  données  à écrire sur la  disquette . Employé en lecture , il lit  la zone spécifiée de la disquette ou  le résultat d'une opération .

Les commandes du FDC
Chapitre 2.1 : Généralités

Il est temps de voir  ce  qu'il  faut  transmettre  au  FDC pour en tirer quelque chose . Chaque commande est constituée  d'un octet soit 8 Bits . Elle doit souvent être suivie d'autres octets  donnés  en paramètres . Dans ce qui  suit certains bits seront annotés : Toujours à 1 ou toujours à 0 pour AMSDOS. Entendez par la que  la  modification  de  ce  bit  n'est pas impossible mais totalement  hors  des  normes  AMSDOS   3,1/4   .  Dans  l'immédiat  ,  toute modification serait susceptible de produire  un crash spectaculaire faute des précautions idoines .
Il ne suffit pas d'envoyer un  ordre  au  FDC  pour obtenir un résultat . Plusieurs octets doivent souvnet être transmis en phase instruction . De plus la plupart des commandes travaillent en plusieurs phases . On distingue :

LA PHASE  INSTRUCTION  :  On  envoie  une  série  d'octets  au  FDC  pour l'informer de l'opération à accomplir ainsi que  du drive , piste , secteur , etc ... Concernés

LA PHASE EXECUTION : Indispensable pour lire ou écrire des données sur la disquette . Inutile pour les autres commandes  .

LA PHASE RESULTAT : Ou on lit  une  série d'octets transmis par le FDC et notament les registres d'état .  Indispensable  pour  toutes les opérations . Dans le chapitre suivant la signification et le rôle des registres d'état .

Chapitre 2.2 : Les 15 commandes du FDC

La phase  commande  s'adresse  systématiquement  au  port  &FB7F  en mode écriture :

LD BC,&FB7F
OUT (C),octet dans registre A

Etudions d'abord l'état et le role  des  bits spécifiques AMSDOS . (Les 8 bits d'un octet se comptent de 7 à 0 & de gauche a droite) .

BIT 7 : Utilisé pour sélectionner le système multi piste sur les lecteurs à 2 têtes : 1 si mode multipistes . 0 Sinon . Pour AMSDOS toujours 0 .

BIT 6 : 1 : le FDC  travaille  en  double  densité . 0 : simple densité .
Pour AMSDOS toujours 1 .

BIT 5 : Mis à 1 ,  les  secteurs  "effacés" seront ignorés , 0 ils seront lus . Toujours 0 sous AMSDOS . La notion de secteurs "effacés" sera expliquée plus loin .

Ceci nous donne la base suivante :

Bits   7 6 5 4 3 2 1 0
       0 1 0 X X X X X

Les bits marqués d'un croix recevront le code de l'opération à effectuer.
Bien que ces opérations soient au nombre de 15 , 5 bits sont nécéssaires pour certains codes . Ce sera le premier  octet  à  transmettre au FDC . Dans tous les exemples et tableau de commandes , il figurera sous le nom de "COMMANDE".
Presque toutes les commandes demandent  d'autre  informations , il faudra donc envoyer d'autres octets au FDC . Le second sera composé de :
BIT 2 : Utilisé par les lecteurs à  double  tête . Mis à 1 on lit l'autre face de la disquette . Toujours 0 Pour AMSDOS .
BITS 0 & 1 Sélection du numéro de drive  de 0 à 4 . 00=Drive A , 01=Drive B , 10=Drive C , 11=Drive D .

Ceci nous donne la base suivante :

Bits   7 6 5 4 3 2 1 0
       - - - - - 0 D D

Les bits marqués d'un trait  doivent  rester  à  0  . Ce second code sera nommé DRIVE dans tout ce  qui  suit  .  Viendront ensuite d'autres octets qui peuvent varier selon  l'instruction  employée  .  Les  commandes décrites ci-dessous sont classées par nombre  de  phases  nécéssaires  . La valeur donnée comme octet COMMANDE est donnée avec les bits 7-6-5 aux normes AMSDOS .

1 - PHASE COMMANDE SEULE :

Seule 1 instruction répond à cette condition . Elle transmet au FDC les données spécifiques au lecteur de disquette connecté et n'est utile que si le lecteur employé n'est  pas un 3,1/4 . Il y-à assez à faire avec les autres instructions . Restons en 3,1/4 pour l'instant .

2 - PHASE COMMANDE SUIVIE DE PHASE RESULTAT :

A - INTERROGER ETAT D'INTERRUPTION :  Cette  commande se contente de lire le registre d'état 0  afin  de  déterminer  les  causes d'une interruption de fonctionnement du FDC . La cause  de  l'interruption peut être la fin normale d'une phase d'instruction ou une erreur quelconque .

INSTRUCTION : 1 octet
1 COMMANDE  : &8 - %00001000
--------------------------------------
RESULTAT    : 2 octets
1 Registre d'état 0
2 Numéro de piste ou se trouve la tête

B - INTERROGER L'ETAT DES LECTEURS  :  C'est la seule commande qui permet de lire le registre ET3 .  ET3  vous  dira  (presque)  tout sur l'état de vos drives (Connecté ou non , disque  manquant  ,  protégé  écriture etc) . Si le lecteur est connecté mais éteint , le résultat se plante .

INSTRUCTION : 2 octets
1 COMMANDE  : &4 - %00000100
2 DRIVE     : De 0 à 3 pour A à D
---------------------------------
RESULTAT    : 1 octet
1 Registre d'état 3

NOTE : Dans ces deux commandes , les bits 7-6-5 ne sont pas employés . La lecture des registres d'état n'a  pas  besoin  de connaître la densité ni le mode d'écriture !

3 PHASE COMMANDE - EXECUTION - RESULTAT

Les deux commandes qui suivent sont  particulières  . Elles ont une phase instruction qui n'éxige pas une  transmission  de  données  et ne donnent pas de phase résultat . Il faudra  cependant lire l'état d'interruption (Commande &8) pour 2 raisons : 1 -  Vérifier  que  la  tête se trouve bien sur la piste demandée car ce n'est pas sur ! 2  -  Tant  que  ET0  n'a pas été lu , le FDC refuse d'écrire ou de lire sur la disquette ! Quant on vous dit que la bêbête est capricieuse ...

A - SE PLACER SUR LA PISTE NP  :  L'AMSDOS  n'est plus la pour le faire à votre place . Vous devez donc  dire  au  FDC  où  mettre la tête . Soyez très prudent . Un numéro de piste  supérieur  à  41  risque de provoquer une nette vibration du drive indiquant que la tête de lecture veut quitter le boitier . Un conseil : Si ceci se  produit  jetez  vous sur l'interrupteur du CPC avant qu'elle y parvienne ! L'expérience à prouvé  qu'un drive peu survivre un bref instant à ce genre d'avanie mais sans plus ...

INSTRUCTION : 3 octets
1 COMMANDE  : &F - %00001111
2 DRIVE     : De 0 à 3 pour A à D
3 Numéro de piste voulu
---------------------------------
EXECUTION   : RIEN  Essaye de positionner la tête

B - RECALIBRER SUR LA  PISTE  0  :  Si l'instruction précédente refuse de donner le résultat voulu après plusieurs tentatives  , il est possible que la tête patauge entre 2 pistes .  Utilisez  alors RECALIBRER et recommencez . Si cela ne fonctionne toujours pas , jetez  un regard haineux sur votre drive et signifiez lui son congé !

INSTRUCTION : 2 octets
1 COMMANDE  : &7 - %00000111
2 DRIVE     : De 0 à 3 pour A à D
---------------------------------
EXECUTION   : RIEN Va en piste 0

NOTE : Ces deux instructions n'ont  pas  non  plus besoin de connaître la densité ou le mode d'écriture . Elles vont en piste N et c'est tout !

C - FORMATER UNE PISTE :  Cette  instruction permet de formater une piste en secteurs dont la taille (fonction  du  nombre)  peut  varier de 128 à 4096 octets . Positionner réalablement la tête sur la piste à formater .

INSTRUCTION : 6 octets
1 COMMANDE             ;: &4D - %01001101
2 DRIVE               ; : De 0 à 3 pour A à D
3 Taille secteur       : De 0 à 5 . 2 pour AMSDOS
4 Nombre secteurs      : De 1 à 32 . 9 pour AMSDOS
5 Gap de formatage     : &52 pour AMSDOS
6 Octet de remplissage : &E5 pour AMSDOS
--------------------------------------------------------
EXECUTION : 4 octets * par nombre de secteurs à formater
--------------------------------------------------------
RESULTAT : 7 octets
1 Registre état 0
2 Registre etat 1
3 Registre etat 2
4 Numéro de piste
5 Adresse de tête (0 pour AMSDOS)
6 Numéro du secteur
7 Taille du secteur

Ceci mérite quelques explications ! Ecartons  pour l'instant la notion de taille secteur et de gap et voyons le reste . En phase instruction , après la commande et le numéro de drive (Dont le  bit  2 à 0 pour AMSDOS indique aussi le numéro de face) on indique au FDC , les paramètres du secteur .
Les 4 octets transmis en  phase  exécution  sont  ce  que l'on nomme l'ID (identification secteur) . Chaque secteur  doit  être  précédé  de son ID qui contient :

1 - Le numéro de piste
2 - Le numéro de tête
3 - Le numéro de secteur (De &C1 à &C9 pour DATA ou  &41 à &49 pour CPM)
4 - La taille du secteur

Or , 2 de ces données (Numéro de  tête et taille ont déja été transmises)
D'autre part , avant de formater  une  piste  , il convient de positionner la tête à l'emplacement voulu ! 3 des informations ID font donc double emploi .
En réalité , le formatage se  fait  selon  les paramètres fournis dans la phase  instruction  .  Les  valeurs  fournies  dans  l'ID  n'ont  qu'un  rôle d'information destiné  aux  opérations  de  lecture  et  écriture  .  On peut parfaitement placer la tête en piste 0  ,  formater 9 secteurs de taille 2 et écrire dans l'ID : Piste 20 et  taille  des  secteurs  1  . Dans ce cas , les valeurs rendues dans la phase résultat auront peu de signification et il sera fort difficile voire impossible de lire ou écrire sur cette piste ...

D - LIRE LES ID D'UNE PISTE : Positionner la tête sur la piste à tester .

INSTRUCTION : 2 octets
1 COMMANDE  : &4A - %01001010
1 DRIVE     : De 0 à 3 pour A à D
------------------------------------------------
EXECUTION   : Variable! Lit le 1er ID disponible
------------------------------------------------
RESULTAT : 7 octets
1 Registre état 0
2 Registre etat 1
3 Registre etat 2
4 Numéro de piste
5 Adresse de tête (0 pour AMSDOS)
6 Numéro du secteur
7 Taille du secteur

Comme on sait d'office sur quelle  piste  on se trouve , une modification de numéro de piste dans l'ID  sera  instantanément détectée . Par contre pour une éventuelle modification de taille de  secteur , il conviendra de vérifier par une boucle de lecture de  secteur  testant toutes les tailles possibles . L'exécution présente quelques particularités dont on reparlera .

E - LIRE UN SECTEUR : Placer la  tête de lecture sur la piste concernée .

Si les IDs ont été bricolés , de nombreux problèmes peuvent se poser .

INSTRUCTION : 9 octets
1 COMMANDE  : &46 - %01000101
2 DRIVE     : De 0 à 3 pour A à D
3 Numéro de piste (Selon ID)
4 Adresse de tête (Selon ID)
5 Numéro du 1er secteur (Selon ID)
6 Taille du secteur (Selon ID)
7 Numéro du dernier secteur à lire
8 GAP d'écriture (Ne pas confondre avec GAP format)
9 Longueur secteur : En principe toujours &FF
-----------------------------------------------
EXECUTION : Lire autant d'octets que nécéssaire
-----------------------------------------------
RESULTAT  : 7 octets! Registre état 0
1 Registre état 1
2 Registre etat 2
3 Numéro de piste
4 Adresse de tête
5 Numéro du secteur
6 Taille du secteur

Les commandes qui suivent ne varient  que  par  le code de commande et la nature de la phase exécution . Tous les autres octets de la phase instruction et l'ensemble de la phase résultat sont identiques à l'instruction ci dessus.

F - LIRE UNE PISTE : COMMANDE &42 - %01000010

EXECUTION : Lire les octets envoyés par le FDC . Cette instruction lit la totalité des octets de données du début à la fin de la piste .

G - ECRIRE UN SECTEUR : COMMANDE &45 - %01000101

PHASE EXECUTION : Transmettre les octets à écrire au FDC

H - ECRIRE UN SECTEUR EFFACE : COMMANDE &49 - %01001001

Comme pour écrire les données normales .  Une marque (Data Adress Mark) , interdit la lecture de ces secteurs par la commande &46

I - LIRE UN SECTEUR EFFACE : COMMANDE &4C - %01001100

Puisqu'on l'a écrit il faut bien le relire ...

J - TESTER EGALITE -    COMMANDE : &51 - %01010001

K - TESTER SI PLUS PETIT OU EGAL : &59 - %01011001

L - TESTER SI PLUS GRAND OU EGAL : &5D - %01011101

Ces  3  commandes  ne  nous  concernent  pas  dans  l'immédiat  la  phase d'exécution effectue  une  comparaison  entre  les  données  écrites  sur  la disquette et celles résidant en RAM .

FDC THEORIE 2éme PARTIE
Chapitre 3.1 : Signification des registres d'état

NOTE : Lisez essentiellement les  en-tête  de chapitre . La signification des bits de registres d'état  ne  prendra  tout  son  sens qu'au moment de la pratique . Dans l'immédiat une étude prolongée serait fort indigeste . Chaque exemple pratique vous dira quels bits  de  quel  registre sont à considérer . Vous pourrez alors revenir sur ces  points  spécifiques . Le dernier chapitre doit par contre être lu avec la plus grande attention .

Il y-a 5 registres d'état . Chacun d'eux se compose d'un octet

LE REGISTRE D'ETAT PRINCIPAL

Il se lit par une instruction IN  sur  le  port &FB7E : 'LD BC,#FB7E - IN  A,(C)' . C'est le seul registre qui  peut  (et  doit !) être lu à tout moment  d'une phase quelconque . Il informe  notament  de  l'opération en cours et de  l'aptitude du FDC à recevoir ou non une commande .

BIT 7 : Si ce BIT est à  1  ,  le  FDC est disponible sinon il traite une  instruction quelconque . 1 = La ligne est libre , 0 = La ligne est occupée .

BIT 6 : Si le bit précédent indique  une  disponibilité du FDC , le BIT 6  indique la direction dans laquelle doit aller  l'octet  de donnée . BIT = 1 =
 La donnée va du FDC vers le CPC (lecture  ou  résultat) . BIT = 0 = La donnée  va du CPC vers le FDC (Commande ou écriture) .

BIT 5 : En lecture ,  il  permet  de  différencier  les octets lus sur la disquette et les octets transmis par la  phase  résultat . Ce BIT est mis dès le début de la phase exécution et enlevé en  fin d'exécution . Donc : 1 = Les  octets lus sont ceux du disque . 0 = Les octets lus sont ceux du résultat .

BIT 4 : Il est mis à la réception  du  1er octet de commande et reste à 1 tant que  le  FDC  est  en  train  d'accomplir  une  opération  de lecture ou écriture . Il n'est remis à 0 qu'après la transmission du dernier octet de la  phase résultat . En bref : BIT = 1 = Je bosse allez vous faire voir ! BIT = 0 = Je suis à votre disposition maître ...

BIT 3 au BIT 0 : Ces 4  bits correspondent à 4 lecteurs possibles . Sitôt qu'une instruction de  positionnement  sur  une  piste  est  lancée  , le bit correspondant est mis . Aucune  instruction  de  lecture  ou écriture ne peut  être envoyée tant que l'un d'eux est à 1 . Par contre , une autre instruction de recherche de piste peut être lancée sur  un  autre drive . Un autre de ces bits sera alors mis à 1 .  Le  seul  moyen  de  les  remettre à 0 est de lire l'état d'interruption du FDC ,  ceci  explique  le petit problème évoqué dans les instructions 'Positionner piste' .

2 - LE REGISTRE D'ETAT 0

On le trouve en  1er  octet  de  la  phase  résultat  .  On peut aussi le consulter isolément par l'instruction 'Lire état d'interruption' .

BIT 7 & 6 : Ces deux bits fonctionnent conjointement et peuvent fournir 4 informations :

* 7=0 6=0 : L'opération en cours à réussi .

* 7=0 6=1 : Ou l'exécution à échoué  ou une opération de lecture - écriture vient de se terminer . Ambigu et peu utilisable ...

* 7=1 6=0 :  Instruction  illégale  !  Ne  nourrissez  pas  votre  FDC avec  n'importe quoi !  Ce  bit  est  aussi  mis  si :
A - On essaye de lire un  état  d'interruption alors que celle-ci n'a pas  eu lieu
B - Une instruction est  envoyée  vers  un drive branché mais éteint .
Dans ces 2 cas tous les autres bits seront à 0 . ET0 = &80 .

* 7=1 6=1 : Il faut enlever la  disquette  ou éteindre le drive pendant une opération pour obtenir cette combinaison . Etes vous pervers à ce point

BIT 5 : Se met à 1 dès la fin d'une instruction .

BIT 4 : Mis à  un  si  l'électronique  du  lecteur  de disquette en cours signale une erreur .

BIT 3 : BIT = 1 Si le  lecteur de disquette est déconnecté , la disquette absente ou que vous vouliez faire croire  au  FDC  que votre DD1 a 2 têtes de lecture .

BIT 2 : Numéro de la  tête  sélectionnée  lors  de la phase instruction . Restera toujours à 0 sauf si vous voulez plaisanter ...

BIT 1-0 : Combinaison de 0 à 3 qui vous indique quel drive était actif au moment de l'interruption .
 

3 - LE REGISTRE D'ETAT 1

C'est le 2éme octet du résultat . Il ne peut être lu séparément .

BIT 7 : Mis à 1 sitôt la fin de la piste rencontrée .

BIT 6 : Inutilisé , n'est même pas décoratif .

BIT 5 : DATA ERROR  .  Lors  d'une  opération  d'écriture , une valeur de contrôle est sauvegardée avec  chaque  secteur  (CRC)  .  En  lecture , cette valeur est reconstituée . Si la  valeur  reconstituée est différente de celle lue , il y-à un problème et ce bit  est  mis  à  1 . De même si les 4 valeurs d'ID transmises lors d'une commande de  lecture ne correspondent pas à celles présentes sur la disquette .

BIT 4 : BIT mis si le  temps  de transmission des données est incorrect .
Respectez la valeur  standard  de  26  Ms  et  n'oubliez  pas d'interdire les interruptions et vous n'aurez pas à vous en soucier .

BIT 3 : Comme BIT 6

BIT 2 : Est mis à 1 si  une opération quelconque de lecture - écriture ne trouve pas le secteur spécifié .

BIT 1 : Mis si on veut écrire sur une disquette protégée .

BIT 0 : Se met à 1 si  un  ID  secteur  ne peut être trouvé ou si la Data Adress Mark est absente .

LE REGISTRE D'ETAT 2

C'est le 3ème octet du résultat il complète les informations fournies par ET2 et ne peut être lu séparément .

BIT 7 : Inutilisé

BIT 6 : Mis à  1  si  un  secteur  'effacé'  est rencontré au cours d'une opération de lecture écriture .

BIT 5 : Est mis lors d'une erreur  lecture écriture comme le bit 5 de ET1 mais ne concerne que la zone de données .

BIT 4 : Mis à 1 si le  FDC  constate  une différence entre la piste ou se trouve la tête et la piste mentionnée dans l'ID secteur .

BIT 3 : Mis à 1 si une des 3 instruction de comparaison à réussi .

BIT 2 : Mis à 1 si une des 3 instruction de comparaison à échoué .

BIT 1 : Comme BIT 4 .

BIT 0 : Mis si la Data Adress Mark ne peut être trouvée .

LE REGISTRE D'ETAT 3

Ce registre ne peut être lu que par l'instruction 'Tester état des drives'

BIT 7 : N'est pris en compte que pour certains drives , à ignorer .

BIT 6 : Si ce bit est mis , la disquette est protégée en écriture .

BIT 5 : Si ce bit reste à 0 , il n'y-a pas de disquette dans le lecteur .

BIT 4 : Il est à 1 si la tête est positionnée en piste 0 .

BIT 3 : Si vous avez un lecteur à double tête ce bit sera à 0 sinon à 1.

BIT 2 : Contient le numéro de tête sélectionné si 2 têtes .

BIT 1 - 0 : Unité de drive actuellement prise en compte par le FDC .

NOTIONS GENERALES DE PROGRAMMATION

Une lecture attentive de ce qui  suit  vous évitera bien des erreurs lors  de vos tentatives personnelles . Un  ordre  impératif est à respecter lors de  la création de vos programmes .

1 - Avant toute commande :
A - Initialiser les paramètres nécéssaires à la commande envisagée .

B - Mettre le moteur en route !

C - Attendre qu'il tourne à plein régime .

D - Lire le registre d'état 0 :
Lors d'un accès disque  ,  l'AMSDOS  lit  ce  registre AVANT exécution de l'instruction et revient au BASIC sans l'avoir relu ! Comme la lecture de ET0 est indispensable  avant  de  pouvoir  accomplir  une  opération  de  lecture  écriture , le non respect de cette règle pourrait bloquer votre programme dès le commencement !

E - Placer la tête sur la piste voulue et vérifier qu'elle s'y trouve

F - Envoyer l'instruction .

G - Lire ou écrire les octets de données si l'instruction l'exige .

H - Lire la phase résultat .

I - Réagir en fonction du résultat (Là tout est possible) .

J - Stopper le moteur .

L'ordre des instructions de D à  H  est  IMPERATIF  ! Pour le reste , on peut se permettre quelques fantaisies comme  de  mettre le moteur en route et le laisser tourner en permanence ...

     2  -  Le  FDC  ne  peut  travailler  sous  interruption  .  Toute  séries d'instructions E/S adressées au  FDC  doit  commencer  par  DI (Interdire les interruptions) et finir par EI (Rétablir les interruptions) .

     3 - Les délais de  temporisation  doivent  être  respectés . Il n'est pas interdit de les  modifier  mais  dans  la  plupart  des  cas  cela posera des problèmes de fonctionnement .

     4 - Certaines routines de la  ROM  AMSDOS pourraient être utilisées (Lire ET0 , chercher piste , recalibrate  ,  Etc...)  .  Dans le cas présent , cela nuirait à la pédagogie du  sujet  .  Autrement  vous pouvez les utiliser pour économiser de la RAM mais  attention  !  Certaines d'entre elles transmettent des données dans la zone paramètres de drive utilisée par le BASIC . Si cette zone se trouve modifiée  avec  des  valeurs  hors  AMSDOS vous pourriez avoir quelque surprises de retour au BASIC .

     5 - Si votre drive émet un son anormal , ETEIGNEZ IMMEDIATEMENT LE CPC !

SOS Programmeurs n°1

★ ANNÉE: ???
★ AUTEUR: MICHEL MAIGROT

★ AMSTRAD CPC ★ DOWNLOAD ★

Dump disquette:
» SOS  Programmeurs  1DATE: 2013-08-30
DL: 519 fois
TYPE: ZIP
SIZE: 252Ko
NOTE:
.HFE: OUI

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):
» Coding » FDC - 26 - Sub Routines Pour le FDC (SOS Programmeurs)
» Coding » Fdc - 03 - Commandes du Fdc (SOS Programmeurs)
» Coding » Fdc - 30 - Fdc Exemple de Bidouilles (SOS Programmeurs)
» Coding » Fdc - 21 - Programme de Copie (SOS Programmeurs)
» Coding » Fdc - 22 - Analyse de la Piste (SOS Programmeurs)
» Coding » Fdc - 14 - Creation d'un Piste a Partir du Buffer (SOS Programmeurs)

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.7-desktop/cache
Page créée en 090 millisecondes et consultée 1906 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.