Sistema di archiviazione ROM (RFS)
Panoramica
* , tutti i comandi originali intatti e un ampio set di nuovi comandi per la gestione dei file su scheda SD e ROM, l'avvio di CP/M, il caricamento BASIC e molto altro.
Il firmware supporta quattro piattaforme hardware, ognuna selezionata al momento della compilazione tramite un flag in rfs_definitions.asm:
- Scheda RomDisk — il target originale. Fino a 4×512 KB di Flash RAM, 512 KB di RAM statica e un lettore di schede SDXC. La ROM Monitor e la ROM Utente vengono commutate tramite bank switching attraverso la Flash RAM.
- SFD-700 — la scheda di interfaccia floppy disk Sharp. RFS occupa lo spazio CPLD/ROM dell'SFD-700 e fornisce monitor, caricamento BASIC e avvio floppy.
- tranZPUter FusionX — la scheda di potenziamento Z80 basata su FPGA. RFS viene eseguito nel suo spazio Flash ROM.
- picoZ80 — la scheda di sostituzione/emulazione Z80 basata su Raspberry Pi Pico. Sul picoZ80, RFS viene eseguito sotto la persona macchina presentata all'host — oltre all'MZ-80A questa include ora anche lo Sharp MZ-80K, che puo utilizzare le stesse schede di interfaccia Sharp dell'MZ-80A (RFS, MZ80AFI, MZ-1E14/E19, MZ-1R12/R18/R37, PIO-3034) oltre al proprio controller floppy nativo MZ-80FD (T3444M).
Monitor RFS
+ RFS" quando il file system e stato inizializzato con successo. Il set completo di comandi SA-1510 originali e disponibile insieme a un set di comandi estesi. Alcuni comandi estesi (operazioni su scheda SD, selezione unita) sono presenti solo nella build RomDisk / picoZ80. Un assemblatore e disassemblatore Z80 integrato e disponibile in tutte le build.
Il set completo dei comandi e elencato di seguito. I comandi contrassegnati con (R) sono presenti solo nella build RomDisk / picoZ80.
| Comando | Parametri | Descrizione |
|---|---|---|
| 0 .. 9 (R) | — | Selezionare l’unita scheda SD RFS attiva (0–9). |
| 40 (R) | — | Passare alla modalita di visualizzazione a 40 colonne (richiede l’upgrade Kuma 40/80 o il Video Module). |
| 80 (R) | — | Passare alla modalita di visualizzazione a 80 colonne (richiede l’upgrade Kuma 40/80 o il Video Module). |
| ASM | <address> | Assemblatore Z80 interattivo. Inserire mnemonici assembly direttamente in memoria a partire dall’indirizzo indicato. |
| B | — | Attivare/disattivare il segnale acustico della tastiera. |
| BASIC | — | Cercare BASIC SA-5510 sull’unita SD attiva o nella ROM, caricarlo ed eseguirlo. |
| C | [<valore 8 bit>] | Inizializzare la memoria da 0x1200 alla cima della RAM con 0x00 o il valore byte fornito. |
| CP | <src> <dst> <size> | Copiare un blocco di memoria. Tutti e tre gli argomenti sono valori esadecimali a 4 cifre: indirizzo sorgente, indirizzo destinazione, conteggio byte. |
| CPM | — | Cercare CP/M 2.2 sull’unita SD attiva o nella ROM, caricarlo e avviarlo. |
| D | <addr> [<addr2>] | Dump della memoria da <addr> a <addr2> (o 20 righe) in esadecimale e ASCII. L’output si interrompe ad ogni schermata piena; premere un tasto per continuare, ‘U’ per pagina precedente, ‘X’ per uscire. Ripetere ‘D’ senza indirizzo continua dall’ultima posizione visualizzata. |
| DASM | <addr> [<addr2>] | Disassemblare il codice macchina Z80 da <addr> a <addr2>. |
| DUC (R) | [H|T] <name> o <n° file> | Visualizzare il contenuto di un file della scheda SD. Predefinito: dump esadecimale. DUCH: dump esadecimale con informazioni header MZF (indirizzo di caricamento, indirizzo di esecuzione, dimensione). DUCT: dump testo (solo caratteri ASCII stampabili). |
| EC (R) | <name> o <n° file> | Cancellare un file dall’unita scheda SD attiva per nome o numero di file. |
| F / FL | [<drive>] | Avviare dall’unita floppy specificata. Se omesso, viene richiesto un numero di unita. |
| FD | [<drive>] | Visualizzare l’elenco della directory di un floppy disk. Il numero di unita opzionale seleziona l’unita 1–4 (predefinito: 1). |
| FC | <start> <end> <exec> | Salvare un’area di memoria in un file su floppy disk. |
| FD2T | <name> o <n° file> | Copiare un file dal floppy disk al nastro. |
| T2FD | — | Caricare dal nastro e salvare su floppy disk. |
| f | — | Eseguire il codice di avvio floppy AFI originale a 0xF000. |
| H | — | Visualizzare la schermata di aiuto dei comandi (paginata, premere Spazio per continuare). |
| IC (R) | — | Elenco paginato dei file sull’unita scheda SD attiva. Ogni voce mostra un numero di file esadecimale e il nome del file. |
| IN | <port>[,<port>…] | Leggere una o piu porte I/O. Ogni porta e un indirizzo esadecimale a 2 o 4 cifre. I valori vengono stampati come esadecimali a 2 cifre, separati da spazi. |
| IR | — | Elenco paginato dei programmi memorizzati nelle unita Flash ROM. |
| J | <address> | Saltare a (eseguire da) l’indirizzo indicato. |
| L | LT | [<filename>] | Caricare un file dal nastro (CMT) ed eseguirlo. |
| LTNX | [<filename>] | Caricare un file dal nastro (CMT) senza eseguirlo. |
| LR | <name> o <n° file> | Caricare un programma dalla ROM per nome o numero di file ed eseguirlo. |
| LRNX | <name> o <n° file> | Caricare un programma dalla ROM per nome o numero di file senza eseguirlo. |
| LC (R) | <name> o <n° file> | Caricare un programma dalla scheda SD ed eseguirlo. |
| LCNX (R) | <name> o <n° file> | Caricare un programma dalla scheda SD senza eseguirlo. |
| M | <address> | Editor di memoria interattivo a partire da <address>. |
| OUT | <port>:<value>[,<port>:<value>…] | Scrivere su una o piu porte I/O. Ogni porta e un indirizzo esadecimale a 2 o 4 cifre seguito da due punti e un valore esadecimale a 2 cifre. |
| P | — | Eseguire un test sulla stampante collegata. |
| R | — | Eseguire un test della memoria DRAM. |
| S | ST | <start> <end> <exec> | Salvare un’area di memoria su nastro (CMT). Viene richiesto un nome di file. Esempio: S120020001203 salva da 0x1200 a 0x2000 con indirizzo di esecuzione 0x1203. |
| SC (R) | <start> <end> <exec> | Salvare un’area di memoria sull’unita scheda SD attiva. Viene richiesto un nome di file. |
| SD2T (R) | <name> o <n° file> | Copiare un file dalla scheda SD al nastro nel CMT. |
| T | — | Testare il chip timer 8253. |
| T2SD (R) | — | Caricare un programma dal nastro e scriverlo sull’unita scheda SD attiva. |
| V | — | Verificare un salvataggio su nastro confrontandolo con i dati attualmente in memoria. |
| X (R) | — | Passare alla variante ROM hi-load affinche la DRAM copra 0x0000–0xCFFF. |
Se e installato l’upgrade Kuma 40/80 colonne o il Video Module, digitando 4 si passa alla visualizzazione a 40 colonne e 8 alla visualizzazione a 80 colonne. In modalita 80 colonne i comandi di elenco directory (IC / IR) visualizzano quattro colonne.
Applicazioni aggiornate
Sharp BASIC SA-5510
| Comando | Parametro | Descrizione |
|---|---|---|
| LOAD | "TEST" |
Cercare un programma denominato TEST sull’unita attiva, caricarlo ed eseguirlo. |
| LOAD | Caricare il file sequenziale successivo dall’unita attiva. Se il file 5 e stato caricato per ultimo, viene caricato il file 6. | |
| LOAD | "3:TEST" |
Caricare TEST dall’unita RFS 3, rendendo l’unita 3 attiva. |
| LOAD | "C:TEST" |
Caricare TEST dalla cassetta interna (CMT), rendendo il CMT l’unita attiva. |
| SAVE | "TEST" |
Sovrascrivere un file esistente denominato TEST sull’unita attiva, o crearlo se assente. Su CMT, scrive immediatamente alla posizione corrente del nastro. |
| SAVE | Salvare il programma corrente con un nome generato automaticamente DEFAULT<n>, dove <n> e il numero di sequenza corrente. |
|
| SAVE | "3:TEST" |
Salvare/creare TEST sull’unita RFS 3 e rendere l’unita 3 attiva. |
| SAVE | "C:TEST" |
Salvare su CMT con il nome TEST e rendere il CMT attivo. |
| DIR | Elencare la directory della scheda SD per l’unita attiva in formato RFS (numero file + nome file). | |
| DIR | "3:" |
Elencare la directory dell’unita 3 e rendere l’unita 3 attiva. |
Vedere Organizzazione della scheda SD di seguito per il layout predefinito delle unita.
Microsoft BASIC
- MS-BASIC(MZ-80A) — per hardware MZ-80A originale, solo storage su cassetta.
- MS-BASIC(RFS40) — RFS con display a 40 colonne; aggiunge comandi scheda SD, CLOAD, CSAVE, DIR.
- MS-BASIC(RFS80) — RFS con display a 80 colonne; aggiunge comandi scheda SD, CLOAD, CSAVE, DIR.
Ogni variante appare sull’unita ROM RFS e sull’unita SD. Consultare il NASCOM Basic Manual per il set completo di comandi standard. La tabella seguente elenca le estensioni aggiunte per RFS.
| Comando | Parametri | Versione | Descrizione |
|---|---|---|---|
| CLOAD | "<filename>" |
MZ-80A | Caricare un programma BASIC tokenizzato dalla cassetta. |
| CSAVE | "<filename>" |
MZ-80A | Salvare il programma BASIC corrente su cassetta in formato tokenizzato. |
| CLOAD | "[<drive>:]<filename>" |
RFS40, RFS80 | Caricare dal nastro o dalla scheda SD. <drive> e 0–9; <filename> e un nome MZ di 17 caratteri o un numero esadecimale RFS a 2 cifre. Esempio: CLOAD "8:13" o CLOAD "8:othello". |
| CSAVE | "[<drive>:]<filename>" |
RFS40, RFS80 | Salvare su nastro o scheda SD con qualificatore di unita opzionale. |
| DIR | "[<drive>:]" |
RFS40, RFS80 | Visualizzare il contenuto dell’unita RFS attiva o specificata. |
| ANSITERM | 0 = Disattivato, 1 = Attivato |
Tutte | Attivare o disattivare (predefinito: attivato) il processore di terminale ANSI integrato. Questo traduce le sequenze di escape ANSI in azioni sullo schermo, consentendo l’esecuzione senza modifiche di programmi BASIC portabili. (Il programma BASIC Star Trek V2 utilizza sequenze di escape ANSI.) |
Convertitore di immagine cassetta NASCOM
nasconv fornito rimuove il framing del nastro e ricostruisce il codice BASIC in un formato caricabile sull'MZ-80A sotto RFS. Rimappa inoltre automaticamente i valori dei token, poiche l'estensione MS-BASIC di RFS aggiunge nuovi token che spostano la tabella.
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". Questo BASIC funziona anche sull'MZ-1500 tramite la persona picoZ80 MZ-1500, fornendo lo stesso supporto dispositivi incluso l'accesso di rete NETx:. I programmi possono essere caricati, salvati ed elencati su tutti i dispositivi supportati utilizzando un prefisso di dispositivo nel nome del file.
| Comando | Parametro | Descrizione |
|---|---|---|
| LOAD | "RFSx:filename" |
Caricare un programma BASIC dall’unita scheda SD RFS x (1–7, mappata sulle unita SD 4–10). |
| SAVE | "RFSx:filename" |
Salvare il programma BASIC corrente sull’unita scheda SD RFS specificata. |
| DIR | RFSx: |
Visualizzare l’elenco della directory dell’unita scheda SD RFS specificata. |
| LOAD | "FDx:filename" |
Caricare un programma BASIC dall’unita floppy disk x. |
| SAVE | "FDx:filename" |
Salvare il programma BASIC corrente sull’unita floppy disk x. |
| DIR | FDx: |
Visualizzare l’elenco della directory del floppy disk. |
| LOAD | "QDx:filename" |
Caricare un programma BASIC dall’unita Quick Disk x. |
| SAVE | "QDx:filename" |
Salvare il programma BASIC corrente sull’unita Quick Disk x. |
| DIR | QDx: |
Visualizzare l’elenco della directory del Quick Disk. |
| LOAD | "NETx:filename" |
Caricare un programma BASIC dal server di file di rete unita x (1–7). Richiede una scheda Celestite e netfs.py su un PC. |
| SAVE | "NETx:filename" |
Salvare il programma BASIC corrente sul server di file di rete unita x. |
| DIR | NETx: |
Visualizzare l’elenco della directory dal server di file di rete unita x. |
| LOAD | "CMT:filename" |
Caricare un programma BASIC dal nastro cassetta. |
| SAVE | "CMT:filename" |
Salvare il programma BASIC corrente su nastro cassetta. |
BASIC MZ-2Z009E (Floppy Disk)
BASIC 2Z-009ERFS". I programmi possono essere caricati, salvati ed elencati su tutti i dispositivi supportati utilizzando un prefisso di dispositivo nel nome del file.
| Comando | Parametro | Descrizione |
|---|---|---|
| LOAD | "RFSx:filename" |
Caricare un programma BASIC dall’unita scheda SD RFS x (1–7, mappata sulle unita SD 4–10). |
| SAVE | "RFSx:filename" |
Salvare il programma BASIC corrente sull’unita scheda SD RFS specificata. |
| DIR | RFSx: |
Visualizzare l’elenco della directory dell’unita scheda SD RFS specificata. |
| LOAD | "FDx:filename" |
Caricare un programma BASIC dall’unita floppy disk x. |
| SAVE | "FDx:filename" |
Salvare il programma BASIC corrente sull’unita floppy disk x. |
| DIR | FDx: |
Visualizzare l’elenco della directory del floppy disk. |
| LOAD | "QDx:filename" |
Caricare un programma BASIC dall’unita Quick Disk x. |
| SAVE | "QDx:filename" |
Salvare il programma BASIC corrente sull’unita Quick Disk x. |
| DIR | QDx: |
Visualizzare l’elenco della directory del Quick Disk. |
Architettura software
| Modulo | ROM target | Dimensione | Banco | Descrizione |
|---|---|---|---|---|
| rfs.asm | User | 2 KB | 0 | Punto di ingresso principale RFS, dispatcher dei comandi e tabella dei comandi. Contiene l’infrastruttura di commutazione banchi condivisa da tutti i banchi. |
| rfs_bank1.asm | User | 2 KB | 1 | Funzioni del controller floppy disk (FDC). Gestisce selezione unita, avvio, copia floppy (FC), floppy-su-nastro (FD2T) e nastro-su-floppy (T2FD). |
| rfs_bank2.asm | User | 2 KB | 2 | Controller scheda SD. Driver SPI, inizializzazione scheda SD, directory SDCFS e lettura/scrittura file. |
| rfs_bank3.asm | User | 2 KB | 3 | Utilita di memoria del monitor: dump esadecimale, editor di memoria, copia di memoria, dump file SD (DUC), lettura/scrittura porte I/O (IN / OUT), copia nastro-SD (T2SD / SD2T), test stampante. |
| rfs_bank4.asm | User | 2 KB | 4 | Controller CMT (cassetta): caricamento, salvataggio e verifica nastro. |
| rfs_bank5.asm | User | 2 KB | 5 | Funzioni di utilita generali: stampa formattata, routine per stringhe e codice di supporto condiviso. |
| rfs_bank6.asm | User | 2 KB | 6 | Tabella opcode 1 dell’assemblatore/disassemblatore Z80, funzione PRINTMSG e infrastruttura stringhe di messaggi. |
| rfs_bank7.asm | User | 2 KB | 7 | Tabella opcode 2 dell’assemblatore/disassemblatore Z80, disassemblatore Z80 (DASM), test memoria DRAM e test timer 8253. |
| rfs_bank8.asm | User | 2 KB | 8 | Assemblatore Z80 interattivo (ASM). |
| rfs_bank9.asm | User | 2 KB | 9 | Directory ROM, ricerca file, funzioni di caricamento e stampa (spostati dal banco 0 per liberare spazio). |
| rfs_bank10.asm | User | 2 KB | 10 | Riservato / libero. |
| rfs_bank11.asm | User | 2 KB | 11 | Schermata di aiuto. |
| cbios_bank1.asm | User | 2 KB | 12 | CP/M CBIOS: funzioni audio, RTC, tastiera e utilita di basso livello. |
| cbios_bank2.asm | User | 2 KB | 13 | CP/M CBIOS: driver dello schermo e emulazione terminale ANSI. |
| cbios_bank3.asm | User | 2 KB | 14 | CP/M CBIOS: driver scheda SD (fornisce le unita CP/M A:–G:). |
| cbios_bank4.asm | User | 2 KB | 15 | CP/M CBIOS: controller floppy disk. |
| monitor_sa1510.asm | Monitor | 4 KB | 0 | ROM monitor SA-1510 originale (40 colonne). |
| monitor_80c_sa1510.asm | Monitor | 4 KB | 1 | Monitor SA-1510 adattato per display a 80 colonne. |
| cbios.asm | Monitor | 4 KB | 2 | Kernel CBIOS CP/M 2.2 (caricato a 0xC000–0xCFFF). |
| rfs_mrom.asm | Monitor | 4 KB | 3 | Utilita Monitor ROM RFS. Poiche il codice eseguito dalla User ROM non puo commutare se stesso per scansionare il resto della ROM, queste routine vengono eseguite dalla Monitor ROM banco 3 per scansionare e caricare i file MZF memorizzati nella Flash RAM User ROM. |
| monitor_1z-013a.asm | Monitor | 4 KB | 4 | ROM monitor MZ-1Z-013A (variante MZ-700 / MZ-1200). |
| monitor_80c_1z-013a.asm | Monitor | 4 KB | 5 | Monitor 1Z-013A adattato per display a 80 colonne. |
| rfs_mrom_bank6.asm | Monitor | 4 KB | 6 | Tabella opcode 1 dell’assemblatore/disassemblatore Z80 (copia MROM). |
| rfs_mrom_bank7.asm | Monitor | 4 KB | 7 | Tabella opcode 2 dell’assemblatore/disassemblatore Z80 (copia MROM). |
| ipl.asm | Monitor | 4 KB | 8 | Initial Program Loader. |
| rfs_mrom_bank9.asm | Monitor | 4 KB | 9 | Repository stringhe di messaggi RFS. |
CP/M 2.2 e supportato con 47 KB di RAM programma utilizzabile. Solo CCP e BDOS risiedono nella RAM (e possono essere sovrascritti dalle applicazioni); il CBIOS stesso risiede nella Monitor ROM banco 2 e nei banchi User ROM 12–15, senza consumare RAM programma.
La Monitor ROM produce anche diverse varianti aggiuntive di monitor compilate contemporaneamente: un SA-1510 standard, un SA-1510 a 80 colonne, una versione Kuma-80 (selezionata tramite il flag
KUMA80_ENA in rfs_definitions.asm), e varianti hi-load di SA-1510 e SA-1510 a 80 colonne utilizzate quando la DRAM deve coprire l'intero intervallo 0x0000–0xCFFF.
Sistema di build
Il modo consigliato per compilare RFS e lo script di setup automatizzato per la propria piattaforma (vedere Setup e build automatizzati di seguito) — installa i pochi strumenti esterni necessari, scarica i contenuti, prepara l'ambiente e puo eseguire la prima build per voi, senza richiedere una conoscenza approfondita degli strumenti o della configurazione. I passaggi manuali piu in basso sono per utenti avanzati e ricostruzioni parziali.
Prerequisiti
| Strumento | Note |
|---|---|
| Java (JRE 8+) | Richiesto per eseguire l’assemblatore GLASS Z80. java deve essere nel PATH. |
| bash | Tutti gli script di build sono in bash. |
| perl | Richiesto da mzftool.pl. |
| gcc / make | Richiesto per compilare cpmtools dai sorgenti (avviene automaticamente alla prima build). |
| dd, cat, stat | Utilita Linux standard utilizzate dagli script di confezionamento. |
L’assemblatore GLASS Z80 (glass.jar) e incluso nella directory tools/ — non e necessaria un’installazione separata.
Setup e build automatizzati (consigliato)
macOS / Linux / WSL — setup_RFS.sh
chmod +x setup_RFS.sh
./setup_RFS.sh
Windows 10 / 11 — setup_RFS_windows_native.ps1 (consigliato — nativo, senza WSL). Da una PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows_native.ps1
Lo script nativo usa winget per installare Git for Windows (che fornisce bash, coreutils, perl e curl) e una Temurin JRE (Java, per l’assemblatore GLASS), clona il repo, scarica il bundle dei contenuti ed esegue ./build.sh tramite Git Bash — senza WSL, Docker o riavvio. La build RFS non richiede un compilatore C su Windows perche due strumenti host precompilati (tools/cpmcp.exe e tools/sdtool.exe) sono inclusi.
Windows 10 / 11 — setup_RFS_windows.ps1 (alternativa — compila all’interno di WSL2 / Ubuntu). Da una PowerShell con privilegi di Amministratore:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_RFS_windows.ps1
Questa variante WSL installa WSL2 + Ubuntu se non sono gia presenti (questo richiede un riavvio una tantum — riavviate, avviate Ubuntu una volta dal menu Start per creare il vostro nome utente/password Linux, quindi rieseguite lo script), poi esegue setup_RFS.sh all’interno di Ubuntu. Preferite lo script nativo sopra a meno che non desideriate specificamente un ambiente WSL.
Domande poste dal setup, e cosa fare
Ogni richiesta ha un valore predefinito sicuro mostrato tra parentesi — la lettera maiuscola e il valore predefinito, quindi premendo Invio lo si accetta. Le richieste compaiono in questo ordine:
Solo Windows (in PowerShell, prima dell’esecuzione del setup Linux):
| Richiesta | Predefinito | Cosa fare |
|---|---|---|
Continue anyway? [y/N] (solo se non avviato come Amministratore) |
No | Rispondere N, riaprire PowerShell con Esegui come amministratore e ricominciare — l’installazione di WSL richiede i privilegi di amministratore. |
Install WSL2 + Ubuntu now? [y/N] (solo se WSL / Ubuntu manca) |
No | Rispondere y. Windows installa WSL2 + Ubuntu, quindi chiede di riavviare. Dopo il riavvio, avviare Ubuntu una volta per creare il vostro utente Linux, quindi rieseguire lo script. |
Repo URL [https://git.eaw.app/eaw/RFS.git] |
repo pubblico | Premere Invio per il repository RFS pubblico, oppure incollare un URL diverso (ad es. il repository di sviluppo privato). |
macOS / Linux / WSL (nella shell Linux / Ubuntu):
| Richiesta | Predefinito | Cosa fare |
|---|---|---|
Install now? [Y/n] (solo se mancano degli strumenti) |
Si | Premere Invio. Lo script installa gli strumenti mancanti con il vostro gestore di pacchetti (apt / dnf / pacman, oppure Homebrew su macOS); potrebbe esservi richiesta la password sudo. Su macOS attiva prima l’installer degli Xcode Command Line Tools e richiede Homebrew. |
Repo URL [https://git.eaw.app/eaw/RFS.git]: (solo se non vi trovate gia all’interno di un checkout) |
repo pubblico | Premere Invio per il repo pubblico, oppure incollare l’URL del repo privato. (Saltata su Windows — il passaggio PowerShell ha gia trasmesso la vostra scelta.) |
Install directory [~/RFS]: (solo in fase di clonazione) |
~/RFS |
Premere Invio per clonare in ~/RFS, oppure digitare un altro percorso. |
Remove <dir> and re-clone …? [y/N] (solo se quella directory contiene gia un repo diverso) |
No | Rispondere y solo se siete sicuri di voler eliminare quella directory e riclonare; altrimenti N e scegliere una directory di installazione diversa. |
Download and install them now? [Y/n] (immagini dei contenuti, ~110 MB) |
Si | Premere Invio per scaricare i contenuti MZF / disco / CP/M / BASIC da RFS_Files.zip — necessari per una build completa. Rispondere n solo se li avete gia tramite un checkout SharpSoft adiacente. |
Run the first build now (./build.sh -m …)? [Y/n] |
Si | Premere Invio per compilare subito — questo verifica l’intero ambiente. La prima build usa -m per elaborare i sorgenti MZF in MZB/ ed e piu lenta delle successive. |
Potrebbe inoltre esservi richiesta la password sudo (installazione dei pacchetti) e le vostre credenziali git se avete scelto un repository privato.
Dopo il setup — compilare di nuovo
Al termine il setup stampa il percorso del checkout. Per ricompilare in seguito:
cd ~/RFS # o la directory che avete scelto
source ./rfs_env.sh # solo macOS (aggiunge GNU coreutils + la JRE al PATH); innocuo altrove
./build.sh -m # PRIMA build: elabora MZF -> MZB, poi compila tutto
./build.sh # build successive (rieseguire -m solo quando i sorgenti MZF cambiano)
./build.sh -h # elenca varianti e opzioni
Su Windows, aprite il terminale Ubuntu (menu Start → “Ubuntu”, oppure digitate wsl in PowerShell) ed eseguite gli stessi comandi in ~/RFS. Le immagini ROM compaiono in ~/RFS/roms.
build.sh compila tutte le varianti hardware per impostazione predefinita; passate uno o piu nomi di variante (sfd700, romdisk_mz80a, picoz80_mz80a, picoz80_kuma, picoz80_mz700, picoz80_mz1500, picoz80_mz80k, oppure all) per compilare solo quelle. La selezione di una variante configura tutto automaticamente — nessuna modifica ai sorgenti necessaria. Opzioni: -m (elabora MZF), -s (salta l’assemblaggio condiviso), -c (clean), -v (verbose), -h (help).
Avanzato: flag del target di build
Per la maggior parte delle build non serve questa sezione — selezionare una variante con build.sh (sopra) configura tutto automaticamente. Il meccanismo sottostante e un insieme di flag in asm/include/rfs_definitions.asm; esattamente uno dei seguenti viene impostato a 1 (tutti gli altri a 0) per un dato target, cosa che build.sh fa per voi in base alla variante. Modificateli a mano solo per una configurazione personalizzata:
| Flag | Target | Descrizione |
|---|---|---|
BUILD_ROMDISK |
Scheda RomDisk | MZ-80A con 4x512 KB Flash RAM + espansione scheda SDXC. |
BUILD_SFD700 |
SFD-700 | Scheda di interfaccia floppy disk Sharp. Nessuna scheda SD. |
BUILD_PICOZ80 |
picoZ80 | Scheda di sostituzione Z80 basata su Raspberry Pi Pico. |
Flag opzionali aggiuntivi nello stesso file:
| Flag | Predefinito | Descrizione |
|---|---|---|
KUMA80_ENA |
0 | Impostare a 1 se l’upgrade Kuma 40/80 colonne e installato. |
VIDEOMODULE_ENA |
0 | Impostare a 1 se il Video Module colore 40/80 colonne e installato. |
FUSIONX_ENA |
0 | Impostare a 1 quando si esegue RFS sulla scheda tranZPUter FusionX. |
HW_SPI_ENA |
1 | SPI hardware (PCB RomDisk v2+). Lasciare a 1 per tutte le schede attuali. |
ENADEBUG |
0 | Abilitare l’output di debug durante l’assemblaggio. |
Build manuale e cosa fa build.sh
Se preferite non usare lo script di setup (o state automatizzando una build CI), potete clonare e compilare direttamente — dovete comunque avere i prerequisiti installati e, su un clone standalone appena creato, scaricare voi stessi le immagini dei contenuti (oppure eseguire setup_RFS.sh, che lo fa per voi):
git clone --recurse-submodules https://git.eaw.app/eaw/RFS.git
cd RFS
# Build completa (assembla tutte le ROM, confeziona le immagini ROM, crea l'immagine della scheda SD):
./build.sh
# Build completa inclusa la rielaborazione di tutti i file applicazione MZF
# (necessario solo quando i file sorgente MZF in MZF/ sono cambiati):
./build.sh -m
build.sh esegue i seguenti passaggi nell’ordine:
- Compila
cpmtoolsdai sorgenti (solo alla prima esecuzione) e aggiunge il risultato alPATH. tools/assemble_rfs.sh— assemblarfs.asmerfs_mrom.asminroms/rfs.romeroms/rfs_mrom.rom.tools/assemble_cpm.sh— assembla il CBIOS CP/M 2.2 (cbios.asm,cbios_bank1–4.asm,cpm22.asm) inroms/*.rom.tools/assemble_roms.sh— assembla tutte le varianti del monitor (SA-1510, 80c SA-1510, 1Z-013A, varianti hi-load, versione Kuma, IPL) e i file applicazione MZF (SA-5510, varianti MS-BASIC, ecc.) inroms/eMZB/.tools/make_roms.sh— confeziona le ROM assemblate e le applicazioni MZF in immagini Flash ROM (vedere File di output di seguito).tools/make_cpmdisks.sh— crea immagini disco CP/M in formato RAW e CPC Extended Disk Format per ciascuno dei set di unita CP/M pre-popolati.tools/make_sdcard.sh— assembla l’immagine finale della scheda SD combinando 10 immagini di unita RFS e 7 immagini disco CP/M.
Gli script individuali possono anche essere eseguiti direttamente dalla directory tools/ per build parziali.
File di output
Dopo una build riuscita la directory roms/ contiene:
| File | Chip Flash | Descrizione |
|---|---|---|
MROM_ROMDISK_256.bin |
SST39SF040 (Monitor ROM) | Immagine Monitor ROM per la build RomDisk. Contiene SA-1510, 80c SA-1510, CP/M CBIOS, utilita RFS MROM, monitor 1Z-013A, tabelle opcode assemblatore/disassemblatore, IPL e stringhe di messaggi su 16x4 KB pagine. |
MROM_PICOZ80_256.bin |
SST39SF040 (Monitor ROM) | Immagine Monitor ROM per la build picoZ80 (ordine dei banchi diverso da ROMDISK). |
USER_ROM_256.bin |
SST39SF040 (User ROM 1) | User ROM 1: banchi RFS 0–11, banchi CP/M CBIOS 12–15, immagine CP/M 2.2 e set compresso di applicazioni MZF. |
USER_ROM_II_256.bin |
SST39SF040 (User ROM 2) | User ROM 2: applicazioni MZF aggiuntive. |
USER_ROM_III_256.bin |
SST39SF040 (User ROM 3) | User ROM 3: applicazioni MZF aggiuntive. |
SFD700_256.bin |
SST39SF040 | ROM SFD-700: ROM floppy AFI MZ-80A (0x00000–0x00FFF), ROM floppy MZ-700 (0x01000–0x01FFF), firmware RFS (0x02000–0x0BFFF), poi file system ROM. |
SHARP_MZ80A_RFS_IMAGE_0–9.img |
Scheda SD | Dieci immagini di unita RFS (una per unita 0–9). |
SHARP_MZ80A_RFS_CPM_IMAGE_1.img |
Scheda SD | Immagine combinata della scheda SD: 10 unita RFS seguite da 7 immagini disco CP/M. Copiare direttamente su una scheda SD. |
Programmazione delle Flash ROM
Le immagini ROM vengono scritte su chip Flash RAM SST39SF040 (512 KB) utilizzando un programmatore TL866 o compatibile:
# 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
Scrittura dell'immagine della scheda SD
Scrivere l’immagine combinata della scheda SD direttamente sulla scheda SD con dd:
# Sostituire /dev/sdX con il dispositivo della scheda SD:
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512
sync
Nessun partizionamento richiesto. L’immagine SDCFS inizia al settore 0. Inserire la scheda SD nel lettore sulla scheda RomDisk.
Aggiunta di applicazioni alle unita ROM
Le applicazioni memorizzate nelle unita Flash ROM devono prima essere convertite dal formato MZF in immagini binarie allineate per settore. Posizionare i file MZF nella sottodirectory appropriata sotto MZF/ ed eseguire:
tools/processMZFfiles.sh
Questo converte tutti i file MZF in immagini allineate per settore da 128 byte e 256 byte in MZB/. Vengono poi automaticamente presi in carico da make_roms.sh.
Per scegliere quali applicazioni appaiono in ogni unita ROM, modificare tools/make_roms.sh e regolare le chiamate addMZFToROMImageList:
# Formato:
# addMZFToROMImageList <ROMDISK> <SFD700> <picoZ80> <reserved> "<MZB path>"
#
# Esempio — includere in tutte le build:
addMZFToROMImageList 1 1 1 0 "${MZB_PATH}/Common/sa-5510_rfs.${SECTORSIZE}.bin"
# Esempio — solo RomDisk e picoZ80:
addMZFToROMImageList 1 0 1 0 "${MZB_PATH}/MZ-80A/defender.${SECTORSIZE}.bin"
Le applicazioni vengono compresse nell’ordine indicato, riempiendo prima User ROM 1, poi User ROM 2 e 3. Posizionare le applicazioni che si desidera sempre disponibili in cima alla lista.
Riferimento strumenti di build
| Script / Strumento | Descrizione |
|---|---|
build.sh |
Script di build di primo livello. Esegue tutti i passaggi seguenti nell’ordine. Passare -m per rielaborare anche i file applicazione MZF. |
tools/assemble_rfs.sh |
Assembla rfs.asm e rfs_mrom.asm → roms/rfs.rom, roms/rfs_mrom.rom. |
tools/assemble_cpm.sh |
Assembla il CBIOS e il kernel CP/M 2.2 → roms/*.rom. |
tools/assemble_roms.sh |
Assembla tutte le varianti ROM del monitor e i binari applicazione MZF. Gestisce le quattro varianti di build MS-BASIC tramite una EQU BUILD_VERSION scritta in include/msbasic_buildversion.asm prima di ogni passata. |
tools/make_roms.sh |
Confeziona i binari ROM e MZF in immagini Flash ROM per i target ROMDISK, SFD700 e picoZ80. |
tools/make_cpmdisks.sh |
Crea immagini disco CP/M in formato RAW (per scheda SD) e CPC Extended Disk Format (per emulatori floppy o copia fisica). |
tools/make_sdcard.sh |
Combina le immagini di unita RFS e le immagini disco CP/M in una singola immagine di scheda SD. |
tools/processMZFfiles.sh |
Converte i file applicazione MZF in immagini allineate per settore da 128 byte e 256 byte in MZB/. |
tools/mzftool.pl |
Script Perl per creare, estrarre e ispezionare immagini in formato MZF. |
tools/sdtool |
Strumento binario che costruisce la struttura directory della scheda SD RFS e la popola con applicazioni MZF / binarie. |
tools/nasconv |
Converte i file immagine cassetta NASCOM nel formato caricabile su MZ-80A, rimappando i valori dei token MS-BASIC se necessario. |
tools/glass.jar |
Assemblatore GLASS Z80 fornito (Java). Utilizzato da tutti e tre gli script di assemblaggio. |
tools/MZFD/MZFDTool |
Crea e gestisce immagini floppy disk raw per il FDC MZ-700. Comandi: format (crea immagine vuota), dir (elenca directory), add (aggiunge file MZF), extract (estrae file in MZF), boot (imposta programma di avvio). Immagine predefinita: MZ700.img. |
tools/MZQD/MZQDTool |
Crea e gestisce immagini Quick Disk (QD) per l’MZ-700. Comandi: format (crea immagine vuota), dir (elenca directory), add (aggiunge file MZF). Immagine predefinita: MZ700.qd. |
cpmtools/ |
Sorgente cpmtools (cpmcp, cpmls, cpmrm, ecc.). Compilato automaticamente alla prima build e installato in tools/. |
SD Card Filing System
Struttura 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 |
| Campo | Descrizione |
|---|---|
| FLAG1 | Bit 7 = 1: voce valida. Bit 7 = 0: inattiva / eliminata. |
| FLAG2 | Tipo di esecuzione MZF (0x01 = binario). |
| FILE NAME | Nome file MZF standard di 17 caratteri. |
| START SECTOR | Primo settore all’interno di questa immagine di unita dove iniziano i dati del file. |
| SIZE | Conteggio byte effettivo dei dati del file. |
| LOAD ADDR | Indirizzo RAM in cui caricare i dati del file. |
| EXEC ADDR | Indirizzo di esecuzione automatica per file binari. |
| RESERVED | Non utilizzato attualmente. |
Ogni blocco file e di dimensione fissa 64 KB, corrispondente alla dimensione massima del blocco CMT (cassetta). Questo mantiene il layout semplice e permette di leggere o scrivere file esattamente come se fossero su nastro, consentendo operazioni di copia SD-CMT trasparenti.
Layout della scheda 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 +-------------------------------------------------------------+
... (le unita RFS 1–8 seguono lo stesso schema)
09012000 48090 +-------------------------------------------------------------+
| RFS DRIVE 9 |
0A013FFF 5009F +-------------------------------------------------------------+
... riempimento fino al limite di 256 MB ...
10000000 80000 +-------------------------------------------------------------+
| CP/M DISK IMAGE 0 (16 MB, 32 sectors x 1024 tracks) |
11000000 88000 +-------------------------------------------------------------+
| CP/M DISK IMAGE 1 |
| ... |
XX000000 | CP/M DISK IMAGE n |
+-------------------------------------------------------------+
Organizzazione della scheda SD
L’immagine della scheda SD costruita dagli strumenti del repository e pre-popolata come segue:
| Unita RFS | Contenuto |
|---|---|
| 0 | Programmi in codice macchina comuni e MZ-80A. |
| 1 | Programmi in codice macchina MZ-80K. |
| 2 | Programmi in codice macchina MZ-700. |
| 3 | Programmi in codice macchina MZ-800 / MZ-1500. |
| 4 | Programmi in codice macchina MZ-80B / MZ-2000. |
| 5 | Programmi BASIC, tipo 2 (MZ-80A). |
| 6 | Programmi BASIC, tipo 2 (MZ-80K). |
| 7 | Programmi BASIC, tipo 5 (MZ-700 / MZ-800). |
| 8 | Altri programmi / vari. |
| 9 | Altri programmi / vari. |
| Unita CP/M | User# | Immagine disco | Contenuto |
|---|---|---|---|
| 0 | 0 | CPM00_SYSTEM | Programmi di sistema 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 | Utilita disco | |
| 11 | CPM11_MAC80 | Macro Assembler 80 | |
| 12 | CPM29_ZSID_v14 | ZSID Debugger | |
| 13–14 | CPM32–33_ZCPR3 | Miglioramento 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 | Collezione Grant Searle CP/M dischi C0–F9 |
Manuali
| Manuale | Descrizione |
|---|---|
| Manuale utente | Ottenere RFS, riferimento comandi del monitor, utilizzo delle unita SD, BASIC, CP/M e risoluzione dei problemi |
| Guida tecnica | Piattaforme hardware, architettura di memoria, commutazione banchi, progettazione SDCFS, CBIOS CP/M e riferimento completo del sistema di build |
| Guida per sviluppatori | Introduzione all’assemblatore Z80, percorsi completi dei moduli sorgente (inclusi i meccanismi interni di commutazione banchi), e guide per l’aggiunta di nuovi comandi e target hardware |
Ringraziamenti
Licenze
Nessun uso commerciale di questo progetto o di qualsiasi componente hardware/firmware senza l'esplicita autorizzazione dell'autore. Questa condizione prevale su qualsiasi diritto concesso dalla licenza GNU GPL 3.
La GNU General Public License v3
I file sorgente sono distribuiti nella speranza che siano utili, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITA o IDONEITA A UN PARTICOLARE SCOPO. Vedere la GNU General Public License per maggiori dettagli.
Si dovrebbe aver ricevuto una copia della GNU General Public License insieme a questo programma. In caso contrario, vedere http://www.gnu.org/licenses/.