Systeme de fichiers ROM (RFS)
Presentation
* familiere, toutes les commandes originales intactes et un ensemble complet de nouvelles commandes pour la gestion de fichiers sur carte SD et ROM, le demarrage CP/M, le chargement BASIC et bien plus encore.
Le firmware prend en charge quatre plateformes materielles, chacune selectionnee a la compilation via un indicateur dans rfs_definitions.asm :
- Carte RomDisk — la cible originale. Jusqu'a 4×512 Ko de Flash RAM, 512 Ko de RAM statique et un lecteur de carte SDXC. Les ROM Moniteur et Utilisateur sont commutees par banques a travers la Flash RAM.
- SFD-700 — la carte d'interface disquette Sharp. RFS occupe l'espace CPLD/ROM du SFD-700 et fournit le moniteur, le chargement BASIC et le demarrage disquette.
- tranZPUter FusionX — la carte d'amelioration Z80 basee sur FPGA. RFS s'execute dans son espace Flash ROM.
- picoZ80 — la carte de remplacement/emulateur Z80 basee sur Raspberry Pi Pico. Sur le picoZ80, RFS fonctionne selon le persona machine presente a l'hote — en plus du MZ-80A, cela inclut desormais le Sharp MZ-80K, qui peut utiliser les memes cartes d'interface Sharp que le MZ-80A (RFS, MZ80AFI, MZ-1E14/E19, MZ-1R12/R18/R37, PIO-3034) ainsi que son propre controleur de disquette natif MZ-80FD (T3444M).
Moniteur RFS
+ RFS" lorsque le systeme de fichiers a ete initialise avec succes. L'ensemble complet des commandes SA-1510 est disponible, ainsi qu'un ensemble de commandes etendues. Certaines commandes etendues (operations sur carte SD, selection de lecteur) ne sont presentes que dans la version RomDisk / picoZ80. Un assembleur et un desassembleur Z80 integres sont disponibles dans toutes les versions.
L'ensemble complet des commandes est liste ci-dessous. Les commandes marquees (R) ne sont presentes que dans la version RomDisk / picoZ80.
| Commande | Parametres | Description |
|---|---|---|
| 0 .. 9 (R) | — | Selectionner le lecteur SD RFS actif (0–9). |
| 40 (R) | — | Passer en mode d’affichage 40 colonnes (necessite la mise a niveau Kuma 40/80 ou le Video Module). |
| 80 (R) | — | Passer en mode d’affichage 80 colonnes (necessite la mise a niveau Kuma 40/80 ou le Video Module). |
| ASM | <address> | Assembleur Z80 interactif. Saisir des mnemoniques d’assemblage directement en memoire a partir de l’adresse indiquee. |
| B | — | Activer/desactiver le signal sonore du clavier. |
| BASIC | — | Rechercher BASIC SA-5510 sur le lecteur SD actif ou en ROM, le charger et l’executer. |
| C | [<valeur 8 bits>] | Initialiser la memoire de 0x1200 au sommet de la RAM avec 0x00 ou la valeur d’octet fournie. |
| CP | <src> <dst> <size> | Copier un bloc de memoire. Les trois arguments sont des valeurs hexadecimales de 4 chiffres : adresse source, adresse destination, nombre d’octets. |
| CPM | — | Rechercher CP/M 2.2 sur le lecteur SD actif ou en ROM, le charger et le demarrer. |
| D | <addr> [<addr2>] | Afficher la memoire de <addr> a <addr2> (ou 20 lignes) en hexadecimal et ASCII. L’affichage s’interrompt a chaque ecran plein ; appuyer sur une touche pour continuer, ‘U’ pour remonter, ‘X’ pour quitter. Repeter ‘D’ sans adresse continue depuis la derniere position affichee. |
| DASM | <addr> [<addr2>] | Desassembler le code machine Z80 de <addr> a <addr2>. |
| DUC (R) | [H|T] <name> ou <no de fichier> | Afficher le contenu d’un fichier de la carte SD. Par defaut : dump hexadecimal. DUCH : dump hexadecimal avec informations d’en-tete MZF (adresse de chargement, adresse d’execution, taille). DUCT : affichage texte (caracteres ASCII imprimables uniquement). |
| EC (R) | <name> ou <no de fichier> | Effacer un fichier du lecteur SD actif par nom ou numero de fichier. |
| F / FL | [<drive>] | Demarrer depuis le lecteur de disquette specifie. Si omis, vous etes invite a entrer un numero de lecteur. |
| FD | [<drive>] | Afficher la liste du repertoire d’une disquette. Le numero de lecteur optionnel selectionne le lecteur 1–4 (par defaut : 1). |
| FC | <start> <end> <exec> | Sauvegarder une plage memoire dans un fichier sur disquette. |
| FD2T | <name> ou <no de fichier> | Copier un fichier de la disquette vers la cassette. |
| T2FD | — | Charger depuis la cassette et sauvegarder sur disquette. |
| f | — | Executer le code de demarrage AFI disquette original a 0xF000. |
| H | — | Afficher l’ecran d’aide des commandes (pagine, appuyer sur Espace pour continuer). |
| IC (R) | — | Liste paginee des fichiers sur le lecteur SD actif. Chaque entree affiche un numero de fichier hexadecimal et le nom du fichier. |
| IN | <port>[,<port>…] | Lire un ou plusieurs ports d’E/S. Chaque port est une adresse hexadecimale de 2 ou 4 chiffres. Les valeurs sont affichees en hexadecimal de 2 chiffres, separees par des espaces. |
| IR | — | Liste paginee des programmes stockes dans les lecteurs Flash ROM. |
| J | <address> | Sauter a (executer depuis) l’adresse indiquee. |
| L | LT | [<filename>] | Charger un fichier depuis la cassette (CMT) et l’executer. |
| LTNX | [<filename>] | Charger un fichier depuis la cassette (CMT) sans l’executer. |
| LR | <name> ou <no de fichier> | Charger un programme depuis la ROM par nom ou numero de fichier et l’executer. |
| LRNX | <name> ou <no de fichier> | Charger un programme depuis la ROM par nom ou numero de fichier sans l’executer. |
| LC (R) | <name> ou <no de fichier> | Charger un programme depuis la carte SD et l’executer. |
| LCNX (R) | <name> ou <no de fichier> | Charger un programme depuis la carte SD sans l’executer. |
| M | <address> | Editeur de memoire interactif a partir de <address>. |
| OUT | <port>:<value>[,<port>:<value>…] | Ecrire sur un ou plusieurs ports d’E/S. Chaque port est une adresse hexadecimale de 2 ou 4 chiffres suivie d’un deux-points et d’une valeur hexadecimale de 2 chiffres. |
| P | — | Executer un test sur l’imprimante connectee. |
| R | — | Executer un test de memoire DRAM. |
| S | ST | <start> <end> <exec> | Sauvegarder une plage memoire sur cassette (CMT). Vous etes invite a saisir un nom de fichier. Exemple : S120020001203 sauvegarde de 0x1200 a 0x2000 avec execution a 0x1203. |
| SC (R) | <start> <end> <exec> | Sauvegarder une plage memoire sur le lecteur SD actif. Vous etes invite a saisir un nom de fichier. |
| SD2T (R) | <name> ou <no de fichier> | Copier un fichier de la carte SD vers la cassette dans le CMT. |
| T | — | Tester la puce temporisateur 8253. |
| T2SD (R) | — | Charger un programme depuis la cassette et l’ecrire sur le lecteur SD actif. |
| V | — | Verifier une sauvegarde sur cassette par rapport aux donnees actuellement en memoire. |
| X (R) | — | Basculer vers la variante ROM hi-load pour que la DRAM couvre 0x0000–0xCFFF. |
Si la mise a niveau Kuma 40/80 colonnes ou le Video Module est installe, taper 4 passe en affichage 40 colonnes et 8 passe en affichage 80 colonnes. En mode 80 colonnes, les commandes de listing (IC / IR) affichent quatre colonnes.
Applications ameliorees
Sharp BASIC SA-5510
| Commande | Parametre | Description |
|---|---|---|
| LOAD | "TEST" |
Rechercher un programme nomme TEST sur le lecteur actif, le charger et l’executer. |
| LOAD | Charger le fichier sequentiel suivant depuis le lecteur actif. Si le fichier 5 a ete charge en dernier, ceci charge le fichier 6. | |
| LOAD | "3:TEST" |
Charger TEST depuis le lecteur RFS 3, rendant le lecteur 3 actif. |
| LOAD | "C:TEST" |
Charger TEST depuis la cassette interne (CMT), rendant le CMT actif. |
| SAVE | "TEST" |
Ecraser un fichier existant nomme TEST sur le lecteur actif, ou le creer s’il est absent. Sur CMT, ecrit immediatement a la position actuelle de la bande. |
| SAVE | Sauvegarder le programme actuel sous un nom genere automatiquement DEFAULT<n>, ou <n> est le numero de sequence actuel. |
|
| SAVE | "3:TEST" |
Sauvegarder/creer TEST sur le lecteur RFS 3 et rendre le lecteur 3 actif. |
| SAVE | "C:TEST" |
Sauvegarder sur CMT avec le nom TEST et rendre le CMT actif. |
| DIR | Lister le repertoire de la carte SD pour le lecteur actif au format RFS (numero de fichier + nom de fichier). | |
| DIR | "3:" |
Lister le repertoire du lecteur 3 et rendre le lecteur 3 actif. |
Voir Organisation de la carte SD ci-dessous pour la disposition par defaut des lecteurs.
Microsoft BASIC
- MS-BASIC(MZ-80A) — pour le materiel MZ-80A original, stockage sur cassette uniquement.
- MS-BASIC(RFS40) — RFS avec affichage 40 colonnes ; ajoute les commandes carte SD, CLOAD, CSAVE, DIR.
- MS-BASIC(RFS80) — RFS avec affichage 80 colonnes ; ajoute les commandes carte SD, CLOAD, CSAVE, DIR.
Chaque variante apparait sur le lecteur ROM et le lecteur SD de RFS. Consultez le NASCOM Basic Manual pour l’ensemble complet des commandes standard. Le tableau ci-dessous liste les extensions ajoutees pour RFS.
| Commande | Parametres | Version | Description |
|---|---|---|---|
| CLOAD | "<filename>" |
MZ-80A | Charger un programme BASIC tokenise depuis la cassette. |
| CSAVE | "<filename>" |
MZ-80A | Sauvegarder le programme BASIC actuel sur cassette en format tokenise. |
| CLOAD | "[<drive>:]<filename>" |
RFS40, RFS80 | Charger depuis la cassette ou la carte SD. <drive> est 0–9 ; <filename> est un nom MZ de 17 caracteres ou un numero hexadecimal RFS de 2 chiffres. Exemple : CLOAD "8:13" ou CLOAD "8:othello". |
| CSAVE | "[<drive>:]<filename>" |
RFS40, RFS80 | Sauvegarder sur cassette ou carte SD avec qualificateur de lecteur optionnel. |
| DIR | "[<drive>:]" |
RFS40, RFS80 | Afficher le contenu du lecteur RFS actif ou specifie. |
| ANSITERM | 0 = Desactive, 1 = Active |
Toutes | Activer ou desactiver (active par defaut) le processeur de terminal ANSI integre. Celui-ci traduit les sequences d’echappement ANSI en actions d’ecran, permettant aux programmes BASIC portables de fonctionner sans modification. (Le programme BASIC Star Trek V2 utilise des sequences d’echappement ANSI.) |
Convertisseur d'image cassette NASCOM
nasconv fourni retire le cadrage de bande et reconstruit le code BASIC dans un format chargeable sur le MZ-80A sous RFS. Il reaffecte egalement automatiquement les valeurs de tokens, car l'extension MS-BASIC de RFS ajoute de nouveaux tokens qui decalent la table.
nasconv v1.0
Required:
-i | --image <file> Cassette image file to convert.
-o | --output <file> Output file for converted BASIC data.
Options:
-l | --loadaddr <addr> MZ-80A BASIC start address.
-n | --nasaddr <addr> Original NASCOM BASIC start address.
-h | --help Show this help.
-v | --verbose Verbose output.
Example:
nasconv --image 3dnc.cas --output 3dnc.bas \
--nasaddr 0x10fa --loadaddr 0x4341
BASIC MZ-5Z008 (Quick Disk)
BASIC 5Z-008BRFS". Ce BASIC fonctionne egalement sur le MZ-1500 via le persona picoZ80 MZ-1500, offrant le meme support de peripheriques, y compris l'acces reseau NETx:. Les programmes peuvent etre charges, sauvegardes et listes sur tous les peripheriques pris en charge en utilisant un prefixe de peripherique dans le nom de fichier.
| Commande | Parametre | Description |
|---|---|---|
| LOAD | "RFSx:filename" |
Charger un programme BASIC depuis le lecteur SD RFS x (1–7, mappe sur les lecteurs SD 4–10). |
| SAVE | "RFSx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur SD RFS specifie. |
| DIR | RFSx: |
Afficher la liste du repertoire du lecteur SD RFS specifie. |
| LOAD | "FDx:filename" |
Charger un programme BASIC depuis le lecteur de disquette x. |
| SAVE | "FDx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur de disquette x. |
| DIR | FDx: |
Afficher la liste du repertoire de la disquette. |
| LOAD | "QDx:filename" |
Charger un programme BASIC depuis le lecteur Quick Disk x. |
| SAVE | "QDx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur Quick Disk x. |
| DIR | QDx: |
Afficher la liste du repertoire du Quick Disk. |
| LOAD | "NETx:filename" |
Charger un programme BASIC depuis le serveur de fichiers reseau unite x (1–7). Necessite une carte Celestite et netfs.py sur un PC. |
| SAVE | "NETx:filename" |
Sauvegarder le programme BASIC actuel sur le serveur de fichiers reseau unite x. |
| DIR | NETx: |
Afficher la liste du repertoire du serveur de fichiers reseau unite x. |
| LOAD | "CMT:filename" |
Charger un programme BASIC depuis la cassette. |
| SAVE | "CMT:filename" |
Sauvegarder le programme BASIC actuel sur cassette. |
BASIC MZ-2Z009E (Floppy Disk)
BASIC 2Z-009ERFS". Les programmes peuvent etre charges, sauvegardes et listes sur tous les peripheriques pris en charge en utilisant un prefixe de peripherique dans le nom de fichier.
| Commande | Parametre | Description |
|---|---|---|
| LOAD | "RFSx:filename" |
Charger un programme BASIC depuis le lecteur SD RFS x (1–7, mappe sur les lecteurs SD 4–10). |
| SAVE | "RFSx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur SD RFS specifie. |
| DIR | RFSx: |
Afficher la liste du repertoire du lecteur SD RFS specifie. |
| LOAD | "FDx:filename" |
Charger un programme BASIC depuis le lecteur de disquette x. |
| SAVE | "FDx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur de disquette x. |
| DIR | FDx: |
Afficher la liste du repertoire de la disquette. |
| LOAD | "QDx:filename" |
Charger un programme BASIC depuis le lecteur Quick Disk x. |
| SAVE | "QDx:filename" |
Sauvegarder le programme BASIC actuel sur le lecteur Quick Disk x. |
| DIR | QDx: |
Afficher la liste du repertoire du Quick Disk. |
Architecture logicielle
| Module | ROM cible | Taille | Banque | Description |
|---|---|---|---|---|
| rfs.asm | User | 2 Ko | 0 | Point d’entree principal RFS, repartiteur de commandes et table de commandes. Contient l’infrastructure de commutation de banque partagee par toutes les banques. |
| rfs_bank1.asm | User | 2 Ko | 1 | Fonctions du controleur de disquette (FDC). Gere la selection de lecteur, le demarrage, la copie de disquette (FC), disquette vers bande (FD2T) et bande vers disquette (T2FD). |
| rfs_bank2.asm | User | 2 Ko | 2 | Controleur de carte SD. Pilote SPI, initialisation de carte SD, repertoire SDCFS et lecture/ecriture de fichiers. |
| rfs_bank3.asm | User | 2 Ko | 3 | Utilitaires memoire du moniteur : dump hexadecimal, editeur de memoire, copie de memoire, dump de fichier SD (DUC), lecture/ecriture de port E/S (IN / OUT), copie bande-SD (T2SD / SD2T), test d’imprimante. |
| rfs_bank4.asm | User | 2 Ko | 4 | Controleur CMT (cassette) : chargement, sauvegarde et verification de bande. |
| rfs_bank5.asm | User | 2 Ko | 5 | Fonctions utilitaires generales : impression formatee, routines de chaines et code d’aide partage. |
| rfs_bank6.asm | User | 2 Ko | 6 | Table d’opcodes 1 de l’assembleur/desassembleur Z80, fonction PRINTMSG et infrastructure de chaines de messages. |
| rfs_bank7.asm | User | 2 Ko | 7 | Table d’opcodes 2 de l’assembleur/desassembleur Z80, desassembleur Z80 (DASM), test de memoire DRAM et test du temporisateur 8253. |
| rfs_bank8.asm | User | 2 Ko | 8 | Assembleur Z80 interactif (ASM). |
| rfs_bank9.asm | User | 2 Ko | 9 | Repertoire ROM, recherche de fichier, fonctions de chargement et d’affichage (deplacees de la banque 0 pour liberer de l’espace). |
| rfs_bank10.asm | User | 2 Ko | 10 | Reserve / libre. |
| rfs_bank11.asm | User | 2 Ko | 11 | Ecran d’aide. |
| cbios_bank1.asm | User | 2 Ko | 12 | CP/M CBIOS : fonctions audio, RTC, clavier et utilitaires bas niveau. |
| cbios_bank2.asm | User | 2 Ko | 13 | CP/M CBIOS : pilote d’ecran et emulation de terminal ANSI. |
| cbios_bank3.asm | User | 2 Ko | 14 | CP/M CBIOS : pilote de carte SD (fournit les lecteurs CP/M A:–G:). |
| cbios_bank4.asm | User | 2 Ko | 15 | CP/M CBIOS : controleur de disquette. |
| monitor_sa1510.asm | Monitor | 4 Ko | 0 | ROM moniteur SA-1510 originale (40 colonnes). |
| monitor_80c_sa1510.asm | Monitor | 4 Ko | 1 | Moniteur SA-1510 adapte pour l’affichage 80 colonnes. |
| cbios.asm | Monitor | 4 Ko | 2 | Noyau CBIOS CP/M 2.2 (charge a 0xC000–0xCFFF). |
| rfs_mrom.asm | Monitor | 4 Ko | 3 | Utilitaires Monitor ROM RFS. Le code s’executant depuis la User ROM ne pouvant pas se commuter lui-meme pour scanner le reste du ROM, ces routines s’executent depuis la Monitor ROM banque 3 pour scanner et charger les fichiers MZF stockes dans la Flash RAM User ROM. |
| monitor_1z-013a.asm | Monitor | 4 Ko | 4 | ROM moniteur MZ-1Z-013A (variante MZ-700 / MZ-1200). |
| monitor_80c_1z-013a.asm | Monitor | 4 Ko | 5 | Moniteur 1Z-013A adapte pour l’affichage 80 colonnes. |
| rfs_mrom_bank6.asm | Monitor | 4 Ko | 6 | Table d’opcodes 1 de l’assembleur/desassembleur Z80 (copie MROM). |
| rfs_mrom_bank7.asm | Monitor | 4 Ko | 7 | Table d’opcodes 2 de l’assembleur/desassembleur Z80 (copie MROM). |
| ipl.asm | Monitor | 4 Ko | 8 | Initial Program Loader. |
| rfs_mrom_bank9.asm | Monitor | 4 Ko | 9 | Depot de chaines de messages RFS. |
CP/M 2.2 est pris en charge avec 47 Ko de RAM programme utilisable. Seuls le CCP et le BDOS resident en RAM (et peuvent etre ecrases par des applications) ; le CBIOS lui-meme reside dans la Monitor ROM banque 2 et les banques User ROM 12–15, ne consommant aucune RAM programme.
La Monitor ROM produit egalement plusieurs variantes supplementaires de moniteur compilees en meme temps : un SA-1510 standard, un SA-1510 80 colonnes, une version Kuma-80 (selectionnee via l'indicateur
KUMA80_ENA dans rfs_definitions.asm), et des variantes hi-load du SA-1510 et du SA-1510 80 colonnes utilisees lorsque la DRAM doit couvrir l'integralite de la plage 0x0000–0xCFFF.
Systeme de build
La methode recommandee pour compiler RFS est le script de configuration automatise propre a votre plateforme (voir Configuration et build automatises ci-dessous) — il installe les quelques outils externes necessaires, recupere le contenu, prepare l'environnement et peut lancer le premier build pour vous, sans aucune connaissance approfondie des outils ou de la configuration. Les etapes manuelles plus bas s'adressent aux utilisateurs avances et aux rebuilds partiels.
Prerequis
| Outil | Notes |
|---|---|
| Java (JRE 8+) | Requis pour executer l’assembleur GLASS Z80. java doit etre dans le PATH. |
| bash | Tous les scripts de build sont en bash. |
| perl | Requis par mzftool.pl. |
| gcc / make | Requis pour compiler cpmtools depuis les sources (fait automatiquement au premier build). |
| dd, cat, stat | Utilitaires Linux standard utilises par les scripts d’empaquetage. |
L’assembleur GLASS Z80 (glass.jar) est inclus dans le repertoire tools/ — aucune installation separee n’est necessaire.
Configuration et build automatises (recommande)
macOS / Linux / WSL — setup_RFS.sh
chmod +x setup_RFS.sh
./setup_RFS.sh
Windows 10 / 11 — setup_RFS_windows_native.ps1 (recommande — natif, sans WSL). Depuis une invite PowerShell :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows_native.ps1
Le script natif utilise winget pour installer Git for Windows (qui fournit bash, coreutils, perl et curl) et une Temurin JRE (Java, pour l’assembleur GLASS), clone le depot, recupere le bundle de contenu et execute ./build.sh via Git Bash — sans WSL, Docker ni redemarrage. Le build RFS ne necessite aucun compilateur C sous Windows car deux outils hote precompiles (tools/cpmcp.exe et tools/sdtool.exe) sont fournis.
Windows 10 / 11 — setup_RFS_windows.ps1 (alternative — compile dans WSL2 / Ubuntu). Depuis un PowerShell Administrateur :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows.ps1
Cette variante WSL installe WSL2 + Ubuntu s’ils ne sont pas deja presents (ceci necessite un redemarrage unique — redemarrez, lancez Ubuntu une fois depuis le menu Demarrer pour creer votre nom d’utilisateur/mot de passe Linux, puis relancez le script), puis execute setup_RFS.sh dans Ubuntu. Preferez le script natif ci-dessus sauf si vous voulez specifiquement un environnement WSL.
Questions posees par la configuration, et que faire
Chaque invite comporte une valeur par defaut sure entre crochets — la lettre en majuscule est la valeur par defaut, donc appuyer sur Entree l’accepte. Les invites apparaissent dans cet ordre :
Windows uniquement (dans PowerShell, avant le lancement de la configuration Linux) :
| Invite | Defaut | Que faire |
|---|---|---|
Continue anyway? [y/N] (uniquement si non lance en tant qu’Administrateur) |
Non | Repondez N, rouvrez PowerShell avec Executer en tant qu’administrateur, et recommencez — l’installation de WSL necessite des droits administrateur. |
Install WSL2 + Ubuntu now? [y/N] (uniquement si WSL / Ubuntu est absent) |
Non | Repondez y. Windows installe WSL2 + Ubuntu, puis vous demande de redemarrer. Apres le redemarrage, lancez Ubuntu une fois pour creer votre utilisateur Linux, puis relancez le script. |
Repo URL [https://git.eaw.app/eaw/RFS.git] |
depot public | Appuyez sur Entree pour le depot RFS public, ou collez une autre URL (par exemple le depot de developpement prive). |
macOS / Linux / WSL (dans le shell Linux / Ubuntu) :
| Invite | Defaut | Que faire |
|---|---|---|
Install now? [Y/n] (uniquement si des outils sont absents) |
Oui | Appuyez sur Entree. Le script installe les outils manquants avec votre gestionnaire de paquets (apt / dnf / pacman, ou Homebrew sous macOS) ; il se peut qu’on vous demande votre mot de passe sudo. Sous macOS, il declenche d’abord l’installateur des Xcode Command Line Tools et necessite Homebrew. |
Repo URL [https://git.eaw.app/eaw/RFS.git]: (uniquement si vous n’etes pas deja dans une copie de travail) |
depot public | Appuyez sur Entree pour le depot public, ou collez l’URL du depot prive. (Ignore sous Windows — l’etape PowerShell a deja transmis votre choix.) |
Install directory [~/RFS]: (uniquement lors du clonage) |
~/RFS |
Appuyez sur Entree pour cloner dans ~/RFS, ou saisissez un autre chemin. |
Remove <dir> and re-clone …? [y/N] (uniquement si ce repertoire contient deja un depot different) |
Non | Repondez y uniquement si vous etes sur de vouloir supprimer ce repertoire et recloner ; sinon N et choisissez un autre repertoire d’installation. |
Download and install them now? [Y/n] (images de contenu, ~110 Mo) |
Oui | Appuyez sur Entree pour telecharger le contenu MZF / disque / CP/M / BASIC depuis RFS_Files.zip — necessaire pour un build complet. Repondez n uniquement si vous les avez deja via une copie de travail SharpSoft voisine. |
Run the first build now (./build.sh -m …)? [Y/n] |
Oui | Appuyez sur Entree pour compiler immediatement — ceci verifie l’ensemble de l’environnement. Le premier build utilise -m pour traiter les sources MZF dans MZB/ et est plus lent que les builds ulterieurs. |
Il se peut aussi qu’on vous demande votre mot de passe sudo (installation de paquets) et vos identifiants git si vous avez choisi un depot prive.
Apres la configuration — recompiler
Lorsque la configuration se termine, elle affiche le chemin de la copie de travail. Pour recompiler ulterieurement :
cd ~/RFS # ou le repertoire que vous avez choisi
source ./rfs_env.sh # macOS uniquement (ajoute GNU coreutils + le JRE au PATH) ; sans effet ailleurs
./build.sh -m # PREMIER build : traiter MZF -> MZB, puis tout compiler
./build.sh # builds ulterieurs (ne relancez -m que si les sources MZF changent)
./build.sh -h # lister les variantes et options
Sous Windows, ouvrez le terminal Ubuntu (menu Demarrer → “Ubuntu”, ou tapez wsl dans PowerShell) et executez les memes commandes dans ~/RFS. Les images ROM apparaissent dans ~/RFS/roms.
build.sh compile toutes les variantes materielles par defaut ; passez un ou plusieurs noms de variantes (sfd700, romdisk_mz80a, picoz80_mz80a, picoz80_kuma, picoz80_mz700, picoz80_mz1500, picoz80_mz80k, ou all) pour ne compiler que celles-ci. Selectionner une variante configure tout automatiquement — aucune edition de source necessaire. Options : -m (traiter les MZF), -s (ignorer l’assemblage partage), -c (nettoyer), -v (verbeux), -h (aide).
Avance : indicateurs de cible de build
Pour la plupart des builds, vous n’avez pas besoin de cette section — selectionner une variante avec build.sh (ci-dessus) configure tout automatiquement. Le mecanisme sous-jacent est un ensemble d’indicateurs dans asm/include/rfs_definitions.asm ; exactement un des suivants est mis a 1 (tous les autres a 0) pour une cible donnee, ce que build.sh fait pour vous par variante. Ne les editez a la main que pour une configuration personnalisee :
| Indicateur | Cible | Description |
|---|---|---|
BUILD_ROMDISK |
Carte RomDisk | MZ-80A avec 4x512 Ko Flash RAM + extension carte SDXC. |
BUILD_SFD700 |
SFD-700 | Carte d’interface disquette Sharp. Pas de carte SD. |
BUILD_PICOZ80 |
picoZ80 | Carte de remplacement Z80 basee sur Raspberry Pi Pico. |
Indicateurs optionnels supplementaires dans le meme fichier :
| Indicateur | Defaut | Description |
|---|---|---|
KUMA80_ENA |
0 | Mettre a 1 si la mise a niveau Kuma 40/80 colonnes est installee. |
VIDEOMODULE_ENA |
0 | Mettre a 1 si le Video Module couleur 40/80 colonnes est installe. |
FUSIONX_ENA |
0 | Mettre a 1 lors de l’execution de RFS sur la carte tranZPUter FusionX. |
HW_SPI_ENA |
1 | SPI materiel (PCB RomDisk v2+). Laisser a 1 pour toutes les cartes actuelles. |
ENADEBUG |
0 | Activer la sortie de debogage lors de l’assemblage. |
Build manuel et ce que fait build.sh
Si vous preferez ne pas utiliser le script de configuration (ou si vous scriptez un build CI), vous pouvez cloner et compiler directement — vous devez toujours avoir les prerequis installes et, sur un clone autonome neuf, recuperer vous-meme les images de contenu (ou executer setup_RFS.sh, qui le fait pour vous) :
git clone --recurse-submodules https://git.eaw.app/eaw/RFS.git
cd RFS
# Build complet (assemble tous les ROMs, empaquette les images ROM, cree l'image de carte SD) :
./build.sh
# Build complet incluant le retraitement de tous les fichiers d'application MZF
# (necessaire uniquement lorsque les fichiers source MZF dans MZF/ ont change) :
./build.sh -m
build.sh execute les etapes suivantes dans l’ordre :
- Compile
cpmtoolsdepuis les sources (premier lancement uniquement) et ajoute le resultat auPATH. tools/assemble_rfs.sh— assemblerfs.asmetrfs_mrom.asmenroms/rfs.rometroms/rfs_mrom.rom.tools/assemble_cpm.sh— assemble le CBIOS CP/M 2.2 (cbios.asm,cbios_bank1–4.asm,cpm22.asm) enroms/*.rom.tools/assemble_roms.sh— assemble toutes les variantes du moniteur (SA-1510, 80c SA-1510, 1Z-013A, variantes hi-load, version Kuma, IPL) et les fichiers d’application MZF (SA-5510, variantes MS-BASIC, etc.) dansroms/etMZB/.tools/make_roms.sh— empaquette les ROMs assemblees et les applications MZF en images Flash ROM (voir Fichiers de sortie ci-dessous).tools/make_cpmdisks.sh— cree les images de disques CP/M en format RAW et CPC Extended Disk Format pour chacun des ensembles de lecteurs CP/M pre-remplis.tools/make_sdcard.sh— assemble l’image finale de carte SD combinant 10 images de lecteurs RFS et 7 images de disques CP/M.
Les scripts individuels peuvent egalement etre executes directement depuis le repertoire tools/ pour des builds partiels.
Fichiers de sortie
Apres un build reussi, le repertoire roms/ contient :
| Fichier | Puce Flash | Description |
|---|---|---|
MROM_ROMDISK_256.bin |
SST39SF040 (Monitor ROM) | Image Monitor ROM pour le build RomDisk. Contient SA-1510, 80c SA-1510, CP/M CBIOS, utilitaires RFS MROM, moniteurs 1Z-013A, tables d’opcodes assembleur/desassembleur, IPL et chaines de messages sur 16x4 Ko pages. |
MROM_PICOZ80_256.bin |
SST39SF040 (Monitor ROM) | Image Monitor ROM pour le build picoZ80 (ordre des banques different de ROMDISK). |
USER_ROM_256.bin |
SST39SF040 (User ROM 1) | User ROM 1 : banques RFS 0–11, banques CP/M CBIOS 12–15, image CP/M 2.2 et ensemble d’applications MZF empaquetees. |
USER_ROM_II_256.bin |
SST39SF040 (User ROM 2) | User ROM 2 : applications MZF supplementaires. |
USER_ROM_III_256.bin |
SST39SF040 (User ROM 3) | User ROM 3 : applications MZF supplementaires. |
SFD700_256.bin |
SST39SF040 | ROM SFD-700 : ROM disquette AFI MZ-80A (0x00000–0x00FFF), ROM disquette MZ-700 (0x01000–0x01FFF), firmware RFS (0x02000–0x0BFFF), puis systeme de fichiers ROM. |
SHARP_MZ80A_RFS_IMAGE_0–9.img |
Carte SD | Dix images de lecteurs RFS (une par lecteur 0–9). |
SHARP_MZ80A_RFS_CPM_IMAGE_1.img |
Carte SD | Image de carte SD combinee : 10 lecteurs RFS suivis de 7 images de disques CP/M. A copier directement sur une carte SD. |
Programmation des Flash ROMs
Les images ROM sont ecrites sur des puces Flash RAM SST39SF040 (512 Ko) a l’aide d’un programmeur TL866 ou compatible :
# Monitor ROM (build RomDisk) :
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/MROM_ROMDISK_256.bin
# User ROM 1 :
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/USER_ROM_256.bin
# SFD-700 :
minipro --infoic /path/to/minipro/infoic.xml -p SST39SF040 -s -w roms/SFD700_256.bin
Ecriture de l'image de carte SD
Ecrivez l’image de carte SD combinee directement sur la carte SD avec dd :
# Remplacez /dev/sdX par votre peripherique de carte SD :
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512
sync
Aucun partitionnement requis. L’image SDCFS commence au secteur 0. Inserez la carte SD dans le lecteur sur la carte RomDisk.
Ajout d'applications aux lecteurs ROM
Les applications stockees dans les lecteurs Flash ROM doivent d’abord etre converties du format MZF en images binaires alignees par secteur. Placez les fichiers MZF dans le sous-repertoire approprie sous MZF/ et executez :
tools/processMZFfiles.sh
Cela convertit tous les fichiers MZF en images alignees par secteur de 128 octets et 256 octets dans MZB/. Ils sont ensuite automatiquement pris en charge par make_roms.sh.
Pour choisir quelles applications apparaissent dans chaque lecteur ROM, editez tools/make_roms.sh et ajustez les appels addMZFToROMImageList. Chaque appel prend quatre indicateurs (inclure dans le build ROMDISK, inclure dans le build SFD700, inclure dans le build picoZ80, reserve) et le chemin vers le binaire sectorise :
# Format :
# addMZFToROMImageList <ROMDISK> <SFD700> <picoZ80> <reserved> "<MZB path>"
#
# Exemple — inclure dans tous les builds :
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"
# Exemple — RomDisk et picoZ80 uniquement :
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/MZ-80A/defender.${SECTORSIZE}.bin"
Les applications sont empaquetees dans l’ordre indique, remplissant d’abord User ROM 1, puis User ROM 2 et 3. Placez les applications que vous souhaitez toujours disponibles en haut de la liste.
Reference des outils de build
| Script / Outil | Description |
|---|---|
build.sh |
Script de build de premier niveau. Execute toutes les etapes ci-dessous dans l’ordre. Passez -m pour aussi retraiter les fichiers d’application MZF. |
tools/assemble_rfs.sh |
Assemble rfs.asm et rfs_mrom.asm → roms/rfs.rom, roms/rfs_mrom.rom. |
tools/assemble_cpm.sh |
Assemble le CBIOS et le noyau CP/M 2.2 → roms/*.rom. |
tools/assemble_roms.sh |
Assemble toutes les variantes ROM du moniteur et les binaires d’application MZF. Gere les quatre variantes de build MS-BASIC via un BUILD_VERSION EQU ecrit dans include/msbasic_buildversion.asm avant chaque passe. |
tools/make_roms.sh |
Empaquette les binaires ROM et MZF en images Flash ROM pour les cibles ROMDISK, SFD700 et picoZ80. |
tools/make_cpmdisks.sh |
Cree les images de disques CP/M en format RAW (pour carte SD) et CPC Extended Disk Format (pour emulateurs de disquette ou copie physique). |
tools/make_sdcard.sh |
Combine les images de lecteurs RFS et les images de disques CP/M en une seule image de carte SD. |
tools/processMZFfiles.sh |
Convertit les fichiers d’application MZF en images alignees par secteur de 128 octets et 256 octets dans MZB/. |
tools/mzftool.pl |
Script Perl pour creer, extraire et inspecter les images au format MZF. |
tools/sdtool |
Outil binaire qui construit la structure de repertoire de la carte SD RFS et la remplit avec des applications MZF / binaires. |
tools/nasconv |
Convertit les fichiers d’image cassette NASCOM au format chargeable sur MZ-80A, en reassignant les valeurs de tokens MS-BASIC si necessaire. |
tools/glass.jar |
Assembleur GLASS Z80 fourni (Java). Utilise par les trois scripts d’assemblage. |
tools/MZFD/MZFDTool |
Cree et gere les images de disquette brutes pour le FDC MZ-700. Commandes : format (creer une image vierge), dir (lister le repertoire), add (ajouter un fichier MZF), extract (extraire un fichier en MZF), boot (definir le programme de demarrage). Image par defaut : MZ700.img. |
tools/MZQD/MZQDTool |
Cree et gere les images Quick Disk (QD) pour le MZ-700. Commandes : format (creer une image vierge), dir (lister le repertoire), add (ajouter un fichier MZF). Image par defaut : MZ700.qd. |
cpmtools/ |
Source cpmtools (cpmcp, cpmls, cpmrm, etc.). Compile automatiquement au premier build et installe dans tools/. |
SD Card Filing System
Structure SDCFS
| FLAG1 | FLAG2 | FILE NAME | START SECTOR | SIZE | LOAD ADDR | EXEC ADDR | RESERVED |
|---|---|---|---|---|---|---|---|
| 1 Byte | 1 Byte | 17 Bytes | 4 Bytes | 2 Bytes | 2 Bytes | 2 Bytes | 3 Bytes |
| Champ | Description |
|---|---|
| FLAG1 | Bit 7 = 1 : entree valide. Bit 7 = 0 : inactive / supprimee. |
| FLAG2 | Type d’execution MZF (0x01 = binaire). |
| FILE NAME | Nom de fichier MZF standard de 17 caracteres. |
| START SECTOR | Premier secteur dans cette image de lecteur ou les donnees du fichier commencent. |
| SIZE | Nombre reel d’octets des donnees du fichier. |
| LOAD ADDR | Adresse RAM ou charger les donnees du fichier. |
| EXEC ADDR | Adresse d’execution automatique pour les fichiers binaires. |
| RESERVED | Non utilise actuellement. |
Chaque bloc de fichier a une taille fixe de 64 Ko, correspondant a la taille maximale du bloc CMT (cassette). Cela simplifie la disposition et permet de lire ou d’ecrire les fichiers exactement comme s’ils etaient sur bande, permettant des operations de copie SD-CMT transparentes.
Disposition de la carte SD
ADDRESS SECTOR CONTENT
00000000 00000 ┌─────────────────────────────────────────────────────────────┐
│ RFS DRIVE 0 │
00000000 00000 │ Directory entry 000 (32 bytes) │
│ ... │
00001FE0 0000F │ Directory entry 255 (32 bytes) │
00002000 00010 │ File block 0 (64 KB) │
│ ... │
00FF2000 7FF90 │ File block 255 (64 KB) │
01001FFF 8000F └─────────────────────────────────────────────────────────────┘
... (les lecteurs RFS 1–8 suivent le meme schema)
09012000 48090 ┌─────────────────────────────────────────────────────────────┐
│ RFS DRIVE 9 │
0A013FFF 5009F └─────────────────────────────────────────────────────────────┘
... remplissage jusqu'a la limite de 256 Mo ...
10000000 80000 ┌─────────────────────────────────────────────────────────────┐
│ CP/M DISK IMAGE 0 (16 MB, 32 sectors × 1024 tracks) │
11000000 88000 ├─────────────────────────────────────────────────────────────┤
│ CP/M DISK IMAGE 1 │
│ ... │
XX000000 │ CP/M DISK IMAGE n │
└─────────────────────────────────────────────────────────────┘
Organisation de la carte SD
L’image de carte SD construite par les outils du depot est pre-remplie comme suit :
| Lecteur RFS | Contenu |
|---|---|
| 0 | Programmes en code machine communs et MZ-80A. |
| 1 | Programmes en code machine MZ-80K. |
| 2 | Programmes en code machine MZ-700. |
| 3 | Programmes en code machine MZ-800 / MZ-1500. |
| 4 | Programmes en code machine MZ-80B / MZ-2000. |
| 5 | Programmes BASIC, type 2 (MZ-80A). |
| 6 | Programmes BASIC, type 2 (MZ-80K). |
| 7 | Programmes BASIC, type 5 (MZ-700 / MZ-800). |
| 8 | Autres programmes / divers. |
| 9 | Autres programmes / divers. |
| Lecteur CP/M | User# | Image disque | Contenu |
|---|---|---|---|
| 0 | 0 | CPM00_SYSTEM | Programmes systeme CP/M |
| 1 | CPM01_TURBOP | Turbo Pascal | |
| 2 | CPM02_HI_C | Hi-Soft C | |
| 3 | CPM03_FORTRAN80 | Fortran 80 | |
| 4 | CPM04_MBASIC | Microsoft BASIC 80/85 | |
| 5–7 | CPM05–07_COBOL80 | Cobol v1.3, v2.0, Cobol 80 | |
| 8 | CPM08_Z80FORTH | Z80 Forth | |
| 9 | CPM09_CPMTEX | CP/M TeX | |
| 10 | CPM10_DISKUTILFUNC5 | Utilitaires de disque | |
| 11 | CPM11_MAC80 | Macro Assembler 80 | |
| 12 | CPM29_ZSID_v14 | ZSID Debugger | |
| 13–14 | CPM32–33_ZCPR3 | Amelioration CCP ZCPR3 | |
| 1 | 0 | CPM12_PASCALMTP_v561 | Pascal v5.61 |
| 1 | CPM26_TPASCAL_v300a | Turbo Pascal v3.00a | |
| 2–11 | CPM13–22_MTPUG_01–10 | Pascal User Group Disks 01–10 | |
| 2 | 0–2 | CPM23–25_PLI / PLI80 | PLI Compiler, PLI 80 v1.3, v1.4 |
| 3 | CPM28_PLM80 | PLM 80 | |
| 4–6 | CPM27,30,31_WORDSTAR | WordStar v3.0, v3.3, v4.0 | |
| 3–6 | 0–9 | CPM_MC_C0–F9 | Collection Grant Searle CP/M disques C0–F9 |
Manuels
| Manuel | Description |
|---|---|
| Manuel utilisateur | Obtenir RFS, reference des commandes du moniteur, utilisation des lecteurs SD, BASIC, CP/M et depannage |
| Guide technique | Plateformes materielles, architecture memoire, commutation de banque, conception SDCFS, CBIOS CP/M et reference complete du systeme de build |
| Guide du developpeur | Introduction a l’assembleur Z80, parcours complets des modules sources (y compris les mecanismes internes de commutation de banque), et guides pour l’ajout de nouvelles commandes et cibles materielles |
Remerciements
Licences
Aucune utilisation commerciale de cette conception ou de tout composant materiel/firmware ne peut etre faite sans l'autorisation expresse de l'auteur. Cette condition prevaut sur tous les droits accordes par la licence GNU GPL 3.
La licence publique generale GNU v3
Les fichiers sources sont distribues dans l'espoir qu'ils seront utiles, mais SANS AUCUNE GARANTIE ; sans meme la garantie implicite de QUALITE MARCHANDE ou d'ADEQUATION A UN USAGE PARTICULIER. Voir la licence publique generale GNU pour plus de details.
Vous devriez avoir recu une copie de la licence publique generale GNU avec ce programme. Sinon, voir http://www.gnu.org/licenses/.