이 프로젝트는 CP/M-86을위한 교차 개발 환경을 만들기위한 간단한 방법을 다시 그룹화합니다. 모든 DOS 기반 도구는 DOS 프로그램을 구축하는 데 사용될 수도 있습니다. 이 프로젝트는 나 자신을 위해 괴상한 정신과 많은 재미를 위해 개발되었습니다. 보증없이 공유하십시오.
지원되는 언어는 다음과 같습니다.
CP/M-86 DOC, 소스 및 바이너리의 소스는 http://www.cpm.z80.de입니다.
정리 배포 및 커널은 https://github.com/tsupplis/cpm86-kernel에서 제공됩니다. 이 분포는 가상 환경에서 잘 작동하며, 모든 알려진 패치, 'Y2K'친화적 인 '이 프로젝트에 소스가있는 TOD 버전이 포함되어 있음)와 친절하게 작동합니다.
AZTEC C 컴파일러 버전 3.4/3.40A (K & R, CP/M-86 라이브러리는 C86.LIB로 제공됩니다)
AZTEC C 컴파일러 버전 4.2/4.10D (거의 ANSI, CP/M-86 라이브러리 코드 (C86.LIB)의 코드는 기본 컴파일러 패키지의 일부가 아니기 때문에 3.4 소스에서 패치 및 재 컴파일됩니다. DOS 1.1 라이브러리 (D11.LIB)도 제공됩니다. 문서를 찾을 수 있습니다. (https://www.aztecmuseum.ca/docs/aztec_c_msdos_4.10c_commercial_apr88.pdf)
Rasm86/Link86, Digital Research의 LIB86 DOS 버전
Digital Research의 ASM86.com 및 Gendef.com
CB86.Exe 및 Digital Reasearch의 라이브러리
nasm netwide 어셈블러
Microsoft의 Masm, Link, ASM, Exe2Bin, Hex2Bin (이 저장소의 MASM 버전은 EMU2 및 기타 에뮬레이터와 함께 작동하도록 패치되었습니다. 자세한 내용은 https://github.com/tsupplis/pcdos11-hacking을 참조하십시오). asm.com 및 hex2bin.com은 https://github.com/tsupplis/pcdos11-hacking에서 수정 된 소스에 대해 재건되었습니다.
MacOS 및 Linux에서 DR 도구를 실행하는 Super Cool EMU2 DOS 에뮬레이터 (https://github.com/dmsc/emu2). 이것은 DOS 명령 줄 개발 도구를 현대적이고 최신의 쉘/제조업체/모든 DEV 환경에 가져 오는 놀라운 방법입니다. 또 다른 멋진 에뮬레이터. EMU2와 PCE는 놀라운 쌍입니다.
또한 일부 CP/M-80 프로그램을 실행해야합니다.이를 위해 Tinylpo 에뮬레이터가 사용됩니다 (https://gitlab.com/gbrein/tnylpo). ASM86.com 및 gencmd.com 프로그램에서 매우 잘 작동합니다
모든 도구는 직접 사용을 위해 빈 디렉토리에 래핑됩니다.
| 스크립트 이름 | 프로그램 | 빠른 설명 |
|---|---|---|
| CPM_ASM86 | ASM86.CMD | DR 어셈블러 (CP/M-80 도구) |
| CPM_GENCMD | gencmd.cmd | DR H86 변환기 (CP/M-80 도구) |
| pcdev_rasm86 | rasm86.exe | DR 어셈블러 (OBJ) |
| pcdev_linkcmd | linkcmd.exe | CP/M-86 용 DR 링커 |
| pcdev_link86 | linkcmd.exe | "" "" "" " |
| pcdev_linkexe | linkexe.exe | DOS 용 DR 링커 |
| pcdev_lib86 | lib86.exe | DR 사서 |
| pcdev_masm | masm.exe | 마이크로 소프트 어셈블러 |
| pcdev_link | link.exe | 마이크로 소프트 링커 |
| pcdev_exe2bin | exe2bin.exe | Microsoft EXE 변환기 |
| pcdev_hex2bin | hex2bin.com | Microsoft Hex 변환기 |
| pcdev_asm | asm.com | Microsoft/86-DOS 어셈블러 |
| pcdev_cmdinfo | cmdinfo.com | CMD 정보 도구 |
| pcdev_bin2cmd | bin2cmd.com | CMD 변환기 |
| AZTEC34_AS | as.exe | 아즈텍 어셈블러. |
| AZTEC34_CC | cc.exe | AZTEC K & R C 컴파일러 |
| AZTEC34_SQZ | sqz.exe | Aztec C 객체 최적화기 |
| AZTEC34_LINK | ln.exe | Aztec C 링커 |
| AZTEC34_LIB | lb.exe | Aztec C lib |
| AZTEC34_ORD | ord.exe | Aztec C 도서관 주문 도우미 |
| AZTEC34_OBD | obd.exe | Aztec C 객체 덤프 |
| AZTEC34_HEX86 | hex86.exe | Aztec C H86 생성기 |
| AZTEC42_AS | as.exe | 아즈텍 어셈블러. |
| AZTEC42_CC | cc.exe | AZTEC ANSI C 컴파일러 |
| AZTEC42_SQZ | sqz.exe | Aztec C 객체 최적화기 |
| AZTEC42_LINK | ln.exe | Aztec C 링커 |
| AZTEC42_LIB | lb.exe | Aztec C lib |
| AZTEC42_ORD | ord.exe | Aztec C 도서관 주문 도우미 |
| AZTEC42_OBD | obd.exe | Aztec C 객체 덤프 |
| AZTEC42_HEX86 | hex86.exe | Aztec C H86 생성기 |
| DRCBCPM_BC | CB86.exe | CP/M-86에 대한 DR CBASIC 컴파일러 |
| DRCBCPM_LINK | link86.exe | CP/M-86에 대한 CBASIC 링커 박사 |
| DRCBDOS_BC | CB86.exe | DOS 용 CBASIC 컴파일러 박사 |
| drcbdos_link | linkexe.exe | DOS 용 CBASIC 링커 박사 |
| CPM86 | - | CP/M-86 에뮬레이터 |
| hexcom | - | 16 진수에서 이진 번역 |
| Doscat | - | ^z를 넘어 파일을 자르십시오 |
| NASM | - | 네트워크 어셈블러 |
다음 단계를 사용하여 개발 환경을 조립할 수 있습니다.
./fetch_tools
export PATH=`pwd`/bin
다음을 가져옵니다.
디렉토리 지우기는 다음과 같이 달성됩니다.
./clear_tools
CPM86 도구는 AZTEC C로 당기는 DOS 용 CPM86 에뮬레이터입니다. 빌드 도구에 의존하지는 않지만 실험 할 수 있습니다. DOS/CP/M-80 에뮬레이션 및 DOS/CP/M-80 크로스 컴파일은 훨씬 나은 옵션이며 광석 옵션입니다. 미세하게, 적절한 에뮬레이션과 CP/M-86이 테스트를위한 최상의 옵션입니다. PCE는 아주 좋은 선택입니다 (http://www.hampa.ch/pce/).
이것은 다음 단계 일 수 있습니다.
이 환경을 위해 dockerfile이 제공됩니다. Docker Directory에서 이미지를 작성하려면 Jusr Run Make, 대안으로 :
docker build --rm=true -t cpm86:latest -f Dockerfile .
생성 된 이미지를 사용자에게 보려면 컴파일이 작동하는 로컬 경로가 올바르게 이루어 졌는지 확인하십시오.
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
명령 줄의 유일한 차이점은 다음과 같습니다.
pcdev_masm hellod ;
...
docker run -it --rm -h cpm86 -v `pwd`:/work -w /work cpm86 pcdev_masm hellod '\;'
마지막으로, 샘플 C가있는 간단한 makefile, RASM86 용 어셈블러, 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
코드가 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
(https://github.com/tsupplis/cpm86-cmdtools)에서 bin2cmd/cmdinfo의 기본 UNIX/DOS 버전을 구축 할 수 있습니다.