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

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

Commit 1/2 (Library, Configurators and Serial Server):

  • Changed Emulate.inc so that making 286 and 386 versions now works. Additionally, only one processor type define is needed in the makefile.
  • Minor optimizations.
  • Fixed spelling and did some cleaning.
File size: 2.2 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Character out function for printing withing menu window.
3
4; Section containing code
5SECTION .text
6
7;--------------------------------------------------------------------
8; MenuCharOut_MenuTeletypeOutputWithAutomaticLineChange
9; MenuCharOut_MenuTeletypeOutput
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
15;       [DISPLAY_CONTEXT.wCharOutParam]:
16;               Low byte  = First column offset (after CR)
17;               High byte = Last column offset (when using automatic line change)
18;   Returns:
19;       DI:     Incremented for next character
20;   Corrupts registers:
21;       AX, DX
22;--------------------------------------------------------------------
23ALIGN JUMP_ALIGN
24MenuCharOut_MenuTeletypeOutputWithAutomaticLineChange:
25    call    CharOutLineSplitter_IsCursorAtTheEndOfTextLine
26    jnc     SHORT MenuCharOut_MenuTeletypeOutput
27    cmp     al, ' '
28    jb      SHORT ReturnSinceNoNeedToStartLineWithControlCharacter
29    call    CharOutLineSplitter_MovePartialWordToNewTextLine
30    ; Fall to MenuCharOut_MenuTextTeletypeOutputWithAttribute
31
32ALIGN JUMP_ALIGN
33MenuCharOut_MenuTeletypeOutput:
34    cmp     al, CR
35    je      SHORT PrintCRandAdjustOffsetForStartOfLine
36    jmp     DisplayCharOut_TeletypeOutputWithAttribute
37
38
39;--------------------------------------------------------------------
40; MenuCharOut_PrintLFCRandAdjustOffsetForStartOfLine
41; PrintCRandAdjustOffsetForStartOfLine
42;   Parameters:
43;       DS:     BDA segment (zero)
44;       ES:DI:  Ptr to cursor location
45;       [DISPLAY_CONTEXT.wCharOutParam]:
46;               Low byte  = First column offset (after CR)
47;               High byte = Last column offset (when using automatic line change)
48;   Returns:
49;       ES:DI:  Ptr to beginning of new line
50;   Corrupts registers:
51;       AX, DX
52;--------------------------------------------------------------------
53ALIGN JUMP_ALIGN
54MenuCharOut_PrintLFCRandAdjustOffsetForStartOfLine:
55    mov     al, LF
56    call    DisplayCharOut_BiosTeletypeOutput
57    ; Fall to PrintCRandAdjustOffsetForStartOfLine
58
59ALIGN JUMP_ALIGN
60PrintCRandAdjustOffsetForStartOfLine:
61    mov     al, CR
62    call    DisplayCharOut_BiosTeletypeOutput
63    eMOVZX  ax, [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCharOutParam]
64    add     di, ax
65ReturnSinceNoNeedToStartLineWithControlCharacter:
66    ret
Note: See TracBrowser for help on using the repository browser.