My CP/M V2
Should not really be working on this now, but anyway I updated cbios.asm for the W29C040-90B 256 byte page size. It was not that hard really, you just read to a buffer the"other" segment (that is within the 256b page boundary) and then write back the buffer before (immediately) writing the target segment.
I also had the rework the disk/track/segment address from:
DDTTTTTT 1TTTTSSS SAAAAAAA
DDTTTTTT 111TTSSS SAAAAAAA
D = Disk
T = Track
S = Segment
A = Address of a byte withing a segment.
The first address format (V1) could access 32kb RAM, 4 disks of 2 Mb capacity while the second (V2) can address 56kb RAM, 4 disks of 512kb capacity.
In theory, CP/M can access 16 disks of 8 Mb capacity.