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

index 81ed2cc..aa3cd6a 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+2019XXXX               4.9.X
+       - Improve XEBEC controller support
+       - Add Flexible Disk Drive Geometry SCSI MODE page
+
 20180926               4.8.1
        - Fix bug when writing with multiple SCSI devices on the chain
 
index f9d529a..95d00e9 100755 (executable)
@@ -120,6 +120,35 @@ static const uint8 RigidDiskDriveGeometry[] =
 0x00, 0x00 // Reserved\r
 };\r
 \r
+static const uint8 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 RigidDiskDriveGeometry_SCSI1[] =\r
 {\r
 0x04, // Page code\r
@@ -439,6 +468,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