SDLEP-READER, remplace tous les lecteurs de cassette (MO, TO et autres)

SDLEP-READER est un montage électronique à base d'Arduino. Il permet de remplacer les magnétophones TO et MO en lecture, en utilisant des fichiers "images de cassettes" stockés dans une carte microSD. La carte peut contenir jusqu'à 128 fichiers, sélectionnables par 7 interrupteurs à deux positions. Ce système fonctionne pour toutes les cassettes, protégées ou non, avec tous les ordinateurs de la gamme Thomson 8 bits. Il permet uniquement la lecture et pas l'enregistrement. Des essais ont été aussi réalisés avec succès avec d'autres ordinateurs utilisant des lecteurs de cassettes à sortie audio analogique ou à sortie TTL, ce qui fait de SDLEP-READER un outil universel de remplacement des lecteurs de cassettes des ordinateurs de collection.

Auteur : Daniel Coulom - Site internet : Emulateur DCMOTO - Dernière mise à jour le 19 juin 2023

previous Retour à la page Bricolage

SDLEP-READER a été utilisé avec succès pour charger des programmes avec les ordinateurs suivants :
- Thomson MO5, MO5E, MO5NR, MO6, PC128
- Thomson TO7, TO7/70, TO9, TO8, TO8D, TO9+
- Philips VG5000, VG8000, VG8010, VG8020
- Matra MC10, Alice, Alice 32, Alice 90
- Exelvision EXL100
- Amstrad 464, 6128
- Sinclair Spectrum 48K, 128K, +2A, +3
- Oric 1, Oric Atmos
- Vic20, C64, C128
- Acorn Electron
- Philips Videopac C7420
- Micronique Hector
- Tandy TRS80 model 1
- Dragon 32
- Sinclair ZX81
- Jupiter Ace
- Mattel Aquarius
- Sharp MZ700
- Sinclair ZX80
- Canon V20
- Vtech Laser 500
- NEC PC 8001B

La liste sera complétée à chaque nouvel essai réussi.


sdlep-reader

ATTENTION : Depuis sa création en 2017, le projet SDLEP-READER a été beaucoup amélioré. La dernière version est à la fois plus facile à construire et plus facile à utiliser, grâce à un écran tactile permettant de sélectionner la cassette en pointant du doigt le nom du fichier.
Cette nouvelle version, nommée SDLEP-READER TFT, est décrite ici : SDLEP-READER TFT


Le problème des cassettes de programmes


Les lecteurs de cassettes n'ont jamais été des périphériques très fiables, et même avec du matériel neuf les erreurs d'entrées/sorties étaient fréquentes. Aujourd'hui les mécaniques sont usées, les courroies sont déformées, les supports magnétiques ont vieilli et il est encore plus difficile de lire une cassette sans erreur. Les premières générations d'ordinateurs Thomson utilisaient presque exclusivement ce support. La quantité de programmes et de jeux sur cassette est impressionnante et un jour viendra où elles seront toutes illisibles.

Le remplacement d'un magnétophone classique par un système électronique, sans pièce mécanique en mouvement et sans support magnétique, apporte une fiabilité absolue et permet de charger toute la logithèque Thomson sur cassette avec une grande facilité. C'est un périphérique simple, peu coûteux, peu encombrant et très pratique. En particulier la copie d'un fichier sur la carte SD à partir d'un PC est d'une facilité déconcertante par rapport à la création d'une cassette audio avec un magnétophone connecté à la carte son.

Malheureusement le temps de chargement reste identique à celui d'une cassette, et ce système ne permet pas de rivaliser avec la simulation de disquette sur carte SD. Néanmoins il garde un grand intérêt pour les programmes sur cassette qui n'existent pas en version disquette.

Description du système SDLEP-READER


sdlep-reader

Le coeur du système est un Arduino Pro-Mini, à base de processeur Atmega 328 ou 168. On lui adjoint un module permettant d'accéder à une carte mémoire microSD en mode SPI. Un bloc de 7 interrupteurs permet de sélectionner un fichier de la carte. Ce fichier est lu et interprété par l'Arduino, qui génère en sortie vers l'ordinateur Thomson les mêmes signaux qu'un lecteur de cassette Thomson. Le signal MOTOR, envoyé par l'ordinateur vers l'Arduino, permet de commencer la transmission ou de l'arrêter.

Une diode électro-luminescente donne des indications sur le fonctionnement du système. Elle clignote au rythme des données pendant la transmission, puis par brève impulsion toutes les deux secondes quand la fin de fichier est atteinte (fin de cassette). Au démarrage du système, si le fichier sélectionné par les interrupteurs n'est pas trouvé sur la carte, cette diode clignote très rapidement pour signaler l'anomalie.

