Changeset 101 in xtideuniversalbios for trunk/Assembly_Library


Ignore:
Timestamp:
Jan 31, 2011, 7:03:22 PM (14 years ago)
Author:
Tomi Tilli
google:author:
aitotat
Message:

Changes to Assembly Library:

  • Some minor size optimizations to Display Library.
Location:
trunk/Assembly_Library/Src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Assembly_Library/Src/AssemblyLibrary.asm

    r85 r101  
    1212    %include "DisplayContext.asm"
    1313    %include "DisplayCursor.asm"
    14     %include "DisplayFormat.asm"
    1514    %include "DisplayPage.asm"
    1615    %include "DisplayPrint.asm"
     16    %include "DisplayFormat.asm"
    1717%endif
    1818
  • trunk/Assembly_Library/Src/Display/CgaSnow.asm

    r52 r101  
    1 ; File name     :   CgaSnow.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   8.10.2010
    4 ; Last update   :   12.10.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for preventing CGA snow.
    73
  • trunk/Assembly_Library/Src/Display/Display.asm

    r67 r101  
    1 ; File name     :   Display.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   2.7.2010
    4 ; Last update   :   7.12.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Display Library functions for CALL_DISPLAY_LIBRARY macro
    73;                   that users should use to make library call.
     
    4945ALIGN JUMP_ALIGN
    5046.FormatNullTerminatedStringFromCSSI:
    51     pop     ax                  ; Discard return address to inside DisplayFunctionFromDI
     47    pop     ax                  ; Discard return address to inside Display_FunctionFromDI
    5248    call    DisplayPrint_FormattedNullTerminatedStringFromCSSI
    5349    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], di
  • trunk/Assembly_Library/Src/Display/DisplayCharOut.asm

    r55 r101  
    1 ; File name     :   DisplayCharOut.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   26.6.2010
    4 ; Last update   :   24.10.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for outputting characters to video memory.
    73;                   These functions are meant to be called by Display_CharacterFromAL
     
    5450    call    DisplayCursor_SynchronizeCoordinatesToHardware
    5551    pop     ax
    56     call    .OutputCharacterWithBIOS
    57     call    DisplayCursor_GetHardwareCoordinatesToAX
    58     jmp     DisplayCursor_SetCoordinatesFromAX
    5952
    60 ;--------------------------------------------------------------------
    61 ; .OutputCharacterWithBIOS
    62 ;   Parameters:
    63 ;       AL:     Character to output
    64 ;       DS:     BDA segment
    65 ;   Returns:
    66 ;       Nothing
    67 ;   Corrupts registers:
    68 ;       AX
    69 ;--------------------------------------------------------------------
    70 ALIGN JUMP_ALIGN
    71 .OutputCharacterWithBIOS:
     53    ; Output character with BIOS
    7254    push    bx
    7355    mov     ah, TELETYPE_OUTPUT
     
    7557    int     BIOS_VIDEO_INTERRUPT_10h
    7658    pop     bx
    77     ret
     59
     60    call    DisplayCursor_GetHardwareCoordinatesToAX
     61    jmp     DisplayCursor_SetCoordinatesFromAX
    7862
    7963
  • trunk/Assembly_Library/Src/Display/DisplayContext.asm

    r52 r101  
    1 ; File name     :   DisplayContext.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   25.6.2010
    4 ; Last update   :   11.10.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for managing display context.
    73
     
    2016ALIGN JUMP_ALIGN
    2117DisplayContext_Initialize:
    22     call    .DetectAndSetDisplaySegment ; and .InitializeFlags
    2318    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fnCharOut], DEFAULT_CHARACTER_OUTPUT
    2419    mov     WORD [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCursorShape], CURSOR_NORMAL
    2520    mov     BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bAttribute], SCREEN_BACKGROUND_ATTRIBUTE
    26     xor     ax, ax
    27     call    DisplayCursor_SetCoordinatesFromAX
    28     jmp     DisplayContext_SynchronizeToHardware
     21    ; Fall to .DetectAndSetDisplaySegment
    2922
    3023;--------------------------------------------------------------------
     
    4033    mov     ax, COLOR_TEXT_SEGMENT
    4134    cmp     BYTE [VIDEO_BDA.bMode], MDA_TEXT_MODE
    42     jne     SHORT .StoreSegmentToDisplayContext
    43     mov     ax, MONO_TEXT_SEGMENT
    44 .StoreSegmentToDisplayContext:
     35    eCMOVE  ah, MONO_TEXT_SEGMENT >> 8
    4536    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition+2], ax
    46     ; Fall to InitializeFlags
     37    ; Fall to .InitializeFlags
    4738
    4839;--------------------------------------------------------------------
     
    6253.DoNotSetCgaFlag:
    6354    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.bFlags], dl
    64     ret
     55    ; Fall to .InitializeCursor
     56
     57;--------------------------------------------------------------------
     58; .InitializeCursor
     59;   Parameters:
     60;       DS:     BDA segment (zero)
     61;   Returns:
     62;       Nothing
     63;   Corrupts registers:
     64;       AX, DX
     65;--------------------------------------------------------------------
     66.InitializeCursor:
     67    xor     ax, ax
     68    call    DisplayCursor_SetCoordinatesFromAX
     69    ; Fall to DisplayContext_SynchronizeToHardware
     70
     71;--------------------------------------------------------------------
     72; DisplayContext_SynchronizeToHardware
     73;   Parameters:
     74;       DS:     BDA segment (zero)
     75;   Returns:
     76;       Nothing
     77;   Corrupts registers:
     78;       AX, DX
     79;--------------------------------------------------------------------
     80ALIGN JUMP_ALIGN
     81DisplayContext_SynchronizeToHardware:
     82    call    DisplayPage_SynchronizeToHardware
     83    call    DisplayCursor_SynchronizeShapeToHardware
     84    jmp     DisplayCursor_SynchronizeCoordinatesToHardware
    6585
    6686
     
    145165    pop     ds
    146166    ret
    147 
    148 
    149 ;--------------------------------------------------------------------
    150 ; DisplayContext_SynchronizeToHardware
    151 ;   Parameters:
    152 ;       DS:     BDA segment (zero)
    153 ;   Returns:
    154 ;       Nothing
    155 ;   Corrupts registers:
    156 ;       AX, DX
    157 ;--------------------------------------------------------------------
    158 ALIGN JUMP_ALIGN
    159 DisplayContext_SynchronizeToHardware:
    160     call    DisplayPage_SynchronizeToHardware
    161     call    DisplayCursor_SynchronizeShapeToHardware
    162     jmp     DisplayCursor_SynchronizeCoordinatesToHardware
    163167
    164168
  • trunk/Assembly_Library/Src/Display/DisplayCursor.asm

    r41 r101  
    1 ; File name     :   DisplayCursor.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   26.6.2010
    4 ; Last update   :   15.7.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for managing display cursor.
    73
     
    3935DisplayCursor_SetCoordinatesFromAX:
    4036    xchg    dx, ax
    41     call    .ConvertOffsetToAXfromCoordinatesInDX
    42     add     ax, [VIDEO_BDA.wPageOffset]             ; AX = Video RAM offset
     37    mov     ax, [VIDEO_BDA.wColumns]        ; Column count, 40 or 80
     38    mul     dh                              ; AX = Column count * row index
     39    xor     dh, dh
     40    add     ax, dx                          ; Add column offset
     41    shl     ax, 1                           ; Convert to WORD offset
     42    add     ax, [VIDEO_BDA.wPageOffset]     ; AX = Video RAM offset
    4343    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], ax
    4444    xchg    di, ax
    45     ret
    46 
    47 ;--------------------------------------------------------------------
    48 ; .ConvertOffsetToAXfromCoordinatesInDX
    49 ;   Parameters:
    50 ;       DL:     Cursor column (X-coordinate)
    51 ;       DH:     Cursor row (Y-coordinate)
    52 ;       DS:     BDA segment (zero)
    53 ;   Returns:
    54 ;       AX:     Offset to cursor location in selected page
    55 ;   Corrupts registers:
    56 ;       Nothing
    57 ;--------------------------------------------------------------------
    58 ALIGN JUMP_ALIGN
    59 .ConvertOffsetToAXfromCoordinatesInDX:
    60     mov     ax, [VIDEO_BDA.wColumns]        ; Column count, 40 or 80
    61     mul     dh                              ; AX = Column count * row index
    62     add     al, dl                          ; Add column offset
    63     adc     ah, 0
    64     shl     ax, 1                           ; Convert to WORD offset
    6545    ret
    6646
     
    145125    int     BIOS_VIDEO_INTERRUPT_10h
    146126    pop     cx
    147 ALIGN JUMP_ALIGN, ret
    148127.Return:
    149128    ret
     
    175154;       AX, DX
    176155;--------------------------------------------------------------------
    177 ;ALIGN JUMP_ALIGN
    178156.SetHardwareCursorCoordinatesFromAX:
    179157    push    bx
  • trunk/Assembly_Library/Src/Display/DisplayFormat.asm

    r48 r101  
    1 ; File name     :   DisplayFormat.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   29.6.2010
    4 ; Last update   :   8.10.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for displaying formatted strings.
    73
     
    2521DisplayFormat_ParseCharacters:
    2622    call    ReadCharacterAndTestForNull
    27     jz      SHORT .QuitCharacterParsing
     23    jz      SHORT ReturnFromFormat
    2824
    2925    ePUSH_T cx, DisplayFormat_ParseCharacters   ; Return address
    3026    xor     cx, cx                              ; Initial placeholder size
    3127    cmp     al, '%'                             ; Format specifier?
    32     je      SHORT ParseFormatSpecifier
    33     jmp     DisplayPrint_CharacterFromAL
    34 
    35 ALIGN JUMP_ALIGN
    36 .QuitCharacterParsing:
    37     ret
    38 
     28    jne     SHORT DisplayPrint_CharacterFromAL
     29    ; Fall to ParseFormatSpecifier
    3930
    4031;--------------------------------------------------------------------
     
    5344;       AX, BX, CX, DX
    5445;--------------------------------------------------------------------
    55 ALIGN JUMP_ALIGN
    5646ParseFormatSpecifier:
    5747    call    ReadCharacterAndTestForNull
    5848    call    Char_IsDecimalDigitInAL
    59     jc      SHORT .ParsePlaceholderSizeDigitFromALtoCX
     49    jc      SHORT ParsePlaceholderSizeDigitFromALtoCX
    6050    call    GetFormatSpecifierParserToAX
    6151    call    ax              ; Parser function
     
    6454    test    cx, cx
    6555    jnz     SHORT PrependOrAppendSpaces
    66     ret
    67 
    68 ;--------------------------------------------------------------------
    69 ; .ParsePlaceholderSizeDigitFromALtoCX
     56ReturnFromFormat:
     57    ret
     58
     59;--------------------------------------------------------------------
     60; ParsePlaceholderSizeDigitFromALtoCX
    7061;   Parameters:
    7162;       AL:     Digit character from format string
     
    7970;--------------------------------------------------------------------
    8071ALIGN JUMP_ALIGN
    81 .ParsePlaceholderSizeDigitFromALtoCX:
     72ParsePlaceholderSizeDigitFromALtoCX:
    8273    mov     [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.fpCursorPosition], di
    8374    sub     al, '0'             ; Digit '0'...'9' to integer 0...9
  • trunk/Assembly_Library/Src/Display/DisplayPage.asm

    r41 r101  
    1 ; File name     :   DisplayPage.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   26.6.2010
    4 ; Last update   :   3.7.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for managing display page.
    73
     
    6359    mov     ah, SELECT_ACTIVE_DISPLAY_PAGE
    6460    int     BIOS_VIDEO_INTERRUPT_10h
    65 ALIGN JUMP_ALIGN, ret
    6661.Return:
    6762    ret
  • trunk/Assembly_Library/Src/Display/DisplayPrint.asm

    r67 r101  
    1 ; File name     :   Display.asm
    21; Project name  :   Assembly Library
    3 ; Created date  :   26.6.2010
    4 ; Last update   :   7.12.2010
    5 ; Author        :   Tomi Tilli
    62; Description   :   Functions for display output.
    73
Note: See TracChangeset for help on using the changeset viewer.