APPLICATIONS ★ CRÉER SES PROPRES PROGRAMMES SOUS CP/M (MICROSTRAD) ★

Créer ses propres programmes sous CP/M (Microstrad)
Les systèmes d'exploitation de disquettes (Sed) des Amstrad sont au nombre de trois : Amsdos, CP/M 2.2 et CP/M 3. Nous étudions ici quelques éléments du CP/M 2.2 qui peut être utilisé sur tous les modèles de CPC.

Grâce au CP/M 2.2, on dispose d'un jeu de commandes internes, d'un jeu de commandes externes et d'un accès à une banque immense de logiciels (pour autant que les fichiers CP/M subissent une adaptation au format des disquettes Amstrad).

Les commandes internes ou résidentes ne figurent pas sur les disquettes. Ce sont :

  • DIR qui affiche le catalogue des disquettes ;
  • ERA qui efface un fichier ;
  • REN qui renomme un fichier ;
  • SAVE qui sauvegarde un programme sur la disquette ;
  • TYPE qui liste un fichier texte à l'écran ;
  • USER qui change la partition sur un disque.

La documentation Amstrad sur le CP/M s'avère succincte, quoique suffisante pour la plupart des commandes. Par exemple, save est déclarée réservée aux spécialistes (!) et user est totalement passée sous silence.

Les commandes externes sont sur disquette et doivent être suivies du suffixe .com pour être exécutées par CP/M. Digital Research, le créateur de CP/M, livre plusieurs commandes sur disquette (voir la liste des fichiers de la disquette CP/M 2.2) :

  • ASM , l'assembleur ;
  • DDT , le débogueur, utilitaire de mise au point des programmes ;
  • UMP pour lister un fichier à l'écran ;
  • ED , l'éditeur de texte, ligne par ligne ;
  • LOAD pour convertir un fichier .hex en programme commande ;
  • MOVCPM pour changer la taille d'un CP/M ;
  • PIP pour transférer les fichiers d'une source vers une destination, disque ou entrées/sorties;
  • STAT pour des informations sur les fichiers ;
  • SUBMIT pour exécuter des fichiers par lot ;
  • SYSGEN pour créer des disquettes système ;
  • XSUB pour améliorer l'efficacité de submit.

Amstrad a complété cette liste en y ajoutant :

  • AMSDOS qui passe la main à l'Amsdos ;
  • BOOTGEN qui génère des disquettes système ;
  • CHKDISC qui compare deux disquettes dans un système à deux lecteurs ;
  • CLOAD qui charge un programme en cassette sur disquette ;
  • COPYDISC qui copie le contenu d'une disquette sur une autre (dans un système à deux unités de disquette) ;
  • CSAVE qui charge un programme sur disquette en cassette;
  • DISCCHK qui copie le contenu d'une disquette sur une autre (dans un système à une unité de disquette) ;
  • FILECOPY qui copie un fichier d'une disquette sur l'autre (dans un système à une unité de disquette) ;
  • FORMAT qui initialise une disquette vierge ;
  • SETUP qui règle les paramètres système.

La commande save permet de créer des fichiers à partir de programmes contenus en mémoire. Pour ce faire, il est nécessaire de spécifier la longueur du fichier à sauvegarder. Le point de départ est toujours le même : c'est l'adresse de début des programmes utilisateurs sous CP/M. Ils commencent tous à la même adresse, 0100H (256 décimal).

La commande save va donc créer un fichier composé du contenu de la mémoire vive commençant en 0100H. La taille du fichier est donnée dans la commande save sous la forme d'un nombre qui représente un multiple de 128 octets. Ainsi :

SAVE 3 MONPROG.COM

où 3 représente une taille de 384 octets (soit 3 fois 128 octets). Nous avons donné au fichier le nom de monprog.COM. Le suffixe .COM signifie que ce programme est exécutable, c'est-à-dire que monprog est une commande CP/M. Prenons un exemple : la transposition de la commande print du Basic, en Assembleur Z80 pour environnement CP/M. Ce qui, en Basic, s'écrit.

PRINT CHR$(7) ; « Ca marche » ; CHR (7)

devient en Assembleur :

LXI D, texte : pointe le texte
MVI C,09: code d'affichage sur l'écran, le texte doit se terminer par un signe "$»
CALL 5 : effectue l'opération (appel CP/M)
JMP 0 : redonne le contrôle au CP/M
TEXTE DB 07, 'Ca marche', 07, "$" : texte
END

Ça a l'air nettement plus compliqué... mais, une fois assemblé avec un Assembleur comme asm (l'Assembleur CP/M), on obtient les codes suivants :

11 0B 01 ;LXI D, TEXTE
0E 09 ; MVI C,09
CD 05 00 CALL 5
C3 00 00 ;JMP 0
07 6B 61 20 TEXTE DB 07, 'ca marche', 07, "$"
6D 61 72 63 END
68 65 07 24

L'Assembleur asm crée un fichier qui s'appelle monprog.hex. Il ne reste plus qu'à charger ce fichier, c'est-à-dire à le transformer en fichier de commandes avec la commande load.com: load monprog. Nous disposons, pour ce faire, des codes hexadécimaux (partie gauche de la routine ci-dessus : ll,0B,01,0E,09,CD,...) et de la commande DDT. Les parties soulignées de la liste ci-contre sont celles qu'il faut entrer, les phrases se terminant par un retour-chariot.
Enfin, il faut sauvegarder :

