void Demo::OnKeyDown(SDLKey sym, SDLMod mod, Uint16 unicode) { if (sym == SDLK_ESCAPE) Running = false; if (sym == SDLK_1) CallMe(); }
int Call86(Word32 Address,Regs16 *InRegs,Regs16 *OutRegs) { Word32 TempMem; Word8 *TrueMem; TempMem = AllocRealMemory(120); /* Get real memory */ if (TempMem) { TrueMem = (Word8 *)RealToProtectedPtr(TempMem); FastMemCpy(TrueMem,RealCode,sizeof(RealCode)); ((Word16 *)(TrueMem+1))[0] = InRegs->ds; /* Pass the input registers */ ((Word16 *)(TrueMem+6))[0] = InRegs->es; ((Word16 *)(TrueMem+11))[0] = InRegs->ax; ((Word16 *)(TrueMem+14))[0] = InRegs->bx; ((Word16 *)(TrueMem+17))[0] = InRegs->cx; ((Word16 *)(TrueMem+20))[0] = InRegs->dx; ((Word16 *)(TrueMem+23))[0] = InRegs->di; ((Word16 *)(TrueMem+26))[0] = InRegs->si; ((Word16 *)(TrueMem+29))[0] = InRegs->bp; ((Word32 *)(TrueMem+32))[0] = Address; ((Word16 *)(TrueMem+39))[0] = (Word16)TempMem+100; /* Set the return data */ ((Word16 *)(TrueMem+44))[0] = (Word16)TempMem+102; ((Word16 *)(TrueMem+48))[0] = (Word16)TempMem+104; ((Word16 *)(TrueMem+53))[0] = (Word16)TempMem+106; ((Word16 *)(TrueMem+58))[0] = (Word16)TempMem+108; ((Word16 *)(TrueMem+63))[0] = (Word16)TempMem+110; ((Word16 *)(TrueMem+68))[0] = (Word16)TempMem+112; ((Word16 *)(TrueMem+73))[0] = (Word16)TempMem+114; ((Word16 *)(TrueMem+78))[0] = (Word16)TempMem+116; ((Word16 *)(TrueMem+84))[0] = (Word16)TempMem+118; CallMe(TempMem); /* Call it */ OutRegs->ds = ((Word16 *)(TrueMem+100))[0]; /* Get the result */ OutRegs->es = ((Word16 *)(TrueMem+102))[0]; OutRegs->ax = ((Word16 *)(TrueMem+104))[0]; OutRegs->bx = ((Word16 *)(TrueMem+106))[0]; OutRegs->cx = ((Word16 *)(TrueMem+108))[0]; OutRegs->dx = ((Word16 *)(TrueMem+110))[0]; OutRegs->di = ((Word16 *)(TrueMem+112))[0]; OutRegs->si = ((Word16 *)(TrueMem+114))[0]; OutRegs->bp = ((Word16 *)(TrueMem+116))[0]; OutRegs->flags = ((Word16 *)(TrueMem+118))[0]; DeallocRealMemory(TempMem); /* Release the memory */ return OutRegs->ax; } FastMemSet(OutRegs,0,sizeof(Regs16)); OutRegs->flags = 1; return 0; }
void layer3(int a, int b, int c) { CallMe(layer4, a + b + c); }
unsigned char ISend::creat_send_thread() { *cm = CallMe(70, &(ISend::send_cb), this); return 1; }