Closed jeffpar closed 1 year ago
There were at least 3 separate issues with the floppy disk controller that MINIX 1.1 for PC ATs didn't like:
The first 2 issues were easy to fix without too much risk of breaking things, but I may just add a special FDC compatibility setting for the "MINIX for PC AT" machine in order to resolve the 3rd issue.
I rolled the dice and put in a generic work-around for the 3rd MINIX issue after all. The bare minimum required was adding a couple of lines to the FDC's doCmd() function, right before it calls pushResult():
if (drive.disk.nSectors >= 15 && this.regControl != FDC.REG_CONTROL.RATE500K) {
drive.resCode = FDC.REG_DATA.RES.INCOMPLETE;
}
This will cause ST0 (the first byte of the results data) to indicate an INCOMPLETE error if the diskette is deemed a "high density" diskette (ie, one with 15 or more sectors per track) and MINIX has not yet programmed the CONTROL register for 500kbps transfers (the normal transfer speed for high density diskettes).
Fixed as of 271b650de91dc26ed6a5fdd2255d87de84b8b635.
There is a similar problem with MINIX 1.1 for PCs and PC XTs using the 360K diskette images, but let's start by debugging the PC AT version here. The test machine has 640K of RAM, which is more than the 512K stated minimum.