source: xtideuniversalbios/trunk/Assembly_Library/Src/Util/Registers.asm @ 489

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

Added version string to initial title banner, for cases where there is not a boot menu (just hotkeys, or no hotkeys). Also ifdef'd out some unused code.

File size: 3.2 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Functions for register operations.
3
4;
5; XTIDE Universal BIOS and Associated Tools 
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
12; 
13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16; GNU General Public License for more details.     
17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;
19       
20; Section containing code
21SECTION .text
22
23;--------------------------------------------------------------------
24; Registers_ExchangeDSSIwithESDI
25;   Parameters
26;       Nothing
27;   Returns:
28;       DS:SI and ES:DI are exchanged.
29;   Corrupts registers:
30;       Nothing
31;--------------------------------------------------------------------
32ALIGN JUMP_ALIGN
33Registers_ExchangeDSSIwithESDI:
34    push    ds
35    push    es
36    pop     ds
37    pop     es
38    xchg    si, di
39    ret
40
41
42;--------------------------------------------------------------------
43; Registers_CopySSBPtoESDI
44; Registers_CopySSBPtoDSSI
45; Registers_CopyDSSItoESDI
46; Registers_CopyESDItoDSSI
47;   Parameters
48;       Nothing
49;   Returns:
50;       Copies farm pointer to different segment/pointer register pair
51;   Corrupts registers:
52;       Nothing
53;--------------------------------------------------------------------
54ALIGN JUMP_ALIGN
55%ifdef INCLUDE_MENU_LIBRARY     
56Registers_CopySSBPtoESDI:
57    COPY_SSBP_TO_ESDI
58    ret
59%endif
60
61%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
62ALIGN JUMP_ALIGN
63Registers_CopySSBPtoDSSI:
64    COPY_SSBP_TO_DSSI
65    ret
66
67ALIGN JUMP_ALIGN
68Registers_CopyDSSItoESDI:
69    COPY_DSSI_TO_ESDI
70    ret
71
72ALIGN JUMP_ALIGN
73Registers_CopyESDItoDSSI:
74    COPY_ESDI_to_DSSI
75    ret
76%endif
77
78
79;--------------------------------------------------------------------
80; Registers_NormalizeESSI
81; Registers_NormalizeESDI
82;   Parameters
83;       DS:SI or ES:DI: Ptr to normalize
84;   Returns:
85;       DS:SI or ES:DI: Normalized pointer
86;   Corrupts registers:
87;       AX, CX
88;
89; Inline of NORMALIZE_FAR_POINTER so that we can share the last 2/3 of the
90; routine with Registers_NormalizeFinish.
91;
92;--------------------------------------------------------------------
93%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS OR EXCLUDE_FROM_XTIDECFG
94ALIGN JUMP_ALIGN
95Registers_NormalizeESSI:
96    mov         cx, si
97    and         si, byte 0fh
98    jmp         Registers_NormalizeFinish
99
100ALIGN JUMP_ALIGN
101Registers_NormalizeESDI:
102    mov         cx, di
103    and         di, byte 0fh
104;;; fall-through
105
106ALIGN JUMP_ALIGN
107Registers_NormalizeFinish:
108    eSHR_IM     cx, 4
109    mov         ax, es
110    add         ax, cx
111    mov         es, ax
112    ret
113%endif
114
115
116;--------------------------------------------------------------------
117; Registers_SetZFifNullPointerInDSSI (commented to save bytes)
118;   Parameters
119;       DS:SI:  Far pointer
120;   Returns:
121;       ZF:     Set if NULL pointer in DS:SI
122;   Corrupts registers:
123;       Nothing
124;--------------------------------------------------------------------
125;ALIGN JUMP_ALIGN
126;Registers_SetZFifNullPointerInDSSI:
127;   push    ax
128;   mov     ax, ds
129;   or      ax, si
130;   pop     ax
131;   ret
Note: See TracBrowser for help on using the repository browser.