Browse Source

Reduce size of mode pages for SCSI1 hosts

Michael McMaster 10 years ago
parent
commit
40486970fb

+ 19 - 9
lib/SCSI2SD/readme.txt

@@ -28,10 +28,12 @@ Technical Specifications
 
 SCSI Interface
 	SCSI-2 Narrow 8-bit 50-pin connector. Supports asynchronous transfers only.
-SD Card Interface
-	Standard SDSC (1GB maximum size)
-	SDHC, SDXC
+Micro SD Card Interface
+	Standard microSDSC (1GB maximum size)
+	microSDHC, microSDXC
 	Communication is via the SPI protocol at 25MHz.
+USB Interface (firmware updates and config)
+	USB 2.0 micro-B
 Power
 	5V via standard molex drive connector.
 Dimensions
@@ -69,6 +71,9 @@ Compatibility
     PDP-11/73 running RSX11M+ V4.6
     Microvax 3100 Model 80 running VMS 7.3 (needs patch against v3.5.2 firmware)
     Amiga 500+ with GVP A530
+    Commodore Amiga 500 KS 1.3 with Oktagon 508 SCSI-2 controller
+    Amiga 2000 (B2000 rev 6.4 ECS) with DKB RapidFire SCSI 1 card
+    Amiga 4000 equipped with CyberStorm PPC using 68pin adapter.
     Atari TT030 System V
     Atari MEGA STE
         needs J3 TERMPWR jumper
@@ -80,12 +85,16 @@ Compatibility
     Compaq XP-1000 Professional Workstation
         Alpha 21264 CPU, 667MHz, with a QLogic SCSI controller in a PCI slot 
     SCSI-based Macintosh Powerbooks (2.5" SCSI2SD)
-        Also reported to work on Thinkpad 860 running Win NT 4.0 PowerPC. 
-	Data General MV/2500DC running AOS/VS
-		Vendor: MICROoP
-		Product: 1578-15       UP
-		Revision: DG02
-		Device-type modifier: 0x4c
+        Also reported to work on Thinkpad 860 running Win NT 4.0 PowerPC.
+    AT&T 3B2/600
+    Sun 2/120 Workstation (Unit Attention disabled)
+    Data General MV/2500DC running AOS/VS
+        Vendor: MICROoP
+        Product: 1578-15       UP
+        Revision: DG02
+        Device-type modifier: 0x4c
+    Applix 1616
+    IMS MM/1
 
 Samplers
 
@@ -106,6 +115,7 @@ Samplers
         Requires TERMPWR jumper. The manual shows the pin25 of the DB25 connector is "not connected".
         May require scsi2sd-config --apple flag 
     Yamaha A5000, A3000, EX5, EX5R 
+    EMU ESI4000
 
 Other
 

+ 75 - 6
lib/SCSI2SD/software/SCSI2SD/src/mode.c

@@ -51,6 +51,18 @@ static const uint8 ReadWriteErrorRecoveryPage[] =
 0x00, 0x00 // Recovery time limit 0 (use default)*/
 };
 
+static const uint8 ReadWriteErrorRecoveryPage_SCSI1[] =
+{
+0x01, // Page code
+0x06, // Page length
+0x26,
+0x00, // Don't try recovery algorithm during reads
+0x00, // Correction span 0
+0x00, // Head offset count 0,
+0x00, // Data strobe offset count 0,
+0xFF // Reserved
+};
+
 static const uint8 DisconnectReconnectPage[] =
 {
 0x02, // Page code
@@ -65,6 +77,18 @@ static const uint8 DisconnectReconnectPage[] =
 0x00, 0x00, 0x00 // Reserved
 };
 
+static const uint8 DisconnectReconnectPage_SCSI1[] =
+{
+0x02, // Page code
+0x0A, // Page length
+0, // Buffer full ratio
+0, // Buffer empty ratio
+0x00, 10, // Bus inactivity limit, 100us increments. Allow 1ms.
+0x00, 0x00, // Disconnect time limit
+0x00, 0x00, // Connect time limit
+0x00, 0x00 // Maximum burst size
+};
+
 static const uint8 FormatDevicePage[] =
 {
 0x03 | 0x80, // Page code | PS (persist) bit.
@@ -99,6 +123,21 @@ SCSI_HEADS_PER_CYLINDER, // Number of heads
 0x00, 0x00 // Reserved
 };
 
