124 lines
3.3 KiB
C
124 lines
3.3 KiB
C
/*****************************************************************************
|
||
*
|
||
* COPYRIGHT (C) 1990-1992 COLORADO MEMORY SYSTEMS, INC.
|
||
* COPYRIGHT (C) 1992-1994 HEWLETT-PACKARD COMPANY
|
||
*
|
||
******************************************************************************
|
||
*
|
||
* FILE: \SE\DRIVER\Q117CD\SRC\0X11058.C
|
||
*
|
||
* FUNCTION: cqd_SelectFormat
|
||
*
|
||
* PURPOSE: Issues a firmware SELECT_FORMAT command on 3010/3020 drives
|
||
*
|
||
* HISTORY:
|
||
* $Log: J:\se.vcs\driver\q117cd\src\0x11058.c $
|
||
*
|
||
* Rev 1.3.1.0 29 Jan 1996 17:00:12 BOBLEHMA
|
||
* Added wide tape support to the select format command for 3010 and 3020
|
||
* drives.
|
||
*
|
||
* Rev 1.3 24 Jan 1996 10:58:44 BOBLEHMA
|
||
* Changed the define QIC_FLEXIBLE_550 to QIC_FLEXIBLE_550_WIDE.
|
||
*
|
||
* Rev 1.2 15 May 1995 10:48:32 GaryKiwi
|
||
* Phoenix merge from CBW95s
|
||
*
|
||
* Rev 1.1.1.0 11 Apr 1995 18:05:26 garykiwi
|
||
* PHOENIX pass #1
|
||
*
|
||
* Rev 1.2 26 Jan 1995 14:59:36 BOBLEHMA
|
||
* Added support for the Phoenix drive with QIC tape or WIDE tapes
|
||
* using the defines SELECT_FORMAT_80 or SELECT_FORMAT_80W respectively.
|
||
*
|
||
* Rev 1.1 28 Nov 1994 08:01:44 SCOTTMAK
|
||
* Added kdi_pub.h to include list.
|
||
*
|
||
* Rev 1.0 23 Nov 1994 10:13:00 MARKMILL
|
||
* Initial revision.
|
||
*
|
||
*****************************************************************************/
|
||
#define FCT_ID 0x11058
|
||
#include "include\public\adi_api.h"
|
||
#include "include\public\frb_api.h"
|
||
#include "include\private\kdi_pub.h"
|
||
#include "include\private\cqd_pub.h"
|
||
#include "q117cd\include\cqd_defs.h"
|
||
#include "q117cd\include\cqd_strc.h"
|
||
#include "q117cd\include\cqd_hdr.h"
|
||
|
||
|
||
/*endinclude*/
|
||
|
||
dStatus cqd_SelectFormat
|
||
(
|
||
/* INPUT PARAMETERS: */
|
||
|
||
CqdContextPtr cqd_context
|
||
|
||
/* UPDATE PARAMETERS: */
|
||
|
||
/* OUTPUT PARAMETERS: */
|
||
|
||
)
|
||
/* COMMENTS: *****************************************************************
|
||
*
|
||
* This function issues a SELECT_FORMAT firmware command if the drive is
|
||
* a QIC-3010 or QIC-3020 drive.
|
||
*
|
||
* DEFINITIONS: *************************************************************/
|
||
{
|
||
|
||
/* DATA: ********************************************************************/
|
||
|
||
dUByte select_format_arg;
|
||
dStatus status=DONT_PANIC;
|
||
dBoolean esd_retry = dFALSE;
|
||
|
||
/* CODE: ********************************************************************/
|
||
|
||
switch (cqd_context->device_descriptor.drive_class) {
|
||
|
||
case QIC80W_DRIVE:
|
||
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_550_WIDE) {
|
||
select_format_arg = SELECT_FORMAT_80W;
|
||
} else {
|
||
select_format_arg = SELECT_FORMAT_80;
|
||
}
|
||
break;
|
||
|
||
case QIC3010_DRIVE:
|
||
select_format_arg = SELECT_FORMAT_3010;
|
||
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_900_WIDE) {
|
||
select_format_arg += 2;
|
||
}
|
||
break;
|
||
|
||
case QIC3020_DRIVE:
|
||
select_format_arg = SELECT_FORMAT_3020;
|
||
if (cqd_context->floppy_tape_parms.tape_status.length == QIC_FLEXIBLE_900_WIDE) {
|
||
select_format_arg += 2;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
select_format_arg = SELECT_FORMAT_UNSUPPORTED;
|
||
break;
|
||
}
|
||
|
||
if( select_format_arg != SELECT_FORMAT_UNSUPPORTED ) {
|
||
|
||
if ((status = cqd_SendByte(cqd_context, FW_CMD_SELECT_SPEED)) == DONT_PANIC) {
|
||
|
||
kdi_Sleep(cqd_context->kdi_context, INTERVAL_CMD, dFALSE);
|
||
|
||
if ((status = cqd_SendByte(cqd_context,(dUByte)(select_format_arg + CMD_OFFSET))) == DONT_PANIC) {
|
||
|
||
status = cqd_WaitCommandComplete(cqd_context, INTERVAL_SPEED_CHANGE, dFALSE);
|
||
}
|
||
}
|
||
}
|
||
|
||
return status;
|
||
}
|