tranZPUter SW-700 — Guide Technique
Guide Technique du tranZPUter SW-700 (Version Actuelle)
Ce guide documente l'architecture materielle, le mecanisme de bus mastering, les modes de gestion de la memoire, les registres systeme, l'API de service K64F, la commutation de CPU, le module video, les specifications FPGA et le systeme de build pour la version actuelle du tranZPUter SW-700 — la carte d'extension qui ajoute un processeur d'E/S K64F, un CPLD et un FPGA Altera au Sharp MZ-700 (et, dans la version actuelle, au Sharp MZ-2000).
La version actuelle prend en charge l'emulation materielle du MZ-2000 et utilise des FPGA plus grands (Cyclone IV EP4CE75 ou EP4CE115) par rapport a la base v1.2 (Cyclone III EP3C25). Tout dans ce guide s'applique au materiel actuel sauf indication explicite d'un qualificatif de version (v1.2 / v1.3).
Pour l'utilisation quotidienne et la reference des commandes TZFS, voir le Manuel Utilisateur. Pour les explications du code source Z80 et FPGA, voir le Guide du Developpeur.
Bus Mastering
Le tranZPUter SW-700 se branche sur le bus d'extension du Sharp MZ-700 (ou MZ-2000). Son CPLD surveille le bus et peut activer la ligne
/BUSRQ du Z80 a tout moment. Lorsque /BUSRQ est active, le Z80 termine son cycle machine en cours puis met ses bus d'adresse, de donnees et de controle en haute impedance, signalant la liberation du bus via /BUSAK.
Une fois que le Z80 libere le bus, le FPGA prend la propriete des trois bus. Dans cet etat, le FPGA peut agir comme :
- Un moteur DMA — transfert massif de donnees entre le SRAM de 512 Ko et la memoire de la carte mere sans intervention du Z80.
- Une CPU logicielle — les coeurs T80 ou ZPU Evolution s'executent directement depuis le SRAM, adressant l'espace memoire complet comme s'ils etaient le CPU systeme.
/BUSRQ, le Z80 recupere ses bus et reprend l'execution exactement la ou il a ete suspendu — tout l'etat des registres est preserve car le Z80 n'a jamais ete reinitialise. Le contenu du SRAM est egalement preserve lors du transfert, de sorte que le code ou les donnees places par le FPGA restent disponibles pour les programmes Z80.
Le CPLD gere la traduction de niveau entre les signaux du bus MZ a 5 V et les E/S FPGA a 3,3 V, et effectue le decodage d'adresse pour que les registres du tranZPUter apparaissent dans l'espace d'E/S du Z80 sans entrer en conflit avec les peripheriques de la carte mere MZ.
Composants Materiels
K64F ARM Cortex-M4 (Processeur d'E/S)
Le NXP/Freescale K64F fonctionne a 120 MHz et agit comme processeur d'E/S du systeme. Il opere independamment du Z80 et du FPGA, executant le systeme d'exploitation embarque zOS. Ses responsabilites sont :
MAX 7000A CPLD (512 Macro Cells)
- Gestion de la carte SD — fournit l'acces au systeme de fichiers FAT32 sur la carte SD. Tous les fichiers programme MZF, images ROM et bitstreams FPGA y sont stockes.
- Chargement de firmware/ROM — lit les images ROM et bitstreams FPGA depuis la carte SD et les charge dans le SRAM de 512 Ko ou dans le flash de configuration du FPGA.
- API de service TZFS — traite les requetes des programmes Z80 fonctionnant sous TZFS. Le Z80 ecrit une commande et ses parametres dans une region de memoire partagee a 0xED80, puis declenche le K64F via le registre SVCREQ au port d'E/S 0x68. Le K64F interroge la requete, l'execute, ecrit les resultats dans la memoire partagee et efface le drapeau SVCREQ.
- Synthese de frequence CPU — genere une horloge CPU alternative qui peut etre commutee vers le Z80 a la demande, permettant au Z80 de fonctionner a des vitesses differentes de la frequence native de la carte mere MZ.
L'Altera MAX 7000A est un CPLD tolerant 5 V avec 512 macrocellules. Il se situe directement sur le bus d'extension MZ et remplit trois fonctions :
Altera FPGA
- Traduction de niveau — fait le pont entre les signaux du bus MZ-700/MZ-2000 a 5 V et les rails d'E/S du FPGA a 3,3 V.
- Logique de bus mastering — active
/BUSRQvers le Z80 et surveille/BUSAKpour arbitrer la propriete du bus entre le Z80 et le FPGA. - Decodage d'adresse — mappe les registres d'E/S du tranZPUter (0x60–0x6F, 0xA8–0xAD, 0xF0, etc.) dans l'espace d'E/S du Z80 et commute le SRAM dans l'espace d'adressage du Z80 selon le mode de gestion memoire TZMM actif.
Deux variantes de FPGA sont utilisees sur les differentes revisions de cartes :
| Version | Device | Logic Elements | BRAM | Package |
|---|---|---|---|---|
| v1.2 | Cyclone III EP3C25E144C8 | 25K LE | 76 KB | 144-pin TQFP |
| v1.3 | Cyclone IV EP4CE75F484C8 | 75K LE | 360 KB | 484-pin BGA |
| v1.3 | Cyclone IV EP4CE115F484C8 | 115K LE | 480 KB | 484-pin BGA |
Le FPGA implemente :
512 Ko de RAM Statique (AS6C4008)
- T80 Soft Z80 — un coeur CPU compatible Z80 synthetise qui prend le controle des bus lorsque le bus mastering est actif.
- ZPU Evolution Soft CPU — un processeur logiciel 32 bits base sur une pile qui peut executer des binaires ZPU depuis le SRAM.
- Controleur video — prend en charge tous les modes video Sharp MZ et fournit une sortie VGA (voir Module Video).
- GPU — primitives graphiques accelerees materiellement (effacement VRAM, remplissage de rectangle, effacement GRAM).
Un seul composant SRAM AS6C4008 de 512 Ko x 8 fournit la memoire etendue du tranZPUter. Le CPLD pagine differentes regions de ce SRAM dans l'espace d'adressage de 64 Ko du Z80 en fonction du mode TZMM actif (voir Modes de Gestion de la Memoire). Le SRAM est accessible a la fois au Z80 (via le decodeur d'adresse du CPLD) et au FPGA (via connexion directe), et son contenu persiste lors des transferts de bus mastering.
Alimentation
Trois regulateurs LDO embarques derivent les rails d'alimentation requis a partir de l'alimentation 5 V du bus d'extension MZ :
| Rail | Consumers |
|---|---|
| 3.3 V | CPLD, K64F, general I/O, SRAM |
| 2.5 V | FPGA I/O banks |
| 1.2 V | FPGA core |
Modes de Gestion de la Memoire
Le CPLD implemente une unite de gestion de la memoire controlee par l'ecriture d'une valeur de mode au port d'E/S 0x60. Chaque mode determine comment les regions du SRAM de 512 Ko sont paginees dans l'espace d'adressage de 64 Ko du Z80, et si c'est la ROM et la RAM de la carte mere MZ ou le SRAM du tranZPUter qui dessert chaque plage d'adresses.
Le registre de mode est appele registre TZMM (tranZPUter Memory Mode). Les modes principaux sont :
| Mode | Value | Description |
|---|---|---|
| TZMM_ORIG | 0x00 | Original MZ-700 mode — mainboard IPL ROM, DRAM, and VRAM visible as normal. tranZPUter SRAM inactive. |
| TZMM_BOOT | 0x01 | tranZPUter SRAM mapped at 0xE800–0xEFFF to hold the TZFS bootstrap. All other addresses use mainboard resources. |
| TZMM_TZFS | 0x22 | TZFS mode — entire 64 KB address space served from tranZPUter SRAM. The K64F has preloaded TZFS code and ROM images. |
| TZMM_TZFS2 | 0x23 | TZFS banked mode — alternate code bank 2 active. |
| TZMM_TZFS3 | 0x24 | TZFS banked mode — alternate code bank 3 active. |
| TZMM_TZFS4 | 0x25 | TZFS banked mode — alternate code bank 4 active. |
| TZMM_CPM | 0x26 | CP/M mode — full 64 KB SRAM mapped, CBIOS and CCP loaded by K64F. |
| TZMM_CPM2 | 0x27 | CP/M mode variant — alternate CBIOS bank active. |
| TZMM_MZ700_0 | — | MZ-700 compatibility paging — mainboard ROM and VRAM layout preserved. |
| TZMM_MZ2000 | — | MZ-2000 compatibility paging — MZ-2000 ROM and VRAM layout emulated. Current version only. |
A la mise sous tension, le CPLD demarre en mode TZMM_ORIG (0x00), presentant la carte memoire standard du MZ-700. La ROM bootstrap TZFS a 0xE800 bascule vers TZMM_BOOT pour se rendre visible, puis bascule vers TZMM_TZFS une fois que le K64F a charge l'image TZFS complete dans le SRAM.
TZMM_ORIG (0x00) — Original MZ-700 layout
0x0000–0x0FFF MZ mainboard IPL ROM
0x1000–0xCFFF MZ mainboard DRAM
0xD000–0xDFFF MZ mainboard VRAM / memory-mapped I/O
0xE000–0xE7FF MZ mainboard VRAM extension / I/O
0xE800–0xEFFF MZ mainboard ROM (User ROM area)
0xF000–0xFFFF MZ mainboard ROM / unused
TZMM_TZFS (0x22) — Full SRAM mode
0x0000–0xFFFF tranZPUter 512 KB SRAM (64 KB window)
K64F has loaded: IPL at 0x0000, TZFS at 0xE800, ROMs throughout
TZMM_CPM (0x26) — CP/M mode
0x0000–0xFFFF tranZPUter 512 KB SRAM (64 KB window)
K64F has loaded: CP/M CCP+BDOS+CBIOS
Registres Systeme
Le tranZPUter mappe ses registres de controle dans l'espace d'adressage d'E/S du Z80. Tous les registres sont accedes avec les instructions Z80
Carte des Registres
IN et OUT. Le CPLD decode les adresses d'E/S et route les acces vers le materiel appropriate.
Port Register R/W Description
──────────────────────────────────────────────────────────────────────────────
0x60 Memory Management Config W TZMM mode select (see Memory Modes)
0x62 Set CPU Alt Frequency W Switch Z80 clock to K64F-generated alternate frequency
0x64 Set CPU Base Frequency W Switch Z80 clock back to MZ mainboard frequency
0x66 CPU Frequency Change W Set exact CPU frequency in Hz (32-bit value via shared mem)
0x68 Service Request (SVCREQ) W Trigger K64F service request; K64F polls and clears on completion
0x6B System Command Register W System-level commands (reset, mode changes)
0x6C CPU Configuration R/W Select active CPU core (Z80, T80, ZPU Evolution)
0x6D CPU Information R Read available CPU capabilities and soft-CPU presence
0x6E System Configuration R/W System feature flags
0x6F System Information R Board identification and hardware status
0xA8 Video Control R/W Machine model, column width, colour enable, PCG, VGA mode
0xA9 Video Graphics Mode R/W GRAM bank select, VRAM/GRAM output enable, blend operator
0xAA Colour Writer Red W 8-pixel red channel filter mask for indirect GRAM writes
0xAB Colour Writer Green W 8-pixel green channel filter mask for indirect GRAM writes
0xAC Colour Writer Blue W 8-pixel blue channel filter mask for indirect GRAM writes
0xAD Memory Page / Status R/W GRAM→CPU enable (W bit 0), CGROM→CPU enable (W bit 7);
H/V blanking status (R bits 5–6)
0xD0 Video Mode Parameter 0 R/W Video timing / mode parameter
0xD1 Video Mode Parameter 1 R/W Video timing / mode parameter
0xD2 Video Mode Parameter 2 R/W Video timing / mode parameter
0xD3 Palette Entry 0 W Palette colour data
0xD4 Palette Entry 1 W Palette colour data
0xD5 Palette Entry 2 W Palette colour data
0xD6 Palette Entry 3 W Palette colour data
0xD7 Palette Entry 4 W Palette colour data
0xF0 System Control (CPLD) W CPLD direct control register
0xF3 VGA Border Colour W Border colour for VGA output
0xF5 Palette Select W Select active palette entry for subsequent palette writes
?F6 GPU Parameters W Parameters for GPU primitive commands
?F7 GPU Command / Status R/W Issue GPU command (W); read GPU busy/done status (R)
──────────────────────────────────────────────────────────────────────────────
Registre de Configuration CPU — Port 0x6C
| Bits | Field | Description |
|---|---|---|
| 2:0 | CPU Select | 000 = Z80 (hard CPU on mainboard), 001 = T80 (soft Z80 in FPGA), 010 = ZPU Evolution (soft 32-bit CPU in FPGA), 011–111 = reserved |
| 7:3 | — | Reserved, write zero |
| Bits | Field | Description |
|---|---|---|
| 2:0 | CPUMODE_IS_SOFT_MASK / CPUMODE_IS_SOFT_AVAIL | Non-zero if one or more FPGA soft CPU cores are available in the current bitstream |
| 3 | CPUMODE_IS_T80 | Set if the T80 soft Z80 core is present |
| 4 | CPUMODE_IS_ZPU_EVO | Set if the ZPU Evolution core is present |
| 5 | CPUMODE_IS_EMU_MZ | Set if machine emulation (MZ model switching) is available |
| 7:6 | — | Reserved |
API de Service K64F
Le K64F expose une API de service pour les programmes Z80 fonctionnant sous TZFS. Le mecanisme est une region de memoire partagee dans le SRAM — le Z80 ecrit une commande et ses parametres dans la region, declenche le K64F et attend la fin du traitement. Aucun bus mastering n'est requis ; le Z80 et le K64F communiquent par des lectures et ecritures memoire ordinaires pendant que le K64F surveille le registre SVCREQ.
Mecanisme Requete/Reponse
Shared memory base: 0xED80 (in SRAM, visible to Z80 in TZMM_TZFS and related modes) Offset Symbol Description ────────────────────────────────────────────────────────────── 0x00 TZSVCCMD Service command code (1 byte, written by Z80) 0x01 TZSVCSTS Status / result code (1 byte, written by K64F on completion) 0x02 TZSVCREQ Request semaphore (set by Z80, cleared by K64F) 0x04 TZSVCP1 Parameter 1 (command-specific) ... ... Parameters 2–N (command-specific sizes and meanings) ────────────────────────────────────────────────────────────── Z80 procedure: 1. Write command code to TZSVCCMD (0xED80). 2. Write parameters to TZSVCP1 onwards. 3. OUT (0x68), A ; assert SVCREQ — wakes K64F 4. Poll TZSVCSTS until non-zero (K64F has completed the request). 5. Read result data from shared memory.Reference des Commandes de Service
Le tableau suivant liste les principales commandes de service. Les details des parametres sont documentes dans le code source du firmware TZFS.
| Command | Category | Description |
|---|---|---|
| READDIR | File I/O | Read directory entries from the SD card FAT32 volume |
| LOADFILE | File I/O | Load a named file from SD card into SRAM |
| SAVEFILE | File I/O | Save a region of SRAM as a named file on SD card |
| LOAD40ABIOS | BIOS Load | Load MZ-80A BIOS ROM image into SRAM |
| LOAD700BIOS40 | BIOS Load | Load MZ-700 40-column BIOS image into SRAM |
| LOAD2000IPL | BIOS Load | Load MZ-2000 IPL ROM image into SRAM (current version only) |
| ADDSDDRIVE | CP/M Disk | Register an SD card CP/M disk image |
| READSDDRIVE | CP/M Disk | Read a 128-byte CP/M sector from an SD card disk image |
| WRITESDDRIVE | CP/M Disk | Write a 128-byte CP/M sector to an SD card disk image |
| CPU_BASEFREQ | CPU Freq | Switch Z80 clock to MZ mainboard native frequency |
| CPU_ALTFREQ | CPU Freq | Switch Z80 clock to K64F-generated alternate frequency |
| CPU_CHGFREQ | CPU Freq | Set Z80 clock to a specific frequency in Hz |
| CPU_SETZ80 | CPU Switch | Activate the physical Z80 (release bus mastering) |
| CPU_SETT80 | CPU Switch | Load T80 firmware and activate the T80 soft Z80 in FPGA |
| CPU_SETZPUEVO | CPU Switch | Load ZPU Evolution firmware and activate the ZPU soft CPU |
| EMU_SETMZ80K | Emulation | Configure FPGA video and I/O to emulate MZ-80K |
| EMU_SETMZ80C | Emulation | Configure FPGA to emulate MZ-80C |
| EMU_SETMZ1200 | Emulation | Configure FPGA to emulate MZ-1200 |
| EMU_SETMZ80A | Emulation | Configure FPGA to emulate MZ-80A |
| EMU_SETMZ700 | Emulation | Configure FPGA to emulate MZ-700 |
| EMU_SETMZ800 | Emulation | Configure FPGA to emulate MZ-800 |
| EMU_SETMZ80B | Emulation | Configure FPGA to emulate MZ-80B |
| EMU_SETMZ2000 | Emulation | Configure FPGA to emulate MZ-2000 (current version only) |
| EMU_SETMZ2500 | Emulation | Configure FPGA to emulate MZ-2500 |
Commutation de CPU
Le tranZPUter peut fonctionner avec trois choix de CPU : le Z80 physique sur la carte mere MZ, le T80 soft Z80 implemente dans le FPGA, et la CPU logicielle 32 bits ZPU Evolution implementee dans le FPGA. La commutation de CPU est coordonnee entre le programme Z80, le K64F et le FPGA.
Procedure de Commutation
- Le programme Z80 emet une requete de service
CPU_SETT80ouCPU_SETZPUEVOvia l'API K64F (port 0x68). - Le K64F charge l'image firmware requise pour la CPU cible depuis la carte SD dans le SRAM de 512 Ko.
- Le K64F signale au FPGA d'activer le nouveau coeur CPU. Le CPLD active
/BUSRQvers le Z80. - Une fois que le Z80 libere le bus (
/BUSAKactive), la CPU logicielle du FPGA prend possession des bus d'adresse, de donnees et de controle et commence l'execution depuis le SRAM. - Le Z80 physique reste maintenu en etat de bus libere pendant toute la duree de l'execution de la CPU logicielle.
- Pour revenir a l'execution Z80, le programme en cours (ou le K64F) emet
CPU_SETZ80, ce qui amene le FPGA a liberer/BUSRQ. Le Z80 recupere ses bus et reprend. Le contenu du SRAM est preserve.
| Core | Port 0x6C bits 2:0 | Notes |
|---|---|---|
| Z80 (hard) | 000 | Physical Z80 on MZ mainboard. Default after reset. |
| T80 | 001 | Synthesised Z80-compatible core in FPGA fabric. Full Z80 instruction set. |
| ZPU Evolution | 010 | 32-bit stack-based soft CPU in FPGA. Executes ZPU binaries. |
| Reserved | 011–111 | Not currently assigned. |
Le registre d'information CPU (0x6D) doit etre lu avant de tenter un changement de CPU pour confirmer que le coeur souhaite est present dans le bitstream FPGA charge. Les drapeaux CPUMODE_IS_T80 (bit 3) et CPUMODE_IS_ZPU_EVO (bit 4) indiquent la disponibilite.
Module Video
Le FPGA implemente un controleur video complet prenant en charge tous les modes d'affichage Sharp MZ et ajoutant un framebuffer graphique avec sortie VGA. Les registres video sont mappes dans l'espace d'E/S du Z80 a 0xA8–0xAD (controle primaire), avec des registres supplementaires a 0xD0–0xD7 (palette et parametres de mode) et 0xF3, 0xF5 (bordure VGA et selection de palette).
Dans la version actuelle, le support du materiel video MZ-2000 est inclus aux cotes de tous les modeles MZ precedemment supportes.
Registres Video Primaires (0xA8–0xAD)
Port 0xA8 — Video Control Register
Bits 2:0 Machine model select
000 = MZ-80K
001 = MZ-80C
010 = MZ-1200
011 = MZ-80A
100 = MZ-700
101 = MZ-800
110 = MZ-80B
111 = MZ-2000 (current version only)
Bit 3 Column width: 0 = 40 columns, 1 = 80 columns
Bit 4 Colour enable: 0 = monochrome, 1 = colour
Bit 5 PCG (Programmable Character Generator) enable
Bits 7:6 VGA output mode:
00 = 640×480 @ 60 Hz
01 = 800×600 @ 60 Hz
10 = 1024×768 @ 60 Hz
11 = reserved
Port 0xA9 — Graphics Mode Register
Bits 1:0 GRAM bank select (selects which of the three R/G/B banks is the active write target)
Bit 2 VRAM output enable
Bit 3 GRAM output enable
Bits 5:4 Blend operator (OR, AND, XOR, REPLACE)
Bits 7:6 Reserved
Port 0xAA — Colour Writer Red Filter
Bits 7:0 8-pixel red channel mask for indirect (colour-writer) GRAM writes
Each bit corresponds to one pixel in a horizontal 8-pixel stripe
Port 0xAB — Colour Writer Green Filter
Bits 7:0 8-pixel green channel mask (same pixel layout as 0xAA)
Port 0xAC — Colour Writer Blue Filter
Bits 7:0 8-pixel blue channel mask (same pixel layout as 0xAA)
Port 0xAD — Memory Page / Status Register
Write:
Bit 0 GRAM→CPU enable: 1 = map GRAM into CPU address space for direct read/write
Bit 7 CGROM→CPU enable: 1 = map Character Generator ROM into CPU address space
Read:
Bit 5 Horizontal blanking status: 1 = currently in HBlank
Bit 6 Vertical blanking status: 1 = currently in VBlank
Framebuffer Graphique
Le FPGA implemente une couche graphique 640x200 (ou 320x200) en plus de l'affichage de caracteres. Le framebuffer est organise en trois banques independantes de 16 Ko — Rouge, Vert et Bleu — donnant des donnees de pixels sur 3 bits (8 couleurs). Chaque banque est de 1 bit par pixel a 640x200.
Les ecritures vers le GRAM peuvent etre effectuees de deux manieres :
Sortie VGA
- Mode direct — activer GRAM→CPU (port 0xAD bit 0), puis lire ou ecrire les adresses GRAM directement depuis le code Z80. Chaque banque est selectionnee individuellement via le port 0xA9 bits 1:0.
- Mode colour writer — ecrire une fois a l'adresse caractere VRAM ; le materiel colour writer met a jour simultanement les trois banques GRAM en utilisant les masques de 8 pixels ecrits aux ports 0xAA, 0xAB, 0xAC. Cela permet a une seule ecriture de peindre une cellule de caractere coloree.
Le FPGA met a l'echelle l'affichage natif Sharp MZ aux timings VGA standard. Trois resolutions de sortie sont selectionnables via le port 0xA8 bits 7:6. Sur le materiel v1.3, un affichage a double tampon est disponible dans tous les modes — l'affichage lit depuis un tampon pendant que le Z80 ou le GPU ecrit dans l'autre.
| VGA Mode (bits 7:6) | Output Resolution | Refresh |
|---|---|---|
| 00 | 640 × 480 | 60 Hz |
| 01 | 800 × 600 | 60 Hz |
| 10 | 1024 × 768 | 60 Hz |
| 11 | Reserved | — |
Un GPU simple est accessible via les ports d'E/S ?F6 (parametres) et ?F7 (commande/statut). Primitives supportees :
- Effacer VRAM — remplir l'affichage de caracteres avec un caractere et attribut specifies.
- Remplir Rectangle — remplir une region rectangulaire du GRAM avec une couleur.
- Effacer GRAM — mettre a zero les trois banques GRAM.
Specifications FPGA
Resume complet des capacites pour chaque variante FPGA utilisee sur le tranZPUter SW-700 :
| Feature | v1.2 (EP3C25) | v1.3 (EP4CE75 / EP4CE115) |
|---|---|---|
| Logic elements | 25K | 75K / 115K |
| On-chip BRAM | 76 KB | 360 KB / 480 KB |
| Package | 144-pin TQFP | 484-pin BGA |
| Configuration flash | EPCS16 | EPCS64 |
| Soft CPUs | T80, ZPU Evolution | T80, ZPU Evolution |
| MZ video models | MZ-80K/C/1200/80A/700/800/80B | + MZ-2000 (current) |
| VGA output | 640×480, 800×600, 1024×768 | 640×480, 800×600, 1024×768 |
| Double-buffered display | No | Yes (all modes) |
| GRAM banks | 3 × 16 KB (R/G/B) | 3 × 16 KB (R/G/B) |
| GPU | Clear VRAM, fill rect, clear GRAM | Clear VRAM, fill rect, clear GRAM |
Supported MZ video modes (current version FPGA): MZ-80K — 40×25 monochrome character display MZ-80C — 40×25 monochrome character display MZ-1200 — 40×25 monochrome character display MZ-80A — 40×25 monochrome character display MZ-700 — 40×25 character display with 8-colour attribute MZ-800 — 40×25 / 80×25 character; 320×200 / 640×200 graphics MZ-80B — 40×25 character display; 320×200 / 640×200 graphics MZ-2000 — 40×25 / 80×25 character; 320×200 / 640×200 graphics (current version only) Graphics framebuffer: Resolution: 640×200 or 320×200 pixels Colour depth: 3 bits per pixel (8 colours) Organisation: 3 independent 16 KB planes — Red, Green, Blue Total GRAM: 3 × 16 KB = 48 KB
Systeme de Build
Le firmware du tranZPUter SW-700 couvre trois composants, chacun avec sa propre chaine d'outils : bitstream FPGA (Quartus Prime), firmware K64F (ARM GCC) et logiciel Z80 (assembleur GLASS). Tout le developpement est effectue sous Linux.
La methode recommandee pour obtenir un build fonctionnel est le script d'installation automatise pour votre plateforme — voir Installation et build automatises juste en dessous. Il installe les chaines d'outils, construit les images Docker Quartus et recupere les sources pour vous. Le detail composant par composant qui suit explique ce que le build produit et comment executer les outils a la main.
Installation et build automatises (recommande)
La methode recommandee pour obtenir un build fonctionnel est le script d'installation automatise pour votre plateforme — voir Installation et build automatises juste en dessous. Il installe les chaines d'outils, construit les images Docker Quartus et recupere les sources pour vous. Le detail composant par composant qui suit explique ce que le build produit et comment executer les outils a la main.
Au lieu d'installer trois versions de Quartus, les chaines d'outils ARM GCC et Java et Docker a la main, executez le script d'installation fourni pour votre plateforme. Il installe les outils de base, installe Java (JRE) pour l'assembleur Z80 GLASS et Docker, construit trois images Docker Quartus reproductibles, clone le depot
--recurse-submodules (TZFS, zSoft/zOS, zpu), et propose d'executer le premier build (./build.sh -t all). Quartus lui-meme n'est pas installe sur l'hote — les builds CPLD et FPGA s'executent a l'interieur des images Docker. Chaque script est autonome.
| Script | Plateforme | Notes |
|---|---|---|
setup_tranZPUter.sh |
Linux / macOS | Installe les outils de base + Java (JRE) + Docker, construit les trois images Quartus, clone dans ~/tranZPUter, propose ./build.sh -t all. |
setup_tranZPUter_windows.cmd |
Windows 10 / 11 | Lanceur a double-clic — execute le .ps1 de maniere non interactive et journalise dans setup_tranZPUter_log.txt. |
setup_tranZPUter_windows_native.ps1 |
Windows 10 / 11 | winget installe Git for Windows + Docker Desktop, construit les images Quartus, clone dans %HOME%\tranZPUter, execute ./build.sh -t all via Git Bash. |
Linux / macOS :
chmod +x setup_tranZPUter.sh
./setup_tranZPUter.sh
Windows — double-cliquez sur setup_tranZPUter_windows.cmd, ou depuis PowerShell :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_tranZPUter_windows_native.ps1
L'installation construit trois images Docker Quartus gratuites (Web/Lite Edition, sans licence) :
tzpu-quartus:13.0.1 (CPLD MAX7000), tzpu-quartus:13.1 (Cyclone III, SW-700 v1.2) et tzpu-quartus:17.1 (Cyclone IV, SW-700 v1.3 / Fusion). Le build est ensuite pilote par build.sh, qui execute Quartus nativement si une version correspondante est trouvee, sinon a l'interieur de ces images (Java/GLASS s'execute toujours nativement). Les sorties (.pof, .sof, .jic boot flash, images ROM/TZFS/CP/M) sont regroupees sous ./build/output/.
./build.sh -t all # CPLD + FPGA + software (default: -V v1.3 -M all -D E115 -C emuMZ)
./build.sh -h # list all targets and options
Surcharges d’environnement utiles :
| Variable (alias) | Role |
|---|---|
TZPU_REPO_URL (tranZPUter_REPO_URL) |
URL du depot a cloner. Par defaut https://git.eaw.app/eaw/tranZPUter.git. |
TZPU_DIR (tranZPUter_DIR) |
Construire dans un checkout existant au lieu de cloner. |
TZPU_ASSUME_YES (tranZPUter_ASSUME_YES)=1 |
Non interactif ; accepte toutes les valeurs par defaut. |
TZPU_QUARTUS_CPLD_IMAGE (tranZPUter_CPLD_IMAGE) |
Remplace l’image CPLD (par defaut tzpu-quartus:13.0.1). |
TZPU_QUARTUS_C3_IMAGE (tranZPUter_FPGA_IMAGE) |
Remplace l’image Cyclone III (par defaut tzpu-quartus:13.1). |
TZPU_QUARTUS_C4_IMAGE |
Remplace l’image Cyclone IV (par defaut tzpu-quartus:17.1). |
Le detail de build manuel composant par composant ci-dessous reste entierement pris en charge pour les utilisateurs avances et les reconstructions partielles.
FPGA — Quartus Prime
Le RTL du FPGA est synthetise avec Altera/Intel Quartus Prime. La version requise depend du composant cible :
| Board Version | FPGA Device | Quartus Version |
|---|---|---|
| v1.2 | Cyclone III EP3C25 | 13.1 (last version with Cyclone III support) |
| v1.3 | Cyclone IV EP4CE75 / EP4CE115 | Current Quartus Prime Lite / Standard |
Des conteneurs Docker sont fournis dans le depot pour reproduire l'environnement de build exact pour chaque version, evitant l'installation de la chaine d'outils sur la machine de developpement. Demarrez le conteneur appropriate, puis utilisez le flux de build standard Quartus (
Firmware K64F — ARM GCC
quartus_sh --flow compile) ou ouvrez le projet dans l'interface graphique Quartus.
Apres la synthese, le fichier .sof (SRAM Object File) ou .rbf (Raw Binary File) genere est ecrit dans le flash EPCS a l'aide du Quartus Programmer, ou peut etre place sur la carte SD pour que le K64F le charge au demarrage.
Le firmware K64F (zOS) est construit avec la chaine d'outils ARM bare-metal GCC (
arm-none-eabi-gcc). Le point d'entree du build est buildhost.sh situe sous software.moved.to.TZFS/ :
cd software.moved.to.TZFS ./buildhost.sh
Le script compile le noyau zOS, le pilote FAT32 de la carte SD, la table de dispatch de service SVCREQ et tous les pilotes d'E/S de support, puis lie et produit un binaire adapte au flashage sur le K64F. Le flashage est effectue via le bootloader USB DFU du K64F (glisser-deposer sur le peripherique de stockage de masse qui apparait lorsque le K64F demarre en mode DFU).
Logiciel Z80 / TZFS — Assembleur GLASS
TZFS et les logiciels Z80 associes sont assembles avec l'assembleur GLASS Z80 (fourni en tant que
tools/glass.jar, necessite Java 8+). Les scripts de build dans l'arborescence software.moved.to.TZFS/ invoquent GLASS et empaquettent les binaires resultants sous forme d'images MZF pour la carte SD.
Sites de Reference
| Resource | Link |
|---|---|
| tranZPUter SW-700 project page | /sharpmz-upgrades-tranzputer-sw700/ |
| tranZPUter SW-700 User Manual | /sharpmz-upgrades-tranzputer-sw700-usermanual/ |
| tranZPUter SW-700 Developer’s Guide | /sharpmz-upgrades-tranzputer-sw700-developersguide/ |
| tranZPUter SW-700 Gallery | /sharpmz-upgrades-tranzputer-sw700-gallery/ |
| RFS Technical Guide | /sharpmz-upgrades-rfs-technicalguide/ |
| Sharp MZ-700 hardware reference | MZ-700 Technical Manual |
| Altera MAX 7000A datasheet | Intel/Altera MAX 7000A product page |
| NXP K64F Sub-Family Reference | NXP K64 Reference Manual |
| GLASS Z80 Assembler | Bundled in tools/glass.jar |
| Quartus Prime (Intel FPGA) | https://www.intel.com/content/www/us/en/collections/products/fpga/software/downloads.html |