2006-04-13 20:47:06 +00:00
|
|
|
// Assembly-language function wrappers for a.asm functions
|
|
|
|
// for the Build Engine
|
|
|
|
// by Jonathon Fowler (jonof@edgenetwk.com)
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __a_h__
|
|
|
|
#define __a_h__
|
|
|
|
|
2006-09-10 17:40:34 +00:00
|
|
|
#if defined(__WATCOMC__) && !defined(NOASM)
|
2006-04-13 20:47:06 +00:00
|
|
|
|
|
|
|
extern long mmxoverlay();
|
|
|
|
#pragma aux mmxoverlay modify [eax ebx ecx edx];
|
|
|
|
extern long sethlinesizes(long,long,long);
|
|
|
|
#pragma aux sethlinesizes parm [eax][ebx][ecx];
|
|
|
|
extern long setpalookupaddress(char *);
|
|
|
|
#pragma aux setpalookupaddress parm [eax];
|
|
|
|
extern long setuphlineasm4(long,long);
|
|
|
|
#pragma aux setuphlineasm4 parm [eax][ebx];
|
|
|
|
extern long hlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux hlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setuprhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux setuprhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long rhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux rhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setuprmhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux setuprmhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long rmhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux rmhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setupqrhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux setupqrhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long qrhlineasm4(long,long,long,long,long,long);
|
|
|
|
#pragma aux qrhlineasm4 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setvlinebpl(long);
|
|
|
|
#pragma aux setvlinebpl parm [eax];
|
|
|
|
extern long fixtransluscence(long);
|
|
|
|
#pragma aux fixtransluscence parm [eax];
|
|
|
|
extern long prevlineasm1(long,long,long,long,long,long);
|
|
|
|
#pragma aux prevlineasm1 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long vlineasm1(long,long,long,long,long,long);
|
|
|
|
#pragma aux vlineasm1 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setuptvlineasm(long);
|
|
|
|
#pragma aux setuptvlineasm parm [eax];
|
|
|
|
extern long tvlineasm1(long,long,long,long,long,long);
|
|
|
|
#pragma aux tvlineasm1 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setuptvlineasm2(long,long,long);
|
|
|
|
#pragma aux setuptvlineasm2 parm [eax][ebx][ecx];
|
|
|
|
extern long tvlineasm2(long,long,long,long,long,long);
|
|
|
|
#pragma aux tvlineasm2 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long mvlineasm1(long,long,long,long,long,long);
|
|
|
|
#pragma aux mvlineasm1 parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long setupvlineasm(long);
|
|
|
|
#pragma aux setupvlineasm parm [eax];
|
|
|
|
extern long vlineasm4(long,long);
|
|
|
|
#pragma aux vlineasm4 parm [ecx][edi] modify [eax ebx ecx edx esi edi];
|
|
|
|
extern long setupmvlineasm(long);
|
|
|
|
#pragma aux setupmvlineasm parm [eax];
|
|
|
|
extern long mvlineasm4(long,long);
|
|
|
|
#pragma aux mvlineasm4 parm [ecx][edi] modify [eax ebx ecx edx esi edi];
|
|
|
|
extern void setupspritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux setupspritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern void spritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux spritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern void msetupspritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux msetupspritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern void mspritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux mspritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern void tsetupspritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux tsetupspritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern void tspritevline(long,long,long,long,long,long);
|
|
|
|
#pragma aux tspritevline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long mhline(long,long,long,long,long,long);
|
|
|
|
#pragma aux mhline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long mhlineskipmodify(long,long,long,long,long,long);
|
|
|
|
#pragma aux mhlineskipmodify parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long msethlineshift(long,long);
|
|
|
|
#pragma aux msethlineshift parm [eax][ebx];
|
|
|
|
extern long thline(long,long,long,long,long,long);
|
|
|
|
#pragma aux thline parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long thlineskipmodify(long,long,long,long,long,long);
|
|
|
|
#pragma aux thlineskipmodify parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long tsethlineshift(long,long);
|
|
|
|
#pragma aux tsethlineshift parm [eax][ebx];
|
|
|
|
extern long setupslopevlin(long,long,long);
|
|
|
|
#pragma aux setupslopevlin parm [eax][ebx][ecx] modify [edx];
|
|
|
|
extern long slopevlin(long,long,long,long,long,long);
|
|
|
|
#pragma aux slopevlin parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
extern long settransnormal();
|
|
|
|
#pragma aux settransnormal parm;
|
|
|
|
extern long settransreverse();
|
|
|
|
#pragma aux settransreverse parm;
|
|
|
|
extern long setupdrawslab(long,long);
|
|
|
|
#pragma aux setupdrawslab parm [eax][ebx];
|
|
|
|
extern long drawslab(long,long,long,long,long,long);
|
|
|
|
#pragma aux drawslab parm [eax][ebx][ecx][edx][esi][edi];
|
|
|
|
|
2006-09-10 17:40:34 +00:00
|
|
|
#elif defined(__GNUC__) && defined(__i386__) && !defined(NOASM) // __WATCOMC__
|
2006-04-13 20:47:06 +00:00
|
|
|
|
|
|
|
#if defined(__linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__SYLLABLE__)
|
|
|
|
#define __cdecl
|
|
|
|
#endif
|
|
|
|
|
|
|
|
extern long __cdecl mmxoverlay();
|
|
|
|
extern long __cdecl sethlinesizes(long,long,long);
|
|
|
|
extern long __cdecl setpalookupaddress(char *);
|
|
|
|
extern long __cdecl setuphlineasm4(long,long);
|
|
|
|
extern long __cdecl hlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setuprhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl rhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setuprmhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl rmhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setupqrhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl qrhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setvlinebpl(long);
|
|
|
|
extern long __cdecl fixtransluscence(long);
|
|
|
|
extern long __cdecl prevlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl vlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setuptvlineasm(long);
|
|
|
|
extern long __cdecl tvlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setuptvlineasm2(long,long,long);
|
|
|
|
extern long __cdecl tvlineasm2(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl mvlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl setupvlineasm(long);
|
|
|
|
extern long __cdecl vlineasm4(long,long);
|
|
|
|
extern long __cdecl setupmvlineasm(long);
|
|
|
|
extern long __cdecl mvlineasm4(long,long);
|
|
|
|
extern long __cdecl setupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl spritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl msetupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl mspritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl tsetupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl tspritevline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl mhline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl mhlineskipmodify(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl msethlineshift(long,long);
|
|
|
|
extern long __cdecl thline(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl thlineskipmodify(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl tsethlineshift(long,long);
|
|
|
|
extern long __cdecl setupslopevlin(long,long,long);
|
|
|
|
extern long __cdecl slopevlin(long,long,long,long,long,long);
|
|
|
|
extern long __cdecl settransnormal();
|
|
|
|
extern long __cdecl settransreverse();
|
|
|
|
extern long __cdecl setupdrawslab(long,long);
|
|
|
|
extern long __cdecl drawslab(long,long,long,long,long,long);
|
|
|
|
extern void __cdecl stretchhline(long,long,long,long,long,long);
|
|
|
|
|
2006-09-10 17:40:34 +00:00
|
|
|
#elif defined(_MSC_VER) && !defined(NOASM) // __GNUC__ && __i386__
|
2006-04-13 20:47:06 +00:00
|
|
|
|
|
|
|
extern long _cdecl mmxoverlay();
|
|
|
|
extern long _cdecl sethlinesizes(long,long,long);
|
|
|
|
extern long _cdecl setpalookupaddress(char *);
|
|
|
|
extern long _cdecl setuphlineasm4(long,long);
|
|
|
|
extern long _cdecl hlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setuprhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl rhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setuprmhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl rmhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setupqrhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl qrhlineasm4(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setvlinebpl(long);
|
|
|
|
extern long _cdecl fixtransluscence(long);
|
|
|
|
extern long _cdecl prevlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl vlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setuptvlineasm(long);
|
|
|
|
extern long _cdecl tvlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setuptvlineasm2(long,long,long);
|
|
|
|
extern long _cdecl tvlineasm2(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl mvlineasm1(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl setupvlineasm(long);
|
|
|
|
extern long _cdecl vlineasm4(long,long);
|
|
|
|
extern long _cdecl setupmvlineasm(long);
|
|
|
|
extern long _cdecl mvlineasm4(long,long);
|
|
|
|
extern long _cdecl setupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl spritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl msetupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl mspritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl tsetupspritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl tspritevline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl mhline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl mhlineskipmodify(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl msethlineshift(long,long);
|
|
|
|
extern long _cdecl thline(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl thlineskipmodify(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl tsethlineshift(long,long);
|
|
|
|
extern long _cdecl setupslopevlin(long,long,long);
|
|
|
|
extern long _cdecl slopevlin(long,long,long,long,long,long);
|
|
|
|
extern long _cdecl settransnormal();
|
|
|
|
extern long _cdecl settransreverse();
|
|
|
|
extern long _cdecl setupdrawslab(long,long);
|
|
|
|
extern long _cdecl drawslab(long,long,long,long,long,long);
|
|
|
|
extern void _cdecl stretchhline(long,long,long,long,long,long);
|
|
|
|
|
|
|
|
#else // _MSC_VER
|
|
|
|
|
2006-09-10 17:40:34 +00:00
|
|
|
#define ENGINE_USING_A_C
|
|
|
|
|
|
|
|
void setvlinebpl(long dabpl);
|
|
|
|
void fixtransluscence(long datransoff);
|
|
|
|
void settransnormal(void);
|
|
|
|
void settransreverse(void);
|
|
|
|
|
|
|
|
void sethlinesizes(long logx, long logy, long bufplc);
|
|
|
|
void setpalookupaddress(char *paladdr);
|
|
|
|
void setuphlineasm4(long bxinc, long byinc);
|
|
|
|
void hlineasm4(long cnt, long skiploadincs, long paloffs, unsigned long by, unsigned long bx, long p);
|
|
|
|
|
|
|
|
void setupslopevlin(long logylogx, long bufplc, long pinc);
|
|
|
|
void slopevlin(long p, long i, long slopaloffs, long cnt, long bx, long by);
|
|
|
|
|
|
|
|
void setupvlineasm(long neglogy);
|
|
|
|
void vlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p);
|
|
|
|
|
|
|
|
void setupmvlineasm(long neglogy);
|
|
|
|
void mvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p);
|
|
|
|
|
|
|
|
void setuptvlineasm(long neglogy);
|
|
|
|
void tvlineasm1(long vinc, long paloffs, long cnt, unsigned long vplc, long bufplc, long p);
|
|
|
|
|
|
|
|
void msethlineshift(long logx, long logy);
|
|
|
|
void mhline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p);
|
|
|
|
|
|
|
|
void tsethlineshift(long logx, long logy);
|
|
|
|
void thline(long bufplc, unsigned long bx, long cntup16, long junk, unsigned long by, long p);
|
|
|
|
|
|
|
|
void setupspritevline(long paloffs, long bxinc, long byinc, long ysiz);
|
|
|
|
void spritevline(long bx, long by, long cnt, long bufplc, long p);
|
|
|
|
|
|
|
|
void msetupspritevline(long paloffs, long bxinc, long byinc, long ysiz);
|
|
|
|
void mspritevline(long bx, long by, long cnt, long bufplc, long p);
|
|
|
|
|
|
|
|
void tsetupspritevline(long paloffs, long bxinc, long byinc, long ysiz);
|
|
|
|
void tspritevline(long bx, long by, long cnt, long bufplc, long p);
|
|
|
|
|
|
|
|
void setupdrawslab (long dabpl, long pal);
|
|
|
|
void drawslab (long dx, long v, long dy, long vi, long vptr, long p);
|
|
|
|
void stretchhline (long p0, long u, long cnt, long uinc, long rptr, long p);
|
|
|
|
|
|
|
|
void mmxoverlay();
|
2006-04-13 20:47:06 +00:00
|
|
|
|
|
|
|
#endif // else
|
|
|
|
|
|
|
|
#endif // __a_h__
|