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..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 { @@ -555,7 +556,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/AE_desc.cpp b/src/AE_desc.cpp index b0adfe90..cdaa020c 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); @@ -1092,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)) @@ -1103,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/AE_hdlr.cpp b/src/AE_hdlr.cpp index be89d5bc..8e95169d 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) { @@ -141,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; @@ -431,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/CMakeLists.txt b/src/CMakeLists.txt index 5fb7c36b..b03dc7ee 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}) @@ -168,25 +167,30 @@ 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 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 + 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 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 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 @@ -252,7 +256,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 @@ -271,6 +274,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 @@ -289,6 +294,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 @@ -319,7 +325,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 @@ -354,7 +359,8 @@ set(include_sources hintemplate.h include/rsys/toolutil.h include/rsys/trapglue.h include/rsys/trapname.h - include/rsys/types.h + include/rsys/traps.h + include/rsys/traps.impl.h include/rsys/uniquefile.h include/rsys/vbl.h include/rsys/vdriver.h @@ -370,6 +376,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 @@ -383,12 +390,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} @@ -404,3 +414,4 @@ else() endif() target_link_libraries(executor Threads::Threads syn68k) + 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/SpeechManager-MacBridge.mm b/src/SpeechManager-MacBridge.mm index ada173d3..9f61915e 100644 --- a/src/SpeechManager-MacBridge.mm +++ b/src/SpeechManager-MacBridge.mm @@ -8,10 +8,22 @@ #include #import +#define BOOL BOOL_EXEC +#undef YES +#undef NO +#define YES YES_EXEC +#define NO NO_EXEC +#undef SIGDIGLEN #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 +85,10 @@ BeginSpeech(); @autoreleasepool { SInt16 toRet = internalSynthesizer.speaking; + GuestWrapper toRet2 = GuestWrapper(); + toRet2 = toRet2.fromHost(toRet); - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -82,8 +96,8 @@ { @autoreleasepool { SInt16 toRet = [NSSpeechSynthesizer isAnyApplicationSpeaking]; - - return BigEndianValue(toRet); + + return CW(toRet).get(); } } @@ -91,13 +105,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 +126,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 +137,7 @@ BOOL isBegin = [internalSynthesizer startSpeakingString:ourStr]; Executor::OSErr toRet = isBegin ? Executor::noErr : -1; - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -136,7 +150,7 @@ } Executor::OSErr toRet = Executor::noErr; - return BigEndianValue(toRet); + return CW(toRet).get(); } Executor::OSErr MacBridge::ContinueSpeech (Executor::SpeechChannel chan) @@ -147,7 +161,7 @@ [synth continueSpeaking]; Executor::OSErr toRet = Executor::noErr; - return BigEndianValue(toRet); + return CW(toRet).get(); } } @@ -162,12 +176,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 +255,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor break; default: - return paramErr; + return Executor::paramErr; break; } @@ -271,7 +285,7 @@ static inline void MacVoiceSpecToExecutorVoiceSpec(Executor::VoiceSpec &Executor break; default: - return paramErr; + return Executor::paramErr; break; } @@ -288,7 +302,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 +311,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 +330,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 +352,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 +371,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 +391,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 +487,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 +501,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 +510,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 +543,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 +564,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 +572,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); diff --git a/src/aboutbox.cpp b/src/aboutbox.cpp index c2e2fbd9..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 { @@ -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 @@ -658,7 +649,7 @@ event_loop(bool executor_p) if(TrackControl(c, local_pt, (part == inThumb - ? (ProcPtr)-1 + ? (ControlActionUPP)-1 : scroll_bar_callback)) == inThumb) { @@ -673,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; @@ -711,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..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 /* @@ -64,7 +63,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 +90,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 +131,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/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/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/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/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/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 caa9d9ed..ef3740cf 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 @@ -19,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/qt/qt.cpp b/src/config/front-ends/qt/qt.cpp index 606d2674..13e059d2 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); @@ -328,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/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 5a6573d1..210053d3 100644 --- a/src/config/os/win32/win_serial.cpp +++ b/src/config/os/win32/win_serial.cpp @@ -23,26 +23,27 @@ 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 { int val; /* 0 = COM1, 1 = COM2 ... */ - uint8 key; + uint8_t key; } serial_port_map[] = { { 0, 0 }, { 1, 1 }, @@ -263,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; @@ -311,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/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..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 */ @@ -125,15 +126,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,18 +195,17 @@ 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); 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 b2689d98..0935d203 100644 --- a/src/ctlMouse.cpp +++ b/src/ctlMouse.cpp @@ -16,9 +16,9 @@ #include "rsys/ctl.h" #include "rsys/wind.h" -#include "rsys/pstuff.h" #include "rsys/stdfile.h" #include "rsys/hook.h" +#include /* * Loser suggests that controls are tested in the opposite order that @@ -66,23 +66,20 @@ 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); - HOOKSAVEREGS(); - 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 == &ROMlib_mytrack) + ROMlib_mytrack(ch, inpart); + else if(a == &ROMlib_stdftrack) + ROMlib_stdftrack(ch, inpart); else - CToPascalCall((void *)a, ctop(&C_ROMlib_mytrack), ch, inpart); - HOOKRESTOREREGS(); + a(ch, inpart); } INTEGER Executor::C_TrackControl(ControlHandle c, Point p, - ProcPtr a) /* IMI-323 */ + ControlActionUPP a) /* IMI-323 */ { INTEGER partstart, inpart; EventRecord ev; @@ -122,12 +119,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)) @@ -161,7 +158,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); diff --git a/src/ctlPopup.cpp b/src/ctlPopup.cpp index bd1dfb2a..045cf38b 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)); @@ -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/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/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/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/dialDispatch.cpp b/src/dialDispatch.cpp index 2b68c1c2..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" @@ -14,7 +13,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 3f735b21..a851f938 100644 --- a/src/dialHandle.cpp +++ b/src/dialHandle.cpp @@ -25,18 +25,19 @@ #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" #include "rsys/executor.h" #include "rsys/osevent.h" +#include 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,27 +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); - HOOKSAVEREGS(); - retval = CToPascalCall((void *)fp, ctop(&C_ROMlib_myfilt), dp, evtp, ip); - HOOKRESTOREREGS(); - } - 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)) @@ -107,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) \ @@ -140,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 @@ -154,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; @@ -167,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; @@ -213,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 @@ -228,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; @@ -241,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; @@ -690,14 +666,12 @@ void Executor::BEEPER(INTEGER n) { if(LM(DABeeper)) { - if((void (*)(INTEGER))MR(LM(DABeeper)) == P_ROMlib_mysound) + if(MR(LM(DABeeper)) == &ROMlib_mysound) C_ROMlib_mysound((n)); else { - HOOKSAVEREGS(); ROMlib_hook(dial_soundprocnumber); - Executor::CToPascalCall((void *)(soundprocp)MR(LM(DABeeper)), ctop(&C_ROMlib_mysound), n); - HOOKRESTOREREGS(); + MR(LM(DABeeper))(n); } } } diff --git a/src/dialInit.cpp b/src/dialInit.cpp index 8f812ae9..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)P_ROMlib_mysound); + ErrorSound(&ROMlib_mysound); Handle tmp; PtrToHand(nothing, &tmp, (LONGINT)1); LM(DAStrings)[0] = RM(tmp); 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/dump.cpp b/src/dump.cpp index 61b79467..e0020c23 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; @@ -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/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 498b278e..ce51a68a 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" @@ -67,28 +66,10 @@ namespace Executor #define RTS() return POPADDR() #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(); } + void *ignoreme2) +void C_unknown574() +{ +} STUB(GetDefaultStartup) { @@ -185,29 +166,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 - 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( @@ -216,16 +174,18 @@ STUB(ResourceStub) RTS(); } -STUB_NEG1_D0(DrvrInstall) - -STUB_NEG1_D0(DrvrRemove) - -STUB(ADBReInit) +STUB(DrvrInstall) { - ADBReInit(); + EM_D0 = -1; RTS(); } +STUB(DrvrRemove) +{ + EM_D0 = -1; + RTS(); +} + STUB(ADBOp) { adbop_t *p; @@ -237,433 +197,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(); -} - -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, - 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(); -} - -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) \ - { \ - (void *)C_##name, ptoc(&C_##name) \ - } - -#define ZERO_PTOCBLOCK \ - { \ - 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 -} -#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 - DBSendItem b07 - DBInit e02 - DBGetErr e0a - DBGetItem 100c DBGetConnInfo 1704 -} -#endif - STUB(Fix2X) { syn68k_addr_t retaddr; @@ -698,123 +231,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 - -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 @@ -843,839 +259,12 @@ 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 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) }, - { 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(AEREesolve) }, - { 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(P_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 -{ - -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". - */ - -static ptocblock_t palette_dispatch_ptoc_1[] = { - PTOCBLOCK(Entry2Index), /* 0x00 */ - ZERO_PTOCBLOCK, /* 0x01 */ - PTOCBLOCK(RestoreClutDevice), /* 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 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 */ - 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); -} - -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(InitEditionPack), /* 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 */ 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 - -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) { comm_toolbox_dispatch_args_t *arg_block; @@ -1724,12 +313,6 @@ STUB(CommToolboxDispatch) RTS(); } -STUB(SysEnvirons) -{ - EM_D0 = SysEnvirons(EM_D0, (SysEnvRecPtr)SYN68K_TO_US_CHECK0(EM_A0)); - RTS(); -} - STUB(PostEvent) { GUEST qelemp; @@ -1741,94 +324,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; - - // FIXME: #warning is a0 really the argument to delay? That sounds weird - Delay(EM_A0, &tempp); - EM_D0 = tempp; - RTS(); -} #define DIACBIT (1 << 9) #define CASEBIT (1 << 10) @@ -1851,264 +346,24 @@ STUB(RelString) RTS(); } -STUB(UprString) -{ - long savea0; - - savea0 = EM_A0; - ROMlib_UprString((StringPtr)SYN68K_TO_US_CHECK0(EM_A0), - !(EM_D1 & DIACBIT), EM_D0); - EM_A0 = savea0; - RTS(); -} - -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) -{ - long retval; - - retval = 0; - - warning_unexpected("d0 = 0x%lx", (unsigned long)EM_D0); - 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 OSErrRET (*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 */ -#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 */ - (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 */ -#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) -#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(); -} - -#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 */ -}; - +STUB(UprString) { - GetCPUSpeed, /* 0xffff */ - EnableIdle, /* 0x0000 */ - DisableIdle, /* 0x0001 */ -}; + long savea0; -{ - HoldMemory, /* 0 */ - UnholdMemory, /* 1 */ - LockMemory, /* 2 */ - UnlockMemory, /* 3 */ - LockMemoryCongiguous, /* 4 */ - GetPhysical, /* 5 */ -}; -#endif + savea0 = EM_A0; + ROMlib_UprString((StringPtr)SYN68K_TO_US_CHECK0(EM_A0), + !(EM_D1 & DIACBIT), EM_D0); + EM_A0 = savea0; + RTS(); +} -STUB(FInitQueue) +STUB(StripAddress) { RTS(); } -STUB(HFSRoutines) +STUB(FInitQueue) { - fsprocp_t vp; - - vp = (fsprocp_t)((EM_D1 & HFSBIT) ? ignoreme2[1] : ignoreme2[0]); - EM_D0 = (*vp)(SYN68K_TO_US_CHECK0(EM_A0), !!(EM_D1 & ASYNCBIT)); RTS(); } @@ -2214,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) { @@ -2287,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(P_bad_trap_unimplemented); + *a0p = US_TO_SYN68K_CHECK0((Ptr)&stub_bad_trap_unimplemented); } *d0p = 0; } @@ -2317,7 +572,7 @@ STUB(SetTrapAddress) STUB(Gestalt) { GUEST l; - ProcPtr oldp; + SelectorFunctionUPP oldp; switch(EM_D1 & 0xFFFF) { @@ -2331,10 +586,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; @@ -2388,82 +643,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; @@ -2475,236 +654,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)); - 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(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))); - 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(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( - _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(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)); - RTS(); -} - -STUB(PurgeSpace) -{ - int32_t total, contig; - - _PurgeSpace_flags(&total, &contig, SYS_P(EM_D1, 0xA062)); - EM_D0 = total; - EM_A0 = contig; - 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(); @@ -2713,148 +662,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: - * - * 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) } -}; */ - -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 @@ -2869,44 +676,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__) - -// 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. @@ -2925,7 +694,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; @@ -2950,9 +719,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) @@ -3023,9 +796,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); @@ -3046,51 +823,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/emutrap.cpp b/src/emutrap.cpp index 31242c2b..d3e1c656 100644 --- a/src/emutrap.cpp +++ b/src/emutrap.cpp @@ -42,240 +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) -{ - 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 @@ -328,7 +94,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); } @@ -460,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/emutraptables.cpp b/src/emutraptables.cpp deleted file mode 100644 index 4ba4b430..00000000 --- a/src/emutraptables.cpp +++ /dev/null @@ -1,1729 +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 C_Pack9 _Unimplemented /* PPCBrowser */ -#define C_Pack10 _Unimplemented - -#define C_Pack13 _Unimplemented /* DB stuff */ -#define C_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 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 *)&C_Pack9, static_cast(-1) }, 0 }, - { { (void *)&C_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 *)&_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 *)&__GetResource, static_cast(-1) }, 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 *)&C_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 }, -}; - -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 }, -}; - -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, (void *)_GetZone }, - { 0, (void *)_SetZone }, - { 0, (void *)_FreeMem }, - { 0, (void *)_MaxMem }, - { 0, (void *)_NewPtr }, - { 0, (void *)_DisposPtr }, - { 0, (void *)_SetPtrSize }, - { 0, (void *)_GetPtrSize }, - { 0, (void *)_NewHandle }, - { 0, (void *)_DisposHandle }, - { 0, (void *)_SetHandleSize }, - { 0, (void *)_GetHandleSize }, - { 0, (void *)_HandleZone }, - { 0, (void *)_ReallocHandle }, - { 0, (void *)_RecoverHandle }, - { 0, (void *)_HLock }, - { 0, (void *)_HUnlock }, - { 0, (void *)_EmptyHandle }, - { 0, (void *)_InitApplZone }, - { 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, (void *)PBOffLine }, - { 0, (void *)_MoreMasters }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_WriteParam }, - { 0, (void *)_ReadDateTime }, - { 0, (void *)_SetDateTime }, - { 0, (void *)_Delay }, - { 0, (void *)_EqualString }, - { 0, (void *)_DrvrInstall }, - { 0, (void *)_DrvrRemove }, - { 0, (void *)_InitUtil }, - { 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, (void *)_PtrZone }, - { 0, (void *)_HPurge }, - { 0, (void *)_HNoPurge }, - { 0, (void *)_SetGrowZone }, - { 0, (void *)_CompactMem }, - { 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, (void *)_SetApplBase }, - { 0, (void *)_InsTime }, - { 0, (void *)_RmvTime }, - { 0, (void *)_PrimeTime }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_IMVI_MemoryDispatch }, - { 0, (void *)_SwapMMUMode }, - { 0, (void *)_NMInstall }, - { 0, (void *)_NMRemove }, - { 0, (void *)_HFSDispatch }, - { 0, (void *)_MaxBlock }, - { 0, (void *)_PurgeSpace }, - { 0, (void *)_MaxApplZone }, - { 0, (void *)_MoveHHi }, - { 0, (void *)_StackSpace }, - { 0, (void *)_NewEmptyHandle }, - { 0, (void *)_HSetRBit }, - { 0, (void *)_HClrRBit }, - { 0, (void *)_HGetState }, - { 0, (void *)_HSetState }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_Unimplemented }, - { 0, (void *)_SlotManager }, - { 0, (void *)_SlotVInstall }, - { 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, (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, (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, (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, (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(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(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)); - - 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/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/executor.cpp b/src/executor.cpp index 427e5ded..29e5a15b 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" @@ -45,6 +44,7 @@ #include "rsys/suffix_maps.h" #include "rsys/string.h" +#include "rsys/emustubs.h" #define static @@ -319,6 +319,7 @@ syn68k_addr_t Executor::alinehandler(syn68k_addr_t pc, void *ignored) togoto = tooltraptable[trapno]; if(trapword & POPBIT) retval = POPADDR(); +#if defined(SHORTCIRCUIT_TRAPS) 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 defined(SHORTCIRCUIT_TRAPS) 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); @@ -454,12 +458,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(&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/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/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; } 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/gestalt.cpp b/src/gestalt.cpp index de915045..ac1a31b0 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; @@ -84,6 +85,9 @@ static gestaltentry_t gtable[] = { { gestaltSoundAttr, 0x0C00, }, + { + gestaltSpeechAttr, 0x0001 + }, /* gestaltStdNBPAttr, 0, */ /* gestaltTermMgrAttr, 0, */ /* gestaltParityAttr, 0, */ @@ -278,7 +282,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; @@ -371,7 +375,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__) @@ -382,7 +386,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 +401,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 +496,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 +508,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 +541,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 +567,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 +584,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 +610,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 +622,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 +631,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 +649,7 @@ OSErrRET Executor::ReplaceGestalt(OSType selector, ProcPtr selFunc, retval = gestaltUndefSelectorErr; else { - *oldSelFuncp = (ProcPtr)P_GestaltTablesOnly; + *oldSelFuncp = &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/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/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/ADB.h b/src/include/ADB.h index 13ae2db4..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 @@ -15,14 +20,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; }; @@ -30,11 +35,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/AliasMgr.h b/src/include/AliasMgr.h index a8388175..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 { @@ -26,40 +30,42 @@ 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, GUEST *foundDirID); -PASCAL_FUNCTION(FindFolder); +PASCAL_SUBTRAP(FindFolder, 0xA823, 0x0000, AliasDispatch); extern OSErr C_NewAlias(FSSpecPtr fromFile, FSSpecPtr target, GUEST *alias); -PASCAL_FUNCTION(NewAlias); +PASCAL_SUBTRAP(NewAlias, 0xA823, 0x0002, AliasDispatch); extern OSErr C_NewAliasMinimal(FSSpecPtr target, GUEST *alias); -PASCAL_FUNCTION(NewAliasMinimal); +PASCAL_SUBTRAP(NewAliasMinimal, 0xA823, 0x0008, AliasDispatch); extern OSErr C_NewAliasMinimalFromFullPath(int16_t fullpathLength, Ptr fullpath, Str32 zoneName, Str31 serverName, GUEST *alias); -PASCAL_FUNCTION(NewAliasMinimalFromFullPath); +PASCAL_SUBTRAP(NewAliasMinimalFromFullPath, 0xA823, 0x0009, AliasDispatch); extern OSErr C_UpdateAlias(FSSpecPtr fromFile, FSSpecPtr target, AliasHandle alias, Boolean *wasChanged); -PASCAL_FUNCTION(UpdateAlias); +PASCAL_SUBTRAP(UpdateAlias, 0xA823, 0x0006, AliasDispatch); extern OSErr C_ResolveAlias(FSSpecPtr fromFile, AliasHandle alias, FSSpecPtr target, Boolean *wasAliased); -PASCAL_FUNCTION(ResolveAlias); +PASCAL_SUBTRAP(ResolveAlias, 0xA823, 0x0003, AliasDispatch); extern OSErr C_ResolveAliasFile(FSSpecPtr theSpec, Boolean resolveAliasChains, Boolean *targetIsFolder, Boolean *wasAliased); -PASCAL_FUNCTION(ResolveAliasFile); +PASCAL_SUBTRAP(ResolveAliasFile, 0xA823, 0x000C, AliasDispatch); extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, AliasHandle alias, int16_t *aliasCount, @@ -67,11 +73,11 @@ extern OSErr C_MatchAlias(FSSpecPtr fromFile, int32_t rulesMask, Boolean *needsUpdate, AliasFilterProcPtr aliasFilter, Ptr yourDataPtr); -PASCAL_FUNCTION(MatchAlias); +PASCAL_SUBTRAP(MatchAlias, 0xA823, 0x0005, AliasDispatch); extern OSErr C_GetAliasInfo(AliasHandle alias, AliasTypeInfo index, Str63 theString); -PASCAL_FUNCTION(GetAliasInfo); +PASCAL_SUBTRAP(GetAliasInfo, 0xA823, 0x0007, AliasDispatch); } #endif diff --git a/src/include/AppleEvents.h b/src/include/AppleEvents.h index cc45c808..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; @@ -87,9 +90,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 +121,7 @@ enum typedef union AEArrayData { GUEST AEDataArray[1]; - int8 AEPackedArray[1]; + int8_t AEPackedArray[1]; GUEST AEHandleArray[1]; AEDesc AEDescArray[1]; AEKeyDesc AEKeyDescArray[1]; @@ -217,20 +220,24 @@ typedef struct typedef AE_info_t *AE_info_ptr; -extern OSErr C__AE_hdlr_table_alloc(int32_t, int32_t, int32_t, int8, + +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_t, GUEST *); -PASCAL_FUNCTION(_AE_hdlr_table_alloc); +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_FUNCTION(_AE_hdlr_delete); +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_FUNCTION(_AE_hdlr_lookup); +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_FUNCTION(_AE_hdlr_install); +PASCAL_SUBTRAP(_AE_hdlr_install, 0xA816, 0x0831, Pack8); /* private */ @@ -240,13 +247,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 { @@ -314,65 +321,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_FUNCTION(AEGetCoercionHandler); +PASCAL_SUBTRAP(AEGetCoercionHandler, 0xA816, 0x0B24, Pack8); extern OSErr C_AECreateDesc(DescType type, Ptr data, Size data_size, AEDesc *desc_out); -PASCAL_FUNCTION(AECreateDesc); +PASCAL_SUBTRAP(AECreateDesc, 0xA816, 0x0825, Pack8); extern OSErr C_AEDisposeDesc(AEDesc *desc); -PASCAL_FUNCTION(AEDisposeDesc); +PASCAL_SUBTRAP(AEDisposeDesc, 0xA816, 0x0204, Pack8); extern OSErr C_AECoerceDesc(AEDesc *desc, DescType result_type, AEDesc *desc_out); -PASCAL_FUNCTION(AECoerceDesc); +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_FUNCTION(AEGetKeyPtr); +PASCAL_SUBTRAP(AEGetKeyPtr, 0xA816, 0x0E11, Pack8); extern OSErr C_AEGetKeyDesc(AERecord *record, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_FUNCTION(AEGetKeyDesc); +PASCAL_SUBTRAP(AEGetKeyDesc, 0xA816, 0x0812, Pack8); extern OSErr C_AEPutKeyPtr(AERecord *record, AEKeyword keyword, DescType type, Ptr data, Size data_size); -PASCAL_FUNCTION(AEPutKeyPtr); +PASCAL_SUBTRAP(AEPutKeyPtr, 0xA816, 0x0A0F, Pack8); extern OSErr C_AEPutKeyDesc(AERecord *record, AEKeyword keyword, AEDesc *desc); -PASCAL_FUNCTION(AEPutKeyDesc); +PASCAL_SUBTRAP(AEPutKeyDesc, 0xA816, 0x0610, Pack8); /* extern OSErr C_AEDeleteParam(AppleEvent *evt, AEKeyword keyword); -PASCAL_FUNCTION(AEDeleteParam); +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_FUNCTION(AEDeleteAttribute); +PASCAL_SUBTRAP_UNKNOWN(AEDeleteAttribute, 0xA816, Pack8); +*/ extern OSErr C_AESizeOfKeyDesc(AERecord *record, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfKeyDesc); +PASCAL_SUBTRAP(AESizeOfKeyDesc, 0xA816, 0x0829, Pack8); extern OSErr C_AESetInteractionAllowed(AEInteractionAllowed level); -PASCAL_FUNCTION(AESetInteractionAllowed); +PASCAL_SUBTRAP(AESetInteractionAllowed, 0xA816, 0x011E, Pack8); extern OSErr C_AEResetTimer(AppleEvent *evt); -PASCAL_FUNCTION(AEResetTimer); +PASCAL_SUBTRAP(AEResetTimer, 0xA816, 0x0219, Pack8); extern OSErr C_AEGetTheCurrentEvent(AppleEvent *return_evt); -PASCAL_FUNCTION(AEGetTheCurrentEvent); +PASCAL_SUBTRAP(AEGetTheCurrentEvent, 0xA816, 0x021A, Pack8); extern OSErr C_AESetTheCurrentEvent(AppleEvent *evt); -PASCAL_FUNCTION(AESetTheCurrentEvent); +PASCAL_SUBTRAP(AESetTheCurrentEvent, 0xA816, 0x022C, Pack8); extern OSErr C_AESuspendTheCurrentEvent(AppleEvent *evt); -PASCAL_FUNCTION(AESuspendTheCurrentEvent); +PASCAL_SUBTRAP(AESuspendTheCurrentEvent, 0xA816, 0x022B, Pack8); extern OSErr C_AEResumeTheCurrentEvent(AppleEvent *evt, AppleEvent *reply, EventHandlerProcPtr dispatcher, int32_t refcon); -PASCAL_FUNCTION(AEResumeTheCurrentEvent); +PASCAL_SUBTRAP(AEResumeTheCurrentEvent, 0xA816, 0x0818, Pack8); /* extern OSErr C_AEProcessEvent(EventRecord *evt); @@ -380,81 +389,81 @@ PASCAL_FUNCTION(AEProcessEvent); */ extern OSErr C_AEGetInteractionAllowed(AEInteractionAllowed *return_level); -PASCAL_FUNCTION(AEGetInteractionAllowed); +PASCAL_SUBTRAP(AEGetInteractionAllowed, 0xA816, 0x021D, Pack8); extern OSErr C_AEDuplicateDesc(AEDesc *src, AEDesc *dst); -PASCAL_FUNCTION(AEDuplicateDesc); +PASCAL_SUBTRAP(AEDuplicateDesc, 0xA816, 0x0405, Pack8); extern OSErr C_AECountItems(AEDescList *list, GUEST *count_out); -PASCAL_FUNCTION(AECountItems); +PASCAL_SUBTRAP(AECountItems, 0xA816, 0x0407, Pack8); extern OSErr C_AEDeleteItem(AEDescList *list, int32_t index); -PASCAL_FUNCTION(AEDeleteItem); +PASCAL_SUBTRAP(AEDeleteItem, 0xA816, 0x040E, Pack8); extern OSErr C_AEDeleteKeyDesc(AERecord *record, AEKeyword keyword); -PASCAL_FUNCTION(AEDeleteKeyDesc); +PASCAL_SUBTRAP(AEDeleteKeyDesc, 0xA816, 0x0413, Pack8); extern OSErr C_AEInstallSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AEInstallSpecialHandler); +PASCAL_SUBTRAP(AEInstallSpecialHandler, 0xA816, 0x0500, Pack8); extern OSErr C_AERemoveSpecialHandler(AEKeyword function_class, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveSpecialHandler); +PASCAL_SUBTRAP(AERemoveSpecialHandler, 0xA816, 0x0501, Pack8); extern OSErr C_AEGetSpecialHandler(AEKeyword function_class, GUEST *hdlr_out, Boolean system_handler_p); -PASCAL_FUNCTION(AEGetSpecialHandler); +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_FUNCTION(AESend); +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_FUNCTION(AECoercePtr); +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_FUNCTION(AEGetEventHandler); +PASCAL_SUBTRAP(AEGetEventHandler, 0xA816, 0x0921, Pack8); extern OSErr C_AERemoveEventHandler(AEEventClass event_class, AEEventID event_id, EventHandlerProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveEventHandler); +PASCAL_SUBTRAP(AERemoveEventHandler, 0xA816, 0x0720, Pack8); extern OSErr C_AEProcessAppleEvent(EventRecord *evt); -PASCAL_FUNCTION(AEProcessAppleEvent); +PASCAL_SUBTRAP(AEProcessAppleEvent, 0xA816, 0x021B, Pack8); extern OSErr C_AEPutDesc(AEDescList *list, int32_t index, AEDesc *desc); -PASCAL_FUNCTION(AEPutDesc); +PASCAL_SUBTRAP(AEPutDesc, 0xA816, 0x0609, Pack8); extern OSErr C_AEPutAttributePtr(AppleEvent *evt, AEKeyword keyword, DescType type, Ptr data, Size size); -PASCAL_FUNCTION(AEPutAttributePtr); +PASCAL_SUBTRAP(AEPutAttributePtr, 0xA816, 0x0A16, Pack8); extern OSErr C_AEPutAttributeDesc(AppleEvent *evt, AEKeyword keyword, AEDesc *desc); -PASCAL_FUNCTION(AEPutAttributeDesc); +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_FUNCTION(AEGetNthPtr); +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_FUNCTION(AEGetAttributePtr); +PASCAL_SUBTRAP(AEGetAttributePtr, 0xA816, 0x0E15, Pack8); extern OSErr C_AEGetArray(AEDescList *list, AEArrayType array_type, @@ -462,95 +471,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, 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_FUNCTION(AECreateAppleEvent); +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_FUNCTION(AEInstallCoercionHandler); +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_FUNCTION(AEInstallEventHandler); +PASCAL_SUBTRAP(AEInstallEventHandler, 0xA816, 0x091F, Pack8); extern OSErr C_AERemoveCoercionHandler(DescType from_type, DescType to_type, CoerceDescProcPtr hdlr, Boolean system_handler_p); -PASCAL_FUNCTION(AERemoveCoercionHandler); +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_FUNCTION(AEPutArray); +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_FUNCTION(AECreateList); +PASCAL_SUBTRAP(AECreateList, 0xA816, 0x0706, Pack8); extern OSErr C_AEGetAttributeDesc(AppleEvent *evt, AEKeyword keyword, DescType desired_type, AEDesc *desc_out); -PASCAL_FUNCTION(AEGetAttributeDesc); +PASCAL_SUBTRAP(AEGetAttributeDesc, 0xA816, 0x0826, Pack8); extern OSErr C_AESizeOfAttribute(AppleEvent *evt, AEKeyword keyword, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfAttribute); +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_FUNCTION(AEGetNthDesc); +PASCAL_SUBTRAP(AEGetNthDesc, 0xA816, 0x0A0B, Pack8); extern OSErr C_AESizeOfNthItem(AEDescList *list, int32_t index, GUEST *type_out, GUEST *size_out); -PASCAL_FUNCTION(AESizeOfNthItem); +PASCAL_SUBTRAP(AESizeOfNthItem, 0xA816, 0x082A, Pack8); extern OSErr C_AEPutPtr(AEDescList *list, int32_t index, DescType type, Ptr data, Size data_size); -PASCAL_FUNCTION(AEPutPtr); +PASCAL_SUBTRAP(AEPutPtr, 0xA816, 0x0A08, Pack8); extern OSErr C_AEInteractWithUser(int32_t timeout, NMRecPtr nm_req, IdleProcPtr idle_proc); -PASCAL_FUNCTION(AEInteractWithUser); +PASCAL_SUBTRAP(AEInteractWithUser, 0xA816, 0x061C, Pack8); extern void AE_init(void); extern void AE_reinit(void); extern OSErr C_AEManagerInfo(GUEST *resultp); -PASCAL_FUNCTION(AEManagerInfo); +PASCAL_SUBTRAP(AEManagerInfo, 0xA816, 0x0441, Pack8); extern OSErr C_AEDisposeToken(AEDesc *theToken); -PASCAL_FUNCTION(AEDisposeToken); -extern OSErr C_AEREesolve(AEDesc *objectSpecifier, +PASCAL_SUBTRAP(AEDisposeToken, 0xA816, 0x023A, Pack8); +extern OSErr C_AEResolve(AEDesc *objectSpecifier, INTEGER callbackFlags, AEDesc *theToken); -PASCAL_FUNCTION(AEREesolve); +PASCAL_SUBTRAP(AEResolve, 0xA816, 0x0536, Pack8); extern OSErr C_AERemoveObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AERemoveObjectAccessor); +PASCAL_SUBTRAP(AERemoveObjectAccessor, 0xA816, 0x0738, Pack8); extern OSErr C_AEInstallObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr theAccessor, LONGINT refcon, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AEInstallObjectAccessor); +PASCAL_SUBTRAP(AEInstallObjectAccessor, 0xA816, 0x0937, Pack8); extern OSErr C_AEGetObjectAccessor(DescType desiredClass, DescType containerType, ProcPtr *theAccessor, LONGINT *accessorRefcon, BOOLEAN isSysHandler); -PASCAL_FUNCTION(AEGetObjectAccessor); +PASCAL_SUBTRAP(AEGetObjectAccessor, 0xA816, 0x0939, Pack8); extern OSErr C_AECallObjectAccessor(DescType desiredClass, AEDesc *containerToken, DescType containerClass, DescType keyForm, AEDesc *keyData, AEDesc *theToken); -PASCAL_FUNCTION(AECallObjectAccessor); +PASCAL_SUBTRAP(AECallObjectAccessor, 0xA816, 0x0C3B, Pack8); extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myCountProc, ProcPtr myDisposeTokenProc, @@ -558,7 +567,7 @@ extern OSErr C_AESetObjectCallbacks(ProcPtr myCompareProc, ProcPtr myMarkProc, ProcPtr myAdjustMarksProc, ProcPtr myGetErrDescProc); -PASCAL_FUNCTION(AESetObjectCallbacks); +PASCAL_SUBTRAP(AESetObjectCallbacks, 0xA816, 0x0E35, Pack8); } #endif /* ! _AppleEvents_H_ */ diff --git a/src/include/BinaryDecimal.h b/src/include/BinaryDecimal.h index dd6c0df9..e95189e3 100644 --- a/src/include/BinaryDecimal.h +++ b/src/include/BinaryDecimal.h @@ -4,12 +4,22 @@ * Copyright 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ +#include "ExMacTypes.h" + +#define MODULE_NAME BinaryDecimal +#include + 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/CQuickDraw.h b/src/include/CQuickDraw.h index 74245b5f..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)))) @@ -297,6 +300,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); // D0<0xFF> ### +DISPATCHER_TRAP(Pack12, 0xA82E, StackW); +DISPATCHER_TRAP(QDExtensions, 0xAB1D, D0L); +DISPATCHER_TRAP(Pack15, 0xA831, D0W); // D0<0xFF>? ### + extern void C_SetStdCProcs(CQDProcs *cProcs); PASCAL_TRAP(SetStdCProcs, 0xAA4E); @@ -364,11 +372,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, 0x0A14, PaletteDispatch); extern OSErr C_SetDepth(GDHandle, INTEGER, INTEGER, INTEGER); -PASCAL_FUNCTION(SetDepth); +PASCAL_SUBTRAP(SetDepth, 0xAAA2, 0x0A13, PaletteDispatch); extern void C_MakeITable(CTabHandle, ITabHandle, INTEGER); PASCAL_TRAP(MakeITable, 0xAA39); @@ -417,7 +425,7 @@ extern void C_SetClientID(INTEGER); PASCAL_TRAP(SetClientID, 0xAA3C); extern BOOLEAN C_GetGray(GDHandle, RGBColor *, RGBColor *); -PASCAL_FUNCTION(GetGray); +PASCAL_SUBTRAP(GetGray, 0xAAA2, 0x0C19, PaletteDispatch); extern PixPatHandle C_GetPixPat(INTEGER); PASCAL_TRAP(GetPixPat, 0xAA0C); @@ -431,23 +439,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, 0x0003, Pack12); extern void C_RGB2CMY(RGBColor *, CMYColor *); -PASCAL_FUNCTION(RGB2CMY); +PASCAL_SUBTRAP(RGB2CMY, 0xA82E, 0x0004, Pack12); extern void C_HSL2RGB(HSLColor *, RGBColor *); -PASCAL_FUNCTION(HSL2RGB); +PASCAL_SUBTRAP(HSL2RGB, 0xA82E, 0x0005, Pack12); extern void C_RGB2HSL(RGBColor *, HSLColor *); -PASCAL_FUNCTION(RGB2HSL); +PASCAL_SUBTRAP(RGB2HSL, 0xA82E, 0x0006, Pack12); extern void C_HSV2RGB(HSVColor *, RGBColor *); -PASCAL_FUNCTION(HSV2RGB); +PASCAL_SUBTRAP(HSV2RGB, 0xA82E, 0x0007, Pack12); extern void C_RGB2HSV(RGBColor *, HSVColor *); -PASCAL_FUNCTION(RGB2HSV); +PASCAL_SUBTRAP(RGB2HSV, 0xA82E, 0x0008, Pack12); extern SmallFract C_Fix2SmallFract(Fixed); -PASCAL_FUNCTION(Fix2SmallFract); +PASCAL_SUBTRAP(Fix2SmallFract, 0xA82E, 0x0001, Pack12); extern Fixed C_SmallFract2Fix(SmallFract); -PASCAL_FUNCTION(SmallFract2Fix); +PASCAL_SUBTRAP(SmallFract2Fix, 0xA82E, 0x0002, Pack12); extern BOOLEAN C_GetColor(Point, Str255, RGBColor *, RGBColor *); -PASCAL_FUNCTION(GetColor); +PASCAL_SUBTRAP(GetColor, 0xA82E, 0x0009, Pack12); extern CTabHandle C_GetCTable(INTEGER); PASCAL_TRAP(GetCTable, 0xAA18); @@ -465,7 +473,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); @@ -501,24 +509,24 @@ PASCAL_TRAP(DisposCCursor, 0xAA26); extern void C_AllocCursor(void); PASCAL_TRAP(AllocCursor, 0xAA1D); -extern void C_RestoreClutDevice(GDHandle); -PASCAL_FUNCTION(RestoreClutDevice); +extern void C_RestoreDeviceClut(GDHandle); +PASCAL_SUBTRAP(RestoreDeviceClut, 0xAAA2, 0x0002, PaletteDispatch); extern void C_ResizePalette(PaletteHandle, INTEGER); -PASCAL_FUNCTION(ResizePalette); +PASCAL_SUBTRAP(ResizePalette, 0xAAA2, 0x0003, PaletteDispatch); extern INTEGER C_PMgrVersion(); -PASCAL_FUNCTION(PMgrVersion); +PASCAL_SUBTRAP(PMgrVersion, 0xAAA2, 0x0015, PaletteDispatch); extern void C_SaveFore(ColorSpec *); -PASCAL_FUNCTION(SaveFore); +PASCAL_SUBTRAP(SaveFore, 0xAAA2, 0x040D, PaletteDispatch); extern void C_RestoreFore(ColorSpec *); -PASCAL_FUNCTION(RestoreFore); +PASCAL_SUBTRAP(RestoreFore, 0xAAA2, 0x040F, PaletteDispatch); extern void C_SaveBack(ColorSpec *); -PASCAL_FUNCTION(SaveBack); +PASCAL_SUBTRAP(SaveBack, 0xAAA2, 0x040E, PaletteDispatch); extern void C_RestoreBack(ColorSpec *); -PASCAL_FUNCTION(RestoreBack); +PASCAL_SUBTRAP(RestoreBack, 0xAAA2, 0x0410, PaletteDispatch); extern void C_SetPaletteUpdates(PaletteHandle, INTEGER); -PASCAL_FUNCTION(SetPaletteUpdates); +PASCAL_SUBTRAP(SetPaletteUpdates, 0xAAA2, 0x0616, PaletteDispatch); extern INTEGER C_GetPaletteUpdates(PaletteHandle); -PASCAL_FUNCTION(GetPaletteUpdates); +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 +538,79 @@ PASCAL_TRAP(GetCWMgrPort, 0xAA48); /* QDExtensions trap */ extern QDErr C_NewGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_FUNCTION(NewGWorld); +PASCAL_SUBTRAP(NewGWorld, 0xAB1D, 0x00160000, QDExtensions); extern Boolean C_LockPixels(PixMapHandle); -PASCAL_FUNCTION(LockPixels); +PASCAL_SUBTRAP(LockPixels, 0xAB1D, 0x00040001, QDExtensions); extern void C_UnlockPixels(PixMapHandle); -PASCAL_FUNCTION(UnlockPixels); +PASCAL_SUBTRAP(UnlockPixels, 0xAB1D, 0x00040002, QDExtensions); extern GWorldFlags C_UpdateGWorld(GUEST *, INTEGER, Rect *, CTabHandle, GDHandle, GWorldFlags); -PASCAL_FUNCTION(UpdateGWorld); +PASCAL_SUBTRAP(UpdateGWorld, 0xAB1D, 0x00160003, QDExtensions); extern void C_DisposeGWorld(GWorldPtr); -PASCAL_FUNCTION(DisposeGWorld); +PASCAL_SUBTRAP(DisposeGWorld, 0xAB1D, 0x00040004, QDExtensions); extern void C_GetGWorld(GUEST *, GUEST *); -PASCAL_FUNCTION(GetGWorld); +PASCAL_SUBTRAP(GetGWorld, 0xAB1D, 0x00080005, QDExtensions); extern void C_SetGWorld(CGrafPtr, GDHandle); -PASCAL_FUNCTION(SetGWorld); +PASCAL_SUBTRAP(SetGWorld, 0xAB1D, 0x00080006, QDExtensions); extern void C_AllowPurgePixels(PixMapHandle); -PASCAL_FUNCTION(AllowPurgePixels); +PASCAL_SUBTRAP(AllowPurgePixels, 0xAB1D, 0x0004000B, QDExtensions); extern void C_NoPurgePixels(PixMapHandle); -PASCAL_FUNCTION(NoPurgePixels); +PASCAL_SUBTRAP(NoPurgePixels, 0xAB1D, 0x0004000C, QDExtensions); extern GWorldFlags C_GetPixelsState(PixMapHandle); -PASCAL_FUNCTION(GetPixelsState); +PASCAL_SUBTRAP(GetPixelsState, 0xAB1D, 0x0004000D, QDExtensions); extern void C_SetPixelsState(PixMapHandle, GWorldFlags); -PASCAL_FUNCTION(SetPixelsState); +PASCAL_SUBTRAP(SetPixelsState, 0xAB1D, 0x0008000E, QDExtensions); extern Ptr C_GetPixBaseAddr(PixMapHandle); -PASCAL_FUNCTION(GetPixBaseAddr); +PASCAL_SUBTRAP(GetPixBaseAddr, 0xAB1D, 0x0004000F, QDExtensions); extern QDErr C_NewScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_FUNCTION(NewScreenBuffer); +PASCAL_SUBTRAP(NewScreenBuffer, 0xAB1D, 0x000E0010, QDExtensions); extern void C_DisposeScreenBuffer(PixMapHandle); -PASCAL_FUNCTION(DisposeScreenBuffer); +PASCAL_SUBTRAP(DisposeScreenBuffer, 0xAB1D, 0x00040011, QDExtensions); extern GDHandle C_GetGWorldDevice(GWorldPtr); -PASCAL_FUNCTION(GetGWorldDevice); +PASCAL_SUBTRAP(GetGWorldDevice, 0xAB1D, 0x00040012, QDExtensions); extern Boolean C_PixMap32Bit(PixMapHandle); -PASCAL_FUNCTION(PixMap32Bit); +PASCAL_SUBTRAP(PixMap32Bit, 0xAB1D, 0x00040016, QDExtensions); extern PixMapHandle C_GetGWorldPixMap(GWorldPtr); -PASCAL_FUNCTION(GetGWorldPixMap); +PASCAL_SUBTRAP(GetGWorldPixMap, 0xAB1D, 0x00040017, QDExtensions); extern QDErr C_NewTempScreenBuffer(Rect *, Boolean, GUEST *, GUEST *); -PASCAL_FUNCTION(NewTempScreenBuffer); +PASCAL_SUBTRAP(NewTempScreenBuffer, 0xAB1D, 0x000E0015, QDExtensions); extern void C_GDeviceChanged(GDHandle); -PASCAL_FUNCTION(GDeviceChanged); +PASCAL_SUBTRAP(GDeviceChanged, 0xAB1D, 0x0004000A, QDExtensions); extern void C_PortChanged(GrafPtr); -PASCAL_FUNCTION(PortChanged); +PASCAL_SUBTRAP(PortChanged, 0xAB1D, 0x00040009, QDExtensions); extern void C_PixPatChanged(PixPatHandle); -PASCAL_FUNCTION(PixPatChanged); +PASCAL_SUBTRAP(PixPatChanged, 0xAB1D, 0x00040008, QDExtensions); extern void C_CTabChanged(CTabHandle); -PASCAL_FUNCTION(CTabChanged); +PASCAL_SUBTRAP(CTabChanged, 0xAB1D, 0x00040007, QDExtensions); extern Boolean C_QDDone(GrafPtr); -PASCAL_FUNCTION(QDDone); +PASCAL_SUBTRAP(QDDone, 0xAB1D, 0x00040013, QDExtensions); extern LONGINT C_OffscreenVersion(); -PASCAL_FUNCTION(OffscreenVersion); +PASCAL_SUBTRAP(OffscreenVersion, 0xAB1D, 0x0014, QDExtensions); extern OSErr C_BitMapToRegion(RgnHandle, const BitMap *); PASCAL_TRAP(BitMapToRegion, 0xA8D7); extern LONGINT C_Entry2Index(INTEGER); -PASCAL_FUNCTION(Entry2Index); +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_FUNCTION(DisposePictInfo); +PASCAL_SUBTRAP(DisposePictInfo, 0xA831, 0x0206, Pack15); extern OSErr C_RecordPictInfo(PictInfoID, PicHandle); -PASCAL_FUNCTION(RecordPictInfo); +PASCAL_SUBTRAP(RecordPictInfo, 0xA831, 0x0403, Pack15); extern OSErr C_RecordPixMapInfo(PictInfoID, PixMapHandle); -PASCAL_FUNCTION(RecordPixMapInfo); +PASCAL_SUBTRAP(RecordPixMapInfo, 0xA831, 0x0404, Pack15); extern OSErr C_RetrievePictInfo(PictInfoID, PictInfo *, int16_t); -PASCAL_FUNCTION(RetrievePictInfo); +PASCAL_SUBTRAP(RetrievePictInfo, 0xA831, 0x0505, Pack15); extern OSErr C_NewPictInfo(GUEST *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(NewPictInfo); +PASCAL_SUBTRAP(NewPictInfo, 0xA831, 0x0602, Pack15); extern OSErr C_GetPictInfo(PicHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(GetPictInfo); +PASCAL_SUBTRAP(GetPictInfo, 0xA831, 0x0800, Pack15); extern OSErr C_GetPixMapInfo(PixMapHandle, PictInfo *, int16_t, int16_t, int16_t, int16_t); -PASCAL_FUNCTION(GetPixMapInfo); +PASCAL_SUBTRAP(GetPixMapInfo, 0xA831, 0x0801, Pack15); extern PicHandle C_OpenCPicture(OpenCPicParams *newheaderp); PASCAL_TRAP(OpenCPicture, 0xAA20); 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 1b39fe24..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 @@ -104,6 +107,8 @@ enum namespace Executor { +using ControlActionUPP = UPP; + struct __cr { GUEST_STRUCT; @@ -117,7 +122,7 @@ struct __cr GUEST contrlMax; GUEST contrlDefProc; GUEST contrlData; - GUEST contrlAction; + GUEST contrlAction; GUEST contrlRfCon; GUEST contrlTitle; }; @@ -194,9 +199,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 +214,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/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 f5ec2145..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 @@ -153,6 +156,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/DialogMgr.h b/src/include/DialogMgr.h index b111e455..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 @@ -156,21 +159,23 @@ 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); +DISPATCHER_TRAP(DialogDispatch, 0xAA68, D0W); + 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 +196,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,7 +222,8 @@ extern void DlgCopy(DialogPtr dp); extern void DlgPaste(DialogPtr dp); extern void DlgDelete(DialogPtr dp); extern void C_ROMlib_mysound(INTEGER i); -extern void C_ErrorSound(ProcPtr sp); +PASCAL_FUNCTION(ROMlib_mysound); +extern void C_ErrorSound(SoundProcPtr sp); PASCAL_TRAP(ErrorSound, 0xA98C); extern void C_InitDialogs(ProcPtr rp); PASCAL_TRAP(InitDialogs, 0xA97B); @@ -252,16 +259,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, 0x0203, DialogDispatch); extern OSErr C_SetDialogDefaultItem(DialogPtr dialog, int16_t new_item); -PASCAL_FUNCTION(SetDialogDefaultItem); +PASCAL_SUBTRAP(SetDialogDefaultItem, 0xAA68, 0x0304, DialogDispatch); extern OSErr C_SetDialogCancelItem(DialogPtr dialog, int16_t new_item); -PASCAL_FUNCTION(SetDialogCancelItem); +PASCAL_SUBTRAP(SetDialogCancelItem, 0xAA68, 0x0305, DialogDispatch); extern OSErr C_SetDialogTracksCursor(DialogPtr dialog, Boolean tracks); -PASCAL_FUNCTION(SetDialogTracksCursor); +PASCAL_SUBTRAP(SetDialogTracksCursor, 0xAA68, 0x0306, DialogDispatch); extern void AppendDITL(DialogPtr, Handle, DITLMethod); extern void ShortenDITL(DialogPtr, int16_t); diff --git a/src/include/DiskInit.h b/src/include/DiskInit.h index 15b55991..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. @@ -11,12 +14,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/EditionMgr.h b/src/include/EditionMgr.h index 79d4c001..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) \ @@ -85,7 +88,7 @@ struct NewPublisherReply GUEST canceled; GUEST replacing; GUEST usePart; - GUEST _filler; + GUEST _filler; GUEST preview; GUEST previewFormat; GUEST container; @@ -117,7 +120,7 @@ struct SectionOptionsReply typedef struct SectionOptionsReply SectionOptionsReply; typedef SectionOptionsReply *SectionOptionsReplyPtr; -typedef uint8 EditionOpenerVerb; +typedef uint8_t EditionOpenerVerb; enum { @@ -144,7 +147,7 @@ struct EditionOpenerParamBlock typedef struct EditionOpenerParamBlock EditionOpenerParamBlock; typedef EditionOpenerParamBlock *EditionOpenerParamBlockPtr; -typedef uint8 FormatIOVerb; +typedef uint8_t FormatIOVerb; enum { @@ -183,125 +186,127 @@ enum notThePublisherWrn = (-463), }; -extern OSErr C_InitEditionPack(INTEGER unused); -PASCAL_FUNCTION(InitEditionPack); +DISPATCHER_TRAP(Pack11, 0xA82D, D0W); + +extern OSErr C_InitEditionPackVersion(INTEGER unused); +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_FUNCTION(NewSection); +PASCAL_SUBTRAP(NewSection, 0xA82D, 0x0A02, Pack11); extern OSErr C_RegisterSection(FSSpecPtr section_doc, SectionHandle section, Boolean *alias_was_updated_p_out); -PASCAL_FUNCTION(RegisterSection); +PASCAL_SUBTRAP(RegisterSection, 0xA82D, 0x0604, Pack11); extern OSErr C_UnRegisterSection(SectionHandle section); -PASCAL_FUNCTION(UnRegisterSection); +PASCAL_SUBTRAP(UnRegisterSection, 0xA82D, 0x0206, Pack11); extern OSErr C_IsRegisteredSection(SectionHandle section); -PASCAL_FUNCTION(IsRegisteredSection); +PASCAL_SUBTRAP(IsRegisteredSection, 0xA82D, 0x0208, Pack11); extern OSErr C_AssociateSection(SectionHandle section, FSSpecPtr new_section_doc); -PASCAL_FUNCTION(AssociateSection); +PASCAL_SUBTRAP(AssociateSection, 0xA82D, 0x040C, Pack11); extern OSErr C_CreateEditionContainerFile(FSSpecPtr edition_file, OSType creator, ScriptCode edition_file_name_script); -PASCAL_FUNCTION(CreateEditionContainerFile); +PASCAL_SUBTRAP(CreateEditionContainerFile, 0xA82D, 0x050E, Pack11); extern OSErr C_DeleteEditionContainerFile(FSSpecPtr edition_file); -PASCAL_FUNCTION(DeleteEditionContainerFile); +PASCAL_SUBTRAP(DeleteEditionContainerFile, 0xA82D, 0x0210, Pack11); extern OSErr C_SetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t mark); -PASCAL_FUNCTION(SetEditionFormatMark); +PASCAL_SUBTRAP(SetEditionFormatMark, 0xA82D, 0x0620, Pack11); extern OSErr C_GetEditionFormatMark(EditionRefNum edition, FormatType format, int32_t *currentMark); -PASCAL_FUNCTION(GetEditionFormatMark); +PASCAL_SUBTRAP(GetEditionFormatMark, 0xA82D, 0x061E, Pack11); extern OSErr C_OpenEdition(SectionHandle subscriber_section, EditionRefNum *ref_num); -PASCAL_FUNCTION(OpenEdition); +PASCAL_SUBTRAP(OpenEdition, 0xA82D, 0x0412, Pack11); extern OSErr C_EditionHasFormat(EditionRefNum edition, FormatType format, Size *format_size); -PASCAL_FUNCTION(EditionHasFormat); +PASCAL_SUBTRAP(EditionHasFormat, 0xA82D, 0x0618, Pack11); extern OSErr C_ReadEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_FUNCTION(ReadEdition); +PASCAL_SUBTRAP(ReadEdition, 0xA82D, 0x081A, Pack11); extern OSErr C_OpenNewEdition(SectionHandle publisher_section, OSType creator, FSSpecPtr publisher_section_doc, EditionRefNum *ref_num); -PASCAL_FUNCTION(OpenNewEdition); +PASCAL_SUBTRAP(OpenNewEdition, 0xA82D, 0x0814, Pack11); extern OSErr C_WriteEdition(EditionRefNum edition, FormatType format, Ptr buffer, Size buffer_size); -PASCAL_FUNCTION(WriteEdition); +PASCAL_SUBTRAP(WriteEdition, 0xA82D, 0x081C, Pack11); extern OSErr C_CloseEdition(EditionRefNum edition, Boolean success_p); -PASCAL_FUNCTION(CloseEdition); +PASCAL_SUBTRAP(CloseEdition, 0xA82D, 0x0316, Pack11); extern OSErr C_GetLastEditionContainerUsed(EditionContainerSpecPtr container); -PASCAL_FUNCTION(GetLastEditionContainerUsed); +PASCAL_SUBTRAP(GetLastEditionContainerUsed, 0xA82D, 0x0226, Pack11); extern OSErr C_NewSubscriberDialog(NewSubscriberReplyPtr reply); -PASCAL_FUNCTION(NewSubscriberDialog); +PASCAL_SUBTRAP(NewSubscriberDialog, 0xA82D, 0x0232, Pack11); extern OSErr C_NewPublisherDialog(NewSubscriberReplyPtr reply); -PASCAL_FUNCTION(NewPublisherDialog); +PASCAL_SUBTRAP(NewPublisherDialog, 0xA82D, 0x0236, Pack11); extern OSErr C_SectionOptionsDialog(SectionOptionsReply *reply); -PASCAL_FUNCTION(SectionOptionsDialog); +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_FUNCTION(NewSubscriberExpDialog); +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_FUNCTION(NewPublisherExpDialog); +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_FUNCTION(SectionOptionsExpDialog); +PASCAL_SUBTRAP(SectionOptionsExpDialog, 0xA82D, 0x0B3C, Pack11); extern OSErr C_GetEditionInfo(SectionHandle section, EditionInfoPtr edition_info); -PASCAL_FUNCTION(GetEditionInfo); +PASCAL_SUBTRAP(GetEditionInfo, 0xA82D, 0x0422, Pack11); extern OSErr C_GoToPublisherSection(EditionContainerSpecPtr container); -PASCAL_FUNCTION(GoToPublisherSection); +PASCAL_SUBTRAP(GoToPublisherSection, 0xA82D, 0x0224, Pack11); extern OSErr C_GetStandardFormats(EditionContainerSpecPtr container, FormatType *preview_format, Handle preview, Handle publisher_alias, Handle formats); -PASCAL_FUNCTION(GetStandardFormats); +PASCAL_SUBTRAP(GetStandardFormats, 0xA82D, 0x0A28, Pack11); extern OSErr C_GetEditionOpenerProc(EditionOpenerProcPtr *opener); -PASCAL_FUNCTION(GetEditionOpenerProc); +PASCAL_SUBTRAP(GetEditionOpenerProc, 0xA82D, 0x022A, Pack11); extern OSErr C_SetEditionOpenerProc(EditionOpenerProcPtr opener); -PASCAL_FUNCTION(SetEditionOpenerProc); +PASCAL_SUBTRAP(SetEditionOpenerProc, 0xA82D, 0x022C, Pack11); extern OSErr C_CallEditionOpenerProc(EditionOpenerVerb selector, EditionOpenerParamBlock *param_block, EditionOpenerProcPtr opener); -PASCAL_FUNCTION(CallEditionOpenerProc); +PASCAL_SUBTRAP(CallEditionOpenerProc, 0xA82D, 0x052E, Pack11); extern OSErr C_CallFormatIOProc(FormatIOVerb selector, FormatIOParamBlock *param_block, FormatIOProcPtr proc); -PASCAL_FUNCTION(CallFormatIOProc); +PASCAL_SUBTRAP(CallFormatIOProc, 0xA82D, 0x0530, Pack11); } #endif /* _EDITIONMGR_H_ */ diff --git a/src/include/ExMacTypes.h b/src/include/ExMacTypes.h index 197a1386..938440fb 100644 --- a/src/include/ExMacTypes.h +++ b/src/include/ExMacTypes.h @@ -9,21 +9,15 @@ */ #include "rsys/mactype.h" +#include "rsys/byteswap.h" 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,19 +26,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 int (*ProcPtr)(); -#endif -#if !defined(__MACTYPES__) || defined(__cplusplus) typedef LONGINT Fixed, Fract; -#endif + /* SmallFract represnts values between 0 and 65535 */ typedef unsigned short SmallFract; @@ -61,11 +49,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 4dbc737a..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. @@ -587,14 +591,6 @@ 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 Create(StringPtr filen, INTEGER vrn, OSType creator, OSType filtyp); extern OSErr FSDelete(StringPtr filen, INTEGER vrn); @@ -621,105 +617,227 @@ 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 PBAllocContig(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); +HFS_TRAP(PBSetFInfo, PBHSetFInfo, HParmBlkPtr, 0xA00D); + +extern OSErr PBUnmountVol(ParmBlkPtr pb); +REGISTER_TRAP2(PBUnmountVol, 0xA00E, D0(A0)); + 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); +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); +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); +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); + + +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>); + extern OSErr C_FSMakeFSSpec(int16_t vRefNum, int32_t dir_id, Str255 file_name, FSSpecPtr spec); -PASCAL_FUNCTION(FSMakeFSSpec); +PASCAL_SUBTRAP(FSMakeFSSpec, 0xAA52, 0x0001, HighLevelFSDispatch); extern OSErr C_FSpExchangeFiles(FSSpecPtr src, FSSpecPtr dst); -PASCAL_FUNCTION(FSpExchangeFiles); +PASCAL_SUBTRAP(FSpExchangeFiles, 0xAA52, 0x000F, HighLevelFSDispatch); extern OSErr C_FSpOpenDF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_FUNCTION(FSpOpenDF); +PASCAL_SUBTRAP(FSpOpenDF, 0xAA52, 0x0002, HighLevelFSDispatch); extern OSErr C_FSpOpenRF(FSSpecPtr spec, SignedByte perms, GUEST *refNum_out); -PASCAL_FUNCTION(FSpOpenRF); +PASCAL_SUBTRAP(FSpOpenRF, 0xAA52, 0x0003, HighLevelFSDispatch); extern OSErr C_FSpCreate(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_FUNCTION(FSpCreate); +PASCAL_SUBTRAP(FSpCreate, 0xAA52, 0x0004, HighLevelFSDispatch); extern OSErr C_FSpDirCreate(FSSpecPtr spec, ScriptCode script, GUEST *created_dir_id); -PASCAL_FUNCTION(FSpDirCreate); +PASCAL_SUBTRAP(FSpDirCreate, 0xAA52, 0x0005, HighLevelFSDispatch); extern OSErr C_FSpDelete(FSSpecPtr spec); -PASCAL_FUNCTION(FSpDelete); +PASCAL_SUBTRAP(FSpDelete, 0xAA52, 0x0006, HighLevelFSDispatch); extern OSErr C_FSpGetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_FUNCTION(FSpGetFInfo); +PASCAL_SUBTRAP(FSpGetFInfo, 0xAA52, 0x0007, HighLevelFSDispatch); extern OSErr C_FSpSetFInfo(FSSpecPtr spec, FInfo *fndr_info); -PASCAL_FUNCTION(FSpSetFInfo); +PASCAL_SUBTRAP(FSpSetFInfo, 0xAA52, 0x0008, HighLevelFSDispatch); extern OSErr C_FSpSetFLock(FSSpecPtr spec); -PASCAL_FUNCTION(FSpSetFLock); +PASCAL_SUBTRAP(FSpSetFLock, 0xAA52, 0x0009, HighLevelFSDispatch); extern OSErr C_FSpRstFLock(FSSpecPtr spec); -PASCAL_FUNCTION(FSpRstFLock); +PASCAL_SUBTRAP(FSpRstFLock, 0xAA52, 0x000A, HighLevelFSDispatch); extern OSErr C_FSpRename(FSSpecPtr spec, Str255 new_name); -PASCAL_FUNCTION(FSpRename); +PASCAL_SUBTRAP(FSpRename, 0xAA52, 0x000B, HighLevelFSDispatch); extern OSErr C_FSpCatMove(FSSpecPtr src, FSSpecPtr dst); -PASCAL_FUNCTION(FSpCatMove); +PASCAL_SUBTRAP(FSpCatMove, 0xAA52, 0x000C, HighLevelFSDispatch); extern void C_FSpCreateResFile(FSSpecPtr spec, OSType creator, OSType file_type, ScriptCode script); -PASCAL_FUNCTION(FSpCreateResFile); +PASCAL_SUBTRAP(FSpCreateResFile, 0xAA52, 0x000E, HighLevelFSDispatch); extern INTEGER C_FSpOpenResFile(FSSpecPtr spec, SignedByte perms); -PASCAL_FUNCTION(FSpOpenResFile); +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/Finder.h b/src/include/Finder.h index e074d23b..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 @@ -15,6 +19,7 @@ typedef struct DTPBRec GUEST_STRUCT; GUEST qLink; GUEST qType; + GUEST ioTrap; GUEST ioCmdAddr; GUEST ioCompletion; GUEST ioResult; @@ -39,21 +44,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/FontMgr.h b/src/include/FontMgr.h index d423dc07..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 @@ -213,6 +217,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, D0<0xF>); + extern void C_InitFonts(void); PASCAL_TRAP(InitFonts, 0xA8FE); @@ -241,23 +247,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, 0x0001, FontDispatch); extern Boolean C_GetOutlinePreferred(void); -PASCAL_FUNCTION(GetOutlinePreferred); +PASCAL_SUBTRAP(GetOutlinePreferred, 0xA854, 0x0009, FontDispatch); extern Boolean C_IsOutline(Point numer, Point denom); -PASCAL_FUNCTION(IsOutline); +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_FUNCTION(OutlineMetrics); +PASCAL_SUBTRAP(OutlineMetrics, 0xA854, 0x0008, FontDispatch); extern void C_SetPreserveGlyph(Boolean preserve_glyph); -PASCAL_FUNCTION(SetPreserveGlyph); +PASCAL_SUBTRAP(SetPreserveGlyph, 0xA854, 0x000A, FontDispatch); extern Boolean C_GetPreserveGlyph(void); -PASCAL_FUNCTION(GetPreserveGlyph); +PASCAL_SUBTRAP(GetPreserveGlyph, 0xA854, 0x000B, FontDispatch); extern OSErr C_FlushFonts(void); -PASCAL_FUNCTION(FlushFonts); +PASCAL_SUBTRAP(FlushFonts, 0xA854, 0x000C, FontDispatch); } #endif /* _FONTMGR_H_ */ diff --git a/src/include/Gestalt.h b/src/include/Gestalt.h index d6ab0d06..e51a6f67 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 { @@ -54,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'), @@ -194,13 +201,15 @@ 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 OSErr Gestalt(OSType selector, GUEST *responsep); +extern OSErr NewGestalt(OSType selector, SelectorFunctionUPP selFunc); +extern OSErr ReplaceGestalt(OSType selector, SelectorFunctionUPP selFunc, + SelectorFunctionUPP *oldSelFuncp); -extern OSErrRET C_GestaltTablesOnly(OSType selector, +extern OSErr 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..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 @@ -50,20 +53,22 @@ enum hmCloseViewActive = -863 }; +DISPATCHER_TRAP(Pack14, 0xA830, D0W); // & 0xFF ? ### + extern BOOLEAN C_HMGetBalloons(void); -PASCAL_FUNCTION(HMGetBalloons); +PASCAL_SUBTRAP(HMGetBalloons, 0xA830, 0x0003, Pack14); extern OSErr C_HMSetBalloons(BOOLEAN flag); -PASCAL_FUNCTION(HMSetBalloons); +PASCAL_SUBTRAP(HMSetBalloons, 0xA830, 0x0104, Pack14); extern BOOLEAN C_HMIsBalloon(void); -PASCAL_FUNCTION(HMIsBalloon); +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_FUNCTION(HMShowBalloon); +PASCAL_SUBTRAP(HMShowBalloon, 0xA830, 0x0B01, Pack14); extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, LONGINT flags, @@ -71,57 +76,57 @@ extern OSErr C_HMShowMenuBalloon(INTEGER item, INTEGER menuid, RectPtr alternaterectp, Ptr tipproc, INTEGER proc, INTEGER variant); -PASCAL_FUNCTION(HMShowMenuBalloon); +PASCAL_SUBTRAP(HMShowMenuBalloon, 0xA830, 0x0E05, Pack14); extern OSErr C_HMRemoveBalloon(void); -PASCAL_FUNCTION(HMRemoveBalloon); +PASCAL_SUBTRAP(HMRemoveBalloon, 0xA830, 0x0002, Pack14); extern OSErr C_HMGetHelpMenuHandle(GUEST *mhp); -PASCAL_FUNCTION(HMGetHelpMenuHandle); +PASCAL_SUBTRAP(HMGetHelpMenuHandle, 0xA830, 0x0200, Pack14); extern OSErr C_HMGetFont(GUEST *fontp); -PASCAL_FUNCTION(HMGetFont); +PASCAL_SUBTRAP(HMGetFont, 0xA830, 0x020A, Pack14); extern OSErr C_HMGetFontSize(GUEST *sizep); -PASCAL_FUNCTION(HMGetFontSize); +PASCAL_SUBTRAP(HMGetFontSize, 0xA830, 0x020B, Pack14); extern OSErr C_HMSetFont(INTEGER font); -PASCAL_FUNCTION(HMSetFont); +PASCAL_SUBTRAP(HMSetFont, 0xA830, 0x0108, Pack14); extern OSErr C_HMSetFontSize(INTEGER size); -PASCAL_FUNCTION(HMSetFontSize); +PASCAL_SUBTRAP(HMSetFontSize, 0xA830, 0x0109, Pack14); extern OSErr C_HMSetDialogResID(INTEGER resid); -PASCAL_FUNCTION(HMSetDialogResID); +PASCAL_SUBTRAP(HMSetDialogResID, 0xA830, 0x010C, Pack14); extern OSErr C_HMGetDialogResID(GUEST *residp); -PASCAL_FUNCTION(HMGetDialogResID); +PASCAL_SUBTRAP(HMGetDialogResID, 0xA830, 0x0213, Pack14); extern OSErr C_HMSetMenuResID(INTEGER menuid, INTEGER resid); -PASCAL_FUNCTION(HMSetMenuResID); +PASCAL_SUBTRAP(HMSetMenuResID, 0xA830, 0x020D, Pack14); extern OSErr C_HMGetMenuResID(GUEST *menuidp, GUEST *residp); -PASCAL_FUNCTION(HMGetMenuResID); +PASCAL_SUBTRAP(HMGetMenuResID, 0xA830, 0x0314, Pack14); extern OSErr C_HMScanTemplateItems(INTEGER whichid, INTEGER whicresfile, ResType whictype); -PASCAL_FUNCTION(HMScanTemplateItems); +PASCAL_SUBTRAP(HMScanTemplateItems, 0xA830, 0x0410, Pack14); extern OSErr C_HMBalloonRect(HMMessageRecord *messp, Rect *rectp); -PASCAL_FUNCTION(HMBalloonRect); +PASCAL_SUBTRAP(HMBalloonRect, 0xA830, 0x040E, Pack14); extern OSErr C_HMBalloonPict(HMMessageRecord *messp, GUEST *pictp); -PASCAL_FUNCTION(HMBalloonPict); +PASCAL_SUBTRAP(HMBalloonPict, 0xA830, 0x040F, Pack14); extern OSErr C_HMGetBalloonWindow(GUEST *windowpp); -PASCAL_FUNCTION(HMGetBalloonWindow); +PASCAL_SUBTRAP(HMGetBalloonWindow, 0xA830, 0x0215, Pack14); extern OSErr C_HMExtractHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, HMMessageRecord *helpmsgp); -PASCAL_FUNCTION(HMExtractHelpMsg); +PASCAL_SUBTRAP(HMExtractHelpMsg, 0xA830, 0x0711, Pack14); extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, INTEGER msg, INTEGER state, @@ -131,7 +136,7 @@ extern OSErr C_HMGetIndHelpMsg(ResType type, INTEGER resid, HMMessageRecord *helpmsgp, GUEST *count); -PASCAL_FUNCTION(HMGetIndHelpMsg); +PASCAL_SUBTRAP(HMGetIndHelpMsg, 0xA830, 0x1306, Pack14); } #endif /* !_HELPMGR_H_ */ diff --git a/src/include/Iconutil.h b/src/include/Iconutil.h index 9b7b2f37..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')) @@ -111,19 +116,20 @@ typedef struct CIcon typedef GUEST *CIconHandle; /* icon utility function prototypes */ +DISPATCHER_TRAP(IconDispatch, 0xABC9, D0W); extern OSErr C_PlotIconID(const Rect *rect, IconAlignmentType align, IconTransformType tranform, short res_id); -PASCAL_FUNCTION(PlotIconID); +PASCAL_SUBTRAP(PlotIconID, 0xABC9, 0x0500, IconDispatch); extern OSErr C_PlotIconMethod(const Rect *rect, IconAlignmentType align, IconTransformType transform, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(PlotIconMethod); +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 +138,17 @@ extern OSErr C_PlotIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_FUNCTION(PlotIconHandle); +PASCAL_SUBTRAP(PlotIconHandle, 0xABC9, 0x061D, IconDispatch); extern OSErr C_PlotCIconHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, CIconHandle icon); -PASCAL_FUNCTION(PlotCIconHandle); +PASCAL_SUBTRAP(PlotCIconHandle, 0xABC9, 0x061F, IconDispatch); extern OSErr C_PlotSICNHandle(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle icon); -PASCAL_FUNCTION(PlotSICNHandle); +PASCAL_SUBTRAP(PlotSICNHandle, 0xABC9, 0x061E, IconDispatch); extern Handle C_GetIcon(short icon_id); PASCAL_TRAP(GetIcon, 0xA9BB); @@ -154,100 +160,100 @@ PASCAL_TRAP(DisposeCIcon, 0xAA25); extern OSErr C_GetIconSuite(GUEST *suite, short res_id, IconSelectorValue selector); -PASCAL_FUNCTION(GetIconSuite); +PASCAL_SUBTRAP(GetIconSuite, 0xABC9, 0x0501, IconDispatch); extern OSErr C_NewIconSuite(GUEST *suite); -PASCAL_FUNCTION(NewIconSuite); +PASCAL_SUBTRAP(NewIconSuite, 0xABC9, 0x0207, IconDispatch); extern OSErr C_AddIconToSuite(Handle icon_data, Handle suite, ResType type); -PASCAL_FUNCTION(AddIconToSuite); +PASCAL_SUBTRAP(AddIconToSuite, 0xABC9, 0x0608, IconDispatch); extern OSErr C_GetIconFromSuite(GUEST *icon_data, Handle suite, ResType type); -PASCAL_FUNCTION(GetIconFromSuite); +PASCAL_SUBTRAP(GetIconFromSuite, 0xABC9, 0x0609, IconDispatch); extern OSErr C_PlotIconSuite(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle suite); -PASCAL_FUNCTION(PlotIconSuite); +PASCAL_SUBTRAP(PlotIconSuite, 0xABC9, 0x0603, IconDispatch); extern OSErr C_ForEachIconDo(Handle suite, IconSelectorValue selector, IconActionProcPtr action, void *data); -PASCAL_FUNCTION(ForEachIconDo); +PASCAL_SUBTRAP(ForEachIconDo, 0xABC9, 0x080A, IconDispatch); extern short C_GetSuiteLabel(Handle suite); -PASCAL_FUNCTION(GetSuiteLabel); +PASCAL_SUBTRAP(GetSuiteLabel, 0xABC9, 0x0217, IconDispatch); extern OSErr C_SetSuiteLabel(Handle suite, short label); -PASCAL_FUNCTION(SetSuiteLabel); +PASCAL_SUBTRAP(SetSuiteLabel, 0xABC9, 0x0316, IconDispatch); extern OSErr C_GetLabel(short label, RGBColor *label_color, Str255 label_string); -PASCAL_FUNCTION(GetLabel); +PASCAL_SUBTRAP(GetLabel, 0xABC9, 0x050B, IconDispatch); extern OSErr C_DisposeIconSuite(Handle suite, Boolean dispose_data_p); -PASCAL_FUNCTION(DisposeIconSuite); +PASCAL_SUBTRAP(DisposeIconSuite, 0xABC9, 0x0302, IconDispatch); extern OSErr C_IconSuiteToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(IconSuiteToRgn); +PASCAL_SUBTRAP(IconSuiteToRgn, 0xABC9, 0x0714, IconDispatch); extern OSErr C_IconIDToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(IconIDToRgn); +PASCAL_SUBTRAP(IconIDToRgn, 0xABC9, 0x0613, IconDispatch); extern OSErr C_IconMethodToRgn(RgnHandle rgn, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(IconMethodToRgn); +PASCAL_SUBTRAP(IconMethodToRgn, 0xABC9, 0x0915, IconDispatch); extern Boolean C_PtInIconSuite(Point test_pt, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(PtInIconSuite); +PASCAL_SUBTRAP(PtInIconSuite, 0xABC9, 0x070E, IconDispatch); extern Boolean C_PtInIconID(Point test_pt, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(PtInIconID); +PASCAL_SUBTRAP(PtInIconID, 0xABC9, 0x060D, IconDispatch); extern Boolean C_PtInIconMethod(Point test_pt, const Rect *rect, IconAlignmentType align, IconGetterProcPtr method, void *data); -PASCAL_FUNCTION(PtInIconMethod); +PASCAL_SUBTRAP(PtInIconMethod, 0xABC9, 0x090F, IconDispatch); extern Boolean C_RectInIconSuite(const Rect *test_rect, const Rect *rect, IconAlignmentType align, Handle suite); -PASCAL_FUNCTION(RectInIconSuite); +PASCAL_SUBTRAP(RectInIconSuite, 0xABC9, 0x0711, IconDispatch); extern Boolean C_RectInIconID(const Rect *test_rect, const Rect *rect, IconAlignmentType align, short icon_id); -PASCAL_FUNCTION(RectInIconID); +PASCAL_SUBTRAP(RectInIconID, 0xABC9, 0x0610, 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, 0x0912, IconDispatch); extern OSErr C_MakeIconCache(Handle *cache, IconGetterProcPtr make_icon, void *data); -PASCAL_FUNCTION(MakeIconCache); +PASCAL_SUBTRAP(MakeIconCache, 0xABC9, 0x0604, IconDispatch); extern OSErr C_LoadIconCache(const Rect *rect, IconAlignmentType align, IconTransformType transform, Handle cache); -PASCAL_FUNCTION(LoadIconCache); +PASCAL_SUBTRAP(LoadIconCache, 0xABC9, 0x0606, IconDispatch); extern OSErr C_GetIconCacheData(Handle cache, void **data); -PASCAL_FUNCTION(GetIconCacheData); +PASCAL_SUBTRAP(GetIconCacheData, 0xABC9, 0x0419, IconDispatch); extern OSErr C_SetIconCacheData(Handle cache, void *data); -PASCAL_FUNCTION(SetIconCacheData); +PASCAL_SUBTRAP(SetIconCacheData, 0xABC9, 0x041A, IconDispatch); extern OSErr C_GetIconCacheProc(Handle cache, IconGetterProcPtr *proc); -PASCAL_FUNCTION(GetIconCacheProc); +PASCAL_SUBTRAP(GetIconCacheProc, 0xABC9, 0x041B, IconDispatch); extern OSErr C_SetIconCacheProc(Handle cache, IconGetterProcPtr proc); -PASCAL_FUNCTION(SetIconCacheProc); +PASCAL_SUBTRAP(SetIconCacheProc, 0xABC9, 0x041C, IconDispatch); } #endif /* !_ICON_UTIL_H */ diff --git a/src/include/IntlUtil.h b/src/include/IntlUtil.h index aaad7d4a..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. @@ -138,78 +141,77 @@ 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); -PASCAL_FUNCTION(IUDatePString); +PASCAL_SUBTRAP(IUDatePString, 0xA9ED, 0x000E, Pack6); extern Handle C_IUGetIntl(INTEGER id); -PASCAL_FUNCTION(IUGetIntl); +PASCAL_SUBTRAP(IUGetIntl, 0xA9ED, 0x0006, Pack6); extern void C_IUDateString(LONGINT date, DateForm form, StringPtr p); -PASCAL_FUNCTION(IUDateString); +PASCAL_SUBTRAP(IUDateString, 0xA9ED, 0x0, Pack6); extern void C_IUTimePString(LONGINT date, BOOLEAN secs, StringPtr p, Handle h); -PASCAL_FUNCTION(IUTimePString); +PASCAL_SUBTRAP(IUTimePString, 0xA9ED, 0x0010, Pack6); extern void C_IUTimeString(LONGINT date, BOOLEAN secs, StringPtr p); -PASCAL_FUNCTION(IUTimeString); +PASCAL_SUBTRAP(IUTimeString, 0xA9ED, 0x0002, Pack6); extern BOOLEAN C_IUMetric(void); -PASCAL_FUNCTION(IUMetric); +PASCAL_SUBTRAP(IUMetric, 0xA9ED, 0x0004, Pack6); extern void C_IUSetIntl(INTEGER rn, INTEGER id, Handle newh); -PASCAL_FUNCTION(IUSetIntl); +PASCAL_SUBTRAP(IUSetIntl, 0xA9ED, 0x0008, Pack6); extern INTEGER C_IUMagString(Ptr ptr1, Ptr ptr2, INTEGER len1, INTEGER len2); -PASCAL_FUNCTION(IUMagString); +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_FUNCTION(IUMagIDString); +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_FUNCTION(IUMystery); +PASCAL_SUBTRAP(IUMystery, 0xA9ED, 0x0012, Pack6); extern void C_IULDateString(LongDateTime *datetimep, DateForm longflag, Str255 result, Handle intlhand); -PASCAL_FUNCTION(IULDateString); +PASCAL_SUBTRAP(IULDateString, 0xA9ED, 0x0014, Pack6); extern void C_IULTimeString(LongDateTime *datetimep, BOOLEAN wantseconds, Str255 result, Handle intlhand); -PASCAL_FUNCTION(IULTimeString); +PASCAL_SUBTRAP(IULTimeString, 0xA9ED, 0x0016, Pack6); extern void C_IUClearCache(void); -PASCAL_FUNCTION(IUClearCache); +PASCAL_SUBTRAP(IUClearCache, 0xA9ED, 0x0018, Pack6); extern INTEGER C_IUMagPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_FUNCTION(IUMagPString); +PASCAL_SUBTRAP(IUMagPString, 0xA9ED, 0x001A, Pack6); extern INTEGER C_IUMagIDPString(Ptr ptra, Ptr ptrb, INTEGER lena, INTEGER lenb, Handle itl2hand); -PASCAL_FUNCTION(IUMagIDPString); +PASCAL_SUBTRAP(IUMagIDPString, 0xA9ED, 0x001C, Pack6); extern INTEGER C_IUScriptOrder(ScriptCode script1, ScriptCode script2); -PASCAL_FUNCTION(IUScriptOrder); +PASCAL_SUBTRAP(IUScriptOrder, 0xA9ED, 0x001E, Pack6); extern INTEGER C_IULangOrder(LangCode l1, LangCode l2); -PASCAL_FUNCTION(IULangOrder); +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_FUNCTION(IUTextOrder); +PASCAL_SUBTRAP(IUTextOrder, 0xA9ED, 0x0022, Pack6); extern void C_IUGetItlTable(ScriptCode script, INTEGER tablecode, Handle *itlhandlep, LONGINT *offsetp, LONGINT *lengthp); -PASCAL_FUNCTION(IUGetItlTable); +PASCAL_SUBTRAP(IUGetItlTable, 0xA9ED, 0x0024, Pack6); } #endif /* _INTLUTIL_H_ */ diff --git a/src/include/ListMgr.h b/src/include/ListMgr.h index 4184f425..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; @@ -25,6 +28,8 @@ typedef DataArray *DataPtr; typedef GUEST *DataHandle; +using ListClickLoopUPP = UPP; + struct ListRec { GUEST_STRUCT; @@ -42,7 +47,7 @@ struct ListRec GUEST clikTime; GUEST clikLoc; GUEST mouseLoc; - GUEST lClikLoop; + GUEST lClikLoop; GUEST lastClick; GUEST refCon; GUEST listDefProc; @@ -85,83 +90,86 @@ enum lCloseMsg = 3, }; +DISPATCHER_TRAP(Pack0, 0xA9E7, StackW); + extern void C_LFind(GUEST *offsetp, GUEST *lenp, Cell cell, ListHandle list); -PASCAL_FUNCTION(LFind); +PASCAL_SUBTRAP(LFind, 0xA9E7, 0x0034, Pack0); extern BOOLEAN C_LNextCell(BOOLEAN hnext, BOOLEAN vnext, GUEST *cellp, ListHandle list); -PASCAL_FUNCTION(LNextCell); +PASCAL_SUBTRAP(LNextCell, 0xA9E7, 0x0048, Pack0); extern void C_LRect(Rect *cellrect, Cell cell, ListHandle list); -PASCAL_FUNCTION(LRect); +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_FUNCTION(LSize); +PASCAL_SUBTRAP(LSize, 0xA9E7, 0x0060, Pack0); extern INTEGER C_LAddColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_FUNCTION(LAddColumn); +PASCAL_SUBTRAP(LAddColumn, 0xA9E7, 0x0004, Pack0); extern INTEGER C_LAddRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_FUNCTION(LAddRow); +PASCAL_SUBTRAP(LAddRow, 0xA9E7, 0x0008, Pack0); extern void C_LDelColumn(INTEGER count, INTEGER coln, ListHandle list); -PASCAL_FUNCTION(LDelColumn); +PASCAL_SUBTRAP(LDelColumn, 0xA9E7, 0x0020, Pack0); extern void C_LDelRow(INTEGER count, INTEGER rown, ListHandle list); -PASCAL_FUNCTION(LDelRow); +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_FUNCTION(LNew); +PASCAL_SUBTRAP(LNew, 0xA9E7, 0x0044, Pack0); extern void C_LDispose(ListHandle list); -PASCAL_FUNCTION(LDispose); +PASCAL_SUBTRAP(LDispose, 0xA9E7, 0x0028, Pack0); extern void C_LDraw(Cell cell, ListHandle list); -PASCAL_FUNCTION(LDraw); +PASCAL_SUBTRAP(LDraw, 0xA9E7, 0x0030, Pack0); extern void C_LDoDraw(BOOLEAN draw, ListHandle list); -PASCAL_FUNCTION(LDoDraw); +PASCAL_SUBTRAP(LDoDraw, 0xA9E7, 0x002C, Pack0); extern void C_LScroll(INTEGER ncol, INTEGER nrow, ListHandle list); -PASCAL_FUNCTION(LScroll); +PASCAL_SUBTRAP(LScroll, 0xA9E7, 0x0050, Pack0); extern void C_LAutoScroll(ListHandle list); -PASCAL_FUNCTION(LAutoScroll); +PASCAL_SUBTRAP(LAutoScroll, 0xA9E7, 0x0010, Pack0); extern void C_LUpdate(RgnHandle rgn, ListHandle list); -PASCAL_FUNCTION(LUpdate); +PASCAL_SUBTRAP(LUpdate, 0xA9E7, 0x0064, Pack0); extern void C_LActivate(BOOLEAN act, ListHandle list); -PASCAL_FUNCTION(LActivate); +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_FUNCTION(LClick); +PASCAL_SUBTRAP(LClick, 0xA9E7, 0x0018, Pack0); extern LONGINT C_LLastClick(ListHandle list); -PASCAL_FUNCTION(LLastClick); +PASCAL_SUBTRAP(LLastClick, 0xA9E7, 0x0040, Pack0); extern void C_LSetSelect(BOOLEAN setit, Cell cell, ListHandle list); -PASCAL_FUNCTION(LSetSelect); +PASCAL_SUBTRAP(LSetSelect, 0xA9E7, 0x005C, Pack0); extern void C_LAddToCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_FUNCTION(LAddToCell); +PASCAL_SUBTRAP(LAddToCell, 0xA9E7, 0x000C, Pack0); extern void C_LClrCell(Cell cell, ListHandle list); -PASCAL_FUNCTION(LClrCell); +PASCAL_SUBTRAP(LClrCell, 0xA9E7, 0x001C, Pack0); extern void C_LGetCell(Ptr dp, GUEST *dlp, Cell cell, ListHandle list); -PASCAL_FUNCTION(LGetCell); +PASCAL_SUBTRAP(LGetCell, 0xA9E7, 0x0038, Pack0); extern void C_LSetCell(Ptr dp, INTEGER dl, Cell cell, ListHandle list); -PASCAL_FUNCTION(LSetCell); +PASCAL_SUBTRAP(LSetCell, 0xA9E7, 0x0058, Pack0); extern void C_LCellSize(Point csize, ListHandle list); -PASCAL_FUNCTION(LCellSize); +PASCAL_SUBTRAP(LCellSize, 0xA9E7, 0x0014, Pack0); extern BOOLEAN C_LGetSelect(BOOLEAN next, GUEST *cellp, ListHandle list); -PASCAL_FUNCTION(LGetSelect); +PASCAL_SUBTRAP(LGetSelect, 0xA9E7, 0x003C, Pack0); } #endif /* __LIST__ */ diff --git a/src/include/MemoryMgr.h b/src/include/MemoryMgr.h index c30c694c..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. @@ -89,56 +93,92 @@ 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) + +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)) 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); #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, 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, void (D0, TrapBit), callconv::ReturnMemErr); #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); @@ -147,54 +187,93 @@ 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_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); 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); /* temporary memory functions; see tempmem.c */ extern int32_t C_TempFreeMem(void); -PASCAL_FUNCTION(TempFreeMem); +PASCAL_SUBTRAP(TempFreeMem, 0xA88F, 0x0018, OSDispatch); extern Size C_TempMaxMem(GUEST *grow); -PASCAL_FUNCTION(TempMaxMem); +PASCAL_SUBTRAP(TempMaxMem, 0xA88F, 0x0015, OSDispatch); extern Ptr C_TempTopMem(void); -PASCAL_FUNCTION(TempTopMem); +PASCAL_SUBTRAP(TempTopMem, 0xA88F, 0x0016, OSDispatch); extern Handle C_TempNewHandle(Size logical_size, GUEST *result_code); -PASCAL_FUNCTION(TempNewHandle); +PASCAL_SUBTRAP(TempNewHandle, 0xA88F, 0x001D, OSDispatch); extern void C_TempHLock(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempHLock); +PASCAL_SUBTRAP(TempHLock, 0xA88F, 0x001E, OSDispatch); extern void C_TempHUnlock(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempHUnlock); +PASCAL_SUBTRAP(TempHUnlock, 0xA88F, 0x001F, OSDispatch); extern void C_TempDisposeHandle(Handle h, GUEST *result_code); -PASCAL_FUNCTION(TempDisposeHandle); +PASCAL_SUBTRAP(TempDisposeHandle, 0xA88F, 0x0020, OSDispatch); } #endif /* _MEMORY_MGR_H_ */ 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 1e8b0773..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 @@ -28,7 +32,9 @@ typedef struct NMRec GUEST nmRefCon; } * NMRecPtr; -extern OSErrRET NMInstall(NMRecPtr nmptr); -extern OSErrRET NMRemove(NMRecPtr nmptr); +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 653ef818..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. @@ -76,9 +79,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; @@ -97,19 +99,39 @@ 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 +{ + operator bool() { return EM_D0 != 0; } + + static void set(bool b) + { + EM_D0 = b ? 0 : -1; + } + + template + static void afterCall(T) {} + +}; +} + 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, +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, EventRecord *eventp); +REGISTER_TRAP2(OSEventAvail, 0xA030, D0Minus1Boolean (D0,A0)); extern void SetEventMask(INTEGER evmask); extern QHdrPtr GetEvQHdr(void); @@ -144,12 +166,14 @@ 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_FUNCTION(AcceptHighLevelEvent); +PASCAL_SUBTRAP(AcceptHighLevelEvent, 0xA88F, 0x0033, OSDispatch); extern Boolean C_GetSpecificHighLevelEvent(GetSpecificFilterProcPtr fn, Ptr data, OSErr *err_return); -PASCAL_FUNCTION(GetSpecificHighLevelEvent); +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_FUNCTION(PostHighLevelEvent); +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/OSUtil.h b/src/include/OSUtil.h index b8ac347b..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 @@ -157,41 +160,65 @@ 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); +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 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); +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 OSErrRET InitUtil(void); +extern OSErr InitUtil(void); +REGISTER_TRAP2(InitUtil, 0xA03F, D0()); + extern SysPPtr GetSysPPtr(void); -extern OSErrRET WriteParam(void); + +extern OSErr WriteParam(void); +REGISTER_TRAP2(WriteParam, 0xA038, D0()); extern void Enqueue(QElemPtr e, QHdrPtr h); -extern OSErrRET Dequeue(QElemPtr e, QHdrPtr h); +REGISTER_TRAP2(Enqueue, 0xA96F, void(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 OSErrRET SysEnvirons(INTEGER vers, SysEnvRecPtr p); +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/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/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 f3d34557..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. @@ -166,8 +169,8 @@ typedef struct TPrDlg { GUEST_STRUCT; GUEST dlg; - GUEST pFltrProc; - GUEST pItemProc; + GUEST pFltrProc; + GUEST pItemProc; GUEST hPrintUsr; GUEST fDoIt; GUEST fDone; @@ -181,54 +184,60 @@ typedef struct TPrDlg const LowMemGlobal PrintErr { 0x944 }; // PrintMgr IMII-161 (true-b); +DISPATCHER_TRAP(PrGlue, 0xA8FD, StackL); + extern INTEGER C_PrError(void); -PASCAL_FUNCTION(PrError); +PASCAL_SUBTRAP(PrError, 0xA8FD, 0xBA000000, PrGlue); extern void C_PrSetError(INTEGER iErr); -PASCAL_FUNCTION(PrSetError); +PASCAL_SUBTRAP(PrSetError, 0xA8FD, 0xC0000200, PrGlue); extern void C_PrOpen(void); -PASCAL_FUNCTION(PrOpen); +PASCAL_SUBTRAP(PrOpen, 0xA8FD, 0xC8000000, PrGlue); extern void C_PrClose(void); -PASCAL_FUNCTION(PrClose); +PASCAL_SUBTRAP(PrClose, 0xA8FD, 0xD0000000, PrGlue); extern void C_PrDrvrOpen(void); -PASCAL_FUNCTION(PrDrvrOpen); +PASCAL_SUBTRAP(PrDrvrOpen, 0xA8FD, 0x80000000, PrGlue); extern void C_PrDrvrClose(void); -PASCAL_FUNCTION(PrDrvrClose); +PASCAL_SUBTRAP(PrDrvrClose, 0xA8FD, 0x88000000, PrGlue); extern void C_PrCtlCall(INTEGER iWhichCtl, LONGINT lParam1, LONGINT lParam2, LONGINT lParam3); -PASCAL_FUNCTION(PrCtlCall); +PASCAL_SUBTRAP(PrCtlCall, 0xA000, 0xA0000E00, PrGlue); extern Handle C_PrDrvrDCE(void); -PASCAL_FUNCTION(PrDrvrDCE); +PASCAL_SUBTRAP(PrDrvrDCE, 0xA8FD, 0x94000000, PrGlue); extern INTEGER C_PrDrvrVers(void); -PASCAL_FUNCTION(PrDrvrVers); +PASCAL_SUBTRAP(PrDrvrVers, 0xA8FD, 0x9A000000, 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_FUNCTION(PrJobInit); +PASCAL_SUBTRAP(PrJobInit, 0xA8FD, 0x44040410, PrGlue); extern TPPrDlg C_PrStlInit(THPrint hPrint); -PASCAL_FUNCTION(PrStlInit); +PASCAL_SUBTRAP(PrStlInit, 0xA8FD, 0x3C04040C, PrGlue); extern BOOLEAN C_PrDlgMain(THPrint hPrint, ProcPtr initfptr); -PASCAL_FUNCTION(PrDlgMain); +PASCAL_SUBTRAP(PrDlgMain, 0xA8FD, 0x4A040894, PrGlue); extern void C_PrGeneral(Ptr pData); -PASCAL_FUNCTION(PrGeneral); +PASCAL_SUBTRAP(PrGeneral, 0xA8FD, 0x70070480, PrGlue); extern void C_donotPrArc(GrafVerb verb, Rect *r, INTEGER starta, INTEGER arca); 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); @@ -281,26 +290,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, 0x04000C00, PrGlue); extern void C_PrOpenPage(TPPrPort port, TPRect pPageFrame); -PASCAL_FUNCTION(PrOpenPage); +PASCAL_SUBTRAP(PrOpenPage, 0xA8FD, 0x10000808, PrGlue); extern void C_PrClosePage(TPPrPort pPrPort); -PASCAL_FUNCTION(PrClosePage); +PASCAL_SUBTRAP(PrClosePage, 0xA8FD, 0x1800040C, PrGlue); extern void C_PrCloseDoc(TPPrPort port); -PASCAL_FUNCTION(PrCloseDoc); +PASCAL_SUBTRAP(PrCloseDoc, 0xA8FD, 0x08000484, PrGlue); extern void C_PrPicFile(THPrint hPrint, TPPrPort pPrPort, Ptr pIOBuf, Ptr pDevBuf, TPrStatus *prStatus); -PASCAL_FUNCTION(PrPicFile); +PASCAL_SUBTRAP(PrPicFile, 0xA8FD, 0x60051480, PrGlue); extern void C_PrintDefault(THPrint hPrint); -PASCAL_FUNCTION(PrintDefault); +PASCAL_SUBTRAP(PrintDefault, 0xA8FD, 0x20040480, PrGlue); extern BOOLEAN C_PrValidate(THPrint hPrint); -PASCAL_FUNCTION(PrValidate); +PASCAL_SUBTRAP(PrValidate, 0xA8FD, 0x52040498, PrGlue); extern BOOLEAN C_PrStlDialog(THPrint hPrint); -PASCAL_FUNCTION(PrStlDialog); +PASCAL_SUBTRAP(PrStlDialog, 0xA8FD, 0x2A040484, PrGlue); extern BOOLEAN C_PrJobDialog(THPrint hPrint); -PASCAL_FUNCTION(PrJobDialog); +PASCAL_SUBTRAP(PrJobDialog, 0xA8FD, 0x32040488, PrGlue); extern void C_PrJobMerge(THPrint hPrintSrc, THPrint hPrintDst); -PASCAL_FUNCTION(PrJobMerge); +PASCAL_SUBTRAP(PrJobMerge, 0xA8FD, 0x5804089C, PrGlue); } #endif /* __PRINTING__ */ diff --git a/src/include/ProcessMgr.h b/src/include/ProcessMgr.h index 4bf1932d..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,39 +160,41 @@ enum procNotFound = (-600), }; +EXTERN_DISPATCHER_TRAP(OSDispatch, 0xA88F, StackW); + 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, 0x0037, OSDispatch); extern OSErr C_GetNextProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetNextProcess); +PASCAL_SUBTRAP(GetNextProcess, 0xA88F, 0x0038, OSDispatch); extern OSErr C_GetProcessInformation(ProcessSerialNumber *serial_number, ProcessInfoPtr info); -PASCAL_FUNCTION(GetProcessInformation); +PASCAL_SUBTRAP(GetProcessInformation, 0xA88F, 0x003A, OSDispatch); extern OSErr C_SameProcess(ProcessSerialNumber *serial_number0, ProcessSerialNumber *serial_number1, Boolean *same_out); -PASCAL_FUNCTION(SameProcess); -extern OSErr C_GetFrontProcess(ProcessSerialNumber *serial_number, void *dummy); -PASCAL_FUNCTION(GetFrontProcess); +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_FUNCTION(SetFrontProcess); +PASCAL_SUBTRAP(SetFrontProcess, 0xA88F, 0x003B, OSDispatch); extern OSErr C_WakeUpProcess(ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(WakeUpProcess); +PASCAL_SUBTRAP(WakeUpProcess, 0xA88F, 0x003C, OSDispatch); extern OSErr C_GetProcessSerialNumberFromPortName(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetProcessSerialNumberFromPortName); +PASCAL_SUBTRAP(GetProcessSerialNumberFromPortName, 0xA88F, 0x0035, OSDispatch); extern OSErr C_GetPortNameFromProcessSerialNumber(PPCPortPtr port_name, ProcessSerialNumber *serial_number); -PASCAL_FUNCTION(GetPortNameFromProcessSerialNumber); +PASCAL_SUBTRAP(GetPortNameFromProcessSerialNumber, 0xA88F, 0x0046, OSDispatch); extern OSErr NewLaunch(StringPtr appl, INTEGER vrefnum, LaunchParamBlockRec *lpbp); diff --git a/src/include/QuickDraw.h b/src/include/QuickDraw.h index e4abe322..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 { @@ -148,23 +151,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 +328,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 +514,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); @@ -644,7 +646,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); @@ -811,11 +813,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); @@ -827,9 +829,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/QuickTime.h b/src/include/QuickTime.h index 95492389..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 @@ -23,56 +26,58 @@ typedef MovieRecord *Movie; typedef LONGINT TimeValue; +DISPATCHER_TRAP(QuickTime, 0xAAAA, D0W); + extern OSErr C_EnterMovies(void); -PASCAL_FUNCTION(EnterMovies); +PASCAL_SUBTRAP(EnterMovies, 0xAAAA, 0x0001, QuickTime); extern void C_ExitMovies(void); -PASCAL_FUNCTION(ExitMovies); +PASCAL_SUBTRAP(ExitMovies, 0xAAAA, 0x0002, QuickTime); extern void C_MoviesTask(Movie movie, LONGINT maxmillisecs); -PASCAL_FUNCTION(MoviesTask); +PASCAL_SUBTRAP(MoviesTask, 0xAAAA, 0x0005, QuickTime); extern OSErr C_PrerollMovie(Movie movie, TimeValue time, Fixed rate); -PASCAL_FUNCTION(PrerollMovie); +PASCAL_SUBTRAP(PrerollMovie, 0xAAAA, 0x0006, QuickTime); extern void C_SetMovieActive(Movie movie, BOOLEAN active); -PASCAL_FUNCTION(SetMovieActive); +PASCAL_SUBTRAP(SetMovieActive, 0xAAAA, 0x0009, QuickTime); extern void C_StartMovie(Movie movie); -PASCAL_FUNCTION(StartMovie); +PASCAL_SUBTRAP(StartMovie, 0xAAAA, 0x000B, QuickTime); extern void C_StopMovie(Movie movie); -PASCAL_FUNCTION(StopMovie); +PASCAL_SUBTRAP(StopMovie, 0xAAAA, 0x000C, QuickTime); extern void C_GoToBeginningOfMovie(Movie movie); -PASCAL_FUNCTION(GoToBeginningOfMovie); +PASCAL_SUBTRAP(GoToBeginningOfMovie, 0xAAAA, 0x000D, QuickTime); extern void C_SetMovieGWorld(Movie movie, CGrafPtr cgrafp, GDHandle gdh); -PASCAL_FUNCTION(SetMovieGWorld); +PASCAL_SUBTRAP(SetMovieGWorld, 0xAAAA, 0x0016, QuickTime); extern OSErr C_UpdateMovie(Movie movie); -PASCAL_FUNCTION(UpdateMovie); +PASCAL_SUBTRAP(UpdateMovie, 0xAAAA, 0x001F, QuickTime); extern void C_DisposeMovie(Movie movie); -PASCAL_FUNCTION(DisposeMovie); +PASCAL_SUBTRAP(DisposeMovie, 0xAAAA, 0x0023, QuickTime); extern INTEGER C_GetMovieVolume(Movie movie); -PASCAL_FUNCTION(GetMovieVolume); +PASCAL_SUBTRAP(GetMovieVolume, 0xAAAA, 0x002E, QuickTime); extern OSErr C_CloseMovieFile(INTEGER refnum); -PASCAL_FUNCTION(CloseMovieFile); +PASCAL_SUBTRAP(CloseMovieFile, 0xAAAA, 0x00D5, QuickTime); extern BOOLEAN C_IsMovieDone(Movie movie); -PASCAL_FUNCTION(IsMovieDone); +PASCAL_SUBTRAP(IsMovieDone, 0xAAAA, 0x00DD, QuickTime); extern OSErr C_NewMovieFromFile(Movie *moviep, INTEGER refnum, INTEGER *residp, StringPtr resnamep, INTEGER flags, BOOLEAN *datarefwaschangedp); -PASCAL_FUNCTION(NewMovieFromFile); +PASCAL_SUBTRAP(NewMovieFromFile, 0xAAAA, 0x00F0, QuickTime); extern Fixed C_GetMoviePreferredRate(Movie movie); -PASCAL_FUNCTION(GetMoviePreferredRate); +PASCAL_SUBTRAP(GetMoviePreferredRate, 0xAAAA, 0x00F3, QuickTime); extern void C_GetMovieBox(Movie movie, Rect *boxp); -PASCAL_FUNCTION(GetMovieBox); +PASCAL_SUBTRAP(GetMovieBox, 0xAAAA, 0x00F9, QuickTime); extern void C_SetMovieBox(Movie movie, const Rect *boxp); -PASCAL_FUNCTION(SetMovieBox); +PASCAL_SUBTRAP(SetMovieBox, 0xAAAA, 0x00FA, QuickTime); extern ComponentInstance C_NewMovieController(Movie movie, const Rect *mrectp, LONGINT flags); -PASCAL_FUNCTION(NewMovieController); +PASCAL_SUBTRAP(NewMovieController, 0xAAAA, 0x018A, QuickTime); extern void C_DisposeMovieController(ComponentInstance cntrller); -PASCAL_FUNCTION(DisposeMovieController); +PASCAL_SUBTRAP(DisposeMovieController, 0xAAAA, 0x018B, QuickTime); extern OSErr C_OpenMovieFile(const FSSpec *filespecp, - INTEGER *refnump, uint8 perm); -PASCAL_FUNCTION(OpenMovieFile); + INTEGER *refnump, uint8_t perm); +PASCAL_SUBTRAP(OpenMovieFile, 0xAAAA, 0x0192, QuickTime); } #endif diff --git a/src/include/ResourceMgr.h b/src/include/ResourceMgr.h index 9bbe51a4..cf33e241 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 */ @@ -76,8 +81,10 @@ 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, D0<0xF>); + +RAW_68K_TRAP(ResourceStub, 0xA0FC); // defined in emustubs.cpp + extern void C_SetResLoad(BOOLEAN load); PASCAL_TRAP(SetResLoad, 0xA99B); @@ -94,7 +101,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,15 +221,16 @@ 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, 0x0001, ResourceDispatch); extern void C_WritePartialResource(Handle resource, int32_t offset, Ptr buffer, int32_t count); -PASCAL_FUNCTION(WritePartialResource); +PASCAL_SUBTRAP(WritePartialResource, 0xA822, 0x0002, ResourceDispatch); extern void C_SetResourceSize(Handle resource, int32_t size); -PASCAL_FUNCTION(SetResourceSize); +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/SANE.h b/src/include/SANE.h index 3cbeb951..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! */ @@ -142,167 +147,168 @@ enum #define FCMP_RETURN_TYPE void +DISPATCHER_TRAP(Pack4, 0xA9EB, StackWLookahead<0xFF>); +DISPATCHER_TRAP(Pack5, 0xA9EC, StackWMasked<0xFF>); +DISPATCHER_TRAP(Pack7, 0xA9EE, StackW); + 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_FUNCTION(ROMlib_Fsetenv); +PASCAL_SUBTRAP(ROMlib_Fsetenv, 0xA9EB, 0x01, Pack4); extern void C_ROMlib_Fgetenv(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fgetenv); +PASCAL_SUBTRAP(ROMlib_Fgetenv, 0xA9EB, 0x03, Pack4); extern void C_ROMlib_Fprocentry(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fprocentry); +PASCAL_SUBTRAP(ROMlib_Fprocentry, 0xA9EB, 0x17, Pack4); extern void C_ROMlib_Fprocexit(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Fprocexit); +PASCAL_SUBTRAP(ROMlib_Fprocexit, 0xA9EB, 0x19, Pack4); extern void C_ROMlib_Ftestxcp(INTEGER *dp, INTEGER sel); -PASCAL_FUNCTION(ROMlib_Ftestxcp); +PASCAL_SUBTRAP(ROMlib_Ftestxcp, 0xA9EB, 0x1B, Pack4); extern void C_ROMlib_FsqrtX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FsqrtX); +PASCAL_SUBTRAP(ROMlib_FsqrtX, 0xA9EB, 0x12, Pack4); extern void C_ROMlib_FscalbX(INTEGER *sp, extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FscalbX); +PASCAL_SUBTRAP(ROMlib_FscalbX, 0xA9EB, 0x18, Pack4); extern void C_ROMlib_FlogbX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FlogbX); +PASCAL_SUBTRAP(ROMlib_FlogbX, 0xA9EB, 0x1A, Pack4); extern void C_ROMlib_FabsX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FabsX); +PASCAL_SUBTRAP(ROMlib_FabsX, 0xA9EB, 0x0F, Pack4); extern void C_ROMlib_FnegX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FnegX); +PASCAL_SUBTRAP(ROMlib_FnegX, 0xA9EB, 0x0D, Pack4); extern void C_ROMlib_FrintX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FrintX); +PASCAL_SUBTRAP(ROMlib_FrintX, 0xA9EB, 0x14, Pack4); extern void C_ROMlib_FtintX(extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FtintX); +PASCAL_SUBTRAP(ROMlib_FtintX, 0xA9EB, 0x16, Pack4); extern void C_ROMlib_Fcpysgnx(x80_t *sp, x80_t *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fcpysgnx); +PASCAL_SUBTRAP(ROMlib_Fcpysgnx, 0xA9EB, 0x11, Pack4); extern void C_ROMlib_Faddx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Faddx); +PASCAL_SUBTRAP(ROMlib_Faddx, 0xA9EB, 0x00, Pack4); extern void C_ROMlib_Fsubx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fsubx); +PASCAL_SUBTRAP(ROMlib_Fsubx, 0xA9EB, 0x02, Pack4); extern void C_ROMlib_Fmulx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fmulx); +PASCAL_SUBTRAP(ROMlib_Fmulx, 0xA9EB, 0x04, Pack4); extern void C_ROMlib_Fdivx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fdivx); +PASCAL_SUBTRAP(ROMlib_Fdivx, 0xA9EB, 0x06, Pack4); extern void C_ROMlib_Fremx(void *sp, extended80 *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fremx); +PASCAL_SUBTRAP(ROMlib_Fremx, 0xA9EB, 0x0C, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_Fcmpx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fcmpx); +PASCAL_SUBTRAP(ROMlib_Fcmpx, 0xA9EB, 0x08, Pack4); extern FCMP_RETURN_TYPE C_ROMlib_FcpXx(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FcpXx); +PASCAL_SUBTRAP(ROMlib_FcpXx, 0xA9EB, 0x0A, Pack4); extern void C_ROMlib_FX2x(extended80 *sp, void * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_FX2x); +PASCAL_SUBTRAP(ROMlib_FX2x, 0xA9EB, 0x10, Pack4); extern void C_ROMlib_Fx2X(void *sp, extended80 * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fx2X); +PASCAL_SUBTRAP(ROMlib_Fx2X, 0xA9EB, 0x0E, Pack4); extern void C_ROMlib_Fx2dec(DecForm *sp2, void * sp, Decimal *dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fx2dec); +PASCAL_SUBTRAP(ROMlib_Fx2dec, 0xA9EB, 0x0B, Pack4); extern void C_ROMlib_Fdec2x(Decimal *sp, void * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fdec2x); +PASCAL_SUBTRAP(ROMlib_Fdec2x, 0xA9EB, 0x09, Pack4); extern void C_ROMlib_Fclassx(void *sp, INTEGER * dp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fclassx); +PASCAL_SUBTRAP(ROMlib_Fclassx, 0xA9EB, 0x1C, Pack4); extern void C_ROMlib_FlnX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FlnX); +PASCAL_SUBTRAP(ROMlib_FlnX, 0xA9EC, 0x00, Pack5); extern void C_ROMlib_Flog2X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Flog2X); +PASCAL_SUBTRAP(ROMlib_Flog2X, 0xA9EC, 0x02, Pack5); extern void C_ROMlib_Fln1X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fln1X); +PASCAL_SUBTRAP(ROMlib_Fln1X, 0xA9EC, 0x04, Pack5); extern void C_ROMlib_Flog21X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Flog21X); +PASCAL_SUBTRAP(ROMlib_Flog21X, 0xA9EC, 0x06, Pack5); extern void C_ROMlib_FexpX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FexpX); +PASCAL_SUBTRAP(ROMlib_FexpX, 0xA9EC, 0x08, Pack5); extern void C_ROMlib_Fexp2X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp2X); +PASCAL_SUBTRAP(ROMlib_Fexp2X, 0xA9EC, 0x0A, Pack5); extern void C_ROMlib_Fexp1X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp1X); +PASCAL_SUBTRAP(ROMlib_Fexp1X, 0xA9EC, 0x0C, Pack5); extern void C_ROMlib_Fexp21X(extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fexp21X); +PASCAL_SUBTRAP(ROMlib_Fexp21X, 0xA9EC, 0x0E, Pack5); extern void C_ROMlib_Fxpwri(INTEGER *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fxpwri); +PASCAL_SUBTRAP(ROMlib_Fxpwri, 0xA9EC, 0x10, Pack5); extern void C_ROMlib_Fxpwry(extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fxpwry); +PASCAL_SUBTRAP(ROMlib_Fxpwry, 0xA9EC, 0x12, Pack5); extern void C_ROMlib_Fcompound(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fcompound); +PASCAL_SUBTRAP(ROMlib_Fcompound, 0xA9EC, 0x14, Pack5); extern void C_ROMlib_Fannuity(extended80 *sp2, extended80 *sp, extended80 *dp); -PASCAL_FUNCTION(ROMlib_Fannuity); +PASCAL_SUBTRAP(ROMlib_Fannuity, 0xA9EC, 0x16, Pack5); extern void C_ROMlib_FsinX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FsinX); +PASCAL_SUBTRAP(ROMlib_FsinX, 0xA9EC, 0x18, Pack5); extern void C_ROMlib_FcosX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FcosX); +PASCAL_SUBTRAP(ROMlib_FcosX, 0xA9EC, 0x1A, Pack5); extern void C_ROMlib_FtanX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FtanX); +PASCAL_SUBTRAP(ROMlib_FtanX, 0xA9EC, 0x1C, Pack5); extern void C_ROMlib_FatanX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FatanX); +PASCAL_SUBTRAP(ROMlib_FatanX, 0xA9EC, 0x1E, Pack5); extern void C_ROMlib_FrandX(extended80 *dp); -PASCAL_FUNCTION(ROMlib_FrandX); +PASCAL_SUBTRAP(ROMlib_FrandX, 0xA9EC, 0x20, Pack5); extern void C_ROMlib_Fdec2str(DecForm *sp2, Decimal *sp, Decstr dp); -PASCAL_FUNCTION(ROMlib_Fdec2str); +PASCAL_SUBTRAP(ROMlib_Fdec2str, 0xA9EE, 0x03, 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, 0x04, Pack7); extern void C_ROMlib_Fpstr2dec(Decstr sp2, INTEGER *sp, Decimal *dp2, Byte *dp); -PASCAL_FUNCTION(ROMlib_Fpstr2dec); +PASCAL_SUBTRAP(ROMlib_Fpstr2dec, 0xA9EE, 0x02, Pack7); extern void C_ROMlib_Fsethv(LONGINT *hvp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fsethv); +PASCAL_SUBTRAP(ROMlib_Fsethv, 0xA9EB, 0x05, Pack4); extern void C_ROMlib_Fgethv(LONGINT *hvp, unsigned short sel); -PASCAL_FUNCTION(ROMlib_Fgethv); +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_FUNCTION(ROMlib_FnextX); +PASCAL_SUBTRAP(ROMlib_FnextX, 0xA9EB, 0x13, Pack4); } #endif 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 9e769a2d..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 { @@ -135,7 +140,7 @@ enum TruncErr = (-1), }; -typedef uint8 StyledLineBreakCode; +typedef uint8_t StyledLineBreakCode; typedef struct DateCacheRec { @@ -165,7 +170,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 @@ -178,7 +183,7 @@ struct NumFormatStringRec GUEST_STRUCT; GUEST fLength; GUEST fVersion; - GUEST data; + GUEST data; }; typedef union { @@ -228,123 +233,125 @@ enum const LowMemGlobal TESysJust { 0xBAC }; // ScriptMgr ToolEqu.a (true-b); +DISPATCHER_TRAP(ScriptUtil, 0xA8B5, StackL); + extern LONGINT C_VisibleLength(Ptr textp, LONGINT len); -PASCAL_FUNCTION(VisibleLength); +PASCAL_SUBTRAP(VisibleLength, 0xA8B5, 0x84080028, ScriptUtil); extern void C_LongDate2Secs(LongDateRec *ldatep, GUEST *secs_outp); -PASCAL_FUNCTION(LongDate2Secs); +PASCAL_SUBTRAP(LongDate2Secs, 0xA8B5, 0x8008FFF2, ScriptUtil); extern void C_LongSecs2Date(GUEST *secs_inp, LongDateRec *ldatep); -PASCAL_FUNCTION(LongSecs2Date); +PASCAL_SUBTRAP(LongSecs2Date, 0xA8B5, 0x8008FFF0, ScriptUtil); extern LONGINT C_GetEnvirons(INTEGER verb); -PASCAL_FUNCTION(GetEnvirons); +PASCAL_SUBTRAP(GetEnvirons, 0xA8B5, 0x84020008, ScriptUtil); extern OSErr C_SetEnvirons(INTEGER verb, LONGINT param); -PASCAL_FUNCTION(SetEnvirons); +PASCAL_SUBTRAP(SetEnvirons, 0xA8B5, 0x8206000A, ScriptUtil); extern LONGINT C_GetScript(INTEGER script, INTEGER verb); -PASCAL_FUNCTION(GetScript); +PASCAL_SUBTRAP(GetScript, 0xA8B5, 0x8404000C, ScriptUtil); extern OSErr C_SetScript(INTEGER script, INTEGER verb, LONGINT param); -PASCAL_FUNCTION(SetScript); +PASCAL_SUBTRAP(SetScript, 0xA8B5, 0x8208000E, ScriptUtil); extern INTEGER C_Font2Script(INTEGER fontnum); -PASCAL_FUNCTION(Font2Script); +PASCAL_SUBTRAP(Font2Script, 0xA8B5, 0x82020006, ScriptUtil); extern INTEGER C_Transliterate(Handle srch, Handle dsth, INTEGER target, LONGINT srcmask); -PASCAL_FUNCTION(Transliterate); +PASCAL_SUBTRAP(Transliterate, 0xA8B5, 0x820E0018, ScriptUtil); extern INTEGER C_FontScript(void); -PASCAL_FUNCTION(FontScript); +PASCAL_SUBTRAP(FontScript, 0xA8B5, 0x82000000, ScriptUtil); extern INTEGER C_IntlScript(void); -PASCAL_FUNCTION(IntlScript); +PASCAL_SUBTRAP(IntlScript, 0xA8B5, 0x82000002, ScriptUtil); extern void C_KeyScript(INTEGER scriptcode); -PASCAL_FUNCTION(KeyScript); +PASCAL_SUBTRAP(KeyScript, 0xA8B5, 0x80020004, ScriptUtil); extern INTEGER C_CharType(Ptr textbufp, INTEGER offset); -PASCAL_FUNCTION(CharType); +PASCAL_SUBTRAP(CharType, 0xA8B5, 0x82060012, ScriptUtil); extern void C_MeasureJust(Ptr textbufp, INTEGER length, INTEGER slop, Ptr charlocs); -PASCAL_FUNCTION(MeasureJust); +PASCAL_SUBTRAP(MeasureJust, 0xA8B5, 0x800C0020, ScriptUtil); extern INTEGER C_Pixel2Char(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER pixwidth, BOOLEAN *leftsidep); -PASCAL_FUNCTION(Pixel2Char); +PASCAL_SUBTRAP(Pixel2Char, 0xA8B5, 0x820E0014, ScriptUtil); extern INTEGER C_Char2Pixel(Ptr textbufp, INTEGER len, INTEGER slop, INTEGER offset, SignedByte dir); -PASCAL_FUNCTION(Char2Pixel); +PASCAL_SUBTRAP(Char2Pixel, 0xA8B5, 0x820C0016, ScriptUtil); extern void C_FindWord(Ptr textbufp, INTEGER length, INTEGER offset, BOOLEAN leftside, Ptr breaks, GUEST *offsets); -PASCAL_FUNCTION(FindWord); +PASCAL_SUBTRAP(FindWord, 0xA8B5, 0x8012001A, ScriptUtil); extern void C_HiliteText(Ptr textbufp, INTEGER firstoffset, INTEGER secondoffset, GUEST *offsets); -PASCAL_FUNCTION(HiliteText); +PASCAL_SUBTRAP(HiliteText, 0xA8B5, 0x800E001C, ScriptUtil); extern void C_DrawJust(Ptr textbufp, INTEGER length, INTEGER slop); -PASCAL_FUNCTION(DrawJust); +PASCAL_SUBTRAP(DrawJust, 0xA8B5, 0x8008001E, ScriptUtil); extern String2DateStatus C_String2Time(Ptr textp, LONGINT len, Ptr cachep, GUEST *lenusedp, GUEST *datetimep); -PASCAL_FUNCTION(String2Time); +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_FUNCTION(InitDateCache); +PASCAL_SUBTRAP(InitDateCache, 0xA8B5, 0x8204FFF8, ScriptUtil); extern INTEGER C_CharByte(Ptr textBuf, INTEGER textOffset); -PASCAL_FUNCTION(CharByte); +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_FUNCTION(String2Date); +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_FUNCTION(StyledLineBreak); +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_FUNCTION(NMeasureJust); +PASCAL_SUBTRAP(NMeasureJust, 0xA8B5, 0x801A0034, ScriptUtil); extern Boolean C_ParseTable(CharByteTable table); -PASCAL_FUNCTION(ParseTable); +PASCAL_SUBTRAP(ParseTable, 0xA8B5, 0x82040022, ScriptUtil); extern Boolean C_FillParseTable(CharByteTable table, ScriptCode script); -PASCAL_FUNCTION(FillParseTable); +PASCAL_SUBTRAP(FillParseTable, 0xA8B5, 0xC2040022, ScriptUtil); extern INTEGER C_ReplaceText(Handle base_text, Handle subst_text, Str15 key); -PASCAL_FUNCTION(ReplaceText); +PASCAL_SUBTRAP(ReplaceText, 0xA8B5, 0x820CFFDC, ScriptUtil); extern INTEGER C_TruncString(INTEGER width, Str255 string, TruncCode code); -PASCAL_FUNCTION(TruncString); +PASCAL_SUBTRAP(TruncString, 0xA8B5, 0x8208FFE0, ScriptUtil); extern FormatStatus C_StringToExtended(Str255 string, NumFormatStringRec *formatp, NumberParts *partsp, Extended80 *xp); -PASCAL_FUNCTION(StringToExtended); +PASCAL_SUBTRAP(StringToExtended, 0xA8B5, 0x8210FFE6, ScriptUtil); extern FormatStatus C_ExtendedToString(Extended80 *xp, NumFormatStringRec *formatp, NumberParts *partsp, Str255 string); -PASCAL_FUNCTION(ExtendedToString); +PASCAL_SUBTRAP(ExtendedToString, 0xA8B5, 0x8210FFE8, ScriptUtil); extern FormatStatus C_StringToFormatRec(Str255 in_string, NumberParts *partsp, NumFormatStringRec *out_string); -PASCAL_FUNCTION(StringToFormatRec); +PASCAL_SUBTRAP(StringToFormatRec, 0xA8B5, 0x820CFFEC, ScriptUtil); extern ToggleResults C_ToggleDate(LongDateTime *lsecsp, LongDateField field, DateDelta delta, INTEGER ch, TogglePB *paramsp); -PASCAL_FUNCTION(ToggleDate); +PASCAL_SUBTRAP(ToggleDate, 0xA8B5, 0x820EFFEE, ScriptUtil); extern Fixed C_PortionLine( Ptr textPtr, @@ -352,7 +359,7 @@ extern Fixed C_PortionLine( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(PortionLine); +PASCAL_SUBTRAP(PortionLine, 0xA8B5, 0x84120036, ScriptUtil); extern void C_DrawJustified( Ptr textPtr, @@ -361,13 +368,13 @@ extern void C_DrawJustified( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(DrawJustified); +PASCAL_SUBTRAP(DrawJustified, 0xA8B5, 0x80160032, ScriptUtil); extern ScriptRunStatus C_FindScriptRun( Ptr textPtr, LONGINT textLen, GUEST *lenUsedp); -PASCAL_FUNCTION(FindScriptRun); +PASCAL_SUBTRAP(FindScriptRun, 0xA8B5, 0x820C0026, ScriptUtil); extern INTEGER C_PixelToChar( Ptr textBuf, @@ -379,7 +386,7 @@ extern INTEGER C_PixelToChar( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(PixelToChar); +PASCAL_SUBTRAP(PixelToChar, 0xA8B5, 0x8222002E, ScriptUtil); extern INTEGER C_CharToPixel( Ptr textBuf, @@ -390,40 +397,52 @@ extern INTEGER C_CharToPixel( JustStyleCode styleRunPosition, Point numer, Point denom); -PASCAL_FUNCTION(CharToPixel); +PASCAL_SUBTRAP(CharToPixel, 0xA8B5, 0x821C0030, ScriptUtil); extern void C_LowercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(LowercaseText); +PASCAL_FUNCTION(LowercaseText); //, 0xA8B5, ScriptUtil); extern void C_UppercaseText( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(UppercaseText); +PASCAL_FUNCTION(UppercaseText); //, 0xA8B5, ScriptUtil); extern void C_StripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(StripDiacritics); +PASCAL_FUNCTION(StripDiacritics); //, 0xA8B5, ScriptUtil); extern void C_UppercaseStripDiacritics( Ptr textp, INTEGER len, ScriptCode script); -PASCAL_FUNCTION(UppercaseStripDiacritics); +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/SegmentLdr.h b/src/include/SegmentLdr.h index a410770e..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 { @@ -50,9 +54,12 @@ 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); +extern void C_FlushCodeCache(void); +PASCAL_TRAP(FlushCodeCache, 0xA0BD); 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); @@ -69,7 +76,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/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/ShutDown.h b/src/include/ShutDown.h index 46239072..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 @@ -12,13 +18,15 @@ enum sdOnRestartOrPower = (sdOnPowerOff + sdOnRestart), }; +DISPATCHER_TRAP(ShutDown, 0xA895, StackW); + extern void C_ShutDwnPower(void); -PASCAL_FUNCTION(ShutDwnPower); +PASCAL_SUBTRAP(ShutDwnPower, 0xA895, 0x0001, ShutDown); extern void C_ShutDwnStart(void); -PASCAL_FUNCTION(ShutDwnStart); +PASCAL_SUBTRAP(ShutDwnStart, 0xA895, 0x0002, ShutDown); extern void C_ShutDwnInstall(ProcPtr shutdown_proc, int16_t flags); -PASCAL_FUNCTION(ShutDwnInstall); +PASCAL_SUBTRAP(ShutDwnInstall, 0xA895, 0x0003, ShutDown); extern void C_ShutDwnRemove(ProcPtr shutdown_proc); -PASCAL_FUNCTION(ShutDwnRemove); +PASCAL_SUBTRAP(ShutDwnRemove, 0xA895, 0x0004, ShutDown); } diff --git a/src/include/SoundMgr.h b/src/include/SoundMgr.h index dd187c67..c3fb44ae 100644 --- a/src/include/SoundMgr.h +++ b/src/include/SoundMgr.h @@ -9,6 +9,10 @@ */ #include "QuickDraw.h" +#include "SANE.h" + +#define MODULE_NAME SoundMgr +#include namespace Executor { @@ -107,7 +111,7 @@ typedef struct _SoundHeader GUEST loopEnd; GUEST encode; GUEST baseFrequency; - GUEST sampleArea[0]; + GUEST sampleArea[1]; } SoundHeader, *SoundHeaderPtr; typedef struct _ExtSoundHeader @@ -121,7 +125,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 +134,7 @@ typedef struct _ExtSoundHeader GUEST futureUse2; GUEST futureUse3; GUEST futureUse4; - GUEST sampleArea[0]; + GUEST sampleArea[1]; } ExtSoundHeader, *ExtSoundHeaderPtr; enum @@ -168,7 +172,7 @@ typedef struct SndDoubleBuffer GUEST dbNumFrames; GUEST dbFlags; GUEST dbUserInfo; - GUEST dbSoundData[0]; + GUEST dbSoundData[1]; } * SndDoubleBufferPtr; enum @@ -215,173 +219,175 @@ typedef void *SPBPtr; typedef uint32_t UnsignedFixed; typedef Ptr CompressionInfoPtr; +DISPATCHER_TRAP(SoundDispatch, 0xA800, D0<0xFFFFFF>); + extern void C_SndGetSysBeepState(GUEST *statep); -PASCAL_FUNCTION(SndGetSysBeepState); +PASCAL_SUBTRAP(SndGetSysBeepState, 0xA800, 0x02180008, SoundDispatch); extern OSErr C_SndSetSysBeepState(INTEGER state); -PASCAL_FUNCTION(SndSetSysBeepState); +PASCAL_SUBTRAP(SndSetSysBeepState, 0xA800, 0x011C0008, SoundDispatch); extern OSErr C_SndChannelStatus(SndChannelPtr chanp, INTEGER length, SCStatusPtr statusp); -PASCAL_FUNCTION(SndChannelStatus); +PASCAL_SUBTRAP(SndChannelStatus, 0xA800, 0x05100008, SoundDispatch); extern OSErr C_SndManagerStatus(INTEGER length, SMStatusPtr statusp); -PASCAL_FUNCTION(SndManagerStatus); +PASCAL_SUBTRAP(SndManagerStatus, 0xA800, 0x03140008, SoundDispatch); extern NumVersion C_SndSoundManagerVersion(void); -PASCAL_FUNCTION(SndSoundManagerVersion); +PASCAL_SUBTRAP(SndSoundManagerVersion, 0xA800, 0x000C0008, SoundDispatch); extern NumVersion C_MACEVersion(void); -PASCAL_FUNCTION(MACEVersion); +PASCAL_SUBTRAP(MACEVersion, 0xA800, 0x00000010, SoundDispatch); extern NumVersion C_SPBVersion(void); -PASCAL_FUNCTION(SPBVersion); +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_FUNCTION(SndStartFilePlay); +PASCAL_SUBTRAP(SndStartFilePlay, 0xA800, 0x0D000008, SoundDispatch); extern OSErr C_SndPauseFilePlay(SndChannelPtr chanp); -PASCAL_FUNCTION(SndPauseFilePlay); +PASCAL_SUBTRAP(SndPauseFilePlay, 0xA800, 0x02040008, SoundDispatch); extern OSErr C_SndStopFilePlay(SndChannelPtr chanp, BOOLEAN async); -PASCAL_FUNCTION(SndStopFilePlay); +PASCAL_SUBTRAP(SndStopFilePlay, 0xA800, 0x03080008, SoundDispatch); extern OSErr C_SndPlayDoubleBuffer(SndChannelPtr chanp, SndDoubleBufferHeaderPtr paramp); -PASCAL_FUNCTION(SndPlayDoubleBuffer); +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_FUNCTION(Comp3to1); +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_FUNCTION(Comp6to1); +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_FUNCTION(Exp1to3); +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_FUNCTION(Exp1to6); +PASCAL_SUBTRAP(Exp1to6, 0xA800, 0x00100010, SoundDispatch); extern OSErr C_SndRecord(ProcPtr filterp, Point corner, OSType quality, GUEST *sndhandlep); -PASCAL_FUNCTION(SndRecord); +PASCAL_SUBTRAP(SndRecord, 0xA800, 0x08040014, SoundDispatch); extern OSErr C_SndRecordToFile(ProcPtr filterp, Point corner, OSType quality, INTEGER refnum); -PASCAL_FUNCTION(SndRecordToFile); +PASCAL_SUBTRAP(SndRecordToFile, 0xA800, 0x07080014, SoundDispatch); extern OSErr C_SPBOpenDevice(Str255 name, INTEGER permission, GUEST *inrefnump); -PASCAL_FUNCTION(SPBOpenDevice); +PASCAL_SUBTRAP(SPBOpenDevice, 0xA800, 0x05180014, SoundDispatch); extern OSErr C_SPBCloseDevice(LONGINT inrefnum); -PASCAL_FUNCTION(SPBCloseDevice); +PASCAL_SUBTRAP(SPBCloseDevice, 0xA800, 0x021C0014, SoundDispatch); extern OSErr C_SPBRecord(SPBPtr inparamp, BOOLEAN async); -PASCAL_FUNCTION(SPBRecord); +PASCAL_SUBTRAP(SPBRecord, 0xA800, 0x03200014, SoundDispatch); extern OSErr C_SPBRecordToFile(INTEGER refnum, SPBPtr inparamp, BOOLEAN async); -PASCAL_FUNCTION(SPBRecordToFile); +PASCAL_SUBTRAP(SPBRecordToFile, 0xA800, 0x04240014, SoundDispatch); extern OSErr C_SPBPauseRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBPauseRecording); +PASCAL_SUBTRAP(SPBPauseRecording, 0xA800, 0x02280014, SoundDispatch); extern OSErr C_SPBResumeRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBResumeRecording); +PASCAL_SUBTRAP(SPBResumeRecording, 0xA800, 0x022C0014, SoundDispatch); extern OSErr C_SPBStopRecording(LONGINT refnum); -PASCAL_FUNCTION(SPBStopRecording); +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_FUNCTION(SPBGetRecordingStatus); +PASCAL_SUBTRAP(SPBGetRecordingStatus, 0xA800, 0x0E340014, SoundDispatch); extern OSErr C_SPBGetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_FUNCTION(SPBGetDeviceInfo); +PASCAL_SUBTRAP(SPBGetDeviceInfo, 0xA800, 0x06380014, SoundDispatch); extern OSErr C_SPBSetDeviceInfo(LONGINT refnum, OSType info, Ptr infop); -PASCAL_FUNCTION(SPBSetDeviceInfo); +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_FUNCTION(SetupSndHeader); +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_FUNCTION(SetupAIFFHeader); +PASCAL_SUBTRAP(SetupAIFFHeader, 0xA800, 0x0B4C0014, SoundDispatch); extern OSErr C_SPBSignInDevice(INTEGER refnum, Str255 name); -PASCAL_FUNCTION(SPBSignInDevice); +PASCAL_SUBTRAP(SPBSignInDevice, 0xA800, 0x030C0014, SoundDispatch); extern OSErr C_SPBSignOutDevice(INTEGER refnum); -PASCAL_FUNCTION(SPBSignOutDevice); +PASCAL_SUBTRAP(SPBSignOutDevice, 0xA800, 0x01100014, SoundDispatch); extern OSErr C_SPBGetIndexedDevice(INTEGER count, Str255 name, GUEST *deviceiconhandlep); -PASCAL_FUNCTION(SPBGetIndexedDevice); +PASCAL_SUBTRAP(SPBGetIndexedDevice, 0xA800, 0x05140014, SoundDispatch); extern OSErr C_SPBMillisecondsToBytes(LONGINT refnum, GUEST *millip); -PASCAL_FUNCTION(SPBMillisecondsToBytes); +PASCAL_SUBTRAP(SPBMillisecondsToBytes, 0xA800, 0x04400014, SoundDispatch); extern OSErr C_SPBBytesToMilliseconds(LONGINT refnum, GUEST *bytecountp); -PASCAL_FUNCTION(SPBBytesToMilliseconds); +PASCAL_SUBTRAP(SPBBytesToMilliseconds, 0xA800, 0x04440014, SoundDispatch); extern OSErr C_GetSysBeepVolume(GUEST *levelp); -PASCAL_FUNCTION(GetSysBeepVolume); +PASCAL_SUBTRAP(GetSysBeepVolume, 0xA800, 0x02240018, SoundDispatch); extern OSErr C_SetSysBeepVolume(LONGINT level); -PASCAL_FUNCTION(SetSysBeepVolume); +PASCAL_SUBTRAP(SetSysBeepVolume, 0xA800, 0x02280018, SoundDispatch); extern OSErr C_GetDefaultOutputVolume(GUEST *levelp); -PASCAL_FUNCTION(GetDefaultOutputVolume); +PASCAL_SUBTRAP(GetDefaultOutputVolume, 0xA800, 0x022C0018, SoundDispatch); extern OSErr C_SetDefaultOutputVolume(LONGINT level); -PASCAL_FUNCTION(SetDefaultOutputVolume); +PASCAL_SUBTRAP(SetDefaultOutputVolume, 0xA800, 0x02300018, SoundDispatch); extern OSErr C_GetSoundHeaderOffset(Handle sndHandle, GUEST *offset); -PASCAL_FUNCTION(GetSoundHeaderOffset); +PASCAL_SUBTRAP(GetSoundHeaderOffset, 0xA800, 0x04040018, SoundDispatch); extern UnsignedFixed C_UnsignedFixedMulDiv(UnsignedFixed value, UnsignedFixed multiplier, UnsignedFixed divisor); -PASCAL_FUNCTION(UnsignedFixedMulDiv); +PASCAL_SUBTRAP(UnsignedFixedMulDiv, 0xA800, 0x060C0018, SoundDispatch); extern OSErr C_GetCompressionInfo(INTEGER compressionID, OSType format, INTEGER numChannels, INTEGER sampleSize, CompressionInfoPtr cp); -PASCAL_FUNCTION(GetCompressionInfo); +PASCAL_SUBTRAP(GetCompressionInfo, 0xA800, 0x07100018, SoundDispatch); extern OSErr C_SetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_FUNCTION(SetSoundPreference); +PASCAL_SUBTRAP(SetSoundPreference, 0xA800, 0x06340018, SoundDispatch); extern OSErr C_GetSoundPreference(OSType theType, Str255 name, Handle settings); -PASCAL_FUNCTION(GetSoundPreference); +PASCAL_SUBTRAP(GetSoundPreference, 0xA800, 0x06380018, SoundDispatch); extern OSErr C_SndGetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_FUNCTION(SndGetInfo); +PASCAL_SUBTRAP(SndGetInfo, 0xA800, 0x063C0018, SoundDispatch); extern OSErr C_SndSetInfo(SndChannelPtr chan, OSType selector, void *infoPtr); -PASCAL_FUNCTION(SndSetInfo); +PASCAL_SUBTRAP(SndSetInfo, 0xA800, 0x06400018, SoundDispatch); extern void StartSound(Ptr srec, LONGINT nb, ProcPtr comp); extern void StopSound(void); 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/include/StdFilePkg.h b/src/include/StdFilePkg.h index c7e8cb86..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. @@ -103,34 +106,36 @@ enum sfGetDialogID = -6042 }; +DISPATCHER_TRAP(Pack3, 0xA9EA, StackW); + 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); -PASCAL_FUNCTION(SFPPutFile); +PASCAL_SUBTRAP(SFPPutFile, 0xA9EA, 0x0003, Pack3); extern void C_SFPutFile(Point p, StringPtr prompt, StringPtr name, DlgHookProcPtr dh, SFReply *rep); -PASCAL_FUNCTION(SFPutFile); +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_FUNCTION(SFPGetFile); +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_FUNCTION(SFGetFile); +PASCAL_SUBTRAP(SFGetFile, 0xA9EA, 0x0002, Pack3); extern void C_StandardGetFile(FileFilterProcPtr filef, INTEGER numt, GUEST tl, StandardFileReply *replyp); -PASCAL_FUNCTION(StandardGetFile); +PASCAL_SUBTRAP(StandardGetFile, 0xA9EA, 0x0006, Pack3); extern void C_StandardPutFile(Str255 prompt, Str255 defaultname, StandardFileReply *replyp); -PASCAL_FUNCTION(StandardPutFile); +PASCAL_SUBTRAP(StandardPutFile, 0xA9EA, 0x0005, Pack3); extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, StandardFileReply *replyp, @@ -140,7 +145,7 @@ extern void C_CustomPutFile(Str255 prompt, Str255 defaultName, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_FUNCTION(CustomPutFile); +PASCAL_SUBTRAP(CustomPutFile, 0xA9EA, 0x0007, Pack3); extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, INTEGER numtypes, @@ -152,7 +157,7 @@ extern void C_CustomGetFile(FileFilterYDProcPtr filefilter, Ptr activeList, ActivateYDProcPtr activateproc, void *yourdatap); -PASCAL_FUNCTION(CustomGetFile); +PASCAL_SUBTRAP(CustomGetFile, 0xA9EA, 0x0008, Pack3); } #endif /* __STDFILE__ */ diff --git a/src/include/SysErr.h b/src/include/SysErr.h index 5bcd312c..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, @@ -21,6 +26,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/TextEdit.h b/src/include/TextEdit.h index c0ddbe95..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 @@ -533,6 +536,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); @@ -584,49 +589,49 @@ PASCAL_TRAP(TEStylNew, 0xA83E); extern void C_SetStylHandle(TEStyleHandle theHandle, TEHandle teh); -PASCAL_FUNCTION(SetStylHandle); +PASCAL_SUBTRAP(SetStylHandle, 0xA83D, 0x0005, TEDispatch); extern TEStyleHandle C_GetStylHandle(TEHandle teh); -PASCAL_FUNCTION(GetStylHandle); +PASCAL_SUBTRAP(GetStylHandle, 0xA83D, 0x0004, TEDispatch); extern StScrpHandle C_GetStylScrap(TEHandle teh); -PASCAL_FUNCTION(GetStylScrap); +PASCAL_SUBTRAP(GetStylScrap, 0xA83D, 0x0006, TEDispatch); extern void C_TEStylInsert(Ptr text, LONGINT length, StScrpHandle hST, TEHandle teh); -PASCAL_FUNCTION(TEStylInsert); +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_FUNCTION(TEGetPoint); +PASCAL_SUBTRAP(TEGetPoint, 0xA83D, 0x0008, TEDispatch); extern int32_t C_TEGetHeight(LONGINT endLine, LONGINT startLine, TEHandle teh); -PASCAL_FUNCTION(TEGetHeight); +PASCAL_SUBTRAP(TEGetHeight, 0xA83D, 0x0009, TEDispatch); extern void C_TEGetStyle(INTEGER offset, TextStyle *theStyle, GUEST *lineHeight, GUEST *fontAscent, TEHandle teh); -PASCAL_FUNCTION(TEGetStyle); +PASCAL_SUBTRAP(TEGetStyle, 0xA83D, 0x0003, TEDispatch); extern void C_TEStylPaste(TEHandle teh); -PASCAL_FUNCTION(TEStylPaste); +PASCAL_SUBTRAP(TEStylPaste, 0xA83D, 0x0000, TEDispatch); extern void C_TESetStyle(INTEGER mode, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(TESetStyle); +PASCAL_SUBTRAP(TESetStyle, 0xA83D, 0x0001, TEDispatch); extern void C_TEReplaceStyle(INTEGER mode, TextStyle *oldStyle, TextStyle *newStyle, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(TEReplaceStyle); +PASCAL_SUBTRAP(TEReplaceStyle, 0xA83D, 0x0002, TEDispatch); extern BOOLEAN C_TEContinuousStyle(GUEST *modep, TextStyle *thestyle, TEHandle teh); -PASCAL_FUNCTION(TEContinuousStyle); +PASCAL_SUBTRAP(TEContinuousStyle, 0xA83D, 0x000A, TEDispatch); extern void C_SetStylScrap(LONGINT start, LONGINT stop, StScrpHandle newstyles, BOOLEAN redraw, TEHandle teh); -PASCAL_FUNCTION(SetStylScrap); +PASCAL_SUBTRAP(SetStylScrap, 0xA83D, 0x000B, TEDispatch); extern void C_TECustomHook(INTEGER sel, GUEST *addr, TEHandle teh); -PASCAL_FUNCTION(TECustomHook); +PASCAL_SUBTRAP(TECustomHook, 0xA83D, 0x000C, TEDispatch); extern LONGINT C_TENumStyles(LONGINT start, LONGINT stop, TEHandle teh); -PASCAL_FUNCTION(TENumStyles); +PASCAL_SUBTRAP(TENumStyles, 0xA83D, 0x000D, TEDispatch); extern void C_TEInit(void); PASCAL_TRAP(TEInit, 0xA9CC); @@ -663,6 +668,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, 0x000E, TEDispatch); } #endif /* _TEXTEDIT_H_ */ diff --git a/src/include/TimeMgr.h b/src/include/TimeMgr.h index 24e38328..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 @@ -20,7 +24,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/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 eea0d66a..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 { @@ -32,10 +37,16 @@ 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); +REGISTER_TRAP2(VInstall, 0xA033, D0(A0)); +extern OSErr VRemove(VBLTaskPtr vtaskp); +REGISTER_TRAP2(VRemove, 0xA034, D0(A0)); + 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); +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/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 d2481fe5..122b2358 100644 --- a/src/include/rsys/adb.h +++ b/src/include/rsys/adb.h @@ -5,12 +5,17 @@ * 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); +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/api-module.h b/src/include/rsys/api-module.h new file mode 100644 index 00000000..7bac0d05 --- /dev/null +++ b/src/include/rsys/api-module.h @@ -0,0 +1,23 @@ +// 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_CONCAT1D(A,B) defined(A##B) +#define PREPROCESSOR_CONCATD(A,B) PREPROCESSOR_CONCAT1D(A,B) + +#undef TRAP_INSTANTIATION + +#if PREPROCESSOR_CONCATD(INSTANTIATE_TRAPS_, MODULE_NAME) +#define TRAP_INSTANTIATION DEFINE + +#include +#else +#define TRAP_INSTANTIATION EXTERN +#endif + +#undef MODULE_NAME 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/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/cfm.h b/src/include/rsys/cfm.h index f60f60f1..d359496f 100644 --- a/src/include/rsys/cfm.h +++ b/src/include/rsys/cfm.h @@ -2,20 +2,20 @@ #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 { -enum -{ - kUnresolvedCFragSymbolAddress = 0 -}; +const std::nullptr_t kUnresolvedCFragSymbolAddress = nullptr; struct cfrg_resource_t { @@ -45,8 +45,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; @@ -102,12 +102,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 { @@ -115,6 +116,8 @@ struct MemFragment GUEST address; GUEST length; GUEST inPlace; + GUEST reservedA; + GUEST reservedB; }; struct DiskFragment @@ -131,6 +134,7 @@ struct SegmentedFragment GUEST fileSpec; GUEST rsrcType; GUEST rsrcID; + GUEST reservedA; }; typedef struct FragmentLocator @@ -149,25 +153,27 @@ 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; +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; +typedef uint8_t 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); @@ -181,9 +187,8 @@ struct section_info_t GUEST start; 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 perms; + GUEST pad[3];/* TODO: verifying that it works this way on a Mac. */ }; typedef struct CFragConnection @@ -235,30 +240,34 @@ typedef CFragClosure_t *CFragClosureID; struct map_entry_t { - GUEST_STRUCT; const char *symbol_name; 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); +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/common.h b/src/include/rsys/common.h index 82bd8c65..50da8d16 100644 --- a/src/include/rsys/common.h +++ b/src/include/rsys/common.h @@ -5,23 +5,21 @@ #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 #endif #include "rsys/macros.h" -#include "rsys/types.h" +#include "rsys/functions.h" +#include "rsys/traps.h" #include "rsys/mactype.h" #include "rsys/byteswap.h" #include -#include "rsys/pascal.h" #include "ExMacTypes.h" #include "rsys/slash.h" #include "rsys/error.h" @@ -29,11 +27,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 f72dbfbe..6e5e41c0 100644 --- a/src/include/rsys/ctl.h +++ b/src/include/rsys/ctl.h @@ -15,7 +15,9 @@ #include "rsys/mman.h" #include "rsys/cquick.h" -#include "rsys/pstuff.h" + +#define MODULE_NAME rsys_ctl +#include namespace Executor { @@ -43,7 +45,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))) @@ -58,10 +60,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 +74,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 +167,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/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/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/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/emustubs.h b/src/include/rsys/emustubs.h index 603b98ff..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 @@ -58,153 +65,44 @@ 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); -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 __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); -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); -extern syn68k_addr_t _Key1Trans(syn68k_addr_t ignoreme, void **ignoreme2); -extern syn68k_addr_t _Key2Trans(syn68k_addr_t ignoreme, void **ignoreme2); -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); -extern syn68k_addr_t _PhysicalGestalt(syn68k_addr_t ignoreme, void **ignoreme2); -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(Unimplemented, 0xA89F); +RAW_68K_TRAP(SwapMMUMode, 0xA05D); +RAW_68K_TRAP(Launch, 0xA9F2); +RAW_68K_TRAP(Chain, 0xA9F3); +RAW_68K_TRAP(FInitQueue, 0xA016); +RAW_68K_TRAP(InitZone, 0xA019); +RAW_68K_TRAP(PostEvent, 0xA02F); +RAW_68K_TRAP(SlotManager, 0xA06E); +RAW_68K_TRAP(EqualString, 0xA03C); +RAW_68K_TRAP(DrvrInstall, 0xA03D); +RAW_68K_TRAP(DrvrRemove, 0xA03E); +RAW_68K_TRAP(GetTrapAddress, 0xA146); +RAW_68K_TRAP(SetTrapAddress, 0xA047); +RAW_68K_TRAP(RelString, 0xA050); +RAW_68K_TRAP(UprString, 0xA054); +RAW_68K_TRAP(StripAddress, 0xA055); +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_TRAP(WackyQD32Trap, 0xAB03); +RAW_68K_FUNCTION(Key1Trans); +RAW_68K_FUNCTION(Key2Trans); +RAW_68K_TRAP(Fix2X, 0xA843); +RAW_68K_TRAP(Frac2X, 0xA845); +RAW_68K_TRAP(SCSIDispatch, 0xA815); +RAW_68K_TRAP(IMVI_LowerText, 0xA056); +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); } #endif diff --git a/src/include/rsys/everything.h b/src/include/rsys/everything.h index f50f33a2..69291361 100644 --- a/src/include/rsys/everything.h +++ b/src/include/rsys/everything.h @@ -1,49 +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 +#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 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 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 new file mode 100644 index 00000000..1600b7ac --- /dev/null +++ b/src/include/rsys/functions.h @@ -0,0 +1,84 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "rsys/trapglue.h" +#include + +namespace Executor +{ + +namespace callconv +{ +class Pascal { }; +class Raw { }; + +template +class Register { }; +template struct A; +template struct D; + +using A0 = A<0>; +using A1 = A<1>; +using A2 = A<2>; +using D0 = D<0>; +using D1 = D<1>; +using D2 = D<2>; + +struct D0HighWord; +struct D0LowWord; + +template struct TrapBit; +template struct Out; +template struct InOut; + +template struct ReturnMemErr; +struct CCFromD0; + +struct ClearD0; +struct SaveA1D1D2; +struct MoveA1ToA0; +} +using namespace callconv; + + +struct OpaqueUntyped68KProc; +typedef OpaqueUntyped68KProc* ProcPtr; + +template +struct UPP {}; + +template +struct UPP +{ + void *ptr; + + constexpr UPP() = default; + constexpr UPP(std::nullptr_t) + : ptr(nullptr) + { + } + explicit constexpr UPP(void *ptr) + : ptr(ptr) + { + } + explicit constexpr UPP(intptr_t ptr) + : ptr((void*)ptr) + { + } + + template + explicit operator T *() const { return (T*)ptr; } + explicit operator ProcPtr() const { return (ProcPtr)ptr; } + + explicit operator bool() const { return ptr != nullptr; } + bool operator==(UPP other) const { return ptr == other.ptr; } + bool operator!=(UPP other) const { return ptr != other.ptr; } + + Ret operator()(Args... args) const; +}; + +} diff --git a/src/include/rsys/functions.impl.h b/src/include/rsys/functions.impl.h new file mode 100644 index 00000000..49d8de50 --- /dev/null +++ b/src/include/rsys/functions.impl.h @@ -0,0 +1,414 @@ + +#pragma once + +#include +#include +#include + +#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(GUEST) + 1) & ~1; + *(ptr_from_longint*>(EM_A7)) = RM(x); + } + template + T pop() + { + T retval = MR(*ptr_from_longint*>(EM_A7)); + EM_A7 += (sizeof(GUEST) + 1) & ~1; + return retval; + } +} +} + +namespace callfrom68K +{ + template + struct Invoker; + + template struct List; + + 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; + } + }; + + template + struct Invoker + { + static syn68k_addr_t invokeFrom68K(syn68k_addr_t addr, void * refcon) + { + return fptr(addr, refcon); + } + }; + + template + struct RegInvoker; + + template + struct RegInvoker, List<>, List<>> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + return fptr(args...); + } + }; + + template + struct RegInvoker, List, List> + { + static Ret invokeFrom68K(syn68k_addr_t addr, void *refcon, DoneArgs... args) + { + CC newarg; + return RegInvoker,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 = RegInvoker, 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(); + RegInvoker, 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 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 + 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...); +} + +template +Ret GuestWrapperBase>::operator()(Args... args) +{ + return (this->get())(args...); +} + +} diff --git a/src/include/rsys/gestalt.h b/src/include/rsys/gestalt.h index 6c586303..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) @@ -54,7 +60,8 @@ 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); extern void gestalt_set_memory_size(uint32_t size); 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/include/rsys/itm.h b/src/include/rsys/itm.h index 2af50c0e..5a410a3e 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 @@ -131,12 +130,11 @@ extern void dialog_draw_item(DialogPtr dp, itmp itemp, int itemno); #define ITEM_DATA(itemp) \ ((GUEST *)((itemp) + 1)) -#define BUMPIP(ip) \ - ((void)({ \ - (ip) = (itmp)((char *)(ip) + ITEM_LEN(ip)); \ - })) +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/list.h b/src/include/rsys/list.h index da7e6121..3dfa2ca4 100644 --- a/src/include/rsys/list.h +++ b/src/include/rsys/list.h @@ -12,17 +12,21 @@ #include "MemoryMgr.h" #include "ResourceMgr.h" #include "rsys/mman.h" -#include "rsys/pstuff.h" + +#define MODULE_NAME rsys_list +#include + 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/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/lowglobals.h b/src/include/rsys/lowglobals.h index baa5544c..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. @@ -61,9 +62,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 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 580e2c30..8365c37c 100644 --- a/src/include/rsys/mactype.h +++ b/src/include/rsys/mactype.h @@ -7,11 +7,13 @@ * */ - -#include "rsys/macros.h" -#include "rsys/types.h" +#include "host-arch-config.h" +#include #include -#include /* for ROMlib_offset */ +#include + +#include "rsys/functions.h" +#include "rsys/traps.h" #ifndef __cplusplus #error C++ required @@ -25,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. @@ -56,10 +65,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 @@ -78,24 +83,27 @@ inline uint32_t SwapTyped(uint32_t x) { return swap32(x); } inline int32_t SwapTyped(int32_t x) { return swap32((uint32_t)x); } #endif -// USE_PACKED_HIDDENVALUE - control which one of two versions -// of template struct/union HiddenValue to use. +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); +} -//#define USE_PACKED_HIDDENVALUE +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); +} 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; @@ -103,20 +111,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 } }; @@ -151,6 +151,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); @@ -187,18 +197,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 @@ -210,6 +214,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 @@ -329,16 +343,7 @@ bool operator!=(GuestWrapper a, std::nullptr_t) return a; } -#define GUEST_STRUCT \ - struct is_guest_struct \ - { \ - } - -struct Point -{ - INTEGER v; - INTEGER h; -}; +#define GUEST_STRUCT struct is_guest_struct {} template<> struct GuestWrapper @@ -371,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 @@ -461,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) @@ -476,9 +505,61 @@ 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(); + return WrappedType(SYN68K_TO_US_CHECK0_CHECKNEG1((uint32_t)swap32(rawp))); + } + + void set(WrappedType ptr) + { + this->raw(swap32(US_TO_SYN68K_CHECK0_CHECKNEG1(ptr.ptr))); + } + + RawGuestType raw() const + { + return p.raw(); + } + + void raw(RawGuestType x) + { + 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); // definition in rsys/functions.impl.h to reduce dependencies +}; + +template +GUEST> RM(UPP p) +{ + return GUEST>::fromHost(p); +} + +template +UPP MR(GuestWrapper> p) +{ + return p.get(); +} + } #endif /* _MACTYPE_H_ */ diff --git a/src/include/rsys/menu.h b/src/include/rsys/menu.h index c53a3427..634d742a 100644 --- a/src/include/rsys/menu.h +++ b/src/include/rsys/menu.h @@ -12,7 +12,9 @@ #include "MenuMgr.h" #include "ResourceMgr.h" #include "rsys/mman.h" -#include "rsys/pstuff.h" + +#define MODULE_NAME rsys_menu +#include namespace Executor { @@ -42,7 +44,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 +212,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/mixed_mode.h b/src/include/rsys/mixed_mode.h index 77aef38b..3a61f377 100644 --- a/src/include/rsys/mixed_mode.h +++ b/src/include/rsys/mixed_mode.h @@ -2,9 +2,15 @@ #define _mixed_mode_h_ #include +#include +#include "ExMacTypes.h" + +#define MODULE_NAME rsys_mixed_mode +#include + namespace Executor { -typedef uint8 ISAType; +typedef uint8_t ISAType; typedef uint16_t CallingConventionType; typedef uint32_t ProcInfoType; typedef uint16_t RegisterSelectorType; @@ -29,13 +35,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 +53,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; }; @@ -137,17 +143,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/include/rsys/mman.h b/src/include/rsys/mman.h index 794d3b05..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); @@ -66,9 +64,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 @@ -119,23 +114,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 +138,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 +151,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 +166,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 +183,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 +203,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 +229,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 +258,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 +289,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 +322,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 +357,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 +395,7 @@ class TheZoneGuard _hp->f13 = _v13; \ _hp->f14 = _v14; \ _hp->f15 = _v15; \ - }) + } while(0) class HLockGuard { 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/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/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/osutil.h b/src/include/rsys/osutil.h index 1ecad035..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, @@ -20,6 +24,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/pascal.h b/src/include/rsys/pascal.h deleted file mode 100644 index 21f5a933..00000000 --- a/src/include/rsys/pascal.h +++ /dev/null @@ -1,233 +0,0 @@ -#ifndef PASCAL_H_ -#define PASCAL_H_ - -#include -#include -#include -#include "rsys/trapglue.h" -#include "rsys/mactype.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; -} - -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) - -template -struct UPP; - -template -struct UPP -{ - void *ptr; - - UPP() = default; - UPP(std::nullptr_t) - : ptr(nullptr) - { - } - explicit UPP(void *ptr) - : ptr(ptr) - { - } - - explicit operator void *() const { return ptr; } - - explicit operator bool() const { return ptr != nullptr; } - bool operator==(UPP other) const { return ptr == other.ptr; } - bool operator!=(UPP other) const { return ptr != other.ptr; } - - Ret operator()(Args... args) const - { - return (Ret)CToPascalCall(ptr, ctop(), args...); - } -}; - -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 \ No newline at end of file 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/print.h b/src/include/rsys/print.h index 5e5d0d11..87c7de09 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" @@ -19,6 +18,10 @@ extern win_printp_t ROMlib_wp; #endif + +#define MODULE_NAME rsys_print +#include + namespace Executor { enum @@ -222,12 +225,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 +234,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 deleted file mode 100644 index 15fcbd52..00000000 --- a/src/include/rsys/pstuff.h +++ /dev/null @@ -1,112 +0,0 @@ -#if !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..dbae0368 100644 --- a/src/include/rsys/quick.h +++ b/src/include/rsys/quick.h @@ -8,12 +8,6 @@ */ -#include "rsys/pstuff.h" - -/* 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/refresh.h b/src/include/rsys/refresh.h index 4757a191..74400cf5 100644 --- a/src/include/rsys/refresh.h +++ b/src/include/rsys/refresh.h @@ -1,10 +1,17 @@ #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); 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/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/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]; diff --git a/src/include/rsys/segment.h b/src/include/rsys/segment.h index 140307dc..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); @@ -25,7 +24,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/include/rsys/soundopts.h b/src/include/rsys/soundopts.h index 7a220114..d7734fac 100644 --- a/src/include/rsys/soundopts.h +++ b/src/include/rsys/soundopts.h @@ -2,10 +2,12 @@ #define __RSYS_SOUNDOPTS__ #include "SoundMgr.h" -#include "rsys/pstuff.h" /* to get extern for `ROMlib_PretendSound' */ #include "rsys/prefs.h" +#define MODULE_NAME rsys_soundopts +#include + namespace Executor { typedef enum { @@ -40,6 +42,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 */ @@ -55,10 +58,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; @@ -66,10 +74,10 @@ typedef struct _ModifierStub SignedByte hState; snd_time current_start; snd_time time; - GUEST prev_samp; + 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) @@ -102,6 +110,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..a62c26e0 100644 --- a/src/include/rsys/stdfile.h +++ b/src/include/rsys/stdfile.h @@ -1,13 +1,15 @@ #if !defined(__RSYS_STDFILE__) #define __RSYS_STDFILE__ -#include "rsys/pstuff.h" #include "FileMgr.h" #include "EventMgr.h" #include "ControlMgr.h" #include "DialogMgr.h" #include "rsys/file.h" +#define MODULE_NAME rsys_stdfile +#include + namespace Executor { /* @@ -38,7 +40,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 +60,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..7273b09e 100644 --- a/src/include/rsys/tesave.h +++ b/src/include/rsys/tesave.h @@ -5,10 +5,14 @@ * Copyright 1986, 1989, 1990 by Abacus Research and Development, Inc. * All rights reserved. * - */ -#include "rsys/pstuff.h" +#include "ExMacTypes.h" +#include "QuickDraw.h" +#include "TextEdit.h" + +#define MODULE_NAME rsys_tesave +#include namespace Executor { @@ -95,6 +99,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..c799ae84 100644 --- a/src/include/rsys/trapglue.h +++ b/src/include/rsys/trapglue.h @@ -1,33 +1,10 @@ #if !defined(__TRAPGLUE__) #define __TRAPGLUE__ +#include namespace Executor { -typedef struct -{ - void *wheretogo; - uint64_t magic; -} ptocblock_t; - -typedef struct -{ - ptocblock_t ptoc; - syn68k_addr_t orig; -} toolstuff_t; - -typedef struct -{ - syn68k_addr_t orig; - void *func; -} osstuff_t; - -typedef struct -{ - ptocblock_t ptoc; - void *orig; -} pstuff_t; - #define TOOLBIT (0x0800) #define NTOOLENTRIES (0x400) #define NOSENTRIES (0x100) @@ -35,12 +12,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, ...); -extern toolstuff_t toolstuff[NTOOLENTRIES]; } #endif diff --git a/src/include/rsys/traps.h b/src/include/rsys/traps.h new file mode 100644 index 00000000..3d7e5b72 --- /dev/null +++ b/src/include/rsys/traps.h @@ -0,0 +1,206 @@ +#pragma once + +#include +#include +#include + +#include + +namespace Executor +{ + +namespace traps +{ + +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; + static void initAll(); + private: + DeferredInit *next; + static DeferredInit *first, *last; + }; +} + +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); + virtual void init() override; +private: + GenericDispatcherTrap& dispatcher; +}; + +#define EXTERN_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + extern Executor::traps::__VA_ARGS__ NAME +#define EXTERN_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + extern Executor::traps::DispatcherTrap NAME +#define DEFINE_FUNCTION_WRAPPER(NAME, FPTR, INIT, ...) \ + Executor::traps::__VA_ARGS__ NAME INIT; \ + template class Executor::traps::__VA_ARGS__; +#define DEFINE_DISPATCHER_TRAP(NAME, TRAP, SELECTOR) \ + Executor::traps::DispatcherTrap NAME { #NAME, TRAP } + +#ifndef TRAP_INSTANTIATION +#define TRAP_INSTANTIATION EXTERN +#endif + +#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) \ + 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 init(bool enableLogging); + +} +} diff --git a/src/include/rsys/traps.impl.h b/src/include/rsys/traps.impl.h new file mode 100644 index 00000000..9a4ed763 --- /dev/null +++ b/src/include/rsys/traps.impl.h @@ -0,0 +1,154 @@ +#pragma once + +#include +#include +#include + +#include +#include + +namespace Executor +{ +namespace traps +{ + +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; + } +}; + +} /* end namespace selectors */ + +template +WrappedFunction::WrappedFunction(const char* name) + : name(name) +{ +} + +template +void WrappedFunction::init() +{ + logging::namedThings[(void*) fptr] = name; + if(logging::enabled()) + guestFP = (UPP)SYN68K_TO_US(callback_install( + callfrom68K::Invoker::call, CallConv> + ::invokeFrom68K, nullptr)); + else + guestFP = (UPP)SYN68K_TO_US(callback_install( + callfrom68K::Invoker + ::invokeFrom68K, nullptr)); +} + +template +Ret TrapFunction::invokeViaTrapTable(Args... args) const +{ + return (UPP(SYN68K_TO_US(tableEntry())))(args...); +} + +template +void TrapFunction::init() +{ + WrappedFunction::init(); + originalFunction = US_TO_SYN68K(((void*)this->guestFP)); + assert(trapno); + assert(!tableEntry()); + tableEntry() = originalFunction; +} + +template +SubTrapFunction::SubTrapFunction(const char* name, GenericDispatcherTrap& dispatcher) + : WrappedFunction(name), dispatcher(dispatcher) +{ +} + +template +void SubTrapFunction::init() +{ + logging::namedThings[(void*) fptr] = this->name; + if(logging::enabled()) + dispatcher.addSelector(selector, callfrom68K::Invoker::call, CallConv> + ::invokeFrom68K); + else + dispatcher.addSelector(selector, callfrom68K::Invoker + ::invokeFrom68K); +} + +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 0x" << std::hex << sel << " for trap " << self->name << std::endl; + std::abort(); + } +} + +template +void DispatcherTrap::addSelector(uint32_t sel, callback_handler_t handler) +{ + selectors[sel & SelectorConvention::selectorMask] = handler; +} + +template +void DispatcherTrap::init() +{ + if(trapno) + { + ProcPtr guestFP = (ProcPtr)SYN68K_TO_US(callback_install(&invokeFrom68K, this)); + if(trapno & TOOLBIT) + { + tooltraptable[trapno & 0x3FF] = US_TO_SYN68K(((void*)guestFP)); + } + else + { + ostraptable[trapno & 0xFF] = US_TO_SYN68K(((void*)guestFP)); + } + } +} + +} +} diff --git a/src/include/rsys/types.h b/src/include/rsys/types.h deleted file mode 100644 index 87faa8b0..00000000 --- a/src/include/rsys/types.h +++ /dev/null @@ -1,43 +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 - -#endif /* !_RSYS_TYPES_H_ */ diff --git a/src/include/rsys/vbl.h b/src/include/rsys/vbl.h index 683d4e5a..66a2530e 100644 --- a/src/include/rsys/vbl.h +++ b/src/include/rsys/vbl.h @@ -1,9 +1,15 @@ #if !defined(__RSYS_VBL__) #define __RSYS_VBL__ +#include + +#define MODULE_NAME rsys_vbl +#include + namespace Executor { extern void C_ROMlib_vcatch(void); +PASCAL_FUNCTION(ROMlib_vcatch); } #endif /* !defined(__RSYS_VBL__) */ 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/wind.h b/src/include/rsys/wind.h index d3777098..ba2c0828 100644 --- a/src/include/rsys/wind.h +++ b/src/include/rsys/wind.h @@ -15,7 +15,9 @@ #include #include "rsys/mman.h" -#include "rsys/pstuff.h" + +#define MODULE_NAME rsys_wind +#include namespace Executor { @@ -32,17 +34,20 @@ 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); 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(); +bool ROMlib_rootless_drawdesk(RgnHandle desk); typedef void (*draghookp)(void); @@ -51,8 +56,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/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 b6ccc45a..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; @@ -4820,7 +4820,7 @@ static map_entry_t "TestControl", TestControl_PC, }, { - "InitEditionPackVersion", C_InitEditionPack, + "InitEditionPackVersion", C_InitEditionPackVersion, }, { "InvertRoundRect", C_InvertRoundRect, @@ -6049,7 +6049,7 @@ static map_entry_t "AllocCursor", C_AllocCursor, }, { - "RestoreClutDevice", C_RestoreClutDevice, + "RestoreDeviceClut", C_RestoreDeviceClut, }, { "ResizePalette", C_ResizePalette, diff --git a/src/launch.cpp b/src/launch.cpp index d40cfaf8..9cedeaa6 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" @@ -79,6 +77,8 @@ #include "rsys/version.h" #include "rsys/appearance.h" +#include "rsys/logging.h" + using namespace Executor; static bool ppc_launch_p = false; @@ -369,7 +369,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; @@ -379,13 +379,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); @@ -729,7 +729,7 @@ static void reset_low_globals(void) * globals beforehand */ - GUEST saveDABeeper; + GUEST saveDABeeper; GUEST saveSysZone; GUEST saveTicks; GUEST saveBootDrive; @@ -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(&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 @@ -1300,6 +1296,7 @@ Executor::NewLaunch(StringPtr fName_arg, INTEGER vRefNum_arg, LaunchParamBlockRe } else longjmp(buf, 1); + logging::resetNestingLevel(); retval = noErr; reset_adb_vector(); diff --git a/src/listAccess.cpp b/src/listAccess.cpp index 193c3131..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; @@ -89,7 +90,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,14 +105,12 @@ 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 { ROMlib_hook(list_cmpnumber); - HOOKSAVEREGS(); - retval = CToPascalCall((void *)fp, ctop(&C_IUMagString), p1, p2, l1, l2); - HOOKRESTOREREGS(); + retval = fp(p1, p2, l1, l2); } return retval; } @@ -130,7 +129,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 3b4b4f19..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; @@ -264,14 +265,12 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)lp, ctop(&C_ldef0), mess, sel, rp, cell, off, len, lhand); - HOOKRESTOREREGS(); + lp(mess, sel, rp, cell, off, len, lhand); } } } diff --git a/src/listMouse.cpp b/src/listMouse.cpp index 6886ce92..a531ea57 100644 --- a/src/listMouse.cpp +++ b/src/listMouse.cpp @@ -14,17 +14,15 @@ #include "rsys/cquick.h" #include "rsys/list.h" -#include "rsys/pstuff.h" #include "rsys/hook.h" +#include 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 void scrollbyvalues(ListHandle); static void rect2value(Rect *in, Rect *butnotin, INTEGER value, ListHandle list, BOOLEAN hiliteempty); @@ -176,16 +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); - HOOKSAVEREGS(); - retval = CToPascalCall((void *)fp, ctop(&C_Button)); - HOOKRESTOREREGS(); + retval = fp(); return retval; } @@ -449,11 +443,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/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; +} diff --git a/src/main.cpp b/src/main.cpp index c5fae04e..ff89795a 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" @@ -65,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" @@ -113,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; @@ -141,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 @@ -355,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 @@ -376,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; @@ -556,8 +543,6 @@ static void setstartdir(char *argv0) #endif /* defined(MSDOS) */ } -BOOLEAN Executor::ROMlib_startupscreen = true; - char *Executor::program_name; static syn68k_addr_t @@ -959,8 +944,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 +973,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) { @@ -1042,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); @@ -1355,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 @@ -1429,7 +1406,10 @@ int main(int argc, char **argv) } } - filltables(); + if(opt_val(common_db, "logtraps", NULL)) + Executor::traps::init(true); + else + Executor::traps::init(false); l = ostraptable[0x0FC]; ((unsigned char *)jmpl_to_ResourceStub)[2] = l >> 24; @@ -1437,7 +1417,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); @@ -1638,7 +1618,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; @@ -1673,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/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/menu.cpp b/src/menu.cpp index 5a96060f..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; @@ -1645,16 +1646,15 @@ void Executor::ROMlib_menucall(INTEGER mess, MenuHandle themenu, Rect *menrect, mp = (menuprocp)STARH(defproc); - if(mp == P_mdef0) + if(mp == &mdef0) { - C_mdef0(mess, themenu, menrect, hit, which); + mdef0(mess, themenu, menrect, hit, which); } else { 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 +1673,14 @@ 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 == &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/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/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 diff --git a/src/mmansubr.cpp b/src/mmansubr.cpp index 98b0024c..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 @@ -970,9 +971,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/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..571a924d 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); @@ -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; @@ -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 da9ad36e..9ae6517d 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" @@ -36,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; @@ -66,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; @@ -81,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; @@ -97,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; @@ -111,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; @@ -272,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, @@ -280,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; @@ -342,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; @@ -702,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; @@ -751,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; @@ -805,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; @@ -855,7 +854,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"); @@ -902,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/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 0644f1c6..758eef97 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" @@ -28,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 @@ -234,7 +235,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) { @@ -503,9 +504,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,15 +522,13 @@ 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 { - HOOKSAVEREGS(); - retval = (TPPrDlg)CToPascalCall((void *)fp, ctop(&C_PrStlInit), hPrint); - HOOKRESTOREREGS(); + retval = fp(hPrint); } return retval; } @@ -540,20 +539,18 @@ 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 { - HOOKSAVEREGS(); - CToPascalCall((void *)fp, ctop(&C_ROMlib_myjobproc), prrecptr, item); - HOOKRESTOREREGS(); + fp((GrafPtr)prrecptr, item); } } BOOLEAN Executor::C_ROMlib_stlfilterproc( - DialogPeek dp, EventRecord *evt, GUEST *ith) + DialogPtr dlg, EventRecord *evt, GUEST *ith) { BOOLEAN retval; char *keyp; @@ -586,11 +583,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; @@ -608,7 +605,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; @@ -616,7 +613,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); @@ -647,7 +644,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; @@ -671,13 +668,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 @@ -809,7 +806,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); @@ -817,9 +814,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); } @@ -834,12 +831,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); @@ -849,12 +846,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); @@ -1013,13 +1010,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; @@ -1102,8 +1099,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 @@ -1135,10 +1132,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); @@ -1147,12 +1144,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)); @@ -1161,7 +1158,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..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" @@ -79,12 +78,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 +284,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 +324,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..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; @@ -119,14 +118,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/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; diff --git a/src/qBit.cpp b/src/qBit.cpp index 15f19af1..a423330d 100644 --- a/src/qBit.cpp +++ b/src/qBit.cpp @@ -75,11 +75,10 @@ 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] - != toolstuff[StdBits_TOOLTRAP_NUMBER].orig) + if(StdBits.isPatched()) warning_unexpected("_StdBits patched out!"); ROMlib_bogo_stdbits(src_bitmap, dst_bitmap, 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/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/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/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/qHooks.cpp b/src/qHooks.cpp index bc63a3f9..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; @@ -30,17 +31,15 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdText), bc, bufp, num, den); - HOOKRESTOREREGS(); + pp(bc, bufp, num, den); } else C_StdText(bc, bufp, num, den); @@ -50,15 +49,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdLine), p); - HOOKRESTOREREGS(); + pp(p); } else C_StdLine(p); @@ -67,15 +64,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdRect), v, rp); - HOOKRESTOREREGS(); + pp(v, rp); } else C_StdRect(v, rp); @@ -84,15 +79,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdOval), v, rp); - HOOKRESTOREREGS(); + pp(v, rp); } else C_StdOval(v, rp); @@ -101,15 +94,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdRRect), v, rp, ow, oh); - HOOKRESTOREREGS(); + pp(v, rp, ow, oh); } else C_StdRRect(v, rp, ow, oh); @@ -118,15 +109,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdArc), v, rp, starta, arca); - HOOKRESTOREREGS(); + pp(v, rp, starta, arca); } else C_StdArc(v, rp, starta, arca); @@ -135,15 +124,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdRgn), v, rh); - HOOKRESTOREREGS(); + pp(v, rh); } else C_StdRgn(v, rh); @@ -152,15 +139,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdPoly), v, rh); - HOOKRESTOREREGS(); + pp(v, rh); } else C_StdPoly(v, rh); @@ -170,15 +155,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdBits), bmp, srcrp, dstrp, mode, maskrh); - HOOKRESTOREREGS(); + pp(bmp, srcrp, dstrp, mode, maskrh); } else C_StdBits(bmp, srcrp, dstrp, mode, maskrh); @@ -187,15 +170,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdComment), kind, size, datah); - HOOKRESTOREREGS(); + pp(kind, size, datah); } else C_StdComment(kind, size, datah); @@ -210,13 +191,10 @@ 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); - HOOKSAVEREGS(); - retval = CToPascalCall((void *)pp, ctop(&C_StdTxMeas), bc, bufp, - nump, denp, fip); - HOOKRESTOREREGS(); + pp(bc, bufp, nump, denp, fip); } else retval = C_StdTxMeas(bc, bufp, nump, denp, fip); @@ -226,15 +204,13 @@ 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); - HOOKSAVEREGS(); - CToPascalCall((void *)pp, ctop(&C_StdPutPic), addr, count); - HOOKRESTOREREGS(); + pp(addr, count); } else C_StdPutPic(addr, count); 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 092c377a..52cc4980 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" @@ -25,32 +24,32 @@ 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) { PixMap temp_pm; - uint8 temp_fbuf[4]; + uint8_t temp_fbuf[4]; Rect src_rect, dst_rect; GrafPtr port = thePort; CTabHandle ctab; @@ -157,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; @@ -178,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/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/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/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/qPicstuff.cpp b/src/qPicstuff.cpp index c39cced9..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; @@ -38,7 +39,7 @@ using namespace Executor; */ static unsigned char *nextbytep; -static void (*procp)(Ptr, INTEGER); +static getPicProc_t procp; typedef void (*pfv)(); @@ -485,7 +486,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 +534,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; @@ -994,7 +995,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 +1007,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 +1027,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 +1046,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 +1060,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 +1075,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 +1175,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); @@ -1192,7 +1193,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 +1205,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) @@ -1217,7 +1218,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 @@ -1268,9 +1269,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; @@ -1318,7 +1319,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 +1347,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 @@ -1648,7 +1649,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 @@ -1750,8 +1751,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/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/qStandard.cpp b/src/qStandard.cpp index d897f144..10a88e73 100644 --- a/src/qStandard.cpp +++ b/src/qStandard.cpp @@ -6,23 +6,22 @@ #include "rsys/common.h" #include "QuickDraw.h" -#include "rsys/pstuff.h" 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..cca3fa25 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; @@ -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); @@ -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/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/qStdRgn.cpp b/src/qStdRgn.cpp index bb23755d..2cf961c0 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++) { @@ -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; @@ -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/refresh.cpp b/src/refresh.cpp index a4e526a8..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" @@ -91,7 +90,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 fe9e720e..62629604 100644 --- a/src/resGet.cpp +++ b/src/resGet.cpp @@ -19,8 +19,8 @@ #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 */ #include @@ -216,16 +216,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 +252,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 @@ -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/resOpen.cpp b/src/resOpen.cpp index deba15ab..23a39019 100644 --- a/src/resOpen.cpp +++ b/src/resOpen.cpp @@ -13,9 +13,9 @@ #include "rsys/glue.h" #include "rsys/mman.h" #include "rsys/file.h" -#include "rsys/pstuff.h" #include "rsys/osevent.h" #include "rsys/prefs.h" +#include "rsys/functions.impl.h" using namespace Executor; @@ -76,7 +76,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 { @@ -113,15 +113,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 @@ -288,15 +280,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/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 944a64b6..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); } @@ -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; + } +} + diff --git a/src/segment.cpp b/src/segment.cpp index f402ddb9..c7176f92 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); @@ -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'; @@ -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); 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 5c54ab4c..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; @@ -142,7 +143,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 +198,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); @@ -479,7 +480,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; @@ -514,7 +515,6 @@ static void dumpcmd(SndCommand *cmdp) } #endif -typedef BOOLEAN (*snthfp)(SndChannelPtr, SndCommand *, ModifierStubPtr); BOOLEAN callasynth(SndChannelPtr chanp, SndCommand *cmdp, ModifierStubPtr mp) { @@ -522,7 +522,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) @@ -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..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; @@ -154,7 +155,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..fdfaa2d5 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" @@ -71,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 { @@ -170,7 +171,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 +1071,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 +1212,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 +1228,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 +2193,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 +2463,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 +2472,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 +2523,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/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/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..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" @@ -133,14 +132,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..a9e2dfcf 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) { @@ -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/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/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/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..be82788a --- /dev/null +++ b/src/trap_instances/trap_instances.cmake @@ -0,0 +1,62 @@ +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/SpeechManager.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/trapinfo b/src/trapinfo index 22780d9b..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 @@ -2476,7 +2476,7 @@ 0xA99D GetIndResource 0xA99E CountTypes 0xA99F GetIndType -0xA9A0 __GetResource +0xA9A0 GetResource 0xA9A1 GetNamedResource 0xA9A2 LoadResource 0xA9A3 ReleaseResource @@ -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 diff --git a/src/traps.cpp b/src/traps.cpp new file mode 100644 index 00000000..e2df2c4b --- /dev/null +++ b/src/traps.cpp @@ -0,0 +1,57 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include + +using namespace Executor; + +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) + first = last = this; + else + { + last->next = this; + last = this; + } +} + +void traps::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 traps::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/vbl.cpp b/src/vbl.cpp index 5a4ab5fc..c89fcc63 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" @@ -137,7 +136,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 */ @@ -167,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 */ @@ -196,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)) { 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))); } 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 1b102b38..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; @@ -122,6 +123,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); @@ -132,7 +135,11 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, PenPat(LM(DragPattern)); PenMode(notPatXor); if((drawn = PtInRect(p, slop))) + { PaintRgn(rgn); /* was Frame */ + if(onDesktop) + ROMlib_rootless_update(rgn); + } while(!GetOSEvent(mUpMask, &ev)) { GlobalToLocal(&ev.where); @@ -155,6 +162,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); + if(onDesktop) + ROMlib_rootless_update(rgn); p.h = ep.h; p.v = ep.v; } @@ -162,7 +171,11 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, else { if(drawn) + { PaintRgn(rgn); + if(onDesktop) + ROMlib_rootless_update(nullptr); + } drawn = false; } if(proc) @@ -192,7 +205,11 @@ LONGINT Executor::C_DragTheRgn(RgnHandle rgn, Point startp, Rect *limit, PenMode(notPatXor); } if(drawn) + { PaintRgn(rgn); + if(onDesktop) + ROMlib_rootless_update(nullptr); + } SetPenState(&ps); DisposeRgn(rh); if(drawn) @@ -303,15 +320,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)); + } } } } @@ -512,10 +532,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 @@ -526,8 +546,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 diff --git a/src/windRootless.cpp b/src/windRootless.cpp index f881b089..83b4e2a5 100644 --- a/src/windRootless.cpp +++ b/src/windRootless.cpp @@ -7,14 +7,17 @@ using namespace Executor; - static std::vector rootlessMenus; -void Executor::ROMlib_rootless_update() +// #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();//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)) @@ -25,11 +28,16 @@ void Executor::ROMlib_rootless_update() } } 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); } + if(extra) + UnionRgn(rgn, extra, rgn); + vdriver_set_rootless_region(rgn); DisposeRgn(tmp); DisposeRgn(rgn); @@ -38,7 +46,9 @@ void Executor::ROMlib_rootless_update() 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); @@ -50,9 +60,23 @@ 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; 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 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) { 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); diff --git a/util/scanuniversalheaders.pl b/util/scanuniversalheaders.pl new file mode 100644 index 00000000..0075d0fc --- /dev/null +++ b/util/scanuniversalheaders.pl @@ -0,0 +1,172 @@ +#!/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); + 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 = ) { + print OUT $l; + if($l =~ /^.*\bC_([A-Za-z0-9]+)\b\(.*;/) { + $name = $1; + 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($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"; + } + } + + } + } + } + close(OUT); + close(INCLUDE); + system "mv temp.h $f"; +} diff --git a/util/transformrawtraps.pl b/util/transformrawtraps.pl new file mode 100644 index 00000000..76d0ad01 --- /dev/null +++ b/util/transformrawtraps.pl @@ -0,0 +1,50 @@ +#!/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; + $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; + } + } else { + print OUT $l; + } +} +close(OUT); +close(INCLUDE); +system "mv temp.h $f"; 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"; +}