--- xmil/palm/palmossub.c 2005/02/26 03:59:50 1.2 +++ xmil/palm/palmossub.c 2005/02/27 18:22:06 1.3 @@ -16,6 +16,8 @@ typedef struct tagLocals3216{ #define PalmAPI(a,b) (gCall68KFuncP)(gEmulStateP,PceNativeTrapNo(a),&b,sizeof(b)) +#define setAddress(a,b) a.hi=ByteSwap16(b>>16);a.lo=ByteSwap16(b&0xffff) + void ARM_TYPE_pointerinvoid (void* ptr, UINT trapID) { ArgOne params; params.ptr = ByteSwap32(ptr); @@ -37,15 +39,14 @@ void ARM_TYPE_ptr16ptrinvoid(void* frm, typedef struct tagLocals{ UInt32 ptr; UINT16 objid; - UINT16 texthi; - UINT16 textlo; + UINT16 hi; + UINT16 lo; } Locals; Locals params; params.ptr = ByteSwap32(frm); params.objid = ByteSwap16(id); - params.texthi = ByteSwap16(text >> 16); - params.textlo = ByteSwap16(text & 0xffff); + setAddress(params, text); PalmAPI(trapID, params); } @@ -397,3 +398,16 @@ void print(char *format, ...) { (gCall68KFuncP)(gEmulStateP, (unsigned long)Callback_print, &arg, 4); } +UINT16 ARM_SysBatteryInfo(UINT8* battery) { + typedef struct tagLocals{ + UInt8 nul[22]; + UInt16 hi; + UInt16 lo; + } Locals; + Locals params; + + ZeroMemory(params.nul, 22); + setAddress(params, battery); + return((UINT16)PalmAPI(sysTrapSysBatteryInfo, params)); +} +