Este proyecto reagrupa un método simple para crear un entorno de desarrollo cruzado para CP/M-86. Sucede que todas las herramientas basadas en DOS también se pueden usar para construir programas DOS. Este proyecto fue desarrollado para mí en un espíritu nerd y para mucho diversión. Solo compartir sin ninguna garantía.
Los idiomas admitidos son:
La fuente de CP/M-86 DOC, fuentes y binarios es http://www.cpm.z80.de.
Una distribución de limpieza y kernel está disponible en https://github.com/tsupplis/cpm86-kernel. Esta distribución funciona bien en entornos virtuales, parcheados con todos los parches conocidos, 'Y2K' amigable (contiene la versión de TOD cuya fuentes están en este proyecto) y en amigable.
AZTEC C COMPILER Versión 3.4/3.40a (K&R, la biblioteca CP/M-86 se proporciona como C86.lib)
compilador AZTEC C Versión 4.2/4.10D (casi ANSI, el código para la biblioteca CP/M-86 (C86.LIB) se parcheado y recompilado desde 3.4 fuentes, ya que no es parte del paquete compilador predeterminado. Una biblioteca DOS 1.1 (D11.lib) también se proporciona de la misma manera), la documentación se puede encontrar en (https://www.aztecmuseum.ca/docs/aztec_c_msdos_4.10c_commercial_apr88.pdf)
Rasm86/Link86, versión DOS Lib86 de Digital Research
ASM86.com y Gendef.com de Digital Research
CB86.EXE y bibliotecas de Digital ReSearch
ensamblador de red nasm
MASM, Link, ASM, Exe2bin, Hex2bin de Microsoft (la versión de MASM en este repositorio se ha parcheado para funcionar con EMU2 y otros emuladores, ver https://github.com/tsupplis/pcdos11-hacking para obtener detalles). ASM.com y Hex2bin.com han sido reconstruidos para fuentes modificadas en https://github.com/tsupplis/pcdos11-hacking.
El emulador DOS SUPER COOL EMU2 para ejecutar las herramientas DR en MacOS y Linux (https://github.com/dmsc/EMU2). Esta es una forma increíble de llevar las herramientas de desarrollo de la línea de comandos de DOS a un entorno moderno y actualizado de shell/make/whategus Based. Otro emulador impresionante. EMU2 y PCE son un par increíble.
También necesitamos ejecutar algunos programas CP/M-80, para eso, se utiliza el emulador Tinylpo (https://gitlab.com/gbrein/tnylpo). Funciona muy bien con los programas ASM86.com y Gencmd.com
Todas las herramientas están envueltas en el directorio bin para su uso directo:
| nombre de guión | programa | descripción rápida |
|---|---|---|
| CPM_ASM86 | ASM86.CMD | Ensamblador DR (herramienta CP/M-80) |
| cpm_gencmd | gencmd.cmd | Converter DR H86 (herramienta CP/M-80) |
| PCDEV_RASM86 | rasm86.exe | Dr. Assembler (OBJ) |
| pcdev_linkcmd | linkcmd.exe | Dr. Linker para CP/M-86 |
| PCDEV_LINK86 | linkcmd.exe | "" "" "" |
| pcdev_linkexe | linkexe.exe | Dr. enlazador para DOS |
| PCDEV_LIB86 | lib86.exe | DR Bibliotecario |
| PCDEV_MASM | masm.exe | Ensamblador de Microsoft |
| pcdev_link | link.exe | Enlazador de Microsoft |
| pcdev_exe2bin | exe2bin.exe | Convertidor de Microsoft EXE |
| pcdev_hex2bin | hex2bin.com | Convertidor hexadecimal de Microsoft |
| PCDEV_ASM | asm.com | Ensamblador de Microsoft/86-DOS |
| pcdev_cmdinfo | cmdinfo.com | Herramienta de información CMD |
| pcdev_bin2cmd | bin2cmd.com | Convertidor CMD |
| aztec34_as | as.exe | Ensamblador azteca. |
| aztec34_cc | cc.exe | Aztec K&R C compilador |
| aztec34_sqz | sqz.exe | Optimizador de objetos aztec c c |
| aztec34_link | ln.exe | Aztec C Linker |
| aztec34_lib | lb.exe | Aztec c lib |
| aztec34_ord | Ord.exe | Aztec C Biblioteca ordenar auxiliar |
| aztec34_obd | obd.exe | Aztec c de objeto c. |
| AZTEC34_HEX86 | hex86.exe | Generador Aztec C H86 |
| aztec42_as | as.exe | Ensamblador azteca. |
| aztec42_cc | cc.exe | Compilador aztec ansi c |
| aztec42_sqz | sqz.exe | Optimizador de objetos aztec c c |
| aztec42_link | ln.exe | Aztec C Linker |
| aztec42_lib | lb.exe | Aztec c lib |
| aztec42_ord | Ord.exe | Aztec C Biblioteca ordenar auxiliar |
| aztec42_obd | obd.exe | Aztec c de objeto c. |
| AZTEC42_HEX86 | hex86.exe | Generador Aztec C H86 |
| DRCBCPM_BC | cb86.exe | DR CBASIC COMPILER para CP/M-86 |
| DRCBCPM_LINK | link86.exe | DR CBASIC ENHAPTER para CP/M-86 |
| DRCBDOS_BC | cb86.exe | Dr CBasic Compiler para DOS |
| drcbdos_link | linkexe.exe | DR CBASIC ENHAPTER para DOS |
| CPM86 | - | Emulador CP/M-86 |
| hexcom | - | Hex a la traducción binaria |
| cántico | - | Truncar archivos más allá de ^z |
| nasm | - | Ensamblador de red |
El entorno de desarrollo se puede ensamblar utilizando los siguientes pasos:
./fetch_tools
export PATH=`pwd`/bin
tira lo siguiente:
Limpiar el directorio se logra por:
./clear_tools
La herramienta CPM86 es un emulador CPM86 para DOS tirado con aztec C. funciona. No confío en ello para las herramientas de compilación, pero se puede experimentar. Las emulaciones DOS/CP/M-80 y las compilaciones cruzadas DOS/CP/M-80 son mucho mejores y las opciones de mineral. En la emulación adecuada y CP/M-86 es la mejor opción para las pruebas. PCE es una muy buena opción (http://www.hampa.ch/pce/).
Este puede ser el siguiente paso:
Se proporciona un Dockerfile para este entorno. Para construir la imagen desde el directorio de Docker, JUSR Run Make, alternativamente:
docker build --rm=true -t cpm86:latest -f Dockerfile .
Para usar la imagen creada, solo asegúrese de que la ruta local donde la compilación se felicite se monta correctamente:
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 única diferencia en la línea de comando ocurre con;
pcdev_masm hellod ;
... se convierte en ...
docker run -it --rm -h cpm86 -v `pwd`:/work -w /work cpm86 pcdev_masm hellod '\;'
Finalmente, se proporciona un sencillo makefile con un ensamblador de muestra C para Rasm86, ensamblador para ASM86:
./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 el código está usando sintaxis 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
Puede construir una versión Native Unix/DOS de bin2cmd/cmdinfo desde (https://github.com/tsupplis/cpm86-cmdtools)