Control Program/Monitor

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis CP/M)
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir CPM.
Control Program/Monitor
CP/M 2.2 sur un Sanco 8001. Contenu de la disquette système.
CP/M 2.2 sur un Sanco 8001. Contenu de la disquette système.

Entreprise /
Développeur
Digital Research/Gary Kildall
Site web http://www.digitalresearch.biz/CPM.HTM

CP/M, sigle de Control Program/Monitor ou /Microcomputer, est un système d'exploitation créé en 1974 par Gary Kildall, fondateur de Digital Research.

Il est utilisé notamment sur les Amstrad CPC et Amstrad PCW, Commodore 128, TRS-80, l'Osborne 1, BBC Micro, le ZX Spectrum. Il fut utilisé sur PC il était notamment livré en standard avec les Amstrad PC-1512 en plus du MS-DOS et de GEM.

Pour l'Apple II, Microsoft a créé en 1980 la carte d'extension Z-80 SoftCard qui permettait l'usage du système d'exploitation de Digital Research.

Les premières versions de MS-DOS se sont largement inspirées de CP/M.

La mémoire d'un ordinateur sous CP/M était divisé en quatre parties[modifier | modifier le code]

  • Le BIOS (basic input output system for serial peripheral)

Il gérait les périphériques, disquettes, imprimantes moniteur, etc. Habituellement, le BIOS occupe la partie « haute » de la mémoire.

  • Le BDOS (basic disk operating system primitives)

Il contenait le système d'exploitation. Habituellement, le BDOS se trouve sous le BIOS.

  • Le CCP (console command processor)

Habituellement, le CCP se trouve sous le BDOS. Cette partie du CP/M correspond à l'interface utilisateur.

  • Le TPA (transient program area)

Cette partie de la mémoire débute en 100 (adresse hexadécimale). Elle est destinée aux programmes des utilisateurs.

Les différents types de fichiers[modifier | modifier le code]

Ce système d'exploitation, enregistre les fichiers sur disquettes suivant une organisation logique spécifique (qui n'a pas été reprise par MS-DOS), et peut remplir les disquettes jusqu'à ce qu'elles soient complètement remplies.

