Enfin le siècle, l'année, le mois, la semaine, le jour, l'heure et la seconde promise et tant attendue. Après le formatage direct, voici la lecture directe. Fini les appels au système à la mords-moi le noeud. Il est temps de faire table rase et de programmer des accès disques enfin dignes du FDC. C'est ce que nous nous proposons de faire avec la routine de ce mois. Voici sans plus attendre quelques instructions d'utilisation. Vous vous rappelez la routine de formatage passée dans les pages du numéro 36 ? Pour que notre programme de ce jour travaille de manière optimale, il vous faudra remplacer les datas 1, 4, 2, 5, 3 de la ligne adressée par SECT par les valeurs 1,2,3,4,5 (on a eu le tiercé dans le désordre, maintenant nous le passons dans l'ordre). Voici pourquoi. En bossant sur le FDC, nous nous sommes aperçus qu'il est capable de lire non pas un seul secteur d'affilée, mais plusieurs, cela malheureusement sur une seule piste. Moi : « Hé ! Roger, donne-moi. les 5 secteurs de type trois de la piste 12 (5 Ko) ! » Lui (FDC Master) : « Vla-t'y-pas que j'tenvoie tout ça d'un coup d'un seul ! » Moi: «???!!!#, Ga ! Zo Bon...» Je ne vous raconte même pas comment on gagne de la vitesse lorsque les secteurs sont en ligne. Avec le format du numéro 36 de Cent Pour Cent et des secteurs et pistes contigus, je pense pouvoir annoncer des chiffres de l'ordre de 10 Ko seconde moteur du lecteur lancé. Adios Amsdos, salut poilu. Maintenant que vous en avez l'eau à la bouche, voici quelques explications sur le fonctionnement de ce petit programme. Avant tout, formatez une disquette avec le programme des bidouilles du numéro 36 et ouvrez vos veux. DIX KILOS PAR SECONDE Ce n'est pas le poids que prend le lieutenant Lambyfox ou Poum par repas mais simplement le taux de transfert en lecture sur un lecteur de disquette de bonne qualité. C'est pas des blagues. Essayez et vous verrez. Voici comment se décompose le programme de lecture. - MOTOFF : coupe le moteur instantanément.
- MOTON : vérifie que le moteur du lecteur soit en marche et le lance avec tempo dans le cas contraire.
- SEEKTEST : permet la remise en route du contrôleur en cas d'erreur. S'il est resté coincé sur une instruction pétouiller, il repartira à l'aide de la zone contenue avant l'étiquette SEEK. Après celle-ci se trouve la routine permettant au contrôleur de se positionner sur la piste recherchée.
- LECTURE : est le module réel de lecture. Il faut lui donner quatre paramètres en entrée. HL doit contenir l'adresse de réception des données, A le numéro de piste recherchée, D le secteur de début de lecture et E le secteur de fin. Si ces deux derniers registres sont identiques, un seul secteur sera lu.
- COMMAND : sont les données de lecture utilisées par la routine.
- PUTFDC : écrit des octets au contrôleur.
- GETFDC : fait de même en lecture. Nous verrons effectivement comment fonctionne ce programme le mois prochain. En attendant la routine de lecture, lancez tout de même ce petft programme. Vous ne serez sûrement pas déçu.
TO THE END Bien entendu, ce programme ne gère pas de fichiers mais des zones. A vous de faire une petite table de gestion des données à charger, four chaque bloc, des indications sur le secteur et piste de début et de fin peuvent être stockées dans un secteur donné pour traitement ultérieur. A vous d'organiser vos disquettes. Nous verrons plus tard de quoi il retourne, lorsque toutes les routines vous seront disponibles. J'ai du pain sur la planche. Après tout cela, nous verrons les algorithmes de compression. Reposez-vous bien car cela sera dur. Bonne nuit. ; ------------------------------------------------------------ ; ORG #9000 ; ; LECTURE SECTEUR : ; ; HL=ADRESSE MÉMOIRE ; ; A=PISTE ; ; D=SECTEUR DEBUT ; ; E=SECTEUR FIN DEB: CALL MOTON LD A,10 LD DE,#105 LD HL,#C000 CALL LECTURE LD A,20 LD DE,#105 LD HL,(MEM1) CALL LECTURE LD A,30 LD DE,#105 LD HL,(MEM1) CALL LECTURE LD A,40 LD DE,#101 LD HL,(MEM1) CALL LECTURE CALL MOTOFF RET ; MOTOFF: LD BC,#FA7E XOR A LD (MOTOR),A OUT (C),A RET MOTON: LD A,(MOTOR) OR A JR NZ,READY LD BC,#FA7E LD A,1 LD (MOTOR),A OUT (C),A ; LD A,#C0 B0UC1: PUSH AF LD A,#FF B0UC2: PUSH AF PUSH AF POP AF POP AF DEC A JR NZ,B0UC2 POP AF DEC A JR NZ,B0UC1 READY: RET ; SEEKTEST: DI LD BC,#FB7E LITFDC: IN A,(c) AND #10 JR Z,SEEK LITFDC2: IN A,(C) RLA JR NC,LITFDC2 RLA JR C,ECRIS LIS: INC C IN A,(C) DEC C JR LITFDC ECRIS: XOR #FF INC C OUT (C),A DEC C JR LITFDC SEEK: LD A,#0F CALL PUTFDC XOR A CALL PUTFDC LD A,(PISTE) CALL PUTFDC SEEKOK: LD A,8 CALL PUTFDC CALL GETFDC LD D,A CALL GETFDC LD A,D AND #20 JR Z,SEEKOK RET ; LECTURE LD (PISTE),A LD A,D LD (SECTEUR),A LD A,E LD (END1),A CALL SEEKTEST ; START: PUSH HL LD HL,COMMAND LD D,9 READ1: LD A,(HL) INC HL CALL PUTFDC DEC D JR NZ,READ1 POP HL JR GETDATA PASRES INC C IN A,(C) LD (HL),A INC HL DEC C GETDATA: IN A,(C) JP P,GETDATA AND #20 JR NZ,PASRES RESULT: LD D,7 LD (MEM1),HL LD HL,RES1 LISRES: CALL GETFDC LD (HL),A INC HL DEC D JR NZ,LISRES ; EI RET ; COMMAND DB #66 LECTEUR DB 0 PISTE DB 0 TETE DB 0 SECTEUR DB 0 TYPE DB 3 END1 DB 0 GAP3 DB #20 TAILLE DB 0 ; MEM1 DW 0 MOTOR DB 0 RES1 DS 7 ; PUTFDC: PUSH AF PUTFDC2 IN A,(C) RLA JR NC,PUTFDC2 POP AF INC C OUT (C),A DEC C RET ; GETFDC IN A,(C) RLA JR NC,GETFDC INC C IN A,(C) DEC C RET ; Sidned le Barbare
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
CPCrulez[Content Management System] v8.7-desktop Page créée en 260 millisecondes et consultée 2218 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. |
|
|