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

Last change on this file since 180 was 104, checked in by Tomi Tilli, 14 years ago

Changes to Assembly Library:

  • Some more optimizations.
  • Moved macros.inc from XTIDE Universal BIOS to Assembly Library.
File size: 2.3 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, BYTE [VIDEO_BDA.displayContext+DISPLAY_CONTEXT.wCharOutParam]
64 add di, ax
65ReturnSinceNoNeedToStartLineWithControlCharacter:
66 ret
Note: See TracBrowser for help on using the repository browser.