[Thomson] Lecture du répertoire d'une carte SD

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 : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

Première étape OK : le test en émulation fonctionne.
J'ai un peu simplifié en allant chercher directement le numéro de cluster en RAM sans le charger dans le registre D.

Code : Tout sélectionner

*------------------------------------------------------
* INITIALISATION DU LBA DE LA DISQUETTE DE DEMARRAGE
* SD_LB0 = nombre de secteurs par cluster (1 octet)
* SD_LB0+2 = numero de secteur du boot sector (2 octets)
* 26,X = n° cluster relatif au boot sector (poids faible)
* 27,X = n° cluster relatif au boot sector (poids fort)
*
* LBA0      =    XX YY
* N*CLUSTER = UU VV 00 (UU VV = N*A)
*           + 00 ZZ TT (ZZ TT = N*B)
* LBA       = (UU+carry2) (VV+XX+ZZ+carry1) (TT+YY)
*                     /|\    |          /|\    |
*                      |_____|           |_____|
*
* Code original de Samuel Devulder
*------------------------------------------------------
FBOOT  
  LDA   27,X       ; Cluster poids fort
  LDB   SD_LB0     ; Nombre de secteurs par cluster
  MUL              ; D = msb(CLUSTER)*N = UU VV
  ADDB  SD_LB0+2   
  ADCA  #0         ; D = UU (VV+XX). Nota: Si SD_LB0+1 contient déjà 0, ADDD SD_LB0+1 suffit.
  STD   SD_LB0+1   ; sauvé en SD_LB0+1
  LDA   26,X       ; Cluster poids faible
  LDB   SD_LB0     ; Nombre de secteurs par cluster
  MUL              ; D = lsb(CLUSTER)*N = ZZ TT
  ADDD  SD_LB0+2   ; D = (VV+XX+ZZ+carry1) (TT+YY)
  STD   SD_LB0+2   ; (VV+XX+ZZ+carry1) (TT+YY) placé en LB0+2
  LDB   SD_LB0+1   ; B=UU
  ADCB  #0         ; B=UU+carry2
  CLRA             ; A=0
  STD   SD_LB0     ; SD_LB0 = 00 (UU+carry2) (VV+XX+ZZ+carry1) (TT+YY)
  TST   SD_TYP
  BNE   FBOOT9     ; ben oui  tout est déjà fait pour les cartes SDHC
* recopie + decalage pour carte SD
  STB   ,-S        ; sauvegarde UU+carry2
  LDD   SD_LB0+2   ; D=(VV+XX+ZZ+carry1) (TT+YY)
  LSLB
  ROLA             ; D*2
  STD   SD_LB0+1   ; sauvé en SD_LB0+1
  LDB   ,S+        ; UU+carry2
  ROLB             ; (UU+carry2)*2 + "carry de D*2"
  STB   SD_LB0     ; sauvé en SD_B0
  CLR   SD_LB0+3   ; 0 au bon endroit
FBOOT9  
  CLRA                0 dans code condition
  RTS                 retour
 
Le programmateur d'EPROM est déjà prêt, le test sur le vrai TO8 est imminent, le suspens est insoutenable...
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

Le premier test n'a pas fonctionné, mais j'ai récupéré tous les éléments pour analyser l'erreur.

Sur la carte il y a les données suivantes :
- Boot Sector : secteur $0000
- Secteurs réservés : 4
- Secteurs par cluster : 4
- Nombre de FATs : 2
- Taille d'une FAT : $00F2 secteurs
Le début du répertoire principal est en $0003D000 et la fin est en $00041000

La recherche du répertoire principal, puis la recherche du fichier BOOT.SD dans le répertoire ont bien fonctionné.
Le premier cluster de BOOT.SD (lu dans le répertoire) est $5007.

Ensuite les calculs sont faux :
- Le fichier BOOT.SD est en réalité en $02843800
- Le programme codé dans l'EPROM trouve $02103800

Le calcul manuel avec ma formule n'arrive pas au même résultat. Il donne $02840800, ce n'est pas encore la bonne adresse, donc la formule est fausse. Je prends comme origine le Boot Sector, mais en réalité ce n'est pas bon.

