Changes

HDCPM

6,960 bytes added, 20 May
/* The MOUNT.COM utility */
 HDCPM is a Hard Disk boot loader for [[CP/M]] plus Plus, developed by d_kef<br />
You can read more about the development of the application here:<br />
* One not partitioned FAT16 or FAT32 formatted hard disk. You can place one to four CP/M disk image files in the root directory. Every disk image file is accessed as a separate hard disk by CP/M.
* One FAT16 or FAT32 and one to three CP/M formatted partitions. You can place one to four CP/M disk image files in the root directory of the FAT file system. Every disk image file is accessed as a separate hard disk by CP/M. CP/M disk images have priority over CP/M partitions so if you have three CP/M image files and three CP/M partitions then HDCPM will mount the three CP/M images and only the first CP/M partition. If the first partition on your hard disk is formatted to FAT16 or FAT32 then HDCPM expects to find the file CPMDSK01.IMG in the root directory. Failed to do so the system won't boot.
* For interfaces that use SD card or USB flash drive as a mass storage device ([[M4 Board]], [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/ USIfAC II] or , [http://www.tmtlogic.com/ Symbiface III] or [[Albireo]]) the only supported configuration is one to four CP/M disk image files in the root directory of the FAT file system.
Currently only the master IDE device can be accessed by HDCPM. The slave device is available to be used by your favourite DOS.<br />
HDCPM is compatible and can be used together with the [[Dobbertin Harddisc]].<br />
HDCPM has been developed with [[WinApe]] Z80 Assembler and was tested with [[WinApe]], [[CPCemu]], [http://www.roudoudou.com/ACE-DL/ ACE-DL] an Amstrad Plus 464 upgraded to 6128 and an Amstrad CPC 6128and an Amstrad CPC 464 with [https://www.cpcwiki.eu/index.php/Universal_512K_and_1MByte_RAM_Expansions Universal 512K RAM Expansion].<br />
Although every effort has been made to ensure that HDCPM works properly, there is a chance of hard disk data corruption in case of a stray bug in the code. So make a backup of your hard disk before installing and trying out the ROM. I'll not be held responsible for any data loss or damage to your hard disk.<br />
* HDCPM.BIN the executable binary file
* HDMGR.COM Hard Disk Manager utility
* MOUNT.COM Hard Disk mount utility
* RTC.COM RTC synchronization utility
* MAKEIMG.BAS CP/M image file creation utility
** [[SYMBiFACE II]]
** [[X-Mass]]
** [https://github.com/salafek/cyboard-for-cpc Cyboard]
** [[uIDE 16]] (base address = &FEF0)
** [[M4 Board]]
** [https:[USIFAC]] II//www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/ USIfAC II[[ULIfAC]]
** [http://www.tmtlogic.com/ Symbiface III]
** [[Albireo]] (SD card only)
* Compatible storage device with enough free space to accommodate the desirable CP/M hard disk configuration.
* Floppy disk drive for initialization of the file system.
* Only storage devices with LBA addressing are supported.
* Date stamps of CP/M disk image files are not maintained.
* In case a Dobbertin Harddisc is also used you can't change its drive letters (D, E, F, G) as they are hard coded in the Dobbertin driver. Use the HDMGR utility to assign other available drive letters to your IDE drive, images or partitions. If you use the same numbers letters for your IDE media then the corresponding HD20 partitions will be unavailable under CP/M. 
==How it works==
===Using the ROM===
HDCPM will then execute the following functions:<br />
* Search for a compatible mass storage interface.
* Initialize the mass storage interface if needed.
* Move the boot loader and the CP/M patcher to RAM.
* Mount 1 to 4 CP/M image files and/or partitions and perform fragmentation and size test.
* Read the boot sector of the 1st hard disk and learn about the DPB, presence and size of the .EMS file, the startup drive, the drive letters and the CP/M console colour scheme.
* Read the .EMS file from the reserved track and store it in RAM just as the normal CP/M Plus boot loader does.
* Move the top of TPA and transfer the hard disk driver, RTC driver (in case of |HDCPMT) and initialize the XDPH, DPB, ALV of the mounted hard disks to the memory area just below the normal BDOS base address. The newly inserted code will be handled by CP/M as if it was were a normal RSX.* Patch the floppy disk drive routines in case a FDC's not been found.
* Patch the SCB in order to change the startup/default drive.
* Patch the drive table records to reassign drive letters for floppy drives 1 and 2, hard disks 1,2,3,4 (if any) and ram drive if [[Dk'tronics memory expansion]] or [[Dobbertin Memory Expansion]] driver is present.
* Move the ALV of the Dk'tronics RAM disk if [[Z-System]] is has been detected.
* Patch the CP/M console with the desired colour scheme.
* Patch the system message.
end
<br />
HDCPM is not FAT aware. It utilizes code to search in the root directory of a FAT formatted medium in order to find the CP/M image files. Then it finds the LBA of the first sector of each file and passes it to the CP/M hard disk driver. The CP/M hard disk driver doesn't know anything about FAT or image files. It accesses the image file as if it was were a real hard disk. It works on the sector level with LBA addressing so it expects the 'hard disk' to be a continuous block of sectors.<br />A CP/M image file can easily become fragmented during its creation, especially if the hard disk is nearly full. I advice you to create/copy your CP/M image files to your FAT formatted hard disk/partition while it is still empty. [https://www.cpcwiki.eu/index.php/Albireo Albireo] incorporates a file management IC that performs FAT file system operations and handles fragmented files properly. In such case fragmented image files is not a problem. HDCPM will never fragment a CP/M image file.<br />
{|
|-
==CP/M Plus disk/partitions==
You can also create one or more partitions in order to format them to [http://www.seasip.info/Cpm/format31.html CP/M-80] and use them exclusively for CP/M. In such case you must make sure that the size of the partition is big enough to accommodate your file system.<br />
HDCPM examines the hard disk's MBR upon start and finds the partition information. Then it finds the LBA of the first sector of each partition and passes it to the CP/M hard disk driver. The CP/M hard disk driver doesn't know anything about partitions. It accesses the partition as if it was were a real hard disk.<br />
HDCPM can't be used to partition your hard disk. In order to create partitions you must connect the hard disk to a modern computer and use its partitioning utility.<br />
Use the command |HDDEF to find the exact length of the file system/partition. When you have created the partition use the HDMGR.COM utility in order to format it.<br />
===Using the ROM===
* Install the HDCPM ROM in a free ROM slot of your ROM box.
* Plug in your [[SYMBiFACE II]] compatible IDE mass storage interface, [[uIDE 16]], [[M4 Board]] or [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/ USIfAC II] and attach the proper mass storage device.* Power on your Amstrad. You should see the ROM initialization message: ''CP/M+ Hard Disk boot loader v1.04 (S2)''. The type of interface found will be show shown inside the parentheses:<br />
** (S2): [[SYMBiFACE II]] compatible interface
** (uI): [[uIDE 16]] interface
** (M4): [[M4 Board]]
** (US): [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/ USIfAC II]
** (S3): [http://www.tmtlogic.com/ Symbiface III]** (AL): [[Albireo]]<br />
{|
|-
|[[File:hdcpm-ui.png|thumb|HDCPM ROM - uIDE-16]]
|[[File:hdcpm-m4.png|thumb|HDCPM ROM - M4 Board]]
|}
{|
|[[File:hdcpm-us.png|thumb|HDCPM ROM - USIfAC II]]
|[[File:hdcpm-s3.png|thumb|HDCPM ROM - Symbiface III]]
|[[File:hdcpm-al.png|thumb|HDCPM ROM - Albireo]]
|}
In case a RTC is detected you will also see the RTC initialization message and the current date and time: ''RTC found: 2021/01/01 12:01:01''
===Using the binary===
* Plug in your [[SYMBiFACE II]] compatible IDE mass storage interface, [[uIDE 16]], [[M4 Board]] or [https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/usifac-iimake-your-pc-or-usb-stick-an-hdd-for-amstrad-access-dsk-and-many-more!/ USIfAC II] and attach the proper mass storage device.
* Use your original CP/M Plus system disk set to Boot CP/M Plus.
* Use the provided HDMGR.COM utility in order to format the disk image or partition and transfer the .EMS file to the reserved track. Change the start-up drive letter to that of your first CP/M hard disk.
You can use this utility to get information about your hard disk geometry, disk image files, partitions and boot sector. You have to use this utility to format a hard disk, disk image file or partition to CP/M format or manipulate the boot sector of the hard disk and/or transfer an .EMS system file to the reserved track of the hard disk.<br />
The boot sector contains information about the CP/M disk drive letters, start-up drive and console colour scheme. All those properties can be changed with HDMGR.COM.<br />
HDMGR will perform a fragmentation test of the discovered CP/M hard disk image files uppon execution(not for Albireo).<br />
You can't use this utility to re-partition your hard disk or make a new CP/M image file or manipulate a file system other than CP/M.<br />
The HDMGR.COM utility is self explanatory. Just run it from the CP/M command prompt.<br />
==The RTC.COM utility==
If you need the 470 bytes of RAM that the integrated RTC driver occupies then you You can make use of the RTC.COM utility in order to keep CP/M date and time updated.<br />You can synchronize the date and time of CP/M Plus with the RTC by running ''RTC -G'' manually or via your PROFILE.SUB.<br />You can also set your RTC to the current CP/M date and time by running ''RTC -S''(not for M4 board)<br />You can see the detected RTC interface type by running ''RTC -I''<br />Currently RTC.COM works with the RTC found in Symbiface II, Symbiface III, M4 board (read only) and [[Nova]].<br />DATE.COM, DIR.COM and SHOW.COM commands, patched for Year 2000 compatibility can be downloaded from the [http://www.cpm.z80.de/binary.html CP/M source archive - Digital Research Binary files section] .<br /> ==The MOUNT.COM utility==You can use the MOUNT.COM utility in order to list the mounted CP/M disks, list the available CP/M disks in your mass storage medium and mount a new disk in one of the four available mount points.<br />You can get a list of the already mounted CP/M disks by running ''MOUNT'' without any parameters.<br />You can get a list of the available CP/M disk images or partitions by running ''MOUNT -L''<br />You can mount one of the available CP/M disk images or partitions by running ''MOUNT <mount point>,<hard disk>'' where <mount point> is a number from 1 to 4 indicating the HDCPM disk number and <hard disk> is a two digit number from 00 to 99 for CPMDSK00.IMG to CPMDSK99.IMG respectively, or P1 to P4 for partition 1 to partition 4 respectively.<br />{||-|[[File:Hdcpm-mount-1.png|thumb|MOUNT Help]]|[[File:Hdcpm-mount-2.png|thumb|MOUNT Display mounted disks]]|[[File:Hdcpm-mount-3.png|thumb|MOUNT List available disks]]|}
==Error messages==
===ROM checksum error===
* ''*** HDCPM ROM checksum error ***
The ROM has failed the checksum test.
The contents are probably corrupted. The ROM will not be initialized.
 
===Hard disk errors===
* ''*** No mass storage found ***''
* ''ERROR: DISK I/O''
I/O error occurred during the last read/write operation.
Your hard disk might be defect or the USB disk is not enabled.
The .EMS system file that was loaded from the system track is not
compatible with HDCPM.
===RTC errors===
* ''*** Battery depleted ***''
<br />
==Release info& download==
{| class="wikitable"
|-
|| [[Media:hdcpm103.dsk|hdcpm103.dsk]]
|-
| v1.04 June 2022|| HDCPM.ROMBIN: code optimizationadded executable binary file version of HDCPM.<br />
HDCPM.DOC: various additions and corrections.<br />
HDCPM.BINROM: added executable binary file version of HDCPMcode optimization.
|| [[Media:hdcpm104.dsk|hdcpm104.dsk]]
|-
| v1.05 July 2022 || HDCPM.ROM, HDCPM.BIN, HDMGR.COM: added support for Symbiface III.<br />
HDCPM.ROM, HDCPM.BIN: code optimization.<br />
HDMGR.COM: Hardware info added for USIfAC II<br />
HDCPM.DOC: various additions and corrections.
|| [[Media:hdcpm105.dsk|hdcpm105.dsk]]
|-
| v1.06 January 2023 || HDCPM.ROM, HDCPM.BIN, HDMGR.COM: added support for Albireo.<br />
RTC.COM: added support for M4 Board (r/o) and Symbiface 3.<br />
HDCPM.ROM, HDCPM.BIN: (bug fix) CPC was freezing after mounting the CP/M disk(s) with incompatible .EMS file.<br />
HDMGR.COM: (bug fix) the Stack was overflowed in some rare cases.<br />
HDCPM.DOC: various additions and corrections.<br />
|| [[Media:hdcpm106.dsk|hdcpm106.dsk]]
|-
| v1.10 September 2023 || HDCPM.ROM, HDCPM.BIN: added support for CPC464 with &C3 mode compatible RAM expansion card.<br />
HDCPM.ROM, HDCPM.BIN: can now boot CP/M Plus on a CPC that has no or faulty Floppy Disc Controller present.<br />
HDCPM.ROM: ROM checksum test and new error message added.<br />
HDCPM.ROM: removed blank line from ROM initialization message.<br />
HDCPM.ROM, HDCPM.BIN, HDMGR.COM: code optimization.<br />
HDCPM.ROM, HDCPM.BIN: (bug fix) incorrect patching would corrupt the Dobbertin RAM drive on CP/M Plus v1.1<br />
HDCPM.ROM: (bug fix) |HDDPB was displaying wrong values<br />
HDMGR.COM: (bug fix) a corruption of the MBR of USB/SD card occured in some rare cases.<br />
HDCPM.DOC: various additions and corrections.<br />
|| [[Media:hdcpm110.dsk|hdcpm110.dsk]]
|-
| v1.11 April 2024 || HDCPM.ROM, HDCPM.BIN: CP/M (virtual) disks are now treated as removable.<br />
HDCPM.ROM, HDCPM.BIN, HDMGR.COM: code optimization.<br />
HDCPM.ROM, HDCPM.BIN: (bug fix) uIDE driver was corrupted.<br />
HDMGR.COM: (bug fix) CP/M disk image information could skip an image file.<br />
HDMGR.COM: More than 8 .EMS files can be displayed and selected.<br />
RTC.COM: added support for NOVA, added option to display the RTC interface type.<br />
MOUNT.COM: added utility to list and mount CP/M (virtual) disks.<br />
HDCPM.DOC: various additions and corrections.<br />
|| [[Media:hdcpm111.dsk|hdcpm111.dsk]]
|}
==DownloadsOther downloads==
*[[Media:CPMDSK01&02.zip|CP/M disk images]] - CPMDSK01.IMG is bootable and contains all the files of the 3 CP/M Plus system disks and year 2000 compliant binaries downloaded from the [http://www.cpm.z80.de/binary.html Digital Research Binary Files]. CPMDSK02.IMG is empty and can also be used as a template.<br />
*[[Media:Z3Plus.part1.rar|ZPM3+ZCCP disk image part 1]] , [[Media:Z3Plus.part2.rar|ZPM3+ZCCP disk image part 2]] - The Amstrad BDOS and CCP have been replaced with their counterparts [https://github.com/wwarthen/CPU280/tree/master/ZPM3/zpm3.txt ZPM3] and [https://github.com/wwarthen/CPU280/tree/master/ZCCP/zccp.txt ZCCP] written by Simeon Cran and Randy Winchester respectively. It is [https://www.cpcwiki.eu/index.php/Z-System Z-system, Z3Plus] compatible and contains the Z3Plus system files, all the files of the 3 CP/M Plus system disks, year 2000 compliant binaries and also contains some useful tools, help files and manuals.<br />
*[[Media:CPMDSK04.zip|EMS Files]] - CPMDSK04.IMG contains a collection of HDCPM compatible EMS files (see table below) and the latest HDMGR.COM
{| class="wikitable"
|-
! EMS file !! BDOS !! CCP !! BIOS !! Extras !! Description
|-
| C10CPM3.EMS || Digital Research || Digital Research || Amstrad v1.0 || - || Original Amstrad CP/M Plus for CPC
|-
| C11CPM3.EMS || Digital Research || Digital Research || Amstrad v1.1 || - || Original Amstrad CP/M Plus for CPC
|-
| C10ZPM3.EMS || ZPM3 by Simeon Cran || Digital Research || Amstrad v1.0 || - || The BDOS has been replaced by ZPM3 written in Z80 assembly
|-
| C11ZPM3.EMS || ZPM3 by Simeon Cran || Digital Research || Amstrad v1.1 || - || The BDOS has been replaced by ZPM3 written in Z80 assembly
|-
| CPM3SEMI.EMS || Digital Research || Digital Research || Amstrad v1.0 || Dk'tronics RAM drive || Patched with Dk'tronics memory expansion driver
|-
| ZPM3SEMI.EMS || ZPM3 by Simeon Cran || Digital Research || Amstrad v1.0 || Dk'tronics RAM drive || Patched with Dk'tronics memory expansion driver and ZPM3
|-
| C10ZCPR3.EMS || ZPM3 by Simeon Cran || ZCCP by Randy Winchester || Amstrad v1.0 || - || The BDOS has been replaced by ZPM3 and the CCP has been replaced by ZCCP, both written in Z80 assembly. Z-system/Z3Plus compatible. <b>Strartup and default drive must be drive A: (use HDMGR.COM to change). Also several Z-system files must be present ([https://github.com/wwarthen/CPU280/tree/master/ZCCP/zccp.txt read ZCCP.TXT])</b>
|-
| ZCPR3SEM.EMS || ZPM3 by Simeon Cran || ZCCP by Randy Winchester || Amstrad v1.0 || Dk'tronics RAM drive || The BDOS has been replaced by ZPM3 and the CCP has been replaced by ZCCP, both written in Z80 assembly. Z-system/Z3Plus compatible. Patched with Dk'tronics memory expansion driver. <b>Strartup and default drive must be drive A: (use HDMGR.COM to change). Also several Z-system files must be present ([https://github.com/wwarthen/CPU280/tree/master/ZCCP/zccp.txt read ZCCP.TXT]) </b>
|-
| D10CPM3.EMS || Digital Research || Digital Research || Amstrad v1.0 || Dobbertin RAM Drive || Patched with Dobbertin memory expansion driver
|-
| D11CPM3.EMS || Digital Research || Digital Research || Amstrad v1.1 || Dobbertin RAM Drive || Patched with Dobbertin memory expansion driver
|-
| DX10CPM3.EMS || Digital Research || Digital Research || Amstrad v1.0 || Dobbertin RAM Drive, Vortex format drive B: || Patched with Dobbertin memory expansion driver. Supports Vortex formatted, 80 track, double side floppies, in drive B:
|-
| DX11CPM3.EMS || Digital Research || Digital Research || Amstrad v1.1 || Dobbertin RAM Drive, Vortex format drive B: || Patched with Dobbertin memory expansion driver. Supports Vortex formatted, 80 track, double side floppies, in drive B:
|-
|}
==Videos==
* [https://youtu.be/em7dHOdaylg How to create a CP/M image file under SYMBOS]
<br />
[[category:Expansion ROM]] [[category:Software]] [[category:Applications]] [[category:CP/M]] [[category:DSK images]]
181
edits