Chuck_SirVAX_Staatse@cup.portal.com (06/13/90)
I am considering making a Widget that would interface to the SCSI bus. This device would do block mode transfers (like a disk) when accessed thru one device address, and character like transfers when accessed at a different device address. Although designing the hardware play on the SCSI bus seems very straightforward, getting a user written program to access this device thru a standard SCSI port is not so straightforward. My user program should be able to: dma_read(staring_block,buffer_address,byte_count,&stat) dma_write(staring_block,buffer_address,byte_count,&stat) char_read(buffer_address,byte_count,&stat) char_write(buffer_address,byte_count,&stat) In addition, each call should be able to set up a function address, so that the specified function could be called when the operation is finished. Is this functionality available without writing a device driver?
krowitz%richter@UMIX.CC.UMICH.EDU (David Krowitz) (06/13/90)
The General Purpose I/O package (GPIO) contains all the system calls for controlling the I/O bus for multibus, VME bus, AT bus and SCSI periperals. There are a series of calls contained in the library that a specifically for SCSI devices: procedure scsi_$abort_operation( { abort operation } procedure scsi_$acquire( { acquire device } procedure scsi_$acquire_stream( { acquire device } procedure scsi_$do_command( { do scsi command } procedure scsi_$get_ec( { get device eventcount } procedure scsi_$get_info( { get implementation information } procedure scsi_$release( { release device } procedure scsi_$reset_device( { reset scsi device } procedure scsi_$unwire( { unwire buffer } function scsi_$wait( { wait for operation to complete } procedure scsi_$wire( { wire buffer } The complete call definitions can be found in /sys/ins/scsi.ins.pas if you have GPIO installed (it is an optional product). -- David Krowitz krowitz@richter.mit.edu (18.83.0.109) krowitz%richter.mit.edu@eddie.mit.edu krowitz%richter.mit.edu@mitvma.bitnet (in order of decreasing preference)