[SDMOTO] fusion SDBOOT + demonstration SD

Cette catégorie traite de développements récents pour 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 : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

En testant un nouveau bricolage dont je parlerai bientôt, j'ai essayé les démos de musique sur MO5 avec l'interface SDMO. Elles ne se lancent pas.

Celles que j'ai refaites récemment (Annees80 et Elvis) fonctionnent :
- Sur TO avec SDMOTO (et contrôleur CS91-280 banque 0)
- Sur MO avec SDMOTO (et contrôleur CS91-280 banque 0)
- Sur MO avec SDMO (et contrôleur CS91-280 banque 1)

De même la dernière version de la vidéo Simon's Cat fonctionne sur les trois plateformes.

Je n'ai pas encore cherché le problème dans Sade, William Sheller, AC-DC, Sandra, etc., mais c'est sûrement un tout petit détail. Je voudrais que toutes les nouvelles productions utilisant la carte SD fonctionnent indifféremment dans tous les cas de figure, pour simplifier les démos et éviter d'avoir à gérer plusieurs versions.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

Quand tu dis que ca ne marche pas, tu veux dire que le fichier SD n'est pas reconnu, ou qu'il est reconnu se lance, plante, ou est reconnu, se lance mais le son est pourri ou carrément autre chose ?

En principe tous les SD que j'ai fait utilisent les 2560 premiers ko de elvis.sd comme fichier SD d'amorce. C'est une version de elvis.sd modifiée pour jouer les échantillons tous les 181cycles pour être au plus proche de 5512hz et qui a été formatée pour tenir sur les 40cols de mon écran TO. J'ai peut-être mal recopié.
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: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

J'ai l'impression que les données ne sont pas cherchées à la bonne adresse de la carte SD : au lieu d'afficher l'image, l'écran reste blanc. On entend le "toc" d'initialisation du CNA en sortie, mais aucun son n'est joué. Je vais essayer de trouver avec dcmoto, parce que le debuggage sur MO5 n'est pas un sport très facile.

A priori le fichier SDPLAY.BAS de lancement est le même pour Annees80, Elvis, et les nouvelles démos de __sam__, le problème doit être dans SDPLAY.BIN, c'est le seul programme modifié.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Trouvé !!!
Les démos de musique de __sam__ sont basées sur une ancienne version de sdplay, avant l'ajout de la compatibilité SDMO en version 2015.01.20. Il est donc normal qu'elles ne fonctionnent pas avec SDMO.

Ci-dessous ma dernière version de SDPLAY :

Code : Tout sélectionner

/**************************************************\
*                  S D P L A Y                     * 
*           (c) 2015 - Daniel Coulom               *  
*           http://dcmoto.free.fr/                 *
*           http://forum.system-cfg.com/           *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune  garantie  et *
* sans  engager  la  responsabilité  de  l'auteur. *
* Vous  pouvez  l' utiliser,  le  modifier  et  le *
* diffuser librement, en conservant cette  licence *
* et les références de l'auteur dans   toutes  les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/

* Ce programme utilise l'interface SDMOTO ou SDMO
* associee au controleur CS91-280 pour jouer de la
* musique en streaming.
* Il réalise les fonctions suivantes pour TO ou MO:
* - affichage d'une image monochrome (16 blocs)
* - envoi sur le CNA de musique 5586Hz 6 bits
* L'adresse en parametre de la commande CMD18
* doit être initialisee en $9E03-$9E06
*
* Utilisation du 2eme port joystick avec SDMOTO
* Port A $A7CC (pour les MO) ou $E7CC (pour les TO)
* PA5 en sortie --> SD Clock     SCK  DB9 pin 2
* PA6 en sortie --> SD Data IN   MOSI DB9 pin 3
* PA7 en entree <-- SD Data OUT  MISO DB9 pin 4
*
* Utilisation port magnetophone avec SDMO
* Port A $A7C0 pour les donnees 
* PA6 en sortie --> SD Data IN   MOSI DB9 pin 3
* PA7 en entree <-- SD Data OUT  MISO DB9 pin 4
* Port B $A7C2 pour l'horloge
* PA3 en sortie --> SD Clock     SCK  DB9 pin 2

/**************************************************\
*                Version 2015.02.01                *
\**************************************************/
* Historique
* 2015.02.01 correction du test SDMO/SDMOTO 
* 2015.01.20 ajout de la compatibilite SDMO
* 2015.01.16 periode de 179 cycles (5586,59 Hz)
* 2015.01.16 reorganisation et optimisation du code
* 2015.01.15 CLRA après lecture CRC2 pour test $FE
* 2015.01.15 ajout du depilage PC si sortie FIN
* 2015.01.14 passage à 32 octets supplémentaires
* 2014.08.07 correction bug (STA FIN1+1 et pas FIN+1)
* 2014.08.06 masquage des interruptions
* 2014.07.13 adaptation automatique pour MO ou TO
* 2014.02.06 correction bug : initialiser U pour CMD12
* 2014.02.06 correction bug : ajout CC dans PULS final
* 2013.12.30 ajout initialisation PIA pour carte SD
* 2013.10.21 ajout initialisation du CNA en sortie
* 2013.10.19 saisie manuelle de l'adresse pour CMD18
* 2013.10.19 indirection vers EXCMD en $A028
* 2013.10.18 premiere version avec controleur CS91-280

