From 3b2ed4903d440048230455bc230b5a79f26504c9 Mon Sep 17 00:00:00 2001 From: Tony Nicholson Date: Fri, 15 Jan 2021 13:22:21 +1100 Subject: [PATCH] Release v3.09-8 with Z280 MPU support for overlays etc. --- README.md | 23 ++- cpm/BUILD-C.LOG | 94 ++++++++++ cpm/BUILD-C.SUB | 20 +++ cpm/BUILDCRT.SUB | 5 + cpm/C.C | 69 +++++++- dist/{C309-7.COM => C309-8.COM} | Bin 25728 -> 25728 bytes test/TEST.LOG | 144 ++++++++-------- z280dist/C280-8.COM | Bin 0 -> 24448 bytes z280dist/{CRTCPM.OBJ => C280CPM.OBJ} | Bin z280dist/C280LIBC.SUB | 174 +++++++++++++++++++ z280dist/C280Z80.COM | Bin 0 -> 25984 bytes z280dist/D280CPM.OBJ | Bin 0 -> 384 bytes z280dist/LIB280OV.LIB | Bin 0 -> 1664 bytes z280dist/M280LIBC.SUB | 164 ++++++++++++++++++ z280dist/R280CPM.OBJ | Bin 0 -> 1408 bytes z280dist/{Z280CPM.AS => ZC280CPM.AS} | 0 z280dist/ZD280CPM.AS | 73 ++++++++ z280dist/ZR280CPM.AS | 247 +++++++++++++++++++++++++++ 18 files changed, 929 insertions(+), 84 deletions(-) create mode 100644 cpm/BUILD-C.LOG create mode 100644 cpm/BUILD-C.SUB create mode 100644 cpm/BUILDCRT.SUB rename dist/{C309-7.COM => C309-8.COM} (99%) create mode 100644 z280dist/C280-8.COM rename z280dist/{CRTCPM.OBJ => C280CPM.OBJ} (100%) create mode 100644 z280dist/C280LIBC.SUB create mode 100644 z280dist/C280Z80.COM create mode 100644 z280dist/D280CPM.OBJ create mode 100644 z280dist/LIB280OV.LIB create mode 100644 z280dist/M280LIBC.SUB create mode 100644 z280dist/R280CPM.OBJ rename z280dist/{Z280CPM.AS => ZC280CPM.AS} (100%) create mode 100644 z280dist/ZD280CPM.AS create mode 100644 z280dist/ZR280CPM.AS diff --git a/README.md b/README.md index 576c0f2..af430bb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ emulation using RunZ80, SIMH or ZXCC. Each release is a consolidated milestone with various updates and patches applied. -The latest release is V3.09-7b (see Modification History below). +The latest release is V3.09-8 (see Modification History below). I welcome bug reports/fixes and additional commentry and discussion. @@ -926,6 +926,27 @@ been adjusted to be consistently in uppercase. I've re-issued this as a revised v3.09-7b release too. + +### Release v3.09-8 (support for Z280 MPU) + +The compiler front-end source in cpm/C.C has been updated so that it +can be compiled to produce a Z280 MPU version. Co-existence with the Z80 +version is now also possible due to the renaming of the various Z280 versions +start-up modules to C280CPM.OBJ, D280CPM.OBJ and R280CPM.OBJ. + +The original source-code to the C280 front-end is lost (not included with the +UZI-280 distribution files) - so now Z280 users (like me) have the updated +version supporting overlays etc. + +You'll find updated Z280 files in the *z280dist* folder. The +z280dist/C280-8.COM is the new front-end and can be copied to the system +drive as C280.COM. It tests for, and will only run on a Z280 MPU. +Be sure to copy the start-up object modules (?280CPM.OBJ files) and +the z280dist/LIB280*.LIB libraries to the system drive too. + +This is also a new release milestone at v3.09-8. + + -- Tony Nicholson 15-Jan-2021 diff --git a/cpm/BUILD-C.LOG b/cpm/BUILD-C.LOG new file mode 100644 index 0000000..40651ac --- /dev/null +++ b/cpm/BUILD-C.LOG @@ -0,0 +1,94 @@ + +10E>; +10E>date +A:DATE COM (User 0) + Fri 15/01/2021 12:20:27 +10E>; +10E>; Build Z80 version +10E>c -o -v c309-8.c +A:C COM (User 0) +Hi-Tech C Compiler (CP/M-80) V3.09-7 +Copyright (C) 1984-87 HI-TECH SOFTWARE +Updated from https://github.com/agn453/HI-TECH-Z80-C +0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: C309-8.C M:$CTMP1.$$$ +0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ +0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ +0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ +0:A:ZAS -J -N -OC309-8.OBJ M:$CTMP2.$$$ +ERA M:$CTMP1.$$$ +ERA M:$CTMP2.$$$ +ERA M:$CTMP3.$$$ +ERA M:$CTMP5.$$$ +0:A:LINQ -Z -Ptext=0,data,bss -C100H -OC309-8.COM 0:A:CRTCPM.OBJ C309-8.OBJ 0:A:LIBC.LIB +ERA C309-8.OBJ +ERA M:$$EXEC.$$$ + +10E>; +10E>; Now build Z280 version +10E>; +10E>; First a Z280 version using the Z80 LIBC.C (runs on Z80) +10E>c309-8 -o -v -ec280z80.com -dZ280 c309-8.c +E:C309-8 COM +Hi-Tech C Compiler (CP/M-80) V3.09-8 +Copyright (C) 1984-87 HI-TECH SOFTWARE +Updated from https://github.com/agn453/HI-TECH-Z80-C +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -DZ280 -I0:A: C309-8.C M:$CTMP1.$$$ +0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ +0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ +0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ +0:A:ZAS -J -N -OC309-8.OBJ M:$CTMP2.$$$ +ERA M:$CTMP1.$$$ +ERA M:$CTMP2.$$$ +ERA M:$CTMP3.$$$ +ERA M:$CTMP5.$$$ +0:A:LINQ -Z -Ptext=0,data,bss -C100H -OC280Z80.COM 0:A:CRTCPM.OBJ C309-8.OBJ 0:A:LIBC.LIB +ERA C309-8.OBJ +ERA M:$$EXEC.$$$ + +10E>; +10E>; and the Z280 optimized version from it (only runs on a Z280) +10E>c280z80 -of2 -v -ec280-8.com c309-8.c +E:C280Z80 COM +Hi-Tech C Compiler (CP/M-80) V3.09-8 [Z280 MPU version] +Copyright (C) 1984-87 HI-TECH SOFTWARE +Updated from https://github.com/agn453/HI-TECH-Z80-C +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -DZ280 -I0:A: C309-8.C M:$CTMP1.$$$ +0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ +0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ +0:A:OPTIM -F M:$CTMP1.$$$ M:$CTMP2.$$$ +0:A:OPTIMH M:$CTMP2.$$$ M:$CTMP5.$$$ + 576 bytes optimized away + 1452 bytes replaced +0:A:ZAS -N -OC309-8.OBJ M:$CTMP5.$$$ +ERA M:$CTMP1.$$$ +ERA M:$CTMP2.$$$ +ERA M:$CTMP3.$$$ +ERA M:$CTMP5.$$$ +0:A:LINQ -Z -Ptext=0,data,bss -C100H -OC280-8.COM 0:A:C280CPM.OBJ C309-8.OBJ 0:A:LIB280C.LIB +ERA C309-8.OBJ +ERA M:$$EXEC.$$$ + +10E>; +10E>dir c*.com [fu +A:DIR COM (User 0) + +Scanning Directory... + +Sorting Directory... + +Directory For Drive E: User 10 + + Name Bytes Recs Attributes Prot Update Create +------------ ------ ------ ------------ ------ -------------- -------------- + +C280-8 COM 24k 191 Dir RW None 15/01/21 12:30 15/01/21 12:30 +C280Z80 COM 28k 203 Dir RW None 15/01/21 12:26 15/01/21 12:26 +C309-8 COM 28k 201 Dir RW None 15/01/21 12:23 15/01/21 12:23 + +Total Bytes = 80k Total Records = 595 Files Found = 3 +Total 1k Blocks = 76 Used/Max Dir Entries For Drive E: 1064/2048 + +10E>; +10E>; Done +10E>put console to console +A:PUT COM (User 0) diff --git a/cpm/BUILD-C.SUB b/cpm/BUILD-C.SUB new file mode 100644 index 0000000..cdabb25 --- /dev/null +++ b/cpm/BUILD-C.SUB @@ -0,0 +1,20 @@ +era build-c.log +put console output to file build-c.log [system] +; +date +; +; Build Z80 version +c -o -v c309-8.c +; +; Now build Z280 version +; +; First a Z280 version using the Z80 LIBC.C (runs on Z80) +c309-8 -o -v -ec280z80.com -dZ280 c309-8.c +; +; and the Z280 optimized version from it (only runs on a Z280) +c280z80 -of2 -v -ec280-8.com c309-8.c +; +dir c*.com [fu +; +; Done +put console to console diff --git a/cpm/BUILDCRT.SUB b/cpm/BUILDCRT.SUB new file mode 100644 index 0000000..cabd42f --- /dev/null +++ b/cpm/BUILDCRT.SUB @@ -0,0 +1,5 @@ +; +; Build the start-up modules +; +c -c -o zcrtcpm.as zdrtcpm.as zrrtcpm.as +c280 -c -o zc280cpm.as zd280cpm.as zr280cpm.as diff --git a/cpm/C.C b/cpm/C.C index 88de698..a041f67 100644 --- a/cpm/C.C +++ b/cpm/C.C @@ -26,6 +26,8 @@ | Revised to better support building self-relocating .COM files and | | overlays by automating the building of the resident and overlay | | portions (new -Y compiler flag). | + | | + | For new features, re-implement Z280 version (original sources lost) | \*----------------------------------------------------------------------*/ #include @@ -71,6 +73,9 @@ static char reloc, /* auto-relocate program at run time */ xref, /* generate cross reference listing */ nolocal, /* strip local symbols */ +#ifdef Z280 + z280optim, /* Z280 code optimization */ +#endif overlay=0; /* build with overlays */ static char @@ -95,13 +100,24 @@ static char *paths[] = "OPTIM", "CPP", "ZAS", +#ifdef Z280 + "LIB280", +#else "LIB", +#endif "P1", +#ifdef Z280 + "C280CPM.OBJ", +#else "CRTCPM.OBJ", +#endif "$EXEC", "CREF", "SYMTOAS", "OPTIONS", +#ifdef Z280 + "OPTIMH", +#endif }; #define linker paths[0] @@ -117,6 +133,9 @@ static char *paths[] = #define cref paths[10] #define symtoas paths[11] #define options paths[12] +#ifdef Z280 +#define optimh paths[13] +#endif #define RELSTRT strtoff[plen] @@ -146,7 +165,7 @@ static char *tempm[] = #define l_dot_obj temps[4] #define execmd temps[5] #define crtmp temps[6] -#define tmpas temps[7] +#define tmpf5 temps[7] #define osegs tempm[0] #define nsegs tempm[1] @@ -154,7 +173,14 @@ static char *tempm[] = static int cbase = 0x0100; -static char *cppdef[] = { "-DCPM", "-DHI_TECH_C", "-Dz80" }; +static char *cppdef[] = { + "-DCPM", + "-DHI_TECH_C", + "-DZ80", +#ifdef Z280 + "-DZ280", +#endif +}; static char *cpppath = "-I"; static char tmpbuf[128]; /* gen. purpose buffer */ @@ -200,8 +226,11 @@ int main(int argc, char **argv) signal_t prev_sig; prev_sig=signal(SIGINT,SIG_IGN); - fprintf(stderr, "Hi-Tech C Compiler (CP/M-80) V3.09-7\n"); - fprintf(stderr, "Copyright (C) 1984-87 HI-TECH SOFTWARE\n"); + fprintf(stderr, "Hi-Tech C Compiler (CP/M-80) V3.09-8"); +#ifdef Z280 + fprintf(stderr, " [Z280 MPU version]"); +#endif + fprintf(stderr, "\nCopyright (C) 1984-87 HI-TECH SOFTWARE\n"); fprintf(stderr, "Updated from https://github.com/agn453/HI-TECH-Z80-C\n"); #if EDUC fprintf(stderr, "Licensed for Educational purposes only\n"); @@ -265,7 +294,13 @@ int main(int argc, char **argv) case 'O': optimize = 1; if(argv[0][2] == 'F' || argv[0][2] == 'f') + { speed = 1; +#ifdef Z280 + if (argv[0][3] == '2') + z280optim = 1; +#endif + } break; case 'I': @@ -417,7 +452,7 @@ void doit() rm(RM_FILE, tmpf1); rm(RM_FILE, tmpf2); rm(RM_FILE, tmpf3); - rm(RM_FILE, tmpas); + rm(RM_FILE, tmpf5); if (!keep) { char * segopt = 0; @@ -677,7 +712,7 @@ void assemble_sym(char *s) { cbase = sym2as(s); vec[0] = s; - vec[1] = tmpas; + vec[1] = tmpf5; vec[2] = 0; doexec(symtoas, vec); put_cmd(TRAP); @@ -698,7 +733,7 @@ void assemble_sym(char *s) *rindex(buf, '.') = 0; strcat(buf, ".OBJ"); vec[i++] = buf; - vec[i++] = tmpas; + vec[i++] = tmpf5; vec[i] = (char *)0; doexec(assem, vec); } @@ -778,15 +813,33 @@ void compile(char *s) if (speed) vec[i++] = "-F"; vec[i++] = tmpf1; +#ifdef Z280 + if (keepas && !z280optim) +#else if (keepas) +#endif vec[i++] = strcat(strcpy(tmpbuf, s), ".AS"); else vec[i++] = tmpf2; vec[i] = (char *)0; doexec(optim, vec); + cp = tmpf2; +#ifdef Z280 + if (z280optim) + { + i = 0; + vec[i++] = cp; + if (keepas) + vec[i++] = strcat(strcpy(tmpbuf, s), ".AS"); + else + vec[i++] = tmpf5; + vec[i] = (char *)0; + doexec(optimh, vec); + cp = tmpf5; + } +#endif if (keepas) return; - cp = tmpf2; } i = 0; if (nolocal) diff --git a/dist/C309-7.COM b/dist/C309-8.COM similarity index 99% rename from dist/C309-7.COM rename to dist/C309-8.COM index 85be38ff5347f8cba8d267f9f47c6fac67bd01f2..3a35e280a380d21b0887bfd02645344d8b51b01b 100644 GIT binary patch delta 46 zcmV+}0MY+|$pL`L0g&?n?6LGk77P6date A:DATE COM (User 0) - Thu 14/01/2021 14:50:14 + Fri 15/01/2021 12:37:20 10E>; Compile all tests 10E>c -v -o testver.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTVER.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTVER.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTVER.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTVER.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -23,14 +23,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testio.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTIO.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTIO.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTIO.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTIO.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -41,14 +41,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testuid.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTUID.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTUID.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTUID.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTUID.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -59,14 +59,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o teststr.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTSTR.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTSTR.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTSTR.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTSTR.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -77,14 +77,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testbios.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTBIOS.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTBIOS.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTBIOS.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTBIOS.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -95,14 +95,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testbdos.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTBDOS.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTBDOS.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTBDOS.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTBDOS.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -113,14 +113,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testtrig.c -lf A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTTRIG.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTTRIG.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTTRIG.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTTRIG.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -131,14 +131,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testftim.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTFTIM.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTFTIM.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTFTIM.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTFTIM.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -149,14 +149,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testfile.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTFILE.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTFILE.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTFILE.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTFILE.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -167,14 +167,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testaes.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTAES.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTAES.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTAES.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTAES.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -185,14 +185,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testrc.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTRC.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTRC.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTRC.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTRC.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -203,14 +203,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testview.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTVIEW.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTVIEW.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTVIEW.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTVIEW.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -221,14 +221,14 @@ ERA M:$$EXEC.$$$ 10E>c -v -o testwild.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTWILD.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTWILD.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTWILD.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTWILD.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -239,14 +239,14 @@ ERA M:$$EXEC.$$$ 10E>c -ftestovrx.sym -v -o testovr.c -lovr A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTOVR.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTOVR.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTOVR.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTOVR.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ @@ -257,18 +257,16 @@ ERA M:$$EXEC.$$$ 10E>c -y -o -v testovr2.c testovrx.sym A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C TESTOVR2.C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTOVR2.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTOVR2.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTOVR2.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTOVR2.OBJ M:$CTMP2.$$$ 0:A:SYMTOAS TESTOVRX.SYM M:$CTMP5.$$$ -SYM2AS V1.00 -M:$CTMP5.$$$ 31663166 TESTOVRX.SYM 0:A:ZAS -J -OTESTOVRX.OBJ M:$CTMP5.$$$ ERA M:$CTMP1.$$$ @@ -280,18 +278,16 @@ ERA M:$$EXEC.$$$ 10E>c -y -o -v testovr1.c testovrx.sym A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C TESTOVR1.C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTOVR1.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTOVR1.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTOVR1.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTOVR1.OBJ M:$CTMP2.$$$ 0:A:SYMTOAS TESTOVRX.SYM M:$CTMP5.$$$ -SYM2AS V1.00 -M:$CTMP5.$$$ 31663166 TESTOVRX.SYM 0:A:ZAS -J -OTESTOVRX.OBJ M:$CTMP5.$$$ ERA M:$CTMP1.$$$ @@ -303,19 +299,19 @@ ERA M:$$EXEC.$$$ 10E>c -a -v -o testhell.c A:C COM (User 0) -Hi-Tech C Compiler (CP/M-80) V3.09-7 +Hi-Tech C Compiler (CP/M-80) V3.09-8 Copyright (C) 1984-87 HI-TECH SOFTWARE Updated from https://github.com/agn453/HI-TECH-Z80-C -0:A:CPP -DCPM -DHI_TECH_C -Dz80 -I0:A: TESTHELL.C M:$CTMP1.$$$ +0:A:CPP -DCPM -DHI_TECH_C -DZ80 -I0:A: TESTHELL.C M:$CTMP1.$$$ 0:A:P1 M:$CTMP1.$$$ M:$CTMP2.$$$ M:$CTMP3.$$$ 0:A:CGEN M:$CTMP2.$$$ M:$CTMP1.$$$ 0:A:OPTIM M:$CTMP1.$$$ M:$CTMP2.$$$ -0:A:ZAS -J -N -oTESTHELL.OBJ M:$CTMP2.$$$ +0:A:ZAS -J -N -OTESTHELL.OBJ M:$CTMP2.$$$ ERA M:$CTMP1.$$$ ERA M:$CTMP2.$$$ ERA M:$CTMP3.$$$ ERA M:$CTMP5.$$$ -0:A:LINQ -Z -L -Ptext=0100h,data,bss -oM:$L.OBJ 0:A:RRTCPM.OBJ TESTHELL.OBJ 0:A:LIBC.LIB +0:A:LINQ -Z -L -Ptext=0100h,data,bss -OM:$L.OBJ 0:A:RRTCPM.OBJ TESTHELL.OBJ 0:A:LIBC.LIB 0:A:OBJTOHEX -R -B100H M:$L.OBJ TESTHELL.COM ERA M:$L.OBJ ERA TESTHELL.OBJ @@ -330,11 +326,9 @@ BIOS Address (0xF800) TPA Size (57.0K) 10E>era testio.sta -No File 10E>era testio.out No File 10E>era testio.err -No File 10E>testovr E:TESTOVR COM overlay test @@ -445,8 +439,8 @@ E:TESTTRIG COM 10E>testftim E:TESTFTIM COM -34: 03:01 PM -Thu Jan 14 15:01:14 2021 +34: 12:48 PM +Fri Jan 15 12:48:13 2021 10E>testfile @@ -559,20 +553,20 @@ Program name: TESTWILD 20: TESTVER.C 21: TESTVIEW.C 22: TESTWILD.C -23: TESTVER.COM -24: TESTIO.COM -25: TESTUID.COM -26: TESTSTR.COM -27: TESTBIOS.COM -28: TESTBDOS.COM -29: TESTTRIG.COM -30: TESTFTIM.COM -31: TESTFILE.COM -32: TESTAES.COM -33: TESTRC.COM -34: TESTVIEW.COM -35: TESTWILD.COM -36: TESTOVR.COM +23: TESTOVR.COM +24: TESTVER.COM +25: TESTIO.COM +26: TESTUID.COM +27: TESTSTR.COM +28: TESTBIOS.COM +29: TESTBDOS.COM +30: TESTTRIG.COM +31: TESTFTIM.COM +32: TESTFILE.COM +33: TESTAES.COM +34: TESTRC.COM +35: TESTVIEW.COM +36: TESTWILD.COM 37: TESTHELL.COM 10E>testhell diff --git a/z280dist/C280-8.COM b/z280dist/C280-8.COM new file mode 100644 index 0000000000000000000000000000000000000000..abdb0830400be7d878b1030f06fd3fae55156cfd GIT binary patch literal 24448 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 literal 0 HcmV?d00001 diff --git a/z280dist/CRTCPM.OBJ b/z280dist/C280CPM.OBJ similarity index 100% rename from z280dist/CRTCPM.OBJ rename to z280dist/C280CPM.OBJ diff --git a/z280dist/C280LIBC.SUB b/z280dist/C280LIBC.SUB new file mode 100644 index 0000000..2ba70b0 --- /dev/null +++ b/z280dist/C280LIBC.SUB @@ -0,0 +1,174 @@ +era c280libc.log +put console output to file c280libc.log [system] +; Compile all LIB280C.LIB modules from sources for Z280 +c280 +<-of2 -c abort.c \ +aB_n>$ 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 H8vm>x+#XMI literal 0 HcmV?d00001 diff --git a/z280dist/LIB280OV.LIB b/z280dist/LIB280OV.LIB new file mode 100644 index 0000000000000000000000000000000000000000..f09632e6ffda1e4f93f4f6b0123818fe889e4739 GIT binary patch literal 1664 zcmds1L2FY%5dPjvjX@}lq156n5fvhYqEVzbuUe=_@lsxrr$o}1kc8TZ&CP=+!Mk{u z9HjQ>B@K9JCYhqXrlccFb$`2#LtrpY#xU%UE=7l<^w05-Ozn36#&0k?8l}G* zQ*r?ofkoQ=QRbxk^k5gsMUY0gVU>L*f}_k}XK%kDs+}h2e}fB_^RgwF{D=B@+yQ0B z`bV22du-a-JLs`yOu{F(G`aCdwi7+lDD#Ke5g)MMJ#Ox|bZ3i#qM%t>4&OP%x)X7b zl5#8}#r2bFT{f5tcLfPaZdOfH=UW7&G1icf?5?ZNz3DceplPCtIz86;*;MGc?t3{k zy(TEyZ`A!QQqnr_)c3vmQk!+urE_o=!iLOHTf=FUn<@Sdg zC2b+mm%ye}D4SBMEGpfmT*|E2yc4_PD!(mVMayDY^ei?>iZrr|C@}L#%$r9-gm9N@ z5OI;n)oSztaZRFJ6Q(h8q;-bV>fDCBrN(0>?Qv5Su}SJ(3Tnn^(od2!)PsUM|NoA^ Dz>3KY literal 0 HcmV?d00001 diff --git a/z280dist/M280LIBC.SUB b/z280dist/M280LIBC.SUB new file mode 100644 index 0000000..59587a9 --- /dev/null +++ b/z280dist/M280LIBC.SUB @@ -0,0 +1,164 @@ +; Use librarian to place all modules in m:lib280c.lib +; NB: the ordering is important for resolving dependencies at link time +era m:lib280c.lib +libr +-%PW?dxAYRX#GR^P37hMj zsLaya{Wa9yJHwz?Iwdp`z{g%)rt z2znKSU9%U_`S~f^(X$KSQlH7#HU@kx=DMA6#jqDGeox&~P%&|=?riZR@k6Vx z_<{b_H@qjVQM;OheQ$Y7|K9E&ahxY6(ImP$wu898lSpXKdfU6k!fB9w@8rufDG692^Ck{yTMQMb6*~ zn?q_kb!ql;nzur0_o6ifK2Z4xbVHt~Qse};NJPzTtJK_+54rcmHOM0Y)zb~uBzM>k z_{ZVfYEDvQdfDdZD@H}+ko*_AJ0!}BGDPK2HT*Rc|1~B}NlVY=ER6eRM$cs{Rmkh$ zu4hD^IuVqn%RaMM5;jH@pvW3F;YHYStQMSiSBDRB8>JjCU`v&OH(f7ZfKV8X1F8}}l literal 0 HcmV?d00001 diff --git a/z280dist/Z280CPM.AS b/z280dist/ZC280CPM.AS similarity index 100% rename from z280dist/Z280CPM.AS rename to z280dist/ZC280CPM.AS diff --git a/z280dist/ZD280CPM.AS b/z280dist/ZD280CPM.AS new file mode 100644 index 0000000..baf256b --- /dev/null +++ b/z280dist/ZD280CPM.AS @@ -0,0 +1,73 @@ +; This is ZDRTCPM for the Z280 MPU +; + psect text,global,pure + psect data,global + psect bss,global + + psect text + defs 100h ;Base of CP/M's TPA + global start,_main,_exit,__Hdata, __trap, __piped +start: ld hl,(6) ;base address of fdos + ld sp,hl ;stack grows downwards + ld de,__Hdata ;end of initialized data + scf + sbc hl,de ;size of uninitialized data area + ld c,l + ld b,h + dec bc + ld l,e + ld h,d + inc de + ld (hl),0 + ldir ;clear memory + ld hl,-80h ;allow room for args + add hl,sp + ld sp,hl ;allow space for args + ld bc,0 ;flag end of args + push bc + ld hl,80h ;address of argument buffer + ld c,(hl) + ld b,0 + add hl,bc + ld b,c + ex de,hl + ld hl,(6) + ld c,1 + dec hl + ld (hl),0 + inc b + jr 3f + +2: ld a,(de) + cp ' ' + dec de + jr nz,1f + xor a + push hl + inc c +1: dec hl + ld (hl),a +3: + djnz 2b + ld hl,nularg + push hl + ld hl,0 + add hl,sp + push hl + push bc + ld hl,__trap + ld (39h),hl + ld a,0c3h + ld (38h),a + rst 38h + call _main + push hl + call _exit + jp p,0 + + psect data +__piped: + defw 0 +nularg: defm 'main' + defb 0 + end start diff --git a/z280dist/ZR280CPM.AS b/z280dist/ZR280CPM.AS new file mode 100644 index 0000000..5bd19ca --- /dev/null +++ b/z280dist/ZR280CPM.AS @@ -0,0 +1,247 @@ +; This is ZRRTCPM for the Z280 MPU +; + +; Self relocating startup for CP/M + + psect cpm,global + psect text,global,pure + psect data,global + psect bss,global + psect stack,global + + defs 256 ;a minimal stack + + + psect cpm + defs 100h ;Base of CP/M's TPA + global start,_main,_exit,__Lbss,__Hstack, __z3env, __piped + +reloc: ; DOS Protection 8080/Z80 x86 + ; --------- -------------------- + defb 0EBh,04h ; EX DE,HL JMPS LABE + ; INC B + + ex de,hl ; EX DE,HL + defb 0C3h ; JP BEGIN + defw begin ; (We don't want the assembler optimising + ; this to a relative branch) + +labe: defb 0B8h,0,09h ; MOV AX,9 ; print string + + defb 0BAh ; MOV DX,OFFSET BVMES + defw bvmes + + defb 0CDh,021h ; INT 21h ; call DOS + + defb 0B8h,01h,4Ch ; MOV AX,4C01h ; terminate + ; ; with CTRL-BREAK code (1) + + defb 0CDh,021h ; INT 21h ; call DOS + ; we never return here + + defb 13 + defm 'Compiled with Hi-Tech C [Relocatable]' + defb 13,10,26 + + psect data +z3ecst: defm 'Z3ENV' +bvmes: defm 'This CP/M program requires a Z80 CPU.' + defb 13,10,'$' +memmes: defm 'Not enough memory to run.' + defb 13,10,'$' + psect cpm + +begin: sub a ;Stop 8080 processors running this. + jp po,okver +; +badcpu: ld de,bvmes + ld c,9 ;Print error message + jp 5 + +okver: ld a,40h ;Check for Z280 MPU +; tset a ; (this instruction will set the S flag + defb 0CBh,037h + jp m,badcpu ; on a Z80 and clear it on a Z280) + + push hl ;HL holds possible Z3ENV address + ld hl,(6) ;get base of fdos + ld de,__Hstack + or a + sbc hl,de ;get distance to move + ld c,l ;save it in bc + ld b,h +1: + ld hl,(__Lbss) ;get count + ld a,l ;zero? + or h + jr z,2f + dec hl + ld (__Lbss),hl + ld hl,(addr) ;get address + ld e,(hl) ;pick up value + inc hl + ld d,(hl) + inc hl + ld (addr),hl ;save for next + ex de,hl + ld (where),hl ;save it + ld de,3f ;dont relocate any of our addresses + or a + sbc hl,de ;check for range + jr c,1b ;skip if less than 3f + ld hl,(where) + ld e,(hl) ;get value to relocate + inc hl + ld d,(hl) + ex de,hl + add hl,bc ;add difference + ex de,hl + ld (hl),d ;put relocated value back + dec hl + ld (hl),e + jr 1b ;loop for more + +addr: defw __Lbss+2 ;start of addresses +where: defs 2 ;temp storage + +2: + ld hl,__Lbss ;now find how much to move + ld de,start + or a + sbc hl,de + ld c,l ;save in bc + ld b,h + ld hl,__Hstack ;top of memory + ld de,__Lbss ;top of code and data + sbc hl,de ;room to leave at top of mem + ex de,hl + ld hl,(6) + scf ;discount it + sbc hl,de + ex de,hl ;destination into de + ld hl,__Lbss-1 ;source in hl - count is already in bc + ld a,c ;check for zero + or b + jr z,3f + lddr ;move it + pop hl +3: + jp start ;go to it + + psect text +start: ld l,0 ;Start of the page + ld a,(hl) + cp 0c3h ;Must start with a jump + jr nz,noz3 + ld l,1bh + ld a,(hl) ;Must refer to itself + or a + jr nz,noz3 + inc hl + ld a,(hl) + cp h + jr nz,noz3 + ld l,3 ;Must contain the string "Z3ENV" + ld de,z3ecst + ld b,5 ;Check 5 characters +z3ecmp: ld a,(de) + cp (hl) + jr nz,noz3 + inc hl + inc de + djnz z3ecmp + ld l,0 + defb 3eh ;Swallow the LD HL +noz3: ld hl,0 +yesz3: ld (__z3env),hl +; +memok: + + ld c,12 + call 5 ;Check CP/M version + ld a,l + cp 30h + jr nc,iscpm3 + xor a ; CP/M 2.2 has no RSX + jr norsx + + ;If the PIPEMGR RSX is loaded, initialise it. +iscpm3: + ld c,3Ch + ld de,rsxpb + call 5 + ld a,h + inc l ;HL=00FFh if no PIPEMGR present. + or l +norsx: + ld (__piped),a + ld hl,(6) ;base address of fdos + + ld sp,hl ;stack grows downwards + ld de,__Lbss ;end of initialized data + scf + sbc hl,de ;size of uninitialized data area + ld c,l + ld b,h + dec bc + ld l,e + ld h,d + inc de + ld (hl),0 + ldir ;clear memory + ld hl,80h ;arg buf + ld c,(hl) ;size of buffer + ld b,0 + ld hl,0 + scf ;one for the road + sbc hl,bc ;negate it + add hl,sp + ld sp,hl ;allow space for args + ld de,0 ;flag end of args + push de + ld hl,80h ;address of argument buffer + add hl,bc ;bc has size of arg buffer + ld b,c + ex de,hl + ld hl,(6) + ld c,1 + dec hl + ld (hl),0 + inc b + jr 3f + +2: ld a,(de) + cp ' ' + dec de + jr nz,1f + xor a + push hl + inc c +1: dec hl + ld (hl),a +3: + djnz 2b + ld hl,nularg + push hl + ld hl,0 + add hl,sp + push hl + push bc + call _main + push hl + call _exit + jp p,0 + + psect data +nularg: defm 'main' + defb 0 +__z3env: + defw 0 +__piped: + defw 0 +rsxpb: defb 79h,1 + defw pipesgn +pipesgn: + defm 'PIPEMGR ' + + end reloc