SDMOTO : nouvelle démo

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Je n'ai pas réussi à trouver les démos Thomson en compétition (sauf celle de Pulkomandy), ni sur le site de Puls, ni ailleurs. Peut-on les télécharger quelque part ?
Daniel
L'obstacle augmente mon ardeur.
Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: SDMOTO : nouvelle démo

Message par Markerror »

Bonsoir,

S'il y a eu d'autres demos Thomson à cette party, elles devraient arriver sur Pouet tôt ou tard. Je viens de regarder sur Dcmoto la production de Shinra, c'est tout mignon (très joli plasma et graphismes excellents). Pas de son, je suppose que hélas, c'est normal. Je n'ai jamais compris pourquoi les Thomson n'avaient pas de processeur sonore digne de ce nom, ça apportait beaucoup mine de rien...
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: SDMOTO : nouvelle démo

Message par __sam__ »

Normalement il y a du son, mais il faut que la synthèse vocale MAE soit activée. J'ai bien trouvé la coche sous DCMoto mais il est grisé.
Sinon, si tu veux du son et de l'action, il y a mon Intro 1K qui est arrivée 2ème...

@Daniel Les démos seront publiée ASAP (une fois les bugs résiduels corrigés pour ma part). A ce propos j'ai un résultat bizarre en emul TO7 et TO9 sous DCMOTO. Lors des appels à $E010 (RECFI, recherche fichier); le contrôleur retourne un code indiquant qu'il est en basse densité et ne lit que 4 fichiers par entrée catalogue. Le hic est que contrôleur est initialisé en haute densité et retourne même des secteurs de 256 octets. Cela ne se produit pas en émulation de TO8 et TO9+. Par ailleurs sous MESS (pour le TO7) et Tomix (pour le TO9) le même code inchangé marche correctement et RECFI lit bien 8 fichiers par entrée catalogue. Mon hypothèse est que les points d'entrée du minidos pour TO7 et TO9 ne sont pas complètement patchés par l'émul. Est-ce possible?
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 : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Oui, des lacunes dans l'émulation du contrôleur de disquette sont très vraisemblables. J'ai patché essentiellement la lecture et écriture d'un secteur, et le formatage. Je me disais que les autres fonctions devaient toujours finir par une lecture ou une écriture de secteur, mais c'est probablement un raisonnement trop simpliste. Je regarde le problème dès que possible.

Il y a longtemps que je veux émuler la synthèse vocale dans dcmoto. Antoine m'a passé son code, j'ai même commencé à modifier dcmoto pour l'intégrer, mais je n'ai pas encore eu le temps ni le courage d'aller au bout. Ce n'est finalement pas si simple car il faut faire du multi-thread, exactement comme dans dcexel pour émuler les Exeldrums. Ca viendra probablement un jour, mais je ne fais pas de prévisions.

[Edit - 19/03/2013 11:00]
Un examen rapide du code en ROM TO9 montre que l'erreur de la fonction d'ouverture de fichier semble venir du bit 7 du registre $E7D8. Dans dcmoto j'ai positionné ce bit à 1 pour éviter un blocage au lancement du Basic 1.0, mais c'est vraisemblablement l'indicateur de simple densité. Je ne trouve pas la description du registre $E7D8 dans le manuel technique TO8, TO9, TO9+, ni dans la documentation technique du TO9. Je continue les recherches...
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: SDMOTO : nouvelle démo

Message par __sam__ »

Si je comprends bien, tu as de quoi observer le problème?
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 : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Le test de la densité est visible en désassemblant la ROM du TO9 en $E6D4-$E6DE. Je n'ai pas d'exemple de programme pour tester, mais ce qui manque le plus est la documentation sur $E7D8. Dans les anciennes versions de dcmoto j'imposais le bit 7 à zéro, l'ouverture d'un fichier fonctionnait probablement. L'an dernier j'ai remarqué que le lancement du Basic 1.0 sur TO9 provoquait une boucle infinie en l'absence de disquette. Le programme attend le bit 7 de $E7D8. Je l'ai positionné à 1, ce qui résout ce problème mais en génère un autre.

L'absence de documentation est la plaie des auteurs d'émulateurs. Et même avec la doc on n'est jamais sûr de bien comprendre. On a failli me convaincre il y a peu que $A7E4-$A7E5 sur MO5 est un compteur incrémenté en permanence. J'ai même commencé à modifier dcmoto. Saisi d'un doute j'ai écrit un programme de test qui a montré que c'est faux. Comme quoi, si MESS renvoie une certaine valeur, ce n'est pas une preuve, pas plus que la documentation existante. Il faut tester sur la vraie machine.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: SDMOTO : nouvelle démo

Message par __sam__ »

Voici le code que j'avais trouvé problématique sur TO9:

