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

Last change on this file since 63 was 45, checked in by Tomi Tilli, 14 years ago

Changes to assembly library:
Changed SetCharOutputFunctionFromAXwithAttribFlagInDL to SetCharOutputFunctionFromAXwithAttribFlagInBL since DX register gets corrupted by Display_FunctionFromDI.
Implemented quicksort.

File size: 3.9 KB
RevLine 
[41]1; File name : Display.asm
2; Project name : Assembly Library
3; Created date : 2.7.2010
[45]4; Last update : 28.9.2010
[41]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
[44]67 at DISPLAY_LIB.InitializeDisplayContext, dw DisplayContext_Initialize
[41]68
[44]69 at DISPLAY_LIB.SetCharacterPointerFromBXAX, dw DisplayContext_SetCharacterPointerFromBXAX
[45]70 at DISPLAY_LIB.SetCharOutputFunctionFromAXwithAttribFlagInBL, dw DisplayContext_SetCharOutputFunctionFromAXwithAttribFlagInBL
[44]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
[41]77
[44]78 at DISPLAY_LIB.GetCharacterPointerToBXAX, dw DisplayContext_GetCharacterPointerToBXAX
79 at DISPLAY_LIB.GetSoftwareCoordinatesToAX, dw DisplayCursor_GetSoftwareCoordinatesToAX
80 at DISPLAY_LIB.GetColumnsToALandRowsToAH, dw DisplayPage_GetColumnsToALandRowsToAH
[41]81
[44]82 at DISPLAY_LIB.FormatNullTerminatedStringFromCSSI, dw .FormatNullTerminatedStringFromCSSI
83 at DISPLAY_LIB.PrintSignedWordFromAXWithBaseInBX, dw DisplayPrint_SignedWordFromAXWithBaseInBX
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
[41]93iend
Note: See TracBrowser for help on using the repository browser.