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

Last change on this file since 180 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
RevLine 
[41]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
[177]26 mov dx, di
[41]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;--------------------------------------------------------------------
[177]37; Display_FormatNullTerminatedStringFromCSSI
[41]38; Parameters:
39; Same as DisplayPrint_FormattedNullTerminatedStringFromCSSI
40; Returns:
41; Stack variables will be cleaned
42; Corrupts registers:
43; AX
44;--------------------------------------------------------------------
45ALIGN JUMP_ALIGN
[177]46Display_FormatNullTerminatedStringFromCSSI:
[101]47 pop ax ; Discard return address to inside Display_FunctionFromDI
[41]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
[177]59
60%define InitializeDisplayContext DisplayContext_Initialize
[41]61
[133]62%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[177]63%define SetCharacterPointerFromBXAX DisplayContext_SetCharacterPointerFromBXAX
[133]64%endif
[177]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
[41]72
[133]73%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[177]74%define GetCharacterPointerToBXAX DisplayContext_GetCharacterPointerToBXAX
[133]75%endif
[177]76%define GetSoftwareCoordinatesToAX DisplayCursor_GetSoftwareCoordinatesToAX
77%define GetColumnsToALandRowsToAH DisplayPage_GetColumnsToALandRowsToAH
[41]78
[177]79%define FormatNullTerminatedStringFromCSSI Display_FormatNullTerminatedStringFromCSSI
[134]80%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[177]81%define PrintSignedWordFromAXWithBaseInBX DisplayPrint_SignedWordFromAXWithBaseInBX
[134]82%endif
[177]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
[134]90%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
[177]91%define ClearAreaWithHeightInAHandWidthInAL DisplayPrint_ClearAreaWithHeightInAHandWidthInAL
[134]92%endif
[177]93%define ClearScreenWithCharInALandAttrInAH DisplayPrint_ClearScreenWithCharInALandAttributeInAH
94
Note: See TracBrowser for help on using the repository browser.