source: xtideuniversalbios/trunk/Assembly_Library/Src/Menu/MenuCharOut.asm @ 369

Last change on this file since 369 was 369, checked in by gregli@…, 12 years ago

Removed align directives for initalization code and added define for align in boot-time calls to the assembly library (defaulting to 1), resulting in a significant savings for the AT and 386 builds. Fixed a bug with switch command line handling in the serial server. Put in CR characters in licesnse.txt, so that it properly displays on Windows. In the configurator, added default values for user supplied CHS and LBA values, defaulting to values within range when those features are enabled. Updated the copyright message in the configurator as the literal word Copyright is important.

File size: 2.3 KB
RevLine 
[41]1; Project name  :   Assembly Library
2; Description   :   Character out function for printing withing menu window.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
[52]8; MenuCharOut_MenuTeletypeOutputWithAutomaticLineChange
9; MenuCharOut_MenuTeletypeOutput
[41]10;   Parameters:
11;       AL:     Character to output
12;       AH:     Attribute to output
13;       DS:     BDA segment (zero)
14;       ES:DI:  Ptr to video memory where to output
[52]15;       [DISPLAY_CONTEXT.wCharOutParam]:
16;               Low byte  = First column offset (after CR)
17;               High byte = Last column offset (when using automatic line change)
[41]18;   Returns:
19;       DI:     Incremented for next character
20;   Corrupts registers:
21;       AX, DX
22;--------------------------------------------------------------------
[369]23ALIGN MENU_JUMP_ALIGN
[52]24MenuCharOut_MenuTeletypeOutputWithAutomaticLineChange:
25    call    CharOutLineSplitter_IsCursorAtTheEndOfTextLine
26    jnc     SHORT MenuCharOut_MenuTeletypeOutput
27    cmp     al, ' '
28    jb      SHORT ReturnSinceNoNeedToStartLineWithControlCharacter
29    call    CharOutLineSplitter_MovePartialWordToNewTextLine
[48]30    ; Fall to MenuCharOut_MenuTextTeletypeOutputWithAttribute
31
[369]32ALIGN MENU_JUMP_ALIGN
[52]33MenuCharOut_MenuTeletypeOutput:
34    cmp     al, CR
35    je      SHORT PrintCRandAdjustOffsetForStartOfLine
[41]36    jmp     DisplayCharOut_TeletypeOutputWithAttribute
37
[48]38
39;--------------------------------------------------------------------
[52]40; MenuCharOut_PrintLFCRandAdjustOffsetForStartOfLine
41; PrintCRandAdjustOffsetForStartOfLine
[48]42;   Parameters:
43;       DS:     BDA segment (zero)
44;       ES:DI:  Ptr to cursor location
[52]45;       [DISPLAY_CONTEXT.wCharOutParam]:
46;               Low byte  = First column offset (after CR)
47;               High byte = Last column offset (when using automatic line change)
[48]48;   Returns:
49;       ES:DI:  Ptr to beginning of new line
50;   Corrupts registers:
51;       AX, DX
52;--------------------------------------------------------------------
[369]53ALIGN MENU_JUMP_ALIGN
[52]54MenuCharOut_PrintLFCRandAdjustOffsetForStartOfLine:
[48]55    mov     al, LF
56    call    DisplayCharOut_BiosTeletypeOutput
[52]57    ; Fall to PrintCRandAdjustOffsetForStartOfLine
[48]58
[369]59ALIGN MENU_JUMP_ALIGN
[52]60PrintCRandAdjustOffsetForStartOfLine:
61    mov     al, CR
[48]62    call    DisplayCharOut_BiosTeletypeOutput
[293]63    eMOVZX  ax, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCharOutParam]
[52]64    add     di, ax
65ReturnSinceNoNeedToStartLineWithControlCharacter:
[41]66    ret
Note: See TracBrowser for help on using the repository browser.