Si je prends comme origine la fin du répertoire principal, le calcul est le suivant : $041000 + 4 * $5007 = $02844800
Ce n'est pas loin, mais toujours inexact. Il y a 8 secteurs d'écart, soit 2 clusters. Cet écart de 2 clusters se retrouve en examinant le numéro de cluster du premier fichier du répertoire. Ce fichier se trouve physiquement sur la carte juste à la fin du répertoire principal, en $00041000, et son numéro de cluster indiqué par l'entrée de répertoire est 2. Bizarre... Peut-être une histoire d'alignement sur une frontière de piste ou de cylindre.

La première priorité est maintenant de trouver sur internet la formule exacte. Ensuite il faudra trouver la cause de la différence entre le calcul manuel et le calcul du programme. Rien de bien difficile à priori, j'ai bon espoir. A suivre...

[Edit]
Premier élément de réponse trouvé dans un document Microsoft :
Microsoft Extensible Firmware Initiative
FAT32 File System Specification
FAT: General Overview of On-Disk Format


En FAT16 la zone de données commence après la directory. Le premier cluster de cette zone n'est pas numéroté 0, ni 1, mais 2.
The start of the data region, the first sector of cluster 2, is computed as follows:

If(BPB_FATSz16 != 0)
FATSz = BPB_FATSz16;
Else
FATSz = BPB_FATSz32;

FirstDataSector = BPB_ResvdSecCnt + (BPB_NumFATs * FATSz) + RootDirSectors;
Please read everything in this section carefully, all of the words are important. For example, note that the statement was “count of clusters.” This is not the same thing as “maximum valid cluster number,” because the first data cluster is 2 and not 0 or 1.
Ce n'est pas facile à deviner :wink:
Le premier problème est réglé, je passe au suivant...
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par 6502man »

Comme d'habitude il y a toujours des pièges impossibles à deviner, encore que tu as trouvé l'info parceque dans certains cas c'est la galère à trouver :lol:
Phil.

www.6502man.com

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

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

Succès en FAT16

A l'instant je viens de démarrer le TO8 avec une carte microSD de 128Mo en FAT16 et l'EEPROM corrigée.
Le répertoire de la carte est lu, l'entrée de répertoire BOOT.SD est trouvée, le numéro de cluster est récupéré, le calcul de __sam__ donne le numéro de secteur de début du fichier, l'image de disquette est montée, l'émulation de disquette fonctionne :D
Et il reste encore 192 octets libres dans l'EEPROM :D

C'est encourageant pour la suite, mais ce n'est pas fini. Reste à tester des cartes SD de différentes capacités, avec des tailles de cluster différentes, partitionnées ou pas. Puis les cartes SDHC. Puis la FAT32. Mais maintenant c'est de la routine, l'étape la plus difficile est franchie.

Je peux annoncer qu'en 2015 le programme bootaddress, la modification de la carte SD avec un éditeur hexadécimal et la saisie de l'adresse physique pour changer d'image de disquette seront de lointains souvenirs.

Il suffira de copier les fichiers .sd dans la carte : environ 2 secondes pour 4 faces de disquettes. L'image BOOT.SD sera montée à la mise sous tension, et le changement d'image se fera par simple choix dans un menu déroulant. Les utilisateurs le demandaient depuis longtemps, je vais enfin pouvoir les satisfaire. Ils peuvent aussi remercier __sam__ :D

Le code "brut" qui a fonctionné est ci-dessous, il peut très certainement être amélioré.

