mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.1 KiB
122 lines
3.1 KiB
|
|
/*
|
|
* VPC-XT Revision 1.0
|
|
*
|
|
* Title : Floppy Disk Adaptor definitions
|
|
*
|
|
* Description : This file contains those definitions that are used
|
|
* by modules calling the FLA as well as thw FLA itself.
|
|
*
|
|
* Author : Henry Nash
|
|
*
|
|
* Notes : This file is included by fla.f and should not be
|
|
* included directly.
|
|
*/
|
|
|
|
/* @(#)fla.h 1.5 08/26/92 */
|
|
|
|
/*
|
|
* ============================================================================
|
|
* External declarations and macros
|
|
* ============================================================================
|
|
*/
|
|
|
|
/*
|
|
* The FLA also supports the IBM Digital Output Register (DOR) that is used
|
|
* to control the physical drives. The bits are assigned as follows:
|
|
*
|
|
* Bits 0,1 - Drive select between drives 0-3
|
|
* Bit 2 - Not Reset (ie reset when low)
|
|
* Bit 3 - Interrupts/DMA enabled
|
|
* Bits 4-7 - Motor on for drives 0-3
|
|
*
|
|
*/
|
|
|
|
#define DOR_RESET 0x04
|
|
#define DOR_INTERRUPTS 0x08
|
|
|
|
/*
|
|
* The following define the command codes supported by the FDC
|
|
*/
|
|
|
|
#define FDC_READ_TRACK 0x02
|
|
#define FDC_SPECIFY 0x03
|
|
#define FDC_SENSE_DRIVE_STATUS 0x04
|
|
#define FDC_WRITE_DATA 0x05
|
|
#define FDC_READ_DATA 0x06
|
|
#define FDC_RECALIBRATE 0x07
|
|
#define FDC_SENSE_INT_STATUS 0x08
|
|
#define FDC_WRITE_DELETED_DATA 0x09
|
|
#define FDC_READ_ID 0x0A
|
|
#define FDC_READ_DELETED_DATA 0x0C
|
|
#define FDC_FORMAT_TRACK 0x0D
|
|
#define FDC_SEEK 0x0F
|
|
#define FDC_SCAN_EQUAL 0x11
|
|
#define FDC_SCAN_LOW_OR_EQUAL 0x19
|
|
#define FDC_SCAN_HIGH_OR_EQUAL 0x1D
|
|
|
|
#define FDC_COMMAND_MASK 0x1f /* Bits that specify the command */
|
|
|
|
/*
|
|
* The following mask specifies the Drive Ready Transition state in
|
|
* Status register 0
|
|
*/
|
|
|
|
#define FDC_DRIVE_READY_TRANSITION 0xC0
|
|
|
|
/*
|
|
* The FDC Status register bit positions:
|
|
*/
|
|
|
|
#define FDC_RQM 0x80
|
|
#define FDC_DIO 0x40
|
|
#define FDC_NDMA 0x20
|
|
#define FDC_BUSY 0x10
|
|
|
|
/*
|
|
* Extra registers required for SFD
|
|
*/
|
|
|
|
#define DIR_DRIVE_SELECT_0 (1 << 0)
|
|
#define DIR_DRIVE_SELECT_1 (1 << 1)
|
|
#define DIR_HEAD_SELECT_0 (1 << 2)
|
|
#define DIR_HEAD_SELECT_1 (1 << 3)
|
|
#define DIR_HEAD_SELECT_2 (1 << 4)
|
|
#define DIR_HEAD_SELECT_3 (1 << 5)
|
|
#define DIR_WRITE_GATE (1 << 6)
|
|
#define DIR_DISKETTE_CHANGE (1 << 7)
|
|
|
|
#define IDR_ID_MASK 0xf8
|
|
|
|
#define DCR_RATE_MASK 0x3
|
|
#define DCR_RATE_500 0x0
|
|
#define DCR_RATE_300 0x1
|
|
#define DCR_RATE_250 0x2
|
|
#define DCR_RATE_1000 0x3
|
|
|
|
#define DSR_RQM (1 << 7)
|
|
#define DSR_DIO (1 << 6)
|
|
|
|
#define DUAL_CARD_ID 0x50
|
|
|
|
/*
|
|
* ============================================================================
|
|
* External functions and data
|
|
* ============================================================================
|
|
*/
|
|
|
|
/*
|
|
* The flag that indiactes the FLA is busy, and cannot accept asynchronous
|
|
* commands (eg motor off).
|
|
*/
|
|
|
|
extern boolean fla_busy;
|
|
extern boolean fla_ndma;
|
|
|
|
/*
|
|
* The adaptor functions
|
|
*/
|
|
|
|
extern void fla_init IPT0();
|
|
extern void fla_inb IPT2(io_addr, port, half_word *, value);
|
|
extern void fla_outb IPT2(io_addr, port, half_word, value);
|