|
|
@ -535,7 +535,7 @@ |
|
|
<p><strong>RomWBW User Guide</strong> \ |
|
|
<p><strong>RomWBW User Guide</strong> \ |
|
|
Version 3.6 \ |
|
|
Version 3.6 \ |
|
|
Wayne Warthen (<a href="mailto:wwarthen@gmail.com">wwarthen@gmail.com</a>) \ |
|
|
Wayne Warthen (<a href="mailto:wwarthen@gmail.com">wwarthen@gmail.com</a>) \ |
|
|
08 Jul 2025</p> |
|
|
|
|
|
|
|
|
18 Jul 2025</p> |
|
|
<h4 id="preface">Preface</h4> |
|
|
<h4 id="preface">Preface</h4> |
|
|
<p>This document is a general usage guide for the RomWBW software and is |
|
|
<p>This document is a general usage guide for the RomWBW software and is |
|
|
generally the best place to start with RomWBW.</p> |
|
|
generally the best place to start with RomWBW.</p> |
|
|
@ -1563,10 +1563,10 @@ disk.</p> |
|
|
any operating system you choose to run. Disk storage is available |
|
|
any operating system you choose to run. Disk storage is available |
|
|
whether you boot your OS from ROM or from the disk media itself.</p> |
|
|
whether you boot your OS from ROM or from the disk media itself.</p> |
|
|
<h2 id="drive-letter-assignment">Drive Letter Assignment</h2> |
|
|
<h2 id="drive-letter-assignment">Drive Letter Assignment</h2> |
|
|
<p>In legacy CP/M operating systems only 16 drive letters (A:-P:) available |
|
|
|
|
|
to be assigned to disks Drive letters were generally mapped to disk |
|
|
|
|
|
drives in a completely fixed way. For example, drive A: would <strong>always</strong> |
|
|
|
|
|
refer to the first floppy disk drive.</p> |
|
|
|
|
|
|
|
|
<p>In CP/M operating systems only 16 drive letters (A:-P:) available to be |
|
|
|
|
|
assigned to disks Drive letters were generally mapped to disk drives in |
|
|
|
|
|
a completely fixed way. For example, drive A: would <strong>always</strong> refer to |
|
|
|
|
|
the first floppy disk drive.</p> |
|
|
<p>RomWBW implements a much more flexible drive letter assignment mechanism |
|
|
<p>RomWBW implements a much more flexible drive letter assignment mechanism |
|
|
so that any drive letter can dynamically be assigned to any disk device, |
|
|
so that any drive letter can dynamically be assigned to any disk device, |
|
|
or slice of media.</p> |
|
|
or slice of media.</p> |
|
|
@ -1727,8 +1727,8 @@ you can use the CP/M 2.2 <code>STAT</code> command to display information includ |
|
|
the number of “32 Byte Directory Entries” for a drive letter on the |
|
|
the number of “32 Byte Directory Entries” for a drive letter on the |
|
|
corresponding hard disk.</p> |
|
|
corresponding hard disk.</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>If it indicates 512, your disk layout is legacy (hd512). </li> |
|
|
|
|
|
<li>If it indicates 1024, your disk layout is modern (hd1k).</li> |
|
|
|
|
|
|
|
|
<li>If it indicates 512, your disk layout is Classic (hd512). </li> |
|
|
|
|
|
<li>If it indicates 1024, your disk layout is Modern (hd1k).</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<p>Here is an example of checking the disk layout.</p> |
|
|
<p>Here is an example of checking the disk layout.</p> |
|
|
<pre><code>B>STAT E:DSK: |
|
|
<pre><code>B>STAT E:DSK: |
|
|
@ -1841,12 +1841,12 @@ system.</p> |
|
|
<p>Two hard disk layout schemes exist:</p> |
|
|
<p>Two hard disk layout schemes exist:</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>Modern (hd1k)</li> |
|
|
<li>Modern (hd1k)</li> |
|
|
<li>Legacy (hd512)</li> |
|
|
|
|
|
|
|
|
<li>Classic (hd512)</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<p>You <strong>cannot</strong> mix disk layouts on a single disk device, however It is |
|
|
<p>You <strong>cannot</strong> mix disk layouts on a single disk device, however It is |
|
|
perfectly fine for one system to have multiple hard disks with different |
|
|
perfectly fine for one system to have multiple hard disks with different |
|
|
layouts – each physical disk device is handled separately.</p> |
|
|
layouts – each physical disk device is handled separately.</p> |
|
|
<p>If you are setting up a new disk, the modern (hd1k) layout is |
|
|
|
|
|
|
|
|
<p>If you are setting up a new disk, the Modern (hd1k) layout is |
|
|
recommended for the following reasons:</p> |
|
|
recommended for the following reasons:</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>Larger number of directory entries per filesystem</li> |
|
|
<li>Larger number of directory entries per filesystem</li> |
|
|
@ -1854,8 +1854,8 @@ recommended for the following reasons:</p> |
|
|
<li>Reduces chances of data corruption</li> |
|
|
<li>Reduces chances of data corruption</li> |
|
|
<li>Each slice occupies exactly 8MB (an exact power of 2) in size</li> |
|
|
<li>Each slice occupies exactly 8MB (an exact power of 2) in size</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<p>Both the legacy and modern disk layouts continue to be fully supported |
|
|
|
|
|
by RomWBW. There are no plans to deprecate the legacy layout.</p> |
|
|
|
|
|
|
|
|
<p>Both the classic and modern disk layouts continue to be fully supported |
|
|
|
|
|
by RomWBW. There are no plans to deprecate the classic layout.</p> |
|
|
<h4 id="modern-layout">Modern Layout</h4> |
|
|
<h4 id="modern-layout">Modern Layout</h4> |
|
|
<p>RomWBW (Starting with v3.2) supports the use of disk partitioning, |
|
|
<p>RomWBW (Starting with v3.2) supports the use of disk partitioning, |
|
|
utilising a Master Boot Record (MBR) partition tables. The Wikipedia |
|
|
utilising a Master Boot Record (MBR) partition tables. The Wikipedia |
|
|
@ -1867,25 +1867,26 @@ not equate to any existing well-known partition types – it was chosen |
|
|
because it is not generally used. RomWBW does not support extended |
|
|
because it is not generally used. RomWBW does not support extended |
|
|
partitions – only a single primary partition can be used.</p> |
|
|
partitions – only a single primary partition can be used.</p> |
|
|
<p>The existence of a partition table entry for RomWBW on a hard disk makes |
|
|
<p>The existence of a partition table entry for RomWBW on a hard disk makes |
|
|
it behave in the modern mode. Removing the RomWBW partition entry from a |
|
|
|
|
|
modern hard disk layout will cause the existing data to be unavailable |
|
|
|
|
|
and/or corrupted</p> |
|
|
|
|
|
|
|
|
it behaves in the modern disk layout mode. Removing the RomWBW partition |
|
|
|
|
|
entry from a modern hard disk layout will cause the existing data to be |
|
|
|
|
|
unavailable and/or corrupted</p> |
|
|
<p>The CP/M filesystem in the slices of the modern disk layout contain 1024 |
|
|
<p>The CP/M filesystem in the slices of the modern disk layout contain 1024 |
|
|
directory entries.</p> |
|
|
directory entries.</p> |
|
|
<h4 id="legacy-layout">Legacy Layout</h4> |
|
|
|
|
|
|
|
|
<h4 id="classic-layout">Classic Layout</h4> |
|
|
<p>Originally, RomWBW always used the very start of the hard disk media for |
|
|
<p>Originally, RomWBW always used the very start of the hard disk media for |
|
|
the location of the slices. In this layout, slice 0 referred to the |
|
|
the location of the slices. In this layout, slice 0 referred to the |
|
|
first chunk of ~8MB on the disk, slice 1 referred to the second chunk of |
|
|
first chunk of ~8MB on the disk, slice 1 referred to the second chunk of |
|
|
~8MB on the disk, and so on. The number of slices is limited to the size |
|
|
~8MB on the disk, and so on. The number of slices is limited to the size |
|
|
of the disk media – if you attempted to read/write to a slice that would |
|
|
of the disk media – if you attempted to read/write to a slice that would |
|
|
exceed the disk size, you would see I/O errors.</p> |
|
|
exceed the disk size, you would see I/O errors.</p> |
|
|
<p>The legacy format takes steps to allow a partition table to still be |
|
|
|
|
|
used for other types of filesystems such as DOS/FAT. It just does not |
|
|
|
|
|
|
|
|
<p>The classic disk layout takes steps to allow a partition table to still |
|
|
|
|
|
be used for other types of filesystems such as DOS/FAT. It just does not |
|
|
use a partition table entry to determine the start of the RomWBW slices.</p> |
|
|
use a partition table entry to determine the start of the RomWBW slices.</p> |
|
|
<p>The lack of a RomWBW partition table entry will cause legacy behaviour. |
|
|
|
|
|
Adding a partition table entry on an existing legacy RomWBW hard disk |
|
|
|
|
|
will cause the existing data to be unavailable and/or corrupted.</p> |
|
|
|
|
|
<p>The CP/M filesystem in the slices of the legacy disk layout contain 512 |
|
|
|
|
|
|
|
|
<p>The lack of a RomWBW partition table entry will cause the classic disk |
|
|
|
|
|
layout to be used. Adding a partition table entry on an existing classic |
|
|
|
|
|
RomWBW hard disk will cause the existing data to be unavailable and/or |
|
|
|
|
|
corrupted.</p> |
|
|
|
|
|
<p>The CP/M filesystem in the slices of the classic disk layout contain 512 |
|
|
directory entries.</p> |
|
|
directory entries.</p> |
|
|
<h3 id="hard-disk-slices">Hard Disk Slices</h3> |
|
|
<h3 id="hard-disk-slices">Hard Disk Slices</h3> |
|
|
<p>RomWBW implements a mechanism called slicing to allow multiple CP/M |
|
|
<p>RomWBW implements a mechanism called slicing to allow multiple CP/M |
|
|
@ -1958,9 +1959,9 @@ letter will result in a “no disk” error from the operating system.</p> |
|
|
<p>The exact number of CP/M filesystem slices that will fit on your |
|
|
<p>The exact number of CP/M filesystem slices that will fit on your |
|
|
specific physical hard disk can be determined as follows:</p> |
|
|
specific physical hard disk can be determined as follows:</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>For modern (hd1k) disk layouts, it is 1024KB + (slices * 8192KB). Or |
|
|
|
|
|
|
|
|
<li>For Modern (hd1k) disk layouts, it is 1024KB + (slices * 8192KB). Or |
|
|
equivalent to say 1MB + (slices * 8MB).</li> |
|
|
equivalent to say 1MB + (slices * 8MB).</li> |
|
|
<li>For legacy (hd512) disk layouts, it is slices * 8,320KB.</li> |
|
|
|
|
|
|
|
|
<li>For Classic (hd512) disk layouts, it is slices * 8,320KB.</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<p><strong>WARNING</strong>: In this document KB means 1024 bytes and MB means 1048576 |
|
|
<p><strong>WARNING</strong>: In this document KB means 1024 bytes and MB means 1048576 |
|
|
bytes (frequently expressed as KiB and MiB in modern terminology). In |
|
|
bytes (frequently expressed as KiB and MiB in modern terminology). In |
|
|
@ -2089,9 +2090,9 @@ RomWBW system. The following instructions are one way to proceed. This |
|
|
does not mean to imply it is the only possible way.</p> |
|
|
does not mean to imply it is the only possible way.</p> |
|
|
<p>First you need to understand</p> |
|
|
<p>First you need to understand</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>The disk layout approach (either hd1k or the legacy hd512). See <a href="#hard-disk-layouts">Hard |
|
|
|
|
|
Disk Layouts</a> section if you are not sure. hd1k |
|
|
|
|
|
should be the preferred layout.</li> |
|
|
|
|
|
|
|
|
<li>The disk layout approach (either the Modern hd1k or the Classic |
|
|
|
|
|
hd512). See <a href="#hard-disk-layouts">Hard Disk Layouts</a> section if you are |
|
|
|
|
|
not sure. hd1k should be the preferred layout.</li> |
|
|
<li>The number of 8MB slices that you want to allocate, preferred is 64 |
|
|
<li>The number of 8MB slices that you want to allocate, preferred is 64 |
|
|
slices. At least 1 slice of 8MB is required</li> |
|
|
slices. At least 1 slice of 8MB is required</li> |
|
|
<li>If you want to leave space for a FAT partition. See <a href="#fat-filesystem-preparation">FAT Filesystem |
|
|
<li>If you want to leave space for a FAT partition. See <a href="#fat-filesystem-preparation">FAT Filesystem |
|
|
@ -2116,7 +2117,7 @@ number was assigned at boot See <a href="#device-unit-assignments">Device Unit |
|
|
Assignments</a></p> |
|
|
Assignments</a></p> |
|
|
<p>Refer to <a href="../Applications/">RomWBW Applications</a> for more information on |
|
|
<p>Refer to <a href="../Applications/">RomWBW Applications</a> for more information on |
|
|
use of the <code>FDISK80</code> utility.</p> |
|
|
use of the <code>FDISK80</code> utility.</p> |
|
|
<p>If you want to use the legacy hd512 layout skip down to the <a href="#legacy-hd512">Legacy |
|
|
|
|
|
|
|
|
<p>If you want to use the Classic (hd512) layout skip down to the <a href="#classic-hd512">Classic |
|
|
(hd512)</a> section</p> |
|
|
(hd512)</a> section</p> |
|
|
<h4 id="modern-hd1k">Modern (hd1k)</h4> |
|
|
<h4 id="modern-hd1k">Modern (hd1k)</h4> |
|
|
<p>At this point, use the <code>I</code> command to initialize (reset) the partition |
|
|
<p>At this point, use the <code>I</code> command to initialize (reset) the partition |
|
|
@ -2172,12 +2173,12 @@ FDISK exit. |
|
|
<p>At this point, it is best to restart your system to make sure that the |
|
|
<p>At this point, it is best to restart your system to make sure that the |
|
|
operating system is aware of the partition table updates. Start CP/M 2.2 |
|
|
operating system is aware of the partition table updates. Start CP/M 2.2 |
|
|
or Z-System from ROM again.</p> |
|
|
or Z-System from ROM again.</p> |
|
|
<h4 id="legacy-hd512">Legacy (hd512)</h4> |
|
|
|
|
|
|
|
|
<h4 id="classic-hd512">Classic (hd512)</h4> |
|
|
<p>At this point, use the <code>I</code> command to initialize (reset) the partition |
|
|
<p>At this point, use the <code>I</code> command to initialize (reset) the partition |
|
|
table to an empty state.</p> |
|
|
table to an empty state.</p> |
|
|
<p>To use the hd512 layout, use <code>W</code> to write the empty table to the disk |
|
|
<p>To use the hd512 layout, use <code>W</code> to write the empty table to the disk |
|
|
and exit. Remember that the lack of a partition for RomWBW implies the |
|
|
and exit. Remember that the lack of a partition for RomWBW implies the |
|
|
legacy (hd512) layout.</p> |
|
|
|
|
|
|
|
|
Classic (hd512) layout.</p> |
|
|
<p>At this point, it is best to restart your system to make sure that the |
|
|
<p>At this point, it is best to restart your system to make sure that the |
|
|
operating system is aware of the partition table updates. Start CP/M 2.2 |
|
|
operating system is aware of the partition table updates. Start CP/M 2.2 |
|
|
or Z-System from ROM again.</p> |
|
|
or Z-System from ROM again.</p> |
|
|
@ -2356,8 +2357,8 @@ The following table shows the disk images available.</p> |
|
|
portion of the filename will be:</p> |
|
|
portion of the filename will be:</p> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>“fd_” for a floppy image.</li> |
|
|
<li>“fd_” for a floppy image.</li> |
|
|
<li>“hd1k_” for a modern layout hard disk image.</li> |
|
|
|
|
|
<li>“hd512_” for a legacy layout hard disk image.</li> |
|
|
|
|
|
|
|
|
<li>“hd1k_” for a Modern layout hard disk image.</li> |
|
|
|
|
|
<li>“hd512_” for a Classic layout hard disk image.</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<p>In the case of xxx_dos65.img, only an hd512 variant is provided. This is |
|
|
<p>In the case of xxx_dos65.img, only an hd512 variant is provided. This is |
|
|
a constraint of the DOS65 distribution.</p> |
|
|
a constraint of the DOS65 distribution.</p> |
|
|
@ -2423,8 +2424,9 @@ below.</p> |
|
|
<th></th> |
|
|
<th></th> |
|
|
<th style="text-align: right;"><strong>— Modern (hd1k) —</strong></th> |
|
|
<th style="text-align: right;"><strong>— Modern (hd1k) —</strong></th> |
|
|
<th style="text-align: right;"></th> |
|
|
<th style="text-align: right;"></th> |
|
|
<th style="text-align: right;"><strong>— Legacy (hd512) —</strong></th> |
|
|
|
|
|
|
|
|
<th style="text-align: right;"><strong>— Classic (hd512) —</strong></th> |
|
|
<th style="text-align: right;"></th> |
|
|
<th style="text-align: right;"></th> |
|
|
|
|
|
<th></th> |
|
|
</tr> |
|
|
</tr> |
|
|
</thead> |
|
|
</thead> |
|
|
<tbody> |
|
|
<tbody> |
|
|
@ -2434,6 +2436,7 @@ below.</p> |
|
|
<td style="text-align: right;">Sector(s)</td> |
|
|
<td style="text-align: right;">Sector(s)</td> |
|
|
<td style="text-align: right;">Byte(s)</td> |
|
|
<td style="text-align: right;">Byte(s)</td> |
|
|
<td style="text-align: right;">Sector(s)</td> |
|
|
<td style="text-align: right;">Sector(s)</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
<tr> |
|
|
<tr> |
|
|
<td>RomWBW Partition Start</td> |
|
|
<td>RomWBW Partition Start</td> |
|
|
@ -2441,6 +2444,7 @@ below.</p> |
|
|
<td style="text-align: right;">2,048</td> |
|
|
<td style="text-align: right;">2,048</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
<tr> |
|
|
<tr> |
|
|
<td>RomWBW Partition Size</td> |
|
|
<td>RomWBW Partition Size</td> |
|
|
@ -2448,6 +2452,7 @@ below.</p> |
|
|
<td style="text-align: right;">1,048,576</td> |
|
|
<td style="text-align: right;">1,048,576</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
<td style="text-align: right;">–</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
<tr> |
|
|
<tr> |
|
|
<td>FAT Filesystem Start</td> |
|
|
<td>FAT Filesystem Start</td> |
|
|
@ -2455,6 +2460,7 @@ below.</p> |
|
|
<td style="text-align: right;">1,050,624</td> |
|
|
<td style="text-align: right;">1,050,624</td> |
|
|
<td style="text-align: right;">520 MB</td> |
|
|
<td style="text-align: right;">520 MB</td> |
|
|
<td style="text-align: right;">1,064,960</td> |
|
|
<td style="text-align: right;">1,064,960</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
<tr> |
|
|
<tr> |
|
|
<td>FAT Filesystem Size</td> |
|
|
<td>FAT Filesystem Size</td> |
|
|
@ -2462,6 +2468,7 @@ below.</p> |
|
|
<td style="text-align: right;">786,432</td> |
|
|
<td style="text-align: right;">786,432</td> |
|
|
<td style="text-align: right;">384 MB</td> |
|
|
<td style="text-align: right;">384 MB</td> |
|
|
<td style="text-align: right;">786,432</td> |
|
|
<td style="text-align: right;">786,432</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
<tr> |
|
|
<tr> |
|
|
<td>\<end></td> |
|
|
<td>\<end></td> |
|
|
@ -2469,6 +2476,7 @@ below.</p> |
|
|
<td style="text-align: right;">1,851,392</td> |
|
|
<td style="text-align: right;">1,851,392</td> |
|
|
<td style="text-align: right;">904 MB</td> |
|
|
<td style="text-align: right;">904 MB</td> |
|
|
<td style="text-align: right;">1,837,056</td> |
|
|
<td style="text-align: right;">1,837,056</td> |
|
|
|
|
|
<td></td> |
|
|
</tr> |
|
|
</tr> |
|
|
</tbody> |
|
|
</tbody> |
|
|
</table> |
|
|
</table> |
|
|
|