MZ-80A RomDisk — Guide Technique
Guide Technique du RomDisk
Ce guide documente la conception materielle du circuit imprime Sharp MZ-80A RomDisk, l'architecture memoire, les mecanismes de controle de banque, les options d'interface SPI, la disposition des modules logiciels, la conception du systeme de fichiers SD Card Filing System, l'implementation CP/M et le systeme de compilation complet. Il est destine aux utilisateurs qui souhaitent comprendre le fonctionnement du RomDisk au niveau systeme, compiler le firmware a partir du code source ou developper de nouveaux logiciels utilisant l'environnement ROM a banques.
Pour l'utilisation quotidienne et la reference des commandes du moniteur, consultez le Manuel Utilisateur RFS. Pour les explications du code source assembleur Z80, consultez le Guide du Developpeur RFS.
Versions Materielles
Le circuit imprime RomDisk est une carte fille pour le Sharp MZ-80A. Il se branche sur le connecteur d'extension du MZ-80A et utilise des supports rehausseurs pour intercepter les lignes de selection de puce du Monitor ROM (4 Ko a 0x0000-0x0FFF) et du User ROM (2 Ko a 0xE800-0xEFFF), remplacant les deux par de la Flash RAM paginee. Trois revisions materielles ont ete produites.
Version 1.1
La carte de production originale. Caracteristiques principales :
Version 2.0
- Une Flash RAM SST39SF040 de 512 Ko dans le support Monitor ROM (U1) -- fournit huit emplacements de banque de 4 Ko.
- Une Flash RAM de 512 Ko dans le support User ROM (U4) -- fournit 256 emplacements de banque de deux kilooctets, bien que RFS n'utilise que les douze premiers.
- Simple verrou de type D pour la selection de banque -- le registre de banque est accessible en permanence sans mecanisme de protection.
- Acces a la carte SD via SPI logiciel bitbang a travers les broches du port parallele imprimante du Sharp MZ-80A. Cette methode est fonctionnelle mais lente par rapport au SPI materiel ulterieur.
PP_SPI_ENA. Il n'y a pas de verrou code ; les registres de banque peuvent etre ecrits a tout moment.
Une revision majeure ajoutant le SPI materiel, des emplacements Flash supplementaires, une SRAM optionnelle et un mecanisme de securite pour les registres de banque :
Version 2.1 (Actuelle)
- Verrou code -- un compteur ascendant 4 bits 74HCT191 controle la logique de decodage des registres de controle E/S. A la mise sous tension ou apres une lecture de reinitialisation, le compteur est a 0 et les registres de banque sont inaccessibles (les lectures de 0xEFF8-0xEFFF retournent les donnees Flash ROM normalement). Les registres de controle ne deviennent actifs qu'apres exactement 16 lectures sequentielles dans la plage 0xEFF8-0xEFFF qui incrementent le compteur jusqu'a sa sortie Terminal Count. Cela empeche les commutations de banque accidentelles lorsque du code Z80 accede a cette plage d'adresses pendant l'execution normale.
- Circuit SPI materiel -- registre a decalage serie-parallele 74HCT595 (sortie MOSI/CLK) et registre a decalage parallele-serie 74HCT165 (entree MISO), cadences a 8 MHz par un oscillateur a quartz de 16 MHz. Support de carte SD monte directement sur le circuit imprime.
- Deuxieme et troisieme emplacements Flash User ROM (U5 et U6) -- chacun un SST39SF040 supplementaire de 512 Ko. Les bits BK2A19/BK2A20 dans le registre BNKCTRL selectionnent lequel des trois circuits User ROM est actif.
- SRAM optionnelle de 512 Ko -- AS6C4008, sur support. Destinee a une utilisation future comme espace de travail pagine supplementaire.
- Le cavalier a souder JP6 selectionne si le circuit SPI materiel ou un circuit SPI logiciel bitbang est monte.
Une revision de correction ciblee traitant le probleme d'adresse de rafraichissement de la v2.0. Modifications par rapport a la v2.0 :
- Porte ET a partir de diodes discretes (D1/D2) ajoutee a l'entree d'horloge du compteur. La porte combine le signal de decodage d'adresse avec le signal Z80
/MREQ, de sorte que seuls les vrais cycles de bus de lecture memoire (pas les cycles de rafraichissement) puissent incrementer le compteur 74HCT191. Les cycles de rafraichissement activent/RFSHet desactivent/MREQ, ils sont donc bloques. - 0xEFF9 recable comme adresse dediee d'effacement du verrou code. Une seule lecture de 0xEFF9 reinitialise le compteur 74HCT191 a 0 et desactive l'acces aux registres de controle E/S.
- Serigraphie du circuit imprime nettoyee -- references des composants corrigees.
Architecture Memoire
Le processeur Z80 du Sharp MZ-80A adresse 64 Ko de memoire. Le RomDisk remplace les deux fenetres ROM par de la Flash RAM paginee et ajoute huit registres de controle E/S dans les huit octets superieurs de la plage d'adresses User ROM. La plage complete 0x1200-0xCFFF reste disponible pour les programmes utilisateur.
Disposition de l'Espace d'Adressage Z80
Address Size Contents
─────────────────────────────────────────────────────────────────────────────
0x0000 4 KB Fenetre Monitor ROM — page de 4 Ko dans la Flash MROM de 512 Ko (U1)
Banks: 0 = SA-1510 (40 colonnes, par defaut a la mise sous tension)
1 = SA-1510 80 colonnes
2 = CP/M CBIOS Kernel
3 = Utilitaires RFS Monitor ROM
4 = 1Z-013A moniteur MZ-700
5 = 1Z-013A 80 colonnes
6 = IPL (Initial Program Loader)
7 = (vide)
0x1000 256 B Variables systeme MZ-80A et pile
0x1200 ~46 KB RAM utilisateur (zone de programme principale, 0x1200–0xCFFF)
0xCFFF
0xD000 12 KB RAM video + E/S mappee en memoire (materiel carte mere Sharp MZ-80A)
0xE800 2 KB Fenetre User ROM — page de 2 Ko dans la Flash UROM de 512 Ko (U4/U5/U6)
Banks 0–7: Modules firmware RFS
Banks 8–11: Modules CP/M CBIOS
0xEFF8 8 B Zone de lecture du verrou code (v2+): 16 lectures ici deverrouillent les registres de controle
Egalement donnees Flash ROM quand le verrou est ferme
0xEFF9 1 B Reinitialisation du verrou code: une lecture reverrouille les registres de controle (v2.1+)
0xEFFB 1 B HWSPIDATA — Registre de donnees SPI materiel (v2+)
0xEFFC 1 B HWSPISTART — Registre de demarrage/declenchement SPI materiel (v2+)
0xEFFD 1 B BNKSELMROM — Registre de selection de banque Monitor ROM
0xEFFE 1 B BNKSELUSER — Registre de selection de banque User ROM
0xEFFF 1 B BNKCTRL — Registre de controle de banque
0xF000 4 KB Espace ROM Floppy AFI (ROM du controleur de disquette Sharp d'origine)
─────────────────────────────────────────────────────────────────────────────
Banques Monitor ROM (4 Ko chacune)
La fenetre Monitor ROM a 0x0000-0x0FFF est commutee par banque sur huit banques de 4 Ko stockees dans la puce Flash MROM en U1. La banque 0 est selectionnee a la mise sous tension.
| Bank | Module | Description |
|---|---|---|
| 0 | monitor_sa1510.asm |
Moniteur SA-1510 original 40 colonnes. La banque par defaut a la mise sous tension. |
| 1 | monitor_80c_sa1510.asm |
SA-1510 modifie pour affichage 80 colonnes (necessite le module Kuma 80 colonnes). |
| 2 | cbios.asm |
Noyau CBIOS CP/M 2.2 – relogeable a 0xC000-0xCFFF lors du demarrage CP/M. |
| 3 | rfs_mrom.asm |
Utilitaires RFS Monitor ROM – analyse et chargement d’images MZF. S’execute depuis l’espace MROM pour pouvoir paginer le User ROM sans se remplacer lui-meme. |
| 4 | monitor_1z-013a.asm |
Variante moniteur MZ-700 1Z-013A. |
| 5 | monitor_80c_1z-013a.asm |
Moniteur 1Z-013A modifie pour affichage 80 colonnes. |
| 6 | ipl.asm |
Initial Program Loader. |
| 7 | (vide) | Non utilise. |
La fenetre User ROM a 0xE800-0xEFFF est commutee par banque sur 12 banques actives reparties sur les trois puces Flash User ROM (U4, U5, U6). Le registre BNKSELUSER selectionne la page de 2 Ko dans la puce active ; les bits BK2A19 et BK2A20 dans BNKCTRL selectionnent quelle puce est adressee.
| Bank | Module | Description |
|---|---|---|
| 0 | rfs.asm |
Point d’entree principal RFS, repartiteur de commandes, table de commandes, infrastructure de commutation de banque partagee par toutes les banques. |
| 1 | rfs_bank1.asm |
Fonctions du controleur de disquette (FDC) – selection de lecteur et demarrage FDC. |
| 2 | rfs_bank2.asm |
Controleur de carte SD – pilote SPI, initialisation de carte SD, repertoire et lecture/ecriture de fichiers SDCFS. |
| 3 | rfs_bank3.asm |
Utilitaires memoire – vidage hexadecimal (D), edition memoire (M), copie memoire (CP), copie cassette vers SD (T2SD/SD2T). |
| 4 | rfs_bank4.asm |
Controleur CMT (cassette) – chargement, sauvegarde et verification de cassette. |
| 5 | rfs_bank5.asm |
(Reserve / non utilise.) |
| 6 | rfs_bank6.asm |
Ecran d’aide, chaines de messages, table de conversion de jeu de caracteres ASCII vers Sharp. |
| 7 | rfs_bank7.asm |
Test memoire (R), test de temporisateur 8253 (T). |
| 8 | cbios_bank1.asm |
CP/M CBIOS – fonctions audio et utilitaires bas niveau. |
| 9 | cbios_bank2.asm |
CP/M CBIOS – pilote d’ecran et emulation de terminal ANSI. |
| 10 | cbios_bank3.asm |
CP/M CBIOS – pilote de lecteur de carte SD (lecteurs CP/M A:-G:). |
| 11 | cbios_bank4.asm |
CP/M CBIOS – controleur de disquette. |
Controle de Banque
Mecanisme du Verrou Code
Sur les cartes v2.0 et v2.1, les registres de controle de banque sont proteges par un compteur ascendant 4 bits 74HCT191 faisant office de verrou code. Le mecanisme empeche le code Z80 s'executant depuis la RAM programme de commuter accidentellement les banques ROM simplement en lisant ou ecrivant une adresse qui se trouve dans la plage 0xEFF8-0xEFFF.
Fonctionnement :
Registre de Controle de Banque (BNKCTRL, 0xEFFF)
- A la mise sous tension ou apres une lecture de reinitialisation du verrou, le compteur 74HCT191 est a 0. La logique de decodage des registres de controle E/S est desactivee -- les lectures de 0xEFF8-0xEFFF retournent les donnees Flash ROM normalement, et les ecritures sur BNKSELMROM/BNKSELUSER/BNKCTRL n'ont aucun effet.
- Pour deverrouiller les registres de controle : effectuez exactement 16 cycles de lecture sur n'importe quelle adresse dans la plage 0xEFF8-0xEFFF. Chaque lecture incremente le compteur de un. Sur les cartes v2.1, seuls les vrais cycles de bus de lecture memoire (avec
/MREQactive) comptent ; les cycles de rafraichissement DRAM du Z80 (qui activent/RFSHet desactivent/MREQ) sont bloques par la porte ET D1/D2 et n'incrementent pas le compteur. - Lorsque le compteur atteint le Terminal Count (16), la sortie TC devient active et active la logique de decodage des registres de controle E/S. Les registres de selection de banque sont maintenant inscriptibles.
- Pour reverrouiller : lisez l'adresse 0xEFF9 une fois. Cela active la ligne de chargement/reinitialisation du compteur, remet le compteur a 0 et desactive immediatement les registres de controle E/S.
Le registre BNKCTRL controle les signaux SPI bitbang, la selection de puce de la carte SD, la configuration du verrou code et la selection de puce User ROM. Il est en ecriture seule (apres le deverrouillage du verrou code).
| Bits | Name | Description |
|---|---|---|
| 0 | BBCLK | Sortie d’horloge SPI BitBang. Basculee par les routines SPI logicielles pour generer le signal d’horloge SPI. |
| 1 | SDCS | Selection de puce de la carte SD – actif bas. Mettre a 0 pour selectionner la carte SD, 1 pour deselectionner. |
| 2 | BBMOSI | Sortie de donnees SPI BitBang MOSI. Reglee sur la valeur du bit avant de basculer BBCLK. |
| 5:3 | CDLTCH1-3 | Bits de configuration du verrou code. Definit le decalage initial du compteur, controlant le nombre de lectures de 0xEFF8-0xEFFF necessaires pour deverrouiller les registres. Par defaut 0 = 16 lectures necessaires. |
| 6 | BK2A19 | Bit 0 de selection de peripherique/adresse User ROM. Combine avec BNKSELUSER pour adresser les 512 Ko complets de chaque puce User ROM et pour selectionner entre U4, U5 et U6. |
| 7 | BK2A20 | Bit 1 de selection de peripherique/adresse User ROM. Voir BK2A19. |
Les bits BK2A19/BK2A20 etendent l'espace d'adressage User ROM effectif au-dela des 256 banques de deux kilooctets disponibles via BNKSELUSER seul. Combines avec BNKSELUSER, ils forment une adresse composite dans les trois puces Flash User ROM, selectionnant quelle puce est active (U4, U5 ou U6) et quelle page de 2 Ko est mappee sur la fenetre 0xE800-0xEFFF.
Interface SPI
Trois implementations SPI sont prises en charge et sont selectionnees lors de la compilation en definissant exactement un drapeau a
1 dans rfs_definitions.asm. Un seul peut etre active dans une compilation de firmware donnee.
| Flag | Value | Method | Speed | Hardware Required |
|---|---|---|---|---|
HW_SPI_ENA |
1 | SPI materiel – registres a decalage 74HCT595/74HCT165, quartz 16 MHz | 8 MHz – comparable a la vitesse d’acces Flash ROM | PCB v2.0/v2.1 avec JP6 configure pour SPI materiel |
SW_SPI_ENA |
1 | SPI logiciel bitbang via manipulation de bits du port E/S Z80 de BNKCTRL | ~300 Ko/s – plus rapide que la disquette, plus lent que la ROM | PCB v2.0/v2.1 avec JP6 configure pour SPI logiciel |
PP_SPI_ENA |
1 | Bitbang par port parallele imprimante (methode originale v1.1) | Le plus lent | PCB v1.1 uniquement |
Fonctionnement du SPI materiel (cartes v2.0/v2.1) :
- Ecrivez l'octet de donnees dans HWSPIDATA (0xEFFB). Le registre a decalage 74HCT595 charge l'octet pret pour la transmission.
- Ecrivez n'importe quelle valeur dans HWSPISTART (0xEFFC) pour demarrer le transfert. Le registre a decalage envoie l'octet sur la ligne MOSI synchronise a l'oscillateur de 16 MHz, tandis que le 74HCT165 recoit simultanement les bits MISO de la carte SD.
- Lisez HWSPIDATA (0xEFFB) pour recuperer l'octet recu. L'echange complet de 8 bits s'acheve en moins de temps qu'un seul cycle de lecture memoire Z80 -- c'est pourquoi le debit du SPI materiel est comparable a la vitesse d'acces Flash ROM.
Architecture Logicielle
La table complete des modules -- chaque fichier source, sa puce Flash cible, sa banque ROM et sa fonction :
| Module | Flash Chip | Bank | Size | Description |
|---|---|---|---|---|
rfs.asm |
User (U4) | 0 | 2 KB | Repartiteur de commandes, table de commandes, infrastructure de commutation de banque. |
rfs_bank1.asm |
User (U4) | 1 | 2 KB | Controleur de disquette – selection de lecteur et demarrage FDC. |
rfs_bank2.asm |
User (U4) | 2 | 2 KB | Controleur de carte SD – pilote SPI, repertoire SDCFS, lecture/ecriture de fichiers. |
rfs_bank3.asm |
User (U4) | 3 | 2 KB | Utilitaires memoire – D, M, CP, T2SD, SD2T. |
rfs_bank4.asm |
User (U4) | 4 | 2 KB | Controleur CMT – chargement, sauvegarde, verification de cassette. |
rfs_bank5.asm |
User (U4) | 5 | 2 KB | (Reserve / non utilise.) |
rfs_bank6.asm |
User (U4) | 6 | 2 KB | Ecran d’aide, chaines de messages, conversion de jeu de caracteres. |
rfs_bank7.asm |
User (U4) | 7 | 2 KB | Test memoire (R), test de temporisateur (T). |
cbios_bank1.asm |
User (U4) | 8 | 2 KB | CP/M CBIOS – audio, utilitaires bas niveau. |
cbios_bank2.asm |
User (U4) | 9 | 2 KB | CP/M CBIOS – pilote d’ecran, emulateur de terminal ANSI. |
cbios_bank3.asm |
User (U4) | 10 | 2 KB | CP/M CBIOS – pilote de lecteur de carte SD (lecteurs A:-G:). |
cbios_bank4.asm |
User (U4) | 11 | 2 KB | CP/M CBIOS – controleur de disquette. |
monitor_sa1510.asm |
Monitor (U1) | 0 | 4 KB | ROM moniteur SA-1510 original (40 colonnes). |
monitor_80c_sa1510.asm |
Monitor (U1) | 1 | 4 KB | SA-1510 modifie pour affichage 80 colonnes. |
cbios.asm |
Monitor (U1) | 2 | 4 KB | Noyau CBIOS CP/M 2.2 (relogeable a 0xC000 pendant le demarrage CP/M). |
rfs_mrom.asm |
Monitor (U1) | 3 | 4 KB | Utilitaires RFS Monitor ROM – analyse ROM, chargement MZF. |
monitor_1z-013a.asm |
Monitor (U1) | 4 | 4 KB | Variante moniteur MZ-700 1Z-013A. |
monitor_80c_1z-013a.asm |
Monitor (U1) | 5 | 4 KB | 1Z-013A modifie pour affichage 80 colonnes. |
ipl.asm |
Monitor (U1) | 6 | 4 KB | Initial Program Loader. |
Puisque le Z80 ne peut voir qu'une tranche de 2 Ko du User ROM a la fois, chaque banque User ROM contient une copie du stub de commutation de banque a une adresse fixe dans la fenetre. Lorsque la banque 0 doit appeler une routine dans la banque 3, elle ecrit le numero de banque de destination dans BNKSELUSER, saute au point d'entree connu dans la banque nouvellement mappee, execute le code requis, reecrit la banque 0 dans BNKSELUSER et revient. Ce mecanisme rend les 12 x 2 Ko = 24 Ko de code User ROM accessibles depuis n'importe quel contexte d'execution.
Contrainte importante sur les cartes v2.0/v2.1 : aucune sequence d'instructions en boucle serree dans le code de banque User ROM ne doit couvrir la plage d'adresses 0xEFF8-0xEFFF, car des lectures repetees dans cette plage incrementeront le compteur du verrou code et finiront par deverrouiller les registres de banque de maniere inattendue.
Systeme de Fichiers Carte SD (SDCFS)
Plutot que d'implementer FAT (qui serait trop volumineux pour tenir dans les banques ROM de 2 Ko disponibles), le firmware RomDisk utilise un systeme de fichiers specialement concu appele SD Card Filing System (SDCFS). La conception privilegie la simplicite et une empreinte ROM minimale par rapport a la flexibilite.
La carte SD est utilisee en mode brut -- aucune table de partition n'est ecrite. L'image SDCFS commence a l'octet 0 (secteur 0) de la carte. Les images disque CP/M sont placees a la limite de 256 Mo pour garantir que les 10 lecteurs RFS aient de la place quelle que soit leur occupation.
Structure du Repertoire
Chaque lecteur SDCFS contient un repertoire plat de jusqu'a 256 entrees. Chaque entree fait exactement 32 octets, utilisant une structure derivee du format d'en-tete de cassette MZF standard (la meme disposition de 32 octets utilisee sur les cassettes Sharp MZ) :
| Field | Bytes | Description |
|---|---|---|
| FLAG1 | 1 | Bit 7 = 1 : entree valide. Bit 7 = 0 : inactive / supprimee. |
| FLAG2 | 1 | Type d’execution MZF (0x01 = programme binaire). |
| FILE NAME | 17 | Nom de fichier MZF standard de 17 caracteres (encodage de caracteres Sharp). |
| START SECTOR | 4 | Premier secteur de carte SD dans cette image de lecteur ou le bloc de donnees du fichier commence. |
| SIZE | 2 | Nombre d’octets reel des donnees du fichier. |
| LOAD ADDR | 2 | Adresse RAM Z80 ou charger les donnees du fichier. |
| EXEC ADDR | 2 | Adresse d’auto-execution pour les fichiers binaires (saute a cette adresse apres le chargement si non nulle). |
| RESERVED | 3 | Non utilise actuellement. |
Le repertoire occupe les premiers 8 Ko de chaque image de lecteur (256 entrees x 32 octets). Les donnees des fichiers suivent immediatement. Chaque fichier se voit allouer un bloc fixe de 64 Ko -- correspondant a la taille maximale de bloc de cassette Sharp MZ -- ce qui maintient la disposition sur disque trivialement simple et fait de la copie SD vers cassette un transfert direct octet par octet aligne sur les secteurs.
Disposition de la Carte SD
ADDRESS CONTENT
────────────────────────────────────────────────────────────────────────
0x00000000 RFS DRIVE 0 (16 MB)
0x00000000–0x00001FE0 Directory (256 × 32 B)
0x00002000–0xFF2000 File blocks (256 × 64 KB)
0x01002000 RFS DRIVE 1 (meme structure)
...
0x09012000 RFS DRIVE 9 (meme structure)
0x0A014000 (remplissage jusqu'a la limite de 256 Mo)
────────────────────────────────────────────────────────────────────────
0x10000000 CP/M DISK IMAGE 0 (A:) — 16 MB
0x11000000 CP/M DISK IMAGE 1 (B:) — 16 MB
...
0x16000000 CP/M DISK IMAGE 6 (G:) — 16 MB
────────────────────────────────────────────────────────────────────────
Implementation CP/M 2.2
CP/M 2.2 est disponible sur le RomDisk comme fonctionnalite integree. La saisie de
Processus de Demarrage
CPM a l'invite du moniteur RFS demarre CP/M directement depuis la carte SD. Le TPA CP/M est de 47 Ko ; le CCP se trouve a 0x9C00 avec le BDOS au-dessus, tandis que l'ensemble du CBIOS reside en ROM (banque Monitor ROM 2 plus banques User ROM 8-11) et ne consomme aucune RAM programme.
- La commande RFS
CPMcommute le Monitor ROM sur la banque 2 (le noyau CBIOS), qui contient le point d'entree de demarrage a froid CP/M a 0x0000. - La routine de demarrage a froid du CBIOS initialise tout le materiel (clavier, ecran, carte SD, disquette si presente) et construit les en-tetes de parametres de disque pour chaque lecteur disponible.
- Le CBIOS lit les images CCP et BDOS depuis le disque systeme CP/M sur la carte SD en RAM a 0x9C00.
- Le controle est passe au CCP a 0x9C00. CP/M fonctionne maintenant.
Le BIOS personnalise est reparti sur cinq modules ROM pour qu'aucune banque de 2 Ko ne soit depassee :
| Module | ROM Location | Contents |
|---|---|---|
cbios.asm |
Banque Monitor ROM 2 (0x0000-0x0FFF quand active) | Les 17 vecteurs API CP/M CBIOS, gestionnaires de demarrage a froid/chaud, gestionnaire d’interruption, tables de parametres de disque. |
cbios_bank1.asm |
Banque User ROM 8 | Audio (sonnerie, melodie), routines d’horloge temps reel, gestionnaire de clavier bas niveau. |
cbios_bank2.asm |
Banque User ROM 9 | Pilote d’ecran (sortie caractere, defilement, controle du curseur), emulateur de terminal ANSI/VT100. |
cbios_bank3.asm |
Banque User ROM 10 | Pilote de lecteur de carte SD – traduit les lectures et ecritures de secteurs de 128 octets CP/M en images de lecteur SDCFS a la limite de 256 Mo. |
cbios_bank4.asm |
Banque User ROM 11 | Controleur de disquette – prend en charge les disquettes physiques CP/M. |
Les lecteurs CP/M sont mappes sur des images disque de carte SD pendant le demarrage a froid du CBIOS. L'attribution standard des lecteurs est :
| CP/M Drive | Image | Contents |
|---|---|---|
| A: | CP/M Disk Image 0 | Programmes du systeme d’exploitation, Turbo Pascal, Hi-Soft C, Fortran 80, MS-BASIC 80. |
| B: | CP/M Disk Image 1 | Pascal MTP v5.61, Turbo Pascal v3.00a, disquettes Pascal User Group. |
| C: | CP/M Disk Image 2 | PLI, PLM 80, WordStar v3.0/v3.3/v4.0. |
| D:-G: | CP/M Disk Images 3-6 | Disquettes de la collection CP/M de Grant Searle. |
Systeme de Compilation
Tout le developpement se fait sous Linux (Debian/Ubuntu). Le systeme de compilation est autonome dans le depot. Le point d'entree principal est
Prerequis
build.sh dans le repertoire software/RFS/.
| Tool | Purpose |
|---|---|
| Java JRE 8+ | Execute l’assembleur GLASS Z80 (tools/glass.jar). java doit etre dans le PATH. |
| bash | Tous les scripts de compilation sont des scripts shell bash. |
| perl | Requis par tools/mzftool.pl pour la manipulation des fichiers MZF. |
| gcc / make | Compile cpmtools a partir du code source lors de la premiere compilation (automatique). |
| dd, cat, stat | Utilitaires Linux standard utilises par les scripts de packaging. |
L'assembleur GLASS Z80 est fourni sous forme de
Drapeaux de Compilation
tools/glass.jar -- aucune installation separee n'est requise.
Editez
asm/include/rfs_definitions.asm avant la compilation. Les drapeaux d'interface SPI sont mutuellement exclusifs -- definissez exactement un a 1 :
| Flag | Default | Description |
|---|---|---|
HW_SPI_ENA |
1 | SPI materiel (PCB v2.0/v2.1, JP6 configure pour SPI materiel). Par defaut pour toutes les cartes actuelles. |
SW_SPI_ENA |
0 | SPI logiciel bitbang (PCB v2.0/v2.1, JP6 configure pour SPI logiciel). |
PP_SPI_ENA |
0 | SPI bitbang par port parallele. Pour les cartes v1.1 uniquement. |
FUSIONX_ENA |
1 | Inclure le support tranZPUter FusionX. |
ENADEBUG |
0 | Activer la sortie de debogage a la compilation. |
git clone https://git.eaw.app/eaw/RFS.git cd RFS/software/RFS # Compilation complete -- assemble toutes les ROM, package les images Flash, cree l'image carte SD : ./build.sh # Compilation complete incluant le retraitement de tous les fichiers d'application MZF # (necessaire uniquement lorsque les fichiers dans MZF/ ont change) : ./build.sh -m
build.sh execute les etapes suivantes dans l'ordre :
- Compile
cpmtoolsa partir du code source si ce n'est pas deja fait, et l'ajoute auPATH. tools/assemble_rfs.sh-- assemble toutes les banques firmware RFS (rfs.asm, rfs_bank1-7.asm) en images ROM individuelles.tools/assemble_cpm.sh-- assemble le CBIOS CP/M 2.2 (cbios.asm, cbios_bank1-4.asm) et le noyau CP/M CCP+BDOS.tools/assemble_roms.sh-- assemble toutes les variantes de moniteur (SA-1510, 80c, 1Z-013A, IPL) et les binaires d'application MZF.tools/processMZFfiles.sh(uniquement avec le drapeau-m) -- convertit les fichiers MZF bruts deMZF/en images remplies en secteurs de 128 et 256 octets dansMZB/.tools/make_roms.sh-- empaquete les images ROM assemblees et les binaires d'application MZF en images Flash ROM de 512 Ko pour chaque puce Flash.tools/make_cpmdisks.sh-- cree les images disque CP/M au format RAW (pour carte SD) et au format CPC Extended Disk (pour emulateurs de disquette).tools/make_sdcard.sh-- combine les 10 images de lecteur RFS et les 7 images disque CP/M en l'image finale de carte SD.
Apres une compilation reussie, le repertoire
roms/ contient :
| File | Target Chip | Description |
|---|---|---|
MROM_ROMDISK_256.bin |
Flash Monitor ROM (U1) | Image Monitor ROM : SA-1510, 80c SA-1510, CP/M CBIOS, utilitaires RFS mrom, moniteurs 1Z-013A, IPL sur 7 x 4 Ko banques. |
USER_ROM_256.bin |
Flash User ROM U4 | Banques RFS 0-7, banques CP/M CBIOS 8-11, applications MZF empaquetees. |
USER_ROM_II_256.bin |
Flash User ROM U5 | Applications MZF supplementaires (debordement de U4). |
USER_ROM_III_256.bin |
Flash User ROM U6 | Applications MZF supplementaires (debordement de U5). |
SHARP_MZ80A_RFS_IMAGE_0–9.img |
Carte SD | Images de lecteur RFS individuelles, une par lecteur (lecteurs 0-9). |
SHARP_MZ80A_RFS_CPM_IMAGE_1.img |
Carte SD | Image combinee : 10 lecteurs RFS + 7 images disque CP/M. Ecrivez ce fichier sur la carte SD. |
Pour programmer les puces Flash, utilisez un programmeur compatible SST39SF040. Ecrivez
MROM_ROMDISK_256.bin sur U1, USER_ROM_256.bin sur U4, et les images de debordement sur U5 et U6 si equipes. Pour ecrire l'image de la carte SD, utilisez dd :
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512 status=progress
Sites de Reference
| Resource | Link |
|---|---|
| Page du projet RomDisk | /sharpmz-upgrades-romdisk/ |
| Page du projet RFS | /sharpmz-upgrades-rfs/ |
| Manuel Utilisateur RFS | /sharpmz-upgrades-rfs-usermanual/ |
| Guide du Developpeur RFS | /sharpmz-upgrades-rfs-developersguide/ |
| Guide Technique RFS | /sharpmz-upgrades-rfs-technicalguide/ |
| Galerie RFS | /sharpmz-upgrades-rfs-gallery/ |
| Guide Technique SFD-700 mkII | /sfd700-technicalguide/ |
| Guide Technique picoZ80 | /picoz80-technicalguide/ |
| Assembleur GLASS Z80 | Fourni dans tools/glass.jar |
| Fiche technique Flash SST39SF040 | Page produit Microchip / Greenliant |
| Fiche technique SRAM AS6C4008 | Page produit Alliance Memory |