<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Wed, 21 Jul 2004 15:46:13 +0100
From   : Richard Gellman <splodge@...>
Subject: Re: Acorn Winchester unit

Jules Richardson wrote:

>On Tue, 2004-07-06 at 12:18, Richard Gellman wrote:
>  
>
>>pfft. you're controlling the wrong thing.
>>8 data lines for the SCSI bus/SCSI ID select, then use the 
>>control/status lines on the parallel port to control the SCSI bus directly.
>>    
>>
>
>Hmm, well you have the spec - I've just got info gleaned from the web
>:-) 
>
>However the SCSI signal definitions I've seen define the following as
>inputs to the host:
>
>  /MSG
>  /C/D
>  /I/O
>  /REQ
>  
>.. the following as outputs from the host:
>
>  /ATN
>  /ACK
>
>.. and the following as bidirectional:
>
>  DB0..7
>  /BSY
>  /RST
>  /SEL
>  TERMPWR
>  PARITY
>  
>
ATN is used in "Reselection" phases. A reselection phase occurs when a 
target decides its going to take a while to complete an operation, and 
the initiator has indicated it supports a disconnect phase. Unless the 
initiator specfically tells the target "I do disconnection", then the 
device won't use it.

The basic sequence is thus (IRC style):
Initiator: Get me some data, let me know if you need some time.
Target: Man, this will take forever. Can I get back to you?
Initiator: Sure *disconnect*
<other bus activity>
Target: Ok, I'm ready
Initator: *reselect* Cool. Lets have that data.

The ATN lline is asserted by the target when it wants the attention of 
an initiator to reselect. It remains asserted during the selection phase 
so that other devices are aware of a reselection phase occuring (this is 
to prevent multiple initiators from attempting an initiator control 
election).

The RST line is asserted by *an* initiator to indicate that the bus is 
"dirty" and needs resetting so that everything can continue peacefully. 
This is done usually only by a single initiator upon startup on an 
internal bus. External SCSI bus controllers omit this stage, assuming 
that to RST in the middle of another initiator controlling the bus would 
be a nono (ex. SCSI disc share systems).

So, if you assume the SCSI device you want to access is going to be 
reset anyway on startup, and that you never use disconnect-supported 
commands, you can do away with ATN and RST.

That only leaves REQ, ACK, C/D, I/O, MSG, BSY and SEL.

Outputs:
ACK is out from initiator to target. ACK follows REQ, and indicates the 
target has the data for a data in phase, or that the data for a data out 
phase has been taken.

SEL is out from initiator to *BUS*. Note: not target. Targets supporting 
reselect phases may also assert SEL to request the ATN of the initiator. 
SEL is used in initator control elections (arbitration phase) in 
multi-initiator environments, and in target attention (selection) phases.

Inputs:
C/D is in from target to initiator, and indicates whether the current 
data transfer phase is a command or data. This can be used by the 
initiator to check which phase is currently entered into.

I/O is in from target to initiator, and indicates data direction during 
data transfer phases. It is also used to turn a command phase into a 
status phase. That is, "Command Out" is in fact a status phase.

REQ is in from target to initiator, and indicates the target would like 
data to be taken, or made available on the bus. The initiator should 
respond with ACK when ready.

BSY is in from bus to initiator or target. BSY indicates when the bus is 
in use. It is asserted by targets to indicate that a handshake has 
completed and a transaction is taking place. However, other targets may 
also examine this bit to determine if they may assert ATN.

MSG is in from target to initiator. MSG indicates that the data being 
transferred is part of a status message block, and not a data block.

Thus, 2 outputs, and 5 inputs. So it all fits on your standard parallel 
printer port. :)

If you're interested, I'll dig out the cable and do you a end-to-end 
pin-out.

-- Richard
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>