L'alimentation du montage peut se faire de multiples façons :
- par la broche 5 du connecteur du crayon optique, pour les ordinateurs qui en sont équipés.
- par la sortie 12V des TO7 et TO7/70.
- par une alimentation 5V ou 7V à 12V.
- par une pile de 9V.

Le programme de l'Arduino

Le programme de l'Arduino (sketch ou croquis, selon la dénomination usuelle) utilise ses propres fonctions pour accéder le plus rapidement possible à la carte SD. Elles ont été en partie inspirées par la bibliothèque SimpleSDAudio.
De plus, l'accès à la carte est effectué par une commande de lecture directe des octets, pour éviter tout délai indésirable.

Le reste du programme est d'une très grande simplicité et les commentaires expliquent les quelques subtilités.
Télécharger le programme Arduino --> sd-lep_ino.zip

La structure des fichiers images de cassettes

Les images de cassette au format .k7 utilisées par les émulateurs ne peuvent pas convenir pour la simulation du magnétophone, car ils ne contiennent pas les informations nécessaires pour reconstituer le signal. En particulier ils ne connaissent pas les délais entre blocs, ni les fréquences utilisées, ni les systèmes de protection mis en place par les éditeurs de logiciels.

Les fichiers .wav reproduisent le signal audio analogique enregistré sur la bande, mais pas le signal numérique généré par le magnétophone. Celui-ci est très voisin du signal audio dans le cas du LEP MO, par contre il est totalement différent dans le cas du LEP TO. Un fichier .wav 44,1 kHz 8 bits monophonique est très gros pour le peu d'informations contenues (49 octets pour 1 bit d'information dans le cas du TO), mais en plus il ne représente pas le signal envoyé par le magnétophone à l'ordinateur. Il ne convient donc pas.

Un nouveau format, donnant les informations requises sous une forme condensée, a été créé. C'est le format .lep dont les spécifications sont énoncées ci-dessous :

===============================================================================
Format de cassette Thomson .lep
===============================================================================

Un fichier .lep est au depart une image de cassette Thomson, TO ou MO
Il permet de reproduire le signal en sortie des LEP TO et MO.
Par extension il peut aussi être utilisé pour tous les autres formats
d'enregistrement de données numériques sur des cassettes audio.

--------------
Format TO
--------------
Le signal enregistré sur la cassette est transformé en une suite de bits selon
le système d'encodage TO : 5 périodes à 4500 Hz donnent un bit 0, 7 périodes à
6300 Hz donnent un bit 1. Chaque octet utile commence par un bit de start à 0
et se termine par deux bits de stop à 1. Les séquences de synchronisation et
les passages non enregistrés sont remplacés par des bits à 1.
Un fichier .wav 44,1 kHz 8 bits mono est créé. Il est semblable à la sortie du
magnétophone TO. Il contient 49 échantillons par bit, avec un niveau haut pour
les bits 1 et un niveau bas pour les bits 0.

----------------------------
Format MO et autres formats
----------------------------
Le fichier .wav à 44,1 kHz 8 bits mono de la cassette est mis en forme pour
contenir des créneaux rectangulaires d'amplitude constante.

--------------
Fichier .lep
--------------
Chaque octet du fichier .lep contient la durée jusqu'au prochain changement de
valeur du signal. Cette durée N est exprimée dans l'unité donnée en paramètre
(50 µs), avec le signe + pour les créneaux positifs et le signe - pour les
créneaux négatifs.
Si le nombre N est supérieur à 127, il y a un octet égal au reste de N/127
(ou 1 si le reste est nul) affecté du signe + ou - selon le sens du créneau,
suivi de N/127 octets à zéro.



Pour les ordinateurs Thomson un grand nombre de fichiers .lep sont disponibles sur le site dcmoto :
Fichiers .lep pour MO
Fichiers .lep pour PC128
Fichiers .lep pour TO

Pour de nombreux autres ordinateurs des années 1980 des recueils de jeux au format .lep ont été créés. Ils sont disponibles à
Forum System-cfg - Fichiers LEP

Il est également possible de transformer un fichier .wav en .lep grâce à l'utilitaire DCLEP. Pour le téléchargez allez à la page Emulateur.

Réalisation du module SDLEP-READER

Le module SDLEP-READER est réalisé sur une plaquette de circuit à bande de 5x3 cm. L'Arduino est soudé sur la plaquette, mais son connecteur est accessible pour une éventuelle reprogrammation in-situ. Le module pour la carte SD se place en haut à droite sur un connecteur femelle. Le connecteur de l'Arduino, en haut à gauche, reçoit le câble de liaison avec l'ordinateur. Le connecteur au milieu à droite est utilisé pour l'alimentation de 7V à 12V, dans le cas ou le module n'est pas alimenté en 5V par le câble de liaison.

sdlep-reader