+static const uint8 RigidDiskDriveGeometry_SCSI1[] =
+{
+0x04, // Page code
+0x12, // Page length
+0xFF, 0xFF, 0xFF, // Number of cylinders
+SCSI_HEADS_PER_CYLINDER, // Number of heads
+0xFF, 0xFF, 0xFF, // Starting cylinder-write precompensation
+0xFF, 0xFF, 0xFF, // Starting cylinder-reduced write current
+0x00, 0x1, // Drive step rate (units of 100ns)
+0x00, 0x00, 0x00, // Landing zone cylinder
+0x00, // RPL
+0x00, // Rotational offset
+0x00 // Reserved
+};
+
 static const uint8 CachingPage[] =
 {
 0x08, // Page Code
@@ -239,15 +278,31 @@ static void doModeSense(
 	if (pageCode == 0x01 || pageCode == 0x3F)
 	{
 		pageFound = 1;
-		pageIn(pc, idx, ReadWriteErrorRecoveryPage, sizeof(ReadWriteErrorRecoveryPage));
-		idx += sizeof(ReadWriteErrorRecoveryPage);
+		if ((scsiDev.compatMode >= COMPAT_SCSI2))
+		{
+			pageIn(pc, idx, ReadWriteErrorRecoveryPage, sizeof(ReadWriteErrorRecoveryPage));
+			idx += sizeof(ReadWriteErrorRecoveryPage);
+		}
+		else
+		{
+			pageIn(pc, idx, ReadWriteErrorRecoveryPage_SCSI1, sizeof(ReadWriteErrorRecoveryPage_SCSI1));
+			idx += sizeof(ReadWriteErrorRecoveryPage_SCSI1);
+		}
 	}
 
 	if (pageCode == 0x02 || pageCode == 0x3F)
 	{
 		pageFound = 1;
-		pageIn(pc, idx, DisconnectReconnectPage, sizeof(DisconnectReconnectPage));
-		idx += sizeof(DisconnectReconnectPage);
+		if ((scsiDev.compatMode >= COMPAT_SCSI2))
+		{
+			pageIn(pc, idx, DisconnectReconnectPage, sizeof(DisconnectReconnectPage));
+			idx += sizeof(DisconnectReconnectPage);
+		}
+		else
+		{
+			pageIn(pc, idx, DisconnectReconnectPage_SCSI1, sizeof(DisconnectReconnectPage_SCSI1));
+			idx += sizeof(DisconnectReconnectPage_SCSI1);
+		}
 	}
 
 	if (pageCode == 0x03 || pageCode == 0x3F)
@@ -274,7 +329,14 @@ static void doModeSense(
 	if (pageCode == 0x04 || pageCode == 0x3F)
 	{
 		pageFound = 1;
-		pageIn(pc, idx, RigidDiskDriveGeometry, sizeof(RigidDiskDriveGeometry));
+		if ((scsiDev.compatMode >= COMPAT_SCSI2))
+		{
+			pageIn(pc, idx, RigidDiskDriveGeometry, sizeof(RigidDiskDriveGeometry));
+		}
+		else
+		{
+			pageIn(pc, idx, RigidDiskDriveGeometry_SCSI1, sizeof(RigidDiskDriveGeometry_SCSI1));
+		}
 
 		if (pc != 0x01)
 		{
@@ -299,7 +361,14 @@ static void doModeSense(
 			memcpy(&scsiDev.data[idx+9], &scsiDev.data[idx+2], 3);
 		}
 
-		idx += sizeof(RigidDiskDriveGeometry);
+		if ((scsiDev.compatMode >= COMPAT_SCSI2))
+		{
+			idx += sizeof(RigidDiskDriveGeometry);
+		}
+		else
+		{
+			idx += sizeof(RigidDiskDriveGeometry_SCSI1);
+		}
 	}
 
 	// DON'T output the following pages for SCSI1 hosts. They get upset when

+ 2 - 2
lib/SCSI2SD/software/scsi2sd-util/SCSI2SD_Bootloader.cc

@@ -168,8 +168,8 @@ Bootloader::getHWInfo() const
 		info.firmwareName = "SCSI2SD-V3.cyacd";
 		break;
 	case 0x3002:
-		info.desc = "3.5\" SCSI2SD (yellow) or 2.5\" SCSI2SD for Apple Powerbook";
-		info.version = "V4.1/V4.2";
+		info.desc = "3.5\" SCSI2SD (yellow/red) or 2.5\" SCSI2SD for Apple Powerbook";
+		info.version = "V4.1/V4.2/V5.0";
 		info.firmwareName = "SCSI2SD-V4.cyacd";
 		break;
 	}