ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/emul_op.cpp
(Generate patch)

Comparing BasiliskII/src/emul_op.cpp (file contents):
Revision 1.32 by gbeauche, 2005-01-30T21:42:13Z vs.
Revision 1.37 by cebix, 2010-02-21T12:00:01Z

# Line 1 | Line 1
1   /*
2   *  emul_op.cpp - 68k opcodes for ROM patches
3   *
4 < *  Basilisk II (C) 1997-2005 Christian Bauer
4 > *  Basilisk II (C) Christian Bauer
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 70 | Line 70 | void EmulOp(uint16 opcode, M68kRegisters
70                                     r->sr);
71                          VideoQuitFullScreen();
72   #ifdef ENABLE_MON
73 <                        char *arg[4] = {"mon", "-m", "-r", NULL};
73 >                        const char *arg[4] = {"mon", "-m", "-r", NULL};
74                          mon(3, arg);
75   #endif
76                          QuitEmulator();
# Line 236 | Line 236 | void EmulOp(uint16 opcode, M68kRegisters
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) {
# Line 353 | Line 355 | void EmulOp(uint16 opcode, M68kRegisters
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
# Line 555 | Line 557 | void EmulOp(uint16 opcode, M68kRegisters
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"
# Line 566 | Line 575 | void EmulOp(uint16 opcode, M68kRegisters
575                                     r->a[0], r->a[1], r->a[2], r->a[3], r->a[4], r->a[5], r->a[6], r->a[7],
576                                     r->sr);
577   #ifdef ENABLE_MON
578 <                        char *arg[4] = {"mon", "-m", "-r", NULL};
578 >                        const char *arg[4] = {"mon", "-m", "-r", NULL};
579                          mon(3, arg);
580   #endif
581                          QuitEmulator();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines