SDSTREAM - Mémoire de masse externe à accès séquentiel

Le système SDSTREAM permet à tous les ordinateurs 8 bits Thomson
d'accéder à une mémoire de masse de plusieurs Go sur carte microSD.
Cette mémoire est accessible en lecture séquentielle, octet par octet,
à la même vitesse que la RAM, soit 250 000 octets par seconde.

SDSTREAM est une version améliorée de l'ancien projet SDANIM7. Comme SDANIM7, il utilise un Arduino pour accéder à la carte microSD. Le signal de lecture n'est plus envoyé par programme, mais généré automatiquement par un dispositif électronique de décodage d'adresse, ce qui divise par deux le temps d'accès. Le débit élevé de SDSTREAM permet de charger rapidement des programmes ou des données en mémoire. Les applications sont nombreuses et variées : un jeu peut être chargé en moins de trois secondes, les démonstrations de musique et de vidéo en streaming peuvent atteindre une qualité exceptionnelle. Le coût modique et la simplicité d'utilisation en font un système très attractif pour tous les programmeurs et utilisateurs d'ordinateurs Thomson.

Auteur : Daniel Coulom - Site internet : Emulateur DCMOTO - Dernière mise à jour le 1er août 2020

previous Retour à la page Bricolage

SDSTREAMSDSTREAM

Le matériel


SDSTREAM

Le système SDSTREAM est constitué d'une carte regroupant deux circuits TTL pour le décodage d'adresse, un Arduino Pro Mini, un module d'interface pour carte microSD. L'ensemble est connecté au port d'extension de l'ordinateur Thomson par l'intermédiaire d'un Minibus. Le port D de l'Arduino est relié au bus de données de l'ordinateur pour transmettre les octets sur 8 bits en parallèle. Le système de décodage d'adresse envoie un signal de lecture à une entrée numérique de l'Arduino quand la valeur $A7FF (pour les MO) ou $E7FF (pour les TO) est détectée sur le bus d'adresse.


Schéma


SDSTREAM

Le schéma montre la connexion de l'Arduino au bus de données, aux circuits logiques de décodage d'adresse, au module d'interface avec la carte microSD.
L'arduino est un modèle Pro Mini 5V 16MHz, avec un processeur ATMega 168 (Mémoire Flash 16Ko) ou ATMega 328 (Mémoire Flash 32Ko).


Circuit imprimé


SDSTREAMSDSTREAM

Le circuit imprimé est susceptible d'être amélioré périodiquement.
Les fichiers Gerber donnés ici correspondent à la dernière version fabriquée : sdstream_gerber_20200127.zip


Le programme de l'Arduino


Le programme (ou sketch) de l'Arduino commence par lire les noms des fichiers présents dans le répertoire principal de la carte SD. Il les envoie octet par octet à l'ordinateur Thomson pour les afficher et permettre à l'utilisateur de faire son choix. Ensuite l'Arduino lit le fichier choisi pour présenter les octets séquentiellement sur le bus de données de l'ordinateur Thomson.

/**************************************************\
*           S D S T R E A M _ I N O                * 
*           (c) 2020 - 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.*
\**************************************************/
/*
Communication parallele avec un ordinateur Thomson.
L'Arduino lit en sequentiel un fichier sur carte SD
et presente les octets un par un sur le port D.
La lecture est controlee par un signal envoye sur
la broche D8 par le module de decodage d'adresse
du module SDSTREAM.
 
SD card management is adapted from SimpleSDAudio.
Visit SimpleSDAudio website for more information:
http://www.hackerspace-ffm.de/wiki/index.php?title=SimpleSDAudio
https://github.com/isramos/mico-shield/tree/master/libraries/SimpleSDAudio
*/

Cette archive contient le sketch de l'Arduino et le programme de sélection à exécuter avec l'ordinateur Thomson : sdstream_20200801.zip


Préparation de la carte microSD


SDSTREAM

