mirror of
https://github.com/akuker/RASCSI.git
synced 2025-01-10 17:30:47 +00:00
Support ICD (Atari ACSI) command semantics (#640)
* Initial ICD support * Comment update * Comment update * Comment update * Update README.md
This commit is contained in:
parent
38f8191a45
commit
d9b4e1fc1f
@ -1,5 +1,5 @@
|
||||
# What is RaSCSI?
|
||||
RaSCSI is a virtual SCSI device emulator that runs on a Raspberry Pi. It runs in userspace, and can emulate several SCSI devices at one time. There is a control interface to attach / detach drives during runtime, as well as insert and eject removable media. This project is aimed at users of vintage Macintosh computers and more (see [compatibility list](https://github.com/akuker/RASCSI/wiki/Compatibility)) from the 1980's and 1990's.
|
||||
RaSCSI is a virtual SCSI device emulator that runs on a Raspberry Pi. It runs in userspace, and can emulate several SCSI devices at one time. There is a control interface to attach / detach drives during runtime, as well as insert and eject removable media. This project is aimed at users of vintage Macintosh and Atari computers and more (see [compatibility list](https://github.com/akuker/RASCSI/wiki/Compatibility)) from the 1980's and 1990's.
|
||||
|
||||
Please check out the full story with much more detail on the [wiki](https://github.com/akuker/RASCSI/wiki)!
|
||||
|
||||
|
@ -861,6 +861,38 @@ int GPIOBUS::CommandHandShake(BYTE *buf)
|
||||
goto irq_enable_exit;
|
||||
}
|
||||
|
||||
// The ICD AdSCSI ST, AdSCSI Plus ST and AdSCSI Micro ST host adapters allow SCSI devices to be connected
|
||||
// to the ACSI bus of Atari ST/TT computers and some clones. ICD-aware drivers prepend a $1F byte in front
|
||||
// of the CDB (effectively resulting in a custom SCSI command) in order to get access to the full SCSI
|
||||
// command set. Native ACSI is limited to the low SCSI command classes with command bytes < $20.
|
||||
// Most other host adapters (e.g. LINK96/97 and the one by Inventronik) and also several devices (e.g.
|
||||
// UltraSatan or GigaFile) that can directly be connected to the Atari's ACSI port also support ICD
|
||||
// semantics. I fact, these semantics have become a standard in the Atari world.
|
||||
|
||||
// RaSCSI becomes ICD compatible by ignoring the prepended $1F byte before processing the CDB.
|
||||
if (*buf == 0x1F) {
|
||||
SetSignal(PIN_REQ, ON);
|
||||
|
||||
ret = WaitSignal(PIN_ACK, TRUE);
|
||||
|
||||
SysTimer::SleepNsec(SCSI_DELAY_BUS_SETTLE_DELAY_NS);
|
||||
|
||||
// Get the actual SCSI command
|
||||
*buf = GetDAT();
|
||||
|
||||
SetSignal(PIN_REQ, OFF);
|
||||
|
||||
if (!ret) {
|
||||
goto irq_enable_exit;
|
||||
}
|
||||
|
||||
WaitSignal(PIN_ACK, FALSE);
|
||||
|
||||
if (!ret) {
|
||||
goto irq_enable_exit;
|
||||
}
|
||||
}
|
||||
|
||||
count = GetCommandByteCount(*buf);
|
||||
|
||||
// Increment buffer pointer
|
||||
|
Loading…
x
Reference in New Issue
Block a user