CP/M
,
sigle
de
Control Program/Monitor ou /Microcomputer
, est un
systeme d'exploitation
cree en 1974 par
Gary Kildall
, fondateur de
Digital Research
.
Il est utilise notamment sur les
Amstrad CPC
et
Amstrad PCW
,
Commodore 128
,
TRS-80
, l'
Osborne 1
,
BBC Micro
, le
ZX Spectrum
. Il fut utilise sur PC, notamment livre en standard avec les
Amstrad PC-1512
en plus du
MS-DOS
et de
GEM
.
Pour l'
Apple II
,
Microsoft
a cree en
1980
la carte d'extension
Z-80 SoftCard
qui permettait l'usage du systeme d'exploitation de Digital Research.
CP/M est largement inspire de
TOPS-10
des systemes
PDP-10
[
1
]
, alors utilise par Kildall comme environnement de developpement, et qui outre CP/M inspirera egalement les systeme OS-8 des PDP/8, RT11 des PDP/11, ainsi que les premieres versions de
MS-DOS
. Les principales commandes telles que DIR ou TYPE, ou encore les extensions telles que .EXE ou .TXT, sont une illustration de la paternite commune de ces systemes.
La memoire d'un ordinateur sous CP/M est divisee en quatre parties :
- Le BIOS
(basic input output system for serial peripheral)
: il gere les peripheriques, disquettes, imprimantes moniteur, etc. Habituellement, le BIOS occupe la partie ≪ haute ≫ de la memoire ;
- Le BDOS
(basic disk operating system primitives)
: il contient le systeme d'exploitation. Habituellement, le BDOS se trouve sous le BIOS ;
- Le CCP
(console command processor)
: cette partie du CP/M correspond a l'interface utilisateur. Habituellement, le CCP se trouve sous le BDOS ;
- Le TPA
(transient program area)
: cette partie de la memoire debute a l'adresse hexadecimale 100. Elle est destinee aux programmes des utilisateurs.
Sous CP/M, les peripheriques sont geres par le BIOS (adaptable par l'utilisateur), sous le controle du BDOS.
Comme le BIOS peut s'adapter aux differentes besoins, il est possible d'utiliser des lecteurs de disquettes et/ou des disques durs. Les disques sont designes par une lettre majuscule (A B C ...) avec un maximum de 15.
Comme, de nos jours, la capacite des memoires RAM ou PROM est considerable, il est possible aussi de disposer de disques virtuels en RAM et/ou en PROM.
Les fichiers en PROM ne risquent pas d'etre modifies ou detruits par des virus.
L'utilitaire STAT permet d'assigner differents peripheriques physiques, par exemple l'imprimante, aux peripheriques logiques.
Ce
systeme d'exploitation
, enregistre les
fichiers
sur
disquettes
suivant une organisation logique specifique (qui n'a pas ete reprise par MS-DOS), et peut remplir les disquettes jusqu'a ce qu'elles soient completement remplies.
CP/M peut aussi gerer des disques durs (en realite, comme le BIOS est ≪ ouvert ≫ et decrit clairement dans la documentation que
Digital Research
fournissait avec certains de ses logiciels, il est donc possible d'adapter tout systeme particulier CP/M a toute
memoire de masse
disponible - et aux peripheriques dont on dispose). Certains ordinateurs tournant sous CP/M etaient vendus, a l'origine, avec des disques durs (l'Altos 8000 en est un exemple).
Il existe des implementations pour le micro-processeur Z80 qui ont un systeme de disques forme de
carte SD
ou de cles USB (au format FAT16).
Chaque fichier a un nom et une
extension
(plus precisement, la syntaxe est : <nom du fichier (8 caracteres maximum)>.<extension (3 caracteres maximum)>).
Parmi les
extensions
les plus habituelles, on trouve :
- ASM : fichier
source
assembleur
;
- PRN : fichier
listing
assembleur ;
- HEX :
Langage machine
presente sous la forme d'une suite d'octets en hexadecimal au
format Intel
;
- BAS : fichier source
BASIC
;
- INT : fichier de code intermediaire
BASIC
;
- COM : fichier de commandes, fichier d'image memoire (commencant a l'adresse 100 en hexadecimal) - sous CP/M les fichiers ≪ executables ≫ sont toujours des ≪ .COM ≫ ;
- SUB : fichier avec une suite de commandes ? a traiter en mode ≪
Batch
≫ par la commande ≪ SUBMIT ≫ ;
- BAK : fichier de
sauvegarde
- il est souvent utilise par les programmes de traitement de texte ;
- $$$ :
fichier temporaire
, utilise, par exemple par ≪ SUBMIT ≫ ;
- LBR
: fichier archive.
Exemples de noms de fichiers : STAT.COM ; dans le cas de ≪ nomdufichier.ASM ≫, le nom du fichier est trop long, puisqu'il y a un maximum de 8 caracteres utilisables a cet effet ; donc il faudrait, par exemple, nommer ce fichier ≪ fichier.ASM ≫ ou ≪ fichier1.ASM ≫.
≪ READ.ME ≫ est un nom de fichier que beaucoup d'editeurs utilisent (et pas uniquement "dans le monde" CP/M) pour attirer l'attention de l'utilisateur sur des aspects tres importants de leurs logiciels... ce sont donc des fichiers a lire avant d'utiliser le logiciel en question. Pour lire le contenu d'un tel fichier on peut, en general utiliser la commande :
TYPE READ.ME
Les
invites de commandes
des disquettes sont A> pour le lecteur A et B> pour le lecteur B. Si un fichier ne se trouve pas sur le disque par defaut, il faut taper la lettre du disque auquel on veut acceder, suivie de deux points. Cette convention a ete reprise par
MS-DOS
.
Les commandes de CP/M peuvent etre ≪ internes ≫ ou ≪ externes ≫ (comme ce fut, par la suite, le cas avec MS-DOS). Sous CP/M, pour l'utilisateur, il n'y a pas de difference entre lancer une commande ≪ interne ≫ (par exemple DIR as*.*), ≪ externe ≫ (par exemple STAT as*.*) ou un programme (par exemple LINK).
Sous CP/M, le programme ≪ correct ≫ le plus court n'a besoin que d'un octet (C9 en hexadecimal - l'instruction RETurn) qui fait un retour au Systeme (ce qui est une sortie ≪ normale ≫ pour un programme CP/M). Par contre, il doit etre sauvegarde dans un fichier ≪ executable ≫ (donc un ≪ .com ≫) dont la taille minimum est un secteur (donc 128 octets minimum).
Les commandes externes du CP/M ou MP/M appelaient des programmes du meme nom qui portaient l'extension .COM ou .PRL (uniquement dans le cas de MP/M). Le MP/M etait relativement semblable au CP/M mais etait multi-utilisateurs.
- ERA pour effacer un ou plusieurs
fichiers
: ERA *.* efface tous les fichiers (ERA est une commande interne de CP/M ; ERA.PRL pour le MP/M)
- DIR pour avoir la liste des fichiers d'une
disquette
: DIR *.* pour avoir la liste complete des fichiers (est une commande interne de CP/M ; DIR.PRL pour le MP/M).
- PIP ≪ the Peripheral Interchange Program ≫ pour copier un ou plusieurs fichiers a la fois (PIP.COM) ou meme les concatener...
- ABORT utilise pour quitter un
programme
en cours d'execution (nom du programme en
argument
ou le numero de la console sur lequel le programme tourne (ABORT.COM OU ABORT.PRL)
- ASM assemble un fichier ASM (ASM.COM) (ASM a ete fourni par Digital Research, mais beaucoup d'autres assembleurs et macro-assembleurs ont ete ecrits pour CP/M y compris par Digital Research)
- ATTACH attache la console a un programme detache (ATTACH.PRL)
- DSKRESET pour changer un disque en
multi-utilisateur
(DSKRESET.COM DSKRESET.PRL)
- DUMP suivi d'un nom de fichier pour afficher le contenu du fichier en
hexadecimal
- ED pour editer un fichier (ED.COM ED.PRL)
- ERAQ pour effacer un fichier (ERAQ.COM ERAQ.PRL)
- GENHEX pour transformer un programme .COM en hexadecimal .HEX (GENHEX.COM GENHEX.PRL)
- GEMOD pour generer un fichier PRL avec un fichier HEX (GEMOD.COM ou GEMOD.PRL)
- GENESYS qui permettait de creer un systeme MP/M sur un systeme CP/M (GENESYS.COM)
- LOAD pour charger un fichier hexadecimal .HEX ou le transformer en executable .COM ( LOAD.COM )
- MOVCPM pour reconfigurer le CP/M pour ajuster la memoire (MOVCPM.COM)
- MPMLDR pour charger, relouer et executer le systeme MP/M (MPMLDR.COM)
- MPMSTAT pour afficher les statuts du MP/M (
processus
, memoire allouee) (MPMSTAT.PRL)
- STAT pour fournir les
statistiques
des fichiers et
disques
ou disquettes (STAT.COM STAT.PRL) ; STAT permet aussi de modifier la relation entre les peripheriques logiques et les peripheriques physiques
- SUBMIT execute le
traitement par lots
d'une commande (SUBMIT.COM SUBMIT.PRL)
- PRLCOM pour transformer un executable PRL en executable .COM (PRLCOM.COM PRLCOM.PRL)
- REN pour renommer un fichier (REN est une commande interne en CP/M ; REN.PRL en MP/M)
- SAVE pour sauver le contenu de la memoire dans un fichier (SAVE est une commande interne en CP/M)
- SCHED planifier l'execution d'un programme a une heure ou une date ulterieure (SCHED.PRL)
- TYPE pour afficher le contenu d'un fichier (TYPE est une commande interne en CP/M ; MP/M TYPE.PRL)
- USER pour changer ou afficher la zone de travail d'un utilisateur (USER est une commande interne en CP/M ; USER.PRL)
Sous CP/M, l'utilisateur peut programmer en utilisant directement le code machine, un assembleur ou un langage de programmation comme le
BASIC
.
Les sources des logiciels ecrits par DRI (c'est-a-dire Digital Research) peuvent se trouver sur Internet (voir, par exemple, DRIPAK.zip).
CP/M supporte de nombreux traitements de texte comme
WordStar
, avec, le cas echeant, leurs systemes de verification orthographique, des
tableurs
comme SuperCalc ou des logiciels combinant ces deux fonctionnalites.
Parmi les autres logiciels disponibles (que l'on peut toujours trouver dans des sites dedies et telecharger gratuitement via Internet), il y a aussi
dBase
II, une
base de donnees relationnelle
, tres interactive.
Par ailleurs, des compilateurs CP/M ont ete ecrits pour de nombreux langages, par exemple :
- ?
Ada
;
- ?
Algol
;
- ?
APL
(interpreteur) ;
- ?
BASIC
(compilateurs et interpreteurs) ;
- ?
C
;
- ?
Cobol
;
- ?
Fortran
;
- ?
LISP
;
- ?
PASCAL
;
- ?
PL/I
;
- ?
PROLOG
;
- ? et bien d'autres.
Des langages orientes vers l'≪ intelligence artificielle ≫, comme
muMATH
(qui est capable de resoudre des equations formelles) ou muSIMP (voir
muMATH
) peuvent aussi ≪ tourner ≫ sous CP/M.
Le cas du langage
PL/M
est un peu particulier, puisqu'une partie du logiciel correspondant au systeme d'exploitation CP/M ? et a ses utilitaires ? a ete ecrite en
PL/M
, pour un compilateur qui tournait sous ISIS II. Il est possible, toutefois, d'emuler ISIS II sous CP/M. A son tour, CP/M peut etre emule sous
MS-DOS
.
Le logiciel
KERMIT
developpe par l'Universite Columbia, de New York, permet d'echanger des fichiers entre machines tournant sous des systemes d'exploitation differents (
VMS
,
Unix
,
Multics
,
MS-DOS
et successeurs). Il en existe de multiples versions (gratuites) pour des machines CP/M et, en particulier, une version generique que l'on peut adapter a sa propre machine. Il en resulte qu'il est possible de transferer puis de stocker dans une machine CP/M (peu exposee a des virus) des fichiers importants.
- Pour plus d'information sur les commandes ou le CP/M en general, on peut se reporter a l'ouvrage
The CP/M Handbook (with MP/M)
de David E. Cortesi dont une version numerisee est disponible sur Internet
version en ligne
.
- A Programmer Notebook - Utilities for CP/M-80
version en ligne
.
Sur les autres projets Wikimedia :