[DCMOTO] écran noir si SDDrive+SDStream selectionnés

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

[DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par __sam__ »

Il semble qu'il y ait un soucis au moins depuis la version 20230401. Si sur TO8, dans les paramètres on active le contrôleur externe SDDrive,
Capture.PNG
Capture.PNG (45.41 Kio) Consulté 893 fois
et que dans les "Supports amovibles", on sélectionne SDDrive+SDStream
Capture.PNG
Capture.PNG (43.64 Kio) Consulté 893 fois
On ne voit pas apparaitre l'interface de selection de SDDrive, mais un écran noir. L'émul marche bien mais il semble être bloqué dans du code en $9346. Je présume que c'est le SDSel embarqué qui se trouve là.
Capture.PNG
Capture.PNG (116.68 Kio) Consulté 893 fois
Enfin, si on désélectionne SDStream et qu'on fait un "reset à chaud", on retrouve l'écran noir. Il faut faire un redémarrage à froid pour que ca fonctionne.
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 : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

Merci pour le signalement. Je vais regarder.
C'est probablement une incompatibilité avec les versions récentes de sddrive.sel. Je ne les ai pas testées avec SDSTREAM, il doit y avoir un conflit.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

J'ai repris la même version de dcmoto avec les mêmes options et les mêmes périphériques connectés. Le bug ne se produit pas.
C'est assez mystérieux. La seule chose qui change est le fichier .sd chargé : j'ai mis l'utilitaire de bentoc : pad6.sd
Peux-tu essayer avec ce même fichier ?
pad6.zip
(11.86 Kio) Téléchargé 15 fois

Explication possible : Le fichier TO7MO5_Limbo.sd n'est pas une image de disquette au format .sd et provoque le plantage.

Je n'ai pas utilisé SDSTREAM depuis plusieurs années, mais si mes souvenirs sont exacts il faut d'abord charger un programme de lancement.
On peut le charger avec SDDRIVE. La procédure est donc:
- Charger le fichier .sd image de disquette contenant le programme de lancement de SDSTREAM
- Reset à froid et sélection du fichier .sd dans le menu de SDDRIVE
- Charger le programme de lancement de SDSTREAM
- Dans Supports amovibles remplacer le fichier .sd de SDDRIVE par le fichier .sd de SDSTREAM
- Exécuter le programme de lancement de SDSTREAM
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par __sam__ »

Pas de soucis avec ce SD là. A L'inverse mon fichier SD est dispo ici. Il est fait de la même façon que tous mes SD précédents. Il ne contient qu'une face et le reste est streamé (comme d'hab).

C'est étrange que le contenu du SD fasse partir en boucle sddrive.sel. Il est supposé uniquement lire une pseudo FAT, non ?

Hum... Ok, je vois un truc étrange de mon coté: le binaire de la diskette est chargé sans être passé par sddrive.sel. Or le programme utilise les données de sddrive.sel pour connaitre le SD_LB0.

Code : Tout sélectionner

  TFR   DP,A          valeur de DP dans A
  LDB   #$51          adresse de SD_LB0 version recente
  TFR   D,X           stockee dans le registre X   
  LDB   <$58          SD_SEL contient $55 depuis 20180702   
  CMPB  #$55          test version 20180702 ou plus recente
  BEQ   INIT9         version recente
  
  LDB   <$57          ; SD_SEL en $6057 b0-b7 depuis 20210212   
  ANDB  #$7F          ; isole b0-b6 
  CMPB  #$55          ; test version 20210212 ou plus recente
  BEQ   INIT9         ; version 20210212 ou plus recente
  
  LDB   #$8E          adresse SD_LB0 des versions anciennes
  TFR   D,X           stockage dans le registre X

* Initialisation adresse du fichier .sd pour CMD18
INIT9
  LDD   ,X            octets poids fort adresse
  STD   CMD18+1       stockage pour commande CMD18
  LDD   2,X           octets poids faible adresse
  STD   CMD18+3       stockage pour commande CMD18
En ce point là $6057-$6058 contient $0000 au lieu de $5500 (ou $0055 suivant les versions du fichier *.sel). Donc le SD_LB0 est lu en $608E-$6071, mais cela vaut $5100 $001E qui ne me semblent pas correspondre au fichier (cela devrait valoir quelque chose de beaucoup plus petit comme le $0000 $0000 attendu en $6051). Du coup bah on "lit" en dehors du fichier SD et ca retourne 0 et on boucle sur une routine en attente de fin de secteur. C'est pas sddrive.sel qui boucle, mais le bootblock de la diskette alors qu'on a pas vu le menu de sddrive.sel.

Donc trois questions:
1) comment ca se fait que la (seule) diskette est chargée sans voir sddrive.sel ? Y-a-t'il une notion de nombre magique/structure dans le fichier SD qui provoque ca ?
2) pourquoi ne trouve-t-on pas $55 en $6057 ni $6058 comme attendu ? En vrai aucune des structures du fichier SD ne semble être renseigné (logique en un sens puisque sddrive.sel ne semble pas avoir été lancé)
3) A l'inverse, pourquoi sans selection de SDStream on trouve bien $55 en $6058 ? Ca semble être lié au point 1) car c'est sddrive.sel qui y place la valeur $55 après avoir sélectionné le fichier SD or cela ne se produit pas avec ce SD qui "s'auto-charge".

