Ce projet regroupe une méthode simple pour créer un environnement de développement croisé pour CP / M-86. Il arrive que tous les outils basés sur DOS puissent également être utilisés pour construire des programmes DOS. Ce projet a été développé pour moi dans un esprit ringard et pour beaucoup de plaisir. Partage sans garantie.
Les langues prises en charge sont:
La source de Doc CP / M-86, Sources et Binaires est http://www.cpm.z80.de.
Une distribution nettoyée et un noyau est disponible sur https://github.com/tsupplis/cpm86-kernel. Cette distribution fonctionne bien dans des environnements virtuels, corrigées avec tous les correctifs connus, «Y2K» amicalement (il contient la version de TOD que les sources sont dans ce projet) et chez Friendly.
Aztec C Compiler version 3.4 / 3.40a (K&R, la bibliothèque CP / M-86 est fournie comme C86.LIB)
Le compilateur Aztec C version 4.2 / 4.10D (presque ANSI, le code de la bibliothèque CP / M-86 (C86.LIB) est corrigé et recompilé à partir de sources 3.4, car il ne fait pas partie du package du compilateur par défaut. Une bibliothèque DOS 1.1 (D11.LIB) est également fournie de la même manière), le document peut être trouvé en ce qui (https://www.aztecmuseum.ca/docs/aztec_c_msdos_4.10c_commercial_apr88.pdf)
RASM86 / LINK86, Version DOS LIB86 de la recherche numérique
asm86.com et genef.com de la recherche numérique
CB86.exe et bibliothèques de Digital Research
assembleur NASM Netwide
MASM, LINK, ASM, EXE2BIN, HEX2BIN de Microsoft (la version de Masm dans ce référentiel a été corrigée pour travailler avec EMU2 et d'autres émulateurs, voir https://github.com/tsupplis/pcdos11-hacking pour plus de détails). ASM.com et hex2bin.com ont été reconstruits pour des sources modifiées sur https://github.com/tsupplis/pcdos11-hacking.
L'émulateur DOS EMU2 super cool pour exécuter les outils DR sur macOS et Linux (https://github.com/dmsc/emu2). C'est un moyen incroyable d'amener des outils de développement de ligne de commande DOS à un environnement de développement moderne et à jour / n'importe quel environnement de développement basé. Un autre émulateur magnifique. EMU2 et PCE sont une paire incroyable.
Nous devons également exécuter certains programmes CP / M-80, pour cela, l'émulateur Tinylpo est utilisé (https://gitlab.com/gbrein/tnylpo). Cela fonctionne très bien avec les programmes ASM86.com et Gencmd.com
Tous les outils sont enveloppés dans le répertoire des bacs pour une utilisation directe:
| nom de script | programme | Description rapide |
|---|---|---|
| CPM_ASM86 | asm86.cmd | Assembler DR (outil CP / M-80) |
| CPM_GENCMD | Gencmd.cmd | Convertisseur DR H86 (outil CP / M-80) |
| pcdev_rasm86 | rasm86.exe | DR Assembleur (OBJ) |
| pcdev_linkcmd | linkcmd.exe | Dr Linker pour CP / M-86 |
| pcdev_link86 | linkcmd.exe | "" "" "" |
| pcdev_linkexe | linkexe.exe | Dr Linker pour DOS |
| pcdev_lib86 | lib86.exe | Dr Bibliothécaire |
| PCDEV_MASM | masm.exe | Assembleur Microsoft |
| pcdev_link | link.exe | Microsoft Linker |
| pcdev_exe2bin | exe2bin.exe | Convertisseur Microsoft EXE |
| pcdev_hex2bin | hex2bin.com | Convertisseur Hex Microsoft |
| pcdev_asm | asm.com | Assembleur Microsoft / 86-DOS |
| pcdev_cmdinfo | cmdinfo.com | Outil d'information CMD |
| pcdev_bin2cmd | bin2cmd.com | Convertisseur CMD |
| aztec34_as | as.exe | Assembleur aztèque. |
| aztec34_cc | cc.exe | Compilateur Aztec K&R C |
| aztec34_sqz | sqz.exe | Optimiseur d'objet Aztec C |
| aztec34_link | ln.exe | Lieur aztec c |
| aztec34_lib | lb.exe | Aztec c lib |
| aztec34_ord | ord.exe | Aztec C Library Order Order Helper |
| aztec34_obd | obd.exe | Vidage d'objet aztec c |
| aztec34_hex86 | hex86.exe | Générateur aztec C H86 |
| aztec42_as | as.exe | Assembleur aztèque. |
| aztec42_cc | cc.exe | Compilateur aztec ansi c |
| aztec42_sqz | sqz.exe | Optimiseur d'objet Aztec C |
| aztec42_link | ln.exe | Lieur aztec c |
| aztec42_lib | lb.exe | Aztec c lib |
| aztec42_ord | ord.exe | Aztec C Library Order Order Helper |
| aztec42_obd | obd.exe | Vidage d'objet aztec c |
| aztec42_hex86 | hex86.exe | Générateur aztec C H86 |
| drcbcpm_bc | CB86.exe | DR COMPILATEUR CBASIC POUR CP / M-86 |
| drcbcpm_link | link86.exe | DR CBASIC Linker pour CP / M-86 |
| DRCBDOS_BC | CB86.exe | DR COMPILATEUR CBASIC POUR DOS |
| drcbdos_link | linkexe.exe | Dr CBASIC Linker pour DOS |
| CPM86 | - | Émulateur CP / M-86 |
| hexcom | - | Hex à la traduction binaire |
| doscat | - | Tronquer les fichiers au-delà ^ z |
| nasme | - | Assembleur de réseau |
L'environnement de développement peut être assemblé en utilisant les étapes suivantes:
./fetch_tools
export PATH=`pwd`/bin
Il tire ce qui suit:
La compensation du répertoire est réalisée par:
./clear_tools
L'outil CPM86 est un émulateur CPM86 pour DOS tiré avec Aztec C. Il fonctionne. Je n'en compte pas pour les outils de construction, mais il peut être expérimenté. Les émulations DOS / CP / M-80 et les compilations croisées DOS / CP / M-80 sont bien meilleures et les options de minerai. En fin, une émulation appropriée et CP / M-86 est la meilleure option pour les tests. Le PCE est un très bon choix (http://www.hampa.ch/pce/).
Cela peut être une prochaine étape:
Un dockerfile est fourni pour cet environnement. Pour construire l'image à partir du répertoire docker, jusr run make, alternativement:
docker build --rm=true -t cpm86:latest -f Dockerfile .
Pour utiliser l'image créée, assurez-vous simplement que le chemin local où la compilation se présente correctement est correctement:
docker run -it --rm -h cpm86 -v `pwd`:/work -w /work cpm86 pcdev_rasm86 helloa.a86
docker run -it --rm -h cpm86 -v `pwd`:/work -w /work cpm86 aztec34_cc helloc.c
La seule différence sur la ligne de commande se produit avec;
pcdev_masm hellod ;
... devient ...
docker run -it --rm -h cpm86 -v `pwd`:/work -w /work cpm86 pcdev_masm hellod '\;'
Enfin, un simple fichier de make avec un échantillon C, assembleur pour RASM86, assembleur pour ASM86 est fourni:
./build_demo
drcbcpm_bc hellor.bas
drcbcpm_link hellor.cmd=hellor.o
pcdev_cmdinfo hellor.cmd
aztec34_cc helloc.c
aztec34_sqz helloc.o
aztec34_link -o helloc.cmd helloc.o -lc86
pcdev_cmdinfo helloc.cmd
Si le code utilise la syntaxe ANSI ...
aztec42_cc helloc.c
aztec42_sqz helloc.o
aztec42_link -o helloc.cmd helloc.o -lc86
pcdev_cmdinfo helloc.cmd
pcdev_rasm86 helloa.a86 '$' pz sz
pcdev_linkcmd helloa '[$sz]'
pcdev_cmdinfo helloa.cmd
cpm_asm86 hellob.a86
cpm_gencmd hellob.h86
pcdev_cmdinfo hellob.cmd
pcdev_masm hellod ;
pcdev_link hellod ;
pcdev_exe2bin hellod.exe
pcdev_bin2cmd hellod.bin hellod.cmd
nasm hellon.asm -fbin -o hellon.bin
pcdev_bin2cmd hellon.bin hellon.cmd
Vous pouvez construire une version Unix / DOS native de Bin2cmd / Cmdinfo de (https://github.com/tsupplis/cpm86-cmdtools)