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

Comparing SheepShaver/src/emul_op.cpp (file contents):
Revision 1.21 by gbeauche, 2005-06-30T10:17:58Z vs.
Revision 1.25 by asvitkine, 2011-12-27T07:22:18Z

# Line 1 | Line 1
1   /*
2   *  emul_op.cpp - 68k opcodes for ROM patches
3   *
4 < *  SheepShaver (C) 1997-2005 Christian Bauer and Marc Hellwig
4 > *  SheepShaver (C) 1997-2008 Christian Bauer and Marc Hellwig
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 261 | Line 261 | void EmulOp(M68kRegisters *r, uint32 pc,
261  
262                          // Patch DebugStr()
263                          static const uint8 proc_template[] = {
264 <                                M68K_EMUL_OP_DEBUG_STR >> 8, M68K_EMUL_OP_DEBUG_STR,
264 >                                M68K_EMUL_OP_DEBUG_STR >> 8, M68K_EMUL_OP_DEBUG_STR & 0xFF,
265                                  0x4e, 0x74,                     // rtd  #4
266                                  0x00, 0x04
267                          };
# Line 290 | Line 290 | void EmulOp(M68kRegisters *r, uint32 pc,
290                                  WriteMacInt32(KernelDataAddr + 0x17c4, DR_CACHE_SIZE);
291                                  WriteMacInt32(KernelDataAddr + 0x1b04, DR_CACHE_BASE);
292                                  WriteMacInt32(KernelDataAddr + 0x1b00, DR_EMULATOR_BASE);
293 <                                memcpy((void *)DR_EMULATOR_BASE, (void *)(ROM_BASE + 0x370000), DR_EMULATOR_SIZE);
293 >                                memcpy((void *)DR_EMULATOR_BASE, (void *)(ROMBase + 0x370000), DR_EMULATOR_SIZE);
294                                  MakeExecutable(0, DR_EMULATOR_BASE, DR_EMULATOR_SIZE);
295                          }
296                          break;
# Line 409 | Line 409 | void EmulOp(M68kRegisters *r, uint32 pc,
409                          r->d[0] = (uint32)-7887;
410                          break;
411  
412 +                case OP_CHECK_SYSV: {           // Check we are not using MacOS < 8.1 with a NewWorld ROM
413 +                        r->a[1] = r->d[1];
414 +                        r->a[0] = ReadMacInt32(r->d[1]);
415 +                        uint32 sysv = ReadMacInt16(r->a[0]);
416 +                        D(bug("Detected MacOS version %d.%d.%d\n", (sysv >> 8) & 0xf, (sysv >> 4) & 0xf, sysv & 0xf));
417 +                        if (ROMType == ROMTYPE_NEWWORLD && sysv < 0x0801)
418 +                                r->d[1] = 0;
419 +                        break;
420 +                }
421 +
422                  case OP_NTRB_17_PATCH:
423                          r->a[2] = ReadMacInt32(r->a[7]);
424                          r->a[7] += 4;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines