--- BasiliskII/src/adb.cpp 2004/01/10 08:54:14 1.11 +++ BasiliskII/src/adb.cpp 2005/01/30 21:42:13 1.15 @@ -1,7 +1,7 @@ /* * adb.cpp - ADB emulation (mouse/keyboard) * - * Basilisk II (C) 1997-2002 Christian Bauer + * Basilisk II (C) 1997-2005 Christian Bauer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,6 +34,10 @@ #include "video.h" #include "adb.h" +#ifdef POWERPC_ROM +#include "thunks.h" +#endif + #define DEBUG 0 #include "debug.h" @@ -377,18 +381,19 @@ void ADBInterrupt(void) // Update mouse position (absolute) if (mx != old_mouse_x || my != old_mouse_y) { #ifdef POWERPC_ROM - static const uint16 proc[] = { - PW(0x2f08), // move.l a0,-(sp) - PW(0x2f00), // move.l d0,-(sp) - PW(0x2f01), // move.l d1,-(sp) - PW(0x7001), // moveq #1,d0 (MoveTo) - PW(0xaadb), // CursorDeviceDispatch - PW(M68K_RTS) + static const uint8 proc_template[] = { + 0x2f, 0x08, // move.l a0,-(sp) + 0x2f, 0x00, // move.l d0,-(sp) + 0x2f, 0x01, // move.l d1,-(sp) + 0x70, 0x01, // moveq #1,d0 (MoveTo) + 0xaa, 0xdb, // CursorDeviceDispatch + M68K_RTS >> 8, M68K_RTS }; + BUILD_SHEEPSHAVER_PROCEDURE(proc); r.a[0] = ReadMacInt32(mouse_base + 4); r.d[0] = mx; r.d[1] = my; - Execute68k((uint32)proc, &r); + Execute68k(proc, &r); #else WriteMacInt16(0x82a, mx); WriteMacInt16(0x828, my);