*------------------------------------------------------
* DEBUT DU PROGRAMME
*------------------------------------------------------
  ORG   $9E00 
  BRA   INIT          initialisations 

*------------------------------------------------------
* FONCTIONS D'ACCES A LA CARTE SD
*------------------------------------------------------
CMD18
  FCB   $52           read multiple block
  FDB   $0000         adresse bloc (poids fort)
  FDB   $0000         adresse bloc (poids faible)
  FCB   $FF           checksum non testee 
  FCB   $00           code retour attendu  
CMD12
  FCB   $4C           stop transmission
  FDB   $0000         dummy parameter
  FDB   $0000         dummy parameter
  FCB   $FF           checksum non testee 
  FCB   $00           code retour attendu  

*------------------------------------------------------
* Initialisations et execution CMD18 = Read-Multiple-Block
*------------------------------------------------------
INIT
  PSHS  U,Y,X,DP,B,A,CC  sauvegarde des registres du Basic
  ORCC  #$50
  LDX   #$1F40        adresse pour test RAM ou ROM
  LDB   ,X            lecture adresse X
  COM   ,X            tente de modifier adresse X
  CMPB  ,X            test modification adresse X
  BEQ   INIT1         pas de difference -> TO
  COM   ,X            retablissement adresse X
  LDA   #$A7          valeur initialisation DP pour MO
* Initialisation pour l'interface SDMO
* le test suivant doit être revu en fonction
* de la version de l'EPROM du controleur CS81-280  
  TST   $A700         test CS91-280 en mode SDMOTO
  BEQ   INIT2         CS91-280 en mode SDMOTO 
  LBSR  RBSDMO        modification routine RBYTE
  BRA   INIT2         suite des initialisations
INIT1
  LDY   #$4000        adresse de debut d'ecran    
  STY   DISPLAY+1     initialisation adresse ecran
  LDA   #$E0          valeur adresse EXCMD (poids fort)
  STA   READ+1        pour execution CMD18
  STA   FIN+4         pour execution CMD12
  LDA   #$E7          valeur initialisation DP pour TO
INIT2
  TFR   A,DP          initialisation DP
* Initialisation PIA pour SDMOTO
  LDA   <$CE          lecture registre de controle A
  ANDA  #$FB          raz bit 2 
  STA   <$CE          selection DDRA
  LDB   #$60          set bits 5 et 6
  STB   <$CC          bits MOSI et CLOCK en sortie
  ORA   #$04          set b2
  STA   <$CE          selection PA
* Initialisation CNA en sortie
  LDA   <$CF          lecture registre de controle B
  ANDA  #$FB          raz bit 2 
  STA   <$CF          selection DDRB
  LDB   #$3F          set bits 0-5 
  STB   <$CD          bits CNA en sortie
  ORA   #$04          set b2
  STA   <$CF          selection PB
