--- /dev/null
+.386p\r
+\r
+ NAME resample\r
+ EXTRN _rvolsel :WORD\r
+ EXTRN _lvolsel :WORD\r
+\r
+ .model small,c\r
+\r
+DGROUP GROUP _DATA\r
+\r
+_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'\r
+ ASSUME CS:_TEXT ,DS:DGROUP,SS:DGROUP\r
+\r
+ PUBLIC AsmStereoNormal_\r
+ PUBLIC AsmMonoNormal_\r
+ \r
+SS2 MACRO index\r
+ even\r
+ mov edx,ebx\r
+ sar edx,0bh\r
+ mov al,[esi+edx]\r
+ add ebx,ecx\r
+ mov edx,es:[eax*4]\r
+ add (index*8)[edi],edx\r
+ mov edx,fs:[eax*4]\r
+ add (4+(index*8))[edi],edx\r
+ ENDM\r
+\r
+SM2 MACRO index\r
+ even\r
+ mov edx,ebx\r
+ add ebx,ecx\r
+ sar edx,0bh\r
+ mov al,[esi+edx]\r
+ mov edx,es:[eax*4]\r
+ add (index*4)[edi],edx\r
+ ENDM\r
+\r
+\r
+AsmStereoNormal_ proc USES ebp fs es\r
+ mov ax,_lvolsel\r
+ mov es,ax ; voltab selector naar fs\r
+ mov ax,_rvolsel\r
+ mov fs,ax\r
+ xor eax,eax\r
+ push edx\r
+ shr edx,4\r
+ jz sskip16\r
+ mov ebp,edx\r
+sagain16:\r
+ SS2 0\r
+ SS2 1\r
+ SS2 2\r
+ SS2 3\r
+ SS2 4\r
+ SS2 5\r
+ SS2 6\r
+ SS2 7\r
+ SS2 8\r
+ SS2 9\r
+ SS2 10\r
+ SS2 11\r
+ SS2 12\r
+ SS2 13\r
+ SS2 14\r
+ SS2 15\r
+ add edi,(16*8)\r
+ dec ebp\r
+ jnz sagain16\r
+sskip16:\r
+ pop edx\r
+ and edx,15\r
+ jz sskip1\r
+ mov ebp,edx\r
+sagain1:\r
+ SS2 0\r
+ add edi,8\r
+ dec ebp\r
+ jnz sagain1\r
+sskip1:\r
+ ret\r
+AsmStereoNormal_ endp\r
+\r
+\r
+AsmMonoNormal_ proc USES ebp es\r
+ mov ax,_lvolsel\r
+ mov es,ax ; voltab selector naar fs\r
+ xor eax,eax\r
+ push edx\r
+ shr edx,4\r
+ jz mskip16\r
+ mov ebp,edx\r
+magain16:\r
+ SM2 0\r
+ SM2 1\r
+ SM2 2\r
+ SM2 3\r
+ SM2 4\r
+ SM2 5\r
+ SM2 6\r
+ SM2 7\r
+ SM2 8\r
+ SM2 9\r
+ SM2 10\r
+ SM2 11\r
+ SM2 12\r
+ SM2 13\r
+ SM2 14\r
+ SM2 15\r
+ add edi,(16*4)\r
+ dec ebp\r
+ jnz magain16\r
+mskip16:\r
+ pop edx\r
+ and edx,15\r
+ jz mskip1\r
+ mov ebp,edx\r
+magain1:\r
+ SM2 0\r
+ add edi,4\r
+ dec ebp\r
+ jnz magain1\r
+mskip1:\r
+ ret\r
+AsmMonoNormal_ endp\r
+\r
+_TEXT ENDS\r
+\r
+_DATA SEGMENT DWORD PUBLIC USE32 'DATA'\r
+_DATA ENDS\r
+\r
+ END\r