Les cartes utilisables sont les microSD (jusqu'à 2 Go) et microSDHC (jusqu'à 32 Go). Les microSDXC (plus de 32 Go) ne sont pas supportées.
Formatez la carte sur PC (ou Mac), en FAT ou en FAT32 et copiez les fichiers pour sdstream. Il n'y a pas de contrainte particulière pour le nom et l'extension. Cependant il est conseillé d'utiliser des noms courts, car seuls les huit premiers caractères sont affichés par le programme de sélection. Pour différencier ces fichiers des fichiers .sd utilisés par SDDRIVE, on peut leur donner l'extension .sds ou .sdstream.

Notes :
- Seul le répertoire principal est utilisable, les sous-répertoires sont ignorés.
- Il faut mettre un nombre limité de fichiers sur la carte pour ne pas allonger inutilement la phase de sélection.
Une vingtaine de fichiers est une limite raisonnable.
- Les fichiers ne doivent pas être fractionnés. Si la carte vient d'être formatée il n'y a aucun risque.
Par contre, si la carte est bien remplie et que des fichiers ont été effacés ou modifiés, il vaut mieux la formater et copier à nouveau tous les fichiers.


Utilisation de SDSTREAM


Ordinateur hors tension (impératif), connectez le minibus à l'ordinateur. Le contrôleur SDSTREAM peut être branché à l'un ou l'autre des connecteurs 2x19 broches. L'autre connecteur 2x19 broches et le connecteur "nez de carte" du minibus peuvent être utilisés par un autre contrôleur, par exemple SDDRIVE ou SDDISK. Mais aussi par un contrôleur Musique et Jeux pour les ordinateurs où il n'est pas intégré en standard.

Lors de la mise sous tension l'initialisation de l'Arduino perturbe le bus de données. Pour ne pas bloquer le démarrage de l'ordinateur Thomson, il faut au préalable appuyer sur le bouton "Initialisation Programme", le garder enfoncé pendant les trois secondes suivant la mise sous tension, puis le relâcher.

L'Arduino s'initialise automatiquement à la mise sous tension, mais peut aussi être réinitialisé à tout moment par son bouton RESET. Avant d'appuyer sur ce bouton, appuyez aussi sur le bouton "Initialisation Programme" de l'ordinateur pour éviter qu'il se bloque (comme à la mise sous tension). La fin de l'initialisation de l'Arduino est signalé par le clignotement de la LED connectée à la broche D13 :
- 20 clignotements rapides si tout c'est bien passé.
- N clignotements plus lents, répétés à l'infini toutes les deux secondes, s'il y a eu une erreur.

N est le code de l'erreur :
- 4 = Erreur d'initialisation de la carte SD (ou carte absente).
- 3 = Erreur d'initialisation du système de fichiers (carte non formatée ou mal formatée).
- 2 = Erreur d'ouverture du fichier sélectionné.
- 1 = Fichier sélectionné de longueur nulle.

Quand l'initialisation s'est bien terminée, vous pouvez lancer le programme BASIC permettant de sélectionner le fichier de la carte SD. Quand le fichier a été choisi, il faut ensuite lancer le programme permettant de démarrer l'application. Ce programme est spécifique à chaque application et est fourni avec sa documentation.

========================================
SELECT.BAS
Programme de selection du fichier
dans le repertoire principal de la carte
========================================
10 A=&HE7FF+&H4000*(PEEK(&HFFF2)>127)
20 PRINT:PRINT"Sélection: ENTREE"
30 PRINT"Suivant..: Autre touche"
40 PLAY"DO"
50 C%=PEEK(A):IFC%=10THEN70
60 PRINTCHR$(C%);:GOTO50
70 T%=ASC(INPUT$(1))
80 IFT%<>13THENX%=PEEK(A):PRINTCHR$(C%);:GOTO40
90 X%=PEEK(A):X%=PEEK(A):PRINT:PLAY"LA"

Démonstrations


Deux démonstrations ont été créées pour montrer les performances de SDSTREAM.


SDSTREAMSDSTREAM

SDSTREAM_music joue de la musique en streaming au rythme de 44100 échantillons par seconde : Imagine
SDSTREAM_video affiche de la video avec son au rythme de 25 images par seconde : Simon's Cat
Le programme de lancement est le même pour les deux applications :

