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


Ignore:
Timestamp:
Oct 9, 2010, 5:47:26 PM (14 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to Assembly Library:
Removed Memory_ExchangeSSBPwithESDI since it obviously corrupted stack.
CGA detection is now only done once when initializing Display Context.
Moved File Library defines to File.inc.

File:
1 edited

Legend:

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

    r48 r50  
    22; Project name  :   Assembly Library
    33; Created date  :   25.6.2010
    4 ; Last update   :   5.10.2010
     4; Last update   :   9.10.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for managing display context.
     
    2020ALIGN JUMP_ALIGN
    2121DisplayContext_Initialize:
    22     call    .DetectAndSetDisplaySegment
     22    call    .DetectAndSetDisplaySegment ; and .InitializeFlags
    2323    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fnCharOut], DEFAULT_CHARACTER_OUTPUT
    2424    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCursorShape], CURSOR_NORMAL
    2525    mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bAttribute], SCREEN_BACKGROUND_ATTRIBUTE
    26     mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], FLG_CONTEXT_ATTRIBUTES
    27 
    2826    xor     ax, ax
    2927    call    DisplayCursor_SetCoordinatesFromAX
    30     jmp     SHORT DisplayContext_SynchronizeToHardware
     28    jmp     DisplayContext_SynchronizeToHardware
    3129
    3230;--------------------------------------------------------------------
     
    3735;       Nothing
    3836;   Corrupts registers:
    39 ;       Nothing
     37;       AX, DX
    4038;--------------------------------------------------------------------
    4139.DetectAndSetDisplaySegment:
    42     mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition+2], COLOR_TEXT_SEGMENT
     40    mov     ax, COLOR_TEXT_SEGMENT
    4341    cmp     BYTE [VIDEO_BDA.bMode], MDA_TEXT_MODE
    44     jne     SHORT .Return
    45     sub     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition+2], COLOR_TEXT_SEGMENT - MONO_TEXT_SEGMENT
    46 .Return:
     42    jne     SHORT .StoreSegmentToDisplayContext
     43    mov     ax, MONO_TEXT_SEGMENT
     44.StoreSegmentToDisplayContext:
     45    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition+2], ax
     46    ; Fall to InitializeFlags
     47
     48;--------------------------------------------------------------------
     49; .InitializeFlags
     50;   Parameters:
     51;       DS:     BDA segment (zero)
     52;   Returns:
     53;       Nothing
     54;   Corrupts registers:
     55;       AX, DX
     56;--------------------------------------------------------------------
     57.InitializeFlags:
     58    mov     dl, FLG_CONTEXT_ATTRIBUTES
     59    call    CgaSnow_IsCgaPresent
     60    jnc     SHORT .DoNotSetCgaFlag
     61    or      dl, FLG_CONTEXT_CGA
     62.DoNotSetCgaFlag:
     63    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], dl
    4764    ret
    4865
     
    188205;       Nothing
    189206;   Corrupts registers:
    190 ;       Nothing
     207;       BL
    191208;--------------------------------------------------------------------
    192209ALIGN JUMP_ALIGN
    193210DisplayContext_SetCharOutputFunctionFromAXwithAttribFlagInBL:
     211    and     bl, FLG_CONTEXT_ATTRIBUTES
     212    and     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], ~FLG_CONTEXT_ATTRIBUTES
     213    or      [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], bl
    194214    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fnCharOut], ax
    195     mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], bl
    196215    ret
    197216
Note: See TracChangeset for help on using the changeset viewer.