Logicielsmoto.com

Nous sommes le 08 Déc 2019, 13:08

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 31 messages ]  Aller à la page 1, 2, 3  Suivante
Auteur Message
 Sujet du message:
MessagePosté: 27 Juil 2010, 11:31 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
Pour que Pulko comprenne bien : il faut oublier les interruptions sur Thomson. Elles sont toutes reliees en hard (vecteur en ROM) sur des routines qui depensent un nombre hallucinant de cycles avant de donner la main a l'utilisateur. C'est totalement prohibitif pour faire des trucs performants.

Par comparaison, quand on a porté OS9 (http://os9.forler.ch), on a viré toute la ROM et on l'a remplacée par le noyau OS9 qui fait un usage bien plus efficace des interruptions. On a vraiment été épaté par la puissance qu'on a libérée lors de cet exercice.

Citation:
C'est sur que s'il fallait mettre à jour les params des oscilateurs d'une puce type AY environ 100fois par sec ca serait bcp plus simple (une interruption timer à 100 ou 200hz ca passe inaperçu face à du 4khz)

On en a deja parle, mais c'est exactement ce qu'il serait necessaire de faire avec l'interface synthese vocale, dont je rappelle que c'est avant tout un synthetiseur tout court.

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 12:01 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 418
Localisation: France
Oui, l'interface synthèse vocale est aussi dans mes cartons... mais sur mo5 c'est ça ou le lecteur de disquettes (ou la rs232)... à moins que je fasse un truc pour brancher plusieurs extensions.

Pour la génération du son, effectivement les interruptions posent problème. Il n'y a aucun moyen de détourner ça ? Tout reste en dur dans la rom, pas le moindre passage par la table SWI ou autres machins en zero-page ?

D'autre part, je ne pense pas me lancer dans du sample à 44KHz tout de suite. Par exemple sur CPC le record actuel est de 18KHz (musique d'intro d'Orion Prime). Il faut ruser un peu avec les samples utilisés (filtrage de fréquences) mais les résultats sont tout à fait satisfaisants. On est habituellement à 15 voire 8KHz. A 8KHz on peut déjà générer un signal beeper à la main avec, a mon avis, un résultat correct (pour faire bip).

Les sidvoices réalisées sur CPC et sur ZX spectrum (démos déjà citées plus haut) ont d'autres problèmes à contourner : sur CPC l'accès à la puce AY se fait à travers le PPI (équivalent du PIA) et demande de nombreux cycles CPU pour mettre à jour un registre, ce qui fait qu'il reste assez rapidement peu de temps pour le reste. Sur spectrum, le temps d'exécution des instructions n'est pas constant (il est ralenti par les accès mémoire de la puce vidéo pendant l'affichage de l'écran), ce qui rend beaucoup plus difficile la réalisation d'une note qui sonne juste. tout ceci, rapellons le, sans timer ni interruptions programmables. Je pense que c'est également possible sur thomson, même si ça signifie qu'il faudra mettre moins de choses qui bougent à l'écran...

En ce qui concerne l'idée de court-circuiter le port cassette; ça ne me pose pasde problème. Le même genre de chose est utilisé sur Oric, ou le signal VBL de balayage de l'écran est renvoyé sur le port cassette afin de disposer d'une interruption de synchronisation permettant de faire des démos propres et bien synchronisées. ça ne dénature pas trop la machine, je pense :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 14:13 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
Pour brancher plusieurs interfaces sur MO5, il y a le Megabus, produit commercial, c'est pas un souci. on en trouve de temps en temps sur ebay.

T'es un teigneux c'est bien, mais cherches pas : voici le debut du code de la routine en ROM pour l'IRQ sur MO5 :

Code:
F657 C620       LDB    #$20                2
F659 1F9B       TFR    B,DP                6
F65B CEA7C0     LDU    #$A7C0              3
F65E D619       LDB    /$19                4
F660 A643       LDA    $03,U               5
F662 2B04       BMI    $F668               3
F664 6E9F2064   JMP    [$2064]             8


Total : 31 cycles pour sauter a ton code sans compter le basculement de contexte qui prendre 19 cycles a l'aller et 15 cycles au retour. Au final 65 cycles de gaspillés avant de pouvoir executer le moindre truc intéressant.

Le plus efficace reste la TSG de notre cher BC109 ;)
(c'était bien de lui?), et c'est bien plus fun.

PS : dans mes bras mon ami, enfin quelqu'un qui s'interesse au MO5 et pas au TO8D :love:

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: A
MessagePosté: 27 Juil 2010, 15:44 
Hors ligne

Inscription: 27 Juil 2010, 14:46
Messages: 38
C'est sur c'est con que ça passe par le firmware à chaque fois et que les IRQ fassent un empilement/dépilement de la pile à chaque fois... mais après une VBL pommé lors de l'interruption c'est pas non plus ce qu'il y a de plus mortel, ça dépend ce qu'on y fait...

La routine d'IRQ des autres Thomson est la même ? (à l'adresse de JMP prêt bien entendu qui est 0x6064 je suppose...)