1 CLEAR10,&H8FFF:A=&H9F00
2 CLS:LOCATE0,0,0:SCREEN0,7,7
3 READX$:IFX$="**"THENEXEC&H9F00:END
4 POKEA,VAL("&H"+X$):A=A+1:GOTO3
5 DATA34,19,1F,B8,8B,86,1F,8B,1A,50,96
6 DATAFF,81,FE,26,FA,CE,90,00,8E,02,00
7 DATA3D,96,FF,A7,C0,30,1F,26,F7,35,19
8 DATA7E,90,00,**

Chargement rapide de jeux


La fonction "Sauver état actuel..." de l'émulateur dcmoto génère un fichier .sdstream si l'ordinateur émulé est un MO5, un MO6, un PC128 ou un TO7/70. Ce fichier permet de restaurer l'état sur le "vrai" ordinateur grâce à SDSTREAM.

sdstream sdstream

Pour qu'un jeu ainsi restauré fonctionne, il y a deux conditions :
- Le programme doit être entièrement chargé en mémoire.
- Il ne doit pas charger d'autres données à partir de la cassette ou de la disquette.

Dans le cas de jeux en plusieurs parties il faut faire autant de sauvegardes que de parties. Par exemple "Las Vegas" nécessite trois sauvegardes. Dans d'autres jeux, comme Mandragore, c'est plus compliqué, car il faudrait une sauvegarde pour chaque Donjon. Ce n'est pas très pratique.

Après sélection du fichier de la carte SD, le programme suivant permet de lancer le jeu. Avec le MO5, par exemple, le chargement dure environ deux secondes. Aucun autre système permet de charger un jeu aussi vite.

0 REM CHARGEMENT MO5
1 CLEAR10,&H8FFF:A=&H9000
2 CLS:LOCATE0,0,0:SCREEN7,0,0
3 READX$:IFX$="**"THENEXEC&H9000:END
4 POKEA,VAL("&H"+X$):A=A+1:GOTO3
5 DATA34,19,1F,B8,8B,86,1F,8B,1A,50,96
6 DATAFF,81,FE,26,FA,CE,9E,00,8E,02,00
7 DATA3D,96,FF,A7,C0,30,1F,26,F7,35,19
8 DATA7E,9E,00,**

0 REM CHARGEMENT MO6 OU PC128
1 CLEAR10,&H5CFF:A=&H5D00
2 CLS:LOCATE0,0,0:SCREEN7,0,0
3 READX$:IFX$="**"THENEXEC&H5D00:END
4 POKEA,VAL("&H"+X$):A=A+1:GOTO3
5 DATA34,19,1F,B8,8B,86,1F,8B,1A,50,96
6 DATAFF,81,FE,26,FA,CE,5E,00,8E,02,00
7 DATA3D,96,FF,A7,C0,30,1F,26,F7,35,19
8 DATA7E,5E,00,**

0 REM CHARGEMENT TO7/70
1 CLEAR10,&H9CFF:A=&H9D00
2 CLS:LOCATE0,0,0:SCREEN7,0,0
3 READX$:IFX$="**"THENEXEC&H9D00:END
4 POKEA,VAL("&H"+X$):A=A+1:GOTO3
5 DATA34,19,1F,B8,8B,86,1F,8B,1A,50,96
6 DATAFF,81,FE,26,FA,CE,9E,00,8E,02,00
7 DATA3D,96,FF,A7,C0,30,1F,26,F7,35,19
8 DATA7E,9E,00,**

L'archive suivante contient une sélection de jeux à restaurer sur MO5 : Jeux MO5


Galerie de photos


sdstream
Premier prototype

sdstream sdstream
Deuxième prototype

sdstream
SDSTREAM et SDDISK sur MO5

sdstream
SDSTREAM et SDDRIVE sur MO6

sdstream
SDSTREAM et SDDISK sur TO8

Complément d'information

La source principale d'informations sur le projet SDSTREAM est le forum system-cfg : system-cfg

Pour les informations sur le matériel voir la section Bricolage :
[Thomson] SDSTREAM

Pour les informations sur le développement d'applications et les démonstrations voir la section Développements actuels :
[Thomson] Musique et vidéo avec SDSTREAM
[Thomson] Chargement de programmes avec SDSTREAM

previous Retour à la page Bricolage