Code : Tout sélectionner

                      *------------------------------------------------------
                      * Lecture du Master Boot Record (1er secteur physique)
                      *------------------------------------------------------
                      RMBR
 E187 CC0000            LDD   #$0000        raz registre D
 E18A DD94              STD   <CMDXX+1      LBA (2 premiers octets)
 E18C DD96              STD   <CMDXX+3      LBA (2 derniers octets)
 E18E DD90              STD   <SD_LB0+2     stockage pour calcul LBA BOOT.SD
 E190 CC9C00            LDD   #$9C00        adresse du buffer
 E193 DD4F              STD   <$4F          stockage adresse buffer
 
 E195 1701B9            LBSR  RS512         lecture du secteur de 512 octets
 
 E198 CC55AA            LDD   #$55AA        Signature secteur
 E19B 10B39DFE          CMPD  $9DFE         Test signature
 E19F 1026FF69          LBNE  INITR2        Signature incorrecte
 E1A3 789CBE            LSL   $9CBE         Boot indicator 
 E1A6 2618              BNE   RBOOT1        Pas de MBR, donc boot record
 E1A8 B69CC7            LDA   $9CC7         LBA partition pds fort    ex: $xx
 E1AB F69CC6            LDB   $9CC6         LBA partition pds faible  ex: $xx
 E1AE DD96              STD   <CMDXX+3      stockage pour la commande 17
 E1B0 DD90              STD   <SD_LB0+2     stockage pour calcul LBA BOOT.SD
 
                      *------------------------------------------------------
                      * Lecture du Boot Sector
                      *------------------------------------------------------
                      RBOOT  
 E1B2 17019C            LBSR  RS512         lecture du secteur de 512 octets
 E1B5 CC55AA            LDD   #$55AA        Signature secteur
 E1B8 10B39DFE          CMPD  $9DFE         Test signature
 E1BC 1026FF4C          LBNE  INITR2        Signature incorrecte
                      RBOOT1
 E1C0 4F                CLRA                
 E1C1 F69C0D            LDB   $9C0D         Nombre de secteurs par cluster
 E1C4 DD8D              STD   <SD_LB0-1     Stockage provisoire dans SD_LB0-1
 E1C6 B69C0F            LDA   $9C0F         Blocs reserves pds fort   ex: $00
 E1C9 F69C0E            LDB   $9C0E         Blocs reserves pds faible ex: $04
 E1CC DD96              STD   <CMDXX+3      stockage pour la commande 17
 E1CE B69C17            LDA   $9C17         Fat size pds fort         ex: $00
 E1D1 F69C16            LDB   $9C16         Fat size pds faible       ex: $F2
 E1D4 7A9C10            DEC   $9C10         Nombre de FAT             ex: $02
 E1D7 2702              BEQ   RBOOT2        Une seule FAT
 E1D9 58                ASLB                FAT size multiplie par 2  ex: $E4 
 E1DA 49                ROLA                FAT size multiplie par 2  ex: $01
                      RBOOT2   
 E1DB D396              ADDD  <CMDXX+3      ajout du nombre de blocs reserves
 E1DD DD90              STD   <SD_LB0+2     stockage secteur debut directory
 E1DF 3406              PSHS  B,A           sauvegarde de D 
 E1E1 B69C12            LDA   $9C12         nbre entrees directory (poids 
fort)
 E1E4 F69C11            LDB   $9C11         nbre entrees directory (poids 
faible)
 E1E7 44                LSRA                division par 16
 E1E8 56                RORB                pour obtenir
 E1E9 44                LSRA                le nombre de secteurs
 E1EA 56                RORB                de la directory
 E1EB 44                LSRA
 E1EC 56                RORB
 E1ED 44                LSRA
 E1EE 56                RORB
 E1EF 938D              SUBD  <SD_LB0-1     retrancher le nbre 
secteurs/cluster 
 E1F1 938D              SUBD  <SD_LB0-1     retrancher le nbre 
secteurs/cluster 
 E1F3 D390              ADDD  <SD_LB0+2     ajout secteur debut directory
 E1F5 DD90              STD   <SD_LB0+2     stockage secteur 0 
