Add better floppy MODE page support
authorMichael McMaster <michael@codesrc.com>
Sat, 2 Mar 2019 05:39:51 +0000 (15:39 +1000)
committerMichael McMaster <michael@codesrc.com>
Sat, 2 Mar 2019 05:39:51 +0000 (15:39 +1000)
CHANGELOG
src/firmware/mode.c

index c744518..04f6656 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 2019XXXX
        - Port XEBEC support from v5 firmware
+       - Add Flexible Disk Drive Geometry SCSI MODE page
 
 20181011               6.2.1
        - Fix bug in USB disk interface with disks over 4GB
index 1d1b69b..773059a 100755 (executable)
@@ -120,6 +120,35 @@ static const uint8_t RigidDiskDriveGeometry[] =
 0x00, 0x00 // Reserved\r
 };\r
 \r
+static const uint8_t FlexibleDiskDriveGeometry[] =\r
+{\r
+0x05, // Page code\r
+0x1E, // Page length\r
+0x01, 0xF4, // Transfer Rate (500kbits)\r
+0x01, // heads\r
+18, // sectors per track\r
+0x20,0x00, // bytes per sector\r
+0x00, 80, // Cylinders\r
+0x00, 0x80, // Write-precomp\r
+0x00, 0x80, // reduced current,\r
+0x00, 0x00, // Drive step rate\r
+0x00, // pulse width\r
+0x00, 0x00, // Head settle delay\r
+0x00, // motor on delay\r
+0x00,  // motor off delay\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00,\r
+0x00\r
+};\r
+\r
 static const uint8_t RigidDiskDriveGeometry_SCSI1[] =\r
 {\r
 0x04, // Page code\r
@@ -421,6 +450,13 @@ static void doModeSense(
                }\r
        }\r
 \r
+       if (pageCode == 0x05 || pageCode == 0x3F)\r
+       {\r
+               pageFound = 1;\r
+               pageIn(pc, idx, FlexibleDiskDriveGeometry, sizeof(FlexibleDiskDriveGeometry));\r
+               idx += sizeof(FlexibleDiskDriveGeometry);\r
+       }\r
+\r
        // DON'T output the following pages for SCSI1 hosts. They get upset when\r
        // we have more data to send than the allocation length provided.\r
        // (ie. Try not to output any more pages below this comment)\r