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

Last change on this file since 41 was 41, checked in by aitotat, 14 years ago

Initial commit for Assembly Library.

File size: 1.9 KB
Line 
1; File name     :   DisplayPage.asm
2; Project name  :   Assembly Library
3; Created date  :   26.6.2010
4; Last update   :   3.7.2010
5; Author        :   Tomi Tilli
6; Description   :   Functions for managing display page.
7
8; Section containing code
9SECTION .text
10
11;--------------------------------------------------------------------
12; DisplayPage_SetFromAL
13;   Parameters:
14;       AL:     New display page
15;       DS:     BDA segment (zero)
16;   Returns:
17;       Nothing
18;   Corrupts registers:
19;       AX, DX
20;--------------------------------------------------------------------
21ALIGN JUMP_ALIGN
22DisplayPage_SetFromAL:
23    xor     ah, ah
24    mul     WORD [VIDEO_BDA.wBytesPerPage]      ; AX = Offset to page
25    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], ax
26    ret
27
28
29;--------------------------------------------------------------------
30; DisplayPage_GetColumnsToALandRowsToAH
31;   Parameters:
32;       DS:     BDA segment (zero)
33;   Returns:
34;       AL:     Number of columns in selected text mode
35;       AH:     Number of rows in selected text mode
36;   Corrupts registers:
37;       Nothing
38;--------------------------------------------------------------------
39ALIGN JUMP_ALIGN
40DisplayPage_GetColumnsToALandRowsToAH:
41    mov     al, [VIDEO_BDA.wColumns]        ; 40 or 80
42    mov     ah, 25                          ; Always 25 rows on standard text modes
43    ret
44
45
46;--------------------------------------------------------------------
47; DisplayPage_SynchronizeToHardware
48;   Parameters:
49;       DS:     BDA segment (zero)
50;   Returns:
51;       Nothing
52;   Corrupts registers:
53;       AX, DX
54;--------------------------------------------------------------------
55ALIGN JUMP_ALIGN
56DisplayPage_SynchronizeToHardware:
57    xor     dx, dx
58    mov     ax, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition]
59    div     WORD [VIDEO_BDA.wBytesPerPage]  ; AX = Page
60
61    cmp     al, [VIDEO_BDA.bActivePage]
62    je      SHORT .Return                   ; Same page, no need to synchronize
63    mov     ah, SELECT_ACTIVE_DISPLAY_PAGE
64    int     BIOS_VIDEO_INTERRUPT_10h
65ALIGN JUMP_ALIGN, ret
66.Return:
67    ret
Note: See TracBrowser for help on using the repository browser.