Browse Source

CPM3/ZPM3 Cleanup

patch
Wayne Warthen 6 years ago
parent
commit
5e4e098f64
  1. 14
      ReadMe.txt
  2. 28
      Source/CPM3/@banks.txt
  3. 23
      Source/CPM3/Build.cmd
  4. 2
      Source/CPM3/Clean.cmd
  5. 27
      Source/CPM3/boot.z80
  6. 2
      Source/CPM3/genbnk.dat
  7. 2
      Source/CPM3/optbnk.lib
  8. 2
      Source/CPM3/optres.lib
  9. 2
      Source/CPM3/optzpm.lib
  10. BIN
      Source/Images/hd_cpm3/s0/u0/GENCPM.COM
  11. 7
      Source/Images/hd_cpm3/s0/u0/ROMWBW.TXT
  12. 51
      Source/Images/hd_zpm3/s0/u0/ROMWBW.TXT
  13. 20
      Source/Images/hd_zpm3/s0/u0/WBW.TXT
  14. BIN
      Source/Images/hd_zpm3/s0/u10/HELP.HLP
  15. BIN
      Source/Images/hd_zpm3/s0/u10/ZHELP.COM
  16. BIN
      Source/Images/hd_zpm3/s0/u15/gencpm.com
  17. 13
      Source/ZPM3/Build.cmd
  18. 2
      Source/ZPM3/Clean.cmd

14
ReadMe.txt

@ -191,6 +191,20 @@ the drive containing the CP/M 3 image and use the CPMLDR command
to load CP/M. It will ask you for the disk unit number containing
the CP/M 3 system files which are on the disk image you created.
ZPM3
----
Like CP/M 3, ZPM3 exists in an experimental state and is started
just like CP/M 3 above. Just use the zpm_hd.img file to create
your CF or SD Card. There is an issue with the ZPMLDR app used
to start ZPM. Instead, just use CPMLDR which works exactly the
same way.
Note that ZPM3 seems to be completely constrainted to use drive
A: as the boot drive. So, the RomWBW adaptation of ZPM3 will
"swap" the initial drive A: (typically RAM drive) with the
ZPM3 boot drive at startup.
ROM Customization
-----------------

28
Source/CPM3/@banks.txt

@ -1,28 +0,0 @@
COMMON 8F ??
CPMSYS 8E 00
HBIOS 8D ??
TPA 8C 01
BUFS 8B 02
8D:7000 -> 8E:0300
00 -> 8E
01 -> 8C
02 -> 8B
03 -> 8A
...
if bnk = 0, then hbbnk = 8EH (BID_USR)
else hbbnk = 8DH (BID_BIOS) - bnk
or a
jr z,bank0
neg ; 2 -> -2
add 8DH ; 8D - 2 = 8B
jp HBX_SETBNK
bank0:
ld a,(8EH)
jp HBX_SETBNK
ret

23
Source/CPM3/Build.cmd

@ -24,7 +24,7 @@ rem pause
rem Resident CPM3
echo.
echo.
echo *** Resident BIOS ***
echo *** Resident CPM3 BIOS ***
echo.
copy optres.lib options.lib
copy genres.dat gencpm.dat
@ -43,7 +43,7 @@ rem pause
rem Banked CPM3
echo.
echo.
echo *** Banked BIOS ***
echo *** Banked CPM3 BIOS ***
echo.
copy optbnk.lib options.lib
copy genbnk.dat gencpm.dat
@ -59,6 +59,25 @@ zx GENCPM -AUTO -DISPLAY
copy cpm3.sys cpm3bnk.sys
rem pause
rem Banked ZPM3
echo.
echo.
echo *** Banked ZPM3 BIOS ***
echo.
copy optzpm.lib options.lib
copy genbnk.dat gencpm.dat
zx RMAC -BIOSKRNL
zx RMAC -SCB
zx Z80ASM -BOOT/MF
zx Z80ASM -CHARIO/MF
zx Z80ASM -MOVE/MF
zx Z80ASM -DRVTBL/MF
zx Z80ASM -DISKIO/MF
zx LINK -ZPMBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO
rem zx GENCPM -AUTO -DISPLAY
rem copy cpm3.sys zpm3.sys
rem pause
rem *** Resident ***
rem copy cpm3res.sys cpm3.sys
rem copy genres.dat getcpm.dat

