source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH23h_HFeatures.asm@ 510

Last change on this file since 510 was 493, checked in by gregli@…, 12 years ago

Separated MODULE_8BIT_IDE into the basic part used by XTIDE rev 1 and rev 2 which is PIO based, and MODULE_8BIT_IDE_ADVANCED for JRIDE and XTCF support which requires memory mapping and/or DMA. This allows for creating an 8KB image with boot menu support (but no hotkeys) for the XTIDE rev 1. Cleaned up how we reset the drive translation information, ensuring it is properly set between boot attempt on a primary and secondary drive - as a result we clean it when needed, rather than trying to always keep it clean. Also fixed translation bugs in int13h.asm where I had previously missed converting some MODULE_HOTKEYS into MODULE_DRIVEXLATE.

File size: 3.6 KB
Line 
1; Project name : XTIDE Universal BIOS
2; Description : Int 13h function AH=23h,
3; Set Controller Features Register.
4
5;
6; XTIDE Universal BIOS and Associated Tools
7; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
8;
9; This program is free software; you can redistribute it and/or modify
10; it under the terms of the GNU General Public License as published by
11; the Free Software Foundation; either version 2 of the License, or
12; (at your option) any later version.
13;
14; This program is distributed in the hope that it will be useful,
15; but WITHOUT ANY WARRANTY; without even the implied warranty of
16; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17; GNU General Public License for more details.
18; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19;
20
21; Section containing code
22SECTION .text
23
24;--------------------------------------------------------------------
25; Int 13h function AH=23h, Set Controller Features Register.
26;
27; AH23h_HandlerForSetControllerFeatures
28; Parameters:
29; AL, CX: Same as in INTPACK
30; DL: Translated Drive number
31; DS:DI: Ptr to DPT (in RAMVARS segment)
32; SS:BP: Ptr to IDEPACK
33; Parameters on INTPACK:
34; AL: Feature Number (parameter to Features Register = subcommand)
35; (Parameter registers are undocumented, these are specific for this BIOS):
36; BL: Parameter to Sector Count Register (subcommand specific)
37; BH: Parameter to LBA Low / Sector Number Register (subcommand specific)
38; CL: Parameter to LBA Middle / Cylinder Low Register (subcommand specific)
39; CH: Parameter to LBA High / Cylinder High Register (subcommand specific)
40; Returns with INTPACK:
41; AH: Int 13h return status
42; CF: 0 if successful, 1 if error
43;--------------------------------------------------------------------
44AH23h_HandlerForSetControllerFeatures:
45 xchg si, ax ; SI = Feature Number
46 mov dx, [bp+IDEPACK.intpack+INTPACK.bx]
47%ifndef USE_186
48 call AH23h_SetControllerFeatures
49 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
50%else
51 push Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
52 ; Fall to AH23h_SetControllerFeatures
53%endif
54
55
56;--------------------------------------------------------------------
57; AH23h_SetControllerFeatures
58; Parameters:
59; DL: Parameter to Sector Count Register (subcommand specific)
60; DH: Parameter to LBA Low / Sector Number Register (subcommand specific)
61; CL: Parameter to LBA Middle / Cylinder Low Register (subcommand specific)
62; CH: Parameter to LBA High / Cylinder High Register (subcommand specific)
63; SI: Feature Number (parameter to Features Register = subcommand)
64; DS:DI: Ptr to DPT (in RAMVARS segment)
65; SS:BP: Ptr to IDEPACK
66; Returns:
67; AH: Int 13h return status
68; CF: 0 if successful, 1 if error
69; Corrupts registers:
70; AL, BX, CX, DX
71;--------------------------------------------------------------------
72AH23h_SetControllerFeatures:
73 mov al, COMMAND_SET_FEATURES
74 mov bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_BSY, FLG_STATUS_BSY)
75 jmp Idepack_StoreNonExtParametersAndIssueCommandFromAL
76
77
78;--------------------------------------------------------------------
79; AH23h_Enable8bitPioMode
80; Parameters:
81; DS:DI: Ptr to DPT (in RAMVARS segment)
82; SS:BP: Ptr to IDEPACK
83; Returns:
84; AH: Int 13h return status
85; CF: 0 if successful, 1 if error
86; Corrupts registers:
87; AL, BX, CX, DX, SI
88;--------------------------------------------------------------------
89%ifdef MODULE_8BIT_IDE
90AH23h_Enable8bitPioMode:
91 mov si, FEATURE_ENABLE_8BIT_PIO_TRANSFER_MODE
92 jmp SHORT AH23h_SetControllerFeatures
93%endif
Note: See TracBrowser for help on using the repository browser.