[Thomson] SDDRIVE

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

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

Re: [Thomson] SDDRIVE

Message par Daniel »

Effectivement, les modules Catalex ne sont pas tous équivalents. En particulier les versions 1.0 du 09/02/2013 ont un buffer Fairchild V125, alors que les versions 1.0 du 11/01/2013 ont un buffer Texas Instruments LV125A. Les seuils de basculement entre l'état bas et l'état haut ne sont pas identiques, je l'ai constaté lors de mes premiers essais du module TO8SD en 2013. Connaissant le problème, j'ai essayé les deux versions avec SDDRIVE. Avec le MO5 les deux fonctionnent bien, avec le TO8 les deux ne fonctionnent pas.

Pareil pour l'analyseur logique, j'avais déjà remarqué. Entre la mauvaise qualité de l'appareil et la longueur des fils, il y a beaucoup de raisons de perturber le montage, quelquefois dans le mauvais sens mais aussi quelquefois dans le bon sens : j'ai déjà eu un module qui marchait bien avec l'analyseur logique, et il ne marchait plus s'il était débranché. J'ai donc fait des tests avec et sans analyseur.

Un autre problème bien connu est la longueur du bus. Avec mon tripleur de bus à base de nappe à 20 fils il y a de subtiles différences selon la distance du module par rapport au connecteur de l'ordinateur. J'ai donc fait des essais avec le module SDDRIVE connecté directement au bus d'extension de l'ordinateur. Mais il y a quand même quelques centimètres de fils et les perturbations viennent peut-être de l'absence de protection contre les rebonds ou des parasites. A ces fréquences de l'ordre du MHz il se produit des phénomènes curieux.

Je soupçonne de plus en plus des anomalies dans les signaux du bus d'adresse, et je vais poursuivre les investigations dans ce sens. Le plus étonnant est la différence de comportement entre le TO8 et le MO5, je n'arrive pas à l'expliquer. Il faudra que j'essaie aussi avec un MO6.

[Edit]
Essai réalisé avec le MO6 : tout fonctionne parfaitement bien, comme avec le MO5.
Pour cet essai, exactement le même matériel, avec les mêmes cartes SD, a été utilisé. J'ai simplement débranché du TO8 pour brancher sur le MO6 sans rien changer. Le TO8 a bien une particularité, mais laquelle ? Je vais en essayer plusieurs, pour voir s'il y a une différence.
J'ai envisagé une erreur d'adresse, puisque la carte mémoire des TO et des MO est différente. Mais dans certaines conditions "anormales" (tension 5,2V abaissée par une LED en série) le montage fonctionne, donc le programme n'est pas en cause.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Nouvel essai ce matin avec un TO8D : l'interface SDDRIVE fonctionne parfaitement bien, comme avec le MO6 et le MO5.

D'un côté ça me rassure : le schéma de SDDRIVE est bon et le logiciel fonctionne aussi bien sur TO que sur MO.
D'un autre côté je comprends de moins en moins cette incompatibilité avec le TO8.
Nouveaux essais prévus avec d'autres TO8 pour faire avancer le schmilblick.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] SDDRIVE

Message par __sam__ »

Oui c'est peut-être le TO8 de test qui pose 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 : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Nouveaux essais de l'interface SDDRIVE :
- Avec un TO7/70 : OK
- Avec un autre TO8 : même problème qu'avec le premier

Donc en résumé l'interface fonctionne bien avec les MO5, MO6, TO7/70, TO8D.
Elle ne fonctionne pas avec deux TO8 différents.
Pourquoi ? Le mystère reste entier...
A noter que le dernier TO8, quand je l'ai mis sous tension, était alimenté en 5,28V. Pas d'impact apparent sur le fonctionnement, mais c'est hors normes pour les circuits logiques. J'ai donc ajusté l'alimentation à 5,0V avant de faire le test de SDDRIVE.
Demain j'essaierai deux ou trois autres TO8 pour être sûr.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [Thomson] SDDRIVE

Message par fneck »

C'est vraiment bizarre cette histoire de TO8 :cry:
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] SDDRIVE

Message par 6502man »

Est ce que tu as fait le test avec un autre type de buffer que le 74LS125 ? par exemple avec un 74LS07 74LS241 ?
Ou du type 74HC ou 74HCT (plus rapide) ?
Ou ça n'a aucun impact sur le fonctionnement ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Tous les Thomson sont en technologie LS, les niveaux ne sont pas compatibles avec la série HC. La série HCT pourrait convenir, mais elle est un peu plus lente, et je préfère ne pas mélanger. Le 74LS07 ne convient pas (il n'a que deux états en sortie). Le 74LS241 est peut-être utilisable mais je n'ai pas essayé, il faudrait pour cela faire un nouveau prototype et c'est très long.

