Changeset 52 in xtideuniversalbios for trunk/Assembly_Library/Src/Menu/MenuText.asm


Ignore:
Timestamp:
Oct 12, 2010, 6:51:07 PM (14 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to Assembly Library:
Completely rewritten line splitting (slower but no need to modify string).
Some changes to string processing functions.
Saved few bytes from CGA detection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Assembly_Library/Src/Menu/MenuText.asm

    r48 r52  
    22; Project name  :   Assembly Library
    33; Created date  :   21.7.2010
    4 ; Last update   :   7.10.2010
     4; Last update   :   12.10.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for drawing menu texts by the user.
     
    7676PrepareToDrawTitleArea:
    7777    mov     si, ATTRIBUTE_CHARS.cTitle
    78     mov     ax, MenuCharOut_MenuTextTeletypeOutputWithAttributeAndAutomaticLineChange
    79     call    AdjustDisplayContextForDrawingTextsWithCharOutFunctionFromAX
    8078    call    MenuLocation_GetTitleTextTopLeftCoordinatesToAX
    81     CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
    82     ret
     79    jmp     SHORT FinishPreparationsToDrawTitleOrInformationArea
    8380
    8481ALIGN JUMP_ALIGN
    8582PrepareToDrawInformationArea:
    8683    mov     si, ATTRIBUTE_CHARS.cInformation
    87     mov     ax, MenuCharOut_MenuTextTeletypeOutputWithAttributeAndAutomaticLineChange
    88     call    AdjustDisplayContextForDrawingTextsWithCharOutFunctionFromAX
    8984    call    MenuLocation_GetInformationTextTopLeftCoordinatesToAX
    90     CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
    91     ret
     85FinishPreparationsToDrawTitleOrInformationArea:
     86    mov     dx, MenuCharOut_MenuTeletypeOutputWithAutomaticLineChange
     87    jmp     SHORT AdjustDisplayContextForDrawingTextsAtCoordsInAXwithAttrTypeInSIandCharOutFunctionInDX
    9288
    9389
     
    134130    call    MenuScrollbars_IsItemInCXonVisiblePage
    135131    jnc     SHORT .InvalidItem
    136     mov     ax, cx
    137     call    MenuText_AdjustDisplayContextForDrawingItemFromAX
     132    call    MenuText_AdjustDisplayContextForDrawingItemFromCX
    138133    call    MenuEvent_RefreshItemFromCX
    139134    call    DrawScrollbarIfNecessary
     
    144139
    145140;--------------------------------------------------------------------
    146 ; MenuText_AdjustDisplayContextForDrawingItemFromAX
    147 ;   Parameters
    148 ;       AX:     Item to refresh
    149 ;       SS:BP:  Ptr to MENU
    150 ;   Returns:
    151 ;       CX:     Item to refresh
    152 ;   Corrupts registers:
    153 ;       AX, SI, DI
    154 ;--------------------------------------------------------------------
    155 ALIGN JUMP_ALIGN
    156 MenuText_AdjustDisplayContextForDrawingItemFromAX:
    157     mov     cx, ax
     141; MenuText_AdjustDisplayContextForDrawingItemFromCX
     142;   Parameters
     143;       CX:     Item to refresh
     144;       SS:BP:  Ptr to MENU
     145;   Returns:
     146;       Nothing
     147;   Corrupts registers:
     148;       AX, BX, DX, SI, DI
     149;--------------------------------------------------------------------
     150ALIGN JUMP_ALIGN
     151MenuText_AdjustDisplayContextForDrawingItemFromCX:
     152    mov     ax, cx
     153    call    GetItemTextAttributeTypeToSIforItemInCX
    158154    call    MenuLocation_GetTextCoordinatesToAXforItemInAX
     155    mov     dx, MenuCharOut_MenuTeletypeOutput
     156    ; Fall to AdjustDisplayContextForDrawingTextsAtCoordinatesInAXwithAttributeTypeInSI
     157
     158;--------------------------------------------------------------------
     159; AdjustDisplayContextForDrawingTextsAtCoordsInAXwithAttrTypeInSIandCharOutFunctionInDX
     160;   Parameters
     161;       AX:     Cursor coordinates to set
     162;       DX:     Character output function
     163;       SI:     Attribute type (from ATTRIBUTE_CHARS)
     164;       SS:BP:  Ptr to MENU
     165;   Returns:
     166;       Nothing
     167;   Corrupts registers:
     168;       AX, BX, DX, SI, DI
     169;--------------------------------------------------------------------
     170ALIGN JUMP_ALIGN
     171AdjustDisplayContextForDrawingTextsAtCoordsInAXwithAttrTypeInSIandCharOutFunctionInDX:
    159172    CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
    160     call    .GetItemTextAttributeTypeToSIforItemInCX
    161     mov     ax, MenuCharOut_MenuTextTeletypeOutputWithAttribute
    162     jmp     SHORT AdjustDisplayContextForDrawingTextsWithCharOutFunctionFromAX
    163 
    164 ;--------------------------------------------------------------------
    165 ; .GetItemTextAttributeTypeToSIforItemInCX
     173
     174    xchg    ax, dx
     175    mov     bl, ATTRIBUTES_ARE_USED
     176    CALL_DISPLAY_LIBRARY SetCharOutputFunctionFromAXwithAttribFlagInBL
     177
     178    call    CharOutLineSplitter_PrepareForPrintingTextLines
     179    jmp     MenuAttribute_SetToDisplayContextFromTypeInSI
     180
     181
     182;--------------------------------------------------------------------
     183; GetItemTextAttributeTypeToSIforItemInCX
    166184;   Parameters
    167185;       CX:     Item to refresh
     
    173191;--------------------------------------------------------------------
    174192ALIGN JUMP_ALIGN
    175 .GetItemTextAttributeTypeToSIforItemInCX:
     193GetItemTextAttributeTypeToSIforItemInCX:
    176194    mov     si, ATTRIBUTE_CHARS.cItem
    177195    test    BYTE [bp+MENU.bFlags], FLG_MENU_NOHIGHLIGHT
    178196    jnz     SHORT .ReturnAttributeTypeInSI
    179     cmp     cx, [bp+MENU.wHighlightedItem]
     197
     198    cmp     cx, [bp+MENUINIT.wHighlightedItem]
    180199    jne     SHORT .ReturnAttributeTypeInSI
    181200    sub     si, BYTE ATTRIBUTE_CHARS.cItem - ATTRIBUTE_CHARS.cHighlightedItem
     
    258277    pop     cx
    259278    ret
    260 
    261 
    262 ;--------------------------------------------------------------------
    263 ; AdjustDisplayContextForDrawingTextsWithCharOutFunctionFromAX
    264 ;   Parameters
    265 ;       AX:     Character output function
    266 ;       SI:     Attribute type (from ATTRIBUTE_CHARS)
    267 ;       SS:BP:  Ptr to MENU
    268 ;   Returns:
    269 ;       Nothing
    270 ;   Corrupts registers:
    271 ;       AX, BX, SI, DI
    272 ;--------------------------------------------------------------------
    273 ALIGN JUMP_ALIGN
    274 AdjustDisplayContextForDrawingTextsWithCharOutFunctionFromAX:
    275     mov     bl, ATTRIBUTES_ARE_USED
    276     CALL_DISPLAY_LIBRARY SetCharOutputFunctionFromAXwithAttribFlagInBL
    277 
    278     mov     ax, bp
    279     CALL_DISPLAY_LIBRARY SetCharacterOutputParameterFromAX
    280 
    281     jmp     MenuAttribute_SetToDisplayContextFromTypeInSI
Note: See TracChangeset for help on using the changeset viewer.