data=debut-2*clusters
 E1F7 3506              PULS  A,B           restauration de D
 E1F9 0D92              TST   <SD_TYP       type de carte 0=SD 1=SDHC
 E1FB 2609              BNE   RBOOT3        carte SDHC
 E1FD 58                ASLB                LBA multiplie par 2 
 E1FE 49                ROLA                LBA multiplie par 2
 E1FF DD95              STD   <CMDXX+2      LBA multiplie par $100
 E201 5F                CLRB
 E202 D797              STB   <CMDXX+4      octet de poids faible a zero
 E204 2002              BRA   RDIR  
                      RBOOT3  
 E206 DD96              STD   <CMDXX+3      stockage pour la commande 17
 
                      *------------------------------------------------------
                      * RECHERCHE FICHIER BOOT DANS LA DIRECTORY
                      *------------------------------------------------------
                      RDIR
 E208 170146            LBSR  RS512         Lecture du secteur 
 E20B 8E9C00            LDX   #$9C00        Adresse du buffer
                      RDIR1  
 E20E 5F                CLRB                zero
 E20F E184              CMPB  ,X            Test premier octet
 E211 1027FEF7          LBEQ  INITR2        Fin de repertoire
 E215 C642              LDB   #$42          'B'
 E217 E184              CMPB  ,X            Test premier octet
 E219 2616              BNE   RDIR2
 E21B C64F              LDB   #$4F          'O'
 E21D E101              CMPB  1,X           Test deuxieme octet
 E21F 2610              BNE   RDIR2
 E221 E102              CMPB  2,X           Test troisieme octet
 E223 260C              BNE   RDIR2
 E225 C654              LDB   #$54          'T'
 E227 E103              CMPB  3,X           Test quatrieme octet
 E229 2606              BNE   RDIR2
 E22B C620              LDB   #$20          ' '
 E22D E104              CMPB  4,X           Test cinquieme octet
 E22F 271E              BEQ   FBOOT
                      RDIR2
 E231 308820            LEAX  32,X          Adresse entree suivante
 E234 8C9E00            CMPX  #$9E00        Fin du buffer
 E237 26D5              BNE   RDIR1         Traitement entree suivante
 E239 0D92              TST   <SD_TYP       type de carte 0=SD 1=SDHC
 E23B 2609              BNE   RDIR3         carte SDHC
 E23D DC95              LDD   <CMDXX+2      adresse secteur  
 E23F C30002            ADDD  #$02          secteur suivant
 E242 DD95              STD   <CMDXX+2      stockage adresse pour CMD17
 E244 20C2              BRA   RDIR          lecture secteur suivant 
                      RDIR3
 E246 DC96              LDD   <CMDXX+3      LBA secteur  
 E248 C30001            ADDD  #$01          LBA secteur suivant
 E24B DD96              STD   <CMDXX+3      stockage LBA pour CMD17
 E24D 20B9              BRA   RDIR          lecture secteur suivant    
 
                      *------------------------------------------------------
                      * INITIALISATION DU LBA DE LA DISQUETTE DE DEMARRAGE
                      * SD_LB0 = nombre de secteurs par cluster (1 octet)
                      * SD_LB0+2 = numero de secteur du boot sector (2 octets)
                      * 26,X = n° cluster relatif au boot sector (poids 
faible)
                      * 27,X = n° cluster relatif au boot sector (poids fort)
                      *
                      * LBA0      =    XX YY
                      * N*CLUSTER = UU VV 00 (UU VV = N*A)
                      *           + 00 ZZ TT (ZZ TT = N*B)
                      * LBA       = (UU+carry2) (VV+XX+ZZ+carry1) (TT+YY)
                      *                     /|\    |          /|\    |
                      *                      |_____|           |_____|
                      *
                      * Code original de Samuel Devulder
                      *------------------------------------------------------
                      FBOOT  
 E24F A6881B            LDA   27,X       ; Cluster poids fort
 E252 F6608E            LDB   SD_LB0     ; Nombre de secteurs par cluster
 E255 3D                MUL              ; D = msb(CLUSTER)*N = UU VV
 E256 FB6090            ADDB  SD_LB0+2   
 E259 8900              ADCA  #0         ; D = UU (VV+XX). Nota: Si SD_LB0+1 
contient déjà 0, ADDD SD_LB0+1 suffit.
 E25B FD608F            STD   SD_LB0+1   ; sauvé en SD_LB0+1
 E25E A6881A            LDA   26,X       ; Cluster poids faible
 E261 F6608E            LDB   SD_LB0     ; Nombre de secteurs par cluster
 E264 3D                MUL              ; D = lsb(CLUSTER)*N = ZZ TT
 E265 F36090            ADDD  SD_LB0+2   ; D = (VV+XX+ZZ+carry1) (TT+YY)
 E268 FD6090            STD   SD_LB0+2   ; (VV+XX+ZZ+carry1) (TT+YY) placé en 
LB0+2
 E26B F6608F            LDB   SD_LB0+1   ; B=UU
 E26E C900              ADCB  #0         ; B=UU+carry2
 E270 4F                CLRA             ; A=0
 E271 FD608E            STD   SD_LB0     ; SD_LB0 = 00 (UU+carry2) 
(VV+XX+ZZ+carry1) (TT+YY)
 E274 7D6092            TST   SD_TYP
 E277 2613              BNE   FBOOT9     ; ben oui  tout est déjà fait pour 