Plutôt que de tester des solutions au hasard, je préfère mettre en évidence la cause du problème et je vais faire des mesures pour la déterminer scientifiquement. Finalement c'est une énigme assez passionnante, car il n'y a pratiquement aucune différence de schéma entre le TO8 et le TO8D, à part l'alimentation et le condensateur X2 anti-parasites. Personne n'aurait pu prévoir ce comportement, mais il a une raison et je la trouverai.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
gleike
Messages : 1341
Inscription : 16 oct. 2014 11:12
Localisation : Ludres (54710) Meurthe & Moselle

Re: [Thomson] SDDRIVE

Message par gleike »

Les roms des TO8D sont elles différentes des roms des TO8 ?
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Les roms BASIC 1.0 et BASIC512 sont identiques pour tous les TO8 et TO8D que j'ai pu analyser.

Il y a deux ou trois roms différentes connues pour le moniteur TO8, une seule rom connue pour le TO8D. Ces roms sont assez semblables mais pas identiques. La plus grosse différence est le logo (TO8 ou TO8D). Il est difficile à priori de trouver dans le moniteur une raison au comportement différent de SDDRIVE, toutefois l'hypothèse d'un problème soft n'est pas exclue.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

La mise au point de SDDRIVE se poursuit. C'est plus difficile que je l'imaginais, mais ça avance. La preuve avec cette démonstration de musique que je viens d'entendre pour la première fois ce matin sur un MO5. Elle m'a remonté le moral après des heures de galère sur le projet.
sddrive-imagine_win.zip
(948.92 Kio) Téléchargé 174 fois
sddrive-imagine.png
sddrive-imagine.png (2.27 Kio) Consulté 5658 fois

Pour résumer, c'est l'équivalent de SDMOTOPLAY avec une fréquence d'échantillonnage deux fois plus élevée. Sans être encore de la haute-fidélité, je trouve que c'est bien pour un MO5. Qu'en pensez-vous ?

Remarquez la vitesse d'affichage de l'image. Elle montre bien la différence de débit avec une disquette (à peu près quatre fois plus).
Daniel
L'obstacle augmente mon ardeur.
Patrick
Messages : 2019
Inscription : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Thomson] SDDRIVE

Message par Patrick »

Si c'était facile, cela n'aurait aucun intérêt :D.
Je ne suis pas mélomane, mais je trouve ça très bien.
Patrick
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Après de nombreux tests, j'ai pu mettre en évidence une anomalie :
Le signal d'horloge SPI est généré par un 74LS133 (porte NAND à 13 entrées). C'est un créneau de 1µs que l'on voit bien avec l'analyseur logique. Mais on voit aussi qu'il est précédé, 1µs plus tôt, d'un "glitch" de 42 nanosecondes. Ce glitch est la cause de tous les problèmes rencontrés.

sddrive-glitch.png
sddrive-glitch.png (35.32 Kio) Consulté 5610 fois

Curieusement, il n'y a pas de défaut quand le programme d'initialisation de la carte SD est en RAM ($9000-$9FFF). C'est le cas pour SDDRIVE_PLAY (démo Imagine), qui fonctionne parfaitement bien. Je l'ai lancé des dizaines de fois sans aucun problème. Le glitch apparaît lorsque le programme d'initialisation est dans une EPROM ($A000-$A6FF). Et en particulier avec le contrôleur SDDRIVE.

Les lignes d'adresse, en entrée du 74LS133, sont déjà filtrées par une résistance de 100 ohms en série suivie d'un condensateur de 100pF en parallèle (comme dans l'extension MO5). Je peux essayer d'augmenter la valeur de la résistance et/ou du condensateur, ou mettre aussi un filtre en sortie du 74LS133. Qu'en pensent les électroniciens ? Y-a-t'il des techniques connues et éprouvées pour supprimer ce genre d'erreur ?
Daniel
L'obstacle augmente mon ardeur.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: [Thomson] SDDRIVE

Message par jasz »

Daniel a écrit : 05 déc. 2017 11:15 La mise au point de SDDRIVE se poursuit. C'est plus difficile que je l'imaginais, mais ça avance. La preuve avec cette démonstration de musique que je viens d'entendre pour la première fois ce matin sur un MO5. Elle m'a remonté le moral après des heures de galère sur le projet.
Impressionnant! :shock: 8)
Avatar de l’utilisateur
boris
Messages : 355
Inscription : 04 mars 2011 13:55
Localisation : Normandie (près d'Honfleur)
Contact :

Re: [Thomson] SDDRIVE

Message par boris »

Ouahhhh !!!! je suis bluffé
vraiment bravo Daniel

ps : étant fan des Beatles (67-70) cool d'entendre ce bon vieux John bien qu'a l'époque
il était déjà avec une certaine Yoko ...
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] SDDRIVE

