MZ-80A RomDisk — Guida Tecnica
Guida Tecnica del RomDisk
Questa guida documenta il design hardware del PCB Sharp MZ-80A RomDisk, l'architettura della memoria, i meccanismi di controllo dei banchi, le opzioni dell'interfaccia SPI, il layout dei moduli software, il design del SD Card Filing System, l'implementazione CP/M e il sistema di compilazione completo. E' destinata agli utenti che desiderano comprendere il funzionamento del RomDisk a livello di sistema, compilare il firmware dal codice sorgente o sviluppare nuovo software che utilizzi l'ambiente ROM a banchi.
Per l'uso quotidiano e il riferimento ai comandi del monitor, consultare il Manuale Utente RFS. Per le spiegazioni del codice sorgente assemblativo Z80, consultare la Guida per Sviluppatori RFS.
Versioni Hardware
Il PCB RomDisk e' una scheda figlia per lo Sharp MZ-80A. Si inserisce nel connettore di espansione dell'MZ-80A e utilizza zoccoli rialzati per intercettare le linee chip-select del Monitor ROM (4 KB a 0x0000-0x0FFF) e dello User ROM (2 KB a 0xE800-0xEFFF), sostituendo entrambi con Flash RAM paginata. Sono state prodotte tre revisioni hardware.
Versione 1.1
La scheda di produzione originale. Caratteristiche principali:
Versione 2.0
- Una Flash RAM SST39SF040 da 512 KB nello zoccolo Monitor ROM (U1) -- fornisce otto slot di banco da 4 KB.
- Una Flash RAM da 512 KB nello zoccolo User ROM (U4) -- fornisce 256 slot di banco da due kilobyte, sebbene RFS utilizzi solo i primi dodici.
- Semplice latch di tipo D per la selezione del banco -- il registro di banco e' permanentemente accessibile senza meccanismo di protezione.
- Accesso alla scheda SD tramite SPI software bitbang attraverso i pin della porta parallela stampante dello Sharp MZ-80A. Questo metodo e' funzionale ma lento rispetto all'SPI hardware successivo.
PP_SPI_ENA. Non c'e' un latch codificato; i registri di banco possono essere scritti in qualsiasi momento.
Una revisione significativa che aggiunge SPI hardware, slot Flash aggiuntivi, SRAM opzionale e un meccanismo di sicurezza per i registri di banco:
Versione 2.1 (Attuale)
- Latch codificato -- un contatore ascendente a 4 bit 74HCT191 controlla la logica di decodifica del registro di controllo I/O. All'accensione, o dopo una lettura di reset, il contatore e' a 0 e i registri di banco sono inaccessibili (le letture da 0xEFF8-0xEFFF restituiscono dati Flash ROM normali). I registri di controllo diventano attivi solo dopo esattamente 16 letture sequenziali nell'intervallo 0xEFF8-0xEFFF che incrementano il contatore fino alla sua uscita Terminal Count.
- Circuito SPI hardware -- registro a scorrimento seriale-parallelo 74HCT595 (uscita MOSI/CLK) e registro a scorrimento parallelo-seriale 74HCT165 (ingresso MISO), cadenzato a 8 MHz da un oscillatore a cristallo da 16 MHz. Zoccolo per scheda SD montato direttamente sul PCB.
- Secondo e terzo slot Flash User ROM (U5 e U6) -- ciascuno un ulteriore SST39SF040 da 512 KB. I bit BK2A19/BK2A20 nel registro BNKCTRL selezionano quale dei tre chip User ROM e' attivo.
- SRAM opzionale da 512 KB -- AS6C4008, su zoccolo. Destinata a uso futuro come spazio di lavoro paginato aggiuntivo.
- Il ponticello a saldare JP6 seleziona se e' installato il circuito SPI hardware o il circuito SPI software bitbang.
Una revisione mirata alla correzione del bug dell'indirizzo di refresh della v2.0. Modifiche rispetto alla v2.0:
- Porta AND da diodi discreti (D1/D2) aggiunta all'ingresso clock del contatore. La porta combina il segnale di decodifica dell'indirizzo con il segnale
/MREQdello Z80, in modo che solo i veri cicli di lettura memoria del bus (non i cicli di refresh) possano incrementare il contatore 74HCT191. I cicli di refresh asseriscono/RFSHe deasseriscono/MREQ, quindi vengono bloccati. - 0xEFF9 ricablato come indirizzo dedicato di azzeramento del latch codificato. Una singola lettura a 0xEFF9 resetta il contatore 74HCT191 a 0 e disattiva l'accesso ai registri di controllo I/O.
- Serigrafia del PCB riordinata -- designazioni di riferimento dei componenti corrette.
Architettura della Memoria
La CPU Z80 dello Sharp MZ-80A indirizza 64 KB di memoria. Il RomDisk sostituisce entrambe le finestre ROM con Flash RAM paginata e aggiunge otto registri di controllo I/O negli otto byte superiori dell'intervallo di indirizzi User ROM. L'intero intervallo 0x1200-0xCFFF rimane disponibile per i programmi utente.
Layout dello Spazio Indirizzi Z80
Address Size Contents
─────────────────────────────────────────────────────────────────────────────
0x0000 4 KB Monitor ROM window — 4 KB page into 512 KB MROM Flash (U1)
Banks: 0 = SA-1510 (40-col, default on power-on)
1 = SA-1510 80-column
2 = CP/M CBIOS kernel
3 = RFS Monitor ROM utilities
4 = 1Z-013A MZ-700 monitor
5 = 1Z-013A 80-column
6 = IPL (Initial Program Loader)
7 = (empty)
0x1000 256 B MZ-80A system variables and stack
0x1200 ~46 KB User RAM (main program area, 0x1200–0xCFFF)
0xCFFF
0xD000 12 KB Video RAM + memory-mapped I/O (Sharp MZ-80A mainboard hardware)
0xE800 2 KB User ROM window — 2 KB page into 512 KB UROM Flash (U4/U5/U6)
Banks 0–7: RFS firmware modules
Banks 8–11: CP/M CBIOS modules
0xEFF8 8 B Coded latch read region (v2+): 16 reads here unlock control registers
Also Flash RAM data when latch is closed
0xEFF9 1 B Coded latch reset: one read re-locks the control registers (v2.1+)
0xEFFB 1 B HWSPIDATA — Hardware SPI data register (v2+)
0xEFFC 1 B HWSPISTART — Hardware SPI start/trigger register (v2+)
0xEFFD 1 B BNKSELMROM — Monitor ROM bank select register
0xEFFE 1 B BNKSELUSER — User ROM bank select register
0xEFFF 1 B BNKCTRL — Bank control register
0xF000 4 KB Floppy AFI ROM space (original Sharp floppy controller ROM)
─────────────────────────────────────────────────────────────────────────────
Banchi Monitor ROM (4 KB ciascuno)
La finestra Monitor ROM a 0x0000-0x0FFF e' commutata tra otto banchi da 4 KB memorizzati nel chip Flash MROM a U1. Il banco 0 e' selezionato al reset all'accensione.
| Bank | Module | Description |
|---|---|---|
| 0 | monitor_sa1510.asm |
Original SA-1510 40-column monitor. The default bank on power-on. |
| 1 | monitor_80c_sa1510.asm |
SA-1510 patched for 80-column display (requires Kuma 80-column upgrade). |
| 2 | cbios.asm |
CP/M 2.2 CBIOS kernel — relocated to 0xC000–0xCFFF at runtime during CP/M boot. |
| 3 | rfs_mrom.asm |
RFS Monitor ROM utilities — MZF image scanning and loading. Runs from MROM space so it can page the User ROM without paging itself out. |
| 4 | monitor_1z-013a.asm |
MZ-700 1Z-013A monitor variant. |
| 5 | monitor_80c_1z-013a.asm |
1Z-013A monitor patched for 80-column display. |
| 6 | ipl.asm |
Initial Program Loader. |
| 7 | (empty) | Unused. |
La finestra User ROM a 0xE800-0xEFFF e' commutata tra 12 banchi attivi distribuiti sui tre chip Flash User ROM (U4, U5, U6). Il registro BNKSELUSER seleziona la pagina da 2 KB all'interno del chip attivo; i bit BK2A19 e BK2A20 in BNKCTRL selezionano quale chip e' indirizzato.
| Bank | Module | Description |
|---|---|---|
| 0 | rfs.asm |
Primary RFS entry point, command dispatcher, command table, bank-switch infrastructure shared by all banks. |
| 1 | rfs_bank1.asm |
Floppy disk controller (FDC) functions — drive selection and FDC boot. |
| 2 | rfs_bank2.asm |
SD card controller — SPI driver, SD card initialisation, SDCFS directory and file read/write. |
| 3 | rfs_bank3.asm |
Memory utilities — hex dump (D), memory edit (M), memory copy (CP), tape↔SD copy (T2SD/SD2T). |
| 4 | rfs_bank4.asm |
CMT (cassette) controller — tape load, save, and verify. |
| 5 | rfs_bank5.asm |
(Reserved / unused.) |
| 6 | rfs_bank6.asm |
Help screen, message strings, ASCII↔Sharp character set conversion table. |
| 7 | rfs_bank7.asm |
Memory test (R), 8253 timer test (T). |
| 8 | cbios_bank1.asm |
CP/M CBIOS — audio functions and low-level utilities. |
| 9 | cbios_bank2.asm |
CP/M CBIOS — screen driver and ANSI terminal emulation. |
| 10 | cbios_bank3.asm |
CP/M CBIOS — SD card disk driver (CP/M drives A:–G:). |
| 11 | cbios_bank4.asm |
CP/M CBIOS — floppy disk controller. |
Controllo dei Banchi
Meccanismo del Latch Codificato
Sulle schede v2.0 e v2.1 i registri di controllo dei banchi sono protetti da un contatore ascendente a 4 bit 74HCT191 che funge da latch codificato. Il meccanismo impedisce al codice Z80 in esecuzione dalla RAM programma di commutare accidentalmente i banchi ROM semplicemente leggendo o scrivendo un indirizzo che ricade nell'intervallo 0xEFF8-0xEFFF.
Funzionamento:
Registro di Controllo dei Banchi (BNKCTRL, 0xEFFF)
- All'accensione o dopo una lettura di reset del latch, il contatore 74HCT191 e' a 0. La logica di decodifica dei registri di controllo I/O e' disabilitata -- le letture da 0xEFF8-0xEFFF restituiscono dati Flash ROM normali, e le scritture a BNKSELMROM/BNKSELUSER/BNKCTRL non hanno effetto.
- Per sbloccare i registri di controllo: eseguire esattamente 16 cicli di lettura a qualsiasi indirizzo nell'intervallo 0xEFF8-0xEFFF. Ogni lettura incrementa il contatore di uno. Sulle schede v2.1 solo i veri cicli di lettura memoria del bus (con
/MREQasserito) contano; i cicli di refresh DRAM dello Z80 (che asseriscono/RFSHe deasseriscono/MREQ) sono bloccati dalla porta AND D1/D2 e non incrementano il contatore. - Quando il contatore raggiunge il Terminal Count (16), l'uscita TC si attiva e abilita la logica di decodifica dei registri di controllo I/O. I registri di selezione dei banchi sono ora scrivibili.
- Per ribloccare: leggere dall'indirizzo 0xEFF9 una volta. Questo asserisce la linea di caricamento/reset del contatore, riporta il contatore a 0 e disattiva immediatamente i registri di controllo I/O.
Il registro BNKCTRL controlla i segnali SPI bitbang, il chip select della scheda SD, la configurazione del latch codificato e la selezione del chip User ROM. E' di sola scrittura (dopo che il latch codificato e' stato sbloccato).
| Bits | Name | Description |
|---|---|---|
| 0 | BBCLK | BitBang SPI Clock output. Toggled by software SPI routines to generate the SPI clock signal. |
| 1 | SDCS | SD Card Chip Select — active low. Set to 0 to select the SD card, 1 to deselect. |
| 2 | BBMOSI | BitBang SPI MOSI data output. Set to the bit value before toggling BBCLK. |
| 5:3 | CDLTCH1–3 | Coded latch configuration bits. Sets the initial counter offset, controlling how many reads to 0xEFF8–0xEFFF are required to unlock the registers. Default 0 = 16 reads required. |
| 6 | BK2A19 | User ROM device/address select bit 0. Combined with BNKSELUSER to address the full 512 KB of each User ROM chip, and to select between U4, U5, and U6. |
| 7 | BK2A20 | User ROM device/address select bit 1. See BK2A19. |
I bit BK2A19/BK2A20 estendono lo spazio di indirizzi effettivo dello User ROM oltre i 256 banchi da due kilobyte disponibili dal solo BNKSELUSER. Insieme a BNKSELUSER formano un indirizzo composito nei tre chip Flash User ROM, selezionando quale chip e' attivo (U4, U5 o U6) e quale pagina da 2 KB al suo interno e' mappata nella finestra 0xE800-0xEFFF.
Interfaccia SPI
Sono supportate tre implementazioni SPI, selezionate al momento della compilazione impostando esattamente un flag a
1 in rfs_definitions.asm. Solo uno puo' essere abilitato in una data compilazione del firmware.
| Flag | Value | Method | Speed | Hardware Required |
|---|---|---|---|---|
HW_SPI_ENA |
1 | Hardware SPI — 74HCT595/74HCT165 shift registers, 16 MHz crystal | 8 MHz — comparable to Flash ROM access speed | v2.0/v2.1 PCB with JP6 fitted for hardware SPI |
SW_SPI_ENA |
1 | Software bitbang SPI via Z80 I/O port bit manipulation of BNKCTRL | ~300 KB/s — faster than floppy, slower than ROM | v2.0/v2.1 PCB with JP6 fitted for software SPI |
PP_SPI_ENA |
1 | Parallel printer port bitbang (original v1.1 method) | Slowest | v1.1 PCB only |
Funzionamento SPI hardware (schede v2.0/v2.1):
- Scrivere il byte di dati in HWSPIDATA (0xEFFB). Il registro a scorrimento 74HCT595 carica il byte pronto per la trasmissione.
- Scrivere un valore qualsiasi in HWSPISTART (0xEFFC) per avviare il trasferimento. Il registro a scorrimento trasmette il byte sulla linea MOSI sincronizzato all'oscillatore da 16 MHz, mentre il 74HCT165 contemporaneamente riceve i bit MISO dalla scheda SD.
- Leggere HWSPIDATA (0xEFFB) per recuperare il byte ricevuto. Lo scambio completo a 8 bit si completa in meno tempo di un singolo ciclo di lettura memoria dello Z80 -- ecco perche' il throughput SPI hardware e' paragonabile alla velocita' di accesso alla Flash ROM.
Architettura Software
La tabella completa dei moduli -- ogni file sorgente, il suo chip Flash di destinazione, banco ROM e funzione:
| Module | Flash Chip | Bank | Size | Description |
|---|---|---|---|---|
rfs.asm |
User (U4) | 0 | 2 KB | Command dispatcher, command table, bank-switch infrastructure. |
rfs_bank1.asm |
User (U4) | 1 | 2 KB | Floppy disk controller — drive select and FDC boot. |
rfs_bank2.asm |
User (U4) | 2 | 2 KB | SD card controller — SPI driver, SDCFS directory, file read/write. |
rfs_bank3.asm |
User (U4) | 3 | 2 KB | Memory utilities — D, M, CP, T2SD, SD2T. |
rfs_bank4.asm |
User (U4) | 4 | 2 KB | CMT controller — tape load, save, verify. |
rfs_bank5.asm |
User (U4) | 5 | 2 KB | (Reserved / unused.) |
rfs_bank6.asm |
User (U4) | 6 | 2 KB | Help screen, message strings, character set conversion. |
rfs_bank7.asm |
User (U4) | 7 | 2 KB | Memory test (R), timer test (T). |
cbios_bank1.asm |
User (U4) | 8 | 2 KB | CP/M CBIOS — audio, low-level utilities. |
cbios_bank2.asm |
User (U4) | 9 | 2 KB | CP/M CBIOS — screen driver, ANSI terminal emulator. |
cbios_bank3.asm |
User (U4) | 10 | 2 KB | CP/M CBIOS — SD card disk driver (drives A:–G:). |
cbios_bank4.asm |
User (U4) | 11 | 2 KB | CP/M CBIOS — floppy disk controller. |
monitor_sa1510.asm |
Monitor (U1) | 0 | 4 KB | Original SA-1510 monitor ROM (40-column). |
monitor_80c_sa1510.asm |
Monitor (U1) | 1 | 4 KB | SA-1510 patched for 80-column display. |
cbios.asm |
Monitor (U1) | 2 | 4 KB | CP/M 2.2 CBIOS kernel (relocated to 0xC000 during CP/M boot). |
rfs_mrom.asm |
Monitor (U1) | 3 | 4 KB | RFS Monitor ROM utilities — ROM scanning, MZF loading. |
monitor_1z-013a.asm |
Monitor (U1) | 4 | 4 KB | MZ-700 1Z-013A monitor variant. |
monitor_80c_1z-013a.asm |
Monitor (U1) | 5 | 4 KB | 1Z-013A patched for 80-column display. |
ipl.asm |
Monitor (U1) | 6 | 4 KB | Initial Program Loader. |
Poiche' lo Z80 puo' vedere solo una porzione di 2 KB dello User ROM alla volta, ogni banco User ROM contiene una copia dello stub di commutazione banco a un indirizzo fisso all'interno della finestra. Quando il banco 0 deve chiamare una routine nel banco 3, scrive il numero del banco di destinazione in BNKSELUSER, salta al punto di ingresso noto nel banco appena mappato, esegue il codice richiesto, riscrive il banco 0 in BNKSELUSER e ritorna. Questo meccanismo rende accessibili tutti i 12 x 2 KB = 24 KB di codice User ROM da qualsiasi contesto di esecuzione.
Vincolo importante sulle schede v2.0/v2.1: nessuna sequenza di istruzioni in ciclo stretto nel codice del banco User ROM puo' attraversare l'intervallo di indirizzi 0xEFF8-0xEFFF, poiche' letture ripetute in quell'intervallo incrementeranno il contatore del latch codificato e alla fine sbloccheranno i registri di banco inaspettatamente.
SD Card Filing System (SDCFS)
Piuttosto che implementare FAT (che sarebbe troppo grande per essere contenuto nei banchi ROM disponibili da 2 KB), il firmware RomDisk utilizza un file system appositamente progettato chiamato SD Card Filing System (SDCFS). Il design privilegia la semplicita' e un ingombro ROM minimo rispetto alla flessibilita'.
La scheda SD viene utilizzata in modalita' raw -- non viene scritta alcuna tabella delle partizioni. L'immagine SDCFS inizia al byte 0 (settore 0) della scheda. Le immagini disco CP/M sono posizionate al confine dei 256 MB per garantire che tutti i 10 drive RFS abbiano spazio indipendentemente da quanto siano pieni.
Struttura della Directory
Ogni drive SDCFS contiene una directory piatta di massimo 256 voci. Ogni voce e' esattamente di 32 byte, utilizzando una struttura derivata dal formato standard dell'intestazione nastro MZF (lo stesso layout a 32 byte utilizzato sui nastri a cassetta Sharp MZ):
| Field | Bytes | Description |
|---|---|---|
| FLAG1 | 1 | Bit 7 = 1: valid entry. Bit 7 = 0: inactive / deleted. |
| FLAG2 | 1 | MZF execution type (0x01 = binary program). |
| FILE NAME | 17 | Standard 17-character MZF filename (Sharp character encoding). |
| START SECTOR | 4 | First SD card sector within this drive image where the file’s data block begins. |
| SIZE | 2 | Actual byte count of the file data. |
| LOAD ADDR | 2 | Z80 RAM address to load the file data to. |
| EXEC ADDR | 2 | Auto-execution address for binary files (jumped to after load if non-zero). |
| RESERVED | 3 | Not currently used. |
La directory occupa i primi 8 KB di ogni immagine drive (256 voci x 32 byte). I dati dei file seguono immediatamente. A ogni file viene allocato un blocco fisso di 64 KB -- corrispondente alla dimensione massima del blocco nastro a cassetta Sharp MZ -- che mantiene il layout su disco banalmente semplice e rende la copia SD/nastro un trasferimento diretto byte per byte allineato ai settori.
Layout della Scheda 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 (same structure)
...
0x09012000 RFS DRIVE 9 (same structure)
0x0A014000 (padding to 256 MB boundary)
────────────────────────────────────────────────────────────────────────
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
────────────────────────────────────────────────────────────────────────
Implementazione CP/M 2.2
CP/M 2.2 e' disponibile sul RomDisk come funzionalita' integrata. Digitando
Processo di Avvio
CPM al prompt del monitor RFS si avvia CP/M direttamente dalla scheda SD. Il TPA CP/M e' di 47 KB; il CCP si trova a 0x9C00 con il BDOS sopra, mentre l'intero CBIOS risiede in ROM (Monitor ROM banco 2 piu' User ROM banchi 8-11) e non consuma RAM programma.
- Il comando RFS
CPMcommuta il Monitor ROM al banco 2 (il kernel CBIOS), che contiene il punto di ingresso cold-boot CP/M a 0x0000. - La routine cold-boot del CBIOS inizializza tutto l'hardware (tastiera, schermo, scheda SD, floppy se presente) e costruisce i Disk Parameter Header per ogni drive disponibile.
- Il CBIOS legge le immagini CCP e BDOS dal disco di sistema CP/M sulla scheda SD nella RAM a 0x9C00.
- Il controllo passa al CCP a 0x9C00. CP/M e' ora in esecuzione.
Il Custom BIOS e' suddiviso in cinque moduli ROM in modo che nessun singolo banco da 2 KB venga superato:
| Module | ROM Location | Contents |
|---|---|---|
cbios.asm |
Monitor ROM bank 2 (0x0000–0x0FFF while active) | All 17 CP/M CBIOS API vectors, cold/warm boot handlers, interrupt handler, disk parameter tables. |
cbios_bank1.asm |
User ROM bank 8 | Audio (bell, melody), real-time clock routines, low-level keyboard handler. |
cbios_bank2.asm |
User ROM bank 9 | Screen driver (character output, scroll, cursor control), ANSI/VT100 terminal emulator. |
cbios_bank3.asm |
User ROM bank 10 | SD card disk driver — translates CP/M 128-byte sector reads and writes to SDCFS drive images at the 256 MB boundary. |
cbios_bank4.asm |
User ROM bank 11 | Floppy disk controller — supports physical CP/M floppy disks. |
I drive CP/M sono mappati alle immagini disco della scheda SD durante il cold-boot del CBIOS. La mappatura standard dei drive e':
| CP/M Drive | Image | Contents |
|---|---|---|
| A: | CP/M Disk Image 0 | OS programs, Turbo Pascal, Hi-Soft C, Fortran 80, MS-BASIC 80. |
| B: | CP/M Disk Image 1 | Pascal MTP v5.61, Turbo Pascal v3.00a, Pascal User Group disks. |
| C: | CP/M Disk Image 2 | PLI, PLM 80, WordStar v3.0/v3.3/v4.0. |
| D:–G: | CP/M Disk Images 3–6 | Grant Searle CP/M collection disks. |
Sistema di Compilazione
Tutto lo sviluppo viene effettuato su Linux (Debian/Ubuntu). Il sistema di compilazione e' autonomo all'interno del repository. Il punto di ingresso principale e'
Prerequisiti
build.sh nella directory software/RFS/.
| Tool | Purpose |
|---|---|
| Java JRE 8+ | Runs the GLASS Z80 assembler (tools/glass.jar). java must be on PATH. |
| bash | All build scripts are bash shell scripts. |
| perl | Required by tools/mzftool.pl for MZF file manipulation. |
| gcc / make | Compiles cpmtools from source on first build (automatic). |
| dd, cat, stat | Standard Linux utilities used by the packaging scripts. |
L'assemblatore GLASS Z80 e' incluso come
Flag di Compilazione
tools/glass.jar -- non e' necessaria alcuna installazione separata.
Modificare
asm/include/rfs_definitions.asm prima della compilazione. I flag dell'interfaccia SPI sono mutuamente esclusivi -- impostarne esattamente uno a 1:
| Flag | Default | Description |
|---|---|---|
HW_SPI_ENA |
1 | Hardware SPI (v2.0/v2.1 PCB, JP6 configured for hardware SPI). Default for all current boards. |
SW_SPI_ENA |
0 | Software bitbang SPI (v2.0/v2.1 PCB, JP6 configured for software SPI). |
PP_SPI_ENA |
0 | Parallel port bitbang SPI. For v1.1 boards only. |
FUSIONX_ENA |
1 | Include tranZPUter FusionX support. |
ENADEBUG |
0 | Enable assembly-time debug output. |
git clone https://git.eaw.app/eaw/RFS.git cd RFS/software/RFS # Full build — assembles all ROMs, packages Flash images, builds SD card image: ./build.sh # Full build including reprocessing all MZF application files # (only needed when files in MZF/ have changed): ./build.sh -m
build.sh esegue i seguenti passaggi in ordine:
- Compila
cpmtoolsdal sorgente se non ancora compilato, e lo aggiunge alPATH. tools/assemble_rfs.sh-- assembla tutti i banchi firmware RFS (rfs.asm, rfs_bank1-7.asm) in immagini ROM individuali.tools/assemble_cpm.sh-- assembla il CBIOS CP/M 2.2 (cbios.asm, cbios_bank1-4.asm) e il kernel CCP+BDOS CP/M.tools/assemble_roms.sh-- assembla tutte le varianti del monitor (SA-1510, 80c, 1Z-013A, IPL) e i binari delle applicazioni MZF.tools/processMZFfiles.sh(solo con il flag-m) -- converte i file MZF grezzi daMZF/in immagini con settori imbottiti a 128 byte e 256 byte inMZB/.tools/make_roms.sh-- confeziona le immagini ROM assemblate e i binari delle applicazioni MZF in immagini Flash ROM da 512 KB per ciascun chip Flash.tools/make_cpmdisks.sh-- crea immagini disco CP/M in formato RAW (per scheda SD) e formato CPC Extended Disk (per emulatori floppy).tools/make_sdcard.sh-- combina le 10 immagini drive RFS e le 7 immagini disco CP/M nell'immagine finale della scheda SD.
Dopo una compilazione riuscita la directory
roms/ contiene:
| File | Target Chip | Description |
|---|---|---|
MROM_ROMDISK_256.bin |
Monitor ROM Flash (U1) | Monitor ROM image: SA-1510, 80c SA-1510, CP/M CBIOS, RFS mrom utils, 1Z-013A monitors, IPL across 7 × 4 KB banks. |
USER_ROM_256.bin |
User ROM Flash U4 | RFS banks 0–7, CP/M CBIOS banks 8–11, packed MZF applications. |
USER_ROM_II_256.bin |
User ROM Flash U5 | Additional MZF applications (overflow from U4). |
USER_ROM_III_256.bin |
User ROM Flash U6 | Additional MZF applications (overflow from U5). |
SHARP_MZ80A_RFS_IMAGE_0–9.img |
SD card | Individual RFS drive images, one per drive (drives 0–9). |
SHARP_MZ80A_RFS_CPM_IMAGE_1.img |
SD card | Combined image: 10 RFS drives + 7 CP/M disk images. Write this file to the SD card. |
Per programmare i chip Flash, utilizzare un programmatore compatibile SST39SF040. Scrivere
MROM_ROMDISK_256.bin in U1, USER_ROM_256.bin in U4, e le immagini di overflow in U5 e U6 se installati. Per scrivere l'immagine della scheda SD usare dd:
dd if=roms/SHARP_MZ80A_RFS_CPM_IMAGE_1.img of=/dev/sdX bs=512 status=progress
Siti di Riferimento
| Resource | Link |
|---|---|
| RomDisk project page | /sharpmz-upgrades-romdisk/ |
| RFS project page | /sharpmz-upgrades-rfs/ |
| RFS User Manual | /sharpmz-upgrades-rfs-usermanual/ |
| RFS Developer’s Guide | /sharpmz-upgrades-rfs-developersguide/ |
| RFS Technical Guide | /sharpmz-upgrades-rfs-technicalguide/ |
| RFS Gallery | /sharpmz-upgrades-rfs-gallery/ |
| SFD-700 mkII Technical Guide | /sfd700-technicalguide/ |
| picoZ80 Technical Guide | /picoz80-technicalguide/ |
| GLASS Z80 Assembler | Bundled in tools/glass.jar |
| SST39SF040 Flash datasheet | Microchip / Greenliant product page |
| AS6C4008 SRAM datasheet | Alliance Memory product page |