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