* Lancement de la commande CMD18
  LDU   #CMD18        adresse commande CMD18
READ
  JSR   $A028         EXCMD = execution commande
*                     modifie en $E028 pour TO  

*------------------------------------------------------
* Affichage de l'image
*------------------------------------------------------
DISPLAY
  LDU   #$0000        adresse memoire video
  LDY   #$0010        nombre de blocs a lire
DISPL1      
  LBSR  RBYTE         lecture d'un octet
  CMPA  #$FE          test debut de bloc
  BNE   DISPL1        attente debut de bloc
  LDX   #$0200        nombre d'octets a lire
DISPL2
  LBSR  RBYTE         lecture d'un octet
  STA   ,U+           affichage       
  LEAX  -1,X          decrementation compteur 
  BNE   DISPL2        lecture octet suivant
  LBSR  RBYTE         lecture CRC1
  LBSR  RBYTE         lecture CRC2
  LEAY  -1,Y          decrementation compteur
  BNE   DISPL1        lecture bloc suivant
  BRA   PLAY

*------------------------------------------------------
* ARRET DE LA LECTURE ET RETOUR AU BASIC
*------------------------------------------------------
FIN
  LDU   #CMD12        adresse commande CMD12
  JSR   $A028         EXCMD = execution commande CMD12
*                     FIN+4 modifie en $E028 pour TO  
  PULS  B             depile compteur octets supplementaires
  PULS  CC,A,B,DP,X,Y,U,PC
     
*------------------------------------------------------
* Joue 2 octets et recupere 1 bit dans le premier
* avec test de fin sur le bit 7 de l'echantillon
* periode = 179 microsecondes
* decompte des cycles avec le BSR et le RTS :
* avant le premier echantillon : 7+158=165
* entre les deux echantillons : 4+2+6+6+158+3=179 
* apres le deuxieme echantillon : 4+5+5=14
* 14(apres le deuxieme)+165(avant le prochain)=179 
*------------------------------------------------------
PLAY2
* premier octet       158+4+2+6+6=176  
  LBSR  RBYTE         lecture echantillon       (158)
  STA   <$CD          envoi de l'echantillon      (4)
  ASLA                b7 dans carry               (2)
  ROL   ,X            stockage b7                 (6)
  NOP                 temporisation               (2)
  NOP                 temporisation               (2)
  NOP                 temporisation               (2)
  
* deuxieme octet      158+3+4+5+5=175 (+7 pour BSR) 
  LBSR  RBYTE         lecture echantillon       (158)
* test de fin
  BPL   PLAY21        pas d'octet fin de fichier  (3)
  LDX   #FIN          adresse routine de FIN
  STX   ,S            pour retour en FIN
PLAY21
  STA   <$CD          envoi de l'echantillon      (4)
  LBRN  $FFFF         temporisation               (5)
  RTS                 retour                      (5)

*------------------------------------------------------
* Lecture de la musique
*------------------------------------------------------
PLAY
  LEAU  $E000,U       adresse ecran = fin - $2000
  LEAX  $23,U         adresse haute buffer ecran
  LDB   #$20          compteur octets supplementaires
  PSHS  B             empilage compteur
      
*------------------------------------------------------
* Attente debut de bloc
*------------------------------------------------------
PLAY0
  LBSR  RBYTE         lecture d'un octet
  CMPA  #$FE          test debut de bloc
  BNE   PLAY0         attente debut de bloc

*------------------------------------------------------
* Boucle de lecture d'un bloc
*------------------------------------------------------
PLAY1
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
  BSR   PLAY2         joue 2 octets, stocke 1 bit
* joue 2 octets, complete l'octet supplementaire  
  LBRN  $FFFF         temporisation               (5)
  NOP                 temporisation               (2)
  LBSR  RBYTE         lecture echantillon       (158)
  STA   <$CD          envoi de l'echantillon      (4)
  ASLA                b7 dans carry               (2)
  ROL   ,X            stockage b7                 (6)
  LEAX  -1,X          modifie pointeur octet sup  (5)
  NOP                 temporisation               (2)
  NOP                 temporisation               (2)
  LBSR  RBYTE         lecture echantillon       (158)
  STA   <$CD          envoi de l'echantillon      (4)
  DEC   ,S            compteur octets supplement. (6)
  BNE   PLAY1         boucle suivante             (3)

