raphnet.net banner

SD-Cart JR: Lecteur de carte MMC/SD pour PCjr

twitter@raphnetlabs
Buy Me a Coffee at ko-fi.com
Contenu

Résumé

SD-Cart JR

SD-Cart JR

SD-Cart JR est un montage permettant à un PCjr fonctionnant sous DOS d'écrire et lire d'une carte MMC (ou compatible) via une des deux fentes pour cartouche à l'avant.

Performance actuelle: 33 ko/s, Écriture: 22 ko/s. Déjà plus rapide que le lecteur de disquette (10 ko/s), mais il y a de la place pour l'amélioration dans le code. Il se peut donc fort bien qu'une prochaine version du pilote gagne quelques ko/sec en performance.

goto top


L'électronique

Une bonne partie des signaux du BUS de mémoire du PCjr sont disponible sur le connecteur pour cartouche, mais il n'y a pas de signal d'écriture. Cela ne veut pas dire qu'on ne peut pas transmettre d'information vers la cartouche cependant, puisque l'adresse étant lue en elle même est de l'information sortante! J'ai divisé l'espace mémoire accédant à la cartouche en quelques zones dont certaines on un effet secondaire. (sélectionner la carte, charger une valeur à transmettre, etc).

Comme les cartes communiquent de manière sérielle (bus SPI), j'ai employé deux shift registers (un pour transmettre vers la carte, l'autre pour recevoir) afin d'échanger des octets complets avec le PCjr et possiblement obtenir une meilleure performance...

Le circuit est câblé au signal CS2 du port de cartouche et est donc visible de D0000 à D7FFF.


Schéma, page 1 - BUS PCjr, décodage d'adresse et ROM

Schema, page 1

Schéma, page 2 - Shift Registers, interface pour la carte (régulateur de tension et adaptation des niveaux)

Schema, page 2
Avant de concevoir un PCB, j'ai fait un montage sur un "breadboard", mais pas entièrement sans soudure. Pour l'accès aux signaux de la cartouche, j'ai soudé des fils entre un de mes circuits servant à fabriquer une cartouche PCjr EPROM et les composants DIP installés dans le breadboard. Pour la fente destinée à recevoir la carte, j'ai utilisé un petit module de Adafruit qui comportait un régulateur et des convertisseurs de niveaux de voltage.

Mon montage de test

Mon montage de test

Soudures

Soudures



Une fois que tout semblait fonctionner, j'ai conçu un PCB équivalent à mon montage de test, avec quelques changements.

D'abord, plutôt que d'utiliser le module Adafruit pour micro-sd, j'ai opté pour une fente acceptant les cartes MMC et les cartes SD de taille "ordinaire" plutôt que "micro". Considérant les limitations (surtout avec Dos 3.3) d'espace disque "raisonnable" (si on ne veut pas attendre 5 minutes la première fois qu'on tape "dir"), je tenais à pouvoir utiliser les vieilles cartes traînant dans mes fonds de tiroir plutôt que de "gaspiller" des cartes modernes.

Je tenais aussi à ce que le circuit puisse être installé dans un boîtier. J'ai donc utilisé des composants en montage en surface pour sauver de l'espace. Le circuit résultant peut donc être installé dans un boîtier, mais cela demande certains efforts (il faut couper du plastique ici et là...).

Et finalement, j'ai prévu un espace pour un ROM qui peut permettre de démarrer via la carte comme s'il s'agissait d'un disque dûr.

Montage final

Montage final


goto top


Le logiciel

Mes requis logiciels étaient:
  1. Pouvoir écrire et lire le contenu de la carte sous DOS comme on le fait avec une disquette ou un disque dûr. Autrement dit, accès par une lettre de lecteur, par exemple c:
  2. Pouvoir utiliser la carte sur un autre système (une machine moderne par exemple) afin d'échanger des fichiers avec le PCjr.
  3. Pouvoir démarrer avec une carte comme s'il s'agissait d'un disque dûr, sans utiliser de disquette.
Pour le requis 2 ci-dessus, c'était facile. Les cartes mémoire sont normalement partitionnés comme le sont les disque dûrs, avec une table de partitions dans le MBR, et renferment normalement une seule partition couvrant l'ensemble de l'espace disponible. De plus, cette partition contient normalement un système de fichier FAT (FAT12, FAT16 ou FAT32) selon l'espace disponible. Très standard et supporté par DOS, Linux, Windows, Mac OS... Il faut tout de même être attentif aux limitations de la version de DOS utilisée sur le PCjr. Par exemple, DOS 2.10 ne connait que FAT12, DOS 3.30 ne supporte pas FAT16B... Il peut donc être nécessaire d'utiliser une partition plus petite.


Pilote sdcart.sys

Exemple de config.sys

Exemple de config.sys

J'ai codé un pilote pour DOS qui permet d'accéder à la première partition d'une carte mémoire comme s'il s'agissait d'une disquette. L'installation est facile, il suffit d'ajouter DEVICE=SDCART.SYS dans le fichier config.sys.

La carte sera accessible via la première lettre de lecteur disponible à partir de c:. Il est possible de changer la carte mémoire sans redémarrer. Le pilote détecte que la carte a été retirée ou changée et en avise DOS.

Si vous avez déjà un disque dur, possiblement grâce à jrIDE, ou ne souhaitez pas pouvoir démarrer par la carte (requis 3), le pilote sdcart.sys est tout ce qu'il vous faut.



Boot ROM

PCjr démarré avec une carte MMC de 64Mo

PCjr démarré avec une carte MMC de 64Mo

J'ai également codé un "Boot ROM" pour PCjr qui remplace int 13h (le service d'accès aux disques/disquettes du BIOS) et rends le PCjr capable de démarrer sur une carte mémoire comme s'il s'agissait d'un disque dur. Lorsque ce ROM est utilisé, sdcart.sys n'est pas nécessaire, DOS prends la carte mémoire en charge comme un disque dur. Fdisk et format peuvent même être utilisés.

