source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuAttributes.asm @ 601

Last change on this file since 601 was 601, checked in by krille_n_, 5 years ago

Changes:

  • Building the BIOS now works again.
  • Added a new IDE device type/transfer mode for use only with XT-IDE rev 2+ (or Chuck(G)-modded rev 1) cards installed in any of the following machines: Olivetti M24, AT&T PC6300, Xerox 6060 and Logabax Persona 1600. This new transfer mode is slightly faster than the regular XT-IDE rev 1 device type and requires that the card is configured for High Speed mode (or, in case of the card being a rev 1 card, has the Chuck(G) mod done). The new device type is called "XTIDE rev 2 (Olivetti M24)" in XTIDECFG.
  • Made some minor improvements to the library code that handles 'Drive Not Ready' errors in XTIDECFG.
  • Optimizations.
File size: 4.5 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Finds suitable character attribute for
3;                   color, B/W and monochrome displays.
4
5;
6; XTIDE Universal BIOS and Associated Tools
7; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 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
22; Struct containing border characters for different types of menu window lines
23struc ATTRIBUTE_CHARS
24    .cBordersAndBackground  resb    1
25    .cShadow                resb    1
26    .cTitle:
27    .cInformation           resb    1
28    .cItem                  resb    1
29    .cHighlightedItem       resb    1
30    .cHurryTimeout          resb    1
31    .cNormalTimeout         resb    1
32endstruc
33
34
35; Section containing code
36SECTION .text
37
38;--------------------------------------------------------------------
39; MenuAttribute_SetToDisplayContextFromTypeInSI
40;   Parameters
41;       SI:     Attribute type (from ATTRIBUTE_CHARS)
42;   Returns:
43;       Nothing
44;   Corrupts registers:
45;       AX, SI, DI
46;--------------------------------------------------------------------
47ALIGN MENU_JUMP_ALIGN
48MenuAttribute_SetToDisplayContextFromTypeInSI:
49    call    MenuAttribute_GetToAXfromTypeInSI
50    JMP_DISPLAY_LIBRARY SetCharacterAttributeFromAL
51
52
53;--------------------------------------------------------------------
54; MenuAttribute_GetToAXfromTypeInSI
55;   Parameters
56;       SI:     Attribute type (from ATTRIBUTE_CHARS)
57;   Returns:
58;       AX:     Wanted attribute
59;   Corrupts registers:
60;       SI
61;--------------------------------------------------------------------
62ALIGN MENU_JUMP_ALIGN
63MenuAttribute_GetToAXfromTypeInSI:
64    push    ds
65
66    LOAD_BDA_SEGMENT_TO ds, ax, !
67    mov     al, [VIDEO_BDA.bMode]       ; Load BIOS display mode (0, 1, 2, 3 or 7)
68    cmp     al, 7
69    je      SHORT .LoadMonoAttribute
70    shr     al, 1                       ; Even modes (0 and 2) are B/W
71    jc      SHORT .LoadColorAttribute
72
73.LoadBlackAndWhiteAttribute:
74    add     si, .rgcBlackAndWhiteAttributes
75    jmp     SHORT .LoadAttributeAndReturn
76
77ALIGN MENU_JUMP_ALIGN
78.LoadMonoAttribute:
79    add     si, .rgcMonochromeAttributes
80    jmp     SHORT .LoadAttributeAndReturn
81
82ALIGN MENU_JUMP_ALIGN
83.LoadColorAttribute:
84    add     si, .rgcColorAttributes
85.LoadAttributeAndReturn:
86    cs lodsb                            ; Load from [CS:SI] to AL
87
88    pop     ds
89    ret
90
91
92.rgcColorAttributes:
93; Classic (default theme)
94istruc ATTRIBUTE_CHARS
95    at  ATTRIBUTE_CHARS.cBordersAndBackground,  db  COLOR_ATTRIBUTE(COLOR_YELLOW, COLOR_BLUE)
96    at  ATTRIBUTE_CHARS.cShadow,                db  COLOR_ATTRIBUTE(COLOR_GRAY, COLOR_BLACK)
97    at  ATTRIBUTE_CHARS.cTitle,                 db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_BLUE)
98    at  ATTRIBUTE_CHARS.cItem,                  db  COLOR_ATTRIBUTE(COLOR_WHITE, COLOR_BLUE)
99    at  ATTRIBUTE_CHARS.cHighlightedItem,       db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_CYAN)
100    at  ATTRIBUTE_CHARS.cHurryTimeout,          db  COLOR_ATTRIBUTE(COLOR_RED, COLOR_BLUE) | FLG_COLOR_BLINK
101    at  ATTRIBUTE_CHARS.cNormalTimeout,         db  COLOR_ATTRIBUTE(COLOR_GREEN, COLOR_BLUE)
102iend
103ColorTheme  equ     MenuAttribute_GetToAXfromTypeInSI.rgcColorAttributes
104
105.rgcBlackAndWhiteAttributes:    ; Only COLOR_WHITE, COLOR_BRIGHT_WHITE and COLOR_BLACK should be used
106istruc ATTRIBUTE_CHARS
107    at  ATTRIBUTE_CHARS.cBordersAndBackground,  db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_BLACK)
108    at  ATTRIBUTE_CHARS.cShadow,                db  COLOR_ATTRIBUTE(COLOR_GRAY, COLOR_BLACK)
109    at  ATTRIBUTE_CHARS.cTitle,                 db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_BLACK)
110    at  ATTRIBUTE_CHARS.cItem,                  db  COLOR_ATTRIBUTE(COLOR_WHITE, COLOR_BLACK)
111    at  ATTRIBUTE_CHARS.cHighlightedItem,       db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_WHITE)
112    at  ATTRIBUTE_CHARS.cHurryTimeout,          db  COLOR_ATTRIBUTE(COLOR_BRIGHT_WHITE, COLOR_BLACK) | FLG_COLOR_BLINK
113    at  ATTRIBUTE_CHARS.cNormalTimeout,         db  COLOR_ATTRIBUTE(COLOR_WHITE, COLOR_BLACK)
114iend
115
116.rgcMonochromeAttributes:
117istruc ATTRIBUTE_CHARS
118    at  ATTRIBUTE_CHARS.cBordersAndBackground,  db  MONO_BRIGHT
119    at  ATTRIBUTE_CHARS.cShadow,                db  MONO_REVERSE_DARK
120    at  ATTRIBUTE_CHARS.cTitle,                 db  MONO_BRIGHT
121    at  ATTRIBUTE_CHARS.cItem,                  db  MONO_NORMAL
122    at  ATTRIBUTE_CHARS.cHighlightedItem,       db  MONO_REVERSE
123    at  ATTRIBUTE_CHARS.cHurryTimeout,          db  MONO_BRIGHT_BLINK
124    at  ATTRIBUTE_CHARS.cNormalTimeout,         db  MONO_NORMAL
125iend
Note: See TracBrowser for help on using the repository browser.