La construction est très simple et ne pose aucun problème particulier. Tous les composants sont standard et se trouvent très facilement sur internet, pour un prix dérisoire, sans aucun frais de port, auprès des vendeurs de matériel électronique de Shenzen.


sdlep-readersdlep-reader

Commencer par couper la plaquette de circuit à bande aux bonnes dimensions, pour qu'elle entre dans le boîtier. Couper les pistes selon le schéma, souder les straps, le connecteur de la carte SD, le connecteur +12V, les composants discrets : diode, résistance et LED.


sdlep-readersdlep-reader

Souder ensuite l'Arduino et les interrupteurs. Dans le boîtier découper une entaille dans le fond et dans le couvercle pour laisser passer le connecteur de l'Arduino, une autre entaille dans le fond uniquement pour laisser passer le connecteur de la carte SD, un trou de 3 mm pour la LED. On peut aussi découper une entaille rectangulaire dans le couvercle pour accéder aux interrupteurs, mais ce n'est pas indispensable car il est facile d'ouvrir le boîtier pour changer leur position. N'oubliez pas de coller l'étiquette SDLEP pour donner la touche finale.


sdlep-etiquette

Confection des câbles

La dernière étape est la réalisation des câbles de liaison avec les ordinateurs. Les schémas ont été finalisés ci-dessous pour toute la gamme Thomson et pour le VG5000. Pour chaque autre modèle il y a une ou plusieurs solutions, utilisez le fil de discussion du forum system.cfg pour avoir plus de précisions.


sdlep-thomson

sdlep-vg5000

Utilisation

Le module SDLEP-READER est relié d'une part au connecteur magnétophone de l'ordinateur par un cordon spécial, d'autre part à une source d'alimentation. Pour les ordinateurs possédant un connecteur de crayon optique externe, c'est le +5V disponible à la broche 5 de ce connecteur. Pour le TO7 et le TO7/70, c'est la prise d'alimentation 12V externe située à proximité de l'interrupteur secteur. Pour d'autres ordinateurs on peut utiliser une alimentation 5V (sur le connecteur de gauche), ou une alimentation de 7V à 12V (sur le connecteur de droite), ou une pile 9V (sur le connecteur de droite). Attention, une seule alimentation doit être utilisée. Il y a un gros risque si le module est alimenté simultanément par les deux connecteurs.

Les 7 interrupteurs numéroté de 1 à 7 permettent de choisir le fichier de la carte SD à utiliser.

Determination du nom du fichier (extension .lep)
en fonction de la position des 7 interrupteurs (128 possibilites)

Le nom du fichier est compose de sept chiffres 0 ou 1
decrivant la position des interrupteurs 1 à 7
Exemple : interrupteurs 2, 4, 6 sur ON --> fichier 0101010.lep 
Exemple : interrupteurs 5 sur ON --> fichier 0000100.lep
Exemple : interrupteurs 1,2,3,5,7 sur ON --> fichier 1110101.lep 

Le fichier sélectionné par les interrupteurs doit être présent sur la carte. S'il n'est pas trouvé, la LED d'activité clignote rapidement dès la mise sous tension. Sinon elle reste éteinte jusqu'au chargement d'un programme.

Pendant le chargement, elle clignote au rythme des transferts de données. Si l'ordinateur cherche à lire après la fin du fichier, la LED émet un flash toutes les deux secondes pour signaler l'erreur "lecture après la fin de la cassette".

A tout moment, l'appui sur le bouton d'initialisation de l'Arduino rembobine la cassette. Pour changer de cassette il faut modifier la position des interrupteurs puis réinitialiser l'Arduino.

La lecture du fichier .lep par l'Arduino est très simplifiée. Elle ne consulte pas la table d'allocation de la carte SD pendant le chargement d'une cassette, pour éviter des délais incompatibles avec le principe de lecture à vitesse constante. En conséquence, les fichiers .lep ne doivent pas être fragmentés. C'est toujours le cas lorsque la carte vient d'être formatée et qu'aucun fichier n'a été effacé. Par contre, si la carte est presque pleine et que des suppressions de fichiers ont été effectuées, il y a risque de fragmentation. Dans ce cas il est conseillé de faire une copie de sécurité des fichiers dans un répertoire du disque dur, de formater la carte SD et d'y remettre ensuite les fichiers.

Galerie de photos

A gauche le premier prototype (sans les interrupteurs), à droite le premier essai d'intégration dans un boîtier.

sdlep-reader

Le montage définitif, avec un câble de liaison pour MO5, TO8 ou TO9.

sdlep-reader

Complément d'information

La source principale d'informations sur le projet SDLEP-READER est system-cfg
Vous pouvez y trouver tous les échanges entre l'auteur et les utilisateurs, et participer à la discussion avec vos questions et vos suggestions.

previous Retour à la page Bricolage