[DCMOTO] TO8 sans extension 256k avec 32 banks ?

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
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

[DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par __sam__ »

Je me pose une question par rapport à une machine réelle et le comportement de DCMOTO (2022.10.04).

J'ai fait un programme (ASM) qui écrit un mot 16 bits "random" en $DFFE bank 0, puis il test la même adresse en bank 1. Si le mot est différent il test la même adresse en bank 2, etc. Si le mot est le même il en déduit le nombre de bank disponible dans la machine. (Le but est de trouver le nombre de banques présentes sur la machine sans écrire dedans, mais en utilisant un effet miroir/image fantôme).

Je m'attendais que sur un TO8 pourvu de seulement 256k, la bank 16, soit en réalité la bank 0 (effet miroir/fantôme) et le programme sortirait alors avec A=16 (car la banque 16 manquante "pointerait" sur la bank 0 -- grosse hypothèse). Or sous l'émul, ca affiche toujours A=32 banks. Un peu comme si la selection de la bank16 sélectionnait une vraie bank16 alors que la machine émulée n'a que les banks 0 à 15.

Est-ce le fonctionnement normal sur une machine réelle ? Sur quelle bank pointe la RAM $A000 si on sélectionne une bank inexistante ? J'ai présumé que ca pointait sur la BANK modulo MAXBANK, mais on a peut-être pas de phénomène de banque "miroir".

En image:
Pas d'extension mémoire
Pas d'extension mémoire
image_2022-12-02_202639536.png (22.72 Kio) Consulté 3452 fois
A=$20 à la sortie indiquant qu'on a 32 pages distinctes sur une machine de 256ko
A=$20 à la sortie indiquant qu'on a 32 pages distinctes sur une machine de 256ko
image_2022-12-02_202804731.png (33.9 Kio) Consulté 3452 fois
Dernière modification par __sam__ le 02 déc. 2022 21:08, modifié 3 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

Dans dcmoto, s'il n'y a pas d'extension mémoire, toute lecture des banques 16 à 31 retourne la valeur $FF.
Je ne me souviens plus pourquoi j'ai fait ça, mais la question de __sam__ est pertinente. Dès que possible je testerai avec la vraie machine.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

Résultat du test sur TO8D
On écrit $3039 en banque 0 à l'adresse $DFFE, puis on lit le contenu de $DFFE dans chacune des banques

1) Sans extension mémoire
On lit $3039 en banque 0, $0000 dans les banques 1 à 15, $E6E6 dans les banques 16 à 31

2) Avec extension mémoire
On lit $3039 en banque 0, $0000 dans les banques 1 à 15, $00FF dans les banques 16 à 31

La valeur lue dans l'extension mémoire n'est pas la même avec tous les modèles. Par exemple, avec mon extension mémoire artisanale, on ne lit pas $00FF mais tantôt $0000 et tantôt $FFFF. C'est probablement dépendant des chips de RAM utilisés. Selon le modèle ils ne s'initialisent pas pareil à la mise sous tension.

Je modifierai la prochaine version de dcmoto pour reproduire ce comportement avec $E6E6 sans extension et $00FF avec l'extension officielle.

[Edit 19:00]
Voilà, c'est fait.

01.png
01.png (1.17 Kio) Consulté 3376 fois
02.png
02.png (1.14 Kio) Consulté 3376 fois
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

Ce n'est pas fini, il y a encore un truc curieux, le $E6E6 en l'absence d'extension mémoire n'est pas un nombre au hasard, c'est la couleur de l'écran BASIC.
Si on change la couleur par un SCREEN, ça change la valeur de $DFFE dans les banques inexistantes.

Par exemple SCREEN3,0 donne $D8D8 en $DFFE dans les banques 16 à 31.
C'est bizarre, car en mémoire video couleur il y a bien $D8 jusqu'en $5F3F, par contre $5FFE n'est pas initialisé par l'octet couleur.
J'espère que ce n'est pas une erreur dans le petit programme de test. Je le mets ici pour vérification.

TESTBANK.BIN

Code : Tout sélectionner

  ORG   $9000
  PSHS  U,Y,X,DP,B,A,CC                  
  LDD   #$0010
  ORB   >$6081
  STB   >$6081
  STB   >$E7E7
  STA   >$E7E5
  LDX   #$3039
  STX   $DFFE
  LDY   #$9800
  STX   ,Y

BOUCLE  
  INCA                 
  CMPA  #$20
  BEQ   FIN
  STA   >$E7E5          
  LDX   $DFFE
  LEAY  2,Y
  STX   ,Y
  BRA   BOUCLE
  
FIN
  PULS  CC,A,B,DP,X,Y,U,PC

  END  

TESTBANK.BAS

Code : Tout sélectionner

10 LOADM"TESTBANK",,R
20 PRINT:PRINT:A=&H9800
30 FORI%=0TO15
40 X=256*PEEK(A)+PEEK(A+1)
50 PRINTUSING"## ";I%;
60 PRINTRIGHT$("   "+HEX$(X),4);
70 X=256*PEEK(A+32)+PEEK(A+33)
80 PRINTUSING"   ## ";I%+16;
90 PRINTRIGHT$("   "+HEX$(X),4)
99 A=A+2:NEXT:PRINT:PRINT
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par gilles »

