diff --git a/Dayna-Port-Command-Set.md b/Dayna-Port-Command-Set.md new file mode 100644 index 0000000..ac73a80 --- /dev/null +++ b/Dayna-Port-Command-Set.md @@ -0,0 +1,180 @@ + DaynaPort SCSI/Link: SCSI Command Set + Revision 1.20 (16 July 2005) + + +Copyright 2002-2005 by Roger Burrows. All Rights Reserved. Permission +is granted to copy this document providing that no changes are made to +the contents. + + +LIMITATION OF LIABILITY AND DISCLAIMER OF WARRANTY +-------------------------------------------------- +The information cantained in this document is provided "as-is", without +warranty of any kind, expressed or implied, including without limitation +any warranty concerning the accuracy, adequacy, or completeness of such +information or material. The Author shall not be responsible for any +claims attributable to errors, omissions, or other inaccuracies in the +information or material contained in this document, and in no event +shall the Author be liable for direct, indirect, special, incidental, +or consequential damages arising out of the use of such information or +material. + + +SCOPE +----- +This document applies to the following hardware devices: + DaynaPort SCSI/Link-T (Model DP0801) + DaynaPort SCSI/Link-3 (Model DP0802) +and to the following firmware revisions: + 1.4a + 2.0f +It probably also applies to other firmware revisions; it may also apply +to other Dayna SCSI/Link devices. Any feedback on this is welcomed. +Please supply any additions or corrections to Roger Burrows +(roger@anodynesoftware.com). + + +REVISION HISTORY +---------------- +Version 1.00 (8/August/2002) + Original version +Version 1.10 (22/April/2005) + Added description of 'Set Interface Mode/Set MAC Address' command +Version 1.20 (16/July/2005) + Corrected description of 'Set Interface Mode/Set MAC Address' command + + +NOTATION +-------- +All numbers are expressed in hexadecimal, unless otherwise noted. + + +COMMAND SET SUMMARY +------------------- +The following is a partial list of implemented SCSI commands: + + 03 Request Sense + 08 Read + 09 Retrieve Statistics + 0a Write + 0c Set Interface Mode / Set MAC Address + 0e Enable/disable Interface + 12 Inquiry + +A number of other SCSI commands are implemented, but their usage is +not yet fully known. + + +Enable/disable Interface (0e) +----------------------------- +Command: 0e 00 00 00 00 XX (XX = 80 or 00) +Function: Enable (80) / disable (00) Ethernet interface +Type: No data transferred +Notes: After issuing an Enable, the initiator should avoid sending + any subsequent commands to the device for approximately 0.5 + seconds + + +Inquiry (12) +------------ +Command: 12 00 00 00 LL 00 (LL is data length) +Function: Perform a standard SCSI Inquiry command: reference the + SCSI spec for further information +Type: Input; reference the SCSI spec for the data returned +Notes: The length is user-selectable to a maximum of 25 (37 decimal) + + +Read (08) +--------- +Command: 08 00 00 LL LL XX (LLLL is data length, XX = c0 or 80) +Function: Read a packet at a time from the device (standard SCSI Read) +Type: Input; the following data is returned: + LL LL NN NN NN NN XX XX XX ... CC CC CC CC +where: + LLLL is normally the length of the packet (a 2-byte + big-endian hex value), including 4 trailing bytes + of CRC, but excluding itself and the flag field. + See below for special values + NNNNNNNN is a 4-byte flag field with the following meanings: + FFFFFFFF a packet has been dropped (?); in this case + the length field appears to be always 4000 + 00000010 there are more packets currently available + in SCSI/Link memory + 00000000 this is the last packet + XX XX ... is the actual packet + CCCCCCCC is the CRC + +Notes: + . When all packets have been retrieved successfully, a length field + of 0000 is returned; however, if a packet has been dropped, the + SCSI/Link will instead return a non-zero length field with a flag + of FFFFFFFF when there are no more packets available. This behaviour + seems to continue until a disable/enable sequence has been issued. + . The SCSI/Link apparently has about 6KB buffer space for packets. + + +Request Sense (03) +------------------ +Command: 03 00 00 00 00 00 +Function: Perform a standard SCSI Request Sense command +Type: Input; reference the SCSI spec for the data returned +Notes: + . This command always transfers exactly 9 bytes of data (note that cdb + byte 4 is always zero, however). + . If the sense key is 5, the driver should reinitialise the device via + a disable/enable sequence; otherwise, it need do nothing. + + +Retrieve Statistics (09) +------------------------ +Command: 09 00 00 00 12 00 +Function: Retrieve MAC address and device statistics +Type: Input; returns 18 (decimal) bytes of data as follows: + . bytes 0-5: the current hardware ethernet (MAC) address + . bytes 6-17: three long word (4-byte) counters (little-endian). +Notes: The contents of the three longs are typically zero, and their + usage is unclear; they are suspected to be: + . long #1: frame alignment errors + . long #2: CRC errors + . long #3: frames lost + + +Set Interface Mode (0c) +----------------------- +Command: 0c 00 00 00 FF 80 (FF = 08 or 04) +Function: Allow interface to receive broadcast messages (FF = 04); the + function of (FF = 08) is currently unknown. +Type: No data transferred +Notes: This command is accepted by firmware 1.4a & 2.0f, but has no + effect on 2.0f, which is always capable of receiving broadcast + messages. In 1.4a, once broadcast mode is set, it remains set + until the interface is disabled. + + +Set MAC Address (0c) +-------------------- +Command: 0c 00 00 00 FF 40 (FF = 08 or 04) +Function: Set MAC address +Type: Output; overrides built-in MAC address with user-specified + 6-byte value +Notes: This command is intended primarily for debugging/test purposes. + Disabling the interface resets the MAC address to the built-in + value. + + +Write (0a) +---------- +Command: 0a 00 00 LL LL XX (LLLL is data length, XX = 80 or 00) +Function: Write a packet at a time to the device (standard SCSI Write) +Type: Output; the format of the data to be sent depends on the value + of XX, as follows: + . if XX = 00, LLLL is the packet length, and the data to be sent + must be an image of the data packet + . if XX = 80, LLLL is the packet length + 8, and the data to be + sent is: + PP PP 00 00 XX XX XX ... 00 00 00 00 + where: + PPPP is the actual (2-byte big-endian) packet length + XX XX ... is the actual packet + +========================= END OF DOCUMENT =========================