From 47ed26b345e03da5f1129b333db0e658d40ce0bb Mon Sep 17 00:00:00 2001 From: "C.W. Betts" Date: Thu, 11 Jan 2018 14:09:52 -0700 Subject: [PATCH 01/88] Update the Cocoa Speech Synthesizer wrapper to work with the new changes. Also include it in the CMake list if building on Mac OS X. --- src/CMakeLists.txt | 4 ++ src/SpeechManager-MacBridge.mm | 97 +++++++++++++++++++--------------- src/SpeechManager.cpp | 52 +++++++++--------- 3 files changed, 85 insertions(+), 68 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5fb7c36b..880fd097 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -168,6 +168,9 @@ source_group(AppleEvents FILES ${ae_sources}) set(sound_sources sounddriver.cpp sound.cpp soundIMVI.cpp soundfake.cpp snth5.cpp SpeechManager.cpp) +if(HOST_OS STREQUAL macosx) +set(sound_sources ${sound_sources} SpeechManager-MacBridge.mm) +endif() source_group(Sound FILES ${sound_sources}) set(num_sources bindec.cpp float4.cpp float5.cpp float7.cpp floatnext.cpp toolmath.cpp @@ -370,6 +373,7 @@ set(include_sources hintemplate.h include/ShutDown.h include/SoundDvr.h include/SoundMgr.h + include/SpeechManager.h include/StartMgr.h include/StdFilePkg.h include/SysErr.h diff --git a/src/SpeechManager-MacBridge.mm b/src/SpeechManager-MacBridge.mm index ada173d3..3899950d 100644 --- a/src/SpeechManager-MacBridge.mm +++ b/src/SpeechManager-MacBridge.mm @@ -8,10 +8,21 @@ #include #import +#define BOOL BOOL_EXEC +#undef YES +#undef NO +#define YES YES_EXEC +#define NO NO_EXEC #include "rsys/common.h" #include "rsys/hfs.h" #include "MemoryMgr.h" +#include "rsys/byteswap.h" #include "SpeechManager-MacBridge.h" +#undef BOOL +#undef YES +#undef NO +#define YES 1 +#define NO 0 #include #include @@ -73,8 +84,10 @@ BeginSpeech(); @autoreleasepool { SInt16 toRet = internalSynthesizer.speaking; + GuestWrapper toRet2 = GuestWrapper(); + toRet2 = toRet2.fromHost(toRet); - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -82,8 +95,8 @@ { @autoreleasepool { SInt16 toRet = [NSSpeechSynthesizer isAnyApplicationSpeaking]; - - return BigEndianValue(toRet); + + return CW(toRet).get(); } } @@ -91,13 +104,13 @@ { @autoreleasepool { if (!numVoices) { - return paramErr; + return ::paramErr; } BeginSpeech(); SInt16 voiceCount = [NSSpeechSynthesizer availableVoices].count; - *numVoices = BigEndianValue(voiceCount); + *numVoices = CW(voiceCount).get(); return Executor::noErr; } } @@ -112,7 +125,7 @@ Executor::OSErr toRet = Executor::noErr; synthesizerMap.erase(ourDat); - return BigEndianValue(toRet); + return CW(toRet).get(); } Executor::OSErr MacBridge::SpeakString (Executor::Str255 textToBeSpoken) @@ -123,7 +136,7 @@ BOOL isBegin = [internalSynthesizer startSpeakingString:ourStr]; Executor::OSErr toRet = isBegin ? Executor::noErr : -1; - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -136,7 +149,7 @@ } Executor::OSErr toRet = Executor::noErr; - return BigEndianValue(toRet); + return CW(toRet).get(); } Executor::OSErr MacBridge::ContinueSpeech (Executor::SpeechChannel chan) @@ -147,7 +160,7 @@ [synth continueSpeaking]; Executor::OSErr toRet = Executor::noErr; - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -162,12 +175,12 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor @autoreleasepool { BeginSpeech(); if (!voice) { - return paramErr; + return Executor::paramErr; } - NSInteger voiceIndex = BigEndianValue(index); + NSInteger voiceIndex = CW(index).get(); NSArray *voices = [NSSpeechSynthesizer availableVoices]; if (voiceIndex >= voices.count) { - return (Executor::OSErr)(-244); + return CW((Executor::OSErr)(-244)).get(); } NSDictionary *voiceDict = [NSSpeechSynthesizer attributesForVoice:voices[voiceIndex]]; @@ -241,7 +254,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor break; default: - return paramErr; + return Executor::paramErr; break; } @@ -271,7 +284,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor break; default: - return paramErr; + return Executor::paramErr; break; } @@ -288,7 +301,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; - synth.rate = FixedToFloat(rate); + synth.rate = FixedToFloat(CL(rate).get()); } return Executor::noErr; @@ -297,14 +310,14 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor Executor::OSErr MacBridge::GetSpeechRate (Executor::SpeechChannel chan, Executor::Fixed *rate) { if (!rate) { - return paramErr; + return Executor::paramErr; } @autoreleasepool { NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; ::Fixed ourRate = FloatToFixed(synth.rate); - *rate = ourRate; + *rate = CL(ourRate).get(); } return Executor::noErr; @@ -316,18 +329,18 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor @autoreleasepool { NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; - float ourFloatPitch = FixedToFloat(pitch); + float ourFloatPitch = FixedToFloat(CL(pitch).get()); wasSuccess = [synth setObject:@(ourFloatPitch) forProperty:NSSpeechPitchModProperty error:NULL] ? Executor::noErr : -1; } - return wasSuccess; + return CW(wasSuccess).get(); } Executor::OSErr MacBridge::GetSpeechPitch (Executor::SpeechChannel chan, Executor::Fixed *pitch) { if (!pitch) { - return paramErr; + return Executor::paramErr; } ::OSErr toRet = Executor::noErr; @autoreleasepool { @@ -338,11 +351,11 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor toRet = -1; } else { Executor::Fixed ourPitch = FloatToFixed(ourNum.floatValue); - *pitch = ourPitch; + *pitch = CL(ourPitch).get(); } } - return BigEndianValue(toRet); + return CW(toRet).get(); } #undef NewHandle @@ -357,19 +370,19 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor } #endif warning_unimplemented (NULL_STRING); - return paramErr; + return CWC(Executor::paramErr).get(); } Executor::OSErr MacBridge::MakeVoiceSpec (Executor::OSType creator, Executor::OSType identifier, Executor::VoiceSpec *voice) { if (!voice) { - return paramErr; + return Executor::paramErr; } ::VoiceSpec nativeSpec = {0}; - ::OSErr toRet = ::MakeVoiceSpec(BigEndianValue(creator), BigEndianValue(identifier), &nativeSpec); + ::OSErr toRet = ::MakeVoiceSpec(CL(creator).get(), CL(identifier).get(), &nativeSpec); MacVoiceSpecToExecutorVoiceSpec(*voice, nativeSpec); - return toRet; + return CW(toRet).get(); } Executor::OSErr MacBridge::GetVoiceDescription ( @@ -377,11 +390,11 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor Executor::VoiceDescription *info, Executor::LONGINT infoLength) { - if (BigEndianValue(infoLength) != 362) { - return paramErr; + if (CL(infoLength).get() != 362) { + return Executor::paramErr; } if (voice == NULL || info == NULL) { - return paramErr; + return Executor::paramErr; } @autoreleasepool { @@ -473,11 +486,11 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor ::OSErr toRet = ::noErr; //::OSErr toRet = ::GetVoiceInfo((const ::VoiceSpec*)voice, BigEndianValue(selector), voiceInfo); - switch (selector) { + switch (CLC(selector).get()) { case soVoiceFile: //TODO: implement? warning_unimplemented (NULL_STRING); - return fnfErr; + toRet = Executor::fnfErr; break; case soVoiceDescription: @@ -487,7 +500,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor default: break; } - return toRet; + return CW(toRet).get(); } Executor::OSErr MacBridge::SpeakText (Executor::SpeechChannel chan, const void *textBuf, Executor::ULONGINT textBytes) @@ -496,13 +509,13 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor @autoreleasepool { NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; - NSString *ourStr = [[NSString alloc] initWithBytes:textBuf length:BigEndianValue(textBytes) encoding:NSMacOSRomanStringEncoding]; + NSString *ourStr = [[NSString alloc] initWithBytes:textBuf length:CL(textBytes).get() encoding:NSMacOSRomanStringEncoding]; if (![synth startSpeakingString:ourStr]) { theErr = -1; } } - return BigEndianValue(theErr); + return CW(theErr).get(); } Executor::OSErr MacBridge::SetSpeechInfo ( @@ -529,7 +542,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor ::OSErr toRet = ::noErr; warning_unimplemented (NULL_STRING); - return BigEndianValue(toRet); + return CW(toRet).get(); } namespace MacBridge { @@ -550,7 +563,7 @@ typedef NS_OPTIONS(SInt32, SpeechFlags) { ::OSErr toRet = ::noErr; @autoreleasepool { //TODO: handle flags - ::Size textSize = BigEndianValue(textBytes); + Executor::ULONGINT textSize = CL(textBytes).get(); NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; NSString *aStr = [[NSString alloc] initWithBytes:textBuf length:textSize encoding:NSMacOSRomanStringEncoding]; if (![synth startSpeakingString:aStr]) { @@ -558,30 +571,30 @@ typedef NS_OPTIONS(SInt32, SpeechFlags) { } } - return BigEndianValue(toRet); + return CW(toRet).get(); } Executor::OSErr MacBridge::TextToPhonemes (Executor::SpeechChannel chan, const void *textBuf, Executor::ULONGINT textBytes, Executor::Handle phonemeBuf, GUEST *phonemeBytes) { - ::Size ExecSize = BigEndianValue(Executor::GetHandleSize(phonemeBuf)); - ::Size textSize = BigEndianValue(textBytes); + Executor::ULONGINT ExecSize = CL(Executor::GetHandleSize(phonemeBuf)).get(); + Executor::ULONGINT textSize = CL(textBytes).get(); ::OSErr toRet = ::noErr; @autoreleasepool { NSSpeechSynthesizer *synth = synthesizerMap[chan->data[0]]; NSString *aStr = [[NSString alloc] initWithBytes:textBuf length:textSize encoding:NSMacOSRomanStringEncoding]; NSString *phonemes = [synth phonemesFromText:aStr]; [aStr release]; - Executor::LONGINT lengthInMacRoman = [phonemes lengthOfBytesUsingEncoding:NSMacOSRomanStringEncoding]; + Executor::LONGINT lengthInMacRoman = (Executor::LONGINT)[phonemes lengthOfBytesUsingEncoding:NSMacOSRomanStringEncoding]; if (lengthInMacRoman == 0) { return -224; } if (lengthInMacRoman > ExecSize) { - Executor::SetHandleSize(phonemeBuf, BigEndianValue(lengthInMacRoman)); + Executor::SetHandleSize(phonemeBuf, CL(lengthInMacRoman).get()); } strcpy((char*)MR(*phonemeBuf), [phonemes cStringUsingEncoding:NSMacOSRomanStringEncoding]); *phonemeBytes = CL(lengthInMacRoman); } - return BigEndianValue(toRet); + return CW(toRet).get(); } diff --git a/src/SpeechManager.cpp b/src/SpeechManager.cpp index 455e4d7e..0b1ef7f7 100644 --- a/src/SpeechManager.cpp +++ b/src/SpeechManager.cpp @@ -10,7 +10,7 @@ #include "SpeechManager.h" #include "rsys/error.h" -#ifdef MACOSX_ +#ifdef MACOSX #include "SpeechManager-MacBridge.h" #endif @@ -18,7 +18,7 @@ using namespace Executor; NumVersion Executor::C_SpeechManagerVersion() { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeechManagerVersion(); #else warning_unimplemented(NULL_STRING); @@ -28,7 +28,7 @@ NumVersion Executor::C_SpeechManagerVersion() int16_t Executor::C_SpeechBusy() { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeechBusy(); #else warning_unimplemented(NULL_STRING); @@ -38,7 +38,7 @@ int16_t Executor::C_SpeechBusy() int16_t Executor::C_SpeechBusySystemWide() { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeechBusySystemWide(); #else warning_unimplemented(NULL_STRING); @@ -48,7 +48,7 @@ int16_t Executor::C_SpeechBusySystemWide() OSErr Executor::C_CountVoices(int16_t *numVoices) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::CountVoices(numVoices); #else warning_unimplemented(NULL_STRING); @@ -58,7 +58,7 @@ OSErr Executor::C_CountVoices(int16_t *numVoices) OSErr Executor::C_DisposeSpeechChannel(SpeechChannel chan) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::DisposeSpeechChannel(chan); #else warning_unimplemented(NULL_STRING); @@ -68,7 +68,7 @@ OSErr Executor::C_DisposeSpeechChannel(SpeechChannel chan) OSErr Executor::C_SpeakString(Str255 textToBeSpoken) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeakString(textToBeSpoken); #else warning_unimplemented(NULL_STRING); @@ -78,7 +78,7 @@ OSErr Executor::C_SpeakString(Str255 textToBeSpoken) OSErr Executor::C_StopSpeech(SpeechChannel chan) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::StopSpeech(chan); #else warning_unimplemented(NULL_STRING); @@ -88,7 +88,7 @@ OSErr Executor::C_StopSpeech(SpeechChannel chan) OSErr Executor::C_ContinueSpeech(SpeechChannel chan) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::ContinueSpeech(chan); #else warning_unimplemented(NULL_STRING); @@ -98,7 +98,7 @@ OSErr Executor::C_ContinueSpeech(SpeechChannel chan) OSErr Executor::C_GetIndVoice(int16_t index, VoiceSpec *voice) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetIndVoice(index, voice); #else warning_unimplemented(NULL_STRING); @@ -108,7 +108,7 @@ OSErr Executor::C_GetIndVoice(int16_t index, VoiceSpec *voice) OSErr Executor::C_NewSpeechChannel(VoiceSpec *voice, SpeechChannel *chan) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::NewSpeechChannel(voice, chan); #else warning_unimplemented(NULL_STRING); @@ -118,7 +118,7 @@ OSErr Executor::C_NewSpeechChannel(VoiceSpec *voice, SpeechChannel *chan) OSErr Executor::C_StopSpeechAt(SpeechChannel chan, int32_t whereToStop) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::StopSpeechAt(chan, whereToStop); #else warning_unimplemented(NULL_STRING); @@ -128,7 +128,7 @@ OSErr Executor::C_StopSpeechAt(SpeechChannel chan, int32_t whereToStop) OSErr Executor::C_PauseSpeechAt(SpeechChannel chan, int32_t whereToPause) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::PauseSpeechAt(chan, whereToPause); #else warning_unimplemented(NULL_STRING); @@ -138,7 +138,7 @@ OSErr Executor::C_PauseSpeechAt(SpeechChannel chan, int32_t whereToPause) OSErr Executor::C_SetSpeechRate(SpeechChannel chan, Fixed rate) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SetSpeechRate(chan, rate); #else warning_unimplemented(NULL_STRING); @@ -148,7 +148,7 @@ OSErr Executor::C_SetSpeechRate(SpeechChannel chan, Fixed rate) OSErr Executor::C_GetSpeechRate(SpeechChannel chan, Fixed *rate) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetSpeechRate(chan, rate); #else warning_unimplemented(NULL_STRING); @@ -158,7 +158,7 @@ OSErr Executor::C_GetSpeechRate(SpeechChannel chan, Fixed *rate) OSErr Executor::C_SetSpeechPitch(SpeechChannel chan, Fixed pitch) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SetSpeechPitch(chan, pitch); #else warning_unimplemented(NULL_STRING); @@ -168,7 +168,7 @@ OSErr Executor::C_SetSpeechPitch(SpeechChannel chan, Fixed pitch) OSErr Executor::C_GetSpeechPitch(SpeechChannel chan, Fixed *pitch) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetSpeechPitch(chan, pitch); #else warning_unimplemented(NULL_STRING); @@ -178,7 +178,7 @@ OSErr Executor::C_GetSpeechPitch(SpeechChannel chan, Fixed *pitch) OSErr Executor::C_UseDictionary(SpeechChannel chan, Handle dictionary) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::UseDictionary(chan, dictionary); #else warning_unimplemented(NULL_STRING); @@ -188,7 +188,7 @@ OSErr Executor::C_UseDictionary(SpeechChannel chan, Handle dictionary) OSErr Executor::C_MakeVoiceSpec(OSType creator, OSType id, VoiceSpec *voice) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::MakeVoiceSpec(creator, id, voice); #else warning_unimplemented(NULL_STRING); @@ -200,7 +200,7 @@ OSErr Executor::C_GetVoiceDescription(const VoiceSpec *voice, VoiceDescription *info, LONGINT infoLength) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetVoiceDescription(voice, info, infoLength); #else warning_unimplemented(NULL_STRING); @@ -211,7 +211,7 @@ OSErr Executor::C_GetVoiceDescription(const VoiceSpec *voice, OSErr Executor::C_GetVoiceInfo(const VoiceSpec *voice, OSType selector, void *voiceInfo) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetVoiceInfo(voice, selector, voiceInfo); #else warning_unimplemented(NULL_STRING); @@ -222,7 +222,7 @@ OSErr Executor::C_GetVoiceInfo(const VoiceSpec *voice, OSType selector, OSErr Executor::C_SpeakText(SpeechChannel chan, const void *textBuf, ULONGINT textBytes) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeakText(chan, textBuf, textBytes); #else warning_unimplemented(NULL_STRING); @@ -233,7 +233,7 @@ OSErr Executor::C_SpeakText(SpeechChannel chan, const void *textBuf, OSErr Executor::C_SetSpeechInfo(SpeechChannel chan, OSType selector, const void *speechInfo) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SetSpeechInfo(chan, selector, speechInfo); #else warning_unimplemented(NULL_STRING); @@ -244,7 +244,7 @@ OSErr Executor::C_SetSpeechInfo(SpeechChannel chan, OSType selector, OSErr Executor::C_GetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::GetSpeechInfo(chan, selector, speechInfo); #else warning_unimplemented(NULL_STRING); @@ -255,7 +255,7 @@ OSErr Executor::C_GetSpeechInfo(SpeechChannel chan, OSType selector, OSErr Executor::C_SpeakBuffer(SpeechChannel chan, const void *textBuf, ULONGINT textBytes, int32_t controlFlags) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::SpeakBuffer(chan, textBuf, textBytes, controlFlags); #else warning_unimplemented(NULL_STRING); @@ -267,7 +267,7 @@ OSErr Executor::C_TextToPhonemes(SpeechChannel chan, const void *textBuf, ULONGINT textBytes, Handle phonemeBuf, GUEST *phonemeBytes) { -#ifdef MACOSX_ +#ifdef MACOSX return MacBridge::TextToPhonemes(chan, textBuf, textBytes, phonemeBuf, phonemeBytes); #else warning_unimplemented(NULL_STRING); From 021fa4b57a691057747e00dcf2c3fa66ab8fcd84 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 11 Jan 2018 23:20:00 +0100 Subject: [PATCH 02/88] hunt down a few instances of non-standard ({...}) macros (gcc extension) --- src/AE_desc.cpp | 3 +- src/AE_hdlr.cpp | 19 ++++------- src/aboutbox.cpp | 15 ++------- src/config/os/win32/win_serial.cpp | 31 +++++++++--------- src/dialCreate.cpp | 4 +-- src/include/AppleEvents.h | 4 +-- src/include/rsys/itm.h | 4 +-- src/include/rsys/mman.h | 52 +++++++++++++++--------------- 8 files changed, 59 insertions(+), 73 deletions(-) diff --git a/src/AE_desc.cpp b/src/AE_desc.cpp index b0adfe90..7c41d587 100644 --- a/src/AE_desc.cpp +++ b/src/AE_desc.cpp @@ -9,6 +9,7 @@ #include "rsys/mman.h" #include "rsys/apple_events.h" +#include using namespace Executor; @@ -564,7 +565,7 @@ ae_desc_to_ptr(descriptor_t *desc, desc_data = DESC_DATA(desc); desc_size = GetHandleSize(desc_data); - copy_size = MIN(desc_size, max_size); + copy_size = std::min(desc_size, max_size); memcpy(data, STARH(desc_data), copy_size); diff --git a/src/AE_hdlr.cpp b/src/AE_hdlr.cpp index be89d5bc..2dae07f4 100644 --- a/src/AE_hdlr.cpp +++ b/src/AE_hdlr.cpp @@ -13,19 +13,12 @@ using namespace Executor; -#define hdlr_table(system_p, class) \ - ({ \ - AE_info_t *info; \ - AE_zone_tables_h zone_tables; \ - \ - info = MR(LM(AE_info)); \ - \ - zone_tables = ((system_p) \ - ? MR(info->system_zone_tables) \ - : MR(info->appl_zone_tables)); \ - \ - HxP(zone_tables, class##_hdlr_table); \ - }) +inline AE_zone_tables_h get_zone_tables(bool system_p) +{ + auto info = MR(LM(AE_info)); + return system_p ? MR(info->system_zone_tables) : MR(info->appl_zone_tables); +} +#define hdlr_table(system_p, class) HxP(get_zone_tables(system_p), class##_hdlr_table) void Executor::AE_init(void) { diff --git a/src/aboutbox.cpp b/src/aboutbox.cpp index c2e2fbd9..a8ec45dd 100644 --- a/src/aboutbox.cpp +++ b/src/aboutbox.cpp @@ -623,17 +623,6 @@ event_loop(bool executor_p) } break; -#define _FindControl(arg0, arg1, arg2) \ - ({ \ - int16_t retval; \ - GUEST bogo_c; \ - \ - retval = FindControl(arg0, arg1, &bogo_c); \ - *(arg2) = MR(bogo_c); \ - \ - retval; \ - }) - case mouseDown: { Point local_pt; @@ -644,7 +633,9 @@ event_loop(bool executor_p) GlobalToLocal(&tmpPt); local_pt = tmpPt.get(); - control_p = _FindControl(local_pt, about_box, &c); + GUEST bogo_c; + control_p = _FindControl(local_pt, about_box, &bogo_c); + c = MR(bogo_c); if(!control_p) SysBeep(1); else diff --git a/src/config/os/win32/win_serial.cpp b/src/config/os/win32/win_serial.cpp index 5a6573d1..3d1c5ef7 100644 --- a/src/config/os/win32/win_serial.cpp +++ b/src/config/os/win32/win_serial.cpp @@ -23,21 +23,22 @@ enum * It uses the gcc-specific construct of ({ ... }) */ -#define LOOKUP_KEY(valp, thekey, map) \ - ({ \ - int i; \ - int retval; \ - \ - retval = PARAMETER_ERROR; \ - for(i = 0; i < (int)NELEM(map); ++i) \ - if(map[i].key == thekey) \ - { \ - *valp = map[i].val; \ - retval = 0; \ - break; \ - } \ - retval; \ - }) +template +int LOOKUP_KEY(ValType *valp, KeyType thekey, const MapType (&map)[n]) +{ + int i; + int retval; + + retval = PARAMETER_ERROR; + for(i = 0; i < n; ++i) + if(map[i].key == thekey) + { + *valp = map[i].val; + retval = 0; + break; + } + return retval; +} static struct { diff --git a/src/dialCreate.cpp b/src/dialCreate.cpp index 5a083597..a2f726ed 100644 --- a/src/dialCreate.cpp +++ b/src/dialCreate.cpp @@ -28,12 +28,12 @@ using namespace Executor; #define _PtrToHand(ptr, hand, len) \ - ((void)({ \ + do { \ Handle __temp_handle; \ \ PtrToHand((Ptr)(ptr), &__temp_handle, len); \ *(hand) = RM(__temp_handle); \ - })) + } while(0) void Executor::dialog_create_item(DialogPeek dp, itmp dst, itmp src, int item_no, Point base_pt) diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index cc45c808..674585f7 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -240,13 +240,13 @@ extern bool application_accepts_open_app_aevt_p; /* error codes */ #define AE_RETURN_ERROR(error) \ - ({ \ + do { \ OSErr _error_ = (error); \ \ if(_error_ != noErr) \ warning_unexpected("error `%d'", _error_); \ return _error_; \ - }) + } while(0) enum { diff --git a/src/include/rsys/itm.h b/src/include/rsys/itm.h index 2af50c0e..830dd119 100644 --- a/src/include/rsys/itm.h +++ b/src/include/rsys/itm.h @@ -132,9 +132,9 @@ extern void dialog_draw_item(DialogPtr dp, itmp itemp, int itemno); ((GUEST *)((itemp) + 1)) #define BUMPIP(ip) \ - ((void)({ \ + do { \ (ip) = (itmp)((char *)(ip) + ITEM_LEN(ip)); \ - })) + } while(0) typedef void (*soundprocp)(INTEGER sound); diff --git a/src/include/rsys/mman.h b/src/include/rsys/mman.h index 794d3b05..6e3eb25b 100644 --- a/src/include/rsys/mman.h +++ b/src/include/rsys/mman.h @@ -119,23 +119,23 @@ class TheZoneGuard * gdID, CWC (14)); */ #define HASSIGN_1(h, f1, v1) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(STARH(h)) _hp = STARH(h); \ _hp->f1 = _v1; \ - }) + } while(0) #define HASSIGN_2(h, f1, v1, f2, v2) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(STARH(h)) _hp = STARH(h); \ _hp->f1 = _v1; \ _hp->f2 = _v2; \ - }) + } while(0) #define HASSIGN_3(h, f1, v1, f2, v2, f3, v3) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -143,10 +143,10 @@ class TheZoneGuard _hp->f1 = _v1; \ _hp->f2 = _v2; \ _hp->f3 = _v3; \ - }) + } while(0) #define HASSIGN_4(h, f1, v1, f2, v2, f3, v3, f4, v4) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -156,10 +156,10 @@ class TheZoneGuard _hp->f2 = _v2; \ _hp->f3 = _v3; \ _hp->f4 = _v4; \ - }) + } while(0) #define HASSIGN_5(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -171,10 +171,10 @@ class TheZoneGuard _hp->f3 = _v3; \ _hp->f4 = _v4; \ _hp->f5 = _v5; \ - }) + } while(0) #define HASSIGN_6(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -188,11 +188,11 @@ class TheZoneGuard _hp->f4 = (decltype(_hp->f4))_v4; \ _hp->f5 = _v5; \ _hp->f6 = _v6; \ - }) + } while(0) #define HASSIGN_7(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -208,11 +208,11 @@ class TheZoneGuard _hp->f5 = _v5; \ _hp->f6 = _v6; \ _hp->f7 = _v7; \ - }) + } while(0) #define HASSIGN_10(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -234,12 +234,12 @@ class TheZoneGuard _hp->f8 = _v8; \ _hp->f9 = _v9; \ _hp->f10 = _v10; \ - }) + } while(0) #define HASSIGN_11(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10, \ f11, v11) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -263,12 +263,12 @@ class TheZoneGuard _hp->f9 = (decltype(_hp->f9))_v9; \ _hp->f10 = (decltype(_hp->f10))_v10; \ _hp->f11 = _v11; \ - }) + } while(0) #define HASSIGN_12(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10, \ f11, v11, f12, v12) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -294,12 +294,12 @@ class TheZoneGuard _hp->f10 = _v10; \ _hp->f11 = _v11; \ _hp->f12 = _v12; \ - }) + } while(0) #define HASSIGN_13(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10, \ f11, v11, f12, v12, f13, v13) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -327,12 +327,12 @@ class TheZoneGuard _hp->f11 = _v11; \ _hp->f12 = _v12; \ _hp->f13 = _v13; \ - }) + } while(0) #define HASSIGN_14(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10, \ f11, v11, f12, v12, f13, v13, f14, v14) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -362,13 +362,13 @@ class TheZoneGuard _hp->f12 = _v12; \ _hp->f13 = _v13; \ _hp->f14 = _v14; \ - }) + } while(0) #define HASSIGN_15(h, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, \ f6, v6, f7, v7, f8, v8, f9, v9, f10, v10, \ f11, v11, f12, v12, f13, v13, f14, v14, \ f15, v15) \ - ({ \ + do { \ decltype(v1) _v1 = (v1); \ decltype(v2) _v2 = (v2); \ decltype(v3) _v3 = (v3); \ @@ -400,7 +400,7 @@ class TheZoneGuard _hp->f13 = _v13; \ _hp->f14 = _v14; \ _hp->f15 = _v15; \ - }) + } while(0) class HLockGuard { From 503094845869df6a0ff6b50facdaed2e2db99786 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 14:26:21 +0100 Subject: [PATCH 03/88] fix check_structs warnings --- src/check_structs.cpp | 79 +++++++++++++++++----------------- src/include/Finder.h | 1 + src/include/OSEvent.h | 3 +- src/include/PPC.h | 19 +++++++- src/include/ScriptMgr.h | 2 +- src/include/Serial.h | 2 + src/include/SoundMgr.h | 10 ++--- src/include/rsys/cfm.h | 15 +++---- src/include/rsys/screen-dump.h | 4 +- 9 files changed, 76 insertions(+), 59 deletions(-) diff --git a/src/check_structs.cpp b/src/check_structs.cpp index 66e63a07..c97d58b1 100644 --- a/src/check_structs.cpp +++ b/src/check_structs.cpp @@ -159,7 +159,7 @@ void Executor::check_structs(void) check(AuxCtlRec, 22); /* CQuickDraw.h */ - check(ITab, 7); + check(ITab, 8); check(SProcRec, 8); check(CProcRec, 8); check(GDevice, 62); @@ -174,7 +174,7 @@ void Executor::check_structs(void) /* DeskMgr.h has no structs or unions */ /* DeviceMgr.h */ - check(ramdriver, 19); + check(ramdriver, 20); check(DCtlEntry, 40); /* DialogMgr.h */ @@ -226,7 +226,7 @@ void Executor::check_structs(void) check(FSSpec, 70); /* Finder.h */ - check(DTPBRec, 102); + check(DTPBRec, 104); /* FontMgr.h */ check(FMetricRec, 20); @@ -269,8 +269,7 @@ void Executor::check_structs(void) /* OSEvent.h */ check(EvQEl, 22); - check(size_info_t, 18); - check(TargetID, 179); + check(TargetID, 252); check(HighLevelEventMsg, 36); /* OSUtil.h */ @@ -282,8 +281,8 @@ void Executor::check_structs(void) /* Package.h has no structs or unions */ /* PPC.h */ - check(LocationNameRec, 35); - check(PPCPortRec, 70); + check(LocationNameRec, 104); + check(PPCPortRec, 72); /* PrintMgr.h */ check(TPrPort, 178); @@ -344,10 +343,10 @@ void Executor::check_structs(void) /* ScriptMgr.h */ check(DateCacheRec, 512); check(LongDateRec, 28); - check(NumFormatStringRec, 255); - check(WideChar, 4); - check(WideCharArr, 42); - check(NumberParts, 334); + check(NumFormatStringRec, 256); + check(WideChar, 2); + check(WideCharArr, 22); + check(NumberParts, 172); check(Extended80, 10); check(ToggleResults, 2); check(LongDateField, 1); @@ -359,12 +358,12 @@ void Executor::check_structs(void) /* Serial.h */ check(SerShk, 8); - check(SerStaRec, 6); + check(SerStaRec, 8); /* ShutDown.h has no structs or unions */ /* SoundDvr.h */ - check(FFSynthRec, 30007); + check(FFSynthRec, 30008); check(Tone, 6); check(SWSynthRec, 30008); check(FTSoundRec, 50); @@ -373,10 +372,10 @@ void Executor::check_structs(void) /* SoundMgr.h */ check(SndCommand, 8); check(SndChannel, 1060); - check(soundbuffer_t, 23); - check(SoundHeader, 22); - check(ExtSoundHeader, 62); - check(SndDoubleBuffer, 16); + check(soundbuffer_t, 24); + check(SoundHeader, 24); + check(ExtSoundHeader, 66); + check(SndDoubleBuffer, 18); check(SndDoubleBufferHeader, 24); check(SCStatus, 24); @@ -431,9 +430,9 @@ void Executor::check_structs(void) /* rsys/alias.h */ check(Str27, 28); check(alias_head_t, 150); - check(alias_parent_t, 3); + check(alias_parent_t, 4); check(alias_unknown_000100_t, 10); - check(alias_fullpath_t, 3); + check(alias_fullpath_t, 4); check(alias_tail_t, 170); check(alias_parsed_t, 20); @@ -445,17 +444,17 @@ void Executor::check_structs(void) /* rsys/cfm.h */ check(cfrg_resource_t, 32); - check(cfir_t, 43); - check(MemFragment, 9); + check(cfir_t, 44); + check(MemFragment, 12); check(DiskFragment, 12); - check(SegmentedFragment, 10); + check(SegmentedFragment, 12); check(FragmentLocator, 16); - check(InitBlock, 44); + check(InitBlock, 36); check(section_info_t, 16); check(CFragConnection_t, 28); check(lib_t, 12); check(CFragClosure_t, 4); - check(map_entry_t, 8); + //check(map_entry_t, 8); // not a GUEST struct, contains native pointers /* rsys/cquick.h */ check(GrafVars, 26); @@ -463,7 +462,7 @@ void Executor::check_structs(void) /* rsys/ctl.h */ check(struct popup_data, 12); check(thumbstr, 18); - check(contrlrestype, 23); + check(contrlrestype, 24); check(struct lsastr, 18); /* rsys/emustubs.h */ @@ -485,10 +484,10 @@ void Executor::check_structs(void) /* rsys/file.h */ check(hfs_access_t, 16); - check(DrvQExtra, 46); + //check(DrvQExtra, 46); // not a GUEST struct, contains native pointers check(fcbrec, 94); check(fcbhidden, 32714); - check(VCBExtra, 202); + //check(VCBExtra, 202); // not a GUEST struct, contains native pointers check(getvolparams_info_t, 20); /* rsys/float.h */ @@ -546,12 +545,12 @@ void Executor::check_structs(void) check(HFSPlusAttrExtents, 72); /* rsys/icon.h */ - check(cotton_suite_layout_t, 26); + //check(cotton_suite_layout_t, 26); // not a GUEST struct, contains native pointers /* rsys/itm.h */ check(itmstr, 14); check(altstr, 12); - check(dlogstr, 21); + check(dlogstr, 22); check(item_style_info_t, 20); check(item_color_info_t, 4); @@ -562,20 +561,20 @@ void Executor::check_structs(void) check(kchr_str, 262); /* rsys/launch.h */ - check(vers_t, 7); + check(vers_t, 8); /* rsys/menu.h */ check(mext, 5); check(muelem, 6); - check(menu_elt, 8); - check(menu_list, 7); + //check(menu_elt, 8); // not a GUEST struct, contains native pointers + check(menu_list, 8); check(menulist, 102); check(mbdfheader, 20); check(mbdfentry, 28); check(mct_res_t, 32); check(mbartype, 4); - check(startendpairs, 16); - check(table, 16); + //check(startendpairs, 16); // not a GUEST struct, contains native pointers + //check(table, 16); // not a GUEST struct, contains native pointers /* rsys/mixed_mode.h */ check(RoutineRecord, 20); @@ -614,7 +613,7 @@ void Executor::check_structs(void) check(size_resource_t, 10); /* rsys/quick.h */ - check(ccrsr_res, 147); + check(ccrsr_res, 148); /* rsys/resource.h */ check(reshead, 16); @@ -624,7 +623,7 @@ void Executor::check_structs(void) check(resref, 12); check(empty_resource_template_t, 286); check(dcomp_info_t, 16); - check(res_sorttype_t, 8); + //check(res_sorttype_t, 8); // not a GUEST struct, contains native pointers /* rsys/screen-dump.h */ check(struct header, 8); @@ -638,16 +637,16 @@ void Executor::check_structs(void) check(sersetbuf_t, 6); /* rsys/soundopts.h */ - check(ModifierStub, 47); /* was 52 before I PACKED the structure */ + //check(ModifierStub, 47); // not a GUEST struct, contains native pointers /* rsys/syserr.h */ check(myalerttab_t, 326); check(struct adef, 14); - check(struct tdef, 9); + check(struct tdef, 10); check(struct idef, 140); check(struct pdef, 8); check(struct bdef, 18); - check(struct sdef, 5); + check(struct sdef, 6); /* rsys/tesave.h */ check(tesave, 56); @@ -658,7 +657,7 @@ void Executor::check_structs(void) check(keymap, 644); /* rsys/wind.h */ - check(windrestype, 19); + check(windrestype, 20); /* config/arch/powerpc/ppc_stubs.h */ diff --git a/src/include/Finder.h b/src/include/Finder.h index e074d23b..78c12935 100644 --- a/src/include/Finder.h +++ b/src/include/Finder.h @@ -15,6 +15,7 @@ typedef struct DTPBRec GUEST_STRUCT; GUEST qLink; GUEST qType; + GUEST ioTrap; GUEST ioCmdAddr; GUEST ioCompletion; GUEST ioResult; diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index 653ef818..1f9cb482 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -76,9 +76,8 @@ struct SIZEResource GUEST minimum_size; }; -typedef struct size_info +typedef struct size_info /* executor-only struct */ { - GUEST_STRUCT; int16_t size_flags; int32_t preferred_size; int32_t minimum_size; diff --git a/src/include/PPC.h b/src/include/PPC.h index 78d401ec..9d8cd622 100644 --- a/src/include/PPC.h +++ b/src/include/PPC.h @@ -15,9 +15,25 @@ typedef int16_t PPCLocationKind; typedef struct EntityName { - /* #### bogus */ + Str32 objStr; + Str32 typeStr; + Str32 zoneStr; } EntityName; +struct PPCXTIAddress +{ + GUEST_STRUCT; + int16_t fAddressType; + uint8_t fAddress[96]; +}; +struct PPCAddrRec +{ + GUEST_STRUCT; + uint8_t Reserved[3]; + uint8_t xtiAddrLen; + PPCXTIAddress xtiAddr; +}; + struct LocationNameRec { GUEST_STRUCT; @@ -26,6 +42,7 @@ struct LocationNameRec union { GUEST npbEntity; GUEST npbType; + GUEST xtiType; } u; }; diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index 9e769a2d..ae58e6b1 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -178,7 +178,7 @@ struct NumFormatStringRec GUEST_STRUCT; GUEST fLength; GUEST fVersion; - GUEST data; + GUEST data; }; typedef union { diff --git a/src/include/Serial.h b/src/include/Serial.h index e9295045..253550ef 100644 --- a/src/include/Serial.h +++ b/src/include/Serial.h @@ -97,6 +97,8 @@ struct SerStaRec GUEST wrPend; GUEST ctsHold; GUEST xOffHold; + GUEST dsrHold; // unimplemented + GUEST modemStatus;// unimplemented }; const char *const MODEMINAME = ".AIn"; diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index dd187c67..fe16f035 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -9,7 +9,7 @@ */ #include "QuickDraw.h" - +#include "SANE.h" namespace Executor { struct SndCommand @@ -107,7 +107,7 @@ typedef struct _SoundHeader GUEST loopEnd; GUEST encode; GUEST baseFrequency; - GUEST sampleArea[0]; + GUEST sampleArea[1]; } SoundHeader, *SoundHeaderPtr; typedef struct _ExtSoundHeader @@ -121,7 +121,7 @@ typedef struct _ExtSoundHeader GUEST encode; GUEST baseFrequency; GUEST numFrames; - GUEST AIFFSampleRate; /* ??? should be Extended80 */ + GUEST AIFFSampleRate; /* ??? should be Extended80 */ GUEST MarkerChunk; GUEST instrumentChunks; GUEST AESRecording; @@ -130,7 +130,7 @@ typedef struct _ExtSoundHeader GUEST futureUse2; GUEST futureUse3; GUEST futureUse4; - GUEST sampleArea[0]; + GUEST sampleArea[1]; } ExtSoundHeader, *ExtSoundHeaderPtr; enum @@ -168,7 +168,7 @@ typedef struct SndDoubleBuffer GUEST dbNumFrames; GUEST dbFlags; GUEST dbUserInfo; - GUEST dbSoundData[0]; + GUEST dbSoundData[1]; } * SndDoubleBufferPtr; enum diff --git a/src/include/rsys/cfm.h b/src/include/rsys/cfm.h index f60f60f1..05cf40d6 100644 --- a/src/include/rsys/cfm.h +++ b/src/include/rsys/cfm.h @@ -115,6 +115,8 @@ struct MemFragment GUEST address; GUEST length; GUEST inPlace; + GUEST reservedA; + GUEST reservedB; }; struct DiskFragment @@ -131,6 +133,7 @@ struct SegmentedFragment GUEST fileSpec; GUEST rsrcType; GUEST rsrcID; + GUEST reservedA; }; typedef struct FragmentLocator @@ -149,12 +152,10 @@ struct InitBlock GUEST_STRUCT; GUEST contextID; GUEST closureID; + GUEST connectionID; GUEST fragLocator; - GUEST libName; - GUEST reserved4a; - GUEST reserved4b; - GUEST reserved4c; - GUEST reserved4d; + GUEST libName; + GUEST reserved4; }; typedef struct CFragConnection *ConnectionID; @@ -182,8 +183,7 @@ struct section_info_t GUEST length; GUEST ref_count; GUEST perms; - /* TODO: should probably pad this with three bytes and then PACK the entire - structure, but only after verifying that it works that way on a Mac. */ + GUEST pad[3];/* TODO: verifying that it works this way on a Mac. */ }; typedef struct CFragConnection @@ -235,7 +235,6 @@ typedef CFragClosure_t *CFragClosureID; struct map_entry_t { - GUEST_STRUCT; const char *symbol_name; void *value; }; diff --git a/src/include/rsys/screen-dump.h b/src/include/rsys/screen-dump.h index 3b4bd6ca..740fab2f 100644 --- a/src/include/rsys/screen-dump.h +++ b/src/include/rsys/screen-dump.h @@ -10,7 +10,7 @@ struct header int32_t ifd_offset; }; -struct directory_entry +struct __attribute__((packed)) directory_entry { int16_t tag; int16_t type; @@ -18,7 +18,7 @@ struct directory_entry int32_t value_offset; }; -struct ifd +struct __attribute__((packed)) ifd { int16_t count; struct directory_entry entries[1]; From e07fd7dabf8bdac915181fa9bae2b7362103090b Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 14:36:02 +0100 Subject: [PATCH 04/88] PERSONALITY_HACK to i386, on x86_64-linux it just causes check_structs warnings to be printed twice. --- src/config/arch/i386/i386.h | 3 +++ src/main.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/config/arch/i386/i386.h b/src/config/arch/i386/i386.h index caa9d9ed..caa1c39a 100644 --- a/src/config/arch/i386/i386.h +++ b/src/config/arch/i386/i386.h @@ -7,6 +7,9 @@ #define i386 #endif + // need to execute autogenerated code on linux +#define PERSONALITY_HACK + /* * Technically, it's possible to run Linux on a 386. It might even * be possible to do the same with Windows 95. However, I don't think diff --git a/src/main.cpp b/src/main.cpp index c5fae04e..430bb9f3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -959,8 +959,7 @@ win_drive_to_bit(const char *drive_namep) } #endif -#if defined(LINUX) -#define PERSONALITY_HACK +#if defined(LINUX) && defined(PERSONALITY_HACK) #include #define READ_IMPLIES_EXEC 0x0400000 #endif @@ -989,9 +988,12 @@ int main(int argc, char **argv) }; string arg; -#if defined(PERSONALITY_HACK) +#if defined(LINUX) && defined(PERSONALITY_HACK) int pers; + // TODO: figure out how much of this is still necessary. + // MMAP_PAGE_ZERO should be unnecessary now, + // but the 32-bit optimized assembly stuff might need READ_IMPLIES_EXEC. pers = personality(0xffffffff); if((pers & MMAP_PAGE_ZERO) == 0) { From c7692a03f869308d87b8815be877b068153416f9 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 14:44:11 +0100 Subject: [PATCH 05/88] unbreak ({...}) hunt (commit 021fa4b57a691057747e00dcf2c3fa66ab8fcd84) --- src/aboutbox.cpp | 2 +- src/include/rsys/itm.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/aboutbox.cpp b/src/aboutbox.cpp index a8ec45dd..1a1e18b7 100644 --- a/src/aboutbox.cpp +++ b/src/aboutbox.cpp @@ -634,7 +634,7 @@ event_loop(bool executor_p) local_pt = tmpPt.get(); GUEST bogo_c; - control_p = _FindControl(local_pt, about_box, &bogo_c); + control_p = FindControl(local_pt, about_box, &bogo_c); c = MR(bogo_c); if(!control_p) SysBeep(1); diff --git a/src/include/rsys/itm.h b/src/include/rsys/itm.h index 830dd119..eb47902f 100644 --- a/src/include/rsys/itm.h +++ b/src/include/rsys/itm.h @@ -131,10 +131,10 @@ extern void dialog_draw_item(DialogPtr dp, itmp itemp, int itemno); #define ITEM_DATA(itemp) \ ((GUEST *)((itemp) + 1)) -#define BUMPIP(ip) \ - do { \ - (ip) = (itmp)((char *)(ip) + ITEM_LEN(ip)); \ - } while(0) +inline void BUMPIP(itmp& ip) +{ + ip = (itmp)((char *)(ip) + ITEM_LEN(ip)); +} typedef void (*soundprocp)(INTEGER sound); From b49ae08b3a57f003187345a6b2458a1978ac20a8 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 16:36:45 +0100 Subject: [PATCH 06/88] qt let qt handle the modifier keys --- src/config/front-ends/qt/qt.cpp | 62 ++++++++++++++------------------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/src/config/front-ends/qt/qt.cpp b/src/config/front-ends/qt/qt.cpp index 606d2674..31eb7c8e 100644 --- a/src/config/front-ends/qt/qt.cpp +++ b/src/config/front-ends/qt/qt.cpp @@ -242,35 +242,6 @@ class ExecutorWindow : public QRasterWindow mousePressRelease(ev); } - bool isModifier(unsigned char virt, uint16_t *modstore) - { - /* Note: shift and control can be cleared if right* and left* are pressed */ - switch(virt) - { - case MKV_LEFTSHIFT: - case MKV_RIGHTSHIFT: - *modstore = shiftKey; - break; - case MKV_CAPS: - *modstore = alphaLock; - break; - case MKV_LEFTCNTL: - case MKV_RIGHTCNTL: - *modstore = ControlKey; - break; - case MKV_CLOVER: - *modstore = cmdKey; - break; - case MKV_LEFTOPTION: - case MKV_RIGHTOPTION: - *modstore = optionKey; - break; - default: - *modstore = 0; - return false; - } - return true; - } void keyEvent(QKeyEvent *ev, bool down_p) { unsigned char mkvkey; @@ -284,21 +255,40 @@ class ExecutorWindow : public QRasterWindow mkvkey = 0x89;// NOTAKEY else mkvkey = p->second; -#ifdef MACOSX - if(ev->nativeVirtualKey()) - mkvkey = ev->nativeVirtualKey(); -#endif if(ev->nativeScanCode() > 1 && ev->nativeScanCode() < NELEM(x_keycode_to_mac_virt)) { mkvkey = x_keycode_to_mac_virt[ev->nativeScanCode()]; } +#ifdef MACOSX + if(ev->nativeVirtualKey()) + mkvkey = ev->nativeVirtualKey(); +#endif mkvkey = ROMlib_right_to_left_key_map(mkvkey); - if(isModifier(mkvkey, &mod)) + keymod &= ~(shiftKey | ControlKey | cmdKey | optionKey); + Qt::KeyboardModifiers qtmods = ev->modifiers(); + if(qtmods & Qt::ShiftModifier) + keymod |= shiftKey; +#if true || defined(MACOSX) + if(qtmods & Qt::ControlModifier) + keymod |= cmdKey; + if(qtmods & Qt::AltModifier) + keymod |= optionKey; + if(qtmods & Qt::MetaModifier) + keymod |= ControlKey; +#else + if(qtmods & Qt::ControlModifier) + keymod |= ControlKey; + if(qtmods & Qt::AltModifier) + keymod |= cmdKey; + if(qtmods & Qt::MetaModifier) + keymod |= optionKey; +#endif + if(mkvkey == MKV_CAPS) { if(down_p) - keymod |= mod; + keymod |= alphaLock; else - keymod &= ~mod; + keymod &= ~alphaLock; } when = TickCount(); where.h = CW(LM(MouseLocation).h); From cb9b80b21f500b3c46111694405504f8dce4e5f3 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 16:37:15 +0100 Subject: [PATCH 07/88] rootless support for DragGrayRgn --- src/include/rsys/wind.h | 2 +- src/windMisc.cpp | 10 ++++++++++ src/windRootless.cpp | 8 +++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/include/rsys/wind.h b/src/include/rsys/wind.h index d3777098..f27d06b4 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -40,7 +40,7 @@ extern WindowPeek ROMlib_firstvisible(WindowPtr w); extern BOOLEAN ROMlib_window_zoomed(WindowPeek wp); extern void wind_color_init(void); -void ROMlib_rootless_update(); +void ROMlib_rootless_update(RgnHandle extra = nullptr); void ROMlib_rootless_openmenu(Rect r); void ROMlib_rootless_closemenu(); diff --git a/src/windMisc.cpp b/src/windMisc.cpp index 1b102b38..0361fec6 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -132,7 +132,10 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, PenPat(LM(DragPattern)); PenMode(notPatXor); if((drawn = PtInRect(p, slop))) + { PaintRgn(rgn); /* was Frame */ + ROMlib_rootless_update(rgn); + } while(!GetOSEvent(mUpMask, &ev)) { GlobalToLocal(&ev.where); @@ -155,6 +158,7 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, drawn = true; OffsetRgn(rgn, ep.h - p.h, ep.v - p.v); PaintRgn(rgn); + ROMlib_rootless_update(rgn); p.h = ep.h; p.v = ep.v; } @@ -162,7 +166,10 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, else { if(drawn) + { PaintRgn(rgn); + ROMlib_rootless_update(nullptr); + } drawn = false; } if(proc) @@ -192,7 +199,10 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, PenMode(notPatXor); } if(drawn) + { PaintRgn(rgn); + ROMlib_rootless_update(nullptr); + } SetPenState(&ps); DisposeRgn(rh); if(drawn) diff --git a/src/windRootless.cpp b/src/windRootless.cpp index f881b089..11e08248 100644 --- a/src/windRootless.cpp +++ b/src/windRootless.cpp @@ -7,14 +7,13 @@ using namespace Executor; - static std::vector rootlessMenus; -void Executor::ROMlib_rootless_update() +void Executor::ROMlib_rootless_update(RgnHandle extra) { std::cout << "ROMlib_rootless_update\n"; #ifdef VDRIVER_ROOTLESS - RgnHandle rgn = NewRgn();//MR(LM(GrayRgn)); + RgnHandle rgn = NewRgn(); SetRectRgn(rgn, 0,0, CW(screenBitsX.bounds.right), CW(LM(MBarHeight))); for(WindowPeek wp = MR(LM(WindowList)); wp; wp = WINDOW_NEXT_WINDOW(wp)) @@ -30,6 +29,9 @@ void Executor::ROMlib_rootless_update() RectRgn(tmp, &r); UnionRgn(rgn, tmp, rgn); } + if(extra) + UnionRgn(rgn, extra, rgn); + vdriver_set_rootless_region(rgn); DisposeRgn(tmp); DisposeRgn(rgn); From a6853c8bed9cffe3e9c257adfb14d3db342f6641 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 18:01:31 +0100 Subject: [PATCH 08/88] rootless: fix popup menus and beautify dragging --- src/include/rsys/wind.h | 1 + src/menuV.cpp | 3 ++- src/windInit.cpp | 13 ++++++++----- src/windMisc.cpp | 17 ++++++++++------- src/windRootless.cpp | 14 +++++++++++++- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/include/rsys/wind.h b/src/include/rsys/wind.h index f27d06b4..49bf5c62 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -43,6 +43,7 @@ extern void wind_color_init(void); void ROMlib_rootless_update(RgnHandle extra = nullptr); void ROMlib_rootless_openmenu(Rect r); void ROMlib_rootless_closemenu(); +bool ROMlib_rootless_drawdesk(RgnHandle desk); typedef void (*draghookp)(void); diff --git a/src/menuV.cpp b/src/menuV.cpp index d48c9f74..d7713ace 100644 --- a/src/menuV.cpp +++ b/src/menuV.cpp @@ -111,6 +111,7 @@ LONGINT Executor::C_PopUpMenuSelect(MenuHandle mh, INTEGER top, INTEGER left, ThePortGuard guard(MR(wmgr_port)); tempi = CW(item); MENUCALL(mPopUpRect, mh, &saver, p, &tempi); + ROMlib_rootless_openmenu(saver); LM(TopMenuItem) = tempi; where = ROMlib_mentosix(Hx(mh, menuID)); @@ -123,6 +124,6 @@ LONGINT Executor::C_PopUpMenuSelect(MenuHandle mh, INTEGER top, INTEGER left, DisposeRgn(PORT_CLIP_REGION(thePort)); PORT_CLIP_REGION_X(thePort) = saveclip; MBDFCALL(mbSaveAlt, 0, where); - + return ROMlib_menuhelper(mh, &saver, where, true, 1); } diff --git a/src/windInit.cpp b/src/windInit.cpp index 23923619..6c6187a8 100644 --- a/src/windInit.cpp +++ b/src/windInit.cpp @@ -115,11 +115,14 @@ void Executor::C_InitWindows() PenPat(black); MoveTo(0, CW(LM(MBarHeight)) - 1); Line(CW(GD_BOUNDS(MR(LM(TheGDevice))).right), 0); - if((USE_DESKCPAT_VAR & USE_DESKCPAT_BIT) - && PIXMAP_PIXEL_SIZE(GD_PMAP(MR(LM(MainDevice)))) > 2) - FillCRgn(MR(LM(GrayRgn)), MR(LM(DeskCPat))); - else - FillRgn(MR(LM(GrayRgn)), LM(DeskPattern)); + if(!ROMlib_rootless_drawdesk(MR(LM(GrayRgn)))) + { + if((USE_DESKCPAT_VAR & USE_DESKCPAT_BIT) + && PIXMAP_PIXEL_SIZE(GD_PMAP(MR(LM(MainDevice)))) > 2) + FillCRgn(MR(LM(GrayRgn)), MR(LM(DeskCPat))); + else + FillRgn(MR(LM(GrayRgn)), LM(DeskPattern)); + } DisposeRgn(mrgn); DisposeRgn(corners); CopyRgn(MR(LM(GrayRgn)), PORT_CLIP_REGION(MR(wmgr_port))); diff --git a/src/windMisc.cpp b/src/windMisc.cpp index 0361fec6..4a7cc5b2 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -313,15 +313,18 @@ void Executor::C_PaintOne(WindowPeek w, RgnHandle clobbered) } else if(!EmptyRgn(PORT_CLIP_REGION(MR(wmgr_port)))) { - if(LM(DeskHook)) - WINDCALLDESKHOOK(); - else + if(!ROMlib_rootless_drawdesk(clobbered)) { - if((USE_DESKCPAT_VAR & USE_DESKCPAT_BIT) - && PIXMAP_PIXEL_SIZE(GD_PMAP(MR(LM(MainDevice)))) > 2) - FillCRgn(clobbered, MR(LM(DeskCPat))); + if(LM(DeskHook)) + WINDCALLDESKHOOK(); else - FillRgn(clobbered, LM(DeskPattern)); + { + if((USE_DESKCPAT_VAR & USE_DESKCPAT_BIT) + && PIXMAP_PIXEL_SIZE(GD_PMAP(MR(LM(MainDevice)))) > 2) + FillCRgn(clobbered, MR(LM(DeskCPat))); + else + FillRgn(clobbered, LM(DeskPattern)); + } } } } diff --git a/src/windRootless.cpp b/src/windRootless.cpp index 11e08248..9dc03d7c 100644 --- a/src/windRootless.cpp +++ b/src/windRootless.cpp @@ -31,7 +31,7 @@ void Executor::ROMlib_rootless_update(RgnHandle extra) } if(extra) UnionRgn(rgn, extra, rgn); - + vdriver_set_rootless_region(rgn); DisposeRgn(tmp); DisposeRgn(rgn); @@ -54,7 +54,19 @@ void Executor::ROMlib_rootless_closemenu() { std::cout << "ROMlib_rootless_closemenu\n"; #ifdef VDRIVER_ROOTLESS + if(rootlessMenus.empty()) + return; rootlessMenus.pop_back(); ROMlib_rootless_update(); #endif } + +bool Executor::ROMlib_rootless_drawdesk(RgnHandle desk) +{ +#ifdef VDRIVER_ROOTLESS + EraseRgn(desk); + return true; +#else + return false; +#endif +} \ No newline at end of file From 251c076c96aa994fd7f68106ed9cdfaba8e686e5 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 13 Jan 2018 22:45:14 +0100 Subject: [PATCH 09/88] remove HOOKSAVEREGS/HOOKRESTOREREGS() macros (they were no-ops) --- src/ctlMouse.cpp | 2 -- src/dialHandle.cpp | 4 ---- src/include/rsys/hook.h | 2 -- src/listAccess.cpp | 2 -- src/listDisplay.cpp | 2 -- src/listMouse.cpp | 2 -- src/mmansubr.cpp | 2 -- src/prLowLevel.cpp | 4 ---- src/qHooks.cpp | 24 ------------------------ 9 files changed, 44 deletions(-) diff --git a/src/ctlMouse.cpp b/src/ctlMouse.cpp index b2689d98..96976370 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -71,14 +71,12 @@ typedef void (*actionp)(ControlHandle c, INTEGER part); static inline void CALLACTION(ControlHandle ch, INTEGER inpart, ProcPtr a) { ROMlib_hook(ctl_cdefnumber); - HOOKSAVEREGS(); if(a == (ProcPtr)P_ROMlib_mytrack) C_ROMlib_mytrack(ch, inpart); else if(a == (ProcPtr)P_ROMlib_stdftrack) C_ROMlib_stdftrack(ch, inpart); else CToPascalCall((void *)a, ctop(&C_ROMlib_mytrack), ch, inpart); - HOOKRESTOREREGS(); } INTEGER Executor::C_TrackControl(ControlHandle c, Point p, diff --git a/src/dialHandle.cpp b/src/dialHandle.cpp index 3f735b21..c0e458ba 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -91,9 +91,7 @@ ROMlib_CALLMODALPROC(DialogPtr dp, else { ROMlib_hook(dial_modalnumber); - HOOKSAVEREGS(); retval = CToPascalCall((void *)fp, ctop(&C_ROMlib_myfilt), dp, evtp, ip); - HOOKRESTOREREGS(); } return retval; } @@ -694,10 +692,8 @@ void Executor::BEEPER(INTEGER n) C_ROMlib_mysound((n)); else { - HOOKSAVEREGS(); ROMlib_hook(dial_soundprocnumber); Executor::CToPascalCall((void *)(soundprocp)MR(LM(DABeeper)), ctop(&C_ROMlib_mysound), n); - HOOKRESTOREREGS(); } } } diff --git a/src/include/rsys/hook.h b/src/include/rsys/hook.h index 3053d9da..ffb80b86 100644 --- a/src/include/rsys/hook.h +++ b/src/include/rsys/hook.h @@ -64,7 +64,5 @@ extern void ROMlib_hook(LONGINT hn); #define ROMlib_hook(hn) #endif -#define HOOKSAVEREGS() -#define HOOKRESTOREREGS() } #endif /* !_HOOK_H_ */ diff --git a/src/listAccess.cpp b/src/listAccess.cpp index 193c3131..57f3109f 100644 --- a/src/listAccess.cpp +++ b/src/listAccess.cpp @@ -109,9 +109,7 @@ static inline INTEGER Executor::ROMlib_CALLCMP(Ptr p1, Ptr p2, INTEGER l1, INTEG else { ROMlib_hook(list_cmpnumber); - HOOKSAVEREGS(); retval = CToPascalCall((void *)fp, ctop(&C_IUMagString), p1, p2, l1, l2); - HOOKRESTOREREGS(); } return retval; } diff --git a/src/listDisplay.cpp b/src/listDisplay.cpp index 3b4b4f19..963d4a5e 100644 --- a/src/listDisplay.cpp +++ b/src/listDisplay.cpp @@ -269,9 +269,7 @@ void Executor::ROMlib_listcall(INTEGER mess, BOOLEAN sel, Rect *rp, Cell cell, I else { ROMlib_hook(list_ldefnumber); - HOOKSAVEREGS(); CToPascalCall((void *)lp, ctop(&C_ldef0), mess, sel, rp, cell, off, len, lhand); - HOOKRESTOREREGS(); } } } diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 6886ce92..2cdc63a2 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -183,9 +183,7 @@ static inline BOOLEAN ROMlib_CALLCLICK(clickproc fp) BOOLEAN retval; ROMlib_hook(list_clicknumber); - HOOKSAVEREGS(); retval = CToPascalCall((void *)fp, ctop(&C_Button)); - HOOKRESTOREREGS(); return retval; } diff --git a/src/mmansubr.cpp b/src/mmansubr.cpp index 98b0024c..c4a2149d 100644 --- a/src/mmansubr.cpp +++ b/src/mmansubr.cpp @@ -970,9 +970,7 @@ OSErr Executor::ROMlib_relalloc(Size size, block_header_t **newblk) ZONE_ALLOC_PTR_X(current_zone) = CLC_NULL; ROMlib_hook(memory_gznumber); - HOOKSAVEREGS(); retval = current_zone->gzProc(size); - HOOKRESTOREREGS(); if(retval) ZONE_ALLOC_PTR_X(current_zone) = CLC_NULL; diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index 0644f1c6..f5f628b4 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -527,9 +527,7 @@ static inline TPPrDlg Executor::ROMlib_CALLPRINITPROC(THPrint hPrint, prinitproc retval = C_PrJobInit(hPrint); else { - HOOKSAVEREGS(); retval = (TPPrDlg)CToPascalCall((void *)fp, ctop(&C_PrStlInit), hPrint); - HOOKRESTOREREGS(); } return retval; } @@ -546,9 +544,7 @@ static inline void Executor::ROMlib_CALLPRITEMPROC(TPPrDlg prrecptr, INTEGER ite C_ROMlib_mystlproc((DialogPtr)prrecptr, item); else { - HOOKSAVEREGS(); CToPascalCall((void *)fp, ctop(&C_ROMlib_myjobproc), prrecptr, item); - HOOKRESTOREREGS(); } } diff --git a/src/qHooks.cpp b/src/qHooks.cpp index bc63a3f9..ae5e59d1 100644 --- a/src/qHooks.cpp +++ b/src/qHooks.cpp @@ -38,9 +38,7 @@ void Executor::ROMlib_CALLTEXT(INTEGER bc, Ptr bufp, Point num, Point den) && (pp = MR(gp->textProc)) != P_StdText) { ROMlib_hook(q_textprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdText), bc, bufp, num, den); - HOOKRESTOREREGS(); } else C_StdText(bc, bufp, num, den); @@ -56,9 +54,7 @@ void Executor::ROMlib_CALLLINE(Point p) && (pp = MR(gp->lineProc)) != P_StdLine) { ROMlib_hook(q_lineprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdLine), p); - HOOKRESTOREREGS(); } else C_StdLine(p); @@ -73,9 +69,7 @@ void Executor::ROMlib_CALLRECT(GrafVerb v, Rect *rp) && (pp = MR(gp->rectProc)) != P_StdRect) { ROMlib_hook(q_rectprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdRect), v, rp); - HOOKRESTOREREGS(); } else C_StdRect(v, rp); @@ -90,9 +84,7 @@ void Executor::ROMlib_CALLOVAL(GrafVerb v, Rect *rp) && (pp = MR(gp->ovalProc)) != P_StdOval) { ROMlib_hook(q_ovalprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdOval), v, rp); - HOOKRESTOREREGS(); } else C_StdOval(v, rp); @@ -107,9 +99,7 @@ void Executor::ROMlib_CALLRRECT(GrafVerb v, Rect *rp, INTEGER ow, INTEGER oh) && (pp = MR(gp->rRectProc)) != P_StdRRect) { ROMlib_hook(q_rrectprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdRRect), v, rp, ow, oh); - HOOKRESTOREREGS(); } else C_StdRRect(v, rp, ow, oh); @@ -124,9 +114,7 @@ void Executor::ROMlib_CALLARC(GrafVerb v, Rect *rp, INTEGER starta, INTEGER arca && (pp = MR(gp->arcProc)) != P_StdArc) { ROMlib_hook(q_arcprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdArc), v, rp, starta, arca); - HOOKRESTOREREGS(); } else C_StdArc(v, rp, starta, arca); @@ -141,9 +129,7 @@ void Executor::ROMlib_CALLRGN(GrafVerb v, RgnHandle rh) && (pp = MR(gp->rgnProc)) != P_StdRgn) { ROMlib_hook(q_rgnprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdRgn), v, rh); - HOOKRESTOREREGS(); } else C_StdRgn(v, rh); @@ -158,9 +144,7 @@ void Executor::ROMlib_CALLPOLY(GrafVerb v, PolyHandle rh) && (pp = MR(gp->polyProc)) != P_StdPoly) { ROMlib_hook(q_polyprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdPoly), v, rh); - HOOKRESTOREREGS(); } else C_StdPoly(v, rh); @@ -176,9 +160,7 @@ void Executor::ROMlib_CALLBITS(BitMap *bmp, const Rect *srcrp, const Rect *dstrp && (pp = MR(gp->bitsProc)) != P_StdBits) { ROMlib_hook(q_bitsprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdBits), bmp, srcrp, dstrp, mode, maskrh); - HOOKRESTOREREGS(); } else C_StdBits(bmp, srcrp, dstrp, mode, maskrh); @@ -193,9 +175,7 @@ void Executor::ROMlib_CALLCOMMENT(INTEGER kind, INTEGER size, Handle datah) && (pp = MR(gp->commentProc)) != P_StdComment) { ROMlib_hook(q_commentprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdComment), kind, size, datah); - HOOKRESTOREREGS(); } else C_StdComment(kind, size, datah); @@ -213,10 +193,8 @@ Executor::ROMlib_CALLTXMEAS(INTEGER bc, Ptr bufp, GUEST *nump, GUESTtxMeasProc)) != P_StdTxMeas) { ROMlib_hook(q_txmeasprocnumber); - HOOKSAVEREGS(); retval = CToPascalCall((void *)pp, ctop(&C_StdTxMeas), bc, bufp, nump, denp, fip); - HOOKRESTOREREGS(); } else retval = C_StdTxMeas(bc, bufp, nump, denp, fip); @@ -232,9 +210,7 @@ void Executor::ROMlib_PICWRITE(Ptr addr, INTEGER count) && (pp = MR(gp->putPicProc)) != P_StdPutPic) { ROMlib_hook(q_putpicprocnumber); - HOOKSAVEREGS(); CToPascalCall((void *)pp, ctop(&C_StdPutPic), addr, count); - HOOKRESTOREREGS(); } else C_StdPutPic(addr, count); From efef41158cb78f154d6f4d496e116d55768c8d3e Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 01:43:38 +0100 Subject: [PATCH 10/88] start overhauling PascalTrap templates --- src/CMakeLists.txt | 2 +- src/emutraptables.cpp | 16 +-- src/functions.cpp | 3 + src/include/SysErr.h | 1 + src/include/rsys/common.h | 2 +- src/include/rsys/{pascal.h => functions.h} | 117 +++++++++++++-------- 6 files changed, 89 insertions(+), 52 deletions(-) create mode 100644 src/functions.cpp rename src/include/rsys/{pascal.h => functions.h} (75%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5fb7c36b..d85ee403 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -186,7 +186,7 @@ set(misc_sources desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp icon.cpp redrawscreen.cpp ini.cpp checkpoint.cpp qt.cpp paramline.c fauxdbm.cpp commtool.cpp cfm.cpp pef_hash.cpp interfacelib.cpp mixed_mode.cpp suffix_maps.cpp appearance.cpp lockrange.cpp - emutrap.cpp emutraptables.cpp emustubs.cpp unix_like.cpp parse.ypp check_structs.cpp + emutrap.cpp emutraptables.cpp emustubs.cpp functions.cpp unix_like.cpp parse.ypp check_structs.cpp executor.cpp crc.cpp) set(include_sources hintemplate.h diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 4ba4b430..fbe9d779 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -31,11 +31,11 @@ using namespace Executor; syn68k_addr_t Executor::tooltraptable[0x400]; /* Gets filled in at run time */ syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ -#define C_Pack9 _Unimplemented /* PPCBrowser */ -#define C_Pack10 _Unimplemented +#define _Pack9 _Unimplemented /* PPCBrowser */ +#define _Pack10 _Unimplemented -#define C_Pack13 _Unimplemented /* DB stuff */ -#define C_Pack1 _Unimplemented +#define _Pack13 _Unimplemented /* DB stuff */ +#define _Pack1 _Unimplemented #define _AddDrive _Unimplemented #define _RDrvrInstall _Unimplemented @@ -110,11 +110,11 @@ toolstuff_t Executor::toolstuff[0x400] = { { { (void *)&C_ShowDItem, ptoc(&C_ShowDItem) }, 0 }, unimplemented_toolstuff, unimplemented_toolstuff, - { { (void *)&C_Pack9, static_cast(-1) }, 0 }, - { { (void *)&C_Pack10, static_cast(-1) }, 0 }, + { { (void *)&_Pack9, static_cast(-1) }, 0 }, + { { (void *)&_Pack10, static_cast(-1) }, 0 }, { { (void *)&_Pack11, static_cast(-1) }, 0 }, { { (void *)&_Pack12, static_cast(-1) }, 0 }, - { { (void *)&C_Pack13, static_cast(-1) }, 0 }, + { { (void *)&_Pack13, static_cast(-1) }, 0 }, { { (void *)&_Pack14, static_cast(-1) }, 0 }, { { (void *)&_Pack15, static_cast(-1) }, 0 }, unimplemented_toolstuff, @@ -555,7 +555,7 @@ toolstuff_t Executor::toolstuff[0x400] = { { { (void *)&C_InitPack, ptoc(&C_InitPack) }, 0 }, { { (void *)&C_InitAllPacks, ptoc(&C_InitAllPacks) }, 0 }, { { (void *)&_Pack0, static_cast(-1) }, 0 }, - { { (void *)&C_Pack1, static_cast(-1) }, 0 }, + { { (void *)&_Pack1, static_cast(-1) }, 0 }, { { (void *)&_Pack2, static_cast(-1) }, 0 }, { { (void *)&_Pack3, static_cast(-1) }, 0 }, { { (void *)&_Pack4, static_cast(-1) }, 0 }, diff --git a/src/functions.cpp b/src/functions.cpp new file mode 100644 index 00000000..d36d4188 --- /dev/null +++ b/src/functions.cpp @@ -0,0 +1,3 @@ +#define FUNCTION_WRAPPER_IMPLEMENTATION + +#include "rsys/everything.h" \ No newline at end of file diff --git a/src/include/SysErr.h b/src/include/SysErr.h index 5bcd312c..6959dbc2 100644 --- a/src/include/SysErr.h +++ b/src/include/SysErr.h @@ -21,6 +21,7 @@ const LowMemGlobal QDExist { 0x8F3 }; // SysError SysEqu.a (true); extern char syserr_msg[]; extern void C_SysError(short errorcode); +PASCAL_TRAP(SysError, 0xA9C9); } #endif /* !_SYSERR_H_ */ diff --git a/src/include/rsys/common.h b/src/include/rsys/common.h index 82bd8c65..d880ad22 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -21,7 +21,7 @@ #include -#include "rsys/pascal.h" +#include "rsys/functions.h" #include "ExMacTypes.h" #include "rsys/slash.h" #include "rsys/error.h" diff --git a/src/include/rsys/pascal.h b/src/include/rsys/functions.h similarity index 75% rename from src/include/rsys/pascal.h rename to src/include/rsys/functions.h index 21f5a933..94f33f6f 100644 --- a/src/include/rsys/pascal.h +++ b/src/include/rsys/functions.h @@ -103,46 +103,9 @@ constexpr CTOPCode ctop(F * = nullptr) return ptoc_internal::helper::ctop; } -template -class PascalTrap -{ -public: - using ProcPtr = Ret (*)(Args...); - - constexpr PascalTrap(ProcPtr impl, uint16_t trapno) - : f(impl) - , trapno(trapno) - { - } - - Ret operator()(Args... args) const - { - if((trapno & TOOLBIT) == 0) - return (*f)(args...); - else - { - syn68k_addr_t new_addr = tooltraptable[trapno & (NTOOLENTRIES - 1)]; - - if(new_addr == toolstuff[trapno & (NTOOLENTRIES - 1)].orig) - return (*f)(args...); - else - return (Ret)CToPascalCall(SYN68K_TO_US(new_addr), ctop(f), args...); - } - } - -private: - ProcPtr f; - uint16_t trapno; -}; - -template -constexpr PascalTrap pascalTrap(Ret (*impl)(Args...), uint16_t trapno) -{ - return PascalTrap(impl, trapno); -} -#define PASCAL_TRAP(NAME, TRAP) constexpr auto NAME = pascalTrap(&C_##NAME, TRAP) -#define PASCAL_FUNCTION(NAME) constexpr auto NAME = pascalTrap(&C_##NAME, 0) +//#define PASCAL_TRAP(NAME, TRAP) constexpr auto NAME = &C_##NAME +//#define PASCAL_FUNCTION(NAME) constexpr auto NAME = &C_##NAME template struct UPP; @@ -152,12 +115,12 @@ struct UPP { void *ptr; - UPP() = default; - UPP(std::nullptr_t) + constexpr UPP() = default; + constexpr UPP(std::nullptr_t) : ptr(nullptr) { } - explicit UPP(void *ptr) + explicit constexpr UPP(void *ptr) : ptr(ptr) { } @@ -228,6 +191,76 @@ UPP MR(GuestWrapper> p) { return p.get(); } + + +template +class PascalFunction {}; + +template +class PascalFunction +{ +public: + Ret operator()(Args... args) + { + return (*fptr)(args...); + } + + operator UPP() + { + return guestFP; + } +private: + UPP guestFP; +}; + + + + +template +class PascalTrap {}; + +template +class PascalTrap : public PascalFunction +{ +public: + using ProcPtr = Ret (*)(Args...); + + Ret operator()(Args... args) const + { + if((trapno & TOOLBIT) == 0) + return (*fptr)(args...); + else + { + // TODO + syn68k_addr_t new_addr = tooltraptable[trapno & (NTOOLENTRIES - 1)]; + + if(new_addr == toolstuff[trapno & (NTOOLENTRIES - 1)].orig) + return (*fptr)(args...); + else + return (Ret)CToPascalCall(SYN68K_TO_US(new_addr), ctop(fptr), args...); + } + } +}; + +#if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ + +#define CREATE_FUNCTION_WRAPPER(TYPE, NAME) \ + extern TYPE NAME; \ + extern template class TYPE + +#else + +#define CREATE_FUNCTION_WRAPPER(TYPE, NAME) \ + TYPE NAME; \ + template class TYPE + +#endif + +#define COMMA , +#define PASCAL_TRAP(NAME, TRAP) CREATE_FUNCTION_WRAPPER(PascalTrap, NAME) +#define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(PascalFunction, NAME) + + } #endif \ No newline at end of file From 0466a981fee13ad06247bd92a0a7a2366464cbf7 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 01:44:09 +0100 Subject: [PATCH 11/88] improve annotations for selector-based traps in header files --- src/include/AliasMgr.h | 18 ++--- src/include/AppleEvents.h | 120 ++++++++++++++++----------------- src/include/CQuickDraw.h | 110 +++++++++++++++--------------- src/include/DialogMgr.h | 8 +-- src/include/EditionMgr.h | 60 ++++++++--------- src/include/FileMgr.h | 30 ++++----- src/include/FontMgr.h | 14 ++-- src/include/Gestalt.h | 2 +- src/include/HelpMgr.h | 42 ++++++------ src/include/Iconutil.h | 60 ++++++++--------- src/include/IntlUtil.h | 38 +++++------ src/include/ListMgr.h | 50 +++++++------- src/include/MemoryMgr.h | 14 ++-- src/include/OSEvent.h | 6 +- src/include/PrintMgr.h | 46 ++++++------- src/include/ProcessMgr.h | 18 ++--- src/include/QuickTime.h | 42 ++++++------ src/include/ResourceMgr.h | 8 +-- src/include/SANE.h | 90 ++++++++++++------------- src/include/ScriptMgr.h | 84 +++++++++++------------ src/include/SegmentLdr.h | 1 - src/include/ShutDown.h | 8 +-- src/include/SoundMgr.h | 90 ++++++++++++------------- src/include/StdFilePkg.h | 16 ++--- src/include/TextEdit.h | 30 ++++----- src/include/rsys/functions.h | 3 +- util/transformtrapselectors.pl | 44 ++++++++++++ 27 files changed, 548 insertions(+), 504 deletions(-) create mode 100644 util/transformtrapselectors.pl diff --git a/src/include/AliasMgr.h b/src/include/AliasMgr.h index a8388175..517b705b 100644 --- a/src/include/AliasMgr.h +++ b/src/include/AliasMgr.h @@ -30,36 +30,36 @@ extern OSErr C_FindFolder(int16_t vRefNum, OSType folderType, Boolean createFolder, GUEST *foundVRefNum, GUEST *foundDirID); -PASCAL_FUNCTION(FindFolder); +PASCAL_SUBTRAP(FindFolder, 0xA823, AliasDispatch); extern OSErr C_NewAlias(FSSpecPtr fromFile, FSSpecPtr target, GUEST *alias); -PASCAL_FUNCTION(NewAlias); +PASCAL_SUBTRAP(NewAlias, 0xA823, AliasDispatch); extern OSErr C_NewAliasMinimal(FSSpecPtr target, GUEST *alias); -PASCAL_FUNCTION(NewAliasMinimal); +PASCAL_SUBTRAP(NewAliasMinimal, 0xA823, AliasDispatch); extern OSErr C_NewAliasMinimalFromFullPath(int16_t fullpathLength, Ptr fullpath, Str32 zoneName, Str31 serverName, GUEST *alias); -PASCAL_FUNCTION(NewAliasMinimalFromFullPath); +PASCAL_SUBTRAP(NewAliasMinimalFromFullPath, 0xA823, AliasDispatch); extern OSErr C_UpdateAlias(FSSpecPtr fromFile, FSSpecPtr target, AliasHandle alias, Boolean *wasChanged); -PASCAL_FUNCTION(UpdateAlias); +PASCAL_SUBTRAP(UpdateAlias, 0xA823, AliasDispatch); extern OSErr C_ResolveAlias(FSSpecPtr fromFile, AliasHandle alias, FSSpecPtr target, Boolean *wasAliased); -PASCAL_FUNCTION(ResolveAlias); +PASCAL_SUBTRAP(ResolveAlias, 0xA823, AliasDispatch); extern OSErr C_ResolveAliasFile(FSSpecPtr theSpec, Boolean resolveAliasChains, Boolean *targetIsFolder, Boolean *wasAliased); -PASCAL_FUNCTION(ResolveAliasFile); +PASCAL_SUBTRAP(ResolveAliasFile, 0xA823, AliasDispatch); extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, AliasHandle alias, int16_t *aliasCount, @@ -67,11 +67,11 @@ extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, Boolean *needsUpdate, AliasFilterProcPtr aliasFilter, Ptr yourDataPtr); -PASCAL_FUNCTION(MatchAlias); +PASCAL_SUBTRAP(MatchAlias, 0xA823, AliasDispatch); extern OSErr C_GetAliasInfo(AliasHandle alias, AliasTypeInfo index, Str63 theString); -PASCAL_FUNCTION(GetAliasInfo); +PASCAL_SUBTRAP(GetAliasInfo, 0xA823, AliasDispatch); } #endif diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 674585f7..3bd50e53 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -219,18 +219,18 @@ typedef AE_info_t *AE_info_ptr; extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8, GUEST *); -PASCAL_FUNCTION(_AE_hdlr_table_alloc); +PASCAL_SUBTRAP(_AE_hdlr_table_alloc, 0xA816, Pack8); extern OSErr C__AE_hdlr_delete(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *); -PASCAL_FUNCTION(_AE_hdlr_delete); +PASCAL_SUBTRAP(_AE_hdlr_delete, 0xA816, Pack8); extern OSErr C__AE_hdlr_lookup(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *, AE_hdlr_t *); -PASCAL_FUNCTION(_AE_hdlr_lookup); +PASCAL_SUBTRAP(_AE_hdlr_lookup, 0xA816, Pack8); extern OSErr C__AE_hdlr_install(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *, AE_hdlr_t *); -PASCAL_FUNCTION(_AE_hdlr_install); +PASCAL_SUBTRAP(_AE_hdlr_install, 0xA816, Pack8); /* private */ @@ -314,65 +314,65 @@ const LowMemGlobal AE_info { 0x2B6 }; // AppleEvents AEGizmo (true) extern OSErr C_AEGetCoercionHandler(DescType from_type, DescType to_type, GUEST *hdlr_out, GUEST *refcon_out, GUEST *from_type_is_desc_p_out, Boolean system_handler_p); -PASCAL_FUNCTION(AEGetCoercionHandler); +PASCAL_SUBTRAP(AEGetCoercionHandler, 0xA816, Pack8); extern OSErr C_AECreateDesc(DescType type, Ptr data, Size data_size, AEDesc *desc_out); -PASCAL_FUNCTION(AECreateDesc); +PASCAL_SUBTRAP(AECreateDesc, 0xA816, Pack8); extern OSErr C_AEDisposeDesc(AEDesc *desc); -PASCAL_FUNCTION(AEDisposeDesc); +PASCAL_SUBTRAP(AEDisposeDesc, 0xA816, Pack8); extern OSErr C_AECoerceDesc(AEDesc *desc, DescType result_type, AEDesc *desc_out); -PASCAL_FUNCTION(AECoerceDesc); +PASCAL_SUBTRAP(AECoerceDesc, 0xA816, Pack8); extern OSErr C_AEGetKeyPtr(AERecord *record, AEKeyword keyword, DescType desired_type, GUEST *type_out, Ptr data, Size max_size, GUEST *size_out); -PASCAL_FUNCTION(AEGetKeyPtr); +PASCAL_SUBTRAP(AEGetKeyPtr, 0xA816, Pack8); extern OSErr C_AEGetKeyDesc(AERecord *record, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_FUNCTION(AEGetKeyDesc); +PASCAL_SUBTRAP(AEGetKeyDesc, 0xA816, Pack8); extern OSErr C_AEPutKeyPtr(AERecord *record, AEKeyword keyword, DescType type, Ptr data, Size data_size); -PASCAL_FUNCTION(AEPutKeyPtr); +PASCAL_SUBTRAP(AEPutKeyPtr, 0xA816, Pack8); extern OSErr C_AEPutKeyDesc(AERecord *record, AEKeyword keyword, AEDesc *desc); -PASCAL_FUNCTION(AEPutKeyDesc); +PASCAL_SUBTRAP(AEPutKeyDesc, 0xA816, Pack8); /* extern OSErr C_AEDeleteParam(AppleEvent *evt, AEKeyword keyword); -PASCAL_FUNCTION(AEDeleteParam); +PASCAL_SUBTRAP(AEDeleteParam, 0xA816, Pack8); */ extern OSErr C_AEDeleteAttribute(AppleEvent *evt, AEKeyword keyword); -PASCAL_FUNCTION(AEDeleteAttribute); +PASCAL_SUBTRAP(AEDeleteAttribute, 0xA816, Pack8); extern OSErr C_AESizeOfKeyDesc(AERecord *record, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfKeyDesc); +PASCAL_SUBTRAP(AESizeOfKeyDesc, 0xA816, Pack8); extern OSErr C_AESetInteractionAllowed(AEInteractionAllowed level); -PASCAL_FUNCTION(AESetInteractionAllowed); +PASCAL_SUBTRAP(AESetInteractionAllowed, 0xA816, Pack8); extern OSErr C_AEResetTimer(AppleEvent *evt); -PASCAL_FUNCTION(AEResetTimer); +PASCAL_SUBTRAP(AEResetTimer, 0xA816, Pack8); extern OSErr C_AEGetTheCurrentEvent(AppleEvent *return_evt); -PASCAL_FUNCTION(AEGetTheCurrentEvent); +PASCAL_SUBTRAP(AEGetTheCurrentEvent, 0xA816, Pack8); extern OSErr C_AESetTheCurrentEvent(AppleEvent *evt); -PASCAL_FUNCTION(AESetTheCurrentEvent); +PASCAL_SUBTRAP(AESetTheCurrentEvent, 0xA816, Pack8); extern OSErr C_AESuspendTheCurrentEvent(AppleEvent *evt); -PASCAL_FUNCTION(AESuspendTheCurrentEvent); +PASCAL_SUBTRAP(AESuspendTheCurrentEvent, 0xA816, Pack8); extern OSErr C_AEResumeTheCurrentEvent(AppleEvent *evt, AppleEvent *reply, EventHandlerProcPtr dispatcher, int32_t refcon); -PASCAL_FUNCTION(AEResumeTheCurrentEvent); +PASCAL_SUBTRAP(AEResumeTheCurrentEvent, 0xA816, Pack8); /* extern OSErr C_AEProcessEvent(EventRecord *evt); @@ -380,81 +380,81 @@ PASCAL_FUNCTION(AEProcessEvent); */ extern OSErr C_AEGetInteractionAllowed(AEInteractionAllowed *return_level); -PASCAL_FUNCTION(AEGetInteractionAllowed); +PASCAL_SUBTRAP(AEGetInteractionAllowed, 0xA816, Pack8); extern OSErr C_AEDuplicateDesc(AEDesc *src, AEDesc *dst); -PASCAL_FUNCTION(AEDuplicateDesc); +PASCAL_SUBTRAP(AEDuplicateDesc, 0xA816, Pack8); extern OSErr C_AECountItems(AEDescList *list, GUEST *count_out); -PASCAL_FUNCTION(AECountItems); +PASCAL_SUBTRAP(AECountItems, 0xA816, Pack8); extern OSErr C_AEDeleteItem(AEDescList *list, int32_t index); -PASCAL_FUNCTION(AEDeleteItem); +PASCAL_SUBTRAP(AEDeleteItem, 0xA816, Pack8); extern OSErr C_AEDeleteKeyDesc(AERecord *record, AEKeyword keyword); -PASCAL_FUNCTION(AEDeleteKeyDesc); +PASCAL_SUBTRAP(AEDeleteKeyDesc, 0xA816, Pack8); extern OSErr C_AEInstallSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AEInstallSpecialHandler); +PASCAL_SUBTRAP(AEInstallSpecialHandler, 0xA816, Pack8); extern OSErr C_AERemoveSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveSpecialHandler); +PASCAL_SUBTRAP(AERemoveSpecialHandler, 0xA816, Pack8); extern OSErr C_AEGetSpecialHandler(AEKeyword function_class, GUEST *hdlr_out, Boolean system_handler_p); -PASCAL_FUNCTION(AEGetSpecialHandler); +PASCAL_SUBTRAP(AEGetSpecialHandler, 0xA816, Pack8); extern OSErr C_AESend(AppleEvent *evt, AppleEvent *reply, AESendMode send_mode, AESendPriority send_priority, int32_t timeout, IdleProcPtr idle_proc, EventFilterProcPtr filter_proc); -PASCAL_FUNCTION(AESend); +PASCAL_SUBTRAP(AESend, 0xA816, Pack8); extern OSErr C_AECoercePtr(DescType data_type, Ptr data, Size data_size, DescType result_type, AEDesc *desc_out); -PASCAL_FUNCTION(AECoercePtr); +PASCAL_SUBTRAP(AECoercePtr, 0xA816, Pack8); extern OSErr C_AEGetEventHandler(AEEventClass event_class, AEEventID event_id, GUEST *hdlr, GUEST *refcon, Boolean system_handler_p); -PASCAL_FUNCTION(AEGetEventHandler); +PASCAL_SUBTRAP(AEGetEventHandler, 0xA816, Pack8); extern OSErr C_AERemoveEventHandler(AEEventClass event_class, AEEventID event_id, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveEventHandler); +PASCAL_SUBTRAP(AERemoveEventHandler, 0xA816, Pack8); extern OSErr C_AEProcessAppleEvent(EventRecord *evt); -PASCAL_FUNCTION(AEProcessAppleEvent); +PASCAL_SUBTRAP(AEProcessAppleEvent, 0xA816, Pack8); extern OSErr C_AEPutDesc(AEDescList *list, int32_t index, AEDesc *desc); -PASCAL_FUNCTION(AEPutDesc); +PASCAL_SUBTRAP(AEPutDesc, 0xA816, Pack8); extern OSErr C_AEPutAttributePtr(AppleEvent *evt, AEKeyword keyword, DescType type, Ptr data, Size size); -PASCAL_FUNCTION(AEPutAttributePtr); +PASCAL_SUBTRAP(AEPutAttributePtr, 0xA816, Pack8); extern OSErr C_AEPutAttributeDesc(AppleEvent *evt, AEKeyword keyword, AEDesc *desc); -PASCAL_FUNCTION(AEPutAttributeDesc); +PASCAL_SUBTRAP(AEPutAttributeDesc, 0xA816, Pack8); extern OSErr C_AEGetNthPtr(AEDescList *list, int32_t index, DescType desired_type, GUEST *keyword_out, GUEST *type_out, Ptr data, int32_t max_size, GUEST *size_out); -PASCAL_FUNCTION(AEGetNthPtr); +PASCAL_SUBTRAP(AEGetNthPtr, 0xA816, Pack8); extern OSErr C_AEGetAttributePtr(AppleEvent *evt, AEKeyword keyword, DescType desired_type, GUEST *type_out, Ptr data, Size max_size, GUEST *size_out); -PASCAL_FUNCTION(AEGetAttributePtr); +PASCAL_SUBTRAP(AEGetAttributePtr, 0xA816, Pack8); extern OSErr C_AEGetArray(AEDescList *list, AEArrayType array_type, @@ -462,95 +462,95 @@ extern OSErr C_AEGetArray(AEDescList *list, GUEST *return_item_type, GUEST *return_item_size, GUEST *return_item_count); -PASCAL_FUNCTION(AEGetArray); +PASCAL_SUBTRAP(AEGetArray, 0xA816, Pack8); extern OSErr C_AECreateAppleEvent(AEEventClass event_class, AEEventID event_id, AEAddressDesc *target, int16_t return_id, int32_t transaction_id, AppleEvent *evt); -PASCAL_FUNCTION(AECreateAppleEvent); +PASCAL_SUBTRAP(AECreateAppleEvent, 0xA816, Pack8); extern OSErr C_AEInstallCoercionHandler(DescType from_type, DescType to_type, CoerceDescProcPtr hdlr, int32_t refcon, Boolean from_type_is_desc_p, Boolean system_handler_p); -PASCAL_FUNCTION(AEInstallCoercionHandler); +PASCAL_SUBTRAP(AEInstallCoercionHandler, 0xA816, Pack8); extern OSErr C_AEInstallEventHandler(AEEventClass event_class, AEEventID event_id, EventHandlerProcPtr hdlr, int32_t refcon, Boolean system_handler_p); -PASCAL_FUNCTION(AEInstallEventHandler); +PASCAL_SUBTRAP(AEInstallEventHandler, 0xA816, Pack8); extern OSErr C_AERemoveCoercionHandler(DescType from_type, DescType to_type, CoerceDescProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveCoercionHandler); +PASCAL_SUBTRAP(AERemoveCoercionHandler, 0xA816, Pack8); extern OSErr C_AEPutArray(AEDescList *list, AEArrayType type, AEArrayDataPointer array_data, DescType item_type, Size item_size, int32_t item_count); -PASCAL_FUNCTION(AEPutArray); +PASCAL_SUBTRAP(AEPutArray, 0xA816, Pack8); extern OSErr C_AECreateList(Ptr list_elt_prefix, Size list_elt_prefix_size, Boolean is_record_p, AEDescList *list_out); -PASCAL_FUNCTION(AECreateList); +PASCAL_SUBTRAP(AECreateList, 0xA816, Pack8); extern OSErr C_AEGetAttributeDesc(AppleEvent *evt, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_FUNCTION(AEGetAttributeDesc); +PASCAL_SUBTRAP(AEGetAttributeDesc, 0xA816, Pack8); extern OSErr C_AESizeOfAttribute(AppleEvent *evt, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfAttribute); +PASCAL_SUBTRAP(AESizeOfAttribute, 0xA816, Pack8); extern OSErr C_AEGetNthDesc(AEDescList *list, int32_t index, DescType desired_type, GUEST *keyword_out, AEDesc *desc_out); -PASCAL_FUNCTION(AEGetNthDesc); +PASCAL_SUBTRAP(AEGetNthDesc, 0xA816, Pack8); extern OSErr C_AESizeOfNthItem(AEDescList *list, int32_t index, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfNthItem); +PASCAL_SUBTRAP(AESizeOfNthItem, 0xA816, Pack8); extern OSErr C_AEPutPtr(AEDescList *list, int32_t index, DescType type, Ptr data, Size data_size); -PASCAL_FUNCTION(AEPutPtr); +PASCAL_SUBTRAP(AEPutPtr, 0xA816, Pack8); extern OSErr C_AEInteractWithUser(int32_t timeout, NMRecPtr nm_req, IdleProcPtr idle_proc); -PASCAL_FUNCTION(AEInteractWithUser); +PASCAL_SUBTRAP(AEInteractWithUser, 0xA816, Pack8); extern void AE_init(void); extern void AE_reinit(void); extern OSErr C_AEManagerInfo(GUEST *resultp); -PASCAL_FUNCTION(AEManagerInfo); +PASCAL_SUBTRAP(AEManagerInfo, 0xA816, Pack8); extern OSErr C_AEDisposeToken(AEDesc *theToken); -PASCAL_FUNCTION(AEDisposeToken); +PASCAL_SUBTRAP(AEDisposeToken, 0xA816, Pack8); extern OSErr C_AEREesolve(AEDesc *objectSpecifier, INTEGER callbackFlags, AEDesc *theToken); -PASCAL_FUNCTION(AEREesolve); +PASCAL_SUBTRAP(AEREesolve, 0xA816, Pack8); extern OSErr C_AERemoveObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AERemoveObjectAccessor); +PASCAL_SUBTRAP(AERemoveObjectAccessor, 0xA816, Pack8); extern OSErr C_AEInstallObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, LONGINT refcon, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AEInstallObjectAccessor); +PASCAL_SUBTRAP(AEInstallObjectAccessor, 0xA816, Pack8); extern OSErr C_AEGetObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr *theAccessor, LONGINT *accessorRefcon, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AEGetObjectAccessor); +PASCAL_SUBTRAP(AEGetObjectAccessor, 0xA816, Pack8); extern OSErr C_AECallObjectAccessor(DescType desiredClass, AEDesc *containerToken, DescType containerClass, DescType keyForm, AEDesc *keyData, AEDesc *theToken); -PASCAL_FUNCTION(AECallObjectAccessor); +PASCAL_SUBTRAP(AECallObjectAccessor, 0xA816, Pack8); extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myCountProc, ProcPtr myDisposeTokenProc, @@ -558,7 +558,7 @@ extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myMarkProc, ProcPtr myAdjustMarksProc, ProcPtr myGetErrDescProc); -PASCAL_FUNCTION(AESetObjectCallbacks); +PASCAL_SUBTRAP(AESetObjectCallbacks, 0xA816, Pack8); } #endif /* ! _AppleEvents_H_ */ diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index 74245b5f..c2062226 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -364,11 +364,11 @@ PASCAL_TRAP(DeviceLoop, 0xABCA); extern BOOLEAN C_TestDeviceAttribute(GDHandle, INTEGER); PASCAL_TRAP(TestDeviceAttribute, 0xAA2C); extern void C_ScreenRes(GUEST *, GUEST *); -PASCAL_FUNCTION(ScreenRes); +NOTRAP_FUNCTION(ScreenRes); extern INTEGER C_HasDepth(GDHandle, INTEGER, INTEGER, INTEGER); -PASCAL_FUNCTION(HasDepth); +PASCAL_SUBTRAP(HasDepth, 0xAAA2, PaletteDispatch); extern OSErr C_SetDepth(GDHandle, INTEGER, INTEGER, INTEGER); -PASCAL_FUNCTION(SetDepth); +PASCAL_SUBTRAP(SetDepth, 0xAAA2, PaletteDispatch); extern void C_MakeITable(CTabHandle, ITabHandle, INTEGER); PASCAL_TRAP(MakeITable, 0xAA39); @@ -417,7 +417,7 @@ extern void C_SetClientID(INTEGER); PASCAL_TRAP(SetClientID, 0xAA3C); extern BOOLEAN C_GetGray(GDHandle, RGBColor *, RGBColor *); -PASCAL_FUNCTION(GetGray); +PASCAL_SUBTRAP(GetGray, 0xAAA2, PaletteDispatch); extern PixPatHandle C_GetPixPat(INTEGER); PASCAL_TRAP(GetPixPat, 0xAA0C); @@ -431,23 +431,23 @@ extern CWindowPtr C_GetNewCWindow(INTEGER, Ptr, CWindowPtr); PASCAL_TRAP(GetNewCWindow, 0xAA46); extern void C_CMY2RGB(CMYColor *, RGBColor *); -PASCAL_FUNCTION(CMY2RGB); +PASCAL_SUBTRAP(CMY2RGB, 0xA82E, Pack12); extern void C_RGB2CMY(RGBColor *, CMYColor *); -PASCAL_FUNCTION(RGB2CMY); +PASCAL_SUBTRAP(RGB2CMY, 0xA82E, Pack12); extern void C_HSL2RGB(HSLColor *, RGBColor *); -PASCAL_FUNCTION(HSL2RGB); +PASCAL_SUBTRAP(HSL2RGB, 0xA82E, Pack12); extern void C_RGB2HSL(RGBColor *, HSLColor *); -PASCAL_FUNCTION(RGB2HSL); +PASCAL_SUBTRAP(RGB2HSL, 0xA82E, Pack12); extern void C_HSV2RGB(HSVColor *, RGBColor *); -PASCAL_FUNCTION(HSV2RGB); +PASCAL_SUBTRAP(HSV2RGB, 0xA82E, Pack12); extern void C_RGB2HSV(RGBColor *, HSVColor *); -PASCAL_FUNCTION(RGB2HSV); +PASCAL_SUBTRAP(RGB2HSV, 0xA82E, Pack12); extern SmallFract C_Fix2SmallFract(Fixed); -PASCAL_FUNCTION(Fix2SmallFract); +PASCAL_SUBTRAP(Fix2SmallFract, 0xA82E, Pack12); extern Fixed C_SmallFract2Fix(SmallFract); -PASCAL_FUNCTION(SmallFract2Fix); +PASCAL_SUBTRAP(SmallFract2Fix, 0xA82E, Pack12); extern BOOLEAN C_GetColor(Point, Str255, RGBColor *, RGBColor *); -PASCAL_FUNCTION(GetColor); +PASCAL_SUBTRAP(GetColor, 0xA82E, Pack12); extern CTabHandle C_GetCTable(INTEGER); PASCAL_TRAP(GetCTable, 0xAA18); @@ -465,7 +465,7 @@ PASCAL_TRAP(DisposePalette, 0xAA93); extern void C_ActivatePalette(WindowPtr); PASCAL_TRAP(ActivatePalette, 0xAA94); extern void C_SetPalette(WindowPtr, PaletteHandle, BOOLEAN); -PASCAL_FUNCTION(SetPalette); +NOTRAP_FUNCTION(SetPalette); extern void C_NSetPalette(WindowPtr, PaletteHandle, INTEGER updates); PASCAL_TRAP(NSetPalette, 0xAA95); extern PaletteHandle C_GetPalette(WindowPtr); @@ -502,23 +502,23 @@ extern void C_AllocCursor(void); PASCAL_TRAP(AllocCursor, 0xAA1D); extern void C_RestoreClutDevice(GDHandle); -PASCAL_FUNCTION(RestoreClutDevice); +PASCAL_SUBTRAP(RestoreClutDevice, 0xAAA2, PaletteDispatch); extern void C_ResizePalette(PaletteHandle, INTEGER); -PASCAL_FUNCTION(ResizePalette); +PASCAL_SUBTRAP(ResizePalette, 0xAAA2, PaletteDispatch); extern INTEGER C_PMgrVersion(); -PASCAL_FUNCTION(PMgrVersion); +PASCAL_SUBTRAP(PMgrVersion, 0xAAA2, PaletteDispatch); extern void C_SaveFore(ColorSpec *); -PASCAL_FUNCTION(SaveFore); +PASCAL_SUBTRAP(SaveFore, 0xAAA2, PaletteDispatch); extern void C_RestoreFore(ColorSpec *); -PASCAL_FUNCTION(RestoreFore); +PASCAL_SUBTRAP(RestoreFore, 0xAAA2, PaletteDispatch); extern void C_SaveBack(ColorSpec *); -PASCAL_FUNCTION(SaveBack); +PASCAL_SUBTRAP(SaveBack, 0xAAA2, PaletteDispatch); extern void C_RestoreBack(ColorSpec *); -PASCAL_FUNCTION(RestoreBack); +PASCAL_SUBTRAP(RestoreBack, 0xAAA2, PaletteDispatch); extern void C_SetPaletteUpdates(PaletteHandle, INTEGER); -PASCAL_FUNCTION(SetPaletteUpdates); +PASCAL_SUBTRAP(SetPaletteUpdates, 0xAAA2, PaletteDispatch); extern INTEGER C_GetPaletteUpdates(PaletteHandle); -PASCAL_FUNCTION(GetPaletteUpdates); +PASCAL_SUBTRAP(GetPaletteUpdates, 0xAAA2, PaletteDispatch); extern void C_CopyPalette(PaletteHandle src_palette, PaletteHandle dst_palette, int16_t src_start, int16_t dst_start, @@ -530,79 +530,79 @@ PASCAL_TRAP(GetCWMgrPort, 0xAA48); /* QDExtensions trap */ extern QDErr C_NewGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_FUNCTION(NewGWorld); +PASCAL_SUBTRAP(NewGWorld, 0xAB1D, QDExtensions); extern Boolean C_LockPixels(PixMapHandle); -PASCAL_FUNCTION(LockPixels); +PASCAL_SUBTRAP(LockPixels, 0xAB1D, QDExtensions); extern void C_UnlockPixels(PixMapHandle); -PASCAL_FUNCTION(UnlockPixels); +PASCAL_SUBTRAP(UnlockPixels, 0xAB1D, QDExtensions); extern GWorldFlags C_UpdateGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_FUNCTION(UpdateGWorld); +PASCAL_SUBTRAP(UpdateGWorld, 0xAB1D, QDExtensions); extern void C_DisposeGWorld(GWorldPtr); -PASCAL_FUNCTION(DisposeGWorld); +PASCAL_SUBTRAP(DisposeGWorld, 0xAB1D, QDExtensions); extern void C_GetGWorld(GUEST *, GUEST *); -PASCAL_FUNCTION(GetGWorld); +PASCAL_SUBTRAP(GetGWorld, 0xAB1D, QDExtensions); extern void C_SetGWorld(CGrafPtr, GDHandle); -PASCAL_FUNCTION(SetGWorld); +PASCAL_SUBTRAP(SetGWorld, 0xAB1D, QDExtensions); extern void C_AllowPurgePixels(PixMapHandle); -PASCAL_FUNCTION(AllowPurgePixels); +PASCAL_SUBTRAP(AllowPurgePixels, 0xAB1D, QDExtensions); extern void C_NoPurgePixels(PixMapHandle); -PASCAL_FUNCTION(NoPurgePixels); +PASCAL_SUBTRAP(NoPurgePixels, 0xAB1D, QDExtensions); extern GWorldFlags C_GetPixelsState(PixMapHandle); -PASCAL_FUNCTION(GetPixelsState); +PASCAL_SUBTRAP(GetPixelsState, 0xAB1D, QDExtensions); extern void C_SetPixelsState(PixMapHandle, GWorldFlags); -PASCAL_FUNCTION(SetPixelsState); +PASCAL_SUBTRAP(SetPixelsState, 0xAB1D, QDExtensions); extern Ptr C_GetPixBaseAddr(PixMapHandle); -PASCAL_FUNCTION(GetPixBaseAddr); +PASCAL_SUBTRAP(GetPixBaseAddr, 0xAB1D, QDExtensions); extern QDErr C_NewScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_FUNCTION(NewScreenBuffer); +PASCAL_SUBTRAP(NewScreenBuffer, 0xAB1D, QDExtensions); extern void C_DisposeScreenBuffer(PixMapHandle); -PASCAL_FUNCTION(DisposeScreenBuffer); +PASCAL_SUBTRAP(DisposeScreenBuffer, 0xAB1D, QDExtensions); extern GDHandle C_GetGWorldDevice(GWorldPtr); -PASCAL_FUNCTION(GetGWorldDevice); +PASCAL_SUBTRAP(GetGWorldDevice, 0xAB1D, QDExtensions); extern Boolean C_PixMap32Bit(PixMapHandle); -PASCAL_FUNCTION(PixMap32Bit); +PASCAL_SUBTRAP(PixMap32Bit, 0xAB1D, QDExtensions); extern PixMapHandle C_GetGWorldPixMap(GWorldPtr); -PASCAL_FUNCTION(GetGWorldPixMap); +PASCAL_SUBTRAP(GetGWorldPixMap, 0xAB1D, QDExtensions); extern QDErr C_NewTempScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_FUNCTION(NewTempScreenBuffer); +PASCAL_SUBTRAP(NewTempScreenBuffer, 0xAB1D, QDExtensions); extern void C_GDeviceChanged(GDHandle); -PASCAL_FUNCTION(GDeviceChanged); +PASCAL_SUBTRAP(GDeviceChanged, 0xAB1D, QDExtensions); extern void C_PortChanged(GrafPtr); -PASCAL_FUNCTION(PortChanged); +PASCAL_SUBTRAP(PortChanged, 0xAB1D, QDExtensions); extern void C_PixPatChanged(PixPatHandle); -PASCAL_FUNCTION(PixPatChanged); +PASCAL_SUBTRAP(PixPatChanged, 0xAB1D, QDExtensions); extern void C_CTabChanged(CTabHandle); -PASCAL_FUNCTION(CTabChanged); +PASCAL_SUBTRAP(CTabChanged, 0xAB1D, QDExtensions); extern Boolean C_QDDone(GrafPtr); -PASCAL_FUNCTION(QDDone); +PASCAL_SUBTRAP(QDDone, 0xAB1D, QDExtensions); extern LONGINT C_OffscreenVersion(); -PASCAL_FUNCTION(OffscreenVersion); +PASCAL_SUBTRAP(OffscreenVersion, 0xAB1D, QDExtensions); extern OSErr C_BitMapToRegion(RgnHandle, const BitMap *); PASCAL_TRAP(BitMapToRegion, 0xA8D7); extern LONGINT C_Entry2Index(INTEGER); -PASCAL_FUNCTION(Entry2Index); +PASCAL_SUBTRAP(Entry2Index, 0xAAA2, PaletteDispatch); extern void C_SaveEntries(CTabHandle, CTabHandle, ReqListRec *); PASCAL_TRAP(SaveEntries, 0xAA49); extern void C_RestoreEntries(CTabHandle, CTabHandle, ReqListRec *); PASCAL_TRAP(RestoreEntries, 0xAA4A); extern OSErr C_DisposePictInfo(PictInfoID); -PASCAL_FUNCTION(DisposePictInfo); +PASCAL_SUBTRAP(DisposePictInfo, 0xA831, Pack15); extern OSErr C_RecordPictInfo(PictInfoID, PicHandle); -PASCAL_FUNCTION(RecordPictInfo); +PASCAL_SUBTRAP(RecordPictInfo, 0xA831, Pack15); extern OSErr C_RecordPixMapInfo(PictInfoID, PixMapHandle); -PASCAL_FUNCTION(RecordPixMapInfo); +PASCAL_SUBTRAP(RecordPixMapInfo, 0xA831, Pack15); extern OSErr C_RetrievePictInfo(PictInfoID, PictInfo *, int16_t); -PASCAL_FUNCTION(RetrievePictInfo); +PASCAL_SUBTRAP(RetrievePictInfo, 0xA831, Pack15); extern OSErr C_NewPictInfo(GUEST *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(NewPictInfo); +PASCAL_SUBTRAP(NewPictInfo, 0xA831, Pack15); extern OSErr C_GetPictInfo(PicHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(GetPictInfo); +PASCAL_SUBTRAP(GetPictInfo, 0xA831, Pack15); extern OSErr C_GetPixMapInfo(PixMapHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(GetPixMapInfo); +PASCAL_SUBTRAP(GetPixMapInfo, 0xA831, Pack15); extern PicHandle C_OpenCPicture(OpenCPicParams *newheaderp); PASCAL_TRAP(OpenCPicture, 0xAA20); diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index b111e455..899539ae 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -252,16 +252,16 @@ extern CDialogPtr C_NewCDialog(Ptr, Rect *, StringPtr, BOOLEAN, INTEGER, WindowP PASCAL_TRAP(NewCDialog, 0xAA4B); extern OSErr C_GetStdFilterProc(GUEST *proc); -PASCAL_FUNCTION(GetStdFilterProc); +PASCAL_SUBTRAP(GetStdFilterProc, 0xAA68, DialogDispatch); extern OSErr C_SetDialogDefaultItem(DialogPtr dialog, int16_t new_item); -PASCAL_FUNCTION(SetDialogDefaultItem); +PASCAL_SUBTRAP(SetDialogDefaultItem, 0xAA68, DialogDispatch); extern OSErr C_SetDialogCancelItem(DialogPtr dialog, int16_t new_item); -PASCAL_FUNCTION(SetDialogCancelItem); +PASCAL_SUBTRAP(SetDialogCancelItem, 0xAA68, DialogDispatch); extern OSErr C_SetDialogTracksCursor(DialogPtr dialog, Boolean tracks); -PASCAL_FUNCTION(SetDialogTracksCursor); +PASCAL_SUBTRAP(SetDialogTracksCursor, 0xAA68, DialogDispatch); extern void AppendDITL(DialogPtr, Handle, DITLMethod); extern void ShortenDITL(DialogPtr, int16_t); diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index 79d4c001..51b6dd78 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -184,124 +184,124 @@ enum }; extern OSErr C_InitEditionPack(INTEGER unused); -PASCAL_FUNCTION(InitEditionPack); +PASCAL_SUBTRAP(InitEditionPack, 0xA82D, Pack11); extern OSErr C_NewSection(EditionContainerSpecPtr container, FSSpecPtr section_doc, SectionType kind, int32_t section_id, UpdateMode initial_mode, SectionHandle *section_out); -PASCAL_FUNCTION(NewSection); +PASCAL_SUBTRAP(NewSection, 0xA82D, Pack11); extern OSErr C_RegisterSection(FSSpecPtr section_doc, SectionHandle section, Boolean *alias_was_updated_p_out); -PASCAL_FUNCTION(RegisterSection); +PASCAL_SUBTRAP(RegisterSection, 0xA82D, Pack11); extern OSErr C_UnRegisterSection(SectionHandle section); -PASCAL_FUNCTION(UnRegisterSection); +PASCAL_SUBTRAP(UnRegisterSection, 0xA82D, Pack11); extern OSErr C_IsRegisteredSection(SectionHandle section); -PASCAL_FUNCTION(IsRegisteredSection); +PASCAL_SUBTRAP(IsRegisteredSection, 0xA82D, Pack11); extern OSErr C_AssociateSection(SectionHandle section, FSSpecPtr new_section_doc); -PASCAL_FUNCTION(AssociateSection); +PASCAL_SUBTRAP(AssociateSection, 0xA82D, Pack11); extern OSErr C_CreateEditionContainerFile(FSSpecPtr edition_file, OSType creator, ScriptCode edition_file_name_script); -PASCAL_FUNCTION(CreateEditionContainerFile); +PASCAL_SUBTRAP(CreateEditionContainerFile, 0xA82D, Pack11); extern OSErr C_DeleteEditionContainerFile(FSSpecPtr edition_file); -PASCAL_FUNCTION(DeleteEditionContainerFile); +PASCAL_SUBTRAP(DeleteEditionContainerFile, 0xA82D, Pack11); extern OSErr C_SetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t mark); -PASCAL_FUNCTION(SetEditionFormatMark); +PASCAL_SUBTRAP(SetEditionFormatMark, 0xA82D, Pack11); extern OSErr C_GetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t *currentMark); -PASCAL_FUNCTION(GetEditionFormatMark); +PASCAL_SUBTRAP(GetEditionFormatMark, 0xA82D, Pack11); extern OSErr C_OpenEdition(SectionHandle subscriber_section, EditionRefNum *ref_num); -PASCAL_FUNCTION(OpenEdition); +PASCAL_SUBTRAP(OpenEdition, 0xA82D, Pack11); extern OSErr C_EditionHasFormat(EditionRefNum edition, FormatType format, Size *format_size); -PASCAL_FUNCTION(EditionHasFormat); +PASCAL_SUBTRAP(EditionHasFormat, 0xA82D, Pack11); extern OSErr C_ReadEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_FUNCTION(ReadEdition); +PASCAL_SUBTRAP(ReadEdition, 0xA82D, Pack11); extern OSErr C_OpenNewEdition(SectionHandle publisher_section, OSType creator, FSSpecPtr publisher_section_doc, EditionRefNum *ref_num); -PASCAL_FUNCTION(OpenNewEdition); +PASCAL_SUBTRAP(OpenNewEdition, 0xA82D, Pack11); extern OSErr C_WriteEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_FUNCTION(WriteEdition); +PASCAL_SUBTRAP(WriteEdition, 0xA82D, Pack11); extern OSErr C_CloseEdition(EditionRefNum edition, Boolean success_p); -PASCAL_FUNCTION(CloseEdition); +PASCAL_SUBTRAP(CloseEdition, 0xA82D, Pack11); extern OSErr C_GetLastEditionContainerUsed(EditionContainerSpecPtr container); -PASCAL_FUNCTION(GetLastEditionContainerUsed); +PASCAL_SUBTRAP(GetLastEditionContainerUsed, 0xA82D, Pack11); extern OSErr C_NewSubscriberDialog(NewSubscriberReplyPtr reply); -PASCAL_FUNCTION(NewSubscriberDialog); +PASCAL_SUBTRAP(NewSubscriberDialog, 0xA82D, Pack11); extern OSErr C_NewPublisherDialog(NewSubscriberReplyPtr reply); -PASCAL_FUNCTION(NewPublisherDialog); +PASCAL_SUBTRAP(NewPublisherDialog, 0xA82D, Pack11); extern OSErr C_SectionOptionsDialog(SectionOptionsReply *reply); -PASCAL_FUNCTION(SectionOptionsDialog); +PASCAL_SUBTRAP(SectionOptionsDialog, 0xA82D, Pack11); extern OSErr C_NewSubscriberExpDialog(NewSubscriberReplyPtr reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_FUNCTION(NewSubscriberExpDialog); +PASCAL_SUBTRAP(NewSubscriberExpDialog, 0xA82D, Pack11); extern OSErr C_NewPublisherExpDialog(NewPublisherReplyPtr reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_FUNCTION(NewPublisherExpDialog); +PASCAL_SUBTRAP(NewPublisherExpDialog, 0xA82D, Pack11); extern OSErr C_SectionOptionsExpDialog(SectionOptionsReply *reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_FUNCTION(SectionOptionsExpDialog); +PASCAL_SUBTRAP(SectionOptionsExpDialog, 0xA82D, Pack11); extern OSErr C_GetEditionInfo(SectionHandle section, EditionInfoPtr edition_info); -PASCAL_FUNCTION(GetEditionInfo); +PASCAL_SUBTRAP(GetEditionInfo, 0xA82D, Pack11); extern OSErr C_GoToPublisherSection(EditionContainerSpecPtr container); -PASCAL_FUNCTION(GoToPublisherSection); +PASCAL_SUBTRAP(GoToPublisherSection, 0xA82D, Pack11); extern OSErr C_GetStandardFormats(EditionContainerSpecPtr container, FormatType *preview_format, Handle preview, Handle publisher_alias, Handle formats); -PASCAL_FUNCTION(GetStandardFormats); +PASCAL_SUBTRAP(GetStandardFormats, 0xA82D, Pack11); extern OSErr C_GetEditionOpenerProc(EditionOpenerProcPtr *opener); -PASCAL_FUNCTION(GetEditionOpenerProc); +PASCAL_SUBTRAP(GetEditionOpenerProc, 0xA82D, Pack11); extern OSErr C_SetEditionOpenerProc(EditionOpenerProcPtr opener); -PASCAL_FUNCTION(SetEditionOpenerProc); +PASCAL_SUBTRAP(SetEditionOpenerProc, 0xA82D, Pack11); extern OSErr C_CallEditionOpenerProc(EditionOpenerVerb selector, EditionOpenerParamBlock *param_block, EditionOpenerProcPtr opener); -PASCAL_FUNCTION(CallEditionOpenerProc); +PASCAL_SUBTRAP(CallEditionOpenerProc, 0xA82D, Pack11); extern OSErr C_CallFormatIOProc(FormatIOVerb selector, FormatIOParamBlock *param_block, FormatIOProcPtr proc); -PASCAL_FUNCTION(CallFormatIOProc); +PASCAL_SUBTRAP(CallFormatIOProc, 0xA82D, Pack11); } #endif /* _EDITIONMGR_H_ */ diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index 4dbc737a..df39bbc1 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -683,43 +683,43 @@ extern OSErrRET PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); /* prototypes for the high level filesystem dispatch traps */ extern OSErr C_FSMakeFSSpec(int16_t vRefNum, int32_t dir_id, Str255 file_name, FSSpecPtr spec); -PASCAL_FUNCTION(FSMakeFSSpec); +PASCAL_SUBTRAP(FSMakeFSSpec, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpExchangeFiles(FSSpecPtr src, FSSpecPtr dst); -PASCAL_FUNCTION(FSpExchangeFiles); +PASCAL_SUBTRAP(FSpExchangeFiles, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpOpenDF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_FUNCTION(FSpOpenDF); +PASCAL_SUBTRAP(FSpOpenDF, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpOpenRF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_FUNCTION(FSpOpenRF); +PASCAL_SUBTRAP(FSpOpenRF, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpCreate(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_FUNCTION(FSpCreate); +PASCAL_SUBTRAP(FSpCreate, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpDirCreate(FSSpecPtr spec, ScriptCode script, GUEST *created_dir_id); -PASCAL_FUNCTION(FSpDirCreate); +PASCAL_SUBTRAP(FSpDirCreate, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpDelete(FSSpecPtr spec); -PASCAL_FUNCTION(FSpDelete); +PASCAL_SUBTRAP(FSpDelete, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpGetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_FUNCTION(FSpGetFInfo); +PASCAL_SUBTRAP(FSpGetFInfo, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpSetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_FUNCTION(FSpSetFInfo); +PASCAL_SUBTRAP(FSpSetFInfo, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpSetFLock(FSSpecPtr spec); -PASCAL_FUNCTION(FSpSetFLock); +PASCAL_SUBTRAP(FSpSetFLock, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpRstFLock(FSSpecPtr spec); -PASCAL_FUNCTION(FSpRstFLock); +PASCAL_SUBTRAP(FSpRstFLock, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpRename(FSSpecPtr spec, Str255 new_name); -PASCAL_FUNCTION(FSpRename); +PASCAL_SUBTRAP(FSpRename, 0xAA52, HighLevelFSDispatch); extern OSErr C_FSpCatMove(FSSpecPtr src, FSSpecPtr dst); -PASCAL_FUNCTION(FSpCatMove); +PASCAL_SUBTRAP(FSpCatMove, 0xAA52, HighLevelFSDispatch); extern void C_FSpCreateResFile(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_FUNCTION(FSpCreateResFile); +PASCAL_SUBTRAP(FSpCreateResFile, 0xAA52, HighLevelFSDispatch); extern INTEGER C_FSpOpenResFile(FSSpecPtr spec, SignedByte perms); -PASCAL_FUNCTION(FSpOpenResFile); +PASCAL_SUBTRAP(FSpOpenResFile, 0xAA52, HighLevelFSDispatch); extern INTEGER C_HOpenResFile(INTEGER vref, LONGINT dirid, Str255 file_name, SignedByte perm); PASCAL_TRAP(HOpenResFile, 0xA81A); diff --git a/src/include/FontMgr.h b/src/include/FontMgr.h index d423dc07..d6e3b4a5 100644 --- a/src/include/FontMgr.h +++ b/src/include/FontMgr.h @@ -241,23 +241,23 @@ extern void C_SetFractEnable(BOOLEAN enable); PASCAL_TRAP(SetFractEnable, 0xA814); extern void C_SetOutlinePreferred(Boolean _outline_perferred_p); -PASCAL_FUNCTION(SetOutlinePreferred); +PASCAL_SUBTRAP(SetOutlinePreferred, 0xA854, FontDispatch); extern Boolean C_GetOutlinePreferred(void); -PASCAL_FUNCTION(GetOutlinePreferred); +PASCAL_SUBTRAP(GetOutlinePreferred, 0xA854, FontDispatch); extern Boolean C_IsOutline(Point numer, Point denom); -PASCAL_FUNCTION(IsOutline); +PASCAL_SUBTRAP(IsOutline, 0xA854, FontDispatch); extern OSErr C_OutlineMetrics(int16_t byte_count, Ptr text, Point numer, Point denom, int16_t *y_max, int16_t *y_min, Fixed *aw_array, Fixed *lsb_array, Rect *bounds_array); -PASCAL_FUNCTION(OutlineMetrics); +PASCAL_SUBTRAP(OutlineMetrics, 0xA854, FontDispatch); extern void C_SetPreserveGlyph(Boolean preserve_glyph); -PASCAL_FUNCTION(SetPreserveGlyph); +PASCAL_SUBTRAP(SetPreserveGlyph, 0xA854, FontDispatch); extern Boolean C_GetPreserveGlyph(void); -PASCAL_FUNCTION(GetPreserveGlyph); +PASCAL_SUBTRAP(GetPreserveGlyph, 0xA854, FontDispatch); extern OSErr C_FlushFonts(void); -PASCAL_FUNCTION(FlushFonts); +PASCAL_SUBTRAP(FlushFonts, 0xA854, FontDispatch); } #endif /* _FONTMGR_H_ */ diff --git a/src/include/Gestalt.h b/src/include/Gestalt.h index d6ab0d06..30742c1b 100644 --- a/src/include/Gestalt.h +++ b/src/include/Gestalt.h @@ -201,6 +201,6 @@ extern OSErrRET ReplaceGestalt(OSType selector, ProcPtr selFunc, extern OSErrRET C_GestaltTablesOnly(OSType selector, GUEST *responsep); -PASCAL_FUNCTION(GestaltTablesOnly); +NOTRAP_FUNCTION(GestaltTablesOnly); } #endif diff --git a/src/include/HelpMgr.h b/src/include/HelpMgr.h index 8f9b69b9..6d69a540 100644 --- a/src/include/HelpMgr.h +++ b/src/include/HelpMgr.h @@ -51,19 +51,19 @@ enum }; extern BOOLEAN C_HMGetBalloons(void); -PASCAL_FUNCTION(HMGetBalloons); +PASCAL_SUBTRAP(HMGetBalloons, 0xA830, Pack14); extern OSErr C_HMSetBalloons(BOOLEAN flag); -PASCAL_FUNCTION(HMSetBalloons); +PASCAL_SUBTRAP(HMSetBalloons, 0xA830, Pack14); extern BOOLEAN C_HMIsBalloon(void); -PASCAL_FUNCTION(HMIsBalloon); +PASCAL_SUBTRAP(HMIsBalloon, 0xA830, Pack14); extern OSErr C_HMShowBalloon(HMMessageRecord *msgp, Point tip, RectPtr alternaterectp, Ptr tipprocptr, INTEGER proc, INTEGER variant, INTEGER method); -PASCAL_FUNCTION(HMShowBalloon); +PASCAL_SUBTRAP(HMShowBalloon, 0xA830, Pack14); extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, LONGINT flags, @@ -71,57 +71,57 @@ extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, RectPtr alternaterectp, Ptr tipproc, INTEGER proc, INTEGER variant); -PASCAL_FUNCTION(HMShowMenuBalloon); +PASCAL_SUBTRAP(HMShowMenuBalloon, 0xA830, Pack14); extern OSErr C_HMRemoveBalloon(void); -PASCAL_FUNCTION(HMRemoveBalloon); +PASCAL_SUBTRAP(HMRemoveBalloon, 0xA830, Pack14); extern OSErr C_HMGetHelpMenuHandle(GUEST *mhp); -PASCAL_FUNCTION(HMGetHelpMenuHandle); +PASCAL_SUBTRAP(HMGetHelpMenuHandle, 0xA830, Pack14); extern OSErr C_HMGetFont(GUEST *fontp); -PASCAL_FUNCTION(HMGetFont); +PASCAL_SUBTRAP(HMGetFont, 0xA830, Pack14); extern OSErr C_HMGetFontSize(GUEST *sizep); -PASCAL_FUNCTION(HMGetFontSize); +PASCAL_SUBTRAP(HMGetFontSize, 0xA830, Pack14); extern OSErr C_HMSetFont(INTEGER font); -PASCAL_FUNCTION(HMSetFont); +PASCAL_SUBTRAP(HMSetFont, 0xA830, Pack14); extern OSErr C_HMSetFontSize(INTEGER size); -PASCAL_FUNCTION(HMSetFontSize); +PASCAL_SUBTRAP(HMSetFontSize, 0xA830, Pack14); extern OSErr C_HMSetDialogResID(INTEGER resid); -PASCAL_FUNCTION(HMSetDialogResID); +PASCAL_SUBTRAP(HMSetDialogResID, 0xA830, Pack14); extern OSErr C_HMGetDialogResID(GUEST *residp); -PASCAL_FUNCTION(HMGetDialogResID); +PASCAL_SUBTRAP(HMGetDialogResID, 0xA830, Pack14); extern OSErr C_HMSetMenuResID(INTEGER menuid, INTEGER resid); -PASCAL_FUNCTION(HMSetMenuResID); +PASCAL_SUBTRAP(HMSetMenuResID, 0xA830, Pack14); extern OSErr C_HMGetMenuResID(GUEST *menuidp, GUEST *residp); -PASCAL_FUNCTION(HMGetMenuResID); +PASCAL_SUBTRAP(HMGetMenuResID, 0xA830, Pack14); extern OSErr C_HMScanTemplateItems(INTEGER whichid, INTEGER whicresfile, ResType whictype); -PASCAL_FUNCTION(HMScanTemplateItems); +PASCAL_SUBTRAP(HMScanTemplateItems, 0xA830, Pack14); extern OSErr C_HMBalloonRect(HMMessageRecord *messp, Rect *rectp); -PASCAL_FUNCTION(HMBalloonRect); +PASCAL_SUBTRAP(HMBalloonRect, 0xA830, Pack14); extern OSErr C_HMBalloonPict(HMMessageRecord *messp, GUEST *pictp); -PASCAL_FUNCTION(HMBalloonPict); +PASCAL_SUBTRAP(HMBalloonPict, 0xA830, Pack14); extern OSErr C_HMGetBalloonWindow(GUEST *windowpp); -PASCAL_FUNCTION(HMGetBalloonWindow); +PASCAL_SUBTRAP(HMGetBalloonWindow, 0xA830, Pack14); extern OSErr C_HMExtractHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, HMMessageRecord *helpmsgp); -PASCAL_FUNCTION(HMExtractHelpMsg); +PASCAL_SUBTRAP(HMExtractHelpMsg, 0xA830, Pack14); extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, @@ -131,7 +131,7 @@ extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, HMMessageRecord *helpmsgp, GUEST *count); -PASCAL_FUNCTION(HMGetIndHelpMsg); +PASCAL_SUBTRAP(HMGetIndHelpMsg, 0xA830, Pack14); } #endif /* !_HELPMGR_H_ */ diff --git a/src/include/Iconutil.h b/src/include/Iconutil.h index 9b7b2f37..29496ce3 100644 --- a/src/include/Iconutil.h +++ b/src/include/Iconutil.h @@ -116,14 +116,14 @@ extern OSErr C_PlotIconID(const Rect *rect, IconAlignmentType align, IconTransformType tranform, short res_id); -PASCAL_FUNCTION(PlotIconID); +PASCAL_SUBTRAP(PlotIconID, 0xABC9, IconDispatch); extern OSErr C_PlotIconMethod(const Rect *rect, IconAlignmentType align, IconTransformType transform, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(PlotIconMethod); +PASCAL_SUBTRAP(PlotIconMethod, 0xABC9, IconDispatch); extern void C_PlotCIcon(const Rect *rect, CIconHandle icon); PASCAL_TRAP(PlotCIcon, 0xAA1F); extern void C_PlotIcon(const Rect *rect, Handle icon); @@ -132,17 +132,17 @@ extern OSErr C_PlotIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_FUNCTION(PlotIconHandle); +PASCAL_SUBTRAP(PlotIconHandle, 0xABC9, IconDispatch); extern OSErr C_PlotCIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, CIconHandle icon); -PASCAL_FUNCTION(PlotCIconHandle); +PASCAL_SUBTRAP(PlotCIconHandle, 0xABC9, IconDispatch); extern OSErr C_PlotSICNHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_FUNCTION(PlotSICNHandle); +PASCAL_SUBTRAP(PlotSICNHandle, 0xABC9, IconDispatch); extern Handle C_GetIcon(short icon_id); PASCAL_TRAP(GetIcon, 0xA9BB); @@ -154,100 +154,100 @@ PASCAL_TRAP(DisposeCIcon, 0xAA25); extern OSErr C_GetIconSuite(GUEST *suite, short res_id, IconSelectorValue selector); -PASCAL_FUNCTION(GetIconSuite); +PASCAL_SUBTRAP(GetIconSuite, 0xABC9, IconDispatch); extern OSErr C_NewIconSuite(GUEST *suite); -PASCAL_FUNCTION(NewIconSuite); +PASCAL_SUBTRAP(NewIconSuite, 0xABC9, IconDispatch); extern OSErr C_AddIconToSuite(Handle icon_data, Handle suite, ResType type); -PASCAL_FUNCTION(AddIconToSuite); +PASCAL_SUBTRAP(AddIconToSuite, 0xABC9, IconDispatch); extern OSErr C_GetIconFromSuite(GUEST *icon_data, Handle suite, ResType type); -PASCAL_FUNCTION(GetIconFromSuite); +PASCAL_SUBTRAP(GetIconFromSuite, 0xABC9, IconDispatch); extern OSErr C_PlotIconSuite(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle suite); -PASCAL_FUNCTION(PlotIconSuite); +PASCAL_SUBTRAP(PlotIconSuite, 0xABC9, IconDispatch); extern OSErr C_ForEachIconDo(Handle suite, IconSelectorValue selector, IconActionProcPtr action, void *data); -PASCAL_FUNCTION(ForEachIconDo); +PASCAL_SUBTRAP(ForEachIconDo, 0xABC9, IconDispatch); extern short C_GetSuiteLabel(Handle suite); -PASCAL_FUNCTION(GetSuiteLabel); +PASCAL_SUBTRAP(GetSuiteLabel, 0xABC9, IconDispatch); extern OSErr C_SetSuiteLabel(Handle suite, short label); -PASCAL_FUNCTION(SetSuiteLabel); +PASCAL_SUBTRAP(SetSuiteLabel, 0xABC9, IconDispatch); extern OSErr C_GetLabel(short label, RGBColor *label_color, Str255 label_string); -PASCAL_FUNCTION(GetLabel); +PASCAL_SUBTRAP(GetLabel, 0xABC9, IconDispatch); extern OSErr C_DisposeIconSuite(Handle suite, Boolean dispose_data_p); -PASCAL_FUNCTION(DisposeIconSuite); +PASCAL_SUBTRAP(DisposeIconSuite, 0xABC9, IconDispatch); extern OSErr C_IconSuiteToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(IconSuiteToRgn); +PASCAL_SUBTRAP(IconSuiteToRgn, 0xABC9, IconDispatch); extern OSErr C_IconIDToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(IconIDToRgn); +PASCAL_SUBTRAP(IconIDToRgn, 0xABC9, IconDispatch); extern OSErr C_IconMethodToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(IconMethodToRgn); +PASCAL_SUBTRAP(IconMethodToRgn, 0xABC9, IconDispatch); extern Boolean C_PtInIconSuite(Point test_pt, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(PtInIconSuite); +PASCAL_SUBTRAP(PtInIconSuite, 0xABC9, IconDispatch); extern Boolean C_PtInIconID(Point test_pt, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(PtInIconID); +PASCAL_SUBTRAP(PtInIconID, 0xABC9, IconDispatch); extern Boolean C_PtInIconMethod(Point test_pt, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(PtInIconMethod); +PASCAL_SUBTRAP(PtInIconMethod, 0xABC9, IconDispatch); extern Boolean C_RectInIconSuite(const Rect *test_rect, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(RectInIconSuite); +PASCAL_SUBTRAP(RectInIconSuite, 0xABC9, IconDispatch); extern Boolean C_RectInIconID(const Rect *test_rect, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(RectInIconID); +PASCAL_SUBTRAP(RectInIconID, 0xABC9, IconDispatch); extern Boolean C_RectInIconMethod(const Rect *test_rect, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(RectInIconMethod); +PASCAL_SUBTRAP(RectInIconMethod, 0xABC9, IconDispatch); extern OSErr C_MakeIconCache(Handle *cache, IconGetterProcPtr make_icon, void *data); -PASCAL_FUNCTION(MakeIconCache); +PASCAL_SUBTRAP(MakeIconCache, 0xABC9, IconDispatch); extern OSErr C_LoadIconCache(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle cache); -PASCAL_FUNCTION(LoadIconCache); +PASCAL_SUBTRAP(LoadIconCache, 0xABC9, IconDispatch); extern OSErr C_GetIconCacheData(Handle cache, void **data); -PASCAL_FUNCTION(GetIconCacheData); +PASCAL_SUBTRAP(GetIconCacheData, 0xABC9, IconDispatch); extern OSErr C_SetIconCacheData(Handle cache, void *data); -PASCAL_FUNCTION(SetIconCacheData); +PASCAL_SUBTRAP(SetIconCacheData, 0xABC9, IconDispatch); extern OSErr C_GetIconCacheProc(Handle cache, IconGetterProcPtr *proc); -PASCAL_FUNCTION(GetIconCacheProc); +PASCAL_SUBTRAP(GetIconCacheProc, 0xABC9, IconDispatch); extern OSErr C_SetIconCacheProc(Handle cache, IconGetterProcPtr proc); -PASCAL_FUNCTION(SetIconCacheProc); +PASCAL_SUBTRAP(SetIconCacheProc, 0xABC9, IconDispatch); } #endif /* !_ICON_UTIL_H */ diff --git a/src/include/IntlUtil.h b/src/include/IntlUtil.h index aaad7d4a..da9cbcdf 100644 --- a/src/include/IntlUtil.h +++ b/src/include/IntlUtil.h @@ -143,73 +143,73 @@ enum extern void C_IUDatePString(LONGINT date, DateForm form, StringPtr p, Handle h); -PASCAL_FUNCTION(IUDatePString); +PASCAL_SUBTRAP(IUDatePString, 0xA9ED, Pack6); extern Handle C_IUGetIntl(INTEGER id); -PASCAL_FUNCTION(IUGetIntl); +PASCAL_SUBTRAP(IUGetIntl, 0xA9ED, Pack6); extern void C_IUDateString(LONGINT date, DateForm form, StringPtr p); -PASCAL_FUNCTION(IUDateString); +PASCAL_SUBTRAP(IUDateString, 0xA9ED, Pack6); extern void C_IUTimePString(LONGINT date, BOOLEAN secs, StringPtr p, Handle h); -PASCAL_FUNCTION(IUTimePString); +PASCAL_SUBTRAP(IUTimePString, 0xA9ED, Pack6); extern void C_IUTimeString(LONGINT date, BOOLEAN secs, StringPtr p); -PASCAL_FUNCTION(IUTimeString); +PASCAL_SUBTRAP(IUTimeString, 0xA9ED, Pack6); extern BOOLEAN C_IUMetric(void); -PASCAL_FUNCTION(IUMetric); +PASCAL_SUBTRAP(IUMetric, 0xA9ED, Pack6); extern void C_IUSetIntl(INTEGER rn, INTEGER id, Handle newh); -PASCAL_FUNCTION(IUSetIntl); +PASCAL_SUBTRAP(IUSetIntl, 0xA9ED, Pack6); extern INTEGER C_IUMagString(Ptr ptr1, Ptr ptr2, INTEGER len1, INTEGER len2); -PASCAL_FUNCTION(IUMagString); +PASCAL_SUBTRAP(IUMagString, 0xA9ED, Pack6); extern INTEGER IUCompString(StringPtr str1, StringPtr str2); extern INTEGER C_IUMagIDString(Ptr ptr1, Ptr ptr2, INTEGER len1, INTEGER len2); -PASCAL_FUNCTION(IUMagIDString); +PASCAL_SUBTRAP(IUMagIDString, 0xA9ED, Pack6); extern INTEGER IUEqualString(StringPtr str1, StringPtr str2); extern void C_IUMystery(Ptr arg1, Ptr arg2, INTEGER arg3, INTEGER arg4); -PASCAL_FUNCTION(IUMystery); +PASCAL_SUBTRAP(IUMystery, 0xA9ED, Pack6); extern void C_IULDateString(LongDateTime *datetimep, DateForm longflag, Str255 result, Handle intlhand); -PASCAL_FUNCTION(IULDateString); +PASCAL_SUBTRAP(IULDateString, 0xA9ED, Pack6); extern void C_IULTimeString(LongDateTime *datetimep, BOOLEAN wantseconds, Str255 result, Handle intlhand); -PASCAL_FUNCTION(IULTimeString); +PASCAL_SUBTRAP(IULTimeString, 0xA9ED, Pack6); extern void C_IUClearCache(void); -PASCAL_FUNCTION(IUClearCache); +PASCAL_SUBTRAP(IUClearCache, 0xA9ED, Pack6); extern INTEGER C_IUMagPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_FUNCTION(IUMagPString); +PASCAL_SUBTRAP(IUMagPString, 0xA9ED, Pack6); extern INTEGER C_IUMagIDPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_FUNCTION(IUMagIDPString); +PASCAL_SUBTRAP(IUMagIDPString, 0xA9ED, Pack6); extern INTEGER C_IUScriptOrder(ScriptCode script1, ScriptCode script2); -PASCAL_FUNCTION(IUScriptOrder); +PASCAL_SUBTRAP(IUScriptOrder, 0xA9ED, Pack6); extern INTEGER C_IULangOrder(LangCode l1, LangCode l2); -PASCAL_FUNCTION(IULangOrder); +PASCAL_SUBTRAP(IULangOrder, 0xA9ED, Pack6); extern INTEGER C_IUTextOrder(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, ScriptCode scripta, ScriptCode bscript, LangCode langa, LangCode langb); -PASCAL_FUNCTION(IUTextOrder); +PASCAL_SUBTRAP(IUTextOrder, 0xA9ED, Pack6); extern void C_IUGetItlTable(ScriptCode script, INTEGER tablecode, Handle *itlhandlep, LONGINT *offsetp, LONGINT *lengthp); -PASCAL_FUNCTION(IUGetItlTable); +PASCAL_SUBTRAP(IUGetItlTable, 0xA9ED, Pack6); } #endif /* _INTLUTIL_H_ */ diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index 4184f425..e719c502 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -87,81 +87,81 @@ enum extern void C_LFind(GUEST *offsetp, GUEST *lenp, Cell cell, ListHandle list); -PASCAL_FUNCTION(LFind); +PASCAL_SUBTRAP(LFind, 0xA9E7, Pack0); extern BOOLEAN C_LNextCell(BOOLEAN hnext, BOOLEAN vnext, GUEST *cellp, ListHandle list); -PASCAL_FUNCTION(LNextCell); +PASCAL_SUBTRAP(LNextCell, 0xA9E7, Pack0); extern void C_LRect(Rect *cellrect, Cell cell, ListHandle list); -PASCAL_FUNCTION(LRect); +PASCAL_SUBTRAP(LRect, 0xA9E7, Pack0); extern BOOLEAN C_LSearch(Ptr dp, INTEGER dl, Ptr proc, GUEST *cellp, ListHandle list); extern void C_LSize(INTEGER width, INTEGER height, ListHandle list); -PASCAL_FUNCTION(LSize); +PASCAL_SUBTRAP(LSize, 0xA9E7, Pack0); extern INTEGER C_LAddColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_FUNCTION(LAddColumn); +PASCAL_SUBTRAP(LAddColumn, 0xA9E7, Pack0); extern INTEGER C_LAddRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_FUNCTION(LAddRow); +PASCAL_SUBTRAP(LAddRow, 0xA9E7, Pack0); extern void C_LDelColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_FUNCTION(LDelColumn); +PASCAL_SUBTRAP(LDelColumn, 0xA9E7, Pack0); extern void C_LDelRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_FUNCTION(LDelRow); +PASCAL_SUBTRAP(LDelRow, 0xA9E7, Pack0); extern ListHandle C_LNew(Rect *rview, Rect *bounds, Point csize, INTEGER proc, WindowPtr wind, BOOLEAN draw, BOOLEAN grow, BOOLEAN scrollh, BOOLEAN scrollv); -PASCAL_FUNCTION(LNew); +PASCAL_SUBTRAP(LNew, 0xA9E7, Pack0); extern void C_LDispose(ListHandle list); -PASCAL_FUNCTION(LDispose); +PASCAL_SUBTRAP(LDispose, 0xA9E7, Pack0); extern void C_LDraw(Cell cell, ListHandle list); -PASCAL_FUNCTION(LDraw); +PASCAL_SUBTRAP(LDraw, 0xA9E7, Pack0); extern void C_LDoDraw(BOOLEAN draw, ListHandle list); -PASCAL_FUNCTION(LDoDraw); +PASCAL_SUBTRAP(LDoDraw, 0xA9E7, Pack0); extern void C_LScroll(INTEGER ncol, INTEGER nrow, ListHandle list); -PASCAL_FUNCTION(LScroll); +PASCAL_SUBTRAP(LScroll, 0xA9E7, Pack0); extern void C_LAutoScroll(ListHandle list); -PASCAL_FUNCTION(LAutoScroll); +PASCAL_SUBTRAP(LAutoScroll, 0xA9E7, Pack0); extern void C_LUpdate(RgnHandle rgn, ListHandle list); -PASCAL_FUNCTION(LUpdate); +PASCAL_SUBTRAP(LUpdate, 0xA9E7, Pack0); extern void C_LActivate(BOOLEAN act, ListHandle list); -PASCAL_FUNCTION(LActivate); +PASCAL_SUBTRAP(LActivate, 0xA9E7, Pack0); extern void C_ROMlib_mytrack(ControlHandle ch, INTEGER part); extern BOOLEAN C_LClick(Point pt, INTEGER mods, ListHandle list); -PASCAL_FUNCTION(LClick); +PASCAL_SUBTRAP(LClick, 0xA9E7, Pack0); extern LONGINT C_LLastClick(ListHandle list); -PASCAL_FUNCTION(LLastClick); +PASCAL_SUBTRAP(LLastClick, 0xA9E7, Pack0); extern void C_LSetSelect(BOOLEAN setit, Cell cell, ListHandle list); -PASCAL_FUNCTION(LSetSelect); +PASCAL_SUBTRAP(LSetSelect, 0xA9E7, Pack0); extern void C_LAddToCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_FUNCTION(LAddToCell); +PASCAL_SUBTRAP(LAddToCell, 0xA9E7, Pack0); extern void C_LClrCell(Cell cell, ListHandle list); -PASCAL_FUNCTION(LClrCell); +PASCAL_SUBTRAP(LClrCell, 0xA9E7, Pack0); extern void C_LGetCell(Ptr dp, GUEST *dlp, Cell cell, ListHandle list); -PASCAL_FUNCTION(LGetCell); +PASCAL_SUBTRAP(LGetCell, 0xA9E7, Pack0); extern void C_LSetCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_FUNCTION(LSetCell); +PASCAL_SUBTRAP(LSetCell, 0xA9E7, Pack0); extern void C_LCellSize(Point csize, ListHandle list); -PASCAL_FUNCTION(LCellSize); +PASCAL_SUBTRAP(LCellSize, 0xA9E7, Pack0); extern BOOLEAN C_LGetSelect(BOOLEAN next, GUEST *cellp, ListHandle list); -PASCAL_FUNCTION(LGetSelect); +PASCAL_SUBTRAP(LGetSelect, 0xA9E7, Pack0); } #endif /* __LIST__ */ diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index c30c694c..2319a4f4 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -183,18 +183,18 @@ extern Size StackSpace(void); /* temporary memory functions; see tempmem.c */ extern int32_t C_TempFreeMem(void); -PASCAL_FUNCTION(TempFreeMem); +PASCAL_SUBTRAP(TempFreeMem, 0xA88F, OSDispatch); extern Size C_TempMaxMem(GUEST *grow); -PASCAL_FUNCTION(TempMaxMem); +PASCAL_SUBTRAP(TempMaxMem, 0xA88F, OSDispatch); extern Ptr C_TempTopMem(void); -PASCAL_FUNCTION(TempTopMem); +PASCAL_SUBTRAP(TempTopMem, 0xA88F, OSDispatch); extern Handle C_TempNewHandle(Size logical_size, GUEST *result_code); -PASCAL_FUNCTION(TempNewHandle); +PASCAL_SUBTRAP(TempNewHandle, 0xA88F, OSDispatch); extern void C_TempHLock(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempHLock); +PASCAL_SUBTRAP(TempHLock, 0xA88F, OSDispatch); extern void C_TempHUnlock(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempHUnlock); +PASCAL_SUBTRAP(TempHUnlock, 0xA88F, OSDispatch); extern void C_TempDisposeHandle(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempDisposeHandle); +PASCAL_SUBTRAP(TempDisposeHandle, 0xA88F, OSDispatch); } #endif /* _MEMORY_MGR_H_ */ diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index 1f9cb482..c12c6800 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -144,11 +144,11 @@ enum }; extern OSErr C_AcceptHighLevelEvent(TargetID *sender_id_return, GUEST *refcon_return, Ptr msg_buf, GUEST *msg_length_return); -PASCAL_FUNCTION(AcceptHighLevelEvent); +PASCAL_SUBTRAP(AcceptHighLevelEvent, 0xA88F, OSDispatch); extern Boolean C_GetSpecificHighLevelEvent(GetSpecificFilterProcPtr fn, Ptr data, OSErr *err_return); -PASCAL_FUNCTION(GetSpecificHighLevelEvent); +PASCAL_SUBTRAP(GetSpecificHighLevelEvent, 0xA88F, OSDispatch); extern OSErr C_PostHighLevelEvent(EventRecord *evt, Ptr receiver_id, int32_t refcon, Ptr msg_buf, int32_t msg_length, int32_t post_options); -PASCAL_FUNCTION(PostHighLevelEvent); +PASCAL_SUBTRAP(PostHighLevelEvent, 0xA88F, OSDispatch); /* #### move to rsys/foo.h */ extern bool hle_get_event(EventRecord *evt, bool remflag); diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index f3d34557..19ee7c69 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -182,24 +182,24 @@ typedef struct TPrDlg const LowMemGlobal PrintErr { 0x944 }; // PrintMgr IMII-161 (true-b); extern INTEGER C_PrError(void); -PASCAL_FUNCTION(PrError); +PASCAL_SUBTRAP(PrError, 0xA8FD, _PrGlue); extern void C_PrSetError(INTEGER iErr); -PASCAL_FUNCTION(PrSetError); +PASCAL_SUBTRAP(PrSetError, 0xA8FD, _PrGlue); extern void C_PrOpen(void); -PASCAL_FUNCTION(PrOpen); +PASCAL_SUBTRAP(PrOpen, 0xA8FD, _PrGlue); extern void C_PrClose(void); -PASCAL_FUNCTION(PrClose); +PASCAL_SUBTRAP(PrClose, 0xA8FD, _PrGlue); extern void C_PrDrvrOpen(void); -PASCAL_FUNCTION(PrDrvrOpen); +PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, _PrGlue); extern void C_PrDrvrClose(void); -PASCAL_FUNCTION(PrDrvrClose); +PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, _PrGlue); extern void C_PrCtlCall(INTEGER iWhichCtl, LONGINT lParam1, LONGINT lParam2, LONGINT lParam3); -PASCAL_FUNCTION(PrCtlCall); +PASCAL_SUBTRAP(PrCtlCall, 0xA8FD, _PrGlue); extern Handle C_PrDrvrDCE(void); -PASCAL_FUNCTION(PrDrvrDCE); +PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, _PrGlue); extern INTEGER C_PrDrvrVers(void); -PASCAL_FUNCTION(PrDrvrVers); +PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, _PrGlue); extern void C_ROMlib_myjobproc(DialogPtr dp, INTEGER itemno); extern BOOLEAN C_ROMlib_stlfilterproc(DialogPeek dp, EventRecord *evt, GUEST *ith); @@ -210,13 +210,13 @@ extern BOOLEAN C_ROMlib_numsonlyfilterproc(DialogPeek dp, extern void C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno); extern TPPrDlg C_PrJobInit(THPrint hPrint); -PASCAL_FUNCTION(PrJobInit); +PASCAL_SUBTRAP(PrJobInit, 0xA8FD, _PrGlue); extern TPPrDlg C_PrStlInit(THPrint hPrint); -PASCAL_FUNCTION(PrStlInit); +PASCAL_SUBTRAP(PrStlInit, 0xA8FD, _PrGlue); extern BOOLEAN C_PrDlgMain(THPrint hPrint, ProcPtr initfptr); -PASCAL_FUNCTION(PrDlgMain); +PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, _PrGlue); extern void C_PrGeneral(Ptr pData); -PASCAL_FUNCTION(PrGeneral); +PASCAL_SUBTRAP(PrGeneral, 0xA8FD, _PrGlue); extern void C_donotPrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); PASCAL_FUNCTION(donotPrArc); @@ -281,26 +281,26 @@ extern void C_PrComment(INTEGER kind, INTEGER size, Handle hand); PASCAL_FUNCTION(PrComment); extern TPPrPort C_PrOpenDoc(THPrint hPrint, TPPrPort port, Ptr pIOBuf); -PASCAL_FUNCTION(PrOpenDoc); +PASCAL_SUBTRAP(PrOpenDoc, 0xA8FD, _PrGlue); extern void C_PrOpenPage(TPPrPort port, TPRect pPageFrame); -PASCAL_FUNCTION(PrOpenPage); +PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, _PrGlue); extern void C_PrClosePage(TPPrPort pPrPort); -PASCAL_FUNCTION(PrClosePage); +PASCAL_SUBTRAP(PrClosePage, 0xA8FD, _PrGlue); extern void C_PrCloseDoc(TPPrPort port); -PASCAL_FUNCTION(PrCloseDoc); +PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, _PrGlue); extern void C_PrPicFile(THPrint hPrint, TPPrPort pPrPort, Ptr pIOBuf, Ptr pDevBuf, TPrStatus *prStatus); -PASCAL_FUNCTION(PrPicFile); +PASCAL_SUBTRAP(PrPicFile, 0xA8FD, _PrGlue); extern void C_PrintDefault(THPrint hPrint); -PASCAL_FUNCTION(PrintDefault); +PASCAL_SUBTRAP(PrintDefault, 0xA8FD, _PrGlue); extern BOOLEAN C_PrValidate(THPrint hPrint); -PASCAL_FUNCTION(PrValidate); +PASCAL_SUBTRAP(PrValidate, 0xA8FD, _PrGlue); extern BOOLEAN C_PrStlDialog(THPrint hPrint); -PASCAL_FUNCTION(PrStlDialog); +PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, _PrGlue); extern BOOLEAN C_PrJobDialog(THPrint hPrint); -PASCAL_FUNCTION(PrJobDialog); +PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, _PrGlue); extern void C_PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst); -PASCAL_FUNCTION(PrJobMerge); +PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, _PrGlue); } #endif /* __PRINTING__ */ diff --git a/src/include/ProcessMgr.h b/src/include/ProcessMgr.h index 4bf1932d..f6b0d983 100644 --- a/src/include/ProcessMgr.h +++ b/src/include/ProcessMgr.h @@ -161,35 +161,35 @@ extern void process_create(bool desk_accessory_p, uint32_t type, uint32_t signature); extern OSErr C_GetCurrentProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetCurrentProcess); +PASCAL_SUBTRAP(GetCurrentProcess, 0xA88F, OSDispatch); extern OSErr C_GetNextProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetNextProcess); +PASCAL_SUBTRAP(GetNextProcess, 0xA88F, OSDispatch); extern OSErr C_GetProcessInformation(ProcessSerialNumber *serial_number, ProcessInfoPtr info); -PASCAL_FUNCTION(GetProcessInformation); +PASCAL_SUBTRAP(GetProcessInformation, 0xA88F, OSDispatch); extern OSErr C_SameProcess(ProcessSerialNumber *serial_number0, ProcessSerialNumber *serial_number1, Boolean *same_out); -PASCAL_FUNCTION(SameProcess); +PASCAL_SUBTRAP(SameProcess, 0xA88F, OSDispatch); extern OSErr C_GetFrontProcess(ProcessSerialNumber *serial_number, void *dummy); -PASCAL_FUNCTION(GetFrontProcess); +PASCAL_SUBTRAP(GetFrontProcess, 0xA88F, OSDispatch); extern OSErr C_SetFrontProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(SetFrontProcess); +PASCAL_SUBTRAP(SetFrontProcess, 0xA88F, OSDispatch); extern OSErr C_WakeUpProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(WakeUpProcess); +PASCAL_SUBTRAP(WakeUpProcess, 0xA88F, OSDispatch); extern OSErr C_GetProcessSerialNumberFromPortName(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetProcessSerialNumberFromPortName); +PASCAL_SUBTRAP(GetProcessSerialNumberFromPortName, 0xA88F, OSDispatch); extern OSErr C_GetPortNameFromProcessSerialNumber(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetPortNameFromProcessSerialNumber); +PASCAL_SUBTRAP(GetPortNameFromProcessSerialNumber, 0xA88F, OSDispatch); extern OSErr NewLaunch(StringPtr appl, INTEGER vrefnum, LaunchParamBlockRec *lpbp); diff --git a/src/include/QuickTime.h b/src/include/QuickTime.h index 95492389..80386f15 100644 --- a/src/include/QuickTime.h +++ b/src/include/QuickTime.h @@ -24,55 +24,55 @@ typedef MovieRecord *Movie; typedef LONGINT TimeValue; extern OSErr C_EnterMovies(void); -PASCAL_FUNCTION(EnterMovies); +PASCAL_SUBTRAP(EnterMovies, 0xAAAA, QuickTime); extern void C_ExitMovies(void); -PASCAL_FUNCTION(ExitMovies); +PASCAL_SUBTRAP(ExitMovies, 0xAAAA, QuickTime); extern void C_MoviesTask(Movie movie, LONGINT maxmillisecs); -PASCAL_FUNCTION(MoviesTask); +PASCAL_SUBTRAP(MoviesTask, 0xAAAA, QuickTime); extern OSErr C_PrerollMovie(Movie movie, TimeValue time, Fixed rate); -PASCAL_FUNCTION(PrerollMovie); +PASCAL_SUBTRAP(PrerollMovie, 0xAAAA, QuickTime); extern void C_SetMovieActive(Movie movie, BOOLEAN active); -PASCAL_FUNCTION(SetMovieActive); +PASCAL_SUBTRAP(SetMovieActive, 0xAAAA, QuickTime); extern void C_StartMovie(Movie movie); -PASCAL_FUNCTION(StartMovie); +PASCAL_SUBTRAP(StartMovie, 0xAAAA, QuickTime); extern void C_StopMovie(Movie movie); -PASCAL_FUNCTION(StopMovie); +PASCAL_SUBTRAP(StopMovie, 0xAAAA, QuickTime); extern void C_GoToBeginningOfMovie(Movie movie); -PASCAL_FUNCTION(GoToBeginningOfMovie); +PASCAL_SUBTRAP(GoToBeginningOfMovie, 0xAAAA, QuickTime); extern void C_SetMovieGWorld(Movie movie, CGrafPtr cgrafp, GDHandle gdh); -PASCAL_FUNCTION(SetMovieGWorld); +PASCAL_SUBTRAP(SetMovieGWorld, 0xAAAA, QuickTime); extern OSErr C_UpdateMovie(Movie movie); -PASCAL_FUNCTION(UpdateMovie); +PASCAL_SUBTRAP(UpdateMovie, 0xAAAA, QuickTime); extern void C_DisposeMovie(Movie movie); -PASCAL_FUNCTION(DisposeMovie); +PASCAL_SUBTRAP(DisposeMovie, 0xAAAA, QuickTime); extern INTEGER C_GetMovieVolume(Movie movie); -PASCAL_FUNCTION(GetMovieVolume); +PASCAL_SUBTRAP(GetMovieVolume, 0xAAAA, QuickTime); extern OSErr C_CloseMovieFile(INTEGER refnum); -PASCAL_FUNCTION(CloseMovieFile); +PASCAL_SUBTRAP(CloseMovieFile, 0xAAAA, QuickTime); extern BOOLEAN C_IsMovieDone(Movie movie); -PASCAL_FUNCTION(IsMovieDone); +PASCAL_SUBTRAP(IsMovieDone, 0xAAAA, QuickTime); extern OSErr C_NewMovieFromFile(Movie *moviep, INTEGER refnum, INTEGER *residp, StringPtr resnamep, INTEGER flags, BOOLEAN *datarefwaschangedp); -PASCAL_FUNCTION(NewMovieFromFile); +PASCAL_SUBTRAP(NewMovieFromFile, 0xAAAA, QuickTime); extern Fixed C_GetMoviePreferredRate(Movie movie); -PASCAL_FUNCTION(GetMoviePreferredRate); +PASCAL_SUBTRAP(GetMoviePreferredRate, 0xAAAA, QuickTime); extern void C_GetMovieBox(Movie movie, Rect *boxp); -PASCAL_FUNCTION(GetMovieBox); +PASCAL_SUBTRAP(GetMovieBox, 0xAAAA, QuickTime); extern void C_SetMovieBox(Movie movie, const Rect *boxp); -PASCAL_FUNCTION(SetMovieBox); +PASCAL_SUBTRAP(SetMovieBox, 0xAAAA, QuickTime); extern ComponentInstance C_NewMovieController(Movie movie, const Rect *mrectp, LONGINT flags); -PASCAL_FUNCTION(NewMovieController); +PASCAL_SUBTRAP(NewMovieController, 0xAAAA, QuickTime); extern void C_DisposeMovieController(ComponentInstance cntrller); -PASCAL_FUNCTION(DisposeMovieController); +PASCAL_SUBTRAP(DisposeMovieController, 0xAAAA, QuickTime); extern OSErr C_OpenMovieFile(const FSSpec *filespecp, INTEGER *refnump, uint8 perm); -PASCAL_FUNCTION(OpenMovieFile); +PASCAL_SUBTRAP(OpenMovieFile, 0xAAAA, QuickTime); } #endif diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index 9bbe51a4..273b5ff8 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -94,7 +94,7 @@ extern Handle C_Get1IndResource(ResType typ, INTEGER i); PASCAL_TRAP(Get1IndResource, 0xA80E); extern Handle C_GetResource(ResType typ, INTEGER id); -PASCAL_FUNCTION(GetResource); +PASCAL_TRAP(GetResource, 0xA9A0); extern Handle C_Get1Resource(ResType typ, INTEGER id); @@ -214,13 +214,13 @@ PASCAL_TRAP(UseResFile, 0xA998); extern void C_ReadPartialResource(Handle resource, int32_t offset, Ptr buffer, int32_t count); -PASCAL_FUNCTION(ReadPartialResource); +PASCAL_SUBTRAP(ReadPartialResource, 0xA822, ResourceDispatch); extern void C_WritePartialResource(Handle resource, int32_t offset, Ptr buffer, int32_t count); -PASCAL_FUNCTION(WritePartialResource); +PASCAL_SUBTRAP(WritePartialResource, 0xA822, ResourceDispatch); extern void C_SetResourceSize(Handle resource, int32_t size); -PASCAL_FUNCTION(SetResourceSize); +PASCAL_SUBTRAP(SetResourceSize, 0xA822, ResourceDispatch); extern Handle C_GetNextFOND(Handle fondHandle); } diff --git a/src/include/SANE.h b/src/include/SANE.h index 3cbeb951..0a7dd9b7 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -148,154 +148,154 @@ extern void P_ROMlib_Fcomp2X(comp sp, extended80 * dp); extern void C_ROMlib_Fsetenv(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fsetenv); +PASCAL_SUBTRAP(ROMlib_Fsetenv, 0xA9EB, Pack4); extern void C_ROMlib_Fgetenv(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fgetenv); +PASCAL_SUBTRAP(ROMlib_Fgetenv, 0xA9EB, Pack4); extern void C_ROMlib_Fprocentry(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fprocentry); +PASCAL_SUBTRAP(ROMlib_Fprocentry, 0xA9EB, Pack4); extern void C_ROMlib_Fprocexit(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fprocexit); +PASCAL_SUBTRAP(ROMlib_Fprocexit, 0xA9EB, Pack4); extern void C_ROMlib_Ftestxcp(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Ftestxcp); +PASCAL_SUBTRAP(ROMlib_Ftestxcp, 0xA9EB, Pack4); extern void C_ROMlib_FsqrtX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FsqrtX); +PASCAL_SUBTRAP(ROMlib_FsqrtX, 0xA9EB, Pack4); extern void C_ROMlib_FscalbX(INTEGER *sp, extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FscalbX); +PASCAL_SUBTRAP(ROMlib_FscalbX, 0xA9EB, Pack4); extern void C_ROMlib_FlogbX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FlogbX); +PASCAL_SUBTRAP(ROMlib_FlogbX, 0xA9EB, Pack4); extern void C_ROMlib_FabsX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FabsX); +PASCAL_SUBTRAP(ROMlib_FabsX, 0xA9EB, Pack4); extern void C_ROMlib_FnegX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FnegX); +PASCAL_SUBTRAP(ROMlib_FnegX, 0xA9EB, Pack4); extern void C_ROMlib_FrintX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FrintX); +PASCAL_SUBTRAP(ROMlib_FrintX, 0xA9EB, Pack4); extern void C_ROMlib_FtintX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FtintX); +PASCAL_SUBTRAP(ROMlib_FtintX, 0xA9EB, Pack4); extern void C_ROMlib_Fcpysgnx(x80_t *sp, x80_t *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fcpysgnx); +PASCAL_SUBTRAP(ROMlib_Fcpysgnx, 0xA9EB, Pack4); extern void C_ROMlib_Faddx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Faddx); +PASCAL_SUBTRAP(ROMlib_Faddx, 0xA9EB, Pack4); extern void C_ROMlib_Fsubx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fsubx); +PASCAL_SUBTRAP(ROMlib_Fsubx, 0xA9EB, Pack4); extern void C_ROMlib_Fmulx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fmulx); +PASCAL_SUBTRAP(ROMlib_Fmulx, 0xA9EB, Pack4); extern void C_ROMlib_Fdivx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fdivx); +PASCAL_SUBTRAP(ROMlib_Fdivx, 0xA9EB, Pack4); extern void C_ROMlib_Fremx(void *sp, extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fremx); +PASCAL_SUBTRAP(ROMlib_Fremx, 0xA9EB, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_Fcmpx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fcmpx); +PASCAL_SUBTRAP(ROMlib_Fcmpx, 0xA9EB, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_FcpXx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FcpXx); +PASCAL_SUBTRAP(ROMlib_FcpXx, 0xA9EB, Pack4); extern void C_ROMlib_FX2x(extended80 *sp, void * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FX2x); +PASCAL_SUBTRAP(ROMlib_FX2x, 0xA9EB, Pack4); extern void C_ROMlib_Fx2X(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fx2X); +PASCAL_SUBTRAP(ROMlib_Fx2X, 0xA9EB, Pack4); extern void C_ROMlib_Fx2dec(DecForm *sp2, void * sp, Decimal *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fx2dec); +PASCAL_SUBTRAP(ROMlib_Fx2dec, 0xA9EB, Pack4); extern void C_ROMlib_Fdec2x(Decimal *sp, void * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fdec2x); +PASCAL_SUBTRAP(ROMlib_Fdec2x, 0xA9EB, Pack4); extern void C_ROMlib_Fclassx(void *sp, INTEGER * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fclassx); +PASCAL_SUBTRAP(ROMlib_Fclassx, 0xA9EB, Pack4); extern void C_ROMlib_FlnX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FlnX); +PASCAL_SUBTRAP(ROMlib_FlnX, 0xA9EC, Pack5); extern void C_ROMlib_Flog2X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Flog2X); +PASCAL_SUBTRAP(ROMlib_Flog2X, 0xA9EC, Pack5); extern void C_ROMlib_Fln1X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fln1X); +PASCAL_SUBTRAP(ROMlib_Fln1X, 0xA9EC, Pack5); extern void C_ROMlib_Flog21X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Flog21X); +PASCAL_SUBTRAP(ROMlib_Flog21X, 0xA9EC, Pack5); extern void C_ROMlib_FexpX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FexpX); +PASCAL_SUBTRAP(ROMlib_FexpX, 0xA9EC, Pack5); extern void C_ROMlib_Fexp2X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp2X); +PASCAL_SUBTRAP(ROMlib_Fexp2X, 0xA9EC, Pack5); extern void C_ROMlib_Fexp1X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp1X); +PASCAL_SUBTRAP(ROMlib_Fexp1X, 0xA9EC, Pack5); extern void C_ROMlib_Fexp21X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp21X); +PASCAL_SUBTRAP(ROMlib_Fexp21X, 0xA9EC, Pack5); extern void C_ROMlib_Fxpwri(INTEGER *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fxpwri); +PASCAL_SUBTRAP(ROMlib_Fxpwri, 0xA9EC, Pack5); extern void C_ROMlib_Fxpwry(extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fxpwry); +PASCAL_SUBTRAP(ROMlib_Fxpwry, 0xA9EC, Pack5); extern void C_ROMlib_Fcompound(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fcompound); +PASCAL_SUBTRAP(ROMlib_Fcompound, 0xA9EC, Pack5); extern void C_ROMlib_Fannuity(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fannuity); +PASCAL_SUBTRAP(ROMlib_Fannuity, 0xA9EC, Pack5); extern void C_ROMlib_FsinX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FsinX); +PASCAL_SUBTRAP(ROMlib_FsinX, 0xA9EC, Pack5); extern void C_ROMlib_FcosX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FcosX); +PASCAL_SUBTRAP(ROMlib_FcosX, 0xA9EC, Pack5); extern void C_ROMlib_FtanX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FtanX); +PASCAL_SUBTRAP(ROMlib_FtanX, 0xA9EC, Pack5); extern void C_ROMlib_FatanX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FatanX); +PASCAL_SUBTRAP(ROMlib_FatanX, 0xA9EC, Pack5); extern void C_ROMlib_FrandX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FrandX); +PASCAL_SUBTRAP(ROMlib_FrandX, 0xA9EC, Pack5); extern void C_ROMlib_Fdec2str(DecForm *sp2, Decimal *sp, Decstr dp); -PASCAL_FUNCTION(ROMlib_Fdec2str); +PASCAL_SUBTRAP(ROMlib_Fdec2str, 0xA9EE, Pack7); extern void C_ROMlib_Fxstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp, INTEGER lastchar); PASCAL_FUNCTION(ROMlib_Fxstr2dec); extern void C_ROMlib_Fcstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); -PASCAL_FUNCTION(ROMlib_Fcstr2dec); +PASCAL_SUBTRAP(ROMlib_Fcstr2dec, 0xA9EE, Pack7); extern void C_ROMlib_Fpstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); -PASCAL_FUNCTION(ROMlib_Fpstr2dec); +PASCAL_SUBTRAP(ROMlib_Fpstr2dec, 0xA9EE, Pack7); extern void C_ROMlib_Fsethv(LONGINT *hvp, unsigned short sel); PASCAL_FUNCTION(ROMlib_Fsethv); extern void C_ROMlib_Fgethv(LONGINT *hvp, unsigned short sel); diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index ae58e6b1..5029e9b4 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -229,122 +229,122 @@ enum const LowMemGlobal TESysJust { 0xBAC }; // ScriptMgr ToolEqu.a (true-b); extern LONGINT C_VisibleLength(Ptr textp, LONGINT len); -PASCAL_FUNCTION(VisibleLength); +PASCAL_SUBTRAP(VisibleLength, 0xA8B5, ScriptUtil); extern void C_LongDate2Secs(LongDateRec *ldatep, GUEST *secs_outp); -PASCAL_FUNCTION(LongDate2Secs); +PASCAL_SUBTRAP(LongDate2Secs, 0xA8B5, ScriptUtil); extern void C_LongSecs2Date(GUEST *secs_inp, LongDateRec *ldatep); -PASCAL_FUNCTION(LongSecs2Date); +PASCAL_SUBTRAP(LongSecs2Date, 0xA8B5, ScriptUtil); extern LONGINT C_GetEnvirons(INTEGER verb); -PASCAL_FUNCTION(GetEnvirons); +PASCAL_SUBTRAP(GetEnvirons, 0xA8B5, ScriptUtil); extern OSErr C_SetEnvirons(INTEGER verb, LONGINT param); -PASCAL_FUNCTION(SetEnvirons); +PASCAL_SUBTRAP(SetEnvirons, 0xA8B5, ScriptUtil); extern LONGINT C_GetScript(INTEGER script, INTEGER verb); -PASCAL_FUNCTION(GetScript); +PASCAL_SUBTRAP(GetScript, 0xA8B5, ScriptUtil); extern OSErr C_SetScript(INTEGER script, INTEGER verb, LONGINT param); -PASCAL_FUNCTION(SetScript); +PASCAL_SUBTRAP(SetScript, 0xA8B5, ScriptUtil); extern INTEGER C_Font2Script(INTEGER fontnum); -PASCAL_FUNCTION(Font2Script); +PASCAL_SUBTRAP(Font2Script, 0xA8B5, ScriptUtil); extern INTEGER C_Transliterate(Handle srch, Handle dsth, INTEGER target, LONGINT srcmask); -PASCAL_FUNCTION(Transliterate); +PASCAL_SUBTRAP(Transliterate, 0xA8B5, ScriptUtil); extern INTEGER C_FontScript(void); -PASCAL_FUNCTION(FontScript); +PASCAL_SUBTRAP(FontScript, 0xA8B5, ScriptUtil); extern INTEGER C_IntlScript(void); -PASCAL_FUNCTION(IntlScript); +PASCAL_SUBTRAP(IntlScript, 0xA8B5, ScriptUtil); extern void C_KeyScript(INTEGER scriptcode); -PASCAL_FUNCTION(KeyScript); +PASCAL_SUBTRAP(KeyScript, 0xA8B5, ScriptUtil); extern INTEGER C_CharType(Ptr textbufp, INTEGER offset); -PASCAL_FUNCTION(CharType); +PASCAL_SUBTRAP(CharType, 0xA8B5, ScriptUtil); extern void C_MeasureJust(Ptr textbufp, INTEGER length, INTEGER slop, Ptr charlocs); -PASCAL_FUNCTION(MeasureJust); +PASCAL_SUBTRAP(MeasureJust, 0xA8B5, ScriptUtil); extern INTEGER C_Pixel2Char(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER pixwidth, BOOLEAN *leftsidep); -PASCAL_FUNCTION(Pixel2Char); +PASCAL_SUBTRAP(Pixel2Char, 0xA8B5, ScriptUtil); extern INTEGER C_Char2Pixel(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER offset, SignedByte dir); -PASCAL_FUNCTION(Char2Pixel); +PASCAL_SUBTRAP(Char2Pixel, 0xA8B5, ScriptUtil); extern void C_FindWord(Ptr textbufp, INTEGER length, INTEGER offset, BOOLEAN leftside, Ptr breaks, GUEST *offsets); -PASCAL_FUNCTION(FindWord); +PASCAL_SUBTRAP(FindWord, 0xA8B5, ScriptUtil); extern void C_HiliteText(Ptr textbufp, INTEGER firstoffset, INTEGER secondoffset, GUEST *offsets); -PASCAL_FUNCTION(HiliteText); +PASCAL_SUBTRAP(HiliteText, 0xA8B5, ScriptUtil); extern void C_DrawJust(Ptr textbufp, INTEGER length, INTEGER slop); -PASCAL_FUNCTION(DrawJust); +PASCAL_SUBTRAP(DrawJust, 0xA8B5, ScriptUtil); extern String2DateStatus C_String2Time(Ptr textp, LONGINT len, Ptr cachep, GUEST *lenusedp, GUEST *datetimep); -PASCAL_FUNCTION(String2Time); +PASCAL_SUBTRAP(String2Time, 0xA8B5, ScriptUtil); extern INTEGER GetMBarHeight(void); extern INTEGER GetSysJust(void); extern void SetSysJust(INTEGER just); extern OSErr C_InitDateCache(DateCachePtr theCache); -PASCAL_FUNCTION(InitDateCache); +PASCAL_SUBTRAP(InitDateCache, 0xA8B5, ScriptUtil); extern INTEGER C_CharByte(Ptr textBuf, INTEGER textOffset); -PASCAL_FUNCTION(CharByte); +PASCAL_SUBTRAP(CharByte, 0xA8B5, ScriptUtil); extern String2DateStatus C_String2Date(Ptr text, int32_t length, DateCachePtr cache, GUEST *length_used_ret, LongDatePtr date_time); -PASCAL_FUNCTION(String2Date); +PASCAL_SUBTRAP(String2Date, 0xA8B5, ScriptUtil); extern StyledLineBreakCode C_StyledLineBreak(Ptr textp, int32_t length, int32_t text_start, int32_t text_end, int32_t flags, GUEST *text_width_fp, GUEST *text_offset); -PASCAL_FUNCTION(StyledLineBreak); +PASCAL_SUBTRAP(StyledLineBreak, 0xA8B5, ScriptUtil); extern void C_NMeasureJust(Ptr text, int32_t length, Fixed slop, Ptr charLocs, JustStyleCode run_pos, Point numer, Point denom); -PASCAL_FUNCTION(NMeasureJust); +PASCAL_SUBTRAP(NMeasureJust, 0xA8B5, ScriptUtil); extern Boolean C_ParseTable(CharByteTable table); -PASCAL_FUNCTION(ParseTable); +PASCAL_SUBTRAP(ParseTable, 0xA8B5, ScriptUtil); extern Boolean C_FillParseTable(CharByteTable table, ScriptCode script); -PASCAL_FUNCTION(FillParseTable); +PASCAL_SUBTRAP(FillParseTable, 0xA8B5, ScriptUtil); extern INTEGER C_ReplaceText(Handle base_text, Handle subst_text, Str15 key); -PASCAL_FUNCTION(ReplaceText); +PASCAL_SUBTRAP(ReplaceText, 0xA8B5, ScriptUtil); extern INTEGER C_TruncString(INTEGER width, Str255 string, TruncCode code); -PASCAL_FUNCTION(TruncString); +PASCAL_SUBTRAP(TruncString, 0xA8B5, ScriptUtil); extern FormatStatus C_StringToExtended(Str255 string, NumFormatStringRec *formatp, NumberParts *partsp, Extended80 *xp); -PASCAL_FUNCTION(StringToExtended); +PASCAL_SUBTRAP(StringToExtended, 0xA8B5, ScriptUtil); extern FormatStatus C_ExtendedToString(Extended80 *xp, NumFormatStringRec *formatp, NumberParts *partsp, Str255 string); -PASCAL_FUNCTION(ExtendedToString); +PASCAL_SUBTRAP(ExtendedToString, 0xA8B5, ScriptUtil); extern FormatStatus C_StringToFormatRec(Str255 in_string, NumberParts *partsp, NumFormatStringRec *out_string); -PASCAL_FUNCTION(StringToFormatRec); +PASCAL_SUBTRAP(StringToFormatRec, 0xA8B5, ScriptUtil); extern ToggleResults C_ToggleDate(LongDateTime *lsecsp, LongDateField field, DateDelta delta, INTEGER ch, TogglePB *paramsp); -PASCAL_FUNCTION(ToggleDate); +PASCAL_SUBTRAP(ToggleDate, 0xA8B5, ScriptUtil); extern Fixed C_PortionLine( Ptr textPtr, @@ -352,7 +352,7 @@ extern Fixed C_PortionLine( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(PortionLine); +PASCAL_SUBTRAP(PortionLine, 0xA8B5, ScriptUtil); extern void C_DrawJustified( Ptr textPtr, @@ -361,13 +361,13 @@ extern void C_DrawJustified( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(DrawJustified); +PASCAL_SUBTRAP(DrawJustified, 0xA8B5, ScriptUtil); extern ScriptRunStatus C_FindScriptRun( Ptr textPtr, LONGINT textLen, GUEST *lenUsedp); -PASCAL_FUNCTION(FindScriptRun); +PASCAL_SUBTRAP(FindScriptRun, 0xA8B5, ScriptUtil); extern INTEGER C_PixelToChar( Ptr textBuf, @@ -379,7 +379,7 @@ extern INTEGER C_PixelToChar( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(PixelToChar); +PASCAL_SUBTRAP(PixelToChar, 0xA8B5, ScriptUtil); extern INTEGER C_CharToPixel( Ptr textBuf, @@ -390,31 +390,31 @@ extern INTEGER C_CharToPixel( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(CharToPixel); +PASCAL_SUBTRAP(CharToPixel, 0xA8B5, ScriptUtil); extern void C_LowercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(LowercaseText); +PASCAL_SUBTRAP(LowercaseText, 0xA8B5, ScriptUtil); extern void C_UppercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(UppercaseText); +PASCAL_SUBTRAP(UppercaseText, 0xA8B5, ScriptUtil); extern void C_StripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(StripDiacritics); +PASCAL_SUBTRAP(StripDiacritics, 0xA8B5, ScriptUtil); extern void C_UppercaseStripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(UppercaseStripDiacritics); +PASCAL_SUBTRAP(UppercaseStripDiacritics, 0xA8B5, ScriptUtil); extern INTEGER C_CharacterByteType(Ptr textBuf, INTEGER textOffset, ScriptCode script); diff --git a/src/include/SegmentLdr.h b/src/include/SegmentLdr.h index a410770e..55245819 100644 --- a/src/include/SegmentLdr.h +++ b/src/include/SegmentLdr.h @@ -69,7 +69,6 @@ extern void C_UnloadSeg(Ptr addr); PASCAL_TRAP(UnloadSeg, 0xA9F1); extern void C_LoadSeg(INTEGER volatile segno); -PASCAL_FUNCTION(LoadSeg); #endif } diff --git a/src/include/ShutDown.h b/src/include/ShutDown.h index 46239072..3c7fb948 100644 --- a/src/include/ShutDown.h +++ b/src/include/ShutDown.h @@ -13,12 +13,12 @@ enum }; extern void C_ShutDwnPower(void); -PASCAL_FUNCTION(ShutDwnPower); +PASCAL_SUBTRAP(ShutDwnPower, 0xA895, ShutDown); extern void C_ShutDwnStart(void); -PASCAL_FUNCTION(ShutDwnStart); +PASCAL_SUBTRAP(ShutDwnStart, 0xA895, ShutDown); extern void C_ShutDwnInstall(ProcPtr shutdown_proc, int16_t flags); -PASCAL_FUNCTION(ShutDwnInstall); +PASCAL_SUBTRAP(ShutDwnInstall, 0xA895, ShutDown); extern void C_ShutDwnRemove(ProcPtr shutdown_proc); -PASCAL_FUNCTION(ShutDwnRemove); +PASCAL_SUBTRAP(ShutDwnRemove, 0xA895, ShutDown); } diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index fe16f035..ac6e57b3 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -216,172 +216,172 @@ typedef uint32_t UnsignedFixed; typedef Ptr CompressionInfoPtr; extern void C_SndGetSysBeepState(GUEST *statep); -PASCAL_FUNCTION(SndGetSysBeepState); +PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, SoundDispatch); extern OSErr C_SndSetSysBeepState(INTEGER state); -PASCAL_FUNCTION(SndSetSysBeepState); +PASCAL_SUBTRAP(SndSetSysBeepState, 0xA800, SoundDispatch); extern OSErr C_SndChannelStatus(SndChannelPtr chanp, INTEGER length, SCStatusPtr statusp); -PASCAL_FUNCTION(SndChannelStatus); +PASCAL_SUBTRAP(SndChannelStatus, 0xA800, SoundDispatch); extern OSErr C_SndManagerStatus(INTEGER length, SMStatusPtr statusp); -PASCAL_FUNCTION(SndManagerStatus); +PASCAL_SUBTRAP(SndManagerStatus, 0xA800, SoundDispatch); extern NumVersion C_SndSoundManagerVersion(void); -PASCAL_FUNCTION(SndSoundManagerVersion); +PASCAL_SUBTRAP(SndSoundManagerVersion, 0xA800, SoundDispatch); extern NumVersion C_MACEVersion(void); -PASCAL_FUNCTION(MACEVersion); +PASCAL_SUBTRAP(MACEVersion, 0xA800, SoundDispatch); extern NumVersion C_SPBVersion(void); -PASCAL_FUNCTION(SPBVersion); +PASCAL_SUBTRAP(SPBVersion, 0xA800, SoundDispatch); extern OSErr C_SndStartFilePlay(SndChannelPtr chanp, INTEGER refnum, INTEGER resnum, LONGINT buffersize, Ptr bufferp, AudioSelectionPtr theselectionp, ProcPtr completionp, BOOLEAN async); -PASCAL_FUNCTION(SndStartFilePlay); +PASCAL_SUBTRAP(SndStartFilePlay, 0xA800, SoundDispatch); extern OSErr C_SndPauseFilePlay(SndChannelPtr chanp); -PASCAL_FUNCTION(SndPauseFilePlay); +PASCAL_SUBTRAP(SndPauseFilePlay, 0xA800, SoundDispatch); extern OSErr C_SndStopFilePlay(SndChannelPtr chanp, BOOLEAN async); -PASCAL_FUNCTION(SndStopFilePlay); +PASCAL_SUBTRAP(SndStopFilePlay, 0xA800, SoundDispatch); extern OSErr C_SndPlayDoubleBuffer(SndChannelPtr chanp, SndDoubleBufferHeaderPtr paramp); -PASCAL_FUNCTION(SndPlayDoubleBuffer); +PASCAL_SUBTRAP(SndPlayDoubleBuffer, 0xA800, SoundDispatch); extern void C_Comp3to1(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_FUNCTION(Comp3to1); +PASCAL_SUBTRAP(Comp3to1, 0xA800, SoundDispatch); extern void C_Comp6to1(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_FUNCTION(Comp6to1); +PASCAL_SUBTRAP(Comp6to1, 0xA800, SoundDispatch); extern void C_Exp1to3(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_FUNCTION(Exp1to3); +PASCAL_SUBTRAP(Exp1to3, 0xA800, SoundDispatch); extern void C_Exp1to6(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_FUNCTION(Exp1to6); +PASCAL_SUBTRAP(Exp1to6, 0xA800, SoundDispatch); extern OSErr C_SndRecord(ProcPtr filterp, Point corner, OSType quality, GUEST *sndhandlep); -PASCAL_FUNCTION(SndRecord); +PASCAL_SUBTRAP(SndRecord, 0xA800, SoundDispatch); extern OSErr C_SndRecordToFile(ProcPtr filterp, Point corner, OSType quality, INTEGER refnum); -PASCAL_FUNCTION(SndRecordToFile); +PASCAL_SUBTRAP(SndRecordToFile, 0xA800, SoundDispatch); extern OSErr C_SPBOpenDevice(Str255 name, INTEGER permission, GUEST *inrefnump); -PASCAL_FUNCTION(SPBOpenDevice); +PASCAL_SUBTRAP(SPBOpenDevice, 0xA800, SoundDispatch); extern OSErr C_SPBCloseDevice(LONGINT inrefnum); -PASCAL_FUNCTION(SPBCloseDevice); +PASCAL_SUBTRAP(SPBCloseDevice, 0xA800, SoundDispatch); extern OSErr C_SPBRecord(SPBPtr inparamp, BOOLEAN async); -PASCAL_FUNCTION(SPBRecord); +PASCAL_SUBTRAP(SPBRecord, 0xA800, SoundDispatch); extern OSErr C_SPBRecordToFile(INTEGER refnum, SPBPtr inparamp, BOOLEAN async); -PASCAL_FUNCTION(SPBRecordToFile); +PASCAL_SUBTRAP(SPBRecordToFile, 0xA800, SoundDispatch); extern OSErr C_SPBPauseRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBPauseRecording); +PASCAL_SUBTRAP(SPBPauseRecording, 0xA800, SoundDispatch); extern OSErr C_SPBResumeRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBResumeRecording); +PASCAL_SUBTRAP(SPBResumeRecording, 0xA800, SoundDispatch); extern OSErr C_SPBStopRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBStopRecording); +PASCAL_SUBTRAP(SPBStopRecording, 0xA800, SoundDispatch); extern OSErr C_SPBGetRecordingStatus(LONGINT refnum, GUEST *recordingstatus, GUEST *meterlevel, GUEST *totalsampstorecord, GUEST *numsampsrecorded, GUEST *totalmsecstorecord, GUEST *numbermsecsrecorded); -PASCAL_FUNCTION(SPBGetRecordingStatus); +PASCAL_SUBTRAP(SPBGetRecordingStatus, 0xA800, SoundDispatch); extern OSErr C_SPBGetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_FUNCTION(SPBGetDeviceInfo); +PASCAL_SUBTRAP(SPBGetDeviceInfo, 0xA800, SoundDispatch); extern OSErr C_SPBSetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_FUNCTION(SPBSetDeviceInfo); +PASCAL_SUBTRAP(SPBSetDeviceInfo, 0xA800, SoundDispatch); extern OSErr C_SetupSndHeader(Handle sndhandle, INTEGER numchannels, Fixed rate, INTEGER size, OSType compresion, INTEGER basefreq, LONGINT numbytes, GUEST *headerlenp); -PASCAL_FUNCTION(SetupSndHeader); +PASCAL_SUBTRAP(SetupSndHeader, 0xA800, SoundDispatch); extern OSErr C_SetupAIFFHeader(INTEGER refnum, INTEGER numchannels, Fixed samplerate, INTEGER samplesize, OSType compression, LONGINT numbytes, LONGINT numframes); -PASCAL_FUNCTION(SetupAIFFHeader); +PASCAL_SUBTRAP(SetupAIFFHeader, 0xA800, SoundDispatch); extern OSErr C_SPBSignInDevice(INTEGER refnum, Str255 name); -PASCAL_FUNCTION(SPBSignInDevice); +PASCAL_SUBTRAP(SPBSignInDevice, 0xA800, SoundDispatch); extern OSErr C_SPBSignOutDevice(INTEGER refnum); -PASCAL_FUNCTION(SPBSignOutDevice); +PASCAL_SUBTRAP(SPBSignOutDevice, 0xA800, SoundDispatch); extern OSErr C_SPBGetIndexedDevice(INTEGER count, Str255 name, GUEST *deviceiconhandlep); -PASCAL_FUNCTION(SPBGetIndexedDevice); +PASCAL_SUBTRAP(SPBGetIndexedDevice, 0xA800, SoundDispatch); extern OSErr C_SPBMillisecondsToBytes(LONGINT refnum, GUEST *millip); -PASCAL_FUNCTION(SPBMillisecondsToBytes); +PASCAL_SUBTRAP(SPBMillisecondsToBytes, 0xA800, SoundDispatch); extern OSErr C_SPBBytesToMilliseconds(LONGINT refnum, GUEST *bytecountp); -PASCAL_FUNCTION(SPBBytesToMilliseconds); +PASCAL_SUBTRAP(SPBBytesToMilliseconds, 0xA800, SoundDispatch); extern OSErr C_GetSysBeepVolume(GUEST *levelp); -PASCAL_FUNCTION(GetSysBeepVolume); +PASCAL_SUBTRAP(GetSysBeepVolume, 0xA800, SoundDispatch); extern OSErr C_SetSysBeepVolume(LONGINT level); -PASCAL_FUNCTION(SetSysBeepVolume); +PASCAL_SUBTRAP(SetSysBeepVolume, 0xA800, SoundDispatch); extern OSErr C_GetDefaultOutputVolume(GUEST *levelp); -PASCAL_FUNCTION(GetDefaultOutputVolume); +PASCAL_SUBTRAP(GetDefaultOutputVolume, 0xA800, SoundDispatch); extern OSErr C_SetDefaultOutputVolume(LONGINT level); -PASCAL_FUNCTION(SetDefaultOutputVolume); +PASCAL_SUBTRAP(SetDefaultOutputVolume, 0xA800, SoundDispatch); extern OSErr C_GetSoundHeaderOffset(Handle sndHandle, GUEST *offset); -PASCAL_FUNCTION(GetSoundHeaderOffset); +PASCAL_SUBTRAP(GetSoundHeaderOffset, 0xA800, SoundDispatch); extern UnsignedFixed C_UnsignedFixedMulDiv(UnsignedFixed value, UnsignedFixed multiplier, UnsignedFixed divisor); -PASCAL_FUNCTION(UnsignedFixedMulDiv); +PASCAL_SUBTRAP(UnsignedFixedMulDiv, 0xA800, SoundDispatch); extern OSErr C_GetCompressionInfo(INTEGER compressionID, OSType format, INTEGER numChannels, INTEGER sampleSize, CompressionInfoPtr cp); -PASCAL_FUNCTION(GetCompressionInfo); +PASCAL_SUBTRAP(GetCompressionInfo, 0xA800, SoundDispatch); extern OSErr C_SetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_FUNCTION(SetSoundPreference); +PASCAL_SUBTRAP(SetSoundPreference, 0xA800, SoundDispatch); extern OSErr C_GetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_FUNCTION(GetSoundPreference); +PASCAL_SUBTRAP(GetSoundPreference, 0xA800, SoundDispatch); extern OSErr C_SndGetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_FUNCTION(SndGetInfo); +PASCAL_SUBTRAP(SndGetInfo, 0xA800, SoundDispatch); extern OSErr C_SndSetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_FUNCTION(SndSetInfo); +PASCAL_SUBTRAP(SndSetInfo, 0xA800, SoundDispatch); extern void StartSound(Ptr srec, LONGINT nb, ProcPtr comp); extern void StopSound(void); diff --git a/src/include/StdFilePkg.h b/src/include/StdFilePkg.h index c7e8cb86..823fd128 100644 --- a/src/include/StdFilePkg.h +++ b/src/include/StdFilePkg.h @@ -108,29 +108,29 @@ extern void P_ROMlib_filebox(DialogPeek dp, INTEGER which); extern void C_SFPPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep, INTEGER dig, ModalFilterProcPtr fp); -PASCAL_FUNCTION(SFPPutFile); +PASCAL_SUBTRAP(SFPPutFile, 0xA9EA, Pack3); extern void C_SFPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep); -PASCAL_FUNCTION(SFPutFile); +PASCAL_SUBTRAP(SFPutFile, 0xA9EA, Pack3); extern void C_SFPGetFile(Point p, StringPtr prompt, FileFilterProcPtr filef, INTEGER numt, GUEST tl, DlgHookProcPtr dh, SFReply *rep, INTEGER dig, ModalFilterProcPtr fp); -PASCAL_FUNCTION(SFPGetFile); +PASCAL_SUBTRAP(SFPGetFile, 0xA9EA, Pack3); extern void C_SFGetFile(Point p, StringPtr prompt, FileFilterProcPtr filef, INTEGER numt, GUEST tl, DlgHookProcPtr dh, SFReply *rep); -PASCAL_FUNCTION(SFGetFile); +PASCAL_SUBTRAP(SFGetFile, 0xA9EA, Pack3); extern void C_StandardGetFile(FileFilterProcPtr filef, INTEGER numt, GUEST tl, StandardFileReply *replyp); -PASCAL_FUNCTION(StandardGetFile); +PASCAL_SUBTRAP(StandardGetFile, 0xA9EA, Pack3); extern void C_StandardPutFile(Str255 prompt, Str255 defaultname, StandardFileReply *replyp); -PASCAL_FUNCTION(StandardPutFile); +PASCAL_SUBTRAP(StandardPutFile, 0xA9EA, Pack3); extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, StandardFileReply *replyp, @@ -140,7 +140,7 @@ extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_FUNCTION(CustomPutFile); +PASCAL_SUBTRAP(CustomPutFile, 0xA9EA, Pack3); extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, INTEGER numtypes, @@ -152,7 +152,7 @@ extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_FUNCTION(CustomGetFile); +PASCAL_SUBTRAP(CustomGetFile, 0xA9EA, Pack3); } #endif /* __STDFILE__ */ diff --git a/src/include/TextEdit.h b/src/include/TextEdit.h index c0ddbe95..5d70db54 100644 --- a/src/include/TextEdit.h +++ b/src/include/TextEdit.h @@ -584,49 +584,49 @@ PASCAL_TRAP(TEStylNew, 0xA83E); extern void C_SetStylHandle(TEStyleHandle theHandle, TEHandle teh); -PASCAL_FUNCTION(SetStylHandle); +PASCAL_SUBTRAP(SetStylHandle, 0xA83D, TEDispatch); extern TEStyleHandle C_GetStylHandle(TEHandle teh); -PASCAL_FUNCTION(GetStylHandle); +PASCAL_SUBTRAP(GetStylHandle, 0xA83D, TEDispatch); extern StScrpHandle C_GetStylScrap(TEHandle teh); -PASCAL_FUNCTION(GetStylScrap); +PASCAL_SUBTRAP(GetStylScrap, 0xA83D, TEDispatch); extern void C_TEStylInsert(Ptr text, LONGINT length, StScrpHandle hST, TEHandle teh); -PASCAL_FUNCTION(TEStylInsert); +PASCAL_SUBTRAP(TEStylInsert, 0xA83D, TEDispatch); extern INTEGER C_TEGetOffset(Point pt, TEHandle teh); PASCAL_TRAP(TEGetOffset, 0xA83C); extern LONGINT C_TEGetPoint(INTEGER offset, TEHandle teh); -PASCAL_FUNCTION(TEGetPoint); +PASCAL_SUBTRAP(TEGetPoint, 0xA83D, TEDispatch); extern int32_t C_TEGetHeight(LONGINT endLine, LONGINT startLine, TEHandle teh); -PASCAL_FUNCTION(TEGetHeight); +PASCAL_SUBTRAP(TEGetHeight, 0xA83D, TEDispatch); extern void C_TEGetStyle(INTEGER offset, TextStyle *theStyle, GUEST *lineHeight, GUEST *fontAscent, TEHandle teh); -PASCAL_FUNCTION(TEGetStyle); +PASCAL_SUBTRAP(TEGetStyle, 0xA83D, TEDispatch); extern void C_TEStylPaste(TEHandle teh); -PASCAL_FUNCTION(TEStylPaste); +PASCAL_SUBTRAP(TEStylPaste, 0xA83D, TEDispatch); extern void C_TESetStyle(INTEGER mode, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(TESetStyle); +PASCAL_SUBTRAP(TESetStyle, 0xA83D, TEDispatch); extern void C_TEReplaceStyle(INTEGER mode, TextStyle *oldStyle, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(TEReplaceStyle); +PASCAL_SUBTRAP(TEReplaceStyle, 0xA83D, TEDispatch); extern BOOLEAN C_TEContinuousStyle(GUEST *modep, TextStyle *thestyle, TEHandle teh); -PASCAL_FUNCTION(TEContinuousStyle); +PASCAL_SUBTRAP(TEContinuousStyle, 0xA83D, TEDispatch); extern void C_SetStylScrap(LONGINT start, LONGINT stop, StScrpHandle newstyles, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(SetStylScrap); +PASCAL_SUBTRAP(SetStylScrap, 0xA83D, TEDispatch); extern void C_TECustomHook(INTEGER sel, GUEST *addr, TEHandle teh); -PASCAL_FUNCTION(TECustomHook); +PASCAL_SUBTRAP(TECustomHook, 0xA83D, TEDispatch); extern LONGINT C_TENumStyles(LONGINT start, LONGINT stop, TEHandle teh); -PASCAL_FUNCTION(TENumStyles); +PASCAL_SUBTRAP(TENumStyles, 0xA83D, TEDispatch); extern void C_TEInit(void); PASCAL_TRAP(TEInit, 0xA9CC); @@ -663,6 +663,6 @@ extern LONGINT TEGetScrapLen(void); extern void TESetScrapLen(LONGINT ln); extern int16_t C_TEFeatureFlag(int16_t feature, int16_t action, TEHandle te); -PASCAL_FUNCTION(TEFeatureFlag); +PASCAL_SUBTRAP(TEFeatureFlag, 0xA83D, TEDispatch); } #endif /* _TEXTEDIT_H_ */ diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 94f33f6f..0a793b2e 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -258,8 +258,9 @@ class PascalTrap : public PascalFunction, NAME) +#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) const auto NAME = &C_##NAME #define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(PascalFunction, NAME) - +#define NOTRAP_FUNCTION(NAME) const auto NAME = &C_##NAME } diff --git a/util/transformtrapselectors.pl b/util/transformtrapselectors.pl new file mode 100644 index 00000000..07264081 --- /dev/null +++ b/util/transformtrapselectors.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +# This script was used to +# 1. transform calls to PASCAL_FUNCTION to PASCAL_SUBTRAP where appropriate + +use warnings; + +open(TRAPINFO, "trapinfo"); + +my(@l, @F, %traps, %selectors); + +while($l = ) { + @F = split(/[ \t\n]+/,$l); + #print(scalar(@F), " ", $F[1], " | ", $F[1], "\n"); + + $traps{$F[1]} = $F[0] if(@F >= 2); + if(@F > 2) { + for($i = 0; $i < @F; $i++) { + $selectors{$F[$i]} = $F[1]; + } + } +} + +while($f = ) { + open(INCLUDE, $f); + open(OUT, ">temp.h"); + while($l = ) { + if($l =~ /^PASCAL_FUNCTION\(([A-Za-z0-9_]+)\)/) { + $name = $1; + if(exists $selectors{$name}) { + $trapname = $selectors{$name}; + $trapnum = $traps{$trapname}; + print OUT "PASCAL_SUBTRAP($name, $trapnum, $trapname);\n"; + } else { + print OUT $l; + } + } else { + print OUT $l; + } + } + close(OUT); + close(INCLUDE); + system "mv temp.h $f"; +} From a99419ca88d3178b9973c23e41edc6f270ee23b8 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 01:52:20 +0100 Subject: [PATCH 12/88] remove special-case stub for GetResource (the implementation of GetResource now resets D0 to 0, instead of the stub) --- src/emustubs.cpp | 15 --------------- src/emutraptables.cpp | 2 +- src/include/rsys/emustubs.h | 1 - src/resGet.cpp | 3 +++ src/trapinfo | 2 +- 5 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 498b278e..1b476ad7 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -261,21 +261,6 @@ STUB(SetADBInfo) RTS(); } -STUB(_GetResource) -{ - syn68k_addr_t retaddr; - short arg0; - void *retval; - - retaddr = POPADDR(); - arg0 = POPUW(); - retval = C_GetResource(POPUL(), arg0); - WRITEUL(EM_A7, US_TO_SYN68K_CHECK0(retval)); - PUSHADDR(retaddr); - EM_D0 = 0; - RTS(); -} - static void do_selector_error(uint32_t selector, const char *trap_name, diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index fbe9d779..77ede4a4 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -483,7 +483,7 @@ toolstuff_t Executor::toolstuff[0x400] = { { { (void *)&C_GetIndResource, ptoc(&C_GetIndResource) }, 0 }, { { (void *)&C_CountTypes, ptoc(&C_CountTypes) }, 0 }, { { (void *)&C_GetIndType, ptoc(&C_GetIndType) }, 0 }, - { { (void *)&__GetResource, static_cast(-1) }, 0 }, + { { (void *)&C_GetResource, ptoc(&C_GetResource) }, 0 }, { { (void *)&C_GetNamedResource, ptoc(&C_GetNamedResource) }, 0 }, { { (void *)&C_LoadResource, ptoc(&C_LoadResource) }, 0 }, { { (void *)&C_ReleaseResource, ptoc(&C_ReleaseResource) }, 0 }, diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 603b98ff..7dc638d8 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -148,7 +148,6 @@ extern syn68k_addr_t _ScriptUtil(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _PrGlue(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _Dequeue(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _Enqueue(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t __GetResource(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _Secs2Date(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _Date2Secs(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _HandToHand(syn68k_addr_t ignoreme, void **ignoreme2); diff --git a/src/resGet.cpp b/src/resGet.cpp index fe9e720e..5dca446d 100644 --- a/src/resGet.cpp +++ b/src/resGet.cpp @@ -317,6 +317,9 @@ Handle Executor::C_GetResource(ResType typ, INTEGER id) ROMlib_init_xdefs(); } + EM_D0 = 0; // apparently, somebody is relying on D0 being reset to 0 on exit from GetResource... + // (this used to be in emustubs.cpp) + retval = pseudo_get_rom_resource(typ, id); if(retval) /*-->*/ return retval; diff --git a/src/trapinfo b/src/trapinfo index 22780d9b..9991ac03 100644 --- a/src/trapinfo +++ b/src/trapinfo @@ -2476,7 +2476,7 @@ 0xA99D GetIndResource 0xA99E CountTypes 0xA99F GetIndType -0xA9A0 __GetResource +0xA9A0 GetResource 0xA9A1 GetNamedResource 0xA9A2 LoadResource 0xA9A3 ReleaseResource From 060978e8ae0826ab944b756ff04b172e021e04cd Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 02:03:29 +0100 Subject: [PATCH 13/88] fix some PASCAL_FUNCTION annotations --- src/include/QuickDraw.h | 2 +- src/include/SANE.h | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/include/QuickDraw.h b/src/include/QuickDraw.h index e4abe322..546ac98f 100644 --- a/src/include/QuickDraw.h +++ b/src/include/QuickDraw.h @@ -644,7 +644,7 @@ extern void C_PicComment(INTEGER kind, INTEGER size, PASCAL_TRAP(PicComment, 0xA8F2); extern void C_ReadComment(INTEGER kind, INTEGER size, Handle hand); -PASCAL_FUNCTION(ReadComment); + extern void C_KillPicture(PicHandle pic); PASCAL_TRAP(KillPicture, 0xA8F5); extern void C_AddPt(Point src, GUEST *dst); diff --git a/src/include/SANE.h b/src/include/SANE.h index 0a7dd9b7..d6a9a2ee 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -289,7 +289,6 @@ PASCAL_SUBTRAP(ROMlib_Fdec2str, 0xA9EE, Pack7); extern void C_ROMlib_Fxstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp, INTEGER lastchar); -PASCAL_FUNCTION(ROMlib_Fxstr2dec); extern void C_ROMlib_Fcstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); PASCAL_SUBTRAP(ROMlib_Fcstr2dec, 0xA9EE, Pack7); @@ -297,12 +296,12 @@ extern void C_ROMlib_Fpstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); PASCAL_SUBTRAP(ROMlib_Fpstr2dec, 0xA9EE, Pack7); extern void C_ROMlib_Fsethv(LONGINT *hvp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fsethv); +PASCAL_SUBTRAP(ROMlib_Fsethv, 0xA9EB, Pack4); extern void C_ROMlib_Fgethv(LONGINT *hvp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fgethv); +PASCAL_SUBTRAP(ROMlib_Fgethv, 0xA9EB, Pack4); extern void C_ROMlib_FnextX(uint8 *x, uint8 *y, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FnextX); +PASCAL_SUBTRAP(ROMlib_FnextX, 0xA9EB, Pack4); } #endif From a29d17fb344faae50f9eaea6f1fcba639fa65627 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 19:24:30 +0100 Subject: [PATCH 14/88] move away from manually-maintained pstuff array this involved a lot of minor adjustness to the accuracy of function pointer types and to const correctness --- src/PSprint.cpp | 2 +- src/aboutbox.cpp | 10 ++--- src/adb.cpp | 6 +-- src/ctlArrows.cpp | 4 +- src/ctlMisc.cpp | 20 +++++----- src/ctlMouse.cpp | 18 ++++----- src/ctlPopup.cpp | 2 +- src/dialAlert.cpp | 8 ++-- src/dialDispatch.cpp | 2 +- src/dialHandle.cpp | 54 ++++++++------------------ src/dialInit.cpp | 2 +- src/dump.cpp | 66 ++++++++++++++++---------------- src/emustubs.cpp | 4 +- src/emutraptables.cpp | 10 ++--- src/executor.cpp | 11 +++--- src/functions.cpp | 58 +++++++++++++++++++++++++++- src/gestalt.cpp | 4 +- src/hfsHelper.cpp | 2 +- src/include/ADB.h | 4 +- src/include/ControlMgr.h | 10 +++-- src/include/DialogMgr.h | 14 ++++--- src/include/ExMacTypes.h | 3 -- src/include/ListMgr.h | 1 + src/include/PrintMgr.h | 22 ++++++----- src/include/QuickDraw.h | 63 +++++++++++++++---------------- src/include/SANE.h | 2 - src/include/StdFilePkg.h | 2 +- src/include/rsys/adb.h | 1 + src/include/rsys/ctl.h | 8 +++- src/include/rsys/emustubs.h | 6 ++- src/include/rsys/functions.h | 73 +++++++++++++++++++++++++++--------- src/include/rsys/gestalt.h | 1 + src/include/rsys/list.h | 5 ++- src/include/rsys/menu.h | 10 +++-- src/include/rsys/nextprint.h | 2 +- src/include/rsys/osutil.h | 1 + src/include/rsys/print.h | 12 ++---- src/include/rsys/pstuff.h | 2 +- src/include/rsys/refresh.h | 1 + src/include/rsys/soundopts.h | 2 + src/include/rsys/stdbits.h | 4 +- src/include/rsys/stdfile.h | 5 ++- src/include/rsys/tesave.h | 2 + src/include/rsys/trapglue.h | 1 + src/include/rsys/vbl.h | 1 + src/include/rsys/wind.h | 10 +++-- src/launch.cpp | 28 ++++++-------- src/listAccess.cpp | 6 +-- src/listDisplay.cpp | 4 +- src/listMouse.cpp | 4 +- src/main.cpp | 3 +- src/menu.cpp | 8 ++-- src/osutil.cpp | 2 +- src/prLowLevel.cpp | 62 +++++++++++++++--------------- src/prPrinting.cpp | 66 ++++++++++++++++---------------- src/prRecords.cpp | 4 +- src/qBit.cpp | 2 +- src/qColorPicker.cpp | 2 +- src/qHooks.cpp | 46 +++++++++++------------ src/qIMV.cpp | 40 ++++++++++---------- src/qPicstuff.cpp | 4 +- src/qStandard.cpp | 26 ++++++------- src/qStdBits.cpp | 8 ++-- src/refresh.cpp | 2 +- src/resGet.cpp | 41 ++++++++++---------- src/sound.cpp | 6 +-- src/soundIMVI.cpp | 2 +- src/stdfile.cpp | 21 ++++++----- src/system_error.cpp | 2 +- src/teInit.cpp | 2 +- src/teMisc.cpp | 2 +- src/time.cpp | 16 ++++---- src/toolevent.cpp | 2 +- src/vbl.cpp | 2 +- src/windMisc.cpp | 8 ++-- 75 files changed, 535 insertions(+), 437 deletions(-) diff --git a/src/PSprint.cpp b/src/PSprint.cpp index df7f2c9a..2f53c21e 100644 --- a/src/PSprint.cpp +++ b/src/PSprint.cpp @@ -1359,7 +1359,7 @@ num_image_bytes(int numbytes, int pixelsize, int direct_color_p) #define ROWMASK 0x1FFF #endif -void Executor::NeXTPrBits(BitMap *srcbmp, Rect *srcrp, Rect *dstrp, +void Executor::NeXTPrBits(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, LONGINT mode, RgnHandle mask, GrafPtr thePortp) { float scalex, scaley; diff --git a/src/aboutbox.cpp b/src/aboutbox.cpp index 1a1e18b7..0daef630 100644 --- a/src/aboutbox.cpp +++ b/src/aboutbox.cpp @@ -117,7 +117,7 @@ static struct static WindowPtr about_box; static ControlHandle about_scrollbar; static TEHandle about_te; -static ProcPtr scroll_bar_callback; +static ControlActionUPP scroll_bar_callback; enum { @@ -649,7 +649,7 @@ event_loop(bool executor_p) if(TrackControl(c, local_pt, (part == inThumb - ? (ProcPtr)-1 + ? (ControlActionUPP)-1 : scroll_bar_callback)) == inThumb) { @@ -664,7 +664,7 @@ event_loop(bool executor_p) old_scroll_bar_value = GetCtlValue(about_scrollbar); } - else if(TrackControl(c, local_pt, (ProcPtr)-1) + else if(TrackControl(c, local_pt, (ControlActionUPP)-1) == inButton) { int new_text; @@ -702,8 +702,8 @@ void Executor::do_about_box(void) { busy_p = true; /* Only allow one about box at a time. */ - if(scroll_bar_callback == 0) - scroll_bar_callback = (ProcPtr)SYN68K_TO_US(callback_install(scroll_stub, NULL)); + if(scroll_bar_callback == nullptr) + scroll_bar_callback = (ControlActionUPP)SYN68K_TO_US(callback_install(scroll_stub, NULL)); { TheZoneGuard guard(LM(SysZone)); diff --git a/src/adb.cpp b/src/adb.cpp index ae2c2600..4e078401 100644 --- a/src/adb.cpp +++ b/src/adb.cpp @@ -64,7 +64,7 @@ enum SPOOFED_MOUSE_ADDR = 3 }; -static GUEST adb_service_procp = nullptr; /* stored as though in lowglobal */ +static GUEST adb_service_procp = nullptr; /* stored as though in lowglobal */ static Ptr adb_data_ptr = (Ptr)0x90ABCDEF; void @@ -91,7 +91,7 @@ Executor::GetIndADB(ADBDataBlock *adbp, INTEGER index) adbp->devType = CB(0); /* should check on Mac to see what mouse is */ adbp->origADBAddr = CB(SPOOFED_MOUSE_ADDR); if(!adb_service_procp) - adb_service_procp = RM((Ptr)P_adb_service_stub); + adb_service_procp = RM((ProcPtr)&adb_service_stub); adbp->dbServiceRtPtr = adb_service_procp; adbp->dbDataAreaAddr = RM(adb_data_ptr); retval = SPOOFED_MOUSE_ADDR; @@ -132,7 +132,7 @@ Executor::SetADBInfo(ADBSetInfoBlock *adbp, INTEGER address) static bool adb_vector_is_not_our_own(void) { - return adb_service_procp && adb_service_procp != RM((Ptr)P_adb_service_stub); + return adb_service_procp && adb_service_procp != RM((ProcPtr)&adb_service_stub); } static void diff --git a/src/ctlArrows.cpp b/src/ctlArrows.cpp index e39495c0..d8298885 100644 --- a/src/ctlArrows.cpp +++ b/src/ctlArrows.cpp @@ -731,7 +731,7 @@ LONGINT Executor::C_cdef16(INTEGER var, ControlHandle c, INTEGER mess, RectRgn(rh, &HxX(c, contrlRect)); dlp.ctl = c; dlp.param = param; - DeviceLoop(rh, (DeviceLoopDrawingProcPtr)P_new_draw_scroll, ptr_to_longint(&dlp), 0); + DeviceLoop(rh, &new_draw_scroll, ptr_to_longint(&dlp), 0); DisposeRgn(rh); } SetPenState(&ps); @@ -789,7 +789,7 @@ LONGINT Executor::C_cdef16(INTEGER var, ControlHandle c, INTEGER mess, RectRgn(rh, &HxX(c, contrlRect)); dlp.ctl = c; dlp.param = param; - DeviceLoop(rh, (DeviceLoopDrawingProcPtr)P_new_pos_ctl, ptr_to_longint(&dlp), 0); + DeviceLoop(rh, &new_pos_ctl, ptr_to_longint(&dlp), 0); DisposeRgn(rh); } break; diff --git a/src/ctlMisc.cpp b/src/ctlMisc.cpp index 8226ba37..5c70a098 100644 --- a/src/ctlMisc.cpp +++ b/src/ctlMisc.cpp @@ -125,15 +125,15 @@ LONGINT Executor::C_GetCRefCon(ControlHandle c) /* IMI-327 */ return Hx(c, contrlRfCon); } -void Executor::C_SetCtlAction(ControlHandle c, ProcPtr a) /* IMI-328 */ +void Executor::C_SetCtlAction(ControlHandle c, ControlActionUPP a) /* IMI-328 */ { - if(a != (ProcPtr)-1) + if(a != (ControlActionUPP)-1) HxX(c, contrlAction) = RM(a); else - HxX(c, contrlAction) = guest_cast(CLC(-1)); + HxX(c, contrlAction) = guest_cast(CLC(-1)); } -ProcPtr Executor::C_GetCtlAction(ControlHandle c) /* IMI-328 */ +ControlActionUPP Executor::C_GetCtlAction(ControlHandle c) /* IMI-328 */ { return HxP(c, contrlAction); } @@ -194,12 +194,12 @@ int32_t Executor::ROMlib_ctlcall(ControlHandle c, int16_t i, int32_t l) cp = (ctlfuncp)STARH(defproc); - if(cp == P_cdef0) - retval = C_cdef0(VAR(c), c, i, l); - else if(cp == P_cdef16) - retval = C_cdef16(VAR(c), c, i, l); - else if(cp == P_cdef1008) - retval = C_cdef1008(VAR(c), c, i, l); + if(cp == &cdef0) + retval = cdef0(VAR(c), c, i, l); + else if(cp == &cdef16) + retval = cdef16(VAR(c), c, i, l); + else if(cp == &cdef1008) + retval = cdef1008(VAR(c), c, i, l); else { ROMlib_hook(ctl_cdefnumber); diff --git a/src/ctlMouse.cpp b/src/ctlMouse.cpp index 96976370..d2cef1fc 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -71,16 +71,16 @@ typedef void (*actionp)(ControlHandle c, INTEGER part); static inline void CALLACTION(ControlHandle ch, INTEGER inpart, ProcPtr a) { ROMlib_hook(ctl_cdefnumber); - if(a == (ProcPtr)P_ROMlib_mytrack) - C_ROMlib_mytrack(ch, inpart); - else if(a == (ProcPtr)P_ROMlib_stdftrack) - C_ROMlib_stdftrack(ch, inpart); + if(a == (ProcPtr)&ROMlib_mytrack) + ROMlib_mytrack(ch, inpart); + else if(a == (ProcPtr)&ROMlib_stdftrack) + ROMlib_stdftrack(ch, inpart); else CToPascalCall((void *)a, ctop(&C_ROMlib_mytrack), ch, inpart); } INTEGER Executor::C_TrackControl(ControlHandle c, Point p, - ProcPtr a) /* IMI-323 */ + ControlActionUPP a) /* IMI-323 */ { INTEGER partstart, inpart; EventRecord ev; @@ -120,12 +120,12 @@ INTEGER Executor::C_TrackControl(ControlHandle c, Point p, goto done; } - if(a == (ProcPtr)-1L) + if(a == (ControlActionUPP)-1) a = CTL_ACTION(c); /* #if 0 reading the above code suggests that it's impossible to get here */ - if(0 && a == (ProcPtr)-1L) + if(0 && a == (ControlActionUPP)-1) { /* totally custom */ while(!GetOSEvent(mUpMask, &ev)) @@ -159,7 +159,7 @@ INTEGER Executor::C_TrackControl(ControlHandle c, Point p, PATASSIGN(LM(DragPattern), ltGray); l = DragTheRgn(rh, p, &thumb._tlimit, &thumb._tslop, - CW(thumb._taxis), a); + CW(thumb._taxis), (ProcPtr)a); if((uint32_t)l != 0x80008000) { CTLCALL(c, posCntl, l); @@ -189,7 +189,7 @@ INTEGER Executor::C_TrackControl(ControlHandle c, Point p, CTLCALL(c, drawCntl, partstart); } if(a && inpart) - CALLACTION(c, inpart, a); + CALLACTION(c, inpart, (ProcPtr)a); } GetOSEvent(mUpMask, &ev); GlobalToLocal(&ev.where); diff --git a/src/ctlPopup.cpp b/src/ctlPopup.cpp index bd1dfb2a..e4600909 100644 --- a/src/ctlPopup.cpp +++ b/src/ctlPopup.cpp @@ -61,7 +61,7 @@ init(ControlHandle ctl) CTL_DATA_X(ctl) = RM((Handle)data); - CTL_ACTION_X(ctl) = guest_cast(CLC(-1)); + CTL_ACTION_X(ctl) = guest_cast(CLC(-1)); CTL_VALUE_X(ctl) = CWC(1); CTL_MIN_X(ctl) = CWC(1); CTL_MAX_X(ctl) = CW(CountMItems(mh)); diff --git a/src/dialAlert.cpp b/src/dialAlert.cpp index e797a657..61e6d202 100644 --- a/src/dialAlert.cpp +++ b/src/dialAlert.cpp @@ -39,7 +39,7 @@ static icon_item_template_t icon_item_template = { /* to be filled in later */ CWC((short)-1), }; -INTEGER Executor::C_Alert(INTEGER id, ProcPtr fp) /* IMI-418 */ +INTEGER Executor::C_Alert(INTEGER id, ModalFilterProcPtr fp) /* IMI-418 */ { alth ah; Handle h; @@ -172,19 +172,19 @@ INTEGER Executor::C_Alert(INTEGER id, ProcPtr fp) /* IMI-418 */ return CW(hit); } -INTEGER Executor::C_StopAlert(INTEGER id, ProcPtr fp) /* IMI-419 */ +INTEGER Executor::C_StopAlert(INTEGER id, ModalFilterProcPtr fp) /* IMI-419 */ { alert_extra_icon_id = stopIcon; return Alert(id, fp); } -INTEGER Executor::C_NoteAlert(INTEGER id, ProcPtr fp) /* IMI-420 */ +INTEGER Executor::C_NoteAlert(INTEGER id, ModalFilterProcPtr fp) /* IMI-420 */ { alert_extra_icon_id = noteIcon; return Alert(id, fp); } -INTEGER Executor::C_CautionAlert(INTEGER id, ProcPtr fp) /* IMI-420 */ +INTEGER Executor::C_CautionAlert(INTEGER id, ModalFilterProcPtr fp) /* IMI-420 */ { alert_extra_icon_id = cautionIcon; return Alert(id, fp); diff --git a/src/dialDispatch.cpp b/src/dialDispatch.cpp index 2b68c1c2..864cda30 100644 --- a/src/dialDispatch.cpp +++ b/src/dialDispatch.cpp @@ -14,7 +14,7 @@ using namespace Executor; OSErr Executor::C_GetStdFilterProc(GUEST *proc) { - *proc = RM((ProcPtr)P_ROMlib_myfilt); + *proc = RM((ProcPtr)&ROMlib_myfilt); warning_unimplemented("no specs"); /* i.e. no documentation on how this routine is *supposed* to work, so we may be blowing off something diff --git a/src/dialHandle.cpp b/src/dialHandle.cpp index c0e458ba..53f68432 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -34,9 +34,10 @@ using namespace Executor; -BOOLEAN Executor::C_ROMlib_myfilt(DialogPeek dp, EventRecord *evt, +BOOLEAN Executor::C_ROMlib_myfilt(DialogPtr dlg, EventRecord *evt, GUEST *ith) /* IMI-415 */ { + DialogPeek dp = (DialogPeek)dlg; itmp ip; ControlHandle c; WriteWhenType when; @@ -68,8 +69,8 @@ BOOLEAN Executor::C_ROMlib_myfilt(DialogPeek dp, EventRecord *evt, #define DIALOGEVTS \ (mDownMask | mUpMask | keyDownMask | autoKeyMask | updateMask | activMask) -typedef BOOLEAN (*modalprocp)(DialogPtr dial, EventRecord *evtp, - GUEST *iht); +using modalprocp = UPP *iht)>; #define CALLMODALPROC(dp, evtp, ip, fp2) \ ROMlib_CALLMODALPROC((dp), (evtp), (ip), (modalprocp)(fp2)) @@ -78,25 +79,11 @@ static inline BOOLEAN ROMlib_CALLMODALPROC(DialogPtr dp, EventRecord *evtp, GUEST *ip, modalprocp fp) { - BOOLEAN retval; - - if(fp == (modalprocp)P_ROMlib_myfilt) - retval = C_ROMlib_myfilt((DialogPeek)dp, evtp, ip); - else if(fp == (modalprocp)P_ROMlib_stdffilt) - retval = C_ROMlib_stdffilt((DialogPeek)dp, evtp, ip); - else if(fp == (modalprocp)P_ROMlib_numsonlyfilterproc) - retval = C_ROMlib_numsonlyfilterproc((DialogPeek)dp, evtp, ip); - else if(fp == (modalprocp)P_ROMlib_stlfilterproc) - retval = C_ROMlib_stlfilterproc((DialogPeek)dp, evtp, ip); - else - { - ROMlib_hook(dial_modalnumber); - retval = CToPascalCall((void *)fp, ctop(&C_ROMlib_myfilt), dp, evtp, ip); - } - return retval; + ROMlib_hook(dial_modalnumber); + return fp(dp, evtp, ip); } -typedef void (*useritemp)(WindowPtr wp, INTEGER item); +using useritemp = UPP; #define CALLUSERITEM(dp, inum, temph) \ ROMlib_CALLUSERITEM(dp, inum, (useritemp)(temph)) @@ -105,17 +92,8 @@ static inline void ROMlib_CALLUSERITEM(DialogPtr dp, INTEGER inum, useritemp temph) { - if(temph == (useritemp)P_ROMlib_filebox) - C_ROMlib_filebox((DialogPeek)dp, inum); - else if(temph == (useritemp)P_ROMlib_circle_ok) - C_ROMlib_circle_ok((DialogPeek)dp, inum); - else if(temph == (useritemp)P_ROMlib_orientation) - C_ROMlib_orientation((DialogPeek)dp, inum); - else - { - ROMlib_hook(dial_usernumber); - CToPascalCall((void *)temph, ctop(&C_ROMlib_filebox), dp, inum); - } + ROMlib_hook(dial_usernumber); + temph(dp, inum); } #define _FindWindow(pt, wp) \ @@ -138,7 +116,7 @@ ROMlib_CALLUSERITEM(DialogPtr dp, small, but THEGDEVICE_SAVE_EXCURSION prevents us from using #if, so we have a lot of replicated code. This is scary and should be fixed. */ -void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ +void Executor::C_ModalDialog(ModalFilterProcPtr fp, GUEST *item) /* IMI-415 */ { /* * The code used to save thePort and restore it at the end of the @@ -152,7 +130,7 @@ void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ DialogPeek dp; GUEST ndp; TEHandle idle; - ProcPtr fp2; + ModalFilterProcPtr fp2; Point whereunswapped; bool done; @@ -165,7 +143,7 @@ void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ if(fp) fp2 = fp; else - fp2 = (ProcPtr)P_ROMlib_myfilt; + fp2 = &ROMlib_myfilt; for(done = false; !done;) { WindowPtr temp_wp; @@ -211,7 +189,7 @@ void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ #else /* defined (ALLOW_MOVABLE_MODAL) */ -void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ +void Executor::C_ModalDialog(ModalFilterProcPtr fp, GUEST *item) /* IMI-415 */ { /* * The code used to save thePort and restore it at the end of the @@ -226,7 +204,7 @@ void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ DialogPeek dp; GUEST ndp; TEHandle idle; - ProcPtr fp2; + ModalFilterProcPtr fp2; Point whereunswapped; bool done; @@ -239,7 +217,7 @@ void Executor::C_ModalDialog(ProcPtr fp, GUEST *item) /* IMI-415 */ if(fp) fp2 = fp; else - fp2 = (ProcPtr)P_ROMlib_myfilt; + fp2 = &ROMlib_myfilt; for(done = false; !done;) { WindowPtr temp_wp; @@ -688,7 +666,7 @@ void Executor::BEEPER(INTEGER n) { if(LM(DABeeper)) { - if((void (*)(INTEGER))MR(LM(DABeeper)) == P_ROMlib_mysound) + if(MR(LM(DABeeper)) == (ProcPtr)&ROMlib_mysound) C_ROMlib_mysound((n)); else { diff --git a/src/dialInit.cpp b/src/dialInit.cpp index 8f812ae9..c7f6f4a3 100644 --- a/src/dialInit.cpp +++ b/src/dialInit.cpp @@ -35,7 +35,7 @@ void Executor::C_InitDialogs(ProcPtr rp) /* IMI-411 */ LM(DlgFont) = CWC(systemFont); LM(ResumeProc) = RM(rp); - ErrorSound((ProcPtr)P_ROMlib_mysound); + ErrorSound((ProcPtr)&ROMlib_mysound); Handle tmp; PtrToHand(nothing, &tmp, (LONGINT)1); LM(DAStrings)[0] = RM(tmp); diff --git a/src/dump.cpp b/src/dump.cpp index 61b79467..fe6bf047 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -350,19 +350,19 @@ void Executor::dump_qdprocs(QDProcsPtr x) indent += 2; if(x != NULL) { - iprintf((o_fp, "textProc %p;\n", MR(x->textProc))); - iprintf((o_fp, "lineProc %p;\n", MR(x->lineProc))); - iprintf((o_fp, "rectProc %p;\n", MR(x->rectProc))); - iprintf((o_fp, "rRectProc %p;\n", MR(x->rRectProc))); - iprintf((o_fp, "ovalProc %p;\n", MR(x->ovalProc))); - iprintf((o_fp, "arcProc %p;\n", MR(x->arcProc))); - iprintf((o_fp, "polyProc %p;\n", MR(x->polyProc))); - iprintf((o_fp, "rgnProc %p;\n", MR(x->rgnProc))); - iprintf((o_fp, "bitsProc %p;\n", MR(x->bitsProc))); - iprintf((o_fp, "commentProc %p;\n", MR(x->commentProc))); - iprintf((o_fp, "txMeasProc %p;\n", MR(x->txMeasProc))); - iprintf((o_fp, "getPicProc %p;\n", MR(x->getPicProc))); - iprintf((o_fp, "putPicProc %p;\n", MR(x->putPicProc))); + iprintf((o_fp, "textProc %p;\n", (ProcPtr)MR(x->textProc))); + iprintf((o_fp, "lineProc %p;\n", (ProcPtr)MR(x->lineProc))); + iprintf((o_fp, "rectProc %p;\n", (ProcPtr)MR(x->rectProc))); + iprintf((o_fp, "rRectProc %p;\n", (ProcPtr)MR(x->rRectProc))); + iprintf((o_fp, "ovalProc %p;\n", (ProcPtr)MR(x->ovalProc))); + iprintf((o_fp, "arcProc %p;\n", (ProcPtr)MR(x->arcProc))); + iprintf((o_fp, "polyProc %p;\n", (ProcPtr)MR(x->polyProc))); + iprintf((o_fp, "rgnProc %p;\n", (ProcPtr)MR(x->rgnProc))); + iprintf((o_fp, "bitsProc %p;\n", (ProcPtr)MR(x->bitsProc))); + iprintf((o_fp, "commentProc %p;\n", (ProcPtr)MR(x->commentProc))); + iprintf((o_fp, "txMeasProc %p;\n", (ProcPtr)MR(x->txMeasProc))); + iprintf((o_fp, "getPicProc %p;\n", (ProcPtr)MR(x->getPicProc))); + iprintf((o_fp, "putPicProc %p;\n", (ProcPtr)MR(x->putPicProc))); } else iprintf((o_fp, "\n")); @@ -598,25 +598,25 @@ void Executor::dump_cqdprocs(CQDProcsPtr x) indent += 2; if(x != NULL) { - iprintf((o_fp, "textProc %p;\n", MR(x->textProc))); - iprintf((o_fp, "lineProc %p;\n", MR(x->lineProc))); - iprintf((o_fp, "rectProc %p;\n", MR(x->rectProc))); - iprintf((o_fp, "rRectProc %p;\n", MR(x->rRectProc))); - iprintf((o_fp, "ovalProc %p;\n", MR(x->ovalProc))); - iprintf((o_fp, "arcProc %p;\n", MR(x->arcProc))); - iprintf((o_fp, "polyProc %p;\n", MR(x->polyProc))); - iprintf((o_fp, "rgnProc %p;\n", MR(x->rgnProc))); - iprintf((o_fp, "bitsProc %p;\n", MR(x->bitsProc))); - iprintf((o_fp, "commentProc %p;\n", MR(x->commentProc))); - iprintf((o_fp, "txMeasProc %p;\n", MR(x->txMeasProc))); - iprintf((o_fp, "getPicProc %p;\n", MR(x->getPicProc))); - iprintf((o_fp, "putPicProc %p;\n", MR(x->putPicProc))); - iprintf((o_fp, "newProc1Proc %p;\n", MR(x->newProc1Proc))); - iprintf((o_fp, "newProc2Proc %p;\n", MR(x->newProc2Proc))); - iprintf((o_fp, "newProc3Proc %p;\n", MR(x->newProc3Proc))); - iprintf((o_fp, "newProc4Proc %p;\n", MR(x->newProc4Proc))); - iprintf((o_fp, "newProc5Proc %p;\n", MR(x->newProc5Proc))); - iprintf((o_fp, "newProc6Proc %p;\n", MR(x->newProc6Proc))); + iprintf((o_fp, "textProc %p;\n", (ProcPtr)MR(x->textProc))); + iprintf((o_fp, "lineProc %p;\n", (ProcPtr)MR(x->lineProc))); + iprintf((o_fp, "rectProc %p;\n", (ProcPtr)MR(x->rectProc))); + iprintf((o_fp, "rRectProc %p;\n", (ProcPtr)MR(x->rRectProc))); + iprintf((o_fp, "ovalProc %p;\n", (ProcPtr)MR(x->ovalProc))); + iprintf((o_fp, "arcProc %p;\n", (ProcPtr)MR(x->arcProc))); + iprintf((o_fp, "polyProc %p;\n", (ProcPtr)MR(x->polyProc))); + iprintf((o_fp, "rgnProc %p;\n", (ProcPtr)MR(x->rgnProc))); + iprintf((o_fp, "bitsProc %p;\n", (ProcPtr)MR(x->bitsProc))); + iprintf((o_fp, "commentProc %p;\n", (ProcPtr)MR(x->commentProc))); + iprintf((o_fp, "txMeasProc %p;\n", (ProcPtr)MR(x->txMeasProc))); + iprintf((o_fp, "getPicProc %p;\n", (ProcPtr)MR(x->getPicProc))); + iprintf((o_fp, "putPicProc %p;\n", (ProcPtr)MR(x->putPicProc))); + iprintf((o_fp, "newProc1Proc %p;\n", (ProcPtr)MR(x->newProc1Proc))); + iprintf((o_fp, "newProc2Proc %p;\n", (ProcPtr)MR(x->newProc2Proc))); + iprintf((o_fp, "newProc3Proc %p;\n", (ProcPtr)MR(x->newProc3Proc))); + iprintf((o_fp, "newProc4Proc %p;\n", (ProcPtr)MR(x->newProc4Proc))); + iprintf((o_fp, "newProc5Proc %p;\n", (ProcPtr)MR(x->newProc5Proc))); + iprintf((o_fp, "newProc6Proc %p;\n", (ProcPtr)MR(x->newProc6Proc))); } else iprintf((o_fp, "\n")); @@ -1066,7 +1066,7 @@ void dump_control(ControlHandle x) dump_field(dump_handle, CTL_DEFPROC(x), "contrlDefProc"); dump_field(dump_ptr, CTL_DATA(x), "contrlData"); - iprintf((o_fp, "contrlAction %p\n", CTL_ACTION(x))); + iprintf((o_fp, "contrlAction %p\n", (ProcPtr)CTL_ACTION(x))); iprintf((o_fp, "contrlRfCon %d\n", (int)CTL_REF_CON(x))); dump_field(dump_string, CTL_TITLE(x), "contrlTitle"); indent -= 2; diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 1b476ad7..9ad51e04 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -1129,7 +1129,7 @@ pack8_fail_fn() retaddr = POPADDR(); /* #### just clobber a1? */ - EM_A1 = US_TO_SYN68K_CHECK0(P_pack8_unknown_selector); + EM_A1 = US_TO_SYN68K_CHECK0((ProcPtr)&pack8_unknown_selector); CALL_EMULATOR(AE_OSL_select_fn); @@ -2272,7 +2272,7 @@ ROMlib_GetTrapAddress_helper(uint32_t *d0p, uint32_t d1, uint32_t *a0p) if(*a0p == (uint32_t)tooltraptable[UNIMPLEMENTEDINDEX]) { add_to_bad_trap_addresses(tool_p, *d0p); - *a0p = US_TO_SYN68K_CHECK0(P_bad_trap_unimplemented); + *a0p = US_TO_SYN68K_CHECK0(&stub_bad_trap_unimplemented); } *d0p = 0; } diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 77ede4a4..d9b7c20d 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -60,7 +60,7 @@ syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ #define _GetMaskTable _Unimplemented #define _Debugger _Unimplemented -void C_unknown574(void) +void Executor::C_unknown574(void) { } @@ -1101,7 +1101,7 @@ toolstuff_t Executor::toolstuff[0x400] = { unimplemented_toolstuff, { { (void *)&C_DebugStr, ptoc(&C_DebugStr) }, 0 }, }; - +#if 0 pstuff_t Executor::pstuff[] = { { { (void *)&C_ROMlib_mytrack, ptoc(&C_ROMlib_mytrack) }, 0 }, { { (void *)&C_ROMlib_stdftrack, ptoc(&C_ROMlib_stdftrack) }, 0 }, @@ -1210,7 +1210,7 @@ pstuff_t Executor::pstuff[] = { { { (void *)&C_new_draw_scroll, ptoc(&C_new_draw_scroll) }, 0 }, { { (void *)&C_new_pos_ctl, ptoc(&C_new_pos_ctl) }, 0 }, }; - +#endif static void *fsroutines[][2] = { { /* 0xA000 */ (void *)PBOpen, (void *)PBHOpen /* 0 */ }, #define OPENTRAP 0 @@ -1606,7 +1606,7 @@ void Executor::filltables(void) : callback_install((callback_handler_t)(toolstuff[i].ptoc.magic != (ULONGINT)-1 ? (void *)PascalToCCall : toolstuff[i].ptoc.wheretogo), &toolstuff[i].ptoc); - +#if 0 for(i = 0; i < (int)NELEM(pstuff); ++i) pstuff[i].orig = (pstuff[i].ptoc.wheretogo == (void *)_Unimplemented) ? SYN68K_TO_US(unimpl) @@ -1615,7 +1615,7 @@ void Executor::filltables(void) ? (void *)PascalToCCall : pstuff[i].ptoc.wheretogo), &pstuff[i].ptoc)); - +#endif for(i = 0; i < (int)NELEM(ostraptable); ++i) { switch(i) diff --git a/src/executor.cpp b/src/executor.cpp index 427e5ded..d8258b02 100644 --- a/src/executor.cpp +++ b/src/executor.cpp @@ -45,6 +45,7 @@ #include "rsys/suffix_maps.h" #include "rsys/string.h" +#include "rsys/emustubs.h" #define static @@ -454,12 +455,12 @@ void Executor::executor_main(void) LM(MinStack) = CLC(0x400); /* values ... */ LM(IAZNotify) = 0; LM(CurPitch) = 0; - LM(JSwapFont) = RM((ProcPtr)P_FMSwapFont); - LM(JInitCrsr) = RM((ProcPtr)P_InitCursor); + LM(JSwapFont) = RM((ProcPtr)&FMSwapFont); + LM(JInitCrsr) = RM((ProcPtr)&InitCursor); - LM(Key1Trans) = RM((Ptr)P_Key1Trans); - LM(Key2Trans) = RM((Ptr)P_Key2Trans); - LM(JFLUSH) = RM((ProcPtr)P_flushcache); + LM(Key1Trans) = RM((Ptr)&stub_Key1Trans); + LM(Key2Trans) = RM((Ptr)&stub_Key2Trans); + LM(JFLUSH) = RM(&stub_flushcache); LM(JResUnknown1) = LM(JFLUSH); /* I don't know what these are supposed to */ LM(JResUnknown2) = LM(JFLUSH); /* do, but they're not called enough for us to worry about the cache flushing diff --git a/src/functions.cpp b/src/functions.cpp index d36d4188..71e8a7c5 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -1,3 +1,59 @@ +#include +#include +namespace +{ + std::vector initFunctions; +} + #define FUNCTION_WRAPPER_IMPLEMENTATION -#include "rsys/everything.h" \ No newline at end of file +#include "rsys/everything.h" +#include "rsys/emustubs.h" +#include "rsys/ctl.h" +#include "rsys/list.h" +#include "rsys/menu.h" +#include "rsys/wind.h" +#include "rsys/print.h" +#include "rsys/vbl.h" +#include "rsys/stdfile.h" +#include "rsys/tesave.h" +#include "rsys/osutil.h" +#include "rsys/refresh.h" +#include "rsys/gestalt.h" + +#include + +using namespace Executor; +using namespace Executor::functions; + +template +void Raw68KFunction::init() +{ + guestFP = (ProcPtr)SYN68K_TO_US(callback_install((callback_handler_t)fptr, nullptr)); +} + +template +void +WrappedFunction::init() +{ + static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; + guestFP = (UPP)SYN68K_TO_US(callback_install((callback_handler_t)&PascalToCCall, &ptocblock)); +} + +/*template +void +PascalTrap::init() +{ +} +*/ + +InitAction::InitAction(void (*f)()) +{ + initFunctions.push_back(f); +} + +void InitAction::execute() +{ + for(auto f : initFunctions) + (*f)(); +} diff --git a/src/gestalt.cpp b/src/gestalt.cpp index de915045..1e4c7471 100644 --- a/src/gestalt.cpp +++ b/src/gestalt.cpp @@ -371,7 +371,7 @@ void gestalt_set_physical_gestalt_callback(void) { REPLACE_SELECTOR_IN_TABLE(gestaltPHYSICAL, - (long)US_TO_SYN68K(P_PhysicalGestalt), gtable); + (long)US_TO_SYN68K((ProcPtr)&PhysicalGestalt), gtable); } #if defined(powerpc) || defined(__ppc__) @@ -646,7 +646,7 @@ OSErrRET Executor::ReplaceGestalt(OSType selector, ProcPtr selFunc, retval = gestaltUndefSelectorErr; else { - *oldSelFuncp = (ProcPtr)P_GestaltTablesOnly; + *oldSelFuncp = (ProcPtr)&GestaltTablesOnly; retval = new_link(selector, selFunc); } } diff --git a/src/hfsHelper.cpp b/src/hfsHelper.cpp index 048696f9..12646a7c 100644 --- a/src/hfsHelper.cpp +++ b/src/hfsHelper.cpp @@ -101,7 +101,7 @@ static void eject_floppy_notify(void) */ if(LM(WWExist) == EXIST_YES && GetResource(TICK("ALRT"), EJECTALERTID)) - Alert(EJECTALERTID, (ProcPtr)0); + Alert(EJECTALERTID, nullptr); } OSErr Executor::ROMlib_ejectfloppy(LONGINT floppyfd) diff --git a/src/include/ADB.h b/src/include/ADB.h index 13ae2db4..516f5b8b 100644 --- a/src/include/ADB.h +++ b/src/include/ADB.h @@ -15,14 +15,14 @@ struct ADBDataBlock GUEST_STRUCT; GUEST devType; GUEST origADBAddr; - GUEST dbServiceRtPtr; + GUEST dbServiceRtPtr; GUEST dbDataAreaAddr; }; struct ADBSetInfoBlock { GUEST_STRUCT; - GUEST siServiceRtPtr; + GUEST siServiceRtPtr; GUEST siDataAreaAddr; }; diff --git a/src/include/ControlMgr.h b/src/include/ControlMgr.h index 1b39fe24..32da08e0 100644 --- a/src/include/ControlMgr.h +++ b/src/include/ControlMgr.h @@ -104,6 +104,8 @@ enum namespace Executor { +using ControlActionUPP = UPP; + struct __cr { GUEST_STRUCT; @@ -117,7 +119,7 @@ struct __cr GUEST contrlMax; GUEST contrlDefProc; GUEST contrlData; - GUEST contrlAction; + GUEST contrlAction; GUEST contrlRfCon; GUEST contrlTitle; }; @@ -194,9 +196,9 @@ extern LONGINT C_GetCRefCon(ControlHandle c); PASCAL_TRAP(GetCRefCon, 0xA95A); extern void C_SetCtlAction(ControlHandle c, - ProcPtr a); + ControlActionUPP a); PASCAL_TRAP(SetCtlAction, 0xA96B); -extern ProcPtr C_GetCtlAction(ControlHandle c); +extern ControlActionUPP C_GetCtlAction(ControlHandle c); PASCAL_TRAP(GetCtlAction, 0xA96A); extern INTEGER C_GetCVariant(ControlHandle c); @@ -209,7 +211,7 @@ extern INTEGER C_FindControl(Point p, WindowPtr w, GUEST *cp); PASCAL_TRAP(FindControl, 0xA96C); extern INTEGER C_TrackControl( - ControlHandle c, Point p, ProcPtr a); + ControlHandle c, Point p, ControlActionUPP a); PASCAL_TRAP(TrackControl, 0xA968); extern INTEGER C_TestControl( ControlHandle c, Point p); diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index 899539ae..f524acc5 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -161,16 +161,16 @@ const LowMemGlobal DAStrings { 0xAA0 }; // DialogMgr IMI-421 (true); const LowMemGlobal DlgFont { 0xAFA }; // DialogMgr IMI-412 (true); extern INTEGER C_Alert(INTEGER id, - ProcPtr fp); + ModalFilterProcPtr fp); PASCAL_TRAP(Alert, 0xA985); extern INTEGER C_StopAlert(INTEGER id, - ProcPtr fp); + ModalFilterProcPtr fp); PASCAL_TRAP(StopAlert, 0xA986); extern INTEGER C_NoteAlert(INTEGER id, - ProcPtr fp); + ModalFilterProcPtr fp); PASCAL_TRAP(NoteAlert, 0xA987); extern INTEGER C_CautionAlert(INTEGER id, - ProcPtr fp); + ModalFilterProcPtr fp); PASCAL_TRAP(CautionAlert, 0xA988); extern void C_CouldAlert(INTEGER id); PASCAL_TRAP(CouldAlert, 0xA989); @@ -191,10 +191,11 @@ extern void C_CloseDialog(DialogPtr dp); PASCAL_TRAP(CloseDialog, 0xA982); extern void C_DisposDialog(DialogPtr dp); PASCAL_TRAP(DisposDialog, 0xA983); -extern BOOLEAN C_ROMlib_myfilt(DialogPeek dp, EventRecord *evt, +extern BOOLEAN C_ROMlib_myfilt(DialogPtr dlg, EventRecord *evt, GUEST *ith); +PASCAL_FUNCTION(ROMlib_myfilt); -extern void C_ModalDialog(ProcPtr fp, +extern void C_ModalDialog(ModalFilterProcPtr fp, GUEST *item); PASCAL_TRAP(ModalDialog, 0xA991); extern BOOLEAN C_IsDialogEvent( @@ -216,6 +217,7 @@ extern void DlgCopy(DialogPtr dp); extern void DlgPaste(DialogPtr dp); extern void DlgDelete(DialogPtr dp); extern void C_ROMlib_mysound(INTEGER i); +PASCAL_FUNCTION(ROMlib_mysound); extern void C_ErrorSound(ProcPtr sp); PASCAL_TRAP(ErrorSound, 0xA98C); extern void C_InitDialogs(ProcPtr rp); diff --git a/src/include/ExMacTypes.h b/src/include/ExMacTypes.h index 197a1386..0480511b 100644 --- a/src/include/ExMacTypes.h +++ b/src/include/ExMacTypes.h @@ -37,10 +37,7 @@ typedef Byte *StringPtr; #endif typedef GUEST *StringHandle; -#if !defined(__MACTYPES__) || defined(__cplusplus) -typedef int (*ProcPtr)(); -#endif #if !defined(__MACTYPES__) || defined(__cplusplus) typedef LONGINT Fixed, Fract; diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index e719c502..6bc1d05d 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -136,6 +136,7 @@ extern void C_LActivate(BOOLEAN act, ListHandle list); PASCAL_SUBTRAP(LActivate, 0xA9E7, Pack0); extern void C_ROMlib_mytrack(ControlHandle ch, INTEGER part); +PASCAL_FUNCTION(ROMlib_mytrack); extern BOOLEAN C_LClick(Point pt, INTEGER mods, ListHandle list); diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index 19ee7c69..21ef0555 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -166,8 +166,8 @@ typedef struct TPrDlg { GUEST_STRUCT; GUEST dlg; - GUEST pFltrProc; - GUEST pItemProc; + GUEST pFltrProc; + GUEST pItemProc; GUEST hPrintUsr; GUEST fDoIt; GUEST fDone; @@ -201,14 +201,18 @@ PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, _PrGlue); extern INTEGER C_PrDrvrVers(void); PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, _PrGlue); extern void C_ROMlib_myjobproc(DialogPtr dp, INTEGER itemno); -extern BOOLEAN C_ROMlib_stlfilterproc(DialogPeek dp, +PASCAL_FUNCTION(ROMlib_myjobproc); +extern BOOLEAN C_ROMlib_stlfilterproc(DialogPtr dp, EventRecord *evt, GUEST *ith); - -extern BOOLEAN C_ROMlib_numsonlyfilterproc(DialogPeek dp, +PASCAL_FUNCTION(ROMlib_stlfilterproc); +extern BOOLEAN C_ROMlib_numsonlyfilterproc(DialogPtr dp, EventRecord *evt, GUEST *ith); +PASCAL_FUNCTION(ROMlib_numsonlyfilterproc); extern void C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno); +PASCAL_FUNCTION(ROMlib_mystlproc); + extern TPPrDlg C_PrJobInit(THPrint hPrint); PASCAL_SUBTRAP(PrJobInit, 0xA8FD, _PrGlue); extern TPPrDlg C_PrStlInit(THPrint hPrint); @@ -223,12 +227,12 @@ PASCAL_FUNCTION(donotPrArc); extern void C_PrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); PASCAL_FUNCTION(PrArc); -extern void C_donotPrBits(BitMap *srcbmp, Rect *srcrp, - Rect *dstrp, INTEGER mode, +extern void C_donotPrBits(const BitMap *srcbmp, const Rect *srcrp, + const Rect *dstrp, INTEGER mode, RgnHandle mask); PASCAL_FUNCTION(donotPrBits); -extern void C_PrBits(BitMap *srcbmp, Rect *srcrp, - Rect *dstrp, INTEGER mode, RgnHandle mask); +extern void C_PrBits(const BitMap *srcbmp, const Rect *srcrp, + const Rect *dstrp, INTEGER mode, RgnHandle mask); PASCAL_FUNCTION(PrBits); extern void C_donotPrLine(Point p); PASCAL_FUNCTION(donotPrLine); diff --git a/src/include/QuickDraw.h b/src/include/QuickDraw.h index 546ac98f..89b86b3e 100644 --- a/src/include/QuickDraw.h +++ b/src/include/QuickDraw.h @@ -148,23 +148,19 @@ struct FontInfo GUEST leading; }; -typedef void (*textProc_t)(INTEGER bc, Ptr textb, Point num, Point den); -typedef void (*lineProc_t)(Point drawto); -typedef void (*rectProc_t)(GrafVerb verb, Rect *rp); -typedef void (*rRectProc_t)(GrafVerb verb, Rect *rp, INTEGER ow, - INTEGER oh); -typedef void (*ovalProc_t)(GrafVerb verb, Rect *rp); -typedef void (*arcProc_t)(GrafVerb verb, Rect *rp, INTEGER ang, - INTEGER arc); -typedef void (*polyProc_t)(GrafVerb verb, PolyHandle poly); -typedef void (*rgnProc_t)(GrafVerb verb, RgnHandle rgn); -typedef void (*bitsProc_t)(BitMap *srcb, Rect *srcr, Rect *dstr, - INTEGER mod, RgnHandle mask); -typedef void (*commentProc_t)(INTEGER kind, INTEGER size, Handle data); -typedef INTEGER (*txMeasProc_t)(INTEGER bc, Ptr texta, GUEST *numer, - GUEST *denom, FontInfo *info); -typedef void (*getPicProc_t)(Ptr data, INTEGER bc); -typedef void (*putPicProc_t)(Ptr data, INTEGER bc); +using textProc_t = UPP; +using lineProc_t = UPP; +using rectProc_t = UPP; +using rRectProc_t = UPP; +using ovalProc_t = UPP; +using arcProc_t = UPP; +using polyProc_t = UPP; +using rgnProc_t = UPP; +using bitsProc_t = UPP; +using commentProc_t = UPP; +using txMeasProc_t = UPP *numer, GUEST *denom, FontInfo *info)>; +using getPicProc_t = UPP; +using putPicProc_t = UPP; struct QDProcs { @@ -329,19 +325,19 @@ typedef GUEST *CTabHandle; typedef struct CQDProcs { GUEST_STRUCT; - GUEST textProc; - GUEST lineProc; - GUEST rectProc; - GUEST rRectProc; - GUEST ovalProc; - GUEST arcProc; - GUEST polyProc; - GUEST rgnProc; - GUEST bitsProc; - GUEST commentProc; - GUEST txMeasProc; - GUEST getPicProc; - GUEST putPicProc; + GUEST textProc; + GUEST lineProc; + GUEST rectProc; + GUEST rRectProc; + GUEST ovalProc; + GUEST arcProc; + GUEST polyProc; + GUEST rgnProc; + GUEST bitsProc; + GUEST commentProc; + GUEST txMeasProc; + GUEST getPicProc; + GUEST putPicProc; GUEST opcodeProc; GUEST newProc1Proc; GUEST newProc2Proc; @@ -515,6 +511,9 @@ const LowMemGlobal JCrsrTask { 0x8EE }; // (true); const LowMemGlobal HiliteMode { 0x938 }; // QuickDraw IMV (true-b); +extern void C_unknown574(); +PASCAL_FUNCTION(unknown574); + extern void C_CopyBits(BitMap *src_bitmap, BitMap *dst_bitmap, const Rect *src_rect, const Rect *dst_rect, INTEGER mode, RgnHandle mask); @@ -811,11 +810,11 @@ extern void C_StdArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); PASCAL_TRAP(StdArc, 0xA8BD); -extern void C_StdBits(BitMap *srcbmp, +extern void C_StdBits(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, INTEGER mode, RgnHandle mask); PASCAL_TRAP(StdBits, 0xA8EB); -extern void StdBitsPicSaveFlag(BitMap *srcbmp, +extern void StdBitsPicSaveFlag(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, INTEGER mode, RgnHandle mask, BOOLEAN savepic); diff --git a/src/include/SANE.h b/src/include/SANE.h index d6a9a2ee..a6132410 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -144,8 +144,6 @@ enum extern void C_ROMlib_Fcomp2X(comp sp, extended80 * dp); -extern void P_ROMlib_Fcomp2X(comp sp, extended80 * - dp); extern void C_ROMlib_Fsetenv(INTEGER *dp, INTEGER sel); PASCAL_SUBTRAP(ROMlib_Fsetenv, 0xA9EB, Pack4); diff --git a/src/include/StdFilePkg.h b/src/include/StdFilePkg.h index 823fd128..ea3660f2 100644 --- a/src/include/StdFilePkg.h +++ b/src/include/StdFilePkg.h @@ -104,7 +104,7 @@ enum }; extern void C_ROMlib_filebox(DialogPeek dp, INTEGER which); -extern void P_ROMlib_filebox(DialogPeek dp, INTEGER which); +PASCAL_FUNCTION(ROMlib_filebox); extern void C_SFPPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep, INTEGER dig, ModalFilterProcPtr fp); diff --git a/src/include/rsys/adb.h b/src/include/rsys/adb.h index d2481fe5..e704cece 100644 --- a/src/include/rsys/adb.h +++ b/src/include/rsys/adb.h @@ -11,6 +11,7 @@ namespace Executor { extern void C_adb_service_stub(void); +PASCAL_FUNCTION(adb_service_stub); extern void adb_apeiron_hack(int /*bool*/ deltas_p, ...); extern void reset_adb_vector(void); } diff --git a/src/include/rsys/ctl.h b/src/include/rsys/ctl.h index f72dbfbe..5cca5580 100644 --- a/src/include/rsys/ctl.h +++ b/src/include/rsys/ctl.h @@ -58,10 +58,13 @@ extern GUEST *lookup_aux_ctl(ControlHandle ctl); extern int32_t C_cdef0(int16_t var, ControlHandle ctl, int16_t mess, int32_t param); +PASCAL_FUNCTION(cdef0); extern int32_t C_cdef16(int16_t var, ControlHandle ctl, int16_t mess, int32_t param); +PASCAL_FUNCTION(cdef16); extern int32_t C_cdef1008(int16_t var, ControlHandle ctl, int16_t mess, int32_t param); +PASCAL_FUNCTION(cdef1008); #define VAR(w) (GetCVariant((w))) @@ -69,7 +72,7 @@ extern BOOLEAN ROMlib_dirtyvariant; extern void sb_ctl_init(void); -typedef LONGINT (*ctlfuncp)(INTEGER var, ControlHandle ctl, INTEGER mess, LONGINT param); +using ctlfuncp = UPP; extern LONGINT ROMlib_ctlcall(ControlHandle c, INTEGER i, LONGINT l); #define CTLCALL(c, i, l) ROMlib_ctlcall((c), (i), (l)) @@ -162,8 +165,11 @@ extern void image_apple_init(void); extern void C_new_draw_scroll(INTEGER depth, INTEGER flags, GDHandle target, LONGINT l); +PASCAL_FUNCTION(new_draw_scroll); extern void C_new_pos_ctl(INTEGER depth, INTEGER flags, GDHandle target, LONGINT l); +PASCAL_FUNCTION(new_pos_ctl); + } #endif /* !_CTL_H_ */ diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 7dc638d8..5131dbaa 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -59,6 +59,7 @@ struct initzonehiddenargs_t extern void ROMlib_GetTrapAddress_helper(uint32_t *d0p, uint32_t d1, uint32_t *a0p); extern void ROMlib_reset_bad_trap_addresses(void); extern void C_pack8_unknown_selector(void); +PASCAL_FUNCTION(pack8_unknown_selector); extern syn68k_addr_t _Unimplemented(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _SwapMMUMode(syn68k_addr_t ignoreme, void **ignoreme2); @@ -183,8 +184,11 @@ extern syn68k_addr_t _AliasDispatch(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _WriteParam(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _InitUtil(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _flushcache(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_FUNCTION(flushcache); extern syn68k_addr_t _Key1Trans(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_FUNCTION(Key1Trans); extern syn68k_addr_t _Key2Trans(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_FUNCTION(Key2Trans); extern syn68k_addr_t _Fix2X(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _Frac2X(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _SCSIDispatch(syn68k_addr_t ignoreme, void **ignoreme2); @@ -200,7 +204,7 @@ extern syn68k_addr_t _GetOSDefault(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _SetOSDefault(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _IMVI_ReadXPRam(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _bad_trap_unimplemented(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PhysicalGestalt(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_FUNCTION(bad_trap_unimplemented); extern syn68k_addr_t _IMVI_PPC(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _HFSRoutines(syn68k_addr_t ignoreme, void **ignoreme2); extern syn68k_addr_t _CodeFragment(syn68k_addr_t ignoreme, void **ignoreme2); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 0a793b2e..ab628aa4 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "rsys/trapglue.h" #include "rsys/mactype.h" @@ -107,6 +108,10 @@ constexpr CTOPCode ctop(F * = nullptr) //#define PASCAL_TRAP(NAME, TRAP) constexpr auto NAME = &C_##NAME //#define PASCAL_FUNCTION(NAME) constexpr auto NAME = &C_##NAME +//typedef int (*ProcPtr)(); +struct OpaqueUntyped68KProc; +typedef OpaqueUntyped68KProc* ProcPtr; + template struct UPP; @@ -124,8 +129,13 @@ struct UPP : ptr(ptr) { } + explicit constexpr UPP(intptr_t ptr) + : ptr((void*)ptr) + { + } explicit operator void *() const { return ptr; } + explicit operator ProcPtr() const { return (ProcPtr)ptr; } explicit operator bool() const { return ptr != nullptr; } bool operator==(UPP other) const { return ptr == other.ptr; } @@ -192,39 +202,52 @@ UPP MR(GuestWrapper> p) return p.get(); } +namespace functions +{ + +template +class Raw68KFunction +{ +public: + ProcPtr operator&() const + { + return guestFP; + } + + void init(); +protected: + ProcPtr guestFP; +}; template -class PascalFunction {}; +class WrappedFunction {}; template -class PascalFunction +class WrappedFunction { public: - Ret operator()(Args... args) + Ret operator()(Args... args) const { return (*fptr)(args...); } - operator UPP() + UPP operator&() const { return guestFP; } -private: + + void init(); +protected: UPP guestFP; }; - - - template class PascalTrap {}; template -class PascalTrap : public PascalFunction +class PascalTrap : public WrappedFunction { public: - using ProcPtr = Ret (*)(Args...); - Ret operator()(Args... args) const { if((trapno & TOOLBIT) == 0) @@ -245,22 +268,36 @@ class PascalTrap : public PascalFunction, NAME) -#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) const auto NAME = &C_##NAME -#define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(PascalFunction, NAME) -#define NOTRAP_FUNCTION(NAME) const auto NAME = &C_##NAME +#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) CREATE_FUNCTION_WRAPPER(PascalTrap, NAME) +#define NOTRAP_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) +#define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) +#define RAW_68K_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME) + +class InitAction +{ +public: + InitAction(void (*f)()); + static void execute(); +}; + +} } diff --git a/src/include/rsys/gestalt.h b/src/include/rsys/gestalt.h index 6c586303..9205246c 100644 --- a/src/include/rsys/gestalt.h +++ b/src/include/rsys/gestalt.h @@ -55,6 +55,7 @@ enum }; extern OSErrRET C_PhysicalGestalt(OSType selector, GUEST *responsep); +PASCAL_FUNCTION(PhysicalGestalt); extern void gestalt_set_system_version(uint32_t version); extern void gestalt_set_memory_size(uint32_t size); diff --git a/src/include/rsys/list.h b/src/include/rsys/list.h index da7e6121..5b6b2286 100644 --- a/src/include/rsys/list.h +++ b/src/include/rsys/list.h @@ -17,12 +17,13 @@ namespace Executor { extern void C_ldef0(INTEGER, BOOLEAN, Rect *, Cell, INTEGER, INTEGER, ListHandle); +PASCAL_FUNCTION(ldef0); #define DODRAW 0x8 /* whether or not we should really draw */ -typedef void (*listprocp)(INTEGER mess, BOOLEAN sel, Rect *rectp, - Cell cell, INTEGER off, INTEGER len, ListHandle lhand); +using listprocp = UPP; extern void ROMlib_listcall(INTEGER mess, BOOLEAN sel, Rect *rp, Cell cell, INTEGER off, INTEGER len, ListHandle lhand); diff --git a/src/include/rsys/menu.h b/src/include/rsys/menu.h index c53a3427..c06dc8bf 100644 --- a/src/include/rsys/menu.h +++ b/src/include/rsys/menu.h @@ -42,7 +42,9 @@ typedef struct mext } * mextp; extern void C_mdef0(INTEGER, MenuHandle, Rect *, Point, GUEST *); +PASCAL_FUNCTION(mdef0); extern int32_t C_mbdf0(int16_t, int16_t, int16_t, int32_t); +PASCAL_FUNCTION(mbdf0); #define SIZEOFMEXT 5 #define SIZEOFMINFO (sizeof(MenuInfo) - sizeof(Str255) + 1) @@ -208,10 +210,10 @@ extern GUEST MBDFHndl_H; #define SLOP 13 -typedef void (*menuprocp)(INTEGER mess, MenuHandle themenu, - Rect *menrect, Point hit, INTEGER *which); -typedef LONGINT (*mbdfprocp)(INTEGER variant, INTEGER msg, - INTEGER param1, intptr_t param2); +using menuprocp = UPP *which)>; +using mbdfprocp = UPP; extern void ROMlib_menucall(INTEGER mess, MenuHandle themenu, Rect *menrect, Point hit, GUEST *which); diff --git a/src/include/rsys/nextprint.h b/src/include/rsys/nextprint.h index a7a636b3..1b8ffc50 100644 --- a/src/include/rsys/nextprint.h +++ b/src/include/rsys/nextprint.h @@ -35,7 +35,7 @@ typedef enum { extern void NeXTPrArc(LONGINT verb, Rect *r, LONGINT starta, LONGINT arca, GrafPtr gp); -extern void NeXTPrBits(BitMap *srcbmp, Rect *srcrp, Rect *dstrp, +extern void NeXTPrBits(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, LONGINT mode, RgnHandle mask, GrafPtr gp); extern void NeXTPrLine(Point to, GrafPtr gp); extern void NeXTPrOval(LONGINT v, Rect *rp, GrafPtr gp); diff --git a/src/include/rsys/osutil.h b/src/include/rsys/osutil.h index 1ecad035..e7ab82a2 100644 --- a/src/include/rsys/osutil.h +++ b/src/include/rsys/osutil.h @@ -20,6 +20,7 @@ extern void date_to_swapped_fields(long long mactime, GUEST *yearp, GUEST *dayofyearp, GUEST *weekofyearp); extern void C_ROMlib_wakeup(void); +PASCAL_FUNCTION(ROMlib_wakeup); #define PARAMRAMMACNAME "\010ParamRAM" diff --git a/src/include/rsys/print.h b/src/include/rsys/print.h index 5e5d0d11..c1f775b4 100644 --- a/src/include/rsys/print.h +++ b/src/include/rsys/print.h @@ -222,12 +222,6 @@ extern void C_ROMlib_myjobproc(DialogPtr dp, INTEGER itemno); extern void C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno); -extern BOOLEAN C_ROMlib_numsonlyfilterproc(DialogPeek dp, - EventRecord *evt, GUEST *ith); - -extern BOOLEAN C_ROMlib_stlfilterproc(DialogPeek dp, - EventRecord *evt, GUEST *ith); - extern void ROMlib_set_default_resolution(THPrint hPrint, INTEGER vres, INTEGER hres); @@ -237,8 +231,10 @@ extern void do_textend(void); extern void print_reinit(void); -extern void C_ROMlib_circle_ok(DialogPeek dp, INTEGER which); -extern void C_ROMlib_orientation(DialogPeek dp, INTEGER which); +extern void C_ROMlib_circle_ok(DialogPtr dp, INTEGER which); +PASCAL_FUNCTION(ROMlib_circle_ok); +extern void C_ROMlib_orientation(DialogPtr dp, INTEGER which); +PASCAL_FUNCTION(ROMlib_orientation); extern void printer_init(void); extern void update_printing_globals(void); diff --git a/src/include/rsys/pstuff.h b/src/include/rsys/pstuff.h index 15fcbd52..e35182bb 100644 --- a/src/include/rsys/pstuff.h +++ b/src/include/rsys/pstuff.h @@ -1,4 +1,4 @@ -#if !defined(_PSTUFF_H_) +#if false && !defined(_PSTUFF_H_) #define _PSTUFF_H_ namespace Executor diff --git a/src/include/rsys/refresh.h b/src/include/rsys/refresh.h index 4757a191..248d1022 100644 --- a/src/include/rsys/refresh.h +++ b/src/include/rsys/refresh.h @@ -5,6 +5,7 @@ namespace Executor extern void set_refresh_rate(int new1); extern void dequeue_refresh_task(void); void C_handle_refresh(void); +PASCAL_FUNCTION(handle_refresh); extern BOOLEAN find_changed_rect_and_update_shadow(const uint32_t *screen, uint32_t *shadow, long row_longs, long num_rows, int *top_long, int *left_long, diff --git a/src/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index 7a220114..07cb99b2 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -40,6 +40,7 @@ extern void ROMlib_CONDITION_WAIT(LONGINT lp); extern void ROMlib_MUTEX_CONDITION_DESTROY(LONGINT lp); extern void C_sound_timer_handler(void); +PASCAL_FUNCTION(sound_timer_handler); extern void clear_pending_sounds(void); /* patl stuff */ @@ -102,6 +103,7 @@ extern bool sound_disabled_p; extern int ROMlib_get_snd_cmds(Handle sndh, SndCommand **cmdsp); BOOLEAN C_snth5(SndChannelPtr, SndCommand *, ModifierStubPtr); +PASCAL_FUNCTION(snth5); } #endif /* !defined(__RSYS_SOUNDOPTS__) */ diff --git a/src/include/rsys/stdbits.h b/src/include/rsys/stdbits.h index c3ecb209..9381c74d 100644 --- a/src/include/rsys/stdbits.h +++ b/src/include/rsys/stdbits.h @@ -24,9 +24,9 @@ extern void ROMlib_bogo_stdbits(BitMap *src_bogo_map, BitMap *dst_bogo_map, const Rect *src_rect, const Rect *dst_rect, short mode, RgnHandle mask); -extern void canonicalize_bogo_map_cleanup(BitMap *bogo_map, +extern void canonicalize_bogo_map_cleanup(const BitMap *bogo_map, struct cleanup_info *info); -extern void canonicalize_bogo_map(BitMap *bogo_map, PixMap **canonical_addr, +extern void canonicalize_bogo_map(const BitMap *bogo_map, PixMap **canonical_addr, struct cleanup_info *info); } #endif /* !_STDBITS_H_ */ diff --git a/src/include/rsys/stdfile.h b/src/include/rsys/stdfile.h index e2795349..f6492f95 100644 --- a/src/include/rsys/stdfile.h +++ b/src/include/rsys/stdfile.h @@ -38,7 +38,9 @@ namespace Executor extern int ROMlib_strcmp(const Byte *s1, const Byte *s2); extern void futzwithdosdisks(void); extern void C_ROMlib_stdftrack(ControlHandle, INTEGER); -extern INTEGER C_ROMlib_stdffilt(DialogPeek, EventRecord *, GUEST *); +PASCAL_FUNCTION(ROMlib_stdftrack); +extern Boolean C_ROMlib_stdffilt(DialogPtr, EventRecord *, GUEST *); +PASCAL_FUNCTION(ROMlib_stdffilt); extern void ROMlib_init_stdfile(void); #if defined(LINUX) @@ -56,5 +58,6 @@ enum extern int nodrivesearch_p; OSErr C_unixmount(CInfoPBRec *cbp); +PASCAL_FUNCTION(unixmount); } #endif /* !defined(__RSYS_STDFILE__) */ diff --git a/src/include/rsys/tesave.h b/src/include/rsys/tesave.h index 6172cc16..6652727b 100644 --- a/src/include/rsys/tesave.h +++ b/src/include/rsys/tesave.h @@ -95,6 +95,8 @@ extern void ROMlib_teremovestyleinfo(TEStyleHandle sth, INTEGER start, INTEGER stop); extern INTEGER C_ROMlib_dotext(TEPtr tep, INTEGER first, INTEGER last, INTEGER what); +PASCAL_FUNCTION(ROMlib_dotext); + extern int16_t te_char_to_run_index(TEStyleHandle te_style, int16_t sel); extern int16_t te_char_to_lineno(TEPtr te, int16_t sel); diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index 23a38a92..13ad3589 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -41,6 +41,7 @@ extern unsigned short mostrecenttrap; extern uintptr_t CToPascalCall(void *, uint64_t, ...); extern toolstuff_t toolstuff[NTOOLENTRIES]; +extern osstuff_t osstuff[]; } #endif diff --git a/src/include/rsys/vbl.h b/src/include/rsys/vbl.h index 683d4e5a..e805b8c1 100644 --- a/src/include/rsys/vbl.h +++ b/src/include/rsys/vbl.h @@ -4,6 +4,7 @@ namespace Executor { extern void C_ROMlib_vcatch(void); +PASCAL_FUNCTION(ROMlib_vcatch); } #endif /* !defined(__RSYS_VBL__) */ diff --git a/src/include/rsys/wind.h b/src/include/rsys/wind.h index 49bf5c62..ea4c4197 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -32,8 +32,10 @@ struct windrestype GUEST _wtitle; }; -extern LONGINT C_wdef0(INTEGER, WindowPtr, INTEGER, LONGINT), - C_wdef16(INTEGER, WindowPtr, INTEGER, LONGINT); +extern LONGINT C_wdef0(INTEGER, WindowPtr, INTEGER, LONGINT); +PASCAL_FUNCTION(wdef0); +extern LONGINT C_wdef16(INTEGER, WindowPtr, INTEGER, LONGINT); +PASCAL_FUNCTION(wdef16); extern WindowPeek ROMlib_firstvisible(WindowPtr w); @@ -52,8 +54,8 @@ typedef void (*draghookp)(void); extern BOOLEAN ROMlib_dirtyvariant; -typedef LONGINT (*windprocp)(INTEGER var, WindowPtr wind, INTEGER mess, - LONGINT param); +using windprocp = UPP; extern void CALLDRAGHOOK(void); extern void WINDCALLDESKHOOK(void); diff --git a/src/launch.cpp b/src/launch.cpp index d40cfaf8..141419c9 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -1012,7 +1012,7 @@ static void reset_low_globals(void) ROMlib_Fsetenv(&env, 0); } - LM(TEDoText) = RM((ProcPtr)P_ROMlib_dotext); /* where should this go ? */ + LM(TEDoText) = RM((ProcPtr)&ROMlib_dotext); /* where should this go ? */ LM(WWExist) = LM(QDExist) = EXIST_NO; /* TODO: LOOK HERE! */ LM(SCSIFlags) = CWC(0xEC00); /* scsi+clock+xparam+mmu+adb @@ -1039,24 +1039,20 @@ static void reset_low_globals(void) LM(MinStack) = CLC(0x400); /* values ... */ LM(IAZNotify) = 0; LM(CurPitch) = 0; - LM(JSwapFont) = RM((ProcPtr)P_FMSwapFont); - LM(JInitCrsr) = RM((ProcPtr)P_InitCursor); + LM(JSwapFont) = RM((ProcPtr)&FMSwapFont); + LM(JInitCrsr) = RM((ProcPtr)&InitCursor); - LM(JHideCursor) = RM((ProcPtr)P_HideCursor); - LM(JShowCursor) = RM((ProcPtr)P_ShowCursor); - LM(JShieldCursor) = RM((ProcPtr)P_ShieldCursor); - LM(JSetCrsr) = RM((ProcPtr)P_SetCursor); - LM(JCrsrObscure) = RM((ProcPtr)P_ObscureCursor); + LM(JHideCursor) = RM((ProcPtr)&HideCursor); + LM(JShowCursor) = RM((ProcPtr)&ShowCursor); + LM(JShieldCursor) = RM((ProcPtr)&ShieldCursor); + LM(JSetCrsr) = RM((ProcPtr)&SetCursor); + LM(JCrsrObscure) = RM((ProcPtr)&ObscureCursor); -#if 0 - JUnknown574 = RM ((ProcPtr)P_Unknown574); -#else - *(GUEST *)(0x574 + ROMlib_offset) = RM(P_Unknown574); -#endif + LM(JUnknown574) = RM ((ProcPtr)&unknown574); - LM(Key1Trans) = RM((Ptr)P_Key1Trans); - LM(Key2Trans) = RM((Ptr)P_Key2Trans); - LM(JFLUSH) = RM((ProcPtr)P_flushcache); + LM(Key1Trans) = RM((Ptr)&stub_Key1Trans); + LM(Key2Trans) = RM((Ptr)&stub_Key2Trans); + LM(JFLUSH) = RM(&stub_flushcache); LM(JResUnknown1) = LM(JFLUSH); /* I don't know what these are supposed to */ LM(JResUnknown2) = LM(JFLUSH); /* do, but they're not called enough for us to worry about the cache flushing diff --git a/src/listAccess.cpp b/src/listAccess.cpp index 57f3109f..a353b58d 100644 --- a/src/listAccess.cpp +++ b/src/listAccess.cpp @@ -89,7 +89,7 @@ void Executor::C_LRect(Rect *cellrect, Cell cell, ListHandle list) /* IMIV-274 * } } -typedef INTEGER (*cmpf)(Ptr p1, Ptr p2, INTEGER len1, INTEGER len2); +using cmpf = UPP; #define CALLCMP(a1, a2, a3, a4, fp) \ @@ -104,7 +104,7 @@ static inline INTEGER Executor::ROMlib_CALLCMP(Ptr p1, Ptr p2, INTEGER l1, INTEG { INTEGER retval; - if(fp == (cmpf)P_IUMagString) + if(fp == &IUMagString) retval = C_IUMagString(p1, p2, l1, l2); else { @@ -128,7 +128,7 @@ BOOLEAN Executor::C_LSearch(Ptr dp, INTEGER dl, Ptr proc, GUEST *cellp, HLock((Handle)list); HLock((Handle)HxP(list, cells)); - fp = proc ? (cmpf)proc : (cmpf)P_IUMagString; + fp = proc ? (cmpf)proc : &IUMagString; cell.h = CW(cellp->h); cell.v = CW(cellp->v); swappedcell = *cellp; diff --git a/src/listDisplay.cpp b/src/listDisplay.cpp index 963d4a5e..3264a9bb 100644 --- a/src/listDisplay.cpp +++ b/src/listDisplay.cpp @@ -264,8 +264,8 @@ void Executor::ROMlib_listcall(INTEGER mess, BOOLEAN sel, Rect *rp, Cell cell, I LoadResource(HxP(lhand, listDefProc)); lp = MR(*(GUEST *)HxP(lhand, listDefProc)); } - if(lp == P_ldef0) - C_ldef0(mess, sel, rp, cell, off, len, lhand); + if(lp == &ldef0) + ldef0(mess, sel, rp, cell, off, len, lhand); else { ROMlib_hook(list_ldefnumber); diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 2cdc63a2..a7bb6d4c 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -447,11 +447,11 @@ BOOLEAN Executor::C_LClick(Point pt, INTEGER mods, { if(TestControl(ch, pt) == inThumb) { - TrackControl(ch, pt, (ProcPtr)0); + TrackControl(ch, pt, nullptr); scrollbyvalues(list); } else - TrackControl(ch, pt, (ProcPtr)P_ROMlib_mytrack); + TrackControl(ch, pt, &ROMlib_mytrack); } return doubleclick; return 0; diff --git a/src/main.cpp b/src/main.cpp index 430bb9f3..32f96e28 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1432,6 +1432,7 @@ int main(int argc, char **argv) } filltables(); + Executor::functions::InitAction::execute(); l = ostraptable[0x0FC]; ((unsigned char *)jmpl_to_ResourceStub)[2] = l >> 24; @@ -1640,7 +1641,7 @@ int main(int argc, char **argv) ROMlib_Fsetenv(&env, 0); } - LM(TEDoText) = RM((ProcPtr)P_ROMlib_dotext); /* where should this go ? */ + LM(TEDoText) = RM((ProcPtr)&ROMlib_dotext); /* where should this go ? */ { LONGINT save58; diff --git a/src/menu.cpp b/src/menu.cpp index 5a96060f..d102db46 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -1645,9 +1645,9 @@ void Executor::ROMlib_menucall(INTEGER mess, MenuHandle themenu, Rect *menrect, mp = (menuprocp)STARH(defproc); - if(mp == P_mdef0) + if(mp == (menuprocp)&mdef0) { - C_mdef0(mess, themenu, menrect, hit, which); + mdef0(mess, themenu, menrect, hit, which); } else { @@ -1673,8 +1673,8 @@ Executor::ROMlib_mbdfcall(INTEGER msg, INTEGER param1, LONGINT param2) mp = (mbdfprocp)STARH(defproc); - if(mp == P_mbdf0) - retval = C_mbdf0((Hx(MENULIST, mufu) & 7), msg, param1, param2); + if(mp == (mbdfprocp)&mbdf0) + retval = mbdf0((Hx(MENULIST, mufu) & 7), msg, param1, param2); else { ROMlib_hook(menu_mbdfnumber); diff --git a/src/osutil.cpp b/src/osutil.cpp index da9ad36e..516b7cf2 100644 --- a/src/osutil.cpp +++ b/src/osutil.cpp @@ -855,7 +855,7 @@ void Executor::Delay(LONGINT n, LONGINT *ftp) /* IMII-384 */ TMTask tm; shouldbeawake = false; - tm.tmAddr = RM((ProcPtr)P_ROMlib_wakeup); + tm.tmAddr = RM((ProcPtr)&ROMlib_wakeup); InsTime((QElemPtr)&tm); // fprintf (stderr, "p"); diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index f5f628b4..ff0cc806 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -503,9 +503,9 @@ void Executor::C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno) } } -typedef TPPrDlg (*prinitprocp)(THPrint hPrint); +using prinitprocp = UPP; -typedef void (*pritemprocp)(TPPrDlg prrecptr, INTEGER item); +using pritemprocp = UPP; #define CALLPRINITPROC(hPrint, fp) \ @@ -521,9 +521,9 @@ static inline TPPrDlg Executor::ROMlib_CALLPRINITPROC(THPrint hPrint, prinitproc { TPPrDlg retval; ROMlib_hook(pr_initnumber); - if(fp == P_PrStlInit) + if(fp == &PrStlInit) retval = C_PrStlInit(hPrint); - else if(fp == P_PrJobInit) + else if(fp == &PrJobInit) retval = C_PrJobInit(hPrint); else { @@ -538,9 +538,9 @@ static inline TPPrDlg Executor::ROMlib_CALLPRINITPROC(THPrint hPrint, prinitproc static inline void Executor::ROMlib_CALLPRITEMPROC(TPPrDlg prrecptr, INTEGER item, pritemprocp fp) { ROMlib_hook(pr_itemnumber); - if(fp == (pritemprocp)P_ROMlib_myjobproc) + if(fp == &ROMlib_myjobproc) C_ROMlib_myjobproc((DialogPtr)prrecptr, item); - else if(fp == (pritemprocp)P_ROMlib_mystlproc) + else if(fp == &ROMlib_mystlproc) C_ROMlib_mystlproc((DialogPtr)prrecptr, item); else { @@ -549,7 +549,7 @@ static inline void Executor::ROMlib_CALLPRITEMPROC(TPPrDlg prrecptr, INTEGER ite } BOOLEAN Executor::C_ROMlib_stlfilterproc( - DialogPeek dp, EventRecord *evt, GUEST *ith) + DialogPtr dlg, EventRecord *evt, GUEST *ith) { BOOLEAN retval; char *keyp; @@ -582,11 +582,11 @@ BOOLEAN Executor::C_ROMlib_stlfilterproc( glocalp = evt->where; gp = thePort; - SetPort((GrafPtr)dp); + SetPort(dlg); GlobalToLocal(&glocalp); localp = glocalp.get(); SetPort(gp); - GetDItem((DialogPtr)dp, OK, &unused, &h, &r); + GetDItem(dlg, OK, &unused, &h, &r); if(PtInRect(localp, &r)) { ControlHandle ch; @@ -604,7 +604,7 @@ BOOLEAN Executor::C_ROMlib_stlfilterproc( break; } - keyp = strdup(find_item_key((DialogPtr)dp, LAYOUT_PRINTER_TYPE_NO).c_str()); + keyp = strdup(find_item_key(dlg, LAYOUT_PRINTER_TYPE_NO).c_str()); if(retval && *ith == CWC(OK) && (strcmp(keyp, "PostScript File") == 0)) { struct stat sbuf; @@ -612,7 +612,7 @@ BOOLEAN Executor::C_ROMlib_stlfilterproc( char *filename; int len; - h = GetDIText((DialogPtr)dp, LAYOUT_FILENAME_NO); + h = GetDIText(dlg, LAYOUT_FILENAME_NO); len = GetHandleSize(h); filename = (char *)alloca(len + 1); memcpy(filename, STARH(h), len); @@ -643,7 +643,7 @@ BOOLEAN Executor::C_ROMlib_stlfilterproc( } BOOLEAN Executor::C_ROMlib_numsonlyfilterproc( - DialogPeek dp, EventRecord *evt, GUEST *ith) + DialogPtr dlg, EventRecord *evt, GUEST *ith) { char c; @@ -667,13 +667,13 @@ BOOLEAN Executor::C_ROMlib_numsonlyfilterproc( } static void -set_userItem(DialogPtr dp, INTEGER itemno, void *funcp) +set_userItem(DialogPtr dp, INTEGER itemno, UserItemProcPtr funcp) { Rect r; GUEST unused; GetDItem(dp, itemno, &unused, NULL, &r); - SetDItem(dp, itemno, userItem, (Handle)funcp, &r); + SetDItem(dp, itemno, userItem, (Handle)(void*)funcp, &r); } static void @@ -805,7 +805,7 @@ TPPrDlg Executor::C_PrJobInit(THPrint hPrint) the spool file name */ set_userItem((DialogPtr)retval, PRINT_CIRCLE_OK_NO, - P_ROMlib_circle_ok); + &ROMlib_circle_ok); adjust_num_copies(retval, hPrint); @@ -813,9 +813,9 @@ TPPrDlg Executor::C_PrJobInit(THPrint hPrint) adjust_print_name((DialogPtr)retval); - retval->pFltrProc = RM((ProcPtr)P_ROMlib_numsonlyfilterproc); + retval->pFltrProc = RM(&ROMlib_numsonlyfilterproc); /* TODO: Get this from the right place */ - retval->pItemProc = RM((ProcPtr)P_ROMlib_myjobproc); + retval->pItemProc = RM(&ROMlib_myjobproc); /* TODO: Get this from the right place */ retval->hPrintUsr = RM(hPrint); } @@ -830,12 +830,12 @@ TPPrDlg Executor::C_PrJobInit(THPrint hPrint) return retval; } -void Executor::C_ROMlib_circle_ok(DialogPeek dp, INTEGER which) +void Executor::C_ROMlib_circle_ok(DialogPtr dp, INTEGER which) { Rect r; GUEST unused; - GetDItem((DialogPtr)dp, which, &unused, NULL, &r); + GetDItem(dp, which, &unused, NULL, &r); PenNormal(); PenSize(3, 3); InsetRect(&r, -4, -4); @@ -845,12 +845,12 @@ void Executor::C_ROMlib_circle_ok(DialogPeek dp, INTEGER which) FrameRect(&r); } -void Executor::C_ROMlib_orientation(DialogPeek dp, INTEGER which) +void Executor::C_ROMlib_orientation(DialogPtr dp, INTEGER which) { Rect r; GUEST unused; - GetDItem((DialogPtr)dp, which, &unused, NULL, &r); + GetDItem(dp, which, &unused, NULL, &r); PenNormal(); PenSize(1, 1); InsetRect(&r, 1, 1); @@ -1009,13 +1009,13 @@ TPPrDlg Executor::C_PrStlInit(THPrint hPrint) HideDItem((DialogPtr)retval, LAYOUT_FILENAME_NO); set_userItem((DialogPtr)retval, LAYOUT_CIRCLE_OK_NO, - P_ROMlib_circle_ok); + &ROMlib_circle_ok); set_userItem((DialogPtr)retval, LAYOUT_PORTRAIT_NO, - P_ROMlib_orientation); + &ROMlib_orientation); set_userItem((DialogPtr)retval, LAYOUT_LANDSCAPE_NO, - P_ROMlib_orientation); + &ROMlib_orientation); { Str255 appname; @@ -1098,8 +1098,8 @@ TPPrDlg Executor::C_PrStlInit(THPrint hPrint) set_default_orientation(retval); /* must be called after paper menu is adjusted */ - retval->pFltrProc = RM((ProcPtr)P_ROMlib_stlfilterproc); - retval->pItemProc = RM((ProcPtr)P_ROMlib_mystlproc); + retval->pFltrProc = RM(&ROMlib_stlfilterproc); + retval->pItemProc = RM(&ROMlib_mystlproc); retval->hPrintUsr = RM(hPrint); } else @@ -1131,10 +1131,10 @@ BOOLEAN Executor::C_PrDlgMain(THPrint hPrint, ProcPtr initfptr) */ ROMlib_updatenextpagerect(&Hx(hPrint, rPaper)); #endif /* defined(MACOSX_) */ - if((prrecptr = CALLPRINITPROC(hPrint, initfptr))) + if((prrecptr = CALLPRINITPROC(hPrint, (prinitprocp) initfptr))) { if(!SUNPATH_HACK || (((pritemprocp)MR(prrecptr->pItemProc) - != (pritemprocp)P_ROMlib_myjobproc) + != (pritemprocp)&ROMlib_myjobproc) || ROMlib_printer != std::string(WIN32_TOKEN))) { ShowWindow((WindowPtr)prrecptr); @@ -1143,12 +1143,12 @@ BOOLEAN Executor::C_PrDlgMain(THPrint hPrint, ProcPtr initfptr) do { if(SUNPATH_HACK && (((pritemprocp)MR(prrecptr->pItemProc) - == (pritemprocp)P_ROMlib_myjobproc) + == (pritemprocp)&ROMlib_myjobproc) && ROMlib_printer == std::string(WIN32_TOKEN))) item = 1; else { - ModalDialog((ProcPtr)MR(prrecptr->pFltrProc), &item_swapped); + ModalDialog(MR(prrecptr->pFltrProc), &item_swapped); item = CW(item_swapped); } CALLPRITEMPROC(prrecptr, item, MR(prrecptr->pItemProc)); @@ -1157,7 +1157,7 @@ BOOLEAN Executor::C_PrDlgMain(THPrint hPrint, ProcPtr initfptr) /* Don't allow them to continue Win32 stuff if we can't initialize the Win32 subsystem */ if(((pritemprocp)MR(prrecptr->pItemProc) - == (pritemprocp)P_ROMlib_myjobproc) + == (pritemprocp)&ROMlib_myjobproc) && item == 1 && strcmp(ROMlib_printer, WIN32_TOKEN) == 0 && !ROMlib_wp) diff --git a/src/prPrinting.cpp b/src/prPrinting.cpp index 10e95e64..52a25b29 100644 --- a/src/prPrinting.cpp +++ b/src/prPrinting.cpp @@ -79,12 +79,12 @@ void Executor::C_PrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca) NeXTPrArc(verb, r, starta, arca, thePort); } -void Executor::C_donotPrBits(BitMap *srcbmp, Rect *srcrp, Rect *dstrp, +void Executor::C_donotPrBits(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, INTEGER mode, RgnHandle mask) { } -void Executor::C_PrBits(BitMap *srcbmp, Rect *srcrp, Rect *dstrp, INTEGER mode, +void Executor::C_PrBits(const BitMap *srcbmp, const Rect *srcrp, const Rect *dstrp, INTEGER mode, RgnHandle mask) { if(pageno >= pagewanted && pageno <= lastpagewanted) @@ -285,7 +285,7 @@ void Executor::C_PrComment(INTEGER kind, INTEGER size, Handle hand) case postscripttextis: if(ROMlib_passpostscript) (PORT_GRAF_PROCS(thePort))->textProc - = RM((textProc_t)P_textasPS); + = RM(&textasPS); break; case postscripthandle: if(pageno >= pagewanted && pageno <= lastpagewanted && ROMlib_passpostscript) @@ -325,41 +325,41 @@ ourinit(TPPrPort port, BOOLEAN preserve_font) printport.pnLoc.h = CWC(-32768); printport.pnLoc.v = CWC(-32768); OpenPort(&port->gPort); - sendpsprocs.textProc = RM((textProc_t)P_donotPrText); - sendpsprocs.lineProc = RM((lineProc_t)P_donotPrLine); - sendpsprocs.rectProc = RM((rectProc_t)P_donotPrRect); - sendpsprocs.rRectProc = RM((rRectProc_t)P_donotPrRRect); - sendpsprocs.ovalProc = RM((ovalProc_t)P_donotPrOval); - sendpsprocs.arcProc = RM((arcProc_t)P_donotPrArc); - sendpsprocs.polyProc = RM((polyProc_t)P_donotPrPoly); - sendpsprocs.rgnProc = RM((rgnProc_t)P_donotPrRgn); - sendpsprocs.bitsProc = RM((bitsProc_t)P_donotPrBits); - sendpsprocs.commentProc = RM((commentProc_t)P_PrComment); - sendpsprocs.txMeasProc = RM((txMeasProc_t)P_PrTxMeas); + sendpsprocs.textProc = RM(&donotPrText); + sendpsprocs.lineProc = RM(&donotPrLine); + sendpsprocs.rectProc = RM(&donotPrRect); + sendpsprocs.rRectProc = RM(&donotPrRRect); + sendpsprocs.ovalProc = RM(&donotPrOval); + sendpsprocs.arcProc = RM(&donotPrArc); + sendpsprocs.polyProc = RM(&donotPrPoly); + sendpsprocs.rgnProc = RM(&donotPrRgn); + sendpsprocs.bitsProc = RM(&donotPrBits); + sendpsprocs.commentProc = RM(&PrComment); + sendpsprocs.txMeasProc = RM(&PrTxMeas); #if 0 - sendpsprocs.getPicProc = RM((getPicProc_t)P_donotPrGetPic); - sendpsprocs.putPicProc = RM((putPicProc_t)P_donotPrPutPic); + sendpsprocs.getPicProc = RM(&donotPrGetPic); + sendpsprocs.putPicProc = RM(&donotPrPutPic); #else - sendpsprocs.getPicProc = RM((getPicProc_t)P_StdGetPic); - sendpsprocs.putPicProc = RM((putPicProc_t)P_StdPutPic); + sendpsprocs.getPicProc = RM(&StdGetPic); + sendpsprocs.putPicProc = RM(&StdPutPic); #endif - prprocs.textProc = RM((textProc_t)P_PrText); - prprocs.lineProc = RM((lineProc_t)P_PrLine); - prprocs.rectProc = RM((rectProc_t)P_PrRect); - prprocs.rRectProc = RM((rRectProc_t)P_PrRRect); - prprocs.ovalProc = RM((ovalProc_t)P_PrOval); - prprocs.arcProc = RM((arcProc_t)P_PrArc); - prprocs.polyProc = RM((polyProc_t)P_PrPoly); - prprocs.rgnProc = RM((rgnProc_t)P_PrRgn); - prprocs.bitsProc = RM((bitsProc_t)P_PrBits); - prprocs.commentProc = RM((commentProc_t)P_PrComment); - prprocs.txMeasProc = RM((txMeasProc_t)P_PrTxMeas); + prprocs.textProc = RM(&PrText); + prprocs.lineProc = RM(&PrLine); + prprocs.rectProc = RM(&PrRect); + prprocs.rRectProc = RM(&PrRRect); + prprocs.ovalProc = RM(&PrOval); + prprocs.arcProc = RM(&PrArc); + prprocs.polyProc = RM(&PrPoly); + prprocs.rgnProc = RM(&PrRgn); + prprocs.bitsProc = RM(&PrBits); + prprocs.commentProc = RM(&PrComment); + prprocs.txMeasProc = RM(&PrTxMeas); #if 0 - prprocs.getPicProc = RM((getPicProc_t)P_PrGetPic); - prprocs.putPicProc = RM((putPicProc_t)P_PrPutPic); + prprocs.getPicProc = RM(&PrGetPic); + prprocs.putPicProc = RM(&PrPutPic); #else - prprocs.getPicProc = RM((getPicProc_t)P_StdGetPic); - prprocs.putPicProc = RM((putPicProc_t)P_StdPutPic); + prprocs.getPicProc = RM(&StdGetPic); + prprocs.putPicProc = RM(&StdPutPic); #endif port->saveprocs = prprocs; #if 1 diff --git a/src/prRecords.cpp b/src/prRecords.cpp index cd8c1177..7a7e66b1 100644 --- a/src/prRecords.cpp +++ b/src/prRecords.cpp @@ -119,14 +119,14 @@ BOOLEAN Executor::C_PrStlDialog(THPrint hPrint) { BOOLEAN retval; - retval = C_PrDlgMain(hPrint, (ProcPtr)P_PrStlInit); + retval = C_PrDlgMain(hPrint, (ProcPtr)&PrStlInit); return retval; } BOOLEAN Executor::C_PrJobDialog(THPrint hPrint) { ROMlib_acknowledge_job_dialog(hPrint); - return C_PrDlgMain(hPrint, (ProcPtr)P_PrJobInit); + return C_PrDlgMain(hPrint, (ProcPtr)&PrJobInit); } void Executor::C_PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst) /* TODO */ diff --git a/src/qBit.cpp b/src/qBit.cpp index 15f19af1..c21becf4 100644 --- a/src/qBit.cpp +++ b/src/qBit.cpp @@ -75,7 +75,7 @@ void Executor::C_CopyBits(BitMap *src_bitmap, BitMap *dst_bitmap, been patched out */ gp = PORT_GRAF_PROCS(thePort); if(gp - && MR(gp->bitsProc) != P_StdBits) + && MR(gp->bitsProc) != &StdBits) warning_unexpected("thePort bitsProc patched out!"); if(tooltraptable[StdBits_TOOLTRAP_NUMBER] diff --git a/src/qColorPicker.cpp b/src/qColorPicker.cpp index c26a5455..bf6218a7 100644 --- a/src/qColorPicker.cpp +++ b/src/qColorPicker.cpp @@ -881,7 +881,7 @@ event_loop(void) control_p = _FindControl(local_pt, color_picker_window, &c); if(control_p) { - release_part = TrackControl(c, local_pt, (ProcPtr)-1); + release_part = TrackControl(c, local_pt, (ControlActionUPP)-1); if(release_part == inButton && c == ok_button) return true; if(release_part == inButton && c == cancel_button) diff --git a/src/qHooks.cpp b/src/qHooks.cpp index ae5e59d1..79224ba0 100644 --- a/src/qHooks.cpp +++ b/src/qHooks.cpp @@ -30,12 +30,12 @@ Executor::enable_stdtext(void) void Executor::ROMlib_CALLTEXT(INTEGER bc, Ptr bufp, Point num, Point den) { QDProcsPtr gp; - void (*pp)(INTEGER, Ptr, Point, Point); + textProc_t pp; if(text_is_enabled_p) { if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->textProc)) != P_StdText) + && (pp = MR(gp->textProc)) != &StdText) { ROMlib_hook(q_textprocnumber); CToPascalCall((void *)pp, ctop(&C_StdText), bc, bufp, num, den); @@ -48,10 +48,10 @@ void Executor::ROMlib_CALLTEXT(INTEGER bc, Ptr bufp, Point num, Point den) void Executor::ROMlib_CALLLINE(Point p) { QDProcsPtr gp; - void (*pp)(Point); + lineProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->lineProc)) != P_StdLine) + && (pp = MR(gp->lineProc)) != &StdLine) { ROMlib_hook(q_lineprocnumber); CToPascalCall((void *)pp, ctop(&C_StdLine), p); @@ -63,10 +63,10 @@ void Executor::ROMlib_CALLLINE(Point p) void Executor::ROMlib_CALLRECT(GrafVerb v, Rect *rp) { QDProcsPtr gp; - void (*pp)(GrafVerb, Rect *); + rectProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->rectProc)) != P_StdRect) + && (pp = MR(gp->rectProc)) != &StdRect) { ROMlib_hook(q_rectprocnumber); CToPascalCall((void *)pp, ctop(&C_StdRect), v, rp); @@ -78,10 +78,10 @@ void Executor::ROMlib_CALLRECT(GrafVerb v, Rect *rp) void Executor::ROMlib_CALLOVAL(GrafVerb v, Rect *rp) { QDProcsPtr gp; - void (*pp)(GrafVerb, Rect *); + ovalProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->ovalProc)) != P_StdOval) + && (pp = MR(gp->ovalProc)) != &StdOval) { ROMlib_hook(q_ovalprocnumber); CToPascalCall((void *)pp, ctop(&C_StdOval), v, rp); @@ -93,10 +93,10 @@ void Executor::ROMlib_CALLOVAL(GrafVerb v, Rect *rp) void Executor::ROMlib_CALLRRECT(GrafVerb v, Rect *rp, INTEGER ow, INTEGER oh) { QDProcsPtr gp; - void (*pp)(GrafVerb, Rect *, INTEGER, INTEGER); + rRectProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->rRectProc)) != P_StdRRect) + && (pp = MR(gp->rRectProc)) != &StdRRect) { ROMlib_hook(q_rrectprocnumber); CToPascalCall((void *)pp, ctop(&C_StdRRect), v, rp, ow, oh); @@ -108,10 +108,10 @@ void Executor::ROMlib_CALLRRECT(GrafVerb v, Rect *rp, INTEGER ow, INTEGER oh) void Executor::ROMlib_CALLARC(GrafVerb v, Rect *rp, INTEGER starta, INTEGER arca) { QDProcsPtr gp; - void (*pp)(GrafVerb, Rect *, INTEGER, INTEGER); + arcProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->arcProc)) != P_StdArc) + && (pp = MR(gp->arcProc)) != &StdArc) { ROMlib_hook(q_arcprocnumber); CToPascalCall((void *)pp, ctop(&C_StdArc), v, rp, starta, arca); @@ -123,10 +123,10 @@ void Executor::ROMlib_CALLARC(GrafVerb v, Rect *rp, INTEGER starta, INTEGER arca void Executor::ROMlib_CALLRGN(GrafVerb v, RgnHandle rh) { QDProcsPtr gp; - void (*pp)(GrafVerb, RgnHandle); + rgnProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->rgnProc)) != P_StdRgn) + && (pp = MR(gp->rgnProc)) != &StdRgn) { ROMlib_hook(q_rgnprocnumber); CToPascalCall((void *)pp, ctop(&C_StdRgn), v, rh); @@ -138,10 +138,10 @@ void Executor::ROMlib_CALLRGN(GrafVerb v, RgnHandle rh) void Executor::ROMlib_CALLPOLY(GrafVerb v, PolyHandle rh) { QDProcsPtr gp; - void (*pp)(GrafVerb, PolyHandle); + polyProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->polyProc)) != P_StdPoly) + && (pp = MR(gp->polyProc)) != &StdPoly) { ROMlib_hook(q_polyprocnumber); CToPascalCall((void *)pp, ctop(&C_StdPoly), v, rh); @@ -154,10 +154,10 @@ void Executor::ROMlib_CALLBITS(BitMap *bmp, const Rect *srcrp, const Rect *dstrp INTEGER mode, RgnHandle maskrh) { QDProcsPtr gp; - void (*pp)(BitMap *, Rect *, Rect *, INTEGER, RgnHandle); + bitsProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->bitsProc)) != P_StdBits) + && (pp = MR(gp->bitsProc)) != &StdBits) { ROMlib_hook(q_bitsprocnumber); CToPascalCall((void *)pp, ctop(&C_StdBits), bmp, srcrp, dstrp, mode, maskrh); @@ -169,10 +169,10 @@ void Executor::ROMlib_CALLBITS(BitMap *bmp, const Rect *srcrp, const Rect *dstrp void Executor::ROMlib_CALLCOMMENT(INTEGER kind, INTEGER size, Handle datah) { QDProcsPtr gp; - void (*pp)(INTEGER, INTEGER, Handle); + commentProc_t pp; if((gp = MR(thePort->grafProcs)) - && (pp = MR(gp->commentProc)) != P_StdComment) + && (pp = MR(gp->commentProc)) != &StdComment) { ROMlib_hook(q_commentprocnumber); CToPascalCall((void *)pp, ctop(&C_StdComment), kind, size, datah); @@ -190,7 +190,7 @@ Executor::ROMlib_CALLTXMEAS(INTEGER bc, Ptr bufp, GUEST *nump, GUESTgrafProcs)) - && (pp = MR(gp->txMeasProc)) != P_StdTxMeas) + && (pp = MR(gp->txMeasProc)) != &StdTxMeas) { ROMlib_hook(q_txmeasprocnumber); retval = CToPascalCall((void *)pp, ctop(&C_StdTxMeas), bc, bufp, @@ -204,10 +204,10 @@ Executor::ROMlib_CALLTXMEAS(INTEGER bc, Ptr bufp, GUEST *nump, GUESTgrafProcs)) - && (pp = MR(gp->putPicProc)) != P_StdPutPic) + && (pp = MR(gp->putPicProc)) != &StdPutPic) { ROMlib_hook(q_putpicprocnumber); CToPascalCall((void *)pp, ctop(&C_StdPutPic), addr, count); diff --git a/src/qIMV.cpp b/src/qIMV.cpp index 092c377a..92f55cfb 100644 --- a/src/qIMV.cpp +++ b/src/qIMV.cpp @@ -25,26 +25,26 @@ void Executor::C_CharExtra(Fixed Extra) /* IMV-77 */ void Executor::C_SetStdCProcs(CQDProcs *cProcs) /* IMV-77 */ { - cProcs->textProc = RM((Ptr)P_StdText); - cProcs->lineProc = RM((Ptr)P_StdLine); - cProcs->rectProc = RM((Ptr)P_StdRect); - cProcs->rRectProc = RM((Ptr)P_StdRRect); - cProcs->ovalProc = RM((Ptr)P_StdOval); - cProcs->arcProc = RM((Ptr)P_StdArc); - cProcs->polyProc = RM((Ptr)P_StdPoly); - cProcs->rgnProc = RM((Ptr)P_StdRgn); - cProcs->bitsProc = RM((Ptr)P_StdBits); - cProcs->commentProc = RM((Ptr)P_StdComment); - cProcs->txMeasProc = RM((Ptr)P_StdTxMeas); - cProcs->getPicProc = RM((Ptr)P_StdGetPic); - cProcs->putPicProc = RM((Ptr)P_StdPutPic); - cProcs->opcodeProc = RM((Ptr)0) /* ??? */; - cProcs->newProc1Proc = RM((Ptr)0) /* ??? */; - cProcs->newProc2Proc = RM((Ptr)0) /* ??? */; - cProcs->newProc3Proc = RM((Ptr)0) /* ??? */; - cProcs->newProc4Proc = RM((Ptr)0) /* ??? */; - cProcs->newProc5Proc = RM((Ptr)0) /* ??? */; - cProcs->newProc6Proc = RM((Ptr)0) /* ??? */; + cProcs->textProc = RM(&StdText); + cProcs->lineProc = RM(&StdLine); + cProcs->rectProc = RM(&StdRect); + cProcs->rRectProc = RM(&StdRRect); + cProcs->ovalProc = RM(&StdOval); + cProcs->arcProc = RM(&StdArc); + cProcs->polyProc = RM(&StdPoly); + cProcs->rgnProc = RM(&StdRgn); + cProcs->bitsProc = RM(&StdBits); + cProcs->commentProc = RM(&StdComment); + cProcs->txMeasProc = RM(&StdTxMeas); + cProcs->getPicProc = RM(&StdGetPic); + cProcs->putPicProc = RM(&StdPutPic); + cProcs->opcodeProc = RM(nullptr) /* ??? */; + cProcs->newProc1Proc = RM(nullptr) /* ??? */; + cProcs->newProc2Proc = RM(nullptr) /* ??? */; + cProcs->newProc3Proc = RM(nullptr) /* ??? */; + cProcs->newProc4Proc = RM(nullptr) /* ??? */; + cProcs->newProc5Proc = RM(nullptr) /* ??? */; + cProcs->newProc6Proc = RM(nullptr) /* ??? */; } void Executor::C_GetCPixel(INTEGER h, INTEGER v, RGBColor *pixelp) diff --git a/src/qPicstuff.cpp b/src/qPicstuff.cpp index c39cced9..19a5888d 100644 --- a/src/qPicstuff.cpp +++ b/src/qPicstuff.cpp @@ -38,7 +38,7 @@ using namespace Executor; */ static unsigned char *nextbytep; -static void (*procp)(Ptr, INTEGER); +static UPP procp; typedef void (*pfv)(); @@ -1648,7 +1648,7 @@ void Executor::C_DrawPicture(PicHandle pic, Rect *destrp) if(grafprocp) { procp = MR(grafprocp->getPicProc); - if(procp == P_StdGetPic) + if(procp == &StdGetPic) procp = 0; } else diff --git a/src/qStandard.cpp b/src/qStandard.cpp index d897f144..bfd2b43c 100644 --- a/src/qStandard.cpp +++ b/src/qStandard.cpp @@ -12,17 +12,17 @@ using namespace Executor; void Executor::C_SetStdProcs(QDProcs *procs) { - procs->textProc = RM((textProc_t)P_StdText); - procs->lineProc = RM((lineProc_t)P_StdLine); - procs->rectProc = RM((rectProc_t)P_StdRect); - procs->rRectProc = RM((rRectProc_t)P_StdRRect); - procs->ovalProc = RM((ovalProc_t)P_StdOval); - procs->arcProc = RM((arcProc_t)P_StdArc); - procs->polyProc = RM((polyProc_t)P_StdPoly); - procs->rgnProc = RM((rgnProc_t)P_StdRgn); - procs->bitsProc = RM((bitsProc_t)P_StdBits); - procs->commentProc = RM((commentProc_t)P_StdComment); - procs->txMeasProc = RM((txMeasProc_t)P_StdTxMeas); - procs->getPicProc = RM((getPicProc_t)P_StdGetPic); - procs->putPicProc = RM((putPicProc_t)P_StdPutPic); + procs->textProc = RM(&StdText); + procs->lineProc = RM(&StdLine); + procs->rectProc = RM(&StdRect); + procs->rRectProc = RM(&StdRRect); + procs->ovalProc = RM(&StdOval); + procs->arcProc = RM(&StdArc); + procs->polyProc = RM(&StdPoly); + procs->rgnProc = RM(&StdRgn); + procs->bitsProc = RM(&StdBits); + procs->commentProc = RM(&StdComment); + procs->txMeasProc = RM(&StdTxMeas); + procs->getPicProc = RM(&StdGetPic); + procs->putPicProc = RM(&StdPutPic); } diff --git a/src/qStdBits.cpp b/src/qStdBits.cpp index 7c18c437..5d976619 100644 --- a/src/qStdBits.cpp +++ b/src/qStdBits.cpp @@ -48,7 +48,7 @@ dy_zero_p(const Rect *srcr, const Rect *dstr, return (CW(srcr->top) + dv) == CW(dstr->top); } -void Executor::canonicalize_bogo_map_cleanup(BitMap *bogo_map, +void Executor::canonicalize_bogo_map_cleanup(const BitMap *bogo_map, struct cleanup_info *info) { switch(info->cleanup_type) @@ -80,7 +80,7 @@ void Executor::canonicalize_bogo_map_cleanup(BitMap *bogo_map, } } -void Executor::canonicalize_bogo_map(BitMap *bogo_map, PixMap **canonical_addr, +void Executor::canonicalize_bogo_map(const BitMap *bogo_map, PixMap **canonical_addr, struct cleanup_info *info) { int high_bits = ((unsigned short)CW(bogo_map->rowBytes)) >> 14; @@ -434,7 +434,7 @@ void Executor::ROMlib_bogo_stdbits(BitMap *src_bogo_map, BitMap *dst_bogo_map, canonicalize_bogo_map_cleanup(dst_bogo_map, &cleanup_info[1]); } -void Executor::StdBitsPicSaveFlag(BitMap *src_bogo_map, +void Executor::StdBitsPicSaveFlag(const BitMap *src_bogo_map, const Rect *src_rect, const Rect *dst_rect, INTEGER mode, RgnHandle mask, BOOLEAN savepic) @@ -488,7 +488,7 @@ void Executor::StdBitsPicSaveFlag(BitMap *src_bogo_map, canonicalize_bogo_map_cleanup(dst_bogo_map, &cleanup_info[1]); } -void Executor::C_StdBits(BitMap *src_bogo_map, const Rect *src_rect, +void Executor::C_StdBits(const BitMap *src_bogo_map, const Rect *src_rect, const Rect *dst_rect, INTEGER mode, RgnHandle mask) /* destination is alawys the current port */ { diff --git a/src/refresh.cpp b/src/refresh.cpp index a4e526a8..f9bfa37e 100644 --- a/src/refresh.cpp +++ b/src/refresh.cpp @@ -91,7 +91,7 @@ void Executor::set_refresh_rate(int new1) if(!refresh_tm_task_installed_p) { - refresh_tm_task.tmAddr = RM((ProcPtr)P_handle_refresh); + refresh_tm_task.tmAddr = RM((ProcPtr)&handle_refresh); InsTime((QElemPtr)&refresh_tm_task); /* We PrimeTime with 400 to "get the ball rolling". The handler diff --git a/src/resGet.cpp b/src/resGet.cpp index 5dca446d..fae5e7ff 100644 --- a/src/resGet.cpp +++ b/src/resGet.cpp @@ -21,6 +21,7 @@ #include "rsys/file.h" #include "rsys/pstuff.h" #include "rsys/aboutbox.h" +#include "rsys/stdfile.h" /* for unixmount */ #include @@ -216,16 +217,16 @@ static BOOLEAN acceptable(unsigned long addr) static void ROMlib_init_xdefs(void) { #if !defined(MAELSTROM_HACK) - ROMlib_defs[0] = guest_cast(RM(P_cdef0)); - ROMlib_defs[1] = guest_cast(RM(P_cdef16)); - ROMlib_defs[2] = guest_cast(RM(P_wdef0)); - ROMlib_defs[3] = guest_cast(RM(P_wdef16)); - ROMlib_defs[4] = guest_cast(RM(P_mdef0)); - ROMlib_defs[5] = guest_cast(RM(P_ldef0)); - ROMlib_defs[6] = guest_cast(RM(P_mbdf0)); - ROMlib_defs[7] = guest_cast(RM(P_snth5)); - ROMlib_defs[8] = guest_cast(RM(P_unixmount)); - ROMlib_defs[9] = guest_cast(RM(P_cdef1008)); + ROMlib_defs[0] = guest_cast(RM(&cdef0)); + ROMlib_defs[1] = guest_cast(RM(&cdef16)); + ROMlib_defs[2] = guest_cast(RM(&wdef0)); + ROMlib_defs[3] = guest_cast(RM(&wdef16)); + ROMlib_defs[4] = guest_cast(RM(&mdef0)); + ROMlib_defs[5] = guest_cast(RM(&ldef0)); + ROMlib_defs[6] = guest_cast(RM(&mbdf0)); + ROMlib_defs[7] = guest_cast(RM(&snth5)); + ROMlib_defs[8] = guest_cast(RM(&unixmount)); + ROMlib_defs[9] = guest_cast(RM(&cdef1008)); *(LONGINT *)SYN68K_TO_US(0x58) = RM((LONGINT)ROMlib_defs); #else @@ -252,16 +253,16 @@ static void ROMlib_init_xdefs(void) #endif HLock(newhandle); ROMlib_defs = (GUEST *)STARH(newhandle); - ROMlib_defs[0] = guest_cast(RM(P_cdef0)); - ROMlib_defs[1] = guest_cast(RM(P_cdef16)); - ROMlib_defs[2] = guest_cast(RM(P_wdef0)); - ROMlib_defs[3] = guest_cast(RM(P_wdef16)); - ROMlib_defs[4] = guest_cast(RM(P_mdef0)); - ROMlib_defs[5] = guest_cast(RM(P_ldef0)); - ROMlib_defs[6] = guest_cast(RM(P_mbdf0)); - ROMlib_defs[7] = guest_cast(RM(P_snth5)); - ROMlib_defs[8] = guest_cast(RM(P_unixmount)); - ROMlib_defs[9] = guest_cast(RM(P_cdef1008)); + ROMlib_defs[0] = guest_cast(RM(&cdef0)); + ROMlib_defs[1] = guest_cast(RM(&cdef16)); + ROMlib_defs[2] = guest_cast(RM(&wdef0)); + ROMlib_defs[3] = guest_cast(RM(&wdef16)); + ROMlib_defs[4] = guest_cast(RM(&mdef0)); + ROMlib_defs[5] = guest_cast(RM(&ldef0)); + ROMlib_defs[6] = guest_cast(RM(&mbdf0)); + ROMlib_defs[7] = guest_cast(RM(&snth5)); + ROMlib_defs[8] = guest_cast(RM(&unixmount)); + ROMlib_defs[9] = guest_cast(RM(&cdef1008)); *(LONGINT *)SYN68K_TO_US(0x58) = (LONGINT)(*newhandle).raw(); // ### use standard low mem access method LM(TheZone) = save_zone; #endif diff --git a/src/sound.cpp b/src/sound.cpp index 5c54ab4c..e7ef901f 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -479,7 +479,7 @@ OSErr Executor::C_SndAddModifier(SndChannelPtr chanp, ProcPtr mod, INTEGER id, else { h = GetResource(TICK("snth"), id); - if(STARH(h) != (Ptr)P_snth5) + if(STARH(h) != (Ptr)&snth5) { /* ACK; phone handle stuff */ LoadResource(h); modp->flags = MOD_SYNTH_FLAG; @@ -972,14 +972,14 @@ OSErr Executor::C_SndControl(INTEGER id, SndCommand *cmdp) else { LoadResource(h); - if(STARH(h) != (Ptr)P_snth5) + if(STARH(h) != (Ptr)&snth5) state = HGetState(h); #if !defined(LETGCCWAIL) else state = 0; #endif callasynth((SndChannelPtr)0, cmdp, (ModifierStubPtr)0); - if(STARH(h) != (Ptr)P_snth5) + if(STARH(h) != (Ptr)&snth5) HSetState(h, state); retval = noErr; } diff --git a/src/soundIMVI.cpp b/src/soundIMVI.cpp index 2c07bd31..f58f280a 100644 --- a/src/soundIMVI.cpp +++ b/src/soundIMVI.cpp @@ -154,7 +154,7 @@ start_playing(SndChannelPtr chanp, SndDoubleBufferHeaderPtr paramp, if(!task_inserted) { call_back_info.task.tmAddr - = RM((ProcPtr)P_sound_timer_handler); + = RM((ProcPtr)&sound_timer_handler); InsTime((QElemPtr)&call_back_info.task); task_inserted = true; } diff --git a/src/stdfile.cpp b/src/stdfile.cpp index c7441bc8..e11c4c35 100644 --- a/src/stdfile.cpp +++ b/src/stdfile.cpp @@ -170,7 +170,7 @@ static INTEGER movealert(INTEGER id) rp->top = CWC(30); rp->right = CW(150 + dh); rp->bottom = CW(30 + dv); - return (Alert(id, (ProcPtr)0)); + return (Alert(id, nullptr)); } #define SICONS -15744 @@ -1070,9 +1070,10 @@ call_magicfp(fltype *fl, DialogPtr dp, EventRecord *evt, GUEST *ith) #define keydownbit 0x1000 -INTEGER Executor::C_ROMlib_stdffilt(DialogPeek dp, EventRecord *evt, +Boolean Executor::C_ROMlib_stdffilt(DialogPtr dlg, EventRecord *evt, GUEST *ith) /* handle disk insert */ { + DialogPeek dp = (DialogPeek)dlg; LONGINT ticks; GUEST i; INTEGER from; @@ -1210,11 +1211,11 @@ INTEGER Executor::C_ROMlib_stdffilt(DialogPeek dp, EventRecord *evt, if(t == inThumb) { from = GetCtlValue(fl->flsh); - TrackControl(fl->flsh, p, (ProcPtr)0); + TrackControl(fl->flsh, p, nullptr); flscroll(fl, from, GetCtlValue(fl->flsh)); } else - TrackControl(fl->flsh, p, (ProcPtr)P_ROMlib_stdftrack); + TrackControl(fl->flsh, p, &ROMlib_stdftrack); } else if(PtInRect(p, &fl->flcurdirrect)) { @@ -1226,7 +1227,7 @@ INTEGER Executor::C_ROMlib_stdffilt(DialogPeek dp, EventRecord *evt, GUEST h_s; GetDItem((DialogPtr)dp, getOpen, &i, &h_s, &r); h = (ControlHandle)MR(h_s); - if((part = TestControl(h, p)) && TrackControl(h, p, (ProcPtr)0)) + if((part = TestControl(h, p)) && TrackControl(h, p, nullptr)) { prefix[0] = 0; oldticks = -1000; @@ -2191,7 +2192,7 @@ report_new_folder_failure(OSErr err) } str255_from_c_string(str, message); ParamText(str, 0, 0, 0); - NoteAlert(GENERIC_COMPLAINT_ID, (ProcPtr)0); + NoteAlert(GENERIC_COMPLAINT_ID, nullptr); } static bool @@ -2461,7 +2462,7 @@ void spfcommon(Point p, StringPtr prompt, StringPtr name, dialog_hook_u dh, transform = CW(r.right) - CW(r.left) == 16; GetDItem(dp, getDotted, &i, &tmpH, &r); h = MR(tmpH); - SetDItem(dp, getDotted, userItem, (Handle)P_ROMlib_filebox, &r); + SetDItem(dp, getDotted, userItem, (Handle)(void*)&ROMlib_filebox, &r); } else transform = false; @@ -2470,11 +2471,11 @@ void spfcommon(Point p, StringPtr prompt, StringPtr name, dialog_hook_u dh, if(transform) transformsfpdialog(dp, &p, &scrollrect, getorput == get); - SetDItem(dp, nmlistitem, userItem, (Handle)P_ROMlib_filebox, &scrollrect); + SetDItem(dp, nmlistitem, userItem, (Handle)(void*)&ROMlib_filebox, &scrollrect); GetDItem(dp, diskname, &i, &tmpH, &r); h = MR(tmpH); - SetDItem(dp, diskname, userItem, (Handle)P_ROMlib_filebox, &r); + SetDItem(dp, diskname, userItem, (Handle)(void*)&ROMlib_filebox, &r); r.left = CW(CW(scrollrect.left) + 1); r.right = CW(CW(scrollrect.right) - 16); @@ -2521,7 +2522,7 @@ void spfcommon(Point p, StringPtr prompt, StringPtr name, dialog_hook_u dh, SelectWindow((WindowPtr)dp); while(!done) { - ModalDialog((ProcPtr)P_ROMlib_stdffilt, &ihit_s); + ModalDialog(&ROMlib_stdffilt, &ihit_s); ihit = CW(ihit_s); if(getorput == put) GetIText(pnhand, SF_NAME(&f)); diff --git a/src/system_error.cpp b/src/system_error.cpp index 52ea6cba..af52c1b2 100644 --- a/src/system_error.cpp +++ b/src/system_error.cpp @@ -97,7 +97,7 @@ event_loop(void) { int release_part; - release_part = TrackControl(c, local_pt, (ProcPtr)-1); + release_part = TrackControl(c, local_pt, (ControlActionUPP)-1); if(release_part == inButton) { diff --git a/src/teInit.cpp b/src/teInit.cpp index 12e9f84c..17be675a 100644 --- a/src/teInit.cpp +++ b/src/teInit.cpp @@ -23,7 +23,7 @@ void Executor::C_TEInit() { LM(TEScrpHandle) = RM(NewHandle(0)); LM(TEScrpLength) = CWC(0); - LM(TEDoText) = RM((ProcPtr)P_ROMlib_dotext); + LM(TEDoText) = RM((ProcPtr)&ROMlib_dotext); } /* This code just does "moveql #1,d0 ; rts". We use it because diff --git a/src/teMisc.cpp b/src/teMisc.cpp index 2e29453e..336f3a53 100644 --- a/src/teMisc.cpp +++ b/src/teMisc.cpp @@ -599,7 +599,7 @@ int16_t Executor::ROMlib_call_TEDoText(TEPtr tp, int16_t first, int16_t last, in { int16_t myd0; - if(MR(LM(TEDoText)) == (ProcPtr)P_ROMlib_dotext) + if(MR(LM(TEDoText)) == (ProcPtr)&ROMlib_dotext) myd0 = C_ROMlib_dotext(tp, first, last, what); else { diff --git a/src/time.cpp b/src/time.cpp index 6ef9268e..d9aaae35 100644 --- a/src/time.cpp +++ b/src/time.cpp @@ -133,14 +133,14 @@ syn68k_addr_t Executor::catchalarm(syn68k_addr_t interrupt_pc, void *unused) ROMlib_hook(time_number); tm_addr = MR(qp->tmAddr); - if(tm_addr == (ProcPtr)P_ROMlib_wakeup) - C_ROMlib_wakeup(); - else if(tm_addr == (ProcPtr)P_ROMlib_vcatch) - C_ROMlib_vcatch(); - else if(tm_addr == (ProcPtr)P_handle_refresh) - C_handle_refresh(); - else if(tm_addr == (ProcPtr)P_sound_timer_handler) - C_sound_timer_handler(); + if(tm_addr == (ProcPtr)&ROMlib_wakeup) + ROMlib_wakeup(); + else if(tm_addr == (ProcPtr)&ROMlib_vcatch) + ROMlib_vcatch(); + else if(tm_addr == (ProcPtr)&handle_refresh) + handle_refresh(); + else if(tm_addr == (ProcPtr)&sound_timer_handler) + sound_timer_handler(); else if(tm_addr) { /* No need to save and restore regs here; we diff --git a/src/toolevent.cpp b/src/toolevent.cpp index ae446c4b..e1c2e96a 100644 --- a/src/toolevent.cpp +++ b/src/toolevent.cpp @@ -836,7 +836,7 @@ static void dopreferences(void) ROMlib_circledefault(dp); do { - ModalDialog((ProcPtr)0, &ihit_s); + ModalDialog(nullptr, &ihit_s); ihit = CW(ihit_s); switch(ihit) { diff --git a/src/vbl.cpp b/src/vbl.cpp index 5a4ab5fc..41d20d2b 100644 --- a/src/vbl.cpp +++ b/src/vbl.cpp @@ -137,7 +137,7 @@ void Executor::C_ROMlib_vcatch() static void startclock(void) { - vbltm.tmAddr = RM((ProcPtr)P_ROMlib_vcatch); + vbltm.tmAddr = RM((ProcPtr)&ROMlib_vcatch); InsTime((QElemPtr)&vbltm); PrimeTime((QElemPtr)&vbltm, 17); /* don't adjust ROMlib_clock; it could be temporary */ diff --git a/src/windMisc.cpp b/src/windMisc.cpp index 4a7cc5b2..13b4e095 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -525,10 +525,10 @@ int32_t Executor::ROMlib_windcall(WindowPtr wind, int16_t mess, int32_t param) wp = (windprocp)STARH(defproc); - if(wp == P_wdef0) - retval = C_wdef0(var(wind), wind, mess, param); - else if(wp == P_wdef16) - retval = C_wdef16(var(wind), wind, mess, param); + if(wp == &wdef0) + retval = wdef0(var(wind), wind, mess, param); + else if(wp == &wdef16) + retval = wdef16(var(wind), wind, mess, param); else { #if defined EVIL_ILLUSTRATOR_7_HACK From b999866d8da3fd8bf6c1dd988e34f47ba1eb19b1 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 19:34:17 +0100 Subject: [PATCH 15/88] delete pstuff.h --- src/CMakeLists.txt | 1 - src/adb.cpp | 1 - src/ctlMouse.cpp | 1 - src/dialDispatch.cpp | 1 - src/dialHandle.cpp | 1 - src/emustubs.cpp | 1 - src/emutraptables.cpp | 119 ----------------------------------- src/executor.cpp | 1 - src/include/rsys/ctl.h | 1 - src/include/rsys/itm.h | 1 - src/include/rsys/list.h | 2 +- src/include/rsys/menu.h | 1 - src/include/rsys/print.h | 1 - src/include/rsys/pstuff.h | 112 --------------------------------- src/include/rsys/quick.h | 2 - src/include/rsys/soundopts.h | 1 - src/include/rsys/stdfile.h | 1 - src/include/rsys/tesave.h | 2 - src/include/rsys/trapglue.h | 6 -- src/include/rsys/wind.h | 1 - src/launch.cpp | 2 - src/listMouse.cpp | 1 - src/main.cpp | 1 - src/osutil.cpp | 1 - src/prLowLevel.cpp | 1 - src/prPrinting.cpp | 1 - src/prRecords.cpp | 1 - src/qIMV.cpp | 1 - src/qIMVI.cpp | 1 - src/qStandard.cpp | 1 - src/refresh.cpp | 1 - src/resGet.cpp | 1 - src/resOpen.cpp | 1 - src/stdfile.cpp | 1 - src/time.cpp | 1 - src/vbl.cpp | 1 - 36 files changed, 1 insertion(+), 273 deletions(-) delete mode 100644 src/include/rsys/pstuff.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d85ee403..d0acfd9a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -319,7 +319,6 @@ set(include_sources hintemplate.h include/rsys/print.h include/rsys/process.h include/rsys/PSstrings.h - include/rsys/pstuff.h include/rsys/qcolor.h include/rsys/quick.h include/rsys/rawblt.h diff --git a/src/adb.cpp b/src/adb.cpp index 4e078401..871bb12c 100644 --- a/src/adb.cpp +++ b/src/adb.cpp @@ -8,7 +8,6 @@ #include "ADB.h" #include "rsys/adb.h" #include "rsys/osevent.h" -#include "rsys/pstuff.h" #include /* diff --git a/src/ctlMouse.cpp b/src/ctlMouse.cpp index d2cef1fc..b9af710c 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -16,7 +16,6 @@ #include "rsys/ctl.h" #include "rsys/wind.h" -#include "rsys/pstuff.h" #include "rsys/stdfile.h" #include "rsys/hook.h" diff --git a/src/dialDispatch.cpp b/src/dialDispatch.cpp index 864cda30..59717640 100644 --- a/src/dialDispatch.cpp +++ b/src/dialDispatch.cpp @@ -4,7 +4,6 @@ #include "rsys/common.h" #include "EventMgr.h" -#include "rsys/pstuff.h" #include "DialogMgr.h" diff --git a/src/dialHandle.cpp b/src/dialHandle.cpp index 53f68432..ea51ead1 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -25,7 +25,6 @@ #include "rsys/mman.h" #include "rsys/itm.h" #include "rsys/prefs.h" -#include "rsys/pstuff.h" #include "rsys/stdfile.h" #include "rsys/print.h" #include "rsys/hook.h" diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 9ad51e04..ed74df0a 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -48,7 +48,6 @@ #include "CommTool.h" #include "SpeechManager.h" -#include "rsys/pstuff.h" #include "rsys/file.h" #include "rsys/time.h" #include "rsys/mman.h" diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index d9b7c20d..e21fa96d 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -1101,116 +1101,7 @@ toolstuff_t Executor::toolstuff[0x400] = { unimplemented_toolstuff, { { (void *)&C_DebugStr, ptoc(&C_DebugStr) }, 0 }, }; -#if 0 -pstuff_t Executor::pstuff[] = { - { { (void *)&C_ROMlib_mytrack, ptoc(&C_ROMlib_mytrack) }, 0 }, - { { (void *)&C_ROMlib_stdftrack, ptoc(&C_ROMlib_stdftrack) }, 0 }, - { { (void *)&C_ROMlib_myfilt, ptoc(&C_ROMlib_myfilt) }, 0 }, - { { (void *)&C_ROMlib_stdffilt, ptoc(&C_ROMlib_stdffilt) }, 0 }, - { { (void *)&C_ROMlib_numsonlyfilterproc, - ptoc(&C_ROMlib_numsonlyfilterproc) }, - 0 }, - { { (void *)&C_ROMlib_stlfilterproc, ptoc(&C_ROMlib_stlfilterproc) }, 0 }, - /* NOTE: the following four routines don't really use pascal calling - conventions, but we do need pstuff entries for them so we can - look for their addresses and short circuit calls to them. The - zero is correct because they take no args and return no value */ - - { { (void *)&C_ROMlib_wakeup, 0 }, 0 }, - { { (void *)&C_ROMlib_vcatch, 0 }, 0 }, - { { (void *)C_ROMlib_dotext, 0 }, 0 }, - { { (void *)&C_handle_refresh, 0 }, 0 }, - - { { (void *)&C_ROMlib_mysound, ptoc(&C_ROMlib_mysound) }, 0 }, - { { (void *)&C_ROMlib_myjobproc, ptoc(&C_ROMlib_myjobproc) }, 0 }, - { { (void *)&C_ROMlib_mystlproc, ptoc(&C_ROMlib_mystlproc) }, 0 }, - - { { (void *)C_cdef0, ptoc(&C_cdef0) }, 0 }, - { { (void *)&C_cdef16, ptoc(&C_cdef16) }, 0 }, - { { (void *)&C_ldef0, ptoc(&C_ldef0) }, 0 }, - { { (void *)&C_mdef0, ptoc(&C_mdef0) }, 0 }, - { { (void *)&C_mbdf0, ptoc(&C_mbdf0) }, 0 }, - { { (void *)C_wdef0, ptoc(&C_wdef0) }, 0 }, - { { (void *)&C_wdef16, ptoc(&C_wdef16) }, 0 }, - { { (void *)&C_snth5, ptoc(&C_snth5) }, 0 }, - - { { (void *)&C_IUMagString, ptoc(&C_IUMagString) }, 0 }, - { { (void *)&C_PrStlInit, ptoc(&C_PrStlInit) }, 0 }, - { { (void *)C_PrJobInit, ptoc(&C_PrJobInit) }, 0 }, - - { { (void *)C_StdText, ptoc(&C_StdText) }, 0 }, - { { (void *)C_StdLine, ptoc(&C_StdLine) }, 0 }, - { { (void *)C_StdRect, ptoc(&C_StdRect) }, 0 }, - { { (void *)&C_StdOval, ptoc(&C_StdOval) }, 0 }, - { { (void *)C_StdRRect, ptoc(&C_StdRRect) }, 0 }, - { { (void *)C_StdArc, ptoc(&C_StdArc) }, 0 }, - { { (void *)&C_StdRgn, ptoc(&C_StdRgn) }, 0 }, - { { (void *)&C_StdPoly, ptoc(&C_StdPoly) }, 0 }, - { { (void *)C_StdBits, ptoc(&C_StdBits) }, 0 }, - { { (void *)&C_StdComment, ptoc(&C_StdComment) }, 0 }, - { { (void *)C_StdTxMeas, ptoc(&C_StdTxMeas) }, 0 }, - { { (void *)C_StdPutPic, ptoc(&C_StdPutPic) }, 0 }, - - { { (void *)&C_FMSwapFont, ptoc(&C_FMSwapFont) }, 0 }, - { { (void *)&C_InitCursor, ptoc(&C_InitCursor) }, 0 }, - - { { (void *)&C_textasPS, ptoc(&C_textasPS) }, 0 }, - { { (void *)&C_PrText, ptoc(&C_PrText) }, 0 }, - { { (void *)&C_PrLine, ptoc(&C_PrLine) }, 0 }, - { { (void *)&C_PrRect, ptoc(&C_PrRect) }, 0 }, - { { (void *)&C_PrRRect, ptoc(&C_PrRRect) }, 0 }, - { { (void *)&C_PrOval, ptoc(&C_PrOval) }, 0 }, - { { (void *)&C_PrArc, ptoc(&C_PrArc) }, 0 }, - { { (void *)&C_PrPoly, ptoc(&C_PrPoly) }, 0 }, - { { (void *)&C_PrRgn, ptoc(&C_PrRgn) }, 0 }, - { { (void *)&C_PrBits, ptoc(&C_PrBits) }, 0 }, - { { (void *)&C_PrComment, ptoc(&C_PrComment) }, 0 }, - { { (void *)&C_PrTxMeas, ptoc(&C_PrTxMeas) }, 0 }, - { { (void *)&C_PrGetPic, ptoc(&C_PrGetPic) }, 0 }, - { { (void *)&C_PrPutPic, ptoc(&C_PrPutPic) }, 0 }, - { { (void *)&C_donotPrText, ptoc(&C_donotPrText) }, 0 }, - { { (void *)&C_donotPrLine, ptoc(&C_donotPrLine) }, 0 }, - { { (void *)&C_donotPrRect, ptoc(&C_donotPrRect) }, 0 }, - { { (void *)&C_donotPrRRect, ptoc(&C_donotPrRRect) }, 0 }, - { { (void *)&C_donotPrOval, ptoc(&C_donotPrOval) }, 0 }, - { { (void *)&C_donotPrArc, ptoc(&C_donotPrArc) }, 0 }, - { { (void *)&C_donotPrPoly, ptoc(&C_donotPrPoly) }, 0 }, - { { (void *)&C_donotPrRgn, ptoc(&C_donotPrRgn) }, 0 }, - { { (void *)&C_donotPrBits, ptoc(&C_donotPrBits) }, 0 }, - { { (void *)&C_donotPrGetPic, ptoc(&C_donotPrGetPic) }, 0 }, - { { (void *)&C_donotPrPutPic, ptoc(&C_donotPrPutPic) }, 0 }, - { { (void *)&C_ROMlib_filebox, ptoc(&C_ROMlib_filebox) }, 0 }, - { { (void *)&C_StdGetPic, ptoc(&C_StdGetPic) }, 0 }, - - { { (void *)&_flushcache, static_cast(-1) }, 0 }, - { { (void *)&_Key1Trans, static_cast(-1) }, 0 }, - { { (void *)&_Key2Trans, static_cast(-1) }, 0 }, - - { { NULL /* was C_ROMlib_licensefilt */, 0 /* was ptoc(&C_ROMlib_licensefilt) */ }, 0 }, - { { (void *)&C_unixmount, ptoc(&C_unixmount) }, 0 }, - { { (void *)&C_GestaltTablesOnly, ptoc(&C_GestaltTablesOnly) }, 0 }, - { { (void *)&C_sound_timer_handler, 0 }, 0 }, - { { (void *)&C_adb_service_stub, 0 }, 0 }, - { { (void *)&C_cdef1008, ptoc(&C_cdef1008) }, 0 }, - { { (void *)&_bad_trap_unimplemented, static_cast(-1) }, 0 }, - { { (void *)&C_pack8_unknown_selector, ptoc(&C_pack8_unknown_selector) }, 0 }, - { { (void *)&C_PhysicalGestalt, ptoc(&C_PhysicalGestalt) }, 0 }, - - { { (void *)&C_HideCursor, ptoc(&C_HideCursor) }, 0 }, - { { (void *)&C_ShowCursor, ptoc(&C_ShowCursor) }, 0 }, - { { (void *)&C_ShieldCursor, ptoc(&C_ShieldCursor) }, 0 }, - { { (void *)&C_SetCursor, ptoc(&C_SetCursor) }, 0 }, - { { (void *)&C_ObscureCursor, ptoc(&C_ObscureCursor) }, 0 }, - { { (void *)&C_unknown574, ptoc(&C_ShowCursor) }, 0 }, - - { { (void *)&C_ROMlib_circle_ok, ptoc(&C_ROMlib_circle_ok) }, 0 }, - { { (void *)&C_ROMlib_orientation, ptoc(&C_ROMlib_orientation) }, 0 }, - - { { (void *)&C_new_draw_scroll, ptoc(&C_new_draw_scroll) }, 0 }, - { { (void *)&C_new_pos_ctl, ptoc(&C_new_pos_ctl) }, 0 }, -}; -#endif static void *fsroutines[][2] = { { /* 0xA000 */ (void *)PBOpen, (void *)PBHOpen /* 0 */ }, #define OPENTRAP 0 @@ -1606,16 +1497,6 @@ void Executor::filltables(void) : callback_install((callback_handler_t)(toolstuff[i].ptoc.magic != (ULONGINT)-1 ? (void *)PascalToCCall : toolstuff[i].ptoc.wheretogo), &toolstuff[i].ptoc); -#if 0 - for(i = 0; i < (int)NELEM(pstuff); ++i) - pstuff[i].orig = (pstuff[i].ptoc.wheretogo == (void *)_Unimplemented) - ? SYN68K_TO_US(unimpl) - : SYN68K_TO_US(callback_install((callback_handler_t)((pstuff[i].ptoc.magic - != (ULONGINT)-1) - ? (void *)PascalToCCall - : pstuff[i].ptoc.wheretogo), - &pstuff[i].ptoc)); -#endif for(i = 0; i < (int)NELEM(ostraptable); ++i) { switch(i) diff --git a/src/executor.cpp b/src/executor.cpp index d8258b02..3c28f673 100644 --- a/src/executor.cpp +++ b/src/executor.cpp @@ -30,7 +30,6 @@ #include "rsys/cquick.h" #include "rsys/file.h" #include "rsys/soundopts.h" -#include "rsys/pstuff.h" #include "rsys/prefs.h" #include "rsys/aboutpanel.h" #include "rsys/segment.h" diff --git a/src/include/rsys/ctl.h b/src/include/rsys/ctl.h index 5cca5580..28f8ec48 100644 --- a/src/include/rsys/ctl.h +++ b/src/include/rsys/ctl.h @@ -15,7 +15,6 @@ #include "rsys/mman.h" #include "rsys/cquick.h" -#include "rsys/pstuff.h" namespace Executor { diff --git a/src/include/rsys/itm.h b/src/include/rsys/itm.h index eb47902f..a7be1005 100644 --- a/src/include/rsys/itm.h +++ b/src/include/rsys/itm.h @@ -8,7 +8,6 @@ */ -#include "rsys/pstuff.h" namespace Executor { struct itmstr diff --git a/src/include/rsys/list.h b/src/include/rsys/list.h index 5b6b2286..d19780df 100644 --- a/src/include/rsys/list.h +++ b/src/include/rsys/list.h @@ -12,7 +12,7 @@ #include "MemoryMgr.h" #include "ResourceMgr.h" #include "rsys/mman.h" -#include "rsys/pstuff.h" + namespace Executor { extern void diff --git a/src/include/rsys/menu.h b/src/include/rsys/menu.h index c06dc8bf..5630d7d3 100644 --- a/src/include/rsys/menu.h +++ b/src/include/rsys/menu.h @@ -12,7 +12,6 @@ #include "MenuMgr.h" #include "ResourceMgr.h" #include "rsys/mman.h" -#include "rsys/pstuff.h" namespace Executor { diff --git a/src/include/rsys/print.h b/src/include/rsys/print.h index c1f775b4..8d09f126 100644 --- a/src/include/rsys/print.h +++ b/src/include/rsys/print.h @@ -8,7 +8,6 @@ */ -#include "rsys/pstuff.h" #include "DialogMgr.h" #include "PrintMgr.h" #include "rsys/nextprint.h" diff --git a/src/include/rsys/pstuff.h b/src/include/rsys/pstuff.h deleted file mode 100644 index e35182bb..00000000 --- a/src/include/rsys/pstuff.h +++ /dev/null @@ -1,112 +0,0 @@ -#if false && !defined(_PSTUFF_H_) -#define _PSTUFF_H_ - -namespace Executor -{ -extern pstuff_t pstuff[]; -extern osstuff_t osstuff[]; - -#define P_ROMlib_mytrack (pstuff[0].orig) -#define P_ROMlib_stdftrack (pstuff[1].orig) -#define P_ROMlib_myfilt (pstuff[2].orig) -#define P_ROMlib_stdffilt (pstuff[3].orig) -#define P_ROMlib_numsonlyfilterproc (pstuff[4].orig) -#define P_ROMlib_stlfilterproc (pstuff[5].orig) -#define P_ROMlib_wakeup (pstuff[6].orig) -#define P_ROMlib_vcatch (pstuff[7].orig) -#define P_ROMlib_dotext (pstuff[8].orig) -#define P_handle_refresh (pstuff[9].orig) - -#define P_ROMlib_mysound (pstuff[10].orig) -#define P_ROMlib_myjobproc (pstuff[11].orig) -#define P_ROMlib_mystlproc (pstuff[12].orig) - -#define P_cdef0 (pstuff[13].orig) -#define P_cdef16 (pstuff[14].orig) -#define P_ldef0 (pstuff[15].orig) -#define P_mdef0 (pstuff[16].orig) -#define P_mbdf0 (pstuff[17].orig) -#define P_wdef0 (pstuff[18].orig) -#define P_wdef16 (pstuff[19].orig) -#define P_snth5 (pstuff[20].orig) - -#define P_IUMagString (pstuff[21].orig) /* Pack6 */ -#define P_PrStlInit (pstuff[22].orig) /* PrGlue */ -#define P_PrJobInit (pstuff[23].orig) /* PrGlue */ - -#define P_StdText (pstuff[24].orig) /* This */ -#define P_StdLine (pstuff[25].orig) /* block */ -#define P_StdRect (pstuff[26].orig) /* contains */ -#define P_StdOval (pstuff[27].orig) /* routines */ -#define P_StdRRect (pstuff[28].orig) /* that have */ -#define P_StdArc (pstuff[29].orig) /* their own */ -#define P_StdRgn (pstuff[30].orig) /* traps */ -#define P_StdPoly (pstuff[31].orig) -#define P_StdBits (pstuff[32].orig) -#define P_StdComment (pstuff[33].orig) -#define P_StdTxMeas (pstuff[34].orig) -#define P_StdPutPic (pstuff[35].orig) - -#define P_FMSwapFont (pstuff[36].orig) -#define P_InitCursor (pstuff[37].orig) - -#define P_textasPS (pstuff[38].orig) -#define P_PrText (pstuff[39].orig) -#define P_PrLine (pstuff[40].orig) -#define P_PrRect (pstuff[41].orig) -#define P_PrRRect (pstuff[42].orig) -#define P_PrOval (pstuff[43].orig) -#define P_PrArc (pstuff[44].orig) -#define P_PrPoly (pstuff[45].orig) -#define P_PrRgn (pstuff[46].orig) -#define P_PrBits (pstuff[47].orig) -#define P_PrComment (pstuff[48].orig) -#define P_PrTxMeas (pstuff[49].orig) -#define P_PrGetPic (pstuff[50].orig) -#define P_PrPutPic (pstuff[51].orig) -#define P_donotPrText (pstuff[52].orig) -#define P_donotPrLine (pstuff[53].orig) -#define P_donotPrRect (pstuff[54].orig) -#define P_donotPrRRect (pstuff[55].orig) -#define P_donotPrOval (pstuff[56].orig) -#define P_donotPrArc (pstuff[57].orig) -#define P_donotPrPoly (pstuff[58].orig) -#define P_donotPrRgn (pstuff[59].orig) -#define P_donotPrBits (pstuff[60].orig) -#define P_donotPrGetPic (pstuff[61].orig) -#define P_donotPrPutPic (pstuff[62].orig) - -#define P_ROMlib_filebox (pstuff[63].orig) -#define P_StdGetPic (pstuff[64].orig) - -#define P_flushcache (pstuff[65].orig) -#define P_Key1Trans (pstuff[66].orig) -#define P_Key2Trans (pstuff[67].orig) - -#define P_ROMlib_licensefilt (pstuff[68].orig) -#define P_unixmount (pstuff[69].orig) -#define P_GestaltTablesOnly (pstuff[70].orig) -#define P_sound_timer_handler (pstuff[71].orig) -#define P_adb_service_stub (pstuff[72].orig) - -#define P_cdef1008 (pstuff[73].orig) -#define P_bad_trap_unimplemented (pstuff[74].orig) - -#define P_pack8_unknown_selector (pstuff[75].orig) -#define P_PhysicalGestalt (pstuff[76].orig) - -#define P_HideCursor (pstuff[77].orig) -#define P_ShowCursor (pstuff[78].orig) -#define P_ShieldCursor (pstuff[79].orig) -#define P_SetCursor (pstuff[80].orig) -#define P_ObscureCursor (pstuff[81].orig) - -#define P_Unknown574 (pstuff[82].orig) - -#define P_ROMlib_circle_ok (pstuff[83].orig) -#define P_ROMlib_orientation (pstuff[84].orig) - -#define P_new_draw_scroll (pstuff[85].orig) -#define P_new_pos_ctl (pstuff[86].orig) -} -#endif /* !defined(_PSTUFF_H_) */ diff --git a/src/include/rsys/quick.h b/src/include/rsys/quick.h index b6db27ff..1446e69d 100644 --- a/src/include/rsys/quick.h +++ b/src/include/rsys/quick.h @@ -8,8 +8,6 @@ */ -#include "rsys/pstuff.h" - /* include trapglue.h for prototype for CToPascalCall () used in inline functions below */ #include "rsys/trapglue.h" diff --git a/src/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index 07cb99b2..541bc771 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -2,7 +2,6 @@ #define __RSYS_SOUNDOPTS__ #include "SoundMgr.h" -#include "rsys/pstuff.h" /* to get extern for `ROMlib_PretendSound' */ #include "rsys/prefs.h" diff --git a/src/include/rsys/stdfile.h b/src/include/rsys/stdfile.h index f6492f95..c70eb99d 100644 --- a/src/include/rsys/stdfile.h +++ b/src/include/rsys/stdfile.h @@ -1,7 +1,6 @@ #if !defined(__RSYS_STDFILE__) #define __RSYS_STDFILE__ -#include "rsys/pstuff.h" #include "FileMgr.h" #include "EventMgr.h" #include "ControlMgr.h" diff --git a/src/include/rsys/tesave.h b/src/include/rsys/tesave.h index 6652727b..3d5973ac 100644 --- a/src/include/rsys/tesave.h +++ b/src/include/rsys/tesave.h @@ -8,8 +8,6 @@ */ -#include "rsys/pstuff.h" - namespace Executor { diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index 13ad3589..e7fce253 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -22,12 +22,6 @@ typedef struct void *func; } osstuff_t; -typedef struct -{ - ptocblock_t ptoc; - void *orig; -} pstuff_t; - #define TOOLBIT (0x0800) #define NTOOLENTRIES (0x400) #define NOSENTRIES (0x100) diff --git a/src/include/rsys/wind.h b/src/include/rsys/wind.h index ea4c4197..32864449 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -15,7 +15,6 @@ #include #include "rsys/mman.h" -#include "rsys/pstuff.h" namespace Executor { diff --git a/src/launch.cpp b/src/launch.cpp index 141419c9..0a72feca 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -41,12 +41,10 @@ #include "rsys/trapglue.h" #include "rsys/file.h" #include "rsys/sounddriver.h" -#include "rsys/pstuff.h" #include "rsys/prefs.h" #include "rsys/flags.h" #include "rsys/aboutpanel.h" #include "rsys/segment.h" -#include "rsys/pstuff.h" #include "rsys/tesave.h" #include "rsys/blockinterrupts.h" #include "rsys/resource.h" diff --git a/src/listMouse.cpp b/src/listMouse.cpp index a7bb6d4c..7c540e41 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -14,7 +14,6 @@ #include "rsys/cquick.h" #include "rsys/list.h" -#include "rsys/pstuff.h" #include "rsys/hook.h" using namespace Executor; diff --git a/src/main.cpp b/src/main.cpp index 32f96e28..a5967426 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -37,7 +37,6 @@ #include "rsys/tesave.h" #include "rsys/mman.h" #include "rsys/menu.h" -#include "rsys/pstuff.h" #include "rsys/prefs.h" #include "rsys/flags.h" #include "rsys/option.h" diff --git a/src/osutil.cpp b/src/osutil.cpp index 516b7cf2..cb3201a8 100644 --- a/src/osutil.cpp +++ b/src/osutil.cpp @@ -21,7 +21,6 @@ #include "rsys/mman.h" #include "rsys/blockinterrupts.h" #include "rsys/trapglue.h" -#include "rsys/pstuff.h" #include "rsys/osutil.h" #include "rsys/host.h" #include "rsys/time.h" diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index ff0cc806..612766e9 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -14,7 +14,6 @@ #include "ControlMgr.h" #include "ResourceMgr.h" #include "rsys/nextprint.h" -#include "rsys/pstuff.h" #include "rsys/print.h" #include "rsys/hook.h" #include "rsys/ctl.h" diff --git a/src/prPrinting.cpp b/src/prPrinting.cpp index 52a25b29..8af5e092 100644 --- a/src/prPrinting.cpp +++ b/src/prPrinting.cpp @@ -9,7 +9,6 @@ #include "FontMgr.h" #include "ResourceMgr.h" -#include "rsys/pstuff.h" #include "rsys/PSstrings.h" #include "rsys/notmac.h" #include "rsys/mman.h" diff --git a/src/prRecords.cpp b/src/prRecords.cpp index 7a7e66b1..29331317 100644 --- a/src/prRecords.cpp +++ b/src/prRecords.cpp @@ -10,7 +10,6 @@ #include "ResourceMgr.h" #include "rsys/nextprint.h" -#include "rsys/pstuff.h" #include "rsys/print.h" using namespace Executor; diff --git a/src/qIMV.cpp b/src/qIMV.cpp index 92f55cfb..78639ee4 100644 --- a/src/qIMV.cpp +++ b/src/qIMV.cpp @@ -8,7 +8,6 @@ #include "QuickDraw.h" #include "MemoryMgr.h" -#include "rsys/pstuff.h" #include "rsys/cquick.h" #include "rsys/tempalloc.h" diff --git a/src/qIMVI.cpp b/src/qIMVI.cpp index dd7972ba..b4faad7c 100644 --- a/src/qIMVI.cpp +++ b/src/qIMVI.cpp @@ -9,7 +9,6 @@ #include "CQuickDraw.h" #include "MemoryMgr.h" #include "rsys/quick.h" -#include "rsys/pstuff.h" #include "rsys/region.h" #include "rsys/picture.h" diff --git a/src/qStandard.cpp b/src/qStandard.cpp index bfd2b43c..10a88e73 100644 --- a/src/qStandard.cpp +++ b/src/qStandard.cpp @@ -6,7 +6,6 @@ #include "rsys/common.h" #include "QuickDraw.h" -#include "rsys/pstuff.h" using namespace Executor; diff --git a/src/refresh.cpp b/src/refresh.cpp index f9bfa37e..b2e9901c 100644 --- a/src/refresh.cpp +++ b/src/refresh.cpp @@ -9,7 +9,6 @@ #include "rsys/prefs.h" #include "rsys/dirtyrect.h" #include "rsys/host.h" -#include "rsys/pstuff.h" #include "rsys/flags.h" #include "rsys/autorefresh.h" #include "TimeMgr.h" diff --git a/src/resGet.cpp b/src/resGet.cpp index fae5e7ff..62629604 100644 --- a/src/resGet.cpp +++ b/src/resGet.cpp @@ -19,7 +19,6 @@ #include "rsys/wind.h" #include "rsys/soundopts.h" #include "rsys/file.h" -#include "rsys/pstuff.h" #include "rsys/aboutbox.h" #include "rsys/stdfile.h" /* for unixmount */ diff --git a/src/resOpen.cpp b/src/resOpen.cpp index deba15ab..68261fa0 100644 --- a/src/resOpen.cpp +++ b/src/resOpen.cpp @@ -13,7 +13,6 @@ #include "rsys/glue.h" #include "rsys/mman.h" #include "rsys/file.h" -#include "rsys/pstuff.h" #include "rsys/osevent.h" #include "rsys/prefs.h" diff --git a/src/stdfile.cpp b/src/stdfile.cpp index e11c4c35..ad2f8031 100644 --- a/src/stdfile.cpp +++ b/src/stdfile.cpp @@ -44,7 +44,6 @@ #include "rsys/arrowkeys.h" #include "rsys/glue.h" #include "rsys/resource.h" -#include "rsys/pstuff.h" #include "rsys/hfs.h" #include "rsys/time.h" #include "rsys/flags.h" diff --git a/src/time.cpp b/src/time.cpp index d9aaae35..8b708ab8 100644 --- a/src/time.cpp +++ b/src/time.cpp @@ -10,7 +10,6 @@ #include "TimeMgr.h" #include "rsys/blockinterrupts.h" -#include "rsys/pstuff.h" #include "rsys/osutil.h" #include "rsys/vbl.h" #include "rsys/time.h" diff --git a/src/vbl.cpp b/src/vbl.cpp index 41d20d2b..d0cea065 100644 --- a/src/vbl.cpp +++ b/src/vbl.cpp @@ -13,7 +13,6 @@ #include "OSEvent.h" #include "ToolboxEvent.h" -#include "rsys/pstuff.h" #include "rsys/vbl.h" #include "rsys/time.h" #include "rsys/hook.h" From b723c9416bc9fd219a7e8e5fcb5806bfb43ed12f Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 20:48:41 +0100 Subject: [PATCH 16/88] Hunt down direct calls to CToPascalCall (involves making some function pointer type declarations more accurate) --- src/ctlMisc.cpp | 3 +-- src/ctlMouse.cpp | 11 +++++------ src/dialHandle.cpp | 4 ++-- src/dialInit.cpp | 4 ++-- src/emustubs.cpp | 6 +++--- src/gestalt.cpp | 31 +++++++++++++++---------------- src/include/DialogMgr.h | 4 ++-- src/include/Gestalt.h | 12 +++++++----- src/include/ListMgr.h | 4 +++- src/include/QuickDraw.h | 8 ++++---- src/include/rsys/functions.h | 5 ----- src/include/rsys/gestalt.h | 2 +- src/include/rsys/itm.h | 1 - src/include/rsys/quick.h | 4 ---- src/include/rsys/soundopts.h | 11 ++++++++--- src/launch.cpp | 2 +- src/listAccess.cpp | 2 +- src/listDisplay.cpp | 2 +- src/listMouse.cpp | 9 +++------ src/menu.cpp | 11 ++++------- src/prLowLevel.cpp | 4 ++-- src/qHooks.cpp | 25 ++++++++++++------------- src/qPicstuff.cpp | 25 ++++++++++++------------- src/qStdPic.cpp | 4 ++-- src/resOpen.cpp | 18 ++++-------------- src/snth5.cpp | 3 +-- src/sound.cpp | 3 +-- src/windMisc.cpp | 3 +-- 28 files changed, 98 insertions(+), 123 deletions(-) diff --git a/src/ctlMisc.cpp b/src/ctlMisc.cpp index 5c70a098..59b824e4 100644 --- a/src/ctlMisc.cpp +++ b/src/ctlMisc.cpp @@ -204,8 +204,7 @@ int32_t Executor::ROMlib_ctlcall(ControlHandle c, int16_t i, int32_t l) { ROMlib_hook(ctl_cdefnumber); HLockGuard guard(defproc); - retval = CToPascalCall((void *)(ctlfuncp)STARH(defproc), - ctop(&C_cdef0), VAR(c), c, i, l); + retval = cp(VAR(c), c, i, l); } return retval; diff --git a/src/ctlMouse.cpp b/src/ctlMouse.cpp index b9af710c..785ecc33 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -65,17 +65,16 @@ INTEGER Executor::C_FindControl(Point p, WindowPtr w, return retval; } -typedef void (*actionp)(ControlHandle c, INTEGER part); -static inline void CALLACTION(ControlHandle ch, INTEGER inpart, ProcPtr a) +static inline void CALLACTION(ControlHandle ch, INTEGER inpart, ControlActionUPP a) { ROMlib_hook(ctl_cdefnumber); - if(a == (ProcPtr)&ROMlib_mytrack) + if(a == &ROMlib_mytrack) ROMlib_mytrack(ch, inpart); - else if(a == (ProcPtr)&ROMlib_stdftrack) + else if(a == &ROMlib_stdftrack) ROMlib_stdftrack(ch, inpart); else - CToPascalCall((void *)a, ctop(&C_ROMlib_mytrack), ch, inpart); + a(ch, inpart); } INTEGER Executor::C_TrackControl(ControlHandle c, Point p, @@ -188,7 +187,7 @@ INTEGER Executor::C_TrackControl(ControlHandle c, Point p, CTLCALL(c, drawCntl, partstart); } if(a && inpart) - CALLACTION(c, inpart, (ProcPtr)a); + CALLACTION(c, inpart, a); } GetOSEvent(mUpMask, &ev); GlobalToLocal(&ev.where); diff --git a/src/dialHandle.cpp b/src/dialHandle.cpp index ea51ead1..2e132e4a 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -665,12 +665,12 @@ void Executor::BEEPER(INTEGER n) { if(LM(DABeeper)) { - if(MR(LM(DABeeper)) == (ProcPtr)&ROMlib_mysound) + if(MR(LM(DABeeper)) == &ROMlib_mysound) C_ROMlib_mysound((n)); else { ROMlib_hook(dial_soundprocnumber); - Executor::CToPascalCall((void *)(soundprocp)MR(LM(DABeeper)), ctop(&C_ROMlib_mysound), n); + MR(LM(DABeeper))(n); } } } diff --git a/src/dialInit.cpp b/src/dialInit.cpp index c7f6f4a3..6ff5439e 100644 --- a/src/dialInit.cpp +++ b/src/dialInit.cpp @@ -22,7 +22,7 @@ void Executor::C_ROMlib_mysound(INTEGER i) SysBeep(5); } -void Executor::C_ErrorSound(ProcPtr sp) /* IMI-411 */ +void Executor::C_ErrorSound(SoundProcPtr sp) /* IMI-411 */ { LM(DABeeper) = RM(sp); } @@ -35,7 +35,7 @@ void Executor::C_InitDialogs(ProcPtr rp) /* IMI-411 */ LM(DlgFont) = CWC(systemFont); LM(ResumeProc) = RM(rp); - ErrorSound((ProcPtr)&ROMlib_mysound); + ErrorSound(&ROMlib_mysound); Handle tmp; PtrToHand(nothing, &tmp, (LONGINT)1); LM(DAStrings)[0] = RM(tmp); diff --git a/src/emustubs.cpp b/src/emustubs.cpp index ed74df0a..93e63e83 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -2301,7 +2301,7 @@ STUB(SetTrapAddress) STUB(Gestalt) { GUEST l; - ProcPtr oldp; + SelectorFunctionUPP oldp; switch(EM_D1 & 0xFFFF) { @@ -2315,10 +2315,10 @@ STUB(Gestalt) if(EM_D0 == DONGLE_GESTALT) EM_D0 = Gestalt(EM_D0, (GUEST *)SYN68K_TO_US_CHECK0(EM_A0)); else - EM_D0 = NewGestalt(EM_D0, (ProcPtr)SYN68K_TO_US_CHECK0(EM_A0)); + EM_D0 = NewGestalt(EM_D0, (SelectorFunctionUPP)SYN68K_TO_US_CHECK0(EM_A0)); break; case 0xA5AD: - EM_D0 = ReplaceGestalt(EM_D0, (ProcPtr)SYN68K_TO_US_CHECK0(EM_A0), + EM_D0 = ReplaceGestalt(EM_D0, (SelectorFunctionUPP)SYN68K_TO_US_CHECK0(EM_A0), &oldp); EM_A0 = US_TO_SYN68K_CHECK0((void *)oldp); break; diff --git a/src/gestalt.cpp b/src/gestalt.cpp index 1e4c7471..595d6c36 100644 --- a/src/gestalt.cpp +++ b/src/gestalt.cpp @@ -278,7 +278,7 @@ static OSType phystable_selectors_to_patch[] = { typedef struct gestalt_link_str { OSType selector; - ProcPtr selectorFunction; + SelectorFunctionUPP selectorFunction; struct gestalt_link_str *next; } gestalt_link_t; @@ -382,7 +382,7 @@ gestalt_set_cpu_type(uint32_t type) } #endif -static OSErrRET +static OSErr gestalt_helper(OSType selector, GUEST *responsep, BOOLEAN searchlist, gestaltentry_t table[], int length) { @@ -397,8 +397,7 @@ gestalt_helper(OSType selector, GUEST *responsep, BOOLEAN searchlist, *responsep = CLC(0); /* better safe than sorry */ if(searchlist && (gp = find_selector_on_list(selector))) - retval = CToPascalCall((void *)gp->selectorFunction, ctop(&C_GestaltTablesOnly), - selector, responsep); + retval = gp->selectorFunction(selector, responsep); else { gestaltentry_t *gep; @@ -493,7 +492,7 @@ Executor::ROMlib_add_to_gestalt_list(OSType selector, OSErr retval, uint32_t new } } -OSErrRET Executor::Gestalt(OSType selector, GUEST *responsep) +OSErr Executor::Gestalt(OSType selector, GUEST *responsep) { static bool been_here = false; @@ -505,7 +504,7 @@ OSErrRET Executor::Gestalt(OSType selector, GUEST *responsep) #if defined(CYGWIN32) if((uint32_t)selector == 0xb7d20e84) { - OSErrRET retval; + OSErr retval; warning_trace_info("about to dongle_query"); retval = dongle_query(responsep); @@ -538,9 +537,9 @@ OSErrRET Executor::Gestalt(OSType selector, GUEST *responsep) return gestalt_helper(selector, responsep, true, gtable, NELEM(gtable)); } -OSErrRET Executor::C_PhysicalGestalt(OSType selector, GUEST *responsep) +OSErr Executor::C_PhysicalGestalt(OSType selector, GUEST *responsep) { - OSErrRET retval; + OSErr retval; switch(selector) { @@ -564,7 +563,7 @@ OSErrRET Executor::C_PhysicalGestalt(OSType selector, GUEST *responsep) return retval; } -OSErrRET Executor::C_GestaltTablesOnly(OSType selector, +OSErr Executor::C_GestaltTablesOnly(OSType selector, GUEST *responsep) { return gestalt_helper(selector, responsep, false, gtable, NELEM(gtable)); @@ -581,11 +580,11 @@ syszone_p(ProcPtr p) } static OSErr -new_link(OSType selector, ProcPtr selFunc) +new_link(OSType selector, SelectorFunctionUPP selFunc) { OSErr retval; - if(!syszone_p(selFunc)) + if(!syszone_p((ProcPtr)selFunc)) retval = gestaltLocationErr; else { @@ -607,7 +606,7 @@ new_link(OSType selector, ProcPtr selFunc) return retval; } -OSErrRET Executor::NewGestalt(OSType selector, ProcPtr selFunc) +OSErr Executor::NewGestalt(OSType selector, SelectorFunctionUPP selFunc) { OSErr retval; @@ -619,8 +618,8 @@ OSErrRET Executor::NewGestalt(OSType selector, ProcPtr selFunc) return retval; } -OSErrRET Executor::ReplaceGestalt(OSType selector, ProcPtr selFunc, - ProcPtr *oldSelFuncp) +OSErr Executor::ReplaceGestalt(OSType selector, SelectorFunctionUPP selFunc, + SelectorFunctionUPP *oldSelFuncp) { OSErr retval; gestalt_link_t *gp; @@ -628,7 +627,7 @@ OSErrRET Executor::ReplaceGestalt(OSType selector, ProcPtr selFunc, gp = find_selector_on_list(selector); if(gp) { - if(syszone_p(selFunc)) + if(syszone_p((ProcPtr)selFunc)) { *oldSelFuncp = gp->selectorFunction; gp->selectorFunction = selFunc; @@ -646,7 +645,7 @@ OSErrRET Executor::ReplaceGestalt(OSType selector, ProcPtr selFunc, retval = gestaltUndefSelectorErr; else { - *oldSelFuncp = (ProcPtr)&GestaltTablesOnly; + *oldSelFuncp = &GestaltTablesOnly; retval = new_link(selector, selFunc); } } diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index f524acc5..cd33745b 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -156,7 +156,7 @@ typedef UPP UserItemProcPtr; const LowMemGlobal ResumeProc { 0xA8C }; // DialogMgr IMI-411 (true); const LowMemGlobal ANumber { 0xA98 }; // DialogMgr IMI-423 (true); const LowMemGlobal ACount { 0xA9A }; // DialogMgr IMI-423 (true); -const LowMemGlobal DABeeper { 0xA9C }; // DialogMgr IMI-411 (true); +const LowMemGlobal DABeeper { 0xA9C }; // DialogMgr IMI-411 (true); const LowMemGlobal DAStrings { 0xAA0 }; // DialogMgr IMI-421 (true); const LowMemGlobal DlgFont { 0xAFA }; // DialogMgr IMI-412 (true); @@ -218,7 +218,7 @@ extern void DlgPaste(DialogPtr dp); extern void DlgDelete(DialogPtr dp); extern void C_ROMlib_mysound(INTEGER i); PASCAL_FUNCTION(ROMlib_mysound); -extern void C_ErrorSound(ProcPtr sp); +extern void C_ErrorSound(SoundProcPtr sp); PASCAL_TRAP(ErrorSound, 0xA98C); extern void C_InitDialogs(ProcPtr rp); PASCAL_TRAP(InitDialogs, 0xA97B); diff --git a/src/include/Gestalt.h b/src/include/Gestalt.h index 30742c1b..9581f8e5 100644 --- a/src/include/Gestalt.h +++ b/src/include/Gestalt.h @@ -194,12 +194,14 @@ enum gestaltLocationErr = -5553, }; -extern OSErrRET Gestalt(OSType selector, GUEST *responsep); -extern OSErrRET NewGestalt(OSType selector, ProcPtr selFunc); -extern OSErrRET ReplaceGestalt(OSType selector, ProcPtr selFunc, - ProcPtr *oldSelFuncp); +using SelectorFunctionUPP = UPP *)>; -extern OSErrRET C_GestaltTablesOnly(OSType selector, +extern OSErr Gestalt(OSType selector, GUEST *responsep); +extern OSErr NewGestalt(OSType selector, SelectorFunctionUPP selFunc); +extern OSErr ReplaceGestalt(OSType selector, SelectorFunctionUPP selFunc, + SelectorFunctionUPP *oldSelFuncp); + +extern OSErr C_GestaltTablesOnly(OSType selector, GUEST *responsep); NOTRAP_FUNCTION(GestaltTablesOnly); } diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index 6bc1d05d..49d72b49 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -25,6 +25,8 @@ typedef DataArray *DataPtr; typedef GUEST *DataHandle; +using ListClickLoopUPP = UPP; + struct ListRec { GUEST_STRUCT; @@ -42,7 +44,7 @@ struct ListRec GUEST clikTime; GUEST clikLoc; GUEST mouseLoc; - GUEST lClikLoop; + GUEST lClikLoop; GUEST lastClick; GUEST refCon; GUEST listDefProc; diff --git a/src/include/QuickDraw.h b/src/include/QuickDraw.h index 89b86b3e..3f4030f0 100644 --- a/src/include/QuickDraw.h +++ b/src/include/QuickDraw.h @@ -159,8 +159,8 @@ using rgnProc_t = UPP; using bitsProc_t = UPP; using commentProc_t = UPP; using txMeasProc_t = UPP *numer, GUEST *denom, FontInfo *info)>; -using getPicProc_t = UPP; -using putPicProc_t = UPP; +using getPicProc_t = UPP; +using putPicProc_t = UPP; struct QDProcs { @@ -826,9 +826,9 @@ PASCAL_TRAP(StdOval, 0xA8B6); extern void C_StdComment(INTEGER kind, INTEGER size, Handle hand); PASCAL_TRAP(StdComment, 0xA8F1); -extern void C_StdGetPic(Ptr dp, INTEGER bc); +extern void C_StdGetPic(void *dp, INTEGER bc); PASCAL_TRAP(StdGetPic, 0xA8EE); -extern void C_StdPutPic(Ptr sp, INTEGER bc); +extern void C_StdPutPic(const void *sp, INTEGER bc); PASCAL_TRAP(StdPutPic, 0xA8F0); extern void C_StdPoly(GrafVerb verb, PolyHandle ph); PASCAL_TRAP(StdPoly, 0xA8C5); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index ab628aa4..2cc1f750 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -104,11 +104,6 @@ constexpr CTOPCode ctop(F * = nullptr) return ptoc_internal::helper::ctop; } - -//#define PASCAL_TRAP(NAME, TRAP) constexpr auto NAME = &C_##NAME -//#define PASCAL_FUNCTION(NAME) constexpr auto NAME = &C_##NAME - -//typedef int (*ProcPtr)(); struct OpaqueUntyped68KProc; typedef OpaqueUntyped68KProc* ProcPtr; diff --git a/src/include/rsys/gestalt.h b/src/include/rsys/gestalt.h index 9205246c..0295a34e 100644 --- a/src/include/rsys/gestalt.h +++ b/src/include/rsys/gestalt.h @@ -54,7 +54,7 @@ enum physicalUndefSelectorErr = -15551 }; -extern OSErrRET C_PhysicalGestalt(OSType selector, GUEST *responsep); +extern OSErr C_PhysicalGestalt(OSType selector, GUEST *responsep); PASCAL_FUNCTION(PhysicalGestalt); extern void gestalt_set_system_version(uint32_t version); diff --git a/src/include/rsys/itm.h b/src/include/rsys/itm.h index a7be1005..5a410a3e 100644 --- a/src/include/rsys/itm.h +++ b/src/include/rsys/itm.h @@ -135,7 +135,6 @@ inline void BUMPIP(itmp& ip) ip = (itmp)((char *)(ip) + ITEM_LEN(ip)); } -typedef void (*soundprocp)(INTEGER sound); extern void BEEPER(INTEGER n); #define BEEP(n) BEEPER(n) diff --git a/src/include/rsys/quick.h b/src/include/rsys/quick.h index 1446e69d..dbae0368 100644 --- a/src/include/rsys/quick.h +++ b/src/include/rsys/quick.h @@ -8,10 +8,6 @@ */ -/* include trapglue.h for prototype for CToPascalCall () used - in inline functions below */ -#include "rsys/trapglue.h" - namespace Executor { typedef struct ccrsr_res diff --git a/src/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index 541bc771..9f6b77df 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -55,10 +55,15 @@ typedef LONGINT TimeL; // ###autc04 TODO: snd_time? 64 bit values on the mac? // is this an internal executor-only struct? -typedef struct _ModifierStub + +struct ModifierStub; +typedef ModifierStub *ModifierStubPtr; + +using snthfp = UPP; +struct ModifierStub { GUEST nextStub; - GUEST code; + GUEST code; LONGINT userInfo; TimeL count; TimeL every; @@ -69,7 +74,7 @@ typedef struct _ModifierStub GUEST prev_samp; SndDoubleBufferHeader *dbhp; int current_db; -} ModifierStub, *ModifierStubPtr; +}; #define SND_CHAN_FIRSTMOD(c) ((ModifierStubPtr)MR(c->firstMod)) #define SND_CHAN_CURRENT_START(c) (SND_CHAN_FIRSTMOD(c)->current_start) diff --git a/src/launch.cpp b/src/launch.cpp index 0a72feca..ee81c44c 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -727,7 +727,7 @@ static void reset_low_globals(void) * globals beforehand */ - GUEST saveDABeeper; + GUEST saveDABeeper; GUEST saveSysZone; GUEST saveTicks; GUEST saveBootDrive; diff --git a/src/listAccess.cpp b/src/listAccess.cpp index a353b58d..11e0b229 100644 --- a/src/listAccess.cpp +++ b/src/listAccess.cpp @@ -109,7 +109,7 @@ static inline INTEGER Executor::ROMlib_CALLCMP(Ptr p1, Ptr p2, INTEGER l1, INTEG else { ROMlib_hook(list_cmpnumber); - retval = CToPascalCall((void *)fp, ctop(&C_IUMagString), p1, p2, l1, l2); + retval = fp(p1, p2, l1, l2); } return retval; } diff --git a/src/listDisplay.cpp b/src/listDisplay.cpp index 3264a9bb..5fc241b1 100644 --- a/src/listDisplay.cpp +++ b/src/listDisplay.cpp @@ -269,7 +269,7 @@ void Executor::ROMlib_listcall(INTEGER mess, BOOLEAN sel, Rect *rp, Cell cell, I else { ROMlib_hook(list_ldefnumber); - CToPascalCall((void *)lp, ctop(&C_ldef0), mess, sel, rp, cell, off, len, lhand); + lp(mess, sel, rp, cell, off, len, lhand); } } } diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 7c540e41..3ee1e4e8 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -18,12 +18,11 @@ using namespace Executor; -typedef BOOLEAN (*clickproc)(void); static void findcell(GUEST *, ListHandle); static void setselectnilflag(BOOLEAN setit, Cell cell, ListHandle list, BOOLEAN hiliteempty); -static inline BOOLEAN ROMlib_CALLCLICK(clickproc); +static inline BOOLEAN ROMlib_CALLCLICK(ListClickLoopUPP); static void scrollbyvalues(ListHandle); static void rect2value(Rect *in, Rect *butnotin, INTEGER value, ListHandle list, BOOLEAN hiliteempty); @@ -175,14 +174,12 @@ void Executor::C_ROMlib_mytrack(ControlHandle ch, INTEGER part) scrollbyvalues(MR(guest_cast(HxX(ch, contrlRfCon)))); } -#define CALLCLICK(f) ROMlib_CALLCLICK((clickproc)(f)) - -static inline BOOLEAN ROMlib_CALLCLICK(clickproc fp) +static inline BOOLEAN CALLCLICK(ListClickLoopUPP fp) { BOOLEAN retval; ROMlib_hook(list_clicknumber); - retval = CToPascalCall((void *)fp, ctop(&C_Button)); + retval = fp(); return retval; } diff --git a/src/menu.cpp b/src/menu.cpp index d102db46..74847c7c 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -1645,7 +1645,7 @@ void Executor::ROMlib_menucall(INTEGER mess, MenuHandle themenu, Rect *menrect, mp = (menuprocp)STARH(defproc); - if(mp == (menuprocp)&mdef0) + if(mp == &mdef0) { mdef0(mess, themenu, menrect, hit, which); } @@ -1653,8 +1653,7 @@ void Executor::ROMlib_menucall(INTEGER mess, MenuHandle themenu, Rect *menrect, { ROMlib_hook(menu_mdefnumber); HLockGuard guard(defproc); - CToPascalCall(STARH(defproc), - ctop(&C_mdef0), mess, themenu, menrect, hit, which); + mp(mess, themenu, menrect, hit, which); } } } @@ -1673,16 +1672,14 @@ Executor::ROMlib_mbdfcall(INTEGER msg, INTEGER param1, LONGINT param2) mp = (mbdfprocp)STARH(defproc); - if(mp == (mbdfprocp)&mbdf0) + if(mp == &mbdf0) retval = mbdf0((Hx(MENULIST, mufu) & 7), msg, param1, param2); else { ROMlib_hook(menu_mbdfnumber); HLockGuard guard(defproc); - retval = CToPascalCall(STARH(defproc), - ctop(&C_mbdf0), (Hx(MENULIST, mufu) & 7), msg, - param1, param2); + retval = mp(Hx(MENULIST, mufu) & 7, msg, param1, param2); } return retval; diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index 612766e9..c303c817 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -526,7 +526,7 @@ static inline TPPrDlg Executor::ROMlib_CALLPRINITPROC(THPrint hPrint, prinitproc retval = C_PrJobInit(hPrint); else { - retval = (TPPrDlg)CToPascalCall((void *)fp, ctop(&C_PrStlInit), hPrint); + retval = fp(hPrint); } return retval; } @@ -543,7 +543,7 @@ static inline void Executor::ROMlib_CALLPRITEMPROC(TPPrDlg prrecptr, INTEGER ite C_ROMlib_mystlproc((DialogPtr)prrecptr, item); else { - CToPascalCall((void *)fp, ctop(&C_ROMlib_myjobproc), prrecptr, item); + fp((GrafPtr)prrecptr, item); } } diff --git a/src/qHooks.cpp b/src/qHooks.cpp index 79224ba0..716b45fa 100644 --- a/src/qHooks.cpp +++ b/src/qHooks.cpp @@ -38,7 +38,7 @@ void Executor::ROMlib_CALLTEXT(INTEGER bc, Ptr bufp, Point num, Point den) && (pp = MR(gp->textProc)) != &StdText) { ROMlib_hook(q_textprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdText), bc, bufp, num, den); + pp(bc, bufp, num, den); } else C_StdText(bc, bufp, num, den); @@ -54,7 +54,7 @@ void Executor::ROMlib_CALLLINE(Point p) && (pp = MR(gp->lineProc)) != &StdLine) { ROMlib_hook(q_lineprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdLine), p); + pp(p); } else C_StdLine(p); @@ -69,7 +69,7 @@ void Executor::ROMlib_CALLRECT(GrafVerb v, Rect *rp) && (pp = MR(gp->rectProc)) != &StdRect) { ROMlib_hook(q_rectprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdRect), v, rp); + pp(v, rp); } else C_StdRect(v, rp); @@ -84,7 +84,7 @@ void Executor::ROMlib_CALLOVAL(GrafVerb v, Rect *rp) && (pp = MR(gp->ovalProc)) != &StdOval) { ROMlib_hook(q_ovalprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdOval), v, rp); + pp(v, rp); } else C_StdOval(v, rp); @@ -99,7 +99,7 @@ void Executor::ROMlib_CALLRRECT(GrafVerb v, Rect *rp, INTEGER ow, INTEGER oh) && (pp = MR(gp->rRectProc)) != &StdRRect) { ROMlib_hook(q_rrectprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdRRect), v, rp, ow, oh); + pp(v, rp, ow, oh); } else C_StdRRect(v, rp, ow, oh); @@ -114,7 +114,7 @@ void Executor::ROMlib_CALLARC(GrafVerb v, Rect *rp, INTEGER starta, INTEGER arca && (pp = MR(gp->arcProc)) != &StdArc) { ROMlib_hook(q_arcprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdArc), v, rp, starta, arca); + pp(v, rp, starta, arca); } else C_StdArc(v, rp, starta, arca); @@ -129,7 +129,7 @@ void Executor::ROMlib_CALLRGN(GrafVerb v, RgnHandle rh) && (pp = MR(gp->rgnProc)) != &StdRgn) { ROMlib_hook(q_rgnprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdRgn), v, rh); + pp(v, rh); } else C_StdRgn(v, rh); @@ -144,7 +144,7 @@ void Executor::ROMlib_CALLPOLY(GrafVerb v, PolyHandle rh) && (pp = MR(gp->polyProc)) != &StdPoly) { ROMlib_hook(q_polyprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdPoly), v, rh); + pp(v, rh); } else C_StdPoly(v, rh); @@ -160,7 +160,7 @@ void Executor::ROMlib_CALLBITS(BitMap *bmp, const Rect *srcrp, const Rect *dstrp && (pp = MR(gp->bitsProc)) != &StdBits) { ROMlib_hook(q_bitsprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdBits), bmp, srcrp, dstrp, mode, maskrh); + pp(bmp, srcrp, dstrp, mode, maskrh); } else C_StdBits(bmp, srcrp, dstrp, mode, maskrh); @@ -175,7 +175,7 @@ void Executor::ROMlib_CALLCOMMENT(INTEGER kind, INTEGER size, Handle datah) && (pp = MR(gp->commentProc)) != &StdComment) { ROMlib_hook(q_commentprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdComment), kind, size, datah); + pp(kind, size, datah); } else C_StdComment(kind, size, datah); @@ -193,8 +193,7 @@ Executor::ROMlib_CALLTXMEAS(INTEGER bc, Ptr bufp, GUEST *nump, GUESTtxMeasProc)) != &StdTxMeas) { ROMlib_hook(q_txmeasprocnumber); - retval = CToPascalCall((void *)pp, ctop(&C_StdTxMeas), bc, bufp, - nump, denp, fip); + pp(bc, bufp, nump, denp, fip); } else retval = C_StdTxMeas(bc, bufp, nump, denp, fip); @@ -210,7 +209,7 @@ void Executor::ROMlib_PICWRITE(Ptr addr, INTEGER count) && (pp = MR(gp->putPicProc)) != &StdPutPic) { ROMlib_hook(q_putpicprocnumber); - CToPascalCall((void *)pp, ctop(&C_StdPutPic), addr, count); + pp(addr, count); } else C_StdPutPic(addr, count); diff --git a/src/qPicstuff.cpp b/src/qPicstuff.cpp index 19a5888d..dd12321c 100644 --- a/src/qPicstuff.cpp +++ b/src/qPicstuff.cpp @@ -38,7 +38,7 @@ using namespace Executor; */ static unsigned char *nextbytep; -static UPP procp; +static getPicProc_t procp; typedef void (*pfv)(); @@ -994,7 +994,7 @@ static Byte eatByte() Byte retval; if(procp) - CToPascalCall((void *)procp, ctop(&C_StdGetPic), &retval, sizeof(Byte)); + procp(&retval, sizeof(Byte)); else retval = *nextbytep; ++nextbytep; @@ -1006,7 +1006,7 @@ static GUEST eatINTEGERX() GUEST retval; if(procp) - CToPascalCall((void *)procp, ctop(&C_StdGetPic), &retval, sizeof(GUEST)); + procp(&retval, sizeof(GUEST)); else retval = *(GUEST *)nextbytep; nextbytep += sizeof(GUEST); @@ -1026,7 +1026,7 @@ static GUEST eatLONGINTX() GUEST retval; if(procp) - CToPascalCall((void *)procp, ctop(&C_StdGetPic), &retval, sizeof(GUEST)); + procp(&retval, sizeof(GUEST)); else retval = *(GUEST *)nextbytep; nextbytep += sizeof(GUEST); @@ -1045,7 +1045,7 @@ static void eatString(Str255 str) { str[0] = eatByte(); if(procp) - CToPascalCall((void *)procp, ctop(&C_StdGetPic), str + 1, str[0]); + procp(str + 1, str[0]); else BlockMoveData((Ptr)nextbytep, (Ptr)str + 1, str[0]); nextbytep += str[0]; @@ -1059,7 +1059,7 @@ static void eatNBytes(LONGINT n) { TEMP_ALLOC_DECL(temp_alloc_space); TEMP_ALLOC_ALLOCATE(bufp, temp_alloc_space, n); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), bufp, n); + procp(bufp, n); TEMP_ALLOC_FREE(temp_alloc_space); } nextbytep += n; @@ -1074,7 +1074,7 @@ static void eatRegion(RgnHandle rh, Size hs) { state = HGetState((Handle)rh); HLock((Handle)rh); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), (Ptr)STARH(rh) + sizeof(INTEGER), + procp((Ptr)STARH(rh) + sizeof(INTEGER), hs - sizeof(INTEGER)); HSetState((Handle)rh, state); } @@ -1174,7 +1174,7 @@ static Size eatpixdata(PixMapPtr pixmap, BOOLEAN *freep) HLock(h); if(procp) - CToPascalCall((void *)procp, ctop(&C_StdGetPic), STARH(h), pic_data_size); + procp(STARH(h), pic_data_size); else if(pixmap->packType == CWC(2)) memcpy(STARH(h), nextbytep, pic_data_size); @@ -1217,7 +1217,7 @@ static Size eatpixdata(PixMapPtr pixmap, BOOLEAN *freep) { temph = NewHandle(length); HLock(temph); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), STARH(temph), length); + procp(STARH(temph), length); inp = (Byte *)STARH(temph); } else @@ -1318,7 +1318,7 @@ static void eatbitdata(BitMap *bp, BOOLEAN packed) LM(TheZone) = savezone; } HLock(h); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), STARH(h), datasize); + procp(STARH(h), datasize); bp->baseAddr = *h; } else @@ -1346,7 +1346,7 @@ static void eatbitdata(BitMap *bp, BOOLEAN packed) { temph = NewHandle(length); HLock(temph); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), STARH(temph), length); + procp(STARH(temph), length); inp = (Byte *)STARH(temph); } else @@ -1750,8 +1750,7 @@ void Executor::C_DrawPicture(PicHandle pic, Rect *destrp) { state2 = HGetState(hand); HLock(hand); - CToPascalCall((void *)procp, ctop(&C_StdGetPic), STARH(hand), - hsize); + procp(STARH(hand), hsize); HSetState(hand, state2); } else diff --git a/src/qStdPic.cpp b/src/qStdPic.cpp index e8f1e551..bcb7cfb1 100644 --- a/src/qStdPic.cpp +++ b/src/qStdPic.cpp @@ -54,12 +54,12 @@ void Executor::C_StdComment(INTEGER kind, INTEGER size, Handle hand) } } -void Executor::C_StdGetPic(Ptr dp, INTEGER bc) /* TODO */ +void Executor::C_StdGetPic(void *dp, INTEGER bc) /* TODO */ { warning_unimplemented(NULL_STRING); } -void Executor::C_StdPutPic(Ptr sp, INTEGER bc) +void Executor::C_StdPutPic(const void *sp, INTEGER bc) { piccachehand pch; PicHandle ph; diff --git a/src/resOpen.cpp b/src/resOpen.cpp index 68261fa0..c123b419 100644 --- a/src/resOpen.cpp +++ b/src/resOpen.cpp @@ -112,15 +112,7 @@ Handle Executor::ROMlib_mgetres(resmaphand map, resref *rr) return retval; } - -namespace Executor -{ -void C_dcmp_template(Ptr, Ptr, Ptr, Size); -} - -void Executor::C_dcmp_template(Ptr source, Ptr dest, Ptr working, Size len) -{ -} +using dcmpProcPtr = UPP; /* TODO: decompress_setup also has to pass back the decompressed size we need to adjust down the size of "dlen" down below where we read @@ -287,15 +279,13 @@ static Handle mgetres_helper(resmaphand map, resref *rr, int32_t dlen, { if(dcmp_handle) { - ProcPtr dcmp; + dcmpProcPtr dcmp; SignedByte state; state = hlock_return_orig_state(dcmp_handle); - dcmp = (decltype(dcmp))STARH(dcmp_handle); + dcmp = (dcmpProcPtr)STARH(dcmp_handle); HLock(retval); - CToPascalCall((void *)dcmp, ctop(&C_dcmp_template), - xxx, - STARH(retval), dcmp_workspace, dlen); + dcmp(xxx, STARH(retval), dcmp_workspace, dlen); HUnlock(retval); SetHandleSize(retval, uncompressed_size); HSetState(dcmp_handle, state); diff --git a/src/snth5.cpp b/src/snth5.cpp index 0ed34900..d3c33b72 100644 --- a/src/snth5.cpp +++ b/src/snth5.cpp @@ -15,7 +15,6 @@ using namespace Executor; * function is called when we're done. */ -typedef void (*callbackfp)(SndChannelPtr, SndCommand *); BOOLEAN Executor::C_snth5(SndChannelPtr chanp, SndCommand *cmdp, ModifierStubPtr mp) @@ -61,7 +60,7 @@ BOOLEAN Executor::C_snth5(SndChannelPtr chanp, SndCommand *cmdp, #if 0 printf("CB"); fflush(stdout); #endif - CToPascalCall((void *)MR(chanp->callBack), ctop(&C_StuffHex), chanp, cmdp); + MR(chanp->callBack)(chanp, cmdp); break; case syncCmd: /* TODO */ diff --git a/src/sound.cpp b/src/sound.cpp index e7ef901f..75fe891d 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -514,7 +514,6 @@ static void dumpcmd(SndCommand *cmdp) } #endif -typedef BOOLEAN (*snthfp)(SndChannelPtr, SndCommand *, ModifierStubPtr); BOOLEAN callasynth(SndChannelPtr chanp, SndCommand *cmdp, ModifierStubPtr mp) { @@ -522,7 +521,7 @@ BOOLEAN callasynth(SndChannelPtr chanp, SndCommand *cmdp, ModifierStubPtr mp) * NOTE: when we support sound, we'll have to check for known P_routines * to avoid invoking syn68k on our own stuff. */ - return CToPascalCall((void *)MR(mp->code), ctop(&C_SectRect), chanp, cmdp, mp); + return mp->code(chanp, cmdp, mp); } #if defined(OLD_BROKEN_NEXTSTEP_SOUND) diff --git a/src/windMisc.cpp b/src/windMisc.cpp index 13b4e095..960e6845 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -539,8 +539,7 @@ int32_t Executor::ROMlib_windcall(WindowPtr wind, int16_t mess, int32_t param) #endif ROMlib_hook(wind_wdefnumber); HLockGuard guard(defproc); - retval = CToPascalCall(STARH(defproc), - ctop(&C_wdef0), var(wind), wind, mess, param); + retval = wp(var(wind), wind, mess, param); #if defined EVIL_ILLUSTRATOR_7_HACK ROMlib_evil_illustrator_7_hack = save_hack; #endif From f5f5c8147a718555e3514fc9a21f2ed69f74f4e6 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 14 Jan 2018 22:51:22 +0100 Subject: [PATCH 17/88] improve function management templates --- src/executor.cpp | 4 + src/functions.cpp | 69 ++++++++- src/include/rsys/ctop_ptoc.h | 100 ++++++++++++ src/include/rsys/emustubs.h | 286 +++++++++++++++++------------------ src/include/rsys/functions.h | 125 +++------------ 5 files changed, 331 insertions(+), 253 deletions(-) create mode 100644 src/include/rsys/ctop_ptoc.h diff --git a/src/executor.cpp b/src/executor.cpp index 3c28f673..309fb0dc 100644 --- a/src/executor.cpp +++ b/src/executor.cpp @@ -319,6 +319,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) togoto = tooltraptable[trapno]; if(trapword & POPBIT) retval = POPADDR(); +#if 1 if(togoto == toolstuff[trapno].orig) { if(toolstuff[trapno].ptoc.magic == (ULONGINT)-1) @@ -336,6 +337,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) FAKEPascalToCCall(&toolstuff[trapno].ptoc); } else +#endif { PUSHADDR(retval); /* Where they'll return to */ retval = (syn68k_addr_t)togoto; /* Where they have patched */ @@ -346,6 +348,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) { trapno = trapword & OSMASK; togoto = ostraptable[trapno]; +#if 1 if(togoto == osstuff[trapno].orig) { saved1 = EM_D1; @@ -367,6 +370,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) EM_A2 = savea2; } else +#endif { PUSHADDR(retval); PUSHUW(status); diff --git a/src/functions.cpp b/src/functions.cpp index 71e8a7c5..7878ce2f 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -21,11 +21,16 @@ namespace #include "rsys/refresh.h" #include "rsys/gestalt.h" +#include "rsys/ctop_ptoc.h" + #include using namespace Executor; using namespace Executor::functions; +bool toolflags[0x400]; +bool osflags[0x100]; + template void Raw68KFunction::init() { @@ -40,12 +45,48 @@ WrappedFunction::init() guestFP = (UPP)SYN68K_TO_US(callback_install((callback_handler_t)&PascalToCCall, &ptocblock)); } -/*template +template +void +Raw68KTrap::init() +{ + Raw68KFunction::init(); + if(trapno & TOOLBIT) + toolflags[trapno & 0x3FF] = true; + else + osflags[trapno & 0xFF] = true; +} + + +template void PascalTrap::init() { + WrappedFunction::init(); + if(trapno & TOOLBIT) + toolflags[trapno & 0x3FF] = true; + else + osflags[trapno & 0xFF] = true; } -*/ + + +template +Ret +PascalTrap::operator()(Args... args) const +{ + if((trapno & TOOLBIT) == 0) + return (*fptr)(args...); + else + { + // TODO + syn68k_addr_t new_addr = tooltraptable[trapno & (NTOOLENTRIES - 1)]; + + if(new_addr == toolstuff[trapno & (NTOOLENTRIES - 1)].orig) + return (*fptr)(args...); + else + return UPP(SYN68K_TO_US(new_addr))(args...); + } +} + InitAction::InitAction(void (*f)()) { @@ -56,4 +97,28 @@ void InitAction::execute() { for(auto f : initFunctions) (*f)(); + + for(int i = 0; i < 0x400; i++) + { + bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; + if(toolflags[i] != shouldhave) + { + if(shouldhave) + std::cout << "Missing " << std::hex << (0xA800 | i) << std::endl; + else + std::cout << "Surprising " << std::hex << (0xA800 | i) << std::endl; + } + } + for(int i = 0; i < 0x100; i++) + { + bool shouldhave = osstuff[i].func != (void*)&_Unimplemented; + if(osflags[i] != shouldhave) + { + if(shouldhave) + std::cout << "Missing " << std::hex << (0xA000 | i) << std::endl; + else + std::cout << "Surprising " << std::hex << (0xA000 | i) << std::endl; + } + } + } diff --git a/src/include/rsys/ctop_ptoc.h b/src/include/rsys/ctop_ptoc.h new file mode 100644 index 00000000..fe3803f6 --- /dev/null +++ b/src/include/rsys/ctop_ptoc.h @@ -0,0 +1,100 @@ +#pragma once + +namespace Executor +{ + +template +struct UPP; + +using CTOPCode = uint64_t; + +namespace ptoc_internal +{ + template + struct CTOP + { + constexpr static CTOPCode value = CTOP::value | (CTOP::value << 3); + }; + + template + struct CTOP + { + constexpr static + typename std::enable_if::value && sizeof(T) <= 4, CTOPCode>::type + value + = sizeof(T); + }; + + template + struct CTOP + { + constexpr static CTOPCode value = 5; + }; + + template + struct CTOP> + { + constexpr static CTOPCode value = 5; + }; + + template<> + struct CTOP + { + constexpr static CTOPCode value = 3; + }; + template<> + struct CTOP + { + constexpr static CTOPCode value = 0; + }; + + template + struct PTOC + { + using Rec = PTOC; + constexpr static CTOPCode value = (PTOC::value << Rec::bits) | (Rec::value); + constexpr static int bits = 3 + Rec::bits; + }; + + template + struct PTOC + { + constexpr static CTOPCode value = CTOP::value; + constexpr static int bits = 3; + }; + + template + struct helper + { + constexpr static bool enable = false; + }; + template + struct helper + { + constexpr static bool enable = true; + constexpr static CTOPCode ctop = CTOP::value; + constexpr static CTOPCode ptoc = PTOC::value; + }; + + template + struct helper + { + constexpr static bool enable = true; + constexpr static CTOPCode ctop = CTOP::value; + constexpr static CTOPCode ptoc = PTOC::value | (PTOC::value << 3); + }; +} + + +template::enable>> +constexpr CTOPCode ptoc(F * = nullptr) +{ + return ptoc_internal::helper::ptoc; +} +template::enable>> +constexpr CTOPCode ctop(F * = nullptr) +{ + return ptoc_internal::helper::ctop; +} + +} \ No newline at end of file diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 5131dbaa..952300bb 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -61,153 +61,149 @@ extern void ROMlib_reset_bad_trap_addresses(void); extern void C_pack8_unknown_selector(void); PASCAL_FUNCTION(pack8_unknown_selector); -extern syn68k_addr_t _Unimplemented(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SwapMMUMode(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Launch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Chain(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _FInitQueue(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _InitZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _FreeMem(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MaxMem(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _NewPtr(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _DisposPtr(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetPtrSize(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetPtrSize(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _NewHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _DisposHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetHandleSize(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetHandleSize(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HandleZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ReallocHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _RecoverHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HLock(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HUnlock(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _EmptyHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _InitApplZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetApplLimit(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _BlockMove(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PostEvent(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _OSEventAvail(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetOSEvent(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _FlushEvents(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _VInstall(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _VRemove(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SlotManager(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SlotVInstall(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SlotVRemove(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MoreMasters(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ReadDateTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetDateTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Delay(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _EqualString(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _DrvrInstall(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _DrvrRemove(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ResrvMem(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetTrapAddress(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetTrapAddress(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PtrZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HPurge(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HNoPurge(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetGrowZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _CompactMem(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PurgeMem(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _RelString(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _UprString(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _StripAddress(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetApplBase(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _InsTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _RmvTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PrimeTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _NMInstall(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _NMRemove(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HFSDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MaxBlock(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PurgeSpace(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MaxApplZone(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MoveHHi(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _StackSpace(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _NewEmptyHandle(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HSetRBit(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HClrRBit(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HGetState(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HSetState(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _CountADBs(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetIndADB(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetADBInfo(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetADBInfo(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ADBReInit(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ADBOp(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SysEnvirons(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HWPriv(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Microseconds(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Gestalt(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ResourceStub(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _TEDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ScriptUtil(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PrGlue(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Dequeue(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Enqueue(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Secs2Date(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Date2Secs(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HandToHand(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PtrToXHand(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PtrToHand(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HandAndHand(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack0(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack2(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack3(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack4(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack5(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack6(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack7(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack8(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack11(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack12(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PtrAndHand(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _LoadSeg(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack14(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Pack15(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _CommToolboxDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _OSDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _FontDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HighLevelFSDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ResourceDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _DialogDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _modeswitch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _WackyQD32Trap(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _PaletteDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _QDExtensions(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _ShutDown(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _AliasDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _WriteParam(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _InitUtil(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _flushcache(syn68k_addr_t ignoreme, void **ignoreme2); -RAW_68K_FUNCTION(flushcache); -extern syn68k_addr_t _Key1Trans(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_TRAP(Unimplemented, 0xA89F); +RAW_68K_FUNCTION(SwapMMUMode); +RAW_68K_TRAP(Launch, 0xA9F2); +RAW_68K_TRAP(Chain, 0xA9F3); +RAW_68K_FUNCTION(FInitQueue); +RAW_68K_FUNCTION(InitZone); +RAW_68K_FUNCTION(GetZone); +RAW_68K_FUNCTION(SetZone); +RAW_68K_FUNCTION(FreeMem); +RAW_68K_FUNCTION(MaxMem); +RAW_68K_FUNCTION(NewPtr); +RAW_68K_FUNCTION(DisposPtr); +RAW_68K_FUNCTION(SetPtrSize); +RAW_68K_FUNCTION(GetPtrSize); +RAW_68K_FUNCTION(NewHandle); +RAW_68K_FUNCTION(DisposHandle); +RAW_68K_FUNCTION(SetHandleSize); +RAW_68K_FUNCTION(GetHandleSize); +RAW_68K_FUNCTION(HandleZone); +RAW_68K_FUNCTION(ReallocHandle); +RAW_68K_FUNCTION(RecoverHandle); +RAW_68K_FUNCTION(HLock); +RAW_68K_FUNCTION(HUnlock); +RAW_68K_FUNCTION(EmptyHandle); +RAW_68K_FUNCTION(InitApplZone); +RAW_68K_FUNCTION(SetApplLimit); +RAW_68K_FUNCTION(BlockMove); +RAW_68K_FUNCTION(PostEvent); +RAW_68K_FUNCTION(OSEventAvail); +RAW_68K_FUNCTION(GetOSEvent); +RAW_68K_FUNCTION(FlushEvents); +RAW_68K_FUNCTION(VInstall); +RAW_68K_FUNCTION(VRemove); +RAW_68K_FUNCTION(SlotManager); +RAW_68K_FUNCTION(SlotVInstall); +RAW_68K_FUNCTION(SlotVRemove); +RAW_68K_FUNCTION(MoreMasters); +RAW_68K_FUNCTION(ReadDateTime); +RAW_68K_FUNCTION(SetDateTime); +RAW_68K_FUNCTION(Delay); +RAW_68K_FUNCTION(EqualString); +RAW_68K_FUNCTION(DrvrInstall); +RAW_68K_FUNCTION(DrvrRemove); +RAW_68K_FUNCTION(ResrvMem); +RAW_68K_FUNCTION(GetTrapAddress); +RAW_68K_FUNCTION(SetTrapAddress); +RAW_68K_FUNCTION(PtrZone); +RAW_68K_FUNCTION(HPurge); +RAW_68K_FUNCTION(HNoPurge); +RAW_68K_FUNCTION(SetGrowZone); +RAW_68K_FUNCTION(CompactMem); +RAW_68K_FUNCTION(PurgeMem); +RAW_68K_FUNCTION(RelString); +RAW_68K_FUNCTION(UprString); +RAW_68K_FUNCTION(StripAddress); +RAW_68K_FUNCTION(SetApplBase); +RAW_68K_FUNCTION(InsTime); +RAW_68K_FUNCTION(RmvTime); +RAW_68K_FUNCTION(PrimeTime); +RAW_68K_FUNCTION(NMInstall); +RAW_68K_FUNCTION(NMRemove); +RAW_68K_FUNCTION(HFSDispatch); +RAW_68K_FUNCTION(MaxBlock); +RAW_68K_FUNCTION(PurgeSpace); +RAW_68K_FUNCTION(MaxApplZone); +RAW_68K_FUNCTION(MoveHHi); +RAW_68K_FUNCTION(StackSpace); +RAW_68K_FUNCTION(NewEmptyHandle); +RAW_68K_FUNCTION(HSetRBit); +RAW_68K_FUNCTION(HClrRBit); +RAW_68K_FUNCTION(HGetState); +RAW_68K_FUNCTION(HSetState); +RAW_68K_FUNCTION(CountADBs); +RAW_68K_FUNCTION(GetIndADB); +RAW_68K_FUNCTION(GetADBInfo); +RAW_68K_FUNCTION(SetADBInfo); +RAW_68K_FUNCTION(ADBReInit); +RAW_68K_FUNCTION(ADBOp); +RAW_68K_FUNCTION(SysEnvirons); +RAW_68K_FUNCTION(HWPriv); +RAW_68K_TRAP(Microseconds, 0xA193); +RAW_68K_FUNCTION(Gestalt); +RAW_68K_FUNCTION(ResourceStub); +RAW_68K_TRAP(TEDispatch, 0xA83D); +RAW_68K_TRAP(ScriptUtil, 0xA8B5); +RAW_68K_TRAP(PrGlue, 0xA8FD); +RAW_68K_TRAP(Dequeue, 0xA96E); +RAW_68K_TRAP(Enqueue, 0xA96F); +RAW_68K_TRAP(Secs2Date, 0xA9C6); +RAW_68K_TRAP(Date2Secs, 0xA9C7); +RAW_68K_TRAP(HandToHand, 0xA9E1); +RAW_68K_TRAP(PtrToXHand, 0xA9E2); +RAW_68K_TRAP(PtrToHand, 0xA9E3); +RAW_68K_TRAP(HandAndHand, 0xA9E4); +RAW_68K_TRAP(Pack0, 0xA9E7); +RAW_68K_TRAP(Pack2, 0xA9E9); +RAW_68K_TRAP(Pack3, 0xA9EA); +RAW_68K_TRAP(Pack4, 0xA9EB); +RAW_68K_TRAP(Pack5, 0xA9EC); +RAW_68K_TRAP(Pack6, 0xA9ED); +RAW_68K_TRAP(Pack7, 0xA9EE); +RAW_68K_TRAP(Pack8, 0xA816); +RAW_68K_TRAP(Pack11, 0xA82D); +RAW_68K_TRAP(Pack12, 0xA82E); +RAW_68K_TRAP(PtrAndHand, 0xA9EF); +RAW_68K_TRAP(LoadSeg, 0xA9F0); +RAW_68K_TRAP(Pack14, 0xA830); +RAW_68K_TRAP(Pack15, 0xA831); +RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); +RAW_68K_TRAP(OSDispatch, 0xA88F); +RAW_68K_TRAP(FontDispatch, 0xA854); +RAW_68K_TRAP(HighLevelFSDispatch, 0xAA52); +RAW_68K_TRAP(ResourceDispatch, 0xA822); +RAW_68K_TRAP(DialogDispatch, 0xAA68); +//RAW_68K_FUNCTION(modeswitch); +RAW_68K_TRAP(WackyQD32Trap, 0xAB03); +RAW_68K_TRAP(PaletteDispatch, 0xAAA2); +RAW_68K_TRAP(QDExtensions, 0xAB1D); +RAW_68K_TRAP(ShutDown, 0xA895); +RAW_68K_TRAP(AliasDispatch, 0xA823); +RAW_68K_TRAP(WriteParam, 0xA038); +RAW_68K_TRAP(InitUtil, 0xA03F); +RAW_68K_TRAP(flushcache, 0xA0BD); RAW_68K_FUNCTION(Key1Trans); -extern syn68k_addr_t _Key2Trans(syn68k_addr_t ignoreme, void **ignoreme2); RAW_68K_FUNCTION(Key2Trans); -extern syn68k_addr_t _Fix2X(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Frac2X(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SCSIDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _IMVI_LowerText(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SoundDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _QuickTime(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _IconDispatch(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetDefaultStartup(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetDefaultStartup(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetVideoDefault(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetVideoDefault(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _GetOSDefault(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _SetOSDefault(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _IMVI_ReadXPRam(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _bad_trap_unimplemented(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_TRAP(Fix2X, 0xA843); +RAW_68K_TRAP(Frac2X, 0xA845); +RAW_68K_TRAP(SCSIDispatch, 0xA815); +RAW_68K_TRAP(IMVI_LowerText, 0xA056); +RAW_68K_TRAP(SoundDispatch, 0xA800); +RAW_68K_TRAP(QuickTime, 0xAAAA); +RAW_68K_TRAP(IconDispatch, 0xABC9); +RAW_68K_FUNCTION(GetDefaultStartup); +RAW_68K_FUNCTION(SetDefaultStartup); +RAW_68K_FUNCTION(GetVideoDefault); +RAW_68K_FUNCTION(SetVideoDefault); +RAW_68K_FUNCTION(GetOSDefault); +RAW_68K_FUNCTION(SetOSDefault); +RAW_68K_TRAP(IMVI_ReadXPRam, 0xA051); RAW_68K_FUNCTION(bad_trap_unimplemented); -extern syn68k_addr_t _IMVI_PPC(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _HFSRoutines(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _CodeFragment(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _MixedMode(syn68k_addr_t ignoreme, void **ignoreme2); +RAW_68K_TRAP(IMVI_PPC, 0xA0DD); +RAW_68K_FUNCTION(HFSRoutines); +//RAW_68K_FUNCTION(CodeFragment); +//RAW_68K_FUNCTION(MixedMode); } #endif diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 2cc1f750..7e77befd 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -8,102 +8,13 @@ #include "rsys/trapglue.h" #include "rsys/mactype.h" +#include "rsys/ctop_ptoc.h" namespace Executor { template struct UPP; -using CTOPCode = uint64_t; - -namespace ptoc_internal -{ - template - struct CTOP - { - constexpr static CTOPCode value = CTOP::value | (CTOP::value << 3); - }; - - template - struct CTOP - { - constexpr static - typename std::enable_if::value && sizeof(T) <= 4, CTOPCode>::type - value - = sizeof(T); - }; - - template - struct CTOP - { - constexpr static CTOPCode value = 5; - }; - - template - struct CTOP> - { - constexpr static CTOPCode value = 5; - }; - - template<> - struct CTOP - { - constexpr static CTOPCode value = 3; - }; - template<> - struct CTOP - { - constexpr static CTOPCode value = 0; - }; - - template - struct PTOC - { - using Rec = PTOC; - constexpr static CTOPCode value = (PTOC::value << Rec::bits) | (Rec::value); - constexpr static int bits = 3 + Rec::bits; - }; - - template - struct PTOC - { - constexpr static CTOPCode value = CTOP::value; - constexpr static int bits = 3; - }; - - template - struct helper - { - constexpr static bool enable = false; - }; - template - struct helper - { - constexpr static bool enable = true; - constexpr static CTOPCode ctop = CTOP::value; - constexpr static CTOPCode ptoc = PTOC::value; - }; - - template - struct helper - { - constexpr static bool enable = true; - constexpr static CTOPCode ctop = CTOP::value; - constexpr static CTOPCode ptoc = PTOC::value | (PTOC::value << 3); - }; -} - -template::enable>> -constexpr CTOPCode ptoc(F * = nullptr) -{ - return ptoc_internal::helper::ptoc; -} -template::enable>> -constexpr CTOPCode ctop(F * = nullptr) -{ - return ptoc_internal::helper::ctop; -} - struct OpaqueUntyped68KProc; typedef OpaqueUntyped68KProc* ProcPtr; @@ -214,6 +125,14 @@ class Raw68KFunction ProcPtr guestFP; }; +template +class Raw68KTrap : public Raw68KFunction +{ +public: + void init(); +}; + + template class WrappedFunction {}; @@ -231,6 +150,8 @@ class WrappedFunction return guestFP; } + syn68k_addr_t invokeFrom68K(syn68k_addr_t, void **); + void init(); protected: UPP guestFP; @@ -243,21 +164,8 @@ template class PascalTrap : public WrappedFunction { public: - Ret operator()(Args... args) const - { - if((trapno & TOOLBIT) == 0) - return (*fptr)(args...); - else - { - // TODO - syn68k_addr_t new_addr = tooltraptable[trapno & (NTOOLENTRIES - 1)]; - - if(new_addr == toolstuff[trapno & (NTOOLENTRIES - 1)].orig) - return (*fptr)(args...); - else - return (Ret)CToPascalCall(SYN68K_TO_US(new_addr), ctop(fptr), args...); - } - } + Ret operator()(Args... args) const; + void init(); }; #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ @@ -283,7 +191,12 @@ class PascalTrap : public WrappedFunction, NAME) #define NOTRAP_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) #define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) -#define RAW_68K_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME) +#define RAW_68K_FUNCTION(NAME) \ + syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ + CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME) +#define RAW_68K_TRAP(NAME, TRAP) \ + syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ + CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME) class InitAction { From 2f7ac623ba34fb356d50187523e8e76593d0c3cc Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 15 Jan 2018 09:43:16 +0100 Subject: [PATCH 18/88] windRootless: do not pass pointer to native heap as parameter to RectRgn --- src/windRootless.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/windRootless.cpp b/src/windRootless.cpp index 9dc03d7c..7d6320df 100644 --- a/src/windRootless.cpp +++ b/src/windRootless.cpp @@ -24,8 +24,10 @@ void Executor::ROMlib_rootless_update(RgnHandle extra) } } RgnHandle tmp = NewRgn(); - for(Rect& r : rootlessMenus) - { + for(Rect r : rootlessMenus) + { // N.B: do not declare "r" as Rect&, + // as we aren't allowed to pass pointers into vectors(host heap) + // as parameters to toolbox functions RectRgn(tmp, &r); UnionRgn(rgn, tmp, rgn); } From 962fecdc589ddd87cea8284f99d84e631c97cc5d Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 15 Jan 2018 21:32:41 +0100 Subject: [PATCH 19/88] qPicStuf: use NewPtr to allocate memory that needs to be accessed from emulated code --- src/qPicstuff.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qPicstuff.cpp b/src/qPicstuff.cpp index dd12321c..267151e4 100644 --- a/src/qPicstuff.cpp +++ b/src/qPicstuff.cpp @@ -485,7 +485,7 @@ makestr(StringPtr sp) int len; len = sp[0] + 1; - retval = (StringPtr)malloc(len); + retval = (StringPtr)NewPtr(len); memcpy(retval, sp, len); return retval; } @@ -533,7 +533,7 @@ end_assoc(void) for(p = assoc_headp; p; p = nextp) { nextp = p->nextp; - free(p->str); + DisposPtr((Ptr)p->str); free(p); } assoc_headp = 0; From 4703d0136f1a76001cacd3646f36f585339143f4 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 15 Jan 2018 21:35:52 +0100 Subject: [PATCH 20/88] tooltraptable is now generated from new templates; short-circuiting is still disabled. --- src/emutraptables.cpp | 7 +----- src/executor.cpp | 4 ++-- src/functions.cpp | 34 ++++++++++++++++++++++++++--- src/include/rsys/functions.h | 6 +++--- util/transformrawtraps.pl | 42 ++++++++++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 14 deletions(-) create mode 100644 util/transformrawtraps.pl diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index e21fa96d..1cbb9652 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -1491,12 +1491,7 @@ void Executor::filltables(void) unimpl = callback_install((callback_handler_t)(void *)_Unimplemented, nullptr); - - for(i = 0; i < (int)NELEM(tooltraptable); ++i) - tooltraptable[i] = toolstuff[i].orig = (toolstuff[i].ptoc.wheretogo == (void *)_Unimplemented) ? unimpl - : callback_install((callback_handler_t)(toolstuff[i].ptoc.magic != (ULONGINT)-1 ? (void *)PascalToCCall - : toolstuff[i].ptoc.wheretogo), - &toolstuff[i].ptoc); + for(i = 0; i < (int)NELEM(ostraptable); ++i) { switch(i) diff --git a/src/executor.cpp b/src/executor.cpp index 309fb0dc..00f3b7df 100644 --- a/src/executor.cpp +++ b/src/executor.cpp @@ -319,7 +319,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) togoto = tooltraptable[trapno]; if(trapword & POPBIT) retval = POPADDR(); -#if 1 +#if defined(SHORTCIRCUIT_TRAPS) if(togoto == toolstuff[trapno].orig) { if(toolstuff[trapno].ptoc.magic == (ULONGINT)-1) @@ -348,7 +348,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) { trapno = trapword & OSMASK; togoto = ostraptable[trapno]; -#if 1 +#if defined(SHORTCIRCUIT_TRAPS) if(togoto == osstuff[trapno].orig) { saved1 = EM_D1; diff --git a/src/functions.cpp b/src/functions.cpp index 7878ce2f..a0b10963 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -31,27 +31,49 @@ using namespace Executor::functions; bool toolflags[0x400]; bool osflags[0x100]; +template +ProcPtr Raw68KFunction::guestFP; + template void Raw68KFunction::init() { guestFP = (ProcPtr)SYN68K_TO_US(callback_install((callback_handler_t)fptr, nullptr)); } +template +UPP WrappedFunction::guestFP; + template void WrappedFunction::init() +{ +// static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; +// guestFP = (UPP)SYN68K_TO_US(callback_install((callback_handler_t)&PascalToCCall, &ptocblock)); + guestFP = (UPP)SYN68K_TO_US(callback_install( + (callback_handler_t)WrappedFunction::invokeFrom68K, nullptr)); +} + +template +syn68k_addr_t +WrappedFunction::invokeFrom68K(syn68k_addr_t addr, void **) { static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; - guestFP = (UPP)SYN68K_TO_US(callback_install((callback_handler_t)&PascalToCCall, &ptocblock)); + return PascalToCCall(addr, &ptocblock); } + + + template void Raw68KTrap::init() { Raw68KFunction::init(); if(trapno & TOOLBIT) + { toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); + } else osflags[trapno & 0xFF] = true; } @@ -63,7 +85,10 @@ PascalTrap::init() { WrappedFunction::init(); if(trapno & TOOLBIT) + { toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); + } else osflags[trapno & 0xFF] = true; } @@ -97,8 +122,11 @@ void InitAction::execute() { for(auto f : initFunctions) (*f)(); + for(int i = 0; i < NTOOLENTRIES; i++) + if(tooltraptable[i] == 0) + tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); - for(int i = 0; i < 0x400; i++) + /*for(int i = 0; i < 0x400; i++) { bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; if(toolflags[i] != shouldhave) @@ -108,7 +136,7 @@ void InitAction::execute() else std::cout << "Surprising " << std::hex << (0xA800 | i) << std::endl; } - } + }*/ for(int i = 0; i < 0x100; i++) { bool shouldhave = osstuff[i].func != (void*)&_Unimplemented; diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 7e77befd..f94ab7b1 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -122,7 +122,7 @@ class Raw68KFunction void init(); protected: - ProcPtr guestFP; + static ProcPtr guestFP; }; template @@ -150,11 +150,11 @@ class WrappedFunction return guestFP; } - syn68k_addr_t invokeFrom68K(syn68k_addr_t, void **); + static syn68k_addr_t invokeFrom68K(syn68k_addr_t, void **); void init(); protected: - UPP guestFP; + static UPP guestFP; }; template diff --git a/util/transformrawtraps.pl b/util/transformrawtraps.pl new file mode 100644 index 00000000..b871e9fc --- /dev/null +++ b/util/transformrawtraps.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +# This script was used to +# 1. transform calls to RAW_68K_FUNCTION to RAW_68K_TRAP where appropriate + +use warnings; + +open(TRAPINFO, "trapinfo"); + +my(@l, @F, %traps, %selectors); + +while($l = ) { + @F = split(/[ \t\n]+/,$l); + #print(scalar(@F), " ", $F[1], " | ", $F[1], "\n"); + + $traps{$F[1]} = $F[0] if(@F >= 2); + if(@F > 2) { + for($i = 0; $i < @F; $i++) { + $selectors{$F[$i]} = $F[1]; + } + } +} + +$f = "include/rsys/emustubs.h"; +open(INCLUDE, $f); +open(OUT, ">temp.h"); +while($l = ) { + if($l =~ /^RAW_68K_FUNCTION\(([A-Za-z0-9_]+)\)/) { + $name = $1; + if(exists $traps{$name}) { + $trapnum = $traps{$name}; + print OUT "RAW_68K_TRAP($name, $trapnum);\n"; + } else { + print OUT $l; + } + } else { + print OUT $l; + } +} +close(OUT); +close(INCLUDE); +system "mv temp.h $f"; From 929ec8ac33a2d2af3876d17cb867c63333961383 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 15 Jan 2018 22:58:52 +0100 Subject: [PATCH 21/88] add missing trap numbers to emustubs.h --- src/include/rsys/emustubs.h | 170 ++++++++++++++++++------------------ util/transformrawtraps.pl | 8 ++ 2 files changed, 93 insertions(+), 85 deletions(-) diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 952300bb..bb5710b6 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -62,88 +62,88 @@ extern void C_pack8_unknown_selector(void); PASCAL_FUNCTION(pack8_unknown_selector); RAW_68K_TRAP(Unimplemented, 0xA89F); -RAW_68K_FUNCTION(SwapMMUMode); +RAW_68K_TRAP(SwapMMUMode, 0xA05D); RAW_68K_TRAP(Launch, 0xA9F2); RAW_68K_TRAP(Chain, 0xA9F3); -RAW_68K_FUNCTION(FInitQueue); -RAW_68K_FUNCTION(InitZone); -RAW_68K_FUNCTION(GetZone); -RAW_68K_FUNCTION(SetZone); -RAW_68K_FUNCTION(FreeMem); -RAW_68K_FUNCTION(MaxMem); -RAW_68K_FUNCTION(NewPtr); -RAW_68K_FUNCTION(DisposPtr); -RAW_68K_FUNCTION(SetPtrSize); -RAW_68K_FUNCTION(GetPtrSize); -RAW_68K_FUNCTION(NewHandle); -RAW_68K_FUNCTION(DisposHandle); -RAW_68K_FUNCTION(SetHandleSize); -RAW_68K_FUNCTION(GetHandleSize); -RAW_68K_FUNCTION(HandleZone); -RAW_68K_FUNCTION(ReallocHandle); -RAW_68K_FUNCTION(RecoverHandle); -RAW_68K_FUNCTION(HLock); -RAW_68K_FUNCTION(HUnlock); -RAW_68K_FUNCTION(EmptyHandle); -RAW_68K_FUNCTION(InitApplZone); -RAW_68K_FUNCTION(SetApplLimit); -RAW_68K_FUNCTION(BlockMove); -RAW_68K_FUNCTION(PostEvent); -RAW_68K_FUNCTION(OSEventAvail); -RAW_68K_FUNCTION(GetOSEvent); -RAW_68K_FUNCTION(FlushEvents); -RAW_68K_FUNCTION(VInstall); -RAW_68K_FUNCTION(VRemove); -RAW_68K_FUNCTION(SlotManager); -RAW_68K_FUNCTION(SlotVInstall); -RAW_68K_FUNCTION(SlotVRemove); -RAW_68K_FUNCTION(MoreMasters); -RAW_68K_FUNCTION(ReadDateTime); -RAW_68K_FUNCTION(SetDateTime); -RAW_68K_FUNCTION(Delay); -RAW_68K_FUNCTION(EqualString); -RAW_68K_FUNCTION(DrvrInstall); -RAW_68K_FUNCTION(DrvrRemove); -RAW_68K_FUNCTION(ResrvMem); -RAW_68K_FUNCTION(GetTrapAddress); -RAW_68K_FUNCTION(SetTrapAddress); -RAW_68K_FUNCTION(PtrZone); -RAW_68K_FUNCTION(HPurge); -RAW_68K_FUNCTION(HNoPurge); -RAW_68K_FUNCTION(SetGrowZone); -RAW_68K_FUNCTION(CompactMem); -RAW_68K_FUNCTION(PurgeMem); -RAW_68K_FUNCTION(RelString); -RAW_68K_FUNCTION(UprString); -RAW_68K_FUNCTION(StripAddress); -RAW_68K_FUNCTION(SetApplBase); -RAW_68K_FUNCTION(InsTime); -RAW_68K_FUNCTION(RmvTime); -RAW_68K_FUNCTION(PrimeTime); -RAW_68K_FUNCTION(NMInstall); -RAW_68K_FUNCTION(NMRemove); -RAW_68K_FUNCTION(HFSDispatch); -RAW_68K_FUNCTION(MaxBlock); -RAW_68K_FUNCTION(PurgeSpace); -RAW_68K_FUNCTION(MaxApplZone); -RAW_68K_FUNCTION(MoveHHi); -RAW_68K_FUNCTION(StackSpace); -RAW_68K_FUNCTION(NewEmptyHandle); -RAW_68K_FUNCTION(HSetRBit); -RAW_68K_FUNCTION(HClrRBit); -RAW_68K_FUNCTION(HGetState); -RAW_68K_FUNCTION(HSetState); -RAW_68K_FUNCTION(CountADBs); -RAW_68K_FUNCTION(GetIndADB); -RAW_68K_FUNCTION(GetADBInfo); -RAW_68K_FUNCTION(SetADBInfo); -RAW_68K_FUNCTION(ADBReInit); -RAW_68K_FUNCTION(ADBOp); -RAW_68K_FUNCTION(SysEnvirons); -RAW_68K_FUNCTION(HWPriv); +RAW_68K_TRAP(FInitQueue, 0xA016); +RAW_68K_TRAP(InitZone, 0xA019); +RAW_68K_TRAP(GetZone, 0xA11A); +RAW_68K_TRAP(SetZone, 0xA01B); +RAW_68K_TRAP(FreeMem, 0xA01C); +RAW_68K_TRAP(MaxMem, 0xA11D); +RAW_68K_TRAP(NewPtr, 0xA11E); +RAW_68K_TRAP(DisposPtr, 0xA01F); +RAW_68K_TRAP(SetPtrSize, 0xA020); +RAW_68K_TRAP(GetPtrSize, 0xA021); +RAW_68K_TRAP(NewHandle, 0xA122); +RAW_68K_TRAP(DisposHandle, 0xA023); +RAW_68K_TRAP(SetHandleSize, 0xA024); +RAW_68K_TRAP(GetHandleSize, 0xA025); +RAW_68K_TRAP(HandleZone, 0xA126); +RAW_68K_TRAP(ReallocHandle, 0xA027); +RAW_68K_TRAP(RecoverHandle, 0xA128); +RAW_68K_TRAP(HLock, 0xA029); +RAW_68K_TRAP(HUnlock, 0xA02A); +RAW_68K_TRAP(EmptyHandle, 0xA02B); +RAW_68K_TRAP(InitApplZone, 0xA02C); +RAW_68K_TRAP(SetApplLimit, 0xA02D); +RAW_68K_TRAP(BlockMove, 0xA02E); +RAW_68K_TRAP(PostEvent, 0xA02F); +RAW_68K_TRAP(OSEventAvail, 0xA030); +RAW_68K_TRAP(GetOSEvent, 0xA031); +RAW_68K_TRAP(FlushEvents, 0xA032); +RAW_68K_TRAP(VInstall, 0xA033); +RAW_68K_TRAP(VRemove, 0xA034); +RAW_68K_TRAP(SlotManager, 0xA06E); +RAW_68K_TRAP(SlotVInstall, 0xA06F); +RAW_68K_TRAP(SlotVRemove, 0xA070); +RAW_68K_TRAP(MoreMasters, 0xA036); +RAW_68K_TRAP(ReadDateTime, 0xA039); +RAW_68K_TRAP(SetDateTime, 0xA03A); +RAW_68K_TRAP(Delay, 0xA03B); +RAW_68K_TRAP(EqualString, 0xA03C); +RAW_68K_TRAP(DrvrInstall, 0xA03D); +RAW_68K_TRAP(DrvrRemove, 0xA03E); +RAW_68K_TRAP(ResrvMem, 0xA040); +RAW_68K_TRAP(GetTrapAddress, 0xA146); +RAW_68K_TRAP(SetTrapAddress, 0xA047); +RAW_68K_TRAP(PtrZone, 0xA148); +RAW_68K_TRAP(HPurge, 0xA049); +RAW_68K_TRAP(HNoPurge, 0xA04A); +RAW_68K_TRAP(SetGrowZone, 0xA04B); +RAW_68K_TRAP(CompactMem, 0xA04C); +RAW_68K_TRAP(PurgeMem, 0xA04D); +RAW_68K_TRAP(RelString, 0xA050); +RAW_68K_TRAP(UprString, 0xA054); +RAW_68K_TRAP(StripAddress, 0xA055); +RAW_68K_TRAP(SetApplBase, 0xA057); +RAW_68K_TRAP(InsTime, 0xA058); +RAW_68K_TRAP(RmvTime, 0xA059); +RAW_68K_TRAP(PrimeTime, 0xA05A); +RAW_68K_TRAP(NMInstall, 0xA05E); +RAW_68K_TRAP(NMRemove, 0xA05F); +RAW_68K_TRAP(HFSDispatch, 0xA260); +RAW_68K_TRAP(MaxBlock, 0xA061); +RAW_68K_TRAP(PurgeSpace, 0xA062); +RAW_68K_TRAP(MaxApplZone, 0xA063); +RAW_68K_TRAP(MoveHHi, 0xA064); +RAW_68K_TRAP(StackSpace, 0xA065); +RAW_68K_TRAP(NewEmptyHandle, 0xA166); +RAW_68K_TRAP(HSetRBit, 0xA067); +RAW_68K_TRAP(HClrRBit, 0xA068); +RAW_68K_TRAP(HGetState, 0xA069); +RAW_68K_TRAP(HSetState, 0xA06A); +RAW_68K_TRAP(CountADBs, 0xA077); +RAW_68K_TRAP(GetIndADB, 0xA078); +RAW_68K_TRAP(GetADBInfo, 0xA079); +RAW_68K_TRAP(SetADBInfo, 0xA07A); +RAW_68K_TRAP(ADBReInit, 0xA07B); +RAW_68K_TRAP(ADBOp, 0xA07C); +RAW_68K_TRAP(SysEnvirons, 0xA090); +RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); -RAW_68K_FUNCTION(Gestalt); -RAW_68K_FUNCTION(ResourceStub); +RAW_68K_TRAP(Gestalt, 0xA1AD); +RAW_68K_TRAP(ResourceStub, 0xA0FC); RAW_68K_TRAP(TEDispatch, 0xA83D); RAW_68K_TRAP(ScriptUtil, 0xA8B5); RAW_68K_TRAP(PrGlue, 0xA8FD); @@ -193,12 +193,12 @@ RAW_68K_TRAP(IMVI_LowerText, 0xA056); RAW_68K_TRAP(SoundDispatch, 0xA800); RAW_68K_TRAP(QuickTime, 0xAAAA); RAW_68K_TRAP(IconDispatch, 0xABC9); -RAW_68K_FUNCTION(GetDefaultStartup); -RAW_68K_FUNCTION(SetDefaultStartup); -RAW_68K_FUNCTION(GetVideoDefault); -RAW_68K_FUNCTION(SetVideoDefault); -RAW_68K_FUNCTION(GetOSDefault); -RAW_68K_FUNCTION(SetOSDefault); +RAW_68K_TRAP(GetDefaultStartup, 0xA07D); +RAW_68K_TRAP(SetDefaultStartup, 0xA07E); +RAW_68K_TRAP(GetVideoDefault, 0xA080); +RAW_68K_TRAP(SetVideoDefault, 0xA081); +RAW_68K_TRAP(GetOSDefault, 0xA084); +RAW_68K_TRAP(SetOSDefault, 0xA083); RAW_68K_TRAP(IMVI_ReadXPRam, 0xA051); RAW_68K_FUNCTION(bad_trap_unimplemented); RAW_68K_TRAP(IMVI_PPC, 0xA0DD); diff --git a/util/transformrawtraps.pl b/util/transformrawtraps.pl index b871e9fc..76d0ad01 100644 --- a/util/transformrawtraps.pl +++ b/util/transformrawtraps.pl @@ -27,8 +27,16 @@ while($l = ) { if($l =~ /^RAW_68K_FUNCTION\(([A-Za-z0-9_]+)\)/) { $name = $1; + $trapnum = 0; if(exists $traps{$name}) { $trapnum = $traps{$name}; + } elsif(exists $traps{"_$name"}) { + $trapnum = $traps{"_$name"}; + } elsif(exists $traps{"R_$name"}) { + $trapnum = $traps{"R_$name"}; + } + + if($trapnum) { print OUT "RAW_68K_TRAP($name, $trapnum);\n"; } else { print OUT $l; From 0c33486e1f160464bb991dd5e336db52e992180c Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Tue, 16 Jan 2018 18:56:44 +0100 Subject: [PATCH 22/88] Start logging parameters to standard output --- src/functions.cpp | 174 ++++++++++++++++++++++++++++++++++- src/include/rsys/common.h | 2 +- src/include/rsys/functions.h | 80 +++------------- src/include/rsys/mactype.h | 61 +++++++++++- 4 files changed, 247 insertions(+), 70 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index a0b10963..777686dd 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -5,6 +5,12 @@ namespace std::vector initFunctions; } +template +struct NamedThing +{ + static const char* name; +}; + #define FUNCTION_WRAPPER_IMPLEMENTATION #include "rsys/everything.h" @@ -24,6 +30,7 @@ namespace #include "rsys/ctop_ptoc.h" #include +#include using namespace Executor; using namespace Executor::functions; @@ -31,6 +38,165 @@ using namespace Executor::functions; bool toolflags[0x400]; bool osflags[0x100]; +template +struct LoggedFunction; + +struct Nest +{ + Nest() { ++level; } + ~Nest() { --level; } + static thread_local int level; +}; +thread_local int Nest::level = 0; + +void logEscapedChar(unsigned char c) +{ + if(c == '\'' || c == '\"' || c == '\\') + std::cout << '\\' << c; + else if(std::isprint(c)) + std::cout << c; + else + std::cout << "\\0" << std::oct << (unsigned)c << std::dec; +} + +template +void logValue(T arg) +{ + std::cout << "?"; +} + +void logValue(char x) +{ + std::cout << (int)x; + std::cout << " = '"; + logEscapedChar(x); + std::cout << '\''; +} +void logValue(unsigned char x) +{ + std::cout << (int)x; + if(std::isprint(x)) + std::cout << " = '" << x << '\''; +} +void logValue(signed char x) +{ + std::cout << (int)x; + if(std::isprint(x)) + std::cout << " = '" << x << '\''; +} +void logValue(int16_t x) { std::cout << x; } +void logValue(uint16_t x) { std::cout << x; } +void logValue(int32_t x) +{ + std::cout << x << " = '"; + logEscapedChar((x >> 24) & 0xFF); + logEscapedChar((x >> 16) & 0xFF); + logEscapedChar((x >> 8) & 0xFF); + logEscapedChar(x & 0xFF); + std::cout << "'"; +} +void logValue(uint32_t x) +{ + std::cout << x << " = '"; + logEscapedChar((x >> 24) & 0xFF); + logEscapedChar((x >> 16) & 0xFF); + logEscapedChar((x >> 8) & 0xFF); + logEscapedChar(x & 0xFF); + std::cout << "'"; +} +void logValue(unsigned char* p) +{ + std::cout << "0x" << std::hex << US_TO_SYN68K(p) << std::dec; + if(p && p != (unsigned char*)-1) + { + std::cout << " = \"\\p"; + for(int i = 1; i <= p[0]; i++) + logEscapedChar(p[i]); + std::cout << '"'; + } +} + +template +void logList(Arg a) +{ + logValue(a); +} +void logList() +{ +} +template +void logList(Arg1 a, Arg2 b, Args... args) +{ + logValue(a); + std::cout << ", "; + logList(b,args...); +} + + +template +void logTrapCall(const char* trapname, Args... args) +{ + if(Nest::level > 2) + return; + for(int i = 1; i < Nest::level; i++) + std::cout << " "; + std::cout << trapname << "("; + logList(args...); + std::cout << ")\n"; +} + +template +void logTrapValReturn(const char* trapname, Ret ret, Args... args) +{ + if(Nest::level > 2) + return; + for(int i = 1; i < Nest::level; i++) + std::cout << " "; + std::cout << "returning: " << trapname << "("; + logList(args...); + std::cout << ") => "; + logValue(ret); + std::cout << std::endl; +} +template +void logTrapVoidReturn(const char* trapname, Args... args) +{ + if(Nest::level > 2) + return; + for(int i = 1; i < Nest::level; i++) + std::cout << " "; + std::cout << "returning: " << trapname << "("; + logList(args...); + std::cout << ")\n"; +} + + +template +struct LoggedFunction +{ + static void call(Args... args) + { + const char *fname = NamedThing::name; + logTrapCall(fname, args...); + fptr(args...); + logTrapVoidReturn(fname, args...); + } +}; + +template +struct LoggedFunction +{ + static Ret call(Args... args) + { + const char *fname = NamedThing::name; + logTrapCall(fname, args...); + Ret retval = fptr(args...); + logTrapValReturn(fname, retval, args...); + return retval; + } +}; + + template ProcPtr Raw68KFunction::guestFP; @@ -57,7 +223,10 @@ template syn68k_addr_t WrappedFunction::invokeFrom68K(syn68k_addr_t addr, void **) { - static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; + Nest nest; + Ret (*fptr2)(Args...); + fptr2 = LoggedFunction::call; + static ptocblock_t ptocblock { (void*)fptr2, ptoc(fptr) }; return PascalToCCall(addr, &ptocblock); } @@ -75,7 +244,10 @@ Raw68KTrap::init() tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); } else + { osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + } } diff --git a/src/include/rsys/common.h b/src/include/rsys/common.h index d880ad22..d92f4efc 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -16,12 +16,12 @@ #include "rsys/macros.h" #include "rsys/types.h" +#include "rsys/functions.h" #include "rsys/mactype.h" #include "rsys/byteswap.h" #include -#include "rsys/functions.h" #include "ExMacTypes.h" #include "rsys/slash.h" #include "rsys/error.h" diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index f94ab7b1..ef942b9a 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -53,60 +53,6 @@ struct UPP } }; -template -struct GuestWrapperBase> -{ -private: - HiddenValue p; - -public: - using WrappedType = UPP; - using RawGuestType = uint32_t; - - WrappedType get() const - { - uint32_t rawp = this->raw(); - if(rawp) - return WrappedType(SYN68K_TO_US((uint32_t)swap32(rawp))); - else - return nullptr; - } - - void set(WrappedType ptr) - { - if(ptr) - this->raw(swap32(US_TO_SYN68K(ptr.ptr))); - else - this->raw(0); - } - - RawGuestType raw() const - { - return p.raw(); - } - - void raw(RawGuestType x) - { - p.raw(x); - } - - Ret operator()(Args... args) - { - return (this->get())(args...); - } -}; - -template -GUEST> RM(UPP p) -{ - return GUEST>::fromHost(p); -} - -template -UPP MR(GuestWrapper> p) -{ - return p.get(); -} namespace functions { @@ -155,6 +101,7 @@ class WrappedFunction void init(); protected: static UPP guestFP; + static const char *name; }; template @@ -170,33 +117,36 @@ class PascalTrap : public WrappedFunction const char * NamedThing::name = DISPLAYNAME #endif #define COMMA , -#define PASCAL_TRAP(NAME, TRAP) CREATE_FUNCTION_WRAPPER(PascalTrap, NAME) -#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) CREATE_FUNCTION_WRAPPER(PascalTrap, NAME) -#define NOTRAP_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) -#define PASCAL_FUNCTION(NAME) CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME) +#define PASCAL_TRAP(NAME, TRAP) \ + CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) +#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) \ + CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) +#define NOTRAP_FUNCTION(NAME) \ + CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) +#define PASCAL_FUNCTION(NAME) \ + CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) #define RAW_68K_FUNCTION(NAME) \ syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ - CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME) + CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME, &_##NAME, #NAME) #define RAW_68K_TRAP(NAME, TRAP) \ syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ - CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME) + CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME, &_##NAME, #NAME) class InitAction { diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index 580e2c30..0cc644d8 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -13,6 +13,8 @@ #include #include /* for ROMlib_offset */ +#include "rsys/functions.h" + #ifndef __cplusplus #error C++ required #endif @@ -476,9 +478,62 @@ GUEST guest_cast(GuestWrapper p) return result; } -#define PACKED_MEMBER(typ, name) typ name -// Roadmap: -// 1. remove + +template +struct GuestWrapperBase> +{ +private: + HiddenValue p; + +public: + using WrappedType = UPP; + using RawGuestType = uint32_t; + + WrappedType get() const + { + uint32_t rawp = this->raw(); + if(rawp) + return WrappedType(SYN68K_TO_US((uint32_t)swap32(rawp))); + else + return nullptr; + } + + void set(WrappedType ptr) + { + if(ptr) + this->raw(swap32(US_TO_SYN68K(ptr.ptr))); + else + this->raw(0); + } + + RawGuestType raw() const + { + return p.raw(); + } + + void raw(RawGuestType x) + { + p.raw(x); + } + + Ret operator()(Args... args) + { + return (this->get())(args...); + } +}; + +template +GUEST> RM(UPP p) +{ + return GUEST>::fromHost(p); +} + +template +UPP MR(GuestWrapper> p) +{ + return p.get(); +} + } #endif /* _MACTYPE_H_ */ From d372f5ec4cf617952faaaff4f4d751dc547946e3 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 19 Jan 2018 22:49:09 +0100 Subject: [PATCH 23/88] logging progress --- src/emustubs.cpp | 12 +- src/emutrap.cpp | 16 --- src/functions.cpp | 258 ++++++++++++++++++++++++++++------- src/include/rsys/functions.h | 56 ++++++-- src/include/rsys/mactype.h | 71 +++++++--- src/include/rsys/trapglue.h | 1 + src/include/rsys/types.h | 9 ++ src/launch.cpp | 1 + 8 files changed, 318 insertions(+), 106 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 93e63e83..b157136c 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -66,7 +66,7 @@ namespace Executor #define RTS() return POPADDR() #define STUB(x) syn68k_addr_t _##x(syn68k_addr_t ignoreme, \ - void **ignoreme2) + void *ignoreme2) #define ADJUST_CC_BASED_ON_D0() \ do \ @@ -263,7 +263,7 @@ STUB(SetADBInfo) static void do_selector_error(uint32_t selector, const char *trap_name, - syn68k_addr_t (*trap_fp)(syn68k_addr_t, void **)) + syn68k_addr_t (*trap_fp)(syn68k_addr_t, void *)) { bool found_trapno_p = false; int trapno = /* dummy */ -1, i; @@ -316,7 +316,7 @@ typedef struct #define do_selector_block(sbp, sel, trap) \ ({ _do_selector_block(sbp, sel, #trap, _##trap); }) -typedef syn68k_addr_t (*trap_stuff)(syn68k_addr_t, void **); +typedef syn68k_addr_t (*trap_stuff)(syn68k_addr_t, void *); static syn68k_addr_t _do_selector_block(const selectorblock_t *sbp, unsigned long sel, @@ -364,7 +364,7 @@ _do_selector_table(uint32_t selector, selector_table_entry_t *table, int table_size, syn68k_addr_t (*fail_fn)(void), const char *trap_name, - syn68k_addr_t (*trap_fp)(syn68k_addr_t, void **)) + syn68k_addr_t (*trap_fp)(syn68k_addr_t, void *)) { int i; @@ -2090,8 +2090,8 @@ STUB(FInitQueue) STUB(HFSRoutines) { fsprocp_t vp; - - vp = (fsprocp_t)((EM_D1 & HFSBIT) ? ignoreme2[1] : ignoreme2[0]); + void **hfsroutine = (void **)ignoreme2; + vp = (fsprocp_t)((EM_D1 & HFSBIT) ? hfsroutine[1] : hfsroutine[0]); EM_D0 = (*vp)(SYN68K_TO_US_CHECK0(EM_A0), !!(EM_D1 & ASYNCBIT)); RTS(); } diff --git a/src/emutrap.cpp b/src/emutrap.cpp index 31242c2b..477a63d4 100644 --- a/src/emutrap.cpp +++ b/src/emutrap.cpp @@ -42,22 +42,6 @@ using namespace Executor; * */ -#define SYN68K_TO_US_CHECK0_CHECKNEG1(addr) \ - ({ \ - syn68k_addr_t __t; \ - \ - __t = addr; \ - (__t == (syn68k_addr_t)-1) ? (uint16_t *)-1 : SYN68K_TO_US_CHECK0(__t); \ - }) - -#define US_TO_SYN68K_CHECK0_CHECKNEG1(addr) \ - ({ \ - void *__t; \ - \ - __t = addr; \ - (__t == (void *)-1) ? (syn68k_addr_t)-1 : US_TO_SYN68K_CHECK0(__t); \ - }) - syn68k_addr_t Executor::PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop) { diff --git a/src/functions.cpp b/src/functions.cpp index 777686dd..1f265330 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -31,6 +31,7 @@ struct NamedThing #include #include +#include using namespace Executor; using namespace Executor::functions; @@ -41,13 +42,21 @@ bool osflags[0x100]; template struct LoggedFunction; -struct Nest +static thread_local int nestingLevel = 0; + +void functions::resetNestingLevel() { - Nest() { ++level; } - ~Nest() { --level; } - static thread_local int level; -}; -thread_local int Nest::level = 0; + nestingLevel = 0; +} +static void indent() +{ + for(int i = 0; i < nestingLevel; i++) + std::cout << " "; +} +static bool loggingActive() +{ + return nestingLevel == 0; +} void logEscapedChar(unsigned char c) { @@ -59,11 +68,70 @@ void logEscapedChar(unsigned char c) std::cout << "\\0" << std::oct << (unsigned)c << std::dec; } +bool canConvertBack(const void* p) +{ + if(!p || p == (const void*) -1) + return true; +#if SIZEOF_VOID_P == 4 + bool valid = true; +#else + bool valid = false; + for(int i = 0; i < 4; i++) + { + if((uintptr_t)p >= ROMlib_offsets[i] && + (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) + valid = true; + } +#endif + return valid; +} + +bool validAddress(const void* p) +{ + if(!p) + return false; + if( (uintptr_t)p & 1 ) + return false; +#if SIZEOF_VOID_P == 4 + bool valid = true; +#else + bool valid = false; + for(int i = 0; i < 4; i++) + { + if((uintptr_t)p >= ROMlib_offsets[i] && + (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) + valid = true; + } +#endif + if(!valid) + return false; + + return true; +} + +bool validAddress(syn68k_addr_t p) +{ + if(p == 0 || (p & 1)) + return false; + return validAddress(SYN68K_TO_US(p)); +} + +template +bool validAddress(GUEST p) +{ + return validAddress(p.raw_host_order()); +} + template -void logValue(T arg) +void logValue(const T& arg) { std::cout << "?"; } +template +void logValue(const GuestWrapper& p) +{ + logValue(p.get()); +} void logValue(char x) { @@ -106,8 +174,8 @@ void logValue(uint32_t x) } void logValue(unsigned char* p) { - std::cout << "0x" << std::hex << US_TO_SYN68K(p) << std::dec; - if(p && p != (unsigned char*)-1) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + if(validAddress(p) && validAddress(p+256)) { std::cout << " = \"\\p"; for(int i = 1; i <= p[0]; i++) @@ -115,6 +183,51 @@ void logValue(unsigned char* p) std::cout << '"'; } } +void logValue(const void* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} +void logValue(void* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} +void logValue(ProcPtr p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} + +template +void logValue(T* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; + if(validAddress(p)) + { + std::cout << " => "; + logValue(*p); + } +} +template +void logValue(GuestWrapper p) +{ + std::cout << "0x" << std::hex << p.raw() << std::dec; + if(validAddress(p.raw_host_order())) + { + std::cout << " => "; + logValue(*(p.get())); + } +} template void logList(Arg a) @@ -136,38 +249,36 @@ void logList(Arg1 a, Arg2 b, Args... args) template void logTrapCall(const char* trapname, Args... args) { - if(Nest::level > 2) + if(!loggingActive()) return; - for(int i = 1; i < Nest::level; i++) - std::cout << " "; + printf("Hello, world.\n"); + indent(); std::cout << trapname << "("; logList(args...); - std::cout << ")\n"; + std::cout << ")\n" << std::flush; } template void logTrapValReturn(const char* trapname, Ret ret, Args... args) { - if(Nest::level > 2) + if(!loggingActive()) return; - for(int i = 1; i < Nest::level; i++) - std::cout << " "; + indent(); std::cout << "returning: " << trapname << "("; logList(args...); std::cout << ") => "; logValue(ret); - std::cout << std::endl; + std::cout << std::endl << std::flush; } template void logTrapVoidReturn(const char* trapname, Args... args) { - if(Nest::level > 2) + if(!loggingActive()) return; - for(int i = 1; i < Nest::level; i++) - std::cout << " "; + indent(); std::cout << "returning: " << trapname << "("; logList(args...); - std::cout << ")\n"; + std::cout << ")\n" << std::flush; } @@ -178,7 +289,9 @@ struct LoggedFunction { const char *fname = NamedThing::name; logTrapCall(fname, args...); + nestingLevel++; fptr(args...); + nestingLevel--; logTrapVoidReturn(fname, args...); } }; @@ -190,50 +303,99 @@ struct LoggedFunction { const char *fname = NamedThing::name; logTrapCall(fname, args...); + nestingLevel++; Ret retval = fptr(args...); + nestingLevel--; logTrapValReturn(fname, retval, args...); return retval; } }; +void dumpRegsAndStack() +{ + std::cout << std::hex << std::showbase << std::setfill('0'); + std::cout << "D0=" << std::setw(8) << EM_A0 << " "; + std::cout << "D1=" << std::setw(8) << EM_A0 << " "; + std::cout << "A0=" << std::setw(8) << EM_A0 << " "; + std::cout << "A1=" << std::setw(8) << EM_A0 << " "; + std::cout << std::noshowbase; + std::cout << "Stack: "; + uint8_t *p = (uint8_t*)SYN68K_TO_US(EM_A7); + for(int i = 0; i < 12; i++) + std::cout << std::setfill('0') << std::setw(2) << (unsigned)p[i] << " "; + std::cout << std::dec; +} + +template +syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) +{ + const char *fname = NamedThing::name; + if(loggingActive()) + { + indent(); + std::cout << fname << " "; + dumpRegsAndStack(); + std::cout << std::endl; + } + nestingLevel++; + syn68k_addr_t retaddr = (*fptr)(addr, param); + nestingLevel--; + if(loggingActive()) + { + indent(); + std::cout << "returning: " << fname << " "; + dumpRegsAndStack(); + std::cout << std::endl << std::flush; + } + return retaddr; +} -template +template ProcPtr Raw68KFunction::guestFP; -template +template void Raw68KFunction::init() { - guestFP = (ProcPtr)SYN68K_TO_US(callback_install((callback_handler_t)fptr, nullptr)); + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); } -template -UPP WrappedFunction::guestFP; +template +UPP WrappedFunction::guestFP; -template -void -WrappedFunction::init() -{ -// static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; -// guestFP = (UPP)SYN68K_TO_US(callback_install((callback_handler_t)&PascalToCCall, &ptocblock)); - guestFP = (UPP)SYN68K_TO_US(callback_install( - (callback_handler_t)WrappedFunction::invokeFrom68K, nullptr)); -} + +template +struct Invoker; template -syn68k_addr_t -WrappedFunction::invokeFrom68K(syn68k_addr_t addr, void **) +struct Invoker { - Nest nest; - Ret (*fptr2)(Args...); - fptr2 = LoggedFunction::call; - static ptocblock_t ptocblock { (void*)fptr2, ptoc(fptr) }; - return PascalToCCall(addr, &ptocblock); -} + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + { + static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; + return PascalToCCall(addr, &ptocblock); + } +}; +template +struct Invoker> +{ + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + { + return 0; + } +}; +template +void +WrappedFunction::init() +{ + guestFP = (UPP)SYN68K_TO_US(callback_install( + Invoker::call, CallConv> + ::invokeFrom68K, nullptr)); +} -template +template void Raw68KTrap::init() { @@ -251,9 +413,9 @@ Raw68KTrap::init() } -template +template void -PascalTrap::init() +PascalTrap::init() { WrappedFunction::init(); if(trapno & TOOLBIT) @@ -266,9 +428,9 @@ PascalTrap::init() } -template +template Ret -PascalTrap::operator()(Args... args) const +PascalTrap::operator()(Args... args) const { if((trapno & TOOLBIT) == 0) return (*fptr)(args...); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index ef942b9a..9dda823a 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -6,12 +6,39 @@ #include #include #include "rsys/trapglue.h" -#include "rsys/mactype.h" - #include "rsys/ctop_ptoc.h" +#include + namespace Executor { +namespace callconv +{ +class Pascal { }; + +template +class Register { }; + +template struct A +{ + static uint32_t get() { return EM_AREG(n); } + static void set(uint32_t x) { EM_AREG(n) = x; } +}; + +template struct D +{ + static uint32_t get() { return EM_DREG(n); } + static void set(uint32_t x) { EM_DREG(n) = x; } +}; + + +template struct TrapBit +{ + static uint32_t get() { return !!(EM_D1 & mask); } +}; +} + + template struct UPP; @@ -57,7 +84,7 @@ struct UPP namespace functions { -template +template class Raw68KFunction { public: @@ -71,7 +98,7 @@ class Raw68KFunction static ProcPtr guestFP; }; -template +template class Raw68KTrap : public Raw68KFunction { public: @@ -79,11 +106,11 @@ class Raw68KTrap : public Raw68KFunction }; -template +template class WrappedFunction {}; -template -class WrappedFunction +template +class WrappedFunction { public: Ret operator()(Args... args) const @@ -96,19 +123,17 @@ class WrappedFunction return guestFP; } - static syn68k_addr_t invokeFrom68K(syn68k_addr_t, void **); - void init(); protected: static UPP guestFP; static const char *name; }; -template +template class PascalTrap {}; -template -class PascalTrap : public WrappedFunction +template +class PascalTrap : public WrappedFunction { public: Ret operator()(Args... args) const; @@ -142,10 +167,10 @@ class PascalTrap : public WrappedFunction, NAME, &C_##NAME, #NAME) #define RAW_68K_FUNCTION(NAME) \ - syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ + syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME, &_##NAME, #NAME) #define RAW_68K_TRAP(NAME, TRAP) \ - syn68k_addr_t _##NAME(syn68k_addr_t, void **); \ + syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME, &_##NAME, #NAME) class InitAction @@ -155,6 +180,9 @@ class InitAction static void execute(); }; + +void resetNestingLevel(); + } } diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index 0cc644d8..b662ea45 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -80,6 +80,22 @@ inline uint32_t SwapTyped(uint32_t x) { return swap32(x); } inline int32_t SwapTyped(int32_t x) { return swap32((uint32_t)x); } #endif +inline uint16_t *SYN68K_TO_US_CHECK0_CHECKNEG1(syn68k_addr_t addr) +{ + if(addr == (syn68k_addr_t)-1) + return (uint16_t*) -1; + else + return SYN68K_TO_US_CHECK0(addr); +} + +inline syn68k_addr_t US_TO_SYN68K_CHECK0_CHECKNEG1(const void* addr) +{ + if(addr == (void*)-1) + return (syn68k_addr_t) -1; + else + return US_TO_SYN68K_CHECK0(addr); +} + // USE_PACKED_HIDDENVALUE - control which one of two versions // of template struct/union HiddenValue to use. @@ -153,6 +169,16 @@ struct GuestWrapperBase hidden.raw(x); } + uint32_t raw_host_order() const + { + return get(); + } + void raw_host_order(uint32_t x) + { + return set(x); + } + + void raw_and(RawGuestType x) { hidden.raw(hidden.raw() & x); @@ -189,18 +215,12 @@ struct GuestWrapperBase WrappedType get() const { uint32_t rawp = this->raw(); - if(rawp) - return (TT *)(SYN68K_TO_US((uint32_t)swap32(rawp))); - else - return nullptr; + return (TT *)(SYN68K_TO_US_CHECK0_CHECKNEG1((uint32_t)swap32(rawp))); } void set(TT *ptr) { - if(ptr) - this->raw(swap32(US_TO_SYN68K(ptr))); - else - this->raw(0); + this->raw(swap32(US_TO_SYN68K_CHECK0_CHECKNEG1(ptr))); } RawGuestType raw() const @@ -212,6 +232,16 @@ struct GuestWrapperBase { p.raw(x); } + + uint32_t raw_host_order() const + { + return swap32(this->raw()); + } + void raw_host_order(uint32_t x) + { + this->raw(swap32(x)); + } + }; template @@ -336,12 +366,6 @@ bool operator!=(GuestWrapper a, std::nullptr_t) { \ } -struct Point -{ - INTEGER v; - INTEGER h; -}; - template<> struct GuestWrapper { @@ -492,18 +516,12 @@ struct GuestWrapperBase> WrappedType get() const { uint32_t rawp = this->raw(); - if(rawp) - return WrappedType(SYN68K_TO_US((uint32_t)swap32(rawp))); - else - return nullptr; + return WrappedType(SYN68K_TO_US_CHECK0_CHECKNEG1((uint32_t)swap32(rawp))); } void set(WrappedType ptr) { - if(ptr) - this->raw(swap32(US_TO_SYN68K(ptr.ptr))); - else - this->raw(0); + this->raw(swap32(US_TO_SYN68K_CHECK0_CHECKNEG1(ptr.ptr))); } RawGuestType raw() const @@ -516,6 +534,15 @@ struct GuestWrapperBase> p.raw(x); } + uint32_t raw_host_order() const + { + return swap32(this->raw()); + } + void raw_host_order(uint32_t x) + { + this->raw(swap32(x)); + } + Ret operator()(Args... args) { return (this->get())(args...); diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index e7fce253..dc32baac 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -1,5 +1,6 @@ #if !defined(__TRAPGLUE__) #define __TRAPGLUE__ +#include namespace Executor { diff --git a/src/include/rsys/types.h b/src/include/rsys/types.h index 87faa8b0..21e3e9c9 100644 --- a/src/include/rsys/types.h +++ b/src/include/rsys/types.h @@ -40,4 +40,13 @@ typedef uint64_t uint64_t; #define UINT32_MAX ((uint32_t)0xFFFFFFFF) #endif +namespace Executor +{ +struct Point +{ + int16_t v; + int16_t h; +}; +} + #endif /* !_RSYS_TYPES_H_ */ diff --git a/src/launch.cpp b/src/launch.cpp index ee81c44c..e89d1b0d 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -1294,6 +1294,7 @@ Executor::NewLaunch(StringPtr fName_arg, INTEGER vRefNum_arg, LaunchParamBlockRe } else longjmp(buf, 1); + functions::resetNestingLevel(); retval = noErr; reset_adb_vector(); From 77f955554cb201d318cf2ac4dcff21cde37217c6 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 19 Jan 2018 22:50:08 +0100 Subject: [PATCH 24/88] register calling convention draft --- src/functions.cpp | 109 +++++++++++++++++++++++++++++++---- src/include/rsys/functions.h | 25 +++----- 2 files changed, 106 insertions(+), 28 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 1f265330..3751e76f 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -42,7 +42,7 @@ bool osflags[0x100]; template struct LoggedFunction; -static thread_local int nestingLevel = 0; +static int nestingLevel = 0; void functions::resetNestingLevel() { @@ -251,7 +251,7 @@ void logTrapCall(const char* trapname, Args... args) { if(!loggingActive()) return; - printf("Hello, world.\n"); + std::cout.clear(); indent(); std::cout << trapname << "("; logList(args...); @@ -313,12 +313,12 @@ struct LoggedFunction void dumpRegsAndStack() { - std::cout << std::hex << std::showbase << std::setfill('0'); - std::cout << "D0=" << std::setw(8) << EM_A0 << " "; - std::cout << "D1=" << std::setw(8) << EM_A0 << " "; + std::cout << std::hex << /*std::showbase <<*/ std::setfill('0'); + std::cout << "D0=" << std::setw(8) << EM_D0 << " "; + std::cout << "D1=" << std::setw(8) << EM_D1 << " "; std::cout << "A0=" << std::setw(8) << EM_A0 << " "; - std::cout << "A1=" << std::setw(8) << EM_A0 << " "; - std::cout << std::noshowbase; + std::cout << "A1=" << std::setw(8) << EM_A1 << " "; + //std::cout << std::noshowbase; std::cout << "Stack: "; uint8_t *p = (uint8_t*)SYN68K_TO_US(EM_A7); for(int i = 0; i < 12; i++) @@ -332,6 +332,7 @@ syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) const char *fname = NamedThing::name; if(loggingActive()) { + std::cout.clear(); indent(); std::cout << fname << " "; dumpRegsAndStack(); @@ -359,6 +360,38 @@ void Raw68KFunction::init() guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); } +namespace Executor::callconv +{ +template struct A +{ + template + operator T() { return EM_AREG(n); } + template + operator T*() { return ptr_from_longint(EM_AREG(n)); } + static void set(uint32_t x) { EM_AREG(n) = x; } + static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } + + void afterwards() {} +}; + +template struct D +{ + template + operator T() { return EM_DREG(n); } + static void set(uint32_t x) { EM_DREG(n) = x; } + + void afterwards() {} +}; + + +template struct TrapBit +{ + operator bool() { return !!(EM_D1 & mask); } + + void afterwards() {} +}; +} + template UPP WrappedFunction::guestFP; @@ -375,13 +408,64 @@ struct Invoker return PascalToCCall(addr, &ptocblock); } }; +template struct List; + +template +struct InvokerRec; + +template +struct InvokerRec, List<>, List<>> +{ + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + return fptr(args...); + } +}; -template +template +struct InvokerRec, List, List> +{ + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + CC newarg; + Ret retval = InvokerRec,List,List> + ::invokeFrom68K(addr, refcon, args..., newarg); + newarg.afterwards(); + return retval; + } +}; + +template struct Invoker> { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); + RetConv::set(retval); // ### double conversion? + return retaddr; + } +}; +template +struct Invoker> +{ + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + InvokerRec, List, List>::invokeFrom68K(addr, refcon); + return retaddr; + } +}; + + +template +struct Invoker> +{ + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) { - return 0; + Extra1 state; + syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); + return state.afterwards(retval); } }; @@ -417,14 +501,17 @@ template::init() { - WrappedFunction::init(); + WrappedFunction::init(); if(trapno & TOOLBIT) { toolflags[trapno & 0x3FF] = true; tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); } else + { osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + } } diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 9dda823a..875ec2ff 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -16,26 +16,17 @@ namespace callconv { class Pascal { }; -template +template class Register { }; +template struct A; +template struct D; +template struct TrapBit; +template struct Out; +template struct InOut; -template struct A -{ - static uint32_t get() { return EM_AREG(n); } - static void set(uint32_t x) { EM_AREG(n) = x; } -}; - -template struct D -{ - static uint32_t get() { return EM_DREG(n); } - static void set(uint32_t x) { EM_DREG(n) = x; } -}; - +template struct ReturnMemErr; +struct CCFromD0; -template struct TrapBit -{ - static uint32_t get() { return !!(EM_D1 & mask); } -}; } From 3d64a0d89ad2b00ccef13ab84fe6662a7a91499f Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 19 Jan 2018 22:52:13 +0100 Subject: [PATCH 25/88] reorder source files for compilation parallelism --- src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d0acfd9a..1c41d4a1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -174,7 +174,7 @@ set(num_sources bindec.cpp float4.cpp float5.cpp float7.cpp floatnext.cpp toolma mathlib.cpp) source_group(Numerics FILES ${num_sources}) -set(misc_sources desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp +set(misc_sources functions.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp gestalt.cpp globals.cpp iu.cpp launch.cpp main.cpp mman.cpp mmansubr.cpp notify.cpp hle.cpp osevent.cpp osutil.cpp pack.cpp scrap.cpp script.cpp segment.cpp serial.cpp slash.cpp stdfile.cpp romlib_stubs.cpp syserr.cpp toolevent.cpp toolutil.cpp time.cpp @@ -186,7 +186,7 @@ set(misc_sources desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp icon.cpp redrawscreen.cpp ini.cpp checkpoint.cpp qt.cpp paramline.c fauxdbm.cpp commtool.cpp cfm.cpp pef_hash.cpp interfacelib.cpp mixed_mode.cpp suffix_maps.cpp appearance.cpp lockrange.cpp - emutrap.cpp emutraptables.cpp emustubs.cpp functions.cpp unix_like.cpp parse.ypp check_structs.cpp + emutrap.cpp emutraptables.cpp emustubs.cpp unix_like.cpp parse.ypp check_structs.cpp executor.cpp crc.cpp) set(include_sources hintemplate.h From 871e7ceb68f10be4124d3002ea208222d51b6d70 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 19 Jan 2018 22:52:36 +0100 Subject: [PATCH 26/88] DragTheRegion: only do rootless window stuff if thePort == WMgrPort --- src/windMisc.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/windMisc.cpp b/src/windMisc.cpp index 960e6845..fced2fa3 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -122,6 +122,8 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, LONGINT l; int drawn; + bool onDesktop = (thePortX == LM(WMgrPort)) || (thePortX == guest_cast(LM(WMgrCPort))); + rh = NewRgn(); CopyRgn(rgn, rh); InsetRgn(rh, 1, 1); @@ -134,7 +136,8 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, if((drawn = PtInRect(p, slop))) { PaintRgn(rgn); /* was Frame */ - ROMlib_rootless_update(rgn); + if(onDesktop) + ROMlib_rootless_update(rgn); } while(!GetOSEvent(mUpMask, &ev)) { @@ -158,7 +161,8 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, drawn = true; OffsetRgn(rgn, ep.h - p.h, ep.v - p.v); PaintRgn(rgn); - ROMlib_rootless_update(rgn); + if(onDesktop) + ROMlib_rootless_update(rgn); p.h = ep.h; p.v = ep.v; } @@ -168,7 +172,8 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, if(drawn) { PaintRgn(rgn); - ROMlib_rootless_update(nullptr); + if(onDesktop) + ROMlib_rootless_update(nullptr); } drawn = false; } @@ -201,7 +206,8 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, if(drawn) { PaintRgn(rgn); - ROMlib_rootless_update(nullptr); + if(onDesktop) + ROMlib_rootless_update(nullptr); } SetPenState(&ps); DisposeRgn(rh); From 34d5acd44361d03192637323f6a132309f8b41f7 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 20 Jan 2018 00:04:45 +0100 Subject: [PATCH 27/88] function wrapper for NewPtr --- src/include/MemoryMgr.h | 10 ++++++++++ src/include/rsys/mman.h | 3 --- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index 2319a4f4..76336301 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -89,6 +89,9 @@ const LowMemGlobal MinusOne { 0xA06 }; // MemoryMgr IMI-85 (true); const LowMemGlobal ApplScratch { 0xA78 }; // MemoryMgr IMI-85 (true); /* traps which can have a `sys' or `clear' bit set */ +#define SYSBIT (1 << 10) +#define CLRBIT (1 << 9) + #define NewEmptyHandle() (_NewEmptyHandle_flags(false)) #define NewEmptyHandleSys() (_NewEmptyHandle_flags(true)) @@ -109,6 +112,13 @@ extern Handle _RecoverHandle_flags(Ptr p, bool sys_p); #define NewPtrClear(size) (_NewPtr_flags(size, false, true)) #define NewPtrSysClear(size) (_NewPtr_flags(size, true, true)) extern Ptr _NewPtr_flags(Size size, bool sys_p, bool clear_p); +/* +CREATE_FUNCTION_WRAPPER( + PascalTrap< + decltype(_NewPtr_flags) COMMA &_NewPtr_flags COMMA 0xA11E COMMA + callconv::Register (callconv::D<0> COMMA callconv::TrapBit COMMA callconv::TrapBit)> + >, + stub_NewPtr, &_NewPtr_flags, "NewPtr");*/ #define FreeMem() (_FreeMem_flags(false)) #define FreeMemSys() (_FreeMem_flags(true)) diff --git a/src/include/rsys/mman.h b/src/include/rsys/mman.h index 6e3eb25b..6da84abd 100644 --- a/src/include/rsys/mman.h +++ b/src/include/rsys/mman.h @@ -66,9 +66,6 @@ extern bool ROMlib_memnomove_p; #define PURGEBIT (1 << 6) #define RSRCBIT (1 << 5) -#define SYSBIT (1 << 10) -#define CLRBIT (1 << 9) - /* * The to_look_for stuff below is a guess, but I couldn't get ThinkC to * compile my test case on Brute. The problem is that when running From 4be7c8fae56a1b7ac0807577160ef900e3103892 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 20 Jan 2018 00:04:57 +0100 Subject: [PATCH 28/88] silence valgrind warning --- src/fileInfo.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fileInfo.cpp b/src/fileInfo.cpp index 3655457d..a6a8249f 100644 --- a/src/fileInfo.cpp +++ b/src/fileInfo.cpp @@ -533,7 +533,8 @@ OSErr Executor::ROMlib_PBGetSetFInfoD(ParmBlkPtr pb, BOOLEAN a, pb->fileParam.ioFlStBlk = CW(-1); /* NOT SUPPORTED */ pb->fileParam.ioFlRStBlk = CW(-1); /* NOT SUPPORTED */ pb->fileParam.ioFlMdDat = CL(UNIXTIMETOMACTIME( - MAX(resourcesbuf.st_mtime, datasbuf.st_mtime))); + datasbuf.st_mtime)); // FIXME: take mod date of resources into account + //std::max(resourcesbuf.st_mtime, datasbuf.st_mtime))); if(dodirs) ((CInfoPBPtr)pb)->hFileInfo.ioFlBkDat = 0; } From fb5584b1a497849b245f21fc973220f6f90385de Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 21 Jan 2018 17:07:10 +0100 Subject: [PATCH 29/88] Yes, a0 is really the argument to Delay. (answer a question posed in a fixme comment) --- src/emustubs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index b157136c..cbf999c5 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -1808,7 +1808,7 @@ STUB(Delay) { LONGINT tempp; - // FIXME: #warning is a0 really the argument to delay? That sounds weird + // Yes, a0 is really the argument to Delay. Weird, but true. Delay(EM_A0, &tempp); EM_D0 = tempp; RTS(); From 689c7152807c2b068c9fcd6cf4dfff74e592a551 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 21 Jan 2018 17:11:14 +0100 Subject: [PATCH 30/88] dont clobber OS trap #0 (_Open) when no trap is specified --- src/functions.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 3751e76f..1f8301d4 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -502,15 +502,18 @@ void PascalTrap::init() { WrappedFunction::init(); - if(trapno & TOOLBIT) + if(trapno) { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); - } - else - { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + if(trapno & TOOLBIT) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); + } + else + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + } } } From 2ba0dc9a66d39ec92194f58b90765cc312aa6bab Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 22 Jan 2018 23:20:58 +0100 Subject: [PATCH 31/88] experimentally switch NewPtr to new macros/templates --- src/emutraptables.cpp | 2 +- src/include/MemoryMgr.h | 4 ++-- src/include/rsys/emustubs.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 1cbb9652..8f60ff4c 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -1256,7 +1256,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_SetZone }, { 0, (void *)_FreeMem }, { 0, (void *)_MaxMem }, - { 0, (void *)_NewPtr }, + {0,0},//{ 0, (void *)_NewPtr }, { 0, (void *)_DisposPtr }, { 0, (void *)_SetPtrSize }, { 0, (void *)_GetPtrSize }, diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index 76336301..b1f4d756 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -112,13 +112,13 @@ extern Handle _RecoverHandle_flags(Ptr p, bool sys_p); #define NewPtrClear(size) (_NewPtr_flags(size, false, true)) #define NewPtrSysClear(size) (_NewPtr_flags(size, true, true)) extern Ptr _NewPtr_flags(Size size, bool sys_p, bool clear_p); -/* + CREATE_FUNCTION_WRAPPER( PascalTrap< decltype(_NewPtr_flags) COMMA &_NewPtr_flags COMMA 0xA11E COMMA callconv::Register (callconv::D<0> COMMA callconv::TrapBit COMMA callconv::TrapBit)> >, - stub_NewPtr, &_NewPtr_flags, "NewPtr");*/ + stub_NewPtr, &_NewPtr_flags, "NewPtr"); #define FreeMem() (_FreeMem_flags(false)) #define FreeMemSys() (_FreeMem_flags(true)) diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index bb5710b6..1953efd4 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -71,7 +71,7 @@ RAW_68K_TRAP(GetZone, 0xA11A); RAW_68K_TRAP(SetZone, 0xA01B); RAW_68K_TRAP(FreeMem, 0xA01C); RAW_68K_TRAP(MaxMem, 0xA11D); -RAW_68K_TRAP(NewPtr, 0xA11E); +//RAW_68K_TRAP(NewPtr, 0xA11E); RAW_68K_TRAP(DisposPtr, 0xA01F); RAW_68K_TRAP(SetPtrSize, 0xA020); RAW_68K_TRAP(GetPtrSize, 0xA021); From 8c16e9937fde683f2d673d52092247e01103f430 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 22 Jan 2018 23:37:53 +0100 Subject: [PATCH 32/88] adjust some function names to match Apple documentation --- docs/ROMinfo | 2 +- docs/faq.xml | 2 +- docs/faq/t1.html | 2 +- docs/unimplemented | 2 +- src/AE.cpp | 2 +- src/edition.cpp | 2 +- src/emustubs.cpp | 6 +++--- src/error.cpp | 2 +- src/include/AppleEvents.h | 4 ++-- src/include/CQuickDraw.h | 4 ++-- src/include/EditionMgr.h | 4 ++-- src/interfacelib.cpp | 2 +- src/qPaletteMgr.cpp | 4 ++-- src/trapinfo | 6 +++--- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/ROMinfo b/docs/ROMinfo index 9d506b5d..b209bc17 100644 --- a/docs/ROMinfo +++ b/docs/ROMinfo @@ -103,7 +103,7 @@ Minor work that needs to be done OpenCPicture just calls OpenPicture. - RestoreClutDevice needs work + RestoreDeviceClut needs work inverse color table routines don't do a good job of discriminating between colors that are close to each other. diff --git a/docs/faq.xml b/docs/faq.xml index 31497de9..835f8252 100644 --- a/docs/faq.xml +++ b/docs/faq.xml @@ -2087,7 +2087,7 @@ GetStdFilterProc, SetDialogCancelItem, SetDialogTracksCursor, OutlineMetrics, Fl GDeviceChanged, PortChanged, PixPatChanged and CTabChanged are poorly implemented. GetCPixel doesn't work for bpp > 8. OpenCPicture just -calls OpenPicture. RestoreClutDevice's implementation is shaky. Our +calls OpenPicture. RestoreDeviceClut's implementation is shaky. Our inverse color table routines don't do a good job of discriminating between colors that are close to each other. diff --git a/docs/faq/t1.html b/docs/faq/t1.html index 921a856b..6bcc1621 100644 --- a/docs/faq/t1.html +++ b/docs/faq/t1.html @@ -4305,7 +4305,7 @@ >

GDeviceChanged, PortChanged, PixPatChanged and CTabChanged are poorly implemented. GetCPixel doesn't work for bpp > 8. OpenCPicture just -calls OpenPicture. RestoreClutDevice's implementation is shaky. Our +calls OpenPicture. RestoreDeviceClut's implementation is shaky. Our inverse color table routines don't do a good job of discriminating between colors that are close to each other.

8. OpenCPicture just -calls OpenPicture. RestoreClutDevice's implementation is shakey. +calls OpenPicture. RestoreDeviceClut's implementation is shakey. diff --git a/src/AE.cpp b/src/AE.cpp index 6ab0d60d..163d9144 100644 --- a/src/AE.cpp +++ b/src/AE.cpp @@ -555,7 +555,7 @@ OSErr Executor::C_AEDisposeToken(AEDesc *theToken) return noErr; } -OSErr Executor::C_AEREesolve(AEDesc *objectSpecifier, INTEGER callbackFlags, +OSErr Executor::C_AEResolve(AEDesc *objectSpecifier, INTEGER callbackFlags, AEDesc *theToken) { warning_unimplemented(NULL_STRING); diff --git a/src/edition.cpp b/src/edition.cpp index c8c4f2ae..be3a715e 100644 --- a/src/edition.cpp +++ b/src/edition.cpp @@ -8,7 +8,7 @@ using namespace Executor; -OSErr Executor::C_InitEditionPack(INTEGER unused) +OSErr Executor::C_InitEditionPackVersion(INTEGER unused) { warning_unimplemented("someone is calling the edition manager"); return noErr; diff --git a/src/emustubs.cpp b/src/emustubs.cpp index cbf999c5..bc264997 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -1070,7 +1070,7 @@ static selector_table_entry_t pack8_table[] = { { 0x0500, PTOCBLOCK(AEInstallSpecialHandler) }, { 0x0501, PTOCBLOCK(AERemoveSpecialHandler) }, { 0x052D, PTOCBLOCK(AEGetSpecialHandler) }, - { 0x0536, PTOCBLOCK(AEREesolve) }, + { 0x0536, PTOCBLOCK(AEResolve) }, { 0x0603, PTOCBLOCK(AECoerceDesc) }, { 0x0609, PTOCBLOCK(AEPutDesc) }, /* AEPutParamDesc */ @@ -1188,7 +1188,7 @@ STUB(Pack12) static ptocblock_t palette_dispatch_ptoc_1[] = { PTOCBLOCK(Entry2Index), /* 0x00 */ ZERO_PTOCBLOCK, /* 0x01 */ - PTOCBLOCK(RestoreClutDevice), /* 0x02 */ + PTOCBLOCK(RestoreDeviceClut), /* 0x02 */ PTOCBLOCK(ResizePalette), /* 0x03 */ }; @@ -1418,7 +1418,7 @@ STUB(Pack7) } static ptocblock_t pack11_ptoc0[] = { - PTOCBLOCK(InitEditionPack), /* 0x0100 */ + PTOCBLOCK(InitEditionPackVersion), /* 0x0100 */ }; static ptocblock_t pack11_ptoc1[] = { diff --git a/src/error.cpp b/src/error.cpp index 49d4c7d3..fc47bd42 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -338,7 +338,7 @@ void _gui_fatal(const char *file, int line, const char *fn, /* Make sure the screen is sane. */ SetGDevice(MR(LM(MainDevice))); - RestoreClutDevice(MR(LM(MainDevice))); + RestoreDeviceClut(MR(LM(MainDevice))); sprintf(buf, "Fatal error.\r" diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 3bd50e53..8ad44c33 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -523,10 +523,10 @@ PASCAL_SUBTRAP(AEManagerInfo, 0xA816, Pack8); extern OSErr C_AEDisposeToken(AEDesc *theToken); PASCAL_SUBTRAP(AEDisposeToken, 0xA816, Pack8); -extern OSErr C_AEREesolve(AEDesc *objectSpecifier, +extern OSErr C_AEResolve(AEDesc *objectSpecifier, INTEGER callbackFlags, AEDesc *theToken); -PASCAL_SUBTRAP(AEREesolve, 0xA816, Pack8); +PASCAL_SUBTRAP(AEResolve, 0xA816, Pack8); extern OSErr C_AERemoveObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index c2062226..ebb1aaed 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -501,8 +501,8 @@ PASCAL_TRAP(DisposCCursor, 0xAA26); extern void C_AllocCursor(void); PASCAL_TRAP(AllocCursor, 0xAA1D); -extern void C_RestoreClutDevice(GDHandle); -PASCAL_SUBTRAP(RestoreClutDevice, 0xAAA2, PaletteDispatch); +extern void C_RestoreDeviceClut(GDHandle); +PASCAL_SUBTRAP(RestoreDeviceClut, 0xAAA2, PaletteDispatch); extern void C_ResizePalette(PaletteHandle, INTEGER); PASCAL_SUBTRAP(ResizePalette, 0xAAA2, PaletteDispatch); extern INTEGER C_PMgrVersion(); diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index 51b6dd78..9347fa59 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -183,8 +183,8 @@ enum notThePublisherWrn = (-463), }; -extern OSErr C_InitEditionPack(INTEGER unused); -PASCAL_SUBTRAP(InitEditionPack, 0xA82D, Pack11); +extern OSErr C_InitEditionPackVersion(INTEGER unused); +PASCAL_SUBTRAP(InitEditionPackVersion, 0xA82D, Pack11); extern OSErr C_NewSection(EditionContainerSpecPtr container, FSSpecPtr section_doc, SectionType kind, int32_t section_id, diff --git a/src/interfacelib.cpp b/src/interfacelib.cpp index b6ccc45a..fd5092e2 100644 --- a/src/interfacelib.cpp +++ b/src/interfacelib.cpp @@ -6049,7 +6049,7 @@ static map_entry_t "AllocCursor", C_AllocCursor, }, { - "RestoreClutDevice", C_RestoreClutDevice, + "RestoreDeviceClut", C_RestoreDeviceClut, }, { "ResizePalette", C_ResizePalette, diff --git a/src/qPaletteMgr.cpp b/src/qPaletteMgr.cpp index 26e81cfc..90e2bcce 100644 --- a/src/qPaletteMgr.cpp +++ b/src/qPaletteMgr.cpp @@ -706,7 +706,7 @@ void Executor::C_ActivatePalette(WindowPtr src_window) PALETTE_SEED_X(palette) = CTAB_SEED_X(gd_ctab); } -void Executor::C_RestoreClutDevice(GDHandle gd) +void Executor::C_RestoreDeviceClut(GDHandle gd) { bool gd_ctab_changed_p = false; pm_resource_holder_t *holders; @@ -714,7 +714,7 @@ void Executor::C_RestoreClutDevice(GDHandle gd) CTabHandle gd_ctab; int i; - warning_unimplemented("RestoreClutDevice implementation may be shaky."); + warning_unimplemented("RestoreDeviceClut implementation may be shaky."); if(gd == NULL) gd = MR(LM(MainDevice)); diff --git a/src/trapinfo b/src/trapinfo index 9991ac03..4436f75b 100644 --- a/src/trapinfo +++ b/src/trapinfo @@ -2082,7 +2082,7 @@ 0xA813 TEAutoView 0xA814 SetFractEnable 0xA815 SCSIDispatch -0xA816 Pack8 AESetInteractionAllowed AEDisposeDesc AEResetTimer AEGetTheCurrentEvent AEProcessAppleEvent AEGetInteractionAllowed AESuspendTheCurrentEvent AESetTheCurrentEvent AEDisposeToken AEDuplicateDesc AECountItems AEDeleteItem AEDeleteKeyDesc AEManagerInfo AEInstallSpecialHandler AERemoveSpecialHandler AEGetSpecialHandler AEREesolve AECoerceDesc AEPutDesc AEPutKeyDesc AEInteractWithUser AEPutAttributeDesc AECreateList AERemoveEventHandler AERemoveCoercionHandler AERemoveObjectAccessor AEGetKeyDesc AEResumeTheCurrentEvent AECreateDesc AEGetAttributeDesc AESizeOfAttribute AESizeOfKeyDesc AESizeOfNthItem AEInstallEventHandler AEGetEventHandler AEInstallObjectAccessor AEGetObjectAccessor AECoercePtr AEPutPtr AEGetNthDesc AEPutKeyPtr AEPutAttributePtr AEInstallCoercionHandler AEPutArray AECreateAppleEvent AEGetCoercionHandler AECallObjectAccessor AEGetArray AESend AEGetKeyPtr AEGetAttributePtr AESetObjectCallbacks AEGetNthPtr AEDeleteParam AEPutParamDesc AEGetParamPtr AEDeleteAttribute _AE_hdlr_delete _AE_hdlr_install _AE_hdlr_lookup _AE_hdlr_table_alloc +0xA816 Pack8 AESetInteractionAllowed AEDisposeDesc AEResetTimer AEGetTheCurrentEvent AEProcessAppleEvent AEGetInteractionAllowed AESuspendTheCurrentEvent AESetTheCurrentEvent AEDisposeToken AEDuplicateDesc AECountItems AEDeleteItem AEDeleteKeyDesc AEManagerInfo AEInstallSpecialHandler AERemoveSpecialHandler AEGetSpecialHandler AEResolve AECoerceDesc AEPutDesc AEPutKeyDesc AEInteractWithUser AEPutAttributeDesc AECreateList AERemoveEventHandler AERemoveCoercionHandler AERemoveObjectAccessor AEGetKeyDesc AEResumeTheCurrentEvent AECreateDesc AEGetAttributeDesc AESizeOfAttribute AESizeOfKeyDesc AESizeOfNthItem AEInstallEventHandler AEGetEventHandler AEInstallObjectAccessor AEGetObjectAccessor AECoercePtr AEPutPtr AEGetNthDesc AEPutKeyPtr AEPutAttributePtr AEInstallCoercionHandler AEPutArray AECreateAppleEvent AEGetCoercionHandler AECallObjectAccessor AEGetArray AESend AEGetKeyPtr AEGetAttributePtr AESetObjectCallbacks AEGetNthPtr AEDeleteParam AEPutParamDesc AEGetParamPtr AEDeleteAttribute _AE_hdlr_delete _AE_hdlr_install _AE_hdlr_lookup _AE_hdlr_table_alloc 0xA817 CopyMask 0xA818 FixAtan2 0xA819 @@ -2105,7 +2105,7 @@ 0xA82A ComponentDispatch 0xA82B Pack9 0xA82C Pack10 -0xA82D Pack11 InitEditionPack NewSection RegisterSection UnRegisterSection IsRegisteredSection AssociateSection CreateEditionContainerFile DeleteEditionContainerFile SetEditionFormatMark GetEditionFormatMark OpenEdition EditionHasFormat ReadEdition OpenNewEdition WriteEdition CloseEdition GetLastEditionContainerUsed NewSubscriberDialog NewPublisherDialog SectionOptionsDialog NewSubscriberExpDialog NewPublisherExpDialog SectionOptionsExpDialog GetEditionInfo GoToPublisherSection GetStandardFormats GetEditionOpenerProc SetEditionOpenerProc CallEditionOpenerProc CallFormatIOProc +0xA82D Pack11 InitEditionPackVersion NewSection RegisterSection UnRegisterSection IsRegisteredSection AssociateSection CreateEditionContainerFile DeleteEditionContainerFile SetEditionFormatMark GetEditionFormatMark OpenEdition EditionHasFormat ReadEdition OpenNewEdition WriteEdition CloseEdition GetLastEditionContainerUsed NewSubscriberDialog NewPublisherDialog SectionOptionsDialog NewSubscriberExpDialog NewPublisherExpDialog SectionOptionsExpDialog GetEditionInfo GoToPublisherSection GetStandardFormats GetEditionOpenerProc SetEditionOpenerProc CallEditionOpenerProc CallFormatIOProc 0xA82E Pack12 Fix2SmallFract SmallFract2Fix CMY2RGB RGB2CMY HSL2RGB RGB2HSL HSV2RGB RGB2HSV GetColor 0xA82F Pack13 0xA830 Pack14 HMGetHelpMenuHandle HMShowBalloon HMRemoveBalloon HMGetBalloons HMSetBalloons HMShowMenuBalloon HMIsBalloon HMSetFont HMSetFontSize HMGetFont HMGetFontSize HMSetDialogResID HMSetMenuResID HMBalloonRect HMGetMenuResID HMScanTemplateItems HMExtractHelpMsg HMGetDialogResID HMGetMenuResID HMGetBalloonWindow HMBalloonPict @@ -2696,7 +2696,7 @@ 0xAA9F CTab2Palette 0xAAA0 Palette2CTab 0xAAA1 CopyPalette -0xAAA2 PaletteDispatch Entry2Index RestoreClutDevice ResizePalette PMgrVersion SaveFore SaveBack RestoreFore RestoreBack GetPaletteUpdates SetPaletteUpdates SetDepth HasDepth GetGray +0xAAA2 PaletteDispatch Entry2Index RestoreDeviceClut ResizePalette PMgrVersion SaveFore SaveBack RestoreFore RestoreBack GetPaletteUpdates SetPaletteUpdates SetDepth HasDepth GetGray 0xAAAA QuickTime EnterMovies ExitMovies MoviesTask PrerollMovie SetMovieActive StartMovie StopMovie GoToBeginningOfMovie SetMovieGWorld UpdateMovie DisposeMovie GetMovieVolume CloseMovieFile IsMovieDone NewMovieFromFile GetMoviePreferredRate GetMovieBox SetMovieBox NewMovieController DisposeMovieController OpenMovieFile 0xAAFE modeswitch 0xAB03 WackyQD32Trap From 22eda90f427490f42173422981d8467a440fb23a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Tue, 23 Jan 2018 00:20:15 +0100 Subject: [PATCH 33/88] annotate all subtraps with selectors in header files; make dclarations for GetFrontProcess and InitEditionPackVersion match with reality --- src/AE_desc.cpp | 4 +- src/include/AliasMgr.h | 18 ++--- src/include/AppleEvents.h | 123 ++++++++++++++++++----------------- src/include/CQuickDraw.h | 106 +++++++++++++++--------------- src/include/DialogMgr.h | 8 +-- src/include/EditionMgr.h | 60 ++++++++--------- src/include/FileMgr.h | 30 ++++----- src/include/FontMgr.h | 14 ++-- src/include/HelpMgr.h | 42 ++++++------ src/include/Iconutil.h | 60 ++++++++--------- src/include/IntlUtil.h | 38 +++++------ src/include/ListMgr.h | 50 +++++++------- src/include/MemoryMgr.h | 14 ++-- src/include/OSEvent.h | 6 +- src/include/PrintMgr.h | 46 ++++++------- src/include/ProcessMgr.h | 20 +++--- src/include/QuickTime.h | 42 ++++++------ src/include/ResourceMgr.h | 6 +- src/include/SANE.h | 96 +++++++++++++-------------- src/include/ScriptMgr.h | 84 ++++++++++++------------ src/include/ShutDown.h | 8 +-- src/include/SoundMgr.h | 90 ++++++++++++------------- src/include/StdFilePkg.h | 16 ++--- src/include/TextEdit.h | 30 ++++----- src/include/rsys/functions.h | 2 +- src/interfacelib.cpp | 2 +- src/process.cpp | 3 +- 27 files changed, 510 insertions(+), 508 deletions(-) diff --git a/src/AE_desc.cpp b/src/AE_desc.cpp index 7c41d587..cdaa020c 100644 --- a/src/AE_desc.cpp +++ b/src/AE_desc.cpp @@ -1093,7 +1093,7 @@ OSErr Executor::C_AEGetAttributePtr(AppleEvent *evt, AEKeyword keyword, data, max_size, size_out); AE_RETURN_ERROR(AEDisposeDesc(coerced_desc)); } - +/* This does not exist. OSErr Executor::C_AEDeleteAttribute(AppleEvent *evt, AEKeyword keyword) { if(!APPLE_EVENT_CLASS_P(evt)) @@ -1104,7 +1104,7 @@ OSErr Executor::C_AEDeleteAttribute(AppleEvent *evt, AEKeyword keyword) else AE_RETURN_ERROR(noErr); } - +*/ OSErr Executor::C_AESizeOfAttribute(AppleEvent *evt, AEKeyword keyword, GUEST *type_out, GUEST *size_out) diff --git a/src/include/AliasMgr.h b/src/include/AliasMgr.h index 517b705b..3fbe0465 100644 --- a/src/include/AliasMgr.h +++ b/src/include/AliasMgr.h @@ -30,36 +30,36 @@ extern OSErr C_FindFolder(int16_t vRefNum, OSType folderType, Boolean createFolder, GUEST *foundVRefNum, GUEST *foundDirID); -PASCAL_SUBTRAP(FindFolder, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(FindFolder, 0xA823, 0x0000, AliasDispatch); extern OSErr C_NewAlias(FSSpecPtr fromFile, FSSpecPtr target, GUEST *alias); -PASCAL_SUBTRAP(NewAlias, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(NewAlias, 0xA823, 0x0002, AliasDispatch); extern OSErr C_NewAliasMinimal(FSSpecPtr target, GUEST *alias); -PASCAL_SUBTRAP(NewAliasMinimal, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(NewAliasMinimal, 0xA823, 0x0008, AliasDispatch); extern OSErr C_NewAliasMinimalFromFullPath(int16_t fullpathLength, Ptr fullpath, Str32 zoneName, Str31 serverName, GUEST *alias); -PASCAL_SUBTRAP(NewAliasMinimalFromFullPath, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(NewAliasMinimalFromFullPath, 0xA823, 0x0009, AliasDispatch); extern OSErr C_UpdateAlias(FSSpecPtr fromFile, FSSpecPtr target, AliasHandle alias, Boolean *wasChanged); -PASCAL_SUBTRAP(UpdateAlias, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(UpdateAlias, 0xA823, 0x0006, AliasDispatch); extern OSErr C_ResolveAlias(FSSpecPtr fromFile, AliasHandle alias, FSSpecPtr target, Boolean *wasAliased); -PASCAL_SUBTRAP(ResolveAlias, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(ResolveAlias, 0xA823, 0x0003, AliasDispatch); extern OSErr C_ResolveAliasFile(FSSpecPtr theSpec, Boolean resolveAliasChains, Boolean *targetIsFolder, Boolean *wasAliased); -PASCAL_SUBTRAP(ResolveAliasFile, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(ResolveAliasFile, 0xA823, 0x000C, AliasDispatch); extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, AliasHandle alias, int16_t *aliasCount, @@ -67,11 +67,11 @@ extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, Boolean *needsUpdate, AliasFilterProcPtr aliasFilter, Ptr yourDataPtr); -PASCAL_SUBTRAP(MatchAlias, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(MatchAlias, 0xA823, 0x0005, AliasDispatch); extern OSErr C_GetAliasInfo(AliasHandle alias, AliasTypeInfo index, Str63 theString); -PASCAL_SUBTRAP(GetAliasInfo, 0xA823, AliasDispatch); +PASCAL_SUBTRAP(GetAliasInfo, 0xA823, 0x0007, AliasDispatch); } #endif diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 8ad44c33..1d99676c 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -217,20 +217,21 @@ typedef struct typedef AE_info_t *AE_info_ptr; + // "internal". TODO: verify if they really exist as entry points. extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8, GUEST *); -PASCAL_SUBTRAP(_AE_hdlr_table_alloc, 0xA816, Pack8); +PASCAL_SUBTRAP(_AE_hdlr_table_alloc, 0xA816, 0x092E, Pack8); extern OSErr C__AE_hdlr_delete(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *); -PASCAL_SUBTRAP(_AE_hdlr_delete, 0xA816, Pack8); +PASCAL_SUBTRAP(_AE_hdlr_delete, 0xA816, 0x0632, Pack8); extern OSErr C__AE_hdlr_lookup(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *, AE_hdlr_t *); -PASCAL_SUBTRAP(_AE_hdlr_lookup, 0xA816, Pack8); +PASCAL_SUBTRAP(_AE_hdlr_lookup, 0xA816, 0x0833, Pack8); extern OSErr C__AE_hdlr_install(AE_hdlr_table_h, int32_t, AE_hdlr_selector_t *, AE_hdlr_t *); -PASCAL_SUBTRAP(_AE_hdlr_install, 0xA816, Pack8); +PASCAL_SUBTRAP(_AE_hdlr_install, 0xA816, 0x0831, Pack8); /* private */ @@ -314,65 +315,67 @@ const LowMemGlobal AE_info { 0x2B6 }; // AppleEvents AEGizmo (true) extern OSErr C_AEGetCoercionHandler(DescType from_type, DescType to_type, GUEST *hdlr_out, GUEST *refcon_out, GUEST *from_type_is_desc_p_out, Boolean system_handler_p); -PASCAL_SUBTRAP(AEGetCoercionHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetCoercionHandler, 0xA816, 0x0B24, Pack8); extern OSErr C_AECreateDesc(DescType type, Ptr data, Size data_size, AEDesc *desc_out); -PASCAL_SUBTRAP(AECreateDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AECreateDesc, 0xA816, 0x0825, Pack8); extern OSErr C_AEDisposeDesc(AEDesc *desc); -PASCAL_SUBTRAP(AEDisposeDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDisposeDesc, 0xA816, 0x0204, Pack8); extern OSErr C_AECoerceDesc(AEDesc *desc, DescType result_type, AEDesc *desc_out); -PASCAL_SUBTRAP(AECoerceDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AECoerceDesc, 0xA816, 0x0603, Pack8); extern OSErr C_AEGetKeyPtr(AERecord *record, AEKeyword keyword, DescType desired_type, GUEST *type_out, Ptr data, Size max_size, GUEST *size_out); -PASCAL_SUBTRAP(AEGetKeyPtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetKeyPtr, 0xA816, 0x0E11, Pack8); extern OSErr C_AEGetKeyDesc(AERecord *record, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_SUBTRAP(AEGetKeyDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetKeyDesc, 0xA816, 0x0812, Pack8); extern OSErr C_AEPutKeyPtr(AERecord *record, AEKeyword keyword, DescType type, Ptr data, Size data_size); -PASCAL_SUBTRAP(AEPutKeyPtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutKeyPtr, 0xA816, 0x0A0F, Pack8); extern OSErr C_AEPutKeyDesc(AERecord *record, AEKeyword keyword, AEDesc *desc); -PASCAL_SUBTRAP(AEPutKeyDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutKeyDesc, 0xA816, 0x0610, Pack8); /* extern OSErr C_AEDeleteParam(AppleEvent *evt, AEKeyword keyword); -PASCAL_SUBTRAP(AEDeleteParam, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDeleteParam, 0xA816, 0x0413, Pack8); */ +/* The following does not exist. Maybe it should be AEDeleteParam? extern OSErr C_AEDeleteAttribute(AppleEvent *evt, AEKeyword keyword); -PASCAL_SUBTRAP(AEDeleteAttribute, 0xA816, Pack8); +PASCAL_SUBTRAP_UNKNOWN(AEDeleteAttribute, 0xA816, Pack8); +*/ extern OSErr C_AESizeOfKeyDesc(AERecord *record, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_SUBTRAP(AESizeOfKeyDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AESizeOfKeyDesc, 0xA816, 0x0829, Pack8); extern OSErr C_AESetInteractionAllowed(AEInteractionAllowed level); -PASCAL_SUBTRAP(AESetInteractionAllowed, 0xA816, Pack8); +PASCAL_SUBTRAP(AESetInteractionAllowed, 0xA816, 0x011E, Pack8); extern OSErr C_AEResetTimer(AppleEvent *evt); -PASCAL_SUBTRAP(AEResetTimer, 0xA816, Pack8); +PASCAL_SUBTRAP(AEResetTimer, 0xA816, 0x0219, Pack8); extern OSErr C_AEGetTheCurrentEvent(AppleEvent *return_evt); -PASCAL_SUBTRAP(AEGetTheCurrentEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetTheCurrentEvent, 0xA816, 0x021A, Pack8); extern OSErr C_AESetTheCurrentEvent(AppleEvent *evt); -PASCAL_SUBTRAP(AESetTheCurrentEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AESetTheCurrentEvent, 0xA816, 0x022C, Pack8); extern OSErr C_AESuspendTheCurrentEvent(AppleEvent *evt); -PASCAL_SUBTRAP(AESuspendTheCurrentEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AESuspendTheCurrentEvent, 0xA816, 0x022B, Pack8); extern OSErr C_AEResumeTheCurrentEvent(AppleEvent *evt, AppleEvent *reply, EventHandlerProcPtr dispatcher, int32_t refcon); -PASCAL_SUBTRAP(AEResumeTheCurrentEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AEResumeTheCurrentEvent, 0xA816, 0x0818, Pack8); /* extern OSErr C_AEProcessEvent(EventRecord *evt); @@ -380,81 +383,81 @@ PASCAL_FUNCTION(AEProcessEvent); */ extern OSErr C_AEGetInteractionAllowed(AEInteractionAllowed *return_level); -PASCAL_SUBTRAP(AEGetInteractionAllowed, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetInteractionAllowed, 0xA816, 0x021D, Pack8); extern OSErr C_AEDuplicateDesc(AEDesc *src, AEDesc *dst); -PASCAL_SUBTRAP(AEDuplicateDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDuplicateDesc, 0xA816, 0x0405, Pack8); extern OSErr C_AECountItems(AEDescList *list, GUEST *count_out); -PASCAL_SUBTRAP(AECountItems, 0xA816, Pack8); +PASCAL_SUBTRAP(AECountItems, 0xA816, 0x0407, Pack8); extern OSErr C_AEDeleteItem(AEDescList *list, int32_t index); -PASCAL_SUBTRAP(AEDeleteItem, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDeleteItem, 0xA816, 0x040E, Pack8); extern OSErr C_AEDeleteKeyDesc(AERecord *record, AEKeyword keyword); -PASCAL_SUBTRAP(AEDeleteKeyDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDeleteKeyDesc, 0xA816, 0x0413, Pack8); extern OSErr C_AEInstallSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_SUBTRAP(AEInstallSpecialHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEInstallSpecialHandler, 0xA816, 0x0500, Pack8); extern OSErr C_AERemoveSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_SUBTRAP(AERemoveSpecialHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AERemoveSpecialHandler, 0xA816, 0x0501, Pack8); extern OSErr C_AEGetSpecialHandler(AEKeyword function_class, GUEST *hdlr_out, Boolean system_handler_p); -PASCAL_SUBTRAP(AEGetSpecialHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetSpecialHandler, 0xA816, 0x052D, Pack8); extern OSErr C_AESend(AppleEvent *evt, AppleEvent *reply, AESendMode send_mode, AESendPriority send_priority, int32_t timeout, IdleProcPtr idle_proc, EventFilterProcPtr filter_proc); -PASCAL_SUBTRAP(AESend, 0xA816, Pack8); +PASCAL_SUBTRAP(AESend, 0xA816, 0x0D17, Pack8); extern OSErr C_AECoercePtr(DescType data_type, Ptr data, Size data_size, DescType result_type, AEDesc *desc_out); -PASCAL_SUBTRAP(AECoercePtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AECoercePtr, 0xA816, 0x0A02, Pack8); extern OSErr C_AEGetEventHandler(AEEventClass event_class, AEEventID event_id, GUEST *hdlr, GUEST *refcon, Boolean system_handler_p); -PASCAL_SUBTRAP(AEGetEventHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetEventHandler, 0xA816, 0x0921, Pack8); extern OSErr C_AERemoveEventHandler(AEEventClass event_class, AEEventID event_id, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_SUBTRAP(AERemoveEventHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AERemoveEventHandler, 0xA816, 0x0720, Pack8); extern OSErr C_AEProcessAppleEvent(EventRecord *evt); -PASCAL_SUBTRAP(AEProcessAppleEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AEProcessAppleEvent, 0xA816, 0x021B, Pack8); extern OSErr C_AEPutDesc(AEDescList *list, int32_t index, AEDesc *desc); -PASCAL_SUBTRAP(AEPutDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutDesc, 0xA816, 0x0609, Pack8); extern OSErr C_AEPutAttributePtr(AppleEvent *evt, AEKeyword keyword, DescType type, Ptr data, Size size); -PASCAL_SUBTRAP(AEPutAttributePtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutAttributePtr, 0xA816, 0x0A16, Pack8); extern OSErr C_AEPutAttributeDesc(AppleEvent *evt, AEKeyword keyword, AEDesc *desc); -PASCAL_SUBTRAP(AEPutAttributeDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutAttributeDesc, 0xA816, 0x0627, Pack8); extern OSErr C_AEGetNthPtr(AEDescList *list, int32_t index, DescType desired_type, GUEST *keyword_out, GUEST *type_out, Ptr data, int32_t max_size, GUEST *size_out); -PASCAL_SUBTRAP(AEGetNthPtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetNthPtr, 0xA816, 0x100A, Pack8); extern OSErr C_AEGetAttributePtr(AppleEvent *evt, AEKeyword keyword, DescType desired_type, GUEST *type_out, Ptr data, Size max_size, GUEST *size_out); -PASCAL_SUBTRAP(AEGetAttributePtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetAttributePtr, 0xA816, 0x0E15, Pack8); extern OSErr C_AEGetArray(AEDescList *list, AEArrayType array_type, @@ -462,95 +465,95 @@ extern OSErr C_AEGetArray(AEDescList *list, GUEST *return_item_type, GUEST *return_item_size, GUEST *return_item_count); -PASCAL_SUBTRAP(AEGetArray, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetArray, 0xA816, 0x0D0C, Pack8); extern OSErr C_AECreateAppleEvent(AEEventClass event_class, AEEventID event_id, AEAddressDesc *target, int16_t return_id, int32_t transaction_id, AppleEvent *evt); -PASCAL_SUBTRAP(AECreateAppleEvent, 0xA816, Pack8); +PASCAL_SUBTRAP(AECreateAppleEvent, 0xA816, 0x0B14, Pack8); extern OSErr C_AEInstallCoercionHandler(DescType from_type, DescType to_type, CoerceDescProcPtr hdlr, int32_t refcon, Boolean from_type_is_desc_p, Boolean system_handler_p); -PASCAL_SUBTRAP(AEInstallCoercionHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEInstallCoercionHandler, 0xA816, 0x0A22, Pack8); extern OSErr C_AEInstallEventHandler(AEEventClass event_class, AEEventID event_id, EventHandlerProcPtr hdlr, int32_t refcon, Boolean system_handler_p); -PASCAL_SUBTRAP(AEInstallEventHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AEInstallEventHandler, 0xA816, 0x091F, Pack8); extern OSErr C_AERemoveCoercionHandler(DescType from_type, DescType to_type, CoerceDescProcPtr hdlr, Boolean system_handler_p); -PASCAL_SUBTRAP(AERemoveCoercionHandler, 0xA816, Pack8); +PASCAL_SUBTRAP(AERemoveCoercionHandler, 0xA816, 0x0723, Pack8); extern OSErr C_AEPutArray(AEDescList *list, AEArrayType type, AEArrayDataPointer array_data, DescType item_type, Size item_size, int32_t item_count); -PASCAL_SUBTRAP(AEPutArray, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutArray, 0xA816, 0x0B0D, Pack8); extern OSErr C_AECreateList(Ptr list_elt_prefix, Size list_elt_prefix_size, Boolean is_record_p, AEDescList *list_out); -PASCAL_SUBTRAP(AECreateList, 0xA816, Pack8); +PASCAL_SUBTRAP(AECreateList, 0xA816, 0x0706, Pack8); extern OSErr C_AEGetAttributeDesc(AppleEvent *evt, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_SUBTRAP(AEGetAttributeDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetAttributeDesc, 0xA816, 0x0826, Pack8); extern OSErr C_AESizeOfAttribute(AppleEvent *evt, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_SUBTRAP(AESizeOfAttribute, 0xA816, Pack8); +PASCAL_SUBTRAP(AESizeOfAttribute, 0xA816, 0x0828, Pack8); extern OSErr C_AEGetNthDesc(AEDescList *list, int32_t index, DescType desired_type, GUEST *keyword_out, AEDesc *desc_out); -PASCAL_SUBTRAP(AEGetNthDesc, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetNthDesc, 0xA816, 0x0A0B, Pack8); extern OSErr C_AESizeOfNthItem(AEDescList *list, int32_t index, GUEST *type_out, GUEST *size_out); -PASCAL_SUBTRAP(AESizeOfNthItem, 0xA816, Pack8); +PASCAL_SUBTRAP(AESizeOfNthItem, 0xA816, 0x082A, Pack8); extern OSErr C_AEPutPtr(AEDescList *list, int32_t index, DescType type, Ptr data, Size data_size); -PASCAL_SUBTRAP(AEPutPtr, 0xA816, Pack8); +PASCAL_SUBTRAP(AEPutPtr, 0xA816, 0x0A08, Pack8); extern OSErr C_AEInteractWithUser(int32_t timeout, NMRecPtr nm_req, IdleProcPtr idle_proc); -PASCAL_SUBTRAP(AEInteractWithUser, 0xA816, Pack8); +PASCAL_SUBTRAP(AEInteractWithUser, 0xA816, 0x061C, Pack8); extern void AE_init(void); extern void AE_reinit(void); extern OSErr C_AEManagerInfo(GUEST *resultp); -PASCAL_SUBTRAP(AEManagerInfo, 0xA816, Pack8); +PASCAL_SUBTRAP(AEManagerInfo, 0xA816, 0x0441, Pack8); extern OSErr C_AEDisposeToken(AEDesc *theToken); -PASCAL_SUBTRAP(AEDisposeToken, 0xA816, Pack8); +PASCAL_SUBTRAP(AEDisposeToken, 0xA816, 0x023A, Pack8); extern OSErr C_AEResolve(AEDesc *objectSpecifier, INTEGER callbackFlags, AEDesc *theToken); -PASCAL_SUBTRAP(AEResolve, 0xA816, Pack8); +PASCAL_SUBTRAP(AEResolve, 0xA816, 0x0536, Pack8); extern OSErr C_AERemoveObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, BOOLEAN isSysHandler); -PASCAL_SUBTRAP(AERemoveObjectAccessor, 0xA816, Pack8); +PASCAL_SUBTRAP(AERemoveObjectAccessor, 0xA816, 0x0738, Pack8); extern OSErr C_AEInstallObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, LONGINT refcon, BOOLEAN isSysHandler); -PASCAL_SUBTRAP(AEInstallObjectAccessor, 0xA816, Pack8); +PASCAL_SUBTRAP(AEInstallObjectAccessor, 0xA816, 0x0937, Pack8); extern OSErr C_AEGetObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr *theAccessor, LONGINT *accessorRefcon, BOOLEAN isSysHandler); -PASCAL_SUBTRAP(AEGetObjectAccessor, 0xA816, Pack8); +PASCAL_SUBTRAP(AEGetObjectAccessor, 0xA816, 0x0939, Pack8); extern OSErr C_AECallObjectAccessor(DescType desiredClass, AEDesc *containerToken, DescType containerClass, DescType keyForm, AEDesc *keyData, AEDesc *theToken); -PASCAL_SUBTRAP(AECallObjectAccessor, 0xA816, Pack8); +PASCAL_SUBTRAP(AECallObjectAccessor, 0xA816, 0x0C3B, Pack8); extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myCountProc, ProcPtr myDisposeTokenProc, @@ -558,7 +561,7 @@ extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myMarkProc, ProcPtr myAdjustMarksProc, ProcPtr myGetErrDescProc); -PASCAL_SUBTRAP(AESetObjectCallbacks, 0xA816, Pack8); +PASCAL_SUBTRAP(AESetObjectCallbacks, 0xA816, 0x0E35, Pack8); } #endif /* ! _AppleEvents_H_ */ diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index ebb1aaed..fff4f9ce 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -366,9 +366,9 @@ PASCAL_TRAP(TestDeviceAttribute, 0xAA2C); extern void C_ScreenRes(GUEST *, GUEST *); NOTRAP_FUNCTION(ScreenRes); extern INTEGER C_HasDepth(GDHandle, INTEGER, INTEGER, INTEGER); -PASCAL_SUBTRAP(HasDepth, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(HasDepth, 0xAAA2, 0x0A14, PaletteDispatch); extern OSErr C_SetDepth(GDHandle, INTEGER, INTEGER, INTEGER); -PASCAL_SUBTRAP(SetDepth, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(SetDepth, 0xAAA2, 0x0A13, PaletteDispatch); extern void C_MakeITable(CTabHandle, ITabHandle, INTEGER); PASCAL_TRAP(MakeITable, 0xAA39); @@ -417,7 +417,7 @@ extern void C_SetClientID(INTEGER); PASCAL_TRAP(SetClientID, 0xAA3C); extern BOOLEAN C_GetGray(GDHandle, RGBColor *, RGBColor *); -PASCAL_SUBTRAP(GetGray, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(GetGray, 0xAAA2, 0x0C19, PaletteDispatch); extern PixPatHandle C_GetPixPat(INTEGER); PASCAL_TRAP(GetPixPat, 0xAA0C); @@ -431,23 +431,23 @@ extern CWindowPtr C_GetNewCWindow(INTEGER, Ptr, CWindowPtr); PASCAL_TRAP(GetNewCWindow, 0xAA46); extern void C_CMY2RGB(CMYColor *, RGBColor *); -PASCAL_SUBTRAP(CMY2RGB, 0xA82E, Pack12); +PASCAL_SUBTRAP(CMY2RGB, 0xA82E, 0x0003, Pack12); extern void C_RGB2CMY(RGBColor *, CMYColor *); -PASCAL_SUBTRAP(RGB2CMY, 0xA82E, Pack12); +PASCAL_SUBTRAP(RGB2CMY, 0xA82E, 0x0004, Pack12); extern void C_HSL2RGB(HSLColor *, RGBColor *); -PASCAL_SUBTRAP(HSL2RGB, 0xA82E, Pack12); +PASCAL_SUBTRAP(HSL2RGB, 0xA82E, 0x0005, Pack12); extern void C_RGB2HSL(RGBColor *, HSLColor *); -PASCAL_SUBTRAP(RGB2HSL, 0xA82E, Pack12); +PASCAL_SUBTRAP(RGB2HSL, 0xA82E, 0x0006, Pack12); extern void C_HSV2RGB(HSVColor *, RGBColor *); -PASCAL_SUBTRAP(HSV2RGB, 0xA82E, Pack12); +PASCAL_SUBTRAP(HSV2RGB, 0xA82E, 0x0007, Pack12); extern void C_RGB2HSV(RGBColor *, HSVColor *); -PASCAL_SUBTRAP(RGB2HSV, 0xA82E, Pack12); +PASCAL_SUBTRAP(RGB2HSV, 0xA82E, 0x0008, Pack12); extern SmallFract C_Fix2SmallFract(Fixed); -PASCAL_SUBTRAP(Fix2SmallFract, 0xA82E, Pack12); +PASCAL_SUBTRAP(Fix2SmallFract, 0xA82E, 0x0001, Pack12); extern Fixed C_SmallFract2Fix(SmallFract); -PASCAL_SUBTRAP(SmallFract2Fix, 0xA82E, Pack12); +PASCAL_SUBTRAP(SmallFract2Fix, 0xA82E, 0x0002, Pack12); extern BOOLEAN C_GetColor(Point, Str255, RGBColor *, RGBColor *); -PASCAL_SUBTRAP(GetColor, 0xA82E, Pack12); +PASCAL_SUBTRAP(GetColor, 0xA82E, 0x0009, Pack12); extern CTabHandle C_GetCTable(INTEGER); PASCAL_TRAP(GetCTable, 0xAA18); @@ -502,23 +502,23 @@ extern void C_AllocCursor(void); PASCAL_TRAP(AllocCursor, 0xAA1D); extern void C_RestoreDeviceClut(GDHandle); -PASCAL_SUBTRAP(RestoreDeviceClut, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(RestoreDeviceClut, 0xAAA2, 0x0002, PaletteDispatch); extern void C_ResizePalette(PaletteHandle, INTEGER); -PASCAL_SUBTRAP(ResizePalette, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(ResizePalette, 0xAAA2, 0x0003, PaletteDispatch); extern INTEGER C_PMgrVersion(); -PASCAL_SUBTRAP(PMgrVersion, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(PMgrVersion, 0xAAA2, 0x0015, PaletteDispatch); extern void C_SaveFore(ColorSpec *); -PASCAL_SUBTRAP(SaveFore, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(SaveFore, 0xAAA2, 0x040D, PaletteDispatch); extern void C_RestoreFore(ColorSpec *); -PASCAL_SUBTRAP(RestoreFore, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(RestoreFore, 0xAAA2, 0x040F, PaletteDispatch); extern void C_SaveBack(ColorSpec *); -PASCAL_SUBTRAP(SaveBack, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(SaveBack, 0xAAA2, 0x040E, PaletteDispatch); extern void C_RestoreBack(ColorSpec *); -PASCAL_SUBTRAP(RestoreBack, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(RestoreBack, 0xAAA2, 0x0410, PaletteDispatch); extern void C_SetPaletteUpdates(PaletteHandle, INTEGER); -PASCAL_SUBTRAP(SetPaletteUpdates, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(SetPaletteUpdates, 0xAAA2, 0x0616, PaletteDispatch); extern INTEGER C_GetPaletteUpdates(PaletteHandle); -PASCAL_SUBTRAP(GetPaletteUpdates, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(GetPaletteUpdates, 0xAAA2, 0x0417, PaletteDispatch); extern void C_CopyPalette(PaletteHandle src_palette, PaletteHandle dst_palette, int16_t src_start, int16_t dst_start, @@ -530,79 +530,79 @@ PASCAL_TRAP(GetCWMgrPort, 0xAA48); /* QDExtensions trap */ extern QDErr C_NewGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_SUBTRAP(NewGWorld, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(NewGWorld, 0xAB1D, 0x00160000, QDExtensions); extern Boolean C_LockPixels(PixMapHandle); -PASCAL_SUBTRAP(LockPixels, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(LockPixels, 0xAB1D, 0x00040001, QDExtensions); extern void C_UnlockPixels(PixMapHandle); -PASCAL_SUBTRAP(UnlockPixels, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(UnlockPixels, 0xAB1D, 0x00040002, QDExtensions); extern GWorldFlags C_UpdateGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_SUBTRAP(UpdateGWorld, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(UpdateGWorld, 0xAB1D, 0x00160003, QDExtensions); extern void C_DisposeGWorld(GWorldPtr); -PASCAL_SUBTRAP(DisposeGWorld, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(DisposeGWorld, 0xAB1D, 0x00040004, QDExtensions); extern void C_GetGWorld(GUEST *, GUEST *); -PASCAL_SUBTRAP(GetGWorld, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GetGWorld, 0xAB1D, 0x00080005, QDExtensions); extern void C_SetGWorld(CGrafPtr, GDHandle); -PASCAL_SUBTRAP(SetGWorld, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(SetGWorld, 0xAB1D, 0x00080006, QDExtensions); extern void C_AllowPurgePixels(PixMapHandle); -PASCAL_SUBTRAP(AllowPurgePixels, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(AllowPurgePixels, 0xAB1D, 0x0004000B, QDExtensions); extern void C_NoPurgePixels(PixMapHandle); -PASCAL_SUBTRAP(NoPurgePixels, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(NoPurgePixels, 0xAB1D, 0x0004000C, QDExtensions); extern GWorldFlags C_GetPixelsState(PixMapHandle); -PASCAL_SUBTRAP(GetPixelsState, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GetPixelsState, 0xAB1D, 0x0004000D, QDExtensions); extern void C_SetPixelsState(PixMapHandle, GWorldFlags); -PASCAL_SUBTRAP(SetPixelsState, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(SetPixelsState, 0xAB1D, 0x0008000E, QDExtensions); extern Ptr C_GetPixBaseAddr(PixMapHandle); -PASCAL_SUBTRAP(GetPixBaseAddr, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GetPixBaseAddr, 0xAB1D, 0x0004000F, QDExtensions); extern QDErr C_NewScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_SUBTRAP(NewScreenBuffer, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(NewScreenBuffer, 0xAB1D, 0x000E0010, QDExtensions); extern void C_DisposeScreenBuffer(PixMapHandle); -PASCAL_SUBTRAP(DisposeScreenBuffer, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(DisposeScreenBuffer, 0xAB1D, 0x00040011, QDExtensions); extern GDHandle C_GetGWorldDevice(GWorldPtr); -PASCAL_SUBTRAP(GetGWorldDevice, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GetGWorldDevice, 0xAB1D, 0x00040012, QDExtensions); extern Boolean C_PixMap32Bit(PixMapHandle); -PASCAL_SUBTRAP(PixMap32Bit, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(PixMap32Bit, 0xAB1D, 0x00040016, QDExtensions); extern PixMapHandle C_GetGWorldPixMap(GWorldPtr); -PASCAL_SUBTRAP(GetGWorldPixMap, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GetGWorldPixMap, 0xAB1D, 0x00040017, QDExtensions); extern QDErr C_NewTempScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_SUBTRAP(NewTempScreenBuffer, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(NewTempScreenBuffer, 0xAB1D, 0x000E0015, QDExtensions); extern void C_GDeviceChanged(GDHandle); -PASCAL_SUBTRAP(GDeviceChanged, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(GDeviceChanged, 0xAB1D, 0x0004000A, QDExtensions); extern void C_PortChanged(GrafPtr); -PASCAL_SUBTRAP(PortChanged, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(PortChanged, 0xAB1D, 0x00040009, QDExtensions); extern void C_PixPatChanged(PixPatHandle); -PASCAL_SUBTRAP(PixPatChanged, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(PixPatChanged, 0xAB1D, 0x00040008, QDExtensions); extern void C_CTabChanged(CTabHandle); -PASCAL_SUBTRAP(CTabChanged, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(CTabChanged, 0xAB1D, 0x00040007, QDExtensions); extern Boolean C_QDDone(GrafPtr); -PASCAL_SUBTRAP(QDDone, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(QDDone, 0xAB1D, 0x00040013, QDExtensions); extern LONGINT C_OffscreenVersion(); -PASCAL_SUBTRAP(OffscreenVersion, 0xAB1D, QDExtensions); +PASCAL_SUBTRAP(OffscreenVersion, 0xAB1D, 0x0014, QDExtensions); extern OSErr C_BitMapToRegion(RgnHandle, const BitMap *); PASCAL_TRAP(BitMapToRegion, 0xA8D7); extern LONGINT C_Entry2Index(INTEGER); -PASCAL_SUBTRAP(Entry2Index, 0xAAA2, PaletteDispatch); +PASCAL_SUBTRAP(Entry2Index, 0xAAA2, 0x0000, PaletteDispatch); extern void C_SaveEntries(CTabHandle, CTabHandle, ReqListRec *); PASCAL_TRAP(SaveEntries, 0xAA49); extern void C_RestoreEntries(CTabHandle, CTabHandle, ReqListRec *); PASCAL_TRAP(RestoreEntries, 0xAA4A); extern OSErr C_DisposePictInfo(PictInfoID); -PASCAL_SUBTRAP(DisposePictInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(DisposePictInfo, 0xA831, 0x0206, Pack15); extern OSErr C_RecordPictInfo(PictInfoID, PicHandle); -PASCAL_SUBTRAP(RecordPictInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(RecordPictInfo, 0xA831, 0x0403, Pack15); extern OSErr C_RecordPixMapInfo(PictInfoID, PixMapHandle); -PASCAL_SUBTRAP(RecordPixMapInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(RecordPixMapInfo, 0xA831, 0x0404, Pack15); extern OSErr C_RetrievePictInfo(PictInfoID, PictInfo *, int16_t); -PASCAL_SUBTRAP(RetrievePictInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(RetrievePictInfo, 0xA831, 0x0505, Pack15); extern OSErr C_NewPictInfo(GUEST *, int16_t, int16_t, int16_t, int16_t); -PASCAL_SUBTRAP(NewPictInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(NewPictInfo, 0xA831, 0x0602, Pack15); extern OSErr C_GetPictInfo(PicHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_SUBTRAP(GetPictInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(GetPictInfo, 0xA831, 0x0800, Pack15); extern OSErr C_GetPixMapInfo(PixMapHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_SUBTRAP(GetPixMapInfo, 0xA831, Pack15); +PASCAL_SUBTRAP(GetPixMapInfo, 0xA831, 0x0801, Pack15); extern PicHandle C_OpenCPicture(OpenCPicParams *newheaderp); PASCAL_TRAP(OpenCPicture, 0xAA20); diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index cd33745b..a8436712 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -254,16 +254,16 @@ extern CDialogPtr C_NewCDialog(Ptr, Rect *, StringPtr, BOOLEAN, INTEGER, WindowP PASCAL_TRAP(NewCDialog, 0xAA4B); extern OSErr C_GetStdFilterProc(GUEST *proc); -PASCAL_SUBTRAP(GetStdFilterProc, 0xAA68, DialogDispatch); +PASCAL_SUBTRAP(GetStdFilterProc, 0xAA68, 0x0203, DialogDispatch); extern OSErr C_SetDialogDefaultItem(DialogPtr dialog, int16_t new_item); -PASCAL_SUBTRAP(SetDialogDefaultItem, 0xAA68, DialogDispatch); +PASCAL_SUBTRAP(SetDialogDefaultItem, 0xAA68, 0x0304, DialogDispatch); extern OSErr C_SetDialogCancelItem(DialogPtr dialog, int16_t new_item); -PASCAL_SUBTRAP(SetDialogCancelItem, 0xAA68, DialogDispatch); +PASCAL_SUBTRAP(SetDialogCancelItem, 0xAA68, 0x0305, DialogDispatch); extern OSErr C_SetDialogTracksCursor(DialogPtr dialog, Boolean tracks); -PASCAL_SUBTRAP(SetDialogTracksCursor, 0xAA68, DialogDispatch); +PASCAL_SUBTRAP(SetDialogTracksCursor, 0xAA68, 0x0306, DialogDispatch); extern void AppendDITL(DialogPtr, Handle, DITLMethod); extern void ShortenDITL(DialogPtr, int16_t); diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index 9347fa59..23309ae9 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -184,124 +184,124 @@ enum }; extern OSErr C_InitEditionPackVersion(INTEGER unused); -PASCAL_SUBTRAP(InitEditionPackVersion, 0xA82D, Pack11); +PASCAL_SUBTRAP(InitEditionPackVersion, 0xA82D, 0x0100, Pack11); extern OSErr C_NewSection(EditionContainerSpecPtr container, FSSpecPtr section_doc, SectionType kind, int32_t section_id, UpdateMode initial_mode, SectionHandle *section_out); -PASCAL_SUBTRAP(NewSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(NewSection, 0xA82D, 0x0A02, Pack11); extern OSErr C_RegisterSection(FSSpecPtr section_doc, SectionHandle section, Boolean *alias_was_updated_p_out); -PASCAL_SUBTRAP(RegisterSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(RegisterSection, 0xA82D, 0x0604, Pack11); extern OSErr C_UnRegisterSection(SectionHandle section); -PASCAL_SUBTRAP(UnRegisterSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(UnRegisterSection, 0xA82D, 0x0206, Pack11); extern OSErr C_IsRegisteredSection(SectionHandle section); -PASCAL_SUBTRAP(IsRegisteredSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(IsRegisteredSection, 0xA82D, 0x0208, Pack11); extern OSErr C_AssociateSection(SectionHandle section, FSSpecPtr new_section_doc); -PASCAL_SUBTRAP(AssociateSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(AssociateSection, 0xA82D, 0x040C, Pack11); extern OSErr C_CreateEditionContainerFile(FSSpecPtr edition_file, OSType creator, ScriptCode edition_file_name_script); -PASCAL_SUBTRAP(CreateEditionContainerFile, 0xA82D, Pack11); +PASCAL_SUBTRAP(CreateEditionContainerFile, 0xA82D, 0x050E, Pack11); extern OSErr C_DeleteEditionContainerFile(FSSpecPtr edition_file); -PASCAL_SUBTRAP(DeleteEditionContainerFile, 0xA82D, Pack11); +PASCAL_SUBTRAP(DeleteEditionContainerFile, 0xA82D, 0x0210, Pack11); extern OSErr C_SetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t mark); -PASCAL_SUBTRAP(SetEditionFormatMark, 0xA82D, Pack11); +PASCAL_SUBTRAP(SetEditionFormatMark, 0xA82D, 0x0620, Pack11); extern OSErr C_GetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t *currentMark); -PASCAL_SUBTRAP(GetEditionFormatMark, 0xA82D, Pack11); +PASCAL_SUBTRAP(GetEditionFormatMark, 0xA82D, 0x061E, Pack11); extern OSErr C_OpenEdition(SectionHandle subscriber_section, EditionRefNum *ref_num); -PASCAL_SUBTRAP(OpenEdition, 0xA82D, Pack11); +PASCAL_SUBTRAP(OpenEdition, 0xA82D, 0x0412, Pack11); extern OSErr C_EditionHasFormat(EditionRefNum edition, FormatType format, Size *format_size); -PASCAL_SUBTRAP(EditionHasFormat, 0xA82D, Pack11); +PASCAL_SUBTRAP(EditionHasFormat, 0xA82D, 0x0618, Pack11); extern OSErr C_ReadEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_SUBTRAP(ReadEdition, 0xA82D, Pack11); +PASCAL_SUBTRAP(ReadEdition, 0xA82D, 0x081A, Pack11); extern OSErr C_OpenNewEdition(SectionHandle publisher_section, OSType creator, FSSpecPtr publisher_section_doc, EditionRefNum *ref_num); -PASCAL_SUBTRAP(OpenNewEdition, 0xA82D, Pack11); +PASCAL_SUBTRAP(OpenNewEdition, 0xA82D, 0x0814, Pack11); extern OSErr C_WriteEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_SUBTRAP(WriteEdition, 0xA82D, Pack11); +PASCAL_SUBTRAP(WriteEdition, 0xA82D, 0x081C, Pack11); extern OSErr C_CloseEdition(EditionRefNum edition, Boolean success_p); -PASCAL_SUBTRAP(CloseEdition, 0xA82D, Pack11); +PASCAL_SUBTRAP(CloseEdition, 0xA82D, 0x0316, Pack11); extern OSErr C_GetLastEditionContainerUsed(EditionContainerSpecPtr container); -PASCAL_SUBTRAP(GetLastEditionContainerUsed, 0xA82D, Pack11); +PASCAL_SUBTRAP(GetLastEditionContainerUsed, 0xA82D, 0x0226, Pack11); extern OSErr C_NewSubscriberDialog(NewSubscriberReplyPtr reply); -PASCAL_SUBTRAP(NewSubscriberDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(NewSubscriberDialog, 0xA82D, 0x0232, Pack11); extern OSErr C_NewPublisherDialog(NewSubscriberReplyPtr reply); -PASCAL_SUBTRAP(NewPublisherDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(NewPublisherDialog, 0xA82D, 0x0236, Pack11); extern OSErr C_SectionOptionsDialog(SectionOptionsReply *reply); -PASCAL_SUBTRAP(SectionOptionsDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(SectionOptionsDialog, 0xA82D, 0x023A, Pack11); extern OSErr C_NewSubscriberExpDialog(NewSubscriberReplyPtr reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_SUBTRAP(NewSubscriberExpDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(NewSubscriberExpDialog, 0xA82D, 0x0B34, Pack11); extern OSErr C_NewPublisherExpDialog(NewPublisherReplyPtr reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_SUBTRAP(NewPublisherExpDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(NewPublisherExpDialog, 0xA82D, 0x0B38, Pack11); extern OSErr C_SectionOptionsExpDialog(SectionOptionsReply *reply, Point where, int16_t expnasion_ditl_res_id, ExpDialogHookProcPtr dialog_hook, ExpModalFilterProcPtr filter_hook, Ptr data); -PASCAL_SUBTRAP(SectionOptionsExpDialog, 0xA82D, Pack11); +PASCAL_SUBTRAP(SectionOptionsExpDialog, 0xA82D, 0x0B3C, Pack11); extern OSErr C_GetEditionInfo(SectionHandle section, EditionInfoPtr edition_info); -PASCAL_SUBTRAP(GetEditionInfo, 0xA82D, Pack11); +PASCAL_SUBTRAP(GetEditionInfo, 0xA82D, 0x0422, Pack11); extern OSErr C_GoToPublisherSection(EditionContainerSpecPtr container); -PASCAL_SUBTRAP(GoToPublisherSection, 0xA82D, Pack11); +PASCAL_SUBTRAP(GoToPublisherSection, 0xA82D, 0x0224, Pack11); extern OSErr C_GetStandardFormats(EditionContainerSpecPtr container, FormatType *preview_format, Handle preview, Handle publisher_alias, Handle formats); -PASCAL_SUBTRAP(GetStandardFormats, 0xA82D, Pack11); +PASCAL_SUBTRAP(GetStandardFormats, 0xA82D, 0x0A28, Pack11); extern OSErr C_GetEditionOpenerProc(EditionOpenerProcPtr *opener); -PASCAL_SUBTRAP(GetEditionOpenerProc, 0xA82D, Pack11); +PASCAL_SUBTRAP(GetEditionOpenerProc, 0xA82D, 0x022A, Pack11); extern OSErr C_SetEditionOpenerProc(EditionOpenerProcPtr opener); -PASCAL_SUBTRAP(SetEditionOpenerProc, 0xA82D, Pack11); +PASCAL_SUBTRAP(SetEditionOpenerProc, 0xA82D, 0x022C, Pack11); extern OSErr C_CallEditionOpenerProc(EditionOpenerVerb selector, EditionOpenerParamBlock *param_block, EditionOpenerProcPtr opener); -PASCAL_SUBTRAP(CallEditionOpenerProc, 0xA82D, Pack11); +PASCAL_SUBTRAP(CallEditionOpenerProc, 0xA82D, 0x052E, Pack11); extern OSErr C_CallFormatIOProc(FormatIOVerb selector, FormatIOParamBlock *param_block, FormatIOProcPtr proc); -PASCAL_SUBTRAP(CallFormatIOProc, 0xA82D, Pack11); +PASCAL_SUBTRAP(CallFormatIOProc, 0xA82D, 0x0530, Pack11); } #endif /* _EDITIONMGR_H_ */ diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index df39bbc1..23a407d7 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -683,43 +683,43 @@ extern OSErrRET PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); /* prototypes for the high level filesystem dispatch traps */ extern OSErr C_FSMakeFSSpec(int16_t vRefNum, int32_t dir_id, Str255 file_name, FSSpecPtr spec); -PASCAL_SUBTRAP(FSMakeFSSpec, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSMakeFSSpec, 0xAA52, 0x0001, HighLevelFSDispatch); extern OSErr C_FSpExchangeFiles(FSSpecPtr src, FSSpecPtr dst); -PASCAL_SUBTRAP(FSpExchangeFiles, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpExchangeFiles, 0xAA52, 0x000F, HighLevelFSDispatch); extern OSErr C_FSpOpenDF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_SUBTRAP(FSpOpenDF, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpOpenDF, 0xAA52, 0x0002, HighLevelFSDispatch); extern OSErr C_FSpOpenRF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_SUBTRAP(FSpOpenRF, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpOpenRF, 0xAA52, 0x0003, HighLevelFSDispatch); extern OSErr C_FSpCreate(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_SUBTRAP(FSpCreate, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpCreate, 0xAA52, 0x0004, HighLevelFSDispatch); extern OSErr C_FSpDirCreate(FSSpecPtr spec, ScriptCode script, GUEST *created_dir_id); -PASCAL_SUBTRAP(FSpDirCreate, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpDirCreate, 0xAA52, 0x0005, HighLevelFSDispatch); extern OSErr C_FSpDelete(FSSpecPtr spec); -PASCAL_SUBTRAP(FSpDelete, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpDelete, 0xAA52, 0x0006, HighLevelFSDispatch); extern OSErr C_FSpGetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_SUBTRAP(FSpGetFInfo, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpGetFInfo, 0xAA52, 0x0007, HighLevelFSDispatch); extern OSErr C_FSpSetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_SUBTRAP(FSpSetFInfo, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpSetFInfo, 0xAA52, 0x0008, HighLevelFSDispatch); extern OSErr C_FSpSetFLock(FSSpecPtr spec); -PASCAL_SUBTRAP(FSpSetFLock, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpSetFLock, 0xAA52, 0x0009, HighLevelFSDispatch); extern OSErr C_FSpRstFLock(FSSpecPtr spec); -PASCAL_SUBTRAP(FSpRstFLock, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpRstFLock, 0xAA52, 0x000A, HighLevelFSDispatch); extern OSErr C_FSpRename(FSSpecPtr spec, Str255 new_name); -PASCAL_SUBTRAP(FSpRename, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpRename, 0xAA52, 0x000B, HighLevelFSDispatch); extern OSErr C_FSpCatMove(FSSpecPtr src, FSSpecPtr dst); -PASCAL_SUBTRAP(FSpCatMove, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpCatMove, 0xAA52, 0x000C, HighLevelFSDispatch); extern void C_FSpCreateResFile(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_SUBTRAP(FSpCreateResFile, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpCreateResFile, 0xAA52, 0x000E, HighLevelFSDispatch); extern INTEGER C_FSpOpenResFile(FSSpecPtr spec, SignedByte perms); -PASCAL_SUBTRAP(FSpOpenResFile, 0xAA52, HighLevelFSDispatch); +PASCAL_SUBTRAP(FSpOpenResFile, 0xAA52, 0x000D, HighLevelFSDispatch); extern INTEGER C_HOpenResFile(INTEGER vref, LONGINT dirid, Str255 file_name, SignedByte perm); PASCAL_TRAP(HOpenResFile, 0xA81A); diff --git a/src/include/FontMgr.h b/src/include/FontMgr.h index d6e3b4a5..fe5297fd 100644 --- a/src/include/FontMgr.h +++ b/src/include/FontMgr.h @@ -241,23 +241,23 @@ extern void C_SetFractEnable(BOOLEAN enable); PASCAL_TRAP(SetFractEnable, 0xA814); extern void C_SetOutlinePreferred(Boolean _outline_perferred_p); -PASCAL_SUBTRAP(SetOutlinePreferred, 0xA854, FontDispatch); +PASCAL_SUBTRAP(SetOutlinePreferred, 0xA854, 0x0001, FontDispatch); extern Boolean C_GetOutlinePreferred(void); -PASCAL_SUBTRAP(GetOutlinePreferred, 0xA854, FontDispatch); +PASCAL_SUBTRAP(GetOutlinePreferred, 0xA854, 0x0009, FontDispatch); extern Boolean C_IsOutline(Point numer, Point denom); -PASCAL_SUBTRAP(IsOutline, 0xA854, FontDispatch); +PASCAL_SUBTRAP(IsOutline, 0xA854, 0x0000, FontDispatch); extern OSErr C_OutlineMetrics(int16_t byte_count, Ptr text, Point numer, Point denom, int16_t *y_max, int16_t *y_min, Fixed *aw_array, Fixed *lsb_array, Rect *bounds_array); -PASCAL_SUBTRAP(OutlineMetrics, 0xA854, FontDispatch); +PASCAL_SUBTRAP(OutlineMetrics, 0xA854, 0x0008, FontDispatch); extern void C_SetPreserveGlyph(Boolean preserve_glyph); -PASCAL_SUBTRAP(SetPreserveGlyph, 0xA854, FontDispatch); +PASCAL_SUBTRAP(SetPreserveGlyph, 0xA854, 0x000A, FontDispatch); extern Boolean C_GetPreserveGlyph(void); -PASCAL_SUBTRAP(GetPreserveGlyph, 0xA854, FontDispatch); +PASCAL_SUBTRAP(GetPreserveGlyph, 0xA854, 0x000B, FontDispatch); extern OSErr C_FlushFonts(void); -PASCAL_SUBTRAP(FlushFonts, 0xA854, FontDispatch); +PASCAL_SUBTRAP(FlushFonts, 0xA854, 0x000C, FontDispatch); } #endif /* _FONTMGR_H_ */ diff --git a/src/include/HelpMgr.h b/src/include/HelpMgr.h index 6d69a540..1d24bd63 100644 --- a/src/include/HelpMgr.h +++ b/src/include/HelpMgr.h @@ -51,19 +51,19 @@ enum }; extern BOOLEAN C_HMGetBalloons(void); -PASCAL_SUBTRAP(HMGetBalloons, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetBalloons, 0xA830, 0x0003, Pack14); extern OSErr C_HMSetBalloons(BOOLEAN flag); -PASCAL_SUBTRAP(HMSetBalloons, 0xA830, Pack14); +PASCAL_SUBTRAP(HMSetBalloons, 0xA830, 0x0104, Pack14); extern BOOLEAN C_HMIsBalloon(void); -PASCAL_SUBTRAP(HMIsBalloon, 0xA830, Pack14); +PASCAL_SUBTRAP(HMIsBalloon, 0xA830, 0x0007, Pack14); extern OSErr C_HMShowBalloon(HMMessageRecord *msgp, Point tip, RectPtr alternaterectp, Ptr tipprocptr, INTEGER proc, INTEGER variant, INTEGER method); -PASCAL_SUBTRAP(HMShowBalloon, 0xA830, Pack14); +PASCAL_SUBTRAP(HMShowBalloon, 0xA830, 0x0B01, Pack14); extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, LONGINT flags, @@ -71,57 +71,57 @@ extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, RectPtr alternaterectp, Ptr tipproc, INTEGER proc, INTEGER variant); -PASCAL_SUBTRAP(HMShowMenuBalloon, 0xA830, Pack14); +PASCAL_SUBTRAP(HMShowMenuBalloon, 0xA830, 0x0E05, Pack14); extern OSErr C_HMRemoveBalloon(void); -PASCAL_SUBTRAP(HMRemoveBalloon, 0xA830, Pack14); +PASCAL_SUBTRAP(HMRemoveBalloon, 0xA830, 0x0002, Pack14); extern OSErr C_HMGetHelpMenuHandle(GUEST *mhp); -PASCAL_SUBTRAP(HMGetHelpMenuHandle, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetHelpMenuHandle, 0xA830, 0x0200, Pack14); extern OSErr C_HMGetFont(GUEST *fontp); -PASCAL_SUBTRAP(HMGetFont, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetFont, 0xA830, 0x020A, Pack14); extern OSErr C_HMGetFontSize(GUEST *sizep); -PASCAL_SUBTRAP(HMGetFontSize, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetFontSize, 0xA830, 0x020B, Pack14); extern OSErr C_HMSetFont(INTEGER font); -PASCAL_SUBTRAP(HMSetFont, 0xA830, Pack14); +PASCAL_SUBTRAP(HMSetFont, 0xA830, 0x0108, Pack14); extern OSErr C_HMSetFontSize(INTEGER size); -PASCAL_SUBTRAP(HMSetFontSize, 0xA830, Pack14); +PASCAL_SUBTRAP(HMSetFontSize, 0xA830, 0x0109, Pack14); extern OSErr C_HMSetDialogResID(INTEGER resid); -PASCAL_SUBTRAP(HMSetDialogResID, 0xA830, Pack14); +PASCAL_SUBTRAP(HMSetDialogResID, 0xA830, 0x010C, Pack14); extern OSErr C_HMGetDialogResID(GUEST *residp); -PASCAL_SUBTRAP(HMGetDialogResID, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetDialogResID, 0xA830, 0x0213, Pack14); extern OSErr C_HMSetMenuResID(INTEGER menuid, INTEGER resid); -PASCAL_SUBTRAP(HMSetMenuResID, 0xA830, Pack14); +PASCAL_SUBTRAP(HMSetMenuResID, 0xA830, 0x020D, Pack14); extern OSErr C_HMGetMenuResID(GUEST *menuidp, GUEST *residp); -PASCAL_SUBTRAP(HMGetMenuResID, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetMenuResID, 0xA830, 0x0314, Pack14); extern OSErr C_HMScanTemplateItems(INTEGER whichid, INTEGER whicresfile, ResType whictype); -PASCAL_SUBTRAP(HMScanTemplateItems, 0xA830, Pack14); +PASCAL_SUBTRAP(HMScanTemplateItems, 0xA830, 0x0410, Pack14); extern OSErr C_HMBalloonRect(HMMessageRecord *messp, Rect *rectp); -PASCAL_SUBTRAP(HMBalloonRect, 0xA830, Pack14); +PASCAL_SUBTRAP(HMBalloonRect, 0xA830, 0x040E, Pack14); extern OSErr C_HMBalloonPict(HMMessageRecord *messp, GUEST *pictp); -PASCAL_SUBTRAP(HMBalloonPict, 0xA830, Pack14); +PASCAL_SUBTRAP(HMBalloonPict, 0xA830, 0x040F, Pack14); extern OSErr C_HMGetBalloonWindow(GUEST *windowpp); -PASCAL_SUBTRAP(HMGetBalloonWindow, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetBalloonWindow, 0xA830, 0x0215, Pack14); extern OSErr C_HMExtractHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, HMMessageRecord *helpmsgp); -PASCAL_SUBTRAP(HMExtractHelpMsg, 0xA830, Pack14); +PASCAL_SUBTRAP(HMExtractHelpMsg, 0xA830, 0x0711, Pack14); extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, @@ -131,7 +131,7 @@ extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, HMMessageRecord *helpmsgp, GUEST *count); -PASCAL_SUBTRAP(HMGetIndHelpMsg, 0xA830, Pack14); +PASCAL_SUBTRAP(HMGetIndHelpMsg, 0xA830, 0x1306, Pack14); } #endif /* !_HELPMGR_H_ */ diff --git a/src/include/Iconutil.h b/src/include/Iconutil.h index 29496ce3..40c8022c 100644 --- a/src/include/Iconutil.h +++ b/src/include/Iconutil.h @@ -116,14 +116,14 @@ extern OSErr C_PlotIconID(const Rect *rect, IconAlignmentType align, IconTransformType tranform, short res_id); -PASCAL_SUBTRAP(PlotIconID, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotIconID, 0xABC9, 0x0500, IconDispatch); extern OSErr C_PlotIconMethod(const Rect *rect, IconAlignmentType align, IconTransformType transform, IconGetterProcPtr method, void *data); -PASCAL_SUBTRAP(PlotIconMethod, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotIconMethod, 0xABC9, 0x0805, IconDispatch); extern void C_PlotCIcon(const Rect *rect, CIconHandle icon); PASCAL_TRAP(PlotCIcon, 0xAA1F); extern void C_PlotIcon(const Rect *rect, Handle icon); @@ -132,17 +132,17 @@ extern OSErr C_PlotIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_SUBTRAP(PlotIconHandle, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotIconHandle, 0xABC9, 0x061D, IconDispatch); extern OSErr C_PlotCIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, CIconHandle icon); -PASCAL_SUBTRAP(PlotCIconHandle, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotCIconHandle, 0xABC9, 0x061F, IconDispatch); extern OSErr C_PlotSICNHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_SUBTRAP(PlotSICNHandle, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotSICNHandle, 0xABC9, 0x061E, IconDispatch); extern Handle C_GetIcon(short icon_id); PASCAL_TRAP(GetIcon, 0xA9BB); @@ -154,100 +154,100 @@ PASCAL_TRAP(DisposeCIcon, 0xAA25); extern OSErr C_GetIconSuite(GUEST *suite, short res_id, IconSelectorValue selector); -PASCAL_SUBTRAP(GetIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetIconSuite, 0xABC9, 0x0501, IconDispatch); extern OSErr C_NewIconSuite(GUEST *suite); -PASCAL_SUBTRAP(NewIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(NewIconSuite, 0xABC9, 0x0207, IconDispatch); extern OSErr C_AddIconToSuite(Handle icon_data, Handle suite, ResType type); -PASCAL_SUBTRAP(AddIconToSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(AddIconToSuite, 0xABC9, 0x0608, IconDispatch); extern OSErr C_GetIconFromSuite(GUEST *icon_data, Handle suite, ResType type); -PASCAL_SUBTRAP(GetIconFromSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetIconFromSuite, 0xABC9, 0x0609, IconDispatch); extern OSErr C_PlotIconSuite(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle suite); -PASCAL_SUBTRAP(PlotIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PlotIconSuite, 0xABC9, 0x0603, IconDispatch); extern OSErr C_ForEachIconDo(Handle suite, IconSelectorValue selector, IconActionProcPtr action, void *data); -PASCAL_SUBTRAP(ForEachIconDo, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(ForEachIconDo, 0xABC9, 0x080A, IconDispatch); extern short C_GetSuiteLabel(Handle suite); -PASCAL_SUBTRAP(GetSuiteLabel, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetSuiteLabel, 0xABC9, 0x0217, IconDispatch); extern OSErr C_SetSuiteLabel(Handle suite, short label); -PASCAL_SUBTRAP(SetSuiteLabel, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(SetSuiteLabel, 0xABC9, 0x0316, IconDispatch); extern OSErr C_GetLabel(short label, RGBColor *label_color, Str255 label_string); -PASCAL_SUBTRAP(GetLabel, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetLabel, 0xABC9, 0x050B, IconDispatch); extern OSErr C_DisposeIconSuite(Handle suite, Boolean dispose_data_p); -PASCAL_SUBTRAP(DisposeIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(DisposeIconSuite, 0xABC9, 0x0302, IconDispatch); extern OSErr C_IconSuiteToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_SUBTRAP(IconSuiteToRgn, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(IconSuiteToRgn, 0xABC9, 0x0714, IconDispatch); extern OSErr C_IconIDToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_SUBTRAP(IconIDToRgn, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(IconIDToRgn, 0xABC9, 0x0613, IconDispatch); extern OSErr C_IconMethodToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_SUBTRAP(IconMethodToRgn, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(IconMethodToRgn, 0xABC9, 0x0915, IconDispatch); extern Boolean C_PtInIconSuite(Point test_pt, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_SUBTRAP(PtInIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PtInIconSuite, 0xABC9, 0x070E, IconDispatch); extern Boolean C_PtInIconID(Point test_pt, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_SUBTRAP(PtInIconID, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PtInIconID, 0xABC9, 0x060D, IconDispatch); extern Boolean C_PtInIconMethod(Point test_pt, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_SUBTRAP(PtInIconMethod, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(PtInIconMethod, 0xABC9, 0x090F, IconDispatch); extern Boolean C_RectInIconSuite(const Rect *test_rect, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_SUBTRAP(RectInIconSuite, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(RectInIconSuite, 0xABC9, 0x0711, IconDispatch); extern Boolean C_RectInIconID(const Rect *test_rect, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_SUBTRAP(RectInIconID, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(RectInIconID, 0xABC9, 0x0610, IconDispatch); extern Boolean C_RectInIconMethod(const Rect *test_rect, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_SUBTRAP(RectInIconMethod, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(RectInIconMethod, 0xABC9, 0x0912, IconDispatch); extern OSErr C_MakeIconCache(Handle *cache, IconGetterProcPtr make_icon, void *data); -PASCAL_SUBTRAP(MakeIconCache, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(MakeIconCache, 0xABC9, 0x0604, IconDispatch); extern OSErr C_LoadIconCache(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle cache); -PASCAL_SUBTRAP(LoadIconCache, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(LoadIconCache, 0xABC9, 0x0606, IconDispatch); extern OSErr C_GetIconCacheData(Handle cache, void **data); -PASCAL_SUBTRAP(GetIconCacheData, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetIconCacheData, 0xABC9, 0x0419, IconDispatch); extern OSErr C_SetIconCacheData(Handle cache, void *data); -PASCAL_SUBTRAP(SetIconCacheData, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(SetIconCacheData, 0xABC9, 0x041A, IconDispatch); extern OSErr C_GetIconCacheProc(Handle cache, IconGetterProcPtr *proc); -PASCAL_SUBTRAP(GetIconCacheProc, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(GetIconCacheProc, 0xABC9, 0x041B, IconDispatch); extern OSErr C_SetIconCacheProc(Handle cache, IconGetterProcPtr proc); -PASCAL_SUBTRAP(SetIconCacheProc, 0xABC9, IconDispatch); +PASCAL_SUBTRAP(SetIconCacheProc, 0xABC9, 0x041C, IconDispatch); } #endif /* !_ICON_UTIL_H */ diff --git a/src/include/IntlUtil.h b/src/include/IntlUtil.h index da9cbcdf..507e42e1 100644 --- a/src/include/IntlUtil.h +++ b/src/include/IntlUtil.h @@ -143,73 +143,73 @@ enum extern void C_IUDatePString(LONGINT date, DateForm form, StringPtr p, Handle h); -PASCAL_SUBTRAP(IUDatePString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUDatePString, 0xA9ED, 0x000E, Pack6); extern Handle C_IUGetIntl(INTEGER id); -PASCAL_SUBTRAP(IUGetIntl, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUGetIntl, 0xA9ED, 0x0006, Pack6); extern void C_IUDateString(LONGINT date, DateForm form, StringPtr p); -PASCAL_SUBTRAP(IUDateString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUDateString, 0xA9ED, 0x0, Pack6); extern void C_IUTimePString(LONGINT date, BOOLEAN secs, StringPtr p, Handle h); -PASCAL_SUBTRAP(IUTimePString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUTimePString, 0xA9ED, 0x0010, Pack6); extern void C_IUTimeString(LONGINT date, BOOLEAN secs, StringPtr p); -PASCAL_SUBTRAP(IUTimeString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUTimeString, 0xA9ED, 0x0002, Pack6); extern BOOLEAN C_IUMetric(void); -PASCAL_SUBTRAP(IUMetric, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMetric, 0xA9ED, 0x0004, Pack6); extern void C_IUSetIntl(INTEGER rn, INTEGER id, Handle newh); -PASCAL_SUBTRAP(IUSetIntl, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUSetIntl, 0xA9ED, 0x0008, Pack6); extern INTEGER C_IUMagString(Ptr ptr1, Ptr ptr2, INTEGER len1, INTEGER len2); -PASCAL_SUBTRAP(IUMagString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMagString, 0xA9ED, 0x000A, Pack6); extern INTEGER IUCompString(StringPtr str1, StringPtr str2); extern INTEGER C_IUMagIDString(Ptr ptr1, Ptr ptr2, INTEGER len1, INTEGER len2); -PASCAL_SUBTRAP(IUMagIDString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMagIDString, 0xA9ED, 0x000C, Pack6); extern INTEGER IUEqualString(StringPtr str1, StringPtr str2); extern void C_IUMystery(Ptr arg1, Ptr arg2, INTEGER arg3, INTEGER arg4); -PASCAL_SUBTRAP(IUMystery, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMystery, 0xA9ED, 0x0012, Pack6); extern void C_IULDateString(LongDateTime *datetimep, DateForm longflag, Str255 result, Handle intlhand); -PASCAL_SUBTRAP(IULDateString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IULDateString, 0xA9ED, 0x0014, Pack6); extern void C_IULTimeString(LongDateTime *datetimep, BOOLEAN wantseconds, Str255 result, Handle intlhand); -PASCAL_SUBTRAP(IULTimeString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IULTimeString, 0xA9ED, 0x0016, Pack6); extern void C_IUClearCache(void); -PASCAL_SUBTRAP(IUClearCache, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUClearCache, 0xA9ED, 0x0018, Pack6); extern INTEGER C_IUMagPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_SUBTRAP(IUMagPString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMagPString, 0xA9ED, 0x001A, Pack6); extern INTEGER C_IUMagIDPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_SUBTRAP(IUMagIDPString, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUMagIDPString, 0xA9ED, 0x001C, Pack6); extern INTEGER C_IUScriptOrder(ScriptCode script1, ScriptCode script2); -PASCAL_SUBTRAP(IUScriptOrder, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUScriptOrder, 0xA9ED, 0x001E, Pack6); extern INTEGER C_IULangOrder(LangCode l1, LangCode l2); -PASCAL_SUBTRAP(IULangOrder, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IULangOrder, 0xA9ED, 0x0020, Pack6); extern INTEGER C_IUTextOrder(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, ScriptCode scripta, ScriptCode bscript, LangCode langa, LangCode langb); -PASCAL_SUBTRAP(IUTextOrder, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUTextOrder, 0xA9ED, 0x0022, Pack6); extern void C_IUGetItlTable(ScriptCode script, INTEGER tablecode, Handle *itlhandlep, LONGINT *offsetp, LONGINT *lengthp); -PASCAL_SUBTRAP(IUGetItlTable, 0xA9ED, Pack6); +PASCAL_SUBTRAP(IUGetItlTable, 0xA9ED, 0x0024, Pack6); } #endif /* _INTLUTIL_H_ */ diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index 49d72b49..cf919d85 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -89,82 +89,82 @@ enum extern void C_LFind(GUEST *offsetp, GUEST *lenp, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LFind, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LFind, 0xA9E7, 0x0034, Pack0); extern BOOLEAN C_LNextCell(BOOLEAN hnext, BOOLEAN vnext, GUEST *cellp, ListHandle list); -PASCAL_SUBTRAP(LNextCell, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LNextCell, 0xA9E7, 0x0048, Pack0); extern void C_LRect(Rect *cellrect, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LRect, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LRect, 0xA9E7, 0x004C, Pack0); extern BOOLEAN C_LSearch(Ptr dp, INTEGER dl, Ptr proc, GUEST *cellp, ListHandle list); extern void C_LSize(INTEGER width, INTEGER height, ListHandle list); -PASCAL_SUBTRAP(LSize, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LSize, 0xA9E7, 0x0060, Pack0); extern INTEGER C_LAddColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_SUBTRAP(LAddColumn, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LAddColumn, 0xA9E7, 0x0004, Pack0); extern INTEGER C_LAddRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_SUBTRAP(LAddRow, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LAddRow, 0xA9E7, 0x0008, Pack0); extern void C_LDelColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_SUBTRAP(LDelColumn, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LDelColumn, 0xA9E7, 0x0020, Pack0); extern void C_LDelRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_SUBTRAP(LDelRow, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LDelRow, 0xA9E7, 0x0024, Pack0); extern ListHandle C_LNew(Rect *rview, Rect *bounds, Point csize, INTEGER proc, WindowPtr wind, BOOLEAN draw, BOOLEAN grow, BOOLEAN scrollh, BOOLEAN scrollv); -PASCAL_SUBTRAP(LNew, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LNew, 0xA9E7, 0x0044, Pack0); extern void C_LDispose(ListHandle list); -PASCAL_SUBTRAP(LDispose, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LDispose, 0xA9E7, 0x0028, Pack0); extern void C_LDraw(Cell cell, ListHandle list); -PASCAL_SUBTRAP(LDraw, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LDraw, 0xA9E7, 0x0030, Pack0); extern void C_LDoDraw(BOOLEAN draw, ListHandle list); -PASCAL_SUBTRAP(LDoDraw, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LDoDraw, 0xA9E7, 0x002C, Pack0); extern void C_LScroll(INTEGER ncol, INTEGER nrow, ListHandle list); -PASCAL_SUBTRAP(LScroll, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LScroll, 0xA9E7, 0x0050, Pack0); extern void C_LAutoScroll(ListHandle list); -PASCAL_SUBTRAP(LAutoScroll, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LAutoScroll, 0xA9E7, 0x0010, Pack0); extern void C_LUpdate(RgnHandle rgn, ListHandle list); -PASCAL_SUBTRAP(LUpdate, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LUpdate, 0xA9E7, 0x0064, Pack0); extern void C_LActivate(BOOLEAN act, ListHandle list); -PASCAL_SUBTRAP(LActivate, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LActivate, 0xA9E7, 0x0, Pack0); extern void C_ROMlib_mytrack(ControlHandle ch, INTEGER part); PASCAL_FUNCTION(ROMlib_mytrack); extern BOOLEAN C_LClick(Point pt, INTEGER mods, ListHandle list); -PASCAL_SUBTRAP(LClick, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LClick, 0xA9E7, 0x0018, Pack0); extern LONGINT C_LLastClick(ListHandle list); -PASCAL_SUBTRAP(LLastClick, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LLastClick, 0xA9E7, 0x0040, Pack0); extern void C_LSetSelect(BOOLEAN setit, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LSetSelect, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LSetSelect, 0xA9E7, 0x005C, Pack0); extern void C_LAddToCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LAddToCell, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LAddToCell, 0xA9E7, 0x000C, Pack0); extern void C_LClrCell(Cell cell, ListHandle list); -PASCAL_SUBTRAP(LClrCell, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LClrCell, 0xA9E7, 0x001C, Pack0); extern void C_LGetCell(Ptr dp, GUEST *dlp, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LGetCell, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LGetCell, 0xA9E7, 0x0038, Pack0); extern void C_LSetCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_SUBTRAP(LSetCell, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LSetCell, 0xA9E7, 0x0058, Pack0); extern void C_LCellSize(Point csize, ListHandle list); -PASCAL_SUBTRAP(LCellSize, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LCellSize, 0xA9E7, 0x0014, Pack0); extern BOOLEAN C_LGetSelect(BOOLEAN next, GUEST *cellp, ListHandle list); -PASCAL_SUBTRAP(LGetSelect, 0xA9E7, Pack0); +PASCAL_SUBTRAP(LGetSelect, 0xA9E7, 0x003C, Pack0); } #endif /* __LIST__ */ diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index b1f4d756..55c56e8a 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -193,18 +193,18 @@ extern Size StackSpace(void); /* temporary memory functions; see tempmem.c */ extern int32_t C_TempFreeMem(void); -PASCAL_SUBTRAP(TempFreeMem, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempFreeMem, 0xA88F, 0x0018, OSDispatch); extern Size C_TempMaxMem(GUEST *grow); -PASCAL_SUBTRAP(TempMaxMem, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempMaxMem, 0xA88F, 0x0015, OSDispatch); extern Ptr C_TempTopMem(void); -PASCAL_SUBTRAP(TempTopMem, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempTopMem, 0xA88F, 0x0016, OSDispatch); extern Handle C_TempNewHandle(Size logical_size, GUEST *result_code); -PASCAL_SUBTRAP(TempNewHandle, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempNewHandle, 0xA88F, 0x001D, OSDispatch); extern void C_TempHLock(Handle h, GUEST *result_code); -PASCAL_SUBTRAP(TempHLock, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempHLock, 0xA88F, 0x001E, OSDispatch); extern void C_TempHUnlock(Handle h, GUEST *result_code); -PASCAL_SUBTRAP(TempHUnlock, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempHUnlock, 0xA88F, 0x001F, OSDispatch); extern void C_TempDisposeHandle(Handle h, GUEST *result_code); -PASCAL_SUBTRAP(TempDisposeHandle, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(TempDisposeHandle, 0xA88F, 0x0020, OSDispatch); } #endif /* _MEMORY_MGR_H_ */ diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index c12c6800..97b7172b 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -144,11 +144,11 @@ enum }; extern OSErr C_AcceptHighLevelEvent(TargetID *sender_id_return, GUEST *refcon_return, Ptr msg_buf, GUEST *msg_length_return); -PASCAL_SUBTRAP(AcceptHighLevelEvent, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(AcceptHighLevelEvent, 0xA88F, 0x0033, OSDispatch); extern Boolean C_GetSpecificHighLevelEvent(GetSpecificFilterProcPtr fn, Ptr data, OSErr *err_return); -PASCAL_SUBTRAP(GetSpecificHighLevelEvent, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetSpecificHighLevelEvent, 0xA88F, 0x0045, OSDispatch); extern OSErr C_PostHighLevelEvent(EventRecord *evt, Ptr receiver_id, int32_t refcon, Ptr msg_buf, int32_t msg_length, int32_t post_options); -PASCAL_SUBTRAP(PostHighLevelEvent, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(PostHighLevelEvent, 0xA88F, 0x0034, OSDispatch); /* #### move to rsys/foo.h */ extern bool hle_get_event(EventRecord *evt, bool remflag); diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index 21ef0555..0016ff4a 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -182,24 +182,24 @@ typedef struct TPrDlg const LowMemGlobal PrintErr { 0x944 }; // PrintMgr IMII-161 (true-b); extern INTEGER C_PrError(void); -PASCAL_SUBTRAP(PrError, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrError, 0xA8FD, 0xBA000000, _PrGlue); extern void C_PrSetError(INTEGER iErr); -PASCAL_SUBTRAP(PrSetError, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrSetError, 0xA8FD, 0xC0000200, _PrGlue); extern void C_PrOpen(void); -PASCAL_SUBTRAP(PrOpen, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrOpen, 0xA8FD, 0xC8000000, _PrGlue); extern void C_PrClose(void); -PASCAL_SUBTRAP(PrClose, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrClose, 0xA8FD, 0xD0000000, _PrGlue); extern void C_PrDrvrOpen(void); -PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, 0x80000000, _PrGlue); extern void C_PrDrvrClose(void); -PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, 0x88000000, _PrGlue); extern void C_PrCtlCall(INTEGER iWhichCtl, LONGINT lParam1, LONGINT lParam2, LONGINT lParam3); -PASCAL_SUBTRAP(PrCtlCall, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrCtlCall, 0xA000, 0xA0000E00, _PrGlue); extern Handle C_PrDrvrDCE(void); -PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, 0x94000000, _PrGlue); extern INTEGER C_PrDrvrVers(void); -PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, 0x9A000000, _PrGlue); extern void C_ROMlib_myjobproc(DialogPtr dp, INTEGER itemno); PASCAL_FUNCTION(ROMlib_myjobproc); extern BOOLEAN C_ROMlib_stlfilterproc(DialogPtr dp, @@ -214,13 +214,13 @@ extern void C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno); PASCAL_FUNCTION(ROMlib_mystlproc); extern TPPrDlg C_PrJobInit(THPrint hPrint); -PASCAL_SUBTRAP(PrJobInit, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrJobInit, 0xA8FD, 0x44040410, _PrGlue); extern TPPrDlg C_PrStlInit(THPrint hPrint); -PASCAL_SUBTRAP(PrStlInit, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrStlInit, 0xA8FD, 0x3C04040C, _PrGlue); extern BOOLEAN C_PrDlgMain(THPrint hPrint, ProcPtr initfptr); -PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, 0x4A040894, _PrGlue); extern void C_PrGeneral(Ptr pData); -PASCAL_SUBTRAP(PrGeneral, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrGeneral, 0xA8FD, 0x70070480, _PrGlue); extern void C_donotPrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); PASCAL_FUNCTION(donotPrArc); @@ -285,26 +285,26 @@ extern void C_PrComment(INTEGER kind, INTEGER size, Handle hand); PASCAL_FUNCTION(PrComment); extern TPPrPort C_PrOpenDoc(THPrint hPrint, TPPrPort port, Ptr pIOBuf); -PASCAL_SUBTRAP(PrOpenDoc, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrOpenDoc, 0xA8FD, 0x04000C00, _PrGlue); extern void C_PrOpenPage(TPPrPort port, TPRect pPageFrame); -PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, 0x10000808, _PrGlue); extern void C_PrClosePage(TPPrPort pPrPort); -PASCAL_SUBTRAP(PrClosePage, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrClosePage, 0xA8FD, 0x1800040C, _PrGlue); extern void C_PrCloseDoc(TPPrPort port); -PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, 0x08000484, _PrGlue); extern void C_PrPicFile(THPrint hPrint, TPPrPort pPrPort, Ptr pIOBuf, Ptr pDevBuf, TPrStatus *prStatus); -PASCAL_SUBTRAP(PrPicFile, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrPicFile, 0xA8FD, 0x60051480, _PrGlue); extern void C_PrintDefault(THPrint hPrint); -PASCAL_SUBTRAP(PrintDefault, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrintDefault, 0xA8FD, 0x20040480, _PrGlue); extern BOOLEAN C_PrValidate(THPrint hPrint); -PASCAL_SUBTRAP(PrValidate, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrValidate, 0xA8FD, 0x52040498, _PrGlue); extern BOOLEAN C_PrStlDialog(THPrint hPrint); -PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, 0x2A040484, _PrGlue); extern BOOLEAN C_PrJobDialog(THPrint hPrint); -PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, 0x32040488, _PrGlue); extern void C_PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst); -PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, _PrGlue); +PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, 0x5804089C, _PrGlue); } #endif /* __PRINTING__ */ diff --git a/src/include/ProcessMgr.h b/src/include/ProcessMgr.h index f6b0d983..8b68f9ec 100644 --- a/src/include/ProcessMgr.h +++ b/src/include/ProcessMgr.h @@ -161,35 +161,35 @@ extern void process_create(bool desk_accessory_p, uint32_t type, uint32_t signature); extern OSErr C_GetCurrentProcess(ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(GetCurrentProcess, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetCurrentProcess, 0xA88F, 0x0037, OSDispatch); extern OSErr C_GetNextProcess(ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(GetNextProcess, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetNextProcess, 0xA88F, 0x0038, OSDispatch); extern OSErr C_GetProcessInformation(ProcessSerialNumber *serial_number, ProcessInfoPtr info); -PASCAL_SUBTRAP(GetProcessInformation, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetProcessInformation, 0xA88F, 0x003A, OSDispatch); extern OSErr C_SameProcess(ProcessSerialNumber *serial_number0, ProcessSerialNumber *serial_number1, Boolean *same_out); -PASCAL_SUBTRAP(SameProcess, 0xA88F, OSDispatch); -extern OSErr C_GetFrontProcess(ProcessSerialNumber *serial_number, void *dummy); -PASCAL_SUBTRAP(GetFrontProcess, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(SameProcess, 0xA88F, 0x003D, OSDispatch); +extern OSErr C_GetFrontProcess(int32_t dummy, ProcessSerialNumber *serial_number); +PASCAL_SUBTRAP(GetFrontProcess, 0xA88F, 0x0039, OSDispatch); extern OSErr C_SetFrontProcess(ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(SetFrontProcess, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(SetFrontProcess, 0xA88F, 0x003B, OSDispatch); extern OSErr C_WakeUpProcess(ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(WakeUpProcess, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(WakeUpProcess, 0xA88F, 0x003C, OSDispatch); extern OSErr C_GetProcessSerialNumberFromPortName(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(GetProcessSerialNumberFromPortName, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetProcessSerialNumberFromPortName, 0xA88F, 0x0035, OSDispatch); extern OSErr C_GetPortNameFromProcessSerialNumber(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_SUBTRAP(GetPortNameFromProcessSerialNumber, 0xA88F, OSDispatch); +PASCAL_SUBTRAP(GetPortNameFromProcessSerialNumber, 0xA88F, 0x0046, OSDispatch); extern OSErr NewLaunch(StringPtr appl, INTEGER vrefnum, LaunchParamBlockRec *lpbp); diff --git a/src/include/QuickTime.h b/src/include/QuickTime.h index 80386f15..19345ad8 100644 --- a/src/include/QuickTime.h +++ b/src/include/QuickTime.h @@ -24,55 +24,55 @@ typedef MovieRecord *Movie; typedef LONGINT TimeValue; extern OSErr C_EnterMovies(void); -PASCAL_SUBTRAP(EnterMovies, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(EnterMovies, 0xAAAA, 0x0001, QuickTime); extern void C_ExitMovies(void); -PASCAL_SUBTRAP(ExitMovies, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(ExitMovies, 0xAAAA, 0x0002, QuickTime); extern void C_MoviesTask(Movie movie, LONGINT maxmillisecs); -PASCAL_SUBTRAP(MoviesTask, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(MoviesTask, 0xAAAA, 0x0005, QuickTime); extern OSErr C_PrerollMovie(Movie movie, TimeValue time, Fixed rate); -PASCAL_SUBTRAP(PrerollMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(PrerollMovie, 0xAAAA, 0x0006, QuickTime); extern void C_SetMovieActive(Movie movie, BOOLEAN active); -PASCAL_SUBTRAP(SetMovieActive, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(SetMovieActive, 0xAAAA, 0x0009, QuickTime); extern void C_StartMovie(Movie movie); -PASCAL_SUBTRAP(StartMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(StartMovie, 0xAAAA, 0x000B, QuickTime); extern void C_StopMovie(Movie movie); -PASCAL_SUBTRAP(StopMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(StopMovie, 0xAAAA, 0x000C, QuickTime); extern void C_GoToBeginningOfMovie(Movie movie); -PASCAL_SUBTRAP(GoToBeginningOfMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(GoToBeginningOfMovie, 0xAAAA, 0x000D, QuickTime); extern void C_SetMovieGWorld(Movie movie, CGrafPtr cgrafp, GDHandle gdh); -PASCAL_SUBTRAP(SetMovieGWorld, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(SetMovieGWorld, 0xAAAA, 0x0016, QuickTime); extern OSErr C_UpdateMovie(Movie movie); -PASCAL_SUBTRAP(UpdateMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(UpdateMovie, 0xAAAA, 0x001F, QuickTime); extern void C_DisposeMovie(Movie movie); -PASCAL_SUBTRAP(DisposeMovie, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(DisposeMovie, 0xAAAA, 0x0023, QuickTime); extern INTEGER C_GetMovieVolume(Movie movie); -PASCAL_SUBTRAP(GetMovieVolume, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(GetMovieVolume, 0xAAAA, 0x002E, QuickTime); extern OSErr C_CloseMovieFile(INTEGER refnum); -PASCAL_SUBTRAP(CloseMovieFile, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(CloseMovieFile, 0xAAAA, 0x00D5, QuickTime); extern BOOLEAN C_IsMovieDone(Movie movie); -PASCAL_SUBTRAP(IsMovieDone, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(IsMovieDone, 0xAAAA, 0x00DD, QuickTime); extern OSErr C_NewMovieFromFile(Movie *moviep, INTEGER refnum, INTEGER *residp, StringPtr resnamep, INTEGER flags, BOOLEAN *datarefwaschangedp); -PASCAL_SUBTRAP(NewMovieFromFile, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(NewMovieFromFile, 0xAAAA, 0x00F0, QuickTime); extern Fixed C_GetMoviePreferredRate(Movie movie); -PASCAL_SUBTRAP(GetMoviePreferredRate, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(GetMoviePreferredRate, 0xAAAA, 0x00F3, QuickTime); extern void C_GetMovieBox(Movie movie, Rect *boxp); -PASCAL_SUBTRAP(GetMovieBox, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(GetMovieBox, 0xAAAA, 0x00F9, QuickTime); extern void C_SetMovieBox(Movie movie, const Rect *boxp); -PASCAL_SUBTRAP(SetMovieBox, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(SetMovieBox, 0xAAAA, 0x00FA, QuickTime); extern ComponentInstance C_NewMovieController(Movie movie, const Rect *mrectp, LONGINT flags); -PASCAL_SUBTRAP(NewMovieController, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(NewMovieController, 0xAAAA, 0x018A, QuickTime); extern void C_DisposeMovieController(ComponentInstance cntrller); -PASCAL_SUBTRAP(DisposeMovieController, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(DisposeMovieController, 0xAAAA, 0x018B, QuickTime); extern OSErr C_OpenMovieFile(const FSSpec *filespecp, INTEGER *refnump, uint8 perm); -PASCAL_SUBTRAP(OpenMovieFile, 0xAAAA, QuickTime); +PASCAL_SUBTRAP(OpenMovieFile, 0xAAAA, 0x0192, QuickTime); } #endif diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index 273b5ff8..ccd72ad0 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -214,13 +214,13 @@ PASCAL_TRAP(UseResFile, 0xA998); extern void C_ReadPartialResource(Handle resource, int32_t offset, Ptr buffer, int32_t count); -PASCAL_SUBTRAP(ReadPartialResource, 0xA822, ResourceDispatch); +PASCAL_SUBTRAP(ReadPartialResource, 0xA822, 0x0001, ResourceDispatch); extern void C_WritePartialResource(Handle resource, int32_t offset, Ptr buffer, int32_t count); -PASCAL_SUBTRAP(WritePartialResource, 0xA822, ResourceDispatch); +PASCAL_SUBTRAP(WritePartialResource, 0xA822, 0x0002, ResourceDispatch); extern void C_SetResourceSize(Handle resource, int32_t size); -PASCAL_SUBTRAP(SetResourceSize, 0xA822, ResourceDispatch); +PASCAL_SUBTRAP(SetResourceSize, 0xA822, 0x0003, ResourceDispatch); extern Handle C_GetNextFOND(Handle fondHandle); } diff --git a/src/include/SANE.h b/src/include/SANE.h index a6132410..d99875bd 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -146,160 +146,160 @@ extern void C_ROMlib_Fcomp2X(comp sp, extended80 * dp); extern void C_ROMlib_Fsetenv(INTEGER *dp, INTEGER sel); -PASCAL_SUBTRAP(ROMlib_Fsetenv, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fsetenv, 0xA9EB, 0x01, Pack4); extern void C_ROMlib_Fgetenv(INTEGER *dp, INTEGER sel); -PASCAL_SUBTRAP(ROMlib_Fgetenv, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fgetenv, 0xA9EB, 0x03, Pack4); extern void C_ROMlib_Fprocentry(INTEGER *dp, INTEGER sel); -PASCAL_SUBTRAP(ROMlib_Fprocentry, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fprocentry, 0xA9EB, 0x17, Pack4); extern void C_ROMlib_Fprocexit(INTEGER *dp, INTEGER sel); -PASCAL_SUBTRAP(ROMlib_Fprocexit, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fprocexit, 0xA9EB, 0x19, Pack4); extern void C_ROMlib_Ftestxcp(INTEGER *dp, INTEGER sel); -PASCAL_SUBTRAP(ROMlib_Ftestxcp, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Ftestxcp, 0xA9EB, 0x1B, Pack4); extern void C_ROMlib_FsqrtX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FsqrtX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FsqrtX, 0xA9EB, 0x12, Pack4); extern void C_ROMlib_FscalbX(INTEGER *sp, extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FscalbX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FscalbX, 0xA9EB, 0x18, Pack4); extern void C_ROMlib_FlogbX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FlogbX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FlogbX, 0xA9EB, 0x1A, Pack4); extern void C_ROMlib_FabsX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FabsX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FabsX, 0xA9EB, 0x0F, Pack4); extern void C_ROMlib_FnegX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FnegX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FnegX, 0xA9EB, 0x0D, Pack4); extern void C_ROMlib_FrintX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FrintX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FrintX, 0xA9EB, 0x14, Pack4); extern void C_ROMlib_FtintX(extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FtintX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FtintX, 0xA9EB, 0x16, Pack4); extern void C_ROMlib_Fcpysgnx(x80_t *sp, x80_t *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fcpysgnx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fcpysgnx, 0xA9EB, 0x11, Pack4); extern void C_ROMlib_Faddx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Faddx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Faddx, 0xA9EB, 0x00, Pack4); extern void C_ROMlib_Fsubx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fsubx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fsubx, 0xA9EB, 0x02, Pack4); extern void C_ROMlib_Fmulx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fmulx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fmulx, 0xA9EB, 0x04, Pack4); extern void C_ROMlib_Fdivx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fdivx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fdivx, 0xA9EB, 0x06, Pack4); extern void C_ROMlib_Fremx(void *sp, extended80 *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fremx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fremx, 0xA9EB, 0x0C, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_Fcmpx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fcmpx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fcmpx, 0xA9EB, 0x08, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_FcpXx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FcpXx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FcpXx, 0xA9EB, 0x0A, Pack4); extern void C_ROMlib_FX2x(extended80 *sp, void * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FX2x, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FX2x, 0xA9EB, 0x10, Pack4); extern void C_ROMlib_Fx2X(void *sp, extended80 * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fx2X, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fx2X, 0xA9EB, 0x0E, Pack4); extern void C_ROMlib_Fx2dec(DecForm *sp2, void * sp, Decimal *dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fx2dec, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fx2dec, 0xA9EB, 0x0B, Pack4); extern void C_ROMlib_Fdec2x(Decimal *sp, void * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fdec2x, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fdec2x, 0xA9EB, 0x09, Pack4); extern void C_ROMlib_Fclassx(void *sp, INTEGER * dp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fclassx, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fclassx, 0xA9EB, 0x1C, Pack4); extern void C_ROMlib_FlnX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FlnX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FlnX, 0xA9EC, 0x00, Pack5); extern void C_ROMlib_Flog2X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Flog2X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Flog2X, 0xA9EC, 0x02, Pack5); extern void C_ROMlib_Fln1X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fln1X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fln1X, 0xA9EC, 0x04, Pack5); extern void C_ROMlib_Flog21X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Flog21X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Flog21X, 0xA9EC, 0x06, Pack5); extern void C_ROMlib_FexpX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FexpX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FexpX, 0xA9EC, 0x08, Pack5); extern void C_ROMlib_Fexp2X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fexp2X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fexp2X, 0xA9EC, 0x0A, Pack5); extern void C_ROMlib_Fexp1X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fexp1X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fexp1X, 0xA9EC, 0x0C, Pack5); extern void C_ROMlib_Fexp21X(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fexp21X, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fexp21X, 0xA9EC, 0x0E, Pack5); extern void C_ROMlib_Fxpwri(INTEGER *sp, extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fxpwri, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fxpwri, 0xA9EC, 0x10, Pack5); extern void C_ROMlib_Fxpwry(extended80 *sp, extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fxpwry, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fxpwry, 0xA9EC, 0x12, Pack5); extern void C_ROMlib_Fcompound(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fcompound, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fcompound, 0xA9EC, 0x14, Pack5); extern void C_ROMlib_Fannuity(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_SUBTRAP(ROMlib_Fannuity, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_Fannuity, 0xA9EC, 0x16, Pack5); extern void C_ROMlib_FsinX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FsinX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FsinX, 0xA9EC, 0x18, Pack5); extern void C_ROMlib_FcosX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FcosX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FcosX, 0xA9EC, 0x1A, Pack5); extern void C_ROMlib_FtanX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FtanX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FtanX, 0xA9EC, 0x1C, Pack5); extern void C_ROMlib_FatanX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FatanX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FatanX, 0xA9EC, 0x1E, Pack5); extern void C_ROMlib_FrandX(extended80 *dp); -PASCAL_SUBTRAP(ROMlib_FrandX, 0xA9EC, Pack5); +PASCAL_SUBTRAP(ROMlib_FrandX, 0xA9EC, 0x20, Pack5); extern void C_ROMlib_Fdec2str(DecForm *sp2, Decimal *sp, Decstr dp); -PASCAL_SUBTRAP(ROMlib_Fdec2str, 0xA9EE, Pack7); +PASCAL_SUBTRAP(ROMlib_Fdec2str, 0xA9EE, 0x03, Pack7); extern void C_ROMlib_Fxstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp, INTEGER lastchar); extern void C_ROMlib_Fcstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); -PASCAL_SUBTRAP(ROMlib_Fcstr2dec, 0xA9EE, Pack7); +PASCAL_SUBTRAP(ROMlib_Fcstr2dec, 0xA9EE, 0x04, Pack7); extern void C_ROMlib_Fpstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); -PASCAL_SUBTRAP(ROMlib_Fpstr2dec, 0xA9EE, Pack7); +PASCAL_SUBTRAP(ROMlib_Fpstr2dec, 0xA9EE, 0x02, Pack7); extern void C_ROMlib_Fsethv(LONGINT *hvp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fsethv, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fsethv, 0xA9EB, 0x05, Pack4); extern void C_ROMlib_Fgethv(LONGINT *hvp, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_Fgethv, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_Fgethv, 0xA9EB, 0x07, Pack4); extern void C_ROMlib_FnextX(uint8 *x, uint8 *y, unsigned short sel); -PASCAL_SUBTRAP(ROMlib_FnextX, 0xA9EB, Pack4); +PASCAL_SUBTRAP(ROMlib_FnextX, 0xA9EB, 0x13, Pack4); } #endif diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index 5029e9b4..42816f94 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -229,122 +229,122 @@ enum const LowMemGlobal TESysJust { 0xBAC }; // ScriptMgr ToolEqu.a (true-b); extern LONGINT C_VisibleLength(Ptr textp, LONGINT len); -PASCAL_SUBTRAP(VisibleLength, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(VisibleLength, 0xA8B5, 0x84080028, ScriptUtil); extern void C_LongDate2Secs(LongDateRec *ldatep, GUEST *secs_outp); -PASCAL_SUBTRAP(LongDate2Secs, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(LongDate2Secs, 0xA8B5, 0x8008FFF2, ScriptUtil); extern void C_LongSecs2Date(GUEST *secs_inp, LongDateRec *ldatep); -PASCAL_SUBTRAP(LongSecs2Date, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(LongSecs2Date, 0xA8B5, 0x8008FFF0, ScriptUtil); extern LONGINT C_GetEnvirons(INTEGER verb); -PASCAL_SUBTRAP(GetEnvirons, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(GetEnvirons, 0xA8B5, 0x84020008, ScriptUtil); extern OSErr C_SetEnvirons(INTEGER verb, LONGINT param); -PASCAL_SUBTRAP(SetEnvirons, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(SetEnvirons, 0xA8B5, 0x8206000A, ScriptUtil); extern LONGINT C_GetScript(INTEGER script, INTEGER verb); -PASCAL_SUBTRAP(GetScript, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(GetScript, 0xA8B5, 0x8404000C, ScriptUtil); extern OSErr C_SetScript(INTEGER script, INTEGER verb, LONGINT param); -PASCAL_SUBTRAP(SetScript, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(SetScript, 0xA8B5, 0x8208000E, ScriptUtil); extern INTEGER C_Font2Script(INTEGER fontnum); -PASCAL_SUBTRAP(Font2Script, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(Font2Script, 0xA8B5, 0x82020006, ScriptUtil); extern INTEGER C_Transliterate(Handle srch, Handle dsth, INTEGER target, LONGINT srcmask); -PASCAL_SUBTRAP(Transliterate, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(Transliterate, 0xA8B5, 0x820E0018, ScriptUtil); extern INTEGER C_FontScript(void); -PASCAL_SUBTRAP(FontScript, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(FontScript, 0xA8B5, 0x82000000, ScriptUtil); extern INTEGER C_IntlScript(void); -PASCAL_SUBTRAP(IntlScript, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(IntlScript, 0xA8B5, 0x82000002, ScriptUtil); extern void C_KeyScript(INTEGER scriptcode); -PASCAL_SUBTRAP(KeyScript, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(KeyScript, 0xA8B5, 0x80020004, ScriptUtil); extern INTEGER C_CharType(Ptr textbufp, INTEGER offset); -PASCAL_SUBTRAP(CharType, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(CharType, 0xA8B5, 0x82060012, ScriptUtil); extern void C_MeasureJust(Ptr textbufp, INTEGER length, INTEGER slop, Ptr charlocs); -PASCAL_SUBTRAP(MeasureJust, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(MeasureJust, 0xA8B5, 0x800C0020, ScriptUtil); extern INTEGER C_Pixel2Char(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER pixwidth, BOOLEAN *leftsidep); -PASCAL_SUBTRAP(Pixel2Char, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(Pixel2Char, 0xA8B5, 0x820E0014, ScriptUtil); extern INTEGER C_Char2Pixel(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER offset, SignedByte dir); -PASCAL_SUBTRAP(Char2Pixel, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(Char2Pixel, 0xA8B5, 0x820C0016, ScriptUtil); extern void C_FindWord(Ptr textbufp, INTEGER length, INTEGER offset, BOOLEAN leftside, Ptr breaks, GUEST *offsets); -PASCAL_SUBTRAP(FindWord, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(FindWord, 0xA8B5, 0x8012001A, ScriptUtil); extern void C_HiliteText(Ptr textbufp, INTEGER firstoffset, INTEGER secondoffset, GUEST *offsets); -PASCAL_SUBTRAP(HiliteText, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(HiliteText, 0xA8B5, 0x800E001C, ScriptUtil); extern void C_DrawJust(Ptr textbufp, INTEGER length, INTEGER slop); -PASCAL_SUBTRAP(DrawJust, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(DrawJust, 0xA8B5, 0x8008001E, ScriptUtil); extern String2DateStatus C_String2Time(Ptr textp, LONGINT len, Ptr cachep, GUEST *lenusedp, GUEST *datetimep); -PASCAL_SUBTRAP(String2Time, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(String2Time, 0xA8B5, 0x8214FFF4, ScriptUtil); extern INTEGER GetMBarHeight(void); extern INTEGER GetSysJust(void); extern void SetSysJust(INTEGER just); extern OSErr C_InitDateCache(DateCachePtr theCache); -PASCAL_SUBTRAP(InitDateCache, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(InitDateCache, 0xA8B5, 0x8204FFF8, ScriptUtil); extern INTEGER C_CharByte(Ptr textBuf, INTEGER textOffset); -PASCAL_SUBTRAP(CharByte, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(CharByte, 0xA8B5, 0x82060010, ScriptUtil); extern String2DateStatus C_String2Date(Ptr text, int32_t length, DateCachePtr cache, GUEST *length_used_ret, LongDatePtr date_time); -PASCAL_SUBTRAP(String2Date, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(String2Date, 0xA8B5, 0x8214FFF6, ScriptUtil); extern StyledLineBreakCode C_StyledLineBreak(Ptr textp, int32_t length, int32_t text_start, int32_t text_end, int32_t flags, GUEST *text_width_fp, GUEST *text_offset); -PASCAL_SUBTRAP(StyledLineBreak, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(StyledLineBreak, 0xA8B5, 0x821CFFFE, ScriptUtil); extern void C_NMeasureJust(Ptr text, int32_t length, Fixed slop, Ptr charLocs, JustStyleCode run_pos, Point numer, Point denom); -PASCAL_SUBTRAP(NMeasureJust, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(NMeasureJust, 0xA8B5, 0x801A0034, ScriptUtil); extern Boolean C_ParseTable(CharByteTable table); -PASCAL_SUBTRAP(ParseTable, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(ParseTable, 0xA8B5, 0x82040022, ScriptUtil); extern Boolean C_FillParseTable(CharByteTable table, ScriptCode script); -PASCAL_SUBTRAP(FillParseTable, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(FillParseTable, 0xA8B5, 0xC2040022, ScriptUtil); extern INTEGER C_ReplaceText(Handle base_text, Handle subst_text, Str15 key); -PASCAL_SUBTRAP(ReplaceText, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(ReplaceText, 0xA8B5, 0x820CFFDC, ScriptUtil); extern INTEGER C_TruncString(INTEGER width, Str255 string, TruncCode code); -PASCAL_SUBTRAP(TruncString, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(TruncString, 0xA8B5, 0x8208FFE0, ScriptUtil); extern FormatStatus C_StringToExtended(Str255 string, NumFormatStringRec *formatp, NumberParts *partsp, Extended80 *xp); -PASCAL_SUBTRAP(StringToExtended, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(StringToExtended, 0xA8B5, 0x8210FFE6, ScriptUtil); extern FormatStatus C_ExtendedToString(Extended80 *xp, NumFormatStringRec *formatp, NumberParts *partsp, Str255 string); -PASCAL_SUBTRAP(ExtendedToString, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(ExtendedToString, 0xA8B5, 0x8210FFE8, ScriptUtil); extern FormatStatus C_StringToFormatRec(Str255 in_string, NumberParts *partsp, NumFormatStringRec *out_string); -PASCAL_SUBTRAP(StringToFormatRec, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(StringToFormatRec, 0xA8B5, 0x820CFFEC, ScriptUtil); extern ToggleResults C_ToggleDate(LongDateTime *lsecsp, LongDateField field, DateDelta delta, INTEGER ch, TogglePB *paramsp); -PASCAL_SUBTRAP(ToggleDate, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(ToggleDate, 0xA8B5, 0x820EFFEE, ScriptUtil); extern Fixed C_PortionLine( Ptr textPtr, @@ -352,7 +352,7 @@ extern Fixed C_PortionLine( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_SUBTRAP(PortionLine, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(PortionLine, 0xA8B5, 0x84120036, ScriptUtil); extern void C_DrawJustified( Ptr textPtr, @@ -361,13 +361,13 @@ extern void C_DrawJustified( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_SUBTRAP(DrawJustified, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(DrawJustified, 0xA8B5, 0x80160032, ScriptUtil); extern ScriptRunStatus C_FindScriptRun( Ptr textPtr, LONGINT textLen, GUEST *lenUsedp); -PASCAL_SUBTRAP(FindScriptRun, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(FindScriptRun, 0xA8B5, 0x820C0026, ScriptUtil); extern INTEGER C_PixelToChar( Ptr textBuf, @@ -379,7 +379,7 @@ extern INTEGER C_PixelToChar( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_SUBTRAP(PixelToChar, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(PixelToChar, 0xA8B5, 0x8222002E, ScriptUtil); extern INTEGER C_CharToPixel( Ptr textBuf, @@ -390,31 +390,31 @@ extern INTEGER C_CharToPixel( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_SUBTRAP(CharToPixel, 0xA8B5, ScriptUtil); +PASCAL_SUBTRAP(CharToPixel, 0xA8B5, 0x821C0030, ScriptUtil); extern void C_LowercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_SUBTRAP(LowercaseText, 0xA8B5, ScriptUtil); +PASCAL_FUNCTION(LowercaseText); //, 0xA8B5, ScriptUtil); extern void C_UppercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_SUBTRAP(UppercaseText, 0xA8B5, ScriptUtil); +PASCAL_FUNCTION(UppercaseText); //, 0xA8B5, ScriptUtil); extern void C_StripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_SUBTRAP(StripDiacritics, 0xA8B5, ScriptUtil); +PASCAL_FUNCTION(StripDiacritics); //, 0xA8B5, ScriptUtil); extern void C_UppercaseStripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_SUBTRAP(UppercaseStripDiacritics, 0xA8B5, ScriptUtil); +PASCAL_FUNCTION(UppercaseStripDiacritics); //, 0xA8B5, ScriptUtil); extern INTEGER C_CharacterByteType(Ptr textBuf, INTEGER textOffset, ScriptCode script); diff --git a/src/include/ShutDown.h b/src/include/ShutDown.h index 3c7fb948..e60d78bf 100644 --- a/src/include/ShutDown.h +++ b/src/include/ShutDown.h @@ -13,12 +13,12 @@ enum }; extern void C_ShutDwnPower(void); -PASCAL_SUBTRAP(ShutDwnPower, 0xA895, ShutDown); +PASCAL_SUBTRAP(ShutDwnPower, 0xA895, 0x0001, ShutDown); extern void C_ShutDwnStart(void); -PASCAL_SUBTRAP(ShutDwnStart, 0xA895, ShutDown); +PASCAL_SUBTRAP(ShutDwnStart, 0xA895, 0x0002, ShutDown); extern void C_ShutDwnInstall(ProcPtr shutdown_proc, int16_t flags); -PASCAL_SUBTRAP(ShutDwnInstall, 0xA895, ShutDown); +PASCAL_SUBTRAP(ShutDwnInstall, 0xA895, 0x0003, ShutDown); extern void C_ShutDwnRemove(ProcPtr shutdown_proc); -PASCAL_SUBTRAP(ShutDwnRemove, 0xA895, ShutDown); +PASCAL_SUBTRAP(ShutDwnRemove, 0xA895, 0x0004, ShutDown); } diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index ac6e57b3..3c4f81ab 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -216,172 +216,172 @@ typedef uint32_t UnsignedFixed; typedef Ptr CompressionInfoPtr; extern void C_SndGetSysBeepState(GUEST *statep); -PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, 0x02180008, SoundDispatch); extern OSErr C_SndSetSysBeepState(INTEGER state); -PASCAL_SUBTRAP(SndSetSysBeepState, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndSetSysBeepState, 0xA800, 0x011C0008, SoundDispatch); extern OSErr C_SndChannelStatus(SndChannelPtr chanp, INTEGER length, SCStatusPtr statusp); -PASCAL_SUBTRAP(SndChannelStatus, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndChannelStatus, 0xA800, 0x05100008, SoundDispatch); extern OSErr C_SndManagerStatus(INTEGER length, SMStatusPtr statusp); -PASCAL_SUBTRAP(SndManagerStatus, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndManagerStatus, 0xA800, 0x03140008, SoundDispatch); extern NumVersion C_SndSoundManagerVersion(void); -PASCAL_SUBTRAP(SndSoundManagerVersion, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndSoundManagerVersion, 0xA800, 0x000C0008, SoundDispatch); extern NumVersion C_MACEVersion(void); -PASCAL_SUBTRAP(MACEVersion, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(MACEVersion, 0xA800, 0x00000010, SoundDispatch); extern NumVersion C_SPBVersion(void); -PASCAL_SUBTRAP(SPBVersion, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBVersion, 0xA800, 0x00000014, SoundDispatch); extern OSErr C_SndStartFilePlay(SndChannelPtr chanp, INTEGER refnum, INTEGER resnum, LONGINT buffersize, Ptr bufferp, AudioSelectionPtr theselectionp, ProcPtr completionp, BOOLEAN async); -PASCAL_SUBTRAP(SndStartFilePlay, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndStartFilePlay, 0xA800, 0x0D000008, SoundDispatch); extern OSErr C_SndPauseFilePlay(SndChannelPtr chanp); -PASCAL_SUBTRAP(SndPauseFilePlay, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndPauseFilePlay, 0xA800, 0x02040008, SoundDispatch); extern OSErr C_SndStopFilePlay(SndChannelPtr chanp, BOOLEAN async); -PASCAL_SUBTRAP(SndStopFilePlay, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndStopFilePlay, 0xA800, 0x03080008, SoundDispatch); extern OSErr C_SndPlayDoubleBuffer(SndChannelPtr chanp, SndDoubleBufferHeaderPtr paramp); -PASCAL_SUBTRAP(SndPlayDoubleBuffer, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndPlayDoubleBuffer, 0xA800, 0x04200008, SoundDispatch); extern void C_Comp3to1(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_SUBTRAP(Comp3to1, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(Comp3to1, 0xA800, 0x00040010, SoundDispatch); extern void C_Comp6to1(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_SUBTRAP(Comp6to1, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(Comp6to1, 0xA800, 0x000C0010, SoundDispatch); extern void C_Exp1to3(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_SUBTRAP(Exp1to3, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(Exp1to3, 0xA800, 0x00080010, SoundDispatch); extern void C_Exp1to6(Ptr inp, Ptr outp, LONGINT cnt, Ptr instatep, Ptr outstatep, LONGINT numchannels, LONGINT whichchannel); -PASCAL_SUBTRAP(Exp1to6, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(Exp1to6, 0xA800, 0x00100010, SoundDispatch); extern OSErr C_SndRecord(ProcPtr filterp, Point corner, OSType quality, GUEST *sndhandlep); -PASCAL_SUBTRAP(SndRecord, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndRecord, 0xA800, 0x08040014, SoundDispatch); extern OSErr C_SndRecordToFile(ProcPtr filterp, Point corner, OSType quality, INTEGER refnum); -PASCAL_SUBTRAP(SndRecordToFile, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndRecordToFile, 0xA800, 0x07080014, SoundDispatch); extern OSErr C_SPBOpenDevice(Str255 name, INTEGER permission, GUEST *inrefnump); -PASCAL_SUBTRAP(SPBOpenDevice, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBOpenDevice, 0xA800, 0x05180014, SoundDispatch); extern OSErr C_SPBCloseDevice(LONGINT inrefnum); -PASCAL_SUBTRAP(SPBCloseDevice, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBCloseDevice, 0xA800, 0x021C0014, SoundDispatch); extern OSErr C_SPBRecord(SPBPtr inparamp, BOOLEAN async); -PASCAL_SUBTRAP(SPBRecord, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBRecord, 0xA800, 0x03200014, SoundDispatch); extern OSErr C_SPBRecordToFile(INTEGER refnum, SPBPtr inparamp, BOOLEAN async); -PASCAL_SUBTRAP(SPBRecordToFile, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBRecordToFile, 0xA800, 0x04240014, SoundDispatch); extern OSErr C_SPBPauseRecording(LONGINT refnum); -PASCAL_SUBTRAP(SPBPauseRecording, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBPauseRecording, 0xA800, 0x02280014, SoundDispatch); extern OSErr C_SPBResumeRecording(LONGINT refnum); -PASCAL_SUBTRAP(SPBResumeRecording, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBResumeRecording, 0xA800, 0x022C0014, SoundDispatch); extern OSErr C_SPBStopRecording(LONGINT refnum); -PASCAL_SUBTRAP(SPBStopRecording, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBStopRecording, 0xA800, 0x02300014, SoundDispatch); extern OSErr C_SPBGetRecordingStatus(LONGINT refnum, GUEST *recordingstatus, GUEST *meterlevel, GUEST *totalsampstorecord, GUEST *numsampsrecorded, GUEST *totalmsecstorecord, GUEST *numbermsecsrecorded); -PASCAL_SUBTRAP(SPBGetRecordingStatus, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBGetRecordingStatus, 0xA800, 0x0E340014, SoundDispatch); extern OSErr C_SPBGetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_SUBTRAP(SPBGetDeviceInfo, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBGetDeviceInfo, 0xA800, 0x06380014, SoundDispatch); extern OSErr C_SPBSetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_SUBTRAP(SPBSetDeviceInfo, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBSetDeviceInfo, 0xA800, 0x063C0014, SoundDispatch); extern OSErr C_SetupSndHeader(Handle sndhandle, INTEGER numchannels, Fixed rate, INTEGER size, OSType compresion, INTEGER basefreq, LONGINT numbytes, GUEST *headerlenp); -PASCAL_SUBTRAP(SetupSndHeader, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SetupSndHeader, 0xA800, 0x0D480014, SoundDispatch); extern OSErr C_SetupAIFFHeader(INTEGER refnum, INTEGER numchannels, Fixed samplerate, INTEGER samplesize, OSType compression, LONGINT numbytes, LONGINT numframes); -PASCAL_SUBTRAP(SetupAIFFHeader, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SetupAIFFHeader, 0xA800, 0x0B4C0014, SoundDispatch); extern OSErr C_SPBSignInDevice(INTEGER refnum, Str255 name); -PASCAL_SUBTRAP(SPBSignInDevice, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBSignInDevice, 0xA800, 0x030C0014, SoundDispatch); extern OSErr C_SPBSignOutDevice(INTEGER refnum); -PASCAL_SUBTRAP(SPBSignOutDevice, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBSignOutDevice, 0xA800, 0x01100014, SoundDispatch); extern OSErr C_SPBGetIndexedDevice(INTEGER count, Str255 name, GUEST *deviceiconhandlep); -PASCAL_SUBTRAP(SPBGetIndexedDevice, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBGetIndexedDevice, 0xA800, 0x05140014, SoundDispatch); extern OSErr C_SPBMillisecondsToBytes(LONGINT refnum, GUEST *millip); -PASCAL_SUBTRAP(SPBMillisecondsToBytes, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBMillisecondsToBytes, 0xA800, 0x04400014, SoundDispatch); extern OSErr C_SPBBytesToMilliseconds(LONGINT refnum, GUEST *bytecountp); -PASCAL_SUBTRAP(SPBBytesToMilliseconds, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SPBBytesToMilliseconds, 0xA800, 0x04440014, SoundDispatch); extern OSErr C_GetSysBeepVolume(GUEST *levelp); -PASCAL_SUBTRAP(GetSysBeepVolume, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(GetSysBeepVolume, 0xA800, 0x02240018, SoundDispatch); extern OSErr C_SetSysBeepVolume(LONGINT level); -PASCAL_SUBTRAP(SetSysBeepVolume, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SetSysBeepVolume, 0xA800, 0x02280018, SoundDispatch); extern OSErr C_GetDefaultOutputVolume(GUEST *levelp); -PASCAL_SUBTRAP(GetDefaultOutputVolume, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(GetDefaultOutputVolume, 0xA800, 0x022C0018, SoundDispatch); extern OSErr C_SetDefaultOutputVolume(LONGINT level); -PASCAL_SUBTRAP(SetDefaultOutputVolume, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SetDefaultOutputVolume, 0xA800, 0x02300018, SoundDispatch); extern OSErr C_GetSoundHeaderOffset(Handle sndHandle, GUEST *offset); -PASCAL_SUBTRAP(GetSoundHeaderOffset, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(GetSoundHeaderOffset, 0xA800, 0x04040018, SoundDispatch); extern UnsignedFixed C_UnsignedFixedMulDiv(UnsignedFixed value, UnsignedFixed multiplier, UnsignedFixed divisor); -PASCAL_SUBTRAP(UnsignedFixedMulDiv, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(UnsignedFixedMulDiv, 0xA800, 0x060C0018, SoundDispatch); extern OSErr C_GetCompressionInfo(INTEGER compressionID, OSType format, INTEGER numChannels, INTEGER sampleSize, CompressionInfoPtr cp); -PASCAL_SUBTRAP(GetCompressionInfo, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(GetCompressionInfo, 0xA800, 0x07100018, SoundDispatch); extern OSErr C_SetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_SUBTRAP(SetSoundPreference, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SetSoundPreference, 0xA800, 0x06340018, SoundDispatch); extern OSErr C_GetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_SUBTRAP(GetSoundPreference, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(GetSoundPreference, 0xA800, 0x06380018, SoundDispatch); extern OSErr C_SndGetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_SUBTRAP(SndGetInfo, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndGetInfo, 0xA800, 0x063C0018, SoundDispatch); extern OSErr C_SndSetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_SUBTRAP(SndSetInfo, 0xA800, SoundDispatch); +PASCAL_SUBTRAP(SndSetInfo, 0xA800, 0x06400018, SoundDispatch); extern void StartSound(Ptr srec, LONGINT nb, ProcPtr comp); extern void StopSound(void); diff --git a/src/include/StdFilePkg.h b/src/include/StdFilePkg.h index ea3660f2..5eb35926 100644 --- a/src/include/StdFilePkg.h +++ b/src/include/StdFilePkg.h @@ -108,29 +108,29 @@ PASCAL_FUNCTION(ROMlib_filebox); extern void C_SFPPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep, INTEGER dig, ModalFilterProcPtr fp); -PASCAL_SUBTRAP(SFPPutFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(SFPPutFile, 0xA9EA, 0x0003, Pack3); extern void C_SFPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep); -PASCAL_SUBTRAP(SFPutFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(SFPutFile, 0xA9EA, 0x0001, Pack3); extern void C_SFPGetFile(Point p, StringPtr prompt, FileFilterProcPtr filef, INTEGER numt, GUEST tl, DlgHookProcPtr dh, SFReply *rep, INTEGER dig, ModalFilterProcPtr fp); -PASCAL_SUBTRAP(SFPGetFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(SFPGetFile, 0xA9EA, 0x0004, Pack3); extern void C_SFGetFile(Point p, StringPtr prompt, FileFilterProcPtr filef, INTEGER numt, GUEST tl, DlgHookProcPtr dh, SFReply *rep); -PASCAL_SUBTRAP(SFGetFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(SFGetFile, 0xA9EA, 0x0002, Pack3); extern void C_StandardGetFile(FileFilterProcPtr filef, INTEGER numt, GUEST tl, StandardFileReply *replyp); -PASCAL_SUBTRAP(StandardGetFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(StandardGetFile, 0xA9EA, 0x0006, Pack3); extern void C_StandardPutFile(Str255 prompt, Str255 defaultname, StandardFileReply *replyp); -PASCAL_SUBTRAP(StandardPutFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(StandardPutFile, 0xA9EA, 0x0005, Pack3); extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, StandardFileReply *replyp, @@ -140,7 +140,7 @@ extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_SUBTRAP(CustomPutFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(CustomPutFile, 0xA9EA, 0x0007, Pack3); extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, INTEGER numtypes, @@ -152,7 +152,7 @@ extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_SUBTRAP(CustomGetFile, 0xA9EA, Pack3); +PASCAL_SUBTRAP(CustomGetFile, 0xA9EA, 0x0008, Pack3); } #endif /* __STDFILE__ */ diff --git a/src/include/TextEdit.h b/src/include/TextEdit.h index 5d70db54..7429c081 100644 --- a/src/include/TextEdit.h +++ b/src/include/TextEdit.h @@ -584,49 +584,49 @@ PASCAL_TRAP(TEStylNew, 0xA83E); extern void C_SetStylHandle(TEStyleHandle theHandle, TEHandle teh); -PASCAL_SUBTRAP(SetStylHandle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(SetStylHandle, 0xA83D, 0x0005, TEDispatch); extern TEStyleHandle C_GetStylHandle(TEHandle teh); -PASCAL_SUBTRAP(GetStylHandle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(GetStylHandle, 0xA83D, 0x0004, TEDispatch); extern StScrpHandle C_GetStylScrap(TEHandle teh); -PASCAL_SUBTRAP(GetStylScrap, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(GetStylScrap, 0xA83D, 0x0006, TEDispatch); extern void C_TEStylInsert(Ptr text, LONGINT length, StScrpHandle hST, TEHandle teh); -PASCAL_SUBTRAP(TEStylInsert, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEStylInsert, 0xA83D, 0x0007, TEDispatch); extern INTEGER C_TEGetOffset(Point pt, TEHandle teh); PASCAL_TRAP(TEGetOffset, 0xA83C); extern LONGINT C_TEGetPoint(INTEGER offset, TEHandle teh); -PASCAL_SUBTRAP(TEGetPoint, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEGetPoint, 0xA83D, 0x0008, TEDispatch); extern int32_t C_TEGetHeight(LONGINT endLine, LONGINT startLine, TEHandle teh); -PASCAL_SUBTRAP(TEGetHeight, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEGetHeight, 0xA83D, 0x0009, TEDispatch); extern void C_TEGetStyle(INTEGER offset, TextStyle *theStyle, GUEST *lineHeight, GUEST *fontAscent, TEHandle teh); -PASCAL_SUBTRAP(TEGetStyle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEGetStyle, 0xA83D, 0x0003, TEDispatch); extern void C_TEStylPaste(TEHandle teh); -PASCAL_SUBTRAP(TEStylPaste, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEStylPaste, 0xA83D, 0x0000, TEDispatch); extern void C_TESetStyle(INTEGER mode, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_SUBTRAP(TESetStyle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TESetStyle, 0xA83D, 0x0001, TEDispatch); extern void C_TEReplaceStyle(INTEGER mode, TextStyle *oldStyle, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_SUBTRAP(TEReplaceStyle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEReplaceStyle, 0xA83D, 0x0002, TEDispatch); extern BOOLEAN C_TEContinuousStyle(GUEST *modep, TextStyle *thestyle, TEHandle teh); -PASCAL_SUBTRAP(TEContinuousStyle, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEContinuousStyle, 0xA83D, 0x000A, TEDispatch); extern void C_SetStylScrap(LONGINT start, LONGINT stop, StScrpHandle newstyles, BOOLEAN redraw, TEHandle teh); -PASCAL_SUBTRAP(SetStylScrap, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(SetStylScrap, 0xA83D, 0x000B, TEDispatch); extern void C_TECustomHook(INTEGER sel, GUEST *addr, TEHandle teh); -PASCAL_SUBTRAP(TECustomHook, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TECustomHook, 0xA83D, 0x000C, TEDispatch); extern LONGINT C_TENumStyles(LONGINT start, LONGINT stop, TEHandle teh); -PASCAL_SUBTRAP(TENumStyles, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TENumStyles, 0xA83D, 0x000D, TEDispatch); extern void C_TEInit(void); PASCAL_TRAP(TEInit, 0xA9CC); @@ -663,6 +663,6 @@ extern LONGINT TEGetScrapLen(void); extern void TESetScrapLen(LONGINT ln); extern int16_t C_TEFeatureFlag(int16_t feature, int16_t action, TEHandle te); -PASCAL_SUBTRAP(TEFeatureFlag, 0xA83D, TEDispatch); +PASCAL_SUBTRAP(TEFeatureFlag, 0xA83D, 0x000E, TEDispatch); } #endif /* _TEXTEDIT_H_ */ diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 875ec2ff..eac1593b 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -151,7 +151,7 @@ class PascalTrap : public WrappedFunction #define COMMA , #define PASCAL_TRAP(NAME, TRAP) \ CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) -#define PASCAL_SUBTRAP(NAME, TRAP, TRAPNAME) \ +#define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) #define NOTRAP_FUNCTION(NAME) \ CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) diff --git a/src/interfacelib.cpp b/src/interfacelib.cpp index fd5092e2..97a77e51 100644 --- a/src/interfacelib.cpp +++ b/src/interfacelib.cpp @@ -4820,7 +4820,7 @@ static map_entry_t "TestControl", TestControl_PC, }, { - "InitEditionPackVersion", C_InitEditionPack, + "InitEditionPackVersion", C_InitEditionPackVersion, }, { "InvertRoundRect", C_InvertRoundRect, diff --git a/src/process.cpp b/src/process.cpp index b934a2e4..87df57a4 100644 --- a/src/process.cpp +++ b/src/process.cpp @@ -203,8 +203,7 @@ OSErr Executor::C_SameProcess(ProcessSerialNumber *serial_number0, return noErr; } -OSErr Executor::C_GetFrontProcess(ProcessSerialNumber *serial_number, - void *dummy) +OSErr Executor::C_GetFrontProcess(int32_t dummy, ProcessSerialNumber *serial_number) { *serial_number = current_process_info->serial_number; return noErr; From d8df006ca644c03de69be88c818055d6726e2750 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Tue, 23 Jan 2018 18:31:45 +0100 Subject: [PATCH 34/88] for the record: script used to annotate subtraps in header files --- util/scanuniversalheaders.pl | 145 +++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 util/scanuniversalheaders.pl diff --git a/util/scanuniversalheaders.pl b/util/scanuniversalheaders.pl new file mode 100644 index 00000000..ca92d5ce --- /dev/null +++ b/util/scanuniversalheaders.pl @@ -0,0 +1,145 @@ +#!/usr/bin/perl +use warnings; + +while($f = <$ARGV[0]/*.h>) { + open(INCLUDE, $f); + + while($l = ) { + if($l =~ /^#define ([A-Za-z0-9_]+)\(([^)]*)\) ([A-Za-z0-9_]+)\((.*)\) *$/) { + if($2 eq $4) { + $newnames{$1} = $3; + $oldnames{$3} = $1; + print "OLD=>NEW: $1 => $3\n"; + } + } elsif($l =~ /^#define ([A-Za-z0-9_]+)\((.*)\)[ \t]*\\$/) { + $old = $1; + $oldarg = $2; + $l = ; + if($l =~ /^[ \t]*([A-Za-z0-9_]+)\((.*)\)$/ && $1 ne "x") { + $newnames{$old} = $1; + $oldnames{$1} = $old; + print "OLD->NEW: $old -> $1\n"; + } + } + + if($l =~ /^EXTERN_API\(.*\)/) { + $l = ; + if($l =~ /([A-Za-z0-9_]+)\(/) { + $name = $1; + $name =~ s/^Mac//; + + while($l && $l !~ /\)/) { + $l = ; + } + if($l =~ /\b[A-Z]+WORDINLINE\((.*)\)/) { + $code = join(' ',map { s/0x//r } split(/, */,$1)); + + $trap = $1 if($code =~ /(\bA...\b)/); + + if($code =~ /^A...$/) { + print $name, " -> simple: ", $code ,"\n"; + $kind = "simple"; + $selector = 0; + } elsif($code =~ /^70(..) (A...)$/) { + print $name, " -> D0=$1 $2", "\n"; + $kind = "D0W"; + $selector = $1; + if($selector =~ /[0-7]./) { + $selector = "00$selector"; + } else { + $selector = "FF$selector"; + } + } elsif($code =~ /^303C (....) (A...)$/) { + print $name, " -> D0.W=$1 $2", "\n"; + $kind = "D0W"; + $selector = $1; + } elsif($code =~ /^203C (....) (....) (A...)$/) { + print $name, " -> D0.L=$1$2 $3", "\n"; + $kind = "D0L"; + $selector = "$1$2"; + } elsif($code =~ /^4267 (A...)$/) { + print $name, " -> Stack.W=0 $1", "\n"; + $kind = "StackW"; + $selector = "0"; + } elsif($code =~ /^70(..) 3F00 (A...)$/) { + print $name, " -> Stack.W=$1 $2", "\n"; + $kind = "StackW"; + $selector = $1; + if($selector =~ /[0-7]./) { + $selector = "00$selector"; + } else { + $selector = "FF$selector"; + } + } elsif($code =~ /^3F3C (....) (A...)$/) { + print $name, " -> Stack.W=$1 $2", "\n"; + $kind = "StackW"; + $selector = $1; + } elsif($code =~ /^2F3C (....) (....) (A...)$/) { + print $name, " -> Stack.L=$1$2 $3", "\n"; + $kind = "StackL"; + $selector = "$1$2"; + } else { + print $name, " -> complicated: $code\n"; + $kind = "complicated"; + } + + if($kind ne "complicated") { + $traps{$name} = $trap; + $entrypoints{$trap} = [] if(!exists $entrypoints{$trap}); + push @{ $entrypoints{$trap} }, $name; + $selectors{$name} = $selector; + if(exists $kinds{$trap}) { + if($kinds{$trap} ne $kind) { + print "mismatch: $trap $name $kinds{$trap} $kind\n"; + } + } + $kinds{$trap} = $kind; + } + + } + } + } + } + + close(INCLUDE); +} + +foreach $trap (keys %kinds) { + print $trap, "(", $kinds{$trap}, ")"; + foreach $name (@{$entrypoints{$trap}}) { + if($kinds{$trap} eq "simple") { + print " ", $name; + } else { + print " ", $selectors{$name}, ":", $name; + } + } + print "\n"; +} + +while($f = ) { + open(INCLUDE, $f); + open(OUT, ">temp.h"); + while($l = ) { + if($l =~ /^PASCAL_SUBTRAP\(([A-Za-z0-9_]+), (0x[0-9A-Z]+), ([A-Za-z0-9_]+)\)/) { + $name = $1; + $origname = $name; + $trapname = $3; + $oldtrapnum = $2; + $name = $newnames{$name} if(exists $newnames{$name}); + if(exists $selectors{$name}) { + $selector = "0x$selectors{$name}"; + $trapnum = "0x$traps{$name}"; + print OUT "PASCAL_SUBTRAP($origname, $trapnum, $selector, $trapname);\n"; + print $name, " ", $trapnum, " ", $selector, "\n"; + } else { + print $name, ": unknown\n"; + print OUT "PASCAL_SUBTRAP_UNKNOWN($origname, $oldtrapnum, $trapname);\n"; + } + } else { + print OUT $l; + } + } + close(OUT); + close(INCLUDE); + system "mv temp.h $f"; +} From c51edf295ce7fa197bee5a53675a10792e98c33a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 00:34:16 +0100 Subject: [PATCH 35/88] Revert "experimentally switch NewPtr to new macros/templates" This reverts commit 2ba0dc9a66d39ec92194f58b90765cc312aa6bab. --- src/emutraptables.cpp | 2 +- src/include/MemoryMgr.h | 4 ++-- src/include/rsys/emustubs.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 8f60ff4c..1cbb9652 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -1256,7 +1256,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_SetZone }, { 0, (void *)_FreeMem }, { 0, (void *)_MaxMem }, - {0,0},//{ 0, (void *)_NewPtr }, + { 0, (void *)_NewPtr }, { 0, (void *)_DisposPtr }, { 0, (void *)_SetPtrSize }, { 0, (void *)_GetPtrSize }, diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index 55c56e8a..55963f1f 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -112,13 +112,13 @@ extern Handle _RecoverHandle_flags(Ptr p, bool sys_p); #define NewPtrClear(size) (_NewPtr_flags(size, false, true)) #define NewPtrSysClear(size) (_NewPtr_flags(size, true, true)) extern Ptr _NewPtr_flags(Size size, bool sys_p, bool clear_p); - +/* CREATE_FUNCTION_WRAPPER( PascalTrap< decltype(_NewPtr_flags) COMMA &_NewPtr_flags COMMA 0xA11E COMMA callconv::Register (callconv::D<0> COMMA callconv::TrapBit COMMA callconv::TrapBit)> >, - stub_NewPtr, &_NewPtr_flags, "NewPtr"); + stub_NewPtr, &_NewPtr_flags, "NewPtr");*/ #define FreeMem() (_FreeMem_flags(false)) #define FreeMemSys() (_FreeMem_flags(true)) diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 1953efd4..bb5710b6 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -71,7 +71,7 @@ RAW_68K_TRAP(GetZone, 0xA11A); RAW_68K_TRAP(SetZone, 0xA01B); RAW_68K_TRAP(FreeMem, 0xA01C); RAW_68K_TRAP(MaxMem, 0xA11D); -//RAW_68K_TRAP(NewPtr, 0xA11E); +RAW_68K_TRAP(NewPtr, 0xA11E); RAW_68K_TRAP(DisposPtr, 0xA01F); RAW_68K_TRAP(SetPtrSize, 0xA020); RAW_68K_TRAP(GetPtrSize, 0xA021); From 20d3fceea5fd70a56e66886fdf718cd809294b46 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 00:24:59 +0100 Subject: [PATCH 36/88] declare DISPATCHER_TRAP macro, simplify initialization --- src/functions.cpp | 75 ++++++++++++++++++------------------ src/include/rsys/functions.h | 49 +++++++++++++++-------- src/main.cpp | 2 +- 3 files changed, 73 insertions(+), 53 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 1f8301d4..e6c08e79 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -355,9 +355,11 @@ template ProcPtr Raw68KFunction::guestFP; template -void Raw68KFunction::init() +Raw68KFunction::Raw68KFunction() { - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); + initFunctions.push_back([]{ + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); + }); } namespace Executor::callconv @@ -471,49 +473,53 @@ struct Invoker -void -WrappedFunction::init() +WrappedFunction::WrappedFunction() { - guestFP = (UPP)SYN68K_TO_US(callback_install( - Invoker::call, CallConv> - ::invokeFrom68K, nullptr)); + initFunctions.push_back([]{ + guestFP = (UPP)SYN68K_TO_US(callback_install( + Invoker::call, CallConv> + ::invokeFrom68K, nullptr)); + }); } template -void -Raw68KTrap::init() +Raw68KTrap::Raw68KTrap() { - Raw68KFunction::init(); - if(trapno & TOOLBIT) - { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); - } - else + if(trapno) { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + initFunctions.push_back([]{ + if(trapno & TOOLBIT) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)Raw68KFunction::guestFP); + } + else + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)Raw68KFunction::guestFP); + } + }); } } template -void -PascalTrap::init() +PascalTrap::PascalTrap() { - WrappedFunction::init(); if(trapno) { - if(trapno & TOOLBIT) - { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); - } - else - { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); - } + initFunctions.push_back([]{ + if(trapno & TOOLBIT) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)WrappedFunction::guestFP)); + } + else + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)WrappedFunction::guestFP)); + } + }); } } @@ -537,12 +543,7 @@ PascalTrap::operator()(Args... args) cons } -InitAction::InitAction(void (*f)()) -{ - initFunctions.push_back(f); -} - -void InitAction::execute() +void functions::init() { for(auto f : initFunctions) (*f)(); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index eac1593b..df7d5a4e 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -75,6 +75,27 @@ struct UPP namespace functions { +namespace selectors +{ + class D0W; + class D0L; + class StackW; + class StackL; + class StackWLookahead; +} + +template +class DispatcherTrap +{ + //std::unordered_map selectors; + + syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void* extra); +public: + void addSelector(uint32_t sel, callback_handler_t handler); + + void init(); +}; + template class Raw68KFunction { @@ -84,7 +105,7 @@ class Raw68KFunction return guestFP; } - void init(); + Raw68KFunction(); protected: static ProcPtr guestFP; }; @@ -93,7 +114,7 @@ template class Raw68KTrap : public Raw68KFunction { public: - void init(); + Raw68KTrap(); }; @@ -114,7 +135,7 @@ class WrappedFunction return guestFP; } - void init(); + WrappedFunction(); protected: static UPP guestFP; static const char *name; @@ -128,23 +149,27 @@ class PascalTrap : public WrappedFunction { public: Ret operator()(Args... args) const; - void init(); + + PascalTrap(); }; #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ #define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, DISPLAYNAME) \ - extern Executor::functions::TYPE NAME; \ - extern template class Executor::functions::TYPE + extern Executor::functions::TYPE NAME + +#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + extern Executor::functions::DispatcherTrap NAME #else #define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, DISPLAYNAME) \ Executor::functions::TYPE NAME; \ template class Executor::functions::TYPE; \ - Executor::functions::InitAction init_##NAME([]{NAME.init();}); \ template<> const char * NamedThing::name = DISPLAYNAME +#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + Executor::functions::DispatcherTrap NAME #endif @@ -164,15 +189,9 @@ class PascalTrap : public WrappedFunction syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME, &_##NAME, #NAME) -class InitAction -{ -public: - InitAction(void (*f)()); - static void execute(); -}; - - + void resetNestingLevel(); +void init(); } diff --git a/src/main.cpp b/src/main.cpp index a5967426..f575bd9a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1431,7 +1431,7 @@ int main(int argc, char **argv) } filltables(); - Executor::functions::InitAction::execute(); + Executor::functions::init(); l = ostraptable[0x0FC]; ((unsigned char *)jmpl_to_ResourceStub)[2] = l >> 24; From 7bbaa3868f600cbb1e30d1d80bebb6d6023da84c Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 00:53:41 +0100 Subject: [PATCH 37/88] update script for annotating PASCAL_SUBTRAP to output DISPATCHER_TRAP declarations --- util/scanuniversalheaders.pl | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/util/scanuniversalheaders.pl b/util/scanuniversalheaders.pl index ca92d5ce..5d1c95fb 100644 --- a/util/scanuniversalheaders.pl +++ b/util/scanuniversalheaders.pl @@ -120,24 +120,25 @@ open(INCLUDE, $f); open(OUT, ">temp.h"); while($l = ) { - if($l =~ /^PASCAL_SUBTRAP\(([A-Za-z0-9_]+), (0x[0-9A-Z]+), ([A-Za-z0-9_]+)\)/) { + if($l =~ /^PASCAL_SUBTRAP\(([A-Za-z0-9_]+), 0x([0-9A-Z]+), (0x[0-9A-Z]+), ([A-Za-z0-9_]+)\)/) { $name = $1; + $trapname = $4; + $trapnum = $2; + $selector = $3; $origname = $name; - $trapname = $3; - $oldtrapnum = $2; $name = $newnames{$name} if(exists $newnames{$name}); - if(exists $selectors{$name}) { - $selector = "0x$selectors{$name}"; - $trapnum = "0x$traps{$name}"; - print OUT "PASCAL_SUBTRAP($origname, $trapnum, $selector, $trapname);\n"; - print $name, " ", $trapnum, " ", $selector, "\n"; + + if(exists $headerfile{$trapname}) { + if($headerfile{$trapname} ne $f) { + print "Trap in more than one header file: $trapname in $headerfile{$trapname} and $f\n" + } } else { - print $name, ": unknown\n"; - print OUT "PASCAL_SUBTRAP_UNKNOWN($origname, $oldtrapnum, $trapname);\n"; + print "$f:\n"; + print "DISPATCHER_TRAP($trapname, 0x$trapnum, $kinds{$trapnum});\n"; } - } else { - print OUT $l; + $headerfile{$trapname} = $f; } + print OUT $l; } close(OUT); close(INCLUDE); From 02ca6670843bcf4115ab2a3171090508b284e699 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 00:25:13 +0100 Subject: [PATCH 38/88] declare dispatcher traps --- src/include/AliasMgr.h | 2 ++ src/include/AppleEvents.h | 2 ++ src/include/CQuickDraw.h | 5 +++++ src/include/DialogMgr.h | 2 ++ src/include/EditionMgr.h | 2 ++ src/include/FileMgr.h | 2 ++ src/include/FontMgr.h | 2 ++ src/include/HelpMgr.h | 2 ++ src/include/Iconutil.h | 1 + src/include/IntlUtil.h | 3 +-- src/include/ListMgr.h | 2 ++ src/include/PrintMgr.h | 2 ++ src/include/QuickTime.h | 2 ++ src/include/ResourceMgr.h | 4 ++-- src/include/SANE.h | 4 ++++ 15 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/include/AliasMgr.h b/src/include/AliasMgr.h index 3fbe0465..9d7e984e 100644 --- a/src/include/AliasMgr.h +++ b/src/include/AliasMgr.h @@ -26,6 +26,8 @@ enum kFontFolderType = FOURCC('f', 'o', 'n', 't'), }; +DISPATCHER_TRAP(AliasDispatch, 0xA823, D0W); + extern OSErr C_FindFolder(int16_t vRefNum, OSType folderType, Boolean createFolder, GUEST *foundVRefNum, diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 1d99676c..54d94698 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -312,6 +312,8 @@ const LowMemGlobal AE_info { 0x2B6 }; // AppleEvents AEGizmo (true) /* prototypes go here */ +DISPATCHER_TRAP(Pack8, 0xA816, D0W); + extern OSErr C_AEGetCoercionHandler(DescType from_type, DescType to_type, GUEST *hdlr_out, GUEST *refcon_out, GUEST *from_type_is_desc_p_out, Boolean system_handler_p); diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index fff4f9ce..fe48ba0c 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -297,6 +297,11 @@ const LowMemGlobal MainDevice { 0x8A4 }; // QuickDraw IMV (true); const LowMemGlobal DeviceList { 0x8A8 }; // QuickDraw IMV (true); const LowMemGlobal HiliteRGB { 0xDA0 }; // QuickDraw IMV-62 (true); +DISPATCHER_TRAP(PaletteDispatch, 0xAAA2, D0W); +DISPATCHER_TRAP(Pack12, 0xA82E, StackW); +DISPATCHER_TRAP(QDExtensions, 0xAB1D, D0L); +DISPATCHER_TRAP(Pack15, 0xA831, D0W); + extern void C_SetStdCProcs(CQDProcs *cProcs); PASCAL_TRAP(SetStdCProcs, 0xAA4E); diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index a8436712..73ef0d29 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -160,6 +160,8 @@ const LowMemGlobal DABeeper { 0xA9C }; // DialogMgr IMI-411 (true) const LowMemGlobal DAStrings { 0xAA0 }; // DialogMgr IMI-421 (true); const LowMemGlobal DlgFont { 0xAFA }; // DialogMgr IMI-412 (true); +DISPATCHER_TRAP(DialogDispatch, 0xAA68, D0W); + extern INTEGER C_Alert(INTEGER id, ModalFilterProcPtr fp); PASCAL_TRAP(Alert, 0xA985); diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index 23309ae9..ca7c5ed0 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -183,6 +183,8 @@ enum notThePublisherWrn = (-463), }; +DISPATCHER_TRAP(Pack11, 0xA82D, D0W); + extern OSErr C_InitEditionPackVersion(INTEGER unused); PASCAL_SUBTRAP(InitEditionPackVersion, 0xA82D, 0x0100, Pack11); extern OSErr C_NewSection(EditionContainerSpecPtr container, diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index 23a407d7..e7d4f2fd 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -681,6 +681,8 @@ extern OSErrRET PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); extern OSErrRET PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); /* prototypes for the high level filesystem dispatch traps */ +DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0W); + extern OSErr C_FSMakeFSSpec(int16_t vRefNum, int32_t dir_id, Str255 file_name, FSSpecPtr spec); PASCAL_SUBTRAP(FSMakeFSSpec, 0xAA52, 0x0001, HighLevelFSDispatch); diff --git a/src/include/FontMgr.h b/src/include/FontMgr.h index fe5297fd..4f27cabd 100644 --- a/src/include/FontMgr.h +++ b/src/include/FontMgr.h @@ -213,6 +213,8 @@ const LowMemGlobal fondid { 0xBC6 }; // FontMgr ToolEqu.a (true-b); const LowMemGlobal FractEnable { 0xBF4 }; // FontMgr IMIV-32 (true); const LowMemGlobal SynListHandle { 0xD32 }; // FontMgr IMV-182 (false); +DISPATCHER_TRAP(FontDispatch, 0xA854, D0W); + extern void C_InitFonts(void); PASCAL_TRAP(InitFonts, 0xA8FE); diff --git a/src/include/HelpMgr.h b/src/include/HelpMgr.h index 1d24bd63..7da0a0c3 100644 --- a/src/include/HelpMgr.h +++ b/src/include/HelpMgr.h @@ -50,6 +50,8 @@ enum hmCloseViewActive = -863 }; +DISPATCHER_TRAP(Pack14, 0xA830, D0W); + extern BOOLEAN C_HMGetBalloons(void); PASCAL_SUBTRAP(HMGetBalloons, 0xA830, 0x0003, Pack14); diff --git a/src/include/Iconutil.h b/src/include/Iconutil.h index 40c8022c..8935d24b 100644 --- a/src/include/Iconutil.h +++ b/src/include/Iconutil.h @@ -111,6 +111,7 @@ typedef struct CIcon typedef GUEST *CIconHandle; /* icon utility function prototypes */ +DISPATCHER_TRAP(IconDispatch, 0xABC9, D0W); extern OSErr C_PlotIconID(const Rect *rect, IconAlignmentType align, diff --git a/src/include/IntlUtil.h b/src/include/IntlUtil.h index 507e42e1..6418d5dd 100644 --- a/src/include/IntlUtil.h +++ b/src/include/IntlUtil.h @@ -138,8 +138,7 @@ enum abbrevDate = 2, }; - -/* DO NOT DELETE THIS LINE */ +DISPATCHER_TRAP(Pack6, 0xA9ED, StackW); extern void C_IUDatePString(LONGINT date, DateForm form, StringPtr p, Handle h); diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index cf919d85..c1af1534 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -87,6 +87,8 @@ enum lCloseMsg = 3, }; +DISPATCHER_TRAP(Pack0, 0xA9E7, StackW); + extern void C_LFind(GUEST *offsetp, GUEST *lenp, Cell cell, ListHandle list); PASCAL_SUBTRAP(LFind, 0xA9E7, 0x0034, Pack0); diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index 0016ff4a..b0dda993 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -181,6 +181,8 @@ typedef struct TPrDlg const LowMemGlobal PrintErr { 0x944 }; // PrintMgr IMII-161 (true-b); +DISPATCHER_TRAP(_PrGlue, 0xA8FD, StackL); + extern INTEGER C_PrError(void); PASCAL_SUBTRAP(PrError, 0xA8FD, 0xBA000000, _PrGlue); extern void C_PrSetError(INTEGER iErr); diff --git a/src/include/QuickTime.h b/src/include/QuickTime.h index 19345ad8..245f4d81 100644 --- a/src/include/QuickTime.h +++ b/src/include/QuickTime.h @@ -23,6 +23,8 @@ typedef MovieRecord *Movie; typedef LONGINT TimeValue; +DISPATCHER_TRAP(QuickTime, 0xAAAA, D0W); + extern OSErr C_EnterMovies(void); PASCAL_SUBTRAP(EnterMovies, 0xAAAA, 0x0001, QuickTime); extern void C_ExitMovies(void); diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index ccd72ad0..d5cbc621 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -76,8 +76,8 @@ const LowMemGlobal SysResName { 0xAD8 }; // ResourceMgr IMI-114 (true) const LowMemGlobal RomMapInsert { 0xB9E }; // ResourceMgr IMIV-19 (false); const LowMemGlobal TmpResLoad { 0xB9F }; // ResourceMgr IMIV-19 (false); -extern BOOLEAN ROMlib_InstallxDEF(ProcPtr thedef, ResType typ, - INTEGER id); +DISPATCHER_TRAP(ResourceDispatch, 0xA822, D0W); + extern void C_SetResLoad(BOOLEAN load); PASCAL_TRAP(SetResLoad, 0xA99B); diff --git a/src/include/SANE.h b/src/include/SANE.h index d99875bd..228fd6d2 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -142,6 +142,10 @@ enum #define FCMP_RETURN_TYPE void +DISPATCHER_TRAP(Pack4, 0xA9EB, StackWLookahead); +DISPATCHER_TRAP(Pack5, 0xA9EC, StackW); +DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); + extern void C_ROMlib_Fcomp2X(comp sp, extended80 * dp); extern void C_ROMlib_Fsetenv(INTEGER *dp, From de5c1a61965fbc400bdddda85221ad4cd9333a08 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 00:50:11 +0100 Subject: [PATCH 39/88] _PrGlue -> PrGlue --- src/include/PrintMgr.h | 48 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index b0dda993..e75aa0b4 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -181,27 +181,27 @@ typedef struct TPrDlg const LowMemGlobal PrintErr { 0x944 }; // PrintMgr IMII-161 (true-b); -DISPATCHER_TRAP(_PrGlue, 0xA8FD, StackL); +DISPATCHER_TRAP(PrGlue, 0xA8FD, StackL); extern INTEGER C_PrError(void); -PASCAL_SUBTRAP(PrError, 0xA8FD, 0xBA000000, _PrGlue); +PASCAL_SUBTRAP(PrError, 0xA8FD, 0xBA000000, PrGlue); extern void C_PrSetError(INTEGER iErr); -PASCAL_SUBTRAP(PrSetError, 0xA8FD, 0xC0000200, _PrGlue); +PASCAL_SUBTRAP(PrSetError, 0xA8FD, 0xC0000200, PrGlue); extern void C_PrOpen(void); -PASCAL_SUBTRAP(PrOpen, 0xA8FD, 0xC8000000, _PrGlue); +PASCAL_SUBTRAP(PrOpen, 0xA8FD, 0xC8000000, PrGlue); extern void C_PrClose(void); -PASCAL_SUBTRAP(PrClose, 0xA8FD, 0xD0000000, _PrGlue); +PASCAL_SUBTRAP(PrClose, 0xA8FD, 0xD0000000, PrGlue); extern void C_PrDrvrOpen(void); -PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, 0x80000000, _PrGlue); +PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, 0x80000000, PrGlue); extern void C_PrDrvrClose(void); -PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, 0x88000000, _PrGlue); +PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, 0x88000000, PrGlue); extern void C_PrCtlCall(INTEGER iWhichCtl, LONGINT lParam1, LONGINT lParam2, LONGINT lParam3); -PASCAL_SUBTRAP(PrCtlCall, 0xA000, 0xA0000E00, _PrGlue); +PASCAL_SUBTRAP(PrCtlCall, 0xA000, 0xA0000E00, PrGlue); extern Handle C_PrDrvrDCE(void); -PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, 0x94000000, _PrGlue); +PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, 0x94000000, PrGlue); extern INTEGER C_PrDrvrVers(void); -PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, 0x9A000000, _PrGlue); +PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, 0x9A000000, PrGlue); extern void C_ROMlib_myjobproc(DialogPtr dp, INTEGER itemno); PASCAL_FUNCTION(ROMlib_myjobproc); extern BOOLEAN C_ROMlib_stlfilterproc(DialogPtr dp, @@ -216,13 +216,13 @@ extern void C_ROMlib_mystlproc(DialogPtr dp, INTEGER itemno); PASCAL_FUNCTION(ROMlib_mystlproc); extern TPPrDlg C_PrJobInit(THPrint hPrint); -PASCAL_SUBTRAP(PrJobInit, 0xA8FD, 0x44040410, _PrGlue); +PASCAL_SUBTRAP(PrJobInit, 0xA8FD, 0x44040410, PrGlue); extern TPPrDlg C_PrStlInit(THPrint hPrint); -PASCAL_SUBTRAP(PrStlInit, 0xA8FD, 0x3C04040C, _PrGlue); +PASCAL_SUBTRAP(PrStlInit, 0xA8FD, 0x3C04040C, PrGlue); extern BOOLEAN C_PrDlgMain(THPrint hPrint, ProcPtr initfptr); -PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, 0x4A040894, _PrGlue); +PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, 0x4A040894, PrGlue); extern void C_PrGeneral(Ptr pData); -PASCAL_SUBTRAP(PrGeneral, 0xA8FD, 0x70070480, _PrGlue); +PASCAL_SUBTRAP(PrGeneral, 0xA8FD, 0x70070480, PrGlue); extern void C_donotPrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); PASCAL_FUNCTION(donotPrArc); @@ -287,26 +287,26 @@ extern void C_PrComment(INTEGER kind, INTEGER size, Handle hand); PASCAL_FUNCTION(PrComment); extern TPPrPort C_PrOpenDoc(THPrint hPrint, TPPrPort port, Ptr pIOBuf); -PASCAL_SUBTRAP(PrOpenDoc, 0xA8FD, 0x04000C00, _PrGlue); +PASCAL_SUBTRAP(PrOpenDoc, 0xA8FD, 0x04000C00, PrGlue); extern void C_PrOpenPage(TPPrPort port, TPRect pPageFrame); -PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, 0x10000808, _PrGlue); +PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, 0x10000808, PrGlue); extern void C_PrClosePage(TPPrPort pPrPort); -PASCAL_SUBTRAP(PrClosePage, 0xA8FD, 0x1800040C, _PrGlue); +PASCAL_SUBTRAP(PrClosePage, 0xA8FD, 0x1800040C, PrGlue); extern void C_PrCloseDoc(TPPrPort port); -PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, 0x08000484, _PrGlue); +PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, 0x08000484, PrGlue); extern void C_PrPicFile(THPrint hPrint, TPPrPort pPrPort, Ptr pIOBuf, Ptr pDevBuf, TPrStatus *prStatus); -PASCAL_SUBTRAP(PrPicFile, 0xA8FD, 0x60051480, _PrGlue); +PASCAL_SUBTRAP(PrPicFile, 0xA8FD, 0x60051480, PrGlue); extern void C_PrintDefault(THPrint hPrint); -PASCAL_SUBTRAP(PrintDefault, 0xA8FD, 0x20040480, _PrGlue); +PASCAL_SUBTRAP(PrintDefault, 0xA8FD, 0x20040480, PrGlue); extern BOOLEAN C_PrValidate(THPrint hPrint); -PASCAL_SUBTRAP(PrValidate, 0xA8FD, 0x52040498, _PrGlue); +PASCAL_SUBTRAP(PrValidate, 0xA8FD, 0x52040498, PrGlue); extern BOOLEAN C_PrStlDialog(THPrint hPrint); -PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, 0x2A040484, _PrGlue); +PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, 0x2A040484, PrGlue); extern BOOLEAN C_PrJobDialog(THPrint hPrint); -PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, 0x32040488, _PrGlue); +PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, 0x32040488, PrGlue); extern void C_PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst); -PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, 0x5804089C, _PrGlue); +PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, 0x5804089C, PrGlue); } #endif /* __PRINTING__ */ From b48fe248791cf9c86d0dd8a75e016caab79e8ebf Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 01:54:36 +0100 Subject: [PATCH 40/88] another refactoring of functions.cpp initialization --- src/functions.cpp | 83 ++++++++++++++++++------------------ src/include/rsys/ctop_ptoc.h | 2 + src/include/rsys/functions.h | 22 +++++++--- 3 files changed, 60 insertions(+), 47 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index e6c08e79..d26f9851 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -1,8 +1,11 @@ #include #include + +#define FUNCTION_WRAPPER_IMPLEMENTATION +#include namespace { - std::vector initFunctions; + std::vector initObjects; } template @@ -11,8 +14,6 @@ struct NamedThing static const char* name; }; -#define FUNCTION_WRAPPER_IMPLEMENTATION - #include "rsys/everything.h" #include "rsys/emustubs.h" #include "rsys/ctl.h" @@ -355,11 +356,10 @@ template ProcPtr Raw68KFunction::guestFP; template -Raw68KFunction::Raw68KFunction() +void Raw68KFunction::init() { - initFunctions.push_back([]{ - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); - }); + std::cout << "init: " << NamedThing::name << std::endl; + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); } namespace Executor::callconv @@ -473,53 +473,49 @@ struct Invoker -WrappedFunction::WrappedFunction() +void WrappedFunction::init() { - initFunctions.push_back([]{ - guestFP = (UPP)SYN68K_TO_US(callback_install( - Invoker::call, CallConv> - ::invokeFrom68K, nullptr)); - }); + guestFP = (UPP)SYN68K_TO_US(callback_install( + Invoker::call, CallConv> + ::invokeFrom68K, nullptr)); } template -Raw68KTrap::Raw68KTrap() +void Raw68KTrap::init() { + Raw68KFunction::init(); if(trapno) { - initFunctions.push_back([]{ - if(trapno & TOOLBIT) - { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)Raw68KFunction::guestFP); - } - else - { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)Raw68KFunction::guestFP); - } - }); + if(trapno & TOOLBIT) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); + } + else + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + } } } template -PascalTrap::PascalTrap() +void PascalTrap::init() { + WrappedFunction::init(); if(trapno) { - initFunctions.push_back([]{ - if(trapno & TOOLBIT) - { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)WrappedFunction::guestFP)); - } - else - { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)WrappedFunction::guestFP)); - } - }); + if(trapno & TOOLBIT) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)this->guestFP)); + } + else + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)this->guestFP)); + } } } @@ -542,11 +538,16 @@ PascalTrap::operator()(Args... args) cons } } +functions::internal::DeferredInit::DeferredInit() +{ + initObjects.push_back(this); +} void functions::init() { - for(auto f : initFunctions) - (*f)(); + for(auto init : initObjects) + init->init(); + stub_Unimplemented.init(); for(int i = 0; i < NTOOLENTRIES; i++) if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); diff --git a/src/include/rsys/ctop_ptoc.h b/src/include/rsys/ctop_ptoc.h index fe3803f6..3fce1f18 100644 --- a/src/include/rsys/ctop_ptoc.h +++ b/src/include/rsys/ctop_ptoc.h @@ -6,6 +6,8 @@ namespace Executor template struct UPP; +struct Point; + using CTOPCode = uint64_t; namespace ptoc_internal diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index df7d5a4e..3f3ff30a 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -84,6 +84,16 @@ namespace selectors class StackWLookahead; } +namespace internal +{ + class DeferredInit + { + public: + DeferredInit(); + virtual void init() = 0; + }; +} + template class DispatcherTrap { @@ -97,7 +107,7 @@ class DispatcherTrap }; template -class Raw68KFunction +class Raw68KFunction : public internal::DeferredInit { public: ProcPtr operator&() const @@ -105,7 +115,7 @@ class Raw68KFunction return guestFP; } - Raw68KFunction(); + virtual void init() override; protected: static ProcPtr guestFP; }; @@ -114,7 +124,7 @@ template class Raw68KTrap : public Raw68KFunction { public: - Raw68KTrap(); + virtual void init() override; }; @@ -122,7 +132,7 @@ template class WrappedFunction {}; template -class WrappedFunction +class WrappedFunction : public internal::DeferredInit { public: Ret operator()(Args... args) const @@ -135,7 +145,7 @@ class WrappedFunction return guestFP; } - WrappedFunction(); + virtual void init() override; protected: static UPP guestFP; static const char *name; @@ -150,7 +160,7 @@ class PascalTrap : public WrappedFunction public: Ret operator()(Args... args) const; - PascalTrap(); + virtual void init() override; }; #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ From b5cf3b79c3da6a5d0a2e0c980684e121248fa901 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 24 Jan 2018 20:51:28 +0100 Subject: [PATCH 41/88] define callconv::ReturnMemErr, callconv::CCFromD0 --- src/functions.cpp | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index d26f9851..9ebdfb1f 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -392,6 +392,28 @@ template struct TrapBit void afterwards() {} }; + +template struct ReturnMemErr +{ + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + Loc::set(CW(LM(MemErr))); + return ret; + } +}; +struct CCFromD0 +{ + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + cpu_state.ccc = 0; + cpu_state.ccn = (cpu_state.regs[0].sw.n < 0); + cpu_state.ccv = 0; + cpu_state.ccx = cpu_state.ccx; /* unchanged */ + cpu_state.ccnz = (cpu_state.regs[0].sw.n != 0); + return ret; + } +}; + } template @@ -460,18 +482,17 @@ struct Invoker> }; -template -struct Invoker> +template +struct Invoker> { static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) { Extra1 state; - syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); + syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); return state.afterwards(retval); } }; - template void WrappedFunction::init() { From 3925921aeec47ab4915b2d2cc72b65533b633cdc Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 25 Jan 2018 00:17:15 +0100 Subject: [PATCH 42/88] missing DISPATCHER_TRAPs --- src/include/AppleEvents.h | 5 +++-- src/include/MemoryMgr.h | 2 ++ src/include/ScriptMgr.h | 2 ++ src/include/ShutDown.h | 2 ++ src/include/SoundMgr.h | 2 ++ src/include/StdFilePkg.h | 2 ++ src/include/TextEdit.h | 2 ++ 7 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 54d94698..f0f1a452 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -217,6 +217,9 @@ typedef struct typedef AE_info_t *AE_info_ptr; + +DISPATCHER_TRAP(Pack8, 0xA816, D0W); + // "internal". TODO: verify if they really exist as entry points. extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8, GUEST *); @@ -312,8 +315,6 @@ const LowMemGlobal AE_info { 0x2B6 }; // AppleEvents AEGizmo (true) /* prototypes go here */ -DISPATCHER_TRAP(Pack8, 0xA816, D0W); - extern OSErr C_AEGetCoercionHandler(DescType from_type, DescType to_type, GUEST *hdlr_out, GUEST *refcon_out, GUEST *from_type_is_desc_p_out, Boolean system_handler_p); diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index 55963f1f..112599ef 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -191,6 +191,8 @@ extern THz SystemZone(void); extern THz ApplicZone(void); extern Size StackSpace(void); +DISPATCHER_TRAP(OSDispatch, 0xA88F, StackW); + /* temporary memory functions; see tempmem.c */ extern int32_t C_TempFreeMem(void); PASCAL_SUBTRAP(TempFreeMem, 0xA88F, 0x0018, OSDispatch); diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index 42816f94..d404a96b 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -228,6 +228,8 @@ enum const LowMemGlobal TESysJust { 0xBAC }; // ScriptMgr ToolEqu.a (true-b); +DISPATCHER_TRAP(ScriptUtil, 0xA8B5, StackL); + extern LONGINT C_VisibleLength(Ptr textp, LONGINT len); PASCAL_SUBTRAP(VisibleLength, 0xA8B5, 0x84080028, ScriptUtil); diff --git a/src/include/ShutDown.h b/src/include/ShutDown.h index e60d78bf..f6b60ff8 100644 --- a/src/include/ShutDown.h +++ b/src/include/ShutDown.h @@ -12,6 +12,8 @@ enum sdOnRestartOrPower = (sdOnPowerOff + sdOnRestart), }; +DISPATCHER_TRAP(ShutDown, 0xA895, StackW); + extern void C_ShutDwnPower(void); PASCAL_SUBTRAP(ShutDwnPower, 0xA895, 0x0001, ShutDown); extern void C_ShutDwnStart(void); diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index 3c4f81ab..1e62b558 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -215,6 +215,8 @@ typedef void *SPBPtr; typedef uint32_t UnsignedFixed; typedef Ptr CompressionInfoPtr; +DISPATCHER_TRAP(SoundDispatch, 0xA800, D0L); + extern void C_SndGetSysBeepState(GUEST *statep); PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, 0x02180008, SoundDispatch); diff --git a/src/include/StdFilePkg.h b/src/include/StdFilePkg.h index 5eb35926..39999612 100644 --- a/src/include/StdFilePkg.h +++ b/src/include/StdFilePkg.h @@ -103,6 +103,8 @@ enum sfGetDialogID = -6042 }; +DISPATCHER_TRAP(Pack3, 0xA9EA, StackW); + extern void C_ROMlib_filebox(DialogPeek dp, INTEGER which); PASCAL_FUNCTION(ROMlib_filebox); diff --git a/src/include/TextEdit.h b/src/include/TextEdit.h index 7429c081..4c40bd42 100644 --- a/src/include/TextEdit.h +++ b/src/include/TextEdit.h @@ -533,6 +533,8 @@ const LowMemGlobal TERecal { 0xA74 }; // TextEdit IMI-391 (false); const LowMemGlobal TEScrpLength { 0xAB0 }; // TextEdit IMI-389 (true); const LowMemGlobal TEScrpHandle { 0xAB4 }; // TextEdit IMI-389 (true); +DISPATCHER_TRAP(TEDispatch, 0xA83D, StackW); + extern void C_TESetText(Ptr p, LONGINT ln, TEHandle teh); PASCAL_TRAP(TESetText, 0xA9CF); From 435dafbb80eb307d7108f6de9355236f03fe6b7a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 25 Jan 2018 00:17:48 +0100 Subject: [PATCH 43/88] trap dispatchers --- src/functions.cpp | 227 ++++++++++++++++++++++++----------- src/include/rsys/common.h | 2 - src/include/rsys/functions.h | 113 ++++++++++------- src/include/rsys/mactype.h | 2 +- 4 files changed, 226 insertions(+), 118 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 9ebdfb1f..ba6da872 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -1,35 +1,18 @@ #include +#include #include #define FUNCTION_WRAPPER_IMPLEMENTATION #include +#include +#include + namespace { std::vector initObjects; + std::unordered_map namedThings; } -template -struct NamedThing -{ - static const char* name; -}; - -#include "rsys/everything.h" -#include "rsys/emustubs.h" -#include "rsys/ctl.h" -#include "rsys/list.h" -#include "rsys/menu.h" -#include "rsys/wind.h" -#include "rsys/print.h" -#include "rsys/vbl.h" -#include "rsys/stdfile.h" -#include "rsys/tesave.h" -#include "rsys/osutil.h" -#include "rsys/refresh.h" -#include "rsys/gestalt.h" - -#include "rsys/ctop_ptoc.h" - #include #include #include @@ -288,7 +271,7 @@ struct LoggedFunction { static void call(Args... args) { - const char *fname = NamedThing::name; + const char *fname = namedThings.at((void*)fptr); logTrapCall(fname, args...); nestingLevel++; fptr(args...); @@ -302,7 +285,7 @@ struct LoggedFunction { static Ret call(Args... args) { - const char *fname = NamedThing::name; + const char *fname = namedThings.at((void*)fptr); logTrapCall(fname, args...); nestingLevel++; Ret retval = fptr(args...); @@ -330,7 +313,7 @@ void dumpRegsAndStack() template syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) { - const char *fname = NamedThing::name; + const char *fname = namedThings.at((void*)fptr); if(loggingActive()) { std::cout.clear(); @@ -352,17 +335,9 @@ syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) return retaddr; } -template -ProcPtr Raw68KFunction::guestFP; - -template -void Raw68KFunction::init() +namespace Executor { - std::cout << "init: " << NamedThing::name << std::endl; - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); -} - -namespace Executor::callconv +namespace callconv { template struct A { @@ -392,7 +367,7 @@ template struct TrapBit void afterwards() {} }; - +/* template struct ReturnMemErr { syn68k_addr_t afterwards(syn68k_addr_t ret) @@ -400,7 +375,7 @@ template struct ReturnMemErr Loc::set(CW(LM(MemErr))); return ret; } -}; +};*/ struct CCFromD0 { syn68k_addr_t afterwards(syn68k_addr_t ret) @@ -413,12 +388,8 @@ struct CCFromD0 return ret; } }; - } - -template -UPP WrappedFunction::guestFP; - +} template struct Invoker; @@ -432,6 +403,16 @@ struct Invoker return PascalToCCall(addr, &ptocblock); } }; + + +template +struct Invoker +{ + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) + { + return fptr(addr, refcon); + } +}; template struct List; template @@ -493,6 +474,13 @@ struct Invoker +WrappedFunction::WrappedFunction(const char* name) + : name(name) +{ + namedThings[(void*) fptr] = name; +} + template void WrappedFunction::init() { @@ -501,68 +489,165 @@ void WrappedFunction::init() ::invokeFrom68K, nullptr)); } -template -void Raw68KTrap::init() +template +WrappedFunction::WrappedFunction(const char* name) + : name(name) { - Raw68KFunction::init(); + namedThings[(void*) fptr] = name; +} + +template +void WrappedFunction::init() +{ + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); +} + + + +template +void TrapFunction::init() +{ + WrappedFunction::init(); if(trapno) { if(trapno & TOOLBIT) { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K((void*)this->guestFP); + if(!toolflags[trapno & 0x3FF]) + { + toolflags[trapno & 0x3FF] = true; + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)this->guestFP)); + } + else + std::cout << "Not replacing " << std::hex << trapno << " : " << this->name << std::endl; } else { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K((void*)this->guestFP); + if(!osflags[trapno & 0xFF]) + { + osflags[trapno & 0xFF] = true; + ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)this->guestFP)); + } + else + std::cout << "Not replacing " << std::hex << trapno << " : " << this->name << std::endl; } } } +template +SubTrapFunction::SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher) + : WrappedFunction(name), dispatcher(dispatcher) +{ + dispatcher.addSelector(selector, Invoker::call, CallConv> + ::invokeFrom68K); +} -template -void PascalTrap::init() +void GenericDispatcherTrap::addSelector(uint32_t sel, callback_handler_t handler) +{ + selectors[sel] = handler; +} + +template +syn68k_addr_t DispatcherTrap::invokeFrom68K(syn68k_addr_t addr, void* extra) +{ + DispatcherTrap* self = (DispatcherTrap*)extra; + uint32 sel = SelectorConvention::get(); + auto it = self->selectors.find(sel); + if(it != self->selectors.end()) + return it->second(addr, nullptr); + else + { + std::cerr << "Unknown selector " << std::hex << sel << " for trap " << self->name << std::endl; + std::abort(); + } +} +template +void DispatcherTrap::init() { - WrappedFunction::init(); if(trapno) { + ProcPtr guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&invokeFrom68K, this)); if(trapno & TOOLBIT) { toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)this->guestFP)); + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)guestFP)); } else { osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)this->guestFP)); + ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)guestFP)); } } } -template -Ret -PascalTrap::operator()(Args... args) const +functions::internal::DeferredInit::DeferredInit() { - if((trapno & TOOLBIT) == 0) - return (*fptr)(args...); - else + initObjects.push_back(this); +} + +namespace Executor +{ +namespace functions +{ +namespace selectors +{ + +struct D0W +{ + static uint32_t get() { return EM_D0 & 0xFFFF; } +}; +struct D0L +{ + static uint32_t get() { return EM_D0; } +}; + +struct StackW +{ + static uint32_t get() { - // TODO - syn68k_addr_t new_addr = tooltraptable[trapno & (NTOOLENTRIES - 1)]; + auto ret = POPADDR(); + auto sel = POPUW(); + PUSHADDR(ret); + return sel; + } +}; - if(new_addr == toolstuff[trapno & (NTOOLENTRIES - 1)].orig) - return (*fptr)(args...); - else - return UPP(SYN68K_TO_US(new_addr))(args...); +struct StackL +{ + static uint32_t get() + { + auto ret = POPADDR(); + auto sel = POPUL(); + PUSHADDR(ret); + return sel; } -} +}; -functions::internal::DeferredInit::DeferredInit() +struct StackWLookahead { - initObjects.push_back(this); + static uint32_t get() + { + return READUW(EM_A7 + 4); + } +}; + } +} +} + +#include "rsys/everything.h" +#include "rsys/emustubs.h" +#include "rsys/ctl.h" +#include "rsys/list.h" +#include "rsys/menu.h" +#include "rsys/wind.h" +#include "rsys/print.h" +#include "rsys/vbl.h" +#include "rsys/stdfile.h" +#include "rsys/tesave.h" +#include "rsys/osutil.h" +#include "rsys/refresh.h" +#include "rsys/gestalt.h" void functions::init() { @@ -573,7 +658,7 @@ void functions::init() if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); - /*for(int i = 0; i < 0x400; i++) + for(int i = 0; i < 0x400; i++) { bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; if(toolflags[i] != shouldhave) @@ -583,7 +668,7 @@ void functions::init() else std::cout << "Surprising " << std::hex << (0xA800 | i) << std::endl; } - }*/ + } for(int i = 0; i < 0x100; i++) { bool shouldhave = osstuff[i].func != (void*)&_Unimplemented; diff --git a/src/include/rsys/common.h b/src/include/rsys/common.h index d92f4efc..e4fefcb7 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -5,10 +5,8 @@ #define WIN32 /* evil hackage needed to make SDL happy */ #endif -#if !defined(COMPILE_FOR_BUILD) #include "host-os-config.h" #include "host-arch-config.h" -#endif /* !COMPILE_FOR_BUILD */ #if !defined(CYGWIN32) && !defined(WIN32) && defined(USE_WINDOWS_NOT_MAC_TYPEDEFS_AND_DEFINES) #undef USE_WINDOWS_NOT_MAC_TYPEDEFS_AND_DEFINES diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 3f3ff30a..26b9b1a0 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "rsys/trapglue.h" #include "rsys/ctop_ptoc.h" #include @@ -15,6 +16,7 @@ namespace Executor namespace callconv { class Pascal { }; +class Raw { }; template class Register { }; @@ -77,11 +79,11 @@ namespace functions namespace selectors { - class D0W; - class D0L; - class StackW; - class StackL; - class StackWLookahead; + struct D0W; + struct D0L; + struct StackW; + struct StackL; + struct StackWLookahead; } namespace internal @@ -94,40 +96,25 @@ namespace internal }; } -template -class DispatcherTrap +class GenericDispatcherTrap : public internal::DeferredInit { - //std::unordered_map selectors; - - syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void* extra); public: void addSelector(uint32_t sel, callback_handler_t handler); - - void init(); -}; - -template -class Raw68KFunction : public internal::DeferredInit -{ -public: - ProcPtr operator&() const - { - return guestFP; - } - - virtual void init() override; protected: - static ProcPtr guestFP; + std::unordered_map selectors; }; -template -class Raw68KTrap : public Raw68KFunction +template +class DispatcherTrap : public GenericDispatcherTrap { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void* extra); + const char *name; + uint16_t trapno; public: - virtual void init() override; + void init(); + DispatcherTrap(const char* name, uint16_t trapno) : name(name), trapno(trapno) {} }; - template class WrappedFunction {}; @@ -146,26 +133,61 @@ class WrappedFunction : public internal::Deferred } virtual void init() override; + + WrappedFunction(const char* name); protected: - static UPP guestFP; - static const char *name; + UPP guestFP; + const char *name; +}; + +template +class WrappedFunction : public internal::DeferredInit +{ +public: + ProcPtr operator&() const + { + return guestFP; + } + + virtual void init() override; + + WrappedFunction(const char* name); +protected: + ProcPtr guestFP; + const char *name; }; template -class PascalTrap {}; +class TrapFunction {}; template -class PascalTrap : public WrappedFunction +class TrapFunction : public WrappedFunction { public: - Ret operator()(Args... args) const; + Ret operator()(Args... args) const { return fptr(args...); } virtual void init() override; + + TrapFunction(const char* name) : WrappedFunction(name) {} +}; + +template +class SubTrapFunction {}; + +template +class SubTrapFunction : public WrappedFunction +{ +public: + Ret operator()(Args... args) const { return fptr(args...); } + SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher); +private: + GenericDispatcherTrap& dispatcher; }; + #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ -#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, DISPLAYNAME) \ +#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, ...) \ extern Executor::functions::TYPE NAME #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ @@ -173,31 +195,34 @@ class PascalTrap : public WrappedFunction #else -#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, DISPLAYNAME) \ - Executor::functions::TYPE NAME; \ - template class Executor::functions::TYPE; \ - template<> const char * NamedThing::name = DISPLAYNAME +#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, ...) \ + Executor::functions::TYPE NAME(__VA_ARGS__); \ + template class Executor::functions::TYPE; #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - Executor::functions::DispatcherTrap NAME + Executor::functions::DispatcherTrap NAME { #NAME, TRAP } #endif +#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + extern Executor::functions::DispatcherTrap NAME + + #define COMMA , #define PASCAL_TRAP(NAME, TRAP) \ - CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(TrapFunction, NAME, &C_##NAME, #NAME) #define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ - CREATE_FUNCTION_WRAPPER(PascalTrap, NAME, &C_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(SubTrapFunction, NAME, &C_##NAME, #NAME, TRAPNAME) #define NOTRAP_FUNCTION(NAME) \ CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) #define PASCAL_FUNCTION(NAME) \ CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) #define RAW_68K_FUNCTION(NAME) \ syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(Raw68KFunction<&_##NAME>, stub_##NAME, &_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(WrappedFunction, stub_##NAME, &_##NAME, #NAME) #define RAW_68K_TRAP(NAME, TRAP) \ syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(Raw68KTrap<&_##NAME COMMA TRAP>, stub_##NAME, &_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(TrapFunction, stub_##NAME, &_##NAME, #NAME) void resetNestingLevel(); diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index b662ea45..e3da664f 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -7,7 +7,7 @@ * */ - +#include "host-arch-config.h" #include "rsys/macros.h" #include "rsys/types.h" #include From dc8abcf910ac35d7bddb7dc6b7b8104fe18c285e Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 25 Jan 2018 01:26:53 +0100 Subject: [PATCH 44/88] hook up NumToString and StringToNum to the new dispatch logic --- src/bindec.cpp | 4 ++-- src/functions.cpp | 28 +++++++++++++++++++--------- src/include/BinaryDecimal.h | 10 ++++++++-- src/include/rsys/everything.h | 1 + src/include/rsys/functions.h | 15 ++++++++++++--- 5 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/bindec.cpp b/src/bindec.cpp index b9289662..8d81434d 100644 --- a/src/bindec.cpp +++ b/src/bindec.cpp @@ -10,7 +10,7 @@ using namespace Executor; -void Executor::NumToString(LONGINT l, StringPtr s) +void Executor::C_NumToString(LONGINT l, StringPtr s) { Byte *p = s + 1; LONGINT d; @@ -49,7 +49,7 @@ void Executor::NumToString(LONGINT l, StringPtr s) s[0] = p - (s + 1); } -void Executor::StringToNum(StringPtr s, LONGINT *lp) +void Executor::C_StringToNum(StringPtr s, LONGINT *lp) { char *p = (char *)s + 1; char *ep = p + s[0]; diff --git a/src/functions.cpp b/src/functions.cpp index ba6da872..9524c026 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -347,8 +347,6 @@ template struct A operator T*() { return ptr_from_longint(EM_AREG(n)); } static void set(uint32_t x) { EM_AREG(n) = x; } static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } - - void afterwards() {} }; template struct D @@ -356,16 +354,31 @@ template struct D template operator T() { return EM_DREG(n); } static void set(uint32_t x) { EM_DREG(n) = x; } +}; + +template struct Out +{ + T temp; - void afterwards() {} + operator T*() { return &temp; } + + ~Out() { Loc::set(temp); } +}; + +template struct InOut +{ + T temp; + + operator T*() { return &temp; } + + InOut() { temp = Loc(); } + ~InOut() { Loc::set(temp); } }; template struct TrapBit { operator bool() { return !!(EM_D1 & mask); } - - void afterwards() {} }; /* template struct ReturnMemErr @@ -433,10 +446,8 @@ struct InvokerRec, List static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) { CC newarg; - Ret retval = InvokerRec,List,List> + return InvokerRec,List,List> ::invokeFrom68K(addr, refcon, args..., newarg); - newarg.afterwards(); - return retval; } }; @@ -680,5 +691,4 @@ void functions::init() std::cout << "Surprising " << std::hex << (0xA000 | i) << std::endl; } } - } diff --git a/src/include/BinaryDecimal.h b/src/include/BinaryDecimal.h index dd6c0df9..bd93584b 100644 --- a/src/include/BinaryDecimal.h +++ b/src/include/BinaryDecimal.h @@ -9,7 +9,13 @@ namespace Executor { -extern void NumToString(LONGINT l, StringPtr s); -extern void StringToNum(StringPtr s, LONGINT *lp); +EXTERN_DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); + +extern void C_NumToString(LONGINT l, StringPtr s); +REGISTER_SUBTRAP(NumToString, 0xA9EE, 0x0000, Pack7, void (D0, A0)); + +extern void C_StringToNum(StringPtr s, LONGINT *lp); +REGISTER_SUBTRAP(StringToNum, 0xA9EE, 0x0001, Pack7, void (A0, Out)); + } #endif /* __BINDEC__ */ diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index f50f33a2..7461b56d 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -41,6 +41,7 @@ #include "Iconutil.h" #include "PPC.h" #include "QuickTime.h" +#include "BinaryDecimal.h" #include "rsys/file.h" #include "rsys/adb.h" diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 26b9b1a0..a4541816 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -23,14 +23,20 @@ class Register { }; template struct A; template struct D; template struct TrapBit; -template struct Out; -template struct InOut; +template struct Out; +template struct InOut; template struct ReturnMemErr; struct CCFromD0; +using A0 = A<0>; +using A1 = A<1>; +using A2 = A<2>; +using D0 = D<0>; +using D1 = D<1>; +using D2 = D<2>; } - +using namespace callconv; template struct UPP; @@ -213,6 +219,9 @@ class SubTrapFunction : public CREATE_FUNCTION_WRAPPER(TrapFunction, NAME, &C_##NAME, #NAME) #define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ CREATE_FUNCTION_WRAPPER(SubTrapFunction, NAME, &C_##NAME, #NAME, TRAPNAME) +#define REGISTER_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ + CREATE_FUNCTION_WRAPPER(SubTrapFunction>, NAME, &C_##NAME, #NAME, TRAPNAME) + #define NOTRAP_FUNCTION(NAME) \ CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) #define PASCAL_FUNCTION(NAME) \ From f101fd23c40fe3ee9f31f1b632251610576f4fa0 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 25 Jan 2018 01:27:54 +0100 Subject: [PATCH 45/88] don't crash on SetWTitle(window, NULL) (Think C seems to do this) --- src/windDisplay.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/windDisplay.cpp b/src/windDisplay.cpp index dcdb5fd8..fbaf2513 100644 --- a/src/windDisplay.cpp +++ b/src/windDisplay.cpp @@ -18,7 +18,7 @@ using namespace Executor; void Executor::C_SetWTitle(WindowPtr w, StringPtr t) { - if(!w) + if(!w || !t) return; PtrToXHand((Ptr)t, (Handle)WINDOW_TITLE(w), (LONGINT)t[0] + 1); @@ -35,7 +35,7 @@ void Executor::C_SetWTitle(WindowPtr w, StringPtr t) void Executor::C_GetWTitle(WindowPtr w, StringPtr t) { - if(!w) + if(!w || !t) /*-->*/ return; str255assign(t, STARH(WINDOW_TITLE(w))); } From ae9ced1d373976d58500287bf4a297403a2011ac Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 25 Jan 2018 22:31:21 +0100 Subject: [PATCH 46/88] Kill OSErrRET, INTEGERRET, BOOLEANRET - they might have been relevant in a specific old 68K port, but they aren't needed now. --- src/diskinit.cpp | 2 +- src/emustubs.cpp | 2 +- src/fileAccess.cpp | 30 ++++----- src/fileHighlevel.cpp | 4 +- src/hfsMisc.cpp | 2 +- src/hfsXbar.cpp | 112 ++++++++++++++++---------------- src/include/ExMacTypes.h | 5 -- src/include/FileMgr.h | 130 +++++++++++++++++++------------------- src/include/NotifyMgr.h | 4 +- src/include/OSEvent.h | 10 +-- src/include/OSUtil.h | 26 ++++---- src/include/VRetraceMgr.h | 8 +-- src/notify.cpp | 4 +- src/osevent.cpp | 16 ++--- src/osutil.cpp | 26 ++++---- src/teInsert.cpp | 4 +- src/vbl.cpp | 8 +-- 17 files changed, 194 insertions(+), 199 deletions(-) diff --git a/src/diskinit.cpp b/src/diskinit.cpp index 1e6fa488..219c24cf 100644 --- a/src/diskinit.cpp +++ b/src/diskinit.cpp @@ -62,7 +62,7 @@ typedef struct LONGINT pos; } our_file_info_t; -typedef OSErrRET (*func_t)(ParmBlkPtr pb, BOOLEAN async); +typedef OSErr (*func_t)(ParmBlkPtr pb, BOOLEAN async); static OSErr raw_read_write(func_t func, our_file_info_t *op, LONGINT *lengthp, diff --git a/src/emustubs.cpp b/src/emustubs.cpp index bc264997..8caaafa2 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -1908,7 +1908,7 @@ STUB(PrGlue) return do_selector_block(prglueblock, ul >> 27, PrGlue); } -typedef OSErrRET (*fsprocp_t)(void *, BOOLEAN); +typedef OSErr (*fsprocp_t)(void *, BOOLEAN); fsprocp_t hfstab[] = { (fsprocp_t)apparent_nop, /* 0 */ diff --git a/src/fileAccess.cpp b/src/fileAccess.cpp index a87fac51..56ec1391 100644 --- a/src/fileAccess.cpp +++ b/src/fileAccess.cpp @@ -1097,7 +1097,7 @@ OSErr Executor::ufsPBHOpen(HParmBlkPtr pb, return err; } -OSErrRET Executor::OpenDeny(HParmBlkPtr pb, BOOLEAN a) /* IMV-397 */ +OSErr Executor::OpenDeny(HParmBlkPtr pb, BOOLEAN a) /* IMV-397 */ { /* HACK */ HParamBlockRec block; OSErr retval; @@ -1618,63 +1618,63 @@ OSErr Executor::ufsPBClose(ParmBlkPtr pb, BOOLEAN a) /* INTERNAL */ return err; } -OSErrRET Executor::PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHCopyFile(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHCopyFile(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHMapName(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHMapName(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHMapID(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHMapID(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; return retval; } -OSErrRET Executor::PBHMoveRename(HParmBlkPtr pb, BOOLEAN a) +OSErr Executor::PBHMoveRename(HParmBlkPtr pb, BOOLEAN a) { - OSErrRET retval; + OSErr retval; warning_unimplemented(NULL_STRING); retval = paramErr; diff --git a/src/fileHighlevel.cpp b/src/fileHighlevel.cpp index 2b290308..6978a2be 100644 --- a/src/fileHighlevel.cpp +++ b/src/fileHighlevel.cpp @@ -368,7 +368,7 @@ OSErr Executor::C_FSpExchangeFiles(FSSpecPtr src, FSSpecPtr dst) #endif } -typedef OSErrRET (*open_procp)(HParmBlkPtr pb, BOOLEAN sync); +typedef OSErr (*open_procp)(HParmBlkPtr pb, BOOLEAN sync); static OSErr open_helper(FSSpecPtr spec, SignedByte perms, GUEST *refoutp, @@ -477,7 +477,7 @@ OSErr Executor::C_FSpSetFInfo(FSSpecPtr spec, FInfo *fndr_info) return retval; } -typedef OSErrRET (*lock_procp)(HParmBlkPtr pb, BOOLEAN async); +typedef OSErr (*lock_procp)(HParmBlkPtr pb, BOOLEAN async); static OSErr lock_helper(FSSpecPtr spec, lock_procp procp) diff --git a/src/hfsMisc.cpp b/src/hfsMisc.cpp index 21614e24..716aa8e2 100644 --- a/src/hfsMisc.cpp +++ b/src/hfsMisc.cpp @@ -64,7 +64,7 @@ QHdrPtr myGetVCBQHdr(void) * we're looking at hfs or ufs stuff. */ -OSErrRET Executor::PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async) +OSErr Executor::PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async) { filecontrolblock *fcbp, *efcbp; INTEGER i; diff --git a/src/hfsXbar.cpp b/src/hfsXbar.cpp index dc0c0f2d..df105611 100644 --- a/src/hfsXbar.cpp +++ b/src/hfsXbar.cpp @@ -98,7 +98,7 @@ static BOOLEAN hfsfil(IOParam *pb) return false; } -OSErrRET Executor::PBHRename(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHRename(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -109,7 +109,7 @@ OSErrRET Executor::PBHRename(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHCreate(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHCreate(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -120,7 +120,7 @@ OSErrRET Executor::PBHCreate(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBDirCreate(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBDirCreate(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -131,7 +131,7 @@ OSErrRET Executor::PBDirCreate(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHDelete(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHDelete(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -158,7 +158,7 @@ try_to_reopen(DrvQExtra *dqp) int Executor::ROMlib_directdiskaccess = false; -OSErrRET Executor::PBRead(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBRead(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; DrvQExtra *dqp; @@ -281,7 +281,7 @@ OSErrRET Executor::PBRead(ParmBlkPtr pb, BOOLEAN async) #define SOUND_DRIVER_REF (-4) #define ffMode 0 -OSErrRET Executor::PBWrite(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBWrite(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; HVCB *vcbp; @@ -338,7 +338,7 @@ OSErrRET Executor::PBWrite(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBClose(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBClose(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -360,7 +360,7 @@ OSErrRET Executor::PBClose(ParmBlkPtr pb, BOOLEAN async) * PBOpen doesn't require ioBuffer to be 0 in order to open a driver. */ -OSErrRET Executor::PBHOpen(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHOpen(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -374,7 +374,7 @@ OSErrRET Executor::PBHOpen(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBOpenDF(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBOpenDF(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -385,7 +385,7 @@ OSErrRET Executor::PBOpenDF(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHOpenRF(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHOpenRF(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -417,7 +417,7 @@ swappedstr255print (const char *prefix, Str255 sp) } #endif -OSErrRET Executor::PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async) +OSErr Executor::PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async) { OSErr retval; BOOLEAN ishfs; @@ -442,7 +442,7 @@ OSErrRET Executor::PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async) +OSErr Executor::PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async) { OSErr retval; @@ -453,7 +453,7 @@ OSErrRET Executor::PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBCatMove(CMovePBPtr pb, BOOLEAN async) +OSErr Executor::PBCatMove(CMovePBPtr pb, BOOLEAN async) { OSErr retval; @@ -464,7 +464,7 @@ OSErrRET Executor::PBCatMove(CMovePBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetVInfo(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBGetVInfo(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -475,7 +475,7 @@ OSErrRET Executor::PBGetVInfo(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBUnmountVol(ParmBlkPtr pb) +OSErr Executor::PBUnmountVol(ParmBlkPtr pb) { OSErr retval; @@ -486,7 +486,7 @@ OSErrRET Executor::PBUnmountVol(ParmBlkPtr pb) PBRETURN(pb, retval); } -OSErrRET Executor::PBEject(ParmBlkPtr pb) +OSErr Executor::PBEject(ParmBlkPtr pb) { OSErr retval; @@ -497,7 +497,7 @@ OSErrRET Executor::PBEject(ParmBlkPtr pb) PBRETURN(pb, retval); } -OSErrRET Executor::PBAllocate(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBAllocate(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -508,7 +508,7 @@ OSErrRET Executor::PBAllocate(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBAllocContig(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBAllocContig(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -519,7 +519,7 @@ OSErrRET Executor::PBAllocContig(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; BOOLEAN ishfs; @@ -538,7 +538,7 @@ OSErrRET Executor::PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetEOF(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetEOF(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -549,7 +549,7 @@ OSErrRET Executor::PBSetEOF(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBOpen(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBOpen(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -582,7 +582,7 @@ void test_serial(void) } #endif -OSErrRET Executor::PBOpenRF(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBOpenRF(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -593,7 +593,7 @@ OSErrRET Executor::PBOpenRF(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBLockRange(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBLockRange(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -604,7 +604,7 @@ OSErrRET Executor::PBLockRange(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBUnlockRange(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBUnlockRange(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -615,7 +615,7 @@ OSErrRET Executor::PBUnlockRange(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetFPos(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBGetFPos(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -626,7 +626,7 @@ OSErrRET Executor::PBGetFPos(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetFPos(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetFPos(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -637,7 +637,7 @@ OSErrRET Executor::PBSetFPos(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetEOF(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBGetEOF(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -648,7 +648,7 @@ OSErrRET Executor::PBGetEOF(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBFlushFile(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBFlushFile(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -659,7 +659,7 @@ OSErrRET Executor::PBFlushFile(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBCreate(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBCreate(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -670,7 +670,7 @@ OSErrRET Executor::PBCreate(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBDelete(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBDelete(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -681,7 +681,7 @@ OSErrRET Executor::PBDelete(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBOpenWD(WDPBPtr pb, BOOLEAN async) +OSErr Executor::PBOpenWD(WDPBPtr pb, BOOLEAN async) { OSErr retval; @@ -692,7 +692,7 @@ OSErrRET Executor::PBOpenWD(WDPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBCloseWD(WDPBPtr pb, BOOLEAN async) +OSErr Executor::PBCloseWD(WDPBPtr pb, BOOLEAN async) { OSErr retval; @@ -700,7 +700,7 @@ OSErrRET Executor::PBCloseWD(WDPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetWDInfo(WDPBPtr pb, BOOLEAN async) +OSErr Executor::PBGetWDInfo(WDPBPtr pb, BOOLEAN async) { OSErr retval; @@ -708,7 +708,7 @@ OSErrRET Executor::PBGetWDInfo(WDPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetFInfo(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBGetFInfo(ParmBlkPtr pb, BOOLEAN async) { BOOLEAN ishfs; GUEST savep; @@ -727,7 +727,7 @@ OSErrRET Executor::PBGetFInfo(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetFInfo(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetFInfo(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -738,7 +738,7 @@ OSErrRET Executor::PBSetFInfo(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -749,7 +749,7 @@ OSErrRET Executor::PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetFLock(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetFLock(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -760,7 +760,7 @@ OSErrRET Executor::PBSetFLock(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHSetFLock(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHSetFLock(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -771,7 +771,7 @@ OSErrRET Executor::PBHSetFLock(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBRstFLock(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBRstFLock(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -782,7 +782,7 @@ OSErrRET Executor::PBRstFLock(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHRstFLock(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHRstFLock(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -793,7 +793,7 @@ OSErrRET Executor::PBHRstFLock(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetFVers(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetFVers(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -804,7 +804,7 @@ OSErrRET Executor::PBSetFVers(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBRename(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBRename(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -856,7 +856,7 @@ OSErr Executor::PBMountVol(ParmBlkPtr pb) #endif } -OSErrRET Executor::PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -882,7 +882,7 @@ enum | (1L << bNoMiniFndr)) }; -OSErrRET Executor::PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async) { LONGINT dir; HVCB *vcbp; @@ -937,7 +937,7 @@ OSErrRET Executor::PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, err); } -OSErrRET Executor::PBSetVInfo(HParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetVInfo(HParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -948,7 +948,7 @@ OSErrRET Executor::PBSetVInfo(HParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBGetVol(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBGetVol(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -956,7 +956,7 @@ OSErrRET Executor::PBGetVol(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHGetVol(WDPBPtr pb, BOOLEAN async) +OSErr Executor::PBHGetVol(WDPBPtr pb, BOOLEAN async) { OSErr retval; @@ -964,7 +964,7 @@ OSErrRET Executor::PBHGetVol(WDPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBSetVol(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBSetVol(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -972,7 +972,7 @@ OSErrRET Executor::PBSetVol(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBHSetVol(WDPBPtr pb, BOOLEAN async) +OSErr Executor::PBHSetVol(WDPBPtr pb, BOOLEAN async) { OSErr retval; @@ -980,7 +980,7 @@ OSErrRET Executor::PBHSetVol(WDPBPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBFlushVol(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBFlushVol(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -991,7 +991,7 @@ OSErrRET Executor::PBFlushVol(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBOffLine(ParmBlkPtr pb) +OSErr Executor::PBOffLine(ParmBlkPtr pb) { OSErr retval; @@ -1002,7 +1002,7 @@ OSErrRET Executor::PBOffLine(ParmBlkPtr pb) PBRETURN(pb, retval); } -OSErrRET Executor::PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -1011,7 +1011,7 @@ OSErrRET Executor::PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBCatSearch(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBCatSearch(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -1020,7 +1020,7 @@ OSErrRET Executor::PBCatSearch(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -1029,7 +1029,7 @@ OSErrRET Executor::PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; @@ -1038,7 +1038,7 @@ OSErrRET Executor::PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async) FAKEASYNC(pb, async, retval); } -OSErrRET Executor::PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async) +OSErr Executor::PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async) { OSErr retval; diff --git a/src/include/ExMacTypes.h b/src/include/ExMacTypes.h index 0480511b..368b6e2d 100644 --- a/src/include/ExMacTypes.h +++ b/src/include/ExMacTypes.h @@ -58,11 +58,6 @@ typedef INTEGER OSErr; typedef LONGINT OSType; typedef LONGINT ResType; -typedef LONGINT OSErrRET; /* for smashing d0 just like the Mac */ -typedef LONGINT INTEGERRET; -typedef LONGINT BOOLEANRET; -typedef LONGINT SignedByteRET; - struct QHdr { GUEST_STRUCT; diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index e7d4f2fd..deecbb33 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -587,14 +587,14 @@ extern OSErr AllocContig(INTEGER rn, GUEST *count); extern OSErr FSClose(INTEGER rn); extern void ROMlib_rewinddir(void); -extern OSErrRET OpenDeny(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHCopyFile(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHMapID(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHMapName(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a); -extern OSErrRET PBHMoveRename(HParmBlkPtr pb, BOOLEAN a); +extern OSErr OpenDeny(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHCopyFile(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHMapID(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHMapName(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a); +extern OSErr PBHMoveRename(HParmBlkPtr pb, BOOLEAN a); extern OSErr Create(StringPtr filen, INTEGER vrn, OSType creator, OSType filtyp); extern OSErr FSDelete(StringPtr filen, INTEGER vrn); @@ -621,64 +621,64 @@ extern OSErr SetVol(StringPtr voln, INTEGER vrn); extern OSErr FlushVol(StringPtr voln, INTEGER vrn); extern OSErr UnmountVol(StringPtr voln, INTEGER vrn); extern OSErr Eject(StringPtr voln, INTEGER vrn); -extern OSErrRET PBHRename(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHCreate(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBDirCreate(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHDelete(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBRead(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBWrite(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBClose(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHOpen(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBOpenDF(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHOpenRF(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async); -extern OSErrRET PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async); -extern OSErrRET PBCatMove(CMovePBPtr pb, BOOLEAN async); -extern OSErrRET PBGetVInfo(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBUnmountVol(ParmBlkPtr pb); -extern OSErrRET PBEject(ParmBlkPtr pb); -extern OSErrRET PBAllocate(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBAllocContig(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetEOF(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBOpen(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBOpenRF(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBLockRange(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBUnlockRange(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBGetFPos(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetFPos(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBGetEOF(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBFlushFile(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBCreate(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBDelete(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBOpenWD(WDPBPtr pb, BOOLEAN async); -extern OSErrRET PBCloseWD(WDPBPtr pb, BOOLEAN async); -extern OSErrRET PBGetWDInfo(WDPBPtr pb, BOOLEAN async); -extern OSErrRET PBGetFInfo(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetFInfo(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetFLock(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHSetFLock(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBRstFLock(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHRstFLock(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetFVers(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBRename(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); +extern OSErr PBHRename(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHCreate(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBDirCreate(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHDelete(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBRead(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBWrite(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBClose(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHOpen(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBOpenDF(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHOpenRF(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async); +extern OSErr PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async); +extern OSErr PBCatMove(CMovePBPtr pb, BOOLEAN async); +extern OSErr PBGetVInfo(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBUnmountVol(ParmBlkPtr pb); +extern OSErr PBEject(ParmBlkPtr pb); +extern OSErr PBAllocate(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBAllocContig(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetEOF(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBOpen(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBOpenRF(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBLockRange(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBUnlockRange(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBGetFPos(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetFPos(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBGetEOF(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBFlushFile(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBCreate(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBDelete(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBOpenWD(WDPBPtr pb, BOOLEAN async); +extern OSErr PBCloseWD(WDPBPtr pb, BOOLEAN async); +extern OSErr PBGetWDInfo(WDPBPtr pb, BOOLEAN async); +extern OSErr PBGetFInfo(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetFInfo(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetFLock(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHSetFLock(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBRstFLock(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHRstFLock(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetFVers(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBRename(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); extern OSErr PBMountVol(ParmBlkPtr pb); -extern OSErrRET PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBGetVol(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHGetVol(WDPBPtr pb, BOOLEAN async); -extern OSErrRET PBSetVol(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBHSetVol(WDPBPtr pb, BOOLEAN async); -extern OSErrRET PBFlushVol(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBOffLine(ParmBlkPtr pb); -extern OSErrRET PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBCatSearch(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErrRET PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBGetVol(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetVol(WDPBPtr pb, BOOLEAN async); +extern OSErr PBSetVol(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHSetVol(WDPBPtr pb, BOOLEAN async); +extern OSErr PBFlushVol(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBOffLine(ParmBlkPtr pb); +extern OSErr PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBCatSearch(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); /* prototypes for the high level filesystem dispatch traps */ DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0W); diff --git a/src/include/NotifyMgr.h b/src/include/NotifyMgr.h index 1e8b0773..dfce305b 100644 --- a/src/include/NotifyMgr.h +++ b/src/include/NotifyMgr.h @@ -28,7 +28,7 @@ typedef struct NMRec GUEST nmRefCon; } * NMRecPtr; -extern OSErrRET NMInstall(NMRecPtr nmptr); -extern OSErrRET NMRemove(NMRecPtr nmptr); +extern OSErr NMInstall(NMRecPtr nmptr); +extern OSErr NMRemove(NMRecPtr nmptr); } #endif /* __NOTIFYMGR__ */ diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index 97b7172b..f3968a55 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -99,15 +99,15 @@ const LowMemGlobal MouseLocation2 { 0x830 }; // QuickDraw MacAttack (true extern void ROMlib_eventdep(void); extern void insertcommonevent(char *xeventp, commonevent *comevtp); extern void ROMlib_zapmap(LONGINT loc, LONGINT val); -extern OSErrRET PPostEvent(INTEGER evcode, +extern OSErr PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelp); -extern OSErrRET ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, +extern OSErr ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelp, LONGINT when, Point where, INTEGER butmods); -extern OSErrRET PostEvent(INTEGER evcode, LONGINT evmsg); +extern OSErr PostEvent(INTEGER evcode, LONGINT evmsg); extern void FlushEvents(INTEGER evmask, INTEGER stopmask); -extern BOOLEANRET GetOSEvent(INTEGER evmask, EventRecord *eventp); -extern BOOLEANRET OSEventAvail(INTEGER evmask, +extern BOOLEAN GetOSEvent(INTEGER evmask, EventRecord *eventp); +extern BOOLEAN OSEventAvail(INTEGER evmask, EventRecord *eventp); extern void SetEventMask(INTEGER evmask); extern QHdrPtr GetEvQHdr(void); diff --git a/src/include/OSUtil.h b/src/include/OSUtil.h index b8ac347b..a447952c 100644 --- a/src/include/OSUtil.h +++ b/src/include/OSUtil.h @@ -157,31 +157,31 @@ const LowMemGlobal MMU32Bit { 0xCB2 }; // OSUtil IMV-592 (true-b); const LowMemGlobal DTQueue { 0xD92 }; // OSUtil IMV-466 (false); const LowMemGlobal JDTInstall { 0xD9C }; // OSUtil IMV (false); -extern OSErrRET HandToHand(Handle *h); -extern OSErrRET PtrToHand(Ptr p, Handle *h, LONGINT s); -extern OSErrRET PtrToXHand(Ptr p, Handle h, LONGINT s); -extern OSErrRET HandAndHand(Handle h1, Handle h2); -extern OSErrRET PtrAndHand(Ptr p, Handle h, LONGINT s1); +extern OSErr HandToHand(Handle *h); +extern OSErr PtrToHand(Ptr p, Handle *h, LONGINT s); +extern OSErr PtrToXHand(Ptr p, Handle h, LONGINT s); +extern OSErr HandAndHand(Handle h1, Handle h2); +extern OSErr PtrAndHand(Ptr p, Handle h, LONGINT s1); extern LONGINT ROMlib_RelString(unsigned char *s1, unsigned char *s2, BOOLEAN casesig, BOOLEAN diacsig, LONGINT d0); -extern INTEGERRET RelString(StringPtr s1, StringPtr s2, +extern INTEGER RelString(StringPtr s1, StringPtr s2, BOOLEAN casesig, BOOLEAN diacsig); -extern BOOLEANRET EqualString(StringPtr s1, StringPtr s2, +extern BOOLEAN EqualString(StringPtr s1, StringPtr s2, BOOLEAN casesig, BOOLEAN diacsig); extern void ROMlib_UprString(StringPtr s, BOOLEAN diac, INTEGER len); extern void UprString(StringPtr s, BOOLEAN diac); extern void GetDateTime(GUEST *mactimepointer); -extern OSErrRET ReadDateTime(GUEST *secs); -extern OSErrRET SetDateTime(ULONGINT mactime); +extern OSErr ReadDateTime(GUEST *secs); +extern OSErr SetDateTime(ULONGINT mactime); extern void Date2Secs(DateTimeRec *d, ULONGINT *s); extern void Secs2Date(ULONGINT mactime, DateTimeRec *d); extern void GetTime(DateTimeRec *d); extern void SetTime(DateTimeRec *d); -extern OSErrRET InitUtil(void); +extern OSErr InitUtil(void); extern SysPPtr GetSysPPtr(void); -extern OSErrRET WriteParam(void); +extern OSErr WriteParam(void); extern void Enqueue(QElemPtr e, QHdrPtr h); -extern OSErrRET Dequeue(QElemPtr e, QHdrPtr h); +extern OSErr Dequeue(QElemPtr e, QHdrPtr h); extern LONGINT GetTrapAddress(INTEGER n); extern LONGINT NGetTrapAddress(INTEGER n, INTEGER ttype); extern void SetTrapAddress(LONGINT addr, @@ -191,7 +191,7 @@ extern void C_SysBeep(INTEGER i); PASCAL_TRAP(SysBeep, 0xA9C8); extern void Environs(GUEST *rom, GUEST *machine); -extern OSErrRET SysEnvirons(INTEGER vers, SysEnvRecPtr p); +extern OSErr SysEnvirons(INTEGER vers, SysEnvRecPtr p); extern void Restart(void); extern void SetUpA5(void); extern void RestoreA5(void); diff --git a/src/include/VRetraceMgr.h b/src/include/VRetraceMgr.h index eea0d66a..3235b693 100644 --- a/src/include/VRetraceMgr.h +++ b/src/include/VRetraceMgr.h @@ -32,10 +32,10 @@ const LowMemGlobal VBLQueue { 0x160 }; // VRetraceMgr IMII-352 (true); const LowMemGlobal JVBLTask { 0xD28 }; // VRetraceMgr IMV (false); extern void ROMlib_clockonoff(LONGINT onoroff); -extern OSErrRET VInstall(VBLTaskPtr vtaskp); -extern OSErrRET VRemove(VBLTaskPtr vtaskp); +extern OSErr VInstall(VBLTaskPtr vtaskp); +extern OSErr VRemove(VBLTaskPtr vtaskp); extern QHdrPtr GetVBLQHdr(void); -extern OSErrRET SlotVInstall(VBLTaskPtr vtaskp, INTEGER slot); -extern OSErrRET SlotVRemove(VBLTaskPtr vtaskp, INTEGER slot); +extern OSErr SlotVInstall(VBLTaskPtr vtaskp, INTEGER slot); +extern OSErr SlotVRemove(VBLTaskPtr vtaskp, INTEGER slot); } #endif /* __VRETRACE__ */ diff --git a/src/notify.cpp b/src/notify.cpp index 6687febc..85164cce 100644 --- a/src/notify.cpp +++ b/src/notify.cpp @@ -20,12 +20,12 @@ typedef void nmfunc(NMRecPtr nmptr); * D0: result code */ -OSErrRET Executor::NMRemove(NMRecPtr nmptr) +OSErr Executor::NMRemove(NMRecPtr nmptr) { return noErr; } -OSErrRET Executor::NMInstall(NMRecPtr nmptr) +OSErr Executor::NMInstall(NMRecPtr nmptr) { /* The multiple beeps and delays that used to be here make OpenProlog * really irritating to use. diff --git a/src/osevent.cpp b/src/osevent.cpp index bd8f0100..75186682 100644 --- a/src/osevent.cpp +++ b/src/osevent.cpp @@ -206,7 +206,7 @@ void Executor::ROMlib_eventinit(bool graphics_valid_p) /* INTERNAL */ } static void dropevent(EvQEl *); -static OSErrRET _PPostEvent(INTEGER evcode, LONGINT evmsg, +static OSErr _PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelpp); static BOOLEAN OSEventCommon(INTEGER evmask, EventRecord *eventp, BOOLEAN dropit); @@ -278,7 +278,7 @@ key_down(uint8 loc) return retval; } -OSErrRET Executor::PPostEvent(INTEGER evcode, LONGINT evmsg, +OSErr Executor::PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelp) /* IMIV-85 */ { EvQEl *qp; @@ -341,10 +341,10 @@ OSErrRET Executor::PPostEvent(INTEGER evcode, LONGINT evmsg, return noErr; } -static OSErrRET _PPostEvent(INTEGER evcode, LONGINT evmsg, +static OSErr _PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelpp) { - OSErrRET ret; + OSErr ret; syn68k_addr_t proc; GUEST retquelp; @@ -369,7 +369,7 @@ static OSErrRET _PPostEvent(INTEGER evcode, LONGINT evmsg, return ret; } -OSErrRET Executor::ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, +OSErr Executor::ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, GUEST *qelp, LONGINT when, Point where, INTEGER butmods) { @@ -380,7 +380,7 @@ OSErrRET Executor::ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, return _PPostEvent(evcode, evmsg, qelp); } -OSErrRET Executor::PostEvent(INTEGER evcode, LONGINT evmsg) +OSErr Executor::PostEvent(INTEGER evcode, LONGINT evmsg) { return _PPostEvent(evcode, evmsg, (GUEST *)0); } @@ -604,12 +604,12 @@ static BOOLEAN OSEventCommon(INTEGER evmask, EventRecord *eventp, return retval; } -BOOLEANRET Executor::GetOSEvent(INTEGER evmask, EventRecord *eventp) +BOOLEAN Executor::GetOSEvent(INTEGER evmask, EventRecord *eventp) { return OSEventCommon(evmask, eventp, true); } -BOOLEANRET Executor::OSEventAvail(INTEGER evmask, EventRecord *eventp) +BOOLEAN Executor::OSEventAvail(INTEGER evmask, EventRecord *eventp) { return OSEventCommon(evmask, eventp, false); } diff --git a/src/osutil.cpp b/src/osutil.cpp index cb3201a8..9ae6517d 100644 --- a/src/osutil.cpp +++ b/src/osutil.cpp @@ -35,7 +35,7 @@ using namespace Executor; * Hence, the handle that hp points to is not swapped. */ -OSErrRET Executor::HandToHand(Handle *hp) +OSErr Executor::HandToHand(Handle *hp) { Handle nh; Size s; @@ -65,7 +65,7 @@ OSErrRET Executor::HandToHand(Handle *hp) * h points to isn't swapped. */ -OSErrRET Executor::PtrToHand(Ptr p, Handle *h, LONGINT s) +OSErr Executor::PtrToHand(Ptr p, Handle *h, LONGINT s) { Handle nh; OSErr err; @@ -80,7 +80,7 @@ OSErrRET Executor::PtrToHand(Ptr p, Handle *h, LONGINT s) return (noErr); } -OSErrRET Executor::PtrToXHand(Ptr p, Handle h, LONGINT s) +OSErr Executor::PtrToXHand(Ptr p, Handle h, LONGINT s) { OSErr err; @@ -96,7 +96,7 @@ OSErrRET Executor::PtrToXHand(Ptr p, Handle h, LONGINT s) return (noErr); } -OSErrRET Executor::HandAndHand(Handle h1, Handle h2) +OSErr Executor::HandAndHand(Handle h1, Handle h2) { Size s1 = GetHandleSize(h1), s2 = GetHandleSize(h2); OSErr err; @@ -110,7 +110,7 @@ OSErrRET Executor::HandAndHand(Handle h1, Handle h2) return (noErr); } -OSErrRET Executor::PtrAndHand(Ptr p, Handle h, LONGINT s1) +OSErr Executor::PtrAndHand(Ptr p, Handle h, LONGINT s1) { Size s2 = GetHandleSize(h); OSErr err; @@ -271,7 +271,7 @@ LONGINT Executor::ROMlib_RelString(unsigned char *s1, unsigned char *s2, return 0; } -INTEGERRET Executor::RelString(StringPtr s1, StringPtr s2, BOOLEAN casesig, +INTEGER Executor::RelString(StringPtr s1, StringPtr s2, BOOLEAN casesig, BOOLEAN diacsig) { return ROMlib_RelString((unsigned char *)s1 + 1, (unsigned char *)s2 + 1, @@ -279,7 +279,7 @@ INTEGERRET Executor::RelString(StringPtr s1, StringPtr s2, BOOLEAN casesig, (LONGINT)(unsigned char)s1[0] << 16 | (unsigned char)s2[0]); } -BOOLEANRET Executor::EqualString(StringPtr s1, StringPtr s2, BOOLEAN casesig, +BOOLEAN Executor::EqualString(StringPtr s1, StringPtr s2, BOOLEAN casesig, BOOLEAN diacsig) { return RelString(s1, s2, casesig, diacsig) ? false : true; @@ -341,13 +341,13 @@ void Executor::GetDateTime(GUEST *mactimepointer) } } -OSErrRET Executor::ReadDateTime(GUEST *secs) +OSErr Executor::ReadDateTime(GUEST *secs) { GetDateTime(secs); return (noErr); } -OSErrRET Executor::SetDateTime(ULONGINT mactime) +OSErr Executor::SetDateTime(ULONGINT mactime) { #if !defined(SYSV) && !defined(WIN32) struct timeval thetime; @@ -701,7 +701,7 @@ static void deriveglobals() LM(DoubleTime) = CL((short)(LM(SPClikCaret) & 0xF0) / 4); } -OSErrRET Executor::InitUtil() /* IMII-380 */ +OSErr Executor::InitUtil() /* IMII-380 */ { INTEGER rn; SysParmType sp; @@ -750,7 +750,7 @@ SysPPtr Executor::GetSysPPtr() /* IMII-381 */ return (SysPPtr)&LM(SPValid); } -OSErrRET Executor::WriteParam() /* IMII-382 */ +OSErr Executor::WriteParam() /* IMII-382 */ { INTEGER rn; SysParmType sp; @@ -804,7 +804,7 @@ void Executor::Enqueue(QElemPtr e, QHdrPtr h) restore_virtual_ints(block); } -OSErrRET Executor::Dequeue(QElemPtr e, QHdrPtr h) +OSErr Executor::Dequeue(QElemPtr e, QHdrPtr h) { GUEST *qpp; OSErr retval; @@ -901,7 +901,7 @@ void Executor::Environs(GUEST *rom, GUEST *machine) INTEGER ROMlib_processor = env68040; -OSErrRET Executor::SysEnvirons(INTEGER vers, SysEnvRecPtr p) +OSErr Executor::SysEnvirons(INTEGER vers, SysEnvRecPtr p) { if(vers <= 0) /*-->*/ return envBadVers; diff --git a/src/teInsert.cpp b/src/teInsert.cpp index 0258f353..602f128c 100644 --- a/src/teInsert.cpp +++ b/src/teInsert.cpp @@ -805,9 +805,9 @@ int16_t Executor::C_ROMlib_dotext(TEPtr tep, int16_t start, int16_t end, return 0; } -INTEGERRET ROMlib_dotext(void) +INTEGER ROMlib_dotext(void) { - INTEGERRET retval; + INTEGER retval; TEPtr tep; INTEGER first, last, what; diff --git a/src/vbl.cpp b/src/vbl.cpp index d0cea065..c89fcc63 100644 --- a/src/vbl.cpp +++ b/src/vbl.cpp @@ -166,12 +166,12 @@ void Executor::ROMlib_clockonoff(LONGINT onoroff) stopclock(); } -OSErrRET Executor::SlotVInstall(VBLTaskPtr vtaskp, INTEGER slot) +OSErr Executor::SlotVInstall(VBLTaskPtr vtaskp, INTEGER slot) { return VInstall(vtaskp); } -OSErrRET Executor::VInstall(VBLTaskPtr vtaskp) +OSErr Executor::VInstall(VBLTaskPtr vtaskp) { static GUEST m68k_rts = CWC(0x4E75); /* RTS */ @@ -195,12 +195,12 @@ OSErrRET Executor::VInstall(VBLTaskPtr vtaskp) return vTypErr; } -OSErrRET Executor::SlotVRemove(VBLTaskPtr vtaskp, INTEGER slot) +OSErr Executor::SlotVRemove(VBLTaskPtr vtaskp, INTEGER slot) { return VRemove(vtaskp); } -OSErrRET Executor::VRemove(VBLTaskPtr vtaskp) +OSErr Executor::VRemove(VBLTaskPtr vtaskp) { if(vtaskp->qType == CWC((INTEGER)vType)) { From 3a9d6d99562ee9274ced964b1d01b535d6d8560a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 10:31:58 +0100 Subject: [PATCH 47/88] add 0x prefix in Unknown selector error message --- src/functions.cpp | 1036 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1033 insertions(+), 3 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 9524c026..4bcecf57 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -567,7 +567,7 @@ syn68k_addr_t DispatcherTrap::invokeFrom68K(syn68k_addr_t ad return it->second(addr, nullptr); else { - std::cerr << "Unknown selector " << std::hex << sel << " for trap " << self->name << std::endl; + std::cerr << "Unknown selector 0x" << std::hex << sel << " for trap " << self->name << std::endl; std::abort(); } } @@ -660,18 +660,1048 @@ struct StackWLookahead #include "rsys/refresh.h" #include "rsys/gestalt.h" + +bool toolexpect[0x400] = { + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + false, + true, + true, + true, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, /* AA52 */ + false, + false, + false, + false, + false, + false, + false, + false, /* AA5A */ + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, +}; + void functions::init() { for(auto init : initObjects) init->init(); stub_Unimplemented.init(); for(int i = 0; i < NTOOLENTRIES; i++) + { if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); - + } for(int i = 0; i < 0x400; i++) { - bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; +/// bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; + bool shouldhave = toolexpect[i]; if(toolflags[i] != shouldhave) { if(shouldhave) From a51a769c0a5ed15c3db21585c452f5ab54476407 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 14:53:32 +0100 Subject: [PATCH 48/88] remove check for trap table completeness, it has done its job --- src/functions.cpp | 1041 +-------------------------------------------- 1 file changed, 2 insertions(+), 1039 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 4bcecf57..959527a8 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -661,1033 +661,6 @@ struct StackWLookahead #include "rsys/gestalt.h" -bool toolexpect[0x400] = { - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - false, - true, - true, - true, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, /* AA52 */ - false, - false, - false, - false, - false, - false, - false, - false, /* AA5A */ - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - false, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, -}; - void functions::init() { for(auto init : initObjects) @@ -1698,18 +671,8 @@ void functions::init() if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); } - for(int i = 0; i < 0x400; i++) - { -/// bool shouldhave = toolstuff[i].ptoc.wheretogo != (void*)&_Unimplemented; - bool shouldhave = toolexpect[i]; - if(toolflags[i] != shouldhave) - { - if(shouldhave) - std::cout << "Missing " << std::hex << (0xA800 | i) << std::endl; - else - std::cout << "Surprising " << std::hex << (0xA800 | i) << std::endl; - } - } + + for(int i = 0; i < 0x100; i++) { bool shouldhave = osstuff[i].func != (void*)&_Unimplemented; From e3a206ab183c11286586e5c6ffb2c03f4826e161 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 14:55:37 +0100 Subject: [PATCH 49/88] deal with non-significant bits in trap selectors --- src/functions.cpp | 31 +++++++++++++++++-------------- src/include/CQuickDraw.h | 4 ++-- src/include/FileMgr.h | 2 +- src/include/FontMgr.h | 2 +- src/include/HelpMgr.h | 2 +- src/include/ResourceMgr.h | 2 +- src/include/SANE.h | 2 +- src/include/SoundMgr.h | 2 +- src/include/rsys/functions.h | 14 +++++++++----- 9 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 959527a8..5eebd2d2 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -552,11 +552,6 @@ SubTrapFunction::SubTrapFunctio ::invokeFrom68K); } -void GenericDispatcherTrap::addSelector(uint32_t sel, callback_handler_t handler) -{ - selectors[sel] = handler; -} - template syn68k_addr_t DispatcherTrap::invokeFrom68K(syn68k_addr_t addr, void* extra) { @@ -571,6 +566,14 @@ syn68k_addr_t DispatcherTrap::invokeFrom68K(syn68k_addr_t ad std::abort(); } } +template +void DispatcherTrap::addSelector(uint32_t sel, callback_handler_t handler) +{ + selectors[sel & SelectorConvention::selectorMask] = handler; +} + + + template void DispatcherTrap::init() { @@ -602,18 +605,16 @@ namespace functions { namespace selectors { - -struct D0W -{ - static uint32_t get() { return EM_D0 & 0xFFFF; } -}; -struct D0L +template +struct D0 { - static uint32_t get() { return EM_D0; } + static const uint32_t selectorMask = mask; + static uint32_t get() { return EM_D0 & mask; } }; struct StackW { + static const uint32_t selectorMask = 0xFFFF; static uint32_t get() { auto ret = POPADDR(); @@ -625,6 +626,7 @@ struct StackW struct StackL { + static const uint32_t selectorMask = 0xFFFFFFFF; static uint32_t get() { auto ret = POPADDR(); @@ -633,12 +635,13 @@ struct StackL return sel; } }; - +template struct StackWLookahead { + static const uint32_t selectorMask = mask; static uint32_t get() { - return READUW(EM_A7 + 4); + return READUW(EM_A7 + 4) & mask; } }; diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index fe48ba0c..bec629c4 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -297,10 +297,10 @@ const LowMemGlobal MainDevice { 0x8A4 }; // QuickDraw IMV (true); const LowMemGlobal DeviceList { 0x8A8 }; // QuickDraw IMV (true); const LowMemGlobal HiliteRGB { 0xDA0 }; // QuickDraw IMV-62 (true); -DISPATCHER_TRAP(PaletteDispatch, 0xAAA2, D0W); +DISPATCHER_TRAP(PaletteDispatch, 0xAAA2, D0W); // D0<0xFF> ### DISPATCHER_TRAP(Pack12, 0xA82E, StackW); DISPATCHER_TRAP(QDExtensions, 0xAB1D, D0L); -DISPATCHER_TRAP(Pack15, 0xA831, D0W); +DISPATCHER_TRAP(Pack15, 0xA831, D0W); // D0<0xFF>? ### extern void C_SetStdCProcs(CQDProcs *cProcs); PASCAL_TRAP(SetStdCProcs, 0xAA4E); diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index deecbb33..fc0e34c9 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -681,7 +681,7 @@ extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); /* prototypes for the high level filesystem dispatch traps */ -DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0W); +DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0<0xF>); extern OSErr C_FSMakeFSSpec(int16_t vRefNum, int32_t dir_id, Str255 file_name, FSSpecPtr spec); diff --git a/src/include/FontMgr.h b/src/include/FontMgr.h index 4f27cabd..2ec59f21 100644 --- a/src/include/FontMgr.h +++ b/src/include/FontMgr.h @@ -213,7 +213,7 @@ const LowMemGlobal fondid { 0xBC6 }; // FontMgr ToolEqu.a (true-b); const LowMemGlobal FractEnable { 0xBF4 }; // FontMgr IMIV-32 (true); const LowMemGlobal SynListHandle { 0xD32 }; // FontMgr IMV-182 (false); -DISPATCHER_TRAP(FontDispatch, 0xA854, D0W); +DISPATCHER_TRAP(FontDispatch, 0xA854, D0<0xF>); extern void C_InitFonts(void); PASCAL_TRAP(InitFonts, 0xA8FE); diff --git a/src/include/HelpMgr.h b/src/include/HelpMgr.h index 7da0a0c3..814df647 100644 --- a/src/include/HelpMgr.h +++ b/src/include/HelpMgr.h @@ -50,7 +50,7 @@ enum hmCloseViewActive = -863 }; -DISPATCHER_TRAP(Pack14, 0xA830, D0W); +DISPATCHER_TRAP(Pack14, 0xA830, D0W); // & 0xFF ? ### extern BOOLEAN C_HMGetBalloons(void); PASCAL_SUBTRAP(HMGetBalloons, 0xA830, 0x0003, Pack14); diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index d5cbc621..530f0587 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -76,7 +76,7 @@ const LowMemGlobal SysResName { 0xAD8 }; // ResourceMgr IMI-114 (true) const LowMemGlobal RomMapInsert { 0xB9E }; // ResourceMgr IMIV-19 (false); const LowMemGlobal TmpResLoad { 0xB9F }; // ResourceMgr IMIV-19 (false); -DISPATCHER_TRAP(ResourceDispatch, 0xA822, D0W); +DISPATCHER_TRAP(ResourceDispatch, 0xA822, D0<0xF>); extern void C_SetResLoad(BOOLEAN load); PASCAL_TRAP(SetResLoad, 0xA99B); diff --git a/src/include/SANE.h b/src/include/SANE.h index 228fd6d2..ea58efa4 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -142,7 +142,7 @@ enum #define FCMP_RETURN_TYPE void -DISPATCHER_TRAP(Pack4, 0xA9EB, StackWLookahead); +DISPATCHER_TRAP(Pack4, 0xA9EB, StackWLookahead<0xFF>); DISPATCHER_TRAP(Pack5, 0xA9EC, StackW); DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index 1e62b558..68d63984 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -215,7 +215,7 @@ typedef void *SPBPtr; typedef uint32_t UnsignedFixed; typedef Ptr CompressionInfoPtr; -DISPATCHER_TRAP(SoundDispatch, 0xA800, D0L); +DISPATCHER_TRAP(SoundDispatch, 0xA800, D0<0xFFFFFF>); extern void C_SndGetSysBeepState(GUEST *statep); PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, 0x02180008, SoundDispatch); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index a4541816..c62a91d0 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -85,11 +85,12 @@ namespace functions namespace selectors { - struct D0W; - struct D0L; + template struct D0; + using D0W = D0<0xFFFF>; + using D0L = D0<0xFFFFFFFF>; struct StackW; struct StackL; - struct StackWLookahead; + template struct StackWLookahead; } namespace internal @@ -105,7 +106,7 @@ namespace internal class GenericDispatcherTrap : public internal::DeferredInit { public: - void addSelector(uint32_t sel, callback_handler_t handler); + virtual void addSelector(uint32_t sel, callback_handler_t handler) = 0; protected: std::unordered_map selectors; }; @@ -117,7 +118,8 @@ class DispatcherTrap : public GenericDispatcherTrap const char *name; uint16_t trapno; public: - void init(); + virtual void init() override; + virtual void addSelector(uint32_t sel, callback_handler_t handler) override; DispatcherTrap(const char* name, uint16_t trapno) : name(name), trapno(trapno) {} }; @@ -175,6 +177,8 @@ class TrapFunction : public WrappedFuncti virtual void init() override; TrapFunction(const char* name) : WrappedFunction(name) {} + + bool isPatched() const { return false; } }; template From 938019fbf499a3dcfd6713c9a0126e022e861488 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 14:57:07 +0100 Subject: [PATCH 50/88] remove toolstuff --- src/emustubs.cpp | 4 +- src/emutraptables.cpp | 1038 ----------------------------------- src/include/rsys/trapglue.h | 7 - src/qBit.cpp | 3 +- 4 files changed, 3 insertions(+), 1049 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 8caaafa2..80808787 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -270,14 +270,14 @@ do_selector_error(uint32_t selector, char buf[256]; /* search for the trap fp in the trap tables */ - +/* for(i = 0; i < 0x400; i++) if(toolstuff[i].ptoc.wheretogo == trap_fp) { trapno = i + 0xA800; found_trapno_p = true; break; - } + }*/ if(!found_trapno_p) for(i = 0; i < 0x100; i++) if(osstuff[i].func == trap_fp) diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 1cbb9652..0651c5ea 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -64,1044 +64,6 @@ void Executor::C_unknown574(void) { } -static const toolstuff_t unimplemented_toolstuff = { { (void *)&_Unimplemented, static_cast(-1) }, 0 }; - -toolstuff_t Executor::toolstuff[0x400] = { - { { (void *)&_SoundDispatch, static_cast(-1) }, 0 }, - { { (void *)&C_SndDisposeChannel, ptoc(&C_SndDisposeChannel) }, 0 }, - { { (void *)&C_SndAddModifier, ptoc(&C_SndAddModifier) }, 0 }, - { { (void *)&C_SndDoCommand, ptoc(&C_SndDoCommand) }, 0 }, - { { (void *)&C_SndDoImmediate, ptoc(&C_SndDoImmediate) }, 0 }, - { { (void *)&C_SndPlay, ptoc(&C_SndPlay) }, 0 }, - { { (void *)&C_SndControl, ptoc(&C_SndControl) }, 0 }, - { { (void *)&C_SndNewChannel, ptoc(&C_SndNewChannel) }, 0 }, - { { (void *)&C_InitProcMenu, ptoc(&C_InitProcMenu) }, 0 }, - { { (void *)&C_GetCVariant, ptoc(&C_GetCVariant) }, 0 }, - { { (void *)&C_GetWVariant, ptoc(&C_GetWVariant) }, 0 }, - { { (void *)&C_PopUpMenuSelect, ptoc(&C_PopUpMenuSelect) }, 0 }, - { { (void *)&C_RGetResource, ptoc(&C_RGetResource) }, 0 }, - { { (void *)&C_Count1Resources, ptoc(&C_Count1Resources) }, 0 }, - { { (void *)&C_Get1IndResource, ptoc(&C_Get1IndResource) }, 0 }, - { { (void *)&C_Get1IndType, ptoc(&C_Get1IndType) }, 0 }, - { { (void *)&C_Unique1ID, ptoc(&C_Unique1ID) }, 0 }, - { { (void *)&C_TESelView, ptoc(&C_TESelView) }, 0 }, - { { (void *)&C_TEPinScroll, ptoc(&C_TEPinScroll) }, 0 }, - { { (void *)&C_TEAutoView, ptoc(&C_TEAutoView) }, 0 }, - { { (void *)&C_SetFractEnable, ptoc(&C_SetFractEnable) }, 0 }, - { { (void *)&_SCSIDispatch, static_cast(-1) }, 0 }, - { { (void *)&_Pack8, static_cast(-1) }, 0 }, - { { (void *)&C_CopyMask, ptoc(&C_CopyMask) }, 0 }, - { { (void *)&C_FixAtan2, ptoc(&C_FixAtan2) }, 0 }, - { { (void *)&_Unimplemented, static_cast(-1) }, 0 }, - { { (void *)&C_HOpenResFile, ptoc(&C_HOpenResFile) }, 0 }, - { { (void *)&C_HCreateResFile, ptoc(&C_HCreateResFile) }, 0 }, - { { (void *)&C_Count1Types, ptoc(&C_Count1Types) }, 0 }, - { { (void *)&C_InvalMenuBar, ptoc(&C_InvalMenuBar) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_Get1Resource, ptoc(&C_Get1Resource) }, 0 }, - { { (void *)&C_Get1NamedResource, ptoc(&C_Get1NamedResource) }, 0 }, - { { (void *)&C_MaxSizeRsrc, ptoc(&C_MaxSizeRsrc) }, 0 }, - { { (void *)&_ResourceDispatch, static_cast(-1) }, 0 }, - { { (void *)&_AliasDispatch, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&C_InsMenuItem, ptoc(&C_InsMenuItem) }, 0 }, - { { (void *)&C_HideDItem, ptoc(&C_HideDItem) }, 0 }, - { { (void *)&C_ShowDItem, ptoc(&C_ShowDItem) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&_Pack9, static_cast(-1) }, 0 }, - { { (void *)&_Pack10, static_cast(-1) }, 0 }, - { { (void *)&_Pack11, static_cast(-1) }, 0 }, - { { (void *)&_Pack12, static_cast(-1) }, 0 }, - { { (void *)&_Pack13, static_cast(-1) }, 0 }, - { { (void *)&_Pack14, static_cast(-1) }, 0 }, - { { (void *)&_Pack15, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&C_SetFScaleDisable, ptoc(&C_SetFScaleDisable) }, 0 }, - { { (void *)&C_FontMetrics, ptoc(&C_FontMetrics) }, 0 }, - { { (void *)&_GetMaskTable, static_cast(-1) }, 0 }, - { { (void *)&C_MeasureText, ptoc(&C_MeasureText) }, 0 }, - { { (void *)&C_CalcMask, ptoc(&C_CalcMask) }, 0 }, - { { (void *)&C_SeedFill, ptoc(&C_SeedFill) }, 0 }, - { { (void *)&C_ZoomWindow, ptoc(&C_ZoomWindow) }, 0 }, - { { (void *)&C_TrackBox, ptoc(&C_TrackBox) }, 0 }, - { { (void *)&C_TEGetOffset, ptoc(&C_TEGetOffset) }, 0 }, - { { (void *)&_TEDispatch, static_cast(-1) }, 0 }, - { { (void *)&C_TEStylNew, ptoc(&C_TEStylNew) }, 0 }, - { { (void *)&C_Long2Fix, ptoc(&C_Long2Fix) }, 0 }, - { { (void *)&C_Fix2Long, ptoc(&C_Fix2Long) }, 0 }, - { { (void *)&C_Fix2Frac, ptoc(&C_Fix2Frac) }, 0 }, - { { (void *)&C_Frac2Fix, ptoc(&C_Frac2Fix) }, 0 }, - { { (void *)&_Fix2X, static_cast(-1) }, 0 }, - { { (void *)&C_R_X2Fix, ptoc(&C_R_X2Fix) }, 0 }, - { { (void *)&_Frac2X, static_cast(-1) }, 0 }, - { { (void *)&C_R_X2Frac, ptoc(&C_R_X2Frac) }, 0 }, - { { (void *)&C_FracCos, ptoc(&C_FracCos) }, 0 }, - { { (void *)&C_FracSin, ptoc(&C_FracSin) }, 0 }, - { { (void *)&C_FracSqrt, ptoc(&C_FracSqrt) }, 0 }, - { { (void *)&C_FracMul, ptoc(&C_FracMul) }, 0 }, - { { (void *)&C_FracDiv, ptoc(&C_FracDiv) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_FixDiv, ptoc(&C_FixDiv) }, 0 }, - { { (void *)&C_GetItemCmd, ptoc(&C_GetItemCmd) }, 0 }, - { { (void *)&C_SetItemCmd, ptoc(&C_SetItemCmd) }, 0 }, - { { (void *)&C_InitCursor, ptoc(&C_InitCursor) }, 0 }, - { { (void *)&C_SetCursor, ptoc(&C_SetCursor) }, 0 }, - { { (void *)&C_HideCursor, ptoc(&C_HideCursor) }, 0 }, - { { (void *)&C_ShowCursor, ptoc(&C_ShowCursor) }, 0 }, - { { (void *)&_FontDispatch, static_cast(-1) }, 0 }, - { { (void *)&C_ShieldCursor, ptoc(&C_ShieldCursor) }, 0 }, - { { (void *)&C_ObscureCursor, ptoc(&C_ObscureCursor) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_BitAnd, ptoc(&C_BitAnd) }, 0 }, - { { (void *)&C_BitXor, ptoc(&C_BitXor) }, 0 }, - { { (void *)&C_BitNot, ptoc(&C_BitNot) }, 0 }, - { { (void *)&C_BitOr, ptoc(&C_BitOr) }, 0 }, - { { (void *)&C_BitShift, ptoc(&C_BitShift) }, 0 }, - { { (void *)&C_BitTst, ptoc(&C_BitTst) }, 0 }, - { { (void *)&C_BitSet, ptoc(&C_BitSet) }, 0 }, - { { (void *)&C_BitClr, ptoc(&C_BitClr) }, 0 }, - { { (void *)&C_WaitNextEvent, ptoc(&C_WaitNextEvent) }, 0 }, - { { (void *)&C_Random, ptoc(&C_Random) }, 0 }, - { { (void *)&C_ForeColor, ptoc(&C_ForeColor) }, 0 }, - { { (void *)&C_BackColor, ptoc(&C_BackColor) }, 0 }, - { { (void *)&C_ColorBit, ptoc(&C_ColorBit) }, 0 }, - { { (void *)&C_GetPixel, ptoc(&C_GetPixel) }, 0 }, - { { (void *)&C_StuffHex, ptoc(&C_StuffHex) }, 0 }, - { { (void *)&C_LongMul, ptoc(&C_LongMul) }, 0 }, - { { (void *)&C_FixMul, ptoc(&C_FixMul) }, 0 }, - { { (void *)&C_FixRatio, ptoc(&C_FixRatio) }, 0 }, - { { (void *)&C_HiWord, ptoc(&C_HiWord) }, 0 }, - { { (void *)&C_LoWord, ptoc(&C_LoWord) }, 0 }, - { { (void *)&C_FixRound, ptoc(&C_FixRound) }, 0 }, - { { (void *)&C_InitPort, ptoc(&C_InitPort) }, 0 }, - { { (void *)&C_InitGraf, ptoc(&C_InitGraf) }, 0 }, - { { (void *)&C_OpenPort, ptoc(&C_OpenPort) }, 0 }, - { { (void *)&C_LocalToGlobal, ptoc(&C_LocalToGlobal) }, 0 }, - { { (void *)&C_GlobalToLocal, ptoc(&C_GlobalToLocal) }, 0 }, - { { (void *)&C_GrafDevice, ptoc(&C_GrafDevice) }, 0 }, - { { (void *)&C_SetPort, ptoc(&C_SetPort) }, 0 }, - { { (void *)&C_GetPort, ptoc(&C_GetPort) }, 0 }, - { { (void *)&C_SetPortBits, ptoc(&C_SetPortBits) }, 0 }, - { { (void *)&C_PortSize, ptoc(&C_PortSize) }, 0 }, - { { (void *)&C_MovePortTo, ptoc(&C_MovePortTo) }, 0 }, - { { (void *)&C_SetOrigin, ptoc(&C_SetOrigin) }, 0 }, - { { (void *)&C_SetClip, ptoc(&C_SetClip) }, 0 }, - { { (void *)&C_GetClip, ptoc(&C_GetClip) }, 0 }, - { { (void *)&C_ClipRect, ptoc(&C_ClipRect) }, 0 }, - { { (void *)&C_BackPat, ptoc(&C_BackPat) }, 0 }, - { { (void *)&C_ClosePort, ptoc(&C_ClosePort) }, 0 }, - { { (void *)&C_AddPt, ptoc(&C_AddPt) }, 0 }, - { { (void *)&C_SubPt, ptoc(&C_SubPt) }, 0 }, - { { (void *)&C_SetPt, ptoc(&C_SetPt) }, 0 }, - { { (void *)&C_EqualPt, ptoc(&C_EqualPt) }, 0 }, - { { (void *)&C_StdText, ptoc(&C_StdText) }, 0 }, - { { (void *)&C_DrawChar, ptoc(&C_DrawChar) }, 0 }, - { { (void *)&C_DrawString, ptoc(&C_DrawString) }, 0 }, - { { (void *)&C_DrawText, ptoc(&C_DrawText) }, 0 }, - { { (void *)&C_TextWidth, ptoc(&C_TextWidth) }, 0 }, - { { (void *)&C_TextFont, ptoc(&C_TextFont) }, 0 }, - { { (void *)&C_TextFace, ptoc(&C_TextFace) }, 0 }, - { { (void *)&C_TextMode, ptoc(&C_TextMode) }, 0 }, - { { (void *)&C_TextSize, ptoc(&C_TextSize) }, 0 }, - { { (void *)&C_GetFontInfo, ptoc(&C_GetFontInfo) }, 0 }, - { { (void *)&C_StringWidth, ptoc(&C_StringWidth) }, 0 }, - { { (void *)&C_CharWidth, ptoc(&C_CharWidth) }, 0 }, - { { (void *)&C_SpaceExtra, ptoc(&C_SpaceExtra) }, 0 }, - { { (void *)&_OSDispatch, static_cast(-1) }, 0 }, - { { (void *)&C_StdLine, ptoc(&C_StdLine) }, 0 }, - { { (void *)&C_LineTo, ptoc(&C_LineTo) }, 0 }, - { { (void *)&C_Line, ptoc(&C_Line) }, 0 }, - { { (void *)&C_MoveTo, ptoc(&C_MoveTo) }, 0 }, - { { (void *)&C_Move, ptoc(&C_Move) }, 0 }, - { { (void *)&_ShutDown, static_cast(-1) }, 0 }, - { { (void *)&C_HidePen, ptoc(&C_HidePen) }, 0 }, - { { (void *)&C_ShowPen, ptoc(&C_ShowPen) }, 0 }, - { { (void *)&C_GetPenState, ptoc(&C_GetPenState) }, 0 }, - { { (void *)&C_SetPenState, ptoc(&C_SetPenState) }, 0 }, - { { (void *)&C_GetPen, ptoc(&C_GetPen) }, 0 }, - { { (void *)&C_PenSize, ptoc(&C_PenSize) }, 0 }, - { { (void *)&C_PenMode, ptoc(&C_PenMode) }, 0 }, - { { (void *)&C_PenPat, ptoc(&C_PenPat) }, 0 }, - { { (void *)&C_PenNormal, ptoc(&C_PenNormal) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_StdRect, ptoc(&C_StdRect) }, 0 }, - { { (void *)&C_FrameRect, ptoc(&C_FrameRect) }, 0 }, - { { (void *)&C_PaintRect, ptoc(&C_PaintRect) }, 0 }, - { { (void *)&C_EraseRect, ptoc(&C_EraseRect) }, 0 }, - { { (void *)&C_InvertRect, ptoc(&C_InvertRect) }, 0 }, - { { (void *)&C_FillRect, ptoc(&C_FillRect) }, 0 }, - { { (void *)&C_EqualRect, ptoc(&C_EqualRect) }, 0 }, - { { (void *)&C_SetRect, ptoc(&C_SetRect) }, 0 }, - { { (void *)&C_OffsetRect, ptoc(&C_OffsetRect) }, 0 }, - { { (void *)&C_InsetRect, ptoc(&C_InsetRect) }, 0 }, - { { (void *)&C_SectRect, ptoc(&C_SectRect) }, 0 }, - { { (void *)&C_UnionRect, ptoc(&C_UnionRect) }, 0 }, - { { (void *)&C_Pt2Rect, ptoc(&C_Pt2Rect) }, 0 }, - { { (void *)&C_PtInRect, ptoc(&C_PtInRect) }, 0 }, - { { (void *)&C_EmptyRect, ptoc(&C_EmptyRect) }, 0 }, - { { (void *)&C_StdRRect, ptoc(&C_StdRRect) }, 0 }, - { { (void *)&C_FrameRoundRect, ptoc(&C_FrameRoundRect) }, 0 }, - { { (void *)&C_PaintRoundRect, ptoc(&C_PaintRoundRect) }, 0 }, - { { (void *)&C_EraseRoundRect, ptoc(&C_EraseRoundRect) }, 0 }, - { { (void *)&C_InvertRoundRect, ptoc(&C_InvertRoundRect) }, 0 }, - { { (void *)&C_FillRoundRect, ptoc(&C_FillRoundRect) }, 0 }, - { { (void *)&_ScriptUtil, static_cast(-1) }, 0 }, - { { (void *)&C_StdOval, ptoc(&C_StdOval) }, 0 }, - { { (void *)&C_FrameOval, ptoc(&C_FrameOval) }, 0 }, - { { (void *)&C_PaintOval, ptoc(&C_PaintOval) }, 0 }, - { { (void *)&C_EraseOval, ptoc(&C_EraseOval) }, 0 }, - { { (void *)&C_InvertOval, ptoc(&C_InvertOval) }, 0 }, - { { (void *)&C_FillOval, ptoc(&C_FillOval) }, 0 }, - { { (void *)&C_SlopeFromAngle, ptoc(&C_SlopeFromAngle) }, 0 }, - { { (void *)&C_StdArc, ptoc(&C_StdArc) }, 0 }, - { { (void *)&C_FrameArc, ptoc(&C_FrameArc) }, 0 }, - { { (void *)&C_PaintArc, ptoc(&C_PaintArc) }, 0 }, - { { (void *)&C_EraseArc, ptoc(&C_EraseArc) }, 0 }, - { { (void *)&C_InvertArc, ptoc(&C_InvertArc) }, 0 }, - { { (void *)&C_FillArc, ptoc(&C_FillArc) }, 0 }, - { { (void *)&C_PtToAngle, ptoc(&C_PtToAngle) }, 0 }, - { { (void *)&C_AngleFromSlope, ptoc(&C_AngleFromSlope) }, 0 }, - { { (void *)&C_StdPoly, ptoc(&C_StdPoly) }, 0 }, - { { (void *)&C_FramePoly, ptoc(&C_FramePoly) }, 0 }, - { { (void *)&C_PaintPoly, ptoc(&C_PaintPoly) }, 0 }, - { { (void *)&C_ErasePoly, ptoc(&C_ErasePoly) }, 0 }, - { { (void *)&C_InvertPoly, ptoc(&C_InvertPoly) }, 0 }, - { { (void *)&C_FillPoly, ptoc(&C_FillPoly) }, 0 }, - { { (void *)&C_OpenPoly, ptoc(&C_OpenPoly) }, 0 }, - { { (void *)&C_ClosePoly, ptoc(&C_ClosePoly) }, 0 }, - { { (void *)&C_KillPoly, ptoc(&C_KillPoly) }, 0 }, - { { (void *)&C_OffsetPoly, ptoc(&C_OffsetPoly) }, 0 }, - { { (void *)&C_PackBits, ptoc(&C_PackBits) }, 0 }, - { { (void *)&C_UnpackBits, ptoc(&C_UnpackBits) }, 0 }, - { { (void *)&C_StdRgn, ptoc(&C_StdRgn) }, 0 }, - { { (void *)&C_FrameRgn, ptoc(&C_FrameRgn) }, 0 }, - { { (void *)&C_PaintRgn, ptoc(&C_PaintRgn) }, 0 }, - { { (void *)&C_EraseRgn, ptoc(&C_EraseRgn) }, 0 }, - { { (void *)&C_InvertRgn, ptoc(&C_InvertRgn) }, 0 }, - { { (void *)&C_FillRgn, ptoc(&C_FillRgn) }, 0 }, - { { (void *)&C_BitMapToRegion, ptoc(&C_BitMapToRegion) }, 0 }, - { { (void *)&C_NewRgn, ptoc(&C_NewRgn) }, 0 }, - { { (void *)&C_DisposeRgn, ptoc(&C_DisposeRgn) }, 0 }, - { { (void *)&C_OpenRgn, ptoc(&C_OpenRgn) }, 0 }, - { { (void *)&C_CloseRgn, ptoc(&C_CloseRgn) }, 0 }, - { { (void *)&C_CopyRgn, ptoc(&C_CopyRgn) }, 0 }, - { { (void *)&C_SetEmptyRgn, ptoc(&C_SetEmptyRgn) }, 0 }, - { { (void *)&C_SetRectRgn, ptoc(&C_SetRectRgn) }, 0 }, - { { (void *)&C_RectRgn, ptoc(&C_RectRgn) }, 0 }, - { { (void *)&C_OffsetRgn, ptoc(&C_OffsetRgn) }, 0 }, - { { (void *)&C_InsetRgn, ptoc(&C_InsetRgn) }, 0 }, - { { (void *)&C_EmptyRgn, ptoc(&C_EmptyRgn) }, 0 }, - { { (void *)&C_EqualRgn, ptoc(&C_EqualRgn) }, 0 }, - { { (void *)&C_SectRgn, ptoc(&C_SectRgn) }, 0 }, - { { (void *)&C_UnionRgn, ptoc(&C_UnionRgn) }, 0 }, - { { (void *)&C_DiffRgn, ptoc(&C_DiffRgn) }, 0 }, - { { (void *)&C_XorRgn, ptoc(&C_XorRgn) }, 0 }, - { { (void *)&C_PtInRgn, ptoc(&C_PtInRgn) }, 0 }, - { { (void *)&C_RectInRgn, ptoc(&C_RectInRgn) }, 0 }, - { { (void *)&C_SetStdProcs, ptoc(&C_SetStdProcs) }, 0 }, - { { (void *)&C_StdBits, ptoc(&C_StdBits) }, 0 }, - { { (void *)&C_CopyBits, ptoc(&C_CopyBits) }, 0 }, - { { (void *)&C_StdTxMeas, ptoc(&C_StdTxMeas) }, 0 }, - { { (void *)&C_StdGetPic, ptoc(&C_StdGetPic) }, 0 }, - { { (void *)&C_ScrollRect, ptoc(&C_ScrollRect) }, 0 }, - { { (void *)&C_StdPutPic, ptoc(&C_StdPutPic) }, 0 }, - { { (void *)&C_StdComment, ptoc(&C_StdComment) }, 0 }, - { { (void *)&C_PicComment, ptoc(&C_PicComment) }, 0 }, - { { (void *)&C_OpenPicture, ptoc(&C_OpenPicture) }, 0 }, - { { (void *)&C_ClosePicture, ptoc(&C_ClosePicture) }, 0 }, - { { (void *)&C_KillPicture, ptoc(&C_KillPicture) }, 0 }, - { { (void *)&C_DrawPicture, ptoc(&C_DrawPicture) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_ScalePt, ptoc(&C_ScalePt) }, 0 }, - { { (void *)&C_MapPt, ptoc(&C_MapPt) }, 0 }, - { { (void *)&C_MapRect, ptoc(&C_MapRect) }, 0 }, - { { (void *)&C_MapRgn, ptoc(&C_MapRgn) }, 0 }, - { { (void *)&C_MapPoly, ptoc(&C_MapPoly) }, 0 }, - { { (void *)&_PrGlue, static_cast(-1) }, 0 }, - { { (void *)&C_InitFonts, ptoc(&C_InitFonts) }, 0 }, - { { (void *)&C_GetFontName, ptoc(&C_GetFontName) }, 0 }, - { { (void *)&C_GetFNum, ptoc(&C_GetFNum) }, 0 }, - { { (void *)&C_FMSwapFont, ptoc(&C_FMSwapFont) }, 0 }, - { { (void *)&C_RealFont, ptoc(&C_RealFont) }, 0 }, - { { (void *)&C_SetFontLock, ptoc(&C_SetFontLock) }, 0 }, - { { (void *)&C_DrawGrowIcon, ptoc(&C_DrawGrowIcon) }, 0 }, - { { (void *)&C_DragGrayRgn, ptoc(&C_DragGrayRgn) }, 0 }, - { { (void *)&C_NewString, ptoc(&C_NewString) }, 0 }, - { { (void *)&C_SetString, ptoc(&C_SetString) }, 0 }, - { { (void *)&C_ShowHide, ptoc(&C_ShowHide) }, 0 }, - { { (void *)&C_CalcVis, ptoc(&C_CalcVis) }, 0 }, - { { (void *)&C_CalcVisBehind, ptoc(&C_CalcVisBehind) }, 0 }, - { { (void *)&C_ClipAbove, ptoc(&C_ClipAbove) }, 0 }, - { { (void *)&C_PaintOne, ptoc(&C_PaintOne) }, 0 }, - { { (void *)&C_PaintBehind, ptoc(&C_PaintBehind) }, 0 }, - { { (void *)&C_SaveOld, ptoc(&C_SaveOld) }, 0 }, - { { (void *)&C_DrawNew, ptoc(&C_DrawNew) }, 0 }, - { { (void *)&C_GetWMgrPort, ptoc(&C_GetWMgrPort) }, 0 }, - { { (void *)&C_CheckUpdate, ptoc(&C_CheckUpdate) }, 0 }, - { { (void *)&C_InitWindows, ptoc(&C_InitWindows) }, 0 }, - { { (void *)&C_NewWindow, ptoc(&C_NewWindow) }, 0 }, - { { (void *)&C_DisposeWindow, ptoc(&C_DisposeWindow) }, 0 }, - { { (void *)&C_ShowWindow, ptoc(&C_ShowWindow) }, 0 }, - { { (void *)&C_HideWindow, ptoc(&C_HideWindow) }, 0 }, - { { (void *)&C_GetWRefCon, ptoc(&C_GetWRefCon) }, 0 }, - { { (void *)&C_SetWRefCon, ptoc(&C_SetWRefCon) }, 0 }, - { { (void *)&C_GetWTitle, ptoc(&C_GetWTitle) }, 0 }, - { { (void *)&C_SetWTitle, ptoc(&C_SetWTitle) }, 0 }, - { { (void *)&C_MoveWindow, ptoc(&C_MoveWindow) }, 0 }, - { { (void *)&C_HiliteWindow, ptoc(&C_HiliteWindow) }, 0 }, - { { (void *)&C_SizeWindow, ptoc(&C_SizeWindow) }, 0 }, - { { (void *)&C_TrackGoAway, ptoc(&C_TrackGoAway) }, 0 }, - { { (void *)&C_SelectWindow, ptoc(&C_SelectWindow) }, 0 }, - { { (void *)&C_BringToFront, ptoc(&C_BringToFront) }, 0 }, - { { (void *)&C_SendBehind, ptoc(&C_SendBehind) }, 0 }, - { { (void *)&C_BeginUpdate, ptoc(&C_BeginUpdate) }, 0 }, - { { (void *)&C_EndUpdate, ptoc(&C_EndUpdate) }, 0 }, - { { (void *)&C_FrontWindow, ptoc(&C_FrontWindow) }, 0 }, - { { (void *)&C_DragWindow, ptoc(&C_DragWindow) }, 0 }, - { { (void *)&C_DragTheRgn, ptoc(&C_DragTheRgn) }, 0 }, - { { (void *)&C_InvalRgn, ptoc(&C_InvalRgn) }, 0 }, - { { (void *)&C_InvalRect, ptoc(&C_InvalRect) }, 0 }, - { { (void *)&C_ValidRgn, ptoc(&C_ValidRgn) }, 0 }, - { { (void *)&C_ValidRect, ptoc(&C_ValidRect) }, 0 }, - { { (void *)&C_GrowWindow, ptoc(&C_GrowWindow) }, 0 }, - { { (void *)&C_FindWindow, ptoc(&C_FindWindow) }, 0 }, - { { (void *)&C_CloseWindow, ptoc(&C_CloseWindow) }, 0 }, - { { (void *)&C_SetWindowPic, ptoc(&C_SetWindowPic) }, 0 }, - { { (void *)&C_GetWindowPic, ptoc(&C_GetWindowPic) }, 0 }, - { { (void *)&C_InitMenus, ptoc(&C_InitMenus) }, 0 }, - { { (void *)&C_NewMenu, ptoc(&C_NewMenu) }, 0 }, - { { (void *)&C_DisposeMenu, ptoc(&C_DisposeMenu) }, 0 }, - { { (void *)&C_AppendMenu, ptoc(&C_AppendMenu) }, 0 }, - { { (void *)&C_ClearMenuBar, ptoc(&C_ClearMenuBar) }, 0 }, - { { (void *)&C_InsertMenu, ptoc(&C_InsertMenu) }, 0 }, - { { (void *)&C_DeleteMenu, ptoc(&C_DeleteMenu) }, 0 }, - { { (void *)&C_DrawMenuBar, ptoc(&C_DrawMenuBar) }, 0 }, - { { (void *)&C_HiliteMenu, ptoc(&C_HiliteMenu) }, 0 }, - { { (void *)&C_EnableItem, ptoc(&C_EnableItem) }, 0 }, - { { (void *)&C_DisableItem, ptoc(&C_DisableItem) }, 0 }, - { { (void *)&C_GetMenuBar, ptoc(&C_GetMenuBar) }, 0 }, - { { (void *)&C_SetMenuBar, ptoc(&C_SetMenuBar) }, 0 }, - { { (void *)&C_MenuSelect, ptoc(&C_MenuSelect) }, 0 }, - { { (void *)&C_MenuKey, ptoc(&C_MenuKey) }, 0 }, - { { (void *)&C_GetItemIcon, ptoc(&C_GetItemIcon) }, 0 }, - { { (void *)&C_SetItemIcon, ptoc(&C_SetItemIcon) }, 0 }, - { { (void *)&C_GetItemStyle, ptoc(&C_GetItemStyle) }, 0 }, - { { (void *)&C_SetItemStyle, ptoc(&C_SetItemStyle) }, 0 }, - { { (void *)&C_GetItemMark, ptoc(&C_GetItemMark) }, 0 }, - { { (void *)&C_SetItemMark, ptoc(&C_SetItemMark) }, 0 }, - { { (void *)&C_CheckItem, ptoc(&C_CheckItem) }, 0 }, - { { (void *)&C_GetItem, ptoc(&C_GetItem) }, 0 }, - { { (void *)&C_SetItem, ptoc(&C_SetItem) }, 0 }, - { { (void *)&C_CalcMenuSize, ptoc(&C_CalcMenuSize) }, 0 }, - { { (void *)&C_GetMHandle, ptoc(&C_GetMHandle) }, 0 }, - { { (void *)&C_SetMenuFlash, ptoc(&C_SetMenuFlash) }, 0 }, - { { (void *)&C_PlotIcon, ptoc(&C_PlotIcon) }, 0 }, - { { (void *)&C_FlashMenuBar, ptoc(&C_FlashMenuBar) }, 0 }, - { { (void *)&C_AddResMenu, ptoc(&C_AddResMenu) }, 0 }, - { { (void *)&C_PinRect, ptoc(&C_PinRect) }, 0 }, - { { (void *)&C_DeltaPoint, ptoc(&C_DeltaPoint) }, 0 }, - { { (void *)&C_CountMItems, ptoc(&C_CountMItems) }, 0 }, - { { (void *)&C_InsertResMenu, ptoc(&C_InsertResMenu) }, 0 }, - { { (void *)&C_DelMenuItem, ptoc(&C_DelMenuItem) }, 0 }, - { { (void *)&C_UpdtControl, ptoc(&C_UpdtControl) }, 0 }, - { { (void *)&C_NewControl, ptoc(&C_NewControl) }, 0 }, - { { (void *)&C_DisposeControl, ptoc(&C_DisposeControl) }, 0 }, - { { (void *)&C_KillControls, ptoc(&C_KillControls) }, 0 }, - { { (void *)&C_ShowControl, ptoc(&C_ShowControl) }, 0 }, - { { (void *)&C_HideControl, ptoc(&C_HideControl) }, 0 }, - { { (void *)&C_MoveControl, ptoc(&C_MoveControl) }, 0 }, - { { (void *)&C_GetCRefCon, ptoc(&C_GetCRefCon) }, 0 }, - { { (void *)&C_SetCRefCon, ptoc(&C_SetCRefCon) }, 0 }, - { { (void *)&C_SizeControl, ptoc(&C_SizeControl) }, 0 }, - { { (void *)&C_HiliteControl, ptoc(&C_HiliteControl) }, 0 }, - { { (void *)&C_GetCTitle, ptoc(&C_GetCTitle) }, 0 }, - { { (void *)&C_SetCTitle, ptoc(&C_SetCTitle) }, 0 }, - { { (void *)&C_GetCtlValue, ptoc(&C_GetCtlValue) }, 0 }, - { { (void *)&C_GetCtlMin, ptoc(&C_GetCtlMin) }, 0 }, - { { (void *)&C_GetCtlMax, ptoc(&C_GetCtlMax) }, 0 }, - { { (void *)&C_SetCtlValue, ptoc(&C_SetCtlValue) }, 0 }, - { { (void *)&C_SetCtlMin, ptoc(&C_SetCtlMin) }, 0 }, - { { (void *)&C_SetCtlMax, ptoc(&C_SetCtlMax) }, 0 }, - { { (void *)&C_TestControl, ptoc(&C_TestControl) }, 0 }, - { { (void *)&C_DragControl, ptoc(&C_DragControl) }, 0 }, - { { (void *)&C_TrackControl, ptoc(&C_TrackControl) }, 0 }, - { { (void *)&C_DrawControls, ptoc(&C_DrawControls) }, 0 }, - { { (void *)&C_GetCtlAction, ptoc(&C_GetCtlAction) }, 0 }, - { { (void *)&C_SetCtlAction, ptoc(&C_SetCtlAction) }, 0 }, - { { (void *)&C_FindControl, ptoc(&C_FindControl) }, 0 }, - { { (void *)&C_Draw1Control, ptoc(&C_Draw1Control) }, 0 }, - { { (void *)&_Dequeue, static_cast(-1) }, 0 }, - { { (void *)&_Enqueue, static_cast(-1) }, 0 }, - { { (void *)&C_GetNextEvent, ptoc(&C_GetNextEvent) }, 0 }, - { { (void *)&C_EventAvail, ptoc(&C_EventAvail) }, 0 }, - { { (void *)&C_GetMouse, ptoc(&C_GetMouse) }, 0 }, - { { (void *)&C_StillDown, ptoc(&C_StillDown) }, 0 }, - { { (void *)&C_Button, ptoc(&C_Button) }, 0 }, - { { (void *)&C_TickCount, ptoc(&C_TickCount) }, 0 }, - { { (void *)&C_GetKeys, ptoc(&C_GetKeys) }, 0 }, - { { (void *)&C_WaitMouseUp, ptoc(&C_WaitMouseUp) }, 0 }, - { { (void *)&C_UpdtDialog, ptoc(&C_UpdtDialog) }, 0 }, - { { (void *)&C_CouldDialog, ptoc(&C_CouldDialog) }, 0 }, - { { (void *)&C_FreeDialog, ptoc(&C_FreeDialog) }, 0 }, - { { (void *)&C_InitDialogs, ptoc(&C_InitDialogs) }, 0 }, - { { (void *)&C_GetNewDialog, ptoc(&C_GetNewDialog) }, 0 }, - { { (void *)&C_NewDialog, ptoc(&C_NewDialog) }, 0 }, - { { (void *)&C_SelIText, ptoc(&C_SelIText) }, 0 }, - { { (void *)&C_IsDialogEvent, ptoc(&C_IsDialogEvent) }, 0 }, - { { (void *)&C_DialogSelect, ptoc(&C_DialogSelect) }, 0 }, - { { (void *)&C_DrawDialog, ptoc(&C_DrawDialog) }, 0 }, - { { (void *)&C_CloseDialog, ptoc(&C_CloseDialog) }, 0 }, - { { (void *)&C_DisposDialog, ptoc(&C_DisposDialog) }, 0 }, - { { (void *)&C_FindDItem, ptoc(&C_FindDItem) }, 0 }, - { { (void *)&C_Alert, ptoc(&C_Alert) }, 0 }, - { { (void *)&C_StopAlert, ptoc(&C_StopAlert) }, 0 }, - { { (void *)&C_NoteAlert, ptoc(&C_NoteAlert) }, 0 }, - { { (void *)&C_CautionAlert, ptoc(&C_CautionAlert) }, 0 }, - { { (void *)&C_CouldAlert, ptoc(&C_CouldAlert) }, 0 }, - { { (void *)&C_FreeAlert, ptoc(&C_FreeAlert) }, 0 }, - { { (void *)&C_ParamText, ptoc(&C_ParamText) }, 0 }, - { { (void *)&C_ErrorSound, ptoc(&C_ErrorSound) }, 0 }, - { { (void *)&C_GetDItem, ptoc(&C_GetDItem) }, 0 }, - { { (void *)&C_SetDItem, ptoc(&C_SetDItem) }, 0 }, - { { (void *)&C_SetIText, ptoc(&C_SetIText) }, 0 }, - { { (void *)&C_GetIText, ptoc(&C_GetIText) }, 0 }, - { { (void *)&C_ModalDialog, ptoc(&C_ModalDialog) }, 0 }, - { { (void *)&C_DetachResource, ptoc(&C_DetachResource) }, 0 }, - { { (void *)&C_SetResPurge, ptoc(&C_SetResPurge) }, 0 }, - { { (void *)&C_CurResFile, ptoc(&C_CurResFile) }, 0 }, - { { (void *)&C_InitResources, ptoc(&C_InitResources) }, 0 }, - { { (void *)&C_RsrcZoneInit, ptoc(&C_RsrcZoneInit) }, 0 }, - { { (void *)&C_OpenResFile, ptoc(&C_OpenResFile) }, 0 }, - { { (void *)&C_UseResFile, ptoc(&C_UseResFile) }, 0 }, - { { (void *)&C_UpdateResFile, ptoc(&C_UpdateResFile) }, 0 }, - { { (void *)&C_CloseResFile, ptoc(&C_CloseResFile) }, 0 }, - { { (void *)&C_SetResLoad, ptoc(&C_SetResLoad) }, 0 }, - { { (void *)&C_CountResources, ptoc(&C_CountResources) }, 0 }, - { { (void *)&C_GetIndResource, ptoc(&C_GetIndResource) }, 0 }, - { { (void *)&C_CountTypes, ptoc(&C_CountTypes) }, 0 }, - { { (void *)&C_GetIndType, ptoc(&C_GetIndType) }, 0 }, - { { (void *)&C_GetResource, ptoc(&C_GetResource) }, 0 }, - { { (void *)&C_GetNamedResource, ptoc(&C_GetNamedResource) }, 0 }, - { { (void *)&C_LoadResource, ptoc(&C_LoadResource) }, 0 }, - { { (void *)&C_ReleaseResource, ptoc(&C_ReleaseResource) }, 0 }, - { { (void *)&C_HomeResFile, ptoc(&C_HomeResFile) }, 0 }, - { { (void *)&C_SizeResource, ptoc(&C_SizeResource) }, 0 }, - { { (void *)&C_GetResAttrs, ptoc(&C_GetResAttrs) }, 0 }, - { { (void *)&C_SetResAttrs, ptoc(&C_SetResAttrs) }, 0 }, - { { (void *)&C_GetResInfo, ptoc(&C_GetResInfo) }, 0 }, - { { (void *)&C_SetResInfo, ptoc(&C_SetResInfo) }, 0 }, - { { (void *)&C_ChangedResource, ptoc(&C_ChangedResource) }, 0 }, - { { (void *)&C_AddResource, ptoc(&C_AddResource) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_RmveResource, ptoc(&C_RmveResource) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_ResError, ptoc(&C_ResError) }, 0 }, - { { (void *)&C_WriteResource, ptoc(&C_WriteResource) }, 0 }, - { { (void *)&C_CreateResFile, ptoc(&C_CreateResFile) }, 0 }, - { { (void *)&C_SystemEvent, ptoc(&C_SystemEvent) }, 0 }, - { { (void *)&C_SystemClick, ptoc(&C_SystemClick) }, 0 }, - { { (void *)&C_SystemTask, ptoc(&C_SystemTask) }, 0 }, - { { (void *)&C_SystemMenu, ptoc(&C_SystemMenu) }, 0 }, - { { (void *)&C_OpenDeskAcc, ptoc(&C_OpenDeskAcc) }, 0 }, - { { (void *)&C_CloseDeskAcc, ptoc(&C_CloseDeskAcc) }, 0 }, - { { (void *)&C_GetPattern, ptoc(&C_GetPattern) }, 0 }, - { { (void *)&C_GetCursor, ptoc(&C_GetCursor) }, 0 }, - { { (void *)&C_GetString, ptoc(&C_GetString) }, 0 }, - { { (void *)&C_GetIcon, ptoc(&C_GetIcon) }, 0 }, - { { (void *)&C_GetPicture, ptoc(&C_GetPicture) }, 0 }, - { { (void *)&C_GetNewWindow, ptoc(&C_GetNewWindow) }, 0 }, - { { (void *)&C_GetNewControl, ptoc(&C_GetNewControl) }, 0 }, - { { (void *)&C_GetMenu, ptoc(&C_GetMenu) }, 0 }, - { { (void *)&C_GetNewMBar, ptoc(&C_GetNewMBar) }, 0 }, - { { (void *)&C_UniqueID, ptoc(&C_UniqueID) }, 0 }, - { { (void *)&C_SystemEdit, ptoc(&C_SystemEdit) }, 0 }, - { { (void *)&C_KeyTrans, ptoc(&C_KeyTrans) }, 0 }, - { { (void *)&C_OpenRFPerm, ptoc(&C_OpenRFPerm) }, 0 }, - { { (void *)&C_RsrcMapEntry, ptoc(&C_RsrcMapEntry) }, 0 }, - { { (void *)&_Secs2Date, static_cast(-1) }, 0 }, - { { (void *)&_Date2Secs, static_cast(-1) }, 0 }, - { { (void *)&C_SysBeep, ptoc(&C_SysBeep) }, 0 }, - { { (void *)&C_SysError, ptoc(&C_SysError) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_TEGetText, ptoc(&C_TEGetText) }, 0 }, - { { (void *)&C_TEInit, ptoc(&C_TEInit) }, 0 }, - { { (void *)&C_TEDispose, ptoc(&C_TEDispose) }, 0 }, - { { (void *)&C_TextBox, ptoc(&C_TextBox) }, 0 }, - { { (void *)&C_TESetText, ptoc(&C_TESetText) }, 0 }, - { { (void *)&C_TECalText, ptoc(&C_TECalText) }, 0 }, - { { (void *)&C_TESetSelect, ptoc(&C_TESetSelect) }, 0 }, - { { (void *)&C_TENew, ptoc(&C_TENew) }, 0 }, - { { (void *)&C_TEUpdate, ptoc(&C_TEUpdate) }, 0 }, - { { (void *)&C_TEClick, ptoc(&C_TEClick) }, 0 }, - { { (void *)&C_TECopy, ptoc(&C_TECopy) }, 0 }, - { { (void *)&C_TECut, ptoc(&C_TECut) }, 0 }, - { { (void *)&C_TEDelete, ptoc(&C_TEDelete) }, 0 }, - { { (void *)&C_TEActivate, ptoc(&C_TEActivate) }, 0 }, - { { (void *)&C_TEDeactivate, ptoc(&C_TEDeactivate) }, 0 }, - { { (void *)&C_TEIdle, ptoc(&C_TEIdle) }, 0 }, - { { (void *)&C_TEPaste, ptoc(&C_TEPaste) }, 0 }, - { { (void *)&C_TEKey, ptoc(&C_TEKey) }, 0 }, - { { (void *)&C_TEScroll, ptoc(&C_TEScroll) }, 0 }, - { { (void *)&C_TEInsert, ptoc(&C_TEInsert) }, 0 }, - { { (void *)&C_TESetJust, ptoc(&C_TESetJust) }, 0 }, - { { (void *)&C_Munger, ptoc(&C_Munger) }, 0 }, - { { (void *)&_HandToHand, static_cast(-1) }, 0 }, - { { (void *)&_PtrToXHand, static_cast(-1) }, 0 }, - { { (void *)&_PtrToHand, static_cast(-1) }, 0 }, - { { (void *)&_HandAndHand, static_cast(-1) }, 0 }, - { { (void *)&C_InitPack, ptoc(&C_InitPack) }, 0 }, - { { (void *)&C_InitAllPacks, ptoc(&C_InitAllPacks) }, 0 }, - { { (void *)&_Pack0, static_cast(-1) }, 0 }, - { { (void *)&_Pack1, static_cast(-1) }, 0 }, - { { (void *)&_Pack2, static_cast(-1) }, 0 }, - { { (void *)&_Pack3, static_cast(-1) }, 0 }, - { { (void *)&_Pack4, static_cast(-1) }, 0 }, - { { (void *)&_Pack5, static_cast(-1) }, 0 }, - { { (void *)&_Pack6, static_cast(-1) }, 0 }, - { { (void *)&_Pack7, static_cast(-1) }, 0 }, - { { (void *)&_PtrAndHand, static_cast(-1) }, 0 }, - { { (void *)&_LoadSeg, static_cast(-1) }, 0 }, - { { (void *)&C_UnloadSeg, ptoc(&C_UnloadSeg) }, 0 }, - { { (void *)&_Launch, static_cast(-1) }, 0 }, - { { (void *)&_Chain, static_cast(-1) }, 0 }, - { { (void *)&C_ExitToShell, ptoc(&C_ExitToShell) }, 0 }, - { { (void *)&C_GetAppParms, ptoc(&C_GetAppParms) }, 0 }, - { { (void *)&C_GetResFileAttrs, ptoc(&C_GetResFileAttrs) }, 0 }, - { { (void *)&C_SetResFileAttrs, ptoc(&C_SetResFileAttrs) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_InfoScrap, ptoc(&C_InfoScrap) }, 0 }, - { { (void *)&C_UnloadScrap, ptoc(&C_UnloadScrap) }, 0 }, - { { (void *)&C_LoadScrap, ptoc(&C_LoadScrap) }, 0 }, - { { (void *)&C_ZeroScrap, ptoc(&C_ZeroScrap) }, 0 }, - { { (void *)&C_GetScrap, ptoc(&C_GetScrap) }, 0 }, - { { (void *)&C_PutScrap, ptoc(&C_PutScrap) }, 0 }, - { { (void *)&_Debugger, static_cast(-1) }, 0 }, - { { (void *)&C_OpenCPort, ptoc(&C_OpenCPort) }, 0 }, - { { (void *)&C_InitCPort, ptoc(&C_InitCPort) }, 0 }, - { { (void *)&C_CloseCPort, ptoc(&C_CloseCPort) }, 0 }, - { { (void *)&C_NewPixMap, ptoc(&C_NewPixMap) }, 0 }, - { { (void *)&C_DisposPixMap, ptoc(&C_DisposPixMap) }, 0 }, - { { (void *)&C_CopyPixMap, ptoc(&C_CopyPixMap) }, 0 }, - { { (void *)&C_SetPortPix, ptoc(&C_SetPortPix) }, 0 }, - { { (void *)&C_NewPixPat, ptoc(&C_NewPixPat) }, 0 }, - { { (void *)&C_DisposPixPat, ptoc(&C_DisposPixPat) }, 0 }, - { { (void *)&C_CopyPixPat, ptoc(&C_CopyPixPat) }, 0 }, - { { (void *)&C_PenPixPat, ptoc(&C_PenPixPat) }, 0 }, - { { (void *)&C_BackPixPat, ptoc(&C_BackPixPat) }, 0 }, - { { (void *)&C_GetPixPat, ptoc(&C_GetPixPat) }, 0 }, - { { (void *)&C_MakeRGBPat, ptoc(&C_MakeRGBPat) }, 0 }, - { { (void *)&C_FillCRect, ptoc(&C_FillCRect) }, 0 }, - { { (void *)&C_FillCOval, ptoc(&C_FillCOval) }, 0 }, - { { (void *)&C_FillCRoundRect, ptoc(&C_FillCRoundRect) }, 0 }, - { { (void *)&C_FillCArc, ptoc(&C_FillCArc) }, 0 }, - { { (void *)&C_FillCRgn, ptoc(&C_FillCRgn) }, 0 }, - { { (void *)&C_FillCPoly, ptoc(&C_FillCPoly) }, 0 }, - { { (void *)&C_RGBForeColor, ptoc(&C_RGBForeColor) }, 0 }, - { { (void *)&C_RGBBackColor, ptoc(&C_RGBBackColor) }, 0 }, - { { (void *)&C_SetCPixel, ptoc(&C_SetCPixel) }, 0 }, - { { (void *)&C_GetCPixel, ptoc(&C_GetCPixel) }, 0 }, - { { (void *)&C_GetCTable, ptoc(&C_GetCTable) }, 0 }, - { { (void *)&C_GetForeColor, ptoc(&C_GetForeColor) }, 0 }, - { { (void *)&C_GetBackColor, ptoc(&C_GetBackColor) }, 0 }, - { { (void *)&C_GetCCursor, ptoc(&C_GetCCursor) }, 0 }, - { { (void *)&C_SetCCursor, ptoc(&C_SetCCursor) }, 0 }, - { { (void *)&C_AllocCursor, ptoc(&C_AllocCursor) }, 0 }, - { { (void *)&C_GetCIcon, ptoc(&C_GetCIcon) }, 0 }, - { { (void *)&C_PlotCIcon, ptoc(&C_PlotCIcon) }, 0 }, - { { (void *)&C_OpenCPicture, ptoc(&C_OpenCPicture) }, 0 }, - { { (void *)&C_OpColor, ptoc(&C_OpColor) }, 0 }, - { { (void *)&C_HiliteColor, ptoc(&C_HiliteColor) }, 0 }, - { { (void *)&C_CharExtra, ptoc(&C_CharExtra) }, 0 }, - { { (void *)&C_DisposCTable, ptoc(&C_DisposCTable) }, 0 }, - { { (void *)&C_DisposeCIcon, ptoc(&C_DisposeCIcon) }, 0 }, - { { (void *)&C_DisposCCursor, ptoc(&C_DisposCCursor) }, 0 }, - { { (void *)&C_GetMaxDevice, ptoc(&C_GetMaxDevice) }, 0 }, - { { (void *)&C_GetCTSeed, ptoc(&C_GetCTSeed) }, 0 }, - { { (void *)&C_GetDeviceList, ptoc(&C_GetDeviceList) }, 0 }, - { { (void *)&C_GetMainDevice, ptoc(&C_GetMainDevice) }, 0 }, - { { (void *)&C_GetNextDevice, ptoc(&C_GetNextDevice) }, 0 }, - { { (void *)&C_TestDeviceAttribute, ptoc(&C_TestDeviceAttribute) }, 0 }, - { { (void *)&C_SetDeviceAttribute, ptoc(&C_SetDeviceAttribute) }, 0 }, - { { (void *)&C_InitGDevice, ptoc(&C_InitGDevice) }, 0 }, - { { (void *)&C_NewGDevice, ptoc(&C_NewGDevice) }, 0 }, - { { (void *)&C_DisposeGDevice, ptoc(&C_DisposeGDevice) }, 0 }, - { { (void *)&C_SetGDevice, ptoc(&C_SetGDevice) }, 0 }, - { { (void *)&C_GetGDevice, ptoc(&C_GetGDevice) }, 0 }, - { { (void *)&C_Color2Index, ptoc(&C_Color2Index) }, 0 }, - { { (void *)&C_Index2Color, ptoc(&C_Index2Color) }, 0 }, - { { (void *)&C_InvertColor, ptoc(&C_InvertColor) }, 0 }, - { { (void *)&C_RealColor, ptoc(&C_RealColor) }, 0 }, - { { (void *)&C_GetSubTable, ptoc(&C_GetSubTable) }, 0 }, - unimplemented_toolstuff, - { { (void *)&C_MakeITable, ptoc(&C_MakeITable) }, 0 }, - { { (void *)&C_AddSearch, ptoc(&C_AddSearch) }, 0 }, - { { (void *)&C_AddComp, ptoc(&C_AddComp) }, 0 }, - { { (void *)&C_SetClientID, ptoc(&C_SetClientID) }, 0 }, - { { (void *)&C_ProtectEntry, ptoc(&C_ProtectEntry) }, 0 }, - { { (void *)&C_ReserveEntry, ptoc(&C_ReserveEntry) }, 0 }, - { { (void *)&C_SetEntries, ptoc(&C_SetEntries) }, 0 }, - { { (void *)&C_QDError, ptoc(&C_QDError) }, 0 }, - { { (void *)&C_SetWinColor, ptoc(&C_SetWinColor) }, 0 }, - { { (void *)&C_GetAuxWin, ptoc(&C_GetAuxWin) }, 0 }, - { { (void *)&C_SetCtlColor, ptoc(&C_SetCtlColor) }, 0 }, - { { (void *)&C_GetAuxCtl, ptoc(&C_GetAuxCtl) }, 0 }, - { { (void *)&C_NewCWindow, ptoc(&C_NewCWindow) }, 0 }, - { { (void *)&C_GetNewCWindow, ptoc(&C_GetNewCWindow) }, 0 }, - { { (void *)&C_SetDeskCPat, ptoc(&C_SetDeskCPat) }, 0 }, - { { (void *)&C_GetCWMgrPort, ptoc(&C_GetCWMgrPort) }, 0 }, - { { (void *)&C_SaveEntries, ptoc(&C_SaveEntries) }, 0 }, - { { (void *)&C_RestoreEntries, ptoc(&C_RestoreEntries) }, 0 }, - { { (void *)&C_NewCDialog, ptoc(&C_NewCDialog) }, 0 }, - { { (void *)&C_DelSearch, ptoc(&C_DelSearch) }, 0 }, - { { (void *)&C_DelComp, ptoc(&C_DelComp) }, 0 }, - { { (void *)&C_SetStdCProcs, ptoc(&C_SetStdCProcs) }, 0 }, - { { (void *)&C_CalcCMask, ptoc(&C_CalcCMask) }, 0 }, - { { (void *)&C_SeedCFill, ptoc(&C_SeedCFill) }, 0 }, - { { (void *)&C_IMVI_CopyDeepMask, ptoc(&C_IMVI_CopyDeepMask) }, 0 }, - { { (void *)&_HighLevelFSDispatch, static_cast(-1) }, 0 }, /* AA52 */ - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, -#if(!defined(powerpc) && !defined(__ppc__)) || defined(CFM_PROBLEMS) - unimplemented_toolstuff, - unimplemented_toolstuff, /* AA5A */ -#else - { { (void *)&_MixedMode, static_cast(-1) }, 0 }, - { { (void *)&_CodeFragment, static_cast(-1) }, 0 }, /* AA5A */ -#endif - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&C_DelMCEntries, ptoc(&C_DelMCEntries) }, 0 }, - { { (void *)&C_GetMCInfo, ptoc(&C_GetMCInfo) }, 0 }, - { { (void *)&C_SetMCInfo, ptoc(&C_SetMCInfo) }, 0 }, - { { (void *)&C_DispMCInfo, ptoc(&C_DispMCInfo) }, 0 }, - { { (void *)&C_GetMCEntry, ptoc(&C_GetMCEntry) }, 0 }, - { { (void *)&C_SetMCEntries, ptoc(&C_SetMCEntries) }, 0 }, - { { (void *)&C_MenuChoice, ptoc(&C_MenuChoice) }, 0 }, - unimplemented_toolstuff, - { { (void *)&_DialogDispatch, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&C_InitPalettes, ptoc(&C_InitPalettes) }, 0 }, - { { (void *)&C_NewPalette, ptoc(&C_NewPalette) }, 0 }, - { { (void *)&C_GetNewPalette, ptoc(&C_GetNewPalette) }, 0 }, - { { (void *)&C_DisposePalette, ptoc(&C_DisposePalette) }, 0 }, - { { (void *)&C_ActivatePalette, ptoc(&C_ActivatePalette) }, 0 }, - { { (void *)&C_NSetPalette, ptoc(&C_NSetPalette) }, 0 }, - { { (void *)&C_GetPalette, ptoc(&C_GetPalette) }, 0 }, - { { (void *)&C_PmForeColor, ptoc(&C_PmForeColor) }, 0 }, - { { (void *)&C_PmBackColor, ptoc(&C_PmBackColor) }, 0 }, - { { (void *)&C_AnimateEntry, ptoc(&C_AnimateEntry) }, 0 }, - { { (void *)&C_AnimatePalette, ptoc(&C_AnimatePalette) }, 0 }, - { { (void *)&C_GetEntryColor, ptoc(&C_GetEntryColor) }, 0 }, - { { (void *)&C_SetEntryColor, ptoc(&C_SetEntryColor) }, 0 }, - { { (void *)&C_GetEntryUsage, ptoc(&C_GetEntryUsage) }, 0 }, - { { (void *)&C_SetEntryUsage, ptoc(&C_SetEntryUsage) }, 0 }, - { { (void *)&C_CTab2Palette, ptoc(&C_CTab2Palette) }, 0 }, - { { (void *)&C_Palette2CTab, ptoc(&C_Palette2CTab) }, 0 }, - { { (void *)&C_CopyPalette, ptoc(&C_CopyPalette) }, 0 }, - { { (void *)&_PaletteDispatch, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&_QuickTime, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, -#if defined(powerpc) && !defined(__ppc__) - { { (void *)&_modeswitch, static_cast(-1) }, 0 }, -#else - unimplemented_toolstuff, -#endif - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&_WackyQD32Trap, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&_QDExtensions, static_cast(-1) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&_IconDispatch, static_cast(-1) }, 0 }, - { { (void *)&C_DeviceLoop, ptoc(&C_DeviceLoop) }, 0 }, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - unimplemented_toolstuff, - { { (void *)&C_DebugStr, ptoc(&C_DebugStr) }, 0 }, -}; - static void *fsroutines[][2] = { { /* 0xA000 */ (void *)PBOpen, (void *)PBHOpen /* 0 */ }, #define OPENTRAP 0 diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index dc32baac..4b18686a 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -11,12 +11,6 @@ typedef struct uint64_t magic; } ptocblock_t; -typedef struct -{ - ptocblock_t ptoc; - syn68k_addr_t orig; -} toolstuff_t; - typedef struct { syn68k_addr_t orig; @@ -35,7 +29,6 @@ extern syn68k_addr_t PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop); extern unsigned short mostrecenttrap; extern uintptr_t CToPascalCall(void *, uint64_t, ...); -extern toolstuff_t toolstuff[NTOOLENTRIES]; extern osstuff_t osstuff[]; } diff --git a/src/qBit.cpp b/src/qBit.cpp index c21becf4..a423330d 100644 --- a/src/qBit.cpp +++ b/src/qBit.cpp @@ -78,8 +78,7 @@ void Executor::C_CopyBits(BitMap *src_bitmap, BitMap *dst_bitmap, && MR(gp->bitsProc) != &StdBits) warning_unexpected("thePort bitsProc patched out!"); - if(tooltraptable[StdBits_TOOLTRAP_NUMBER] - != toolstuff[StdBits_TOOLTRAP_NUMBER].orig) + if(StdBits.isPatched()) warning_unexpected("_StdBits patched out!"); ROMlib_bogo_stdbits(src_bitmap, dst_bitmap, From bc66558ccf37a6dcdbbfca9abe01fbcafead2d98 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 14:57:24 +0100 Subject: [PATCH 51/88] remove some now-redundant stubs --- src/emustubs.cpp | 491 ------------------------------------ src/include/rsys/emustubs.h | 14 - 2 files changed, 505 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 80808787..e41a1ea5 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -555,89 +555,6 @@ STUB(ScriptUtil) } #endif -static ptocblock_t tedispatchptoc[] = { - PTOCBLOCK(TEStylPaste), /* 0 */ - PTOCBLOCK(TESetStyle), /* 1 */ - PTOCBLOCK(TEReplaceStyle), /* 2 */ - PTOCBLOCK(TEGetStyle), /* 3 */ - PTOCBLOCK(GetStylHandle), /* 4 */ - PTOCBLOCK(SetStylHandle), /* 5 */ - PTOCBLOCK(GetStylScrap), /* 6 */ - PTOCBLOCK(TEStylInsert), /* 7 */ - PTOCBLOCK(TEGetPoint), /* 8 */ - PTOCBLOCK(TEGetHeight), /* 9 */ - PTOCBLOCK(TEContinuousStyle), /* 10 */ - PTOCBLOCK(SetStylScrap), /* 11 */ - PTOCBLOCK(TECustomHook), /* 12 */ - PTOCBLOCK(TENumStyles), /* 13 */ - PTOCBLOCK(TEFeatureFlag), /* 14 */ -}; - -static selectorblock_t tedispatchblock[] = { - { 0, 14, 1, tedispatchptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(TEDispatch) -{ - syn68k_addr_t retaddr; - unsigned short us; - - retaddr = POPADDR(); - us = POPUW(); - PUSHADDR(retaddr); - - return do_selector_block(tedispatchblock, us, TEDispatch); -} - -static ptocblock_t fontdispatch_ptoc[] = { - PTOCBLOCK(IsOutline), /* 0x0 */ - PTOCBLOCK(SetOutlinePreferred), /* 0x1 */ - ZERO_PTOCBLOCK, /* 0x2 */ - ZERO_PTOCBLOCK, /* 0x3 */ - ZERO_PTOCBLOCK, /* 0x4 */ - ZERO_PTOCBLOCK, /* 0x5 */ - ZERO_PTOCBLOCK, /* 0x6 */ - ZERO_PTOCBLOCK, /* 0x7 */ - PTOCBLOCK(OutlineMetrics), /* 0x8 */ - PTOCBLOCK(GetOutlinePreferred), /* 0x9 */ - PTOCBLOCK(SetPreserveGlyph), /* 0xA */ - PTOCBLOCK(GetPreserveGlyph), /* 0xB */ - PTOCBLOCK(FlushFonts), /* 0xC */ -}; - -static selectorblock_t fontdispatch_block[] = { - { 0x0, 0xC, 1, fontdispatch_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(FontDispatch) -{ - return do_selector_block(fontdispatch_block, EM_D0 & 0xF, FontDispatch); -} - -static ptocblock_t resource_dispatch_ptoc[] = { - PTOCBLOCK(ReadPartialResource), /* 0x1 */ - PTOCBLOCK(WritePartialResource), /* 0x2 */ - PTOCBLOCK(SetResourceSize), /* 0x3 */ -}; - -static ptocblock_t resource_dispatch_ptoc10[] = { - PTOCBLOCK(GetNextFOND), /* 10 */ -}; - -static selectorblock_t resource_dispatch_block[] = { - { 0x1, 0x3, 1, resource_dispatch_ptoc }, - { 10, 10, 1, resource_dispatch_ptoc10 }, - { 0, 0, 0, 0 }, -}; - -STUB(ResourceDispatch) -{ - return do_selector_block(resource_dispatch_block, EM_D0 & 0xF, - ResourceDispatch); -} - #if defined(NEWSTUBS) { InitDBPack 100 DBKill 20e DBDisposeQuery 210 DBRemoveResultHandler 215 DBGetNewQuery 30f DBEnd 403 DBExec 408 DBState 409 DBUnGetItem 40d DBResultsToText 413 DBBreak 50b DBInstallResultHandler 514 DBGetResultHandler 516 DBGetSessionNum 605 DBSend 706 DBStartQuery 811 DBGetQueryResults a12 @@ -1152,34 +1069,6 @@ void Executor::C_pack8_unknown_selector() namespace Executor { -static ptocblock_t pack12ptoc[] = { - PTOCBLOCK(Fix2SmallFract), /* 1 */ - PTOCBLOCK(SmallFract2Fix), /* 2 */ - PTOCBLOCK(CMY2RGB), /* 3 */ - PTOCBLOCK(RGB2CMY), /* 4 */ - PTOCBLOCK(HSL2RGB), /* 5 */ - PTOCBLOCK(RGB2HSL), /* 6 */ - PTOCBLOCK(HSV2RGB), /* 7 */ - PTOCBLOCK(RGB2HSV), /* 8 */ - PTOCBLOCK(GetColor), /* 9 */ -}; - -static selectorblock_t pack12block[] = { - { 1, 9, 1, pack12ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack12) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack12block, uw, Pack12); -} - /* * NOTE: We only look at the last two bytes as the Palette selector. Some * Apps don't load the other bytes "properly". @@ -1265,58 +1154,6 @@ STUB(QDExtensions) return do_selector_block(QDExtensions_block, selector, QDExtensions); } -static ptocblock_t shutdwn_ptoc[] = { - PTOCBLOCK(ShutDwnPower), - PTOCBLOCK(ShutDwnStart), - PTOCBLOCK(ShutDwnInstall), - PTOCBLOCK(ShutDwnRemove), -}; - -static selectorblock_t shutdwn_block[] = { - { - 1, 4, 1, shutdwn_ptoc, - }, - { 0, 0, 0, 0 }, -}; - -STUB(ShutDown) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(shutdwn_block, uw, ShutDown); -} - -static ptocblock_t pack3ptoc[] = { - PTOCBLOCK(SFPutFile), /* 1 */ - PTOCBLOCK(SFGetFile), /* 2 */ - PTOCBLOCK(SFPPutFile), /* 3 */ - PTOCBLOCK(SFPGetFile), /* 4 */ - PTOCBLOCK(StandardPutFile), /* 5 */ - PTOCBLOCK(StandardGetFile), /* 6 */ - PTOCBLOCK(CustomPutFile), /* 7 */ - PTOCBLOCK(CustomGetFile), /* 8 */ -}; - -static selectorblock_t pack3block[] = { - { 1, 8, 1, pack3ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack3) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack3block, uw, Pack3); -} - static ptocblock_t pack2ptoc[] = { PTOCBLOCK(DIBadMount), /* 0 */ PTOCBLOCK(DILoad), /* 2 */ @@ -1342,239 +1179,6 @@ STUB(Pack2) return do_selector_block(pack2block, uw, Pack2); } -static ptocblock_t pack6ptoc[] = { - PTOCBLOCK(IUDateString), /* 0x00 */ - PTOCBLOCK(IUTimeString), /* 0x02 */ - PTOCBLOCK(IUMetric), /* 0x04 */ - PTOCBLOCK(IUGetIntl), /* 0x06 */ - PTOCBLOCK(IUSetIntl), /* 0x08 */ - PTOCBLOCK(IUMagString), /* 0x0A */ - PTOCBLOCK(IUMagIDString), /* 0x0C */ - PTOCBLOCK(IUDatePString), /* 0x0E */ - PTOCBLOCK(IUTimePString), /* 0x10 */ - PTOCBLOCK(IUMystery), /* 0x12 */ - PTOCBLOCK(IULDateString), /* 0x14 */ - PTOCBLOCK(IULTimeString), /* 0x16 */ - PTOCBLOCK(IUClearCache), /* 0x18 */ - PTOCBLOCK(IUMagPString), /* 0x1A */ - PTOCBLOCK(IUMagIDPString), /* 0x1C */ - PTOCBLOCK(IUScriptOrder), /* 0x1E */ - PTOCBLOCK(IULangOrder), /* 0x20 */ - PTOCBLOCK(IUTextOrder), /* 0x22 */ - PTOCBLOCK(IUGetItlTable), /* 0x24 */ - -}; - -static selectorblock_t pack6block[] = { - { 0, 36, 2, pack6ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack6) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack6block, uw, Pack6); -} - -static ptocblock_t pack7ptoc[] = { - PTOCBLOCK(ROMlib_Fpstr2dec), /* 02 */ - PTOCBLOCK(ROMlib_Fdec2str), /* 03 */ - PTOCBLOCK(ROMlib_Fcstr2dec), /* 04 */ -}; - -static selectorblock_t pack7block[] = { - { 2, 4, 1, pack7ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack7) -{ - syn68k_addr_t retaddr; - unsigned short uw; - LONGINT l; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - switch(uw) - { - case 0: - NumToString(EM_D0, (StringPtr)SYN68K_TO_US_CHECK0(EM_A0)); - break; - case 1: - StringToNum((StringPtr)SYN68K_TO_US_CHECK0(EM_A0), &l); - EM_D0 = l; - break; - default: - return do_selector_block(pack7block, uw, Pack7); - } - - RTS(); -} - -static ptocblock_t pack11_ptoc0[] = { - PTOCBLOCK(InitEditionPackVersion), /* 0x0100 */ -}; - -static ptocblock_t pack11_ptoc1[] = { - PTOCBLOCK(UnRegisterSection), /* 0x0206 */ - PTOCBLOCK(IsRegisteredSection), /* 0x0208 */ - ZERO_PTOCBLOCK, /* 0x020A */ - ZERO_PTOCBLOCK, /* 0x020C */ - ZERO_PTOCBLOCK, /* 0x020E */ - PTOCBLOCK(DeleteEditionContainerFile) /* 0x0210 */ -}; - -static ptocblock_t pack11_ptoc2[] = { - PTOCBLOCK(GoToPublisherSection), /* 0x0224 */ - PTOCBLOCK(GetLastEditionContainerUsed), /* 0x0226 */ - ZERO_PTOCBLOCK, /* 0x0228 */ - PTOCBLOCK(GetEditionOpenerProc), /* 0x022A */ - PTOCBLOCK(SetEditionOpenerProc), /* 0x022C */ - ZERO_PTOCBLOCK, /* 0x022E */ - ZERO_PTOCBLOCK, /* 0x0230 */ - PTOCBLOCK(NewSubscriberDialog), /* 0x0232 */ - ZERO_PTOCBLOCK, /* 0x0234 */ - PTOCBLOCK(NewPublisherDialog), /* 0x0236 */ - ZERO_PTOCBLOCK, /* 0x0238 */ - PTOCBLOCK(SectionOptionsDialog), /* 0x023A */ -}; - -static ptocblock_t pack11_ptoc3[] = { - PTOCBLOCK(CloseEdition), /* 0x0316 */ -}; - -static ptocblock_t pack11_ptoc4[] = { - PTOCBLOCK(AssociateSection), /* 0x040C */ - ZERO_PTOCBLOCK, /* 0x040E */ - ZERO_PTOCBLOCK, /* 0x0410 */ - PTOCBLOCK(OpenEdition), /* 0x0412 */ -}; - -static ptocblock_t pack11_ptoc5[] = { - PTOCBLOCK(GetEditionInfo), /* 0x0422 */ -}; - -static ptocblock_t pack11_ptoc6[] = { - PTOCBLOCK(CreateEditionContainerFile), /* 0x050E */ -}; - -static ptocblock_t pack11_ptoc7[] = { - PTOCBLOCK(CallEditionOpenerProc), /* 0x052E */ - PTOCBLOCK(CallFormatIOProc), /* 0x0530 */ -}; - -static ptocblock_t pack11_ptoc8[] = { - PTOCBLOCK(RegisterSection), /* 0x0604 */ -}; - -static ptocblock_t pack11_ptoc9[] = { - PTOCBLOCK(EditionHasFormat), /* 0x0618 */ - ZERO_PTOCBLOCK, /* 0x061A */ - ZERO_PTOCBLOCK, /* 0x061C */ - PTOCBLOCK(GetEditionFormatMark), /* 0x061E */ - PTOCBLOCK(SetEditionFormatMark), /* 0x0620 */ -}; - -static ptocblock_t pack11_ptoc10[] = { - PTOCBLOCK(OpenNewEdition), /* 0x0814 */ - ZERO_PTOCBLOCK, /* 0x0816 */ - ZERO_PTOCBLOCK, /* 0x0818 */ - PTOCBLOCK(ReadEdition), /* 0x081A */ - PTOCBLOCK(WriteEdition), /* 0x081C */ -}; - -static ptocblock_t pack11_ptoc11[] = { - PTOCBLOCK(NewSection), /* 0x0A02 */ -}; - -static ptocblock_t pack11_ptoc12[] = { - PTOCBLOCK(GetStandardFormats), /* 0x0A28 */ -}; - -static ptocblock_t pack11_ptoc13[] = { - PTOCBLOCK(NewSubscriberExpDialog), /* 0x0B34 */ - PTOCBLOCK(NewPublisherExpDialog), /* 0x0B38 */ - PTOCBLOCK(SectionOptionsExpDialog), /* 0x0B3C */ -}; - -static selectorblock_t pack11block[] = { - { 0x0100, 0x0100, 1, pack11_ptoc0 }, - { 0x0206, 0x0210, 2, pack11_ptoc1 }, - { 0x0224, 0x023A, 2, pack11_ptoc2 }, - { 0x0316, 0x0316, 1, pack11_ptoc3 }, - { 0x040C, 0x0412, 2, pack11_ptoc4 }, - { 0x0422, 0x0422, 1, pack11_ptoc5 }, - { 0x050E, 0x050E, 1, pack11_ptoc6 }, - { 0x052E, 0x0530, 2, pack11_ptoc7 }, - { 0x0604, 0x0604, 1, pack11_ptoc8 }, - { 0x0618, 0x0620, 2, pack11_ptoc9 }, - { 0x0814, 0x081C, 2, pack11_ptoc10 }, - { 0x0A02, 0x0A02, 1, pack11_ptoc11 }, - { 0x0A28, 0x0A28, 1, pack11_ptoc12 }, - { 0x0B34, 0x0B3C, 4, pack11_ptoc13 }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack11) -{ - return do_selector_block(pack11block, EM_D0 & 0xFFFF, Pack11); -} - -static ptocblock_t highlevel_fs_dispatch_ptoc[] = { - PTOCBLOCK(FSMakeFSSpec), /* 0x0001 */ - PTOCBLOCK(FSpOpenDF), /* 0x0002 */ - PTOCBLOCK(FSpOpenRF), /* 0x0003 */ - PTOCBLOCK(FSpCreate), /* 0x0004 */ - PTOCBLOCK(FSpDirCreate), /* 0x0005 */ - PTOCBLOCK(FSpDelete), /* 0x0006 */ - PTOCBLOCK(FSpGetFInfo), /* 0x0007 */ - PTOCBLOCK(FSpSetFInfo), /* 0x0008 */ - PTOCBLOCK(FSpSetFLock), /* 0x0009 */ - PTOCBLOCK(FSpRstFLock), /* 0x000A */ - PTOCBLOCK(FSpRename), /* 0x000B */ - PTOCBLOCK(FSpCatMove), /* 0x000C */ - PTOCBLOCK(FSpOpenResFile), /* 0x000D */ - PTOCBLOCK(FSpCreateResFile), /* 0x000E */ - PTOCBLOCK(FSpExchangeFiles), /* 0x000F */ -}; - -static selectorblock_t highlevel_fs_dispatch_block[] = { - { 0x0001, 0x000F, 1, highlevel_fs_dispatch_ptoc }, -}; - -STUB(HighLevelFSDispatch) -{ - return do_selector_block(highlevel_fs_dispatch_block, - EM_D0 & 0xF, HighLevelFSDispatch); -} - -static ptocblock_t dialog_dispatch_ptoc0[] = { - PTOCBLOCK(GetStdFilterProc), /* 0x0203 */ -}; - -static ptocblock_t dialog_dispatch_ptoc1[] = { - PTOCBLOCK(SetDialogDefaultItem), /* 0x0304 */ - PTOCBLOCK(SetDialogCancelItem), /* 0x0305 */ - PTOCBLOCK(SetDialogTracksCursor), /* 0x0306 */ -}; - -static selectorblock_t dialog_dispatch_block[] = { - { 0x0203, 0x0203, 1, dialog_dispatch_ptoc0 }, - { 0x0304, 0x0306, 1, dialog_dispatch_ptoc1 }, -}; - -STUB(DialogDispatch) -{ - return do_selector_block(dialog_dispatch_block, - EM_D0 & 0xFFFF, DialogDispatch); -} - STUB(IMVI_PPC) { EM_D0 = paramErr; /* this is good enough for NetScape */ @@ -1605,60 +1209,6 @@ STUB(IMVI_PPC) #endif -static ptocblock_t balloon_ptoc[] = { - PTOCBLOCK(HMGetHelpMenuHandle), /* 0x0200, */ - PTOCBLOCK(HMShowBalloon), /* 0x0b01, */ - PTOCBLOCK(HMRemoveBalloon), /* 0x0002, */ - PTOCBLOCK(HMGetBalloons), /* 0x0003, */ - PTOCBLOCK(HMSetBalloons), /* 0x0104, */ - PTOCBLOCK(HMShowMenuBalloon), /* 0x0e05, */ - PTOCBLOCK(HMGetIndHelpMsg), /* 0x1306, */ - PTOCBLOCK(HMIsBalloon), /* 0x0007, */ - PTOCBLOCK(HMSetFont), /* 0x0108, */ - PTOCBLOCK(HMSetFontSize), /* 0x0109, */ - PTOCBLOCK(HMGetFont), /* 0x020a, */ - PTOCBLOCK(HMGetFontSize), /* 0x020b, */ - PTOCBLOCK(HMSetDialogResID), /* 0x010c, */ - PTOCBLOCK(HMSetMenuResID), /* 0x020d, */ - PTOCBLOCK(HMBalloonRect), /* 0x040e, */ - PTOCBLOCK(HMGetMenuResID), /* 0x040f, */ - PTOCBLOCK(HMScanTemplateItems), /* 0x0410, */ - PTOCBLOCK(HMExtractHelpMsg), /* 0x0711, */ - ZERO_PTOCBLOCK, /* 0x0012, */ - PTOCBLOCK(HMGetDialogResID), /* 0x0213, */ - PTOCBLOCK(HMGetMenuResID), /* 0x0314, */ - PTOCBLOCK(HMGetBalloonWindow), /* 0x0215, */ -}; - -static selectorblock_t balloon_block[] = { - { 0x00, 0x015, 1, balloon_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack14) -{ - return do_selector_block(balloon_block, EM_D0 & 0xFF, Pack14); -} - -static ptocblock_t pack15_ptoc[] = { - PTOCBLOCK(GetPictInfo), /* 0x00 */ - PTOCBLOCK(GetPixMapInfo), /* 0x01 */ - PTOCBLOCK(NewPictInfo), /* 0x02 */ - PTOCBLOCK(RecordPictInfo), /* 0x03 */ - PTOCBLOCK(RecordPixMapInfo), /* 0x04 */ - PTOCBLOCK(RetrievePictInfo), /* 0x05 */ - PTOCBLOCK(DisposePictInfo), /* 0x06 */ -}; - -static selectorblock_t pack15_block[] = { - { 0x00, 0x06, 1, pack15_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack15) -{ - return do_selector_block(pack15_block, EM_D0 & 0xFF, Pack15); -} STUB(CommToolboxDispatch) { @@ -2697,47 +2247,6 @@ STUB(Microseconds) RTS(); } -static selector_table_entry_t icon_dispatch_table[] = { - { 0x0207, PTOCBLOCK(NewIconSuite) }, - { 0x0217, PTOCBLOCK(GetSuiteLabel) }, - { 0x0302, PTOCBLOCK(DisposeIconSuite) }, - { 0x0316, PTOCBLOCK(SetSuiteLabel) }, - { 0x0419, PTOCBLOCK(GetIconCacheData) }, - { 0x041A, PTOCBLOCK(SetIconCacheData) }, - { 0x041B, PTOCBLOCK(GetIconCacheProc) }, - { 0x041C, PTOCBLOCK(SetIconCacheProc) }, - { 0x0500, PTOCBLOCK(PlotIconID) }, - { 0x0501, PTOCBLOCK(GetIconSuite) }, - { 0x050B, PTOCBLOCK(GetLabel) }, - { 0x0603, PTOCBLOCK(PlotIconSuite) }, - { 0x0604, PTOCBLOCK(MakeIconCache) }, - { 0x0606, PTOCBLOCK(LoadIconCache) }, - { 0x0608, PTOCBLOCK(AddIconToSuite) }, - { 0x0609, PTOCBLOCK(GetIconFromSuite) }, - { 0x060D, PTOCBLOCK(PtInIconID) }, - { 0x0610, PTOCBLOCK(RectInIconID) }, - { 0x0613, PTOCBLOCK(IconIDToRgn) }, - { 0x061D, PTOCBLOCK(PlotIconHandle) }, - { 0x061E, PTOCBLOCK(PlotSICNHandle) }, - { 0x061F, PTOCBLOCK(PlotCIconHandle) }, - { 0x070E, PTOCBLOCK(PtInIconSuite) }, - { 0x0711, PTOCBLOCK(RectInIconSuite) }, - { 0x0714, PTOCBLOCK(IconSuiteToRgn) }, - { 0x080A, PTOCBLOCK(ForEachIconDo) }, - { 0x0805, PTOCBLOCK(PlotIconMethod) }, - { 0x090F, PTOCBLOCK(PtInIconMethod) }, - { 0x0912, PTOCBLOCK(RectInIconMethod) }, - { 0x0915, PTOCBLOCK(IconMethodToRgn) }, -}; - -STUB(IconDispatch) -{ - return do_selector_table(EM_D0 & 0xFFFF, - icon_dispatch_table, NELEM(icon_dispatch_table), - NULL, - IconDispatch); -} - // FIXME: #warning should include speech manager selectors /* * NOTE: IM Sound p. 4-109 has a table of speech manager selectors: diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index bb5710b6..926aeda3 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -144,7 +144,6 @@ RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); RAW_68K_TRAP(ResourceStub, 0xA0FC); -RAW_68K_TRAP(TEDispatch, 0xA83D); RAW_68K_TRAP(ScriptUtil, 0xA8B5); RAW_68K_TRAP(PrGlue, 0xA8FD); RAW_68K_TRAP(Dequeue, 0xA96E); @@ -157,29 +156,17 @@ RAW_68K_TRAP(PtrToHand, 0xA9E3); RAW_68K_TRAP(HandAndHand, 0xA9E4); RAW_68K_TRAP(Pack0, 0xA9E7); RAW_68K_TRAP(Pack2, 0xA9E9); -RAW_68K_TRAP(Pack3, 0xA9EA); RAW_68K_TRAP(Pack4, 0xA9EB); RAW_68K_TRAP(Pack5, 0xA9EC); -RAW_68K_TRAP(Pack6, 0xA9ED); -RAW_68K_TRAP(Pack7, 0xA9EE); RAW_68K_TRAP(Pack8, 0xA816); -RAW_68K_TRAP(Pack11, 0xA82D); -RAW_68K_TRAP(Pack12, 0xA82E); RAW_68K_TRAP(PtrAndHand, 0xA9EF); RAW_68K_TRAP(LoadSeg, 0xA9F0); -RAW_68K_TRAP(Pack14, 0xA830); -RAW_68K_TRAP(Pack15, 0xA831); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); RAW_68K_TRAP(OSDispatch, 0xA88F); -RAW_68K_TRAP(FontDispatch, 0xA854); -RAW_68K_TRAP(HighLevelFSDispatch, 0xAA52); -RAW_68K_TRAP(ResourceDispatch, 0xA822); -RAW_68K_TRAP(DialogDispatch, 0xAA68); //RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); RAW_68K_TRAP(PaletteDispatch, 0xAAA2); RAW_68K_TRAP(QDExtensions, 0xAB1D); -RAW_68K_TRAP(ShutDown, 0xA895); RAW_68K_TRAP(AliasDispatch, 0xA823); RAW_68K_TRAP(WriteParam, 0xA038); RAW_68K_TRAP(InitUtil, 0xA03F); @@ -192,7 +179,6 @@ RAW_68K_TRAP(SCSIDispatch, 0xA815); RAW_68K_TRAP(IMVI_LowerText, 0xA056); RAW_68K_TRAP(SoundDispatch, 0xA800); RAW_68K_TRAP(QuickTime, 0xAAAA); -RAW_68K_TRAP(IconDispatch, 0xABC9); RAW_68K_TRAP(GetDefaultStartup, 0xA07D); RAW_68K_TRAP(SetDefaultStartup, 0xA07E); RAW_68K_TRAP(GetVideoDefault, 0xA080); From 8e9c8b896c1a104fa08fbc894dfec540cff79c1b Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 19:07:56 +0100 Subject: [PATCH 52/88] continue migration of selector functions --- src/emustubs.cpp | 355 ----------------------------------- src/functions.cpp | 14 +- src/include/SANE.h | 2 +- src/include/ScriptMgr.h | 12 ++ src/include/rsys/emustubs.h | 8 - src/include/rsys/functions.h | 8 +- src/script.cpp | 24 +++ 7 files changed, 50 insertions(+), 373 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index e41a1ea5..b6e9ccc0 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -756,218 +756,6 @@ STUB(NMRemove) RTS(); } -static ptocblock_t alias_dispatch_ptoc[] = { - PTOCBLOCK(FindFolder), /* 00 */ - ZERO_PTOCBLOCK, - PTOCBLOCK(NewAlias), /* 02 */ - PTOCBLOCK(ResolveAlias), /* 03 */ - ZERO_PTOCBLOCK, - PTOCBLOCK(MatchAlias), /* 05 */ - PTOCBLOCK(UpdateAlias), /* 06 */ - PTOCBLOCK(GetAliasInfo), /* 07 */ - PTOCBLOCK(NewAliasMinimal), /* 08 */ - PTOCBLOCK(NewAliasMinimalFromFullPath), /* 09 */ - ZERO_PTOCBLOCK, - ZERO_PTOCBLOCK, - PTOCBLOCK(ResolveAliasFile), /* 0C */ -}; - -static selectorblock_t alias_dispatch_block[] = { - { 0, 0xC, 1, alias_dispatch_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(AliasDispatch) -{ - return do_selector_block(alias_dispatch_block, - EM_D0 & 0xFFFF, AliasDispatch); -} - -static ptocblock_t pack4ptoc[] = { - PTOCBLOCK(ROMlib_Faddx), /* 00 */ - PTOCBLOCK(ROMlib_Fsetenv), /* 01 */ - PTOCBLOCK(ROMlib_Fsubx), /* 02 */ - PTOCBLOCK(ROMlib_Fgetenv), /* 03 */ - PTOCBLOCK(ROMlib_Fmulx), /* 04 */ - PTOCBLOCK(ROMlib_Fsethv), /* 05 */ - PTOCBLOCK(ROMlib_Fdivx), /* 06 */ - PTOCBLOCK(ROMlib_Fgethv), /* 07 */ - PTOCBLOCK(ROMlib_Fcmpx), /* 08 */ - PTOCBLOCK(ROMlib_Fdec2x), /* 09 */ - PTOCBLOCK(ROMlib_FcpXx), /* 0A */ - PTOCBLOCK(ROMlib_Fx2dec), /* 0B */ - PTOCBLOCK(ROMlib_Fremx), /* 0C */ - PTOCBLOCK(ROMlib_FnegX), /* 0D */ - PTOCBLOCK(ROMlib_Fx2X), /* 0E */ - PTOCBLOCK(ROMlib_FabsX), /* 0F */ - PTOCBLOCK(ROMlib_FX2x), /* 10 */ - PTOCBLOCK(ROMlib_Fcpysgnx), /* 11 */ - PTOCBLOCK(ROMlib_FsqrtX), /* 12 */ - PTOCBLOCK(ROMlib_FnextX), /* 13 */ - PTOCBLOCK(ROMlib_FrintX), /* 14 */ - ZERO_PTOCBLOCK, /* 15 */ - PTOCBLOCK(ROMlib_FtintX), /* 16 */ - PTOCBLOCK(ROMlib_Fprocentry), /* 17 */ - PTOCBLOCK(ROMlib_FscalbX), /* 18 */ - PTOCBLOCK(ROMlib_Fprocexit), /* 19 */ - PTOCBLOCK(ROMlib_FlogbX), /* 1A */ - PTOCBLOCK(ROMlib_Ftestxcp), /* 1B */ - PTOCBLOCK(ROMlib_Fclassx), /* 1C */ -}; - -static selectorblock_t pack4block[] = { - { 0, 0x1C, 1, pack4ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack4) -{ - unsigned short us; - - us = READUW(EM_A7 + 4); - return do_selector_block(pack4block, us & 0xFF, Pack4); -} - -static ptocblock_t pack5ptoc[] = { - PTOCBLOCK(ROMlib_FlnX), /* 00 */ - PTOCBLOCK(ROMlib_Flog2X), /* 02 */ - PTOCBLOCK(ROMlib_Fln1X), /* 04 */ - PTOCBLOCK(ROMlib_Flog21X), /* 06 */ - PTOCBLOCK(ROMlib_FexpX), /* 08 */ - PTOCBLOCK(ROMlib_Fexp2X), /* 0A */ - PTOCBLOCK(ROMlib_Fexp1X), /* 0C */ - PTOCBLOCK(ROMlib_Fexp21X), /* 0E */ - PTOCBLOCK(ROMlib_Fxpwri), /* 10 */ - PTOCBLOCK(ROMlib_Fxpwry), /* 12 */ - PTOCBLOCK(ROMlib_Fcompound), /* 14 */ - PTOCBLOCK(ROMlib_Fannuity), /* 16 */ - PTOCBLOCK(ROMlib_FsinX), /* 18 */ - PTOCBLOCK(ROMlib_FcosX), /* 1A */ - PTOCBLOCK(ROMlib_FtanX), /* 1C */ - PTOCBLOCK(ROMlib_FatanX), /* 1E */ - PTOCBLOCK(ROMlib_FrandX), /* 20 */ -}; - -static selectorblock_t pack5block[] = { - { 0, 0x20, 2, pack5ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack5) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack5block, uw & 0xFF, Pack5); -} - -static ptocblock_t pack0ptoc[] = { - PTOCBLOCK(LActivate), /* 0 */ - PTOCBLOCK(LAddColumn), /* 1 */ - PTOCBLOCK(LAddRow), /* 2 */ - PTOCBLOCK(LAddToCell), /* 3 */ - PTOCBLOCK(LAutoScroll), /* 4 */ - PTOCBLOCK(LCellSize), /* 5 */ - PTOCBLOCK(LClick), /* 6 */ - PTOCBLOCK(LClrCell), /* 7 */ - PTOCBLOCK(LDelColumn), /* 8 */ - PTOCBLOCK(LDelRow), /* 9 */ - PTOCBLOCK(LDispose), /* 10 */ - PTOCBLOCK(LDoDraw), /* 11 */ - PTOCBLOCK(LDraw), /* 12 */ - PTOCBLOCK(LFind), /* 13 */ - PTOCBLOCK(LGetCell), /* 14 */ - PTOCBLOCK(LGetSelect), /* 15 */ - PTOCBLOCK(LLastClick), /* 16 */ - PTOCBLOCK(LNew), /* 17 */ - PTOCBLOCK(LNextCell), /* 18 */ - PTOCBLOCK(LRect), /* 19 */ - PTOCBLOCK(LScroll), /* 20 */ - PTOCBLOCK(LSearch), /* 21 */ - PTOCBLOCK(LSetCell), /* 22 */ - PTOCBLOCK(LSetSelect), /* 23 */ - PTOCBLOCK(LSize), /* 24 */ - PTOCBLOCK(LUpdate), /* 25 */ -}; - -static selectorblock_t pack0block[] = { - { 0, 100, 4, pack0ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack0) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack0block, uw, Pack0); -} - -static ptocblock_t osdispatch_ptoc0[] = { - PTOCBLOCK(TempMaxMem), /* 0x0015 */ - PTOCBLOCK(TempTopMem), /* 0x0016 */ - ZERO_PTOCBLOCK, /* 0x0017 */ - PTOCBLOCK(TempFreeMem), /* 0x0018 */ -}; - -static ptocblock_t osdispatch_ptoc2[] = { - PTOCBLOCK(TempNewHandle), /* 0x001D */ - PTOCBLOCK(TempHLock), /* 0x001E */ - PTOCBLOCK(TempHUnlock), /* 0x001F */ - PTOCBLOCK(TempDisposeHandle), /* 0x0020 */ -}; - -static ptocblock_t osdispatch_ptoc3[] = { - PTOCBLOCK(AcceptHighLevelEvent), /* 0x0033 */ - PTOCBLOCK(PostHighLevelEvent), /* 0x0034 */ - PTOCBLOCK(GetProcessSerialNumberFromPortName), /* 0x0035 */ -#if 0 - PTOCBLOCK (LaunchDeskAccessory), /* 0x0036 */ -#endif -}; - -static ptocblock_t osdispatch_ptoc4[] = { - PTOCBLOCK(GetCurrentProcess), /* 0x0037 */ - PTOCBLOCK(GetNextProcess), /* 0x0038 */ - PTOCBLOCK(GetFrontProcess), /* 0x0039 */ - PTOCBLOCK(GetProcessInformation), /* 0x003A */ - PTOCBLOCK(SetFrontProcess), /* 0x003B */ - PTOCBLOCK(WakeUpProcess), /* 0x003C */ - PTOCBLOCK(SameProcess), /* 0x003D */ -}; - -static ptocblock_t osdispatch_ptoc5[] = { - PTOCBLOCK(GetSpecificHighLevelEvent), /* 0x0045 */ - PTOCBLOCK(GetPortNameFromProcessSerialNumber), /* 0x0046 */ -}; - -static selectorblock_t osdispatch_block[] = { - { 0x0015, 0x0018, 1, osdispatch_ptoc0 }, - { 0x001D, 0x0020, 1, osdispatch_ptoc2 }, - - { 0x0033, 0x0035, 1, osdispatch_ptoc3 }, - { 0x0037, 0x003D, 1, osdispatch_ptoc4 }, - { 0x0045, 0x0046, 1, osdispatch_ptoc5 }, - { 0, 0, 0, 0 }, -}; - -STUB(OSDispatch) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(osdispatch_block, uw, OSDispatch); -} - static selector_table_entry_t pack8_table[] = { { 0x011E, PTOCBLOCK(AESetInteractionAllowed) }, { 0x0204, PTOCBLOCK(AEDisposeDesc) }, @@ -1401,41 +1189,6 @@ STUB(StripAddress) RTS(); } -static ptocblock_t prglueptoc[] = { - PTOCBLOCK(PrOpenDoc), /* 0 */ - PTOCBLOCK(PrCloseDoc), /* 1 */ - PTOCBLOCK(PrOpenPage), /* 2 */ - PTOCBLOCK(PrClosePage), /* 3 */ - PTOCBLOCK(PrintDefault), /* 4 */ - PTOCBLOCK(PrStlDialog), /* 5 */ - PTOCBLOCK(PrJobDialog), /* 6 */ - PTOCBLOCK(PrStlInit), /* 7 */ - PTOCBLOCK(PrJobInit), /* 8 */ - PTOCBLOCK(PrDlgMain), /* 9 */ - PTOCBLOCK(PrValidate), /* 10 */ - PTOCBLOCK(PrJobMerge), /* 11 */ - PTOCBLOCK(PrPicFile), /* 12 */ - ZERO_PTOCBLOCK, /* 13 */ - PTOCBLOCK(PrGeneral), /* 14 */ - ZERO_PTOCBLOCK, /* 15 */ - PTOCBLOCK(PrDrvrOpen), /* 16 */ - PTOCBLOCK(PrDrvrClose), /* 17 */ - PTOCBLOCK(PrDrvrDCE), /* 18 */ - PTOCBLOCK(PrDrvrVers), /* 19 */ - PTOCBLOCK(PrCtlCall), /* 20 */ - ZERO_PTOCBLOCK /*PrPurge*/, /* 21 */ - ZERO_PTOCBLOCK /*PrNoPurge*/, /* 22 */ - PTOCBLOCK(PrError), /* 23 */ - PTOCBLOCK(PrSetError), /* 24 */ - PTOCBLOCK(PrOpen), /* 25 */ - PTOCBLOCK(PrClose), /* 26 */ -}; - -static selectorblock_t prglueblock[] = { - { 0, 26, 1, prglueptoc }, - { 0, 0, 0, 0 }, -}; - static long apparent_nop(long unused1, long unused2) { @@ -1447,17 +1200,6 @@ apparent_nop(long unused1, long unused2) return retval; } -STUB(PrGlue) -{ - syn68k_addr_t retaddr; - unsigned long ul; - - retaddr = POPADDR(); - ul = POPUL(); - PUSHADDR(retaddr); - return do_selector_block(prglueblock, ul >> 27, PrGlue); -} - typedef OSErr (*fsprocp_t)(void *, BOOLEAN); fsprocp_t hfstab[] = { @@ -2283,71 +2025,6 @@ static selector_table_entry_t speech_table[] = { { 0x0040000c, PTOCBLOCK(SpeechBusySystemWide) } }; */ -static selector_table_entry_t sound_table[] = { - { 0x00000000, PTOCBLOCK(FinaleUnknown1) }, - { 0x00000004, PTOCBLOCK(DirectorUnknown3) }, - { 0x00000010, PTOCBLOCK(MACEVersion) }, - { 0x00000014, PTOCBLOCK(SPBVersion) }, - { 0x00040004, PTOCBLOCK(FinaleUnknown2) }, - { 0x00040010, PTOCBLOCK(Comp3to1) }, - { 0x00080010, PTOCBLOCK(Exp1to3) }, - { 0x000C0008, PTOCBLOCK(SndSoundManagerVersion) }, - { 0x000C0010, PTOCBLOCK(Comp6to1) }, - { 0x00100008, PTOCBLOCK(SndChannelStatus) }, /* may be wrong */ - { 0x00100010, PTOCBLOCK(Exp1to6) }, - { 0x00140008, PTOCBLOCK(SndManagerStatus) }, /* may be wrong */ - { 0x00180008, PTOCBLOCK(SndGetSysBeepState) }, /* may be wrong */ - { 0x001C0004, PTOCBLOCK(DirectorUnknown4) }, - { 0x001C0008, PTOCBLOCK(SndSetSysBeepState) }, /* may be wrong */ - { 0x00200008, PTOCBLOCK(SndPlayDoubleBuffer) }, /* may be wrong */ - { 0x01100014, PTOCBLOCK(SPBSignOutDevice) }, - { 0x011C0008, PTOCBLOCK(SndSetSysBeepState) }, - { 0x02040008, PTOCBLOCK(SndPauseFilePlay) }, - { 0x02180008, PTOCBLOCK(SndGetSysBeepState) }, - { 0x021C0014, PTOCBLOCK(SPBCloseDevice) }, - { 0x02240018, PTOCBLOCK(GetSysBeepVolume) }, - { 0x02280014, PTOCBLOCK(SPBPauseRecording) }, - { 0x02280018, PTOCBLOCK(SetSysBeepVolume) }, - { 0x022C0014, PTOCBLOCK(SPBResumeRecording) }, - { 0x022C0018, PTOCBLOCK(GetDefaultOutputVolume) }, - { 0x02300014, PTOCBLOCK(SPBStopRecording) }, - { 0x02300018, PTOCBLOCK(SetDefaultOutputVolume) }, - { 0x03080008, PTOCBLOCK(SndStopFilePlay) }, - { 0x030C0014, PTOCBLOCK(SPBSignInDevice) }, - { 0x03140008, PTOCBLOCK(SndManagerStatus) }, - { 0x03200014, PTOCBLOCK(SPBRecord) }, - { 0x04040018, PTOCBLOCK(GetSoundHeaderOffset) }, - { 0x04200008, PTOCBLOCK(SndPlayDoubleBuffer) }, - { 0x04240014, PTOCBLOCK(SPBRecordToFile) }, - { 0x04400014, PTOCBLOCK(SPBMillisecondsToBytes) }, - { 0x04440014, PTOCBLOCK(SPBBytesToMilliseconds) }, - { 0x05100008, PTOCBLOCK(SndChannelStatus) }, - { 0x05140014, PTOCBLOCK(SPBGetIndexedDevice) }, - { 0x05180014, PTOCBLOCK(SPBOpenDevice) }, - { 0x060C0018, PTOCBLOCK(UnsignedFixedMulDiv) }, - { 0x06340018, PTOCBLOCK(SetSoundPreference) }, - { 0x06380014, PTOCBLOCK(SPBGetDeviceInfo) }, - { 0x06380018, PTOCBLOCK(GetSoundPreference) }, - { 0x063C0014, PTOCBLOCK(SPBSetDeviceInfo) }, - { 0x063C0018, PTOCBLOCK(SndGetInfo) }, - { 0x06400018, PTOCBLOCK(SndSetInfo) }, - { 0x07080014, PTOCBLOCK(SndRecordToFile) }, - { 0x07100018, PTOCBLOCK(GetCompressionInfo) }, - { 0x08040014, PTOCBLOCK(SndRecord) }, - { 0x0B4C0014, PTOCBLOCK(SetupAIFFHeader) }, - { 0x0D000008, PTOCBLOCK(SndStartFilePlay) }, - { 0x0D480014, PTOCBLOCK(SetupSndHeader) }, - { 0x0E340014, PTOCBLOCK(SPBGetRecordingStatus) }, -}; - -STUB(SoundDispatch) -{ - return do_selector_table(EM_D0, - sound_table, NELEM(sound_table), - NULL, - SoundDispatch); -} - STUB(IMVI_ReadXPRam) { /* I, ctm, don't have the specifics for ReadXPram, but Bolo suggests that @@ -2362,38 +2039,6 @@ STUB(IMVI_ReadXPRam) RTS(); } -/* These are the QuickTime routines called by Quicken Preview from Quicken 6 - Deluxe, which is going to be our first QT 3.0 test application */ - -static selector_table_entry_t qt_table[] = { - { 1, PTOCBLOCK(EnterMovies) }, - { 2, PTOCBLOCK(ExitMovies) }, - { 5, PTOCBLOCK(MoviesTask) }, - { 6, PTOCBLOCK(PrerollMovie) }, - { 9, PTOCBLOCK(SetMovieActive) }, - { 11, PTOCBLOCK(StartMovie) }, - { 12, PTOCBLOCK(StopMovie) }, - { 13, PTOCBLOCK(GoToBeginningOfMovie) }, - { 22, PTOCBLOCK(SetMovieGWorld) }, - { 31, PTOCBLOCK(UpdateMovie) }, - { 35, PTOCBLOCK(DisposeMovie) }, - { 46, PTOCBLOCK(GetMovieVolume) }, - { 213, PTOCBLOCK(CloseMovieFile) }, - { 221, PTOCBLOCK(IsMovieDone) }, - { 240, PTOCBLOCK(NewMovieFromFile) }, - { 243, PTOCBLOCK(GetMoviePreferredRate) }, - { 249, PTOCBLOCK(GetMovieBox) }, - { 250, PTOCBLOCK(SetMovieBox) }, - { 394, PTOCBLOCK(NewMovieController) }, - { 395, PTOCBLOCK(DisposeMovieController) }, - { 402, PTOCBLOCK(OpenMovieFile) }, -}; - -STUB(QuickTime) -{ - return do_selector_table(EM_D0 & 0xFFFF, qt_table, NELEM(qt_table), - NULL, QuickTime); -} #if defined(__ppc__) diff --git a/src/functions.cpp b/src/functions.cpp index 5eebd2d2..475f86ae 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -612,27 +612,29 @@ struct D0 static uint32_t get() { return EM_D0 & mask; } }; -struct StackW +template +struct StackWMasked { - static const uint32_t selectorMask = 0xFFFF; + static const uint32_t selectorMask = mask; static uint32_t get() { auto ret = POPADDR(); auto sel = POPUW(); PUSHADDR(ret); - return sel; + return sel & mask; } }; -struct StackL +template +struct StackLMasked { - static const uint32_t selectorMask = 0xFFFFFFFF; + static const uint32_t selectorMask = mask; static uint32_t get() { auto ret = POPADDR(); auto sel = POPUL(); PUSHADDR(ret); - return sel; + return sel & mask; } }; template diff --git a/src/include/SANE.h b/src/include/SANE.h index ea58efa4..0fbc1aa4 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -143,7 +143,7 @@ enum #define FCMP_RETURN_TYPE void DISPATCHER_TRAP(Pack4, 0xA9EB, StackWLookahead<0xFF>); -DISPATCHER_TRAP(Pack5, 0xA9EC, StackW); +DISPATCHER_TRAP(Pack5, 0xA9EC, StackWMasked<0xFF>); DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); extern void C_ROMlib_Fcomp2X(comp sp, extended80 * diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index d404a96b..614ab736 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -418,14 +418,26 @@ extern void C_UppercaseStripDiacritics( ScriptCode script); PASCAL_FUNCTION(UppercaseStripDiacritics); //, 0xA8B5, ScriptUtil); + // the above four functions are actually one entry point on 68K: +extern void C_TextUtilFunctions( + short selector, + Ptr textp, + INTEGER len, + ScriptCode script); +PASCAL_SUBTRAP(TextUtilFunctions, 0xA8B5, 0x800AFFB6, ScriptUtil); + extern INTEGER C_CharacterByteType(Ptr textBuf, INTEGER textOffset, ScriptCode script); +PASCAL_SUBTRAP(CharacterByteType, 0xA8B5, 0xC2060010, ScriptUtil); extern INTEGER C_CharacterType(Ptr textbufp, INTEGER offset, ScriptCode script); +PASCAL_SUBTRAP(CharacterType, 0xA8B5, 0xC2060012, ScriptUtil); extern INTEGER C_TransliterateText(Handle srch, Handle dsth, INTEGER target, LONGINT srcmask, ScriptCode script); +PASCAL_SUBTRAP(TransliterateText, 0xA8B5, 0xC20E0018, ScriptUtil); + } #endif /* _SCRIPTMGR_H_ */ diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 926aeda3..b66e1be7 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -145,7 +145,6 @@ RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); RAW_68K_TRAP(ResourceStub, 0xA0FC); RAW_68K_TRAP(ScriptUtil, 0xA8B5); -RAW_68K_TRAP(PrGlue, 0xA8FD); RAW_68K_TRAP(Dequeue, 0xA96E); RAW_68K_TRAP(Enqueue, 0xA96F); RAW_68K_TRAP(Secs2Date, 0xA9C6); @@ -154,20 +153,15 @@ RAW_68K_TRAP(HandToHand, 0xA9E1); RAW_68K_TRAP(PtrToXHand, 0xA9E2); RAW_68K_TRAP(PtrToHand, 0xA9E3); RAW_68K_TRAP(HandAndHand, 0xA9E4); -RAW_68K_TRAP(Pack0, 0xA9E7); RAW_68K_TRAP(Pack2, 0xA9E9); -RAW_68K_TRAP(Pack4, 0xA9EB); -RAW_68K_TRAP(Pack5, 0xA9EC); RAW_68K_TRAP(Pack8, 0xA816); RAW_68K_TRAP(PtrAndHand, 0xA9EF); RAW_68K_TRAP(LoadSeg, 0xA9F0); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); -RAW_68K_TRAP(OSDispatch, 0xA88F); //RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); RAW_68K_TRAP(PaletteDispatch, 0xAAA2); RAW_68K_TRAP(QDExtensions, 0xAB1D); -RAW_68K_TRAP(AliasDispatch, 0xA823); RAW_68K_TRAP(WriteParam, 0xA038); RAW_68K_TRAP(InitUtil, 0xA03F); RAW_68K_TRAP(flushcache, 0xA0BD); @@ -177,8 +171,6 @@ RAW_68K_TRAP(Fix2X, 0xA843); RAW_68K_TRAP(Frac2X, 0xA845); RAW_68K_TRAP(SCSIDispatch, 0xA815); RAW_68K_TRAP(IMVI_LowerText, 0xA056); -RAW_68K_TRAP(SoundDispatch, 0xA800); -RAW_68K_TRAP(QuickTime, 0xAAAA); RAW_68K_TRAP(GetDefaultStartup, 0xA07D); RAW_68K_TRAP(SetDefaultStartup, 0xA07E); RAW_68K_TRAP(GetVideoDefault, 0xA080); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index c62a91d0..0be06abe 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -88,9 +88,11 @@ namespace selectors template struct D0; using D0W = D0<0xFFFF>; using D0L = D0<0xFFFFFFFF>; - struct StackW; - struct StackL; - template struct StackWLookahead; + template struct StackWMasked; + template struct StackLMasked; + using StackW = StackWMasked<>; + using StackL = StackLMasked<>; + template struct StackWLookahead; } namespace internal diff --git a/src/script.cpp b/src/script.cpp index 944a64b6..e6aab14a 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -879,3 +879,27 @@ void Executor::C_UppercaseStripDiacritics( { ROMlib_UprString((StringPtr)textp, true, len); } + +void Executor::C_TextUtilFunctions( + short selector, + Ptr textp, + INTEGER len, + ScriptCode script) +{ + switch(selector) + { + case 0x0000: + C_LowercaseText(textp, len, script); + break; + case 0x0200: + C_StripDiacritics(textp, len, script); + break; + case 0x0400: + C_UppercaseText(textp, len, script); + break; + case 0x0600: + C_UppercaseStripDiacritics(textp, len, script); + break; + } +} + From a281e5fa137b89cd653b12e0db5ac40be9d1e683 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 20:46:14 +0100 Subject: [PATCH 53/88] switch off logging --- src/functions.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index 475f86ae..c6df7ac6 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -27,6 +27,7 @@ template struct LoggedFunction; static int nestingLevel = 0; +static bool loggingEnabled = false; void functions::resetNestingLevel() { @@ -495,8 +496,13 @@ WrappedFunction::WrappedFunction(const char* name template void WrappedFunction::init() { + if(loggingEnabled) + guestFP = (UPP)SYN68K_TO_US(callback_install( + Invoker::call, CallConv> + ::invokeFrom68K, nullptr)); + else guestFP = (UPP)SYN68K_TO_US(callback_install( - Invoker::call, CallConv> + Invoker ::invokeFrom68K, nullptr)); } @@ -510,7 +516,10 @@ WrappedFunction::Wrapp template void WrappedFunction::init() { + if(loggingEnabled) guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); + else + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(fptr, nullptr)); } @@ -548,7 +557,11 @@ template::SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher) : WrappedFunction(name), dispatcher(dispatcher) { - dispatcher.addSelector(selector, Invoker::call, CallConv> + if(loggingEnabled) + dispatcher.addSelector(selector, Invoker::call, CallConv> + ::invokeFrom68K); + else + dispatcher.addSelector(selector, Invoker ::invokeFrom68K); } From c08da16b08c2d1620ed465752e116fc7af12ad70 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 20:47:38 +0100 Subject: [PATCH 54/88] fix REGISTER_TRAP macro --- src/functions.cpp | 25 ++++++++----------------- src/include/rsys/functions.h | 29 +++++++++++++++++------------ 2 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/functions.cpp b/src/functions.cpp index c6df7ac6..5567084f 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -381,15 +381,7 @@ template struct TrapBit { operator bool() { return !!(EM_D1 & mask); } }; -/* -template struct ReturnMemErr -{ - syn68k_addr_t afterwards(syn68k_addr_t ret) - { - Loc::set(CW(LM(MemErr))); - return ret; - } -};*/ + struct CCFromD0 { syn68k_addr_t afterwards(syn68k_addr_t ret) @@ -474,14 +466,13 @@ struct Invoker> } }; - -template -struct Invoker> +template +struct Invoker> { static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) { Extra1 state; - syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); + syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); return state.afterwards(retval); } }; @@ -501,9 +492,9 @@ void WrappedFunction::init() Invoker::call, CallConv> ::invokeFrom68K, nullptr)); else - guestFP = (UPP)SYN68K_TO_US(callback_install( + guestFP = (UPP)SYN68K_TO_US(callback_install( Invoker - ::invokeFrom68K, nullptr)); + ::invokeFrom68K, nullptr)); } template @@ -517,7 +508,7 @@ template void WrappedFunction::init() { if(loggingEnabled) - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); + guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); else guestFP = (ProcPtr)SYN68K_TO_US(callback_install(fptr, nullptr)); } @@ -562,7 +553,7 @@ SubTrapFunction::SubTrapFunctio ::invokeFrom68K); else dispatcher.addSelector(selector, Invoker - ::invokeFrom68K); + ::invokeFrom68K); } template diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 0be06abe..2792a6f5 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -199,17 +199,17 @@ class SubTrapFunction : public #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ -#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, ...) \ - extern Executor::functions::TYPE NAME +#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + extern Executor::functions::__VA_ARGS__ NAME #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ extern Executor::functions::DispatcherTrap NAME #else -#define CREATE_FUNCTION_WRAPPER(TYPE, NAME, FPTR, ...) \ - Executor::functions::TYPE NAME(__VA_ARGS__); \ - template class Executor::functions::TYPE; +#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + Executor::functions::__VA_ARGS__ NAME INIT; \ + template class Executor::functions::__VA_ARGS__; #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ Executor::functions::DispatcherTrap NAME { #NAME, TRAP } @@ -222,22 +222,27 @@ class SubTrapFunction : public #define COMMA , #define PASCAL_TRAP(NAME, TRAP) \ - CREATE_FUNCTION_WRAPPER(TrapFunction, NAME, &C_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction) +#define REGISTER_TRAP(NAME, TRAP, ...) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction>) +#define REGISTER_TRAP2(NAME, TRAP, ...) \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME), TrapFunction>) + #define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ - CREATE_FUNCTION_WRAPPER(SubTrapFunction, NAME, &C_##NAME, #NAME, TRAPNAME) + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction) #define REGISTER_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ - CREATE_FUNCTION_WRAPPER(SubTrapFunction>, NAME, &C_##NAME, #NAME, TRAPNAME) + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction>) #define NOTRAP_FUNCTION(NAME) \ - CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) #define PASCAL_FUNCTION(NAME) \ - CREATE_FUNCTION_WRAPPER(WrappedFunction, NAME, &C_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) #define RAW_68K_FUNCTION(NAME) \ syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(WrappedFunction, stub_##NAME, &_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), WrappedFunction) #define RAW_68K_TRAP(NAME, TRAP) \ syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(TrapFunction, stub_##NAME, &_##NAME, #NAME) + CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), TrapFunction) void resetNestingLevel(); From 420780f8e7b1768d1f513766ee73eaade1a96f3e Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 27 Jan 2018 20:48:39 +0100 Subject: [PATCH 55/88] more unused stubs --- src/emustubs.cpp | 170 ------------------------------------ src/include/rsys/emustubs.h | 1 - 2 files changed, 171 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index b6e9ccc0..12389c6a 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -184,20 +184,6 @@ STUB(LoadSeg) RTS(); } -STUB(zerod0SetCtlValue) -{ - syn68k_addr_t retaddr; - short arg0; - - retaddr = POPADDR(); - arg0 = POPUW(); - C_SetCtlValue((ControlHandle)SYN68K_TO_US(POPUL()), arg0); - EM_D0 = 0; - ADJUST_CC_BASED_ON_D0(); - PUSHADDR(retaddr); - RTS(); -} - STUB(HWPriv) { HWPriv(EM_D0, EM_A0); /* NOTE: A0 shouldn't be convered from SYN to US @@ -393,162 +379,6 @@ _do_selector_table(uint32_t selector, nullptr, 0 \ } -static ptocblock_t scriptptoc0[] = { - PTOCBLOCK(FontScript), /* 0 FontScript */ - PTOCBLOCK(IntlScript), /* 2 IntlScript */ - PTOCBLOCK(KeyScript), /* 4 KybdScript */ - PTOCBLOCK(Font2Script), /* 6 Font2Script */ - PTOCBLOCK(GetEnvirons), /* 8 */ - PTOCBLOCK(SetEnvirons), /* 10 */ - PTOCBLOCK(GetScript), /* 12 */ - PTOCBLOCK(SetScript), /* 14 */ - PTOCBLOCK(CharByte), /* 16 CharByte */ - PTOCBLOCK(CharType), /* 18 CharType */ - PTOCBLOCK(Pixel2Char), /* 20 Pixel2Char */ - PTOCBLOCK(Char2Pixel), /* 22 Char2Pixel */ - PTOCBLOCK(Transliterate), /* 24 Translit*/ - PTOCBLOCK(FindWord), /* 26 FindWord */ - PTOCBLOCK(HiliteText), /* 28 HiliteText */ - PTOCBLOCK(DrawJust), /* 30 DrawJust */ - PTOCBLOCK(MeasureJust), /* 0x20 */ - - PTOCBLOCK(ParseTable), /* 0x22 */ - ZERO_PTOCBLOCK, /* PortionText 0x24 */ - PTOCBLOCK(FindScriptRun), /* 0x26 */ - PTOCBLOCK(VisibleLength), /* 0x28 */ - ZERO_PTOCBLOCK, /* IsSpecialFont 0x2A */ - ZERO_PTOCBLOCK, /* RawPrinterValues 0x2C */ - PTOCBLOCK(PixelToChar), /* 0x2E */ - PTOCBLOCK(CharToPixel), /* 0x30 */ - PTOCBLOCK(DrawJustified), /* 0x32 */ - PTOCBLOCK(NMeasureJust), /* 0x34 */ - PTOCBLOCK(PortionLine), /* 0x36 */ -}; - -/* D0 IsCmdChar */ - -static ptocblock_t scriptptoc1[] = { - PTOCBLOCK(ReplaceText), /* 0xDC */ - -#if defined(NEWSTUBS) - PTOCBLOCK(TruncText), /* 0xde */ - PTOCBLOCK(TruncString), /* 0xE0 */ - PTOCBLOCK(NFindWord), /* 0xe2 */ - PTOCBLOCK(ValidDate), /* 0xe4 */ - PTOCBLOCK(FormatStr2X), /* 0xe6 */ - PTOCBLOCK(FormatX2Str), /* 0xe8 */ - PTOCBLOCK(Format2Str), /* 0xea */ - PTOCBLOCK(Str2Format), /* 0xec */ - PTOCBLOCK(ToggleDate), /* 0xee */ -#else - ZERO_PTOCBLOCK, /* 0xDE */ - PTOCBLOCK(TruncString), /* 0xE0 */ - ZERO_PTOCBLOCK, /* 0xE2 */ - ZERO_PTOCBLOCK, /* 0xE4 */ - PTOCBLOCK(StringToExtended), /* 0xE6 */ - PTOCBLOCK(ExtendedToString), /* 0xE8 */ - ZERO_PTOCBLOCK, /* 0xEA */ - PTOCBLOCK(StringToFormatRec), /* 0xEC */ - PTOCBLOCK(ToggleDate), /* 0xEE */ -#endif - - PTOCBLOCK(LongSecs2Date), /* 0xf0 */ - PTOCBLOCK(LongDate2Secs), /* 0xf2 */ - - PTOCBLOCK(String2Time), /* 0xF4 String2Time */ - PTOCBLOCK(String2Date), /* 0xF6 String2Date */ - PTOCBLOCK(InitDateCache), /* 0xF8 InitDateCache */ - -#if defined(NEWSTUBS) - PTOCBLOCK(IntlTokenize), /* 0xfa */ - PTOCBLOCK(GetFormatOrder), /* 0xfc */ -#else - ZERO_PTOCBLOCK, /* 0xFA */ - ZERO_PTOCBLOCK, /* 0xFC */ -#endif - PTOCBLOCK(StyledLineBreak), /* 0xFE */ - -}; - -static selectorblock_t scriptutil_block[] = { - { 0, 0x36, 2, scriptptoc0 }, - { 0xDC, 0xFE, 2, scriptptoc1 }, - { 0, 0, 0, 0 }, -}; - -static ptocblock_t high_scriptutil_ptoc0[] = { - PTOCBLOCK(CharacterByteType), /* 0x10; 0xc2060010 */ - PTOCBLOCK(CharacterType), /* 0x12; 0xC2060012 */ - ZERO_PTOCBLOCK, /* 0x14 */ - ZERO_PTOCBLOCK, /* 0x16 */ - PTOCBLOCK(TransliterateText), /* 0x18; 0xC20E0018 */ - ZERO_PTOCBLOCK, /* 0x1A */ - ZERO_PTOCBLOCK, /* 0x1C */ - ZERO_PTOCBLOCK, /* 0x1E */ - ZERO_PTOCBLOCK, /* 0x20 */ - PTOCBLOCK(FillParseTable), /* 0x22; 0xC2040022 */ -#if 0 - GetScriptUtilityAddress /* 0x38; 0xC4040038 */ - SetScriptUtilityAddress /* 0x3A; 0xC008003A */ - GetScriptQDPatchAddress /* 0x3C; 0xC406003C */ - SetScriptQDPatchAddress /* 0x3E; 0xC00A003E */ -#endif -}; - -static selectorblock_t high_scriptutil_block[] = { - { 0x10, 0x22, 2, high_scriptutil_ptoc0 }, - { 0, 0, 0, 0 }, -}; - -static ptocblock_t textutils_ptoc[] = { - PTOCBLOCK(LowercaseText), /* 0x0000 */ - PTOCBLOCK(StripDiacritics), /* 0x0200 */ - PTOCBLOCK(UppercaseText), /* 0x0400 */ - PTOCBLOCK(UppercaseStripDiacritics), /* 0x0600 */ -}; - -static selectorblock_t textutils_block[] = { - { 0x0000, 0x0600, 0x0200, textutils_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(ScriptUtil) -{ - syn68k_addr_t retaddr; - uint32_t selector; - uint8 low_selector_byte; - bool use_high_table_p; - syn68k_addr_t retval; - - retaddr = POPADDR(); - - selector = POPUL(); - - if(selector == 0x800affb6) - { - uint16_t sel2; - - sel2 = POPUW(); - PUSHADDR(retaddr); - retval = do_selector_block(textutils_block, sel2, ScriptUtil); - } - else - { - PUSHADDR(retaddr); - - use_high_table_p = ((selector & 0x40000000) == 0x40000000); - - low_selector_byte = selector & 0xFF; - - retval = do_selector_block((use_high_table_p - ? high_scriptutil_block - : scriptutil_block), - low_selector_byte, - ScriptUtil); - } - return retval; -} - #if defined(NEWSTUBS) { BOn 0 AOn 4 AOnIgnoreModem 5 BOff 80 AOff 84 diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index b66e1be7..20771734 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -144,7 +144,6 @@ RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); RAW_68K_TRAP(ResourceStub, 0xA0FC); -RAW_68K_TRAP(ScriptUtil, 0xA8B5); RAW_68K_TRAP(Dequeue, 0xA96E); RAW_68K_TRAP(Enqueue, 0xA96F); RAW_68K_TRAP(Secs2Date, 0xA9C6); From a35e56270ba5ab1d125e9424bf9c589a186fa679 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 28 Jan 2018 01:06:44 +0100 Subject: [PATCH 56/88] many OS traps --- src/emutraptables.cpp | 106 ++++++++++++++--------------- src/functions.cpp | 50 ++++++++++++++ src/include/ADB.h | 7 ++ src/include/MemoryMgr.h | 64 ++++++++++++++++-- src/include/NotifyMgr.h | 2 + src/include/OSEvent.h | 14 ++++ src/include/OSUtil.h | 22 ++++++ src/include/SegmentLdr.h | 3 + src/include/TimeMgr.h | 3 + src/include/VRetraceMgr.h | 6 ++ src/include/rsys/emustubs.h | 124 +++++++++++++++++----------------- src/include/rsys/functions.h | 20 ++++-- src/include/rsys/lowglobals.h | 6 +- 13 files changed, 296 insertions(+), 131 deletions(-) diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 0651c5ea..625819cb 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -214,40 +214,40 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)PBEject }, { 0, (void *)PBGetFPos }, { 0, (void *)_InitZone }, - { 0, (void *)_GetZone }, - { 0, (void *)_SetZone }, + {0,0},// { 0, (void *)_GetZone }, + {0,0},// { 0, (void *)_SetZone }, { 0, (void *)_FreeMem }, { 0, (void *)_MaxMem }, - { 0, (void *)_NewPtr }, - { 0, (void *)_DisposPtr }, - { 0, (void *)_SetPtrSize }, - { 0, (void *)_GetPtrSize }, + {0,0},// { 0, (void *)_NewPtr }, + {0,0},// { 0, (void *)_DisposPtr }, +{0,0},// { 0, (void *)_SetPtrSize }, +{0,0},// { 0, (void *)_GetPtrSize }, { 0, (void *)_NewHandle }, - { 0, (void *)_DisposHandle }, - { 0, (void *)_SetHandleSize }, - { 0, (void *)_GetHandleSize }, - { 0, (void *)_HandleZone }, - { 0, (void *)_ReallocHandle }, +{0,0},// { 0, (void *)_DisposHandle }, +{0,0},// { 0, (void *)_SetHandleSize }, +{0,0},// { 0, (void *)_GetHandleSize }, +{0,0},// { 0, (void *)_HandleZone }, +{0,0},// { 0, (void *)_ReallocHandle }, { 0, (void *)_RecoverHandle }, - { 0, (void *)_HLock }, - { 0, (void *)_HUnlock }, - { 0, (void *)_EmptyHandle }, - { 0, (void *)_InitApplZone }, - { 0, (void *)_SetApplLimit }, +{0,0},// { 0, (void *)_HLock }, +{0,0},// { 0, (void *)_HUnlock }, +{0,0},// { 0, (void *)_EmptyHandle }, +{0,0},// { 0, (void *)_InitApplZone }, +{0,0},// { 0, (void *)_SetApplLimit }, { 0, (void *)_BlockMove }, { 0, (void *)_PostEvent }, - { 0, (void *)_OSEventAvail }, - { 0, (void *)_GetOSEvent }, - { 0, (void *)_FlushEvents }, - { 0, (void *)_VInstall }, - { 0, (void *)_VRemove }, +{0,0},// { 0, (void *)_OSEventAvail }, +{0,0},// { 0, (void *)_GetOSEvent }, +{0,0},// { 0, (void *)_FlushEvents }, +{0,0},// { 0, (void *)_VInstall }, +{0,0},// { 0, (void *)_VRemove }, { 0, (void *)PBOffLine }, - { 0, (void *)_MoreMasters }, +{0,0},// { 0, (void *)_MoreMasters }, { 0, (void *)_Unimplemented }, - { 0, (void *)_WriteParam }, - { 0, (void *)_ReadDateTime }, - { 0, (void *)_SetDateTime }, - { 0, (void *)_Delay }, +{0,0},// { 0, (void *)_WriteParam }, +{0,0},// { 0, (void *)_ReadDateTime }, +{0,0},// { 0, (void *)_SetDateTime }, +{0,0},// { 0, (void *)_Delay }, { 0, (void *)_EqualString }, { 0, (void *)_DrvrInstall }, { 0, (void *)_DrvrRemove }, @@ -260,10 +260,10 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)PBFlushFile }, { 0, (void *)_GetTrapAddress }, { 0, (void *)_SetTrapAddress }, - { 0, (void *)_PtrZone }, - { 0, (void *)_HPurge }, - { 0, (void *)_HNoPurge }, - { 0, (void *)_SetGrowZone }, +{0,0},// { 0, (void *)_PtrZone }, +{0,0},// { 0, (void *)_HPurge }, +{0,0},// { 0, (void *)_HNoPurge }, +{0,0},// { 0, (void *)_SetGrowZone }, { 0, (void *)_CompactMem }, { 0, (void *)_PurgeMem }, { 0, (void *)_AddDrive }, @@ -275,43 +275,43 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_UprString }, { 0, (void *)_StripAddress }, { 0, (void *)_IMVI_LowerText }, - { 0, (void *)_SetApplBase }, - { 0, (void *)_InsTime }, - { 0, (void *)_RmvTime }, - { 0, (void *)_PrimeTime }, +{0,0},// { 0, (void *)_SetApplBase }, +{0,0},// { 0, (void *)_InsTime }, +{0,0},// { 0, (void *)_RmvTime }, +{0,0},// { 0, (void *)_PrimeTime }, { 0, (void *)_Unimplemented }, { 0, (void *)_IMVI_MemoryDispatch }, { 0, (void *)_SwapMMUMode }, - { 0, (void *)_NMInstall }, - { 0, (void *)_NMRemove }, +{0,0},// { 0, (void *)_NMInstall }, +{0,0},// { 0, (void *)_NMRemove }, { 0, (void *)_HFSDispatch }, { 0, (void *)_MaxBlock }, { 0, (void *)_PurgeSpace }, - { 0, (void *)_MaxApplZone }, - { 0, (void *)_MoveHHi }, - { 0, (void *)_StackSpace }, +{0,0},// { 0, (void *)_MaxApplZone }, +{0,0},// { 0, (void *)_MoveHHi }, +{0,0},// { 0, (void *)_StackSpace }, { 0, (void *)_NewEmptyHandle }, - { 0, (void *)_HSetRBit }, - { 0, (void *)_HClrRBit }, - { 0, (void *)_HGetState }, - { 0, (void *)_HSetState }, +{0,0},// { 0, (void *)_HSetRBit }, +{0,0},// { 0, (void *)_HClrRBit }, +{0,0},// { 0, (void *)_HGetState }, +{0,0},// { 0, (void *)_HSetState }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_SlotManager }, - { 0, (void *)_SlotVInstall }, - { 0, (void *)_SlotVRemove }, +{0,0},// { 0, (void *)_SlotVInstall }, +{0,0},// { 0, (void *)_SlotVRemove }, { 0, (void *)_AttachVBL }, { 0, (void *)_DoVBLTask }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_DTInstall }, { 0, (void *)_SIntRemove }, - { 0, (void *)_CountADBs }, - { 0, (void *)_GetIndADB }, - { 0, (void *)_GetADBInfo }, - { 0, (void *)_SetADBInfo }, - { 0, (void *)_ADBReInit }, +{0,0},// { 0, (void *)_CountADBs }, +{0,0},// { 0, (void *)_GetIndADB }, +{0,0},// { 0, (void *)_GetADBInfo }, +{0,0},// { 0, (void *)_SetADBInfo }, +{0,0},// { 0, (void *)_ADBReInit }, { 0, (void *)_ADBOp }, { 0, (void *)_GetDefaultStartup }, { 0, (void *)_SetDefaultStartup }, @@ -332,7 +332,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_IMVI_DebugUtil }, { 0, (void *)_Unimplemented }, { 0, (void *)_IMVI_DeferUserFn }, - { 0, (void *)_SysEnvirons }, +{0,0},// { 0, (void *)_SysEnvirons }, { 0, (void *)_IMVI_Translate24To32 }, { 0, (void *)_Unimplemented }, { 0, (void *)_Microseconds }, @@ -340,7 +340,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, - { 0, (void *)_HWPriv }, +{0,0},// { 0, (void *)_HWPriv }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, @@ -377,7 +377,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, - { 0, (void *)_flushcache }, +{0,0},// { 0, (void *)_flushcache }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, diff --git a/src/functions.cpp b/src/functions.cpp index 5567084f..7a4c1f5a 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -346,6 +346,9 @@ template struct A operator T() { return EM_AREG(n); } template operator T*() { return ptr_from_longint(EM_AREG(n)); } + template + operator UPP() { return UPP(ptr_from_longint(EM_AREG(n))); } + static void set(uint32_t x) { EM_AREG(n) = x; } static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } }; @@ -357,6 +360,11 @@ template struct D static void set(uint32_t x) { EM_DREG(n) = x; } }; +struct D0HighWord +{ + operator uint16_t() { return EM_D0 >> 16; } +}; + template struct Out { T temp; @@ -394,6 +402,48 @@ struct CCFromD0 return ret; } }; + +struct ClearD0 +{ + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_D0 = 0; + return ret; + } +}; + +struct SaveA1D1D2 +{ + syn68k_addr_t a1, d1, d2; + SaveA1D1D2() + { + a1 = EM_A1; + d1 = EM_D1; + d2 = EM_D2; + } + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_A1 = a1; + EM_D1 = d1; + EM_D2 = d2; + return ret; + } +}; + +struct MoveA1ToA0 +{ + syn68k_addr_t a1; + MoveA1ToA0() + { + a1 = EM_A1; + } + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_A0 = a1; + return ret; + } +}; + } } diff --git a/src/include/ADB.h b/src/include/ADB.h index 516f5b8b..c7727c34 100644 --- a/src/include/ADB.h +++ b/src/include/ADB.h @@ -30,11 +30,18 @@ const LowMemGlobal KbdLast { 0x218 }; // QuickDraw IMV-367 (false); const LowMemGlobal KbdType { 0x21E }; // QuickDraw IMV-367 (false); extern void ADBReInit(void); +REGISTER_TRAP2(ADBReInit, 0xA07B, void ()); + extern OSErr ADBOp(Ptr data, ProcPtr procp, Ptr buffer, INTEGER command); + extern INTEGER CountADBs(void); +REGISTER_TRAP2(CountADBs, 0xA077, D0()); extern OSErr GetIndADB(ADBDataBlock *adbp, INTEGER index); +REGISTER_TRAP2(GetIndADB, 0xA078, D0(A0,D0)); extern OSErr GetADBInfo(ADBDataBlock *adbp, INTEGER address); +REGISTER_TRAP2(GetADBInfo, 0xA079, D0(A0,D0)); extern OSErr SetADBInfo(ADBSetInfoBlock *adbp, INTEGER address); +REGISTER_TRAP2(SetADBInfo, 0xA07A, D0(A0,D0)); } #endif /* !_ADB_H_ */ diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index 112599ef..ffdb62b4 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -92,6 +92,28 @@ const LowMemGlobal ApplScratch { 0xA78 }; // MemoryMgr IMI-85 (true); #define SYSBIT (1 << 10) #define CLRBIT (1 << 9) +namespace callconv +{ + template struct ReturnMemErr + { + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + Loc::set(CW(LM(MemErr))); + return ret; + } + }; + template struct ReturnMemErrConditional + { + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + auto err = CW(LM(MemErr)); + if(err < 0) + Loc::set(err); + return ret; + } + }; + +} #define NewEmptyHandle() (_NewEmptyHandle_flags(false)) #define NewEmptyHandleSys() (_NewEmptyHandle_flags(true)) @@ -112,13 +134,7 @@ extern Handle _RecoverHandle_flags(Ptr p, bool sys_p); #define NewPtrClear(size) (_NewPtr_flags(size, false, true)) #define NewPtrSysClear(size) (_NewPtr_flags(size, true, true)) extern Ptr _NewPtr_flags(Size size, bool sys_p, bool clear_p); -/* -CREATE_FUNCTION_WRAPPER( - PascalTrap< - decltype(_NewPtr_flags) COMMA &_NewPtr_flags COMMA 0xA11E COMMA - callconv::Register (callconv::D<0> COMMA callconv::TrapBit COMMA callconv::TrapBit)> - >, - stub_NewPtr, &_NewPtr_flags, "NewPtr");*/ +REGISTER_TRAP2(_NewPtr_flags, 0xA11E, A0 (D0, TrapBit, TrapBit) , callconv::ReturnMemErr ); #define FreeMem() (_FreeMem_flags(false)) #define FreeMemSys() (_FreeMem_flags(true)) @@ -157,39 +173,73 @@ extern void ROMlib_InitZones(); extern OSErr MemError(void); extern SignedByte HGetState(Handle h); +REGISTER_TRAP2(HGetState, 0xA069, D0(A0)); extern void HSetState(Handle h, SignedByte flags); +REGISTER_TRAP2(HSetState, 0xA06A, void(A0,D0), ReturnMemErr); extern void HLock(Handle h); +REGISTER_TRAP2(HLock, 0xA029, void(A0), ReturnMemErr); extern void HUnlock(Handle h); +REGISTER_TRAP2(HUnlock, 0xA02A, void(A0), ReturnMemErr); extern void HPurge(Handle h); +REGISTER_TRAP2(HPurge, 0xA049, void(A0), ReturnMemErr); extern void HNoPurge(Handle h); +REGISTER_TRAP2(HNoPurge, 0xA04A, void(A0), ReturnMemErr); extern void HSetRBit(Handle h); +REGISTER_TRAP2(HSetRBit, 0xA067, void(A0), ReturnMemErr); extern void HClrRBit(Handle h); +REGISTER_TRAP2(HClrRBit, 0xA068, void(A0), ReturnMemErr); extern void InitApplZone(void); +REGISTER_TRAP2(InitApplZone, 0xA02C, void (), ReturnMemErr); extern void SetApplBase(Ptr newbase); +REGISTER_TRAP2(SetApplBase, 0xA057, void (A0), ReturnMemErr); extern void MoreMasters(void); +REGISTER_TRAP2(MoreMasters, 0xA036, void (), ReturnMemErr); + extern void InitZone(GrowZoneProcPtr pGrowZone, int16_t cMoreMasters, Ptr limitPtr, THz startPtr); + extern THz GetZone(void); +REGISTER_TRAP2(GetZone, 0xA11A, A0 (), ReturnMemErr); extern void SetZone(THz hz); +REGISTER_TRAP2(SetZone, 0xA01B, void (A0), ReturnMemErr); extern void DisposHandle(Handle h); +REGISTER_TRAP2(DisposHandle, 0xA023, void (A0), ReturnMemErr); extern Size GetHandleSize(Handle h); +REGISTER_TRAP2(GetHandleSize, 0xA025, D0 (A0), ReturnMemErrConditional); extern void SetHandleSize(Handle h, Size newsize); +REGISTER_TRAP2(SetHandleSize, 0xA024, void (A0, D0), ReturnMemErr); extern THz HandleZone(Handle h); +REGISTER_TRAP2(HandleZone, 0xA126, A0 (A0), ReturnMemErr); extern void ReallocHandle(Handle h, Size size); +REGISTER_TRAP2(ReallocHandle, 0xA027, void (A0, D0), ReturnMemErr); extern void DisposPtr(Ptr p); +REGISTER_TRAP2(DisposPtr, 0xA01F, void (A0), ReturnMemErr); extern Size GetPtrSize(Ptr p); +REGISTER_TRAP2(GetPtrSize, 0xA021, D0 (A0), ReturnMemErrConditional); extern void SetPtrSize(Ptr p, Size newsize); +REGISTER_TRAP2(SetPtrSize, 0xA020, void (A0, D0), ReturnMemErr); extern THz PtrZone(Ptr p); +REGISTER_TRAP2(PtrZone, 0xA148, A0 (A0), ReturnMemErr); + extern void BlockMove(Ptr src, Ptr dst, Size cnt); extern void BlockMoveData(Ptr src, Ptr dst, Size cnt); + extern void MaxApplZone(void); +REGISTER_TRAP2(MaxApplZone, 0xA063, void (), ReturnMemErr); extern void MoveHHi(Handle h); +REGISTER_TRAP2(MoveHHi, 0xA064, void (A0), ReturnMemErr); extern void SetApplLimit(Ptr newlimit); +REGISTER_TRAP2(SetApplLimit, 0xA02D, void (A0), ReturnMemErr); extern void SetGrowZone(GrowZoneProcPtr newgz); +REGISTER_TRAP2(SetGrowZone, 0xA04B, void (A0), ReturnMemErr); extern void EmptyHandle(Handle h); +REGISTER_TRAP2(EmptyHandle, 0xA02B, void (A0), ReturnMemErr); + extern THz SystemZone(void); extern THz ApplicZone(void); + extern Size StackSpace(void); +REGISTER_TRAP2(StackSpace, 0xA065, D0 ()); DISPATCHER_TRAP(OSDispatch, 0xA88F, StackW); diff --git a/src/include/NotifyMgr.h b/src/include/NotifyMgr.h index dfce305b..a9eada76 100644 --- a/src/include/NotifyMgr.h +++ b/src/include/NotifyMgr.h @@ -29,6 +29,8 @@ typedef struct NMRec } * NMRecPtr; extern OSErr NMInstall(NMRecPtr nmptr); +REGISTER_TRAP2(NMInstall, 0xA05E, D0(A0)); extern OSErr NMRemove(NMRecPtr nmptr); +REGISTER_TRAP2(NMRemove, 0xA05F, D0(A0)); } #endif /* __NOTIFYMGR__ */ diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index f3968a55..eb713fe8 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -96,6 +96,17 @@ const LowMemGlobal MTemp { 0x828 }; // QuickDraw PegLeg (True-b); const LowMemGlobal MouseLocation { 0x82C }; // QuickDraw Vamp (true); const LowMemGlobal MouseLocation2 { 0x830 }; // QuickDraw MacAttack (true); +namespace callconv +{ +struct D0Minus1Boolean +{ + static void set(bool b) + { + EM_D0 = b ? 0 : -1; + } +}; +} + extern void ROMlib_eventdep(void); extern void insertcommonevent(char *xeventp, commonevent *comevtp); extern void ROMlib_zapmap(LONGINT loc, LONGINT val); @@ -106,9 +117,12 @@ extern OSErr ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, extern OSErr PostEvent(INTEGER evcode, LONGINT evmsg); extern void FlushEvents(INTEGER evmask, INTEGER stopmask); +REGISTER_TRAP2(FlushEvents, 0xA032, void(D0,D0HighWord), ClearD0); extern BOOLEAN GetOSEvent(INTEGER evmask, EventRecord *eventp); +REGISTER_TRAP2(GetOSEvent, 0xA031, D0Minus1Boolean (D0,A0)); extern BOOLEAN OSEventAvail(INTEGER evmask, EventRecord *eventp); +REGISTER_TRAP2(OSEventAvail, 0xA030, D0Minus1Boolean (D0,A0)); extern void SetEventMask(INTEGER evmask); extern QHdrPtr GetEvQHdr(void); diff --git a/src/include/OSUtil.h b/src/include/OSUtil.h index a447952c..57ef7ec2 100644 --- a/src/include/OSUtil.h +++ b/src/include/OSUtil.h @@ -158,10 +158,16 @@ const LowMemGlobal DTQueue { 0xD92 }; // OSUtil IMV-466 (false); const LowMemGlobal JDTInstall { 0xD9C }; // OSUtil IMV (false); extern OSErr HandToHand(Handle *h); +REGISTER_TRAP2(HandToHand, 0xA9E1, D0(InOut), SaveA1D1D2, CCFromD0); extern OSErr PtrToHand(Ptr p, Handle *h, LONGINT s); +REGISTER_TRAP2(PtrToHand, 0xA9E3, D0(A0, Out, D0), SaveA1D1D2, CCFromD0); extern OSErr PtrToXHand(Ptr p, Handle h, LONGINT s); +REGISTER_TRAP2(PtrToXHand, 0xA9E2, D0(A0,A1,D0), MoveA1ToA0, SaveA1D1D2, CCFromD0); extern OSErr HandAndHand(Handle h1, Handle h2); +REGISTER_TRAP2(HandAndHand, 0xA9E4, D0(A0,A1), MoveA1ToA0, SaveA1D1D2, CCFromD0); extern OSErr PtrAndHand(Ptr p, Handle h, LONGINT s1); +REGISTER_TRAP2(PtrAndHand, 0xA9EF, D0(A0,A1,D0), MoveA1ToA0, SaveA1D1D2, CCFromD0); + extern LONGINT ROMlib_RelString(unsigned char *s1, unsigned char *s2, BOOLEAN casesig, BOOLEAN diacsig, LONGINT d0); extern INTEGER RelString(StringPtr s1, StringPtr s2, @@ -171,27 +177,43 @@ extern BOOLEAN EqualString(StringPtr s1, StringPtr s2, extern void ROMlib_UprString(StringPtr s, BOOLEAN diac, INTEGER len); extern void UprString(StringPtr s, BOOLEAN diac); extern void GetDateTime(GUEST *mactimepointer); + extern OSErr ReadDateTime(GUEST *secs); +REGISTER_TRAP2(ReadDateTime, 0xA039, D0(A0)); extern OSErr SetDateTime(ULONGINT mactime); +REGISTER_TRAP2(SetDateTime, 0xA03A, D0(D0)); extern void Date2Secs(DateTimeRec *d, ULONGINT *s); +REGISTER_TRAP2(Date2Secs, 0xA9C7, void(A0, Out), SaveA1D1D2); extern void Secs2Date(ULONGINT mactime, DateTimeRec *d); +REGISTER_TRAP2(Secs2Date, 0xA9C6, void(D0,A0), SaveA1D1D2); + extern void GetTime(DateTimeRec *d); extern void SetTime(DateTimeRec *d); extern OSErr InitUtil(void); extern SysPPtr GetSysPPtr(void); + extern OSErr WriteParam(void); +REGISTER_TRAP2(WriteParam, 0xA038, D0()); extern void Enqueue(QElemPtr e, QHdrPtr h); +REGISTER_TRAP2(Enqueue, 0xA96F, D0(A0,A1), SaveA1D1D2); extern OSErr Dequeue(QElemPtr e, QHdrPtr h); +REGISTER_TRAP2(Dequeue, 0xA96E, D0(A0,A1), SaveA1D1D2); + extern LONGINT GetTrapAddress(INTEGER n); extern LONGINT NGetTrapAddress(INTEGER n, INTEGER ttype); extern void SetTrapAddress(LONGINT addr, INTEGER n); + extern void Delay(LONGINT n, LONGINT *ftp); +REGISTER_TRAP2(Delay, 0xA03B, void(A0,Out)); + extern void C_SysBeep(INTEGER i); PASCAL_TRAP(SysBeep, 0xA9C8); extern void Environs(GUEST *rom, GUEST *machine); extern OSErr SysEnvirons(INTEGER vers, SysEnvRecPtr p); +REGISTER_TRAP2(SysEnvirons, 0xA090, D0(D0,A0)); + extern void Restart(void); extern void SetUpA5(void); extern void RestoreA5(void); diff --git a/src/include/SegmentLdr.h b/src/include/SegmentLdr.h index 55245819..6eb33c21 100644 --- a/src/include/SegmentLdr.h +++ b/src/include/SegmentLdr.h @@ -51,8 +51,11 @@ const LowMemGlobal CurPageOption { 0x936 }; // SegmentLdr IMII-60 (true const LowMemGlobal AppParmHandle { 0xAEC }; // SegmentLdr IMII-57 (true); extern void flushcache(void); +REGISTER_TRAP2(flushcache, 0xA0BD, void()); extern void HWPriv(LONGINT d0, LONGINT a0); +REGISTER_TRAP2(HWPriv, 0xA198, void(D0,A0)); + extern char *ROMlib_undotdot(char *origp); extern void CountAppFiles(GUEST *messagep, GUEST *countp); diff --git a/src/include/TimeMgr.h b/src/include/TimeMgr.h index 24e38328..272abf96 100644 --- a/src/include/TimeMgr.h +++ b/src/include/TimeMgr.h @@ -20,7 +20,10 @@ struct TMTask }; extern void InsTime(QElemPtr taskp); +REGISTER_TRAP2(InsTime, 0xA058, void(A0), ClearD0); extern void RmvTime(QElemPtr taskp); +REGISTER_TRAP2(RmvTime, 0xA059, void(A0), ClearD0); extern void PrimeTime(QElemPtr taskp, LONGINT count); +REGISTER_TRAP2(PrimeTime, 0xA05A, void(A0,D0), ClearD0); } #endif /* __TIMEMGR__ */ diff --git a/src/include/VRetraceMgr.h b/src/include/VRetraceMgr.h index 3235b693..467181c5 100644 --- a/src/include/VRetraceMgr.h +++ b/src/include/VRetraceMgr.h @@ -32,10 +32,16 @@ const LowMemGlobal VBLQueue { 0x160 }; // VRetraceMgr IMII-352 (true); const LowMemGlobal JVBLTask { 0xD28 }; // VRetraceMgr IMV (false); extern void ROMlib_clockonoff(LONGINT onoroff); + extern OSErr VInstall(VBLTaskPtr vtaskp); +REGISTER_TRAP2(VInstall, 0xA033, D0(A0)); extern OSErr VRemove(VBLTaskPtr vtaskp); +REGISTER_TRAP2(VRemove, 0xA034, D0(A0)); + extern QHdrPtr GetVBLQHdr(void); extern OSErr SlotVInstall(VBLTaskPtr vtaskp, INTEGER slot); +REGISTER_TRAP2(SlotVInstall, 0xA06F, D0(A0,D0)); extern OSErr SlotVRemove(VBLTaskPtr vtaskp, INTEGER slot); +REGISTER_TRAP2(SlotVRemove, 0xA070, D0(A0,D0)); } #endif /* __VRETRACE__ */ diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index 20771734..a25b1cee 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -67,103 +67,103 @@ RAW_68K_TRAP(Launch, 0xA9F2); RAW_68K_TRAP(Chain, 0xA9F3); RAW_68K_TRAP(FInitQueue, 0xA016); RAW_68K_TRAP(InitZone, 0xA019); -RAW_68K_TRAP(GetZone, 0xA11A); -RAW_68K_TRAP(SetZone, 0xA01B); +//RAW_68K_TRAP(GetZone, 0xA11A); +//RAW_68K_TRAP(SetZone, 0xA01B); RAW_68K_TRAP(FreeMem, 0xA01C); RAW_68K_TRAP(MaxMem, 0xA11D); -RAW_68K_TRAP(NewPtr, 0xA11E); -RAW_68K_TRAP(DisposPtr, 0xA01F); -RAW_68K_TRAP(SetPtrSize, 0xA020); -RAW_68K_TRAP(GetPtrSize, 0xA021); +//RAW_68K_TRAP(NewPtr, 0xA11E); +//RAW_68K_TRAP(DisposPtr, 0xA01F); +//RAW_68K_TRAP(SetPtrSize, 0xA020); +//RAW_68K_TRAP(GetPtrSize, 0xA021); RAW_68K_TRAP(NewHandle, 0xA122); -RAW_68K_TRAP(DisposHandle, 0xA023); -RAW_68K_TRAP(SetHandleSize, 0xA024); -RAW_68K_TRAP(GetHandleSize, 0xA025); -RAW_68K_TRAP(HandleZone, 0xA126); -RAW_68K_TRAP(ReallocHandle, 0xA027); +//RAW_68K_TRAP(DisposHandle, 0xA023); +//RAW_68K_TRAP(SetHandleSize, 0xA024); +//RAW_68K_TRAP(GetHandleSize, 0xA025); +//RAW_68K_TRAP(HandleZone, 0xA126); +//RAW_68K_TRAP(ReallocHandle, 0xA027); RAW_68K_TRAP(RecoverHandle, 0xA128); -RAW_68K_TRAP(HLock, 0xA029); -RAW_68K_TRAP(HUnlock, 0xA02A); -RAW_68K_TRAP(EmptyHandle, 0xA02B); -RAW_68K_TRAP(InitApplZone, 0xA02C); -RAW_68K_TRAP(SetApplLimit, 0xA02D); +//RAW_68K_TRAP(HLock, 0xA029); +//RAW_68K_TRAP(HUnlock, 0xA02A); +//RAW_68K_TRAP(EmptyHandle, 0xA02B); +//RAW_68K_TRAP(InitApplZone, 0xA02C); +//RAW_68K_TRAP(SetApplLimit, 0xA02D); RAW_68K_TRAP(BlockMove, 0xA02E); RAW_68K_TRAP(PostEvent, 0xA02F); -RAW_68K_TRAP(OSEventAvail, 0xA030); -RAW_68K_TRAP(GetOSEvent, 0xA031); -RAW_68K_TRAP(FlushEvents, 0xA032); -RAW_68K_TRAP(VInstall, 0xA033); -RAW_68K_TRAP(VRemove, 0xA034); +//RAW_68K_TRAP(OSEventAvail, 0xA030); +//RAW_68K_TRAP(GetOSEvent, 0xA031); +//RAW_68K_TRAP(FlushEvents, 0xA032); +//RAW_68K_TRAP(VInstall, 0xA033); +//RAW_68K_TRAP(VRemove, 0xA034); RAW_68K_TRAP(SlotManager, 0xA06E); -RAW_68K_TRAP(SlotVInstall, 0xA06F); -RAW_68K_TRAP(SlotVRemove, 0xA070); -RAW_68K_TRAP(MoreMasters, 0xA036); -RAW_68K_TRAP(ReadDateTime, 0xA039); -RAW_68K_TRAP(SetDateTime, 0xA03A); -RAW_68K_TRAP(Delay, 0xA03B); +//RAW_68K_TRAP(SlotVInstall, 0xA06F); +//RAW_68K_TRAP(SlotVRemove, 0xA070); +//RAW_68K_TRAP(MoreMasters, 0xA036); +//RAW_68K_TRAP(ReadDateTime, 0xA039); +//RAW_68K_TRAP(SetDateTime, 0xA03A); +//RAW_68K_TRAP(Delay, 0xA03B); RAW_68K_TRAP(EqualString, 0xA03C); RAW_68K_TRAP(DrvrInstall, 0xA03D); RAW_68K_TRAP(DrvrRemove, 0xA03E); RAW_68K_TRAP(ResrvMem, 0xA040); RAW_68K_TRAP(GetTrapAddress, 0xA146); RAW_68K_TRAP(SetTrapAddress, 0xA047); -RAW_68K_TRAP(PtrZone, 0xA148); -RAW_68K_TRAP(HPurge, 0xA049); -RAW_68K_TRAP(HNoPurge, 0xA04A); -RAW_68K_TRAP(SetGrowZone, 0xA04B); +//RAW_68K_TRAP(PtrZone, 0xA148); +//RAW_68K_TRAP(HPurge, 0xA049); +//RAW_68K_TRAP(HNoPurge, 0xA04A); +//RAW_68K_TRAP(SetGrowZone, 0xA04B); RAW_68K_TRAP(CompactMem, 0xA04C); RAW_68K_TRAP(PurgeMem, 0xA04D); RAW_68K_TRAP(RelString, 0xA050); RAW_68K_TRAP(UprString, 0xA054); RAW_68K_TRAP(StripAddress, 0xA055); -RAW_68K_TRAP(SetApplBase, 0xA057); -RAW_68K_TRAP(InsTime, 0xA058); -RAW_68K_TRAP(RmvTime, 0xA059); -RAW_68K_TRAP(PrimeTime, 0xA05A); -RAW_68K_TRAP(NMInstall, 0xA05E); -RAW_68K_TRAP(NMRemove, 0xA05F); +//RAW_68K_TRAP(SetApplBase, 0xA057); +//RAW_68K_TRAP(InsTime, 0xA058); +//RAW_68K_TRAP(RmvTime, 0xA059); +//RAW_68K_TRAP(PrimeTime, 0xA05A); +//RAW_68K_TRAP(NMInstall, 0xA05E); +//RAW_68K_TRAP(NMRemove, 0xA05F); RAW_68K_TRAP(HFSDispatch, 0xA260); RAW_68K_TRAP(MaxBlock, 0xA061); RAW_68K_TRAP(PurgeSpace, 0xA062); -RAW_68K_TRAP(MaxApplZone, 0xA063); -RAW_68K_TRAP(MoveHHi, 0xA064); -RAW_68K_TRAP(StackSpace, 0xA065); +//RAW_68K_TRAP(MaxApplZone, 0xA063); +//RAW_68K_TRAP(MoveHHi, 0xA064); +//RAW_68K_TRAP(StackSpace, 0xA065); RAW_68K_TRAP(NewEmptyHandle, 0xA166); -RAW_68K_TRAP(HSetRBit, 0xA067); -RAW_68K_TRAP(HClrRBit, 0xA068); -RAW_68K_TRAP(HGetState, 0xA069); -RAW_68K_TRAP(HSetState, 0xA06A); -RAW_68K_TRAP(CountADBs, 0xA077); -RAW_68K_TRAP(GetIndADB, 0xA078); -RAW_68K_TRAP(GetADBInfo, 0xA079); -RAW_68K_TRAP(SetADBInfo, 0xA07A); -RAW_68K_TRAP(ADBReInit, 0xA07B); +//RAW_68K_TRAP(HSetRBit, 0xA067); +//RAW_68K_TRAP(HClrRBit, 0xA068); +//RAW_68K_TRAP(HGetState, 0xA069); +//RAW_68K_TRAP(HSetState, 0xA06A); +//RAW_68K_TRAP(CountADBs, 0xA077); +//RAW_68K_TRAP(GetIndADB, 0xA078); +//RAW_68K_TRAP(GetADBInfo, 0xA079); +//RAW_68K_TRAP(SetADBInfo, 0xA07A); +//RAW_68K_TRAP(ADBReInit, 0xA07B); RAW_68K_TRAP(ADBOp, 0xA07C); -RAW_68K_TRAP(SysEnvirons, 0xA090); -RAW_68K_TRAP(HWPriv, 0xA198); +//RAW_68K_TRAP(SysEnvirons, 0xA090); +//RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); RAW_68K_TRAP(ResourceStub, 0xA0FC); -RAW_68K_TRAP(Dequeue, 0xA96E); -RAW_68K_TRAP(Enqueue, 0xA96F); -RAW_68K_TRAP(Secs2Date, 0xA9C6); -RAW_68K_TRAP(Date2Secs, 0xA9C7); -RAW_68K_TRAP(HandToHand, 0xA9E1); -RAW_68K_TRAP(PtrToXHand, 0xA9E2); -RAW_68K_TRAP(PtrToHand, 0xA9E3); -RAW_68K_TRAP(HandAndHand, 0xA9E4); +//RAW_68K_TRAP(Dequeue, 0xA96E); +//RAW_68K_TRAP(Enqueue, 0xA96F); +//RAW_68K_TRAP(Secs2Date, 0xA9C6); +//RAW_68K_TRAP(Date2Secs, 0xA9C7); +//RAW_68K_TRAP(HandToHand, 0xA9E1); +//RAW_68K_TRAP(PtrToXHand, 0xA9E2); +//RAW_68K_TRAP(PtrToHand, 0xA9E3); +//RAW_68K_TRAP(HandAndHand, 0xA9E4); RAW_68K_TRAP(Pack2, 0xA9E9); RAW_68K_TRAP(Pack8, 0xA816); -RAW_68K_TRAP(PtrAndHand, 0xA9EF); +//RAW_68K_TRAP(PtrAndHand, 0xA9EF); RAW_68K_TRAP(LoadSeg, 0xA9F0); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); //RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); RAW_68K_TRAP(PaletteDispatch, 0xAAA2); RAW_68K_TRAP(QDExtensions, 0xAB1D); -RAW_68K_TRAP(WriteParam, 0xA038); +//RAW_68K_TRAP(WriteParam, 0xA038); RAW_68K_TRAP(InitUtil, 0xA03F); -RAW_68K_TRAP(flushcache, 0xA0BD); +//RAW_68K_TRAP(flushcache, 0xA0BD); RAW_68K_FUNCTION(Key1Trans); RAW_68K_FUNCTION(Key2Trans); RAW_68K_TRAP(Fix2X, 0xA843); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 2792a6f5..4674659e 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -22,12 +22,6 @@ template class Register { }; template struct A; template struct D; -template struct TrapBit; -template struct Out; -template struct InOut; - -template struct ReturnMemErr; -struct CCFromD0; using A0 = A<0>; using A1 = A<1>; @@ -35,6 +29,20 @@ using A2 = A<2>; using D0 = D<0>; using D1 = D<1>; using D2 = D<2>; + +struct D0HighWord; + +template struct TrapBit; +template struct Out; +template struct InOut; + +template struct ReturnMemErr; +struct CCFromD0; + +struct ClearD0; +struct SaveA1D1D2; +struct MoveA1ToA0; +struct D0HighWord; } using namespace callconv; diff --git a/src/include/rsys/lowglobals.h b/src/include/rsys/lowglobals.h index baa5544c..165952dd 100644 --- a/src/include/rsys/lowglobals.h +++ b/src/include/rsys/lowglobals.h @@ -61,9 +61,9 @@ const LowMemGlobal MCLKPCmiss2 { 0x3A6 }; // MacLinkPC badaccess (true- /* * JFLUSH is a guess from disassembling some of Excel 3.0 */ -const LowMemGlobal JFLUSH { 0x6F4 }; // idunno guess (true-b); -const LowMemGlobal JResUnknown1 { 0x700 }; // idunno resedit (true-b); -const LowMemGlobal JResUnknown2 { 0x714 }; // idunno resedit (true-b); +const LowMemGlobal> JFLUSH { 0x6F4 }; // idunno guess (true-b); +const LowMemGlobal> JResUnknown1 { 0x700 }; // idunno resedit (true-b); +const LowMemGlobal> JResUnknown2 { 0x714 }; // idunno resedit (true-b); /* * NOTE: The graphing program looks for a -1 in 0x952 From 6d028bc473306640c115d634bb90382b738524ef Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 28 Jan 2018 01:27:52 +0100 Subject: [PATCH 57/88] remove stubs that are no longer needed --- src/emustubs.cpp | 466 ------------------------------------ src/emutraptables.cpp | 108 ++++----- src/include/OSUtil.h | 2 + src/include/rsys/emustubs.h | 2 +- 4 files changed, 57 insertions(+), 521 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 12389c6a..fb96102d 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -184,15 +184,6 @@ STUB(LoadSeg) RTS(); } -STUB(HWPriv) -{ - HWPriv(EM_D0, EM_A0); /* NOTE: A0 shouldn't be convered from SYN to US - here because it's often used as a long. See - the implementation of HWPriv in segment.c - for details */ - RTS(); -} - STUB(ResourceStub) { EM_A0 = US_TO_SYN68K_CHECK0(ROMlib_mgetres2( @@ -205,12 +196,6 @@ STUB_NEG1_D0(DrvrInstall) STUB_NEG1_D0(DrvrRemove) -STUB(ADBReInit) -{ - ADBReInit(); - RTS(); -} - STUB(ADBOp) { adbop_t *p; @@ -222,30 +207,6 @@ STUB(ADBOp) RTS(); } -STUB(CountADBs) -{ - cpu_state.regs[0].sw.n = CountADBs(); - RTS(); -} - -STUB(GetIndADB) -{ - cpu_state.regs[0].sw.n = GetIndADB((ADBDataBlock *)SYN68K_TO_US_CHECK0(EM_A0), (char)EM_D0); - RTS(); -} - -STUB(GetADBInfo) -{ - cpu_state.regs[0].sw.n = GetADBInfo((ADBDataBlock *)SYN68K_TO_US_CHECK0(EM_A0), (char)EM_D0); - RTS(); -} - -STUB(SetADBInfo) -{ - cpu_state.regs[0].sw.n = SetADBInfo((ADBSetInfoBlock *)SYN68K_TO_US_CHECK0(EM_A0), (char)EM_D0); - RTS(); -} - static void do_selector_error(uint32_t selector, const char *trap_name, @@ -440,112 +401,6 @@ STUB(Frac2X) EM_D1 = saved1; \ EM_D2 = saved2 -STUB(HandToHand) -{ - Handle vp; - - SAVE_A1_D1_D2(); - vp = (Handle)SYN68K_TO_US_CHECK0(EM_A0); - EM_D0 = HandToHand(&vp); - EM_A0 = US_TO_SYN68K_CHECK0(vp); - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} - -STUB(PtrToHand) -{ - Handle dsthand; - - SAVE_A1_D1_D2(); - EM_D0 = PtrToHand((Ptr)SYN68K_TO_US_CHECK0(EM_A0), - &dsthand, EM_D0); - EM_A0 = US_TO_SYN68K_CHECK0(dsthand); - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} - -STUB(PtrToXHand) -{ - long save_a1; - - SAVE_A1_D1_D2(); - save_a1 = EM_A1; - EM_D0 = PtrToXHand((Ptr)SYN68K_TO_US_CHECK0(EM_A0), - (Handle)SYN68K_TO_US_CHECK0(EM_A1), EM_D0); - EM_A0 = save_a1; /* a1 == dsthand, which goes into a0 at end */ - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} - -STUB(HandAndHand) -{ - long savehand; - - SAVE_A1_D1_D2(); - savehand = EM_A1; - EM_D0 = HandAndHand((Handle)SYN68K_TO_US_CHECK0(EM_A0), - (Handle)SYN68K_TO_US_CHECK0(EM_A1)); - EM_A0 = savehand; - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} - -STUB(PtrAndHand) -{ - long savehand; - - SAVE_A1_D1_D2(); - savehand = EM_A1; - EM_D0 = PtrAndHand((Ptr)SYN68K_TO_US_CHECK0(EM_A0), - (Handle)SYN68K_TO_US_CHECK0(EM_A1), EM_D0); - EM_A0 = savehand; - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} - -STUB(Date2Secs) -{ - ULONGINT l; - - SAVE_A1_D1_D2(); - Date2Secs((DateTimeRec *)SYN68K_TO_US_CHECK0(EM_A0), &l); - EM_D0 = l; - RESTORE_A1_D1_D2(); - RTS(); -} - -STUB(Secs2Date) -{ - SAVE_A1_D1_D2(); - Secs2Date(EM_D0, (DateTimeRec *)SYN68K_TO_US_CHECK0(EM_A0)); - RESTORE_A1_D1_D2(); - RTS(); -} - -STUB(Enqueue) -{ - SAVE_A1_D1_D2(); - Enqueue((QElemPtr)SYN68K_TO_US_CHECK0(EM_A0), - (QHdrPtr)SYN68K_TO_US_CHECK0(EM_A1)); /* TODO: check to see if Mac - alters D0 */ - RESTORE_A1_D1_D2(); - RTS(); -} - -STUB(Dequeue) -{ - SAVE_A1_D1_D2(); - EM_D0 = Dequeue((QElemPtr)SYN68K_TO_US_CHECK0(EM_A0), - (QHdrPtr)SYN68K_TO_US_CHECK0(EM_A1)); - RESTORE_A1_D1_D2(); - ADJUST_CC_BASED_ON_D0(); - RTS(); -} /* * NOTE: The LM(Key1Trans) and LM(Key2Trans) implementations are just transcriptions @@ -574,18 +429,6 @@ STUB(Key2Trans) KEYTRANSMACRO(); } -STUB(NMInstall) -{ - EM_D0 = NMInstall((NMRecPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - -STUB(NMRemove) -{ - EM_D0 = NMRemove((NMRecPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - static selector_table_entry_t pack8_table[] = { { 0x011E, PTOCBLOCK(AESetInteractionAllowed) }, { 0x0204, PTOCBLOCK(AEDisposeDesc) }, @@ -876,12 +719,6 @@ STUB(CommToolboxDispatch) RTS(); } -STUB(SysEnvirons) -{ - EM_D0 = SysEnvirons(EM_D0, (SysEnvRecPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - STUB(PostEvent) { GUEST qelemp; @@ -893,94 +730,6 @@ STUB(PostEvent) RTS(); } -STUB(FlushEvents) -{ - FlushEvents(EM_D0, EM_D0 >> 16); - EM_D0 = 0; /* LIE? */ - RTS(); -} - -STUB(GetOSEvent) -{ - EM_D0 = GetOSEvent(EM_D0, (EventRecord *)SYN68K_TO_US_CHECK0(EM_A0)) ? 0 : -1; - RTS(); -} - -STUB(OSEventAvail) -{ - EM_D0 = OSEventAvail(EM_D0, (EventRecord *)SYN68K_TO_US_CHECK0(EM_A0)) ? 0 : -1; - RTS(); -} - -STUB(SlotVInstall) -{ - /* FIXME: for now, ignore the slot argument */ - EM_D0 = SlotVInstall((VBLTaskPtr)SYN68K_TO_US_CHECK0(EM_A0), - (INTEGER)EM_D0); - RTS(); -} - -STUB(VInstall) -{ - EM_D0 = VInstall((VBLTaskPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - -STUB(SlotVRemove) -{ - EM_D0 = SlotVRemove((VBLTaskPtr)SYN68K_TO_US_CHECK0(EM_A0), - (INTEGER)EM_D0); - RTS(); -} - -STUB(VRemove) -{ - EM_D0 = VRemove((VBLTaskPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - -STUB(InsTime) -{ - InsTime((QElemPtr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = 0; - RTS(); -} - -STUB(RmvTime) -{ - RmvTime((QElemPtr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = 0; - RTS(); -} - -STUB(PrimeTime) -{ - PrimeTime((QElemPtr)SYN68K_TO_US_CHECK0(EM_A0), EM_D0); - EM_D0 = 0; - RTS(); -} - -STUB(ReadDateTime) -{ - EM_D0 = ReadDateTime((GUEST *)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - -STUB(SetDateTime) -{ - EM_D0 = SetDateTime(EM_D0); - RTS(); -} - -STUB(Delay) -{ - LONGINT tempp; - - // Yes, a0 is really the argument to Delay. Weird, but true. - Delay(EM_A0, &tempp); - EM_D0 = tempp; - RTS(); -} #define DIACBIT (1 << 9) #define CASEBIT (1 << 10) @@ -1494,82 +1243,6 @@ STUB(WackyQD32Trap) gui_fatal("This trap shouldn't be called"); } -STUB(HGetState) -{ - EM_D0 = HGetState((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - -STUB(HSetState) -{ - HSetState((Handle)SYN68K_TO_US_CHECK0(EM_A0), EM_D0); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HLock) -{ - HLock((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HUnlock) -{ - HUnlock((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HPurge) -{ - HPurge((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HNoPurge) -{ - HNoPurge((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HSetRBit) -{ - HSetRBit((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(HClrRBit) -{ - HClrRBit((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(InitApplZone) -{ - InitApplZone(); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(SetApplBase) -{ - SetApplBase((Ptr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(MoreMasters) -{ - MoreMasters(); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(InitZone) { initzonehiddenargs_t *ip; @@ -1581,64 +1254,6 @@ STUB(InitZone) RTS(); } -STUB(SetZone) -{ - SetZone((THz)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(DisposHandle) -{ - DisposHandle((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(GetHandleSize) -{ - EM_D0 = GetHandleSize((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - if(CW(LM(MemErr)) < 0) - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(SetHandleSize) -{ - SetHandleSize((Handle)SYN68K_TO_US_CHECK0(EM_A0), EM_D0); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(ReallocHandle) -{ - ReallocHandle((Handle)SYN68K_TO_US_CHECK0(EM_A0), EM_D0); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(DisposPtr) -{ - DisposPtr((Ptr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(GetPtrSize) -{ - EM_D0 = GetPtrSize((Ptr)SYN68K_TO_US_CHECK0(EM_A0)); - if(CW(LM(MemErr)) < 0) - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(SetPtrSize) -{ - SetPtrSize((Ptr)SYN68K_TO_US_CHECK0(EM_A0), EM_D0); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(FreeMem) { EM_D0 = _FreeMem_flags(SYS_P(EM_D1, 0xA01C)); @@ -1674,53 +1289,12 @@ STUB(BlockMove) RTS(); } -STUB(MaxApplZone) -{ - MaxApplZone(); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(MoveHHi) -{ - MoveHHi((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(MaxBlock) { EM_D0 = _MaxBlock_flags(SYS_P(EM_D1, 0xA061)); RTS(); } -STUB(StackSpace) -{ - EM_D0 = StackSpace(); - RTS(); -} - -STUB(SetApplLimit) -{ - SetApplLimit((Ptr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(SetGrowZone) -{ - SetGrowZone((GrowZoneProcPtr)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(GetZone) -{ - EM_A0 = US_TO_SYN68K_CHECK0(GetZone()); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(NewEmptyHandle) { EM_A0 = US_TO_SYN68K_CHECK0(_NewEmptyHandle_flags(SYS_P(EM_D1, 0xA166))); @@ -1738,14 +1312,6 @@ STUB(NewHandle) RTS(); } -STUB(HandleZone) -{ - EM_A0 = (uint32_t) - US_TO_SYN68K_CHECK0(HandleZone((Handle)SYN68K_TO_US_CHECK0(EM_A0))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(RecoverHandle) { EM_A0 = US_TO_SYN68K_CHECK0( @@ -1763,13 +1329,6 @@ STUB(NewPtr) RTS(); } -STUB(PtrZone) -{ - EM_A0 = US_TO_SYN68K_CHECK0(PtrZone((Ptr)SYN68K_TO_US_CHECK0(EM_A0))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - STUB(MaxMem) { EM_D0 = _MaxMem_flags((Size *)&EM_A0, SYS_P(EM_D1, 0xA11D)); @@ -1786,31 +1345,6 @@ STUB(PurgeSpace) RTS(); } -STUB(EmptyHandle) -{ - EmptyHandle((Handle)SYN68K_TO_US_CHECK0(EM_A0)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(WriteParam) -{ - EM_D0 = WriteParam(); - RTS(); -} - -STUB(InitUtil) -{ - EM_D0 = InitUtil(); - RTS(); -} - -STUB(flushcache) -{ - flushcache(); - RTS(); -} - STUB(Microseconds) { unsigned long ms = msecs_elapsed(); diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 625819cb..9f5e10f7 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -214,44 +214,44 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)PBEject }, { 0, (void *)PBGetFPos }, { 0, (void *)_InitZone }, - {0,0},// { 0, (void *)_GetZone }, - {0,0},// { 0, (void *)_SetZone }, + {0,0},// { 0, (void *)_GetZone }, + {0,0},// { 0, (void *)_SetZone }, { 0, (void *)_FreeMem }, { 0, (void *)_MaxMem }, - {0,0},// { 0, (void *)_NewPtr }, - {0,0},// { 0, (void *)_DisposPtr }, -{0,0},// { 0, (void *)_SetPtrSize }, -{0,0},// { 0, (void *)_GetPtrSize }, + {0,0},// { 0, (void *)_NewPtr }, + {0,0},// { 0, (void *)_DisposPtr }, + {0,0},// { 0, (void *)_SetPtrSize }, + {0,0},// { 0, (void *)_GetPtrSize }, { 0, (void *)_NewHandle }, -{0,0},// { 0, (void *)_DisposHandle }, -{0,0},// { 0, (void *)_SetHandleSize }, -{0,0},// { 0, (void *)_GetHandleSize }, -{0,0},// { 0, (void *)_HandleZone }, -{0,0},// { 0, (void *)_ReallocHandle }, + {0,0},// { 0, (void *)_DisposHandle }, + {0,0},// { 0, (void *)_SetHandleSize }, + {0,0},// { 0, (void *)_GetHandleSize }, + {0,0},// { 0, (void *)_HandleZone }, + {0,0},// { 0, (void *)_ReallocHandle }, { 0, (void *)_RecoverHandle }, -{0,0},// { 0, (void *)_HLock }, -{0,0},// { 0, (void *)_HUnlock }, -{0,0},// { 0, (void *)_EmptyHandle }, -{0,0},// { 0, (void *)_InitApplZone }, -{0,0},// { 0, (void *)_SetApplLimit }, + {0,0},// { 0, (void *)_HLock }, + {0,0},// { 0, (void *)_HUnlock }, + {0,0},// { 0, (void *)_EmptyHandle }, + {0,0},// { 0, (void *)_InitApplZone }, + {0,0},// { 0, (void *)_SetApplLimit }, { 0, (void *)_BlockMove }, { 0, (void *)_PostEvent }, -{0,0},// { 0, (void *)_OSEventAvail }, -{0,0},// { 0, (void *)_GetOSEvent }, -{0,0},// { 0, (void *)_FlushEvents }, -{0,0},// { 0, (void *)_VInstall }, -{0,0},// { 0, (void *)_VRemove }, + {0,0},// { 0, (void *)_OSEventAvail }, + {0,0},// { 0, (void *)_GetOSEvent }, + {0,0},// { 0, (void *)_FlushEvents }, + {0,0},// { 0, (void *)_VInstall }, + {0,0},// { 0, (void *)_VRemove }, { 0, (void *)PBOffLine }, -{0,0},// { 0, (void *)_MoreMasters }, + {0,0},// { 0, (void *)_MoreMasters }, { 0, (void *)_Unimplemented }, -{0,0},// { 0, (void *)_WriteParam }, -{0,0},// { 0, (void *)_ReadDateTime }, -{0,0},// { 0, (void *)_SetDateTime }, -{0,0},// { 0, (void *)_Delay }, + {0,0},// { 0, (void *)_WriteParam }, + {0,0},// { 0, (void *)_ReadDateTime }, + {0,0},// { 0, (void *)_SetDateTime }, + {0,0},// { 0, (void *)_Delay }, { 0, (void *)_EqualString }, { 0, (void *)_DrvrInstall }, { 0, (void *)_DrvrRemove }, - { 0, (void *)_InitUtil }, + {0,0},// { 0, (void *)_InitUtil }, { 0, (void *)_ResrvMem }, { 0, (void *)PBSetFLock }, { 0, (void *)PBRstFLock }, @@ -260,10 +260,10 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)PBFlushFile }, { 0, (void *)_GetTrapAddress }, { 0, (void *)_SetTrapAddress }, -{0,0},// { 0, (void *)_PtrZone }, -{0,0},// { 0, (void *)_HPurge }, -{0,0},// { 0, (void *)_HNoPurge }, -{0,0},// { 0, (void *)_SetGrowZone }, + {0,0},// { 0, (void *)_PtrZone }, + {0,0},// { 0, (void *)_HPurge }, + {0,0},// { 0, (void *)_HNoPurge }, + {0,0},// { 0, (void *)_SetGrowZone }, { 0, (void *)_CompactMem }, { 0, (void *)_PurgeMem }, { 0, (void *)_AddDrive }, @@ -275,43 +275,43 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_UprString }, { 0, (void *)_StripAddress }, { 0, (void *)_IMVI_LowerText }, -{0,0},// { 0, (void *)_SetApplBase }, -{0,0},// { 0, (void *)_InsTime }, -{0,0},// { 0, (void *)_RmvTime }, -{0,0},// { 0, (void *)_PrimeTime }, + {0,0},// { 0, (void *)_SetApplBase }, + {0,0},// { 0, (void *)_InsTime }, + {0,0},// { 0, (void *)_RmvTime }, + {0,0},// { 0, (void *)_PrimeTime }, { 0, (void *)_Unimplemented }, { 0, (void *)_IMVI_MemoryDispatch }, { 0, (void *)_SwapMMUMode }, -{0,0},// { 0, (void *)_NMInstall }, -{0,0},// { 0, (void *)_NMRemove }, + {0,0},// { 0, (void *)_NMInstall }, + {0,0},// { 0, (void *)_NMRemove }, { 0, (void *)_HFSDispatch }, { 0, (void *)_MaxBlock }, { 0, (void *)_PurgeSpace }, -{0,0},// { 0, (void *)_MaxApplZone }, -{0,0},// { 0, (void *)_MoveHHi }, -{0,0},// { 0, (void *)_StackSpace }, + {0,0},// { 0, (void *)_MaxApplZone }, + {0,0},// { 0, (void *)_MoveHHi }, + {0,0},// { 0, (void *)_StackSpace }, { 0, (void *)_NewEmptyHandle }, -{0,0},// { 0, (void *)_HSetRBit }, -{0,0},// { 0, (void *)_HClrRBit }, -{0,0},// { 0, (void *)_HGetState }, -{0,0},// { 0, (void *)_HSetState }, + {0,0},// { 0, (void *)_HSetRBit }, + {0,0},// { 0, (void *)_HClrRBit }, + {0,0},// { 0, (void *)_HGetState }, + {0,0},// { 0, (void *)_HSetState }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_SlotManager }, -{0,0},// { 0, (void *)_SlotVInstall }, -{0,0},// { 0, (void *)_SlotVRemove }, + {0,0},// { 0, (void *)_SlotVInstall }, + {0,0},// { 0, (void *)_SlotVRemove }, { 0, (void *)_AttachVBL }, { 0, (void *)_DoVBLTask }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_DTInstall }, { 0, (void *)_SIntRemove }, -{0,0},// { 0, (void *)_CountADBs }, -{0,0},// { 0, (void *)_GetIndADB }, -{0,0},// { 0, (void *)_GetADBInfo }, -{0,0},// { 0, (void *)_SetADBInfo }, -{0,0},// { 0, (void *)_ADBReInit }, + {0,0},// { 0, (void *)_CountADBs }, + {0,0},// { 0, (void *)_GetIndADB }, + {0,0},// { 0, (void *)_GetADBInfo }, + {0,0},// { 0, (void *)_SetADBInfo }, + {0,0},// { 0, (void *)_ADBReInit }, { 0, (void *)_ADBOp }, { 0, (void *)_GetDefaultStartup }, { 0, (void *)_SetDefaultStartup }, @@ -332,7 +332,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_IMVI_DebugUtil }, { 0, (void *)_Unimplemented }, { 0, (void *)_IMVI_DeferUserFn }, -{0,0},// { 0, (void *)_SysEnvirons }, + {0,0},// { 0, (void *)_SysEnvirons }, { 0, (void *)_IMVI_Translate24To32 }, { 0, (void *)_Unimplemented }, { 0, (void *)_Microseconds }, @@ -340,7 +340,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, -{0,0},// { 0, (void *)_HWPriv }, + {0,0},// { 0, (void *)_HWPriv }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, @@ -377,7 +377,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, -{0,0},// { 0, (void *)_flushcache }, + {0,0},// { 0, (void *)_flushcache }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, { 0, (void *)_Unimplemented }, diff --git a/src/include/OSUtil.h b/src/include/OSUtil.h index 57ef7ec2..e084933f 100644 --- a/src/include/OSUtil.h +++ b/src/include/OSUtil.h @@ -190,6 +190,8 @@ REGISTER_TRAP2(Secs2Date, 0xA9C6, void(D0,A0), SaveA1D1D2); extern void GetTime(DateTimeRec *d); extern void SetTime(DateTimeRec *d); extern OSErr InitUtil(void); +REGISTER_TRAP2(InitUtil, 0xA03F, D0()); + extern SysPPtr GetSysPPtr(void); extern OSErr WriteParam(void); diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index a25b1cee..c2b1e26b 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -162,7 +162,7 @@ RAW_68K_TRAP(WackyQD32Trap, 0xAB03); RAW_68K_TRAP(PaletteDispatch, 0xAAA2); RAW_68K_TRAP(QDExtensions, 0xAB1D); //RAW_68K_TRAP(WriteParam, 0xA038); -RAW_68K_TRAP(InitUtil, 0xA03F); +//RAW_68K_TRAP(InitUtil, 0xA03F); //RAW_68K_TRAP(flushcache, 0xA0BD); RAW_68K_FUNCTION(Key1Trans); RAW_68K_FUNCTION(Key2Trans); From bfc49dab59681670b05192ca1a8fa2ac1981d9ae Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 28 Jan 2018 04:00:58 +0100 Subject: [PATCH 58/88] more traps handled by new mechanism --- src/AE_hdlr.cpp | 1 + src/emustubs.cpp | 346 +--------------------------------- src/emutraptables.cpp | 22 +-- src/include/DiskInit.h | 15 ++ src/include/MemoryMgr.h | 15 +- src/include/rsys/emustubs.h | 32 ++-- src/include/rsys/everything.h | 1 + src/include/rsys/mman.h | 2 - 8 files changed, 67 insertions(+), 367 deletions(-) diff --git a/src/AE_hdlr.cpp b/src/AE_hdlr.cpp index 2dae07f4..a9824208 100644 --- a/src/AE_hdlr.cpp +++ b/src/AE_hdlr.cpp @@ -424,6 +424,7 @@ OSErr Executor::C_AEInstallSpecialHandler( if(function_class == keySelectProc) { AE_OSL_select_fn = US_TO_SYN68K((void *)hdlr_fn); + warning_unimplemented("AEInstallSpecialHandler: keySelectProc set"); AE_RETURN_ERROR(noErr); } diff --git a/src/emustubs.cpp b/src/emustubs.cpp index fb96102d..05199fe8 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -68,27 +68,6 @@ namespace Executor #define STUB(x) syn68k_addr_t _##x(syn68k_addr_t ignoreme, \ void *ignoreme2) -#define ADJUST_CC_BASED_ON_D0() \ - do \ - { \ - cpu_state.ccc = 0; \ - cpu_state.ccn = (cpu_state.regs[0].sw.n < 0); \ - cpu_state.ccv = 0; \ - cpu_state.ccx = cpu_state.ccx; /* unchanged */ \ - cpu_state.ccnz = (cpu_state.regs[0].sw.n != 0); \ - } while(0) - -#define STUB_NEG1_D0(x) \ - STUB(x) \ - { \ - EM_D0 = -1; \ - ADJUST_CC_BASED_ON_D0(); \ - RTS(); \ - } - -#define STUB_RTS(x) \ - STUB(x) { RTS(); } - STUB(GetDefaultStartup) { (SYN68K_TO_US(EM_A0))[0] = -1; @@ -192,9 +171,17 @@ STUB(ResourceStub) RTS(); } -STUB_NEG1_D0(DrvrInstall) +STUB(DrvrInstall) +{ + EM_D0 = -1; + RTS(); +} -STUB_NEG1_D0(DrvrRemove) +STUB(DrvrRemove) +{ + EM_D0 = -1; + RTS(); +} STUB(ADBOp) { @@ -390,17 +377,6 @@ STUB(Frac2X) return retaddr; } -#define SAVE_A1_D1_D2() \ - uint32_t savea1, saved1, saved2; \ - savea1 = EM_A1; \ - saved1 = EM_D1; \ - saved2 = EM_D2 - -#define RESTORE_A1_D1_D2() \ - EM_A1 = savea1; \ - EM_D1 = saved1; \ - EM_D2 = saved2 - /* * NOTE: The LM(Key1Trans) and LM(Key2Trans) implementations are just transcriptions @@ -429,217 +405,6 @@ STUB(Key2Trans) KEYTRANSMACRO(); } -static selector_table_entry_t pack8_table[] = { - { 0x011E, PTOCBLOCK(AESetInteractionAllowed) }, - { 0x0204, PTOCBLOCK(AEDisposeDesc) }, - { 0x0219, PTOCBLOCK(AEResetTimer) }, - { 0x021A, PTOCBLOCK(AEGetTheCurrentEvent) }, - { 0x021B, PTOCBLOCK(AEProcessAppleEvent) }, - { 0x021D, PTOCBLOCK(AEGetInteractionAllowed) }, - { 0x022B, PTOCBLOCK(AESuspendTheCurrentEvent) }, - { 0x022C, PTOCBLOCK(AESetTheCurrentEvent) }, - { 0x023A, PTOCBLOCK(AEDisposeToken) }, - { 0x0405, PTOCBLOCK(AEDuplicateDesc) }, - { 0x0407, PTOCBLOCK(AECountItems) }, - { 0x040E, PTOCBLOCK(AEDeleteItem) }, - /* AEDeleteParam */ - { 0x0413, PTOCBLOCK(AEDeleteKeyDesc) }, - { 0x0441, PTOCBLOCK(AEManagerInfo) }, - { 0x0500, PTOCBLOCK(AEInstallSpecialHandler) }, - { 0x0501, PTOCBLOCK(AERemoveSpecialHandler) }, - { 0x052D, PTOCBLOCK(AEGetSpecialHandler) }, - { 0x0536, PTOCBLOCK(AEResolve) }, - { 0x0603, PTOCBLOCK(AECoerceDesc) }, - { 0x0609, PTOCBLOCK(AEPutDesc) }, - /* AEPutParamDesc */ - { 0x0610, PTOCBLOCK(AEPutKeyDesc) }, - { 0x061C, PTOCBLOCK(AEInteractWithUser) }, - { 0x0627, PTOCBLOCK(AEPutAttributeDesc) }, - { 0x0632, PTOCBLOCK(_AE_hdlr_delete) }, /* internal */ - { 0x0706, PTOCBLOCK(AECreateList) }, - { 0x0720, PTOCBLOCK(AERemoveEventHandler) }, - { 0x0723, PTOCBLOCK(AERemoveCoercionHandler) }, - { 0x0738, PTOCBLOCK(AERemoveObjectAccessor) }, - { 0x0812, PTOCBLOCK(AEGetKeyDesc) }, - { 0x0818, PTOCBLOCK(AEResumeTheCurrentEvent) }, - { 0x0825, PTOCBLOCK(AECreateDesc) }, - { 0x0826, PTOCBLOCK(AEGetAttributeDesc) }, - { 0x0828, PTOCBLOCK(AESizeOfAttribute) }, - { 0x0829, PTOCBLOCK(AESizeOfKeyDesc) }, - { 0x082A, PTOCBLOCK(AESizeOfNthItem) }, - { 0x0831, PTOCBLOCK(_AE_hdlr_install) }, /* internal */ - { 0x0833, PTOCBLOCK(_AE_hdlr_lookup) }, /* internal */ - { 0x091F, PTOCBLOCK(AEInstallEventHandler) }, - { 0x0921, PTOCBLOCK(AEGetEventHandler) }, - { 0x092E, PTOCBLOCK(_AE_hdlr_table_alloc) }, /* internal */ - { 0x0937, PTOCBLOCK(AEInstallObjectAccessor) }, - { 0x0939, PTOCBLOCK(AEGetObjectAccessor) }, - { 0x0A02, PTOCBLOCK(AECoercePtr) }, - { 0x0A08, PTOCBLOCK(AEPutPtr) }, - { 0x0A0B, PTOCBLOCK(AEGetNthDesc) }, - { 0x0A0F, PTOCBLOCK(AEPutKeyPtr) }, - { 0x0A16, PTOCBLOCK(AEPutAttributePtr) }, - { 0x0A22, PTOCBLOCK(AEInstallCoercionHandler) }, - { 0x0B0D, PTOCBLOCK(AEPutArray) }, - { 0x0B14, PTOCBLOCK(AECreateAppleEvent) }, - { 0x0B24, PTOCBLOCK(AEGetCoercionHandler) }, - { 0x0C3B, PTOCBLOCK(AECallObjectAccessor) }, - { 0x0D0C, PTOCBLOCK(AEGetArray) }, - { 0x0D17, PTOCBLOCK(AESend) }, - /* AEGetParamPtr */ - { 0x0E11, PTOCBLOCK(AEGetKeyPtr) }, - { 0x0E15, PTOCBLOCK(AEGetAttributePtr) }, - { 0x0E35, PTOCBLOCK(AESetObjectCallbacks) }, - { 0x100A, PTOCBLOCK(AEGetNthPtr) }, -}; - -static syn68k_addr_t -pack8_fail_fn() -{ - syn68k_addr_t retaddr; - - if(AE_OSL_select_fn == 0) - C_pack8_unknown_selector(); - - warning_unexpected("calling OSL 'selh' special handler"); - - retaddr = POPADDR(); - - /* #### just clobber a1? */ - EM_A1 = US_TO_SYN68K_CHECK0((ProcPtr)&pack8_unknown_selector); - - CALL_EMULATOR(AE_OSL_select_fn); - - return retaddr; -} - -STUB(Pack8) -{ - return do_selector_table(EM_D0 & 0xFFFF, - pack8_table, NELEM(pack8_table), - pack8_fail_fn, - Pack8); -} -} - -void Executor::C_pack8_unknown_selector() -{ - do_selector_error(EM_D0 & 0xFFFF, "Pack8", _Pack8); -} - -namespace Executor -{ - -/* - * NOTE: We only look at the last two bytes as the Palette selector. Some - * Apps don't load the other bytes "properly". - */ - -static ptocblock_t palette_dispatch_ptoc_1[] = { - PTOCBLOCK(Entry2Index), /* 0x00 */ - ZERO_PTOCBLOCK, /* 0x01 */ - PTOCBLOCK(RestoreDeviceClut), /* 0x02 */ - PTOCBLOCK(ResizePalette), /* 0x03 */ -}; - -static ptocblock_t palette_dispatch_ptoc_2[] = { - PTOCBLOCK(SaveFore), /* 0x40D */ - PTOCBLOCK(SaveBack), /* 0x40E */ - PTOCBLOCK(RestoreFore), /* 0x40F */ - PTOCBLOCK(RestoreBack), /* 0x410 */ - ZERO_PTOCBLOCK, /* 0x11 */ - ZERO_PTOCBLOCK, /* 0x12 */ - PTOCBLOCK(SetDepth), /* 0xA13 */ - PTOCBLOCK(HasDepth), /* 0xA14 */ - PTOCBLOCK(PMgrVersion), /* 0x15 */ - PTOCBLOCK(SetPaletteUpdates), /* 0x616 */ - PTOCBLOCK(GetPaletteUpdates), /* 0x417 */ - ZERO_PTOCBLOCK, /* 0x18 */ - PTOCBLOCK(GetGray), /* 0x1219 */ -}; - -static selectorblock_t palette_dispatch_block[] = { - { 0x00, 0x03, 1, palette_dispatch_ptoc_1 }, - { 0x0D, 0x19, 1, palette_dispatch_ptoc_2 }, - { 0, 0, 0, 0 }, -}; - -STUB(PaletteDispatch) -{ - /* FIXME: inspection of the register contents seems to indicate the - selector is passed in d0, more reliable sources should verify - this */ - return do_selector_block(palette_dispatch_block, - EM_D0 & 0xFF, PaletteDispatch); -} - -static ptocblock_t QDExtensions_ptoc[] = { - PTOCBLOCK(NewGWorld), /* 0 */ - PTOCBLOCK(LockPixels), /* 1 */ - PTOCBLOCK(UnlockPixels), /* 2 */ - PTOCBLOCK(UpdateGWorld), /* 3 */ - PTOCBLOCK(DisposeGWorld), /* 4 */ - PTOCBLOCK(GetGWorld), /* 5 */ - PTOCBLOCK(SetGWorld), /* 6 */ - PTOCBLOCK(CTabChanged), /* 7 */ - PTOCBLOCK(PixPatChanged), /* 8 */ - PTOCBLOCK(PortChanged), /* 9 */ - PTOCBLOCK(GDeviceChanged), /* 10 */ - PTOCBLOCK(AllowPurgePixels), /* 11 */ - PTOCBLOCK(NoPurgePixels), /* 12 */ - PTOCBLOCK(GetPixelsState), /* 13 */ - PTOCBLOCK(SetPixelsState), /* 14 */ - PTOCBLOCK(GetPixBaseAddr), /* 15 */ - PTOCBLOCK(NewScreenBuffer), - PTOCBLOCK(DisposeScreenBuffer), - PTOCBLOCK(GetGWorldDevice), - PTOCBLOCK(QDDone), - PTOCBLOCK(OffscreenVersion), - PTOCBLOCK(NewTempScreenBuffer), - PTOCBLOCK(PixMap32Bit), - PTOCBLOCK(GetGWorldPixMap), -}; - -static selectorblock_t QDExtensions_block[] = { - { 0x0, 0x17, 1, QDExtensions_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(QDExtensions) -{ - unsigned long selector; - - /* i don't think this should have the `&' rewrite the selector - blocks to handle the actual selector values */ - selector = EM_D0 & 0xFFFF; - return do_selector_block(QDExtensions_block, selector, QDExtensions); -} - -static ptocblock_t pack2ptoc[] = { - PTOCBLOCK(DIBadMount), /* 0 */ - PTOCBLOCK(DILoad), /* 2 */ - PTOCBLOCK(DIUnload), /* 4 */ - PTOCBLOCK(DIFormat), /* 6 */ - PTOCBLOCK(DIVerify), /* 8 */ - PTOCBLOCK(DIZero), /* 10 */ -}; - -static selectorblock_t pack2block[] = { - { 0, 10, 2, pack2ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(Pack2) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(pack2block, uw, Pack2); -} - STUB(IMVI_PPC) { EM_D0 = paramErr; /* this is good enough for NetScape */ @@ -1254,97 +1019,6 @@ STUB(InitZone) RTS(); } -STUB(FreeMem) -{ - EM_D0 = _FreeMem_flags(SYS_P(EM_D1, 0xA01C)); - RTS(); -} - -STUB(CompactMem) -{ - EM_D0 = _CompactMem_flags(EM_D0, SYS_P(EM_D1, 0xA04C)); - RTS(); -} - -STUB(ResrvMem) -{ - _ResrvMem_flags(EM_D0, SYS_P(EM_D1, 0xA040)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(PurgeMem) -{ - _PurgeMem_flags(EM_D0, SYS_P(EM_D1, 0xA04D)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(BlockMove) -{ - BlockMove_the_trap((Ptr)SYN68K_TO_US_CHECK0(EM_A0), - (Ptr)SYN68K_TO_US_CHECK0(EM_A1), EM_D0, - !(EM_D1 & 0x200)); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(MaxBlock) -{ - EM_D0 = _MaxBlock_flags(SYS_P(EM_D1, 0xA061)); - RTS(); -} - -STUB(NewEmptyHandle) -{ - EM_A0 = US_TO_SYN68K_CHECK0(_NewEmptyHandle_flags(SYS_P(EM_D1, 0xA166))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(NewHandle) -{ - /* #### d1 options */ - - EM_A0 = (uint32_t)US_TO_SYN68K_CHECK0(_NewHandle_flags(EM_D0, SYS_P(EM_D1, 0xA122), - CLEAR_P(EM_D1, 0xA122))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(RecoverHandle) -{ - EM_A0 = US_TO_SYN68K_CHECK0( - _RecoverHandle_flags((Ptr)SYN68K_TO_US_CHECK0(EM_A0), - SYS_P(EM_D1, 0xA128))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(NewPtr) -{ - EM_A0 = US_TO_SYN68K_CHECK0(_NewPtr_flags(EM_D0, SYS_P(EM_D1, 0xA11E), - CLEAR_P(EM_D1, 0xA11E))); - EM_D0 = CW(LM(MemErr)); - RTS(); -} - -STUB(MaxMem) -{ - EM_D0 = _MaxMem_flags((Size *)&EM_A0, SYS_P(EM_D1, 0xA11D)); - RTS(); -} - -STUB(PurgeSpace) -{ - int32_t total, contig; - - _PurgeSpace_flags(&total, &contig, SYS_P(EM_D1, 0xA062)); - EM_D0 = total; - EM_A0 = contig; - RTS(); -} - STUB(Microseconds) { unsigned long ms = msecs_elapsed(); diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp index 9f5e10f7..3beaf395 100644 --- a/src/emutraptables.cpp +++ b/src/emutraptables.cpp @@ -216,25 +216,25 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_InitZone }, {0,0},// { 0, (void *)_GetZone }, {0,0},// { 0, (void *)_SetZone }, - { 0, (void *)_FreeMem }, - { 0, (void *)_MaxMem }, + {0,0},// { 0, (void *)_FreeMem }, + {0,0},// { 0, (void *)_MaxMem }, {0,0},// { 0, (void *)_NewPtr }, {0,0},// { 0, (void *)_DisposPtr }, {0,0},// { 0, (void *)_SetPtrSize }, {0,0},// { 0, (void *)_GetPtrSize }, - { 0, (void *)_NewHandle }, + {0,0},// { 0, (void *)_NewHandle }, {0,0},// { 0, (void *)_DisposHandle }, {0,0},// { 0, (void *)_SetHandleSize }, {0,0},// { 0, (void *)_GetHandleSize }, {0,0},// { 0, (void *)_HandleZone }, {0,0},// { 0, (void *)_ReallocHandle }, - { 0, (void *)_RecoverHandle }, + {0,0},// { 0, (void *)_RecoverHandle }, {0,0},// { 0, (void *)_HLock }, {0,0},// { 0, (void *)_HUnlock }, {0,0},// { 0, (void *)_EmptyHandle }, {0,0},// { 0, (void *)_InitApplZone }, {0,0},// { 0, (void *)_SetApplLimit }, - { 0, (void *)_BlockMove }, + {0,0},// { 0, (void *)_BlockMove }, { 0, (void *)_PostEvent }, {0,0},// { 0, (void *)_OSEventAvail }, {0,0},// { 0, (void *)_GetOSEvent }, @@ -252,7 +252,7 @@ osstuff_t Executor::osstuff[0x100] = { { 0, (void *)_DrvrInstall }, { 0, (void *)_DrvrRemove }, {0,0},// { 0, (void *)_InitUtil }, - { 0, (void *)_ResrvMem }, + {0,0},// { 0, (void *)_ResrvMem }, { 0, (void *)PBSetFLock }, { 0, (void *)PBRstFLock }, { 0, (void *)PBSetFVers }, @@ -264,8 +264,8 @@ osstuff_t Executor::osstuff[0x100] = { {0,0},// { 0, (void *)_HPurge }, {0,0},// { 0, (void *)_HNoPurge }, {0,0},// { 0, (void *)_SetGrowZone }, - { 0, (void *)_CompactMem }, - { 0, (void *)_PurgeMem }, + {0,0},// { 0, (void *)_CompactMem }, + {0,0},// { 0, (void *)_PurgeMem }, { 0, (void *)_AddDrive }, { 0, (void *)_RDrvrInstall }, { 0, (void *)_RelString }, @@ -285,12 +285,12 @@ osstuff_t Executor::osstuff[0x100] = { {0,0},// { 0, (void *)_NMInstall }, {0,0},// { 0, (void *)_NMRemove }, { 0, (void *)_HFSDispatch }, - { 0, (void *)_MaxBlock }, - { 0, (void *)_PurgeSpace }, + {0,0},// { 0, (void *)_MaxBlock }, + {0,0},// { 0, (void *)_PurgeSpace }, {0,0},// { 0, (void *)_MaxApplZone }, {0,0},// { 0, (void *)_MoveHHi }, {0,0},// { 0, (void *)_StackSpace }, - { 0, (void *)_NewEmptyHandle }, + {0,0},// { 0, (void *)_NewEmptyHandle }, {0,0},// { 0, (void *)_HSetRBit }, {0,0},// { 0, (void *)_HClrRBit }, {0,0},// { 0, (void *)_HGetState }, diff --git a/src/include/DiskInit.h b/src/include/DiskInit.h index 15b55991..b440e2b5 100644 --- a/src/include/DiskInit.h +++ b/src/include/DiskInit.h @@ -11,12 +11,27 @@ */ namespace Executor { +DISPATCHER_TRAP(Pack2, 0xA9E9, StackW); + extern void C_DILoad(void); +PASCAL_SUBTRAP(DILoad, 0xA9E9, 0x0002, Pack2); + extern void C_DIUnload(void); +PASCAL_SUBTRAP(DIUnload, 0xA9E9, 0x0004, Pack2); + extern INTEGER C_DIBadMount(Point pt, LONGINT evtmess); +PASCAL_SUBTRAP(DIBadMount, 0xA9E9, 0x0000, Pack2); + extern INTEGER C_dibadmount(Point *ptp, LONGINT evtmess); + extern OSErr C_DIFormat(INTEGER dn); +PASCAL_SUBTRAP(DIFormat, 0xA9E9, 0x0006, Pack2); + extern OSErr C_DIVerify(INTEGER dn); +PASCAL_SUBTRAP(DIVerify, 0xA9E9, 0x0008, Pack2); + extern OSErr C_DIZero(INTEGER dn, StringPtr vname); +PASCAL_SUBTRAP(DIZero, 0xA9E9, 0x000A, Pack2); + } #endif /* __DISKINIT__ */ diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index ffdb62b4..a5151d58 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -118,53 +118,63 @@ namespace callconv #define NewEmptyHandle() (_NewEmptyHandle_flags(false)) #define NewEmptyHandleSys() (_NewEmptyHandle_flags(true)) extern Handle _NewEmptyHandle_flags(bool sys_p); +REGISTER_TRAP2(_NewEmptyHandle_flags, 0xA166, A0 (TrapBit), callconv::ReturnMemErr); #define NewHandle(size) (_NewHandle_flags(size, false, false)) #define NewHandleSys(size) (_NewHandle_flags(size, true, false)) #define NewHandleClear(size) (_NewHandle_flags(size, false, true)) #define NewHandleSysClear(size) (_NewHandle_flags(size, true, true)) extern Handle _NewHandle_flags(Size size, bool sys_p, bool clear_p); +REGISTER_TRAP2(_NewHandle_flags, 0xA122, A0 (D0, TrapBit, TrapBit), callconv::ReturnMemErr); #define RecoverHandle(ptr) (_RecoverHandle_flags(ptr, false)) #define RecoverHandleSys(ptr) (_RecoverHandle_flags(ptr, true)) extern Handle _RecoverHandle_flags(Ptr p, bool sys_p); +REGISTER_TRAP2(_RecoverHandle_flags, 0xA128, A0 (A0, TrapBit), callconv::ReturnMemErr); #define NewPtr(size) (_NewPtr_flags(size, false, false)) #define NewPtrSys(size) (_NewPtr_flags(size, true, false)) #define NewPtrClear(size) (_NewPtr_flags(size, false, true)) #define NewPtrSysClear(size) (_NewPtr_flags(size, true, true)) extern Ptr _NewPtr_flags(Size size, bool sys_p, bool clear_p); -REGISTER_TRAP2(_NewPtr_flags, 0xA11E, A0 (D0, TrapBit, TrapBit) , callconv::ReturnMemErr ); +REGISTER_TRAP2(_NewPtr_flags, 0xA11E, A0 (D0, TrapBit, TrapBit), callconv::ReturnMemErr); #define FreeMem() (_FreeMem_flags(false)) #define FreeMemSys() (_FreeMem_flags(true)) extern int32_t _FreeMem_flags(bool sys_p); +REGISTER_TRAP2(_FreeMem_flags, 0xA01C, D0 (TrapBit)); #define MaxMem(growp) (_MaxMem_flags(growp, false)) #define MaxMemSys(growp) (_MaxMem_flags(growp, true)) extern Size _MaxMem_flags(Size *growp, bool sys_p); +REGISTER_TRAP2(_MaxMem_flags, 0xA11D, D0 (Out, TrapBit)); #define CompactMem(needed) (_CompactMem_flags(needed, false)) #define CompactMemSys(needed) (_CompactMem_flags(needed, true)) extern Size _CompactMem_flags(Size sizeneeded, bool sys_p); +REGISTER_TRAP2(_CompactMem_flags, 0xA04C, D0 (D0, TrapBit)); #define ResrvMem(needed) (_ResrvMem_flags(needed, false)) #define ResrvMemSys(needed) (_ResrvMem_flags(needed, true)) extern void _ResrvMem_flags(Size needed, bool sys_p); +REGISTER_TRAP2(_ResrvMem_flags, 0xA040, D0 (D0, TrapBit)); #define PurgeMem(needed) (_PurgeMem_flags(needed, false)) #define PurgeMemSys(needed) (_PurgeMem_flags(needed, true)) extern void _PurgeMem_flags(Size needed, bool sys_p); +REGISTER_TRAP2(_PurgeMem_flags, 0xA04D, D0 (D0, TrapBit)); #define MaxBlock() (_MaxBlock_flags(false)) #define MaxBlockSys() (_MaxBlock_flags(true)) extern Size _MaxBlock_flags(bool sys_p); +REGISTER_TRAP2(_MaxBlock_flags, 0xA061, D0 (TrapBit)); #define PurgeSpace(totalp, congtigp) \ (_PurgeSpace_flags(totalp, contigp, false)) #define PurgeSpaceSys(totalp, congtigp) \ (_PurgeSpace_flags(totalp, contigp, true)) extern void _PurgeSpace_flags(Size *totalp, Size *contigp, bool sys_p); +REGISTER_TRAP2(_PurgeSpace_flags, 0xA062, void (Out, Out, TrapBit)); /* ### cliff bogofunc; should go away */ extern void ROMlib_installhandle(Handle sh, Handle dh); @@ -221,8 +231,11 @@ REGISTER_TRAP2(SetPtrSize, 0xA020, void (A0, D0), ReturnMemErr); extern THz PtrZone(Ptr p); REGISTER_TRAP2(PtrZone, 0xA148, A0 (A0), ReturnMemErr); + +extern void BlockMove_the_trap(Ptr src, Ptr dst, Size cnt, bool flush_p); extern void BlockMove(Ptr src, Ptr dst, Size cnt); extern void BlockMoveData(Ptr src, Ptr dst, Size cnt); +REGISTER_TRAP2(BlockMove_the_trap, 0xA02E, void(A0,A1,D0,TrapBit<0x200>), ReturnMemErr); extern void MaxApplZone(void); REGISTER_TRAP2(MaxApplZone, 0xA063, void (), ReturnMemErr); diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index c2b1e26b..e96ea155 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -58,8 +58,6 @@ struct initzonehiddenargs_t extern void ROMlib_GetTrapAddress_helper(uint32_t *d0p, uint32_t d1, uint32_t *a0p); extern void ROMlib_reset_bad_trap_addresses(void); -extern void C_pack8_unknown_selector(void); -PASCAL_FUNCTION(pack8_unknown_selector); RAW_68K_TRAP(Unimplemented, 0xA89F); RAW_68K_TRAP(SwapMMUMode, 0xA05D); @@ -69,25 +67,25 @@ RAW_68K_TRAP(FInitQueue, 0xA016); RAW_68K_TRAP(InitZone, 0xA019); //RAW_68K_TRAP(GetZone, 0xA11A); //RAW_68K_TRAP(SetZone, 0xA01B); -RAW_68K_TRAP(FreeMem, 0xA01C); -RAW_68K_TRAP(MaxMem, 0xA11D); +//RAW_68K_TRAP(FreeMem, 0xA01C); +//RAW_68K_TRAP(MaxMem, 0xA11D); //RAW_68K_TRAP(NewPtr, 0xA11E); //RAW_68K_TRAP(DisposPtr, 0xA01F); //RAW_68K_TRAP(SetPtrSize, 0xA020); //RAW_68K_TRAP(GetPtrSize, 0xA021); -RAW_68K_TRAP(NewHandle, 0xA122); +//RAW_68K_TRAP(NewHandle, 0xA122); //RAW_68K_TRAP(DisposHandle, 0xA023); //RAW_68K_TRAP(SetHandleSize, 0xA024); //RAW_68K_TRAP(GetHandleSize, 0xA025); //RAW_68K_TRAP(HandleZone, 0xA126); //RAW_68K_TRAP(ReallocHandle, 0xA027); -RAW_68K_TRAP(RecoverHandle, 0xA128); +//RAW_68K_TRAP(RecoverHandle, 0xA128); //RAW_68K_TRAP(HLock, 0xA029); //RAW_68K_TRAP(HUnlock, 0xA02A); //RAW_68K_TRAP(EmptyHandle, 0xA02B); //RAW_68K_TRAP(InitApplZone, 0xA02C); //RAW_68K_TRAP(SetApplLimit, 0xA02D); -RAW_68K_TRAP(BlockMove, 0xA02E); +//RAW_68K_TRAP(BlockMove, 0xA02E); RAW_68K_TRAP(PostEvent, 0xA02F); //RAW_68K_TRAP(OSEventAvail, 0xA030); //RAW_68K_TRAP(GetOSEvent, 0xA031); @@ -104,15 +102,15 @@ RAW_68K_TRAP(SlotManager, 0xA06E); RAW_68K_TRAP(EqualString, 0xA03C); RAW_68K_TRAP(DrvrInstall, 0xA03D); RAW_68K_TRAP(DrvrRemove, 0xA03E); -RAW_68K_TRAP(ResrvMem, 0xA040); +//RAW_68K_TRAP(ResrvMem, 0xA040); RAW_68K_TRAP(GetTrapAddress, 0xA146); RAW_68K_TRAP(SetTrapAddress, 0xA047); //RAW_68K_TRAP(PtrZone, 0xA148); //RAW_68K_TRAP(HPurge, 0xA049); //RAW_68K_TRAP(HNoPurge, 0xA04A); //RAW_68K_TRAP(SetGrowZone, 0xA04B); -RAW_68K_TRAP(CompactMem, 0xA04C); -RAW_68K_TRAP(PurgeMem, 0xA04D); +//RAW_68K_TRAP(CompactMem, 0xA04C); +//RAW_68K_TRAP(PurgeMem, 0xA04D); RAW_68K_TRAP(RelString, 0xA050); RAW_68K_TRAP(UprString, 0xA054); RAW_68K_TRAP(StripAddress, 0xA055); @@ -123,12 +121,12 @@ RAW_68K_TRAP(StripAddress, 0xA055); //RAW_68K_TRAP(NMInstall, 0xA05E); //RAW_68K_TRAP(NMRemove, 0xA05F); RAW_68K_TRAP(HFSDispatch, 0xA260); -RAW_68K_TRAP(MaxBlock, 0xA061); -RAW_68K_TRAP(PurgeSpace, 0xA062); +//RAW_68K_TRAP(MaxBlock, 0xA061); +//RAW_68K_TRAP(PurgeSpace, 0xA062); //RAW_68K_TRAP(MaxApplZone, 0xA063); //RAW_68K_TRAP(MoveHHi, 0xA064); //RAW_68K_TRAP(StackSpace, 0xA065); -RAW_68K_TRAP(NewEmptyHandle, 0xA166); +//RAW_68K_TRAP(NewEmptyHandle, 0xA166); //RAW_68K_TRAP(HSetRBit, 0xA067); //RAW_68K_TRAP(HClrRBit, 0xA068); //RAW_68K_TRAP(HGetState, 0xA069); @@ -152,15 +150,15 @@ RAW_68K_TRAP(ResourceStub, 0xA0FC); //RAW_68K_TRAP(PtrToXHand, 0xA9E2); //RAW_68K_TRAP(PtrToHand, 0xA9E3); //RAW_68K_TRAP(HandAndHand, 0xA9E4); -RAW_68K_TRAP(Pack2, 0xA9E9); -RAW_68K_TRAP(Pack8, 0xA816); +//RAW_68K_TRAP(Pack2, 0xA9E9); +//RAW_68K_TRAP(Pack8, 0xA816); //RAW_68K_TRAP(PtrAndHand, 0xA9EF); RAW_68K_TRAP(LoadSeg, 0xA9F0); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); //RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); -RAW_68K_TRAP(PaletteDispatch, 0xAAA2); -RAW_68K_TRAP(QDExtensions, 0xAB1D); +//RAW_68K_TRAP(PaletteDispatch, 0xAAA2); +//RAW_68K_TRAP(QDExtensions, 0xAB1D); //RAW_68K_TRAP(WriteParam, 0xA038); //RAW_68K_TRAP(InitUtil, 0xA03F); //RAW_68K_TRAP(flushcache, 0xA0BD); diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index 7461b56d..14f15f13 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -42,6 +42,7 @@ #include "PPC.h" #include "QuickTime.h" #include "BinaryDecimal.h" +#include "DiskInit.h" #include "rsys/file.h" #include "rsys/adb.h" diff --git a/src/include/rsys/mman.h b/src/include/rsys/mman.h index 6da84abd..c4ef41ce 100644 --- a/src/include/rsys/mman.h +++ b/src/include/rsys/mman.h @@ -18,8 +18,6 @@ namespace Executor extern SignedByte hlock_return_orig_state(Handle h); extern Size zone_size(THz zone); -extern void BlockMove_the_trap(Ptr src, Ptr dst, Size cnt, bool flush_p); - /* Helper function that prints a useful error message when out of memory. */ extern void print_mem_full_message(void); From 716b13b313042edec7c6b8aafff08d7e01471286 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sun, 28 Jan 2018 11:57:56 +0100 Subject: [PATCH 59/88] include some things via <> instead of "" to prevent confusion on case insensitive file systems --- src/include/rsys/everything.h | 94 +++++++++++++++++------------------ 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index f50f33a2..86752e97 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -1,49 +1,49 @@ -#include "rsys/common.h" +#include -#include "QuickDraw.h" -#include "ControlMgr.h" -#include "WindowMgr.h" -#include "CQuickDraw.h" -#include "FileMgr.h" -#include "DeviceMgr.h" -#include "DialogMgr.h" -#include "FontMgr.h" -#include "MemoryMgr.h" -#include "ListMgr.h" -#include "MenuMgr.h" -#include "ResourceMgr.h" -#include "OSEvent.h" -#include "Disk.h" -#include "PrintMgr.h" -#include "ScrapMgr.h" -#include "Serial.h" -#include "StdFilePkg.h" -#include "IntlUtil.h" -#include "OSUtil.h" -#include "SegmentLdr.h" -#include "ToolboxEvent.h" -#include "ToolboxUtil.h" -#include "VRetraceMgr.h" -#include "DeskMgr.h" -#include "Package.h" -#include "SysErr.h" -#include "SANE.h" -#include "ScriptMgr.h" -#include "SoundMgr.h" -#include "NotifyMgr.h" -#include "ShutDown.h" -#include "Gestalt.h" -#include "AppleEvents.h" -#include "ProcessMgr.h" -#include "AliasMgr.h" -#include "EditionMgr.h" -#include "HelpMgr.h" -#include "Iconutil.h" -#include "PPC.h" -#include "QuickTime.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "rsys/file.h" -#include "rsys/adb.h" -#include "rsys/soundopts.h" -#include "rsys/cfm.h" -#include "rsys/mixed_mode.h" +#include +#include +#include +#include +#include From 8bf5ebdf5a0a39dc56b3a65fd4fe9ad4e0b9b9db Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 29 Jan 2018 01:57:47 +0100 Subject: [PATCH 60/88] new-style file manager traps --- src/include/DeviceMgr.h | 5 ++ src/include/FileMgr.h | 131 ++++++++++++++++++++++++---------- src/include/rsys/everything.h | 2 + src/include/rsys/functions.h | 19 ++++- 4 files changed, 118 insertions(+), 39 deletions(-) diff --git a/src/include/DeviceMgr.h b/src/include/DeviceMgr.h index f5ec2145..1698486a 100644 --- a/src/include/DeviceMgr.h +++ b/src/include/DeviceMgr.h @@ -153,6 +153,11 @@ extern driverinfo *__ROMlib_otherdrivers; extern OSErr PBControl(ParmBlkPtr pbp, BOOLEAN a); extern OSErr PBStatus(ParmBlkPtr pbp, BOOLEAN a); extern OSErr PBKillIO(ParmBlkPtr pbp, BOOLEAN a); + +FILE_TRAP(PBControl, 0xA004); +FILE_TRAP(PBStatus, 0xA005); +FILE_TRAP(PBKillIO, 0xA006); + extern OSErr OpenDriver(StringPtr name, GUEST *rnp); extern OSErr CloseDriver(INTEGER rn); extern OSErr Control(INTEGER rn, INTEGER code, diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index fc0e34c9..ff8e48fc 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -621,64 +621,119 @@ extern OSErr SetVol(StringPtr voln, INTEGER vrn); extern OSErr FlushVol(StringPtr voln, INTEGER vrn); extern OSErr UnmountVol(StringPtr voln, INTEGER vrn); extern OSErr Eject(StringPtr voln, INTEGER vrn); -extern OSErr PBHRename(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHCreate(HParmBlkPtr pb, BOOLEAN async); extern OSErr PBDirCreate(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHDelete(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBRead(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBWrite(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBClose(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHOpen(HParmBlkPtr pb, BOOLEAN async); extern OSErr PBOpenDF(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHOpenRF(HParmBlkPtr pb, BOOLEAN async); extern OSErr PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async); extern OSErr PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async); extern OSErr PBCatMove(CMovePBPtr pb, BOOLEAN async); -extern OSErr PBGetVInfo(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBUnmountVol(ParmBlkPtr pb); -extern OSErr PBEject(ParmBlkPtr pb); -extern OSErr PBAllocate(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBAllocContig(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetEOF(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBOpen(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBOpenRF(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBLockRange(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBUnlockRange(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBGetFPos(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetFPos(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBGetEOF(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBFlushFile(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBCreate(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBDelete(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBOpenWD(WDPBPtr pb, BOOLEAN async); extern OSErr PBCloseWD(WDPBPtr pb, BOOLEAN async); extern OSErr PBGetWDInfo(WDPBPtr pb, BOOLEAN async); +extern OSErr PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); +extern OSErr PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); +extern OSErr PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBCatSearch(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); + +extern OSErr PBOpen(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHOpen(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBOpen, PBHOpen, HParmBlkPtr, 0xA000); + +extern OSErr PBClose(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBClose, 0xA001); + +extern OSErr PBRead(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBRead, 0xA002); + +extern OSErr PBWrite(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBWrite, 0xA003); + +extern OSErr PBGetVInfo(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBGetVInfo, PBHGetVInfo, HParmBlkPtr, 0xA007); + +extern OSErr PBCreate(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHCreate(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBCreate, PBHCreate, HParmBlkPtr, 0xA008); + +extern OSErr PBDelete(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHDelete(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBDelete, PBHDelete, HParmBlkPtr, 0xA009); + +extern OSErr PBOpenRF(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHOpenRF(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBOpenRF, PBHOpenRF, HParmBlkPtr, 0xA00A); + +extern OSErr PBRename(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHRename(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBRename, PBHRename, HParmBlkPtr, 0xA00B); + extern OSErr PBGetFInfo(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHGetFInfo(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBGetFInfo, PBHGetFInfo, HParmBlkPtr, 0xA00C); + extern OSErr PBSetFInfo(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBHSetFInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetFLock(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHSetFLock(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBRstFLock(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHRstFLock(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetFVers(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBRename(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); +HFS_TRAP(PBSetFInfo, PBHSetFInfo, HParmBlkPtr, 0xA00D); + +extern OSErr PBUnmountVol(ParmBlkPtr pb); +REGISTER_TRAP2(PBUnmountVol, 0xA00E, D0(A0)); + extern OSErr PBMountVol(ParmBlkPtr pb); -extern OSErr PBHGetVInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); +REGISTER_TRAP2(PBMountVol, 0xA00F, D0(A0)); + +extern OSErr PBAllocate(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBAllocate, 0xA010); + +extern OSErr PBGetEOF(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBGetEOF, 0xA011); + +extern OSErr PBSetEOF(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBSetEOF, 0xA012); + +extern OSErr PBFlushVol(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBFlushVol, 0xA013); + extern OSErr PBGetVol(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBHGetVol(WDPBPtr pb, BOOLEAN async); +HFS_TRAP(PBGetVol, PBHGetVol, WDPBPtr, 0xA014); + extern OSErr PBSetVol(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBHSetVol(WDPBPtr pb, BOOLEAN async); -extern OSErr PBFlushVol(ParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBSetVol, PBHSetVol, WDPBPtr, 0xA015); + +extern OSErr PBEject(ParmBlkPtr pb); +REGISTER_TRAP2(PBEject, 0xA017, D0(A0)); + +extern OSErr PBGetFPos(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBGetFPos, 0xA018); + extern OSErr PBOffLine(ParmBlkPtr pb); -extern OSErr PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBCatSearch(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); +REGISTER_TRAP2(PBOffLine, 0xA035, D0(A0)); + +extern OSErr PBSetFLock(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHSetFLock(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBSetFLock, PBHSetFLock, HParmBlkPtr, 0xA041); + +extern OSErr PBRstFLock(ParmBlkPtr pb, BOOLEAN async); +extern OSErr PBHRstFLock(HParmBlkPtr pb, BOOLEAN async); +HFS_TRAP(PBRstFLock, PBHRstFLock, HParmBlkPtr, 0xA042); + +extern OSErr PBSetFVers(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBSetFVers, 0xA043); + +extern OSErr PBSetFPos(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBSetFPos, 0xA044); + +extern OSErr PBFlushFile(ParmBlkPtr pb, BOOLEAN async); +FILE_TRAP(PBFlushFile, 0xA045); + /* prototypes for the high level filesystem dispatch traps */ DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0<0xF>); diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index 14f15f13..1e60621c 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -43,6 +43,8 @@ #include "QuickTime.h" #include "BinaryDecimal.h" #include "DiskInit.h" +#include "TimeMgr.h" +#include "ADB.h" #include "rsys/file.h" #include "rsys/adb.h" diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 4674659e..eed46994 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -252,7 +252,24 @@ class SubTrapFunction : public syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), TrapFunction) - + +#define ASYNCBIT (1 << 10) +#define HFSBIT (1 << 9) + +#define FILE_TRAP(NAME, TRAP) \ + REGISTER_TRAP2(NAME, TRAP, D0 (A0, TrapBit)) + +#define HFS_TRAP(NAME, HNAME, PBTYPE, TRAP) \ + inline OSErr NAME##_##HNAME(ParmBlkPtr pb, Boolean async, Boolean hfs) \ + { \ + return hfs ? HNAME((PBTYPE)pb, async) : NAME(pb, async); \ + } \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME##_##HNAME, \ + (#NAME "/" #HNAME), \ + TrapFunction, TrapBit)>>) + void resetNestingLevel(); void init(); From f5798b4245080c90c272f24d90415c109ec15441 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 29 Jan 2018 02:21:42 +0100 Subject: [PATCH 61/88] old trap tables now unused. remove. --- src/CMakeLists.txt | 2 +- src/emustubs.cpp | 3 + src/emutraptables.cpp | 567 ----------------------------------- src/functions.cpp | 17 +- src/include/ResourceMgr.h | 2 + src/include/rsys/emustubs.h | 1 - src/include/rsys/functions.h | 2 + src/main.cpp | 3 +- src/resOpen.cpp | 2 +- 9 files changed, 13 insertions(+), 586 deletions(-) delete mode 100644 src/emutraptables.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c41d4a1..08d8995c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -186,7 +186,7 @@ set(misc_sources functions.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cp icon.cpp redrawscreen.cpp ini.cpp checkpoint.cpp qt.cpp paramline.c fauxdbm.cpp commtool.cpp cfm.cpp pef_hash.cpp interfacelib.cpp mixed_mode.cpp suffix_maps.cpp appearance.cpp lockrange.cpp - emutrap.cpp emutraptables.cpp emustubs.cpp unix_like.cpp parse.ypp check_structs.cpp + emutrap.cpp emustubs.cpp unix_like.cpp parse.ypp check_structs.cpp executor.cpp crc.cpp) set(include_sources hintemplate.h diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 05199fe8..cfdc4683 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -67,6 +67,9 @@ namespace Executor #define STUB(x) syn68k_addr_t _##x(syn68k_addr_t ignoreme, \ void *ignoreme2) +void C_unknown574() +{ +} STUB(GetDefaultStartup) { diff --git a/src/emutraptables.cpp b/src/emutraptables.cpp deleted file mode 100644 index 3beaf395..00000000 --- a/src/emutraptables.cpp +++ /dev/null @@ -1,567 +0,0 @@ -/* Copyright 1994, 1995, 1996 by Abacus Research and - * Development, Inc. All rights reserved. - */ - -#include "rsys/common.h" -#include "rsys/everything.h" - -#include "OSUtil.h" -#include "Gestalt.h" -#include "SysErr.h" - -#include "rsys/trapglue.h" -#include "rsys/stdfile.h" -#include "rsys/tesave.h" -#include "rsys/resource.h" -#include "rsys/ctl.h" -#include "rsys/list.h" -#include "rsys/menu.h" -#include "rsys/wind.h" -#include "rsys/print.h" -#include "rsys/osutil.h" -#include "rsys/vbl.h" -#include "rsys/soundopts.h" -#include "rsys/refresh.h" -#include "rsys/gestalt.h" -#include "rsys/emustubs.h" -#include "rsys/executor.h" - -using namespace Executor; - -syn68k_addr_t Executor::tooltraptable[0x400]; /* Gets filled in at run time */ -syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ - -#define _Pack9 _Unimplemented /* PPCBrowser */ -#define _Pack10 _Unimplemented - -#define _Pack13 _Unimplemented /* DB stuff */ -#define _Pack1 _Unimplemented - -#define _AddDrive _Unimplemented -#define _RDrvrInstall _Unimplemented -/* #define (void*)_IMVI_ReadXPRam (void*)_Unimplemented */ -#define _IMVI_WriteXPRam _Unimplemented -#define _IMVI_MemoryDispatch _Unimplemented -/* #define (void*)_SlotManager (void*)_Unimplemented */ -/* #define (void*)_SlotVInstall (void*)_Unimplemented */ -/* #define (void*)_SlotVRemove (void*)_Unimplemented */ -#define _AttachVBL _Unimplemented -#define _DoVBLTask _Unimplemented -#define _DTInstall _Unimplemented -#define _SIntRemove _Unimplemented -#define _InternalWait _Unimplemented -#define _SIntInstall _Unimplemented -#define _IMVI_IdleUpdate _Unimplemented -#define _IMVI_SlpQInstall _Unimplemented -#define _IMVI_DebugUtil _Unimplemented -#define _IMVI_DeferUserFn _Unimplemented -#define _IMVI_Translate24To32 _Unimplemented - -#define _GetMaskTable _Unimplemented -#define _Debugger _Unimplemented - -void Executor::C_unknown574(void) -{ -} - -static void *fsroutines[][2] = { - { /* 0xA000 */ (void *)PBOpen, (void *)PBHOpen /* 0 */ }, -#define OPENTRAP 0 -#define OPENINDEX 0 - - { /* 0xA001 */ (void *)PBClose, (void *)PBClose /* 1 */ }, -#define CLOSETRAP 1 -#define CLOSEINDEX 1 - - { /* 0xA002 */ (void *)PBRead, (void *)PBRead /* 2 */ }, -#define READTRAP 2 -#define READINDEX 2 - - { /* 0xA003 */ (void *)PBWrite, (void *)PBWrite /* 3 */ }, -#define WRITETRAP 3 -#define WRITEINDEX 3 - - { /* 0xA004 */ (void *)PBControl, (void *)PBControl /* 4 */ }, -#define CONTROLTRAP 4 -#define CONTROLINDEX 4 - - { /* 0xA005 */ (void *)PBStatus, (void *)PBStatus /* 5 */ }, -#define STATUSTRAP 5 -#define STATUSINDEX 5 - - { /* 0xA006 */ (void *)PBKillIO, (void *)PBKillIO /* 6 */ }, -#define KILLIOTRAP 6 -#define KILLIOINDEX 6 - - { /* 0xA007 */ (void *)PBGetVInfo, (void *)PBHGetVInfo /* 7 */ }, -#define GETVINFOTRAP 7 -#define GETVINFOINDEX 7 - - { /* 0xA008 */ (void *)PBCreate, (void *)PBHCreate /* 8 */ }, -#define CREATETRAP 8 -#define CREATEINDEX 8 - - { /* 0xA009 */ (void *)PBDelete, (void *)PBHDelete /* 9 */ }, -#define DELETETRAP 9 -#define DELETEINDEX 9 - - { /* 0xA00A */ (void *)PBOpenRF, (void *)PBHOpenRF /* 10 */ }, -#define OPENRFTRAP 0xA -#define OPENRFINDEX 10 - - { /* 0xA00B */ (void *)PBRename, (void *)PBHRename /* 11 */ }, -#define RENAMETRAP 0xB -#define RENAMEINDEX 11 - - { /* 0xA00C */ (void *)PBGetFInfo, (void *)PBHGetFInfo /* 12 */ }, -#define GETFINFOTRAP 0xC -#define GETFINFOINDEX 12 - - { /* 0xA00D */ (void *)PBSetFInfo, (void *)PBHSetFInfo /* 13 */ }, -#define SETFINFOTRAP 0xD -#define SETFINFOINDEX 13 - - { /* 0xA00E */ (void *)PBUnmountVol, (void *)PBUnmountVol /* 14 */ }, -#define UNMOUNTVOLTRAP 0xE -#define UNMOUNTVOLINDEX 14 - - { /* 0xA00F */ (void *)PBMountVol, (void *)PBMountVol /* 15 */ }, -#define MOUNTVOLTRAP 0xF -#define MOUNTVOLINDEX 15 - - { /* 0xA010 */ (void *)PBAllocate, (void *)PBAllocate /* 16 */ }, -#define ALLOCATETRAP 0x10 -#define ALLOCATEINDEX 16 - - { /* 0xA011 */ (void *)PBGetEOF, (void *)PBGetEOF /* 17 */ }, -#define GETEOFTRAP 0x11 -#define GETEOFINDEX 17 - - { /* 0xA012 */ (void *)PBSetEOF, (void *)PBSetEOF /* 18 */ }, -#define SETEOFTRAP 0x12 -#define SETEOFINDEX 18 - - { /* 0xA013 */ (void *)PBFlushVol, (void *)PBFlushVol /* 19 */ }, -#define FLUSHVOLTRAP 0x13 -#define FLUSHVOLINDEX 19 - - { /* 0xA014 */ (void *)PBGetVol, (void *)PBHGetVol /* 20 */ }, -#define GETVOLTRAP 0x14 -#define GETVOLINDEX 20 - - { /* 0xA015 */ (void *)PBSetVol, (void *)PBHSetVol /* 21 */ }, -#define SETVOLTRAP 0x15 -#define SETVOLINDEX 21 - - { /* 0xA017 */ (void *)PBEject, (void *)PBEject /* 22 */ }, -#define EJECTTRAP 0x17 -#define EJECTINDEX 22 - - { /* 0xA018 */ (void *)PBGetFPos, (void *)PBGetFPos /* 23 */ }, -#define GETFPOSTRAP 0x18 -#define GETFPOSINDEX 23 - - { /* 0xA035 */ (void *)PBOffLine, (void *)PBOffLine /* 24 */ }, -#define OFFLINETRAP 0x35 -#define OFFLINEINDEX 24 - - { /* 0xA041 */ (void *)PBSetFLock, (void *)PBHSetFLock /* 25 */ }, -#define SETFLOCKTRAP 0x41 -#define SETFLOCKINDEX 25 - - { /* 0xA042 */ (void *)PBRstFLock, (void *)PBHRstFLock /* 26 */ }, -#define RSTFLOCKTRAP 0x42 -#define RSTFLOCKINDEX 26 - - { /* 0xA043 */ (void *)PBSetFVers, (void *)PBSetFVers /* 27 */ }, -#define SETFVERSTRAP 0x43 -#define SETFVERSINDEX 27 - - { /* 0xA044 */ (void *)PBSetFPos, (void *)PBSetFPos /* 28 */ }, -#define SETFPOSTRAP 0x44 -#define SETFPOSINDEX 28 - - { /* 0xA045 */ (void *)PBFlushFile, (void *)PBFlushFile /* 29 */ }, -#define FLUSHFILETRAP 0x45 -#define FLUSHFILEINDEX 29 - -}; - -osstuff_t Executor::osstuff[0x100] = { - { 0, (void *)PBOpen }, - { 0, (void *)PBClose }, - { 0, (void *)PBRead }, - { 0, (void *)PBWrite }, - { 0, (void *)PBControl }, - { 0, (void *)PBStatus }, - { 0, (void *)PBKillIO }, - { 0, (void *)PBGetVInfo }, - { 0, (void *)PBCreate }, - { 0, (void *)PBDelete }, - { 0, (void *)PBOpenRF }, - { 0, (void *)PBRename }, - { 0, (void *)PBGetFInfo }, - { 0, (void *)PBSetFInfo }, - { 0, (void *)PBUnmountVol }, - { 0, (void *)PBMountVol }, - { 0, (void *)PBAllocate }, - { 0, (void *)PBGetEOF }, - { 0, (void *)PBSetEOF }, - { 0, (void *)PBFlushVol }, - { 0, (void *)PBGetVol }, - { 0, (void *)PBSetVol }, - { 0, (void *)_FInitQueue }, - { 0, (void *)PBEject }, - { 0, (void *)PBGetFPos }, - { 0, (void *)_InitZone }, - {0,0},// { 0, (void *)_GetZone }, - {0,0},// { 0, (void *)_SetZone }, - {0,0},// { 0, (void *)_FreeMem }, - {0,0},// { 0, (void *)_MaxMem }, - {0,0},// { 0, (void *)_NewPtr }, - {0,0},// { 0, (void *)_DisposPtr }, - {0,0},// { 0, (void *)_SetPtrSize }, - {0,0},// { 0, (void *)_GetPtrSize }, - {0,0},// { 0, (void *)_NewHandle }, - {0,0},// { 0, (void *)_DisposHandle }, - {0,0},// { 0, (void *)_SetHandleSize }, - {0,0},// { 0, (void *)_GetHandleSize }, - {0,0},// { 0, (void *)_HandleZone }, - {0,0},// { 0, (void *)_ReallocHandle }, - {0,0},// { 0, (void *)_RecoverHandle }, - {0,0},// { 0, (void *)_HLock }, - {0,0},// { 0, (void *)_HUnlock }, - {0,0},// { 0, (void *)_EmptyHandle }, - {0,0},// { 0, (void *)_InitApplZone }, - {0,0},// { 0, (void *)_SetApplLimit }, - {0,0},// { 0, (void *)_BlockMove }, - { 0, (void *)_PostEvent }, - {0,0},// { 0, (void *)_OSEventAvail }, - {0,0},// { 0, (void *)_GetOSEvent }, - {0,0},// { 0, (void *)_FlushEvents }, - {0,0},// { 0, (void *)_VInstall }, - {0,0},// { 0, (void *)_VRemove }, - { 0, (void *)PBOffLine }, - {0,0},// { 0, (void *)_MoreMasters }, - { 0, (void *)_Unimplemented }, - {0,0},// { 0, (void *)_WriteParam }, - {0,0},// { 0, (void *)_ReadDateTime }, - {0,0},// { 0, (void *)_SetDateTime }, - {0,0},// { 0, (void *)_Delay }, - { 0, (void *)_EqualString }, - { 0, (void *)_DrvrInstall }, - { 0, (void *)_DrvrRemove }, - {0,0},// { 0, (void *)_InitUtil }, - {0,0},// { 0, (void *)_ResrvMem }, - { 0, (void *)PBSetFLock }, - { 0, (void *)PBRstFLock }, - { 0, (void *)PBSetFVers }, - { 0, (void *)PBSetFPos }, - { 0, (void *)PBFlushFile }, - { 0, (void *)_GetTrapAddress }, - { 0, (void *)_SetTrapAddress }, - {0,0},// { 0, (void *)_PtrZone }, - {0,0},// { 0, (void *)_HPurge }, - {0,0},// { 0, (void *)_HNoPurge }, - {0,0},// { 0, (void *)_SetGrowZone }, - {0,0},// { 0, (void *)_CompactMem }, - {0,0},// { 0, (void *)_PurgeMem }, - { 0, (void *)_AddDrive }, - { 0, (void *)_RDrvrInstall }, - { 0, (void *)_RelString }, - { 0, (void *)_IMVI_ReadXPRam }, - { 0, (void *)_IMVI_WriteXPRam }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_UprString }, - { 0, (void *)_StripAddress }, - { 0, (void *)_IMVI_LowerText }, - {0,0},// { 0, (void *)_SetApplBase }, - {0,0},// { 0, (void *)_InsTime }, - {0,0},// { 0, (void *)_RmvTime }, - {0,0},// { 0, (void *)_PrimeTime }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_MemoryDispatch }, - { 0, (void *)_SwapMMUMode }, - {0,0},// { 0, (void *)_NMInstall }, - {0,0},// { 0, (void *)_NMRemove }, - { 0, (void *)_HFSDispatch }, - {0,0},// { 0, (void *)_MaxBlock }, - {0,0},// { 0, (void *)_PurgeSpace }, - {0,0},// { 0, (void *)_MaxApplZone }, - {0,0},// { 0, (void *)_MoveHHi }, - {0,0},// { 0, (void *)_StackSpace }, - {0,0},// { 0, (void *)_NewEmptyHandle }, - {0,0},// { 0, (void *)_HSetRBit }, - {0,0},// { 0, (void *)_HClrRBit }, - {0,0},// { 0, (void *)_HGetState }, - {0,0},// { 0, (void *)_HSetState }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_SlotManager }, - {0,0},// { 0, (void *)_SlotVInstall }, - {0,0},// { 0, (void *)_SlotVRemove }, - { 0, (void *)_AttachVBL }, - { 0, (void *)_DoVBLTask }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_DTInstall }, - { 0, (void *)_SIntRemove }, - {0,0},// { 0, (void *)_CountADBs }, - {0,0},// { 0, (void *)_GetIndADB }, - {0,0},// { 0, (void *)_GetADBInfo }, - {0,0},// { 0, (void *)_SetADBInfo }, - {0,0},// { 0, (void *)_ADBReInit }, - { 0, (void *)_ADBOp }, - { 0, (void *)_GetDefaultStartup }, - { 0, (void *)_SetDefaultStartup }, - { 0, (void *)_InternalWait }, - { 0, (void *)_GetVideoDefault }, - { 0, (void *)_SetVideoDefault }, - { 0, (void *)_SIntInstall }, - { 0, (void *)_SetOSDefault }, - { 0, (void *)_GetOSDefault }, - { 0, (void *)_IMVI_IdleUpdate }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_SlpQInstall }, - { 0, (void *)_CommToolboxDispatch }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_DebugUtil }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_DeferUserFn }, - {0,0},// { 0, (void *)_SysEnvirons }, - { 0, (void *)_IMVI_Translate24To32 }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Microseconds }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - {0,0},// { 0, (void *)_HWPriv }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Gestalt }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - {0,0},// { 0, (void *)_flushcache }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_PPC }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_ResourceStub }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, -}; - -void Executor::filltables(void) -{ - int i, fsindex; - syn68k_addr_t unimpl = 0; - - unimpl = callback_install((callback_handler_t)(void *)_Unimplemented, - nullptr); - - for(i = 0; i < (int)NELEM(ostraptable); ++i) - { - switch(i) - { - case OPENTRAP: - fsindex = OPENINDEX; - break; - case CLOSETRAP: - fsindex = CLOSEINDEX; - break; - case READTRAP: - fsindex = READINDEX; - break; - case WRITETRAP: - fsindex = WRITEINDEX; - break; - case CONTROLTRAP: - fsindex = CONTROLINDEX; - break; - case STATUSTRAP: - fsindex = STATUSINDEX; - break; - case KILLIOTRAP: - fsindex = KILLIOINDEX; - break; - case GETVINFOTRAP: - fsindex = GETVINFOINDEX; - break; - case CREATETRAP: - fsindex = CREATEINDEX; - break; - case DELETETRAP: - fsindex = DELETEINDEX; - break; - case OPENRFTRAP: - fsindex = OPENRFINDEX; - break; - case RENAMETRAP: - fsindex = RENAMEINDEX; - break; - case GETFINFOTRAP: - fsindex = GETFINFOINDEX; - break; - case SETFINFOTRAP: - fsindex = SETFINFOINDEX; - break; - case UNMOUNTVOLTRAP: - fsindex = UNMOUNTVOLINDEX; - break; - case MOUNTVOLTRAP: - fsindex = MOUNTVOLINDEX; - break; - case ALLOCATETRAP: - fsindex = ALLOCATEINDEX; - break; - case GETEOFTRAP: - fsindex = GETEOFINDEX; - break; - case SETEOFTRAP: - fsindex = SETEOFINDEX; - break; - case FLUSHVOLTRAP: - fsindex = FLUSHVOLINDEX; - break; - case GETVOLTRAP: - fsindex = GETVOLINDEX; - break; - case SETVOLTRAP: - fsindex = SETVOLINDEX; - break; - case EJECTTRAP: - fsindex = EJECTINDEX; - break; - case GETFPOSTRAP: - fsindex = GETFPOSINDEX; - break; - case OFFLINETRAP: - fsindex = OFFLINEINDEX; - break; - case SETFLOCKTRAP: - fsindex = SETFLOCKINDEX; - break; - case RSTFLOCKTRAP: - fsindex = RSTFLOCKINDEX; - break; - case SETFVERSTRAP: - fsindex = SETFVERSINDEX; - break; - case SETFPOSTRAP: - fsindex = SETFPOSINDEX; - break; - case FLUSHFILETRAP: - fsindex = FLUSHFILEINDEX; - break; - default: - fsindex = static_cast(-1); - break; - }; - - if(fsindex == static_cast(-1)) - ostraptable[i] = osstuff[i].orig = (osstuff[i].func == (void *)_Unimplemented) ? unimpl - : callback_install((callback_handler_t)osstuff[i].func, - osstuff[i].func); - else - { - osstuff[i].func = (void *)_HFSRoutines; - ostraptable[i] = osstuff[i].orig = callback_install((callback_handler_t)_HFSRoutines, - fsroutines[fsindex]); - } - } -} diff --git a/src/functions.cpp b/src/functions.cpp index 7a4c1f5a..9f1b9c17 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -719,28 +719,17 @@ struct StackWLookahead #include "rsys/refresh.h" #include "rsys/gestalt.h" +syn68k_addr_t Executor::tooltraptable[0x400]; /* Gets filled in at run time */ +syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ + void functions::init() { for(auto init : initObjects) init->init(); - stub_Unimplemented.init(); for(int i = 0; i < NTOOLENTRIES; i++) { if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); } - - - for(int i = 0; i < 0x100; i++) - { - bool shouldhave = osstuff[i].func != (void*)&_Unimplemented; - if(osflags[i] != shouldhave) - { - if(shouldhave) - std::cout << "Missing " << std::hex << (0xA000 | i) << std::endl; - else - std::cout << "Surprising " << std::hex << (0xA000 | i) << std::endl; - } - } } diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index 530f0587..c4989f55 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -78,6 +78,8 @@ const LowMemGlobal TmpResLoad { 0xB9F }; // ResourceMgr IMIV-19 (false); DISPATCHER_TRAP(ResourceDispatch, 0xA822, D0<0xF>); +RAW_68K_TRAP(ResourceStub, 0xA0FC); // defined in emustubs.cpp + extern void C_SetResLoad(BOOLEAN load); PASCAL_TRAP(SetResLoad, 0xA99B); diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index e96ea155..c5a0f290 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -141,7 +141,6 @@ RAW_68K_TRAP(ADBOp, 0xA07C); //RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); -RAW_68K_TRAP(ResourceStub, 0xA0FC); //RAW_68K_TRAP(Dequeue, 0xA96E); //RAW_68K_TRAP(Enqueue, 0xA96F); //RAW_68K_TRAP(Secs2Date, 0xA9C6); diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index eed46994..92c58750 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -170,6 +170,8 @@ class WrappedFunction virtual void init() override; WrappedFunction(const char* name); + + bool isPatched() const { return false; } protected: ProcPtr guestFP; const char *name; diff --git a/src/main.cpp b/src/main.cpp index f575bd9a..5780a2bb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1430,7 +1430,6 @@ int main(int argc, char **argv) } } - filltables(); Executor::functions::init(); l = ostraptable[0x0FC]; @@ -1439,7 +1438,7 @@ int main(int argc, char **argv) ((unsigned char *)jmpl_to_ResourceStub)[4] = l >> 8; ((unsigned char *)jmpl_to_ResourceStub)[5] = l; ostraptable[0xFC] = US_TO_SYN68K(jmpl_to_ResourceStub); - osstuff[0xFC].orig = US_TO_SYN68K(jmpl_to_ResourceStub); + //osstuff[0xFC].orig = US_TO_SYN68K(jmpl_to_ResourceStub); saveSysZone = LM(SysZone); saveApplZone = LM(ApplZone); diff --git a/src/resOpen.cpp b/src/resOpen.cpp index c123b419..1dd727eb 100644 --- a/src/resOpen.cpp +++ b/src/resOpen.cpp @@ -75,7 +75,7 @@ Handle Executor::ROMlib_mgetres(resmaphand map, resref *rr) { Handle retval; - if(ostraptable[0xFC] == osstuff[0xFC].orig) + if(!stub_ResourceStub.isPatched()) retval = ROMlib_mgetres2(map, rr); else { From 218ce7a670afb5e816a6a57e97de7877857082fc Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 29 Jan 2018 21:31:27 +0100 Subject: [PATCH 62/88] cleanup --- src/include/rsys/emustubs.h | 78 ------------------------------------- src/include/rsys/executor.h | 1 - 2 files changed, 79 deletions(-) diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index c5a0f290..df6d8f71 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -65,102 +65,24 @@ RAW_68K_TRAP(Launch, 0xA9F2); RAW_68K_TRAP(Chain, 0xA9F3); RAW_68K_TRAP(FInitQueue, 0xA016); RAW_68K_TRAP(InitZone, 0xA019); -//RAW_68K_TRAP(GetZone, 0xA11A); -//RAW_68K_TRAP(SetZone, 0xA01B); -//RAW_68K_TRAP(FreeMem, 0xA01C); -//RAW_68K_TRAP(MaxMem, 0xA11D); -//RAW_68K_TRAP(NewPtr, 0xA11E); -//RAW_68K_TRAP(DisposPtr, 0xA01F); -//RAW_68K_TRAP(SetPtrSize, 0xA020); -//RAW_68K_TRAP(GetPtrSize, 0xA021); -//RAW_68K_TRAP(NewHandle, 0xA122); -//RAW_68K_TRAP(DisposHandle, 0xA023); -//RAW_68K_TRAP(SetHandleSize, 0xA024); -//RAW_68K_TRAP(GetHandleSize, 0xA025); -//RAW_68K_TRAP(HandleZone, 0xA126); -//RAW_68K_TRAP(ReallocHandle, 0xA027); -//RAW_68K_TRAP(RecoverHandle, 0xA128); -//RAW_68K_TRAP(HLock, 0xA029); -//RAW_68K_TRAP(HUnlock, 0xA02A); -//RAW_68K_TRAP(EmptyHandle, 0xA02B); -//RAW_68K_TRAP(InitApplZone, 0xA02C); -//RAW_68K_TRAP(SetApplLimit, 0xA02D); -//RAW_68K_TRAP(BlockMove, 0xA02E); RAW_68K_TRAP(PostEvent, 0xA02F); -//RAW_68K_TRAP(OSEventAvail, 0xA030); -//RAW_68K_TRAP(GetOSEvent, 0xA031); -//RAW_68K_TRAP(FlushEvents, 0xA032); -//RAW_68K_TRAP(VInstall, 0xA033); -//RAW_68K_TRAP(VRemove, 0xA034); RAW_68K_TRAP(SlotManager, 0xA06E); -//RAW_68K_TRAP(SlotVInstall, 0xA06F); -//RAW_68K_TRAP(SlotVRemove, 0xA070); -//RAW_68K_TRAP(MoreMasters, 0xA036); -//RAW_68K_TRAP(ReadDateTime, 0xA039); -//RAW_68K_TRAP(SetDateTime, 0xA03A); -//RAW_68K_TRAP(Delay, 0xA03B); RAW_68K_TRAP(EqualString, 0xA03C); RAW_68K_TRAP(DrvrInstall, 0xA03D); RAW_68K_TRAP(DrvrRemove, 0xA03E); -//RAW_68K_TRAP(ResrvMem, 0xA040); RAW_68K_TRAP(GetTrapAddress, 0xA146); RAW_68K_TRAP(SetTrapAddress, 0xA047); -//RAW_68K_TRAP(PtrZone, 0xA148); -//RAW_68K_TRAP(HPurge, 0xA049); -//RAW_68K_TRAP(HNoPurge, 0xA04A); -//RAW_68K_TRAP(SetGrowZone, 0xA04B); -//RAW_68K_TRAP(CompactMem, 0xA04C); -//RAW_68K_TRAP(PurgeMem, 0xA04D); RAW_68K_TRAP(RelString, 0xA050); RAW_68K_TRAP(UprString, 0xA054); RAW_68K_TRAP(StripAddress, 0xA055); -//RAW_68K_TRAP(SetApplBase, 0xA057); -//RAW_68K_TRAP(InsTime, 0xA058); -//RAW_68K_TRAP(RmvTime, 0xA059); -//RAW_68K_TRAP(PrimeTime, 0xA05A); -//RAW_68K_TRAP(NMInstall, 0xA05E); -//RAW_68K_TRAP(NMRemove, 0xA05F); RAW_68K_TRAP(HFSDispatch, 0xA260); -//RAW_68K_TRAP(MaxBlock, 0xA061); -//RAW_68K_TRAP(PurgeSpace, 0xA062); -//RAW_68K_TRAP(MaxApplZone, 0xA063); -//RAW_68K_TRAP(MoveHHi, 0xA064); -//RAW_68K_TRAP(StackSpace, 0xA065); -//RAW_68K_TRAP(NewEmptyHandle, 0xA166); -//RAW_68K_TRAP(HSetRBit, 0xA067); -//RAW_68K_TRAP(HClrRBit, 0xA068); -//RAW_68K_TRAP(HGetState, 0xA069); -//RAW_68K_TRAP(HSetState, 0xA06A); -//RAW_68K_TRAP(CountADBs, 0xA077); -//RAW_68K_TRAP(GetIndADB, 0xA078); -//RAW_68K_TRAP(GetADBInfo, 0xA079); -//RAW_68K_TRAP(SetADBInfo, 0xA07A); -//RAW_68K_TRAP(ADBReInit, 0xA07B); RAW_68K_TRAP(ADBOp, 0xA07C); -//RAW_68K_TRAP(SysEnvirons, 0xA090); -//RAW_68K_TRAP(HWPriv, 0xA198); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); -//RAW_68K_TRAP(Dequeue, 0xA96E); -//RAW_68K_TRAP(Enqueue, 0xA96F); -//RAW_68K_TRAP(Secs2Date, 0xA9C6); -//RAW_68K_TRAP(Date2Secs, 0xA9C7); -//RAW_68K_TRAP(HandToHand, 0xA9E1); -//RAW_68K_TRAP(PtrToXHand, 0xA9E2); -//RAW_68K_TRAP(PtrToHand, 0xA9E3); -//RAW_68K_TRAP(HandAndHand, 0xA9E4); -//RAW_68K_TRAP(Pack2, 0xA9E9); -//RAW_68K_TRAP(Pack8, 0xA816); -//RAW_68K_TRAP(PtrAndHand, 0xA9EF); RAW_68K_TRAP(LoadSeg, 0xA9F0); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); //RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); -//RAW_68K_TRAP(PaletteDispatch, 0xAAA2); -//RAW_68K_TRAP(QDExtensions, 0xAB1D); -//RAW_68K_TRAP(WriteParam, 0xA038); -//RAW_68K_TRAP(InitUtil, 0xA03F); -//RAW_68K_TRAP(flushcache, 0xA0BD); RAW_68K_FUNCTION(Key1Trans); RAW_68K_FUNCTION(Key2Trans); RAW_68K_TRAP(Fix2X, 0xA843); diff --git a/src/include/rsys/executor.h b/src/include/rsys/executor.h index 9a32ebe2..34737b83 100644 --- a/src/include/rsys/executor.h +++ b/src/include/rsys/executor.h @@ -14,7 +14,6 @@ namespace Executor extern LONGINT debugnumber; extern LONGINT ROMlib_creator; extern syn68k_addr_t alinehandler(syn68k_addr_t pc, void *ignored); -extern void filltables(void); extern void executor_main(void); } #endif From aa2ad8db35d257430e009471974dbfb71f5e0833 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 29 Jan 2018 23:56:22 +0100 Subject: [PATCH 63/88] do_selector_table no longer needed --- src/emustubs.cpp | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index cfdc4683..7c9d2c03 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -286,39 +286,6 @@ _do_selector_block(const selectorblock_t *sbp, unsigned long sel, abort(); } -typedef struct selector_table_entry -{ - uint32_t selector; - ptocblock_t ptoc; -} selector_table_entry_t; - -#define do_selector_table(selector, table, table_size, fail_fn, trap) \ - ({ _do_selector_table(selector, table, table_size, fail_fn, \ - #trap, _##trap); }) - -static syn68k_addr_t -_do_selector_table(uint32_t selector, - selector_table_entry_t *table, int table_size, - syn68k_addr_t (*fail_fn)(void), - const char *trap_name, - syn68k_addr_t (*trap_fp)(syn68k_addr_t, void *)) -{ - int i; - - for(i = 0; i < table_size; i++) - { - if(table[i].selector == selector) - return PascalToCCall(0, &table[i].ptoc); - } - - if(fail_fn) - return (*fail_fn)(); - else - do_selector_error(selector, trap_name, trap_fp); - - /* quiet gcc */ - abort(); -} #define PTOCBLOCK(name) \ { \ From ff8e31cfab2b10c5cbd92ec998b5bb2d1979327c Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 00:27:18 +0100 Subject: [PATCH 64/88] new dispatchers for MixedMode and CFM (although they don't work yet) --- src/cfm.cpp | 163 ++++++++++++++++++++-------------- src/emustubs.cpp | 63 ++----------- src/include/rsys/cfm.h | 19 ++-- src/include/rsys/mixed_mode.h | 8 ++ src/mixed_mode.cpp | 3 - 5 files changed, 128 insertions(+), 128 deletions(-) diff --git a/src/cfm.cpp b/src/cfm.cpp index 76bc8bb0..e06c113f 100644 --- a/src/cfm.cpp +++ b/src/cfm.cpp @@ -1,11 +1,6 @@ /* Copyright 2000 by Abacus Research and * Development, Inc. All rights reserved. */ -#if defined(CFM_PROBLEMS) - -// FIXME: #warning "No CFM support for now, even though it limped previously." - -#elif defined(powerpc) /* * In addition to fleshing this out, it probably makes sense to use mmap @@ -22,6 +17,7 @@ #include "MemoryMgr.h" #include "SegmentLdr.h" #include "AliasMgr.h" +#include "ResourceMgr.h" #include "rsys/cfm.h" #include "rsys/pef.h" @@ -32,10 +28,45 @@ #include "rsys/hfs.h" #include "rsys/string.h" -#include "ppc_stubs.h" - using namespace Executor; +#if 1 + +OSErr Executor::C_CloseConnection(ConnectionID *cidp) +{ + warning_trace_info("cidp = %p, cid = 0x%p", cidp, *cidp); + return noErr; +} + +OSErr Executor::C_GetSharedLibrary(Str63 library, OSType arch, + LoadFlags loadflags, GUEST *cidp, + GUEST *mainaddrp, Str255 errName) +{ + return paramErr; +} + +OSErr Executor::C_GetMemFragment(void *addr, uint32_t length, Str63 fragname, + LoadFlags flags, GUEST *connp, + GUEST *mainAddrp, Str255 errname) +{ + return paramErr; +} + +OSErr Executor::C_GetDiskFragment(FSSpecPtr fsp, LONGINT offset, + LONGINT length, Str63 fragname, + LoadFlags flags, GUEST *connp, + GUEST *mainAddrp, Str255 errname) +{ + return paramErr; +} + +ConnectionID +ROMlib_new_connection(uint32_t n_sects) +{ + return nullptr; +} + +#else typedef enum { process_share = 1, global_share = 4, @@ -135,21 +166,21 @@ load_unpacked_section(const void *mmapped_addr, if(retval == noErr) { memcpy(addr, (char *)mmapped_addr + section_offset, packed_size); - memset(addr + unpacked_size, 0, total_size - unpacked_size); + memset((char *)addr + unpacked_size, 0, total_size - unpacked_size); } } if(retval == noErr) { - infop->start = US_TO_SYN68K(addr); - infop->length = total_size; + infop->start = RM(addr); + infop->length = CL(total_size); } return retval; } static OSErr -repeat_block(uint32_t repeat_count, uint32_t block_size, uint8 **destpp, - const uint8 **srcpp, uint32_t *dest_lengthp, uint32_t *src_lengthp) +repeat_block(uint32_t repeat_count, uint32_t block_size, uint8_t **destpp, + const uint8_t **srcpp, uint32_t *dest_lengthp, uint32_t *src_lengthp) { OSErr retval; uint32_t total_bytes_to_write; @@ -173,11 +204,11 @@ repeat_block(uint32_t repeat_count, uint32_t block_size, uint8 **destpp, } static OSErr -extract_count(const uint8 **srcpp, uint32_t *lengthp, uint32_t *countp) +extract_count(const uint8_t **srcpp, uint32_t *lengthp, uint32_t *countp) { OSErr retval; uint32_t count; - uint8 next_piece; + uint8_t next_piece; count = *countp; do @@ -198,9 +229,9 @@ extract_count(const uint8 **srcpp, uint32_t *lengthp, uint32_t *countp) } static OSErr -interleave(uint32_t repeat_count, uint32_t custom_size, uint8 **destpp, - const uint8 **srcpp, uint32_t *dest_lengthp, uint32_t *src_lengthp, - uint32_t common_size, const uint8 *common_mem) +interleave(uint32_t repeat_count, uint32_t custom_size, uint8_t **destpp, + const uint8_t **srcpp, uint32_t *dest_lengthp, uint32_t *src_lengthp, + uint32_t common_size, const uint8_t *common_mem) { OSErr retval; uint32_t total_size; @@ -234,7 +265,7 @@ interleave(uint32_t repeat_count, uint32_t custom_size, uint8 **destpp, } static OSErr -pattern_initialize(uint8 *addr, const uint8 *patmem, uint32_t packed_size, +pattern_initialize(uint8_t *addr, const uint8_t *patmem, uint32_t packed_size, uint32_t unpacked_size) { OSErr retval; @@ -242,7 +273,7 @@ pattern_initialize(uint8 *addr, const uint8 *patmem, uint32_t packed_size, retval = noErr; while(retval == noErr && packed_size > 0) { - uint8 opcode; + uint8_t opcode; uint32_t count; opcode = *patmem >> 5; @@ -299,7 +330,7 @@ pattern_initialize(uint8 *addr, const uint8 *patmem, uint32_t packed_size, &repeat_count); if(retval == noErr) { - const uint8 *common_mem; + const uint8_t *common_mem; if(opcode == 4) common_mem = 0; @@ -351,16 +382,16 @@ load_pattern_section(const void *mmapped_addr, retval = try_to_get_memory(&addr, default_address, total_size, alignment); if(retval == noErr) { - uint8 *patmem; + uint8_t *patmem; patmem = (decltype(patmem))((char *)mmapped_addr + section_offset); - retval = pattern_initialize(addr, patmem, packed_size, unpacked_size); + retval = pattern_initialize((uint8_t*)addr, patmem, packed_size, unpacked_size); if(retval == noErr) { - memset(addr + unpacked_size, 0, + memset((char*)addr + unpacked_size, 0, total_size - unpacked_size); - infop->start = US_TO_SYN68K(addr); - infop->length = total_size; + infop->start = RM(addr); + infop->length = CL(total_size); } } @@ -368,21 +399,21 @@ load_pattern_section(const void *mmapped_addr, } static void -repeatedly_relocate(uint32_t count, uint8 **relocAddressp, uint32_t val) +repeatedly_relocate(uint32_t count, uint8_t **relocAddressp, uint32_t val) { - uint32_t *p; - p = (uint32_t *)*relocAddressp; + GUEST *p; + p = (GUEST *)*relocAddressp; while(count-- > 0) { *p = CL(CL(*p) + val); ++p; } - *relocAddressp = (uint8 *)p; + *relocAddressp = (uint8_t *)p; } static OSErr check_existing_connections(Str63 library, OSType arch, LoadFlags loadflags, - ConnectionID *cidp, Ptr *mainaddrp, Str255 errName) + GUEST *cidp, GUEST *mainaddrp, Str255 errName) { /* TODO */ // FIXME: #warning TODO @@ -400,7 +431,7 @@ get_root_and_app(INTEGER *root_vrefp, LONGINT *root_diridp, static OSErr check_file(INTEGER vref, LONGINT dirid, Str255 file, bool shlb_test_p, Str63 library, OSType arch, LoadFlags loadflags, - ConnectionID *cidp, Ptr *mainaddrp, Str255 errName) + GUEST *cidp, GUEST *mainaddrp, Str255 errName) { OSErr retval; FSSpec fs; @@ -416,7 +447,7 @@ check_file(INTEGER vref, LONGINT dirid, Str255 file, bool shlb_test_p, FInfo finfo; err = FSpGetFInfo(&fs, &finfo); - if(err != noErr || finfo.fdType != TICK("shlb")) + if(err != noErr || CL(finfo.fdType) != TICK("shlb")) retval = fragLibNotFound; } if(retval == noErr) @@ -444,7 +475,7 @@ check_file(INTEGER vref, LONGINT dirid, Str255 file, bool shlb_test_p, else retval = GetDiskFragment(&fs, CFIR_OFFSET_TO_FRAGMENT(cfirp), - CFIR_FRAGMENT_LENGTH(cfirp), "", + CFIR_FRAGMENT_LENGTH(cfirp), (Byte*)"", loadflags, cidp, mainaddrp, errName); } @@ -457,9 +488,9 @@ check_file(INTEGER vref, LONGINT dirid, Str255 file, bool shlb_test_p, } static OSErr -check_vanddir(INTEGER vref, LONGINT dirid, int descend_count, Str63 library, - OSType arch, LoadFlags loadflags, ConnectionID *cidp, - Ptr *mainaddrp, Str255 errName) +check_vanddir(GUEST vref, GUEST dirid, int descend_count, Str63 library, + OSType arch, LoadFlags loadflags, GUEST *cidp, + GUEST *mainaddrp, Str255 errName) { CInfoPBRec pb; Str255 s; @@ -470,7 +501,7 @@ check_vanddir(INTEGER vref, LONGINT dirid, int descend_count, Str63 library, retval = fragLibNotFound; pb.hFileInfo.ioNamePtr = RM(&s[0]); - pb.hFileInfo.ioVRefNum = CW(vref); + pb.hFileInfo.ioVRefNum = vref; err = noErr; errcount = 0; for(dirindex = 1; @@ -478,7 +509,7 @@ check_vanddir(INTEGER vref, LONGINT dirid, int descend_count, Str63 library, dirindex++) { pb.hFileInfo.ioFDirIndex = CW(dirindex); - pb.hFileInfo.ioDirID = CL(dirid); + pb.hFileInfo.ioDirID = dirid; err = PBGetCatInfo(&pb, false); if(err) { @@ -495,7 +526,7 @@ check_vanddir(INTEGER vref, LONGINT dirid, int descend_count, Str63 library, { if(descend_count > 0) { - retval = check_vanddir(vref, CL(pb.hFileInfo.ioDirID), + retval = check_vanddir(vref, pb.hFileInfo.ioDirID, descend_count - 1, library, arch, loadflags, cidp, mainaddrp, errName); @@ -523,8 +554,8 @@ check_vanddir(INTEGER vref, LONGINT dirid, int descend_count, Str63 library, */ OSErr Executor::C_GetSharedLibrary(Str63 library, OSType arch, - LoadFlags loadflags, ConnectionID *cidp, - Ptr *mainaddrp, Str255 errName) + LoadFlags loadflags, GUEST *cidp, + GUEST *mainaddrp, Str255 errName) { OSErr retval; @@ -554,8 +585,8 @@ OSErr Executor::C_GetSharedLibrary(Str63 library, OSType arch, loadflags, cidp, mainaddrp, errName); if(retval != noErr) { - INTEGER extensions_vref; - LONGINT extensions_dirid; + GUEST extensions_vref; + GUEST extensions_dirid; if(FindFolder(0, kExtensionFolderType, false, &extensions_vref, &extensions_dirid) @@ -580,10 +611,11 @@ OSErr Executor::C_GetSharedLibrary(Str63 library, OSType arch, OSErr Executor::C_CloseConnection(ConnectionID *cidp) { - warning_trace_info("cidp = %p, cid = 0x%x", cidp, (uint32_t)*cidp); + warning_trace_info("cidp = %p, cid = 0x%p", cidp, *cidp); return noErr; } +#if 0 enum { tracking_val_start = 0x88123456 @@ -631,20 +663,21 @@ tracking_value(const char *symbol_name) warning_trace_info("name = '%s' (%p)\n", symbol_name, (Ptr)retval); return retval; } +#endif static OSErr -symbol_lookup(uint32_t *indexp, Ptr *valp, uint8 imports[][4], +symbol_lookup(uint32_t *indexp, Ptr *valp, uint8_t imports[][4], const char *symbol_names, CFragClosureID closure_id) { OSErr retval; int index; - uint8 flags; - uint8 class; + uint8_t flags; + uint8_t class1; const char *symbol_name; index = *indexp; flags = imports[index][0] >> 4; - class = imports[index][0] & 0xf; + class1 = imports[index][0] & 0xf; symbol_name = (symbol_names + (imports[index][1] << 16) + (imports[index][2] << 8) + (imports[index][3] << 0)); { @@ -685,34 +718,34 @@ symbol_lookup(uint32_t *indexp, Ptr *valp, uint8 imports[][4], static OSErr relocate(const PEFLoaderRelocationHeader_t reloc_headers[], - int section, uint32_t reloc_count, uint8 reloc_instrs[][2], - uint8 imports[][4], const char *symbol_names, + int section, uint32_t reloc_count, uint8_t reloc_instrs[][2], + uint8_t imports[][4], const char *symbol_names, CFragClosureID closure_id, ConnectionID connp) { OSErr retval; - uint8 *relocAddress; + uint8_t *relocAddress; uint32_t importIndex; - syn68k_addr_t sectionC; - syn68k_addr_t sectionD; + uint32_t sectionC; + uint32_t sectionD; int32_t repeat_remaining; repeat_remaining = -1; /* i.e. not currently processing RelocSmRepeat or RelocLgRepeat */ - relocAddress = (uint8 *)SYN68K_TO_US(connp->sects[section].start); + relocAddress = (uint8_t *)MR(connp->sects[section].start); importIndex = 0; - sectionC = connp->sects[0].start; - sectionD = connp->sects[1].start; + sectionC = ptr_to_longint(MR(connp->sects[0].start)); + sectionD = ptr_to_longint(MR(connp->sects[1].start)); retval = noErr; while(reloc_count-- > 0) { - uint8 msb; + uint8_t msb; msb = reloc_instrs[0][0]; if((msb >> 6) == 0) { - uint8 lsb; + uint8_t lsb; int skipCount; int relocCount; @@ -844,7 +877,7 @@ relocate(const PEFLoaderRelocationHeader_t reloc_headers[], --repeat_remaining; else { - uint8 lsb; + uint8_t lsb; lsb = reloc_instrs[0][1]; repeat_remaining = lsb + 1; @@ -871,7 +904,7 @@ relocate(const PEFLoaderRelocationHeader_t reloc_headers[], offset = ((msb & 3) << 24 | (reloc_instrs[0][1]) << 16 | (reloc_instrs[0][2]) << 8 | (reloc_instrs[0][3])); relocAddress - = (uint8 *) + = (uint8_t *) SYN68K_TO_US(connp->sects[section].start) + offset; } @@ -972,9 +1005,9 @@ load_loader_section(const void *addr, uint32_t n_imports; uint32_t n_reloc_headers; PEFImportedLibrary_t *libs; - uint8(*imports)[4]; + uint8_t(*imports)[4]; PEFLoaderRelocationHeader_t *reloc_headers; - uint8 *relocation_area; + uint8_t *relocation_area; char *symbol_names; int i; CFragClosureID closure_id; @@ -985,7 +1018,7 @@ load_loader_section(const void *addr, n_libs = PEFLIH_IMPORTED_LIBRARY_COUNT(lihp); libs = (PEFImportedLibrary_t *)&lihp[1]; n_imports = PEFLIH_IMPORTED_SYMBOL_COUNT(lihp); - imports = (uint8(*)[4]) & libs[n_libs]; + imports = (uint8_t(*)[4]) & libs[n_libs]; n_reloc_headers = PEFLIH_RELOC_SECTION_COUNT(lihp); reloc_headers = (PEFLoaderRelocationHeader_t *)imports[n_imports]; @@ -998,7 +1031,7 @@ load_loader_section(const void *addr, for(i = 0, retval = noErr; retval == noErr && i < n_reloc_headers; ++i) { uint32_t reloc_count; - uint8(*reloc_instrs)[2]; + uint8_t(*reloc_instrs)[2]; reloc_count = PEFRLH_RELOC_COUNT(&reloc_headers[i]); reloc_instrs = (decltype(reloc_instrs))(relocation_area @@ -1528,4 +1561,4 @@ OSErr Executor::C_GetDiskFragment(FSSpecPtr fsp, LONGINT offset, return retval; } -#endif +#endif \ No newline at end of file diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 7c9d2c03..03312500 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -1048,12 +1048,6 @@ STUB(IMVI_ReadXPRam) } -#if defined(__ppc__) - -// FIXME: #warning "Need to get CFM going before we can enable this glue." - -#elif defined(powerpc) - /* * modeswitch is special; we don't return to from where we came. * instead we pick up the return address from the stack @@ -1071,7 +1065,7 @@ STUB(modeswitch) EM_A7 += 4; retaddr = POPADDR(); - rp = (RoutineDescriptor *)((char *)ignoreme); /* UGH! */ + rp = (RoutineDescriptor *)(SYN68K_TO_US(ignoreme)); /* UGH! */ n_routines = CW(rp->routineCount) + 1; for(i = 0; @@ -1096,9 +1090,13 @@ STUB(modeswitch) warning_trace_info("calling universal from mixed mode using " "register conventions"); +#if 0 retval = CallUniversalProc_from_native_common(unused, args_via_68k_regs, MR(rp->routineRecords[i].procDescriptor), procinfo); +#else + retval = 0; +#endif retwidth = (procinfo >> 4) & 3; ret_reg = (procinfo >> 6) & 31; switch(retwidth) @@ -1169,9 +1167,13 @@ STUB(modeswitch) uint32_t retval; warning_trace_info("calling universal from mixed mode"); +#if 0 retval = CallUniversalProc_from_native_common(unused, args_via_68k_stack, MR(rp->routineRecords[i].procDescriptor), procinfo); +#else + retval = 0; +#endif warning_trace_info("just got back from calling universal from mixed mode"); rettype = (procinfo >> kCallingConventionWidth) & ((1 << kResultSizeWidth) - 1); @@ -1192,51 +1194,4 @@ STUB(modeswitch) return retaddr; } -static ptocblock_t codefrag_ptoc[] = { - PTOCBLOCK(GetSharedLibrary), - PTOCBLOCK(GetDiskFragment), - PTOCBLOCK(GetMemFragment), - PTOCBLOCK(CloseConnection), - PTOCBLOCK(FindSymbol), - PTOCBLOCK(CountSymbols), - PTOCBLOCK(GetIndSymbol), -}; - -static selectorblock_t codefrag_block[] = { - { - 1, 7, 1, codefrag_ptoc, - }, - { 0, 0, 0, 0 }, -}; - -STUB(CodeFragment) -{ - syn68k_addr_t retaddr; - unsigned short uw; - - retaddr = POPADDR(); - uw = POPUW(); - PUSHADDR(retaddr); - return do_selector_block(codefrag_block, uw, CodeFragment); -} - -static ptocblock_t mixed_modedispatch_ptoc[] = { - PTOCBLOCK(NewRoutineDescriptor), /* 0x0 */ - PTOCBLOCK(DisposeRoutineDescriptor), /* 0x1 */ - PTOCBLOCK(NewFatRoutineDescriptor), /* 0x2 */ - PTOCBLOCK(SaveMixedModeState), /* 0x3 */ - PTOCBLOCK(RestoreMixedModeState), /* 0x4 */ -}; - -static selectorblock_t mixed_modedispatch_block[] = { - { 0x0, 0xC, 1, mixed_modedispatch_ptoc }, - { 0, 0, 0, 0 }, -}; - -STUB(MixedMode) -{ - return do_selector_block(mixed_modedispatch_block, EM_D0 & 0xF, MixedMode); -} - -#endif } diff --git a/src/include/rsys/cfm.h b/src/include/rsys/cfm.h index 05cf40d6..4fd678ab 100644 --- a/src/include/rsys/cfm.h +++ b/src/include/rsys/cfm.h @@ -12,10 +12,7 @@ namespace Executor { -enum -{ - kUnresolvedCFragSymbolAddress = 0 -}; +const std::nullptr_t kUnresolvedCFragSymbolAddress = nullptr; struct cfrg_resource_t { @@ -102,12 +99,13 @@ enum kMotorola68KArch = FOURCC('m', '6', '8', 'k'), }; -typedef enum { +enum { kLoadLib = 1, /* deprecated */ kReferenceCFrag = 1, kFindLib = 2, kLoadNewCopy = 5, -} LoadFlags; +}; +typedef uint32_t LoadFlags; struct MemFragment { @@ -160,15 +158,19 @@ struct InitBlock typedef struct CFragConnection *ConnectionID; +DISPATCHER_TRAP(CodeFragmentDispatch, 0xAA5A, StackW); + extern OSErr C_GetDiskFragment(FSSpecPtr fsp, LONGINT offset, LONGINT length, Str63 fragname, LoadFlags flags, GUEST *connp, GUEST *mainAddrp, Str255 errname); +PASCAL_SUBTRAP(GetDiskFragment, 0xAA5A, 0x0002, CodeFragmentDispatch); typedef uint8 SymClass; extern OSErr C_FindSymbol(ConnectionID connID, Str255 symName, GUEST *symAddr, SymClass *symClass); +PASCAL_SUBTRAP(FindSymbol, 0xAA5A, 0x0005, CodeFragmentDispatch); extern char *ROMlib_p2cstr(StringPtr str); @@ -243,21 +245,26 @@ extern cfir_t *ROMlib_find_cfrg(Handle cfrg, OSType arch, uint8 type, Str255 name); extern OSErr C_CloseConnection(ConnectionID *cidp); +PASCAL_SUBTRAP(CloseConnection, 0xAA5A, 0x0004, CodeFragmentDispatch); extern OSErr C_GetSharedLibrary(Str63 library, OSType arch, LoadFlags loadflags, GUEST *cidp, GUEST *mainaddrp, Str255 errName); +PASCAL_SUBTRAP(GetSharedLibrary, 0xAA5A, 0x0001, CodeFragmentDispatch); extern OSErr C_GetMemFragment(void *addr, uint32_t length, Str63 fragname, LoadFlags flags, GUEST *connp, GUEST *mainAddrp, Str255 errname); +PASCAL_SUBTRAP(GetMemFragment, 0xAA5A, 0x0003, CodeFragmentDispatch); extern OSErr C_CountSymbols(ConnectionID id, GUEST *countp); +PASCAL_SUBTRAP(CountSymbols, 0xAA5A, 0x0006, CodeFragmentDispatch); extern OSErr C_GetIndSymbol(ConnectionID id, LONGINT index, Str255 name, GUEST *addrp, SymClass *classp); +PASCAL_SUBTRAP(GetIndSymbol, 0xAA5A, 0x0007, CodeFragmentDispatch); extern ConnectionID ROMlib_new_connection(uint32_t n_sects); extern void ROMlib_release_tracking_values(void); diff --git a/src/include/rsys/mixed_mode.h b/src/include/rsys/mixed_mode.h index 77aef38b..2bdbf843 100644 --- a/src/include/rsys/mixed_mode.h +++ b/src/include/rsys/mixed_mode.h @@ -137,17 +137,25 @@ extern long CallUniversalProc_from_native_common(va_list ap, where_args_t where, ProcPtr proc, ProcInfoType info); +DISPATCHER_TRAP(MixedModeDispatch, 0xAA59, D0W); + extern UniversalProcPtr C_NewRoutineDescriptor(ProcPtr proc, ProcInfoType info, ISAType isa); +PASCAL_SUBTRAP(NewRoutineDescriptor, 0xAA59, 0x0000, MixedModeDispatch); extern void C_DisposeRoutineDescriptor(UniversalProcPtr ptr); +PASCAL_SUBTRAP(DisposeRoutineDescriptor, 0xAA59, 0x0001, MixedModeDispatch); extern UniversalProcPtr C_NewFatRoutineDescriptor(ProcPtr m68k, ProcPtr ppc, ProcInfoType info); +PASCAL_SUBTRAP(NewFatRoutineDescriptor, 0xAA59, 0x0002, MixedModeDispatch); extern OSErr C_SaveMixedModeState(void *statep, uint32_t vers); +PASCAL_SUBTRAP(SaveMixedModeState, 0xAA59, 0x0003, MixedModeDispatch); extern OSErr C_RestoreMixedModeState(void *statep, uint32_t vers); +PASCAL_SUBTRAP(RestoreMixedModeState, 0xAA59, 0x0004, MixedModeDispatch); + } #endif diff --git a/src/mixed_mode.cpp b/src/mixed_mode.cpp index b8ea55df..8eb5434c 100644 --- a/src/mixed_mode.cpp +++ b/src/mixed_mode.cpp @@ -2,8 +2,6 @@ * Development, Inc. All rights reserved. */ -#if defined(powerpc) || defined(__ppc__) - #include "rsys/common.h" #include "FileMgr.h" @@ -75,4 +73,3 @@ OSErr Executor::C_RestoreMixedModeState(void *statep, uint32_t vers) return paramErr; } -#endif From 7491ea8c6a1ed31735608fae5816cb67bff945f4 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 00:35:11 +0100 Subject: [PATCH 65/88] more cleanup in emustubs: do_selector_block can go now --- src/emustubs.cpp | 234 ----------------------------------------------- 1 file changed, 234 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 03312500..1ed87a57 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -197,122 +197,6 @@ STUB(ADBOp) RTS(); } -static void -do_selector_error(uint32_t selector, - const char *trap_name, - syn68k_addr_t (*trap_fp)(syn68k_addr_t, void *)) -{ - bool found_trapno_p = false; - int trapno = /* dummy */ -1, i; - char buf[256]; - - /* search for the trap fp in the trap tables */ -/* - for(i = 0; i < 0x400; i++) - if(toolstuff[i].ptoc.wheretogo == trap_fp) - { - trapno = i + 0xA800; - found_trapno_p = true; - break; - }*/ - if(!found_trapno_p) - for(i = 0; i < 0x100; i++) - if(osstuff[i].func == trap_fp) - { - trapno = i + 0xA000; - found_trapno_p = true; - break; - } - - if(found_trapno_p) - sprintf(buf, - "Fatal error.\r" - "unknown trap selector `%ld' in trap `%s' trapno `%X'.", - (long)selector, trap_name, trapno); - else - sprintf(buf, - "Fatal error.\r" - "unknown trap selector `%ld' in trap `%s'.", - (long)selector, trap_name); - - system_error(buf, 0, - "Restart", NULL, NULL, - NULL, NULL, NULL); - - ExitToShell(); -} - -typedef struct -{ - unsigned long first; - unsigned long last; - unsigned long divide; - ptocblock_t *descriptorp; -} selectorblock_t; - -#define do_selector_block(sbp, sel, trap) \ - ({ _do_selector_block(sbp, sel, #trap, _##trap); }) - -typedef syn68k_addr_t (*trap_stuff)(syn68k_addr_t, void *); - -static syn68k_addr_t -_do_selector_block(const selectorblock_t *sbp, unsigned long sel, - const char *trap_name, - trap_stuff trap_fp) -{ - char done; - ptocblock_t *ptocp; - const selectorblock_t *orig_sbp; - - orig_sbp = sbp; - for(done = false; - (!(sbp->first == 0 - && sbp->last == 0) - && !done); - ++sbp) - { - if(sel >= sbp->first && sel <= sbp->last) - { - ptocp = &sbp->descriptorp[(sel - sbp->first) / sbp->divide]; - if(ptocp->wheretogo) - return PascalToCCall(0, ptocp); - done = true; - } - } - - do_selector_error(sel, trap_name, trap_fp); - - /* quiet gcc */ - abort(); -} - - -#define PTOCBLOCK(name) \ - { \ - (void *)C_##name, ptoc(&C_##name) \ - } - -#define ZERO_PTOCBLOCK \ - { \ - nullptr, 0 \ - } - -#if defined(NEWSTUBS) -{ - BOn 0 AOn 4 AOnIgnoreModem 5 BOff 80 AOff 84 -} -#endif - -#if defined(NEWSTUBS) -{ - InitDBPack 100 DBKill 20e DBDisposeQuery 210 DBRemoveResultHandler 215 DBGetNewQuery 30f DBEnd 403 DBExec 408 DBState 409 DBUnGetItem 40d DBResultsToText 413 DBBreak 50b DBInstallResultHandler 514 DBGetResultHandler 516 DBGetSessionNum 605 DBSend 706 DBStartQuery 811 DBGetQueryResults a12 - DBSendItem b07 - DBInit e02 - DBGetErr e0a - DBGetItem 100c DBGetConnInfo 1704 -} -#endif - STUB(Fix2X) { syn68k_addr_t retaddr; @@ -544,11 +428,7 @@ fsprocp_t hfstab[] = { (fsprocp_t)PBCatSearch, /* 0x18 */ (fsprocp_t)0, /* 0x19 */ (fsprocp_t)PBOpenDF, /* 0x1A */ -#if !defined(NEWSTUBS) (fsprocp_t)0, /* 0x1B */ -#else - (fsprocp_t)PBMakeFSSpec, /* 0x1B */ -#endif (fsprocp_t)0, /* 0x1C */ (fsprocp_t)0, /* 0x1D */ (fsprocp_t)0, /* 0x1E */ @@ -578,49 +458,6 @@ fsprocp_t hfstab[] = { (fsprocp_t)PBHCopyFile, /* 0x36 */ (fsprocp_t)PBHMoveRename, /* 0x37 */ (fsprocp_t)OpenDeny, /* 0x38 */ -#if 0 - (fsprocp_t) OpenRFDeny, /* 0x39 */ - (fsprocp_t) 0, /* 0x3A */ - (fsprocp_t) 0, /* 0x3b */ - (fsprocp_t) 0, /* 0x3c */ - (fsprocp_t) 0, /* 0x3d */ - (fsprocp_t) 0, /* 0x3e */ - (fsprocp_t) PBGetVolMountInfoSize, /* 0x3f */ - (fsprocp_t) PBGetVolMountInfo, /* 0x40 */ - (fsprocp_t) 0, /* 0x41 */ - (fsprocp_t) 0, /* 0x42 */ - (fsprocp_t) 0, /* 0x43 */ - (fsprocp_t) 0, /* 0x44 */ - (fsprocp_t) 0, /* 0x45 */ - (fsprocp_t) 0, /* 0x46 */ - (fsprocp_t) 0, /* 0x47 */ - (fsprocp_t) 0, /* 0x48 */ - (fsprocp_t) 0, /* 0x49 */ - (fsprocp_t) 0, /* 0x4a */ - (fsprocp_t) 0, /* 0x4b */ - (fsprocp_t) 0, /* 0x4c */ - (fsprocp_t) 0, /* 0x4d */ - (fsprocp_t) 0, /* 0x4e */ - (fsprocp_t) 0, /* 0x4f */ - (fsprocp_t) 0, /* 0x50 */ - (fsprocp_t) 0, /* 0x51 */ - (fsprocp_t) 0, /* 0x52 */ - (fsprocp_t) 0, /* 0x53 */ - (fsprocp_t) 0, /* 0x54 */ - (fsprocp_t) 0, /* 0x55 */ - (fsprocp_t) 0, /* 0x56 */ - (fsprocp_t) 0, /* 0x57 */ - (fsprocp_t) 0, /* 0x58 */ - (fsprocp_t) 0, /* 0x59 */ - (fsprocp_t) 0, /* 0x5a */ - (fsprocp_t) 0, /* 0x5b */ - (fsprocp_t) 0, /* 0x5c */ - (fsprocp_t) 0, /* 0x5d */ - (fsprocp_t) 0, /* 0x5e */ - (fsprocp_t) 0, /* 0x5f */ - (fsprocp_t) PBGetForeignPrivs, /* 0x60 */ - (fsprocp_t) PBSetForeignPrivs, /* 0x61 */ -#endif }; #define ASYNCBIT (1 << 10) @@ -653,41 +490,6 @@ STUB(HFSDispatch) RTS(); } -#if defined(NEWSTUBS) -{ - AppendDITL, /* 0x402 */ - CountDITL, /* 0x403 */ - ShortenDITL, /* 0x404 */ -}; - -{ - DebuggerGetMax, /* 0x0 */ - DebuggerEnter, /* 0x1 */ - DebuggerExit, /* 0x2 */ - DebuggerPoll, /* 0x3 */ - GetPageState, /* 0x4 */ - PageFaultFatal, /* 0x5 */ - DebuggerLockMemory, /* 0x6 */ - DebuggerUnlockMemory, /* 0x7 */ - EnterSupervisorMode, /* 0x8 */ -}; - -{ - GetCPUSpeed, /* 0xffff */ - EnableIdle, /* 0x0000 */ - DisableIdle, /* 0x0001 */ -}; - -{ - HoldMemory, /* 0 */ - UnholdMemory, /* 1 */ - LockMemory, /* 2 */ - UnlockMemory, /* 3 */ - LockMemoryCongiguous, /* 4 */ - GetPhysical, /* 5 */ -}; -#endif - STUB(FInitQueue) { RTS(); @@ -997,42 +799,6 @@ STUB(Microseconds) RTS(); } -// FIXME: #warning should include speech manager selectors -/* - * NOTE: IM Sound p. 4-109 has a table of speech manager selectors: - * - * 0x0000000c SpeechManagerVersion - * 0x003c000c SpeechBusy - * 0x0040000c SpeechBusySystemWide - * 0x0108000c CountVoices - * 0x021c000c DisposeSpeechChannel - * 0x0220000c SpeakString - * 0x022c000c StopSpeech - * 0x0238000c ContinueSpeech - * 0x030c000c GetIndVoice - * 0x0418000c NewSpeechChannel - * 0x0430000c StopSpeechAt - * 0x0434000c PauseSpeechAt - * 0x0444000c SetSpeechRate - * 0x0448000c GetSpeechRate - * 0x044c000c SetSpeechPitch - * 0x0450000c GetSpeechPitch - * 0x0460000c UseDictionary - * 0x0604000c MakeVoiceSpec - * 0x0610000c GetVoiceDescription - * 0x0614000c GetVoiceInfo - * 0x0624000c SpeakText - * 0x0654000c SetSpeechInfo - * 0x0658000c GetSpeechInfo - * 0x0828000c SpeakBuffer - * 0x0a5c000c TextToPhonemes - -static selector_table_entry_t speech_table[] = { - { 0x0000000c, PTOCBLOCK(SpeechManagerVersion) }, - { 0x003c000c, PTOCBLOCK(SpeechBusy) }, - { 0x0040000c, PTOCBLOCK(SpeechBusySystemWide) } -}; */ - STUB(IMVI_ReadXPRam) { /* I, ctm, don't have the specifics for ReadXPram, but Bolo suggests that From 92c6059f7bd24496c55ff4e0583a1d38a1c63274 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 01:24:53 +0100 Subject: [PATCH 66/88] FSDispatch trap --- src/emustubs.cpp | 139 +---------------------------------- src/include/FileMgr.h | 109 ++++++++++++++++++++------- src/include/Finder.h | 46 ++++++++++-- src/include/rsys/emustubs.h | 6 +- src/include/rsys/functions.h | 5 ++ 5 files changed, 130 insertions(+), 175 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index 1ed87a57..f8239d09 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -265,31 +265,6 @@ STUB(IMVI_PPC) RTS(); } -#if defined(NEWSTUBS) -{ - PPCBrowser, /* 0x0d00 */ -} - -{ - PPCInit, /* 0x0 */ - PPCOpen, /* 0x1 */ - PPCStart, /* 0x2 */ - PPCInform, /* 0x3 */ - PPCAccept, /* 0x4 */ - PPCReject, /* 0x5 */ - PPCWrite, /* 0x6 */ - PPCRead, /* 0x7 */ - PPCEnd, /* 0x8 */ - PPCClose, /* 0x9 */ - IPCListPorts, /* 0xa */ - DeleteUserIdentity, /* 0xc */ - GetDefaultUser, /* 0xd */ - StartSecureSession, /* 0xe */ -} - -#endif - - STUB(CommToolboxDispatch) { comm_toolbox_dispatch_args_t *arg_block; @@ -387,123 +362,11 @@ STUB(StripAddress) RTS(); } -static long -apparent_nop(long unused1, long unused2) -{ - long retval; - - retval = 0; - - warning_unexpected("d0 = 0x%lx", (unsigned long)EM_D0); - return retval; -} - -typedef OSErr (*fsprocp_t)(void *, BOOLEAN); - -fsprocp_t hfstab[] = { - (fsprocp_t)apparent_nop, /* 0 */ - (fsprocp_t)PBOpenWD, /* 1 */ - (fsprocp_t)PBCloseWD, /* 2 */ - (fsprocp_t)apparent_nop, /* 3 */ - (fsprocp_t)apparent_nop, /* 4 */ - (fsprocp_t)PBCatMove, /* 5 */ - (fsprocp_t)PBDirCreate, /* 6 */ - (fsprocp_t)PBGetWDInfo, /* 7 */ - (fsprocp_t)PBGetFCBInfo, /* 8 */ - (fsprocp_t)PBGetCatInfo, /* 9 */ - (fsprocp_t)PBSetCatInfo, /* 10 */ - (fsprocp_t)PBSetVInfo, /* 11 */ - (fsprocp_t)apparent_nop, /* 12 */ - (fsprocp_t)apparent_nop, /* 13 */ - (fsprocp_t)apparent_nop, /* 14 */ - (fsprocp_t)apparent_nop, /* 15 */ - (fsprocp_t)PBLockRange, /* 0x10 */ - (fsprocp_t)PBUnlockRange, /* 0x11 */ - (fsprocp_t)apparent_nop, /* 0x12 */ - (fsprocp_t)apparent_nop, /* 0x13 */ - (fsprocp_t)PBCreateFileIDRef, /* 0x14 */ - (fsprocp_t)PBDeleteFileIDRef, /* 0x15 */ - (fsprocp_t)PBResolveFileIDRef, /* 0x16 */ - (fsprocp_t)PBExchangeFiles, /* 0x17 */ - (fsprocp_t)PBCatSearch, /* 0x18 */ - (fsprocp_t)0, /* 0x19 */ - (fsprocp_t)PBOpenDF, /* 0x1A */ - (fsprocp_t)0, /* 0x1B */ - (fsprocp_t)0, /* 0x1C */ - (fsprocp_t)0, /* 0x1D */ - (fsprocp_t)0, /* 0x1E */ - (fsprocp_t)0, /* 0x1F */ - (fsprocp_t)PBDTGetPath, /* 0x20 */ - (fsprocp_t)PBDTCloseDown, /* 0x21 */ - (fsprocp_t)PBDTAddIcon, /* 0x22 */ - (fsprocp_t)PBDTGetIcon, /* 0x23 */ - (fsprocp_t)PBDTGetIconInfo, /* 0x24 */ - (fsprocp_t)PBDTAddAPPL, /* 0x25 */ - (fsprocp_t)PBDTRemoveAPPL, /* 0x26 */ - (fsprocp_t)PBDTGetAPPL, /* 0x27 */ - (fsprocp_t)PBDTSetComment, /* 0x28 */ - (fsprocp_t)PBDTRemoveComment, /* 0x29 */ - (fsprocp_t)PBDTGetComment, /* 0x2A */ - (fsprocp_t)PBDTFlush, /* 0x2B */ - (fsprocp_t)PBDTReset, /* 0x2C */ - (fsprocp_t)PBDTGetInfo, /* 0x2D */ - (fsprocp_t)PBDTOpenInform, /* 0x2E */ - (fsprocp_t)PBDTDelete, /* 0x2F */ - (fsprocp_t)PBHGetVolParms, /* 0x30 */ - (fsprocp_t)PBHGetLogInInfo, /* 0x31 */ - (fsprocp_t)PBHGetDirAccess, /* 0x32 */ - (fsprocp_t)PBHSetDirAccess, /* 0x33 */ - (fsprocp_t)PBHMapID, /* 0x34 */ - (fsprocp_t)PBHMapName, /* 0x35 */ - (fsprocp_t)PBHCopyFile, /* 0x36 */ - (fsprocp_t)PBHMoveRename, /* 0x37 */ - (fsprocp_t)OpenDeny, /* 0x38 */ -}; - -#define ASYNCBIT (1 << 10) -#define HFSBIT (1 << 9) - -STUB(HFSDispatch) -{ - fsprocp_t vp; - - if((EM_D0 & 0xFFFF) >= NELEM(hfstab)) - { - warning_unexpected("d0 = 0x%lx", (unsigned long)EM_D0); - EM_D0 = paramErr; - } - else - { - if(((EM_D0 & 0xFFFF) == 0x1A) && (EM_D1 & 0x200) == 0) - vp = (fsprocp_t)PBOpen; - else - vp = hfstab[(EM_D0 & 0xFFFF)]; - if(vp) - EM_D0 = (*vp)(SYN68K_TO_US_CHECK0(EM_A0), - !!(EM_D1 & ASYNCBIT)); - else - { - warning_unexpected("d0 = 0x%lx", (unsigned long)EM_D0); - EM_D0 = paramErr; - } - } - RTS(); -} - STUB(FInitQueue) { RTS(); } -STUB(HFSRoutines) -{ - fsprocp_t vp; - void **hfsroutine = (void **)ignoreme2; - vp = (fsprocp_t)((EM_D1 & HFSBIT) ? hfsroutine[1] : hfsroutine[0]); - EM_D0 = (*vp)(SYN68K_TO_US_CHECK0(EM_A0), !!(EM_D1 & ASYNCBIT)); - RTS(); -} - #define GETTRAPNEWBIT (1 << 9) #define GETTRAPTOOLBIT (1 << 10) @@ -606,7 +469,7 @@ add_to_bad_trap_addresses(bool tool_p, unsigned short index) if(tool_p) aline_trap += 0x800; - for(i = 0; i < n_bad_traps && bad_traps[i] != aline_trap; ++i) + for(i = 0; i < n_bad_traps && i < NELEM(bad_traps) && bad_traps[i] != aline_trap; ++i) ; if(i >= n_bad_traps) { diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index ff8e48fc..65bd720e 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -587,14 +587,6 @@ extern OSErr AllocContig(INTEGER rn, GUEST *count); extern OSErr FSClose(INTEGER rn); extern void ROMlib_rewinddir(void); -extern OSErr OpenDeny(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHCopyFile(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHMapID(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHMapName(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a); -extern OSErr PBHMoveRename(HParmBlkPtr pb, BOOLEAN a); extern OSErr Create(StringPtr filen, INTEGER vrn, OSType creator, OSType filtyp); extern OSErr FSDelete(StringPtr filen, INTEGER vrn); @@ -621,25 +613,9 @@ extern OSErr SetVol(StringPtr voln, INTEGER vrn); extern OSErr FlushVol(StringPtr voln, INTEGER vrn); extern OSErr UnmountVol(StringPtr voln, INTEGER vrn); extern OSErr Eject(StringPtr voln, INTEGER vrn); -extern OSErr PBDirCreate(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBOpenDF(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async); -extern OSErr PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async); -extern OSErr PBCatMove(CMovePBPtr pb, BOOLEAN async); + extern OSErr PBAllocContig(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBLockRange(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBUnlockRange(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBOpenWD(WDPBPtr pb, BOOLEAN async); -extern OSErr PBCloseWD(WDPBPtr pb, BOOLEAN async); -extern OSErr PBGetWDInfo(WDPBPtr pb, BOOLEAN async); -extern OSErr PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); -extern OSErr PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); -extern OSErr PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBCatSearch(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); -extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); + extern OSErr PBOpen(ParmBlkPtr pb, BOOLEAN async); extern OSErr PBHOpen(HParmBlkPtr pb, BOOLEAN async); @@ -735,6 +711,87 @@ extern OSErr PBFlushFile(ParmBlkPtr pb, BOOLEAN async); FILE_TRAP(PBFlushFile, 0xA045); +DISPATCHER_TRAP(FSDispatch, 0xA060, D0W); + +extern OSErr PBOpenWD(WDPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBOpenWD, 0xA260, 0x0001, FSDispatch); + +extern OSErr PBCloseWD(WDPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBCloseWD, 0xA260, 0x0002, FSDispatch); + +extern OSErr PBCatMove(CMovePBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBCatMove, 0xA260, 0x0005, FSDispatch); + +extern OSErr PBDirCreate(HParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBDirCreate, 0xA260, 0x0006, FSDispatch); + +extern OSErr PBGetWDInfo(WDPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBGetWDInfo, 0xA260, 0x0007, FSDispatch); + +extern OSErr PBGetFCBInfo(FCBPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBGetFCBInfo, 0xA260, 0x0008, FSDispatch); + +extern OSErr PBGetCatInfo(CInfoPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBGetCatInfo, 0xA260, 9, FSDispatch); + +extern OSErr PBSetCatInfo(CInfoPBPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBSetCatInfo, 0xA260, 10, FSDispatch); + +extern OSErr PBSetVInfo(HParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBSetVInfo, 0xA260, 11, FSDispatch); + +extern OSErr PBLockRange(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBLockRange, 0xA260, 0x10, FSDispatch); + +extern OSErr PBUnlockRange(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBUnlockRange, 0xA260, 0x11, FSDispatch); + +extern OSErr PBCreateFileIDRef(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBCreateFileIDRef, 0xA260, 0x14, FSDispatch); + +extern OSErr PBDeleteFileIDRef(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBDeleteFileIDRef, 0xA260, 0x15, FSDispatch); + +extern OSErr PBResolveFileIDRef(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBResolveFileIDRef, 0xA260, 0x16, FSDispatch); + +extern OSErr PBExchangeFiles(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBExchangeFiles, 0xA260, 0x17, FSDispatch); + +extern OSErr PBCatSearch(ParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBCatSearch, 0xA260, 0x18, FSDispatch); + +extern OSErr PBOpenDF(HParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBOpenDF, 0xA260, 0x1A, FSDispatch); + + +extern OSErr PBHGetVolParms(HParmBlkPtr pb, BOOLEAN async); +FILE_SUBTRAP(PBHGetVolParms, 0xA260, 0x30, FSDispatch); + +extern OSErr PBHGetLogInInfo(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHGetLogInInfo, 0xA260, 0x31, FSDispatch); + +extern OSErr PBHGetDirAccess(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHGetDirAccess, 0xA260, 0x32, FSDispatch); + +extern OSErr PBHSetDirAccess(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHSetDirAccess, 0xA260, 0x33, FSDispatch); + +extern OSErr PBHMapID(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHMapID, 0xA260, 0x34, FSDispatch); + +extern OSErr PBHMapName(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHMapName, 0xA260, 0x35, FSDispatch); + +extern OSErr PBHCopyFile(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHCopyFile, 0xA260, 0x36, FSDispatch); + +extern OSErr PBHMoveRename(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(PBHMoveRename, 0xA260, 0x37, FSDispatch); + +extern OSErr OpenDeny(HParmBlkPtr pb, BOOLEAN a); +FILE_SUBTRAP(OpenDeny, 0xA260, 0x38, FSDispatch); + /* prototypes for the high level filesystem dispatch traps */ DISPATCHER_TRAP(HighLevelFSDispatch, 0xAA52, D0<0xF>); diff --git a/src/include/Finder.h b/src/include/Finder.h index 78c12935..6dd2798e 100644 --- a/src/include/Finder.h +++ b/src/include/Finder.h @@ -40,21 +40,55 @@ typedef struct DTPBRec GUEST ioAPPLParID; } * DTPBRecPtr, *DTPBPtr; +EXTERN_DISPATCHER_TRAP(FSDispatch, 0xA060, D0W); + extern OSErr PBDTGetPath(DTPBPtr dtp); -extern OSErr PBDTOpenInform(DTPBPtr dtp); +REGISTER_SUBTRAP2(PBDTGetPath, 0xA260, 0x20, FSDispatch, D0(A0)); + extern OSErr PBDTCloseDown(DTPBPtr dtp); +REGISTER_SUBTRAP2(PBDTCloseDown, 0xA260, 0x21, FSDispatch, D0(A0)); + +extern OSErr PBDTAddIcon(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTAddIcon, 0xA260, 0x22, FSDispatch); + extern OSErr PBDTGetIcon(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTGetIcon, 0xA260, 0x23, FSDispatch); + extern OSErr PBDTGetIconInfo(DTPBPtr dtp, BOOLEAN async); -extern OSErr PBDTGetAPPL(DTPBPtr dtp, BOOLEAN async); -extern OSErr PBDTGetComment(DTPBPtr dtp, BOOLEAN async); -extern OSErr PBDTAddIcon(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTGetIconInfo, 0xA260, 0x24, FSDispatch); + extern OSErr PBDTAddAPPL(DTPBPtr dtp, BOOLEAN async); -extern OSErr PBDTSetComment(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTAddAPPL, 0xA260, 0x25, FSDispatch); + extern OSErr PBDTRemoveAPPL(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTRemoveAPPL, 0xA260, 0x26, FSDispatch); + +extern OSErr PBDTGetAPPL(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTGetAPPL, 0xA260, 0x27, FSDispatch); + +extern OSErr PBDTSetComment(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTSetComment, 0xA260, 0x28, FSDispatch); + extern OSErr PBDTRemoveComment(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTRemoveComment, 0xA260, 0x29, FSDispatch); + +extern OSErr PBDTGetComment(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTGetComment, 0xA260, 0x2A, FSDispatch); + extern OSErr PBDTFlush(DTPBPtr dtp, BOOLEAN async); -extern OSErr PBDTGetInfo(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTFlush, 0xA260, 0x2B, FSDispatch); + extern OSErr PBDTReset(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTReset, 0xA260, 0x2C, FSDispatch); + +extern OSErr PBDTGetInfo(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTGetInfo, 0xA260, 0x2D, FSDispatch); + +extern OSErr PBDTOpenInform(DTPBPtr dtp); +REGISTER_SUBTRAP2(PBDTOpenInform, 0xA260, 0x2E, FSDispatch, D0(A0)); + extern OSErr PBDTDelete(DTPBPtr dtp, BOOLEAN async); +FILE_SUBTRAP(PBDTDelete, 0xA260, 0x2F, FSDispatch); + } #endif diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index df6d8f71..fd28a9df 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -75,13 +75,12 @@ RAW_68K_TRAP(SetTrapAddress, 0xA047); RAW_68K_TRAP(RelString, 0xA050); RAW_68K_TRAP(UprString, 0xA054); RAW_68K_TRAP(StripAddress, 0xA055); -RAW_68K_TRAP(HFSDispatch, 0xA260); RAW_68K_TRAP(ADBOp, 0xA07C); RAW_68K_TRAP(Microseconds, 0xA193); RAW_68K_TRAP(Gestalt, 0xA1AD); RAW_68K_TRAP(LoadSeg, 0xA9F0); RAW_68K_TRAP(CommToolboxDispatch, 0xA08B); -//RAW_68K_FUNCTION(modeswitch); +RAW_68K_FUNCTION(modeswitch); RAW_68K_TRAP(WackyQD32Trap, 0xAB03); RAW_68K_FUNCTION(Key1Trans); RAW_68K_FUNCTION(Key2Trans); @@ -98,8 +97,5 @@ RAW_68K_TRAP(SetOSDefault, 0xA083); RAW_68K_TRAP(IMVI_ReadXPRam, 0xA051); RAW_68K_FUNCTION(bad_trap_unimplemented); RAW_68K_TRAP(IMVI_PPC, 0xA0DD); -RAW_68K_FUNCTION(HFSRoutines); -//RAW_68K_FUNCTION(CodeFragment); -//RAW_68K_FUNCTION(MixedMode); } #endif diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 92c58750..6d13edba 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -242,6 +242,8 @@ class SubTrapFunction : public CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction) #define REGISTER_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction>) +#define REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME, TRAPNAME), SubTrapFunction>) #define NOTRAP_FUNCTION(NAME) \ CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) @@ -261,6 +263,9 @@ class SubTrapFunction : public #define FILE_TRAP(NAME, TRAP) \ REGISTER_TRAP2(NAME, TRAP, D0 (A0, TrapBit)) +#define FILE_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ + REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, D0 (A0, TrapBit)) + #define HFS_TRAP(NAME, HNAME, PBTYPE, TRAP) \ inline OSErr NAME##_##HNAME(ParmBlkPtr pb, Boolean async, Boolean hfs) \ { \ From dba4a63abda41a04336440ca4b5d8cc6aacca8c9 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 19:43:40 +0100 Subject: [PATCH 67/88] Enable trap logging from command line using a new -logtraps switch; clean up some unneeded flags and globals, kill -desperate flag --- src/CMakeLists.txt | 3 +- src/desperate.cpp | 128 ----------------------------------- src/functions.cpp | 3 +- src/include/rsys/desperate.h | 7 -- src/include/rsys/flags.h | 7 -- src/include/rsys/functions.h | 2 +- src/include/rsys/segment.h | 1 - src/main.cpp | 42 ++---------- src/segment.cpp | 1 - 9 files changed, 11 insertions(+), 183 deletions(-) delete mode 100644 src/desperate.cpp delete mode 100644 src/include/rsys/desperate.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 08d8995c..7c60da7e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -179,7 +179,7 @@ set(misc_sources functions.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cp osevent.cpp osutil.cpp pack.cpp scrap.cpp script.cpp segment.cpp serial.cpp slash.cpp stdfile.cpp romlib_stubs.cpp syserr.cpp toolevent.cpp toolutil.cpp time.cpp vbl.cpp syncint.cpp virtualint.cpp refresh.cpp autorefresh.cpp aboutbox.cpp - option.cpp parseopt.cpp parsenum.cpp desperate.cpp + option.cpp parseopt.cpp parsenum.cpp version.cpp shutdown.cpp uniquefile.cpp screen-dump.cpp process.cpp alias.cpp string.cpp tempmem.cpp edition.cpp fontIMVI.cpp balloon.cpp error.cpp adb.cpp color_wheel_bits.cpp finder.cpp system_error.cpp ibm_keycodes.cpp @@ -252,7 +252,6 @@ set(include_sources hintemplate.h include/rsys/dcache.h include/rsys/depthconv.h include/rsys/desk.h - include/rsys/desperate.h include/rsys/device.h include/rsys/dial.h include/rsys/dirtyrect.h diff --git a/src/desperate.cpp b/src/desperate.cpp deleted file mode 100644 index b7af66b2..00000000 --- a/src/desperate.cpp +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright 1996 by Abacus Research and - * Development, Inc. All rights reserved. - */ - -#include "rsys/common.h" -#include "rsys/file.h" -#include "rsys/desperate.h" -#include "OSUtil.h" - -using namespace Executor; - -static int -desperate_switch_index(int argc, char **argv) -{ - int i; - for(i = 0; i < argc; i++) - if(!strcmp("-desperate", argv[i])) - return i; - return -1; -} - -static void -print_cmd_line_arg(const char *str) -{ - char *c; - - c = (char *)alloca(strlen(str) + 1); - strcpy(c, str); -#if defined(MSDOS) - convert_slashs_to_backslashs(c); -#endif - - if(c[0] == '\0' || strchr(c, ' ') || strchr(c, '\t')) - printf(" \"%s\"", c); - else - printf(" %s", c); -} - -/* FIXME - these should be moved to configuration files somehow. */ -#if defined(LINUX) -static const char *desperate_switches[] = { - "-nosound", - "-nodrivesearch", - "-memory", - "2M", -}; -#else -static const char *desperate_switches[] = { - "-nosound", - "-memory", - "2M", -}; -#endif - -/* Searches for an occurrence of "-desperate" in the command line. - * If it finds one, it is replaced with a list of command-line - * switches whose purpose is to put Executor into "desperate" mode, - * where it uses as few system features as possible. If such - * a switch is found, *argcp and *argvp are modified to reflect - * the new command line switches. - * - * Returns true except in case of a parsing error (right now that - * can only happen with duplicate "-desperate" switches). - */ -bool Executor::handle_desperate_switch(int *argcp, char ***argvp) -{ - bool success_p; - char **argv, **new_argv; - int i, s, argc, new_argc; - - argc = *argcp; - argv = *argvp; - - /* See if the "-desperate" switch is in the list. */ - s = desperate_switch_index(argc, argv); - if(s == -1) - { - success_p = true; - goto done; - } - - /* See if the "-desperate" switch is in the list twice. */ - if(desperate_switch_index(argc - s - 1, argv + s + 1) != -1) - { - fprintf(stderr, "Duplicate \"-desperate\" switch.\n"); - success_p = false; - goto done; - } - - /* Construct the new list by replacing the "-desperate" switch - * with all of the switches it implies. There is a small memory - * leak here since we'll never reclaim this memory. - */ - new_argc = argc + NELEM(desperate_switches) - 1; - new_argv = (char **)malloc((new_argc + 1) * sizeof new_argv[0]); - memcpy(new_argv, argv, s * sizeof new_argv[0]); - memcpy(new_argv + s, desperate_switches, sizeof desperate_switches); - memcpy(new_argv + s + NELEM(desperate_switches), - argv + s + 1, (argc - s - 1) * sizeof new_argv[0]); - new_argv[new_argc] = NULL; - - puts( - "Executor is now entering desperation mode and attempting to use as few\n" - "system features as possible. This is useful if you find that Executor\n" - "won't start for you, a problem usually caused by driver conflicts. If\n" - "you find that this \"desperation mode\" works, you can experiment and\n" - "see which of these command-line switches are necessary for you to get\n" - "Executor to work:\n"); - for(i = 0; i < new_argc; i++) - print_cmd_line_arg(new_argv[i]); - - fputs("\n\nWaiting ten seconds...", stdout); - fflush(stdout); -#if !defined(CYGWIN32) - sleep(10); -#else - Delay(60 * 10, (LONGINT *)0); -#endif - puts("done."); - fflush(stdout); - - *argcp = new_argc; - *argvp = new_argv; - success_p = true; - -done: - return success_p; -} diff --git a/src/functions.cpp b/src/functions.cpp index 9f1b9c17..73911bc3 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -723,8 +723,9 @@ syn68k_addr_t Executor::tooltraptable[0x400]; /* Gets filled in at run time */ syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ -void functions::init() +void functions::init(bool log) { + loggingEnabled = log; for(auto init : initObjects) init->init(); for(int i = 0; i < NTOOLENTRIES; i++) diff --git a/src/include/rsys/desperate.h b/src/include/rsys/desperate.h deleted file mode 100644 index 023958ce..00000000 --- a/src/include/rsys/desperate.h +++ /dev/null @@ -1,7 +0,0 @@ -#if !defined(_RSYS_DESPERATE_H_) -#define _RSYS_DESPERATE_H_ -namespace Executor -{ -extern bool handle_desperate_switch(int *argcp, char ***argvp); -} -#endif /* _RSYS_DESPERATE_H_ */ diff --git a/src/include/rsys/flags.h b/src/include/rsys/flags.h index 86af05a0..18aad4c0 100644 --- a/src/include/rsys/flags.h +++ b/src/include/rsys/flags.h @@ -12,13 +12,6 @@ extern INTEGER ROMlib_bltrgn_save_cursor_p; /* do not check for diskette when under dos */ extern int ROMlib_drive_check; -#if defined(NOMOUSE_COMMAND_LINE_OPTION) -/* no mouse is installed; keyboard only */ -extern int ROMlib_no_mouse; -#endif - -extern INTEGER ROMlib_no_windows; - /* 0 means "use default". */ extern INTEGER flag_width, flag_height; diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 6d13edba..413ef914 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -278,7 +278,7 @@ class SubTrapFunction : public callconv::Register, TrapBit)>>) void resetNestingLevel(); -void init(); +void init(bool enableLogging); } diff --git a/src/include/rsys/segment.h b/src/include/rsys/segment.h index 140307dc..95c05094 100644 --- a/src/include/rsys/segment.h +++ b/src/include/rsys/segment.h @@ -25,7 +25,6 @@ extern LONGINT ROMlib_appbit, ROMlib_whichapps; extern void ROMlib_seginit(LONGINT argc, char **argv); extern void empty_timer_queues(void); -extern BOOLEAN ROMlib_startupscreen; } #endif /* !_SEGMENT_H_ */ diff --git a/src/main.cpp b/src/main.cpp index 5780a2bb..87901683 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -64,7 +64,6 @@ #include "rsys/stdfile.h" #include "rsys/autorefresh.h" #include "rsys/sounddriver.h" -#include "rsys/desperate.h" #include "rsys/dcache.h" #include "rsys/system_error.h" #include "rsys/filedouble.h" @@ -112,10 +111,6 @@ using namespace std; int Executor::ROMlib_noclock = 0; -#if defined(NOMOUSE_COMMAND_LINE_OPTION) -int ROMlib_no_mouse = 1; -#endif - /* optional resolution other than 72dpix72dpi for printing */ INTEGER Executor::ROMlib_optional_res_x, Executor::ROMlib_optional_res_y; @@ -140,8 +135,6 @@ int Executor::flag_bpp = 0; /* 0 means "use default". */ INTEGER Executor::ROMlib_shadow_screen_p = true; -INTEGER Executor::ROMlib_no_windows; - #if defined(MSDOS) || defined(CYGWIN32) int ROMlib_drive_check = 0; #endif @@ -354,13 +347,6 @@ capable of color.", opt_no_arg, "" }, #endif - { "desperate", /* Handled specially; here for documentation purposes only. */ - "run in \"desperation mode\". This will cause Executor " - "to use as few system features as possible, which is handy for " - "troubleshooting if Executor is having serious problems with " - "your system.", - opt_no_arg, "" }, - #if defined(powerpc) || defined(__ppc__) { "ppc", "try to execute the PPC native code if possible (UNSUPPORTED)", opt_no_arg, "" }, #endif @@ -375,6 +361,8 @@ capable of color.", opt_sep, "" }, { "hfsplusro", "unsupported -- do not use", opt_no_arg, "" }, + + { "logtraps", "print every operating system and toolbox calls and their arguments", opt_no_arg, "" } }; opt_database_t Executor::common_db; @@ -555,8 +543,6 @@ static void setstartdir(char *argv0) #endif /* defined(MSDOS) */ } -BOOLEAN Executor::ROMlib_startupscreen = true; - char *Executor::program_name; static syn68k_addr_t @@ -1043,12 +1029,6 @@ int main(int argc, char **argv) checkpointp = checkpoint_init(); #endif - /* Replace "-desperate" switch with what it implies. We must do - * this before normal command line processing. - */ - if(!handle_desperate_switch(&argc, &argv)) - exit(-1); - opt_init(); common_db = opt_alloc_db(); opt_register("common", common_opts); @@ -1356,10 +1336,6 @@ int main(int argc, char **argv) opt_int_val(common_db, "nodotfiles", &ROMlib_no_dot_files, &bad_arg_p); #endif -#if defined(NOMOUSE_COMMAND_LINE_OPTION) - opt_int_val(common_db, "nomouse", &ROMlib_no_mouse, &bad_arg_p); -#endif - #if 0 opt_int_val (common_db, "noclock", &ROMlib_noclock, &bad_arg_p); #endif @@ -1430,7 +1406,10 @@ int main(int argc, char **argv) } } - Executor::functions::init(); + if(opt_val(common_db, "logtraps", NULL)) + Executor::functions::init(true); + else + Executor::functions::init(false); l = ostraptable[0x0FC]; ((unsigned char *)jmpl_to_ResourceStub)[2] = l >> 24; @@ -1674,16 +1653,9 @@ int main(int argc, char **argv) complain_if_no_ghostscript(); #endif -#ifdef MACOSX_ - NeXTMain(); -#endif - executor_main(); - if(!ROMlib_no_windows) - ExitToShell(); - else - exit(0); + ExitToShell(); /* NOT REACHED */ return 0; } diff --git a/src/segment.cpp b/src/segment.cpp index f402ddb9..90738ad8 100644 --- a/src/segment.cpp +++ b/src/segment.cpp @@ -514,7 +514,6 @@ void Executor::ROMlib_seginit(LONGINT argc, char **argv) /* INTERNAL */ ++argv; if(argv_to_appfile(argv[0], &app)) { - ROMlib_startupscreen = false; ROMlib_exit = true; newcount = Hx(fh, count) + 1; HxX(fh, count) = CW(newcount); From 5c6e8c5150c83671fc52209518cc5d73f34e014b Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 20:04:18 +0100 Subject: [PATCH 68/88] disable unnecessary log output --- src/config/front-ends/qt/qt.cpp | 2 -- src/windRootless.cpp | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/config/front-ends/qt/qt.cpp b/src/config/front-ends/qt/qt.cpp index 31eb7c8e..13e059d2 100644 --- a/src/config/front-ends/qt/qt.cpp +++ b/src/config/front-ends/qt/qt.cpp @@ -318,11 +318,9 @@ class ExecutorWindow : public QRasterWindow switch(ev->type()) { case QEvent::FocusIn: - std::cout << "focusin\n"; sendresumeevent(true); break; case QEvent::FocusOut: - std::cout << "focusout\n"; sendsuspendevent(); break; diff --git a/src/windRootless.cpp b/src/windRootless.cpp index 7d6320df..83b4e2a5 100644 --- a/src/windRootless.cpp +++ b/src/windRootless.cpp @@ -9,9 +9,13 @@ using namespace Executor; static std::vector rootlessMenus; +// #define LOG_ROOTLESS + void Executor::ROMlib_rootless_update(RgnHandle extra) { +#ifdef LOG_ROOTLESS std::cout << "ROMlib_rootless_update\n"; +#endif #ifdef VDRIVER_ROOTLESS RgnHandle rgn = NewRgn(); SetRectRgn(rgn, 0,0, CW(screenBitsX.bounds.right), CW(LM(MBarHeight))); @@ -42,7 +46,9 @@ void Executor::ROMlib_rootless_update(RgnHandle extra) void Executor::ROMlib_rootless_openmenu(Rect r) { +#ifdef LOG_ROOTLESS std::cout << "ROMlib_rootless_openmenu\n"; +#endif #ifdef VDRIVER_ROOTLESS r.left = CW(CW(r.left ) - 1); r.top = CW(CW(r.top ) - 1); @@ -54,7 +60,9 @@ void Executor::ROMlib_rootless_openmenu(Rect r) } void Executor::ROMlib_rootless_closemenu() { +#ifdef LOG_ROOTLESS std::cout << "ROMlib_rootless_closemenu\n"; +#endif #ifdef VDRIVER_ROOTLESS if(rootlessMenus.empty()) return; From 4af033557d0f3ee1afdfd38d6c1061bfcec83117 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Thu, 1 Feb 2018 23:37:52 +0100 Subject: [PATCH 69/88] flushcache -> FlushCodeCache --- src/executor.cpp | 2 +- src/include/SegmentLdr.h | 4 ++-- src/include/rsys/segment.h | 1 - src/launch.cpp | 2 +- src/segment.cpp | 8 ++++---- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/executor.cpp b/src/executor.cpp index 00f3b7df..29e5a15b 100644 --- a/src/executor.cpp +++ b/src/executor.cpp @@ -463,7 +463,7 @@ void Executor::executor_main(void) LM(Key1Trans) = RM((Ptr)&stub_Key1Trans); LM(Key2Trans) = RM((Ptr)&stub_Key2Trans); - LM(JFLUSH) = RM(&stub_flushcache); + LM(JFLUSH) = RM(&FlushCodeCache); LM(JResUnknown1) = LM(JFLUSH); /* I don't know what these are supposed to */ LM(JResUnknown2) = LM(JFLUSH); /* do, but they're not called enough for us to worry about the cache flushing diff --git a/src/include/SegmentLdr.h b/src/include/SegmentLdr.h index 6eb33c21..62aa76e6 100644 --- a/src/include/SegmentLdr.h +++ b/src/include/SegmentLdr.h @@ -50,8 +50,8 @@ const LowMemGlobal CurJTOffset { 0x934 }; // SegmentLdr IMII-62 (true-b const LowMemGlobal CurPageOption { 0x936 }; // SegmentLdr IMII-60 (true); const LowMemGlobal AppParmHandle { 0xAEC }; // SegmentLdr IMII-57 (true); -extern void flushcache(void); -REGISTER_TRAP2(flushcache, 0xA0BD, void()); +extern void C_FlushCodeCache(void); +PASCAL_TRAP(FlushCodeCache, 0xA0BD); extern void HWPriv(LONGINT d0, LONGINT a0); REGISTER_TRAP2(HWPriv, 0xA198, void(D0,A0)); diff --git a/src/include/rsys/segment.h b/src/include/rsys/segment.h index 95c05094..c3012573 100644 --- a/src/include/rsys/segment.h +++ b/src/include/rsys/segment.h @@ -16,7 +16,6 @@ struct finderinfo }; extern int ROMlib_print; -extern void flushcache(void); extern void SFSaveDisk_Update(INTEGER vrefnum, Str255 filename); extern char *ROMlib_undotdot(char *origp); diff --git a/src/launch.cpp b/src/launch.cpp index e89d1b0d..c91265e2 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -1050,7 +1050,7 @@ static void reset_low_globals(void) LM(Key1Trans) = RM((Ptr)&stub_Key1Trans); LM(Key2Trans) = RM((Ptr)&stub_Key2Trans); - LM(JFLUSH) = RM(&stub_flushcache); + LM(JFLUSH) = RM(&FlushCodeCache); LM(JResUnknown1) = LM(JFLUSH); /* I don't know what these are supposed to */ LM(JResUnknown2) = LM(JFLUSH); /* do, but they're not called enough for us to worry about the cache flushing diff --git a/src/segment.cpp b/src/segment.cpp index 90738ad8..33f42827 100644 --- a/src/segment.cpp +++ b/src/segment.cpp @@ -64,7 +64,7 @@ using namespace Executor; int Executor::ROMlib_cacheheuristic = false; -void Executor::flushcache() +void Executor::C_FlushCodeCache() { ROMlib_destroy_blocks((syn68k_addr_t)0, (uint32_t)~0, true); } @@ -83,7 +83,7 @@ void Executor::HWPriv(LONGINT d0, LONGINT a0) i_cache_enabled = new_state; break; case 1: /* Flush Instr cache */ - flushcache(); + FlushCodeCache(); break; case 2: /* Dis/Ena Data cache */ warning_unimplemented("Dis/Ena data cache"); @@ -93,7 +93,7 @@ void Executor::HWPriv(LONGINT d0, LONGINT a0) break; case 3: /* Flush Data cache */ #if 0 - flushcache(); + FlushCodeCache(); #endif break; case 4: /* Enable external cache */ @@ -103,7 +103,7 @@ void Executor::HWPriv(LONGINT d0, LONGINT a0) warning_unimplemented("Disable external cache"); break; case 6: /* Flush external cache */ - flushcache(); + FlushCodeCache(); break; case 9: /* Flush cache range */ ROMlib_destroy_blocks((syn68k_addr_t)a0, EM_A1, true); From 2efb4d36e89a50199cd19fc01cd954348a9c06f9 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 2 Feb 2018 02:02:48 +0100 Subject: [PATCH 70/88] fix calling conventions for ResrvMem, PurgeMem, Enqueue --- src/include/MemoryMgr.h | 4 ++-- src/include/OSUtil.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index a5151d58..ceee28ac 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -157,12 +157,12 @@ REGISTER_TRAP2(_CompactMem_flags, 0xA04C, D0 (D0, TrapBit)); #define ResrvMem(needed) (_ResrvMem_flags(needed, false)) #define ResrvMemSys(needed) (_ResrvMem_flags(needed, true)) extern void _ResrvMem_flags(Size needed, bool sys_p); -REGISTER_TRAP2(_ResrvMem_flags, 0xA040, D0 (D0, TrapBit)); +REGISTER_TRAP2(_ResrvMem_flags, 0xA040, void (D0, TrapBit), callconv::ReturnMemErr); #define PurgeMem(needed) (_PurgeMem_flags(needed, false)) #define PurgeMemSys(needed) (_PurgeMem_flags(needed, true)) extern void _PurgeMem_flags(Size needed, bool sys_p); -REGISTER_TRAP2(_PurgeMem_flags, 0xA04D, D0 (D0, TrapBit)); +REGISTER_TRAP2(_PurgeMem_flags, 0xA04D, void (D0, TrapBit), callconv::ReturnMemErr); #define MaxBlock() (_MaxBlock_flags(false)) #define MaxBlockSys() (_MaxBlock_flags(true)) diff --git a/src/include/OSUtil.h b/src/include/OSUtil.h index e084933f..4b07aa1f 100644 --- a/src/include/OSUtil.h +++ b/src/include/OSUtil.h @@ -197,7 +197,7 @@ extern SysPPtr GetSysPPtr(void); extern OSErr WriteParam(void); REGISTER_TRAP2(WriteParam, 0xA038, D0()); extern void Enqueue(QElemPtr e, QHdrPtr h); -REGISTER_TRAP2(Enqueue, 0xA96F, D0(A0,A1), SaveA1D1D2); +REGISTER_TRAP2(Enqueue, 0xA96F, void(A0,A1), SaveA1D1D2); extern OSErr Dequeue(QElemPtr e, QHdrPtr h); REGISTER_TRAP2(Dequeue, 0xA96E, D0(A0,A1), SaveA1D1D2); From 562aafb9a2ffb882b9583a91b6a5f1ca8bb9e7c5 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 2 Feb 2018 02:04:22 +0100 Subject: [PATCH 71/88] invoke patched traps --- src/emustubs.cpp | 2 +- src/functions.cpp | 229 ++++++++++++++--------------------- src/include/OSEvent.h | 8 +- src/include/rsys/ctop_ptoc.h | 7 +- src/include/rsys/functions.h | 225 +++++++++++++++++++++++++++++----- src/include/rsys/mactype.h | 16 +-- src/listMouse.cpp | 1 - 7 files changed, 305 insertions(+), 183 deletions(-) diff --git a/src/emustubs.cpp b/src/emustubs.cpp index f8239d09..ce51a68a 100644 --- a/src/emustubs.cpp +++ b/src/emustubs.cpp @@ -542,7 +542,7 @@ ROMlib_GetTrapAddress_helper(uint32_t *d0p, uint32_t d1, uint32_t *a0p) if(*a0p == (uint32_t)tooltraptable[UNIMPLEMENTEDINDEX]) { add_to_bad_trap_addresses(tool_p, *d0p); - *a0p = US_TO_SYN68K_CHECK0(&stub_bad_trap_unimplemented); + *a0p = US_TO_SYN68K_CHECK0((Ptr)&stub_bad_trap_unimplemented); } *d0p = 0; } diff --git a/src/functions.cpp b/src/functions.cpp index 73911bc3..4f443cc6 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -17,12 +17,11 @@ namespace #include #include +#include + using namespace Executor; using namespace Executor::functions; -bool toolflags[0x400]; -bool osflags[0x100]; - template struct LoggedFunction; @@ -336,10 +335,32 @@ syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) return retaddr; } -namespace Executor +template +struct LoggedFunctionCC; + +template +struct LoggedFunctionCC { -namespace callconv + static syn68k_addr_t call(syn68k_addr_t addr, void * param) + { + return untypedLoggedFunction(addr, param); + } +}; + +template +struct LoggedFunctionCC { + static Ret call(Args... args) + { + return LoggedFunction::call(args...); + } +}; + +namespace Executor +{ + namespace callconv + { + template struct A { template @@ -351,6 +372,11 @@ template struct A static void set(uint32_t x) { EM_AREG(n) = x; } static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } + template + static void set(UPP x) { EM_AREG(n) = ptr_to_longint((void*)x); } + + template + static void afterCall(T) {} }; template struct D @@ -358,11 +384,34 @@ template struct D template operator T() { return EM_DREG(n); } static void set(uint32_t x) { EM_DREG(n) = x; } + + template + static void afterCall(T) {} }; struct D0HighWord { operator uint16_t() { return EM_D0 >> 16; } + + static void set(uint16_t x) + { + EM_D0 = (EM_D0 & 0xFFFF) | (x << 16); + } + + template + static void afterCall(T) {} +}; +struct D0LowWord +{ + operator uint16_t() { return EM_D0 & 0xFFFF; } + + static void set(uint16_t x) + { + EM_D0 = (EM_D0 & 0xFFFF0000) | x; + } + + template + static void afterCall(T) {} }; template struct Out @@ -372,6 +421,9 @@ template struct Out operator T*() { return &temp; } ~Out() { Loc::set(temp); } + + static void set(T* p) {} + static void afterCall(T* p) { *p = Loc(); } }; template struct InOut @@ -382,12 +434,25 @@ template struct InOut InOut() { temp = Loc(); } ~InOut() { Loc::set(temp); } + + static void set(T* p) { Loc::set(*p); } + static void afterCall(T* p) { *p = Loc(); } }; template struct TrapBit { operator bool() { return !!(EM_D1 & mask); } + + static void set(bool b) + { + if(b) + EM_D1 |= mask; + else + EM_D1 &= ~mask; + } + template + static void afterCall(T) {} }; struct CCFromD0 @@ -444,88 +509,8 @@ struct MoveA1ToA0 } }; -} -} - -template -struct Invoker; - -template -struct Invoker -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) - { - static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; - return PascalToCCall(addr, &ptocblock); - } -}; - - -template -struct Invoker -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) - { - return fptr(addr, refcon); } -}; -template struct List; - -template -struct InvokerRec; - -template -struct InvokerRec, List<>, List<>> -{ - static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) - { - return fptr(args...); - } -}; - -template -struct InvokerRec, List, List> -{ - static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) - { - CC newarg; - return InvokerRec,List,List> - ::invokeFrom68K(addr, refcon, args..., newarg); - } -}; - -template -struct Invoker> -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - syn68k_addr_t retaddr = POPADDR(); - Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); - RetConv::set(retval); // ### double conversion? - return retaddr; - } -}; -template -struct Invoker> -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - syn68k_addr_t retaddr = POPADDR(); - InvokerRec, List, List>::invokeFrom68K(addr, refcon); - return retaddr; - } -}; - -template -struct Invoker> -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - Extra1 state; - syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); - return state.afterwards(retval); - } -}; +} template WrappedFunction::WrappedFunction(const char* name) @@ -538,60 +523,29 @@ template::init() { if(loggingEnabled) - guestFP = (UPP)SYN68K_TO_US(callback_install( - Invoker::call, CallConv> + guestFP = (UPP)SYN68K_TO_US(callback_install( + callfrom68K::Invoker::call, CallConv> ::invokeFrom68K, nullptr)); else - guestFP = (UPP)SYN68K_TO_US(callback_install( - Invoker + guestFP = (UPP)SYN68K_TO_US(callback_install( + callfrom68K::Invoker ::invokeFrom68K, nullptr)); } -template -WrappedFunction::WrappedFunction(const char* name) - : name(name) -{ - namedThings[(void*) fptr] = name; -} - -template -void WrappedFunction::init() +template +Ret TrapFunction::invokeViaTrapTable(Args... args) const { - if(loggingEnabled) - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&untypedLoggedFunction, nullptr)); - else - guestFP = (ProcPtr)SYN68K_TO_US(callback_install(fptr, nullptr)); + return (UPP(SYN68K_TO_US(tableEntry())))(args...); } - - template void TrapFunction::init() { WrappedFunction::init(); - if(trapno) - { - if(trapno & TOOLBIT) - { - if(!toolflags[trapno & 0x3FF]) - { - toolflags[trapno & 0x3FF] = true; - tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)this->guestFP)); - } - else - std::cout << "Not replacing " << std::hex << trapno << " : " << this->name << std::endl; - } - else - { - if(!osflags[trapno & 0xFF]) - { - osflags[trapno & 0xFF] = true; - ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)this->guestFP)); - } - else - std::cout << "Not replacing " << std::hex << trapno << " : " << this->name << std::endl; - } - } + originalFunction = US_TO_SYN68K(((void*)this->guestFP)); + assert(trapno); + assert(!tableEntry()); + tableEntry() = originalFunction; } template @@ -599,10 +553,10 @@ SubTrapFunction::SubTrapFunctio : WrappedFunction(name), dispatcher(dispatcher) { if(loggingEnabled) - dispatcher.addSelector(selector, Invoker::call, CallConv> + dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> ::invokeFrom68K); else - dispatcher.addSelector(selector, Invoker + dispatcher.addSelector(selector, callfrom68K::Invoker ::invokeFrom68K); } @@ -620,14 +574,13 @@ syn68k_addr_t DispatcherTrap::invokeFrom68K(syn68k_addr_t ad std::abort(); } } + template void DispatcherTrap::addSelector(uint32_t sel, callback_handler_t handler) { selectors[sel & SelectorConvention::selectorMask] = handler; } - - template void DispatcherTrap::init() { @@ -636,18 +589,15 @@ void DispatcherTrap::init() ProcPtr guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&invokeFrom68K, this)); if(trapno & TOOLBIT) { - toolflags[trapno & 0x3FF] = true; tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)guestFP)); } else { - osflags[trapno & 0xFF] = true; ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)guestFP)); } } } - functions::internal::DeferredInit::DeferredInit() { initObjects.push_back(this); @@ -719,8 +669,8 @@ struct StackWLookahead #include "rsys/refresh.h" #include "rsys/gestalt.h" -syn68k_addr_t Executor::tooltraptable[0x400]; /* Gets filled in at run time */ -syn68k_addr_t Executor::ostraptable[0x100]; /* Gets filled in at run time */ +syn68k_addr_t Executor::tooltraptable[NTOOLENTRIES]; /* Gets filled in at run time */ +syn68k_addr_t Executor::ostraptable[NOSENTRIES]; /* Gets filled in at run time */ void functions::init(bool log) @@ -733,4 +683,9 @@ void functions::init(bool log) if(tooltraptable[i] == 0) tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); } + for(int i = 0; i < NOSENTRIES; i++) + { + if(ostraptable[i] == 0) + ostraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); + } } diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index eb713fe8..b3fd99a8 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -100,10 +100,16 @@ namespace callconv { struct D0Minus1Boolean { + operator bool() { return EM_D0 != 0; } + static void set(bool b) { EM_D0 = b ? 0 : -1; } + + template + static void afterCall(T) {} + }; } @@ -117,7 +123,7 @@ extern OSErr ROMlib_PPostEvent(INTEGER evcode, LONGINT evmsg, extern OSErr PostEvent(INTEGER evcode, LONGINT evmsg); extern void FlushEvents(INTEGER evmask, INTEGER stopmask); -REGISTER_TRAP2(FlushEvents, 0xA032, void(D0,D0HighWord), ClearD0); +REGISTER_TRAP2(FlushEvents, 0xA032, void(D0LowWord,D0HighWord), ClearD0); extern BOOLEAN GetOSEvent(INTEGER evmask, EventRecord *eventp); REGISTER_TRAP2(GetOSEvent, 0xA031, D0Minus1Boolean (D0,A0)); extern BOOLEAN OSEventAvail(INTEGER evmask, diff --git a/src/include/rsys/ctop_ptoc.h b/src/include/rsys/ctop_ptoc.h index 3fce1f18..186d6559 100644 --- a/src/include/rsys/ctop_ptoc.h +++ b/src/include/rsys/ctop_ptoc.h @@ -2,8 +2,7 @@ namespace Executor { - -template +template struct UPP; struct Point; @@ -33,8 +32,8 @@ namespace ptoc_internal constexpr static CTOPCode value = 5; }; - template - struct CTOP> + template + struct CTOP> { constexpr static CTOPCode value = 5; }; diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 413ef914..0b674e96 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -31,6 +31,7 @@ using D1 = D<1>; using D2 = D<2>; struct D0HighWord; +struct D0LowWord; template struct TrapBit; template struct Out; @@ -42,21 +43,180 @@ struct CCFromD0; struct ClearD0; struct SaveA1D1D2; struct MoveA1ToA0; -struct D0HighWord; + + } using namespace callconv; -template -struct UPP; +namespace callfrom68K +{ + template + struct Invoker; + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + { + static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; + return PascalToCCall(addr, &ptocblock); + } + }; + + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) + { + return fptr(addr, refcon); + } + }; + template struct List; + + template + struct InvokerRec; + + template + struct InvokerRec, List<>, List<>> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + return fptr(args...); + } + }; + + template + struct InvokerRec, List, List> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + CC newarg; + return InvokerRec,List,List> + ::invokeFrom68K(addr, refcon, args..., newarg); + } + }; + + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); + RetConv::set(retval); // ### double conversion? + return retaddr; + } + }; + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + InvokerRec, List, List>::invokeFrom68K(addr, refcon); + return retaddr; + } + }; + + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + Extra1 state; + syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); + return state.afterwards(retval); + } + }; +} + +namespace callto68K +{ + template + struct Invoker; + + template + struct InvokerRec; + + template<> + struct InvokerRec + { + static void invoke68K(void *ptr) + { + CALL_EMULATOR(US_TO_SYN68K(ptr)); + } + }; + + template + struct InvokerRec + { + static void invoke68K(void *ptr, Arg arg, Args... args) + { + ArgConv::set(arg); + InvokerRec::invoke68K(ptr, args...); + ArgConv::afterCall(arg); + } + }; + + template + struct Invoker> + { + static Ret invoke68K(void *ptr, Args... args) + { + InvokerRec::invoke68K(ptr, args...); + return RetConv(); + } + }; + + template + struct Invoker> + { + static void invoke68K(void *ptr, Args... args) + { + InvokerRec::invoke68K(ptr, args...); + } + }; + + + template + struct Invoker> + { + static Ret invoke68K(void *ptr, Args... args) + { + return (Ret)CToPascalCall(ptr, ctop(), args...); + } + }; + + template + struct Invoker + { + static Ret invoke68K(void *ptr, Args... args) + { + return (Ret)CToPascalCall(ptr, ctop(), args...); + } + }; + + template<> + struct Invoker + { + static syn68k_addr_t invoke68K(void *ptr, syn68k_addr_t, void *) + { + CALL_EMULATOR(US_TO_SYN68K(ptr)); + return POPADDR(); // ### + } + }; + +} struct OpaqueUntyped68KProc; typedef OpaqueUntyped68KProc* ProcPtr; -template -struct UPP; +template +struct UPP {}; -template -struct UPP +template +struct UPP { void *ptr; @@ -74,7 +234,8 @@ struct UPP { } - explicit operator void *() const { return ptr; } + template + explicit operator T *() const { return (T*)ptr; } explicit operator ProcPtr() const { return (ProcPtr)ptr; } explicit operator bool() const { return ptr != nullptr; } @@ -83,7 +244,7 @@ struct UPP Ret operator()(Args... args) const { - return (Ret)CToPascalCall(ptr, ctop(), args...); + return callto68K::Invoker::invoke68K(ptr, args...); } }; @@ -145,7 +306,7 @@ class WrappedFunction : public internal::Deferred return (*fptr)(args...); } - UPP operator&() const + UPP operator&() const { return guestFP; } @@ -153,27 +314,10 @@ class WrappedFunction : public internal::Deferred virtual void init() override; WrappedFunction(const char* name); -protected: - UPP guestFP; - const char *name; -}; -template -class WrappedFunction : public internal::DeferredInit -{ -public: - ProcPtr operator&() const - { - return guestFP; - } - - virtual void init() override; - - WrappedFunction(const char* name); - - bool isPatched() const { return false; } + using UPPType = UPP; protected: - ProcPtr guestFP; + UPPType guestFP; const char *name; }; @@ -184,13 +328,32 @@ template : public WrappedFunction { public: - Ret operator()(Args... args) const { return fptr(args...); } + using UPPType = typename WrappedFunction::UPPType; + + Ret operator()(Args... args) const + { + if(isPatched()) + return invokeViaTrapTable(args...); + else + return fptr(args...); + } virtual void init() override; TrapFunction(const char* name) : WrappedFunction(name) {} - bool isPatched() const { return false; } + bool isPatched() const { return tableEntry() != originalFunction; } + Ret invokeViaTrapTable(Args...) const; +private: + syn68k_addr_t originalFunction; + + syn68k_addr_t& tableEntry() const + { + if(trapno & TOOLBIT) + return tooltraptable[trapno & 0x3FF]; + else + return ostraptable[trapno & 0xFF]; + } }; template diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index e3da664f..3590641f 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -503,14 +503,14 @@ GUEST guest_cast(GuestWrapper p) } -template -struct GuestWrapperBase> +template +struct GuestWrapperBase> { private: HiddenValue p; public: - using WrappedType = UPP; + using WrappedType = UPP; using RawGuestType = uint32_t; WrappedType get() const @@ -549,14 +549,14 @@ struct GuestWrapperBase> } }; -template -GUEST> RM(UPP p) +template +GUEST> RM(UPP p) { - return GUEST>::fromHost(p); + return GUEST>::fromHost(p); } -template -UPP MR(GuestWrapper> p) +template +UPP MR(GuestWrapper> p) { return p.get(); } diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 3ee1e4e8..93d606f9 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -22,7 +22,6 @@ using namespace Executor; static void findcell(GUEST *, ListHandle); static void setselectnilflag(BOOLEAN setit, Cell cell, ListHandle list, BOOLEAN hiliteempty); -static inline BOOLEAN ROMlib_CALLCLICK(ListClickLoopUPP); static void scrollbyvalues(ListHandle); static void rect2value(Rect *in, Rect *butnotin, INTEGER value, ListHandle list, BOOLEAN hiliteempty); From cad76bcee64ceb1c861318463110c240c73a7d93 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 2 Feb 2018 23:51:57 +0100 Subject: [PATCH 72/88] remove rsys/types.h and other header-file cleanup --- src/AE_hdlr.cpp | 2 +- src/CMakeLists.txt | 1 - src/blockdev.cpp | 8 ++-- src/config/arch/i386/i386.cpp | 2 +- src/config/arch/i386/i386.h | 2 +- src/config/front-ends/sdl/map.h | 2 +- src/config/front-ends/sdl/sdlscrap.cpp | 14 +++---- src/config/front-ends/sdl/sdlwin.cpp | 6 +-- src/config/front-ends/win32/windib.c | 2 +- src/config/front-ends/win32/windriver.c | 2 +- src/config/front-ends/x/x.cpp | 20 +++++----- src/config/os/cygwin32/win_queue.c | 2 +- src/config/os/cygwin32/win_queue.h | 2 +- src/config/os/cygwin32/win_serial.c | 6 +-- src/config/os/win32/win_serial.cpp | 6 +-- src/ctlPopup.cpp | 8 ++-- src/dcache.cpp | 20 +++++----- src/dcconvert.cpp | 14 +++---- src/dcmaketables.cpp | 16 ++++---- src/dump.cpp | 6 +-- src/emutrap.cpp | 2 +- src/float4.cpp | 4 +- src/floatnext.cpp | 14 +++---- src/geninterfacelib.tmpl | 2 +- src/include/AppleEvents.h | 10 ++--- src/include/EditionMgr.h | 6 +-- src/include/ExMacTypes.h | 12 +----- src/include/QuickTime.h | 2 +- src/include/SANE.h | 2 +- src/include/ScriptMgr.h | 4 +- src/include/rsys/blockinterrupts.h | 2 +- src/include/rsys/cfm.h | 12 +++--- src/include/rsys/common.h | 4 -- src/include/rsys/cquick.h | 4 +- src/include/rsys/ctl.h | 2 +- src/include/rsys/depthconv.h | 16 ++++---- src/include/rsys/dial.h | 4 +- src/include/rsys/macros.h | 10 ++--- src/include/rsys/mactype.h | 11 +++++- src/include/rsys/mixed_mode.h | 12 +++--- src/include/rsys/mman_private.h | 12 +++--- src/include/rsys/osevent.h | 2 +- src/include/rsys/pef.h | 12 +++--- src/include/rsys/resource.h | 4 +- src/include/rsys/soundopts.h | 2 +- src/include/rsys/trapglue.h | 7 ---- src/include/rsys/types.h | 52 ------------------------- src/include/rsys/vdriver.h | 4 +- src/include/rsys/xdata.h | 2 +- src/interfacelib.cpp | 18 ++++----- src/launch.cpp | 6 +-- src/makerawblt.pl | 6 +-- src/osevent.cpp | 8 ++-- src/pat-blitters.tmpl | 8 ++-- src/pef_hash.cpp | 2 +- src/prLowLevel.cpp | 2 +- src/qColorMgr.cpp | 8 ++-- src/qCursor.cpp | 4 +- src/qIMIV.cpp | 10 ++--- src/qIMV.cpp | 6 +-- src/qIMVxfer.cpp | 8 ++-- src/qPicstuff.cpp | 10 ++--- src/qPict2.cpp | 4 +- src/qPixMapConv.cpp | 6 +-- src/qScale.cpp | 8 ++-- src/qStdBits.cpp | 20 +++++----- src/qStdRgn.cpp | 6 +-- src/qt.cpp | 2 +- src/rawpatblt.cpp | 4 +- src/rawsrcblt.cpp | 6 +-- src/rgbutil.cpp | 4 +- src/scrap.cpp | 20 +++++----- src/screen-dump.cpp | 2 +- src/script.cpp | 2 +- src/segment.cpp | 4 +- src/sound.cpp | 10 ++--- src/toolevent.cpp | 2 +- src/toolutil.cpp | 8 ++-- src/xdata.cpp | 8 ++-- src/xdblt.cpp | 14 +++---- 80 files changed, 266 insertions(+), 333 deletions(-) delete mode 100644 src/include/rsys/types.h diff --git a/src/AE_hdlr.cpp b/src/AE_hdlr.cpp index a9824208..8e95169d 100644 --- a/src/AE_hdlr.cpp +++ b/src/AE_hdlr.cpp @@ -134,7 +134,7 @@ hdlr_table_elt(AE_hdlr_table_h table, } OSErr Executor::C__AE_hdlr_table_alloc(int32_t unknown_1, int32_t unknown_2, - int32_t unknown_3, int8 unknown_p, + int32_t unknown_3, int8_t unknown_p, GUEST *table_return) { AE_hdlr_table_h table; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7c60da7e..99369d50 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -352,7 +352,6 @@ set(include_sources hintemplate.h include/rsys/toolutil.h include/rsys/trapglue.h include/rsys/trapname.h - include/rsys/types.h include/rsys/uniquefile.h include/rsys/vbl.h include/rsys/vdriver.h diff --git a/src/blockdev.cpp b/src/blockdev.cpp index 6b255d53..4128387d 100644 --- a/src/blockdev.cpp +++ b/src/blockdev.cpp @@ -81,9 +81,9 @@ bool Executor::blockdev_read(blockdev_t *b, uint32_t offset, void *buf, uint32_t for(n = 0; n < num_bytes;) { - uint8 *p; + uint8_t *p; - p = (uint8 *)buf + n; + p = (uint8_t *)buf + n; /* First try to read from the cache. */ if(dcache_read(b->dcache_tag, p, offset + n, b->block_size)) @@ -144,9 +144,9 @@ bool Executor::blockdev_write(blockdev_t *b, uint32_t offset, const void *buf, for(n = 0; n < num_bytes;) { uint32_t bytes_to_write; - uint8 *p; + uint8_t *p; - p = (uint8 *)buf + n; + p = (uint8_t *)buf + n; /* Seek if necessary. */ if(offset + n != b->fpos) diff --git a/src/config/arch/i386/i386.cpp b/src/config/arch/i386/i386.cpp index 2eae6cb9..18b1f648 100644 --- a/src/config/arch/i386/i386.cpp +++ b/src/config/arch/i386/i386.cpp @@ -13,7 +13,7 @@ bool Executor::arch_init(void) { #if !defined(ALWAYS_ON_I486) uint32_t scratch1, scratch2; - uint8 i486_p; + uint8_t i486_p; /* Adapted from _Assembly Language: For Real Programmers Only_ p. 561. * This code determines if we are on an i486 or higher. We care because diff --git a/src/config/arch/i386/i386.h b/src/config/arch/i386/i386.h index caa1c39a..ef3740cf 100644 --- a/src/config/arch/i386/i386.h +++ b/src/config/arch/i386/i386.h @@ -22,7 +22,7 @@ #define ALWAYS_ON_I486 #endif -#include "rsys/types.h" +#include #include "i386_djgpp_version.h" #define SWAP16_FUNC_DEFN \ diff --git a/src/config/front-ends/sdl/map.h b/src/config/front-ends/sdl/map.h index a19846f8..f59d114d 100644 --- a/src/config/front-ends/sdl/map.h +++ b/src/config/front-ends/sdl/map.h @@ -1,4 +1,4 @@ #if defined(CYGWIN32) -extern void ROMlib_try_to_map(uint8 *first_byte_unavailable); +extern void ROMlib_try_to_map(uint8_t *first_byte_unavailable); #endif diff --git a/src/config/front-ends/sdl/sdlscrap.cpp b/src/config/front-ends/sdl/sdlscrap.cpp index 0726054b..7dceeb36 100644 --- a/src/config/front-ends/sdl/sdlscrap.cpp +++ b/src/config/front-ends/sdl/sdlscrap.cpp @@ -163,17 +163,17 @@ surface_from_dib(void *lp) typedef struct { - uint8 zero PACKED; - uint8 red PACKED; - uint8 green PACKED; - uint8 blue PACKED; + uint8_t zero PACKED; + uint8_t red PACKED; + uint8_t green PACKED; + uint8_t blue PACKED; } sdl_pixel; typedef struct { - uint8 blue PACKED; - uint8 red PACKED; - uint8 green PACKED; + uint8_t blue PACKED; + uint8_t red PACKED; + uint8_t green PACKED; } dib_pixel; int pixels_per_line; bool inverted_p; diff --git a/src/config/front-ends/sdl/sdlwin.cpp b/src/config/front-ends/sdl/sdlwin.cpp index 2e921bce..48f00a51 100644 --- a/src/config/front-ends/sdl/sdlwin.cpp +++ b/src/config/front-ends/sdl/sdlwin.cpp @@ -29,7 +29,7 @@ static SDL_Surface *screen; namespace Executor { /* These variables are required by the vdriver interface. */ -uint8 *vdriver_fbuf; +uint8_t *vdriver_fbuf; int vdriver_row_bytes; int vdriver_width = 0; int vdriver_height = 0; @@ -170,12 +170,12 @@ bool Executor::vdriver_set_mode(int width, int height, int bpp, bool grayscale_p /* WARNING! This results in surface memory that is unsafe to access! */ if(SDL_LockSurface(screen) < 0) return (false); - vdriver_fbuf = (uint8 *)screen->pixels; + vdriver_fbuf = (uint8_t *)screen->pixels; SDL_UnlockSurface(screen); fprintf(stderr, "Warning: Executor performing unsafe video access\n"); } else - vdriver_fbuf = (uint8 *)screen->pixels; + vdriver_fbuf = (uint8_t *)screen->pixels; sdl_syswm_init(); diff --git a/src/config/front-ends/win32/windib.c b/src/config/front-ends/win32/windib.c index 61011530..7beed189 100644 --- a/src/config/front-ends/win32/windib.c +++ b/src/config/front-ends/win32/windib.c @@ -150,7 +150,7 @@ bool vdriver_acceptable_mode_p(int width, int height, int bpp, bool vdriver_set_mode(int width, int height, int bpp, bool grayscale_p) { HDC hdc; - uint8 *dummy_fbuf; + uint8_t *dummy_fbuf; if(!vdriver_acceptable_mode_p(width, height, bpp, grayscale_p, false)) return (false); diff --git a/src/config/front-ends/win32/windriver.c b/src/config/front-ends/win32/windriver.c index ccfbb7e4..a4a9e3d6 100644 --- a/src/config/front-ends/win32/windriver.c +++ b/src/config/front-ends/win32/windriver.c @@ -14,7 +14,7 @@ HWND Win_Window; /* Variables required by the vdriver interface */ -uint8 *vdriver_fbuf = NULL; +uint8_t *vdriver_fbuf = NULL; int vdriver_row_bytes; int vdriver_width = VDRIVER_DEFAULT_SCREEN_WIDTH; int vdriver_height = VDRIVER_DEFAULT_SCREEN_HEIGHT; diff --git a/src/config/front-ends/x/x.cpp b/src/config/front-ends/x/x.cpp index 2e01cf21..abae96e5 100644 --- a/src/config/front-ends/x/x.cpp +++ b/src/config/front-ends/x/x.cpp @@ -73,7 +73,7 @@ ROMlib_set_use_scancodes(bool val) namespace Executor { -uint8 *vdriver_fbuf; +uint8_t *vdriver_fbuf; int vdriver_row_bytes; @@ -405,7 +405,7 @@ void alloc_x_image(int bpp, int width, int height, #define R9 0x88 #define NOTKEY 0x89 -static uint8 latin_one_table_data[] = { +static uint8_t latin_one_table_data[] = { MKV_PRINT_SCREEN, NOTKEY, /* 1 */ NOTKEY, /* 2 */ @@ -531,7 +531,7 @@ static uint8 latin_one_table_data[] = { MKV_z, /* z */ }; -static uint8 misc_table_data[] = { +static uint8_t misc_table_data[] = { MKV_BACKSPACE, /* 8 back space */ MKV_TAB, /* 9 tab */ LINEFD, /* 10 line feed */ @@ -791,10 +791,10 @@ static uint8 misc_table_data[] = { typedef struct key_table_data { - uint8 high_byte; + uint8_t high_byte; int min; int size; - uint8 *data; + uint8_t *data; } key_table_t; key_table_t key_tables[] = { @@ -814,7 +814,7 @@ x_keysym_to_mac_keywhat(unsigned int keysym, int16_t button_state, unsigned char *virt_out) { key_table_t *table; - uint8 keysym_high_byte, keysym_low_byte; + uint8_t keysym_high_byte, keysym_low_byte; int16_t keywhat; int i; @@ -859,11 +859,11 @@ x_keysym_to_mac_keywhat(unsigned int keysym, int16_t button_state, } static bool -keydown(uint8 key) +keydown(uint8_t key) { bool retval; int i; - uint8 bit; + uint8_t bit; retval = false; @@ -1052,7 +1052,7 @@ post_pending_x_events(syn68k_addr_t interrupt_addr, void *unused) modifier = 0; if(use_scan_codes) { - uint8 keycode; + uint8_t keycode; keycode = evt.xkey.keycode; if(keycode < NELEM(x_keycode_to_mac_virt)) @@ -1992,7 +1992,7 @@ void init_x_cmap(void) } static ColorSpec cmap[256]; -static uint8 depth_table_space[DEPTHCONV_MAX_TABLE_SIZE]; +static uint8_t depth_table_space[DEPTHCONV_MAX_TABLE_SIZE]; void Executor::vdriver_get_colors(int first_color, int num_colors, ColorSpec *colors) diff --git a/src/config/os/cygwin32/win_queue.c b/src/config/os/cygwin32/win_queue.c index 4237797d..e5f23100 100644 --- a/src/config/os/cygwin32/win_queue.c +++ b/src/config/os/cygwin32/win_queue.c @@ -11,7 +11,7 @@ static bool timer_driven_events_p = true; PUBLIC void -win_queue(volatile uint8 *pendingp) +win_queue(volatile uint8_t *pendingp) { if(timer_driven_events_p) *pendingp = true; diff --git a/src/config/os/cygwin32/win_queue.h b/src/config/os/cygwin32/win_queue.h index 75743c4f..9603542f 100644 --- a/src/config/os/cygwin32/win_queue.h +++ b/src/config/os/cygwin32/win_queue.h @@ -1,7 +1,7 @@ #if !defined(__WIN_QUEUE_H__) #define __WIN_QUEUE_H__ -extern void win_queue(volatile uint8 *pendingp); +extern void win_queue(volatile uint8_t *pendingp); extern void set_timer_driven_events(bool value); #endif diff --git a/src/config/os/cygwin32/win_serial.c b/src/config/os/cygwin32/win_serial.c index 55659cea..c6083928 100644 --- a/src/config/os/cygwin32/win_serial.c +++ b/src/config/os/cygwin32/win_serial.c @@ -46,7 +46,7 @@ enum static struct { int val; /* 0 = COM1, 1 = COM2 ... */ - uint8 key; + uint8_t key; } serial_port_map[] = { { 0, 0 }, { 1, 1 }, @@ -267,7 +267,7 @@ enum #define COM_TEMPLATE "COM1" static HANDLE -port_to_handle(uint8 port) +port_to_handle(uint8_t port) { HANDLE retval; int com_minus_1; @@ -315,7 +315,7 @@ port_to_handle(uint8 port) */ static int -dos_serial_bios_init_port(uint8 port, +dos_serial_bios_init_port(uint8_t port, uint32_t baud, uint32_t parity, uint32_t stop_bits, diff --git a/src/config/os/win32/win_serial.cpp b/src/config/os/win32/win_serial.cpp index 3d1c5ef7..210053d3 100644 --- a/src/config/os/win32/win_serial.cpp +++ b/src/config/os/win32/win_serial.cpp @@ -43,7 +43,7 @@ int LOOKUP_KEY(ValType *valp, KeyType thekey, const MapType (&map)[n]) static struct { int val; /* 0 = COM1, 1 = COM2 ... */ - uint8 key; + uint8_t key; } serial_port_map[] = { { 0, 0 }, { 1, 1 }, @@ -264,7 +264,7 @@ enum #define COM_TEMPLATE "COM1" static HANDLE -port_to_handle(uint8 port) +port_to_handle(uint8_t port) { HANDLE retval; int com_minus_1; @@ -312,7 +312,7 @@ port_to_handle(uint8 port) */ static int -dos_serial_bios_init_port(uint8 port, +dos_serial_bios_init_port(uint8_t port, uint32_t baud, uint32_t parity, uint32_t stop_bits, diff --git a/src/ctlPopup.cpp b/src/ctlPopup.cpp index e4600909..045cf38b 100644 --- a/src/ctlPopup.cpp +++ b/src/ctlPopup.cpp @@ -338,7 +338,7 @@ draw(ControlHandle ctl, draw_state_t draw_state, appropriate */ { int title_left, title_right; - uint8 title_length; + uint8_t title_length; set_text_face(true, flags, item_info); @@ -353,7 +353,7 @@ draw(ControlHandle ctl, draw_state_t draw_state, title_right -= StringWidth((StringPtr)ellipsis); - title_length = *(uint8 *)item_title; + title_length = *(uint8_t *)item_title; for(i = 1, width = 0; i <= title_length; i++) { width += CharWidth(item_title[i]); @@ -368,11 +368,11 @@ draw(ControlHandle ctl, draw_state_t draw_state, MoveTo(title_right, baseline); DrawString((StringPtr)ellipsis); - *(uint8 *)item_title = i; + *(uint8_t *)item_title = i; MoveTo(item_left + icon_info.width, baseline); DrawString(item_title); - *(uint8 *)item_title = title_length; + *(uint8_t *)item_title = title_length; } else { diff --git a/src/dcache.cpp b/src/dcache.cpp index 635ab563..c363e2a0 100644 --- a/src/dcache.cpp +++ b/src/dcache.cpp @@ -14,7 +14,7 @@ typedef struct _dcache_entry_t uint32_t fd; /* tag */ uint32_t offset; /* block's offset */ uint32_t when_last_accessed; /* the smaller the older; 0 means invalid */ - uint8 data[DCACHE_BLOCK_SIZE]; /* actual cached data */ + uint8_t data[DCACHE_BLOCK_SIZE]; /* actual cached data */ write_callback_funcp_t dirty_callback; /* callback to write dirty data (only set if the data is indeed dirty) */ @@ -121,7 +121,7 @@ fill_run(dcache_entry_t *dps[], int nelems, int *indexp, int offset_increment, } static void -copy_buffer(uint8 **bufpp, dcache_entry_t *d) +copy_buffer(uint8_t **bufpp, dcache_entry_t *d) { memcpy(*bufpp, d->data, sizeof d->data); *bufpp += DCACHE_BLOCK_SIZE; @@ -129,7 +129,7 @@ copy_buffer(uint8 **bufpp, dcache_entry_t *d) } static void -coalesce_writes(uint32_t fd, uint8 **bufpp, uint32_t *lengthp, uint32_t *offsetp) +coalesce_writes(uint32_t fd, uint8_t **bufpp, uint32_t *lengthp, uint32_t *offsetp) { dcache_entry_t *backwards_dps[MAX_BACKWARDS]; int backwards_index; @@ -148,8 +148,8 @@ coalesce_writes(uint32_t fd, uint8 **bufpp, uint32_t *lengthp, uint32_t *offsetp if(backwards_index > 0 || forwards_index > 0) { int n_bufs; - uint8 *bufp; - uint8 *outbufp; + uint8_t *bufp; + uint8_t *outbufp; uint32_t length; dcache_entry_t *d; int i; @@ -158,7 +158,7 @@ coalesce_writes(uint32_t fd, uint8 **bufpp, uint32_t *lengthp, uint32_t *offsetp /* allocate space for run */ length = n_bufs * DCACHE_BLOCK_SIZE; - bufp = (uint8 *)malloc(length); + bufp = (uint8_t *)malloc(length); outbufp = bufp; for(i = backwards_index - 1; i >= 0; --i) @@ -186,7 +186,7 @@ dcache_flush_entry(dcache_entry_t *dp) retval = true; else { - uint8 *bufp; + uint8_t *bufp; uint32_t length; uint32_t offset; write_callback_funcp_t dirty_callback; @@ -272,7 +272,7 @@ static dcache_entry_t * read_cylinder(uint32_t fd, uint32_t offset, read_callback_funcp_t read_callback) { uint32_t nread; - uint8 buf[SECTORS_PER_FLOPPY_CYLINDER * 512], *bufp; + uint8_t buf[SECTORS_PER_FLOPPY_CYLINDER * 512], *bufp; dcache_entry_t *retval; uint32_t new_offset; @@ -360,7 +360,7 @@ Executor::dcache_read(uint32_t fd, void *buf, uint32_t offset, uint32_t count, uint32_t n_to_copy; n_to_copy = MIN((uint32_t)DCACHE_BLOCK_SIZE, count - n); - memcpy((uint8 *)buf + n, d->data, n_to_copy); + memcpy((uint8_t *)buf + n, d->data, n_to_copy); retval += n_to_copy; } offset += DCACHE_BLOCK_SIZE; @@ -401,7 +401,7 @@ Executor::dcache_write(uint32_t fd, const void *buf, uint32_t offset, uint32_t c } } d->dirty_callback = dirty_callback; - memcpy(d->data, (const uint8 *)buf + n, DCACHE_BLOCK_SIZE); + memcpy(d->data, (const uint8_t *)buf + n, DCACHE_BLOCK_SIZE); d->when_last_accessed = now; retval += DCACHE_BLOCK_SIZE; } diff --git a/src/dcconvert.cpp b/src/dcconvert.cpp index c05ca306..9855cdfc 100644 --- a/src/dcconvert.cpp +++ b/src/dcconvert.cpp @@ -41,8 +41,8 @@ namespace Executor compute_add, table_type) \ void \ func_name(const void *raw_table, \ - const uint8 *src_base, int src_row_bytes, \ - uint8 *dst_base, int dst_row_bytes, \ + const uint8_t *src_base, int src_row_bytes, \ + uint8_t *dst_base, int dst_row_bytes, \ int top, int left, int bottom, int right) \ { \ int byte_width, height; \ @@ -119,8 +119,8 @@ namespace Executor */ #define INP_OUTP_DECL \ - register const uint8 *inp asm("%si"); \ - register uint8 *outp asm("%di") + register const uint8_t *inp asm("%si"); \ + register uint8_t *outp asm("%di") /* This can do unaligned movsl's, but it's not clear who would ever * call this anyway, so I'm not going to worry about it. @@ -452,8 +452,8 @@ namespace Executor #if !defined(INP_OUTP_DECL) #define INP_OUTP_DECL \ - const uint8 *inp; \ - uint8 *outp + const uint8_t *inp; \ + uint8_t *outp #endif /* !defined (INP_OUTP_DECL) */ #if !defined(CONVERT_COPY) @@ -603,7 +603,7 @@ namespace Executor do \ { \ int w, shift; \ - uint8 v; \ + uint8_t v; \ \ shift = 8 - (out_bpp); \ v = 0; \ diff --git a/src/dcmaketables.cpp b/src/dcmaketables.cpp index 7e76e674..1c9599bd 100644 --- a/src/dcmaketables.cpp +++ b/src/dcmaketables.cpp @@ -33,7 +33,7 @@ namespace Executor * You can also use the DEPTHCONV_MAX_TABLE_SIZE macro, which is * guaranteed to always be "big enough": * - * static uint8 table[DEPTHCONV_MAX_TABLE_SIZE]; + * static uint8_t table[DEPTHCONV_MAX_TABLE_SIZE]; * * depthconv_make_ind_to_ind_table (table, 1, 8, &size, cspec_array); * @@ -194,25 +194,25 @@ DEPTH_INCREASING_BY_FACTOR_OF_2(8, 16) } \ } -DEPTH_NONDECREASING(1, 1, uint8) +DEPTH_NONDECREASING(1, 1, uint8_t) /* 1 -> 2 handled above by `DEPTH_INCREASING_BY_FACTOR_OF_2'. */ DEPTH_NONDECREASING(1, 4, uint32_t) DEPTH_NONDECREASING(1, 8, uint32_t) DEPTH_NONDECREASING(1, 16, uint32_t) DEPTH_NONDECREASING(1, 32, uint32_t) -DEPTH_NONDECREASING(2, 2, uint8) +DEPTH_NONDECREASING(2, 2, uint8_t) /* 2 -> 4 handled above by `DEPTH_INCREASING_BY_FACTOR_OF_2'. */ DEPTH_NONDECREASING(2, 8, uint32_t) DEPTH_NONDECREASING(2, 16, uint32_t) DEPTH_NONDECREASING(2, 32, uint32_t) -DEPTH_NONDECREASING(4, 4, uint8) +DEPTH_NONDECREASING(4, 4, uint8_t) /* 4 -> 8 handled above by `DEPTH_INCREASING_BY_FACTOR_OF_2'. */ DEPTH_NONDECREASING(4, 16, uint32_t) DEPTH_NONDECREASING(4, 32, uint32_t) -DEPTH_NONDECREASING(8, 8, uint8) +DEPTH_NONDECREASING(8, 8, uint8_t) /* 8 -> 16 handled above by `DEPTH_INCREASING_BY_FACTOR_OF_2'. */ DEPTH_NONDECREASING(8, 32, uint32_t) @@ -221,13 +221,13 @@ DEPTH_NONDECREASING(8, 32, uint32_t) maketable_##bpp1##_##bpp2(void *d, const uint32_t *map) \ { \ int c; \ - uint8 *dst; \ + uint8_t *dst; \ \ - for(c = 0, dst = (uint8 *)d; c < 256; c++) \ + for(c = 0, dst = (uint8_t *)d; c < 256; c++) \ { \ long offset; \ int r, l; \ - uint8 new1; \ + uint8_t new1; \ \ /* Loop over all input pixels and create the lookup table entry. */ \ for(r = 8 - bpp1, l = (8 * bpp2 / bpp1) - bpp2, new1 = 0; \ diff --git a/src/dump.cpp b/src/dump.cpp index fe6bf047..e0020c23 100644 --- a/src/dump.cpp +++ b/src/dump.cpp @@ -1076,15 +1076,15 @@ void dump_control(ControlHandle x) void dump_memlocs(uint32_t to_look_for, int size, const void *start_addr, const void *end_addr) { - const uint8 *ucp; + const uint8_t *ucp; const uint16_t *usp; const uint32_t *ulp; switch(size) { case 1: - for(ucp = (const uint8 *)start_addr; ucp < (uint8 *)end_addr; ++ucp) - if(*ucp == (uint8)to_look_for) + for(ucp = (const uint8_t *)start_addr; ucp < (uint8_t *)end_addr; ++ucp) + if(*ucp == (uint8_t)to_look_for) iprintf((o_fp, "%p\n", ucp)); break; case 2: diff --git a/src/emutrap.cpp b/src/emutrap.cpp index 477a63d4..1673e2e7 100644 --- a/src/emutrap.cpp +++ b/src/emutrap.cpp @@ -312,7 +312,7 @@ CToRoutineDescriptorCall(const RoutineDescriptor *p, unsigned long long magic, { case 1: { - arg = (uint8)va_arg(ap, unsigned long); + arg = (uint8_t)va_arg(ap, unsigned long); arg = CB(arg); procinfo |= STACK_ROUTINE_PARAMETER(n_args, kOneByteCode); } diff --git a/src/float4.cpp b/src/float4.cpp index 3a728c37..edbea4e1 100644 --- a/src/float4.cpp +++ b/src/float4.cpp @@ -178,7 +178,7 @@ ROMlib_compare_fcw_fsw(uint32_t fcwfsw, const char *func, int line) * exception. Eventually this needs to be changed so we *do* get * a real exception, and signal appropriately. */ -static uint8 halts_enabled; +static uint8_t halts_enabled; void Executor::C_ROMlib_Fsetenv(INTEGER *dp, INTEGER sel) { @@ -1093,7 +1093,7 @@ void Executor::C_ROMlib_Fdec2x(Decimal *sp, void *dp, unsigned short sel) warning_floating_point("Fdec2x(%s%.*s * 10**%d) == " IEEE_T_FORMAT "", sp->sgn ? "-" : "", - (uint8)sp->sig[0], &sp->sig[1], + (uint8_t)sp->sig[0], &sp->sig[1], CW(sp->exp), (IEEE_T_PRINT_CAST)in); } diff --git a/src/floatnext.cpp b/src/floatnext.cpp index 5ce42098..fadca84d 100644 --- a/src/floatnext.cpp +++ b/src/floatnext.cpp @@ -11,15 +11,15 @@ using namespace Executor; /* Subtracts one from the given multi-byte big endian unsigned number. */ static void -mp_decrement_big_endian(uint8 *bytes, int num_bytes) +mp_decrement_big_endian(uint8_t *bytes, int num_bytes) { bool borrow_p; - uint8 *b; + uint8_t *b; borrow_p = true; for(b = bytes + num_bytes; borrow_p && b > bytes;) { - const uint8 v = *--b; + const uint8_t v = *--b; borrow_p = (v == 0); *b = v - 1; } @@ -27,16 +27,16 @@ mp_decrement_big_endian(uint8 *bytes, int num_bytes) /* Adds one to the given multi-byte big endian unsigned number. */ static void -mp_increment_big_endian(uint8 *bytes, int num_bytes) +mp_increment_big_endian(uint8_t *bytes, int num_bytes) { bool carry_p; - uint8 *b; + uint8_t *b; carry_p = true; for(b = bytes + num_bytes; carry_p && b > bytes;) { /* Equivalent to "carry_p = !++*--b;" Heh. */ - const uint8 v = *--b + 1; + const uint8_t v = *--b + 1; carry_p = (v == 0); *b = v; } @@ -51,7 +51,7 @@ mp_increment_big_endian(uint8 *bytes, int num_bytes) * Note that most SANE traps replace the dst operand with the * result. This one replaces the src operand (really!) */ -void Executor::C_ROMlib_FnextX(uint8 *x, uint8 *y, unsigned short sel) +void Executor::C_ROMlib_FnextX(uint8_t *x, uint8_t *y, unsigned short sel) { CCRElement saved_ccc, saved_ccn, saved_ccv, saved_ccnz, saved_ccx; INTEGER x_class, y_class, x_class_swapped, y_class_swapped; diff --git a/src/geninterfacelib.tmpl b/src/geninterfacelib.tmpl index 98a6fb23..02f39231 100644 --- a/src/geninterfacelib.tmpl +++ b/src/geninterfacelib.tmpl @@ -322,7 +322,7 @@ arg_type (arg_t t) retval = "void"; break; case one_byte_arg: - retval = "uint8"; + retval = "uint8_t"; break; case two_byte_arg: retval = "uint16_t"; diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index f0f1a452..443cbbf4 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -87,9 +87,9 @@ enum typedef int16_t AESendPriority; -typedef uint8 AEEventSource; -typedef uint8 AEInteractionAllowed; -typedef uint8 AEArrayType; +typedef uint8_t AEEventSource; +typedef uint8_t AEInteractionAllowed; +typedef uint8_t AEArrayType; enum { @@ -118,7 +118,7 @@ enum typedef union AEArrayData { GUEST AEDataArray[1]; - int8 AEPackedArray[1]; + int8_t AEPackedArray[1]; GUEST AEHandleArray[1]; AEDesc AEDescArray[1]; AEKeyDesc AEKeyDescArray[1]; @@ -221,7 +221,7 @@ typedef AE_info_t *AE_info_ptr; DISPATCHER_TRAP(Pack8, 0xA816, D0W); // "internal". TODO: verify if they really exist as entry points. -extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8, +extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8_t, GUEST *); PASCAL_SUBTRAP(_AE_hdlr_table_alloc, 0xA816, 0x092E, Pack8); extern OSErr C__AE_hdlr_delete(AE_hdlr_table_h, int32_t, diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index ca7c5ed0..2c235bb2 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -85,7 +85,7 @@ struct NewPublisherReply GUEST canceled; GUEST replacing; GUEST usePart; - GUEST _filler; + GUEST _filler; GUEST preview; GUEST previewFormat; GUEST container; @@ -117,7 +117,7 @@ struct SectionOptionsReply typedef struct SectionOptionsReply SectionOptionsReply; typedef SectionOptionsReply *SectionOptionsReplyPtr; -typedef uint8 EditionOpenerVerb; +typedef uint8_t EditionOpenerVerb; enum { @@ -144,7 +144,7 @@ struct EditionOpenerParamBlock typedef struct EditionOpenerParamBlock EditionOpenerParamBlock; typedef EditionOpenerParamBlock *EditionOpenerParamBlockPtr; -typedef uint8 FormatIOVerb; +typedef uint8_t FormatIOVerb; enum { diff --git a/src/include/ExMacTypes.h b/src/include/ExMacTypes.h index 368b6e2d..40686ed4 100644 --- a/src/include/ExMacTypes.h +++ b/src/include/ExMacTypes.h @@ -13,17 +13,10 @@ namespace Executor { -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef int8_t SignedByte; -#endif typedef uint8_t Byte; -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef int8_t *Ptr; -#endif - -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef GUEST *Handle; -#endif typedef int8_t Boolean; @@ -32,16 +25,13 @@ typedef Byte Str31[32]; typedef Byte Str32[33]; typedef Byte Str63[64]; typedef Byte Str255[256]; -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef Byte *StringPtr; -#endif typedef GUEST *StringHandle; -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef LONGINT Fixed, Fract; -#endif + /* SmallFract represnts values between 0 and 65535 */ typedef unsigned short SmallFract; diff --git a/src/include/QuickTime.h b/src/include/QuickTime.h index 245f4d81..fce70d74 100644 --- a/src/include/QuickTime.h +++ b/src/include/QuickTime.h @@ -74,7 +74,7 @@ PASCAL_SUBTRAP(NewMovieController, 0xAAAA, 0x018A, QuickTime); extern void C_DisposeMovieController(ComponentInstance cntrller); PASCAL_SUBTRAP(DisposeMovieController, 0xAAAA, 0x018B, QuickTime); extern OSErr C_OpenMovieFile(const FSSpec *filespecp, - INTEGER *refnump, uint8 perm); + INTEGER *refnump, uint8_t perm); PASCAL_SUBTRAP(OpenMovieFile, 0xAAAA, 0x0192, QuickTime); } #endif diff --git a/src/include/SANE.h b/src/include/SANE.h index 0fbc1aa4..3e68f54a 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -302,7 +302,7 @@ PASCAL_SUBTRAP(ROMlib_Fsethv, 0xA9EB, 0x05, Pack4); extern void C_ROMlib_Fgethv(LONGINT *hvp, unsigned short sel); PASCAL_SUBTRAP(ROMlib_Fgethv, 0xA9EB, 0x07, Pack4); -extern void C_ROMlib_FnextX(uint8 *x, uint8 *y, +extern void C_ROMlib_FnextX(uint8_t *x, uint8_t *y, unsigned short sel); PASCAL_SUBTRAP(ROMlib_FnextX, 0xA9EB, 0x13, Pack4); } diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index 614ab736..5dcf7fd7 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -135,7 +135,7 @@ enum TruncErr = (-1), }; -typedef uint8 StyledLineBreakCode; +typedef uint8_t StyledLineBreakCode; typedef struct DateCacheRec { @@ -165,7 +165,7 @@ typedef struct LongDateRec typedef INTEGER TruncCode; typedef int16_t JustStyleCode; -typedef int8 CharByteTable[256]; +typedef int8_t CharByteTable[256]; typedef int16_t ScriptRunStatus; /* Not sure this is correct, since in IM ScriptRunStatus is a record with two diff --git a/src/include/rsys/blockinterrupts.h b/src/include/rsys/blockinterrupts.h index 886a4edf..3b724527 100644 --- a/src/include/rsys/blockinterrupts.h +++ b/src/include/rsys/blockinterrupts.h @@ -12,7 +12,7 @@ namespace Executor { -typedef uint8 virtual_int_state_t; +typedef uint8_t virtual_int_state_t; extern virtual_int_state_t _virtual_interrupts_blocked; /* A virtual_int_state_t is a four bit value. The low bit controls diff --git a/src/include/rsys/cfm.h b/src/include/rsys/cfm.h index 4fd678ab..3dee9504 100644 --- a/src/include/rsys/cfm.h +++ b/src/include/rsys/cfm.h @@ -42,8 +42,8 @@ struct cfir_t GUEST oldest_definition_version; GUEST stack_size; GUEST appl_library_dir; - GUEST fragment_type; - GUEST fragment_location; + GUEST fragment_type; + GUEST fragment_location; GUEST offset_to_fragment; GUEST fragment_length; GUEST reserved0; @@ -166,7 +166,7 @@ extern OSErr C_GetDiskFragment(FSSpecPtr fsp, LONGINT offset, LONGINT length, Str255 errname); PASCAL_SUBTRAP(GetDiskFragment, 0xAA5A, 0x0002, CodeFragmentDispatch); -typedef uint8 SymClass; +typedef uint8_t SymClass; extern OSErr C_FindSymbol(ConnectionID connID, Str255 symName, GUEST *symAddr, SymClass *symClass); @@ -184,8 +184,8 @@ struct section_info_t GUEST start; GUEST length; GUEST ref_count; - GUEST perms; - GUEST pad[3];/* TODO: verifying that it works this way on a Mac. */ + GUEST perms; + GUEST pad[3];/* TODO: verifying that it works this way on a Mac. */ }; typedef struct CFragConnection @@ -241,7 +241,7 @@ struct map_entry_t void *value; }; -extern cfir_t *ROMlib_find_cfrg(Handle cfrg, OSType arch, uint8 type, +extern cfir_t *ROMlib_find_cfrg(Handle cfrg, OSType arch, uint8_t type, Str255 name); extern OSErr C_CloseConnection(ConnectionID *cidp); diff --git a/src/include/rsys/common.h b/src/include/rsys/common.h index e4fefcb7..9482df2c 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -13,7 +13,6 @@ #endif #include "rsys/macros.h" -#include "rsys/types.h" #include "rsys/functions.h" #include "rsys/mactype.h" #include "rsys/byteswap.h" @@ -27,11 +26,8 @@ #include "rsys/lowglobals.h" #endif -#include "rsys/trapglue.h" -#if !defined(COMPILE_FOR_BUILD) #include "front-end-config.h" -#endif namespace Executor { diff --git a/src/include/rsys/cquick.h b/src/include/rsys/cquick.h index 2e468fa5..9fa38107 100644 --- a/src/include/rsys/cquick.h +++ b/src/include/rsys/cquick.h @@ -402,7 +402,7 @@ typedef BitMap blt_bitmap_t; #define CTAB_PENDING_BIT (0x1000) /* accessor macro to avoid byte swap. */ -#define COLORSPEC_VALUE_LOW_BYTE(cspec) (((uint8 *)&((cspec)->value))[1]) +#define COLORSPEC_VALUE_LOW_BYTE(cspec) (((uint8_t *)&((cspec)->value))[1]) /* inverse color table accessors */ #define ITAB_TABLE(itab) (HxX((itab), iTTable)) @@ -712,7 +712,7 @@ extern int average_color(GDHandle gdev, RGBColor *c1, RGBColor *c2, int ratio, RGBColor *out); -extern int16_t xStdTxMeas(int16_t n, uint8 *p, GUEST *nump, GUEST *denp, +extern int16_t xStdTxMeas(int16_t n, uint8_t *p, GUEST *nump, GUEST *denp, FontInfo *finfop, GUEST *charlocp); extern void ROMlib_fg_bk(uint32_t *fg_pixel_out, uint32_t *bk_pixel_out, diff --git a/src/include/rsys/ctl.h b/src/include/rsys/ctl.h index 28f8ec48..2e04b1ac 100644 --- a/src/include/rsys/ctl.h +++ b/src/include/rsys/ctl.h @@ -42,7 +42,7 @@ extern AuxCtlHandle default_aux_ctl; #define CTL_NEXT_CONTROL(ctl) (MR(CTL_NEXT_CONTROL_X(ctl))) #define CTL_OWNER(ctl) (MR(CTL_OWNER_X(ctl))) #define CTL_VIS(ctl) (CTL_VIS_X(ctl)) -#define CTL_HILITE(ctl) ((uint8)CTL_HILITE_X(ctl)) +#define CTL_HILITE(ctl) ((uint8_t)CTL_HILITE_X(ctl)) #define CTL_VALUE(ctl) (CW(CTL_VALUE_X(ctl))) #define CTL_MIN(ctl) (CW(CTL_MIN_X(ctl))) #define CTL_MAX(ctl) (CW(CTL_MAX_X(ctl))) diff --git a/src/include/rsys/depthconv.h b/src/include/rsys/depthconv.h index 6f155be6..ae18f0a1 100644 --- a/src/include/rsys/depthconv.h +++ b/src/include/rsys/depthconv.h @@ -8,8 +8,8 @@ namespace Executor { /* Public API */ typedef void (*depthconv_func_t)(const void *table, - const uint8 *src_base, int src_row_bytes, - uint8 *dst_base, int dst_row_bytes, + const uint8_t *src_base, int src_row_bytes, + uint8_t *dst_base, int dst_row_bytes, int top, int left, int bottom, int right); /* Each of these functions fills in TABLE_SPACE with some private tables, @@ -59,10 +59,10 @@ depthconv_make_rgb_to_rgb_table(void *table_space, uint32_t *table_size, /* Private data, shared between dcmaketables.c and dcconvert.c. */ /* These are INTERNAL types used to store lookup tables used for conversion. */ -typedef uint8 depthconv_8_1_data_t[8][256]; -typedef uint8 depthconv_4_1_data_t[4][256]; -typedef uint8 depthconv_2_1_data_t[2][256]; -typedef uint8 depthconv_1_1_data_t[256]; +typedef uint8_t depthconv_8_1_data_t[8][256]; +typedef uint8_t depthconv_4_1_data_t[4][256]; +typedef uint8_t depthconv_2_1_data_t[2][256]; +typedef uint8_t depthconv_1_1_data_t[256]; typedef uint16_t depthconv_1_2_data_t[256][4]; typedef uint32_t depthconv_1_4_data_t[256]; typedef uint32_t depthconv_1_8_data_t[256][2]; @@ -95,8 +95,8 @@ extern const int depthconv_ind_src_table_alignment[]; #define DEPTHCONV_DECL(func_name) \ extern void func_name(const void *raw_table, \ - const uint8 *src_base, int src_row_bytes, \ - uint8 *dst_base, int dst_row_bytes, \ + const uint8_t *src_base, int src_row_bytes, \ + uint8_t *dst_base, int dst_row_bytes, \ int top, int left, int bottom, int right) DEPTHCONV_DECL(depthconv_copy); diff --git a/src/include/rsys/dial.h b/src/include/rsys/dial.h index 8ad1bfff..38f0815d 100644 --- a/src/include/rsys/dial.h +++ b/src/include/rsys/dial.h @@ -8,8 +8,8 @@ struct icon_item_template_t GUEST count; GUEST h; GUEST r; - GUEST type; - GUEST len; + GUEST type; + GUEST len; GUEST res_id; }; } diff --git a/src/include/rsys/macros.h b/src/include/rsys/macros.h index d2894bc1..1a8742d9 100644 --- a/src/include/rsys/macros.h +++ b/src/include/rsys/macros.h @@ -37,7 +37,7 @@ #endif #if !defined(U) -#define U(c) ((uint8)(c)) +#define U(c) ((uint8_t)(c)) #endif #if !defined(ALLOCABEGIN) @@ -57,10 +57,10 @@ (((const uint32_t *)(p1))[0] == ((const uint32_t *)(p2))[0] \ && ((const uint32_t *)(p1))[1] == ((const uint32_t *)(p2))[1]) -#define FOURCC(a, b, c, d) ((((uint32_t)(uint8)(a)) << 24) \ - | (((uint32_t)(uint8)(b)) << 16) \ - | (((uint32_t)(uint8)(c)) << 8) \ - | (((uint32_t)(uint8)(d)) << 0)) +#define FOURCC(a, b, c, d) ((((uint32_t)(uint8_t)(a)) << 24) \ + | (((uint32_t)(uint8_t)(b)) << 16) \ + | (((uint32_t)(uint8_t)(c)) << 8) \ + | (((uint32_t)(uint8_t)(d)) << 0)) #define TICK(str) (((LONGINT)(unsigned char)str[0] << 24) | ((LONGINT)(unsigned char)str[1] << 16) | ((LONGINT)(unsigned char)str[2] << 8) | ((LONGINT)(unsigned char)str[3] << 0)) diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index 3590641f..a5d4f9a2 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -9,7 +9,7 @@ */ #include "host-arch-config.h" #include "rsys/macros.h" -#include "rsys/types.h" +#include #include #include /* for ROMlib_offset */ @@ -27,11 +27,18 @@ typedef int32_t LONGINT; typedef uint32_t ULONGINT; #if !defined(WIN32) || !defined(USE_WINDOWS_NOT_MAC_TYPEDEFS_AND_DEFINES) -typedef int8 BOOLEAN; +typedef int8_t BOOLEAN; #endif typedef int16_t CharParameter; /* very important not to use this as char */ +struct Point +{ + int16_t v; + int16_t h; +}; + + // Define alignment. // Most things are two-byte aligned. diff --git a/src/include/rsys/mixed_mode.h b/src/include/rsys/mixed_mode.h index 2bdbf843..436c3248 100644 --- a/src/include/rsys/mixed_mode.h +++ b/src/include/rsys/mixed_mode.h @@ -4,7 +4,7 @@ #include namespace Executor { -typedef uint8 ISAType; +typedef uint8_t ISAType; typedef uint16_t CallingConventionType; typedef uint32_t ProcInfoType; typedef uint16_t RegisterSelectorType; @@ -29,13 +29,13 @@ enum kSpecialCase, }; -typedef uint8 RDFlagsType; +typedef uint8_t RDFlagsType; struct RoutineRecord { GUEST_STRUCT; GUEST procInfo; - GUEST reserved1; + GUEST reserved1; GUEST ISA; GUEST routineFlags; GUEST procDescriptor; @@ -47,11 +47,11 @@ struct RoutineDescriptor { GUEST_STRUCT; GUEST goMixedModeTrap; - GUEST version; + GUEST version; GUEST routineDescriptorFlags; GUEST reserved1; - GUEST reserved2; - GUEST selectorInfo; + GUEST reserved2; + GUEST selectorInfo; GUEST routineCount; GUEST routineRecords; }; diff --git a/src/include/rsys/mman_private.h b/src/include/rsys/mman_private.h index 39d60d23..c2778354 100644 --- a/src/include/rsys/mman_private.h +++ b/src/include/rsys/mman_private.h @@ -27,12 +27,12 @@ typedef struct block_header { GUEST_STRUCT; #if defined(MM_BLOCK_HEADER_SENTINEL) - GUEST pre_sentinel; + GUEST pre_sentinel; #endif - GUEST flags; - GUEST master_ptr_flags; - GUEST reserved; - GUEST size_correction; + GUEST flags; + GUEST master_ptr_flags; + GUEST reserved; + GUEST size_correction; GUEST size; GUEST location_u; /* sometimes it's a pointer (the zone), sometimes it's an offset */ @@ -41,7 +41,7 @@ typedef struct block_header GUEST alloc_pcs; #endif #if defined(MM_BLOCK_HEADER_SENTINEL) - GUEST post_sentinel; + GUEST post_sentinel; #endif GUEST data[0]; } block_header_t; diff --git a/src/include/rsys/osevent.h b/src/include/rsys/osevent.h index 1c93e931..d454f8fa 100644 --- a/src/include/rsys/osevent.h +++ b/src/include/rsys/osevent.h @@ -49,6 +49,6 @@ extern void maybe_wait_for_keyup(void); extern uint16_t ROMlib_right_to_left_key_map(uint16_t what); extern bool ROMlib_get_index_and_bit(LONGINT loc, int *indexp, - uint8 *bitp); + uint8_t *bitp); } #endif diff --git a/src/include/rsys/pef.h b/src/include/rsys/pef.h index c2eab01d..86168700 100644 --- a/src/include/rsys/pef.h +++ b/src/include/rsys/pef.h @@ -66,10 +66,10 @@ typedef struct PEFSectionHeader GUEST unpackedSize; GUEST packedSize; GUEST containerOffset; - GUEST sectionKind; - GUEST shareKind; - GUEST alignment; - GUEST reservedA; + GUEST sectionKind; + GUEST shareKind; + GUEST alignment; + GUEST reservedA; } PEFSectionHeader_t; #define PEFSH_DEFAULT_ADDRESS_X(p) ((p)->defaultAddress) @@ -160,8 +160,8 @@ typedef struct PEFImportedLibrary GUEST currentVersion; GUEST importedSymbolCount; GUEST firstImportedSymbol; - GUEST options; - GUEST reservedA; + GUEST options; + GUEST reservedA; GUEST reservedB; } PEFImportedLibrary_t; diff --git a/src/include/rsys/resource.h b/src/include/rsys/resource.h index 78f0d88f..9941bac5 100644 --- a/src/include/rsys/resource.h +++ b/src/include/rsys/resource.h @@ -206,8 +206,8 @@ struct dcomp_info_t GUEST compressedResourceTag; GUEST typeFlags; GUEST uncompressedSize; - GUEST workingBufferFractionalRatio; - GUEST expansionBufferSize; + GUEST workingBufferFractionalRatio; + GUEST expansionBufferSize; GUEST dcmpID; }; diff --git a/src/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index 9f6b77df..f3bc0709 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -71,7 +71,7 @@ struct ModifierStub SignedByte hState; snd_time current_start; snd_time time; - GUEST prev_samp; + GUEST prev_samp; SndDoubleBufferHeader *dbhp; int current_db; }; diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index 4b18686a..3826118e 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -11,12 +11,6 @@ typedef struct uint64_t magic; } ptocblock_t; -typedef struct -{ - syn68k_addr_t orig; - void *func; -} osstuff_t; - #define TOOLBIT (0x0800) #define NTOOLENTRIES (0x400) #define NOSENTRIES (0x100) @@ -29,7 +23,6 @@ extern syn68k_addr_t PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop); extern unsigned short mostrecenttrap; extern uintptr_t CToPascalCall(void *, uint64_t, ...); -extern osstuff_t osstuff[]; } #endif diff --git a/src/include/rsys/types.h b/src/include/rsys/types.h deleted file mode 100644 index 21e3e9c9..00000000 --- a/src/include/rsys/types.h +++ /dev/null @@ -1,52 +0,0 @@ -#if !defined(_RSYS_TYPES_H_) -#define _RSYS_TYPES_H_ - -#if !defined(INT_TYPES_TYPEDEFED) -#include -#include -typedef int8_t int8; -typedef uint8_t uint8; -typedef int16_t int16_t; -typedef uint16_t uint16_t; -typedef int32_t int32_t; -typedef uint32_t uint32_t; -typedef int64_t int64_t; -typedef uint64_t uint64_t; - -#define INT_TYPES_TYPEDEFED -#endif /* !INT_TYPES_TYPEDEFED */ - -#if !defined(INT16_MAX) -#define INT16_MAX ((int16_t)0x7FFF) -#endif - -#if !defined(INT16_MIN) -#define INT16_MIN ((int16_t)(-INT16_MAX - 1)) -#endif - -#if !defined(UINT16_MAX) -#define UINT16_MAX ((uint16_t)0xFFFF) -#endif - -#if !defined(INT32_MAX) -#define INT32_MAX ((int32_t)0x7FFFFFFF) -#endif - -#if !defined(INT32_MIN) -#define INT32_MIN ((int32_t)(-INT32_MAX - 1)) -#endif - -#if !defined(UINT32_MAX) -#define UINT32_MAX ((uint32_t)0xFFFFFFFF) -#endif - -namespace Executor -{ -struct Point -{ - int16_t v; - int16_t h; -}; -} - -#endif /* !_RSYS_TYPES_H_ */ diff --git a/src/include/rsys/vdriver.h b/src/include/rsys/vdriver.h index 766b6408..6e1164c0 100644 --- a/src/include/rsys/vdriver.h +++ b/src/include/rsys/vdriver.h @@ -125,7 +125,7 @@ extern void vdriver_accel_wait(void); #endif #if !defined(vdriver_fbuf) -extern uint8 *vdriver_fbuf; +extern uint8_t *vdriver_fbuf; #endif #if !defined(vdriver_row_bytes) @@ -175,7 +175,7 @@ extern int vdriver_real_screen_row_bytes; #endif #if !defined(vdriver_real_screen_baseaddr) -extern uint8 *vdriver_real_screen_baseaddr; +extern uint8_t *vdriver_real_screen_baseaddr; #endif #if !defined(vdriver_set_up_internal_screen) diff --git a/src/include/rsys/xdata.h b/src/include/rsys/xdata.h index e484137e..578ce5f4 100644 --- a/src/include/rsys/xdata.h +++ b/src/include/rsys/xdata.h @@ -10,7 +10,7 @@ typedef struct { uint16_t x_rot_count; /* Number of pixels x-rotated. */ uint16_t y_rot_count; /* Number of rows y-rotated. */ - uint8 src_flipped_p; /* Are the mode_bits already flipped? */ + uint8_t src_flipped_p; /* Are the mode_bits already flipped? */ } xdata_xfer_spec_t; #define XDATA_INVALID_XFER_SPEC (-1) diff --git a/src/interfacelib.cpp b/src/interfacelib.cpp index 97a77e51..78ac37af 100644 --- a/src/interfacelib.cpp +++ b/src/interfacelib.cpp @@ -174,7 +174,7 @@ LMGetAtMenuBottom(void) return CW(LM(AtMenuBottom)); } -static uint8 +static uint8_t LMGetSdVolume(void) { warning_trace_info(NULL_STRING); @@ -241,7 +241,7 @@ LMGetROM85(void) return CW(LM(ROM85)); } -static uint8 +static uint8_t LMGetKbdType(void) { warning_trace_info(NULL_STRING); @@ -304,7 +304,7 @@ LMGetTicks(void) return CL(LM(Ticks)); } -static uint8 +static uint8_t LMGetResLoad(void) { warning_trace_info(NULL_STRING); @@ -396,7 +396,7 @@ LMSetApplZone(THz val) } static void -LMSetResLoad(uint8 val) +LMSetResLoad(uint8_t val) { warning_trace_info(NULL_STRING); LM(ResLoad) = CB(val); @@ -444,7 +444,7 @@ LMGetCurDirStore(void) return CL(LM(CurDirStore)); } -static uint8 +static uint8_t LMGetCrsrBusy(void) { warning_trace_info(NULL_STRING); @@ -1026,7 +1026,7 @@ HDelete(INTEGER vrefnum, LONGINT dirid, Str255 filename) } static OSErr -HOpenDF(INTEGER vref, LONGINT dirid, Str255 file, int8 perm, INTEGER *refp) +HOpenDF(INTEGER vref, LONGINT dirid, Str255 file, int8_t perm, INTEGER *refp) { OSErr retval; HParamBlockRec pb; @@ -1850,7 +1850,7 @@ extract_stack_parameters(ProcInfoType info, va_list ap, { case kOneByteCode: if(where == args_via_stdarg) - *argp = (uint8)va_arg(ap, uint32_t); + *argp = (uint8_t)va_arg(ap, uint32_t); else *argp = POPUB(); *widp = 1; @@ -2024,7 +2024,7 @@ Call68KProc_from_native(void *addr, ProcInfoType info, va_list ap) break; case kOneByteCode: { - uint8 b; + uint8_t b; b = *argp; PUSHUB(b); @@ -2059,7 +2059,7 @@ Call68KProc_from_native(void *addr, ProcInfoType info, va_list ap) retval = 0; break; case 1: - retval = (uint8)EM_D0; + retval = (uint8_t)EM_D0; break; case 2: retval = (uint16_t)EM_D0; diff --git a/src/launch.cpp b/src/launch.cpp index c91265e2..764a1244 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -367,7 +367,7 @@ void Executor::SFSaveDisk_Update(INTEGER vrefnum, Str255 filename) uint32_t Executor::ROMlib_version_long; static bool -cfrg_match(const cfir_t *cfirp, GUEST arch_x, uint8 type_x, Str255 name) +cfrg_match(const cfir_t *cfirp, GUEST arch_x, uint8_t type_x, Str255 name) { bool retval; @@ -377,13 +377,13 @@ cfrg_match(const cfir_t *cfirp, GUEST arch_x, uint8 type_x, Str255 name) } cfir_t * -Executor::ROMlib_find_cfrg(Handle cfrg, OSType arch, uint8 type, Str255 name) +Executor::ROMlib_find_cfrg(Handle cfrg, OSType arch, uint8_t type, Str255 name) { cfrg_resource_t *cfrgp; int n_descripts; cfir_t *cfirp; GUEST desired_arch_x; - uint8 type_x; + uint8_t type_x; cfir_t *retval; cfrgp = (cfrg_resource_t *)STARH(cfrg); diff --git a/src/makerawblt.pl b/src/makerawblt.pl index 59d63ee1..cebc7da5 100755 --- a/src/makerawblt.pl +++ b/src/makerawblt.pl @@ -12,7 +12,7 @@ " const void *next = s\[1\].label; \\\n" . " NEXT_ROW; \\\n" . " arg = s\[1\].arg; \\\n" . - " s = (const blt_section_t *) ((const uint8 *) s + sec_size); \\\n" . + " s = (const blt_section_t *) ((const uint8_t *) s + sec_size); \\\n" . " goto *next; \\\n" . "} while (0)\n" . "\n" . @@ -102,9 +102,9 @@ sub output_func { "$prefix" . "_func_$func_number (const blt_section_t *section,\n"); if ($patblt) { - print "uint8 *row_base, long num_rows, long y)\n"; + print "uint8_t *row_base, long num_rows, long y)\n"; } else { - print ("const uint8 *src_row_base, uint8 *dst_row_base, " . + print ("const uint8_t *src_row_base, uint8_t *dst_row_base, " . "long num_rows)\n"); } diff --git a/src/osevent.cpp b/src/osevent.cpp index 75186682..571a924d 100644 --- a/src/osevent.cpp +++ b/src/osevent.cpp @@ -235,7 +235,7 @@ Executor::geteventelem(void) } bool -Executor::ROMlib_get_index_and_bit(LONGINT loc, int *indexp, uint8 *bitp) +Executor::ROMlib_get_index_and_bit(LONGINT loc, int *indexp, uint8_t *bitp) { bool retval; @@ -253,7 +253,7 @@ Executor::ROMlib_get_index_and_bit(LONGINT loc, int *indexp, uint8 *bitp) void Executor::ROMlib_zapmap(LONGINT loc, LONGINT val) { int i; - uint8 bit; + uint8_t bit; if(ROMlib_get_index_and_bit(loc, &i, &bit)) { @@ -265,11 +265,11 @@ void Executor::ROMlib_zapmap(LONGINT loc, LONGINT val) } static bool -key_down(uint8 loc) +key_down(uint8_t loc) { bool retval; int i; - uint8 bit; + uint8_t bit; if(!ROMlib_get_index_and_bit(loc, &i, &bit)) retval = false; diff --git a/src/pat-blitters.tmpl b/src/pat-blitters.tmpl index 0633b9a6..7a7bea68 100644 --- a/src/pat-blitters.tmpl +++ b/src/pat-blitters.tmpl @@ -103,7 +103,7 @@ end_mode begin_pat_func init uint32_t pattern_row_bytes_minus_1 = (1 << xdblt_log2_pattern_row_bytes) - 1; inloop intptr_t x_offset = -((intptr_t) row_base); - inloop const uint8 *base = (const uint8 *) xdblt_pattern_baseaddr; + inloop const uint8_t *base = (const uint8_t *) xdblt_pattern_baseaddr; end_func begin_mode copy_short_wide max_unwrap @@ -134,7 +134,7 @@ begin_pat_func init uint32_t not_insert_bits = ~insert_bits; init uint32_t pattern_row_bytes_minus_1 = (1 << xdblt_log2_pattern_row_bytes) - 1; inloop intptr_t x_offset = -((intptr_t) row_base); - inloop const uint8 *base = (const uint8 *) xdblt_pattern_baseaddr; + inloop const uint8_t *base = (const uint8_t *) xdblt_pattern_baseaddr; end_func begin_mode insert_short_wide max_unwrap @@ -149,7 +149,7 @@ begin_pat_func init uint32_t pattern_row_bytes_minus_1 = (1 << xdblt_log2_pattern_row_bytes) - 1; init y += xdblt_pattern_row_0; inloop intptr_t x_offset = -((intptr_t) row_base); - inloop const uint8 *base = ((const uint8 *) xdblt_pattern_baseaddr) + ((y++ & xdblt_pattern_height_minus_1) << xdblt_log2_pattern_row_bytes); + inloop const uint8_t *base = ((const uint8_t *) xdblt_pattern_baseaddr) + ((y++ & xdblt_pattern_height_minus_1) << xdblt_log2_pattern_row_bytes); end_func begin_mode copy_tall_wide max_unwrap @@ -181,7 +181,7 @@ begin_pat_func init uint32_t pattern_row_bytes_minus_1 = (1 << xdblt_log2_pattern_row_bytes) - 1; init y += xdblt_pattern_row_0; inloop intptr_t x_offset = -((intptr_t) row_base); - inloop const uint8 *base = ((const uint8 *) xdblt_pattern_baseaddr) + ((y++ & xdblt_pattern_height_minus_1) << xdblt_log2_pattern_row_bytes); + inloop const uint8_t *base = ((const uint8_t *) xdblt_pattern_baseaddr) + ((y++ & xdblt_pattern_height_minus_1) << xdblt_log2_pattern_row_bytes); end_func begin_mode insert_tall_wide max_unwrap diff --git a/src/pef_hash.cpp b/src/pef_hash.cpp index e30e703b..068a921d 100644 --- a/src/pef_hash.cpp +++ b/src/pef_hash.cpp @@ -61,7 +61,7 @@ floor_log2(double d) } #endif -static uint8 +static uint8_t PEFComputeHashTableExponent(int32_t count) { int retval; diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index c303c817..0eff6b69 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -233,7 +233,7 @@ Executor::cstring_from_str255(Str255 text) int len; char *retval; - len = (uint8)text[0]; + len = (uint8_t)text[0]; retval = (char *)malloc(len + 1); if(retval) { diff --git a/src/qColorMgr.cpp b/src/qColorMgr.cpp index d3519285..69251462 100644 --- a/src/qColorMgr.cpp +++ b/src/qColorMgr.cpp @@ -162,12 +162,12 @@ ROMlib_search_proc(RGBColor *rgb) if(memcmp(rgb, &cspecp[retval].rgb, sizeof *rgb) != 0) { int i; - uint8 *hash_table; + uint8_t *hash_table; uint32_t candidate; uint32_t cur_diff, new_diff; bool done_zero; - hash_table = ((uint8 *)STARH(inverse_table) + hash_table = ((uint8_t *)STARH(inverse_table) + itab_base_size(resolution)); i = itable_hash(rgb, resolution); @@ -569,10 +569,10 @@ add_hash_table(CTabHandle color_table, ITabHandle inverse_table, int resolution) { int ctab_size; - uint8 *hash_tablep; + uint8_t *hash_tablep; int i; - hash_tablep = ((uint8 *)STARH(inverse_table) + hash_tablep = ((uint8_t *)STARH(inverse_table) + itab_base_size(resolution)); memset(hash_tablep, 0, ITABLE_HASH_SIZE); ctab_size = CTAB_SIZE(color_table); diff --git a/src/qCursor.cpp b/src/qCursor.cpp index c4905653..02bedc3f 100644 --- a/src/qCursor.cpp +++ b/src/qCursor.cpp @@ -37,10 +37,10 @@ using namespace Executor; using namespace Executor; static void -cursor_debug(const uint8 *datap, const uint8 *maskp, int hot_x, int hot_y) +cursor_debug(const uint8_t *datap, const uint8_t *maskp, int hot_x, int hot_y) { int y; - uint8 *pixel; + uint8_t *pixel; int offset; pixel = vdriver_fbuf; diff --git a/src/qIMIV.cpp b/src/qIMIV.cpp index 61d4e789..647069c3 100644 --- a/src/qIMIV.cpp +++ b/src/qIMIV.cpp @@ -245,14 +245,14 @@ static void xSeedFill(unsigned char *srcp, unsigned char *dstp, INTEGER srcr, #if defined(VDRIVER_SUPPORTS_REAL_SCREEN_BLITS) static bool -create_scratch_bitmap_if_necessary(uint8 **_fbuf, +create_scratch_bitmap_if_necessary(uint8_t **_fbuf, /* dummy */ int row_words, int height, int word_width, write_back_data_t *write_back_data) { PixMapHandle gd_pmap; - uint8 *screen_fbuf, *fbuf; + uint8_t *screen_fbuf, *fbuf; int screen_row_bytes; int screen_height; @@ -296,7 +296,7 @@ create_scratch_bitmap_if_necessary(uint8 **_fbuf, } static void -SeedFill_handle_direct_screen_access(uint8 *srcp, uint8 *dstp, +SeedFill_handle_direct_screen_access(uint8_t *srcp, uint8_t *dstp, int src_row_words, int dst_row_words, int height, int word_width, bool use_seed_pt_p, @@ -333,7 +333,7 @@ void Executor::C_SeedFill(Ptr srcp, Ptr dstp, INTEGER srcr, INTEGER dstr, INTEGER height, INTEGER width, INTEGER seedh, INTEGER seedv) /* IMIV-24 */ { - SeedFill_handle_direct_screen_access((uint8 *)srcp, (uint8 *)dstp, + SeedFill_handle_direct_screen_access((uint8_t *)srcp, (uint8_t *)dstp, srcr, dstr, height, width, true, seedh, seedv); } @@ -341,7 +341,7 @@ void Executor::C_SeedFill(Ptr srcp, Ptr dstp, INTEGER srcr, INTEGER dstr, void Executor::C_CalcMask(Ptr srcp, Ptr dstp, INTEGER srcr, INTEGER dstr, INTEGER height, INTEGER width) /* IMIV-24 */ { - SeedFill_handle_direct_screen_access((uint8 *)srcp, (uint8 *)dstp, + SeedFill_handle_direct_screen_access((uint8_t *)srcp, (uint8_t *)dstp, srcr, dstr, height, width, false, 0, 0); } diff --git a/src/qIMV.cpp b/src/qIMV.cpp index 78639ee4..52cc4980 100644 --- a/src/qIMV.cpp +++ b/src/qIMV.cpp @@ -49,7 +49,7 @@ void Executor::C_SetStdCProcs(CQDProcs *cProcs) /* IMV-77 */ void Executor::C_GetCPixel(INTEGER h, INTEGER v, RGBColor *pixelp) { PixMap temp_pm; - uint8 temp_fbuf[4]; + uint8_t temp_fbuf[4]; Rect src_rect, dst_rect; GrafPtr port = thePort; CTabHandle ctab; @@ -156,7 +156,7 @@ void Executor::C_SetCPixel(INTEGER h, INTEGER v, RGBColor *pixelp) CPORT_RGB_FG_COLOR(port) = save_fg_rgb; } -static int8 +static int8_t default_search_proc(RGBColor *rgb, GUEST *pixel) { MatchRec *mr; @@ -177,7 +177,7 @@ default_search_proc_stub(syn68k_addr_t dummy_addr, void *dummy) { void *arg1, *arg2; syn68k_addr_t retval; - int8 result; + int8_t result; retval = POPADDR(); diff --git a/src/qIMVxfer.cpp b/src/qIMVxfer.cpp index 60c75489..18aca184 100644 --- a/src/qIMVxfer.cpp +++ b/src/qIMVxfer.cpp @@ -282,7 +282,7 @@ void Executor::convert_transparent(const PixMap *src1, const PixMap *src2, #define WRITE_INDIRECT_PIXEL(v, b, x, bpp) \ ((void)((bpp) == 8 ? b[x] = (v) \ : ({ \ - uint8 *p; \ + uint8_t *p; \ p = &b[(x) * (bpp) / 8]; \ *p &= ~(((1 << (bpp)) - 1) << SHIFT_COUNT(x, bpp)); \ *p |= (((v) & ((1 << (bpp)) - 1)) << SHIFT_COUNT(x, bpp)); \ @@ -358,11 +358,11 @@ void Executor::convert_pixmap_with_IMV_mode(const PixMap *src1, const PixMap *sr { CTabPtr src1_ctab, src2_ctab; unsigned max_color; - uint8 *src1_row_base, *src2_row_base, *dst_row_base; + uint8_t *src1_row_base, *src2_row_base, *dst_row_base; int src1_rowbytes, src2_rowbytes, dst_rowbytes, src1_deltax, src2_deltax; int width, height, s1_width, s1_height; int itab_res, itab_res_mask; - const uint8 *itab_array; + const uint8_t *itab_array; uint32_t op_red, op_green, op_blue; const rgb_spec_t *rgb_spec; @@ -598,7 +598,7 @@ void Executor::convert_pixmap_with_IMV_mode(const PixMap *src1, const PixMap *sr #define WRITE_INDIRECT_PIXEL(v, b, x, bpp) \ ((void)((bpp) == 8 ? b[x] = (v) \ : ({ \ - uint8 *p; \ + uint8_t *p; \ p = &b[(x) * (bpp) / 8]; \ *p &= ~(((1 << (bpp)) - 1) << SHIFT_COUNT(x, bpp)); \ *p |= (((v) & ((1 << (bpp)) - 1)) << SHIFT_COUNT(x, bpp)); \ diff --git a/src/qPicstuff.cpp b/src/qPicstuff.cpp index 267151e4..7afc2550 100644 --- a/src/qPicstuff.cpp +++ b/src/qPicstuff.cpp @@ -1192,7 +1192,7 @@ static Size eatpixdata(PixMapPtr pixmap, BOOLEAN *freep) } else { - uint8 *temp_scanline, *scanline, *ep; + uint8_t *temp_scanline, *scanline, *ep; h = NewHandle(final_data_size); if(h == NULL) @@ -1204,8 +1204,8 @@ static Size eatpixdata(PixMapPtr pixmap, BOOLEAN *freep) HLock(h); pixmap->baseAddr = *h; /* can't use STARH 'cause we don't */ /* want to byte swap the result */ - temp_scanline = (uint8 *)alloca(rowb); - for(scanline = (uint8 *)BITMAP_BASEADDR(pixmap), + temp_scanline = (uint8_t *)alloca(rowb); + for(scanline = (uint8_t *)BITMAP_BASEADDR(pixmap), ep = scanline + final_data_size; scanline < ep; scanline += rowb) @@ -1268,9 +1268,9 @@ static Size eatpixdata(PixMapPtr pixmap, BOOLEAN *freep) if(pixmap->packType == CWC(2)) { - uint8 *start, *src, *dst; + uint8_t *start, *src, *dst; - start = (uint8 *)BITMAP_BASEADDR(pixmap); + start = (uint8_t *)BITMAP_BASEADDR(pixmap); src = start + height * comp_bytes * 3; dst = start + height * rowb; diff --git a/src/qPict2.cpp b/src/qPict2.cpp index 5667eae0..635385df 100644 --- a/src/qPict2.cpp +++ b/src/qPict2.cpp @@ -128,7 +128,7 @@ OSErr Executor::C_GetPixMapInfo(PixMapHandle pixmap, PictInfo *pict_info, int16_t color_pick_method, int16_t version) { CTabHandle pixmap_color_table; - uint8 *row_base; + uint8_t *row_base; int row_bytes, bpp; const rgb_spec_t *rgb_spec; uint16_t *bank; @@ -142,7 +142,7 @@ OSErr Executor::C_GetPixMapInfo(PixMapHandle pixmap, PictInfo *pict_info, /* suck out the relevent pixmap bits */ row_bytes = PIXMAP_ROWBYTES(pixmap); - row_base = (uint8 *)PIXMAP_BASEADDR(pixmap); + row_base = (uint8_t *)PIXMAP_BASEADDR(pixmap); bpp = PIXMAP_PIXEL_SIZE(pixmap); diff --git a/src/qPixMapConv.cpp b/src/qPixMapConv.cpp index 341d0a45..1a4c31f2 100644 --- a/src/qPixMapConv.cpp +++ b/src/qPixMapConv.cpp @@ -376,7 +376,7 @@ void Executor::convert_pixmap(const PixMap *src, PixMap *dst, GUEST dst_seed_x, src_seed_x; const rgb_spec_t *src_rgb_spec, *dst_rgb_spec; - uint8 *src_base, *dst_base; + uint8_t *src_base, *dst_base; int16_t src_row_bytes, dst_row_bytes; write_back_data_t write_back; @@ -569,12 +569,12 @@ void Executor::convert_pixmap(const PixMap *src, PixMap *dst, /* using BITMAP_... on a PixMap * is slimy */ src_row_bytes = BITMAP_ROWBYTES(src); - src_base = (uint8 *)(MR(src->baseAddr) + src_base = (uint8_t *)(MR(src->baseAddr) + (CW(rect->top) - CW(src->bounds.top)) * src_row_bytes + (CW(rect->left) - CW(src->bounds.left)) * src_bpp / 8); dst_row_bytes = BITMAP_ROWBYTES(dst); - dst_base = (uint8 *)MR(dst->baseAddr); + dst_base = (uint8_t *)MR(dst->baseAddr); (*conversion_func)(depth_table_space, src_base, src_row_bytes, dst_base, dst_row_bytes, diff --git a/src/qScale.cpp b/src/qScale.cpp index f4730997..9dae93b5 100644 --- a/src/qScale.cpp +++ b/src/qScale.cpp @@ -24,8 +24,8 @@ void Executor::scale_blt_bitmap(const blt_bitmap_t *src_bitmap, blt_bitmap_t *ds long old_width, new_width, old_height, new_height; long y, dx, dy, left_x, src_rowbytes, dst_rowbytes, dst_byte_width, old_v; long rows_left; - const uint8 *src_base; - uint8 *dst_row_base; + const uint8_t *src_base; + uint8_t *dst_row_base; /* Fetch the sizes of the two bitmaps. */ old_width = RECT_WIDTH(old_rect); @@ -51,8 +51,8 @@ void Executor::scale_blt_bitmap(const blt_bitmap_t *src_bitmap, blt_bitmap_t *ds dst_byte_width = ((new_width << log2_bits_per_pixel) + 7) / 8; dst_rowbytes = (dst_byte_width + 3) & ~3; /* Divisible by 4. */ src_rowbytes = BITMAP_ROWBYTES(src_bitmap); - dst_row_base = (uint8 *)MR(dst_bitmap->baseAddr); - src_base = (uint8 *)(MR(src_bitmap->baseAddr) + dst_row_base = (uint8_t *)MR(dst_bitmap->baseAddr); + src_base = (uint8_t *)(MR(src_bitmap->baseAddr) + ((CW(old_rect->top) - CW(src_bitmap->bounds.top)) * src_rowbytes)); left_x = (CW(old_rect->left) - CW(src_bitmap->bounds.left)) << 16; old_v = -1; diff --git a/src/qStdBits.cpp b/src/qStdBits.cpp index 5d976619..cca3fa25 100644 --- a/src/qStdBits.cpp +++ b/src/qStdBits.cpp @@ -320,9 +320,9 @@ write_copybits_picdata(PixMap *src, PixMap *dst, { if(pack_type == CWC(2)) { - uint8 *current, *end; + uint8_t *current, *end; - current = (uint8 *)MR(src->baseAddr) + 1; + current = (uint8_t *)MR(src->baseAddr) + 1; end = current + row_bytes * height; while(current < end) @@ -341,36 +341,36 @@ write_copybits_picdata(PixMap *src, PixMap *dst, Ptr ip; int parity; - uint8 *packed_line; - int8 *countloc; + uint8_t *packed_line; + int8_t *countloc; int16_t count, countsize; GUEST swappedcount; - uint8 *baseaddr; + uint8_t *baseaddr; /* i copied the code below from the executor 1.2 implementation of StdBits pic recording. i can't say i fully understand it */ /* #### why the extra 5 bytes? */ - packed_line = (uint8 *)alloca(row_bytes + 5); - baseaddr = (uint8 *)MR(src->baseAddr); + packed_line = (uint8_t *)alloca(row_bytes + 5); + baseaddr = (uint8_t *)MR(src->baseAddr); ip = (Ptr)baseaddr; parity = 0; if(row_bytes > 250) { - countloc = (int8 *)&swappedcount; + countloc = (int8_t *)&swappedcount; countsize = 2; } else { - countloc = (int8 *)&swappedcount + 1; + countloc = (int8_t *)&swappedcount + 1; countsize = 1; } for(i = 0; i < height; i++) { GUEST op = RM((Ptr)packed_line); - gui_assert((uint8 *)ip == &baseaddr[row_bytes * i]); + gui_assert((uint8_t *)ip == &baseaddr[row_bytes * i]); GUEST ip2 = RM(ip); PackBits(&ip2, &op, row_bytes); ip = MR(ip2); diff --git a/src/qStdRgn.cpp b/src/qStdRgn.cpp index bb23755d..26b2f0da 100644 --- a/src/qStdRgn.cpp +++ b/src/qStdRgn.cpp @@ -58,7 +58,7 @@ void Executor::ROMlib_blt_rgn_update_dirty_rect(RgnHandle rh, { PixMap *new_src_pm = (PixMap *)alloca(sizeof *new_src_pm); int baseaddr_size, height, row_bytes; - uint8 *new_bits, *s, *d; + uint8_t *new_bits, *s, *d; int y; /* Make a copy of the source bitmap, so we can dither it. */ @@ -69,7 +69,7 @@ void Executor::ROMlib_blt_rgn_update_dirty_rect(RgnHandle rh, TEMP_ALLOC_ALLOCATE(new_bits, temp_alloc_space, baseaddr_size); new_src_pm->baseAddr = RM((Ptr)new_bits); - s = (uint8 *)MR(src_pm->baseAddr); + s = (uint8_t *)MR(src_pm->baseAddr); d = new_bits; for(y = 0; y < height; y++) { @@ -652,7 +652,7 @@ Executor::ROMlib_blt_pn(RgnHandle rh, INTEGER mode) /* I have no idea where this table came from. It's just been * passed down from the old black and white blitter. */ - static const uint8 imvxfer_pat_mode_lookup[8] = { patCopy, patBic, patXor, patOr, patOr, patBic, patXor, patOr }; + static const uint8_t imvxfer_pat_mode_lookup[8] = { patCopy, patBic, patXor, patOr, patOr, patBic, patXor, patOr }; if(mode >= 0x20 && mode <= 0x2F) mode = imvxfer_pat_mode_lookup[mode & 7]; diff --git a/src/qt.cpp b/src/qt.cpp index 75422795..2e7b27c1 100644 --- a/src/qt.cpp +++ b/src/qt.cpp @@ -240,7 +240,7 @@ void Executor::C_DisposeMovieController(ComponentInstance controller) } OSErr Executor::C_OpenMovieFile(const FSSpec *filespecp, INTEGER *refnump, - uint8 perm) + uint8_t perm) { OSErr retval; diff --git a/src/rawpatblt.cpp b/src/rawpatblt.cpp index 87a7e7d4..1a40b69d 100644 --- a/src/rawpatblt.cpp +++ b/src/rawpatblt.cpp @@ -197,9 +197,9 @@ void xdblt_canon_pattern(void) num_rows = next_y - y; /* Call the blitter function. */ - ((void (*)(const blt_section_t *, uint8 *, long, long)) + ((void (*)(const blt_section_t *, uint8_t *, long, long)) xdblt_stub_table[FUNC_PTR])(section, - ((uint8 *)xdblt_dst_baseaddr + ((uint8_t *)xdblt_dst_baseaddr + (y * xdblt_dst_row_bytes)), num_rows, y); diff --git a/src/rawsrcblt.cpp b/src/rawsrcblt.cpp index ddaff216..a9b91da9 100644 --- a/src/rawsrcblt.cpp +++ b/src/rawsrcblt.cpp @@ -211,11 +211,11 @@ void srcblt_bitmap(void) first_y = srcblt_reverse_scanlines_p ? (next_y - 1) : y; - ((void (*)(const blt_section_t *, const uint8 *, uint8 *, long)) + ((void (*)(const blt_section_t *, const uint8_t *, uint8_t *, long)) srcblt_stub_table[FUNC_PTR])(section, - ((const uint8 *)srcblt_src_baseaddr + ((const uint8_t *)srcblt_src_baseaddr + (first_y * srcblt_src_row_bytes)), - ((uint8 *)srcblt_dst_baseaddr + ((uint8_t *)srcblt_dst_baseaddr + (first_y * srcblt_dst_row_bytes)), num_rows); } diff --git a/src/rgbutil.cpp b/src/rgbutil.cpp index d0b56ab5..7ba5673b 100644 --- a/src/rgbutil.cpp +++ b/src/rgbutil.cpp @@ -156,11 +156,11 @@ rgbcolor_to_pixel(const rgb_spec_t *spec, const RGBColor *color, bool big_endian_rgbcolor_p) { - const uint8 *values; + const uint8_t *values; uint32_t v; /* Treat RGBColor as an array of bytes, so we can easily grab MSB's. */ - values = (const uint8 *)color; + values = (const uint8_t *)color; #if defined(LITTLEENDIAN) if(!big_endian_rgbcolor_p) ++values; diff --git a/src/scrap.cpp b/src/scrap.cpp index 62bebc10..18d9f20c 100644 --- a/src/scrap.cpp +++ b/src/scrap.cpp @@ -412,17 +412,17 @@ SDL_colors(const SDL_Surface *surfp) typedef struct { - uint8 blue PACKED; - uint8 red PACKED; - uint8 green PACKED; + uint8_t blue PACKED; + uint8_t red PACKED; + uint8_t green PACKED; } sdl_pixel24; typedef struct { - uint8 zero PACKED; - uint8 red PACKED; - uint8 green PACKED; - uint8 blue PACKED; + uint8_t zero PACKED; + uint8_t red PACKED; + uint8_t green PACKED; + uint8_t blue PACKED; } mac_pixel32; #define advance_n_bytes(ptrp, n_bytes) \ @@ -438,7 +438,7 @@ typedef struct decltype(x) _x; \ \ _x = (x); \ - (_x << 8) | (uint8)_x; \ + (_x << 8) | (uint8_t)_x; \ }) static CTabHandle @@ -536,8 +536,8 @@ gworld_from_surface(SDL_Surface *surfp) { case 8: { - uint8 *ip, *eip; - uint8 *op; + uint8_t *ip, *eip; + uint8_t *op; int rowbytes; int pitch; diff --git a/src/screen-dump.cpp b/src/screen-dump.cpp index afcfc28b..fa3d2e4e 100644 --- a/src/screen-dump.cpp +++ b/src/screen-dump.cpp @@ -109,7 +109,7 @@ dump_indirect_pm(PixMap *pm) struct ifd *ifd; int ifd_size; - int8 *tif; + int8_t *tif; int tif_size; int32_t *strip_offsets; diff --git a/src/script.cpp b/src/script.cpp index e6aab14a..0763ec87 100644 --- a/src/script.cpp +++ b/src/script.cpp @@ -217,7 +217,7 @@ void Executor::C_NMeasureJust(Ptr text, int32_t length, Fixed slop, denomx.v = CW(denom.v); denomx.h = CW(denom.h); - xStdTxMeas(length, (uint8 *)text, &numerx, &denomx, + xStdTxMeas(length, (uint8_t *)text, &numerx, &denomx, NULL, (GUEST *)charLocs); } diff --git a/src/segment.cpp b/src/segment.cpp index 33f42827..c7176f92 100644 --- a/src/segment.cpp +++ b/src/segment.cpp @@ -217,10 +217,10 @@ full_pathname_p(char *uname) return retval; } -static uint8 +static uint8_t hexval(char c) { - uint8 retval; + uint8_t retval; if(c >= '0' && c <= '9') retval = c - '0'; diff --git a/src/sound.cpp b/src/sound.cpp index 75fe891d..bff0c10a 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -142,7 +142,7 @@ snd_fixed_mul(snd_time x, snd_time y) /* This table is used to add two sound values together and pin * the value to avoid overflow. */ -static const uint8 mix8[] = { +static const uint8_t mix8[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -197,21 +197,21 @@ static const uint8 mix8[] = { will simply be lost. */ static bool -resample(uint8 *inbuf, uint8 *orig_outbuf, unsigned int insize, +resample(uint8_t *inbuf, uint8_t *orig_outbuf, unsigned int insize, unsigned int outsize, uint32_t infreq, uint32_t outfreq, - snd_time *current_start, uint8 *prev_samp, + snd_time *current_start, uint8_t *prev_samp, snd_time *chan_time, snd_time until) { snd_time step; snd_time in_t, out_t; - uint8 *outbuf; + uint8_t *outbuf; /* FIXME - this does lots of pointless work when we're going to * ignore the resampled waveform anyway, but it makes the "real" * sound and "dummy" sound cases more similar. Is it worth it? */ - outbuf = orig_outbuf ?: (uint8 *)alloca(outsize); + outbuf = orig_outbuf ?: (uint8_t *)alloca(outsize); step = snd_fixed_div(infreq, outfreq); diff --git a/src/toolevent.cpp b/src/toolevent.cpp index e1c2e96a..a9e2dfcf 100644 --- a/src/toolevent.cpp +++ b/src/toolevent.cpp @@ -1381,7 +1381,7 @@ sendpaste(void) */ static void -post_helper(INTEGER code, uint8 raw, uint8 mapped, INTEGER mods) +post_helper(INTEGER code, uint8_t raw, uint8_t mapped, INTEGER mods) { Point p; diff --git a/src/toolutil.cpp b/src/toolutil.cpp index 774ab4fe..ed69fd45 100644 --- a/src/toolutil.cpp +++ b/src/toolutil.cpp @@ -277,12 +277,12 @@ void Executor::C_PackBits(GUEST *sp, GUEST *dp, INTEGER len) #define UNPACK_BITS_BODY(out_type) \ do \ { \ - const int8 *ip; \ + const int8_t *ip; \ out_type *op, *ep; \ \ - ip = (const int8 *)MR(*sp); \ + ip = (const int8_t *)MR(*sp); \ op = (out_type *)MR(*dp); \ - ep = (out_type *)((int8 *)op + len); \ + ep = (out_type *)((int8_t *)op + len); \ \ while(op < ep) \ { \ @@ -315,7 +315,7 @@ void Executor::unpack_int16_t_bits(GUEST *sp, GUEST *dp, INTEGER len) void Executor::C_UnpackBits(GUEST *sp, GUEST *dp, INTEGER len) { - UNPACK_BITS_BODY(int8); + UNPACK_BITS_BODY(int8_t); } BOOLEAN Executor::C_BitTst(Ptr bp, LONGINT bn) diff --git a/src/xdata.cpp b/src/xdata.cpp index d7aa202b..f553ca35 100644 --- a/src/xdata.cpp +++ b/src/xdata.cpp @@ -269,12 +269,12 @@ narrow_p(const uint32_t *bits, int row_longs, int height) static inline bool short_p(const uint32_t *bits, int row_longs, int height) { - const uint8 *p, *end; + const uint8_t *p, *end; int row_bytes; row_bytes = row_longs * sizeof(uint32_t); - end = ((const uint8 *)bits) + row_bytes * height; - for(p = ((const uint8 *)bits) + row_bytes; p != end; p += row_bytes) + end = ((const uint8_t *)bits) + row_bytes * height; + for(p = ((const uint8_t *)bits) + row_bytes; p != end; p += row_bytes) { if(memcmp(bits, p, row_bytes)) return false; @@ -310,7 +310,7 @@ xdata_for_raw_data(PixMap *target, xdata_t *x, uint32_t *raw_bits, if(row_bytes == 1) { for(y = height - 1; y >= 0; y--) - raw_bits[y] = (((const uint8 *)raw_bits)[y]) * 0x01010101U; + raw_bits[y] = (((const uint8_t *)raw_bits)[y]) * 0x01010101U; } else if(row_bytes == 2) { diff --git a/src/xdblt.cpp b/src/xdblt.cpp index 847f8920..319a8b2d 100644 --- a/src/xdblt.cpp +++ b/src/xdblt.cpp @@ -394,7 +394,7 @@ rotate_and_flip_xdata(xdata_t *x, int xrot, uint32_t flip_mask) } else { - uint8 *scratch, *s, *p, *e; + uint8_t *scratch, *s, *p, *e; int rs, bs; /* The following code rotates the pattern array right by @@ -402,8 +402,8 @@ rotate_and_flip_xdata(xdata_t *x, int xrot, uint32_t flip_mask) * byte order. */ - scratch = (uint8 *)alloca(x->byte_size); - e = (uint8 *)xdblt_pattern_end; + scratch = (uint8_t *)alloca(x->byte_size); + e = (uint8_t *)xdblt_pattern_end; bs = xrot >> 3; rs = xrot & 7; @@ -420,17 +420,17 @@ rotate_and_flip_xdata(xdata_t *x, int xrot, uint32_t flip_mask) * rotating by an integral number of bytes. */ - for(p = (uint8 *)xdblt_pattern_baseaddr, s = scratch; + for(p = (uint8_t *)xdblt_pattern_baseaddr, s = scratch; p != e; p += row_bytes, s += row_bytes) { - uint8 next; + uint8_t next; int i; next = p[0]; for(i = xmask; i >= 0; i--) { - uint8 v = p[i]; + uint8_t v = p[i]; s[(i + bs) & xmask] = ((v >> rs) | (next << ls)); next = v; } @@ -443,7 +443,7 @@ rotate_and_flip_xdata(xdata_t *x, int xrot, uint32_t flip_mask) /* Special case for when we are rotating an integral number * of bytes. */ - p = (uint8 *)xdblt_pattern_baseaddr; + p = (uint8_t *)xdblt_pattern_baseaddr; memcpy(scratch, p, x->byte_size); for(s = scratch; p != e; p += row_bytes, s += row_bytes) { From 388e915ebf9d0439b98faede003428c1deade21a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 3 Feb 2018 00:31:12 +0100 Subject: [PATCH 73/88] more include cleanup --- src/include/rsys/lowglobals.h | 1 + src/include/rsys/mactype.h | 28 +--------------------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/src/include/rsys/lowglobals.h b/src/include/rsys/lowglobals.h index 165952dd..dc345e71 100644 --- a/src/include/rsys/lowglobals.h +++ b/src/include/rsys/lowglobals.h @@ -1,6 +1,7 @@ #if !defined(_LOWGLOBALS_H_) #define _LOWGLOBALS_H_ +#include /* * Copyright 1986, 1989, 1990, 1995 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index a5d4f9a2..60564a6f 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -8,10 +8,9 @@ */ #include "host-arch-config.h" -#include "rsys/macros.h" #include #include -#include /* for ROMlib_offset */ +#include #include "rsys/functions.h" @@ -65,10 +64,6 @@ struct Aligner uint8_t align; }; -// For now, SwapTyped is exactly the same as Cx. -// However, Cx is used all over Executor, should learn to handle GUEST<> types, -// and eventually go away. SwapTyped is used internally here, and nowhere else. - #if defined(BIGENDIAN) #define SwapTyped(x) (x) #else @@ -103,24 +98,11 @@ inline syn68k_addr_t US_TO_SYN68K_CHECK0_CHECKNEG1(const void* addr) return US_TO_SYN68K_CHECK0(addr); } -// USE_PACKED_HIDDENVALUE - control which one of two versions -// of template struct/union HiddenValue to use. - -//#define USE_PACKED_HIDDENVALUE - template -#ifdef USE_PACKED_HIDDENVALUE -struct __attribute__((packed, align(2))) HiddenValue -#else union HiddenValue -#endif { -#ifdef USE_PACKED_HIDDENVALUE - ActualType packed; -#else uint8_t data[sizeof(ActualType)]; Aligner align; -#endif public: HiddenValue() = default; HiddenValue(const HiddenValue &y) = default; @@ -128,20 +110,12 @@ union HiddenValue ActualType raw() const { -#ifdef USE_PACKED_HIDDENVALUE - return packed; -#else return *(const ActualType *)data; -#endif } void raw(ActualType x) { -#ifdef USE_PACKED_HIDDENVALUE - packed = x; -#else *(ActualType *)data = x; -#endif } }; From f49d2366a7d4baf2033ce7986c993c2f0043683b Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 3 Feb 2018 02:22:53 +0100 Subject: [PATCH 74/88] rearrange some more things in headers --- src/AE.cpp | 1 + src/CMakeLists.txt | 3 + src/ctlMisc.cpp | 1 + src/functions.cpp | 157 +------------ src/gestalt.cpp | 1 + src/hle.cpp | 1 + src/include/rsys/byteswap.h | 11 - src/include/rsys/common.h | 1 + src/include/rsys/functions.h | 369 +---------------------------- src/include/rsys/functions.impl.h | 373 ++++++++++++++++++++++++++++++ src/include/rsys/mactype.h | 40 +++- src/include/rsys/trapglue.h | 6 +- src/include/rsys/traps.h | 201 ++++++++++++++++ src/listAccess.cpp | 1 + src/listDisplay.cpp | 1 + src/menu.cpp | 1 + src/prLowLevel.cpp | 2 + src/qGDevice.cpp | 1 + src/qStdRgn.cpp | 2 +- src/resOpen.cpp | 1 + src/sound.cpp | 1 + src/soundIMVI.cpp | 1 + src/stdfile.cpp | 2 + src/windMisc.cpp | 1 + 24 files changed, 631 insertions(+), 548 deletions(-) create mode 100644 src/include/rsys/functions.impl.h create mode 100644 src/include/rsys/traps.h diff --git a/src/AE.cpp b/src/AE.cpp index 163d9144..b9bf9cdb 100644 --- a/src/AE.cpp +++ b/src/AE.cpp @@ -18,6 +18,7 @@ #include "rsys/mman.h" #include "rsys/flags.h" +#include "rsys/functions.impl.h" namespace Executor { diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 99369d50..d74f48cc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -270,6 +270,8 @@ set(include_sources hintemplate.h include/rsys/float_fcw.h include/rsys/floatconv.h include/rsys/font.h + include/rsys/functions.h + include/rsys/functions.impl.h include/rsys/gestalt.h include/rsys/glue.h include/rsys/gworld.h @@ -352,6 +354,7 @@ set(include_sources hintemplate.h include/rsys/toolutil.h include/rsys/trapglue.h include/rsys/trapname.h + include/rsys/traps.h include/rsys/uniquefile.h include/rsys/vbl.h include/rsys/vdriver.h diff --git a/src/ctlMisc.cpp b/src/ctlMisc.cpp index 59b824e4..2d2544e3 100644 --- a/src/ctlMisc.cpp +++ b/src/ctlMisc.cpp @@ -14,6 +14,7 @@ #include "rsys/ctl.h" #include "rsys/resource.h" #include "rsys/hook.h" +#include "rsys/functions.impl.h" /* cheat, and make this a plain ctab, so we can use our old accessor macros */ diff --git a/src/functions.cpp b/src/functions.cpp index 4f443cc6..167136c7 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -6,6 +6,7 @@ #include #include #include +#include namespace { @@ -356,162 +357,6 @@ struct LoggedFunctionCC } }; -namespace Executor -{ - namespace callconv - { - -template struct A -{ - template - operator T() { return EM_AREG(n); } - template - operator T*() { return ptr_from_longint(EM_AREG(n)); } - template - operator UPP() { return UPP(ptr_from_longint(EM_AREG(n))); } - - static void set(uint32_t x) { EM_AREG(n) = x; } - static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } - template - static void set(UPP x) { EM_AREG(n) = ptr_to_longint((void*)x); } - - template - static void afterCall(T) {} -}; - -template struct D -{ - template - operator T() { return EM_DREG(n); } - static void set(uint32_t x) { EM_DREG(n) = x; } - - template - static void afterCall(T) {} -}; - -struct D0HighWord -{ - operator uint16_t() { return EM_D0 >> 16; } - - static void set(uint16_t x) - { - EM_D0 = (EM_D0 & 0xFFFF) | (x << 16); - } - - template - static void afterCall(T) {} -}; -struct D0LowWord -{ - operator uint16_t() { return EM_D0 & 0xFFFF; } - - static void set(uint16_t x) - { - EM_D0 = (EM_D0 & 0xFFFF0000) | x; - } - - template - static void afterCall(T) {} -}; - -template struct Out -{ - T temp; - - operator T*() { return &temp; } - - ~Out() { Loc::set(temp); } - - static void set(T* p) {} - static void afterCall(T* p) { *p = Loc(); } -}; - -template struct InOut -{ - T temp; - - operator T*() { return &temp; } - - InOut() { temp = Loc(); } - ~InOut() { Loc::set(temp); } - - static void set(T* p) { Loc::set(*p); } - static void afterCall(T* p) { *p = Loc(); } -}; - - -template struct TrapBit -{ - operator bool() { return !!(EM_D1 & mask); } - - static void set(bool b) - { - if(b) - EM_D1 |= mask; - else - EM_D1 &= ~mask; - } - template - static void afterCall(T) {} -}; - -struct CCFromD0 -{ - syn68k_addr_t afterwards(syn68k_addr_t ret) - { - cpu_state.ccc = 0; - cpu_state.ccn = (cpu_state.regs[0].sw.n < 0); - cpu_state.ccv = 0; - cpu_state.ccx = cpu_state.ccx; /* unchanged */ - cpu_state.ccnz = (cpu_state.regs[0].sw.n != 0); - return ret; - } -}; - -struct ClearD0 -{ - syn68k_addr_t afterwards(syn68k_addr_t ret) - { - EM_D0 = 0; - return ret; - } -}; - -struct SaveA1D1D2 -{ - syn68k_addr_t a1, d1, d2; - SaveA1D1D2() - { - a1 = EM_A1; - d1 = EM_D1; - d2 = EM_D2; - } - syn68k_addr_t afterwards(syn68k_addr_t ret) - { - EM_A1 = a1; - EM_D1 = d1; - EM_D2 = d2; - return ret; - } -}; - -struct MoveA1ToA0 -{ - syn68k_addr_t a1; - MoveA1ToA0() - { - a1 = EM_A1; - } - syn68k_addr_t afterwards(syn68k_addr_t ret) - { - EM_A0 = a1; - return ret; - } -}; - - } -} - template WrappedFunction::WrappedFunction(const char* name) : name(name) diff --git a/src/gestalt.cpp b/src/gestalt.cpp index 595d6c36..a8d0d250 100644 --- a/src/gestalt.cpp +++ b/src/gestalt.cpp @@ -14,6 +14,7 @@ #include "rsys/gestalt.h" #include "rsys/version.h" #include "rsys/vdriver.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/hle.cpp b/src/hle.cpp index c42af643..97cea01d 100644 --- a/src/hle.cpp +++ b/src/hle.cpp @@ -6,6 +6,7 @@ #include "OSEvent.h" #include "MemoryMgr.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/include/rsys/byteswap.h b/src/include/rsys/byteswap.h index 9de7c1c8..a36e94a7 100644 --- a/src/include/rsys/byteswap.h +++ b/src/include/rsys/byteswap.h @@ -84,17 +84,6 @@ inline int32_t Cx_RAW(int32_t x) { return CL_RAW(x); } template TT Cx_RAW(TT x); // no definition. Make sure we get a linker error if an unexpected version of Cx is used. -template -GUEST RM(TT *p) -{ - return GUEST::fromHost(p); -} - -template -TT *MR(GuestWrapper p) -{ - return p.get(); -} inline std::nullptr_t RM(std::nullptr_t p) { return nullptr; } diff --git a/src/include/rsys/common.h b/src/include/rsys/common.h index 9482df2c..50da8d16 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -14,6 +14,7 @@ #include "rsys/macros.h" #include "rsys/functions.h" +#include "rsys/traps.h" #include "rsys/mactype.h" #include "rsys/byteswap.h" diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 0b674e96..71070c2e 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -1,5 +1,4 @@ -#ifndef PASCAL_H_ -#define PASCAL_H_ +#pragma once #include #include @@ -43,171 +42,9 @@ struct CCFromD0; struct ClearD0; struct SaveA1D1D2; struct MoveA1ToA0; - - } using namespace callconv; -namespace callfrom68K -{ - template - struct Invoker; - - template - struct Invoker - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) - { - static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; - return PascalToCCall(addr, &ptocblock); - } - }; - - - template - struct Invoker - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) - { - return fptr(addr, refcon); - } - }; - template struct List; - - template - struct InvokerRec; - - template - struct InvokerRec, List<>, List<>> - { - static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) - { - return fptr(args...); - } - }; - - template - struct InvokerRec, List, List> - { - static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) - { - CC newarg; - return InvokerRec,List,List> - ::invokeFrom68K(addr, refcon, args..., newarg); - } - }; - - template - struct Invoker> - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - syn68k_addr_t retaddr = POPADDR(); - Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); - RetConv::set(retval); // ### double conversion? - return retaddr; - } - }; - template - struct Invoker> - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - syn68k_addr_t retaddr = POPADDR(); - InvokerRec, List, List>::invokeFrom68K(addr, refcon); - return retaddr; - } - }; - - template - struct Invoker> - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) - { - Extra1 state; - syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); - return state.afterwards(retval); - } - }; -} - -namespace callto68K -{ - template - struct Invoker; - - template - struct InvokerRec; - - template<> - struct InvokerRec - { - static void invoke68K(void *ptr) - { - CALL_EMULATOR(US_TO_SYN68K(ptr)); - } - }; - - template - struct InvokerRec - { - static void invoke68K(void *ptr, Arg arg, Args... args) - { - ArgConv::set(arg); - InvokerRec::invoke68K(ptr, args...); - ArgConv::afterCall(arg); - } - }; - - template - struct Invoker> - { - static Ret invoke68K(void *ptr, Args... args) - { - InvokerRec::invoke68K(ptr, args...); - return RetConv(); - } - }; - - template - struct Invoker> - { - static void invoke68K(void *ptr, Args... args) - { - InvokerRec::invoke68K(ptr, args...); - } - }; - - - template - struct Invoker> - { - static Ret invoke68K(void *ptr, Args... args) - { - return (Ret)CToPascalCall(ptr, ctop(), args...); - } - }; - - template - struct Invoker - { - static Ret invoke68K(void *ptr, Args... args) - { - return (Ret)CToPascalCall(ptr, ctop(), args...); - } - }; - - template<> - struct Invoker - { - static syn68k_addr_t invoke68K(void *ptr, syn68k_addr_t, void *) - { - CALL_EMULATOR(US_TO_SYN68K(ptr)); - return POPADDR(); // ### - } - }; - -} struct OpaqueUntyped68KProc; typedef OpaqueUntyped68KProc* ProcPtr; @@ -242,209 +79,7 @@ struct UPP bool operator==(UPP other) const { return ptr == other.ptr; } bool operator!=(UPP other) const { return ptr != other.ptr; } - Ret operator()(Args... args) const - { - return callto68K::Invoker::invoke68K(ptr, args...); - } -}; - - -namespace functions -{ - -namespace selectors -{ - template struct D0; - using D0W = D0<0xFFFF>; - using D0L = D0<0xFFFFFFFF>; - template struct StackWMasked; - template struct StackLMasked; - using StackW = StackWMasked<>; - using StackL = StackLMasked<>; - template struct StackWLookahead; -} - -namespace internal -{ - class DeferredInit - { - public: - DeferredInit(); - virtual void init() = 0; - }; -} - -class GenericDispatcherTrap : public internal::DeferredInit -{ -public: - virtual void addSelector(uint32_t sel, callback_handler_t handler) = 0; -protected: - std::unordered_map selectors; -}; - -template -class DispatcherTrap : public GenericDispatcherTrap -{ - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void* extra); - const char *name; - uint16_t trapno; -public: - virtual void init() override; - virtual void addSelector(uint32_t sel, callback_handler_t handler) override; - DispatcherTrap(const char* name, uint16_t trapno) : name(name), trapno(trapno) {} -}; - -template -class WrappedFunction {}; - -template -class WrappedFunction : public internal::DeferredInit -{ -public: - Ret operator()(Args... args) const - { - return (*fptr)(args...); - } - - UPP operator&() const - { - return guestFP; - } - - virtual void init() override; - - WrappedFunction(const char* name); - - using UPPType = UPP; -protected: - UPPType guestFP; - const char *name; -}; - -template -class TrapFunction {}; - -template -class TrapFunction : public WrappedFunction -{ -public: - using UPPType = typename WrappedFunction::UPPType; - - Ret operator()(Args... args) const - { - if(isPatched()) - return invokeViaTrapTable(args...); - else - return fptr(args...); - } - - virtual void init() override; - - TrapFunction(const char* name) : WrappedFunction(name) {} - - bool isPatched() const { return tableEntry() != originalFunction; } - Ret invokeViaTrapTable(Args...) const; -private: - syn68k_addr_t originalFunction; - - syn68k_addr_t& tableEntry() const - { - if(trapno & TOOLBIT) - return tooltraptable[trapno & 0x3FF]; - else - return ostraptable[trapno & 0xFF]; - } + Ret operator()(Args... args) const; }; -template -class SubTrapFunction {}; - -template -class SubTrapFunction : public WrappedFunction -{ -public: - Ret operator()(Args... args) const { return fptr(args...); } - SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher); -private: - GenericDispatcherTrap& dispatcher; -}; - - -#if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ - -#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ - extern Executor::functions::__VA_ARGS__ NAME - -#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - extern Executor::functions::DispatcherTrap NAME - -#else - -#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ - Executor::functions::__VA_ARGS__ NAME INIT; \ - template class Executor::functions::__VA_ARGS__; - -#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - Executor::functions::DispatcherTrap NAME { #NAME, TRAP } - -#endif - -#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - extern Executor::functions::DispatcherTrap NAME - - -#define COMMA , -#define PASCAL_TRAP(NAME, TRAP) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction) -#define REGISTER_TRAP(NAME, TRAP, ...) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction>) -#define REGISTER_TRAP2(NAME, TRAP, ...) \ - CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME), TrapFunction>) - -#define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction) -#define REGISTER_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction>) -#define REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ - CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME, TRAPNAME), SubTrapFunction>) - -#define NOTRAP_FUNCTION(NAME) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) -#define PASCAL_FUNCTION(NAME) \ - CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) -#define RAW_68K_FUNCTION(NAME) \ - syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), WrappedFunction) -#define RAW_68K_TRAP(NAME, TRAP) \ - syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ - CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), TrapFunction) - - -#define ASYNCBIT (1 << 10) -#define HFSBIT (1 << 9) - -#define FILE_TRAP(NAME, TRAP) \ - REGISTER_TRAP2(NAME, TRAP, D0 (A0, TrapBit)) - -#define FILE_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ - REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, D0 (A0, TrapBit)) - -#define HFS_TRAP(NAME, HNAME, PBTYPE, TRAP) \ - inline OSErr NAME##_##HNAME(ParmBlkPtr pb, Boolean async, Boolean hfs) \ - { \ - return hfs ? HNAME((PBTYPE)pb, async) : NAME(pb, async); \ - } \ - CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME##_##HNAME, \ - (#NAME "/" #HNAME), \ - TrapFunction, TrapBit)>>) - -void resetNestingLevel(); -void init(bool enableLogging); - } - -} - -#endif \ No newline at end of file diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h new file mode 100644 index 00000000..06d43a28 --- /dev/null +++ b/src/include/rsys/functions.impl.h @@ -0,0 +1,373 @@ + +#pragma once + +#include + +namespace Executor +{ + +namespace callconv +{ + +template struct A +{ + template + operator T() { return EM_AREG(n); } + template + operator T*() { return ptr_from_longint(EM_AREG(n)); } + template + operator UPP() { return UPP(ptr_from_longint(EM_AREG(n))); } + + static void set(uint32_t x) { EM_AREG(n) = x; } + static void set(void *x) { EM_AREG(n) = ptr_to_longint(x); } + template + static void set(UPP x) { EM_AREG(n) = ptr_to_longint((void*)x); } + + template + static void afterCall(T) {} +}; + +template struct D +{ + template + operator T() { return EM_DREG(n); } + static void set(uint32_t x) { EM_DREG(n) = x; } + + template + static void afterCall(T) {} +}; + +struct D0HighWord +{ + operator uint16_t() { return EM_D0 >> 16; } + + static void set(uint16_t x) + { + EM_D0 = (EM_D0 & 0xFFFF) | (x << 16); + } + + template + static void afterCall(T) {} +}; +struct D0LowWord +{ + operator uint16_t() { return EM_D0 & 0xFFFF; } + + static void set(uint16_t x) + { + EM_D0 = (EM_D0 & 0xFFFF0000) | x; + } + + template + static void afterCall(T) {} +}; + +template struct Out +{ + T temp; + + operator T*() { return &temp; } + + ~Out() { Loc::set(temp); } + + static void set(T* p) {} + static void afterCall(T* p) { *p = Loc(); } +}; + +template struct InOut +{ + T temp; + + operator T*() { return &temp; } + + InOut() { temp = Loc(); } + ~InOut() { Loc::set(temp); } + + static void set(T* p) { Loc::set(*p); } + static void afterCall(T* p) { *p = Loc(); } +}; + + +template struct TrapBit +{ + operator bool() { return !!(EM_D1 & mask); } + + static void set(bool b) + { + if(b) + EM_D1 |= mask; + else + EM_D1 &= ~mask; + } + template + static void afterCall(T) {} +}; + +struct CCFromD0 +{ + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + cpu_state.ccc = 0; + cpu_state.ccn = (cpu_state.regs[0].sw.n < 0); + cpu_state.ccv = 0; + cpu_state.ccx = cpu_state.ccx; /* unchanged */ + cpu_state.ccnz = (cpu_state.regs[0].sw.n != 0); + return ret; + } +}; + +struct ClearD0 +{ + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_D0 = 0; + return ret; + } +}; + +struct SaveA1D1D2 +{ + syn68k_addr_t a1, d1, d2; + SaveA1D1D2() + { + a1 = EM_A1; + d1 = EM_D1; + d2 = EM_D2; + } + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_A1 = a1; + EM_D1 = d1; + EM_D2 = d2; + return ret; + } +}; + +struct MoveA1ToA0 +{ + syn68k_addr_t a1; + MoveA1ToA0() + { + a1 = EM_A1; + } + syn68k_addr_t afterwards(syn68k_addr_t ret) + { + EM_A0 = a1; + return ret; + } +}; + +namespace stack +{ + template + void push(T x) + { + EM_A7 -= (sizeof(T) + 1) & ~1; + *(ptr_from_longint*>(EM_A7)) = RM(x); + } + template + T pop() + { + T retval = MR(*ptr_from_longint*>(EM_A7)); + EM_A7 += (sizeof(T) + 1) & ~1; + return retval; + } +} +} + +namespace callfrom68K +{ + template + struct Invoker; + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + { + static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; + return PascalToCCall(addr, &ptocblock); + } + }; + + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) + { + return fptr(addr, refcon); + } + }; + template struct List; + + template + struct InvokerRec; + + template + struct InvokerRec, List<>, List<>> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + return fptr(args...); + } + }; + + template + struct InvokerRec, List, List> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + CC newarg; + return InvokerRec,List,List> + ::invokeFrom68K(addr, refcon, args..., newarg); + } + }; + + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); + RetConv::set(retval); // ### double conversion? + return retaddr; + } + }; + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + syn68k_addr_t retaddr = POPADDR(); + InvokerRec, List, List>::invokeFrom68K(addr, refcon); + return retaddr; + } + }; + + template + struct Invoker> + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) + { + Extra1 state; + syn68k_addr_t retval = Invoker>::invokeFrom68K(addr,refcon); + return state.afterwards(retval); + } + }; +} + +namespace callto68K +{ + template + struct Invoker; + + template + struct InvokerRec; + + template<> + struct InvokerRec + { + static void invoke68K(void *ptr) + { + CALL_EMULATOR(US_TO_SYN68K(ptr)); + } + }; + + template + struct InvokerRec + { + static void invoke68K(void *ptr, Arg arg, Args... args) + { + ArgConv::set(arg); + InvokerRec::invoke68K(ptr, args...); + ArgConv::afterCall(arg); + } + }; + + template + struct Invoker> + { + static Ret invoke68K(void *ptr, Args... args) + { + InvokerRec::invoke68K(ptr, args...); + return RetConv(); + } + }; + + template + struct Invoker> + { + static void invoke68K(void *ptr, Args... args) + { + InvokerRec::invoke68K(ptr, args...); + } + }; + + + template + struct Invoker> + { + static Ret invoke68K(void *ptr, Args... args) + { + return (Ret)CToPascalCall(ptr, ctop(), args...); + } + }; + + template + struct Invoker + { + static Ret invoke68K(void *ptr, Args... args) + { + return (Ret)CToPascalCall(ptr, ctop(), args...); + } + }; +/* + template<> + struct Invoker + { + static void invoke68K(void *ptr) + { + CALL_EMULATOR(US_TO_SYN68K(ptr)); + } + }; + template + struct Invoker + { + static void invoke68K(void *ptr, Arg arg, Args... args) + { + callconv::stack::push(arg); + Invoker::invoke68K(ptr, args...); + } + }; + template + struct Invoker + { + static Ret invoke68K(void *ptr, Args... args) + { + callconv::stack::push(Ret()); + Invoker::invoke68K(ptr, args...); + return callconv::stack::pop(); + } + };*/ + + template<> + struct Invoker + { + static syn68k_addr_t invoke68K(void *ptr, syn68k_addr_t, void *) + { + CALL_EMULATOR(US_TO_SYN68K(ptr)); + return POPADDR(); // ### + } + }; + +} + +template +Ret UPP::operator()(Args... args) const +{ + return callto68K::Invoker::invoke68K(ptr, args...); +} + +} diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index 60564a6f..b4213b20 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -13,6 +13,7 @@ #include #include "rsys/functions.h" +#include "rsys/traps.h" #ifndef __cplusplus #error C++ required @@ -342,10 +343,7 @@ bool operator!=(GuestWrapper a, std::nullptr_t) return a; } -#define GUEST_STRUCT \ - struct is_guest_struct \ - { \ - } +#define GUEST_STRUCT struct is_guest_struct {} template<> struct GuestWrapper @@ -378,17 +376,20 @@ struct GuestWrapper v.raw(x.v); h.raw(x.h); } + + static GuestWrapper fromHost(Point x) + { + GuestWrapper w; + w.set(x); + return w; + } + }; template struct GuestType { using type = GuestWrapper; - /* typename std::conditional< - std::is_base_of::value, - TT, - GuestWrapper - >::type;*/ }; namespace internal @@ -468,6 +469,27 @@ struct GuestType using type = GUEST[0]; }; + +template +GUEST RM(TT p) +{ + return GUEST::fromHost(p); +} + +template +TT MR(GuestWrapper p) +{ + return p.get(); +} + +inline char RM(char c) { return c; } +inline unsigned char RM(unsigned char c) { return c; } +inline signed char RM(signed char c) { return c; } +inline char MR(char c) { return c; } +inline unsigned char MR(unsigned char c) { return c; } +inline signed char MR(signed char c) { return c; } + + /* template GUEST guest_ptr_cast(GUEST p) diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index 3826118e..036fc536 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -10,6 +10,8 @@ typedef struct void *wheretogo; uint64_t magic; } ptocblock_t; +extern syn68k_addr_t PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop); +extern uintptr_t CToPascalCall(void *, uint64_t, ...); #define TOOLBIT (0x0800) #define NTOOLENTRIES (0x400) @@ -18,11 +20,7 @@ typedef struct extern syn68k_addr_t tooltraptable[NTOOLENTRIES]; extern syn68k_addr_t ostraptable[NOSENTRIES]; -extern syn68k_addr_t PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop); - extern unsigned short mostrecenttrap; - -extern uintptr_t CToPascalCall(void *, uint64_t, ...); } #endif diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h new file mode 100644 index 00000000..0b21303f --- /dev/null +++ b/src/include/rsys/traps.h @@ -0,0 +1,201 @@ +#pragma once + +namespace Executor +{ + +namespace functions +{ + +namespace selectors +{ + template struct D0; + using D0W = D0<0xFFFF>; + using D0L = D0<0xFFFFFFFF>; + template struct StackWMasked; + template struct StackLMasked; + using StackW = StackWMasked<>; + using StackL = StackLMasked<>; + template struct StackWLookahead; +} + +namespace internal +{ + class DeferredInit + { + public: + DeferredInit(); + virtual void init() = 0; + }; +} + +class GenericDispatcherTrap : public internal::DeferredInit +{ +public: + virtual void addSelector(uint32_t sel, callback_handler_t handler) = 0; +protected: + std::unordered_map selectors; +}; + +template +class DispatcherTrap : public GenericDispatcherTrap +{ + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void* extra); + const char *name; + uint16_t trapno; +public: + virtual void init() override; + virtual void addSelector(uint32_t sel, callback_handler_t handler) override; + DispatcherTrap(const char* name, uint16_t trapno) : name(name), trapno(trapno) {} +}; + +template +class WrappedFunction {}; + +template +class WrappedFunction : public internal::DeferredInit +{ +public: + Ret operator()(Args... args) const + { + return (*fptr)(args...); + } + + UPP operator&() const + { + return guestFP; + } + + virtual void init() override; + + WrappedFunction(const char* name); + + using UPPType = UPP; +protected: + UPPType guestFP; + const char *name; +}; + +template +class TrapFunction {}; + +template +class TrapFunction : public WrappedFunction +{ +public: + using UPPType = typename WrappedFunction::UPPType; + + Ret operator()(Args... args) const + { + if(isPatched()) + return invokeViaTrapTable(args...); + else + return fptr(args...); + } + + virtual void init() override; + + TrapFunction(const char* name) : WrappedFunction(name) {} + + bool isPatched() const { return tableEntry() != originalFunction; } + Ret invokeViaTrapTable(Args...) const; +private: + syn68k_addr_t originalFunction; + + syn68k_addr_t& tableEntry() const + { + if(trapno & TOOLBIT) + return tooltraptable[trapno & 0x3FF]; + else + return ostraptable[trapno & 0xFF]; + } +}; + +template +class SubTrapFunction {}; + +template +class SubTrapFunction : public WrappedFunction +{ +public: + Ret operator()(Args... args) const { return fptr(args...); } + SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher); +private: + GenericDispatcherTrap& dispatcher; +}; + + +#if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ + +#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + extern Executor::functions::__VA_ARGS__ NAME + +#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + extern Executor::functions::DispatcherTrap NAME + +#else + +#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + Executor::functions::__VA_ARGS__ NAME INIT; \ + template class Executor::functions::__VA_ARGS__; + +#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + Executor::functions::DispatcherTrap NAME { #NAME, TRAP } + +#endif + +#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + extern Executor::functions::DispatcherTrap NAME + + +#define COMMA , +#define PASCAL_TRAP(NAME, TRAP) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction) +#define REGISTER_TRAP(NAME, TRAP, ...) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), TrapFunction>) +#define REGISTER_TRAP2(NAME, TRAP, ...) \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME), TrapFunction>) + +#define PASCAL_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction) +#define REGISTER_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME, TRAPNAME), SubTrapFunction>) +#define REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, ...) \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME, (#NAME, TRAPNAME), SubTrapFunction>) + +#define NOTRAP_FUNCTION(NAME) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) +#define PASCAL_FUNCTION(NAME) \ + CREATE_FUNCTION_WRAPPER(NAME, &C_##NAME, (#NAME), WrappedFunction) +#define RAW_68K_FUNCTION(NAME) \ + syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), WrappedFunction) +#define RAW_68K_TRAP(NAME, TRAP) \ + syn68k_addr_t _##NAME(syn68k_addr_t, void *); \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &_##NAME, (#NAME), TrapFunction) + + +#define ASYNCBIT (1 << 10) +#define HFSBIT (1 << 9) + +#define FILE_TRAP(NAME, TRAP) \ + REGISTER_TRAP2(NAME, TRAP, D0 (A0, TrapBit)) + +#define FILE_SUBTRAP(NAME, TRAP, SELECTOR, TRAPNAME) \ + REGISTER_SUBTRAP2(NAME, TRAP, SELECTOR, TRAPNAME, D0 (A0, TrapBit)) + +#define HFS_TRAP(NAME, HNAME, PBTYPE, TRAP) \ + inline OSErr NAME##_##HNAME(ParmBlkPtr pb, Boolean async, Boolean hfs) \ + { \ + return hfs ? HNAME((PBTYPE)pb, async) : NAME(pb, async); \ + } \ + CREATE_FUNCTION_WRAPPER(stub_##NAME, &NAME##_##HNAME, \ + (#NAME "/" #HNAME), \ + TrapFunction, TrapBit)>>) + +void resetNestingLevel(); +void init(bool enableLogging); + +} +} diff --git a/src/listAccess.cpp b/src/listAccess.cpp index 11e0b229..35cbd5d7 100644 --- a/src/listAccess.cpp +++ b/src/listAccess.cpp @@ -10,6 +10,7 @@ #include "IntlUtil.h" #include "rsys/list.h" #include "rsys/hook.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/listDisplay.cpp b/src/listDisplay.cpp index 5fc241b1..f6c1c4bf 100644 --- a/src/listDisplay.cpp +++ b/src/listDisplay.cpp @@ -10,6 +10,7 @@ #include "rsys/cquick.h" #include "rsys/list.h" #include "rsys/hook.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/menu.cpp b/src/menu.cpp index 74847c7c..f169b492 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -36,6 +36,7 @@ #include "rsys/vdriver.h" #include "rsys/notmac.h" #include "rsys/version.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/prLowLevel.cpp b/src/prLowLevel.cpp index 0eff6b69..758eef97 100644 --- a/src/prLowLevel.cpp +++ b/src/prLowLevel.cpp @@ -27,6 +27,8 @@ #include "rsys/options.h" #include "rsys/string.h" #include "rsys/osevent.h" +#include "rsys/functions.impl.h" + #ifdef MACOSX_ //#include "contextswitch.h" #endif diff --git a/src/qGDevice.cpp b/src/qGDevice.cpp index 1187f67c..27e4c95a 100644 --- a/src/qGDevice.cpp +++ b/src/qGDevice.cpp @@ -19,6 +19,7 @@ #include "rsys/autorefresh.h" #include "rsys/redrawscreen.h" #include "rsys/executor.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/qStdRgn.cpp b/src/qStdRgn.cpp index 26b2f0da..2cf961c0 100644 --- a/src/qStdRgn.cpp +++ b/src/qStdRgn.cpp @@ -400,7 +400,7 @@ blt_pixpat_to_pixmap_simple_mode(RgnHandle rh, INTEGER mode, { warning_unexpected("xdata handle NULL_STRING"); xh = (xdata_handle_t)NewHandle(sizeof(xdata_t)); - HxX(xh, raw_pat_bits_mem) = (Ptr)RM(NULL); + HxX(xh, raw_pat_bits_mem) = nullptr; src->patXData = RM((Handle)xh); xdata_valid_p = false; handle_size_wrong_p = false; diff --git a/src/resOpen.cpp b/src/resOpen.cpp index 1dd727eb..23a39019 100644 --- a/src/resOpen.cpp +++ b/src/resOpen.cpp @@ -15,6 +15,7 @@ #include "rsys/file.h" #include "rsys/osevent.h" #include "rsys/prefs.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/sound.cpp b/src/sound.cpp index bff0c10a..fbfabacb 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -13,6 +13,7 @@ #include "rsys/sounddriver.h" #include "rsys/blockinterrupts.h" #include "rsys/mman.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/soundIMVI.cpp b/src/soundIMVI.cpp index f58f280a..0f8bf1e3 100644 --- a/src/soundIMVI.cpp +++ b/src/soundIMVI.cpp @@ -16,6 +16,7 @@ #include "rsys/blockinterrupts.h" #include "rsys/prefs.h" #include "rsys/soundopts.h" +#include "rsys/functions.impl.h" using namespace Executor; diff --git a/src/stdfile.cpp b/src/stdfile.cpp index ad2f8031..fdfaa2d5 100644 --- a/src/stdfile.cpp +++ b/src/stdfile.cpp @@ -70,6 +70,8 @@ int Executor::nodrivesearch_p = false; #include "rsys/print.h" #include "rsys/system_error.h" +#include "rsys/functions.impl.h" + using namespace Executor; typedef union { diff --git a/src/windMisc.cpp b/src/windMisc.cpp index fced2fa3..a7056e51 100644 --- a/src/windMisc.cpp +++ b/src/windMisc.cpp @@ -19,6 +19,7 @@ #include "rsys/evil.h" #include "rsys/executor.h" +#include "rsys/functions.impl.h" using namespace Executor; From 1541a9a7f6463413e82773b850a376407eb85a1a Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 3 Feb 2018 11:43:27 +0100 Subject: [PATCH 75/88] more header rearrangements --- src/ctlMouse.cpp | 1 + src/dialHandle.cpp | 1 + src/include/rsys/functions.impl.h | 6 ++++++ src/include/rsys/mactype.h | 6 +----- src/listMouse.cpp | 1 + src/mmansubr.cpp | 1 + src/qHooks.cpp | 1 + src/qPicstuff.cpp | 1 + 8 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ctlMouse.cpp b/src/ctlMouse.cpp index 785ecc33..0935d203 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -18,6 +18,7 @@ #include "rsys/wind.h" #include "rsys/stdfile.h" #include "rsys/hook.h" +#include /* * Loser suggests that controls are tested in the opposite order that diff --git a/src/dialHandle.cpp b/src/dialHandle.cpp index 2e132e4a..a851f938 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -30,6 +30,7 @@ #include "rsys/hook.h" #include "rsys/executor.h" #include "rsys/osevent.h" +#include using namespace Executor; diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h index 06d43a28..0d32b136 100644 --- a/src/include/rsys/functions.impl.h +++ b/src/include/rsys/functions.impl.h @@ -370,4 +370,10 @@ Ret UPP::operator()(Args... args) const return callto68K::Invoker::invoke68K(ptr, args...); } +template +Ret GuestWrapperBase>::operator()(Args... args) +{ + return (this->get())(args...); +} + } diff --git a/src/include/rsys/mactype.h b/src/include/rsys/mactype.h index b4213b20..8365c37c 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -545,11 +545,7 @@ struct GuestWrapperBase> { this->raw(swap32(x)); } - - Ret operator()(Args... args) - { - return (this->get())(args...); - } + Ret operator()(Args... args); // definition in rsys/functions.impl.h to reduce dependencies }; template diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 93d606f9..a531ea57 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -15,6 +15,7 @@ #include "rsys/cquick.h" #include "rsys/list.h" #include "rsys/hook.h" +#include using namespace Executor; diff --git a/src/mmansubr.cpp b/src/mmansubr.cpp index c4a2149d..77b0e7c2 100644 --- a/src/mmansubr.cpp +++ b/src/mmansubr.cpp @@ -15,6 +15,7 @@ #include "rsys/hook.h" #include "rsys/system_error.h" #include "rsys/vdriver.h" +#include "rsys/functions.impl.h" #include diff --git a/src/qHooks.cpp b/src/qHooks.cpp index 716b45fa..6a049f56 100644 --- a/src/qHooks.cpp +++ b/src/qHooks.cpp @@ -8,6 +8,7 @@ #include "rsys/hook.h" #include "rsys/print.h" #include "rsys/options.h" +#include using namespace Executor; diff --git a/src/qPicstuff.cpp b/src/qPicstuff.cpp index 7afc2550..c8c619e7 100644 --- a/src/qPicstuff.cpp +++ b/src/qPicstuff.cpp @@ -22,6 +22,7 @@ #include "rsys/tempalloc.h" #include "rsys/print.h" #include "rsys/executor.h" +#include using namespace Executor; From 72f7b54f16a25a18f901ddfae8cafbb3ea1f1bee Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 7 Feb 2018 00:38:01 +0100 Subject: [PATCH 76/88] pascal calling convention handled by templates --- src/include/rsys/functions.h | 1 - src/include/rsys/functions.impl.h | 111 +++++++++++++++++++++++------- 2 files changed, 88 insertions(+), 24 deletions(-) diff --git a/src/include/rsys/functions.h b/src/include/rsys/functions.h index 71070c2e..1600b7ac 100644 --- a/src/include/rsys/functions.h +++ b/src/include/rsys/functions.h @@ -6,7 +6,6 @@ #include #include #include "rsys/trapglue.h" -#include "rsys/ctop_ptoc.h" #include namespace Executor diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h index 0d32b136..9170ef4d 100644 --- a/src/include/rsys/functions.impl.h +++ b/src/include/rsys/functions.impl.h @@ -2,6 +2,13 @@ #pragma once #include +#include + +//#define USE_DYNAMIC_CTOP_PTOC + +#ifdef USE_DYNAMIC_CTOP_PTOC +#include +#endif namespace Executor { @@ -162,14 +169,14 @@ namespace stack template void push(T x) { - EM_A7 -= (sizeof(T) + 1) & ~1; + EM_A7 -= (sizeof(GUEST) + 1) & ~1; *(ptr_from_longint*>(EM_A7)) = RM(x); } template T pop() { T retval = MR(*ptr_from_longint*>(EM_A7)); - EM_A7 += (sizeof(T) + 1) & ~1; + EM_A7 += (sizeof(GUEST) + 1) & ~1; return retval; } } @@ -180,16 +187,81 @@ namespace callfrom68K template struct Invoker; + template struct List; + +#ifdef USE_DYNAMIC_CTOP_PTOC template struct Invoker { static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) { + printf("---> %x\n", EM_A7); static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; - return PascalToCCall(addr, &ptocblock); + syn68k_addr_t ret = PascalToCCall(addr, &ptocblock); + printf("|--> %x\n", EM_A7); + return ret; + } + }; +#else + + template + struct PascalInvoker; + + template + struct PascalInvoker, List<>> + { + static void invokeFrom68K(Ret (*fptr)(Args...), Args... args) + { + Ret retval = fptr(args...); + *ptr_from_longint*>(EM_A7) = RM(retval); + } + }; + + template + struct PascalInvoker, List<>> + { + static void invokeFrom68K(void (*fptr)(Args...), Args... args) + { + fptr(args...); + } + }; + + template + struct PascalInvoker, List> + { + static void invokeFrom68K(F* fptr, Args... args) + { + Arg arg = callconv::stack::pop(); + PascalInvoker, List>::invokeFrom68K(fptr, arg, args...); } }; + template> + struct Reverse; + + template + struct Reverse, List> + { + using type = typename Reverse, List>::type; + }; + + template + struct Reverse, List> + { + using type = List; + }; + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) + { + syn68k_addr_t retaddr = callconv::stack::pop(); + PascalInvoker, typename Reverse>::type>::invokeFrom68K(fptr); + return retaddr; + } + }; +#endif template struct Invoker @@ -199,13 +271,12 @@ namespace callfrom68K return fptr(addr, refcon); } }; - template struct List; template - struct InvokerRec; + struct RegInvoker; template - struct InvokerRec, List<>, List<>> + struct RegInvoker, List<>, List<>> { static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) { @@ -214,12 +285,12 @@ namespace callfrom68K }; template - struct InvokerRec, List, List> + struct RegInvoker, List, List> { static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) { CC newarg; - return InvokerRec,List,List> + return RegInvoker,List,List> ::invokeFrom68K(addr, refcon, args..., newarg); } }; @@ -230,7 +301,7 @@ namespace callfrom68K static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) { syn68k_addr_t retaddr = POPADDR(); - Ret retval = InvokerRec, List, List>::invokeFrom68K(addr, refcon); + Ret retval = RegInvoker, List, List>::invokeFrom68K(addr, refcon); RetConv::set(retval); // ### double conversion? return retaddr; } @@ -241,7 +312,7 @@ namespace callfrom68K static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *refcon) { syn68k_addr_t retaddr = POPADDR(); - InvokerRec, List, List>::invokeFrom68K(addr, refcon); + RegInvoker, List, List>::invokeFrom68K(addr, refcon); return retaddr; } }; @@ -305,16 +376,7 @@ namespace callto68K } }; - - template - struct Invoker> - { - static Ret invoke68K(void *ptr, Args... args) - { - return (Ret)CToPascalCall(ptr, ctop(), args...); - } - }; - +#ifdef USE_DYNAMIC_CTOP_PTOC template struct Invoker { @@ -323,13 +385,16 @@ namespace callto68K return (Ret)CToPascalCall(ptr, ctop(), args...); } }; -/* +#else template<> struct Invoker { static void invoke68K(void *ptr) { + M68kReg saveregs[14]; + memcpy(saveregs, &EM_D1, sizeof(saveregs)); /* d1-d7/a0-a6 */ CALL_EMULATOR(US_TO_SYN68K(ptr)); + memcpy(&EM_D1, saveregs, sizeof(saveregs)); /* d1-d7/a0-a6 */ } }; template @@ -350,8 +415,8 @@ namespace callto68K Invoker::invoke68K(ptr, args...); return callconv::stack::pop(); } - };*/ - + }; +#endif template<> struct Invoker { From dd9dbadcd1494f5a7d359aa05189d6450487ebe9 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 9 Feb 2018 21:24:18 +0100 Subject: [PATCH 77/88] move logging to separate module --- src/CMakeLists.txt | 4 +- src/functions.cpp | 348 +------------------------------------ src/include/rsys/logging.h | 179 +++++++++++++++++++ src/include/rsys/traps.h | 1 - src/launch.cpp | 4 +- src/logging.cpp | 205 ++++++++++++++++++++++ 6 files changed, 397 insertions(+), 344 deletions(-) create mode 100644 src/include/rsys/logging.h create mode 100644 src/logging.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d74f48cc..aba482c7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -174,7 +174,9 @@ set(num_sources bindec.cpp float4.cpp float5.cpp float7.cpp floatnext.cpp toolma mathlib.cpp) source_group(Numerics FILES ${num_sources}) -set(misc_sources functions.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp +set(misc_sources + functions.cpp logging.cpp + desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp gestalt.cpp globals.cpp iu.cpp launch.cpp main.cpp mman.cpp mmansubr.cpp notify.cpp hle.cpp osevent.cpp osutil.cpp pack.cpp scrap.cpp script.cpp segment.cpp serial.cpp slash.cpp stdfile.cpp romlib_stubs.cpp syserr.cpp toolevent.cpp toolutil.cpp time.cpp diff --git a/src/functions.cpp b/src/functions.cpp index 167136c7..04f82df8 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -7,11 +7,11 @@ #include #include #include +#include namespace { std::vector initObjects; - std::unordered_map namedThings; } #include @@ -23,353 +23,19 @@ namespace using namespace Executor; using namespace Executor::functions; -template -struct LoggedFunction; - -static int nestingLevel = 0; -static bool loggingEnabled = false; - -void functions::resetNestingLevel() -{ - nestingLevel = 0; -} -static void indent() -{ - for(int i = 0; i < nestingLevel; i++) - std::cout << " "; -} -static bool loggingActive() -{ - return nestingLevel == 0; -} - -void logEscapedChar(unsigned char c) -{ - if(c == '\'' || c == '\"' || c == '\\') - std::cout << '\\' << c; - else if(std::isprint(c)) - std::cout << c; - else - std::cout << "\\0" << std::oct << (unsigned)c << std::dec; -} - -bool canConvertBack(const void* p) -{ - if(!p || p == (const void*) -1) - return true; -#if SIZEOF_VOID_P == 4 - bool valid = true; -#else - bool valid = false; - for(int i = 0; i < 4; i++) - { - if((uintptr_t)p >= ROMlib_offsets[i] && - (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) - valid = true; - } -#endif - return valid; -} - -bool validAddress(const void* p) -{ - if(!p) - return false; - if( (uintptr_t)p & 1 ) - return false; -#if SIZEOF_VOID_P == 4 - bool valid = true; -#else - bool valid = false; - for(int i = 0; i < 4; i++) - { - if((uintptr_t)p >= ROMlib_offsets[i] && - (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) - valid = true; - } -#endif - if(!valid) - return false; - - return true; -} - -bool validAddress(syn68k_addr_t p) -{ - if(p == 0 || (p & 1)) - return false; - return validAddress(SYN68K_TO_US(p)); -} - -template -bool validAddress(GUEST p) -{ - return validAddress(p.raw_host_order()); -} - -template -void logValue(const T& arg) -{ - std::cout << "?"; -} -template -void logValue(const GuestWrapper& p) -{ - logValue(p.get()); -} - -void logValue(char x) -{ - std::cout << (int)x; - std::cout << " = '"; - logEscapedChar(x); - std::cout << '\''; -} -void logValue(unsigned char x) -{ - std::cout << (int)x; - if(std::isprint(x)) - std::cout << " = '" << x << '\''; -} -void logValue(signed char x) -{ - std::cout << (int)x; - if(std::isprint(x)) - std::cout << " = '" << x << '\''; -} -void logValue(int16_t x) { std::cout << x; } -void logValue(uint16_t x) { std::cout << x; } -void logValue(int32_t x) -{ - std::cout << x << " = '"; - logEscapedChar((x >> 24) & 0xFF); - logEscapedChar((x >> 16) & 0xFF); - logEscapedChar((x >> 8) & 0xFF); - logEscapedChar(x & 0xFF); - std::cout << "'"; -} -void logValue(uint32_t x) -{ - std::cout << x << " = '"; - logEscapedChar((x >> 24) & 0xFF); - logEscapedChar((x >> 16) & 0xFF); - logEscapedChar((x >> 8) & 0xFF); - logEscapedChar(x & 0xFF); - std::cout << "'"; -} -void logValue(unsigned char* p) -{ - std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; - if(validAddress(p) && validAddress(p+256)) - { - std::cout << " = \"\\p"; - for(int i = 1; i <= p[0]; i++) - logEscapedChar(p[i]); - std::cout << '"'; - } -} -void logValue(const void* p) -{ - if(canConvertBack(p)) - std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; - else - std::cout << "?"; -} -void logValue(void* p) -{ - if(canConvertBack(p)) - std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; - else - std::cout << "?"; -} -void logValue(ProcPtr p) -{ - if(canConvertBack(p)) - std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; - else - std::cout << "?"; -} - -template -void logValue(T* p) -{ - if(canConvertBack(p)) - std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; - else - std::cout << "?"; - if(validAddress(p)) - { - std::cout << " => "; - logValue(*p); - } -} -template -void logValue(GuestWrapper p) -{ - std::cout << "0x" << std::hex << p.raw() << std::dec; - if(validAddress(p.raw_host_order())) - { - std::cout << " => "; - logValue(*(p.get())); - } -} - -template -void logList(Arg a) -{ - logValue(a); -} -void logList() -{ -} -template -void logList(Arg1 a, Arg2 b, Args... args) -{ - logValue(a); - std::cout << ", "; - logList(b,args...); -} - - -template -void logTrapCall(const char* trapname, Args... args) -{ - if(!loggingActive()) - return; - std::cout.clear(); - indent(); - std::cout << trapname << "("; - logList(args...); - std::cout << ")\n" << std::flush; -} - -template -void logTrapValReturn(const char* trapname, Ret ret, Args... args) -{ - if(!loggingActive()) - return; - indent(); - std::cout << "returning: " << trapname << "("; - logList(args...); - std::cout << ") => "; - logValue(ret); - std::cout << std::endl << std::flush; -} -template -void logTrapVoidReturn(const char* trapname, Args... args) -{ - if(!loggingActive()) - return; - indent(); - std::cout << "returning: " << trapname << "("; - logList(args...); - std::cout << ")\n" << std::flush; -} - - -template -struct LoggedFunction -{ - static void call(Args... args) - { - const char *fname = namedThings.at((void*)fptr); - logTrapCall(fname, args...); - nestingLevel++; - fptr(args...); - nestingLevel--; - logTrapVoidReturn(fname, args...); - } -}; - -template -struct LoggedFunction -{ - static Ret call(Args... args) - { - const char *fname = namedThings.at((void*)fptr); - logTrapCall(fname, args...); - nestingLevel++; - Ret retval = fptr(args...); - nestingLevel--; - logTrapValReturn(fname, retval, args...); - return retval; - } -}; - -void dumpRegsAndStack() -{ - std::cout << std::hex << /*std::showbase <<*/ std::setfill('0'); - std::cout << "D0=" << std::setw(8) << EM_D0 << " "; - std::cout << "D1=" << std::setw(8) << EM_D1 << " "; - std::cout << "A0=" << std::setw(8) << EM_A0 << " "; - std::cout << "A1=" << std::setw(8) << EM_A1 << " "; - //std::cout << std::noshowbase; - std::cout << "Stack: "; - uint8_t *p = (uint8_t*)SYN68K_TO_US(EM_A7); - for(int i = 0; i < 12; i++) - std::cout << std::setfill('0') << std::setw(2) << (unsigned)p[i] << " "; - std::cout << std::dec; -} - -template -syn68k_addr_t untypedLoggedFunction(syn68k_addr_t addr, void * param) -{ - const char *fname = namedThings.at((void*)fptr); - if(loggingActive()) - { - std::cout.clear(); - indent(); - std::cout << fname << " "; - dumpRegsAndStack(); - std::cout << std::endl; - } - nestingLevel++; - syn68k_addr_t retaddr = (*fptr)(addr, param); - nestingLevel--; - if(loggingActive()) - { - indent(); - std::cout << "returning: " << fname << " "; - dumpRegsAndStack(); - std::cout << std::endl << std::flush; - } - return retaddr; -} - -template -struct LoggedFunctionCC; - -template -struct LoggedFunctionCC -{ - static syn68k_addr_t call(syn68k_addr_t addr, void * param) - { - return untypedLoggedFunction(addr, param); - } -}; - -template -struct LoggedFunctionCC -{ - static Ret call(Args... args) - { - return LoggedFunction::call(args...); - } -}; - template WrappedFunction::WrappedFunction(const char* name) : name(name) { - namedThings[(void*) fptr] = name; } template void WrappedFunction::init() { - if(loggingEnabled) + logging::namedThings[(void*) fptr] = name; + if(logging::enabled()) guestFP = (UPP)SYN68K_TO_US(callback_install( - callfrom68K::Invoker::call, CallConv> + callfrom68K::Invoker::call, CallConv> ::invokeFrom68K, nullptr)); else guestFP = (UPP)SYN68K_TO_US(callback_install( @@ -397,8 +63,8 @@ template::SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher) : WrappedFunction(name), dispatcher(dispatcher) { - if(loggingEnabled) - dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> + if(logging::enabled()) + dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> ::invokeFrom68K); else dispatcher.addSelector(selector, callfrom68K::Invoker @@ -520,7 +186,7 @@ syn68k_addr_t Executor::ostraptable[NOSENTRIES]; /* Gets filled in at run time * void functions::init(bool log) { - loggingEnabled = log; + logging::setEnabled(log); for(auto init : initObjects) init->init(); for(int i = 0; i < NTOOLENTRIES; i++) diff --git a/src/include/rsys/logging.h b/src/include/rsys/logging.h new file mode 100644 index 00000000..bff973b8 --- /dev/null +++ b/src/include/rsys/logging.h @@ -0,0 +1,179 @@ +#pragma once +#include +#include + +#include +#include + +namespace Executor +{ +namespace logging +{ + +template +struct LoggedFunction; + +bool enabled(); +void setEnabled(bool e); +void resetNestingLevel(); + +bool loggingActive(); +void indent(); + +extern int nestingLevel; +extern std::unordered_map namedThings; + +syn68k_addr_t untypedLoggedFunction(syn68k_addr_t (*fptr)(syn68k_addr_t, void *), syn68k_addr_t addr, void * param); + + +void logEscapedChar(unsigned char c); +bool canConvertBack(const void* p); +bool validAddress(const void* p); +bool validAddress(syn68k_addr_t p); +void logValue(char x); +void logValue(unsigned char x); +void logValue(signed char x); +void logValue(int16_t x); +void logValue(uint16_t x); +void logValue(int32_t x); +void logValue(uint32_t x); +void logValue(unsigned char* p); +void logValue(const void* p); +void logValue(void* p); +void logValue(ProcPtr p); +void dumpRegsAndStack(); + +template +void logValue(const T& arg) +{ + std::cout << "?"; +} +template +void logValue(const GuestWrapper& p) +{ + logValue(p.get()); +} +template +void logValue(T* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; + if(validAddress(p)) + { + std::cout << " => "; + logValue(*p); + } +} +template +void logValue(GuestWrapper p) +{ + std::cout << "0x" << std::hex << p.raw() << std::dec; + if(validAddress(p.raw_host_order())) + { + std::cout << " => "; + logValue(*(p.get())); + } +} + + +template +inline void logList(Arg a) +{ + logValue(a); +} +inline void logList() +{ +} +template +void logList(Arg1 a, Arg2 b, Args... args) +{ + logValue(a); + std::cout << ", "; + logList(b,args...); +} + +template +bool validAddress(GUEST p) +{ + return validAddress(p.raw_host_order()); +} + +template +void logTrapCall(const char* trapname, Args... args) +{ + if(!loggingActive()) + return; + std::cout.clear(); + indent(); + std::cout << trapname << "("; + logList(args...); + std::cout << ")\n" << std::flush; +} + +template +void logTrapValReturn(const char* trapname, Ret ret, Args... args) +{ + if(!loggingActive()) + return; + indent(); + std::cout << "returning: " << trapname << "("; + logList(args...); + std::cout << ") => "; + logValue(ret); + std::cout << std::endl << std::flush; +} +template +void logTrapVoidReturn(const char* trapname, Args... args) +{ + if(!loggingActive()) + return; + indent(); + std::cout << "returning: " << trapname << "("; + logList(args...); + std::cout << ")\n" << std::flush; +} + + +template +struct LoggedFunction +{ + static void call(Args... args) + { + const char *fname = namedThings.at((void*)fptr); + logTrapCall(fname, args...); + nestingLevel++; + fptr(args...); + nestingLevel--; + logTrapVoidReturn(fname, args...); + } +}; + +template +struct LoggedFunction +{ + static Ret call(Args... args) + { + const char *fname = namedThings.at((void*)fptr); + logTrapCall(fname, args...); + nestingLevel++; + Ret retval = fptr(args...); + nestingLevel--; + logTrapValReturn(fname, retval, args...); + return retval; + } +}; + +template +struct LoggedFunction +{ + static syn68k_addr_t call(syn68k_addr_t addr, void * param) + { + return untypedLoggedFunction(fptr, addr, param); + } +}; + + +} +} diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h index 0b21303f..52b9fe8b 100644 --- a/src/include/rsys/traps.h +++ b/src/include/rsys/traps.h @@ -194,7 +194,6 @@ class SubTrapFunction : public &NAME##_##HNAME, TRAP, \ callconv::Register, TrapBit)>>) -void resetNestingLevel(); void init(bool enableLogging); } diff --git a/src/launch.cpp b/src/launch.cpp index 764a1244..9cedeaa6 100644 --- a/src/launch.cpp +++ b/src/launch.cpp @@ -77,6 +77,8 @@ #include "rsys/version.h" #include "rsys/appearance.h" +#include "rsys/logging.h" + using namespace Executor; static bool ppc_launch_p = false; @@ -1294,7 +1296,7 @@ Executor::NewLaunch(StringPtr fName_arg, INTEGER vRefNum_arg, LaunchParamBlockRe } else longjmp(buf, 1); - functions::resetNestingLevel(); + logging::resetNestingLevel(); retval = noErr; reset_adb_vector(); diff --git a/src/logging.cpp b/src/logging.cpp new file mode 100644 index 00000000..de6b264b --- /dev/null +++ b/src/logging.cpp @@ -0,0 +1,205 @@ +#include +#include + +using namespace Executor; + +int logging::nestingLevel = 0; +static bool loggingEnabled = false; +std::unordered_map logging::namedThings; + +void logging::resetNestingLevel() +{ + nestingLevel = 0; +} +void logging::indent() +{ + for(int i = 0; i < nestingLevel; i++) + std::cout << " "; +} + +bool logging::enabled() +{ + return loggingEnabled; +} + +void logging::setEnabled(bool e) +{ + loggingEnabled = e; +} + +bool logging::loggingActive() +{ + return nestingLevel == 0; +} + +void logging::logEscapedChar(unsigned char c) +{ + if(c == '\'' || c == '\"' || c == '\\') + std::cout << '\\' << c; + else if(std::isprint(c)) + std::cout << c; + else + std::cout << "\\0" << std::oct << (unsigned)c << std::dec; +} + +bool logging::canConvertBack(const void* p) +{ + if(!p || p == (const void*) -1) + return true; +#if SIZEOF_VOID_P == 4 + bool valid = true; +#else + bool valid = false; + for(int i = 0; i < 4; i++) + { + if((uintptr_t)p >= ROMlib_offsets[i] && + (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) + valid = true; + } +#endif + return valid; +} + +bool logging::validAddress(const void* p) +{ + if(!p) + return false; + if( (uintptr_t)p & 1 ) + return false; +#if SIZEOF_VOID_P == 4 + bool valid = true; +#else + bool valid = false; + for(int i = 0; i < 4; i++) + { + if((uintptr_t)p >= ROMlib_offsets[i] && + (uintptr_t)p < ROMlib_offsets[i] + ROMlib_sizes[i]) + valid = true; + } +#endif + if(!valid) + return false; + + return true; +} + +bool logging::validAddress(syn68k_addr_t p) +{ + if(p == 0 || (p & 1)) + return false; + return validAddress(SYN68K_TO_US(p)); +} + + +void logging::logValue(char x) +{ + std::cout << (int)x; + std::cout << " = '"; + logEscapedChar(x); + std::cout << '\''; +} +void logging::logValue(unsigned char x) +{ + std::cout << (int)x; + if(std::isprint(x)) + std::cout << " = '" << x << '\''; +} +void logging::logValue(signed char x) +{ + std::cout << (int)x; + if(std::isprint(x)) + std::cout << " = '" << x << '\''; +} +void logging::logValue(int16_t x) { std::cout << x; } +void logging::logValue(uint16_t x) { std::cout << x; } +void logging::logValue(int32_t x) +{ + std::cout << x << " = '"; + logEscapedChar((x >> 24) & 0xFF); + logEscapedChar((x >> 16) & 0xFF); + logEscapedChar((x >> 8) & 0xFF); + logEscapedChar(x & 0xFF); + std::cout << "'"; +} +void logging::logValue(uint32_t x) +{ + std::cout << x << " = '"; + logEscapedChar((x >> 24) & 0xFF); + logEscapedChar((x >> 16) & 0xFF); + logEscapedChar((x >> 8) & 0xFF); + logEscapedChar(x & 0xFF); + std::cout << "'"; +} +void logging::logValue(unsigned char* p) +{ + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + if(validAddress(p) && validAddress(p+256)) + { + std::cout << " = \"\\p"; + for(int i = 1; i <= p[0]; i++) + logEscapedChar(p[i]); + std::cout << '"'; + } +} +void logging::logValue(const void* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} +void logging::logValue(void* p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} +void logging::logValue(ProcPtr p) +{ + if(canConvertBack(p)) + std::cout << "0x" << std::hex << US_TO_SYN68K_CHECK0_CHECKNEG1(p) << std::dec; + else + std::cout << "?"; +} + + +void logging::dumpRegsAndStack() +{ + std::cout << std::hex << /*std::showbase <<*/ std::setfill('0'); + std::cout << "D0=" << std::setw(8) << EM_D0 << " "; + std::cout << "D1=" << std::setw(8) << EM_D1 << " "; + std::cout << "A0=" << std::setw(8) << EM_A0 << " "; + std::cout << "A1=" << std::setw(8) << EM_A1 << " "; + //std::cout << std::noshowbase; + std::cout << "Stack: "; + uint8_t *p = (uint8_t*)SYN68K_TO_US(EM_A7); + for(int i = 0; i < 12; i++) + std::cout << std::setfill('0') << std::setw(2) << (unsigned)p[i] << " "; + std::cout << std::dec; +} + + +syn68k_addr_t logging::untypedLoggedFunction(syn68k_addr_t (*fptr)(syn68k_addr_t, void *), syn68k_addr_t addr, void * param) +{ + const char *fname = namedThings.at((void*)fptr); + if(loggingActive()) + { + std::cout.clear(); + indent(); + std::cout << fname << " "; + dumpRegsAndStack(); + std::cout << std::endl; + } + nestingLevel++; + syn68k_addr_t retaddr = (*fptr)(addr, param); + nestingLevel--; + if(loggingActive()) + { + indent(); + std::cout << "returning: " << fname << " "; + dumpRegsAndStack(); + std::cout << std::endl << std::flush; + } + return retaddr; +} From 1678bb1914e7567c5838f8f6fb723293b57ffd7f Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 9 Feb 2018 23:16:03 +0100 Subject: [PATCH 78/88] split up functions.cpp into traps.cpp and traps.instances.cpp --- src/CMakeLists.txt | 4 +- src/include/rsys/functions.impl.h | 5 +- src/include/rsys/traps.h | 4 + .../rsys/traps.impl.h} | 158 ++++++------------ src/traps.cpp | 57 +++++++ src/traps.instances.cpp | 17 ++ 6 files changed, 136 insertions(+), 109 deletions(-) rename src/{functions.cpp => include/rsys/traps.impl.h} (75%) create mode 100644 src/traps.cpp create mode 100644 src/traps.instances.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index aba482c7..d9959a47 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -175,7 +175,7 @@ set(num_sources bindec.cpp float4.cpp float5.cpp float7.cpp floatnext.cpp toolma source_group(Numerics FILES ${num_sources}) set(misc_sources - functions.cpp logging.cpp + traps.cpp logging.cpp traps.instances.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp gestalt.cpp globals.cpp iu.cpp launch.cpp main.cpp mman.cpp mmansubr.cpp notify.cpp hle.cpp osevent.cpp osutil.cpp pack.cpp scrap.cpp script.cpp segment.cpp serial.cpp @@ -292,6 +292,7 @@ set(include_sources hintemplate.h include/rsys/launch.h include/rsys/list.h include/rsys/lockunlock.h + include/rsys/logging.h include/rsys/lowglobals.h include/rsys/m68kint.h include/rsys/macros.h @@ -357,6 +358,7 @@ set(include_sources hintemplate.h include/rsys/trapglue.h include/rsys/trapname.h include/rsys/traps.h + include/rsys/traps.impl.h include/rsys/uniquefile.h include/rsys/vbl.h include/rsys/vdriver.h diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h index 9170ef4d..7b76855d 100644 --- a/src/include/rsys/functions.impl.h +++ b/src/include/rsys/functions.impl.h @@ -2,6 +2,9 @@ #pragma once #include +#include +#include + #include //#define USE_DYNAMIC_CTOP_PTOC @@ -195,10 +198,8 @@ namespace callfrom68K { static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) { - printf("---> %x\n", EM_A7); static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; syn68k_addr_t ret = PascalToCCall(addr, &ptocblock); - printf("|--> %x\n", EM_A7); return ret; } }; diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h index 52b9fe8b..c438942a 100644 --- a/src/include/rsys/traps.h +++ b/src/include/rsys/traps.h @@ -25,6 +25,10 @@ namespace internal public: DeferredInit(); virtual void init() = 0; + static void initAll(); + private: + DeferredInit *next; + static DeferredInit *first, *last; }; } diff --git a/src/functions.cpp b/src/include/rsys/traps.impl.h similarity index 75% rename from src/functions.cpp rename to src/include/rsys/traps.impl.h index 04f82df8..bf8c50e7 100644 --- a/src/functions.cpp +++ b/src/include/rsys/traps.impl.h @@ -1,27 +1,62 @@ -#include -#include -#include - -#define FUNCTION_WRAPPER_IMPLEMENTATION -#include -#include -#include +#pragma once + +#include #include #include -namespace +#include +#include + +namespace Executor +{ +namespace functions { - std::vector initObjects; -} -#include -#include -#include +namespace selectors +{ +template +struct D0 +{ + static const uint32_t selectorMask = mask; + static uint32_t get() { return EM_D0 & mask; } +}; -#include +template +struct StackWMasked +{ + static const uint32_t selectorMask = mask; + static uint32_t get() + { + auto ret = POPADDR(); + auto sel = POPUW(); + PUSHADDR(ret); + return sel & mask; + } +}; -using namespace Executor; -using namespace Executor::functions; +template +struct StackLMasked +{ + static const uint32_t selectorMask = mask; + static uint32_t get() + { + auto ret = POPADDR(); + auto sel = POPUL(); + PUSHADDR(ret); + return sel & mask; + } +}; +template +struct StackWLookahead +{ + static const uint32_t selectorMask = mask; + static uint32_t get() + { + return READUW(EM_A7 + 4) & mask; + } +}; + +} /* end namespace selectors */ template WrappedFunction::WrappedFunction(const char* name) @@ -109,94 +144,5 @@ void DispatcherTrap::init() } } -functions::internal::DeferredInit::DeferredInit() -{ - initObjects.push_back(this); } - -namespace Executor -{ -namespace functions -{ -namespace selectors -{ -template -struct D0 -{ - static const uint32_t selectorMask = mask; - static uint32_t get() { return EM_D0 & mask; } -}; - -template -struct StackWMasked -{ - static const uint32_t selectorMask = mask; - static uint32_t get() - { - auto ret = POPADDR(); - auto sel = POPUW(); - PUSHADDR(ret); - return sel & mask; - } -}; - -template -struct StackLMasked -{ - static const uint32_t selectorMask = mask; - static uint32_t get() - { - auto ret = POPADDR(); - auto sel = POPUL(); - PUSHADDR(ret); - return sel & mask; - } -}; -template -struct StackWLookahead -{ - static const uint32_t selectorMask = mask; - static uint32_t get() - { - return READUW(EM_A7 + 4) & mask; - } -}; - -} -} -} - -#include "rsys/everything.h" -#include "rsys/emustubs.h" -#include "rsys/ctl.h" -#include "rsys/list.h" -#include "rsys/menu.h" -#include "rsys/wind.h" -#include "rsys/print.h" -#include "rsys/vbl.h" -#include "rsys/stdfile.h" -#include "rsys/tesave.h" -#include "rsys/osutil.h" -#include "rsys/refresh.h" -#include "rsys/gestalt.h" - -syn68k_addr_t Executor::tooltraptable[NTOOLENTRIES]; /* Gets filled in at run time */ -syn68k_addr_t Executor::ostraptable[NOSENTRIES]; /* Gets filled in at run time */ - - -void functions::init(bool log) -{ - logging::setEnabled(log); - for(auto init : initObjects) - init->init(); - for(int i = 0; i < NTOOLENTRIES; i++) - { - if(tooltraptable[i] == 0) - tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); - } - for(int i = 0; i < NOSENTRIES; i++) - { - if(ostraptable[i] == 0) - ostraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); - } } diff --git a/src/traps.cpp b/src/traps.cpp new file mode 100644 index 00000000..3ac813dd --- /dev/null +++ b/src/traps.cpp @@ -0,0 +1,57 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include + +using namespace Executor; +using namespace Executor::functions; +Executor::functions::internal::DeferredInit *Executor::functions::internal::DeferredInit::first = nullptr; +Executor::functions::internal::DeferredInit *Executor::functions::internal::DeferredInit::last = nullptr; + +functions::internal::DeferredInit::DeferredInit() + : next(nullptr) +{ + if(!first) + first = last = this; + else + { + last->next = this; + last = this; + } +} + +void functions::internal::DeferredInit::initAll() +{ + for(DeferredInit *p = first; p; p = p->next) + p->init(); +} + +syn68k_addr_t Executor::tooltraptable[NTOOLENTRIES]; /* Gets filled in at run time */ +syn68k_addr_t Executor::ostraptable[NOSENTRIES]; /* Gets filled in at run time */ + +namespace Executor +{ +RAW_68K_TRAP(Unimplemented, 0xA89F); +} + +void functions::init(bool log) +{ + logging::setEnabled(log); + internal::DeferredInit::initAll(); + for(int i = 0; i < NTOOLENTRIES; i++) + { + if(tooltraptable[i] == 0) + tooltraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); + } + for(int i = 0; i < NOSENTRIES; i++) + { + if(ostraptable[i] == 0) + ostraptable[i] = US_TO_SYN68K((void*)&stub_Unimplemented); + } +} diff --git a/src/traps.instances.cpp b/src/traps.instances.cpp new file mode 100644 index 00000000..0fc225c5 --- /dev/null +++ b/src/traps.instances.cpp @@ -0,0 +1,17 @@ +#define FUNCTION_WRAPPER_IMPLEMENTATION +#include +#include + +#include "rsys/everything.h" +#include "rsys/emustubs.h" +#include "rsys/ctl.h" +#include "rsys/list.h" +#include "rsys/menu.h" +#include "rsys/wind.h" +#include "rsys/print.h" +#include "rsys/vbl.h" +#include "rsys/stdfile.h" +#include "rsys/tesave.h" +#include "rsys/osutil.h" +#include "rsys/refresh.h" +#include "rsys/gestalt.h" From 726e479a3ae5ea67647d07d6d18fb44fa494533f Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Fri, 9 Feb 2018 23:27:50 +0100 Subject: [PATCH 79/88] rename namespace functions -> traps --- src/include/rsys/traps.h | 14 +++++++------- src/include/rsys/traps.impl.h | 2 +- src/main.cpp | 4 ++-- src/traps.cpp | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h index c438942a..00af17b7 100644 --- a/src/include/rsys/traps.h +++ b/src/include/rsys/traps.h @@ -3,7 +3,7 @@ namespace Executor { -namespace functions +namespace traps { namespace selectors @@ -131,24 +131,24 @@ class SubTrapFunction : public #if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ #define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ - extern Executor::functions::__VA_ARGS__ NAME + extern Executor::traps::__VA_ARGS__ NAME #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - extern Executor::functions::DispatcherTrap NAME + extern Executor::traps::DispatcherTrap NAME #else #define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ - Executor::functions::__VA_ARGS__ NAME INIT; \ - template class Executor::functions::__VA_ARGS__; + Executor::traps::__VA_ARGS__ NAME INIT; \ + template class Executor::traps::__VA_ARGS__; #define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - Executor::functions::DispatcherTrap NAME { #NAME, TRAP } + Executor::traps::DispatcherTrap NAME { #NAME, TRAP } #endif #define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - extern Executor::functions::DispatcherTrap NAME + extern Executor::traps::DispatcherTrap NAME #define COMMA , diff --git a/src/include/rsys/traps.impl.h b/src/include/rsys/traps.impl.h index bf8c50e7..e82bba77 100644 --- a/src/include/rsys/traps.impl.h +++ b/src/include/rsys/traps.impl.h @@ -9,7 +9,7 @@ namespace Executor { -namespace functions +namespace traps { namespace selectors diff --git a/src/main.cpp b/src/main.cpp index 87901683..ff89795a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1407,9 +1407,9 @@ int main(int argc, char **argv) } if(opt_val(common_db, "logtraps", NULL)) - Executor::functions::init(true); + Executor::traps::init(true); else - Executor::functions::init(false); + Executor::traps::init(false); l = ostraptable[0x0FC]; ((unsigned char *)jmpl_to_ResourceStub)[2] = l >> 24; diff --git a/src/traps.cpp b/src/traps.cpp index 3ac813dd..e2df2c4b 100644 --- a/src/traps.cpp +++ b/src/traps.cpp @@ -10,11 +10,11 @@ #include using namespace Executor; -using namespace Executor::functions; -Executor::functions::internal::DeferredInit *Executor::functions::internal::DeferredInit::first = nullptr; -Executor::functions::internal::DeferredInit *Executor::functions::internal::DeferredInit::last = nullptr; -functions::internal::DeferredInit::DeferredInit() +Executor::traps::internal::DeferredInit *Executor::traps::internal::DeferredInit::first = nullptr; +Executor::traps::internal::DeferredInit *Executor::traps::internal::DeferredInit::last = nullptr; + +traps::internal::DeferredInit::DeferredInit() : next(nullptr) { if(!first) @@ -26,7 +26,7 @@ functions::internal::DeferredInit::DeferredInit() } } -void functions::internal::DeferredInit::initAll() +void traps::internal::DeferredInit::initAll() { for(DeferredInit *p = first; p; p = p->next) p->init(); @@ -40,7 +40,7 @@ namespace Executor RAW_68K_TRAP(Unimplemented, 0xA89F); } -void functions::init(bool log) +void traps::init(bool log) { logging::setEnabled(log); internal::DeferredInit::initAll(); From 8e8e736938dc0d1536e0f7ea569297cca9c3926d Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 10 Feb 2018 00:41:45 +0100 Subject: [PATCH 80/88] get ready for api-module.h --- src/include/rsys/api-module.h | 21 +++++++++++++++++++++ src/include/rsys/traps.h | 29 ++++++++++++++--------------- 2 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 src/include/rsys/api-module.h diff --git a/src/include/rsys/api-module.h b/src/include/rsys/api-module.h new file mode 100644 index 00000000..f9442228 --- /dev/null +++ b/src/include/rsys/api-module.h @@ -0,0 +1,21 @@ +// api-module.h + +// set up TRAP() macros and associated template instantiation for one header file +// included multiple times on purpose, definitely no #pragma once or #include guards + +#ifndef MODULE_NAME +#error "MODULE_NAME must be defined before including rsys/api-module.h" +#endif + +#define PREPROCESSOR_CONCAT1(A,B) A##B +#define PREPROCESSOR_CONCAT(A,B) PREPROCESSOR_CONCAT1(A,B) + +#undef TRAP_INSTANTIATION + +#if PREPROCESSOR_CONCAT(INSTANTIATE_TRAP_, MODULE_NAME) +#define TRAP_INSTATIATION DEFINE +#else +#define TRAP_INSTATIATION EXTERN +#endif + +#undef MODULE_NAME diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h index 00af17b7..e1a4b12e 100644 --- a/src/include/rsys/traps.h +++ b/src/include/rsys/traps.h @@ -127,29 +127,28 @@ class SubTrapFunction : public GenericDispatcherTrap& dispatcher; }; - -#if !defined(FUNCTION_WRAPPER_IMPLEMENTATION) /* defined in functions.cpp */ - -#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ +#define EXTERN_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ extern Executor::traps::__VA_ARGS__ NAME - -#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ +#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ extern Executor::traps::DispatcherTrap NAME - -#else - -#define CREATE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ +#define DEFINE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ Executor::traps::__VA_ARGS__ NAME INIT; \ template class Executor::traps::__VA_ARGS__; - -#define DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ +#define DEFINE_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ Executor::traps::DispatcherTrap NAME { #NAME, TRAP } +#ifndef TRAP_INSTANTIATION +#ifdef FUNCTION_WRAPPER_IMPLEMENTATION +#define TRAP_INSTANTIATION DEFINE +#else +#define TRAP_INSTANTIATION EXTERN +#endif #endif -#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ - extern Executor::traps::DispatcherTrap NAME - +#define PREPROCESSOR_CONCAT1(A,B) A##B +#define PREPROCESSOR_CONCAT(A,B) PREPROCESSOR_CONCAT1(A,B) +#define CREATE_FUNCTION_WRAPPER PREPROCESSOR_CONCAT(TRAP_INSTANTIATION, _FUNCTION_WRAPPER) +#define DISPATCHER_TRAP PREPROCESSOR_CONCAT(TRAP_INSTANTIATION, _DISPATCHER_TRAP) #define COMMA , #define PASCAL_TRAP(NAME, TRAP) \ From f779b0dca1298e3c1735e37ab23a49c6930eeaa4 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 10 Feb 2018 02:12:29 +0100 Subject: [PATCH 81/88] instantiate templates in separate source files (mostly for compilation speed) --- src/CMakeLists.txt | 7 ++- src/include/ADB.h | 7 ++- src/include/AliasMgr.h | 4 ++ src/include/AppleEvents.h | 3 ++ src/include/BinaryDecimal.h | 6 ++- src/include/CQuickDraw.h | 3 ++ src/include/Components.h | 3 +- src/include/ControlMgr.h | 3 ++ src/include/DeskMgr.h | 9 +++- src/include/DeviceMgr.h | 3 ++ src/include/DialogMgr.h | 3 ++ src/include/DiskInit.h | 3 ++ src/include/EditionMgr.h | 3 ++ src/include/ExMacTypes.h | 1 + src/include/FileMgr.h | 4 ++ src/include/Finder.h | 6 ++- src/include/FontMgr.h | 4 ++ src/include/Gestalt.h | 6 +++ src/include/HelpMgr.h | 3 ++ src/include/Iconutil.h | 7 ++- src/include/IntlUtil.h | 3 ++ src/include/ListMgr.h | 3 ++ src/include/MemoryMgr.h | 4 ++ src/include/MenuMgr.h | 3 ++ src/include/NotifyMgr.h | 6 ++- src/include/OSEvent.h | 5 ++ src/include/OSUtil.h | 3 ++ src/include/Package.h | 6 ++- src/include/PrintMgr.h | 3 ++ src/include/ProcessMgr.h | 5 ++ src/include/QuickDraw.h | 3 ++ src/include/QuickTime.h | 3 ++ src/include/ResourceMgr.h | 7 ++- src/include/SANE.h | 7 ++- src/include/ScrapMgr.h | 3 ++ src/include/ScriptMgr.h | 5 ++ src/include/SegmentLdr.h | 6 ++- src/include/ShutDown.h | 6 +++ src/include/SoundMgr.h | 4 ++ src/include/StdFilePkg.h | 3 ++ src/include/SysErr.h | 7 ++- src/include/TextEdit.h | 3 ++ src/include/TimeMgr.h | 6 ++- src/include/ToolboxEvent.h | 4 ++ src/include/ToolboxUtil.h | 3 ++ src/include/VRetraceMgr.h | 7 ++- src/include/WindowMgr.h | 3 ++ src/include/rsys/adb.h | 6 ++- src/include/rsys/api-module.h | 12 +++-- src/include/rsys/cfm.h | 5 +- src/include/rsys/ctl.h | 3 ++ src/include/rsys/emustubs.h | 9 +++- src/include/rsys/gestalt.h | 6 +++ src/include/rsys/list.h | 3 ++ src/include/rsys/menu.h | 3 ++ src/include/rsys/mixed_mode.h | 6 +++ src/include/rsys/osutil.h | 6 ++- src/include/rsys/print.h | 4 ++ src/include/rsys/refresh.h | 6 +++ src/include/rsys/soundopts.h | 3 ++ src/include/rsys/stdfile.h | 3 ++ src/include/rsys/tesave.h | 8 +++- src/include/rsys/traps.h | 11 +++-- src/include/rsys/traps.impl.h | 5 ++ src/include/rsys/vbl.h | 5 ++ src/include/rsys/wind.h | 3 ++ src/trap_instances/ADB.cpp | 2 + src/trap_instances/AliasMgr.cpp | 2 + src/trap_instances/AppleEvents.cpp | 2 + src/trap_instances/BinaryDecimal.cpp | 2 + src/trap_instances/CQuickDraw.cpp | 2 + src/trap_instances/ControlMgr.cpp | 2 + src/trap_instances/DeskMgr.cpp | 2 + src/trap_instances/DialogMgr.cpp | 2 + src/trap_instances/DiskInit.cpp | 2 + src/trap_instances/EditionMgr.cpp | 2 + src/trap_instances/FileMgr.cpp | 2 + src/trap_instances/Finder.cpp | 2 + src/trap_instances/FontMgr.cpp | 2 + src/trap_instances/Gestalt.cpp | 2 + src/trap_instances/HelpMgr.cpp | 2 + src/trap_instances/Iconutil.cpp | 2 + src/trap_instances/IntlUtil.cpp | 2 + src/trap_instances/ListMgr.cpp | 2 + src/trap_instances/MemoryMgr.cpp | 2 + src/trap_instances/MenuMgr.cpp | 2 + src/trap_instances/NotifyMgr.cpp | 2 + src/trap_instances/OSEvent.cpp | 2 + src/trap_instances/OSUtil.cpp | 2 + src/trap_instances/Package.cpp | 2 + src/trap_instances/PrintMgr.cpp | 2 + src/trap_instances/ProcessMgr.cpp | 2 + src/trap_instances/QuickDraw.cpp | 2 + src/trap_instances/QuickTime.cpp | 2 + src/trap_instances/ResourceMgr.cpp | 2 + src/trap_instances/SANE.cpp | 2 + src/trap_instances/ScrapMgr.cpp | 2 + src/trap_instances/ScriptMgr.cpp | 2 + src/trap_instances/SegmentLdr.cpp | 2 + src/trap_instances/ShutDown.cpp | 2 + src/trap_instances/SoundMgr.cpp | 2 + src/trap_instances/StdFilePkg.cpp | 2 + src/trap_instances/SysErr.cpp | 2 + src/trap_instances/TextEdit.cpp | 2 + src/trap_instances/TimeMgr.cpp | 2 + src/trap_instances/ToolboxEvent.cpp | 2 + src/trap_instances/ToolboxUtil.cpp | 2 + src/trap_instances/VRetraceMgr.cpp | 2 + src/trap_instances/WindowMgr.cpp | 2 + src/trap_instances/rsys_adb.cpp | 2 + src/trap_instances/rsys_cfm.cpp | 2 + src/trap_instances/rsys_ctl.cpp | 2 + src/trap_instances/rsys_emustubs.cpp | 2 + src/trap_instances/rsys_gestalt.cpp | 2 + src/trap_instances/rsys_list.cpp | 2 + src/trap_instances/rsys_menu.cpp | 2 + src/trap_instances/rsys_mixed_mode.cpp | 2 + src/trap_instances/rsys_osutil.cpp | 2 + src/trap_instances/rsys_print.cpp | 2 + src/trap_instances/rsys_refresh.cpp | 2 + src/trap_instances/rsys_soundopts.cpp | 2 + src/trap_instances/rsys_stdfile.cpp | 2 + src/trap_instances/rsys_tesave.cpp | 2 + src/trap_instances/rsys_vbl.cpp | 2 + src/trap_instances/rsys_wind.cpp | 2 + src/trap_instances/trap_instances.cmake | 61 +++++++++++++++++++++++++ src/traps.instances.cpp | 17 ------- util/mkapimodules.pl | 60 ++++++++++++++++++++++++ 128 files changed, 525 insertions(+), 47 deletions(-) create mode 100644 src/trap_instances/ADB.cpp create mode 100644 src/trap_instances/AliasMgr.cpp create mode 100644 src/trap_instances/AppleEvents.cpp create mode 100644 src/trap_instances/BinaryDecimal.cpp create mode 100644 src/trap_instances/CQuickDraw.cpp create mode 100644 src/trap_instances/ControlMgr.cpp create mode 100644 src/trap_instances/DeskMgr.cpp create mode 100644 src/trap_instances/DialogMgr.cpp create mode 100644 src/trap_instances/DiskInit.cpp create mode 100644 src/trap_instances/EditionMgr.cpp create mode 100644 src/trap_instances/FileMgr.cpp create mode 100644 src/trap_instances/Finder.cpp create mode 100644 src/trap_instances/FontMgr.cpp create mode 100644 src/trap_instances/Gestalt.cpp create mode 100644 src/trap_instances/HelpMgr.cpp create mode 100644 src/trap_instances/Iconutil.cpp create mode 100644 src/trap_instances/IntlUtil.cpp create mode 100644 src/trap_instances/ListMgr.cpp create mode 100644 src/trap_instances/MemoryMgr.cpp create mode 100644 src/trap_instances/MenuMgr.cpp create mode 100644 src/trap_instances/NotifyMgr.cpp create mode 100644 src/trap_instances/OSEvent.cpp create mode 100644 src/trap_instances/OSUtil.cpp create mode 100644 src/trap_instances/Package.cpp create mode 100644 src/trap_instances/PrintMgr.cpp create mode 100644 src/trap_instances/ProcessMgr.cpp create mode 100644 src/trap_instances/QuickDraw.cpp create mode 100644 src/trap_instances/QuickTime.cpp create mode 100644 src/trap_instances/ResourceMgr.cpp create mode 100644 src/trap_instances/SANE.cpp create mode 100644 src/trap_instances/ScrapMgr.cpp create mode 100644 src/trap_instances/ScriptMgr.cpp create mode 100644 src/trap_instances/SegmentLdr.cpp create mode 100644 src/trap_instances/ShutDown.cpp create mode 100644 src/trap_instances/SoundMgr.cpp create mode 100644 src/trap_instances/StdFilePkg.cpp create mode 100644 src/trap_instances/SysErr.cpp create mode 100644 src/trap_instances/TextEdit.cpp create mode 100644 src/trap_instances/TimeMgr.cpp create mode 100644 src/trap_instances/ToolboxEvent.cpp create mode 100644 src/trap_instances/ToolboxUtil.cpp create mode 100644 src/trap_instances/VRetraceMgr.cpp create mode 100644 src/trap_instances/WindowMgr.cpp create mode 100644 src/trap_instances/rsys_adb.cpp create mode 100644 src/trap_instances/rsys_cfm.cpp create mode 100644 src/trap_instances/rsys_ctl.cpp create mode 100644 src/trap_instances/rsys_emustubs.cpp create mode 100644 src/trap_instances/rsys_gestalt.cpp create mode 100644 src/trap_instances/rsys_list.cpp create mode 100644 src/trap_instances/rsys_menu.cpp create mode 100644 src/trap_instances/rsys_mixed_mode.cpp create mode 100644 src/trap_instances/rsys_osutil.cpp create mode 100644 src/trap_instances/rsys_print.cpp create mode 100644 src/trap_instances/rsys_refresh.cpp create mode 100644 src/trap_instances/rsys_soundopts.cpp create mode 100644 src/trap_instances/rsys_stdfile.cpp create mode 100644 src/trap_instances/rsys_tesave.cpp create mode 100644 src/trap_instances/rsys_vbl.cpp create mode 100644 src/trap_instances/rsys_wind.cpp create mode 100644 src/trap_instances/trap_instances.cmake delete mode 100644 src/traps.instances.cpp create mode 100644 util/mkapimodules.pl diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d9959a47..0b6378de 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,7 +50,6 @@ add_subdirectory(config/arch/generic_le) add_subdirectory(config/os/win32) add_subdirectory(config/os/macosx) - function(linkheader from to variant) if(DEFINED ARGV3) set(input ${ARGV3}) @@ -175,7 +174,7 @@ set(num_sources bindec.cpp float4.cpp float5.cpp float7.cpp floatnext.cpp toolma source_group(Numerics FILES ${num_sources}) set(misc_sources - traps.cpp logging.cpp traps.instances.cpp + traps.cpp logging.cpp desk.cpp device.cpp disk.cpp diskinit.cpp dump.cpp trapname.cpp font.cpp gestalt.cpp globals.cpp iu.cpp launch.cpp main.cpp mman.cpp mmansubr.cpp notify.cpp hle.cpp osevent.cpp osutil.cpp pack.cpp scrap.cpp script.cpp segment.cpp serial.cpp @@ -387,12 +386,15 @@ set(include_sources hintemplate.h mkvol/mkvol.h mkvol/mkvol_internal.h) +include(trap_instances/trap_instances.cmake) + set(sources ${ctl_sources} ${dial_sources} ${list_sources} ${menu_sources} ${print_sources} ${qd_sources} ${res_sources} ${te_sources} ${wind_sources} ${ae_sources} ${sound_sources} ${num_sources} ${misc_sources} ${file_sources} ${hfs_sources} + ${trap_instance_sources} ${include_sources}) add_executable(executor ${sources} @@ -408,3 +410,4 @@ else() endif() target_link_libraries(executor Threads::Threads syn68k) + diff --git a/src/include/ADB.h b/src/include/ADB.h index c7727c34..bcd86624 100644 --- a/src/include/ADB.h +++ b/src/include/ADB.h @@ -5,9 +5,14 @@ * Copyright 1995 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include +#include "ExMacTypes.h" + +#define MODULE_NAME ADB +#include + namespace Executor { struct ADBDataBlock diff --git a/src/include/AliasMgr.h b/src/include/AliasMgr.h index 9d7e984e..a3a68e9d 100644 --- a/src/include/AliasMgr.h +++ b/src/include/AliasMgr.h @@ -3,6 +3,10 @@ #define _ALIASMGR_H_ #include "FileMgr.h" +#include + +#define MODULE_NAME AliasMgr +#include namespace Executor { diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index 443cbbf4..d2391c32 100644 --- a/src/include/AppleEvents.h +++ b/src/include/AppleEvents.h @@ -11,6 +11,9 @@ #include "EventMgr.h" #include "NotifyMgr.h" +#define MODULE_NAME AppleEvents +#include + namespace Executor { typedef int32_t AEEventClass; diff --git a/src/include/BinaryDecimal.h b/src/include/BinaryDecimal.h index bd93584b..e95189e3 100644 --- a/src/include/BinaryDecimal.h +++ b/src/include/BinaryDecimal.h @@ -4,9 +4,13 @@ * Copyright 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME BinaryDecimal +#include + namespace Executor { EXTERN_DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); diff --git a/src/include/CQuickDraw.h b/src/include/CQuickDraw.h index bec629c4..dfd1cd8c 100644 --- a/src/include/CQuickDraw.h +++ b/src/include/CQuickDraw.h @@ -4,6 +4,9 @@ #include "WindowMgr.h" +#define MODULE_NAME CQuickDraw +#include + namespace Executor { #define theCPort (STARH(STARH((GUEST *> *)SYN68K_TO_US(EM_A5)))) diff --git a/src/include/Components.h b/src/include/Components.h index fa03a6fd..9db2c8e2 100644 --- a/src/include/Components.h +++ b/src/include/Components.h @@ -5,9 +5,10 @@ * Copyright 1998 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + namespace Executor { typedef struct ComponentRecord diff --git a/src/include/ControlMgr.h b/src/include/ControlMgr.h index 32da08e0..494db572 100644 --- a/src/include/ControlMgr.h +++ b/src/include/ControlMgr.h @@ -11,6 +11,9 @@ #include "QuickDraw.h" #include "WindowMgr.h" +#define MODULE_NAME ControlMgr +#include + namespace Executor { enum diff --git a/src/include/DeskMgr.h b/src/include/DeskMgr.h index 504386a1..61054d6c 100644 --- a/src/include/DeskMgr.h +++ b/src/include/DeskMgr.h @@ -5,9 +5,16 @@ * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include +#include "ExMacTypes.h" +#include "EventMgr.h" +#include "WindowMgr.h" + +#define MODULE_NAME DeskMgr +#include + namespace Executor { enum diff --git a/src/include/DeviceMgr.h b/src/include/DeviceMgr.h index 1698486a..d36d9250 100644 --- a/src/include/DeviceMgr.h +++ b/src/include/DeviceMgr.h @@ -11,6 +11,9 @@ #include "WindowMgr.h" #include "FileMgr.h" +#define MODULE_NAME DeviceMgr +#include + /* * Note the structure below is similar to that presented on IM-188, * but I don't use offsets to the routines, but pointers to the routines diff --git a/src/include/DialogMgr.h b/src/include/DialogMgr.h index 73ef0d29..27b7b65c 100644 --- a/src/include/DialogMgr.h +++ b/src/include/DialogMgr.h @@ -11,6 +11,9 @@ #include "WindowMgr.h" #include "TextEdit.h" +#define MODULE_NAME DialogMgr +#include + namespace Executor { enum diff --git a/src/include/DiskInit.h b/src/include/DiskInit.h index b440e2b5..da84e171 100644 --- a/src/include/DiskInit.h +++ b/src/include/DiskInit.h @@ -3,6 +3,9 @@ #include "QuickDraw.h" +#define MODULE_NAME DiskInit +#include + /* * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/EditionMgr.h b/src/include/EditionMgr.h index 2c235bb2..d2fb63a9 100644 --- a/src/include/EditionMgr.h +++ b/src/include/EditionMgr.h @@ -12,6 +12,9 @@ #include "IntlUtil.h" #include "AliasMgr.h" +#define MODULE_NAME EditionMgr +#include + namespace Executor { #define declare_subtypes(type) \ diff --git a/src/include/ExMacTypes.h b/src/include/ExMacTypes.h index 40686ed4..938440fb 100644 --- a/src/include/ExMacTypes.h +++ b/src/include/ExMacTypes.h @@ -9,6 +9,7 @@ */ #include "rsys/mactype.h" +#include "rsys/byteswap.h" namespace Executor { diff --git a/src/include/FileMgr.h b/src/include/FileMgr.h index 65bd720e..a3aeb1fd 100644 --- a/src/include/FileMgr.h +++ b/src/include/FileMgr.h @@ -2,6 +2,10 @@ #define _FILEMGR_H_ #include "ExMacTypes.h" +#include + +#define MODULE_NAME FileMgr +#include /* * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. diff --git a/src/include/Finder.h b/src/include/Finder.h index 6dd2798e..af4a6cbd 100644 --- a/src/include/Finder.h +++ b/src/include/Finder.h @@ -5,9 +5,13 @@ * Copyright 1995 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME Finder +#include + namespace Executor { typedef struct DTPBRec diff --git a/src/include/FontMgr.h b/src/include/FontMgr.h index 2ec59f21..ba3ab2ef 100644 --- a/src/include/FontMgr.h +++ b/src/include/FontMgr.h @@ -9,6 +9,10 @@ */ #include "QuickDraw.h" + +#define MODULE_NAME FontMgr +#include + namespace Executor { enum diff --git a/src/include/Gestalt.h b/src/include/Gestalt.h index 9581f8e5..d6a16e0f 100644 --- a/src/include/Gestalt.h +++ b/src/include/Gestalt.h @@ -7,6 +7,12 @@ #if !defined(__GESTALT__) #define __GESTALT__ +#include "ExMacTypes.h" +#include + +#define MODULE_NAME Gestalt +#include + namespace Executor { diff --git a/src/include/HelpMgr.h b/src/include/HelpMgr.h index 814df647..bf279d2b 100644 --- a/src/include/HelpMgr.h +++ b/src/include/HelpMgr.h @@ -12,6 +12,9 @@ #include "MenuMgr.h" #include "WindowMgr.h" +#define MODULE_NAME HelpMgr +#include + namespace Executor { struct HMStringResType diff --git a/src/include/Iconutil.h b/src/include/Iconutil.h index 8935d24b..78e1d2f5 100644 --- a/src/include/Iconutil.h +++ b/src/include/Iconutil.h @@ -4,9 +4,14 @@ /* Copyright 1986-1996 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" +#include "QuickDraw.h" + +#define MODULE_NAME Iconutil +#include + #define large1BitMask (FOURCC('I', 'C', 'N', '#')) #define large4BitData (FOURCC('i', 'c', 'l', '4')) #define large8BitData (FOURCC('i', 'c', 'l', '8')) diff --git a/src/include/IntlUtil.h b/src/include/IntlUtil.h index 6418d5dd..012db8a6 100644 --- a/src/include/IntlUtil.h +++ b/src/include/IntlUtil.h @@ -3,6 +3,9 @@ #include "SANE.h" +#define MODULE_NAME IntlUtil +#include + /* * Copyright 1986, 1989, 1990, 1994 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index c1af1534..30cafe4b 100644 --- a/src/include/ListMgr.h +++ b/src/include/ListMgr.h @@ -10,6 +10,9 @@ #include "ControlMgr.h" +#define MODULE_NAME ListMgr +#include + namespace Executor { typedef Point Cell; diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index ceee28ac..27866c35 100644 --- a/src/include/MemoryMgr.h +++ b/src/include/MemoryMgr.h @@ -2,6 +2,10 @@ #define _MEMORY_MGR_H_ #include "ExMacTypes.h" +#include + +#define MODULE_NAME MemoryMgr +#include /* * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. diff --git a/src/include/MenuMgr.h b/src/include/MenuMgr.h index 73c35246..c15a2dc0 100644 --- a/src/include/MenuMgr.h +++ b/src/include/MenuMgr.h @@ -11,6 +11,9 @@ #include "QuickDraw.h" #include "ResourceMgr.h" +#define MODULE_NAME MenuMgr +#include + namespace Executor { enum diff --git a/src/include/NotifyMgr.h b/src/include/NotifyMgr.h index a9eada76..40e58764 100644 --- a/src/include/NotifyMgr.h +++ b/src/include/NotifyMgr.h @@ -5,9 +5,13 @@ * Copyright 1993 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME NotifyMgr +#include + namespace Executor { /* value of -1 means remove queue element diff --git a/src/include/OSEvent.h b/src/include/OSEvent.h index b3fd99a8..01d73f82 100644 --- a/src/include/OSEvent.h +++ b/src/include/OSEvent.h @@ -6,6 +6,9 @@ #include "rsys/commonevt.h" +#define MODULE_NAME OSEvent +#include + /* * Copyright 1986, 1989, 1990, 1996 by Abacus Research and Development, Inc. * All rights reserved. @@ -163,6 +166,8 @@ enum bufferIsSmall = (-608), }; +EXTERN_DISPATCHER_TRAP(OSDispatch, 0xA88F, StackW); + extern OSErr C_AcceptHighLevelEvent(TargetID *sender_id_return, GUEST *refcon_return, Ptr msg_buf, GUEST *msg_length_return); PASCAL_SUBTRAP(AcceptHighLevelEvent, 0xA88F, 0x0033, OSDispatch); extern Boolean C_GetSpecificHighLevelEvent(GetSpecificFilterProcPtr fn, Ptr data, OSErr *err_return); diff --git a/src/include/OSUtil.h b/src/include/OSUtil.h index 4b07aa1f..cf8f82d3 100644 --- a/src/include/OSUtil.h +++ b/src/include/OSUtil.h @@ -12,6 +12,9 @@ #include "FileMgr.h" #include "OSEvent.h" +#define MODULE_NAME OSUtil +#include + namespace Executor { enum diff --git a/src/include/Package.h b/src/include/Package.h index bdec16be..099cff8a 100644 --- a/src/include/Package.h +++ b/src/include/Package.h @@ -5,9 +5,13 @@ * Copyright 1986, 1989, 1990, 1996 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include + +#define MODULE_NAME Package +#include + namespace Executor { enum diff --git a/src/include/PrintMgr.h b/src/include/PrintMgr.h index e75aa0b4..e05fc51b 100644 --- a/src/include/PrintMgr.h +++ b/src/include/PrintMgr.h @@ -3,6 +3,9 @@ #include "DialogMgr.h" +#define MODULE_NAME PrintMgr +#include + /* * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/ProcessMgr.h b/src/include/ProcessMgr.h index 8b68f9ec..57d7a09a 100644 --- a/src/include/ProcessMgr.h +++ b/src/include/ProcessMgr.h @@ -4,6 +4,9 @@ #include "FileMgr.h" #include "PPC.h" +#define MODULE_NAME ProcessMgr +#include + /* * Copyright 1995, 1996 by Abacus Research and Development, Inc. * All rights reserved. @@ -157,6 +160,8 @@ enum procNotFound = (-600), }; +EXTERN_DISPATCHER_TRAP(OSDispatch, 0xA88F, StackW); + extern void process_create(bool desk_accessory_p, uint32_t type, uint32_t signature); diff --git a/src/include/QuickDraw.h b/src/include/QuickDraw.h index 3f4030f0..5185d2e8 100644 --- a/src/include/QuickDraw.h +++ b/src/include/QuickDraw.h @@ -11,6 +11,9 @@ #include #include "ExMacTypes.h" +#define MODULE_NAME QuickDraw +#include + namespace Executor { diff --git a/src/include/QuickTime.h b/src/include/QuickTime.h index fce70d74..58e8317b 100644 --- a/src/include/QuickTime.h +++ b/src/include/QuickTime.h @@ -12,6 +12,9 @@ #include "CQuickDraw.h" #include "FileMgr.h" +#define MODULE_NAME QuickTime +#include + namespace Executor { typedef struct MovieRecord diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index c4989f55..952f8982 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -6,9 +6,14 @@ * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" +#include + +#define MODULE_NAME ResourceMgr +#include + namespace Executor { /* resource attribute masks */ diff --git a/src/include/SANE.h b/src/include/SANE.h index 3e68f54a..174c73f3 100644 --- a/src/include/SANE.h +++ b/src/include/SANE.h @@ -5,9 +5,14 @@ * Copyright 1990, 1991 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" +#include "rsys/macros.h" + +#define MODULE_NAME SANE +#include + namespace Executor { /* Big-endian 64 bit "comp" data type. Note that this has a NaN value! */ diff --git a/src/include/ScrapMgr.h b/src/include/ScrapMgr.h index f5cfac8b..23ab4d78 100644 --- a/src/include/ScrapMgr.h +++ b/src/include/ScrapMgr.h @@ -3,6 +3,9 @@ #include "ResourceMgr.h" +#define MODULE_NAME ScrapMgr +#include + /* * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/ScriptMgr.h b/src/include/ScriptMgr.h index 5dcf7fd7..5de3d1ec 100644 --- a/src/include/ScriptMgr.h +++ b/src/include/ScriptMgr.h @@ -10,6 +10,11 @@ #include "SANE.h" #include "IntlUtil.h" +#include +#include + +#define MODULE_NAME ScriptMgr +#include namespace Executor { diff --git a/src/include/SegmentLdr.h b/src/include/SegmentLdr.h index 62aa76e6..3c7e5cae 100644 --- a/src/include/SegmentLdr.h +++ b/src/include/SegmentLdr.h @@ -8,7 +8,11 @@ */ -#include "rsys/noreturn.h" +#include "ExMacTypes.h" +#include + +#define MODULE_NAME SegmentLdr +#include namespace Executor { diff --git a/src/include/ShutDown.h b/src/include/ShutDown.h index f6b60ff8..893601c9 100644 --- a/src/include/ShutDown.h +++ b/src/include/ShutDown.h @@ -1,6 +1,12 @@ +#pragma once /* shutdown manager define/routines */ +#include "ExMacTypes.h" + +#define MODULE_NAME ShutDown +#include + namespace Executor { enum diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index 68d63984..c3fb44ae 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -10,6 +10,10 @@ #include "QuickDraw.h" #include "SANE.h" + +#define MODULE_NAME SoundMgr +#include + namespace Executor { struct SndCommand diff --git a/src/include/StdFilePkg.h b/src/include/StdFilePkg.h index 39999612..c8668c78 100644 --- a/src/include/StdFilePkg.h +++ b/src/include/StdFilePkg.h @@ -4,6 +4,9 @@ #include "DialogMgr.h" #include "FileMgr.h" +#define MODULE_NAME StdFilePkg +#include + /* * Copyright 1986, 1989, 1990, 1995 by Abacus Research and Development, Inc. * All rights reserved. diff --git a/src/include/SysErr.h b/src/include/SysErr.h index 6959dbc2..09fa4e0c 100644 --- a/src/include/SysErr.h +++ b/src/include/SysErr.h @@ -5,9 +5,14 @@ * Copyright 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include +#include + +#define MODULE_NAME SysErr +#include + namespace Executor { typedef enum { EXIST_YES = 0, diff --git a/src/include/TextEdit.h b/src/include/TextEdit.h index 4c40bd42..0c99080b 100644 --- a/src/include/TextEdit.h +++ b/src/include/TextEdit.h @@ -10,6 +10,9 @@ #include "QuickDraw.h" +#define MODULE_NAME TextEdit +#include + namespace Executor { /* new justification defines, accepted by `TESetAlignment ()' and diff --git a/src/include/TimeMgr.h b/src/include/TimeMgr.h index 272abf96..8efd352e 100644 --- a/src/include/TimeMgr.h +++ b/src/include/TimeMgr.h @@ -5,9 +5,13 @@ * Copyright 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME TimeMgr +#include + namespace Executor { struct TMTask diff --git a/src/include/ToolboxEvent.h b/src/include/ToolboxEvent.h index 1d3a2f33..907566f5 100644 --- a/src/include/ToolboxEvent.h +++ b/src/include/ToolboxEvent.h @@ -9,6 +9,10 @@ */ #include "EventMgr.h" + +#define MODULE_NAME ToolboxEvent +#include + namespace Executor { const LowMemGlobal KeyThresh { 0x18E }; // ToolboxEvent IMI-246 (true); diff --git a/src/include/ToolboxUtil.h b/src/include/ToolboxUtil.h index 4108d54c..f3856784 100644 --- a/src/include/ToolboxUtil.h +++ b/src/include/ToolboxUtil.h @@ -11,6 +11,9 @@ #include "QuickDraw.h" #include "SANE.h" +#define MODULE_NAME ToolboxUtil +#include + namespace Executor { enum diff --git a/src/include/VRetraceMgr.h b/src/include/VRetraceMgr.h index 467181c5..e133fc6d 100644 --- a/src/include/VRetraceMgr.h +++ b/src/include/VRetraceMgr.h @@ -5,9 +5,14 @@ * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" +#include + +#define MODULE_NAME VRetraceMgr +#include + namespace Executor { diff --git a/src/include/WindowMgr.h b/src/include/WindowMgr.h index afc714fe..7ff1729f 100644 --- a/src/include/WindowMgr.h +++ b/src/include/WindowMgr.h @@ -11,6 +11,9 @@ #include "QuickDraw.h" #include "EventMgr.h" +#define MODULE_NAME WindowMgr +#include + namespace Executor { enum diff --git a/src/include/rsys/adb.h b/src/include/rsys/adb.h index e704cece..122b2358 100644 --- a/src/include/rsys/adb.h +++ b/src/include/rsys/adb.h @@ -5,9 +5,13 @@ * Copyright 1995 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include + +#define MODULE_NAME rsys_adb +#include + namespace Executor { extern void C_adb_service_stub(void); diff --git a/src/include/rsys/api-module.h b/src/include/rsys/api-module.h index f9442228..7bac0d05 100644 --- a/src/include/rsys/api-module.h +++ b/src/include/rsys/api-module.h @@ -7,15 +7,17 @@ #error "MODULE_NAME must be defined before including rsys/api-module.h" #endif -#define PREPROCESSOR_CONCAT1(A,B) A##B -#define PREPROCESSOR_CONCAT(A,B) PREPROCESSOR_CONCAT1(A,B) +#define PREPROCESSOR_CONCAT1D(A,B) defined(A##B) +#define PREPROCESSOR_CONCATD(A,B) PREPROCESSOR_CONCAT1D(A,B) #undef TRAP_INSTANTIATION -#if PREPROCESSOR_CONCAT(INSTANTIATE_TRAP_, MODULE_NAME) -#define TRAP_INSTATIATION DEFINE +#if PREPROCESSOR_CONCATD(INSTANTIATE_TRAPS_, MODULE_NAME) +#define TRAP_INSTANTIATION DEFINE + +#include #else -#define TRAP_INSTATIATION EXTERN +#define TRAP_INSTANTIATION EXTERN #endif #undef MODULE_NAME diff --git a/src/include/rsys/cfm.h b/src/include/rsys/cfm.h index 3dee9504..d359496f 100644 --- a/src/include/rsys/cfm.h +++ b/src/include/rsys/cfm.h @@ -2,14 +2,17 @@ #define _cfm_h_ #include "FileMgr.h" +#include /* * Copyright 2000 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#define MODULE_NAME rsys_cfm +#include + namespace Executor { const std::nullptr_t kUnresolvedCFragSymbolAddress = nullptr; diff --git a/src/include/rsys/ctl.h b/src/include/rsys/ctl.h index 2e04b1ac..6e5e41c0 100644 --- a/src/include/rsys/ctl.h +++ b/src/include/rsys/ctl.h @@ -16,6 +16,9 @@ #include "rsys/mman.h" #include "rsys/cquick.h" +#define MODULE_NAME rsys_ctl +#include + namespace Executor { extern const ColorSpec default_ctl_colors[]; diff --git a/src/include/rsys/emustubs.h b/src/include/rsys/emustubs.h index fd28a9df..6b21f288 100644 --- a/src/include/rsys/emustubs.h +++ b/src/include/rsys/emustubs.h @@ -5,8 +5,15 @@ * Copyright 1995, 1998 by Abacus Research and Development, Inc. * All rights reserved. * - */ + +#include "ExMacTypes.h" +#include "DialogMgr.h" +#include "MemoryMgr.h" + +#define MODULE_NAME rsys_emustubs +#include + namespace Executor { struct adbop_t diff --git a/src/include/rsys/gestalt.h b/src/include/rsys/gestalt.h index 0295a34e..4544e3d8 100644 --- a/src/include/rsys/gestalt.h +++ b/src/include/rsys/gestalt.h @@ -1,6 +1,12 @@ #if !defined(_RSYS_GESTALT_H_) #define _RSYS_GESTALT_H_ +#include "ExMacTypes.h" +#include + +#define MODULE_NAME rsys_gestalt +#include + namespace Executor { #if defined(USE_WINDOWS_NOT_MAC_TYPEDEFS_AND_DEFINES) diff --git a/src/include/rsys/list.h b/src/include/rsys/list.h index d19780df..3dfa2ca4 100644 --- a/src/include/rsys/list.h +++ b/src/include/rsys/list.h @@ -13,6 +13,9 @@ #include "ResourceMgr.h" #include "rsys/mman.h" +#define MODULE_NAME rsys_list +#include + namespace Executor { extern void diff --git a/src/include/rsys/menu.h b/src/include/rsys/menu.h index 5630d7d3..634d742a 100644 --- a/src/include/rsys/menu.h +++ b/src/include/rsys/menu.h @@ -13,6 +13,9 @@ #include "ResourceMgr.h" #include "rsys/mman.h" +#define MODULE_NAME rsys_menu +#include + namespace Executor { #define MI_ID_X(mi) (HxX(mi, menuID)) diff --git a/src/include/rsys/mixed_mode.h b/src/include/rsys/mixed_mode.h index 436c3248..3a61f377 100644 --- a/src/include/rsys/mixed_mode.h +++ b/src/include/rsys/mixed_mode.h @@ -2,6 +2,12 @@ #define _mixed_mode_h_ #include +#include +#include "ExMacTypes.h" + +#define MODULE_NAME rsys_mixed_mode +#include + namespace Executor { typedef uint8_t ISAType; diff --git a/src/include/rsys/osutil.h b/src/include/rsys/osutil.h index e7ab82a2..ef962b8f 100644 --- a/src/include/rsys/osutil.h +++ b/src/include/rsys/osutil.h @@ -5,8 +5,12 @@ * Copyright 1995 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME rsys_osutil +#include + namespace Executor { extern long long ROMlib_long_long_secs(Executor::INTEGER year, Executor::INTEGER month, diff --git a/src/include/rsys/print.h b/src/include/rsys/print.h index 8d09f126..87c7de09 100644 --- a/src/include/rsys/print.h +++ b/src/include/rsys/print.h @@ -18,6 +18,10 @@ extern win_printp_t ROMlib_wp; #endif + +#define MODULE_NAME rsys_print +#include + namespace Executor { enum diff --git a/src/include/rsys/refresh.h b/src/include/rsys/refresh.h index 248d1022..74400cf5 100644 --- a/src/include/rsys/refresh.h +++ b/src/include/rsys/refresh.h @@ -1,5 +1,11 @@ #if !defined(_refresh_h_) #define _refresh_h_ + +#include "ExMacTypes.h" + +#define MODULE_NAME rsys_refresh +#include + namespace Executor { extern void set_refresh_rate(int new1); diff --git a/src/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index f3bc0709..d7734fac 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -5,6 +5,9 @@ /* to get extern for `ROMlib_PretendSound' */ #include "rsys/prefs.h" +#define MODULE_NAME rsys_soundopts +#include + namespace Executor { typedef enum { diff --git a/src/include/rsys/stdfile.h b/src/include/rsys/stdfile.h index c70eb99d..a62c26e0 100644 --- a/src/include/rsys/stdfile.h +++ b/src/include/rsys/stdfile.h @@ -7,6 +7,9 @@ #include "DialogMgr.h" #include "rsys/file.h" +#define MODULE_NAME rsys_stdfile +#include + namespace Executor { /* diff --git a/src/include/rsys/tesave.h b/src/include/rsys/tesave.h index 3d5973ac..7273b09e 100644 --- a/src/include/rsys/tesave.h +++ b/src/include/rsys/tesave.h @@ -5,9 +5,15 @@ * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" +#include "QuickDraw.h" +#include "TextEdit.h" + +#define MODULE_NAME rsys_tesave +#include + namespace Executor { diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h index e1a4b12e..3d7e5b72 100644 --- a/src/include/rsys/traps.h +++ b/src/include/rsys/traps.h @@ -1,5 +1,11 @@ #pragma once +#include +#include +#include + +#include + namespace Executor { @@ -123,6 +129,7 @@ class SubTrapFunction : public public: Ret operator()(Args... args) const { return fptr(args...); } SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher); + virtual void init() override; private: GenericDispatcherTrap& dispatcher; }; @@ -138,12 +145,8 @@ class SubTrapFunction : public Executor::traps::DispatcherTrap NAME { #NAME, TRAP } #ifndef TRAP_INSTANTIATION -#ifdef FUNCTION_WRAPPER_IMPLEMENTATION -#define TRAP_INSTANTIATION DEFINE -#else #define TRAP_INSTANTIATION EXTERN #endif -#endif #define PREPROCESSOR_CONCAT1(A,B) A##B #define PREPROCESSOR_CONCAT(A,B) PREPROCESSOR_CONCAT1(A,B) diff --git a/src/include/rsys/traps.impl.h b/src/include/rsys/traps.impl.h index e82bba77..827581f1 100644 --- a/src/include/rsys/traps.impl.h +++ b/src/include/rsys/traps.impl.h @@ -97,6 +97,11 @@ void TrapFunction::init() template SubTrapFunction::SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher) : WrappedFunction(name), dispatcher(dispatcher) +{ +} + +template +void SubTrapFunction::init() { if(logging::enabled()) dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> diff --git a/src/include/rsys/vbl.h b/src/include/rsys/vbl.h index e805b8c1..66a2530e 100644 --- a/src/include/rsys/vbl.h +++ b/src/include/rsys/vbl.h @@ -1,6 +1,11 @@ #if !defined(__RSYS_VBL__) #define __RSYS_VBL__ +#include + +#define MODULE_NAME rsys_vbl +#include + namespace Executor { extern void C_ROMlib_vcatch(void); diff --git a/src/include/rsys/wind.h b/src/include/rsys/wind.h index 32864449..ba2c0828 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -16,6 +16,9 @@ #include "rsys/mman.h" +#define MODULE_NAME rsys_wind +#include + namespace Executor { struct windrestype diff --git a/src/trap_instances/ADB.cpp b/src/trap_instances/ADB.cpp new file mode 100644 index 00000000..eb831eb9 --- /dev/null +++ b/src/trap_instances/ADB.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ADB +#include \ No newline at end of file diff --git a/src/trap_instances/AliasMgr.cpp b/src/trap_instances/AliasMgr.cpp new file mode 100644 index 00000000..65498cc6 --- /dev/null +++ b/src/trap_instances/AliasMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_AliasMgr +#include \ No newline at end of file diff --git a/src/trap_instances/AppleEvents.cpp b/src/trap_instances/AppleEvents.cpp new file mode 100644 index 00000000..fe777c37 --- /dev/null +++ b/src/trap_instances/AppleEvents.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_AppleEvents +#include \ No newline at end of file diff --git a/src/trap_instances/BinaryDecimal.cpp b/src/trap_instances/BinaryDecimal.cpp new file mode 100644 index 00000000..671a84d4 --- /dev/null +++ b/src/trap_instances/BinaryDecimal.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_BinaryDecimal +#include \ No newline at end of file diff --git a/src/trap_instances/CQuickDraw.cpp b/src/trap_instances/CQuickDraw.cpp new file mode 100644 index 00000000..58b06582 --- /dev/null +++ b/src/trap_instances/CQuickDraw.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_CQuickDraw +#include \ No newline at end of file diff --git a/src/trap_instances/ControlMgr.cpp b/src/trap_instances/ControlMgr.cpp new file mode 100644 index 00000000..a937ea3c --- /dev/null +++ b/src/trap_instances/ControlMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ControlMgr +#include \ No newline at end of file diff --git a/src/trap_instances/DeskMgr.cpp b/src/trap_instances/DeskMgr.cpp new file mode 100644 index 00000000..4f4fdb07 --- /dev/null +++ b/src/trap_instances/DeskMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_DeskMgr +#include \ No newline at end of file diff --git a/src/trap_instances/DialogMgr.cpp b/src/trap_instances/DialogMgr.cpp new file mode 100644 index 00000000..fd74fd5c --- /dev/null +++ b/src/trap_instances/DialogMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_DialogMgr +#include \ No newline at end of file diff --git a/src/trap_instances/DiskInit.cpp b/src/trap_instances/DiskInit.cpp new file mode 100644 index 00000000..b42573e2 --- /dev/null +++ b/src/trap_instances/DiskInit.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_DiskInit +#include \ No newline at end of file diff --git a/src/trap_instances/EditionMgr.cpp b/src/trap_instances/EditionMgr.cpp new file mode 100644 index 00000000..ec677885 --- /dev/null +++ b/src/trap_instances/EditionMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_EditionMgr +#include \ No newline at end of file diff --git a/src/trap_instances/FileMgr.cpp b/src/trap_instances/FileMgr.cpp new file mode 100644 index 00000000..2e67d32a --- /dev/null +++ b/src/trap_instances/FileMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_FileMgr +#include \ No newline at end of file diff --git a/src/trap_instances/Finder.cpp b/src/trap_instances/Finder.cpp new file mode 100644 index 00000000..a197cd01 --- /dev/null +++ b/src/trap_instances/Finder.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_Finder +#include \ No newline at end of file diff --git a/src/trap_instances/FontMgr.cpp b/src/trap_instances/FontMgr.cpp new file mode 100644 index 00000000..da672a7b --- /dev/null +++ b/src/trap_instances/FontMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_FontMgr +#include \ No newline at end of file diff --git a/src/trap_instances/Gestalt.cpp b/src/trap_instances/Gestalt.cpp new file mode 100644 index 00000000..3db98fcb --- /dev/null +++ b/src/trap_instances/Gestalt.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_Gestalt +#include \ No newline at end of file diff --git a/src/trap_instances/HelpMgr.cpp b/src/trap_instances/HelpMgr.cpp new file mode 100644 index 00000000..1254b7c7 --- /dev/null +++ b/src/trap_instances/HelpMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_HelpMgr +#include \ No newline at end of file diff --git a/src/trap_instances/Iconutil.cpp b/src/trap_instances/Iconutil.cpp new file mode 100644 index 00000000..1039c25a --- /dev/null +++ b/src/trap_instances/Iconutil.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_Iconutil +#include \ No newline at end of file diff --git a/src/trap_instances/IntlUtil.cpp b/src/trap_instances/IntlUtil.cpp new file mode 100644 index 00000000..65c026e6 --- /dev/null +++ b/src/trap_instances/IntlUtil.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_IntlUtil +#include \ No newline at end of file diff --git a/src/trap_instances/ListMgr.cpp b/src/trap_instances/ListMgr.cpp new file mode 100644 index 00000000..65d1c247 --- /dev/null +++ b/src/trap_instances/ListMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ListMgr +#include \ No newline at end of file diff --git a/src/trap_instances/MemoryMgr.cpp b/src/trap_instances/MemoryMgr.cpp new file mode 100644 index 00000000..6aa2ce0e --- /dev/null +++ b/src/trap_instances/MemoryMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_MemoryMgr +#include \ No newline at end of file diff --git a/src/trap_instances/MenuMgr.cpp b/src/trap_instances/MenuMgr.cpp new file mode 100644 index 00000000..3858c69d --- /dev/null +++ b/src/trap_instances/MenuMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_MenuMgr +#include \ No newline at end of file diff --git a/src/trap_instances/NotifyMgr.cpp b/src/trap_instances/NotifyMgr.cpp new file mode 100644 index 00000000..aac0a8ea --- /dev/null +++ b/src/trap_instances/NotifyMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_NotifyMgr +#include \ No newline at end of file diff --git a/src/trap_instances/OSEvent.cpp b/src/trap_instances/OSEvent.cpp new file mode 100644 index 00000000..16bed43b --- /dev/null +++ b/src/trap_instances/OSEvent.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_OSEvent +#include \ No newline at end of file diff --git a/src/trap_instances/OSUtil.cpp b/src/trap_instances/OSUtil.cpp new file mode 100644 index 00000000..3c73cf2d --- /dev/null +++ b/src/trap_instances/OSUtil.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_OSUtil +#include \ No newline at end of file diff --git a/src/trap_instances/Package.cpp b/src/trap_instances/Package.cpp new file mode 100644 index 00000000..fe7d7f75 --- /dev/null +++ b/src/trap_instances/Package.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_Package +#include \ No newline at end of file diff --git a/src/trap_instances/PrintMgr.cpp b/src/trap_instances/PrintMgr.cpp new file mode 100644 index 00000000..4e0afcdb --- /dev/null +++ b/src/trap_instances/PrintMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_PrintMgr +#include \ No newline at end of file diff --git a/src/trap_instances/ProcessMgr.cpp b/src/trap_instances/ProcessMgr.cpp new file mode 100644 index 00000000..1ebde19b --- /dev/null +++ b/src/trap_instances/ProcessMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ProcessMgr +#include \ No newline at end of file diff --git a/src/trap_instances/QuickDraw.cpp b/src/trap_instances/QuickDraw.cpp new file mode 100644 index 00000000..b08722b6 --- /dev/null +++ b/src/trap_instances/QuickDraw.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_QuickDraw +#include \ No newline at end of file diff --git a/src/trap_instances/QuickTime.cpp b/src/trap_instances/QuickTime.cpp new file mode 100644 index 00000000..08ea02d0 --- /dev/null +++ b/src/trap_instances/QuickTime.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_QuickTime +#include \ No newline at end of file diff --git a/src/trap_instances/ResourceMgr.cpp b/src/trap_instances/ResourceMgr.cpp new file mode 100644 index 00000000..a26e854f --- /dev/null +++ b/src/trap_instances/ResourceMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ResourceMgr +#include \ No newline at end of file diff --git a/src/trap_instances/SANE.cpp b/src/trap_instances/SANE.cpp new file mode 100644 index 00000000..48dc3ce4 --- /dev/null +++ b/src/trap_instances/SANE.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_SANE +#include \ No newline at end of file diff --git a/src/trap_instances/ScrapMgr.cpp b/src/trap_instances/ScrapMgr.cpp new file mode 100644 index 00000000..c448910f --- /dev/null +++ b/src/trap_instances/ScrapMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ScrapMgr +#include \ No newline at end of file diff --git a/src/trap_instances/ScriptMgr.cpp b/src/trap_instances/ScriptMgr.cpp new file mode 100644 index 00000000..b985c60c --- /dev/null +++ b/src/trap_instances/ScriptMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ScriptMgr +#include \ No newline at end of file diff --git a/src/trap_instances/SegmentLdr.cpp b/src/trap_instances/SegmentLdr.cpp new file mode 100644 index 00000000..b6b85fa7 --- /dev/null +++ b/src/trap_instances/SegmentLdr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_SegmentLdr +#include \ No newline at end of file diff --git a/src/trap_instances/ShutDown.cpp b/src/trap_instances/ShutDown.cpp new file mode 100644 index 00000000..0c5d77f4 --- /dev/null +++ b/src/trap_instances/ShutDown.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ShutDown +#include \ No newline at end of file diff --git a/src/trap_instances/SoundMgr.cpp b/src/trap_instances/SoundMgr.cpp new file mode 100644 index 00000000..29dd8f98 --- /dev/null +++ b/src/trap_instances/SoundMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_SoundMgr +#include \ No newline at end of file diff --git a/src/trap_instances/StdFilePkg.cpp b/src/trap_instances/StdFilePkg.cpp new file mode 100644 index 00000000..c0d55b39 --- /dev/null +++ b/src/trap_instances/StdFilePkg.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_StdFilePkg +#include \ No newline at end of file diff --git a/src/trap_instances/SysErr.cpp b/src/trap_instances/SysErr.cpp new file mode 100644 index 00000000..4a9a209d --- /dev/null +++ b/src/trap_instances/SysErr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_SysErr +#include \ No newline at end of file diff --git a/src/trap_instances/TextEdit.cpp b/src/trap_instances/TextEdit.cpp new file mode 100644 index 00000000..a1ef29e8 --- /dev/null +++ b/src/trap_instances/TextEdit.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_TextEdit +#include \ No newline at end of file diff --git a/src/trap_instances/TimeMgr.cpp b/src/trap_instances/TimeMgr.cpp new file mode 100644 index 00000000..aa3eccb5 --- /dev/null +++ b/src/trap_instances/TimeMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_TimeMgr +#include \ No newline at end of file diff --git a/src/trap_instances/ToolboxEvent.cpp b/src/trap_instances/ToolboxEvent.cpp new file mode 100644 index 00000000..f91e6fd8 --- /dev/null +++ b/src/trap_instances/ToolboxEvent.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ToolboxEvent +#include \ No newline at end of file diff --git a/src/trap_instances/ToolboxUtil.cpp b/src/trap_instances/ToolboxUtil.cpp new file mode 100644 index 00000000..c4fbe94f --- /dev/null +++ b/src/trap_instances/ToolboxUtil.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_ToolboxUtil +#include \ No newline at end of file diff --git a/src/trap_instances/VRetraceMgr.cpp b/src/trap_instances/VRetraceMgr.cpp new file mode 100644 index 00000000..21655dd2 --- /dev/null +++ b/src/trap_instances/VRetraceMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_VRetraceMgr +#include \ No newline at end of file diff --git a/src/trap_instances/WindowMgr.cpp b/src/trap_instances/WindowMgr.cpp new file mode 100644 index 00000000..1700c326 --- /dev/null +++ b/src/trap_instances/WindowMgr.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_WindowMgr +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_adb.cpp b/src/trap_instances/rsys_adb.cpp new file mode 100644 index 00000000..0bcfa67a --- /dev/null +++ b/src/trap_instances/rsys_adb.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_adb +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_cfm.cpp b/src/trap_instances/rsys_cfm.cpp new file mode 100644 index 00000000..cef2f3ad --- /dev/null +++ b/src/trap_instances/rsys_cfm.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_cfm +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_ctl.cpp b/src/trap_instances/rsys_ctl.cpp new file mode 100644 index 00000000..3b18b2ed --- /dev/null +++ b/src/trap_instances/rsys_ctl.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_ctl +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_emustubs.cpp b/src/trap_instances/rsys_emustubs.cpp new file mode 100644 index 00000000..222b75a0 --- /dev/null +++ b/src/trap_instances/rsys_emustubs.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_emustubs +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_gestalt.cpp b/src/trap_instances/rsys_gestalt.cpp new file mode 100644 index 00000000..220bf759 --- /dev/null +++ b/src/trap_instances/rsys_gestalt.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_gestalt +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_list.cpp b/src/trap_instances/rsys_list.cpp new file mode 100644 index 00000000..f3d86aca --- /dev/null +++ b/src/trap_instances/rsys_list.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_list +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_menu.cpp b/src/trap_instances/rsys_menu.cpp new file mode 100644 index 00000000..4a5d0d2a --- /dev/null +++ b/src/trap_instances/rsys_menu.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_menu +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_mixed_mode.cpp b/src/trap_instances/rsys_mixed_mode.cpp new file mode 100644 index 00000000..e48fb4a5 --- /dev/null +++ b/src/trap_instances/rsys_mixed_mode.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_mixed_mode +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_osutil.cpp b/src/trap_instances/rsys_osutil.cpp new file mode 100644 index 00000000..739c0af3 --- /dev/null +++ b/src/trap_instances/rsys_osutil.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_osutil +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_print.cpp b/src/trap_instances/rsys_print.cpp new file mode 100644 index 00000000..4208d90d --- /dev/null +++ b/src/trap_instances/rsys_print.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_print +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_refresh.cpp b/src/trap_instances/rsys_refresh.cpp new file mode 100644 index 00000000..a86dc940 --- /dev/null +++ b/src/trap_instances/rsys_refresh.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_refresh +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_soundopts.cpp b/src/trap_instances/rsys_soundopts.cpp new file mode 100644 index 00000000..29930cff --- /dev/null +++ b/src/trap_instances/rsys_soundopts.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_soundopts +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_stdfile.cpp b/src/trap_instances/rsys_stdfile.cpp new file mode 100644 index 00000000..929672bd --- /dev/null +++ b/src/trap_instances/rsys_stdfile.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_stdfile +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_tesave.cpp b/src/trap_instances/rsys_tesave.cpp new file mode 100644 index 00000000..04d17feb --- /dev/null +++ b/src/trap_instances/rsys_tesave.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_tesave +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_vbl.cpp b/src/trap_instances/rsys_vbl.cpp new file mode 100644 index 00000000..48cb7dd8 --- /dev/null +++ b/src/trap_instances/rsys_vbl.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_vbl +#include \ No newline at end of file diff --git a/src/trap_instances/rsys_wind.cpp b/src/trap_instances/rsys_wind.cpp new file mode 100644 index 00000000..e672a4a5 --- /dev/null +++ b/src/trap_instances/rsys_wind.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_rsys_wind +#include \ No newline at end of file diff --git a/src/trap_instances/trap_instances.cmake b/src/trap_instances/trap_instances.cmake new file mode 100644 index 00000000..1bd67569 --- /dev/null +++ b/src/trap_instances/trap_instances.cmake @@ -0,0 +1,61 @@ +set(trap_instance_sources + trap_instances/ADB.cpp + trap_instances/AliasMgr.cpp + trap_instances/AppleEvents.cpp + trap_instances/BinaryDecimal.cpp + trap_instances/ControlMgr.cpp + trap_instances/CQuickDraw.cpp + trap_instances/DeskMgr.cpp + trap_instances/DialogMgr.cpp + trap_instances/DiskInit.cpp + trap_instances/EditionMgr.cpp + trap_instances/FileMgr.cpp + trap_instances/Finder.cpp + trap_instances/FontMgr.cpp + trap_instances/Gestalt.cpp + trap_instances/HelpMgr.cpp + trap_instances/Iconutil.cpp + trap_instances/IntlUtil.cpp + trap_instances/ListMgr.cpp + trap_instances/MemoryMgr.cpp + trap_instances/MenuMgr.cpp + trap_instances/NotifyMgr.cpp + trap_instances/OSEvent.cpp + trap_instances/OSUtil.cpp + trap_instances/Package.cpp + trap_instances/PrintMgr.cpp + trap_instances/ProcessMgr.cpp + trap_instances/QuickDraw.cpp + trap_instances/QuickTime.cpp + trap_instances/ResourceMgr.cpp + trap_instances/SANE.cpp + trap_instances/ScrapMgr.cpp + trap_instances/ScriptMgr.cpp + trap_instances/SegmentLdr.cpp + trap_instances/ShutDown.cpp + trap_instances/SoundMgr.cpp + trap_instances/StdFilePkg.cpp + trap_instances/SysErr.cpp + trap_instances/TextEdit.cpp + trap_instances/TimeMgr.cpp + trap_instances/ToolboxEvent.cpp + trap_instances/ToolboxUtil.cpp + trap_instances/VRetraceMgr.cpp + trap_instances/WindowMgr.cpp + trap_instances/rsys_adb.cpp + trap_instances/rsys_cfm.cpp + trap_instances/rsys_ctl.cpp + trap_instances/rsys_emustubs.cpp + trap_instances/rsys_gestalt.cpp + trap_instances/rsys_list.cpp + trap_instances/rsys_menu.cpp + trap_instances/rsys_mixed_mode.cpp + trap_instances/rsys_osutil.cpp + trap_instances/rsys_print.cpp + trap_instances/rsys_refresh.cpp + trap_instances/rsys_soundopts.cpp + trap_instances/rsys_stdfile.cpp + trap_instances/rsys_tesave.cpp + trap_instances/rsys_vbl.cpp + trap_instances/rsys_wind.cpp + ) diff --git a/src/traps.instances.cpp b/src/traps.instances.cpp deleted file mode 100644 index 0fc225c5..00000000 --- a/src/traps.instances.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#define FUNCTION_WRAPPER_IMPLEMENTATION -#include -#include - -#include "rsys/everything.h" -#include "rsys/emustubs.h" -#include "rsys/ctl.h" -#include "rsys/list.h" -#include "rsys/menu.h" -#include "rsys/wind.h" -#include "rsys/print.h" -#include "rsys/vbl.h" -#include "rsys/stdfile.h" -#include "rsys/tesave.h" -#include "rsys/osutil.h" -#include "rsys/refresh.h" -#include "rsys/gestalt.h" diff --git a/util/mkapimodules.pl b/util/mkapimodules.pl new file mode 100644 index 00000000..944e10ec --- /dev/null +++ b/util/mkapimodules.pl @@ -0,0 +1,60 @@ +# Scans through all header files +# If the header file uses any of the trap/entrypoint macros, makes sure it includes api-module.h +# Creates template instantiation C++ files for all such header files + +open(CMAKE, ">trap_instances/trap_instances.cmake"); +print CMAKE "set(trap_instance_sources\n"; + +while($header = ) { + $hadtrap = 0; + $i = 0; + $lastincludeline = 1; + $hasmodulename = 0; + open(HEADER, $header); + while($line =
) { + $i++; + $lastincludeline = $i if($line =~ /^#include/); + $hasmodulename = 1 if($line =~ /^#define MODULE_NAME/); + $hadtrap = 1 if($line =~ /^(PASCAL|REGISTER|RAW_68K)_TRAP/ || $line =~ /^(PASCAL|REGISTER)_SUBTRAP/ || $line =~ /^(NOTRAP_FUNCTION|PASCAL_FUNCTION)/); + } + close(HEADER); + + if($hadtrap) { + + if($header =~ /^include\/rsys\/(.*)\.h$/) { + $modname = "rsys_$1"; + $headername = "rsys/$1.h"; + } elsif($header =~ /^include\/(.*)\.h$/) { + $modname = $1; + $headername = "$1.h"; + } + + open(HEADER, $header); + open(OUT, ">temp.h"); + $i = 0; + while($l =
) { + $i++; + + print OUT $l; + if($i == $lastincludeline && !$hasmodulename) { + print($header, "\n"); + + print OUT "\n"; + print OUT "#define MODULE_NAME ", $modname, "\n"; + print OUT "#include \n" + } + } + close(OUT); + close(HEADER); + + open(OUT, ">trap_instances/$modname.cpp"); + print OUT "#define INSTANTIATE_TRAPS_$modname\n"; + print OUT "#include <$headername>"; + close(OUT); + print CMAKE "\t\ttrap_instances/$modname.cpp\n"; + + system "mv temp.h $header"; + } +} +print CMAKE "\t)\n"; +close(CMAKE); From a8ee6e97a31233f6f779162b0a60ae0b1dea2fc0 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Sat, 10 Feb 2018 02:16:59 +0100 Subject: [PATCH 82/88] remove old ptoc/ctop code --- src/emutrap.cpp | 235 ------------------------------ src/include/rsys/ctop_ptoc.h | 101 ------------- src/include/rsys/functions.impl.h | 33 +---- src/include/rsys/trapglue.h | 8 - 4 files changed, 1 insertion(+), 376 deletions(-) delete mode 100644 src/include/rsys/ctop_ptoc.h diff --git a/src/emutrap.cpp b/src/emutrap.cpp index 1673e2e7..d3e1c656 100644 --- a/src/emutrap.cpp +++ b/src/emutrap.cpp @@ -42,224 +42,6 @@ using namespace Executor; * */ -syn68k_addr_t Executor::PascalToCCall(syn68k_addr_t ignoreme, - ptocblock_t *infop) -{ - unsigned short pth, ptv; - uintptr_t args[11], retval; -#if defined(powerpc) - Point points[11]; - int point_count = 0; -#endif - uint64_t magic = infop->magic; - int count, rettype; - void *funcp; - int sizeflag; - typedef uintptr_t (*func0argsp_t)(void); - typedef uintptr_t (*func1argsp_t)(uintptr_t); - typedef uintptr_t (*func2argsp_t)(uintptr_t, uintptr_t); - typedef uintptr_t (*func3argsp_t)(uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func4argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func5argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func6argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func7argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func8argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func9argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func10argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - typedef uintptr_t (*func11argsp_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - syn68k_addr_t retaddr; - - count = 0; - - retaddr = POPADDR(); - - rettype = magic & 7; - magic >>= 3; - while((sizeflag = magic & 7)) - { - switch(sizeflag) - { - case 1: - args[count++] = POPSB(); - break; - case 2: - args[count++] = POPSW(); - break; - case 3: - ptv = POPSW(); - pth = POPSW(); -#if !defined(LITTLEENDIAN) - args[count++] = (ptv << 16) | pth; -#else /* defined(LITTLEENDIAN) */ - args[count++] = (pth << 16) | ptv; -#endif /* defined(LITTLEENDIAN) */ - break; - case 4: - args[count++] = POPSL(); - break; - case 5: - args[count++] = (uintptr_t)SYN68K_TO_US_CHECK0_CHECKNEG1(POPSL()); - break; - } - magic >>= 3; - } - - funcp = infop->wheretogo; - switch(count) - { - case 0: - retval = (*(func0argsp_t)funcp)(); - break; - case 1: - retval = (*(func1argsp_t)funcp)(args[0]); - break; - case 2: - retval = (*(func2argsp_t)funcp)(args[1], args[0]); - break; - case 3: - retval = (*(func3argsp_t)funcp)(args[2], args[1], args[0]); - break; - case 4: - retval = (*(func4argsp_t)funcp)(args[3], args[2], args[1], args[0]); - break; - case 5: - retval = (*(func5argsp_t)funcp)(args[4], args[3], args[2], args[1], - args[0]); - break; - case 6: - retval = (*(func6argsp_t)funcp)(args[5], args[4], args[3], args[2], - args[1], args[0]); - break; - case 7: - retval = (*(func7argsp_t)funcp)(args[6], args[5], args[4], args[3], - args[2], args[1], args[0]); - break; - case 8: - retval = (*(func8argsp_t)funcp)(args[7], args[6], args[5], args[4], - args[3], args[2], args[1], args[0]); - break; - case 9: - retval = (*(func9argsp_t)funcp)(args[8], args[7], args[6], args[5], - args[4], args[3], args[2], args[1], args[0]); - break; - case 10: - retval = (*(func10argsp_t)funcp)(args[9], args[8], args[7], args[6], - args[5], args[4], args[3], args[2], - args[1], args[0]); - break; - case 11: - retval = (*(func11argsp_t)funcp)(args[10], args[9], args[8], args[7], - args[6], args[5], args[4], args[3], - args[2], args[1], args[0]); - break; -#if !defined(LETGCCWAIL) - default: - retval = 0; -#endif - } - - switch(rettype) - { - case 1: - WRITEUW(EM_A7, 0); /* needed for WordPerfect */ - WRITEUB(EM_A7, retval); - break; - case 2: - WRITEUW(EM_A7, retval); - break; - case 4: - WRITEUL(EM_A7, retval); - break; - case 5: - WRITEUL(EM_A7, US_TO_SYN68K_CHECK0_CHECKNEG1((void *)retval)); - break; - } - return retaddr; -} - -static uintptr_t -CToPascalCall_m68k(void *wheretogo, uint64_t magic, va_list ap) -{ - uintptr_t retval; - uintptr_t ul; - int retvaltype; - M68kReg saveregs[14]; - - memcpy(saveregs, &EM_D1, sizeof(saveregs)); /* d1-d7/a0-a6 */ - - retvaltype = magic & 7; - switch(retvaltype) - { - case 1: - case 2: - PUSHUW(0); - break; - case 4: - case 5: - PUSHUL(0); - break; - } - magic >>= 3; - while(magic) - { - switch(magic & 7) - { - case 1: - PUSHUB((unsigned char)va_arg(ap, uintptr_t)); - break; - case 2: - PUSHUW((unsigned short)va_arg(ap, uintptr_t)); - break; - case 3: - ul = va_arg(ap, uintptr_t); -#if !defined(LITTLEENDIAN) - PUSHUW(ul); - PUSHUW(ul >> 16); -#else /* defined(LITTLEENDIAN) */ - PUSHUW(ul >> 16); - PUSHUW(ul); -#endif /* defined(LITTLEENDIAN) */ - break; - case 4: - PUSHUL(va_arg(ap, uintptr_t)); - break; - case 5: - PUSHUL(US_TO_SYN68K_CHECK0_CHECKNEG1((void *)va_arg(ap, uintptr_t))); - break; - } - magic >>= 3; - } - va_end(ap); - - CALL_EMULATOR(US_TO_SYN68K(wheretogo)); - - switch(retvaltype) - { - case 0: - retval = 0; - break; - case 1: - retval = POPSB(); - break; - case 2: - retval = POPSW(); - break; - case 4: - retval = POPSL(); - break; - case 5: - retval = (uintptr_t)SYN68K_TO_US_CHECK0_CHECKNEG1(POPSL()); - break; -#if !defined(LETGCCWAIL) - default: - retval = 0; - break; -#endif - } - memcpy(&EM_D1, saveregs, sizeof(saveregs)); /* d1-d7/a0-a6 */ - return retval; -} - #if defined(powerpc) || defined(__ppc__) static long @@ -444,20 +226,3 @@ is_routine_descriptor_ptr(uint16_t *addr) return retval; } #endif - -uintptr_t Executor::CToPascalCall(void *wheretogo, uint64_t magic, ...) -{ - va_list ap; - uintptr_t retval; - va_start(ap, magic); - -#if defined(powerpc) || defined(__ppc__) - if(is_routine_descriptor_ptr(wheretogo)) - retval = CToRoutineDescriptorCall((RoutineDescriptor *)wheretogo, - magic, ap); - else -#endif - retval = CToPascalCall_m68k(wheretogo, magic, ap); - va_end(ap); - return retval; -} diff --git a/src/include/rsys/ctop_ptoc.h b/src/include/rsys/ctop_ptoc.h deleted file mode 100644 index 186d6559..00000000 --- a/src/include/rsys/ctop_ptoc.h +++ /dev/null @@ -1,101 +0,0 @@ -#pragma once - -namespace Executor -{ -template -struct UPP; - -struct Point; - -using CTOPCode = uint64_t; - -namespace ptoc_internal -{ - template - struct CTOP - { - constexpr static CTOPCode value = CTOP::value | (CTOP::value << 3); - }; - - template - struct CTOP - { - constexpr static - typename std::enable_if::value && sizeof(T) <= 4, CTOPCode>::type - value - = sizeof(T); - }; - - template - struct CTOP - { - constexpr static CTOPCode value = 5; - }; - - template - struct CTOP> - { - constexpr static CTOPCode value = 5; - }; - - template<> - struct CTOP - { - constexpr static CTOPCode value = 3; - }; - template<> - struct CTOP - { - constexpr static CTOPCode value = 0; - }; - - template - struct PTOC - { - using Rec = PTOC; - constexpr static CTOPCode value = (PTOC::value << Rec::bits) | (Rec::value); - constexpr static int bits = 3 + Rec::bits; - }; - - template - struct PTOC - { - constexpr static CTOPCode value = CTOP::value; - constexpr static int bits = 3; - }; - - template - struct helper - { - constexpr static bool enable = false; - }; - template - struct helper - { - constexpr static bool enable = true; - constexpr static CTOPCode ctop = CTOP::value; - constexpr static CTOPCode ptoc = PTOC::value; - }; - - template - struct helper - { - constexpr static bool enable = true; - constexpr static CTOPCode ctop = CTOP::value; - constexpr static CTOPCode ptoc = PTOC::value | (PTOC::value << 3); - }; -} - - -template::enable>> -constexpr CTOPCode ptoc(F * = nullptr) -{ - return ptoc_internal::helper::ptoc; -} -template::enable>> -constexpr CTOPCode ctop(F * = nullptr) -{ - return ptoc_internal::helper::ctop; -} - -} \ No newline at end of file diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h index 7b76855d..49d8de50 100644 --- a/src/include/rsys/functions.impl.h +++ b/src/include/rsys/functions.impl.h @@ -7,12 +7,6 @@ #include -//#define USE_DYNAMIC_CTOP_PTOC - -#ifdef USE_DYNAMIC_CTOP_PTOC -#include -#endif - namespace Executor { @@ -192,19 +186,6 @@ namespace callfrom68K template struct List; -#ifdef USE_DYNAMIC_CTOP_PTOC - template - struct Invoker - { - static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void *) - { - static ptocblock_t ptocblock { (void*)fptr, ptoc(fptr) }; - syn68k_addr_t ret = PascalToCCall(addr, &ptocblock); - return ret; - } - }; -#else - template struct PascalInvoker; @@ -262,7 +243,6 @@ namespace callfrom68K return retaddr; } }; -#endif template struct Invoker @@ -377,16 +357,6 @@ namespace callto68K } }; -#ifdef USE_DYNAMIC_CTOP_PTOC - template - struct Invoker - { - static Ret invoke68K(void *ptr, Args... args) - { - return (Ret)CToPascalCall(ptr, ctop(), args...); - } - }; -#else template<> struct Invoker { @@ -417,7 +387,7 @@ namespace callto68K return callconv::stack::pop(); } }; -#endif + template<> struct Invoker { @@ -427,7 +397,6 @@ namespace callto68K return POPADDR(); // ### } }; - } template diff --git a/src/include/rsys/trapglue.h b/src/include/rsys/trapglue.h index 036fc536..c799ae84 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -5,14 +5,6 @@ namespace Executor { -typedef struct -{ - void *wheretogo; - uint64_t magic; -} ptocblock_t; -extern syn68k_addr_t PascalToCCall(syn68k_addr_t ignoreme, ptocblock_t *infop); -extern uintptr_t CToPascalCall(void *, uint64_t, ...); - #define TOOLBIT (0x0800) #define NTOOLENTRIES (0x400) #define NOSENTRIES (0x100) From a503b9ca84ca5bbafbf172755f8ddb1902eda784 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 17:01:28 +0100 Subject: [PATCH 83/88] everything.h: use <> includes --- src/include/rsys/everything.h | 102 +++++++++++++++++----------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index 1e60621c..69291361 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -1,53 +1,53 @@ -#include "rsys/common.h" +#include -#include "QuickDraw.h" -#include "ControlMgr.h" -#include "WindowMgr.h" -#include "CQuickDraw.h" -#include "FileMgr.h" -#include "DeviceMgr.h" -#include "DialogMgr.h" -#include "FontMgr.h" -#include "MemoryMgr.h" -#include "ListMgr.h" -#include "MenuMgr.h" -#include "ResourceMgr.h" -#include "OSEvent.h" -#include "Disk.h" -#include "PrintMgr.h" -#include "ScrapMgr.h" -#include "Serial.h" -#include "StdFilePkg.h" -#include "IntlUtil.h" -#include "OSUtil.h" -#include "SegmentLdr.h" -#include "ToolboxEvent.h" -#include "ToolboxUtil.h" -#include "VRetraceMgr.h" -#include "DeskMgr.h" -#include "Package.h" -#include "SysErr.h" -#include "SANE.h" -#include "ScriptMgr.h" -#include "SoundMgr.h" -#include "NotifyMgr.h" -#include "ShutDown.h" -#include "Gestalt.h" -#include "AppleEvents.h" -#include "ProcessMgr.h" -#include "AliasMgr.h" -#include "EditionMgr.h" -#include "HelpMgr.h" -#include "Iconutil.h" -#include "PPC.h" -#include "QuickTime.h" -#include "BinaryDecimal.h" -#include "DiskInit.h" -#include "TimeMgr.h" -#include "ADB.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "rsys/file.h" -#include "rsys/adb.h" -#include "rsys/soundopts.h" -#include "rsys/cfm.h" -#include "rsys/mixed_mode.h" +#include +#include +#include +#include +#include From 0160cce92e261a0810d3f32c2e72506477aed7ed Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 22:53:45 +0100 Subject: [PATCH 84/88] scanuniversalheaders.pl: auto-insert PASCAL_TRAP and PASCAL_SUBTRAP --- util/scanuniversalheaders.pl | 56 ++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/util/scanuniversalheaders.pl b/util/scanuniversalheaders.pl index 5d1c95fb..0075d0fc 100644 --- a/util/scanuniversalheaders.pl +++ b/util/scanuniversalheaders.pl @@ -116,29 +116,55 @@ print "\n"; } +while($f = ) { + open(INCLUDE, $f); + while($l = ) { + if($l =~ /^(PASCAL|REGISTER)_(TRAP|SUBTRAP)\(([A-Za-z0-9_]+),.*/) { + $handled{$3} = 1; + } + if($l =~ /^(PASCAL|NOTRAP)_FUNCTION\(([A-Za-z0-9_]+)\b.*/) { + $handled{$2} = 1; + } + if($l =~ /^DISPATCHER_TRAP\(([A-Za-z0-9_]+), 0x([0-9A-F]+),.*/) { + $dispatcher{$2} = $1; + } + } + close(INCLUDE); +} + while($f = ) { open(INCLUDE, $f); open(OUT, ">temp.h"); while($l = ) { - if($l =~ /^PASCAL_SUBTRAP\(([A-Za-z0-9_]+), 0x([0-9A-Z]+), (0x[0-9A-Z]+), ([A-Za-z0-9_]+)\)/) { + print OUT $l; + if($l =~ /^.*\bC_([A-Za-z0-9]+)\b\(.*;/) { $name = $1; - $trapname = $4; - $trapnum = $2; - $selector = $3; - $origname = $name; - $name = $newnames{$name} if(exists $newnames{$name}); + if(! exists $handled{$name}) { + if(! exists $traps{$name}) { + print "unknown $name\n"; + } else { + print "unhandled $name\n"; + $trap = $traps{$name}; + $kind = $kinds{$trap}; + print $kind, "\n"; - if(exists $headerfile{$trapname}) { - if($headerfile{$trapname} ne $f) { - print "Trap in more than one header file: $trapname in $headerfile{$trapname} and $f\n" - } - } else { - print "$f:\n"; - print "DISPATCHER_TRAP($trapname, 0x$trapnum, $kinds{$trapnum});\n"; + if($kind eq 'simple') { + print OUT "PASCAL_TRAP($name, $trap);\n"; + } elsif($kind eq 'complicated') { + } else { + $selector = $selectors{$name}; + $disp = "dispatcher$trap"; + if(!exists $dispatcher{$trap}) { + $dispatcher{$trap} = $disp; + print OUT "DISPATCHER_TRAP($disp, 0x$trap, $kind);\n"; + } + $disp = $dispatcher{$trap}; + print OUT "PASCAL_SUBTRAP($name, 0x$trap, 0x$selector, $disp);\n"; + } + } + } - $headerfile{$trapname} = $f; } - print OUT $l; } close(OUT); close(INCLUDE); From d7d65f363d014f02348c6025d6b200badc898b5d Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 22:54:19 +0100 Subject: [PATCH 85/88] logging: fix missing namedThings entry for subtraps --- src/include/rsys/traps.impl.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/include/rsys/traps.impl.h b/src/include/rsys/traps.impl.h index 827581f1..9a4ed763 100644 --- a/src/include/rsys/traps.impl.h +++ b/src/include/rsys/traps.impl.h @@ -103,6 +103,7 @@ SubTrapFunction::SubTrapFunctio template void SubTrapFunction::init() { + logging::namedThings[(void*) fptr] = this->name; if(logging::enabled()) dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> ::invokeFrom68K); From 14b3613eb3c32dabbfa332f84367989e982a8934 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 22:56:05 +0100 Subject: [PATCH 86/88] SpeechManager traps (run scanuniversalheaders.pl and kapimodules.pl) --- src/include/ResourceMgr.h | 1 + src/include/SpeechManager.h | 31 ++++++++++++++++++++++--- src/trap_instances/SpeechManager.cpp | 2 ++ src/trap_instances/trap_instances.cmake | 1 + 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/trap_instances/SpeechManager.cpp diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index 952f8982..cf33e241 100644 --- a/src/include/ResourceMgr.h +++ b/src/include/ResourceMgr.h @@ -230,6 +230,7 @@ extern void C_SetResourceSize(Handle resource, int32_t size); PASCAL_SUBTRAP(SetResourceSize, 0xA822, 0x0003, ResourceDispatch); extern Handle C_GetNextFOND(Handle fondHandle); +PASCAL_SUBTRAP(GetNextFOND, 0xA822, 0x000A, ResourceDispatch); } #endif /* _RESOURCE_H_ */ diff --git a/src/include/SpeechManager.h b/src/include/SpeechManager.h index 596a12bc..36fac635 100644 --- a/src/include/SpeechManager.h +++ b/src/include/SpeechManager.h @@ -12,9 +12,11 @@ #include "SoundMgr.h" #include "FileMgr.h" +#define MODULE_NAME SpeechManager +#include + namespace Executor { -#pragma pack(push, 2) typedef struct VoiceSpec { GUEST_STRUCT; @@ -91,35 +93,58 @@ typedef struct DelimiterInfo GUEST endDelimiter[2]; } DelimiterInfo; -#pragma pack(pop) - NumVersion C_SpeechManagerVersion(void); +PASCAL_SUBTRAP(SpeechManagerVersion, 0xA800, 0x0000000C, SoundDispatch); int16_t C_SpeechBusy(void); +PASCAL_SUBTRAP(SpeechBusy, 0xA800, 0x003C000C, SoundDispatch); int16_t C_SpeechBusySystemWide(void); +PASCAL_SUBTRAP(SpeechBusySystemWide, 0xA800, 0x0040000C, SoundDispatch); OSErr C_CountVoices(int16_t *numVoices); +PASCAL_SUBTRAP(CountVoices, 0xA800, 0x0108000C, SoundDispatch); OSErr C_DisposeSpeechChannel(SpeechChannel chan); +PASCAL_SUBTRAP(DisposeSpeechChannel, 0xA800, 0x021C000C, SoundDispatch); OSErr C_SpeakString(Str255 textToBeSpoken); +PASCAL_SUBTRAP(SpeakString, 0xA800, 0x0220000C, SoundDispatch); OSErr C_StopSpeech(SpeechChannel chan); +PASCAL_SUBTRAP(StopSpeech, 0xA800, 0x022C000C, SoundDispatch); OSErr C_ContinueSpeech(SpeechChannel chan); +PASCAL_SUBTRAP(ContinueSpeech, 0xA800, 0x0238000C, SoundDispatch); OSErr C_GetIndVoice(int16_t index, VoiceSpec *voice); +PASCAL_SUBTRAP(GetIndVoice, 0xA800, 0x030C000C, SoundDispatch); OSErr C_NewSpeechChannel(VoiceSpec *voice, SpeechChannel *chan); +PASCAL_SUBTRAP(NewSpeechChannel, 0xA800, 0x0418000C, SoundDispatch); OSErr C_StopSpeechAt(SpeechChannel chan, int32_t whereToStop); +PASCAL_SUBTRAP(StopSpeechAt, 0xA800, 0x0430000C, SoundDispatch); OSErr C_PauseSpeechAt(SpeechChannel chan, int32_t whereToPause); +PASCAL_SUBTRAP(PauseSpeechAt, 0xA800, 0x0434000C, SoundDispatch); OSErr C_SetSpeechRate(SpeechChannel chan, Fixed rate); +PASCAL_SUBTRAP(SetSpeechRate, 0xA800, 0x0444000C, SoundDispatch); OSErr C_GetSpeechRate(SpeechChannel chan, Fixed *rate); +PASCAL_SUBTRAP(GetSpeechRate, 0xA800, 0x0448000C, SoundDispatch); OSErr C_SetSpeechPitch(SpeechChannel chan, Fixed pitch); +PASCAL_SUBTRAP(SetSpeechPitch, 0xA800, 0x044C000C, SoundDispatch); OSErr C_GetSpeechPitch(SpeechChannel chan, Fixed *pitch); +PASCAL_SUBTRAP(GetSpeechPitch, 0xA800, 0x0450000C, SoundDispatch); OSErr C_UseDictionary(SpeechChannel chan, Handle dictionary); +PASCAL_SUBTRAP(UseDictionary, 0xA800, 0x0460000C, SoundDispatch); OSErr C_MakeVoiceSpec(OSType creator, OSType id, VoiceSpec *voice); +PASCAL_SUBTRAP(MakeVoiceSpec, 0xA800, 0x0604000C, SoundDispatch); OSErr C_GetVoiceDescription(const VoiceSpec *voice, VoiceDescription *info, LONGINT infoLength); +PASCAL_SUBTRAP(GetVoiceDescription, 0xA800, 0x0610000C, SoundDispatch); OSErr C_GetVoiceInfo(const VoiceSpec *voice, OSType selector, void *voiceInfo); +PASCAL_SUBTRAP(GetVoiceInfo, 0xA800, 0x0614000C, SoundDispatch); OSErr C_SpeakText(SpeechChannel chan, const void *textBuf, ULONGINT textBytes); +PASCAL_SUBTRAP(SpeakText, 0xA800, 0x0624000C, SoundDispatch); OSErr C_SetSpeechInfo(SpeechChannel chan, OSType selector, const void *speechInfo); +PASCAL_SUBTRAP(SetSpeechInfo, 0xA800, 0x0654000C, SoundDispatch); OSErr C_GetSpeechInfo(SpeechChannel chan, OSType selector, void *speechInfo); +PASCAL_SUBTRAP(GetSpeechInfo, 0xA800, 0x0658000C, SoundDispatch); OSErr C_SpeakBuffer(SpeechChannel chan, const void *textBuf, ULONGINT textBytes, int32_t controlFlags); +PASCAL_SUBTRAP(SpeakBuffer, 0xA800, 0x0828000C, SoundDispatch); OSErr C_TextToPhonemes(SpeechChannel chan, const void *textBuf, ULONGINT textBytes, Handle phonemeBuf, GUEST *phonemeBytes); +PASCAL_SUBTRAP(TextToPhonemes, 0xA800, 0x0A5C000C, SoundDispatch); } #endif /* defined(__CocoaExecutor__SpeechManager__) */ diff --git a/src/trap_instances/SpeechManager.cpp b/src/trap_instances/SpeechManager.cpp new file mode 100644 index 00000000..5b8b3dd9 --- /dev/null +++ b/src/trap_instances/SpeechManager.cpp @@ -0,0 +1,2 @@ +#define INSTANTIATE_TRAPS_SpeechManager +#include \ No newline at end of file diff --git a/src/trap_instances/trap_instances.cmake b/src/trap_instances/trap_instances.cmake index 1bd67569..be82788a 100644 --- a/src/trap_instances/trap_instances.cmake +++ b/src/trap_instances/trap_instances.cmake @@ -34,6 +34,7 @@ set(trap_instance_sources trap_instances/SegmentLdr.cpp trap_instances/ShutDown.cpp trap_instances/SoundMgr.cpp + trap_instances/SpeechManager.cpp trap_instances/StdFilePkg.cpp trap_instances/SysErr.cpp trap_instances/TextEdit.cpp From 0d57e521f465435fae4a709595ab7f5e7386e9dd Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 22:58:31 +0100 Subject: [PATCH 87/88] SIGDIGLEN from Apple headers conflicts with SANE.h, add #undef --- src/SpeechManager-MacBridge.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SpeechManager-MacBridge.mm b/src/SpeechManager-MacBridge.mm index 3899950d..9f61915e 100644 --- a/src/SpeechManager-MacBridge.mm +++ b/src/SpeechManager-MacBridge.mm @@ -13,6 +13,7 @@ #undef NO #define YES YES_EXEC #define NO NO_EXEC +#undef SIGDIGLEN #include "rsys/common.h" #include "rsys/hfs.h" #include "MemoryMgr.h" From e565bb3788c4c912d99e1e20b41ec332cdcdd27d Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 12 Feb 2018 22:56:57 +0100 Subject: [PATCH 88/88] Gestalt: report that Speech Manager is available --- src/gestalt.cpp | 3 +++ src/include/Gestalt.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gestalt.cpp b/src/gestalt.cpp index a8d0d250..ac1a31b0 100644 --- a/src/gestalt.cpp +++ b/src/gestalt.cpp @@ -85,6 +85,9 @@ static gestaltentry_t gtable[] = { { gestaltSoundAttr, 0x0C00, }, + { + gestaltSpeechAttr, 0x0001 + }, /* gestaltStdNBPAttr, 0, */ /* gestaltTermMgrAttr, 0, */ /* gestaltParityAttr, 0, */ diff --git a/src/include/Gestalt.h b/src/include/Gestalt.h index d6a16e0f..e51a6f67 100644 --- a/src/include/Gestalt.h +++ b/src/include/Gestalt.h @@ -60,7 +60,8 @@ enum gestaltScriptCount = FOURCC('s', 'c', 'r', '#'), gestaltScriptMgrVersion = FOURCC('s', 'c', 'r', 'i'), gestaltSerialAttr = FOURCC('s', 'e', 'r', ' '), - gestaltSoundAttr = FOURCC('s', 'n', 'd', ' '), + gestaltSoundAttr = FOURCC('s', 'n', 'd', ' '), + gestaltSpeechAttr = FOURCC('t','t','s','c'), gestaltStandardFileAttr = FOURCC('s', 't', 'd', 'f'), gestaltStdNBPAttr = FOURCC('n', 'l', 'u', 'p'), gestaltTermMgrAttr = FOURCC('t', 'e', 'r', 'm'),