commutation de banque mémoire data et video sur TO8

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Répondre
Avatar de l’utilisateur
OlivierP
Messages : 703
Inscription : 21 sept. 2009 15:50
Localisation : IDF

commutation de banque mémoire data et video sur TO8

Message par OlivierP »

Je pose cette question car je n'ai pas le même comportement sur émulateur et machine réelle.
J'utilise la fameuse routine de commutation de page video de Chinese Stack http://www.pulsdemos.com/vector02.html pour faire une animation. Juste que la tout va bien.
Ensuite j'ai codé un autre petit programme de lecture d'un sample en utilisant les banques mémoires du TO8. Juste que la ça va toujours bien.
J'ai ensuite mixé les deux, en ayant a peu près le même nombre de cycles entre deux envois d'octet à la sortie son, c'est galère de compter les cycles avec tous les branchements possibles, mais j'y suis arrivé en modifiant un peu TEO sous Linux pour afficher le nombre de cycles entre deux breakpoints. Le son n'étant pas terrible (test uniquement sur émulateur), j'ai redoublé d'efforts pour avoir exactement le même nombre de cycles entre deux envois d'octets vers la sortie son : pas d'amélioration sur émulateur.
Je décide donc de tester sur un vrai TO8 : plantage, aucune animation ni sortie son :? alors que sur DCMOTO et TEO 1.8 j'ai animation + son un peu foulli, même MESS 0.144 donne une animation un peu corrompue. :evil:
En commentant mon code qui initialise la première banque mémoire utilisée pour la lecture du sample (no 3), l'animation marche sur un vrai TO8 ; je suppose donc que c'est la commutation de banque mémoire qui pose problème.

Quand on change la banque mémoire dans l'espace cartouche avec STB $E7E6 ($60 ou $62), on peut bien en choisir une autre en $A000 avec $E7E5 ?
Est-ce que le

Code : Tout sélectionner

   ANDB #$80          * BANK1 utilisée ou pas pour l'affichage / fond couleur 0
   STB $E7DD
m'empêche d'utiliser les autres bank mémoire pour lire le sample ?
Daniel
Messages : 17318
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par Daniel »

Je ne suis pas sûr d'avoir bien compris, mais as-tu noté les points suivants, expliqués dans le manuel technique des TO9, TO8 et TO9+ :

- Le registre $E7DD (système 2) ne peut pas être lu directement. Le résultat de LDB $E7DD est indéterminé. Sur ce point il y a peut-être une différence entre le vrai TO8D et les émulateurs (on ne sait pas quelle valeur il faut renvoyer). Pour trouver le numéro de page RAM affichée, il faut écrire à 0 le bit D0 de $E7E4, puis lire $E7E4.

- Le registre $E7E5 (ram utilisateur ou crayon optique) a un comportement différent selon la valeur des bits D4 de $E7E7 et D0 de $E7E4. Il est en écriture seule si le bit D4 de $E7E7 est à 1. Sinon, il est en lecture seule et contient le numéro de page RAM si D0 de $E7E4 est à zéro, ou le compteur du crayon optique si le bit D0 de $E7E4 est à 1.

Si tu as bien respecté ces règles, peux-tu poster un petit programme de test pour mettre en évidence la différence entre le TO8 et les émulateurs ?
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
OlivierP
Messages : 703
Inscription : 21 sept. 2009 15:50
Localisation : IDF

Re: commutation de banque mémoire data et video sur TO8

Message par OlivierP »

Voici un test simple : lecture d'un sample avec commutation de page video.
Tel quel, il joue juste le sample. Il suffit de decommenter le "JSR SCRC" pour voir le problème.
J'utilise une variable pour stocker la banque courante du sample.
Pièces jointes
test.zip
(75.05 Kio) Téléchargé 159 fois
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

je ne vois pas bien ce que tu veux faire avec la ram mappée en espace rom (même si c'est très pratique pour afficher rapidement).
Dans le cas d'un switch de page ce n'est plus utile.

Egalement le CLR $E7CF
vient modifier la configuration du PIA utilisé pour le son, je ne suis pas sûr que cela soit volontaire... (puisque du coup il me semble que c'est le DDR que tu écris et non le registre de sortie du PIA).
Avatar de l’utilisateur
OlivierP
Messages : 703
Inscription : 21 sept. 2009 15:50
Localisation : IDF

Re: commutation de banque mémoire data et video sur TO8

Message par OlivierP »

Bien vu, en enlevant le CLR $E7CF cela fonctionne bien sur émulateur, mais ça plante toujours sur machine réelle.
Je ne sais pas le pourquoi de cette instruction, d'ailleurs elle n'est pas expliquée sur le site de puls.
Avatar de l’utilisateur
OlivierP
Messages : 703
Inscription : 21 sept. 2009 15:50
Localisation : IDF

Re: commutation de banque mémoire data et video sur TO8

Message par OlivierP »

L'utilisation de l'espace ROM me permet de simplifier le programme, la mémoire video est en $0000 et le sample en $A000 (mes données pour l'animation tiennent entre $8267 et $96DF).
Reste a comprendre pourquoi ça marche sur TEO 1.8 et DCMOTO mais pas sur machine réelle.
Est-ce ma machine qui est défectueuse ? La disquette de Contrôle TO8 COFADEL ne montre pourtant pas de problème.
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

sans doute parceque les émulateurs trichent un peu...
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

je confirme que ca plante aussi mon TO8D, ca va d'ailleurs taper dans les registres de palette.
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

apres 2 ou 3 tests je pense que c'est la valeur sauvegardée en E7E7 qui plante la machine. visiblement on vient réécrire quelquechose qui le perturbe, il ne retrouve plus sa configuration de RAM.
LDB $6181

ORB #$10

STB $6081

CLR $616D

peut être ce 6181 ?
Avatar de l’utilisateur
OlivierP
Messages : 703
Inscription : 21 sept. 2009 15:50
Localisation : IDF

Re: commutation de banque mémoire data et video sur TO8

Message par OlivierP »

On a trouvé en même temps, je viens d'essayer avec le code suivant

Code : Tout sélectionner

********************************************************************************
* Initialisation Bank Switch
********************************************************************************
   LDB #92	 
   STB $E7E7

   LDA NOBANK      * choix de la bank
   STA $E7E5       * commute la bank
et mon animation marche nickel !

Par contre, la valeur 92 est un peu au pif, comment lire son contenu pour ne modifier que le bit D4 ?

pour le LDB $6181, cela vient du site de pulsdemos, je ne sais pas pourquoi cette valeur.
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

LDB $6081 a l'air de marcher,
c'est sans doute une typo sur puls

en fait ce n'était pas la palette qui était modifiée mais le gate array qui passait en mode MO6 ;)
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: commutation de banque mémoire data et video sur TO8

Message par gilles »

suite de l'explication ...
le registre système 1 ne peut être que écrit.
le système vient donc l'écrire en ram (ME7E7 qui est vraisemblablement en 6081). l'utilisateur doit faire de même, sinon le code risque de ne pas être portable (dans la pratique je ne sais pas s'il y a beaucoup de valeurs différentes pour les TO8).
Répondre