MSX Village forum

La Place des Développeurs Lecture d'un fichier sur la BEER IDE en assembleur Quel vecteurs utiliser et quel registres ???

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 20/11/2014 à 13h26

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.
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 20/11/2014 à 15h03
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.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 20/11/2014 à 22h16
Je me suis mal exprimé :(

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 ;)


Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 20/11/2014 à 22h29
En gros tu cherche à cadencer une action, c'est ça ?
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 20/11/2014 à 22h44
Oui c'est ca :)


Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 20/11/2014 à 23h51
Ne serait-ce pas possible avec un compteur ?
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 21/11/2014 à 08h57
Non, je voudrais être sur de la cadence et pour ca on utilise ordinairement une interruption !!!


Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10358

Le 21/11/2014 à 13h22
le msx a déja un cadenceur d'origine
sous basic ça ce traduit par ON TIME


:noel
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 21/11/2014 à 15h17
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.


Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 21/11/2014 à 18h02
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...)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 23/11/2014 à 18h50
Donc la seule solution serait de me caler sur l'iNT du VDP en allant lire le registre VDP concerné ?


Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 23/11/2014 à 19h08
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" ;)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 23/11/2014 à 22h10
Il n'y a pas de secret, mais comme je ne connais pas le MSX j'explore plusieurs voie ;)

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 ?


Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 24/11/2014 à 11h45
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.


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 24/11/2014 à 12h15
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) ;)
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 956

Le 24/11/2014 à 13h36
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) ;)




Merci, ça confirme ce que je disais, j'ai déjà proposé une solution :p Edité par z80 Le 24/11/2014 à 13h36


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie