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 deplacement tete 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: 1006
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 - 13 - Edition du Buffer (SOS Programmeurs)
» Coding » Fdc - 06 - Entree Programme (SOS Programmeurs)
» Coding » Fdc - 25 - Formatage et Ecriture Piste (SOS Programmeurs)
» Coding » Fdc - 07 - Routines Annexe (SOS Programmeurs)
» Coding » Fdc - 08 - Test Interrupt (SOS Programmeurs)
» Coding » Fdc - 22 - Analyse de la Piste (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.7-desktop/c
Page créée en 818 millisecondes et consultée 2000 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.