source: xtideuniversalbios/trunk/Assembly_Library/Src/Util/Bit.asm @ 593

Last change on this file since 593 was 593, checked in by aitotat, 6 years ago

Flashing now works again.
Hack to get Windows 95 to work properly (MODULE_WIN95_CMOS_HACK included for 386 builds by default).
Edited makefile to produce large 386 build.
Fixed recovery time for QDI Vision VLB-IDE controllers.
No more warnings with Nasm 2.13.xx and later.
File dialog now properly restores default drive when file selection is cancelled.

File size: 2.9 KB
RevLine 
[41]1; Project name  :   Assembly Library
2; Description   :   Functions for bit handling.
3
[376]4;
[526]5; XTIDE Universal BIOS and Associated Tools
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
[376]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.
[526]12;
[376]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
[526]16; GNU General Public License for more details.
[376]17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
[526]18;
[376]19
[41]20; Section containing code
21SECTION .text
22
23;--------------------------------------------------------------------
24; Bit_GetSetCountToCXfromDXAX
25;   Parameters
[592]26;       DX:AX:  Source DWORD
[41]27;   Returns:
28;       CX:     Number of bits set in DX:AX
29;   Corrupts registers:
30;       Nothing
31;--------------------------------------------------------------------
32ALIGN JUMP_ALIGN
33Bit_GetSetCountToCXfromDXAX:
34    push    bx
35
36    call    Bit_GetSetCountToCXfromAX
37    mov     bx, cx
38    xchg    ax, dx
39    call    Bit_GetSetCountToCXfromAX
40    xchg    ax, dx
41    add     cx, bx
42
43    pop     bx
44    ret
45
46
47;--------------------------------------------------------------------
48; Bit_GetSetCountToCXfromAX
49;   Parameters
50;       AX:     Source WORD
51;   Returns:
52;       CX:     Number of bits set in AX
53;   Corrupts registers:
54;       Nothing
55;--------------------------------------------------------------------
56ALIGN JUMP_ALIGN
57Bit_GetSetCountToCXfromAX:
58    push    ax
59
[592]60    mov     cx, -1
[41]61ALIGN JUMP_ALIGN
[592]62.IncrementCX:
63    inc     cx
64.ShiftLoop:
[41]65    shr     ax, 1
[592]66    jc      SHORT .IncrementCX
67    jnz     SHORT .ShiftLoop
[41]68
69    pop     ax
70    ret
71
72
73;--------------------------------------------------------------------
74; Bit_SetToDXAXfromIndexInCL
75;   Parameters:
76;       CL:     Index of bit to set (0...31)
77;       DX:AX:  Destination DWORD with flag to be set
78;   Returns:
79;       DX:AX:  DWORD with wanted bit set
80;   Corrupts registers:
81;       Nothing
82;--------------------------------------------------------------------
83ALIGN JUMP_ALIGN
84Bit_SetToDXAXfromIndexInCL:
85    cmp     cl, 16
86    jb      SHORT Bit_SetToAXfromIndexInCL
87
[593]88%ifdef USE_NEC_V
89    eSET1   dx, cl              ; SET1 ignores bits 7...4 in CL
90%else
[41]91    sub     cl, 16
92    xchg    ax, dx
93    call    Bit_SetToAXfromIndexInCL
94    xchg    dx, ax
95    add     cl, 16
[593]96%endif
[41]97    ret
98
[592]99
[41]100;--------------------------------------------------------------------
101; Bit_SetToAXfromIndexInCL
102;   Parameters:
103;       CL:     Index of bit to set (0...15)
104;       AX:     Destination WORD with flag to be set
105;   Returns:
106;       AX:     WORD with wanted bit set
107;   Corrupts registers:
108;       Nothing
109;--------------------------------------------------------------------
110ALIGN JUMP_ALIGN
111Bit_SetToAXfromIndexInCL:
[593]112%ifdef USE_NEC_V
113    eSET1   ax, cl
114%else
[41]115    push    dx
116
117    mov     dx, 1
118    shl     dx, cl
119    or      ax, dx
120
121    pop     dx
[593]122%endif
[41]123    ret
[592]124
Note: See TracBrowser for help on using the repository browser.