|
|
1.1 root 1: /* $Header: /usr/src/sys/i8086/sys/RCS/m18hd.h,v 1.1 88/03/24 17:48:25 src Exp $
2: *
3: * Olivetti M18 Personal Computer
4: * Hard Disk Constants
5: *
6: * Allan Cornish, INETCO Systems Ltd., Aug 1984
7: *
8: * $Log: /usr/src/sys/i8086/sys/RCS/m18hd.h,v $
9: * Revision 1.1 88/03/24 17:48:25 src
10: * Initial revision
11: *
12: */
13: #ifndef M18HD_H
14: #define M18HD_H
15:
16: /*
17: * Register Addresses
18: */
19:
20: #define SEL_REG 0x300 /* Select Register (write only) */
21: #define STAT_REG 0x300 /* Status Register (read only) */
22: #define ENA_REG 0x301 /* Enable Register (write only) */
23: #define DATA_REG 0x302 /* Data Register (read/write) */
24: #define CMD_REG 0x303 /* Commnd Register (read,write) */
25: #define AUX_REG 0x304 /* Auxiliary Reg (read only) */
26:
27: /*
28: * Select Register (Write Only)
29: */
30:
31: #define HEAD_SEL(n) ((n)<<2) /* Head Select macro */
32: #define STEP_SEL 0x20 /* Set to step */
33: #define STEP_IN 0x40 /* Set to step in */
34: #define RWC_SEL 0x80 /* Reduced Write Curr */
35:
36: /*
37: * Status Register (Read Only) - bits 6..7 unused
38: */
39:
40: #define DTA_ST 0x01 /* Drive Type, Jumper A */
41: #define RDY_ST 0x02 /* Drive Ready */
42: #define TK0_ST 0x04 /* At Track 0 */
43: #define WFLT_ST 0x08 /* Write Fault on drive */
44: #define SKC_ST 0x10 /* Seek Complete */
45: #define SYNC_ST 0x20 /* Sector Synchronization */
46:
47: /*
48: * Enable Register (Write Only) - bits 0..4 select sector (0..31)
49: */
50:
51: #define READ_ENA 0x20 /* Enable read as next command */
52: #define ECC_ENA 0x40 /* Enable ecc on next command */
53: #define WPRE_ENA 0x80 /* Enable write precompensation */
54:
55: /*
56: * Auxiliary Register (Read Only) - bits 2..7 unused
57: */
58:
59: #define BUSY_AUX 0x01 /* Drive Busy */
60: #define DTC_AUX 0x02 /* Drive Type, Jumper C */
61:
62: /*
63: * Drive Specific Constants
64: */
65:
66: #define NSPT 32
67: #define NHEAD 4
68: #define NCYL 306
69: #define WPCC 64 /* Write Precompensation cyl */
70: #define RWCC 128 /* Reduced Write Current cyl */
71:
72: /*
73: * Error Returns from hdget(), hdput()
74: */
75:
76: #define ECC_ERR 0x00ff /* Bad ECC read error mask */
77: #define SKNC_ERR 0x0100 /* Seek Not Complete Error */
78: #define BUSY_ERR 0x0200 /* Controller Busy Error */
79: #define SYNC_ERR 0x0400 /* Synchronization Error */
80: #define PRFX_ERR 0x0800 /* Bad Prefix Read Error */
81: #define HEAD_ERR 0x1000 /* Bad Head Read Error */
82: #define CYL_ERR 0x2000 /* Bad Cylinder Read Error */
83: #define SEC_ERR 0x4000 /* Bad Sector ID Read Error */
84: #define NRDY_ERR 0x8000 /* Drive Not Ready Error */
85:
86:
87: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.