CP/M peut aussi gérer des disques durs (en réalité, comme le BIOS est « ouvert » et décrit clairement dans la documentation que Digital Research fournissait avec certains de ses logiciels, il est donc possible d'adapter tout système particulier CP/M à toute mémoire de masse disponible - et aux périphériques dont on dispose). Certains ordinateurs tournant sous MP/M étaient vendus, à l'origine, avec des disques durs (l'Altos en est un exemple).

Chaque fichier a un nom et une extension (plus précisément, la syntaxe est : <nom du fichier (8 caractères maximum)>.<extension (3 caractères maximum)>).

Parmi les extensions les plus habituelles, on trouve :

  • ASM : fichier source assembleur
  • PRN : fichier listing assembleur
  • HEX : Langage machine présenté sous la forme d'une suite d'octets en hexadécimal au « format Intel »
  • BAS : fichier source BASIC
  • INT : fichier basic intermédiaire
  • COM : fichier de commandes, fichier d'image mémoire (commençant à l'adresse 100 en hexadécimal) - sous CP/M les fichiers « exécutables » sont toujours des « .COM »
  • SUB : fichier avec une suite de commandes – à traiter en mode "Batch" par la commande "SUBMIT"
  • BAK : fichier de sauvegarde - il est souvent utilisé par les programmes de traitement de texte
  • $$$ : fichier temporaire, utilisé, 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, puis qu'il y a un maximum de 8 caractères utilisables à 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'éditeurs utilisent pour attirer l'attention de l'utilisateur sur des aspects très importants de leurs logiciels ... ce sont donc des fichiers à lire avant d'utiliser le logiciel en question. Pour lire le contenu d'un tel fichier on peut, en général utiliser la commande :

TYPE READ.ME

Les invites de commandes des disquettes sont A> pour le lecteur A et B> pour le lecteur B. Comme sous MS-DOS, il faut taper la lettre du disque auquel on veut accéder, suivie de deux points.

Différentes commandes de CP/M[modifier | modifier le code]

Les commandes de CP/M peuvent être « 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 différence 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 hexadécimal - l'instruction RETurn) qui fait un retour au Système (ce qui est une sortie « normale » pour un programme CP/M). Par contre, il doit être sauvegardé dans un fichier « exécutable » (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 même nom qui portaient l'extension .COM ou .PRL (uniquement dans le cas de MP/M). Pour information, le MP/M était relativement semblable au CP/M mais était multi-utilisateurs.

  • ERA pour effacer un ou plusieurs fichiers : ERA *.* efface tous les fichiers (ERA est une commande interne de CP/M ; ERA.PRL)
  • DIR pour avoir la liste des fichiers d'une disquette : DIR *.* pour avoir la liste complète des fichiers (est une commande interne de CP/M ou DIR.PRL pour le MP/M).
  • PIP "the Peripheral Interchange Program" qui permettait de copier un ou plusieurs fichiers à la fois (PIP.COM) ou même de les concaténer...
  • ABORT utilisé pour quitter un programme en cours d'exécution (nom du programme en argument ou le numéro de la console sur lequel le programme tourne (ABORT.COM OU ABORD.PRL)
  • ASM assemble un fichier ASM (ASM.COM) (ASM a été fourni par Digital Research, mais beaucoup d'autres assembleurs et macro-assembleurs ont été écrits pour CP/M y compris par Digital Research)
  • ATTACH attache la console à un programme détaché (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 hexadécimal
  • ED pour éditer un fichier (ED.COM ED.PRL)
  • ERAQ pour effacer un fichier (ERAQ.COM ERAQ.PRL)
  • GENHEX pour transformer un programme .COM en hexadécimal .HEX (GENHEX.COM GENHEX.PRL)
  • GEMOD pour générer un fichier PRL avec un fichier HEX (GEMOD.COM ou GEMOD.PRL)
  • GENESYS qui permettait de créer un système MP/M sur un système CP/M (GENESYS.COM)
  • LOAD pour charger un fichier hexadécimal .HEX ou le transformer en exécutable .COM ( LOAD.COM )
  • MOVCPM pour reconfigurer le CP/M pour ajuster la mémoire (MOVCPM.COM)
  • MPMLDR pour charger, relouer et exécuter le système MP/M (MPMLDR.COM)
  • MPMSTAT pour afficher les statuts du MP/M (processus, mémoire allouée) (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 périphériques logiques et les périphériques physiques
  • SUBMIT exécute le traitement par lots d'une commande (SUBMIT.COM SUBMIT.PRL)
  • PRLCOM pour transformer un exécutable PRL en exécutable .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 mémoire dans un fichier (SAVE est une commande interne en CP/M)
  • SCHED planifier l'exécution d'un programme à une heure ou une date ultérieure (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 écrits par DRI (c'est-à-dire, Digital Research) peuvent se trouver sur Internet (voir, par exemple, DRIPAK.zip).

CP/M au XXIe siècle[modifier | modifier le code]

Pendant de nombreuses années, CP/M a été utilisé comme système d'exploitation pour des microprocesseurs Intel 8080 ou Zilog Z80.

Depuis, Zilog a commercialisé des processeurs avec des possibilités d'adressage très étendues par rapport aux processeurs 8 bits traditionnels. D'un autre côté, les capacités des mémoires (circuits intégrés) que l'on trouve sur le marché, que ce soient les RAM ou les ROM (ou les PROM) en ce début du XXIe siècle sont très importantes et sont donc comparables aux capacités que l'on pouvait trouver sur les premières disquettes souples.

Ces deux facteurs donnent leur chance à de nouvelles architectures pour des systèmes tournant sous CP/M.

Parmi les nouvelles architectures les plus prometteuses, on peut citer :

– celles utilisant des circuits intégrés (RAM, ROM ou PROM) à la place des disquettes - ce qui permet d'obtenir des machines très simples et très fiables ;
– celles utilisant des « cartes mémoire photo » (comme la carte Compact Flash) à la place des disques durs - ce qui permet de disposer de très grandes capacités de stockage d'informations ; en réalité, la limite de la capacité gérable sous CP/M, dans ces architectures, provient du fait que les tables d'allocation des « secteurs du disque » (en réalité des zones de la « carte mémoire photo ») font typiquement partie du BIOS qui occupe, lui-même, une partie des 64 k de mémoire disponibles pour l'ensemble de la machine CP/M.

Par ailleurs, des compilateurs CP/M ont été écrits pour de nombreux langages, par exemple :

Ada ;
Algol ;
APL (interpréteur) ;
BASIC (compilateurs et interpréteurs) ;
C ;
Cobol ;
Fortran ;
LISP ;
PASCAL ;
PL/I ;
PROLOG ;
–... et bien d'autres.

Des langages orientés vers l'« intelligence artificielle », comme muMATH (qui est capable de résoudre des équations formelles) ou muSIMP (voir muMATH) peuvent aussi « tourner » sous CP/M.

Le cas du langage PL/M est un peu particulier, puisque une partie du logiciel correspondant au système d'exploitation CP/M – et à ses utilitaires – a été écrite en PL/M, pour un compilateur qui tournait sous ISIS II. Il est possible, toutefois, d'émuler ISIS II sous CP/M.

Parmi les autres logiciels disponibles, il y avait aussi dBase II, une base de données relationnelle, très interactive.

CP/M supporte aussi de nombreux traitements de texte comme, par exemple, WordStar, avec, le cas échéant, leurs systèmes de vérification orthographique, des tableurs comme, par exemple, SuperCalc ou des logiciels combinant ces deux fonctionnalités.

Émulation de CP/M[modifier | modifier le code]

Ceux qui n'ont pas la chance de pouvoir disposer d'un ordinateur tournant sous CP/M natif peuvent toujours bénéficier des services d'un émulateur CP/M. Plusieurs de ces émulateurs tournent sous MS-DOS.

Ceux qui n'ont pas la chance de pouvoir disposer d'un ordinateur qui tourne sous MS-DOS natif ou qui puisse tourner sous MS-DOS peuvent faire appel à un émulateur MS-DOS. Il en existe plusieurs, développés en particulier dans le cadre de projets dans l'esprit "Open Source" : voir GNU et GNU GPL.

Avec des micro-ordinateurs « du commerce » tournant sous Windows 7 et avec deux couches d'émulation superposées, les performances obtenues pour des programmes « scientifiques » tournant sous CP/M sont comparables à celles obtenues sur une machine native CP/M, bien qu'il puisse y avoir plusieurs ordres de grandeur entre les fréquences des horloges des processeurs en question.

Les fichiers générés par des « programmes CP/M » tournant sous émulateur sont naturellement « compatibles » avec le système d'exploitation sous lequel tourne l'émulateur. De ce fait, il est possible, par exemple, de faire générer des fichiers au format .bmp "par un programme qui tourne sous CP/M" et de les visualiser ensuite par un outil habituel du monde Windows, comme Paint.

Un petit détail est, toutefois, à garder en mémoire :

– la taille des fichiers CP/M est un multiple de la taille des « secteurs » de CP/M, c'est-à-dire un multiple de 128 octets ;
– la taille des fichiers MS-DOS est définie à l'octet près ;
– de ce fait, les fichiers CP/M se terminent par un ou plusieurs CTL-Z (1A en hexadécimal) ;
– la spécification des fichiers NTFS ne semble pas avoir été publiée à ce jour.

Donc, certains programmes CP/M peuvent s'attendre à voir des 1A (hexadécimal) en fin de fichier ... Petit détail qui réserve parfois des surprises ... et des belles opportunités de travailler avec des programmes comme DEBUG (sous MS-DOS) ou DDT (sous CP/M) qui permettent de travailler au niveau de l'octet.

Malheureusement, certains émulateurs MS-DOS et DEBUG ne s'entendent pas bien ... et les émulateurs CP/M ont des problèmes avec des fichiers dont la longueur se rapproche des 64 k octets ... le taille maximale de la mémoire d'un système CP/M.

Intrinsèquement la structure et le fonctionnement des systèmes de gestion de fichiers par CP/M et MS-DOS sont différents, mais des programmes comme Hyperterminal et Kermit pour les univers Windows ou MS-DOS d'une part et Kermit pour les univers CP/M d'autre part, ont des modes de fonctionnement (protocoles) compatibles. Il est donc facile d'échanger des fichiers entre ces deux univers.

La conséquence est qu'il est possible de créer des fichiers par une application « temps réel » sous CP/M (qui, certes, n'est pas un système conçu pour faire du « temps réel », mais dont la fiabilité et la répétitivité se prêtent bien au temps réel) et de continuer les traitements sous MS-DOS ... ou vice-versa.

Bibliographie[modifier | modifier le code]

  • Pour plus d'information sur les commandes ou le CP/M en général, on peut se reporter à l'ouvrage The CP/M Handbook (with MP/M) de David E. Cortesi dont une version numérisée est disponible sur Internet version en ligne.
  • A Programmer Notebook - Utilities for CP/M-80 version en ligne.

Lien externe[modifier | modifier le code]

Sur les autres projets Wikimedia :