mirror of
https://github.com/fhgwright/SCSI2SD.git
synced 2025-04-10 01:37:07 +00:00
Reduce size of mode pages for SCSI1 hosts
This commit is contained in:
parent
1b14acad1a
commit
cb79ac4e9a
28
readme.txt
28
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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user