Concernant les autres interruptions, enfin surtout les FIRQ, elles sont utilisé par quoi sur les différents Thomson ?

Concernant les samples, en plus sur CPC on à l'énorme problème d'avoir du 4-bits non linéaire... Enfin non linéaire si c'était symétrique ça irait, mais ça l'ai pas :)

Pour le graphisme, le problème est effectivement je pense l'absence de graphiste directement sur la machine, les contraintes de palettes sont vachement moins importante que sur Spectrum, 2 couleurs par bloc de 8x1 contre 8x8... Et quand je vois ce qu'il font sur Spectrum...
(Tient d'ailleur puko, grafx2 gére les contraintes spectrum ? ça doit pouvoir s'ajouter facilement non ?)

Sinon, y a t'il moyen de modifié la palette en cours d'image ou c'est latché et synchronisé ?
De même que le switch d'écran affiché sur les Thomsons supportant 4 pages écrans différentes sont synchronisé à quel momement ?)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 15:56 
Hors ligne

Inscription: 27 Avr 2006, 09:04
Messages: 101
Citation:
--snip--
La routine d'IRQ des autres Thomson est la même ? (à l'adresse de JMP prêt bien entendu qui est 0x6064 je suppose...)

Pareil! (EDIT: dans le sens ou ça part en Rom avant d'aller sur la routine perso. Le code Rom étant différent quant à lui)
Sur To9, on doit se taper la Rom avant le saut final sur ta routine perso.

Citation:
Concernant les autres interruptions, enfin surtout les FIRQ, elles sont utilisé par quoi sur les différents Thomson ?

Par le crayon optique.

Citation:
Sinon, y a t'il moyen de modifié la palette en cours d'image ou c'est latché et synchronisé ?
De même que le switch d'écran affiché sur les Thomsons supportant 4 pages écrans différentes sont synchronisé à quel momement ?)

Sur Mo5 ou To7(/70) non. Y a pas de palette.
Sur les autres, oui. Via quelques bidouilles, on peut mixer plusieurs modes d'écran et changer les palettes à la volée.
Par contre, c'est un peu plus sioux de faire du code compatible multi TO.

Le multibuffering n'est valable que sur To8 ou To9+. N'étant pas spécialiste de ces bécanes, je suppose qu'ils font le switch au retour du spot.
D'ailleurs, est-ce possible de le faire en cours de balayage?

Sinon, si t'es calé en hard et que tu as une astuce pour déverrouiller les vecteurs d'interruptions de la Rom, je prends!


Dernière édition par Tomix3 le 27 Juil 2010, 16:50, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: A
MessagePosté: 27 Juil 2010, 16:09 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1115
Localisation: Brest
CloudStrife a écrit:
C'est sur c'est con que ça passe par le firmware à chaque fois et que les IRQ fassent un empilement/dépilement de la pile à chaque fois... mais après une VBL pommé lors de l'interruption c'est pas non plus ce qu'il y a de plus mortel, ça dépend ce qu'on y fait...

Nota: il n'y a pas d'interrupt VBL. Le test de la VBL se fait avec du polling actif sur les regs d'affichage.

Citation:
La routine d'IRQ des autres Thomson est la même ? (à l'adresse de JMP prêt bien entendu qui est 0x6064 je suppose...)

