Changeset 44 in xtideuniversalbios for trunk/Assembly_Library/Src/Display/DisplayContext.asm


Ignore:
Timestamp:
Sep 27, 2010, 7:23:36 PM (14 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Spaces can now be generated before format specifier when printing formatted string.
Background character and attribute can now be easily specified before compiling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Assembly_Library/Src/Display/DisplayContext.asm

    r41 r44  
    22; Project name  :   Assembly Library
    33; Created date  :   25.6.2010
    4 ; Last update   :   13.8.2010
     4; Last update   :   27.9.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for managing display context.
     
    2323    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fnCharOut], DEFAULT_CHARACTER_OUTPUT
    2424    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCursorShape], CURSOR_NORMAL
    25     mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bAttribute], MONO_NORMAL
     25    mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bAttribute], SCREEN_BACKGROUND_ATTRIBUTE
     26    mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], FLG_CONTEXT_ATTRIBUTES
    2627
    2728    xor     ax, ax
     
    152153
    153154;--------------------------------------------------------------------
    154 ; DisplayContext_SetCharacterOutputFunctionFromAX
     155; DisplayContext_SetCharOutputFunctionFromAXwithAttribFlagInDL
    155156;   Parameters:
    156157;       AX:     Offset to character output function
    157 ;       DS:     BDA segment (zero)
    158 ;   Returns:
    159 ;       Nothing
    160 ;   Corrupts registers:
    161 ;       Nothing
    162 ;--------------------------------------------------------------------
    163 ALIGN JUMP_ALIGN
    164 DisplayContext_SetCharacterOutputFunctionFromAX:
     158;       DL:     Attribute Flag
     159;       DS:     BDA segment (zero)
     160;   Returns:
     161;       Nothing
     162;   Corrupts registers:
     163;       Nothing
     164;--------------------------------------------------------------------
     165ALIGN JUMP_ALIGN
     166DisplayContext_SetCharOutputFunctionFromAXwithAttribFlagInDL:
    165167    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fnCharOut], ax
     168    and     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], ~FLG_CONTEXT_ATTRIBUTES
     169    mov     al, dl
     170    and     al, FLG_CONTEXT_ATTRIBUTES
     171    or      [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], al
    166172    ret
    167173
     
    211217    mov     dx, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCharOutParam]
    212218    ret
     219
     220
     221;--------------------------------------------------------------------
     222; DisplayContext_GetCharacterOffsetToAXfromByteOffsetInAX
     223;   Parameters:
     224;       AX:     Offset in bytes from some character to another
     225;       DS:     BDA segment (zero)
     226;   Returns:
     227;       AX:     Offset in characters from some character to another
     228;   Corrupts registers:
     229;       Nothing
     230;--------------------------------------------------------------------   
     231ALIGN JUMP_ALIGN
     232DisplayContext_GetCharacterOffsetToAXfromByteOffsetInAX:
     233    test    BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], FLG_CONTEXT_ATTRIBUTES
     234    jz      SHORT ReturnOffsetInAX
     235    sar     ax, 1       ; BYTE count to WORD count
     236    ret
     237
     238;--------------------------------------------------------------------
     239; DisplayContext_GetByteOffsetToAXfromCharacterOffsetInAX
     240;   Parameters:
     241;       AX:     Offset in characters from some character to another
     242;       DS:     BDA segment (zero)
     243;   Returns:
     244;       AX:     Offset in bytes from some character to another
     245;   Corrupts registers:
     246;       Nothing
     247;--------------------------------------------------------------------   
     248ALIGN JUMP_ALIGN
     249DisplayContext_GetByteOffsetToAXfromCharacterOffsetInAX:
     250    test    BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], FLG_CONTEXT_ATTRIBUTES
     251    jz      SHORT ReturnOffsetInAX
     252    sal     ax, 1       ; WORD count to BYTE count
     253ALIGN JUMP_ALIGN, ret
     254ReturnOffsetInAX:
     255    ret
Note: See TracChangeset for help on using the changeset viewer.