À l'heure actuelle, ce ROM est expérimental et pas tout à fait complet, mais tout de même fonctionnel. État actuel des choses:


Aussi, comme je n'ai pas la chance d'avoir un jrIDE, je ne suis pas certain si mon ROM coopère bien. Mais en théorie, le lecteur de carte s'installera comme deuxième disque (81h).



sdpart.com

Infos sur la carte via sdpart.com

Infos sur la carte via sdpart.com

Fdisk ne prends pas en charge les périphériques auxquels DOS accède via un pilote, comme sdcart.sys. Il n'est donc pas possible d'utiliser Fdisk pour afficher les partitions. De plus, les cartes mémoires comportent des registres (notamment les registres CSD et CID) qui contiennes certaines informations comme le fabricant, le modèle, le numéro de série...

L'outil sdpart permet d'afficher le contenu des registres de la carte et la table de partitions. Des fonctions de base pour effacer toutes les partitions existantes et créer une partition de 32 mo sont également offertes. Le nom "sdpart" implique que cet outil pourrait offrir davantages de fonctionalités se raprochant de celles de fdisk à long terme, si cela s'avère utile. Pour le moment toutefois, sdpart.com est un bon moyen pour vérifier si une carte fonctionne, et sinon, pour aider à comprendre pourquoi.

Tout comme fdisk, la commande format de DOS ne supporte pas les périphériques utilisant un pilote comme sdcart.sys. Je pense peut-être un jour créer un outil nommé sdformat, mais pour l'instant, il faudra formatter la carte à l'aide d'un autre système d'exploitation.

goto top


Téléchargement

Version v01
17 novembre 2020 (Mardi)
  • Première publication
Fichier(s):
sdcjr01.zip (9.8 KB)
Ce projet est aussi disponible sur GitHub!
Pour suggérer de nouvelles fonctionnalités, signaler un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
https://github.com/raphnet/sdcartJR

goto top


Vous en voulez-un?

Des montages assemblés et testés sont disponibles dans mon magasin:
https://www.raphnet-tech.com/products/sdcartJR/

Côté composants

Côté composants

Côté soudures

Côté soudures


goto top


Références


goto top


Avertissement

Je ne saurais être tenu responsable pour les dommages que l'utilisation des informations ou la mise en œuvre des instructions présentées sur cette page pourrait causer à votre équipement, à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement.

goto top


Les marques de commerce utilisées dans ce site appartiennent à leurs propriétaires respectifs.
Copyright © 2002-2020, Raphaël Assenat
Site codé avecSite codé avec vimDernière mise à jour: 17 novembre 2020 (Mardi)