A>SAVE 1 MONPROG.COM

Nous aurions pu indiquer le nom du lecteur de disquette :

A>SAVE 1 BtMONPROG.COM

Et voilà, le tour est joué ! Essayez d'entrer la commande MONPROG , vous devez entendre le son du haut-parleur et voir s'afficher la phrase :

ca marche

suivie de : A>.
Vérifiez bien les codes que vous entrez : la moindre erreur peut conduire à la perte du contrôle de la machine. En Basic, les fautes sont pardonnées, moyennant un message du type « syntax error ». En langage machine, ce n'est pas le cas et, très souvent, il faut effectuer un reset (éteindre et rallumer) pour reprendre le contrôle des opérations...

La commande user sert à partager les disques en zones. Utile si vous voulez « cacher » certains fichiers sur vos disquettes. Par exemple, si vous voulez dissimuler le programme que vous venez de créer, il vous faut, juste après le go qui permet de sortir de DDT , entrer les commandes suivantes :

USER 7
SAVE 1 MONPROG.COM

et retourner en zone utilisateur "0", par :

USER 0

Ni vu, ni connu. Essayez de consulter le catalogue avec la commande dir, il n'y est point ! A moins que vous n'ayez enregistré le même programme sur la zone utilisateur "0" auparavant.
La documentation Amstrad passe totalement sous silence le signe "?" qui peut remplacer une lettre dans le nom d'un fichier. Ce point d'interrogation est en fait un « jocker » susceptible de remplacer n'importe quel autre caractère. Ce point d'interrogation s'avère très utile dans la recherche de fichiers avec la commande dir. Ainsi, dir monprog?.com nous donnera la liste des programmes :

MONPROG.COM : MONPROG2.COM :
MONPROG3.COM

De même, avec les commandes STAT et PIP. Si vous voulez faire disparaître du catalogue tous vos fichiers MONPROGx.COM , il vous suffira d'entrer :

STAT MONPROG ?.COM $SYS

Dans le cas choisi, le point d'interrogation pourrait être remplacé par l'astérisque. En revanche, ce n'est pas possible pour PIP a:=b :MAST?PRO.* , où l'astérisque apparaît déjà une fois. Cette commande va transférer, du lecteur A: vers le lecteur B:, tous les fichiers dont le nom commence par MAST et se termine par PRO, quelque soit le signe désigné par le point d'interrogation. Par exemple :

MAST1PRO.COM
MAST2PRO.ASM
MAST6PRO.HEX

Toutes ces remarques, pas toujours présentes dans le manuel, devraient vous aider à mieux utiliser le système d'exploitation de votre Amstrad.

Microstrad n°2 , nov/dec 1985

★ ANNÉE: 1985
★ AUTEUR: PHILIPPE GYSEL

★ AMSTRAD CPC ★ DOWNLOAD ★

Files:
» CPM-DR  Logo  v1.1DATE: 2008-08-06
DL: 2402
TYPE: ZIP
SiZE: 50Ko
NOTE: CPM 2.2 bootloader/Extended DSK/40 Cyls
.HFE: Χ

» CPM-DR  Logo  v2.0DATE: 2008-08-03
DL: 2326
TYPE: ZIP
SiZE: 68Ko
NOTE: 41 Cyls
.HFE: Χ

» CPM-DR  Logo  v3.0DATE: 2008-09-04
DL: 2484
TYPE: ZIP
SiZE: 66Ko
NOTE: 40 Cyls
.HFE: Χ

» CPMPlus  v1.0DATE: 2002-03-28
DL: 2515
TYPE: ZIP
SiZE: 330Ko
NOTE: CPM bootloader/CPM 2.2 bootloader/Extended DSK/40 Cyls
.HFE: Χ

» CPM  v2.2DATE: 2008-09-06
DL: 2807
TYPE: ZIP
SiZE: 257Ko
NOTE: CPM 2.2 bootloader/Extended DSK/40 Cyls
.HFE: Χ

Dumps disquettes (version commerciale):
» CPM  v2.2    ENGLISHDATE: 2017-05-03
DL: 2062
TYPE: ZIP
SiZE: 96Ko
NOTE: Uploaded by CPCLOV ; CPM 2.2 bootloader/Extended DSK/42 Cyls
.HFE: Χ

» CPM  v3.0    (FRENCH  RETAIL-CPC  PLUS)    ENGLISHDATE: 2019-03-13
DL: 4825
TYPE: ZIP
SiZE: 155Ko
NOTE: CPM bootloader/40 Cyls
.HFE: Χ

» CPM  v3.0    (Release  SCHNEIDER)    ENGLISHDATE: 2019-03-13
DL: 2139
TYPE: ZIP
SiZE: 322Ko
NOTE: Uploaded by CPCLOV ; Extended DSK/40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Clefs2 10 - Cpm22 Caracteres de Controle
» Applications » Introduction à G.S.X : Etude des différents codes (CPC Revue n°34)
» Coding » Clefs2 10 - Cpm22 Messages Erreurs
» Coding » Clefs2 10 - Cpm22 Cold Boot
» Coding » Clefs2 10 - Cpm22 Structure du Repertoire
» Coding » Initiation a CP/M - Amstrad Magazine 10 - les Commandes Transitoires - les Fonctions Internes
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 173 millisecondes et consultée 2655 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.