source: xtideuniversalbios/trunk/Configurator/Src/Menupages/DrvParamsMenu.asm@ 578

Last change on this file since 578 was 293, checked in by krille_n_@…, 13 years ago

Commit 1/2 (Library, Configurators and Serial Server):

  • Changed Emulate.inc so that making 286 and 386 versions now works. Additionally, only one processor type define is needed in the makefile.
  • Minor optimizations.
  • Fixed spelling and did some cleaning.
File size: 6.8 KB
Line 
1; Project name : XTIDE Universal BIOS Configurator
2; Description : Menu for configuring DRVPARAMS.
3
4; Section containing initialized data
5SECTION .data
6
7; -Back to previous menu
8; Block Mode Transfers (Y)
9; User Specified CHS (Y)
10; Cylinders (16383)
11; Heads (16)
12; Sectors per track (63)
13
14ALIGN WORD_ALIGN
15g_MenuPageDrvParams:
16istruc MENUPAGE
17 at MENUPAGE.bItemCnt, db 6
18iend
19istruc MENUPAGEITEM ; Back to previous menu
20 at MENUPAGEITEM.fnActivate, dw MainPageItem_ActivateLeaveSubmenu
21 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
22 at MENUPAGEITEM.szName, dw g_szPreviousMenu
23 at MENUPAGEITEM.szInfo, dw g_szNfoDrvBack
24 at MENUPAGEITEM.szHelp, dw g_szNfoDrvBack
25 at MENUPAGEITEM.bFlags, db FLG_MENUPAGEITEM_VISIBLE
26 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_BACK
27iend
28g_MenuPageItemDrvBlockMode:
29istruc MENUPAGEITEM ; Block Mode Transfers
30 at MENUPAGEITEM.fnActivate, dw MenuPageItem_GetBoolFromUser
31 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
32 at MENUPAGEITEM.wValueMask, dw FLG_DRVPARAMS_BLOCKMODE
33 at MENUPAGEITEM.szName, dw g_szItemDrvBlockMode
34 at MENUPAGEITEM.szInfo, dw g_szNfoDrvBlockMode
35 at MENUPAGEITEM.szHelp, dw g_szHelpDrvBlockMode
36 at MENUPAGEITEM.szDialog, dw g_szDlgDrvBlockMode
37 at MENUPAGEITEM.bFlags, db FLG_MENUPAGEITEM_VISIBLE
38 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_FLAG
39iend
40g_MenuPageItemDrvUserCHS:
41istruc MENUPAGEITEM ; User Specified CHS
42 at MENUPAGEITEM.fnActivate, dw DrvParamsMenu_ActivateUserCHS
43 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
44 at MENUPAGEITEM.wValueMask, dw FLG_DRVPARAMS_USERCHS
45 at MENUPAGEITEM.szName, dw g_szItemDrvUserCHS
46 at MENUPAGEITEM.szInfo, dw g_szNfoDrvUserCHS
47 at MENUPAGEITEM.szHelp, dw g_szHelpDrvUserCHS
48 at MENUPAGEITEM.szDialog, dw g_szDlgDrvUserCHS
49 at MENUPAGEITEM.bFlags, db FLG_MENUPAGEITEM_VISIBLE
50 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_FLAG
51iend
52g_MenuPageItemDrvCyls:
53istruc MENUPAGEITEM ; Cylinders
54 at MENUPAGEITEM.fnActivate, dw MenuPageItem_GetWordFromUser
55 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
56 at MENUPAGEITEM.wValueMin, dw 1
57 at MENUPAGEITEM.wValueMax, dw 16383
58 at MENUPAGEITEM.szName, dw g_szItemDrvCyls
59 at MENUPAGEITEM.szInfo, dw g_szNfoDrvCyls
60 at MENUPAGEITEM.szHelp, dw g_szNfoDrvCyls
61 at MENUPAGEITEM.szDialog, dw g_szDlgDrvCyls
62 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_UNSIGNED_WORD
63iend
64g_MenuPageItemDrvHeads:
65istruc MENUPAGEITEM ; Heads
66 at MENUPAGEITEM.fnActivate, dw MenuPageItem_GetByteFromUser
67 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
68 at MENUPAGEITEM.wValueMin, dw 1
69 at MENUPAGEITEM.wValueMax, dw 16
70 at MENUPAGEITEM.szName, dw g_szItemDrvHeads
71 at MENUPAGEITEM.szInfo, dw g_szNfoDrvHeads
72 at MENUPAGEITEM.szHelp, dw g_szNfoDrvHeads
73 at MENUPAGEITEM.szDialog, dw g_szDlgDrvHeads
74 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_UNSIGNED_BYTE
75iend
76g_MenuPageItemDrvSect:
77istruc MENUPAGEITEM ; Sectors per track
78 at MENUPAGEITEM.fnActivate, dw MenuPageItem_GetByteFromUser
79 at MENUPAGEITEM.fnNameFormat, dw MenuPageItemFormat_NameForAnyType
80 at MENUPAGEITEM.wValueMin, dw 1
81 at MENUPAGEITEM.wValueMax, dw 63
82 at MENUPAGEITEM.szName, dw g_szItemDrvSect
83 at MENUPAGEITEM.szInfo, dw g_szNfoDrvSect
84 at MENUPAGEITEM.szHelp, dw g_szNfoDrvSect
85 at MENUPAGEITEM.szDialog, dw g_szDlgDrvSect
86 at MENUPAGEITEM.bType, db TYPE_MENUPAGEITEM_UNSIGNED_BYTE
87iend
88
89
90; Section containing code
91SECTION .text
92
93;--------------------------------------------------------------------
94; Stores DRVPARAMS specific pointers to MENUPAGEITEM structs.
95;
96; DrvParamsMenu_SetDrvParamsOffset
97; Parameters:
98; AX: Offset to DRVPARAMS
99; DS: CS
100; Returns:
101; Nothing
102; Corrupts registers:
103; BX, CX
104;--------------------------------------------------------------------
105ALIGN JUMP_ALIGN
106DrvParamsMenu_SetDrvParamsOffset:
107 eMOVZX cx, [g_MenuPageDrvParams+MENUPAGE.bItemCnt]
108 dec cx
109 mov bx, g_MenuPageItemDrvBlockMode+MENUPAGEITEM.pValue
110ALIGN JUMP_ALIGN
111.StoreIdevarsLoop:
112 mov [bx], ax
113 add bx, MENUPAGEITEM_size
114 loop .StoreIdevarsLoop
115
116 ; Add offsets to values
117 add WORD [g_MenuPageItemDrvBlockMode+MENUPAGEITEM.pValue], BYTE DRVPARAMS.wFlags
118 add WORD [g_MenuPageItemDrvUserCHS+MENUPAGEITEM.pValue], BYTE DRVPARAMS.wFlags
119 add WORD [g_MenuPageItemDrvCyls+MENUPAGEITEM.pValue], BYTE DRVPARAMS.wCylinders
120 add WORD [g_MenuPageItemDrvHeads+MENUPAGEITEM.pValue], BYTE DRVPARAMS.bHeads
121 add WORD [g_MenuPageItemDrvSect+MENUPAGEITEM.pValue], BYTE DRVPARAMS.bSect
122 ret
123
124
125;--------------------------------------------------------------------
126; DrvParamsMenu_ActivateUserCHS
127; Parameters:
128; DS:SI Ptr to MENUPAGE
129; DS:DI Ptr to MENUPAGEITEM
130; SS:BP: Ptr to MENUVARS
131; Returns:
132; CF: Set if menuitem changed
133; Cleared if no changes
134; Corrupts registers:
135; AX, BX, CX, DX
136;--------------------------------------------------------------------
137ALIGN JUMP_ALIGN
138DrvParamsMenu_ActivateUserCHS:
139 call MenuPageItem_GetBoolFromUser
140 jc SHORT DrvParamsMenu_SetMenuitemVisibilityAndDrawChanges
141 ret
142
143
144;--------------------------------------------------------------------
145; DrvParamsMenu_SetMenuitemVisibilityAndDrawChanges
146; Parameters:
147; DS:SI: Ptr to MENUPAGE
148; SS:BP: Ptr to MENUVARS
149; Returns:
150; CF: Cleared since no need to draw changes
151; Corrupts registers:
152; AX, BX, CX, DX
153;--------------------------------------------------------------------
154ALIGN JUMP_ALIGN
155DrvParamsMenu_SetMenuitemVisibilityAndDrawChanges:
156 call DrvParamsMenu_SetMenuitemVisibility
157 call MenuPage_InvalidateItemCount
158 clc ; No need to redraw Full Mode menuitem
159 ret
160
161;--------------------------------------------------------------------
162; Enables or disables menuitems based on current configuration.
163;
164; DrvParamsMenu_SetMenuitemVisibility
165; Parameters:
166; DS: CS
167; Returns:
168; Nothing
169; Corrupts registers:
170; BX
171;--------------------------------------------------------------------
172ALIGN JUMP_ALIGN
173DrvParamsMenu_SetMenuitemVisibility:
174 jmp SHORT DrvParamsMenu_SetChsVisibility
175
176ALIGN JUMP_ALIGN
177DrvParamsMenu_SetChsVisibility:
178 mov bx, [g_MenuPageItemDrvUserCHS+MENUPAGEITEM.pValue]
179 test WORD [bx], FLG_DRVPARAMS_USERCHS
180 jz SHORT .DisableUserCHS
181 or BYTE [g_MenuPageItemDrvCyls+MENUPAGEITEM.bFlags], FLG_MENUPAGEITEM_VISIBLE
182 or BYTE [g_MenuPageItemDrvHeads+MENUPAGEITEM.bFlags], FLG_MENUPAGEITEM_VISIBLE
183 or BYTE [g_MenuPageItemDrvSect+MENUPAGEITEM.bFlags], FLG_MENUPAGEITEM_VISIBLE
184 ret
185ALIGN JUMP_ALIGN
186.DisableUserCHS:
187 and BYTE [g_MenuPageItemDrvCyls+MENUPAGEITEM.bFlags], ~FLG_MENUPAGEITEM_VISIBLE
188 and BYTE [g_MenuPageItemDrvHeads+MENUPAGEITEM.bFlags], ~FLG_MENUPAGEITEM_VISIBLE
189 and BYTE [g_MenuPageItemDrvSect+MENUPAGEITEM.bFlags], ~FLG_MENUPAGEITEM_VISIBLE
190 ret
Note: See TracBrowser for help on using the repository browser.