Эх сурвалжийг харах

Reduce size of mode pages for SCSI1 hosts

Michael McMaster 10 жил өмнө
parent
commit
40486970fb

+ 19 - 9
lib/SCSI2SD/readme.txt

@@ -28,10 +28,12 @@ Technical Specifications
 
 
 SCSI Interface
 SCSI Interface
 	SCSI-2 Narrow 8-bit 50-pin connector. Supports asynchronous transfers only.
 	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.
 	Communication is via the SPI protocol at 25MHz.
+USB Interface (firmware updates and config)
+	USB 2.0 micro-B
 Power
 Power
 	5V via standard molex drive connector.
 	5V via standard molex drive connector.
 Dimensions
 Dimensions
@@ -69,6 +71,9 @@ Compatibility
     PDP-11/73 running RSX11M+ V4.6
     PDP-11/73 running RSX11M+ V4.6
     Microvax 3100 Model 80 running VMS 7.3 (needs patch against v3.5.2 firmware)
     Microvax 3100 Model 80 running VMS 7.3 (needs patch against v3.5.2 firmware)
     Amiga 500+ with GVP A530
     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 TT030 System V
     Atari MEGA STE
     Atari MEGA STE
         needs J3 TERMPWR jumper
         needs J3 TERMPWR jumper
@@ -80,12 +85,16 @@ Compatibility
     Compaq XP-1000 Professional Workstation
     Compaq XP-1000 Professional Workstation
         Alpha 21264 CPU, 667MHz, with a QLogic SCSI controller in a PCI slot 
         Alpha 21264 CPU, 667MHz, with a QLogic SCSI controller in a PCI slot 
     SCSI-based Macintosh Powerbooks (2.5" SCSI2SD)
     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
 Samplers
 
 
@@ -106,6 +115,7 @@ Samplers
         Requires TERMPWR jumper. The manual shows the pin25 of the DB25 connector is "not connected".
         Requires TERMPWR jumper. The manual shows the pin25 of the DB25 connector is "not connected".
         May require scsi2sd-config --apple flag 
         May require scsi2sd-config --apple flag 
     Yamaha A5000, A3000, EX5, EX5R 
     Yamaha A5000, A3000, EX5, EX5R 
+    EMU ESI4000
 
 
 Other
 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)*/
 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[] =
 static const uint8 DisconnectReconnectPage[] =
 {
 {
 0x02, // Page code
 0x02, // Page code
@@ -65,6 +77,18 @@ static const uint8 DisconnectReconnectPage[] =
 0x00, 0x00, 0x00 // Reserved
 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[] =
 static const uint8 FormatDevicePage[] =
 {
 {
 0x03 | 0x80, // Page code | PS (persist) bit.
 0x03 | 0x80, // Page code | PS (persist) bit.
@@ -99,6 +123,21 @@ SCSI_HEADS_PER_CYLINDER, // Number of heads
 0x00, 0x00 // Reserved
 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[] =
 static const uint8 CachingPage[] =
 {
 {
 0x08, // Page Code
 0x08, // Page Code
@@ -239,15 +278,31 @@ static void doModeSense(
 	if (pageCode == 0x01 || pageCode == 0x3F)
 	if (pageCode == 0x01 || pageCode == 0x3F)
 	{
 	{
 		pageFound = 1;
 		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)
 	if (pageCode == 0x02 || pageCode == 0x3F)
 	{
 	{
 		pageFound = 1;
 		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)
 	if (pageCode == 0x03 || pageCode == 0x3F)
@@ -274,7 +329,14 @@ static void doModeSense(
 	if (pageCode == 0x04 || pageCode == 0x3F)
 	if (pageCode == 0x04 || pageCode == 0x3F)
 	{
 	{
 		pageFound = 1;
 		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)
 		if (pc != 0x01)
 		{
 		{
@@ -299,7 +361,14 @@ static void doModeSense(
 			memcpy(&scsiDev.data[idx+9], &scsiDev.data[idx+2], 3);
 			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
 	// 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";
 		info.firmwareName = "SCSI2SD-V3.cyacd";
 		break;
 		break;
 	case 0x3002:
 	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";
 		info.firmwareName = "SCSI2SD-V4.cyacd";
 		break;
 		break;
 	}
 	}