les cartes SDHC
                      * recopie + decalage pour carte SD
 E279 E7E2              STB   ,-S        ; sauvegarde UU+carry2
 E27B FC6090            LDD   SD_LB0+2   ; D=(VV+XX+ZZ+carry1) (TT+YY)
 E27E 58                LSLB
 E27F 49                ROLA             ; D*2
 E280 FD608F            STD   SD_LB0+1   ; sauvé en SD_LB0+1
 E283 E6E0              LDB   ,S+        ; UU+carry2
 E285 59                ROLB             ; (UU+carry2)*2 + "carry de D*2"
 E286 F7608E            STB   SD_LB0     ; sauvé en SD_B0
 E289 7F6091            CLR   SD_LB0+3   ; 0 au bon endroit
                      FBOOT9  
 E28C 4F                CLRA                0 dans code condition
 E28D 39                RTS                 retour
 
                      *------------------------------------------------------
                      * ATTENTE CARTE PRETE PUIS EXECUTION D'UNE COMMANDE
                      *------------------------------------------------------
                      EXCMD
 E28E 8D47              BSR   RBYTE         lecture d'un octet
 E290 4C                INCA                ajout de 1 ($FF --> $00) 
 E291 26FB              BNE   EXCMD         attente carte prete
 
                      *------------------------------------------------------
                      * EXECUTION D'UNE COMMANDE POUR LA CARTE SD
                      * Le registre B n'est pas preserve.
                      * le code retour est dans le registre A
                      *------------------------------------------------------
                      EXCMD0
 E293 8E0006            LDX   #$0006        nombre d'octets de commande
                      EXCMD2
 E296 A6C0              LDA   ,U+           chargement octet de commande
 E298 8D0E              BSR   WBYTE         ecriture de l'octet
 E29A 301F              LEAX  -1,X          decrementation compteur
 E29C 26F8              BNE   EXCMD2        il reste des octets a envoyer
                      EXCMD3
 E29E 8D23              BSR   ALIGN         lecture d'un octet aligne  
 E2A0 A1C0              CMPA  ,U+           test code de retour
 E2A2 2702              BEQ   EXCMD4        code bon
 E2A4 43                COMA                carry set en erreur
 E2A5 39                RTS                 retour
                      EXCMD4
 E2A6 4F                CLRA                clear carry
 E2A7 39                RTS                 retour
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Totor le Butor
Messages : 2235
Inscription : 07 sept. 2011 16:14
Localisation : Paris - Mezels

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Totor le Butor »

BRAVO !!!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17490
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par fneck »

Bravo Daniel et Sam pour le coup de pouce 8)
Là il me semble que c'est un progrès considérable dans le confort d'utilisation de la carte SD.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par __sam__ »

Bravo!
Daniel a écrit :Je peux annoncer qu'en 2015 le programme bootaddress, la modification de la carte SD avec un éditeur hexadécimal et la saisie de l'adresse physique pour changer d'image de disquette seront de lointains souvenirs.
On a hate de voir ca! A ce moment là, la carte SD sera vraiment un truc "naturel" dans l'environnement Thomson car on pourra presque complètement se passer du PC.
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
6502man
Messages : 12312
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par 6502man »

BRAVO à vous deux :D

Ca va permettre au plus grand nombre d'utiliser la carte SD sur Thomson.
Phil.

www.6502man.com

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

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

Ayant l'habitude de manipuler les adresses hexadécimales, je ne trouve pas trop contraignant de travailler avec les adresses physiques de fichiers à la place des noms. Surtout qu'en gardant toujours la même disquette de démarrage il suffit d'inscrire une seule fois son adresse dans la carte. Je m'accommode très bien du système actuel et il ne me fait pas perdre beaucoup de temps. Juste le lancement de bootaddress à chaque nouvelle disquette, disons 10 à 20 secondes.

La possibilité de choisir les images en sélectionnant leur nom dans une liste est toutefois un confort appréciable, et évitera de faire pour chaque fichier .sd un petit programme de lancement avec les fameux quatre POKEs. J'y vois surtout la suppression du dernier obstacle qui pouvait rebuter certains utilisateurs. Nul doute qu'ils seront de plus en plus nombreux. Attendez-vous à une pénurie de boîtiers de communication nanoréseau sur le marché de l'occasion.