*------------------------------------------------------
* Lecture des octets de CRC
*------------------------------------------------------

* premier octet CRC   158+3+5+4+5+2+2=179
  LBSR  RBYTE         lecture octet CRC         (158)
  LDD   #$0000        initialise A pour test $FE  (3) 
  LDB   1,X           chargement echantillon sup. (5)
  STB   <$CD          envoi de l'echantillon 1    (4)
  LEAX  2,X           incremente pointeur oct sup (5)
  NOP                 temporisation               (2) 
  NOP                 temporisation               (2) 

* deuxieme octet CRC  158+2+6+4=170
  LBSR  RBYTE         lecture octet CRC         (158)
  CLRA                initialise A pour test $FE  (2) 
  LDB   ,X+           chargement echantillon sup. (6)
  STB   <$CD          envoi de l'echantillon 2    (4)

*------------------------------------------------------
* Lecture des octets inter-blocs pendant l'envoi
* des echantillons supplementaires
*------------------------------------------------------

* Echantillon supplementaire n°3 (2+4+161+6+2+4=179)
  LDB   #$20          compteur echantillons sup.  (2) 
  STB   ,S            stocke le compteur          (4) 
  BSR   INTER         lecture octet inter-blocs (161)
  LDB   ,X+           chargement echantillon      (6)
  NOP                 temporisation               (2) 
  STB   <$CD          envoi de l'echantillon 3    (4)

* Echantillons supplementaires 4 a 32 
  LDY   #$001D        compteur pour 29 boucles    (4)
  NOP                 temporisation               (2) 
  NOP                 temporisation               (2) 
* La boucle SUPP s'execute en 161+6+4+5+3=179 cycles
SUPP
  BSR   INTER         lecture octet inter-blocs (161)
  LDB   ,X+           chargement echantillon      (6)
  STB   <$CD          envoi de l'echantillon      (4)
  LEAY  -1,Y          decremente le compteur      (5)
  BNE   SUPP          nouvelle boucle             (3)
  
* Preparation de la lecture du bloc suivant   
  LEAX  -1,X          retablit pointeur           (5)
  CMPA  #$FE          test début de bloc          (2)
  BEQ   PLAY1         traitement du bloc suivant  (3)
  BRA   PLAY0         attente octet $FE           (3) 

*------------------------------------------------------
* LIRE UN OCTET INTER-BLOCS SI NECESSAIRE 
* Total avec BSR : 7+2+3+144+5=161 
*------------------------------------------------------
INTER
  CMPA  #$FE          test debut de bloc          (2)
  BNE   RBYTE         lecture octet inter-blocs   (3)
     
*------------------------------------------------------
* Temporisation 149 cycles (equivalent RBYTE + RTS)
* boucle de temporisation : 28x5=140 cycles
* total : 2+140+2+5= 149
*------------------------------------------------------
  LDB   #$1C          compteur de boucles         (2) 
TEMPO      
  DECB                decremente le compteur      (2)
  BNE   TEMPO         nouvelle boucle             (3)
  NOP                 temporisation               (2) 
  RTS                                             (5)

*------------------------------------------------------
* LECTURE D'UN OCTET AVEC SDMOTO
* Le registre B n'est pas preserve
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTE
* premier bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* deuxieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* troisieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* quatrieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* cinquieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* sixieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* septieme bit
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
* huitieme bit 
  LDB   #$7F          Valeur pour test bit 7      (2)
  CMPB  <$CC          PA b7 (bit lu) -> carry     (4)
  STB   <$CC          clock high, di high         (4)
  LDB   #$5F          clear bit 5                 (2)
  STB   <$CC          clock low, di high          (4)
  ROLA                C (bit lu) -> b0 reg A      (2)
*
  RTS                 retour (octet dans A)       (5)

* longueur totale avec BSR: 7 + 18*8 + 5 = 156
*                avec LBSR: 9 + 18*8 + 5 = 158

