Home Functions Nomenclature InquireBus
 

3.3 InquireSCSI

  LONG  cdecl (*InquireSCSI)  (WORD       what,
                               tBusInfo  *Info);
    #define cInqFirst  0
    #define cInqNext   1

  typedef struct
  {
    tPrivate Private;
     /* for the driver */
    char  BusName[20];
     /* e.g. 'SCSI', 'ACSI', 'PAK-SCSI' */
    UWORD BusNo;
     /* Number with which the bus is to be addressed */
    UWORD Features;
      #define cArbit     0x01     /* Arbitration will take place on
                                   * the bus */
      #define cAllCmds   0x02     /* All SCSI-Cmds can be transmitted
                                   */
      #define cTargCtrl  0x04     /* The target controls the procedure
                                   * (so it should!) */
      #define cTarget    0x08     /* One can install oneself as a
                                   * target on this bus */
      #define cCanDisconnect 0x10 /* Disconnect is possible */
      #define cScatterGather 0x20 /* Scatter gather possible with
                                   * virtual RAM */
    /* Up to 16 features that the bus is capable of, e.g. Arbit,
     * Full-SCSI (all SCSI-Cmds, in contrast to ACSI where the upper
     * 3 bits of the first command are reserved for the target
     * address, so only <$1F) Target or Initiator controlled
     * Can service all addresses (say: ACSI-port in a TT!)
     * A SCSI-handle is also a pointer to a copy of this information!
     */
    ULONG MaxLen;
    /* Maximum transfer length on this bus (in bytes)
     * corresponds e.g. with ACSI to the size of the FRB
     * minimum 64kB (one FRB-size)
     */
  }tBusInfo;

Search for busses that are present.

One calls, similar to Fsfirst/Fsnext, originally with InqFirst in what, then with InqNext repeatedly until a negative value is returned. The message order (first bus 0, then 1, then 2) is _not_ guaranteed - it may happen that bus 3, then bus 2. then 0, then 1 is returned.

A maximum of 32 busses are possible.

One obtains information about the bus in the Info structure.

Returns:

  = 0 : OK
  < 0 : No further devices

ATTENTION: Naturally one must always use the same record for Info, as the driver logs in this the devices that have already been reported.

Task: Search configuration dialogues or self-generated configuration for busses that are present.

The following bus-numbers are reserved for this: 0 (ACSI), 1 (standard SCSI: Falcon, TT, Medusa, MagicMac...) and 2 (IDE in Atari-compatibles).

However, no assumptions may be made about the number of devices or the highest device-ID. The devices present must be interrogated with InquireBus.

Example: see SRCHDRV.C

Home Functions Nomenclature InquireBus