18-04-2026, 09:58 AM
using Grok and Claude I have managed to get a working 21mb image:
MicroBee 512k CP/M Compact Flash Image — Project Summary
Background
The MicroBee 512k is emulated here under the ubee512 emulator. The system boots from a Compact Flash card image, with the ROM BIOS (version 0.58/cf8) loading a secondary bootloader (BOOT.SYS) which in turn initialises the CP/M environment across multiple disk partitions. The starting point was a working 30MB image with four partitions — A: through D: — each limited to approximately 5MB, leaving roughly 11MB of the image completely unused.
Objective
To safely expand the D: partition to use as much of the unused space as possible, while keeping A:, B: and C: fully intact and bootable.
Investigation
The project required significant detective work before any modifications could be made safely. Analysis of the MBR partition table revealed the image geometry — 123 cylinders, 16 heads, 32 sectors per track — correctly decoded from the filename
Early attempts at enlarging D: failed because the CHS fields in the MBR were being calculated against the wrong geometry (16 SPT instead of 32 SPT), producing partition table entries that confused the BIOS.
A key breakthrough came from the PART.COM utility output running inside CP/M, which revealed the BIOS was reporting 32 sectors per track — not 16 as initially assumed. Once the correct geometry was confirmed by reverse-engineering the original CHS values mathematically, partition table entries could be constructed accurately.
Further investigation uncovered a second constraint: an apparent signed 16-bit boundary in the BIOS or BOOT.SYS where any partition whose LBA start address exceeded 0x8000 (32,768) would become inaccessible. This explained why earlier 8MB attempts with incorrectly positioned partitions failed — D:'s start address was being interpreted as a negative number.
Testing Methodology
With the geometry corrected and D:'s LBA start address confirmed safe at 0x7600, a systematic binary search was conducted on D:'s size, testing incrementally in cylinder units (each cylinder = 512 sectors = 256KB):
The ceiling of 25 cylinders is consistent with the compiled-in DSM value in the CP/M BIOS Disk Parameter Block — the maximum block number the BIOS was built to address for that partition. Exceeding it causes silent failure without any error message.
Result
The final production image retains the original filename for compatibility, with the following partition layout:
Drive A:4.73MB (unchanged, bootable)
B: 5.00MB (unchanged)
C: 5.00MB (unchanged)
D: 6.25MB (expanded)
Total
~21MB usable
All four drives are accessible, existing data on A: was preserved throughout, and files copied to D: during testing survived correctly. The expansion represents the maximum achievable without recompiling the CP/M BIOS with a larger DSM value — a significantly more complex undertaking.
MicroBee 512k CP/M Compact Flash Image — Project Summary
Background
The MicroBee 512k is emulated here under the ubee512 emulator. The system boots from a Compact Flash card image, with the ROM BIOS (version 0.58/cf8) loading a secondary bootloader (BOOT.SYS) which in turn initialises the CP/M environment across multiple disk partitions. The starting point was a working 30MB image with four partitions — A: through D: — each limited to approximately 5MB, leaving roughly 11MB of the image completely unused.
Objective
To safely expand the D: partition to use as much of the unused space as possible, while keeping A:, B: and C: fully intact and bootable.
Investigation
The project required significant detective work before any modifications could be made safely. Analysis of the MBR partition table revealed the image geometry — 123 cylinders, 16 heads, 32 sectors per track — correctly decoded from the filename
Code:
cfboot_0_58_cf8_123_16_32Early attempts at enlarging D: failed because the CHS fields in the MBR were being calculated against the wrong geometry (16 SPT instead of 32 SPT), producing partition table entries that confused the BIOS.
A key breakthrough came from the PART.COM utility output running inside CP/M, which revealed the BIOS was reporting 32 sectors per track — not 16 as initially assumed. Once the correct geometry was confirmed by reverse-engineering the original CHS values mathematically, partition table entries could be constructed accurately.
Further investigation uncovered a second constraint: an apparent signed 16-bit boundary in the BIOS or BOOT.SYS where any partition whose LBA start address exceeded 0x8000 (32,768) would become inaccessible. This explained why earlier 8MB attempts with incorrectly positioned partitions failed — D:'s start address was being interpreted as a negative number.
Testing Methodology
With the geometry corrected and D:'s LBA start address confirmed safe at 0x7600, a systematic binary search was conducted on D:'s size, testing incrementally in cylinder units (each cylinder = 512 sectors = 256KB):
- 20 cylinders (5MB) ✓ original
- 21 cylinders (5.25MB) ✓
- 24 cylinders (6MB) ✓
- 25 cylinders (6.25MB) ✓
- 26 cylinders (6.5MB) ✗
- 28 cylinders (7MB) ✗
- 32 cylinders (8MB) ✗
The ceiling of 25 cylinders is consistent with the compiled-in DSM value in the CP/M BIOS Disk Parameter Block — the maximum block number the BIOS was built to address for that partition. Exceeding it causes silent failure without any error message.
Result
The final production image retains the original filename for compatibility, with the following partition layout:
Drive A:4.73MB (unchanged, bootable)
B: 5.00MB (unchanged)
C: 5.00MB (unchanged)
D: 6.25MB (expanded)
Total
~21MB usable
All four drives are accessible, existing data on A: was preserved throughout, and files copied to D: during testing survived correctly. The expansion represents the maximum achievable without recompiling the CP/M BIOS with a larger DSM value — a significantly more complex undertaking.

) ! 6.5M/partition