En l'absence de RAM on devrait trouver la dernière valeur présente sur le bus juste avant cette lecture. Sur pas mal de machines c'est la valeur de l'opcode, mais je suppose que sur thomson on a des chances de trouver le dernier octet lu en RAM pour l'affichage video (pendant la phase active de l'affichage)
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

C'est une hypothèse très plausible, elle explique parfaitement le résultat des tests.

En initialisant un écran (toujours le même) avec des lignes de couleurs différentes, la lecture d'une banque inexistante retourne l'une de ces couleurs, mais pas toujours la même. C'est probablement celle de la position du faisceau vidéo au moment de la lecture.

Du coup je vais renoncer à émuler fidèlement ce comportement. C'est théoriquement possible mais bien trop compliqué.
En conclusion, la question de __sam__, en apparence anodine, a permis de découvrir un mystère du TO8 encore jamais documenté.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par __sam__ »

Bon, ce qui est certain c'est que:
* il n'y a pas de bank miroir qui apparait. Exit mon hypothèse de travail. (Ca simplifie du coup)
* les banks absentes ne peuvent être écrites.
* le contenu lu dépends du rafraichissement de la RAMs qui ont eu lieu juste avant l'accès.
* C'est très difficile à émuler, et permet en principe de différencier une execution sur émulateur d'une autre sur machine réelle.

C'est intéressant tout cela :)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

__sam__ a écrit : 03 déc. 2022 22:02 * C'est très difficile à émuler, et permet en principe de différencier une execution sur émulateur d'une autre sur machine réelle.
Cette phrase me motive. Finalement dcmoto donnera la couleur à l'endroit du faisceau. J'ai tous les éléments pour cela.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

Voici le résultat des tests avec le vrai TO8D (ou TO8) et avec la version 2022.12.04 de dcmoto.
dcmoto_20221204.zip
(897.54 Kio) Téléchargé 56 fois


Conditions des tests :
- Il n'y a pas d'extension mémoire 256K
- On écrit $3039 à l'adresse $DFFE de la banque 0
- On lit l'adresse $DFFE dans les banques 0 à 31

D'abord avec un écran de couleur uniforme :
TO8D
00.jpg
00.jpg (20.26 Kio) Consulté 3297 fois
DCMOTO 2022.12.04
00.png
00.png (963 octets) Consulté 3297 fois

Ensuite avec un écran bariolé.
A chaque exécution du programme le résultat est différent, car il dépend de la position du faisceau vidéo au moment de la lecture.
TO8D
03.jpg
03.jpg (136.75 Kio) Consulté 3297 fois
DCMOTO 2022.12.04
03.png
03.png (2.33 Kio) Consulté 3297 fois

On peut affirmer sans grand risque que dcmoto est le seul émulateur TO8 à réagir comme la vraie machine 8) 8) 8)
Daniel
L'obstacle augmente mon ardeur.
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Fool-DupleX »

Chapeau pour avoir trouvé ça :shock:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

C'est une découverte à trois, chacun de notre côté nous n'aurions pas trouvé. Toute l'équipe mérite le compliment.
- __sam__ a posé la bonne question
- j'ai testé avec le matériel réel
- Gilles a eu l'idée géniale
- j'ai confirmé par de nouveaux tests

Cette découverte est d'autant plus géniale qu'elle est totalement inutile. Le grand public ne pourra pas comprendre notre satisfaction intellectuelle.
Daniel
L'obstacle augmente mon ardeur.
Fred_72
Messages : 1131
Inscription : 22 mai 2019 13:10
Localisation : Sarthe

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Fred_72 »

Bravo.
Peut-être inutile mais indispensable! :lol:
Asic512
Messages : 128
Inscription : 30 juin 2019 21:13

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Asic512 »

Finalement la question que pose Sam à savoir "peut-on distinguer une exécution sur DCMOTO d'une sur une machine réelle" a-t-elle une réponse ?
Asic512
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] TO8 sans extension 256k avec 32 banks ?

Message par Daniel »

Oui, bien sûr, l'émulateur n'est pas et ne sera jamais parfait, il y aura toujours de subtiles différences. L'essentiel est que ces différences soient invisibles pour l'utilisateur moyen, c'est ce que je m'efforce de faire en corrigeant tous les comportements anormaux lorsqu'ils sont signalés.

Pour la lecture des banques de RAM inexistantes je crois que dcmoto est maintenant relativement semblable à la vraie machine en mode vidéo standard Thomson. C'est le seul testé. Dans d'autres modes il est possible que le comportement soit différent, il faudrait faire des tests plus approfondis pour le découvrir. Comme écrit dans mon post précédent, c'est totalement inutile de chercher, mais si quelqu'un veut le faire ça fera progresser la connaissance.
Daniel
L'obstacle augmente mon ardeur.
Répondre