source: xtideuniversalbios/trunk/Assembly_Library/Src/Display/Display.asm @ 177

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

Optimiztion, replaced the jump tables for MENU_LIB and DISPLAY_LIB with direct jump offsets

File size: 3.7 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Display Library functions for CALL_DISPLAY_LIBRARY macro
3;                   that users should use to make library call.
4
5; Section containing code
6SECTION .text
7
8;--------------------------------------------------------------------
9; DisplayFunctionFromDI
10;   Parameters:
11;       DI:     Function to call (DISPLAY_LIB.functionName)
12;       Others: Depends on function to call (DX cannot be parameter)
13;   Returns:
14;       Depends on function to call
15;   Corrupts registers:
16;       AX (unless used as a return register), DI
17;--------------------------------------------------------------------
18ALIGN JUMP_ALIGN
19Display_FunctionFromDI:
20    push    es
21    push    ds
22    push    dx
23
24    cld
25    LOAD_BDA_SEGMENT_TO ds, dx
26    mov     dx, di
27    les     di, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition]
28    call    dx
29    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], di
30
31    pop     dx
32    pop     ds
33    pop     es
34    ret
35
36;--------------------------------------------------------------------
37; Display_FormatNullTerminatedStringFromCSSI
38;   Parameters:
39;       Same as DisplayPrint_FormattedNullTerminatedStringFromCSSI
40;   Returns:
41;       Stack variables will be cleaned
42;   Corrupts registers:
43;       AX
44;--------------------------------------------------------------------
45ALIGN JUMP_ALIGN
46Display_FormatNullTerminatedStringFromCSSI:
47    pop     ax                  ; Discard return address to inside Display_FunctionFromDI
48    call    DisplayPrint_FormattedNullTerminatedStringFromCSSI
49    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], di
50
51    pop     dx
52    pop     ds
53    pop     es
54
55    pop     ax                  ; Pop return address
56    mov     sp, bp              ; Clean stack variables
57    jmp     ax
58
59       
60%define InitializeDisplayContext                        DisplayContext_Initialize
61
62%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
63%define SetCharacterPointerFromBXAX                     DisplayContext_SetCharacterPointerFromBXAX
64%endif
65%define SetCharOutputFunctionFromAXwithAttribFlagInBL   DisplayContext_SetCharOutputFunctionFromAXwithAttribFlagInBL
66%define SetCharacterOutputParameterFromAX               DisplayContext_SetCharacterOutputParameterFromAX
67%define SetCharacterAttributeFromAL                     DisplayContext_SetCharacterAttributeFromAL
68%define SetCursorShapeFromAX                            DisplayCursor_SetShapeFromAX
69%define SetCursorCoordinatesFromAX                      DisplayCursor_SetCoordinatesFromAX
70%define SetNewPageFromAL                                DisplayPage_SetFromAL
71%define SynchronizeDisplayContextToHardware             DisplayContext_SynchronizeToHardware
72
73%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
74%define GetCharacterPointerToBXAX                       DisplayContext_GetCharacterPointerToBXAX
75%endif
76%define GetSoftwareCoordinatesToAX                      DisplayCursor_GetSoftwareCoordinatesToAX
77%define GetColumnsToALandRowsToAH                       DisplayPage_GetColumnsToALandRowsToAH
78
79%define FormatNullTerminatedStringFromCSSI              Display_FormatNullTerminatedStringFromCSSI
80%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
81%define PrintSignedWordFromAXWithBaseInBX               DisplayPrint_SignedWordFromAXWithBaseInBX
82%endif
83%define PrintWordFromAXwithBaseInBX                     DisplayPrint_WordFromAXWithBaseInBX
84%define PrintCharBufferFromBXSIwithLengthInCX           DisplayPrint_CharacterBufferFromBXSIwithLengthInCX
85%define PrintNullTerminatedStringFromBXSI               DisplayPrint_NullTerminatedStringFromBXSI
86%define PrintNullTerminatedStringFromCSSI               DisplayPrint_NullTerminatedStringFromCSSI
87%define PrintRepeatedCharacterFromALwithCountInCX       DisplayPrint_RepeatCharacterFromALwithCountInCX
88%define PrintCharacterFromAL                            DisplayPrint_CharacterFromAL
89%define PrintNewlineCharacters                          DisplayPrint_Newline
90%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
91%define ClearAreaWithHeightInAHandWidthInAL             DisplayPrint_ClearAreaWithHeightInAHandWidthInAL
92%endif
93%define ClearScreenWithCharInALandAttrInAH              DisplayPrint_ClearScreenWithCharInALandAttributeInAH
94
Note: See TracBrowser for help on using the repository browser.