CODING ★ Commandes du FDC ★

Fdc - 03 - Commandes du Fdc (SOS Programmeurs)
Seules les instructions employées  dans  l'état  actuel du programme sont décrites ici . Ces sections resteront  invariables  . C'est la manière de les employer (décrite dans les chapitres suivant) , qui fera toute la différence. C'est également dans ces chapitres que tous les détails seront donnés .

Routines INSTRU : Outre la commande  proprement dite la phase instruction attend d'autres paramètres . On regroupe le tout dans les routines INSTRU .

;
;  - Envoyer l'instrucion suivie du numéro de drive et de la piste -
 ;
 INSTRU  CALL ENVOFDC ;A doit contenir l'instruction
  LD DE,(DRSELEC) ;E=Drive - D=Piste
  LD A,E    ;Drive
  CALL ENVOFDC
  LD A,D    ;Piste
 HOP  JP ENVOFDC
 ;
;- Idem avec seulement le drive -
 ;
 INSTRU1 CALL ENVOFDC
  LD A,(DRSELEC)
  JR HOP

TEST DES DRIVE

Apparament d'une simplicité enfantine à  opérer  , un test convenable des drives fait partie des opérations  les  plus  complexes  à mettre en œuvre ! Etudiez très attentivement le  chapitre  TEST  COMPLET  DES  DRIVES , il vous apprendra énormément .

;           ;---------------------
;           ;- TESTER ETAT DRIVE -
;           ;---------------------
 TSTDRIV CALL RAZINTE ;VITAL !!! Voir un peu plus bas .
  LD A,4
  CALL INSTRU1 ;Expedier instruction + drive
  CALL RESULT  ;Resultat
  JP INCPTET3  ;A ranger dans la case du drive concerne

LIRE LES INTERRUPTIONS

Cette routine devra être  employée  systématiquement  pour lire ET3 après une instruction TSTDRIVE ou après  une  instruction de positionnement sur une piste pour ET0 et piste  .  Elle  est  systématiquement  appelée en sortie de TEMPAMS .

;       ; ----------------------------
;       ; - LIRE CAUSE INTERRUPTIONS -
;       ; ----------------------------
 LITSTAT LD A,#08    ;Code sense interrupt statuts
  CALL ENVOFDC ;Envoyer l'ordre
  JP RESULT   ;Aller lire le resultat

REMISE A 0 DE L'ETAT D'INTERRUPTION

Le FDC peut mémoriser plusieurs  causes  d'interruption  à  la suite . Ce  fait est très génant pour  la  bonne  interprétation  de certains résultats . Cette routine provoque une lecture  des  causes d'interruption et boucle tant  que le message FDC INVALID COMMAND  (&80)  ,  n'est  pas renvoyé par la phase  résultat  .  Quand  &80  est  renvoyé  ,  il  n'y  à  plus  rien  à  lire  .

;         ; -------------------------
;         ; - RAZ ETAT INTERRUPTION -
;         ; -------------------------
 RAZINTE CALL LITSTAT  ;Interroger l'etat d'interruption tant que le
  CP #80     ;message commande invalide n'est pas renvoye
  JR NZ,RAZINTE ;par ET0
  RET

 DEPLACER LA TETE

La tête de lecture  met  un  certain  temps  à  se  déplacer  . Le signal  d'interruption spécifique n'est pas envoyé tant  que ce déplacement n'est pas  terminé  !  Il  faut  donc  attendre  faute  de  quoi  on  lirait  une  cause  d'interruption sans rapport avec l'opération effectuée !

;          ;---------------------------
;          ;- PLACER TETE SUR PISTE 0 -
;          ;---------------------------
 CALIBRE LD A,7   ;Commande
  CALL INSTRU1 ;Instruction + drive
 TEMP1   LD A,(WAITPIS) ;Attente assez longue (sinon piste jamais trouvee du
  JP TEMPAMS  ;1er coup et execution ralentie) et lire status .
;         ; -----------------------
;         ; - PLACER TETE PISTE N -
;         ; -----------------------
GOPISTN LD A,#F     ;Instruction chercher piste
  CALL INSTRU ;Envoyer instruction - drive - piste
  JR TEMP1    ;Comme pour CALIBRE

DESCRIPTION DE LA ZONE DES VARIABLES

