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