diff --git a/Doc/Hard Disk Anatomy.pdf b/Doc/Hard Disk Anatomy.pdf index a65a9912..fda44f88 100644 Binary files a/Doc/Hard Disk Anatomy.pdf and b/Doc/Hard Disk Anatomy.pdf differ diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index f8e09a8a..76cb0f10 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index c192d02b..e59af822 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index a834a386..17f40fa7 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index b5a34724..cfe44890 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 3d74f83e..2e53dfbd 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/ReadMe.md b/ReadMe.md index 0af2d378..fdc9d865 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -31 Jul 2024 +01 Aug 2024 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index 4b9c23de..55c3530b 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -31 Jul 2024 +01 Aug 2024 diff --git a/Source/Doc/Graphics/BankSwitchedMemory.pdf b/Source/Doc/Graphics/BankSwitchedMemory.pdf index 42db138c..ba027b47 100644 Binary files a/Source/Doc/Graphics/BankSwitchedMemory.pdf and b/Source/Doc/Graphics/BankSwitchedMemory.pdf differ diff --git a/Source/Doc/Graphics/BankSwitchedMemory.png b/Source/Doc/Graphics/BankSwitchedMemory.png index f617cb0d..fd74851b 100644 Binary files a/Source/Doc/Graphics/BankSwitchedMemory.png and b/Source/Doc/Graphics/BankSwitchedMemory.png differ diff --git a/Source/Doc/Graphics/BankSwitchedMemory.svg b/Source/Doc/Graphics/BankSwitchedMemory.svg new file mode 100644 index 00000000..ef18a94e --- /dev/null +++ b/Source/Doc/Graphics/BankSwitchedMemory.svg @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + Data block.13 + + Sheet.14 + + + + Sheet.15 + + + + Sheet.16 + + + + + Data block.9 + + Sheet.10 + + + + Sheet.11 + + + + Sheet.12 + + + + + Data block + + Sheet.6 + + + + Sheet.7 + + + + Sheet.8 + + + + + Sheet.2 + $FE00 + + + $FE00 + + Sheet.3 + $D000 + + + $D000 + + Sheet.17 + $8000 + + + $8000 + + 3D stack middle + + Sheet.19 + + + + Sheet.20 + + + + + 3D stack middle.21 + + Sheet.22 + + + + Sheet.23 + + + + + 3D stack middle.24 + + Sheet.25 + + + + Sheet.26 + + + + + Sheet.27 + HBIOS Proxy (RST 08) + + HBIOS Proxy (RST 08) + + Sheet.28 + Application Area (TPA) + + Application Area (TPA) + + Sheet.29 + Operating System CP/M or ZSYS + + Operating System CP/M or ZSYS + + Sheet.30 + CBIOS + + CBIOS + + Sheet.31 + BDOS + + BDOS + + Sheet.32 + CCP + + CCP + + Data block.33 + + Sheet.34 + + + + Sheet.35 + + + + Sheet.36 + + + + + Sheet.37 + + + + Sheet.38 + HBIOS (Hardware Drivers) + + HBIOS (Hardware Drivers) + + Sheet.39 + + + + Sheet.40 + + + + Sheet.43 + Z80 CPU Address Space + + Z80 CPU Address Space + + Sheet.41 + Banked Lower 32K + + Banked Lower 32K + + Sheet.42 + Fixed Upper 32K + + Fixed Upper 32K + + Sheet.1 + $10000 + + + $10000 + + Sheet.4 + $0000 + + + $0000 + + Bracket + + + + Sheet.45 + Bank 0 + + Bank 0 + + Sheet.47 + App/OS Banks + + App/OS Banks + + Sheet.48 + Bank N-1 + + Bank N-1 + + Sheet.49 + Bank N + + Bank N + + Sheet.50 + • • • + + • • • + + Bracket.51 + + + + Sheet.55 + + + + Sheet.56 + Physical RAM (32K per bank) + + Physical RAM (32K per bank) + + Bracket.57 + ` + + + ` + + Sheet.58 + + + + 3D stack top + RAM Disk + + Sheet.61 + + + + Sheet.62 + + + + Sheet.63 + + + + RAM Disk + + + Pointer (1-D) + + + + Pointer (1-D).65 + + + + Pointer (1-D).66 + + + + Pointer (1-D).67 + + + + Sheet.70 + + + + Sheet.68 + HBIOS Function Call w/ Bank Switch + + HBIOS Function Call w/ Bank Switch + + Sheet.69 + RomWBW Bank Switched Memory Layout + + RomWBW Bank Switched Memory Layout + + Sheet.59 + + + + Sheet.52 + Fixed Mapping of Upper 32K to Last Bank + + Fixed Mapping of Upper 32K to Last Bank + + Sheet.72 + + + + Sheet.74 + + + + diff --git a/Source/Doc/Graphics/BankSwitchedMemory.vsd b/Source/Doc/Graphics/BankSwitchedMemory.vsd index 36dedadf..636558d2 100644 Binary files a/Source/Doc/Graphics/BankSwitchedMemory.vsd and b/Source/Doc/Graphics/BankSwitchedMemory.vsd differ diff --git a/Source/Doc/Graphics/CharacterEmulationVideoServices.pdf b/Source/Doc/Graphics/CharacterEmulationVideoServices.pdf index fadac746..3c763700 100644 Binary files a/Source/Doc/Graphics/CharacterEmulationVideoServices.pdf and b/Source/Doc/Graphics/CharacterEmulationVideoServices.pdf differ diff --git a/Source/Doc/Graphics/CharacterEmulationVideoServices.png b/Source/Doc/Graphics/CharacterEmulationVideoServices.png index 4ccb3cc8..f6621411 100644 Binary files a/Source/Doc/Graphics/CharacterEmulationVideoServices.png and b/Source/Doc/Graphics/CharacterEmulationVideoServices.png differ diff --git a/Source/Doc/Graphics/CharacterEmulationVideoServices.svg b/Source/Doc/Graphics/CharacterEmulationVideoServices.svg new file mode 100644 index 00000000..6632a956 --- /dev/null +++ b/Source/Doc/Graphics/CharacterEmulationVideoServices.svg @@ -0,0 +1,830 @@ + + + + + + + + + + + + + + + + Page-1 + + Sheet.81 + + + + Sheet.80 + + + + Sheet.1 + Character I/O Services + + Character I/O Services + + Sheet.2 + + + + Sheet.8 + + + + Sheet.9 + Emulation Services + + Emulation Services + + Sheet.10 + TTY + + TTY + + Sheet.11 + ANSI + + ANSI + + Sheet.12 + + + + Sheet.13 + + + + Sheet.14 + Video Display Adapter Services + + Video Display Adapter Services + + Sheet.18 + + + + Sheet.27 + UART + + UART + + Sheet.34 + ASCI + + ASCI + + Terminal.20 + + Sheet.36 + + + + Sheet.37 + + + + Sheet.38 + + + + Sheet.39 + + + + + Sheet.40 + CVDU + + CVDU + + Sheet.41 + + + + Sheet.47 + UPD7220 + + UPD7220 + + Sheet.54 + N8 + + N8 + + Sheet.56 + CIOXXX + + CIOXXX + + Sheet.57 + VDAXXX + + VDAXXX + + Sheet.58 + Operating System / Utilities + + Operating System / Utilities + + Sheet.59 + Others... + + Others... + + Sheet.60 + + + + Sheet.61 + + + + Sheet.62 + EMUXXX + + EMUXXX + + Sheet.15 + + + + Terminal.16 + + Sheet.42 + + + + Sheet.43 + + + + Sheet.44 + + + + Sheet.45 + + + + + Sheet.46 + + + + Terminal.48 + + Sheet.49 + + + + Sheet.50 + + + + Sheet.51 + + + + Sheet.52 + + + + + Sheet.53 + + + + Terminal.22 + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + + Sheet.28 + + + + Terminal.29 + + Sheet.30 + + + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + + + Sheet.35 + + + + Sheet.55 + RS-232 + + RS-232 + + Sheet.63 + RS-232 + + RS-232 + + Sheet.64 + VGA + + VGA + + Sheet.65 + VGA + + VGA + + Sheet.66 + NTSC + + NTSC + + Sheet.67 + UART + + UART + + Sheet.68 + ASCI + + ASCI + + Sheet.69 + VDU + + VDU + + Sheet.74 + SY6545 + + SY6545 + + Sheet.75 + MC8563 + + MC8563 + + Sheet.76 + uPD7220 + + uPD7220 + + Sheet.79 + Character / Emulation / Video Services + + Character / Emulation / Video Services + + Sheet.82 + HBIOS + + HBIOS + + Sheet.83 + HARDWARE + + HARDWARE + + Sheet.84 + TMS9918 + + TMS9918 + + Terminal.87 + + Sheet.88 + + + + Sheet.89 + + + + Sheet.90 + + + + Sheet.91 + + + + + Sheet.92 + VDU + + VDU + + Sheet.93 + + + + Sheet.94 + NTSC + + NTSC + + Sheet.96 + + + + Sheet.7 + + + + Sheet.17 + + + + Sheet.3 + + + + Sheet.4 + + + + diff --git a/Source/Doc/Graphics/CharacterEmulationVideoServices.vsd b/Source/Doc/Graphics/CharacterEmulationVideoServices.vsd index 9f01ad06..8f752b79 100644 Binary files a/Source/Doc/Graphics/CharacterEmulationVideoServices.vsd and b/Source/Doc/Graphics/CharacterEmulationVideoServices.vsd differ diff --git a/Source/Doc/Graphics/Hard Disk Anatomy.vsd b/Source/Doc/Graphics/Hard Disk Anatomy.vsd index e335b109..862442e7 100644 Binary files a/Source/Doc/Graphics/Hard Disk Anatomy.vsd and b/Source/Doc/Graphics/Hard Disk Anatomy.vsd differ diff --git a/Source/Doc/Graphics/Logo.pdf b/Source/Doc/Graphics/Logo.pdf index 0921f91a..f7fedf9c 100644 Binary files a/Source/Doc/Graphics/Logo.pdf and b/Source/Doc/Graphics/Logo.pdf differ diff --git a/Source/Doc/Graphics/Logo.png b/Source/Doc/Graphics/Logo.png index 3d43ff31..6832b2a8 100644 Binary files a/Source/Doc/Graphics/Logo.png and b/Source/Doc/Graphics/Logo.png differ diff --git a/Source/Doc/Graphics/Logo.svg b/Source/Doc/Graphics/Logo.svg index da51b423..586d6f1f 100644 --- a/Source/Doc/Graphics/Logo.svg +++ b/Source/Doc/Graphics/Logo.svg @@ -1,15 +1,9 @@ - + - - - - - - + width="3.76042in" height="1.26042in" viewBox="0 0 270.75 90.75" xml:space="preserve" color-interpolation-filters="sRGB" + class="st3"> - + Page-1 - - + Sheet.34 - + - + Sheet.35 - + - + Sheet.36 - + - + Sheet.38 - + - + Sheet.39 - + - + Sheet.44 - + - + Sheet.48 - + - + Sheet.49 - + - + Sheet.50 - + - + Sheet.52 - + - + Sheet.53 - + diff --git a/Source/Doc/Graphics/WBW.vsdx b/Source/Doc/Graphics/Logo.vsdx similarity index 100% rename from Source/Doc/Graphics/WBW.vsdx rename to Source/Doc/Graphics/Logo.vsdx diff --git a/Source/Doc/Graphics/Panel.pdf b/Source/Doc/Graphics/Panel.pdf index 2ec8d559..49604071 100644 Binary files a/Source/Doc/Graphics/Panel.pdf and b/Source/Doc/Graphics/Panel.pdf differ diff --git a/Source/Doc/Graphics/Panel.png b/Source/Doc/Graphics/Panel.png index 488d258f..5bb28b12 100644 Binary files a/Source/Doc/Graphics/Panel.png and b/Source/Doc/Graphics/Panel.png differ diff --git a/Source/Doc/Graphics/Panel.svg b/Source/Doc/Graphics/Panel.svg new file mode 100644 index 00000000..ca83e5d7 --- /dev/null +++ b/Source/Doc/Graphics/Panel.svg @@ -0,0 +1,369 @@ + + + + + + + + Page-1 + + Sheet.1 + + + + Sheet.2 + + + + Sheet.3 + + + + Sheet.8 + + + + Sheet.9 + + + + Sheet.10 + + + + Sheet.11 + + + + Sheet.12 + + + + Sheet.13 + + + + Sheet.14 + + + + Sheet.18 + + + + Sheet.19 + + + + Sheet.20 + + + + Sheet.21 + + + + Sheet.22 + + + + Sheet.23 + + + + Sheet.24 + + + + Sheet.25 + + + + Sheet.26 + + + + Sheet.27 + + + + Sheet.28 + + + + Sheet.29 + + + + Sheet.30 + + + + Sheet.31 + + + + Sheet.32 + + + + Sheet.33 + + + + Sheet.34 + + + + Sheet.35 + 8 + + 8 + + Sheet.36 + 4 + + 4 + + Sheet.37 + 2 + + 2 + + Sheet.38 + 1 + + 1 + + Sheet.39 + High + + High + + Sheet.40 + + + + Sheet.41 + + + + Sheet.42 + + + + Sheet.43 + 8 + + 8 + + Sheet.44 + 4 + + 4 + + Sheet.45 + 2 + + 2 + + Sheet.46 + 1 + + 1 + + Sheet.47 + Low + + Low + + Sheet.48 + 7 + + 7 + + Sheet.49 + 6 + + 6 + + Sheet.50 + 5 + + 5 + + Sheet.52 + 4 + + 4 + + Sheet.53 + 3 + + 3 + + Sheet.54 + 2 + + 2 + + Sheet.55 + 1 + + 1 + + Sheet.56 + 0 + + 0 + + Sheet.57 + + + + Sheet.58 + Auto + + Auto + + Sheet.59 + Menu + + Menu + + Sheet.61 + + + + Sheet.62 + CRT + + CRT + + Sheet.63 + Serial + + Serial + + Sheet.64 + + + + Sheet.65 + Sec + + Sec + + Sheet.66 + Pri + + Pri + + Sheet.67 + + + + Sheet.68 + Disk + + Disk + + Sheet.69 + ROM + + ROM + + Sheet.70 + + + + Sheet.71 + Floppy + + Floppy + + Sheet.72 + Hard + + Hard + + Sheet.73 + + + + Sheet.74 + 4 + + 4 + + Sheet.75 + 2 + + 2 + + Sheet.76 + 1 + + 1 + + Sheet.78 + ROM App / Boot Slice + + ROM App / Boot Slice + + Sheet.79 + ROM Apps: 0=Monitor 1=BASIC 2=Forth 3=Game 4=CP/M 2.2 5=Z-Sys... + + ROM Apps: 0=Monitor 1=BASIC 2=Forth 3=Game 4=CP/M 2.2 5=Z-System 6=Net Boot 7=User + + Sheet.80 + + + + Sheet.81 + + + + Sheet.82 + + + + Sheet.84 + Console + + Console + + Sheet.85 + + + + Sheet.86 + + + + Sheet.87 + + + + Sheet.88 + Boot + + Boot + + diff --git a/Source/Doc/Graphics/hd1k.pdf b/Source/Doc/Graphics/hd1k.pdf new file mode 100644 index 00000000..1bd7dd83 Binary files /dev/null and b/Source/Doc/Graphics/hd1k.pdf differ diff --git a/Source/Doc/Graphics/hd1k.png b/Source/Doc/Graphics/hd1k.png new file mode 100644 index 00000000..2b66b260 Binary files /dev/null and b/Source/Doc/Graphics/hd1k.png differ diff --git a/Source/Doc/Graphics/hd1k.svg b/Source/Doc/Graphics/hd1k.svg new file mode 100644 index 00000000..2581bfe1 --- /dev/null +++ b/Source/Doc/Graphics/hd1k.svg @@ -0,0 +1,1088 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + Sheet.95 + 0 + + + + 0 + + Sheet.101 + 1 + + + + 1 + + Sheet.102 + 2 + + + + 2 + + Sheet.103 + 3 + + + + 3 + + Sheet.105 + . . . + + + + . . . + + Sheet.104 + N + + + + N + + Sheet.201 + + + + Sheet.69 + RomWBW Hard Disk Anatomy (Modern / hd1k) + + + + RomWBW Hard Disk Anatomy (Modern / hd1k) + + Sheet.106 + RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB) + + + + RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB) + + Sheet.107 + FAT Partition + + + + FAT Partition + + Sheet.119 + Sector 0 + + + + Sector 0 + + Sheet.120 + + + + Sheet.121 + + + + Sheet.122 + Type 2E + + + + Type 2E + + Sheet.123 + Type 06 + + + + Type 06 + + Sheet.124 + + + + Sheet.125 + + + + Sheet.126 + Partition Table + + + + Partition Table + + Sheet.131 + + + + Bracket.132 + + + + + + + Sheet.135 + + + + Sheet.139 + CP/M System Area (16 KB) + + + + CP/M System Area (16 KB) + + Sheet.141 + + + + Sheet.142 + + + + Sheet.143 + + + + Sheet.144 + + + + Sheet.165 + + + + Sheet.166 + + + + Sheet.167 + + + + Sheet.168 + + + + Stack pointer.179 + + + + + + + Sheet.202 + RomWBW Partition (8MB * N) + + + + RomWBW Partition (8MB * N) + + Sheet.205 + Prefix (1 MB typical) + + + + Prefix (1 MB typical) + + Dynamic connector + + + + Dynamic connector.207 + + + + Sheet.118 + MBR + + + + MBR + + Sheet.208 + + + + Sheet.128 + Slice (8 MB) + + + + Slice (8 MB) + + Bracket.146 + + + + + + + Sheet.581 + + + + Sheet.582 + CP/M File System (8,176 KB) + + + + CP/M File System (8,176 KB) + + Sheet.583 + + + + Sheet.590 + + + + Bracket.301 + + + + + + + Bracket.592 + + + + + + + diff --git a/Source/Doc/Graphics/hd512.pdf b/Source/Doc/Graphics/hd512.pdf new file mode 100644 index 00000000..30fed811 Binary files /dev/null and b/Source/Doc/Graphics/hd512.pdf differ diff --git a/Source/Doc/Graphics/hd512.png b/Source/Doc/Graphics/hd512.png new file mode 100644 index 00000000..63fdfdeb Binary files /dev/null and b/Source/Doc/Graphics/hd512.png differ diff --git a/Source/Doc/Graphics/hd512.svg b/Source/Doc/Graphics/hd512.svg new file mode 100644 index 00000000..c4cfa578 --- /dev/null +++ b/Source/Doc/Graphics/hd512.svg @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + Sheet.69 + RomWBW Hard Disk Anatomy (Classic / hd512) + + RomWBW Hard Disk Anatomy (Classic / hd512) + + Sheet.259 + 0 + + 0 + + Sheet.260 + 1 + + 1 + + Sheet.261 + 2 + + 2 + + Sheet.262 + 3 + + 3 + + Sheet.263 + . . . + + . . . + + Sheet.264 + N + + N + + Sheet.265 + + + + Sheet.266 + RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB) + + RomWBW Hard Disk (IDE/ATA/ATAPI/CF/SD/USB) + + Sheet.267 + FAT Partition + + FAT Partition + + Sheet.268 + Sector 0 + + Sector 0 + + Sheet.269 + + + + Sheet.270 + + + + Sheet.271 + Type 06 + + Type 06 + + Sheet.272 + + + + Sheet.273 + + + + Sheet.274 + + + + Sheet.275 + Partition Table + + Partition Table + + Sheet.276 + + + + Bracket.132 + + + + Sheet.278 + + + + Sheet.279 + CP/M System Area (128 KB) + + CP/M System Area (128 KB) + + Sheet.280 + + + + Sheet.281 + + + + Sheet.282 + + + + Sheet.283 + + + + Sheet.284 + + + + Sheet.285 + + + + Sheet.286 + + + + Sheet.287 + + + + Stack pointer.179 + + + + Sheet.289 + RomWBW Data (8,320 KB * N) + + RomWBW Data (8,320 KB * N) + + Dynamic connector.207 + + + + Sheet.294 + MBR + + MBR + + Sheet.295 + + + + Sheet.296 + Slice (8,320 KB) + + Slice (8,320 KB) + + Sheet.298 + + + + Sheet.299 + CP/M File System (8 MB) + + CP/M File System (8 MB) + + Sheet.300 + + + + Bracket.301 + + + + Bracket.302 + + + + diff --git a/Source/Doc/RomWBW Disk Layouts.xlsx b/Source/Doc/RomWBW Disk Layouts.xlsx new file mode 100644 index 00000000..da72b8c6 Binary files /dev/null and b/Source/Doc/RomWBW Disk Layouts.xlsx differ diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 9c498866..6c5e1246 100644 --- a/Source/Doc/SystemGuide.md +++ b/Source/Doc/SystemGuide.md @@ -126,6 +126,7 @@ execution. ![Bank Switched Memory Layout](Graphics/BankSwitchedMemory){ width=100% } + ## Bank Id RomWBW utilizes a specific assignment of memory banks for dedicated @@ -262,6 +263,89 @@ Common Bank: It is a fixed mapping that is never changed in normal RomWBW operation hence the name "Common". +# Disk Layout + +RomWBW supports and automatically detects 2 different disk layouts +known as Modern (hd1k) and Classic (hd512). Specifics of these two +variants are described in separate sections below. + +RomWBW supports up to 256 CP/M slices (0-255). Under hd512, the slices +begin at the start of the hard disk. Under hd1k, the slices reside +within partition type 0x2E. + +RomWBW accesses all hard disks using Logical Block Addressing (pure +sector offset). When necessary, RomWBW simulates the following disk +geometry for operating systems: + +- Sector = 512 Bytes +- Track = 16 Sectors (8KB per Track) +- Cylinder = 16 Tracks (256 Sectors per Cylinder, 128KB per Cylinder) + +If one is used, the FAT Partition must not overlap the CP/M slices. +In the case of hd1k, the CP/M slices are within partition 0x2E and the +FAT partition must not start after the last CP/M slice, but does not need to start immediately after it nor does it need to extend to the end of the hard disk. + +Drive letters in CP/M are ASSIGNed to the numbered slices as desired. +At boot, RomWBW automatically assigns up to 8 slices to drive letters +starting with the first available drive letter (typically C:). + +Microsoft Windows will assign a single drive letter to the FAT partition +when the CF/SD Card is inserted. The drive letter assigned has no +relationship to the CP/M drive letters assigned to CP/M slices. + +In general, Windows, MacOS, or Linux know nothing about the CP/M slices +and CP/M knows nothing about the FAT partition. However, the FAT +application can be run under CP/M to access the FAT partition +programmatically. + +A CP/M slice is (re)initialized using the CP/M command CLRDIR. A CP/M +slice can be made bootable by copying system image to the System Area +using SYSCOPY. + +The FAT partition can be created from CP/M using the FDISK80 application. + +The FAT partition can be initialized using the FAT application from CP/M +using the command `FAT FORMAT n:` where n is the RomWBW disk unit +number containing the FAT partition to be formatted. + +## Modern Disk Layout (hd1k) + +![Modern Disk Layout](Graphics/hd1k) + +The CP/M filesystem on a Modern disk will accommodate 1,024 directory +entries. + +The CP/M slices reside entirely within a hard disk partition of type +0x2E. The number of slices is determined by the number of slices that +fit within the partition spaces allocated up to the maximum of 256. + +## Classic Disk Layout (hd512) + +![Classic Disk Layout](Graphics/hd512) + +The CP/M filesystem on a Classic disk will accommodate 512 directory +entries. + +The CP/M slices reside on the hard disk starting at the first sector +of the hard disk. The number of CP/M slices is not explicitly recorded +anywhere on the hard disk. It is up to the system user to know how +many slices are being used based on the size of the hard disk media +and/or the start of a FAT partition. + +A partition table may exist within the first sector of the first +slice. For Classic disks, the partition table defines only the +location and size of the FAT partition. The Partition Table does +not control the location or number of CP/M slices in any way. + +The Partition Table resides in a sector that is shared with the System +Area of CP/M Slice 0. However, the RomWBW implementation of CP/M takes +steps to avoid changing or corrupting the Partition Table area. + +The FAT partition can be created from CP/M using the FDISK80 +application. The user is responsible for ensuring that the start of the +FAT partition does not overlap with the area they intend to use for +CP/M slices. FDISK80 has a Reserve option to assist with this. + # System Boot Process A multi-phase boot strategy is employed. This is necessary because at