Code : Tout sélectionner

9386 9657       LDA    <$57               
9388 8480       ANDA   #$80               
938A 8A55       ORA    #$55               
938C 9757       STA    <$57               
Il y a un truc "magique" dans ces fichiers SD qui bypass l'execution de sddrive.sel apparemment quand SDStream est sélectionné dans les supports amovibles.
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 : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

Pour simuler SDDRIVE, dcmoto génère en mémoire une image de carte SD virtuelle : boot sector, FAT, répertoire, fichier sddrive.sel, fichier .sd chargé dans les supports amovibles. Le contrôleur SDDRIVE retrouve le fichier sddrive.sel, le charge et le lance. Sddrive.sel trouve le fichier .sd, l'affiche et permet de le sélectionner.

La question 1) est la clé du problème.
- si SDSTREAM n'est pas sélectionné, on voit l'écran de sddrive.sel
- si SDSTREAM est sélectionné on ne le voit pas. Même avec le fichier pad6.sd. Ce n'est pas normal.

Selon le contenu du fichier .sd, soit le programme se lance automatiquement alors qu'il ne devrait pas, soit le TO8 se plante.
Dans les deux cas c'est un bug, il explique les questions 2) et 3).
C'est bien la présence de SDSTREAM qui provoque l'erreur. Je vais trouver pourquoi, ce n'est qu'une question de temps...
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

TROUVÉ !

Ce bug a toujours existé : si la case SDSTREAM est cochée dans les périphériques connectés, le bootsector, la fat, la directory, et le fichier sddrive.sel ne sont pas ajoutées avant le fichier .sd dans l'image de la carte SD en mémoire, car SDSTREAM n'en n'a pas besoin. Et donc SDDRIVE ne fonctionne plus. C'est normal de planter le TO8, et c'est un miracle si le programme pad6 de Bentoc se lance tout seul sans passer par sddrive.sel.

Contournement : dans un premier temps ne pas sélectionner SDSTREAM dans les périphériques connectés. On peut ainsi lancer sddrive.sel.
Dès que l'écran de choix est affiché on peut ajouter le périphérique SDSTREAM.
A chaque fois que l'on veut charger un nouveau fichier .sd il faut d'abord désélectionner SDSTREAM.

J'ai modifié dcmoto pour qu'il n'y ait plus ce problème, je publierai une nouvelle version demain.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par __sam__ »

Arf, c'était donc un truc tordu depuis le début. Pourtant j'ai le souvenir d'avoir lancé des SDStream depuis un SDDrive (pour pas taper le lanceur en basic). Mais bon peu importe mes souvenirs. Le problème est identifié et réglé. Super 8) Bien joué ! :D
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 : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

Je ne me souviens plus comment ça a pu marcher. Peut-être en chargeant le programme de lancement de SDSTREAM sans utiliser SDDRIVE : Avec la simulation du clavier, ou avec une disquette ou une cassette. Dans mes tests j'ai le souvenir d'avoir utilisé la simulation du clavier. Le problème n'affecte que l'émulateur. Avec la vraie machine SDDRIVE et SDSTREAM sont parfaitement compatibles, et j'ai toujours utilisé SDDRIVE pour lancer SDSTREAM.

Pour bien faire il faudrait charger séparément un fichier .sd pour SDDRIVE et un autre pour SDSTREAM, comme avec la vraie machine. C'est par paresse que je n'en ai prévu qu'un seul. En fait la solution actuelle (mettre le fichier pour SDSTREAM à la suite du fichier pour SDDRIVE) n'est pas bonne, car quand la lecture de SDSTREAM commence l'index dans la carte SD n'est pas au début du fichier SDSTREAM, mais quelque part dans la disquette SDDRIVE.

Plutôt que d'appliquer un correctif assez peu naturel j'ai bien envie de permettre le chargement de deux fichiers .sd. Ce sera plus long mais plus propre. J'en profiterai pour supprimer l'émulation de la carte Compactflash, qui ne sert à rien. Personne sauf moi ne l'a utilisée.
Pour éviter les confusions il faudrait aussi donner l'extension .sds aux fichiers pour SDSTREAM et .sd ou .sdd pour SDDRIVE.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par __sam__ »

En fait je stream depuis SDDrive. Connaissant le LB0 du fichier sd, c'est assez facile de sauter par dessus N blocs de 512 pour accéder au debut des données de streaming.
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 : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] écran noir si SDDrive+SDStream selectionnés

Message par Daniel »

Finalement j'ai corrigé le bug, mais sans distinguer les fichiers .sd de SDDRIVE et de SDSTREAM.
Dans la pratique il n'y a rien de changé, sauf que le TO8 ne plante plus si la case SDSTREAM est cochée dans Supports amovibles/Périphériques connectés.

La nouvelle version de développement sdmoto_20231030 est à l'adresse habituelle : http://dcmoto.free.fr/emulateur/index.html
Comme d'habitude elle n'est pas garantie car insuffisamment testée. Je compte sur les utilisateurs, rien ne leur échappe :wink:
Daniel
L'obstacle augmente mon ardeur.
Répondre