POSITIONNER LA TETE Nous abordons maintenant les choses sérieuses . Si vous avez eu la curiosité de faire un "CAT" sur la face FDC , vous comprendrez pourquoi seules les instructions de recherche de piste sont traitées dans ce numéro ! Pour la même raison , les routines de présentation et d'affichage ne sont que peu ou pas du tout évoquées . Tous les sous programmes appelés par GOZERO ou GOPISTE figurent dans la section SOUS PROGRAMMES . 1 - Aller en piste 0 : GOZERO Cette routine effectue un CALIBRE . En sortie , elle affiche en bas d'écran la valeur binaire de ET0 ainsi que le numéro de piste (toujours 0) . En cas d'erreur , un message est affiché sur l'avant dernière ligne de l'écran . ; ; -------------------- ; ; - ALLER EN PISTE 0 - ; ; -------------------- GOZERO LD A,"0" ;"0" ASCII pour numéro de piste CALL PRTGO CALL CALIBRE ;Calibrer ; ;- Commun a GOZERO et GOPISTE - ; PRTRES1 PUSH AF ;Preserver l'eventuel flag d'erreur mis par RESULT CALL PRTBIN ;Lire et afficher resultat LD HL,TPSFIND CALL PRT LD A,(ET1) ;Ici ET1 contient la piste trouvee et non un registre CALL PRTHEX1 ;Afficher en HEXA CALL AFFPIST ;Modifier numéro de piste en face le texte etat drive POP AF ;Recuperer flag erreur JR NC,ERRPIST ;Si NC c'est rate ; INCPTPIS LD HL,PISTDRA ;Avance le pointeur pour parametres LD A,(ET1) ;et range la piste dans l'octet concerne JR INCPTR ;(PISTDRA ou PISTDRB) INCPTET3 LD HL,ETDRA ;La meme pour l'etat des drives INCPTR PUSH AF CALL QUELDRV POP AF LD (HL),A RET ; AFFPIST PUSH HL ;Affiche piste en cours en face drive concerne PUSH AF LD HL,#3001 ;X-Y Position texte CALL QUELDRV ;Incrementer HL revient a descendre d'une ligne CALL #BB75 ;LOCATE pour les intimes POP AF POP HL JP PRTHEX1 ;Afficher et fini ; QUELDRV LD A,(DRSELEC) ;Incremente HL si drive B selectionne OR A RET Z INC HL RET ; PRTGO LD HL,TGOZERO ;Afficher commande GOZERO ou GOPIST CALL PRT ;Seul le contenu de A differe en entree CALL #BB5A JP SPACE ; ERRPIST LD HL,TERRPIS JP PRTLOC2 ; TERRPIS DEFB 24," ERREUR : ",24," Pas trouve piste ",7,13+#80 TGOZERO DEFB " Aller en piste : ","&"+#80 TPSFIND DEFB " Sur piste : " ,"&"+#80ALLER VERS UNE PISTE DONNEE Tout d'abord , il faut indiquer un numéro de piste . Ensuite , il faut voir si ce dernier n'est pas susceptible de faire grimper le drive aux rideaus ! La valeur de PISTMAX ne pourra donc être dépassée . NBTENT représente le nombre d'essais à effectuer en cas d'échec de l'instruction . Il faut savoir qu'un échec dans l'opération CALIBRE ou GOPISTE ne peut avoir que 2 causes : 1 - Votre drive est très très fatigué 2 - Mauvaise temporisation WAITPIS avant lecture de la cause interruption (Voir chapitre commandes routine CALIBRE) En conséquence NBTENT n'est pas vraiment indispensable , seulement prudent . GOPISTN (Voir chapitre commandes) s'occupe de placer la tête selon les règles et de lire le résultat . Si c'est incorrect , on enlève une tentative au compteur et on recommence . Si le résultat est convenable , il est sage de vérifier que le numéro de piste indiqué par la lecture de l'état d'interuption corespond bien au numéro souhaité . Sinon on procède comme ci-dessus . Quand on est sur d'être au bon emplacement , on saute en PRTRES1 . PRTRES1 Affiche en binaire le contenu de ET0 et en HEXA le numéro de piste trouvé . Ce même numéro de piste est affiché en face du texte d'état du drive et rangé dans l'octet PISTDRA ou PISTDRB selon le cas . En cas d'echec de l'instruction , on affiche un message d'erreur . NOTES : En cas d'échec de l'une de ces 2 commandes , le numéro de piste renvoyé par ET1 est toujours 0 . La temporisation donnée en CALIBRE , correspond à un déplacement de 41 pistes . Il va de soit que si le déplacement envisagé est d'un intervalle inférieur , le retard peut être diminué d'autant . La solution parfaite serait : En entrée de GOZERO et GOPISTE : Calculer l'intervalle entre la piste en cours et la piste ou l'on veut aller , utiliser le résultat comme valeur de retard (WAITPIS) . ; ;--------------------------- ; ;- PLACER TETE SUR PISTE N - ; ;--------------------------- GOPISTE LD A,"N" ;Afficher les textes et demander numéro piste CALL PRTGO ;Afficher texte commande CALL #BB78 ;Memoriser position curseur PUSH HL ;et preserver NEWNUM LD HL,TQUELPS ;Input Piste ? CALL INPUPRT2 LD A,(PISTMAX) ;Tester si numéro donne > maxi LD B,A LD A,(VALEUR) CP B JR NC,NEWNUM ;Oui c'est rate CALL EFFLIN1 ;Non OK effacer ligne input LD (PISTSEL),A POP HL ;Recuperer position curseur DEC H ;Reculer de 2 DEC H CALL #BB75 LD A,(PISTSEL) CALL PRTHEX1 ;Remplacer "N" par numéro choisi ; LD A,(NBTENT) ;Section active proprement dite LD B,A ;Nombre d'essais dans B BCLPIST CALL GOPISTN JR C,SURPIST ;Si CARRY mis par result , operation reussie DEC B JR Z,FINPIS1 ;Si echec apres N tentatives , c'est fini CALL RAZINTE ;Sinon vidange des interruptions CALL CALIBRE ;Recalibrer JR BCLPIST ;Recommencer ; SURPIST PUSH AF LD A,(PISTSEL) ;Pas d'erreur du FDC PUSH BC ;Preserver compteur tentatives LD B,A ;Verifier que l'on est bien sur la piste voulue LD A,(ET1) ;en comparant le numéro donne avec celui donne CP B ;par la phase resultat POP BC JR Z,FINPIST ;Fini et reussi POP AF DEC B ;Si non B=B-1 et recommencer JR NZ,BCLPIST ;Fini mais erreur FINPIST POP AF FINPIS1 PUSH AF LD HL,TRETRY CALL PRT LD A,(NBTENT) ;Compter le nombre de tentatives effectuees DEC B ;SUB B CALL PRTHEX1 ;et l'afficher . POP AF JP PRTRES1 ; TQUELPS DEFB 18,"Numero de piste ?"," "+#80 TRETRY DEFB " Tentatives : ","&"+#80SOS Programmeurs n°1 ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 124 millisecondes et consultée 1689 foisL'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. |
|
|