Message par Daniel »

Par rapport à vous j'ai un grand privilège : j'ai écouté la démo Imagine avec un vrai MO5 8)
Avec un bon amplificateur et de bonnes enceintes derrière, ça rend encore mieux qu'en émulation. Le seul défaut est un petit bruit de fond parasite généré par les circuits logiques du MO5, mais ça ne s'entend que dans les passages à très faible niveau.

Ci-dessous le programme pour jouer la musique :

Code : Tout sélectionner

/**************************************************\
*            S D D R I V E _ P L A Y               * 
*           (c) 2017 - 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 SDDRIVE pour
* jouer de la musique en streaming.
* Il est lance par le programme SDBOOT.BAS et
* ne necessite pas de controleur de carte SD.
* Frequence d'echantillonnage 11764 Hz

/**************************************************\
*                Version 2017.12.04                *
\**************************************************/
* Historique
* 2017.12.04 premiere version avec interface SDDRIVE

*------------------------------------------------------
* INITIALISATIONS
*------------------------------------------------------
  ORG   $9D00 
  TFR   DP,A          valeur du registre DP   
  CMPA  #$E7          test valeur DP
  BEQ   INIT2         initialisations TO

*------------------------------------------------------
* INITIALISATIONS COMMUNES MO5-MO6
*------------------------------------------------------
  LDU   #$A7C0        adresse selection banque video
  LDY   #$0000        adresse debut ecran
  LDB   #$07          octet couleur
  BSR   COLOR         initialisation couleurs
  LDA   $FFF0         type d'ordinateur
  BNE   INIT3         MO6   

*------------------------------------------------------
* INITIALISATION COULEUR CADRE MO5
*------------------------------------------------------
INIT1
  LDA   <$C0          port A du PIA systeme
  ANDA  #$E1          raz couleur cadre
  ORA   #$0E          couleur cadre 7 (blanc) 
  STA   <$C0          change couleur cadre
  BRA   INIT6         suite des initialisations

*------------------------------------------------------
* INITIALISATIONS COMMUNES TO7-TO8-TO9 
*------------------------------------------------------
INIT2
  LDU   #$E7C3        adresse selection banque video
  LDY   #$4000        adresse debut ecran
  STY   DISPLAY+1     initialisation adresse ecran
  LDB   #$C7          octet couleur
  BSR   COLOR         initialisation couleurs
  LDA   $FFF0         type d'ordinateur
  CMPA  #$02          test TO9
  BEQ   INIT4         initialisation couleur cadre TO9
  CMPA  #$03          test TO8, TO8D
  BEQ   INIT3         initialisation couleur cadre TO8  
  CMPA  #$06          test TO9+
  BEQ   INIT3         initialisation couleur cadre TO9+  

*------------------------------------------------------
* INITIALISATION COULEUR CADRE TO7 T07/70
*------------------------------------------------------
  LDA   <$C3          port C du 6846
  ANDA  #$8F          raz couleur cadre
  ORA   #$70          initialisation couleur cadre
  STA   <$C3          changement couleur cadre TO7
  BRA   INIT6         suite des initialisations

*------------------------------------------------------
* INITIALISATION COULEUR CADRE MO6-TO8-TO9 
*------------------------------------------------------
INIT3
  LDA   #$07          couleur cadre 7 (blanc TO8-MO6)
  BRA   INIT5         modification couleur cadre
INIT4
  LDA   #$0F          couleur cadre F (blanc TO9)
INIT5
  CLR   <$E4          selection registre systeme 2          
  ORA   <$E4          ajout des bits D7-D4 de <$DD
  STA   <$DD          change couleur cadre TO8/MO6/TO9
  BRA   INIT6         suite des initialisations

*------------------------------------------------------
* Initialisation couleur noir/blanc (Y = debut ecran)
* Adresse du bit de selection banque video dans U
* Adresse octet couleur dans B
*------------------------------------------------------
COLOR   
  LDA   ,U            octet de selection banque video
  ANDA  #$FE          clear bit 0
  STA   ,U            selection video couleur
  LDX   #$1F40        compteur de boucles
  TFR   B,A           code couleur sur deux octets
