CP/M v2.23
Apercu
Linux et Windows sont aujourd'hui les systemes d'exploitation courants, mais il y a des annees, tout a commence lorsque Digital Research a cree le Control Program/Monitor (CP/M). CP/M etait l'un des premiers veritables systemes d'exploitation pour micro-ordinateurs, offrant des moyens communs pour executer des applications sur divers materiels. J'ai developpe la carte d'extension 80 colonnes couleur et le Rom Filing System dans le but principal de realiser CP/M sur le MZ80A.
J'ai finalement decide d'ecrire ma propre version ROM du CBIOS et de la combiner avec le BDOS+CCP de CP/M v2.23.
J'ai finalement decide d'ecrire ma propre version ROM du CBIOS et de la combiner avec le BDOS+CCP de CP/M v2.23.
Processus de demarrage CP/M
Le demarrage de CP/M se fait en deux phases :
- Lecture d’un secteur de boot inverse avec le logiciel de controle AFI, verification du code 0x02 + “IPLPRO” a 0x0000
- Chargement du CCP, BDOS et CBIOS a partir de 0x9C00
CBIOS
CP/M est compose de 3 modules distincts : CCP, BDOS et CBIOS. Le CBIOS est personnalise selon le materiel sous-jacent.
| Methode API | Description |
|---|---|
| BOOT | Demarrage a froid, initialiser tout le materiel. |
| WBOOT | Demarrage a chaud, recharger CCP+BDOS. |
| CONST | Statut de la console. |
| CONIN | Entree console. |
| CONOUT | Sortie console. |
| HOME | Deplacer la tete du disque actif a la piste 0. |
| SELDSK | Selectionner un disque. |
| READ | Lire un secteur. |
| WRITE | Ecrire un secteur. |
| SECTRN | Traduction de secteur (logique vers physique). |
| ROM | Adresse | Description |
|---|---|---|
| 4K MROM | 0xC000 - 0xCFFF | CBIOS avec API CP/M, routines d’initialisation, controleur ROM Disk. |
| 2K Paged ROM | Bank 8 | Son, RTC, clavier. |
| 2K Paged ROM | Bank 9 | E/S ecran et parseur terminal ANSI. |
| 2K Paged ROM | Bank 10 | Fonctionnalite controleur carte SD. |
| 2K Paged ROM | Bank 11 | Fonctionnalite controleur disquette. |
*Fonctionnalites*
- Horloge temps reel avec granularite de 50ms
- Clavier pilote par interruption avec tampon et repetition automatique
- Fonctionnalite de terminal ANSI
- Lecteurs de disquette retargetables (1.44M, 720K, 320K)
- Disques durs SD Card de 16Mo retargetables
- Sortie vers le moniteur via SHIFT+GRAPH+BREAK
Installation et compilation automatisees (recommande)
CP/M pour le tranZPUter est assemble et empaquete dans le cadre de la compilation TZFS normale ; la maniere la plus simple de produire le CBIOS, l'application MZF CP/M et les images de disque CP/M est donc le script d'installation automatise correspondant a votre plateforme. Chaque script est autonome -- copiez le seul fichier correspondant a votre systeme d'exploitation et executez-le. Il installe les prerequis, clone le depot TZFS, telecharge le paquet de contenu d'environ 110 Mo (
TZFS_Files.zip, qui inclut le logiciel CP/M) et peut lancer la compilation pour vous, sans connaissance approfondie de la chaine d'outils. Les etapes manuelles, outil par outil, plus bas sont destinees aux utilisateurs avances et aux recompilations partielles.
| Script | Plateforme | Notes |
|---|---|---|
setup_TZFS.sh |
macOS / Linux / WSL | Installe un JRE Java (assembleur GLASS), une chaine d’outils C + make (pour compiler le sous-module cpmtools integre), perl, git, et (sous macOS) GNU coreutils et bash 4 via un fichier tzfs_env.sh genere. |
setup_TZFS_windows.ps1 |
Windows 10 / 11 – Git Bash natif, sans WSL | Utilise winget pour installer Git for Windows et un JRE Temurin 17, puis compile via Git Bash. Aucun compilateur C requis – un tools\cpmcp.exe precompile est fourni. |
macOS / Linux / WSL – setup_TZFS.sh
chmod +x setup_TZFS.sh
./setup_TZFS.sh
Windows 10 / 11 (Git Bash natif) – setup_TZFS_windows.ps1, depuis une invite PowerShell :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_TZFS_windows.ps1
Les scripts respectent les variables d’environnement TZFS_REPO_URL (par defaut https://git.eaw.app/eaw/TZFS.git) et TZFS_FILES_URL (emplacement du paquet de contenu) pour remplacer les invites interactives. La compilation ecrit la ROM TZFS, le CBIOS/MZF CP/M et les images de disque CP/M dans le repertoire roms/ ; copiez-les sur une carte SD formatee en FAT32 avec tools/copytosd.sh. Pour la procedure pas a pas complete, consultez le Guide technique TZFS – Systeme de compilation.
Compilation de CPM
cd <software>
tools/assemble_cpm.sh
Formats de disquettes
diskdef MZ80A-A
seclen 256
tracks 40
sectrk 32
blocksize 2048
maxdir 64
boottrk 1
os 2.2
end
diskdef MZ80A-1440
seclen 512
tracks 80
sectrk 36
blocksize 2048
maxdir 128
boottrk 0
os 2.2
end
diskdef MZ80A-SDC16M
seclen 512
tracks 1024
sectrk 32
blocksize 8192
maxdir 512
boottrk 0
os 2.2
end
Extraire les disques CP/M MZ80A
Le Sharp MZ-80A stocke les donnees en format inverse -- chaque octet est le complement bit a bit. Les donnees brutes doivent etre inversees avant que CPMTools puisse les lire.
samdisk copy <MZ80A DISK NAME>.DSK <MZ80A DISK NAME>.RAW --cyls=40 --head=2 --sectors=16 --size=256
python3 -c "import sys; sys.stdout.buffer.write(bytes(~b & 0xFF for b in open('<MZ80A DISK NAME>.RAW','rb').read()))" > <MZ80A DISK NAME>_normal.RAW
cpmls -f MZ80A-A <MZ80A DISK NAME>_normal.RAW
Guide du developpeur
Un Guide du developpeur CP/M complet est disponible pour les developpeurs.
Licences
Ce design est sous licence GNU Public Licence v3.