*------------------------------------------------------
* LECTURE D'UN OCTET AVEC SDMO
* Le registre B n'est pas preserve
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTEMO
* premier bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* deuxieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* troisieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* quatrieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* cinquieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* sixieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* septieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
* huitieme bit
  LDB   #$7F          Valeur pour test bit 7    (2)
  STB   <$C2          clock high                (4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (4)
  LDB   #$36          clear bit 3               (2)
  STB   <$C2          clock low                 (4) 
  ROLA                C (bit lu) -> b0 reg A    (2)
*
  RTS                 retour (octet dans A)     (5)

* longueur totale avec BSR: 7 + 18*8 + 5 = 156
*                avec LBSR: 9 + 18*8 + 5 = 158

*------------------------------------------------------
* REMPLACEMENT DE LA ROUTINE RBYTE POUR SDMOTO
* PAR LA ROUTINE RBYTEMO POUR SDMO
*------------------------------------------------------
RBSDMO
  LDY   #RBYTEMO      adresse routine SDMO   
  LDX   #RBYTE        adresse routine RBYTE
RBSDMO1
  LDB   ,Y+           lecture routine SDMO
  STB   ,X+           ecriture routine RBYTE
  CMPX  #RBYTEMO      test de fin
  BNE   RBSDMO1       nouvelle boucle
  RTS                 retour

  END

Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

Le code source est sur la D7. Normalement j'ai pas modifié les adresses qui se trouvent au début du bin.

[EDIT] Effectivement, je m'étais basé sur la version 2015.01.16 qui était la toute dernière que j'avais récupéré. Je n'avait même pas fais gaffe qu'il y ait une version plus récente. Tu as du voir cela très tôt en listant l'en-tête reformaté en 40 cols. (obligé car sinon tout ce qui dépasse 40 cols est perdu dans l'assembler 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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Pas facile, la gestion des versions. A peine j'en diffuse une qu'il y en a une ou deux autres en chantier. Et sur le site dcmoto il y a un vaste échantillon des programmes, depuis 2012. Je ne suis même pas sûr que tous fonctionnent encore avec les nouvelles versions de l'EPROM. Je me console en disant que c'est au moins la preuve que le système progresse. Dans les deux dernières années il y a eu des progrès considérables, et toutes les anomalies ont été corrigées, ou au moins identifiées.

J'ai encore en projet une nouvelle version de l'EPROM avec une signature différente pour SDMOTO et SDMO, afin que les programmes puissent savoir quelle interface est utilisée. Aujourd'hui je teste $A700/$E700 à zéro pour DCMOTO et différent de zéro pour SDMO, mais c'est très mauvais car à la moindre modification le test peut changer.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

C'est certain: un programme qui n'évolue plus est un programme mort.
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
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

Daniel a écrit :Ci-dessous ma dernière version de SDPLAY :

Code : Tout sélectionner

* Historique
* 2015.02.01 correction du test SDMO/SDMOTO 
* 2015.01.20 ajout de la compatibilite SDMO
* 2015.01.16 periode de 179 cycles (5586,59 Hz)
Daniel, sur la page http://dcmoto.free.fr/programmes/sdmoto ... index.html je ne trouve pas cette version, uniquement celle du 16 janvier. Normalement, on peut trouver la dernière version à quelle adresse ?

Par ailleurs, comment peut on tester l'interface SDMO sur émulateur ? Le fichier ELVIS.SD ne contient pas DOS pour MO5 il me semble.
Dernière modification par __sam__ le 15 févr. 2015 18:14, 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
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Oui, c'est entièrement de ma faute, j'ai oublié d'uploader le programme après mise à jour.
Je viens de le faire pour sdmoto-elvis et sdmoto-annees80 (c'est le même programme).
Il faut peut-être vider le cache pour être sûr de télécharger la dernière version.
Sinon, j'ai posté le code source de cette dernière version 5 posts plus haut.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

J'ai reporté les modifs sur la version de ELVIS.SD modifiée 181cycles. Ca marche avec SDMOTO. Comment tester pour SDMO ?
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: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Pour tester SDPLAY avec l'interface SDMO, il faut :
- Un MO5
- Le contrôleur CS91-280 avec le switch 7 positionné sur la banque 1
- Un doubleur de bus
- Un contrôleur musique et jeux
- L'interface SDMO connectée au port magnétophone

Mais il n'y a pas trop de suspens, ça marche forcément sauf énorme bêtise. Si tu m'envoies les fichiers SDPLAY.ASM et SDPLAY.BIN je peux mettre à jour tous tes fichiers .sd de musique et les essayer chez moi.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

Ok, il faut une machine physique. Mais comment fais tu pour booter le DOS depuis le MO5 sachant que le fichier de musique SD ne le contient pas ? Tu pré-charges le player basic et binaire depuis la K7 ?

Dans tous les cas voici un ZIP qui contient le code ASM que j'utilise sous assembler v3 ainsi que le fichier BIN correspondant.
Pièces jointes
sdplay.zip
(5.15 Kio) Téléchargé 114 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: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Sur la carte SD j'ai un fichier boot.sd contenant le DOS MO5 et le programme SDSEL.
A la mise sous tension le contrôleur CS91-280 monte le fichier boot.sd. Le MO5 charge le DOS et lance ensuite SDSEL grâce à un AUTO.BAT. J'obtiens ainsi la liste des fichiers de la carte, je sélectionne le fichier de musique et je lance le programme par RUN"AUTO.BAT".

Si le DOS est chargé, il reste en mémoire jusqu'au prochain hardreset. Avec le MO5, seule la commande "DOS" ou la mise hors-tension provoque le hardreset. On peut donc changer le fichier .sd sans recharger le DOS, il suffit qu'il soit sur le fichier .sd de boot.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SDMOTO] fusion SDBOOT + demonstration SD

Message par __sam__ »

Et sous DCMOTO c'est le même genre de manip je présume: Boot sur un SD contenant le dos MO5, reset à chaud, changement de SD, et boot sur elvis.sd ?
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: [SDMOTO] fusion SDBOOT + demonstration SD

Message par Daniel »

Oui, c'est exactement ça.
Sur MO5, on a le choix entre les deux interfaces :
- SDMOTO : sélectionner le contrôleur CS91-280 dans les options et cocher Interface SDMOTO dans "Supports amovibles"
- SDMO : sélectionner le contrôleur CS91-281 dans les options et cocher Interface SDMO dans "Supports amovibles"
Dans les options, CS91-280 charge la banque 0 de l'EPROM du contrôleur et CS91-281 charge la banque 1.
C'est l'équivalent du switch 7 du boîtier nanoréseau : ON = banque 0, OFF = banque 1.

J'ai testé la nouvelle version de SDPLAY. Dans le fichier SDPLAY.BIN il manque l'adresse d'exécution dans les 4 derniers octets. Je l'ai ajoutée ($9E00), et j'ai refait les 9 fichiers .sd de musique. Tout fonctionne bien sur mon MO5 à contrôleur CS91-280 interne, avec l'interface SDMO sur port magnétophone et le contrôleur SX90-018 pour l'extension musique.

C'est appréciable d'avoir un seul fichier .sd compatible MO et TO et aussi SDMO et SDMOTO. Je souhaite en faire une règle pour toutes les nouvelles démos, ce sera beaucoup plus simple qu'une version différente pour chaque configuration, et pas très compliqué à programmer.

Aujourd'hui le test de la banque 0 ou 1 du contrôleur CS91-280 n'est pas bon : je teste l'octet $A700/$E700 à zéro pour la banque 0, mais ça peut changer à chaque nouvelle version. La nouvelle norme sera celle-ci :
- La banque 0 du contrôleur CS91-280 contiendra $B0 en $A76F/$E76F
- La banque 1 du contrôleur CS91-280 contiendra $B1 en $A76F/$E76F
Ce n'est pas encore le cas dans les versions de l'EPROM jusqu'à 2014.12.28, ne pas appliquer cette méthode avant la prochaine release.
Daniel
L'obstacle augmente mon ardeur.
Répondre