Notez les noms et la  signification  des  variables  avant de passer à la  suite !
Cette section est destinée à évoluer . Elle comporte déja quelques octets  réservés à un usage ultérieur .  Le  commentaire des octets non utilisés dans  l'état actuel du  programme  est  marqué  :  "***"  .  La  zone des variables  commencera toujours  en  40000  quelque  soit  l'origine  et  la  longueur du  programme . Vous pouvez donc  lire  ou  modifier  des paramètres avec PEEK et  POKE .

CALE DEFS 40000-CALE  ;Truc pour tenir le debut des variables en 40000
          ;quelque soit l'adresse d'assemblage du programme
 ;
;--- Variables et flags divers ---
 ;
 FLAGMOT DEFB 0  ;1 si moteur en route 0 si arrete     ; 40000
ADBUFF DEFW 0  ;*** Adresse de debut du buffer donnees   40001
 NBALIRE DEFW 0  ;*** Nombre d'octets a lire pour execution   40003
 ;
;- Zone stockage octets resultat -
 ;
 ETOCLUS DEFB 0  ;Nombre d'octets transmis par le resultat 40004
 ET0  DEFB 0  ;Les 3 registres d'etat       ; 40005
 ET1  DEFB 0                       ; 40006
 ET2  DEFB 0  ;***                   ; 40007
 ETPIST DEFB 0  ;*** Piste trouvee           ;40008
 ETHEAD DEFB 0  ;*** Tete trouvee           ; 40009
 ETNUMSEC DEFB 0 ;*** Numero de secteur trouve      ; 40010
 ETLENSEC DEFB 0 ;*** Longueur secteur trouve      ; 40011
 ;
;- Parametres generaux -
 ;
 DRSELEC DEFB 0 ;Drive selectionne suivi de piste en cours.Ces 2 octets sont
 PISTSEL DEFB 0 ;charges dans DE . Ne rien inserer entre les 2 ! 40012 - 13
 DERPIST DEFB 0 ;*** Piste de fin pour operations multipistes .
 PISTMAX DEFB 42 ;Piste a ne pas depasser + 1 pour test sur CARRY 40014 - 15
 WAITPIS DEFB 41 ;Temporisation pour déplacement tête de lecture  40016
 NBTENT DEFB 4 ;Nombre repetitions en cas d'echec d'une instruction 40017
 TEMPMOT DEFB 55 ;Temporisation moteur          ;40018
 ;
;- Parametres des drives -
 ;
 ETDRA   DEFB 0  ;ET3 Pour drive A et B       ; 40019
 ETDRB   DEFB 0  ;Ne rien inserer entre ces 2 DEFB     ; 40020
 ;
 PISTDRA DEFB 0  ;Piste en cours pour drive A et B     ; 40021
 PISTDRB DEFB 0  ;Ne rien inserer entre ces 2 DEFB     ; 40022
 ;
;--------------------------
;- TEXTES DE PRESENTATION -
;--------------------------
 TUS  DEFB 24," SOS PROGRAMMEURS - Etude du FDC - (C) M.MAIGROT Nov 88 "
  DEFB 24,26,0,79,1,24+#80
 TEFFLB1 DEFB 31,1,23,18+#80
 ;
;- Textes du menu principal -
 ;
 TMENU   DEFB 31,1,5," [A] Tester etat drive ",10,13
  DEFB " [B] Bascule drive A/B ",10,13
  DEFB " [C] Convers.numerique ",10,13
  DEFB " [D] Aller  en piste 0 ",10,13
  DEFB " [E] Aller  en piste ? ",10,13
  DEFB " [Q] Quitter programme ",10,13+#80

SOS Programmeurs n°1

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

Page précédente : Fdc - 02 - Transmission Fdc
★ AMSTRAD CPC ★ DOWNLOAD ★

Dump disquette:
» SOS  Programmeurs  1    FRENCHDATE: 2011-05-26
DL: 1235
TYPE: ZIP
SiZE: 95Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Coding » Fdc - 10 - Affichages Causes d'Interruptions Secondaires du Fdc (SOS Programmeurs)
» Coding » FDC - 26 - Sub Routines Pour le FDC (SOS Programmeurs)
» Coding » Fdc - 08 - Test Interrupt (SOS Programmeurs)
» Coding » FDC - 23 - Etude de la Piste (SOS Programmeurs)
» Coding » Fdc - 22 - Analyse de la Piste (SOS Programmeurs)
» Coding » Fdc - 11 - la Routine de Lecture Tous Secteurs (SOS Programmeurs)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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.732-desktop/c
Page créée en 257 millisecondes et consultée 2609 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.