Add the VsetRGB() XBIOS call.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39543 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2010-11-20 17:29:39 +00:00
parent 7a2ec456cf
commit 20d6d508c1
+28 -1
View File
@@ -103,6 +103,30 @@ extern "C" {
retvalue; \ retvalue; \
}) })
#define toscallWWL(trapnr, callnr, p1, p2, p3) \
({ \
register int32 retvalue __asm__("d0"); \
int16 _p1 = (int16)(p1); \
int16 _p2 = (int16)(p2); \
int32 _p3 = (int32)(p3); \
\
__asm__ volatile \
(/*"; toscall(" #trapnr ", " #callnr ")"*/"\n \
move.l %3,-(%%sp) \n \
move.w %2,-(%%sp) \n \
move.w %1,-(%%sp) \n \
move.w %[calln],-(%%sp)\n \
trap %[trapn]\n \
add.l #10,%%sp \n " \
: "=r"(retvalue) /* output */ \
: "r"(_p1), "r"(_p2), \
"r"(_p3), /* input */ \
[trapn]"i"(trapnr),[calln]"i"(callnr) \
: TOS_CLOBBER_LIST /* clobbered regs */ \
); \
retvalue; \
})
#define toscallWLWWWL(trapnr, callnr, p1, p2, p3, p4, p5, p6) \ #define toscallWLWWWL(trapnr, callnr, p1, p2, p3, p4, p5, p6) \
({ \ ({ \
register int32 retvalue __asm__("d0"); \ register int32 retvalue __asm__("d0"); \
@@ -196,6 +220,8 @@ extern "C" {
/* pointer versions */ /* pointer versions */
#define toscallP(trapnr, callnr, a) toscallL(trapnr, callnr, (int32)a) #define toscallP(trapnr, callnr, a) toscallL(trapnr, callnr, (int32)a)
#define toscallWWP(trapnr, callnr, p1, p2, p3) \
toscallWWL(trapnr, callnr, p1, p2, (int32)p3)
#define toscallWPWWWL(trapnr, callnr, p1, p2, p3, p4, p5, p6) \ #define toscallWPWWWL(trapnr, callnr, p1, p2, p3, p4, p5, p6) \
toscallWLWWWL(trapnr, callnr, p1, (int32)p2, p3, p4, p5, p6) toscallWLWWWL(trapnr, callnr, p1, (int32)p2, p3, p4, p5, p6)
#define toscallPLWWWWW(trapnr, callnr, p1, p2, p3, p4, p5, p6, p7) \ #define toscallPLWWWWW(trapnr, callnr, p1, p2, p3, p4, p5, p6, p7) \
@@ -221,7 +247,7 @@ extern "C" {
/* /*
* TOS Variables * TOS Variables
* only relevant ones, * only relevant ones,
* see toshyp.atari.org/003004.htm * see http://toshyp.atari.org/en/003004.html
*/ */
#define TOSVAR_autopath _TOSV_P(0x4ca) #define TOSVAR_autopath _TOSV_P(0x4ca)
#define TOSVAR_bootdev _TOSV_W(0x446) #define TOSVAR_bootdev _TOSV_W(0x446)
@@ -402,6 +428,7 @@ static inline int Bconputs(int16 handle, const char *string)
#define VgetMonitor() toscallV(XBIOS_TRAP, 89) #define VgetMonitor() toscallV(XBIOS_TRAP, 89)
#define mon_type() toscallV(XBIOS_TRAP, 89) #define mon_type() toscallV(XBIOS_TRAP, 89)
#define VgetSize(mode) toscallW(XBIOS_TRAP, 91, (int16)mode) #define VgetSize(mode) toscallW(XBIOS_TRAP, 91, (int16)mode)
#define VsetRGB(index, count, array) toscallWWP(XBIOS_TRAP, 93, (int16)index, (int16)count, (void *)array)
#define Locksnd() toscallV(XBIOS_TRAP, 128) #define Locksnd() toscallV(XBIOS_TRAP, 128)
#define Unlocksnd() toscallV(XBIOS_TRAP, 129) #define Unlocksnd() toscallV(XBIOS_TRAP, 129)