Code : Tout sélectionner

E6D4 8E0008     LDX    #$0008             
E6D7 F6E7D8     LDB    $E7D8              
E6DA 2A02       BPL    $E6DE              
E6DC 301C       LEAX   -$04,X             
E6DE 39         RTS                       
Effectivement, il lit $E7D8 et si son MSB est à un il passe de 8 fichiers/entrée-catalogue à 4 seulement. Avec le MSB toujours à 0, on aurait de la haute densité en permanence. Il est bizzare ce E7D8, MESS l'utilise en écriture pour choisir le type de contrôleur externe. Quand à Tomix, il ne s'embête pas au niveau des détails: $E7D1->$E7D8 retournent 0 et $E7D0 retourne $F0.

Edit: sinon il y a un gag (je ne sais pas si c'est spécifique TO9), mais le bouton d'ouverture de D7 en R/W ne semble pas être honoré par le reste du code. Les D7 sont toujours chargées en "(R)" d'après ce que j'ai observé.
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 : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Pour l'ouverture des disquettes en protection écriture, nous en avions parlé dans un autre post. Effectivement l'option de Windows n'est pas testée, seule la case à cocher dans la boîte de dialogue Options / Paramètres est prise en compte. A l'occasion d'une nouvelle version de dcmoto j'essaierai d'améliorer.

Confirmation pour le bit 7 de $E7D8 en mode TO9 :
- Avec le bit à 1, le Basic 1.0 fonctionne bien mais la démo Elvis Lives plante.
- Avec le bit à 0, la démo Elvis Lives fonctionne bien mais le Basic 1.0 ne démarre pas sans disquette.

C'est donc un nouveau mystère à éclaircir. Toute aide sera appréciée :wink:

Pour être complet, il y a aussi un problème d'émulation QDD : si le bit 7 de $E7D8 reste toujours à la même valeur (0 ou 1), l'accès au QDD se bloque. Il faut changer le bit en permanence pour débloquer. Ce qui me fait dire que cette adresse a des utilisations différentes en fonction du périphérique connecté.

@sam : sais-tu qu'en mélangeant nos deux programmes Elvis (ton diaporama + ma musique) nous aurions une démo beaucoup plus convaincante ? La musique occupe 99% du cpu, mais entre deux morceaux on peut très facilement glisser la lecture et l'affichage d'une image. On peut même stocker l'image dans les bits inutilisés par la musique (les échantillons 6 bits sont stockés dans des octets et laissent 2 bits disponibles) et l'afficher en utilisant les quelques cycles des temporisations. Je sais bien que la carte SD n'est pas admise dans les concours, mais juste pour le fun ce serait bien.
Dernière modification par Daniel le 19 mars 2013 15:00, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: SDMOTO : nouvelle démo

Message par __sam__ »

Il faudrait voir pk le basic ne démarre pas sans d7. Le basic devrait juste tester l'existence d'un boot loader par l'appel à $E007 (de mémoire), et vivre sa vie sans D7 s'il n'en trouve pas. Dommage que je sois loin de mon TO9 sinon je pourrais te dire que vaut $E7D8 dans le basic1.
nota: (c'est une toute petite partie de elvis.. je suis d'ailleurs en train d’améliorer mon algo de conversion pour avoir une version encore plus "zolie". Une version remasterized en quelque sorte :wink: ).
Dernière modification par __sam__ le 19 mars 2013 15:00, modifié 1 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
Patrick
Messages : 2019
Inscription : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: SDMOTO : nouvelle démo

Message par Patrick »

Bonjour,
Le registre $E7D8 du TO9 est décrit pages 85 et 87 (42 et 43 djvu) du manuel technique des TO8, TO9 et TO+.
En écriture, choix de la densité : 0 double densité, 1 simple densité.
En lecture, information du choix de la densité.
Reste à déterminer, d'après le schéma de la page 85, les valeurs à l'initialisation. Et là, je voudrais bien qu'un électronicien m'explique...
Cordialement,
Patrick
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Merci Patrick, j'avais lu trop rapidement le manuel technique.

Le rôle du circuit I49 permettant, d'après le texte, d'accéder à la lecture du bit de densité, me semble aussi très mystérieux et le schéma ne nous éclaire guère. Mais on peut considérer que la lecture du bit 7 donne bien la densité. Il faut donc le retourner à zéro dans dcmoto.

Reste à comprendre pourquoi ce bit est testé à 1 au démarrage du Basic 1.0...

Le test se passe ici (avec X=$E7D0) :

Code : Tout sélectionner

FFC7 A608       LDA    $08,X              
FFC9 2B1A       BMI    $FFE5              
FFCB BDE0B3     JSR    $E0B3              
FFCE 20E0       BRA    $FFB0              
Quand on se branche en $FFE5 le Basic 1.0 démarre bien dans dcmoto.
Quand on exécute la procédure $E0B3, elle se termine normalement et on reboucle éternellement en $FFB0.
C'est certainement un bug de dcmoto, je continue les recherches.

A un certain moment de la procédure $E0B3, il y a une écriture en $E7D8. C'est probablement là l'erreur de dcmoto : il ignore cette écriture. En exécutant pas à pas, je vois que le programme cherche à écrire $80 en $E7D8, ce qui débloque la boucle infernale.

Code : Tout sélectionner

E040 8DEA       BSR    $E02C               7
E042 D649       LDB    /$49                4
E044 AAC5       ORA    B,U                 5
E046 A708       STA    $08,X               5
E048 4F         CLRA                       2
E049 39         RTS                        5
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

Ca n'a aucun rapport, mais cet octet $E7D8 sert aussi à la commutation des banques de ROM du contrôleur CD90-351 (bits 0 et 1).

Nouvelle version de test de dcmoto 2013.03.19 : http://dcmoto.free.fr/emulateur/prog/dc ... 130319.zip

Modifications par rapport à la version précédente :
- bit 7 de $E7D8 initialisé à zéro
- octet $E7D8 modifiable en écriture

Moyennant quoi la démo Elvis Lives fonctionne et le Basic 1.0 démarre sans disquette. Espérons qu'il n'y aura pas d'effets collatéraux.

Reste à traiter le cas des TO7 et TO7/70. C'est peut-être le même problème. Avec quel contrôleur peut-on reproduire l'erreur :?:
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: SDMOTO : nouvelle démo

Message par __sam__ »

Voici ce que je comprends du décodage de la rom. En gros c'est le code de détection de bootblock qui pose pb à DCMOTO:

Code : Tout sélectionner

FFB0 0F4A       CLR    /$4A               
FFB2 0F4B       CLR    /$4B               
FFB4 8601       LDA    #$01               
FFB6 974C       STA    /$4C               
FFB8 CE6200     LDU    #$6200             
FFBB DF4F       STU    /$4F               
FFBD 8EE7D0     LDX    #$E7D0             
FFC0 E684       LDB    ,X                 
FFC2 17E281     LBSR   $E246         ; charge 1er secteur en $6200     
FFC5 2409       BCC    $FFD0         ; si tout est ok, poursuite
FFC7 A608       LDA    $08,X         ; sinon: 
FFC9 2B1A       BMI    $FFE5         ; si déjà haute densité: sortie
FFCB BDE0B3     JSR    $E0B3         ; si basse densité ==> $E0B3 (passage en haute densité)
FFCE 20E0       BRA    $FFB0         ; reboucle. Donc 1ere passe en basse densité, et 2nd en haute, et 3eme => sortie
...
E0B3 8680       LDA    #$80            ; trucs pas interressants
E0B5 214F       BRN    $E106              
E0B7 2087       BRA    $E040              
...
E040 8DEA       BSR    $E02C               
E042 D649       LDB    /$49                
E044 AAC5       ORA    B,U                 ; A recoit $80 ici
E046 A708       STA    $08,X               ; passage en haute densité
E048 4F         CLRA                
E049 39         RTS                  
Donc ca boucle en basic1 tout simplement parce que le passage en haute densité de $E046 n'est pas honoré: le code boucle sur le passage en haute densité jamais enregistré au niveau de $E7D8.
Edit héhé je viens de voir qu'on a la même analyse. Tu as déjà fait une nouvelle version. C'est tout bon. L'émulation progresse, c'est une bonne chose. Le jour ou l'emul MAE sera dispo, je vais peut-être regarder si on peut faire du son multivoix asynchrone sur TO.
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
Avatar de l’utilisateur
irios
Messages : 3398
Inscription : 04 nov. 2007 19:47
Localisation : Rochefort du Gard (30)
Contact :

Re: SDMOTO : nouvelle démo

Message par irios »

Daniel, il faudra que tu viennes à la maison afin de pouvoir mettre les machines en tests avec l'analyseur logique et là tu pourras savoir exactement ce qui ce passe. :wink: Mais on verra çà dans les beaux jours car cela me laissera le temps de terminer le ménage dans mon atelier !! :mrgreen:
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: SDMOTO : nouvelle démo

Message par Daniel »

L'analyseur logique est pour moi le dernier recours quand toutes les autres techniques ont échoué.
Je ne suis pas encore arrivé à cette dernière extrémité pour l'émulation du TO9, par contre j'ai d'autres projets en cours pour lesquels un analyseur permettrait d'y voir plus clair. Je retiens donc ta proposition pour plus tard... Merci :!:
Daniel
L'obstacle augmente mon ardeur.
Répondre