La Place des Développeurs Lecture d'un fichier sur la BEER IDE en assembleur Quel vecteurs utiliser et quel registres ???
Reprise du message précédent
Les routines du disque coupent les interruptions et les réactives. On s'en rend compte facilement avec les lecteurs de disquettes lorsque le MSX joue une musique car les accès à la disquette sont lents.On s'en rend moins compte avec un disque très rapide car ça coupe les interruptions beaucoup moins longtemps. Les interruptions sont aussi coupées et réactivés lors des accès au VDP.
Il faut en tenir compte lorsqu'on veut contrôler les interruptions.
Le principal générateur d'interruption c'est le VDP. Il te faut savoir que pour générer une interruption il faut un signal électrique sut la pâte INT du Z80. D'où ma question comment veux-tu générer ton interruption.
Dans ton exemple on voit que tu vas lire une donnée pointé par DE. Mais on ne sait toujours pas qui est la soirée de l'interruption. Du fait qu'on utilise pas les interruption vectorisées. La routine en RST38 dois vérifier qui a fait la demande d'interruption.
Quoi qu'il en soit GDX pointe bien sur un aspect blocant pour ton projet.
Dans ton exemple on voit que tu vas lire une donnée pointé par DE. Mais on ne sait toujours pas qui est la soirée de l'interruption. Du fait qu'on utilise pas les interruption vectorisées. La routine en RST38 dois vérifier qui a fait la demande d'interruption.
Quoi qu'il en soit GDX pointe bien sur un aspect blocant pour ton projet.
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
Je me suis mal exprimé ![:(](/images/smileys/malheureux.gif)
En faite je voudrais créer une interruption du type timer.
Sur d'autres micros cela ce passe comme ca :
On utilise une interruption qui est déclenché automatiquement tous les xxxème de secondes!
Soit on défini le délai de déclenchement de l'interruption soit on utilise une interruption calé d"origine sur un certain délai !
Pour être plus claire :
Supposons que l'on veuille faire une horloge parlante qui doit décompter les secondes :
- ont déclare une interruption qui est déclenché toutes les 20milliemes de secondes
- à chaque itération on détermine si une seconde c'est écoulé sinon on sort de la routine
si oui on donne l'heure
![:(](/images/smileys/malheureux.gif)
En faite je voudrais créer une interruption du type timer.
Sur d'autres micros cela ce passe comme ca :
On utilise une interruption qui est déclenché automatiquement tous les xxxème de secondes!
Soit on défini le délai de déclenchement de l'interruption soit on utilise une interruption calé d"origine sur un certain délai !
Pour être plus claire :
Supposons que l'on veuille faire une horloge parlante qui doit décompter les secondes :
- ont déclare une interruption qui est déclenché toutes les 20milliemes de secondes
- à chaque itération on détermine si une seconde c'est écoulé sinon on sort de la routine
si oui on donne l'heure
![;)](/images/smileys/clindoeil.gif)
![Avatar](/images/avatars/97700190071d_green_tall_tiki_mug.jpg)
Oui mais je programme en Assembleur donc je recherche comment accéder a une interruption (Timer ou autre) ?
peut être il y a juste un vecteur à renseigner avec une adresse de saut, comme sur d'autres micros ?
Merci d'avance.
peut être il y a juste un vecteur à renseigner avec une adresse de saut, comme sur d'autres micros ?
Merci d'avance.
on en revient à ce que je disais:
Le VDP est d'origine le seul à générer des interruptions et il le fait à chaque VBL soit toutes les 20ms en 50Hz ou 18.33ms si en 60Hz.
Peut-être que les MSX avec MIDI ou RS232C gère aussi une intéruption lié au 8253 (CTC => timer pour l'horloge du baud rate generator de l'UART,SIO, ACIA (fonction du circuit série: z80 SIO, 82xx, 6851 etc...)
Le VDP est d'origine le seul à générer des interruptions et il le fait à chaque VBL soit toutes les 20ms en 50Hz ou 18.33ms si en 60Hz.
Peut-être que les MSX avec MIDI ou RS232C gère aussi une intéruption lié au 8253 (CTC => timer pour l'horloge du baud rate generator de l'UART,SIO, ACIA (fonction du circuit série: z80 SIO, 82xx, 6851 etc...)
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
6502man :
Donc la seule solution serait de me caler sur l'iNT du VDP en allant lire le registre VDP concerné ?
Ben en fait le BIOS du MSX lit déjà le registre du flag d'interruption, je ne sais pas si se flag s'efface après la lecture, je pense que oui. Tu pourras tenter de lire le flag dans un autre registre d'état qui signal la période de la VBL. A vérifier, peut-être que si tu exposes en MP ce que tu veux faire, je peux t'aider pour trouver une solution?
Si ton projet doit rester "secret"
![;)](/images/smileys/clindoeil.gif)
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
Il n'y a pas de secret, mais comme je ne connais pas le MSX j'explore plusieurs voie ![;)](/images/smileys/clindoeil.gif)
En faite j'ai essayé de faire un player streaming IDE pour FABF, ca fonctionne mais c'est très saccadé, la même musique en RAM (2Mo) est parfaite, donc j'essaie d'explorer une voix avec interruption pour bien cadencé l'envoi des données à un rythme régulier, parallèlement au chargement sur support IDE des données...
Voila si tu as une autre idée ?
![;)](/images/smileys/clindoeil.gif)
En faite j'ai essayé de faire un player streaming IDE pour FABF, ca fonctionne mais c'est très saccadé, la même musique en RAM (2Mo) est parfaite, donc j'essaie d'explorer une voix avec interruption pour bien cadencé l'envoi des données à un rythme régulier, parallèlement au chargement sur support IDE des données...
Voila si tu as une autre idée ?
Si c'est pour lire de l'audio vers une interface CoVox, je crois avoir expliqué une méthode, ou plutôt deux.
1/ tu limite à 16KHz (15.625KHz) en passant par des interruptions lignes. Problème: ton Z80 va passer sont temps en interruption pour balancer les octets sur le CoVox
2/ tu développes une carte fille avec un contrôleur dédié (un petit micro controleur type AVR, DsPIC, ou un petit CPLD/FPGA) dans lequel tu envois les octets à chaque VBL. J'avais estimé que environ 700/800 octet par VBL étaient nécessaires pour remplir un buffer de 16KO pendant que le composant lit les données dans un second buffer de 16KO.
Quoi qu'il en soit, dans composant pour soulager le Z80, je ne crois pas qu'il y ait grand intérêt pour faire un jeu ou un démo, et encore moins permetre une exploitation via le BASIC.
1/ tu limite à 16KHz (15.625KHz) en passant par des interruptions lignes. Problème: ton Z80 va passer sont temps en interruption pour balancer les octets sur le CoVox
2/ tu développes une carte fille avec un contrôleur dédié (un petit micro controleur type AVR, DsPIC, ou un petit CPLD/FPGA) dans lequel tu envois les octets à chaque VBL. J'avais estimé que environ 700/800 octet par VBL étaient nécessaires pour remplir un buffer de 16KO pendant que le composant lit les données dans un second buffer de 16KO.
Quoi qu'il en soit, dans composant pour soulager le Z80, je ne crois pas qu'il y ait grand intérêt pour faire un jeu ou un démo, et encore moins permetre une exploitation via le BASIC.
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
![Avatar](/images/avatars/97700190071d_green_tall_tiki_mug.jpg)
Le but n'a jamais été de faire un player COVOX pour les jeux/demos ou le basic.
Seulement rendre cette extension utilisable sans les désavantages de PLAYSMP (4MO et temps de chargement)
Seulement rendre cette extension utilisable sans les désavantages de PLAYSMP (4MO et temps de chargement)
![;)](/images/smileys/clindoeil.gif)
Fabf :
Le but n'a jamais été de faire un player COVOX pour les jeux/demos ou le basic.
Seulement rendre cette extension utilisable sans les désavantages de PLAYSMP (4MO et temps de chargement)![;)](/images/smileys/clindoeil.gif)
Seulement rendre cette extension utilisable sans les désavantages de PLAYSMP (4MO et temps de chargement)
![;)](/images/smileys/clindoeil.gif)
Merci, ça confirme ce que je disais, j'ai déjà proposé une solution
![:p](/images/smileys/tirelangue.gif)
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
![:top :top](/images/smileys/top.gif)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
![:\'( :\'(](/images/smileys/snif.gif)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie