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


Ignore:
Timestamp:
Dec 9, 2010, 5:14:25 PM (13 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to Assembly Library:

  • Forgot to update SI on new File Read and Write functions.
  • Screen clearing function now accepts any character and attribute.
  • Menu library now accepts CR,LF combination as line feed. Previously only LF,CR worked properly.
File:
1 edited

Legend:

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

    r54 r67  
    22; Project name  :   Assembly Library
    33; Created date  :   21.7.2010
    4 ; Last update   :   24.10.2010
     4; Last update   :   9.12.2010
    55; Author        :   Tomi Tilli
    66; Description   :   Functions for drawing menu texts by the user.
     
    126126MenuText_RefreshItemFromAX:
    127127    push    cx
    128     mov     cx, ax                  ; Backup item to CX
    129 
     128    push    ax
     129
     130    xchg    cx, ax
    130131    call    MenuScrollbars_IsItemInCXonVisiblePage
    131132    jnc     SHORT .InvalidItem
    132133    call    MenuText_AdjustDisplayContextForDrawingItemFromCX
     134    call    ClearPreviousItem
    133135    call    MenuEvent_RefreshItemFromCX
    134     call    DrawScrollbarIfNecessary
     136    call    DrawScrollbarCharacterForItemInCXifNecessary
    135137.InvalidItem:
    136     xchg    ax, cx                  ; Restore AX
     138    pop     ax
    137139    pop     cx
    138140    ret
     
    181183
    182184;--------------------------------------------------------------------
     185; ClearPreviousItem
     186;   Parameters
     187;       SS:BP:  Ptr to MENU
     188;   Returns:
     189;       Nothing
     190;   Corrupts registers:
     191;       AX, BX, DX, DI
     192;--------------------------------------------------------------------
     193ALIGN JUMP_ALIGN
     194ClearPreviousItem:
     195    CALL_DISPLAY_LIBRARY GetSoftwareCoordinatesToAX
     196    xchg    bx, ax
     197
     198    call    MenuBorders_GetNumberOfMiddleCharactersToDX
     199    sub     dx, BYTE MENU_TEXT_COLUMN_OFFSET
     200    mov     al, [cs:g_rgbTextBorderCharacters+BORDER_CHARS.cMiddle]
     201    call    MenuBorders_PrintMultipleBorderCharactersFromAL
     202
     203    xchg    ax, bx
     204    CALL_DISPLAY_LIBRARY SetCursorCoordinatesFromAX
     205    ret
     206
     207
     208;--------------------------------------------------------------------
    183209; GetItemTextAttributeTypeToSIforItemInCX
    184210;   Parameters
     
    205231
    206232;--------------------------------------------------------------------
    207 ; DrawScrollbarIfNecessary
     233; DrawScrollbarCharacterForItemInCXifNecessary
    208234;   Parameters
    209235;       CX:     Item to refresh
     
    212238;       Nothing
    213239;   Corrupts registers:
    214 ;       AX, BX, DX, SI, DI
    215 ;--------------------------------------------------------------------
    216 ALIGN JUMP_ALIGN
    217 DrawScrollbarIfNecessary:
    218     push    cx
    219     call    .DrawSpacesBeforeScrollbarCharacter
     240;       AX, CX, BX, DX, SI, DI
     241;--------------------------------------------------------------------
     242ALIGN JUMP_ALIGN
     243DrawScrollbarCharacterForItemInCXifNecessary:
    220244    call    MenuScrollbars_AreScrollbarsNeeded
    221     pop     cx
    222245    jc      SHORT .DrawScrollbarCharacter
    223246    ret
    224247
    225 ;--------------------------------------------------------------------
    226 ; .DrawSpacesBeforeScrollbarCharacter
    227 ;   Parameters
    228 ;       CX:     Item to refresh
    229 ;       SS:BP:  Ptr to MENU
    230 ;   Returns:
    231 ;       Nothing
    232 ;   Corrupts registers:
    233 ;       AX, CX, DX, DI
    234 ;--------------------------------------------------------------------
    235 ALIGN JUMP_ALIGN
    236 .DrawSpacesBeforeScrollbarCharacter:
    237     CALL_DISPLAY_LIBRARY GetSoftwareCoordinatesToAX
    238     xchg    dx, ax                  ; Current coordinates to DX
    239     mov     ax, cx
    240     call    MenuLocation_GetScrollbarCoordinatesToAXforItemInAX
    241     sub     al, dl
    242     sub     al, MENU_TEXT_COLUMN_OFFSET/2
    243 
    244     eMOVZX  cx, al
    245     jcxz    .NoSpacesNeeded
    246     mov     al, ' '
    247     CALL_DISPLAY_LIBRARY PrintRepeatedCharacterFromALwithCountInCX
    248 ALIGN JUMP_ALIGN, ret
    249 .NoSpacesNeeded:
    250     ret
    251 
    252 ;--------------------------------------------------------------------
    253 ; .DrawScrollbarCharacter
    254 ;   Parameters
    255 ;       CX:     Item to refresh
    256 ;       SS:BP:  Ptr to MENU
    257 ;   Returns:
    258 ;       Nothing
    259 ;   Corrupts registers:
    260 ;       AX, BX, DX, SI, DI
    261 ;--------------------------------------------------------------------
    262248ALIGN JUMP_ALIGN
    263249.DrawScrollbarCharacter:
    264     push    cx
    265 
    266250    call    MenuBorders_AdjustDisplayContextForDrawingBorders
    267 
    268251    mov     ax, cx
    269252    call    MenuLocation_GetScrollbarCoordinatesToAXforItemInAX
     
    273256    sub     di, [bp+MENU.wFirstVisibleItem]     ; Item to line
    274257    call    MenuScrollbars_GetScrollCharacterToALForLineInDI
    275     CALL_DISPLAY_LIBRARY PrintCharacterFromAL
    276 
    277     pop     cx
    278     ret
     258    jmp     MenuBorders_PrintSingleBorderCharacterFromAL
Note: See TracChangeset for help on using the changeset viewer.