236 |
|
|
237 |
|
// Install PutScrap() patch |
238 |
|
M68kRegisters r; |
239 |
< |
r.d[0] = 0xa9fe; |
240 |
< |
r.a[0] = PutScrapPatch; |
241 |
< |
Execute68kTrap(0xa647, &r); // SetToolTrap() |
239 |
> |
if (PutScrapPatch) { |
240 |
> |
r.d[0] = 0xa9fe; |
241 |
> |
r.a[0] = PutScrapPatch; |
242 |
> |
Execute68kTrap(0xa647, &r); // SetToolTrap() |
243 |
> |
} |
244 |
|
|
245 |
|
// Install GetScrap() patch |
246 |
|
if (GetScrapPatch) { |
355 |
|
break; |
356 |
|
|
357 |
|
case M68K_EMUL_OP_ETHER_READ_PACKET: |
358 |
< |
EtherReadPacket((uint8 **)&r->a[0], r->a[3], r->d[3], r->d[1]); |
358 |
> |
EtherReadPacket(r->a[0], r->a[3], r->d[3], r->d[1]); |
359 |
|
break; |
360 |
|
|
361 |
|
case M68K_EMUL_OP_SOUNDIN_OPEN: // Sound input driver functions |
557 |
|
r->d[0] = DebugUtil(r->d[0]); |
558 |
|
break; |
559 |
|
|
560 |
+ |
case M68K_EMUL_OP_IDLE_TIME: // SynchIdleTime() patch |
561 |
+ |
// Sleep if no events pending |
562 |
+ |
if (ReadMacInt32(0x14c) == 0) |
563 |
+ |
idle_wait(); |
564 |
+ |
r->a[0] = ReadMacInt32(0x2b6); |
565 |
+ |
break; |
566 |
+ |
|
567 |
|
default: |
568 |
|
printf("FATAL: EMUL_OP called with bogus opcode %08x\n", opcode); |
569 |
|
printf("d0 %08x d1 %08x d2 %08x d3 %08x\n" |