2
Source/CPM3/Clean.cmd

@ -3,7 +3,7 @@ setlocal
if exist bios3.spr del bios3.spr
if exist bnkbios3.spr del bnkbios3.spr
if exist swpbios3.spr del swpbios3.spr
if exist zpmbios3.spr del zpmbios3.spr
if exist *.rel del *.rel
if exist cpmldr.com del cpmldr.com
if exist *.err del *.err

27
Source/CPM3/boot.z80

@ -38,7 +38,7 @@ tpa$bank equ 0
if banked
; Clone page zero from bank 0 to additional banks
ld b,2 ; last bank
ld b,3 ; last bank
ld c,0 ; src bank
init$2:
push bc ; save bank id's
@ -250,7 +250,7 @@ stpsiz equ $ - stpimg
?ldccp:
if drvswap
if zpm
; Swap A: and system drive (make A: the system drive)
ld bc,(@dtbl) ; get drive A DPH
@ -614,6 +614,27 @@ bin2bcd1:
pop bc
ret
if zpm
signon$msg db 13,10,'ZPM3'
if banked
db ' [BANKED]'
endif
db ' on HBIOS v'
biosver
db 13,10,13,10,0
ccp$msg db 13,10,'BIOS Err on '
ccp$msg$drv db '?'
db ': No ZCCP.COM file',0
ccp$fcb db 0,'ZCCP ','COM',0,0,0,0
ds 16
fcb$nr db 0,0,0
else
signon$msg db 13,10,'CP/M v3.0'
if banked
db ' [BANKED]'
@ -631,6 +652,8 @@ ccp$fcb db 0,'CCP ','COM',0,0,0,0
ds 16
fcb$nr db 0,0,0
endif
@bootdu db 0
hdspv db 2 ; slices per volume for hard disks (must be >= 1)

2
Source/CPM3/genbnk.dat

@ -8,7 +8,7 @@ MEMTOP = FD
BNKSWT = Y
COMBAS = 80
LERROR = Y
NUMSEGS = 02
NUMSEGS = 03
MEMSEG00 = 01,43,00
MEMSEG01 = 0E,72,02
MEMSEG02 = 01,7F,03

2
Source/CPM3/optbnk.lib

@ -5,4 +5,4 @@ false equ not true
banked equ true
drvswap equ false
zpm equ false

2
Source/CPM3/optres.lib

@ -5,4 +5,4 @@ false equ not true
banked equ false
drvswap equ false
zpm equ false

2
Source/CPM3/optswp.lib → Source/CPM3/optzpm.lib

@ -6,4 +6,4 @@ false equ not true
banked equ true
drvswap equ true
zpm equ true

BIN
Source/Images/hd_cpm3/s0/u0/GENCPM.COM

Binary file not shown.

7
Source/Images/hd_cpm3/s0/u0/WBW.TXT → Source/Images/hd_cpm3/s0/u0/ROMWBW.TXT

@ -1,3 +1,10 @@
This is a generic CP/M 3 adaptation for RomWBW.
To start CP/M 3, first boot into CP/M 2.2 or ZSystem. Then
switch to the drive that contains the CP/M 3 hard disk image
and run CPMLDR. You will be prompted for the disk unit
of the CP/M 3 image.
With the following exceptions, the files in this directory
came from the CP/M 3 binary distribution on "The Unofficial
CP/M Web site" at http://www.cpm.z80.de/binary.html.

51
Source/Images/hd_zpm3/s0/u0/ROMWBW.TXT

