source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Inc/Controllers/XTCF.inc@ 559

Last change on this file since 559 was 558, checked in by krille_n_@…, 11 years ago

Changes:

  • Building the BIOS Drive Information Tool now works again.
  • Moved all XT-CF related code to MODULE_8BIT_IDE_ADVANCED. I don't see how an XT-CF card could work without *_ADVANCED anyway but if I'm wrong, feel free to undo this. Note! The autodetection code in XTIDECFG has NOT been changed to reflect this (still relies on MODULE_8BIT_IDE).
  • Optimizations and fixes in general.
File size: 3.6 KB
Line 
1; Project name : XTIDE Universal BIOS
2; Description : Lo-tech XT-CFv2 board specifications.
3;
4; More information at http://www.lo-tech.co.uk/XT-CF
5
6;
7; XTIDE Universal BIOS and Associated Tools
8; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
9;
10; This program is free software; you can redistribute it and/or modify
11; it under the terms of the GNU General Public License as published by
12; the Free Software Foundation; either version 2 of the License, or
13; (at your option) any later version.
14;
15; This program is distributed in the hope that it will be useful,
16; but WITHOUT ANY WARRANTY; without even the implied warranty of
17; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18; GNU General Public License for more details.
19; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20;
21
22; Modified by JJP for XT-CFv3 support, Mar-13
23
24
25%ifndef XTCF_INC
26%define XTCF_INC
27
28; XT-CF requires that block must be less than 128 sectors (64 kiB) for DMA transfers.
29;
30; Note: XT-CFv3 DMA will not interfere with PC & PC/XT memory refresh,
31; since the XT-CFv3 detaches itself from the bus every 16 bytes transferred.
32;
33XTCF_DMA_MODE_MAX_BLOCK_SIZE EQU 64 ; Sectors
34
35; Possible base addresses. Note that all XT-CF IDE registers are SHL 1 compared
36; to standard IDE registers.
37XTCF_BASE_PORT_1 EQU 200h
38XTCF_BASE_PORT_2 EQU 240h
39XTCF_BASE_PORT_3 EQU 300h ; Default setting
40XTCF_BASE_PORT_4 EQU 340h
41
42
43; XT-CF Control Register (do not SHL 1 these!)
44; Note: XT-CFv3 control register is used *only* to raise DRQ. The register cannot be read.
45;
46XTCF_CONTROL_REGISTER EQU 1Eh
47
48; Transfer Mode Constants
49;
50; Available transfer modes depend on the controller. All XT-CF controllers
51; support 8-bit PIO, either with 8-bit or 16-bit instructions (i.e., data
52; can be fetched from the controller with REP INSW or REP INSB since A0 is
53; not decoded). However, errors in the implementation of the BIU on some
54; machines will prevent 16-bit instructions delivering data correctly.
55;
56; For XT-CFv3 adapter, DMA transfers are also supported via channel 3.
57;
58; XT-CFv3 cannot be distinguised by software, so user must decide and set
59; the mode via a call to Int 13h function 1Eh accordingly (see AH1E_XTCF.asm).
60;
61XTCF_8BIT_PIO_MODE EQU 00h
62XTCF_8BIT_PIO_MODE_WITH_BIU_OFFLOAD EQU 01h
63XTCF_DMA_MODE EQU 02h
64
65; Subcommands for AH=1Eh, Lo-tech XT-CF features.
66; Return values common for all subcommands:
67; AH: RET_HD_SUCCESS if drive is XT-CF
68; RET_HD_INVALID if drive is not XT-CF
69; CF: 0 if successful, 1 if error
70
71;--------------------------------------------------------------------
72; IS_THIS_DRIVE_XTCF
73; Parameters:
74; DL: Drive Number
75;--------------------------------------------------------------------
76IS_THIS_DRIVE_XTCF EQU 0
77
78;--------------------------------------------------------------------
79; SET_XTCF_TRANSFER_MODE
80; Parameters:
81; DH: Mode to select, i.e. XTCF_8BIT_PIO_MODE
82; Note there's no way to know if an XT-CF adapter
83; supports DMA, so the user should enable DMA
84; only if a DMA-enabled XT-CFv3 is fitted.
85; DL: Drive Number
86;--------------------------------------------------------------------
87SET_XTCF_TRANSFER_MODE EQU 1
88
89;--------------------------------------------------------------------
90; GET_XTCF_TRANSFER_MODE
91; Parameters:
92; DL: Drive Number
93; Returns:
94; DH: One of the mode values listed above,
95; i.e. XTCF_8BIT_PIO_MODE
96; DL: Block mode sectors per block configured
97;--------------------------------------------------------------------
98GET_XTCF_TRANSFER_MODE EQU 2
99
100
101%endif ; XTCF_INC
Note: See TracBrowser for help on using the repository browser.