1 /*
2  *  Borland C++ 32-bit compiler (BCC32). Use with mirdef.h32
3  *  Uses inline assembly feature. Suitable for Win32 Apps
4  *  Also compatible with Microsoft Visual C++ 32-bit compiler
5  */
6 
7 #define ASM _asm
8 
muldiv(a,b,c,m,rp)9 int muldiv(a,b,c,m,rp)
10 int a,b,c,m,*rp;
11 {
12         ASM mov   eax,DWORD PTR a
13         ASM mul   DWORD PTR b
14         ASM add   eax,DWORD PTR c
15         ASM adc   edx,0h
16         ASM div   DWORD PTR m
17         ASM mov   ebx,DWORD PTR rp
18         ASM mov   [ebx],edx
19 }
20 
muldvm(a,c,m,rp)21 int muldvm(a,c,m,rp)
22 int a,c,m,*rp;
23 {
24         ASM mov   edx,DWORD PTR a
25         ASM mov   eax,DWORD PTR c
26         ASM div   DWORD PTR m
27         ASM mov   ebx,DWORD PTR rp
28         ASM mov   [ebx],edx
29 }
30 
muldvd(a,b,c,rp)31 int muldvd(a,b,c,rp)
32 int a,b,c,*rp;
33 {
34         ASM mov   eax,DWORD PTR a
35         ASM mul   DWORD PTR b
36         ASM add   eax,DWORD PTR c
37         ASM adc   edx,0h
38         ASM mov   ebx,DWORD PTR rp
39         ASM mov   [ebx],eax
40         ASM mov   eax,edx
41 }
42 
muldvd2(a,b,c,rp)43 void muldvd2(a,b,c,rp)
44 int a,b,*c,*rp;
45 {
46         ASM mov   eax,DWORD PTR a
47         ASM mul   DWORD PTR b
48         ASM mov   ebx,DWORD PTR c
49         ASM add   eax,[ebx]
50         ASM adc   edx,0h
51         ASM mov   esi,DWORD PTR rp
52         ASM add   eax,[esi]
53         ASM adc   edx,0h
54         ASM mov   [esi],eax
55         ASM mov   [ebx],edx
56 }
57 
58