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

Last change on this file since 370 was 370, checked in by krille_n_@…, 12 years ago

Changes:

  • Added some missing PIO mode timings to ATA_ID.inc (based on info from http://www.singlix.net/specs/cfspc4_0.pdf)
  • Updated Configuration_FullMode.txt but it may need additional changes as the Tandy info doesn't match the wiki.
  • Optimizations.
  • Excluded some unused code from XTIDECFG.
File size: 1.9 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Functions for managing display page.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; DisplayPage_SetFromAL
9;   Parameters:
10;       AL:     New display page
11;       DS:     BDA segment (zero)
12;   Returns:
13;       Nothing
14;   Corrupts registers:
15;       AX, DX
16;--------------------------------------------------------------------
17%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS OR EXCLUDE_FROM_XTIDECFG
18ALIGN DISPLAY_JUMP_ALIGN
19DisplayPage_SetFromAL:
20    xor     ah, ah
21    mul     WORD [VIDEO_BDA.wBytesPerPage]      ; AX = Offset to page
22    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], ax
23    ret
24%endif
25
26
27;--------------------------------------------------------------------
28; DisplayPage_GetColumnsToALandRowsToAH
29;   Parameters:
30;       DS:     BDA segment (zero)
31;   Returns:
32;       AL:     Number of columns in selected text mode
33;       AH:     Number of rows in selected text mode
34;   Corrupts registers:
35;       Nothing
36;--------------------------------------------------------------------
37ALIGN DISPLAY_JUMP_ALIGN
38DisplayPage_GetColumnsToALandRowsToAH:
39    mov     al, [VIDEO_BDA.wColumns]        ; 40 or 80
40    mov     ah, 25                          ; Always 25 rows on standard text modes
41    ret
42
43
44;--------------------------------------------------------------------
45; DisplayPage_SynchronizeToHardware
46;   Parameters:
47;       DS:     BDA segment (zero)
48;   Returns:
49;       Nothing
50;   Corrupts registers:
51;       AX, DX
52;--------------------------------------------------------------------
53ALIGN DISPLAY_JUMP_ALIGN
54DisplayPage_SynchronizeToHardware:
55    xor     dx, dx
56    mov     ax, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition]
57    div     WORD [VIDEO_BDA.wBytesPerPage]  ; AX = Page
58
59    cmp     al, [VIDEO_BDA.bActivePage]
60    je      SHORT .Return                   ; Same page, no need to synchronize
61    mov     ah, SELECT_ACTIVE_DISPLAY_PAGE
62    int     BIOS_VIDEO_INTERRUPT_10h
63.Return:
64    ret
Note: See TracBrowser for help on using the repository browser.