original files of m241
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
/* nec765Fd.h - NEC 765 floppy disk controller header */
|
||||
|
||||
/* Copyright 1984-1993, 2010 Wind River Systems, Inc. */
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01g,29apr10,pad Moved extern C statement after include statements.
|
||||
01f,10dec97,ms added prototype for usrFdConfig
|
||||
01e,31aug95,hdn added error code,
|
||||
FD_UNFORMATED FD_WRITE_PROTECTED FD_DISK_NOT_PRESENT
|
||||
01d,25oct94,hdn added FD_RAW structure for fdRawio().
|
||||
added fdRawio() function declarations.
|
||||
01c,22apr94,hdn moved FD_DMA_BUF, FD_DMA_BUF_SIZE to config.h.
|
||||
01b,06apr94,hdn changed the DMA address from 0x1000 to 0x2000.
|
||||
01a,30sep93,hdn written.
|
||||
*/
|
||||
|
||||
#ifndef __INCnec765Fdh
|
||||
#define __INCnec765Fdh
|
||||
|
||||
|
||||
#ifndef _ASMLANGUAGE
|
||||
|
||||
#include "blkIo.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct fdDev
|
||||
{
|
||||
BLK_DEV blkDev;
|
||||
int fdType; /* floppy disk type */
|
||||
int drive; /* drive no. 0 - 3 */
|
||||
int blkOffset; /* sector offset */
|
||||
} FD_DEV;
|
||||
|
||||
typedef struct fdType
|
||||
{
|
||||
int sectors; /* no of sectors */
|
||||
int sectorsTrack; /* sectors per track */
|
||||
int heads; /* no of heads */
|
||||
int cylinders; /* no of cylinders */
|
||||
int secSize; /* bytes per sector, 128 << secSize */
|
||||
char gap1; /* gap1 size for read, write */
|
||||
char gap2; /* gap2 size for format */
|
||||
char dataRate; /* data transfer rate */
|
||||
char stepRate; /* stepping rate */
|
||||
char headUnload; /* head unload time */
|
||||
char headLoad; /* head load time */
|
||||
char mfm; /* MFM bit for read, write, format */
|
||||
char sk; /* SK bit for read */
|
||||
char *name; /* name */
|
||||
} FD_TYPE;
|
||||
|
||||
typedef struct fdRaw
|
||||
{ /* this is for IDERAWACCESS ioctl */
|
||||
UINT cylinder; /* cylinder (0 -> (cylindres-1)) */
|
||||
UINT head; /* head (0 -> (heads-1)) */
|
||||
UINT sector; /* sector (1 -> sectorsTrack) */
|
||||
char *pBuf; /* pointer to buffer (bytesSector * nSecs) */
|
||||
UINT nSecs; /* number of sectors (1 -> sectorsTrack) */
|
||||
UINT direction; /* read=0, write=1 */
|
||||
} FD_RAW;
|
||||
|
||||
/* max number of FD drives */
|
||||
|
||||
#define FD_MAX_DRIVES 4
|
||||
|
||||
/* error code */
|
||||
|
||||
#define FD_UNFORMATED -2 /* unformated diskette */
|
||||
#define FD_WRITE_PROTECTED -3 /* write protected diskette */
|
||||
#define FD_DISK_NOT_PRESENT -4 /* no diskette */
|
||||
|
||||
/* FDC IO address */
|
||||
|
||||
#define FD_REG_OUTPUT 0x3f2
|
||||
#define FD_REG_STATUS 0x3f4
|
||||
#define FD_REG_COMMAND 0x3f4
|
||||
#define FD_REG_DATA 0x3f5
|
||||
#define FD_REG_INPUT 0x3f7
|
||||
#define FD_REG_CONFIG 0x3f7
|
||||
|
||||
/* FDC Digital Output Register */
|
||||
|
||||
#define FD_DOR_DRIVE0_SEL 0x00
|
||||
#define FD_DOR_DRIVE1_SEL 0x01
|
||||
#define FD_DOR_DRIVE2_SEL 0x02
|
||||
#define FD_DOR_DRIVE3_SEL 0x03
|
||||
#define FD_DOR_RESET 0x00
|
||||
#define FD_DOR_CLEAR_RESET 0x04
|
||||
#define FD_DOR_DMA_DISABLE 0x00
|
||||
#define FD_DOR_DMA_ENABLE 0x08
|
||||
#define FD_DOR_DRIVE_ON 0x10
|
||||
|
||||
/* FDC Main Status Register */
|
||||
|
||||
#define FD_MSR_DRIVE0_SEEK 0x01
|
||||
#define FD_MSR_DRIVE1_SEEK 0x02
|
||||
#define FD_MSR_DRIVE2_SEEK 0x04
|
||||
#define FD_MSR_DRIVE3_SEEK 0x08
|
||||
#define FD_MSR_FD_BUSY 0x10
|
||||
#define FD_MSR_EXEC_MODE 0x20
|
||||
#define FD_MSR_DIRECTION 0x40
|
||||
#define FD_MSR_RQM 0x80
|
||||
|
||||
/* FDC Commands */
|
||||
|
||||
#define FD_CMD_SPECIFY 0x03
|
||||
#define FD_CMD_SENSEDRIVE 0x04
|
||||
#define FD_CMD_RECALIBRATE 0x07
|
||||
#define FD_CMD_SENSEINT 0x08
|
||||
#define FD_CMD_SEEK 0x0f
|
||||
#define FD_CMD_READ 0x06
|
||||
#define FD_CMD_WRITE 0x05
|
||||
#define FD_CMD_FORMAT 0x0d
|
||||
|
||||
#define FD_CMD_LEN_SPECIFY 3
|
||||
#define FD_CMD_LEN_SENSEDRIVE 2
|
||||
#define FD_CMD_LEN_RECALIBRATE 2
|
||||
#define FD_CMD_LEN_SENSEINT 1
|
||||
#define FD_CMD_LEN_SEEK 3
|
||||
#define FD_CMD_LEN_RW 9
|
||||
#define FD_CMD_LEN_FORMAT 6
|
||||
|
||||
/* FDC's DMA channel */
|
||||
|
||||
#define FD_DMA_CHAN 2
|
||||
|
||||
/* function declarations */
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
|
||||
STATUS fdDrv (int vector, int level);
|
||||
BLK_DEV *fdDevCreate (int fdType, int drive, int nBlks, int offset);
|
||||
STATUS fdRawio (int drive, int fdType, FD_RAW *pFdRaw);
|
||||
STATUS usrFdConfig (int type, int drive, char *fileName);
|
||||
|
||||
#else
|
||||
|
||||
STATUS fdDrv ();
|
||||
BLK_DEV *fdDevCreate ();
|
||||
STATUS fdRawio ();
|
||||
STATUS usrFdConfig ();
|
||||
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#endif /* _ASMLANGUAGE */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCnec765Fdh */
|
||||
|
||||
Reference in New Issue
Block a user