Un autre problème se posera quand la nouvelle version sera au point : la mise à jour des EPROMs existantes pour les utilisateurs ne disposant pas de programmateur. Je ne sais pas bien comment le gérer : aujourd'hui je n'en ai fourni qu'une douzaine, il est encore possible d'envoyer les mises à jour par la Poste, mais si le nombre augmente ce sera plus difficile. Achetez des programmateurs :!:
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par __sam__ »

Daniel a écrit :Un autre problème se posera quand la nouvelle version sera au point : la mise à jour des EPROMs existantes pour les utilisateurs ne disposant pas de programmateur. Je ne sais pas bien comment le gérer : aujourd'hui je n'en ai fourni qu'une douzaine, il est encore possible d'envoyer les mises à jour par la Poste, mais si le nombre augmente ce sera plus difficile. Achetez des programmateurs :!:
Il devrait être possible de mettre ce que fait ce bout de code de sélection de fichier en bootsecteur d'une floppy physique. Ca peut être un compromis pratique (on laisse une floppy unique dans la machine, mais on change facilement de carte 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 : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

On ne peut pas avoir deux contrôleurs actifs à la fois. Il faut sélectionner l'un ou l'autre. Donc sélectionner la disquette, lire le code en mémoire, sélectionner le contrôleur externe pour qu'il initialise la carte SD puis exécuter le code pour monter la disquette de démarrage. Jusque là rien d'impossible.

Mais comment font les possesseurs de TO7, TO7/70, MO5, MO5E, MO5NR, MO6, PC128, ou TO8 sans lecteur de disquette ? S'ils doivent charger un programme sur cassette je dis non, pas question de revenir à ce genre de galère avec les magnétophones. Même les disquettes sont de moins en moins fiables avec l'âge et l'usure. Je préfère de très loin une solution purement carte SD. J'ai presque envie d'en faire une règle incontournable pour le projet. Même si je dois envoyer des millions d'EPROM par la Poste :wink:
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par __sam__ »

(délire), l'idéal serait de faire comme sur A1000. C'est pas une EPROM mais une WOM (Write Once Memory) qu'il faut utiliser.

Avec la bonne électronique conçue pour ca, le contrôleur fait apparaitre à froid une mini-rom qui va chercher à une adresse précise sur la SD 4Ko de donnée qu'il sauve dans une ram interne, puis il switch la MINI-ROM par le contenu de la ram interne qui est vue aux ancien emplacements de la ROM. Bref c'est du reconfigurable au boot à froid.

(moins délire), remplacer l'EPROM par une EEPROM avec un montage spécial pour fournir le courant pour effacer le contenu.
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
boris
Messages : 356
Inscription : 04 mars 2011 13:55
Localisation : Normandie (près d'Honfleur)
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par boris »

Bravo Daniel et _sam_ , le rêve devient réalité
Merci pour ce travail de titan et vivement la prochaine étape
:D
Avatar de l’utilisateur
petitjd
Messages : 2007
Inscription : 23 oct. 2007 11:50

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par petitjd »

Sur la carte xt-ide, il y a un peu d'electronique permettant d'envoyer le bios dans une eeprom via un pc et une connexion serie si mes souvenirs sont bons.
Est-ce envisageable a moindre cout temps de developpement/frais???
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Daniel
Messages : 17410
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Lecture du répertoire d'une carte SD

Message par Daniel »

La meilleure solution serait de pouvoir flasher le BIOS du contrôleur CS91-280 avec un programme Thomson sur disquette Thomson. Et accessoirement de construire ce contrôleur indépendamment du boîtier nanoréseau. C'est un challenge pour un électronicien, je ne sais pas le faire moi-même.

Un peu moins pratique : il est possible de construire un programmateur d'EPROM piloté par un ordinateur Thomson. J'ai vu un schéma, récupéré par irios dans un lot de documentation Thomson. Ce serait une solution pour reprogrammer l'EPROM ou EEPROM du contrôleur actuel.

Sinon, un programmateur chinois sur port parallèle ne coûte que 15€ et suffit pour programmer une 27C64 ou 28C64. Ou encore un modèle USB à partir de 30€.
Daniel
L'obstacle augmente mon ardeur.
Répondre