afb25409c41d6af532688772edc37129bab918a2
[dosdemo] / libs / oldmik / src / resample.asm
1 .386p\r
2 \r
3         NAME    resample\r
4         EXTRN   _rvolsel :WORD\r
5         EXTRN   _lvolsel :WORD\r
6 \r
7         .model small,c\r
8 \r
9 DGROUP  GROUP   _DATA\r
10 \r
11 _TEXT   SEGMENT DWORD PUBLIC USE32 'CODE'\r
12         ASSUME  CS:_TEXT ,DS:DGROUP,SS:DGROUP\r
13 \r
14         PUBLIC  AsmStereoNormal_\r
15         PUBLIC  AsmMonoNormal_\r
16         \r
17 SS2     MACRO index\r
18         even\r
19         mov   edx,ebx\r
20         sar   edx,0bh\r
21         mov   al,[esi+edx]\r
22         add   ebx,ecx\r
23         mov   edx,es:[eax*4]\r
24         add   (index*8)[edi],edx\r
25         mov   edx,fs:[eax*4]\r
26         add   (4+(index*8))[edi],edx\r
27         ENDM\r
28 \r
29 SM2     MACRO index\r
30         even\r
31         mov   edx,ebx\r
32         add   ebx,ecx\r
33         sar   edx,0bh\r
34         mov   al,[esi+edx]\r
35         mov   edx,es:[eax*4]\r
36         add   (index*4)[edi],edx\r
37         ENDM\r
38 \r
39 \r
40 AsmStereoNormal_ proc USES ebp fs es\r
41         mov    ax,_lvolsel\r
42         mov    es,ax                       ; voltab selector naar fs\r
43         mov    ax,_rvolsel\r
44         mov    fs,ax\r
45         xor    eax,eax\r
46         push   edx\r
47         shr    edx,4\r
48         jz     sskip16\r
49         mov    ebp,edx\r
50 sagain16:\r
51         SS2    0\r
52         SS2    1\r
53         SS2    2\r
54         SS2    3\r
55         SS2    4\r
56         SS2    5\r
57         SS2    6\r
58         SS2    7\r
59         SS2    8\r
60         SS2    9\r
61         SS2    10\r
62         SS2    11\r
63         SS2    12\r
64         SS2    13\r
65         SS2    14\r
66         SS2    15\r
67         add    edi,(16*8)\r
68         dec    ebp\r
69         jnz    sagain16\r
70 sskip16:\r
71         pop    edx\r
72         and    edx,15\r
73         jz     sskip1\r
74         mov    ebp,edx\r
75 sagain1:\r
76         SS2    0\r
77         add    edi,8\r
78         dec    ebp\r
79         jnz    sagain1\r
80 sskip1:\r
81         ret\r
82 AsmStereoNormal_ endp\r
83 \r
84 \r
85 AsmMonoNormal_ proc USES ebp es\r
86         mov    ax,_lvolsel\r
87         mov    es,ax                       ; voltab selector naar fs\r
88         xor    eax,eax\r
89         push   edx\r
90         shr    edx,4\r
91         jz     mskip16\r
92         mov    ebp,edx\r
93 magain16:\r
94         SM2    0\r
95         SM2    1\r
96         SM2    2\r
97         SM2    3\r
98         SM2    4\r
99         SM2    5\r
100         SM2    6\r
101         SM2    7\r
102         SM2    8\r
103         SM2    9\r
104         SM2    10\r
105         SM2    11\r
106         SM2    12\r
107         SM2    13\r
108         SM2    14\r
109         SM2    15\r
110         add    edi,(16*4)\r
111         dec    ebp\r
112         jnz    magain16\r
113 mskip16:\r
114         pop    edx\r
115         and    edx,15\r
116         jz     mskip1\r
117         mov    ebp,edx\r
118 magain1:\r
119         SM2    0\r
120         add    edi,4\r
121         dec    ebp\r
122         jnz    magain1\r
123 mskip1:\r
124         ret\r
125 AsmMonoNormal_ endp\r
126 \r
127 _TEXT   ENDS\r
128 \r
129 _DATA   SEGMENT DWORD PUBLIC USE32 'DATA'\r
130 _DATA   ENDS\r
131 \r
132         END\r