Pas sur Il faudrait checker avec DCMOTO... Ok non pas du tout. Pour TO9 je trouve en $FFF8-$FFF9 un vecteur qui pointe en $FC13 lequel contient:
Code:
$FC13 LDA $E7C0 ; test si c'est le timer qui vient de générer l'irq
      BMI $FC23
      ...
$FC23 LSRA
      ...

Ce qui se rapproche le plus du code de fool (provenant d'un MO5) est peut-être (si j'ai bien analysé cela comme étant la gestion du clignotement curseur) à l'adress $FC32 qu'on atteint avec quelque cycles en plus depuis $FC13:
Code:
      LDA $6019  ; oui pas d'utilisation de DP ici
      BITA #$4
      BEQ  $FC4C
      LDB  $E7C3
      PSHS B
      BSR  $FC50
      COM  [$605A] ; cligno curseur, non?
      COM  $6075


Citation:
Concernant les autres interruptions, enfin surtout les FIRQ, elles sont utilisé par quoi sur les différents Thomson ?

Crayon optique. Quand la led du crayon optique est activée, alors une FIRQ est générée et le 6809e va vite lire les compteurs ecrans et les placer dans un buffer qui sera traité plus tard lors de l'appel aux routines moniteurs pour récupérer les coord X/Y du spot à partir de la valeur des compteurs ecrans.

sam.


Dernière édition par Samuel Devulder le 27 Juil 2010, 16:14, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:13 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1115
Localisation: Brest
Tomix3 a écrit:
Via quelques bidouilles, on peut mixer plusieurs modes d'écran et changer les palettes à la volée.
Par contre, c'est un peu plus sioux de faire du code compatible multi TO.


Le switch de mode d'écran coute quasiment pas (1 octet à placer). La modif de palette si hélas (3 octets par couleurs). On ne peut guère que changer 1 couleur pendant le retour de ligne (2 quand on est super optimisé à ce qu'il parait, mais préhisto n'a jamais révélé son secret à quiconque, enfin je crois :) :) )

sam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:14 
Hors ligne

Inscription: 27 Juil 2010, 14:46
Messages: 38
Ok, donc le temps d'IRQ est différent...

Sur MO5NR et MO6 sur le schéma y a bien un fils nommé INT 50Hz qui sort du compteur de ligne pour arrivé sur l'entré de commande d'interruption du PIA, donc qui peut déclencher une IRQ du CPU. Elle est pas synchro sur la VBL ? Elle est déclancher à quel moment ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:14 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
Logiquement le MO6 et le MO5NR devraient aussi disposer du multi-buffering, puisqu'ils ont le meme gate-array que le TO8/TO9+ ...

Debloquer les interruptions est impossible sans modifier la ROM. On pourrait imaginer de produire une ROM modifiee mais qui reste compatible au niveau fonctionnalite, mais personnellement, je trouve cela idiot : personne va aller patcher hard son MO5 pour faire tourner une demo. De toute maniere c'est pas l'esprit : autant ajouter 1 Go de RAM un chip son et un coprocesseur graphique d'emblee on gagnera du temps ...

La FIRQ n'est cablee que sur le crayon optique effectivement. Tous les peripheriques utilise l'IRQ ... quand elle est cablee, ce qui n'est pas toujours le cas. La FIRQ est dispo sur le bus d'extension toutefois.

