source: xtideuniversalbios/trunk/Assembly_Library/Src/Display/DisplayPage.asm @ 492

Last change on this file since 492 was 492, checked in by gregli@…, 11 years ago

Removed the dependency between MODULE_BOOT_MENU and MODULE_HOTKEYS. With these changes, 0, 1, or 2 of them can be included in a build. This change also means that the hotkeys don't work while the menu is up. But the most important hotkey there was for Rom Boot, and that has been added to the menu as a choice proper. Lots of changes across the board in the hotkeys code - even if we eventually back this change out (becaue, for example we want hotkeys to work in the menu) we should probably start from this base and add that functionality back in, as these changes results in approximately 120 bytes of savings and includes new functionality, such as the Rom Boot menu item and the Com Detect hotkey.

File size: 2.8 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Functions for managing display page.
3
4;
5; XTIDE Universal BIOS and Associated Tools 
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
12; 
13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16; GNU General Public License for more details.     
17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;
19
20; Section containing code
21SECTION .text
22
23;--------------------------------------------------------------------
24; DisplayPage_SetFromAL
25;   Parameters:
26;       AL:     New display page
27;       DS:     BDA segment (zero)
28;   Returns:
29;       Nothing
30;   Corrupts registers:
31;       AX, DX
32;--------------------------------------------------------------------
33%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS OR EXCLUDE_FROM_XTIDECFG
34ALIGN DISPLAY_JUMP_ALIGN
35DisplayPage_SetFromAL:
36    xor     ah, ah
37    mul     WORD [VIDEO_BDA.wBytesPerPage]      ; AX = Offset to page
38    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], ax
39    ret
40%endif
41
42
43%ifdef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
44    %define EXCLUDE
45    %ifdef MODULE_HOTKEYS
46        %undef EXCLUDE
47    %endif
48    %ifdef MODULE_BOOT_MENU
49        %undef EXCLUDE
50    %endif
51%endif
52
53%ifndef EXCLUDE     
54;--------------------------------------------------------------------
55; DisplayPage_GetColumnsToALandRowsToAH
56;   Parameters:
57;       DS:     BDA segment (zero)
58;   Returns:
59;       AL:     Number of columns in selected text mode
60;       AH:     Number of rows in selected text mode
61;   Corrupts registers:
62;       Nothing
63;--------------------------------------------------------------------
64ALIGN DISPLAY_JUMP_ALIGN
65DisplayPage_GetColumnsToALandRowsToAH:
66    mov     al, [VIDEO_BDA.wColumns]        ; 40 or 80
67    mov     ah, 25                          ; Always 25 rows on standard text modes
68    ret
69%endif
70%undef EXCLUDE     
71
72;--------------------------------------------------------------------
73; DisplayPage_SynchronizeToHardware
74;   Parameters:
75;       DS:     BDA segment (zero)
76;   Returns:
77;       Nothing
78;   Corrupts registers:
79;       AX, DX
80;--------------------------------------------------------------------
81ALIGN DISPLAY_JUMP_ALIGN
82DisplayPage_SynchronizeToHardware:
83    xor     dx, dx
84    mov     ax, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition]
85    div     WORD [VIDEO_BDA.wBytesPerPage]  ; AX = Page
86
87    cmp     al, [VIDEO_BDA.bActivePage]
88    je      SHORT .Return                   ; Same page, no need to synchronize
89    mov     ah, SELECT_ACTIVE_DISPLAY_PAGE
90    int     BIOS_VIDEO_INTERRUPT_10h
91.Return:
92    ret
Note: See TracBrowser for help on using the repository browser.