COLOR1  
  STD   ,Y++          initialise deux octets
  LEAX  -2,X          comptage
  BNE   COLOR1        boucle
  INC   ,U            selection video forme
  RTS

*------------------------------------------------------
* Initialisation CNA en sortie
*------------------------------------------------------
INIT6
  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 et saut d'un bloc
*-------------------------------------------------------
READ
  LDX   $9FFC         adresse EXCMD
  LDU   $9FFE         adresse commande CMD17
  INC   ,U            transforme CMD17 en CMD18 
  JSR   ,X            EXCMD = execution commande
  LBSR  SAUT          lecture bloc (programme sddrive_play)

*------------------------------------------------------
* 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

*------------------------------------------------------
* RETOUR AU BASIC
*------------------------------------------------------
FIN
  PULS  B             depile compteur octets suppl. 
  PULS  CC,A,B,DP,X,Y,U,PC depile tous les registres
     
*------------------------------------------------------
* 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+64=71
* entre les deux echantillons : 4+2+6+6+64+3=85 
* apres le deuxieme echantillon : 4+5+5=14
* 14(apres le deuxieme)+71(avant le prochain)=85 
*------------------------------------------------------
PLAY2
* premier octet       64+4+2+6+6=82  
  LBSR  RBYTE         lecture echantillon        (64)
  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      64+3+4+5+5=81 (+7 pour BSR) 
  LBSR  RBYTE         lecture echantillon        (64)
* 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        (64)
  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        (64)
  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   64+3+5+4+5+2+2=85
  LBSR  RBYTE         lecture octet CRC          (64)
  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  64+2+6+4=76
  LBSR  RBYTE         lecture octet CRC          (64)
  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+57+6+2+4=85)
  LDB   #$20          compteur echantillons sup.  (2) 
  STB   ,S            stocke le compteur          (4) 
  BSR   INTER         lecture octet inter-blocs  (57)
  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  (57)
  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+50+5=67 
*------------------------------------------------------
INTER
  CMPA  #$FE          test debut de bloc          (2)
  BNE   RBYTE         lecture octet inter-blocs   (3)
     
*------------------------------------------------------
* Temporisation 55 cycles (equivalent RBYTE + RTS)
* boucle de temporisation : 9x5=45 cycles
* total : 2+45+3+5=55
*------------------------------------------------------
  LDB   #$09          compteur de boucles         (2) 
TEMPO      
  DECB                decremente le compteur      (2)
  BNE   TEMPO         nouvelle boucle             (3)
  BRN   TEMPO         temporisation               (3)
  RTS                                             (5)
  
*------------------------------------------------------
* Saut de 512 octets 
*------------------------------------------------------
SAUT
  BSR   RBYTE         lecture octet
  CMPA  #$FE          comparaison avec $FE
  BNE   SAUT          attente debut secteur
  LDX   #$0200        initialisation compteur
SAUT1
  BSR   RBYTE         lecture d'un octet
  LEAX  -1,X          decrementation compteur
  BNE   SAUT1         nouvelle lecture
  BSR   RBYTE         lecture CRC1
  BSR   RBYTE         lecture CRC2
  RTS                 retour

*------------------------------------------------------
* LECTURE D'UN OCTET AVEC SDDRIVE (50+5 cycles)
* Le registre B n'est pas preserve
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTE
  LDB   #$7F          initialiser B pour lecture (2)
  CMPB  <$BF          lecture bit 7              (4)
  ROLA                pousser dans A             (2)
RBYTE6                                      
  CMPB  <$BF          lecture bit 6              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 5              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 4              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 3              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 2              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 1              (4)
  ROLA                pousser dans A             (2)
  CMPB  <$BF          lecture bit 0              (4)
  ROLA                pousser dans A             (2)
  RTS                 retour octet dans A        (5)

* longueur totale avec BSR: 7 + 50 + 5 = 62
*                avec LBSR: 9 + 50 + 5 = 64

*------------------------------------------------------
  ORG   $9EFF
  FCB   $00           pour remplir 1 secteur complet  

  END

Maintenant que l'interface est au point, j'aimerais bien résoudre ce problème de glitch pour finir la mise au point de la partie "contrôleur de disquettes". J'ai hâte de savoir combien de temps il faut pour charger TurboCup. Avec le contrôleur de disquette du TO8D c'est 1'13", avec le contrôleur CS91-280 c'est 56". J'espère arriver à moins de 30" avec SDDRIVE.
Daniel
L'obstacle augmente mon ardeur.
Répondre