@ -0,0 +1,51 @@
This is a generic ZPM3 adaptation for RomWBW.
To start ZPM3, first boot into CP/M 2.2 or ZSystem. Then
switch to the drive that contains the ZPM3 hard disk image
and run CPMLDR. You will be prompted for the disk unit
of the ZPM3 image.
You may notice that there is a ZPMLDR application on the
hard disk image. This application is equivalent to CPMLDR,
but it has some issues with the number of drives that
RomWBW supports. So, as indicated above, use CPMLDR to
launch ZPM3.
I have not found a way to make ZPM3 start up with any drive
other than A: as the system drive. So, during the load
process, the boot drive and drive A: are "swapped" so that
the boot drive is always drive A:. Use the ASSIGN
command after starting ZPM3 to see how the drives get
mapped.
Per ZPM3 standard, files are distributed across different
user areas depending on their usage. Normal applications
are in user 15. Help files in user 10. Configuration
files in user 14.
In addition to the applications provided in the ZPM3
distributio, the normal CP/M 3 files are included in user
area 15. A few typical ZCPR utility programs are also included
in user area 15:
- ALIAS
- ARUNZ
- ERASE
- HELPC (named ZHELP)
- LBREXT
- SALIAS
- SETPATH
- VERRROR
- VLU
- ZCNFG
- ERASE (named ZERASE)
- ZEX
- ZFILER
- ZP
- SHOW (named ZSHOW)
- ZXD
It is a bit confusing, but the ZPM3 system file is called CPM3.SYS.
This is the ZPM3 default configuration and I guess it is done this
way to maximize compatibility with CP/M 3. You will notice that
the startup banner will indicate ZPM3.

20
Source/Images/hd_zpm3/s0/u0/WBW.TXT

@ -1,20 +0,0 @@
This an experimental adaptation of ZPM3 for RomWBW.
Launch ZPM3 using CPMLDR. ZPMLDR is not working reliably
at this time.
I have not found a way to make ZPM3 start up with any drive
other than A: as the system drive. So, during the load
process, the boot drive and drive A: are "swapped" so that
the boot drive is always drive A:. Use the ASSIGN
command after starting ZPM3 to see how the drives get
mapped.
Per ZPM3 standard, files are distributed across different
user areas depending on their usage. Normal applications
are in user 15. Help files in user 10. Configuration
files in user 14.
ZSID6.COM is the original DRI ZSID distribution, but
patched to use RST 6 instead of RST 7 to avoid conflicting
with mode 1 interrupts.

BIN
Source/Images/hd_zpm3/s0/u10/HELP.HLP

Binary file not shown.

BIN
Source/Images/hd_zpm3/s0/u10/ZHELP.COM

Binary file not shown.

BIN
Source/Images/hd_zpm3/s0/u15/gencpm.com

Binary file not shown.

13
Source/ZPM3/Build.cmd

@ -9,14 +9,13 @@ set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/
copy ..\ZCCP\ccp.com .
copy ..\ZCCP\ccp.com zccp.com
copy ..\ZCCP\zinstal.zpm .
copy ..\ZCCP\startzpm.com .
copy ..\CPM3\genbnk.dat .
copy ..\CPM3\swpbios3.spr bnkbios3.spr
copy ..\CPM3\zpmbios3.spr bnkbios3.spr
copy ..\CPM3\gencpm.com .
copy ..\CPM3\biosldr.rel .
copy ..\CPM3\cpmldr.com .
rem ZPM Loader
@ -27,7 +26,7 @@ echo.
zx LINK -ZPMLDR[L100]=ZPM3LDR,BIOSLDR
rem pause
rem Banked CPM3
rem Banked ZPM3
echo.
echo.
echo *** Banked ZPM3 ***
@ -45,17 +44,19 @@ echo *** Update Disk Image ***
echo.
for %%f in (
zpmldr.com
cpmldr.com
autotog.com
clrhist.com
setz3.com
cpm3.sys
ccp.com
zccp.com
zinstal.zpm
startzpm.com
makedos.com
gencpm.dat
bnkbios3.spr
bnkbdos3.spr
resbdos3.spr
cpmldr.com
) do call :upd_img %%f
goto :eof

2
Source/ZPM3/Clean.cmd

@ -1,7 +1,7 @@
@echo off
setlocal
if exist ccp.com del ccp.com
if exist zccp.com del zccp.com
if exist *.sys del *.sys
if exist gencpm.dat del gencpm.dat
if exist loader.cim del loader.cim

Loading…
Cancel
Save