Mais le retour de VBL est testable par polling, ce n'est pas un souci et c'est generalement tres efficace comme l'ont prouve plusieurs programmes et demos. Je connais certaines personnes qui irait meme jusqu'a dire qu'utiliser les interruptions pour la synchro c'est pour les paresseux :lol:

Il n'y a pas d'autre interruption utilisable sur Thomson. La NMI est redirigee en ROM vers un RTI et inutilisee sur le bus d'extension, les interruptions logicielles sont inoperantes as well (SWI2, SWI3 -> RTI) et le SWI est utilisé sur MO pour les appels au moniteur.

il reste le reset si le coeur t'en dit ... mais bon il est aussi cable en ROM, evidemment.

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:19 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1115
Localisation: Brest
Fool-DupleX a écrit:
Le plus efficace reste la TSG de notre cher BC109 ;)


La quoi ? :eek:

sam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:20 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
CloudStrife a écrit:
Ok, donc le temps d'IRQ est différent...

Sur MO5NR et MO6 sur le schéma y a bien un fils nommé INT 50Hz qui sort du compteur de ligne pour arrivé sur l'entré de commande d'interruption du PIA, donc qui peut déclencher une IRQ du CPU. Elle est pas synchro sur la VBL ? Elle est déclancher à quel moment ?


Y va pas arreter avec son obsession de la vbl ... :p

comme son nom l'indique, elle pete a 50 Hz et elle sert pour afficher le curseur. elle declenche l'IRQ a 65 balles de tout a l'heure. et sur Thomson, 65 balles ca fait cher la synchro VBL. Y'en a qui ont essayé, z'ont eu des problèmes. Mais on t'empêche pas cela dit ...

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:23 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
Samuel Devulder a écrit:
La quoi ? :eek:

La Théorie de la Synchronisation Généralisée, ou l'art d'écrire du code parfaitement synchronisé sans utiliser d'interruption. Ce dont on discute en ce moment quoi.

Je me souviens avoir lu ca dans un Science&Vie Micro qui consacrait un article au Forum Thomson il y a une quinzaine d'année.

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:23 
Hors ligne

Inscription: 27 Juil 2010, 14:46
Messages: 38
Non, je suis d'accord, modifié le hard et utilisé des extensions ne présente aucun intérêt pour la démo, on à la même philosophie sur CPC. Les extensions sont uniquement pour permettre des facilités de développement (utilitaire dans un émulateur de ROM (extension la plus courante), interface RS232 pour le transfère de snapshot, disquette et... lecture de musique sur l'AY depuis un SoundTracker sur PC ! (tout neuf))

Sur CPC le test VBL ce fait aussi par polling... mais généralement après une interruption... (on a 6 interruption par écrans, si on les modifie pas la dernière à lieu juste après le début de la VBL, puis après attente de la fin de la VBL :) (on a une interruption toutes les 52 HBL (valeur de compteur fixe), mais on peux forcer une remise à 0 du compteur (donc on peux compter 52 HBL à partir d'un moment donné)

Après des démos utilise des routines à temps fixe foncièrement synchrone (DTC, From Scratch)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:24 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 373
Je crois qu'il n'y a pas eu autant de papotte sur ce forum depuis des années. Faudrait presque ouvrir un bar ... :lol:

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 27 Juil 2010, 16:26 
Hors ligne

Inscription: 27 Juil 2010, 14:46
Messages: 38
Fool-DupleX a écrit:
Y va pas arreter avec son obsession de la vbl ... :p

comme son nom l'indique, elle pete a 50 Hz et elle sert pour afficher le curseur. elle declenche l'IRQ a 65 balles de tout a l'heure. et sur Thomson, 65 balles ca fait cher la synchro VBL. Y'en a qui ont essayé, z'ont eu des problèmes. Mais on t'empêche pas cela dit ...


C'est pas pour une démo :) (et encore moins pour de la musique)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 31 messages ]  Aller à la page 1, 2, 3  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com