add back new tool calls.

This commit is contained in:
Kelvin Sherlock 2015-01-18 14:48:22 -05:00
parent cbb554174e
commit c7c548e5ac
2 changed files with 108 additions and 9 deletions

View File

@ -188,6 +188,44 @@ namespace OS {
cpuSetAReg(0, 0); cpuSetAReg(0, 0);
return MacOS::dsCoreErr; return MacOS::dsCoreErr;
} }
uint16_t OSDispatch(uint16_t trap)
{
uint16_t selector;
StackFrame<2>(selector);
Log("%04x OSDispatch(%04x)\n", trap, selector);
switch(selector)
{
case 0x0015:
return MM::TempMaxMem();
case 0x0018:
return MM::TempFreeMem();
case 0x001d:
return MM::TempNewHandle();
case 0x001e:
return MM::TempHLock();
case 0x001f:
return MM::TempHUnlock();
case 0x0020:
return MM::TempDisposeHandle();
default:
fprintf(stderr, "OSDispatch: selector %04x not implemented\n",
selector);
exit(1);
}
}
} }
namespace ToolBox { namespace ToolBox {
@ -403,12 +441,17 @@ namespace ToolBox {
d0 = OS::Write(trap); d0 = OS::Write(trap);
break; break;
case 0xa207:
d0 = OS::HGetVInfo(trap);
break;
case 0xa008: // Create case 0xa008: // Create
case 0xa208: // HCreate case 0xa208: // HCreate
d0 = OS::Create(trap); d0 = OS::Create(trap);
break; break;
case 0xa009: case 0xa009: // Delete
case 0xa209: // HDelete
d0 = OS::Delete(trap); d0 = OS::Delete(trap);
break; break;
@ -438,15 +481,20 @@ namespace ToolBox {
d0 = OS::GetVol(trap); d0 = OS::GetVol(trap);
break; break;
case 0xa015: // SetVol
case 0xa215: // HSetVol
d0 = OS::SetVol(trap);
break;
case 0xa214: case 0xa214:
d0 = OS::HGetVol(trap); d0 = OS::HGetVol(trap);
break; break;
case 0xa015: // SetVol
d0 = OS::SetVol(trap);
break;
case 0xa215: // HSetVol
d0 = OS::HSetVol(trap);
break;
case 0xa018: case 0xa018:
d0 = OS::GetFPos(trap); d0 = OS::GetFPos(trap);
break; break;
@ -455,6 +503,10 @@ namespace ToolBox {
d0 = OS::SetFPos(trap); d0 = OS::SetFPos(trap);
break; break;
case 0xa051:
d0 = OS::ReadXPRam(trap);
break;
case 0xa060: case 0xa060:
d0 = OS::FSDispatch(trap); d0 = OS::FSDispatch(trap);
break; break;
@ -519,7 +571,8 @@ namespace ToolBox {
break; break;
// BlockMove (sourcePtr,destPtr: Ptr; byteCount: Size); // BlockMove (sourcePtr,destPtr: Ptr; byteCount: Size);
case 0xa02e: case 0xa02e: // BlockMove
case 0xa22e: // BlockMoveData
d0 = MM::BlockMove(trap); d0 = MM::BlockMove(trap);
break; break;
@ -527,6 +580,11 @@ namespace ToolBox {
d0 = MM::HPurge(trap); d0 = MM::HPurge(trap);
break; break;
case 0xa04a:
d0 = MM::HNoPurge(trap);
break;
case 0xA11D: case 0xA11D:
d0 = MM::MaxMem(trap); d0 = MM::MaxMem(trap);
break; break;
@ -556,6 +614,11 @@ namespace ToolBox {
d0 = MM::HGetState(trap); d0 = MM::HGetState(trap);
break; break;
case 0xa06a:
d0 = MM::HSetState(trap);
break;
// MoveHHi (h: Handle); // MoveHHi (h: Handle);
case 0xa064: case 0xa064:
d0 = MM::MoveHHi(trap); d0 = MM::MoveHHi(trap);
@ -568,7 +631,10 @@ namespace ToolBox {
case 0xa9e3: case 0xa9e3:
d0 = MM::PtrToHand(trap); d0 = MM::PtrToHand(trap);
break; break;
case 0xa9ef:
d0 = MM::PtrAndHand(trap);
break;
case 0xa11a: case 0xa11a:
d0 = MM::GetZone(trap); d0 = MM::GetZone(trap);
break; break;
@ -581,11 +647,19 @@ namespace ToolBox {
d0 = MM::HandleZone(trap); d0 = MM::HandleZone(trap);
break; break;
case 0xa128:
d0 = MM::RecoverHandle(trap);
break;
// MaxApplZone // MaxApplZone
case 0xa063: case 0xa063:
d0 = MM::MaxApplZone(trap); d0 = MM::MaxApplZone(trap);
break; break;
case 0xa162:
d0 = MM::PurgeSpace(trap);
break;
// ReadDateTime (VAR sees: LONGINT) : OSErr; // ReadDateTime (VAR sees: LONGINT) : OSErr;
case 0xa039: case 0xa039:
d0 = OS::ReadDateTime(trap); d0 = OS::ReadDateTime(trap);
@ -650,6 +724,19 @@ namespace ToolBox {
d0 = MM::EmptyHandle(trap); d0 = MM::EmptyHandle(trap);
break; break;
case 0xa058:
d0 = OS::InsTime(trap);
break;
case 0xa059:
d0 = OS::RmvTime(trap);
break;
case 0xa05a:
d0 = OS::PrimeTime(trap);
break;
// resource manager stuff. // resource manager stuff.
// Count1Resources (theType: ResType): Integer; // Count1Resources (theType: ResType): Integer;
@ -665,6 +752,14 @@ namespace ToolBox {
d0 = RM::Get1IndType(trap); d0 = RM::Get1IndType(trap);
break; break;
case 0xa81a:
d0 = RM::HOpenResFile(trap);
break;
case 0xa81b:
d0 = RM::HCreateResFile(trap);
break;
case 0xa81c: case 0xa81c:
d0 = RM::Count1Types(trap); d0 = RM::Count1Types(trap);
break; break;
@ -841,6 +936,10 @@ namespace ToolBox {
d0 = Utility::BitTst(trap); d0 = Utility::BitTst(trap);
break; break;
case 0xa88f:
d0 = OS::OSDispatch(trap);
break;
default: default:
fprintf(stderr, "Unsupported tool trap: %04x (%s)\n", fprintf(stderr, "Unsupported tool trap: %04x (%s)\n",
trap, TrapName(trap)); trap, TrapName(trap));

View File

@ -57,6 +57,7 @@ namespace ToolBox {
bool Trace = false; bool Trace = false;
#ifdef OLD_TRAP_DISPATCH
uint16_t OSDispatch(uint16_t trap) uint16_t OSDispatch(uint16_t trap)
{ {
@ -95,7 +96,6 @@ namespace ToolBox {
} }
#ifdef OLD_TRAP_DISPATCH
void dispatch(uint16_t trap) void dispatch(uint16_t trap)
{ {