├── .gitignore ├── custom ├── libraries.yaml ├── cfmwrapper.h ├── NavServicesAvailable.c ├── cfmwrapper.c └── Multiverse.r ├── uncrustify.cfg ├── defs ├── AppleTalk.yaml ├── Components.yaml ├── Displays.yaml ├── BinaryDecimal.yaml ├── Package.yaml ├── SysErr.yaml ├── ShutDown.yaml ├── DiskInit.yaml ├── TimeMgr.yaml ├── NotifyMgr.yaml ├── VDriver.yaml ├── PPC.yaml ├── StartMgr.yaml ├── DeskMgr.yaml ├── VRetraceMgr.yaml ├── Disk.yaml ├── ADB.yaml ├── ScrapMgr.yaml ├── CommTool.yaml ├── MPW.yaml ├── EventMgr.yaml ├── SegmentLdr.yaml ├── ToolboxEvent.yaml ├── SoundDvr.yaml ├── LowMem.yaml ├── AliasMgr.yaml ├── QuickTime.yaml ├── MacTypes.yaml ├── Serial.yaml ├── ProcessMgr.yaml ├── MixedMode.yaml ├── HelpMgr.yaml ├── CodeFragments.yaml ├── DeviceMgr.yaml ├── Finder.yaml ├── StdFilePkg.yaml ├── OSEvent.yaml ├── SpeechManager.yaml ├── ToolboxUtil.yaml └── Gestalt.yaml ├── COPYING ├── README.md ├── .clang-format ├── make-multiverse.rb ├── multiversal.schema.json └── generator.rb /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | .vscode 3 | -------------------------------------------------------------------------------- /custom/libraries.yaml: -------------------------------------------------------------------------------- 1 | Navigation.far: 2 | - Navigation 3 | - NavServicesAvailable 4 | 5 | -------------------------------------------------------------------------------- /uncrustify.cfg: -------------------------------------------------------------------------------- 1 | indent_align_assign=true 2 | nl_after_semicolon=true 3 | nl_after_brace_open=true 4 | input_tab_size=4 5 | output_tab_size=4 6 | indent_columns=4 7 | code_width=79 8 | indent_with_tabs=0 9 | nl_enum_brace=add 10 | nl_struct_brace=add 11 | nl_union_brace=add 12 | nl_fdef_brace=add 13 | -------------------------------------------------------------------------------- /custom/cfmwrapper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | typedef struct 6 | { 7 | ConnectionID conn; 8 | UniversalProcPtr proc; 9 | } __cfmsym; 10 | 11 | OSErr __cfmwrapper_connect(__cfmsym *si, const unsigned char *library, const unsigned char *name, uint32_t procInfo); 12 | void __cfmwrapper_disconnect(__cfmsym *si); -------------------------------------------------------------------------------- /custom/NavServicesAvailable.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | pascal Boolean NavServicesAvailable() 4 | { 5 | if(*(short*) 0x028E /* ROM85 */ <= 0) 6 | return false; 7 | if(GetToolTrapAddress(_CodeFragmentDispatch) == GetToolTrapAddress(_Unimplemented)) 8 | return false; 9 | 10 | return NavServicesCanRun(); 11 | } 12 | -------------------------------------------------------------------------------- /defs/AppleTalk.yaml: -------------------------------------------------------------------------------- 1 | - lowmem: 2 | name: PortBUse 3 | type: Byte 4 | address: 0x291 5 | comment: | 6 | AppleTalk IMII-305 (true-b); 7 | 8 | # #### 9 | 10 | - lowmem: 11 | name: ABusVars 12 | type: Ptr 13 | address: 0x2D8 14 | comment: | 15 | AppleTalk IMII-328 (false); 16 | 17 | # #### 18 | 19 | - lowmem: 20 | name: ABusDCE 21 | type: Ptr 22 | address: 0x2DC 23 | comment: | 24 | AppleTalk MPW (false); 25 | -------------------------------------------------------------------------------- /defs/Components.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: ComponentRecord 3 | members: 4 | - name: data 5 | type: LONGINT[1] 6 | size: 4 7 | 8 | # #### 9 | 10 | - typedef: 11 | name: Component 12 | type: ComponentRecord* 13 | 14 | # #### 15 | 16 | - struct: 17 | name: ComponentInstanceRecord 18 | members: 19 | - name: data 20 | type: LONGINT[1] 21 | size: 4 22 | 23 | # #### 24 | 25 | - typedef: 26 | name: ComponentInstance 27 | type: ComponentInstanceRecord* 28 | -------------------------------------------------------------------------------- /defs/Displays.yaml: -------------------------------------------------------------------------------- 1 | - funptr: 2 | args: 3 | - name: theEvent 4 | type: AppleEvent* 5 | name: DMNotificationUPP 6 | 7 | # #### 8 | 9 | - dispatcher: 10 | name: DisplayDispatch 11 | trap: 0xABEB 12 | selector-location: D0W 13 | 14 | # #### 15 | 16 | - function: 17 | name: DMRegisterNotifyProc 18 | return: OSErr 19 | args: 20 | - name: proc 21 | type: DMNotificationUPP 22 | - name: psn 23 | type: ProcessSerialNumber* 24 | dispatcher: DisplayDispatch 25 | selector: 0x0414 26 | executor: C_ 27 | -------------------------------------------------------------------------------- /defs/BinaryDecimal.yaml: -------------------------------------------------------------------------------- 1 | - function: 2 | name: NumToString 3 | args: 4 | - name: l 5 | type: LONGINT 6 | register: D0 7 | - name: s 8 | type: StringPtr 9 | register: A0 10 | executor: C_ 11 | dispatcher: Pack7 12 | selector: 0x0000 13 | 14 | # #### 15 | 16 | - function: 17 | name: StringToNum 18 | args: 19 | - name: s 20 | type: ConstStringPtr 21 | register: A0 22 | - name: lp 23 | type: LONGINT* 24 | register: Out 25 | executor: C_ 26 | dispatcher: Pack7 27 | selector: 0x0001 28 | -------------------------------------------------------------------------------- /defs/Package.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: dskInit 4 | value: 2 5 | - name: stdFile 6 | value: 3 7 | - name: flPoint 8 | value: 4 9 | - name: trFunc 10 | value: 5 11 | - name: intUtil 12 | value: 6 13 | - name: bdConv 14 | value: 7 15 | 16 | # #### 17 | 18 | - lowmem: 19 | name: AppPacks 20 | type: Handle[8] 21 | address: 0xAB8 22 | comment: | 23 | PackageMgr ThinkC (true-b); 24 | 25 | # #### 26 | 27 | - function: 28 | name: InitPack 29 | args: 30 | - name: packid 31 | type: INTEGER 32 | trap: 0xA9E5 33 | executor: C_ 34 | 35 | # #### 36 | 37 | - function: 38 | name: InitAllPacks 39 | trap: 0xA9E6 40 | executor: C_ 41 | 42 | # #### 43 | 44 | - only-for: Executor 45 | verbatim: | 46 | RAW_68K_TRAP(Pack1, 0xA9E8); 47 | -------------------------------------------------------------------------------- /custom/cfmwrapper.c: -------------------------------------------------------------------------------- 1 | #include "cfmwrapper.h" 2 | 3 | 4 | OSErr __cfmwrapper_connect(__cfmsym *si, const unsigned char *library, const unsigned char *name, uint32_t procInfo) 5 | { 6 | OSErr err = noErr; 7 | uint32_t arch; 8 | Str255 errName; 9 | Ptr mainAddr, symPtr; 10 | 11 | err = Gestalt(gestaltSysArchitecture, &arch); 12 | if(err) 13 | return err; 14 | 15 | err = GetSharedLibrary(library, arch == gestalt68k ? kMotorola68KArch : kPowerPCArch, kReferenceCFrag, &si->conn, &mainAddr, errName); 16 | if(err) 17 | return err; 18 | 19 | err = FindSymbol(si->conn, name, &symPtr, NULL); 20 | if(err) 21 | { 22 | CloseConnection(&si->conn); 23 | si->conn = NULL; 24 | return err; 25 | } 26 | 27 | si->proc = NewRoutineDescriptor((ProcPtr)symPtr, procInfo, arch == gestalt68k ? kM68kISA : kPowerPCISA); 28 | return noErr; 29 | } 30 | 31 | void __cfmwrapper_disconnect(__cfmsym *si) 32 | { 33 | DisposeRoutineDescriptor(si->proc); 34 | CloseConnection(&si->conn); 35 | } 36 | -------------------------------------------------------------------------------- /defs/SysErr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: EXIST_YES 4 | value: 0 5 | - name: EXIST_NO 6 | value: 0xFF 7 | name: exist_enum_t 8 | 9 | # #### 10 | 11 | - lowmem: 12 | name: DSAlertTab 13 | type: Ptr 14 | address: 0x2BA 15 | comment: | 16 | SysErr IMII-359 (true); 17 | 18 | # #### 19 | 20 | - lowmem: 21 | name: DSAlertRect 22 | type: Rect 23 | address: 0x3F8 24 | comment: | 25 | SysErr IMII-362 (true); 26 | 27 | # #### 28 | 29 | - lowmem: 30 | name: WWExist 31 | type: Byte 32 | address: 0x8F2 33 | comment: | 34 | SysError SysEqu.a (true); 35 | 36 | # #### 37 | 38 | - lowmem: 39 | name: QDExist 40 | type: Byte 41 | address: 0x8F3 42 | comment: | 43 | SysError SysEqu.a (true); 44 | 45 | # #### 46 | 47 | - only-for: Executor 48 | verbatim: | 49 | extern char syserr_msg[]; 50 | 51 | # #### 52 | 53 | - function: 54 | name: SysError 55 | args: 56 | - name: errorcode 57 | type: int16_t 58 | trap: 0xA9C9 59 | executor: C_ 60 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | Copyright 2019 Wolfgang Thaller 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /defs/ShutDown.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: sdOnPowerOff 4 | value: 1 5 | - name: sdOnRestart 6 | value: 2 7 | - name: sdOnUnmount 8 | value: 4 9 | - name: sdOnDrivers 10 | value: 8 11 | - name: sdOnRestartOrPower 12 | value: sdOnPowerOff | sdOnRestart 13 | 14 | # #### 15 | 16 | - dispatcher: 17 | name: ShutDown 18 | trap: 0xA895 19 | selector-location: StackW 20 | 21 | # #### 22 | 23 | - function: 24 | name: ShutDwnPower 25 | dispatcher: ShutDown 26 | selector: 0x0001 27 | executor: C_ 28 | 29 | # #### 30 | 31 | - function: 32 | name: ShutDwnStart 33 | dispatcher: ShutDown 34 | selector: 0x0002 35 | executor: C_ 36 | 37 | # #### 38 | 39 | - function: 40 | name: ShutDwnInstall 41 | args: 42 | - name: shutdown_proc 43 | type: ProcPtr 44 | - name: flags 45 | type: int16_t 46 | dispatcher: ShutDown 47 | selector: 0x0003 48 | executor: C_ 49 | 50 | # #### 51 | 52 | - function: 53 | name: ShutDwnRemove 54 | args: 55 | - name: shutdown_proc 56 | type: ProcPtr 57 | dispatcher: ShutDown 58 | selector: 0x0004 59 | executor: C_ 60 | -------------------------------------------------------------------------------- /defs/DiskInit.yaml: -------------------------------------------------------------------------------- 1 | - dispatcher: 2 | name: Pack2 3 | trap: 0xA9E9 4 | selector-location: StackW 5 | 6 | # #### 7 | 8 | - function: 9 | name: DILoad 10 | dispatcher: Pack2 11 | selector: 0x0002 12 | executor: C_ 13 | 14 | # #### 15 | 16 | - function: 17 | name: DIUnload 18 | dispatcher: Pack2 19 | selector: 0x0004 20 | executor: C_ 21 | 22 | # #### 23 | 24 | - function: 25 | name: DIBadMount 26 | return: INTEGER 27 | args: 28 | - name: pt 29 | type: Point 30 | - name: evtmess 31 | type: LONGINT 32 | dispatcher: Pack2 33 | selector: 0x0000 34 | executor: C_ 35 | 36 | # #### 37 | 38 | - function: 39 | name: DIFormat 40 | return: OSErr 41 | args: 42 | - name: dn 43 | type: INTEGER 44 | dispatcher: Pack2 45 | selector: 0x0006 46 | executor: C_ 47 | 48 | # #### 49 | 50 | - function: 51 | name: DIVerify 52 | return: OSErr 53 | args: 54 | - name: dn 55 | type: INTEGER 56 | dispatcher: Pack2 57 | selector: 0x0008 58 | executor: C_ 59 | 60 | # #### 61 | 62 | - function: 63 | name: DIZero 64 | return: OSErr 65 | args: 66 | - name: dn 67 | type: INTEGER 68 | - name: vname 69 | type: StringPtr 70 | dispatcher: Pack2 71 | selector: 0x000A 72 | executor: C_ 73 | -------------------------------------------------------------------------------- /defs/TimeMgr.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: TMTask 3 | members: 4 | - name: qLink 5 | type: QElemPtr 6 | - name: qType 7 | type: INTEGER 8 | - name: tmAddr 9 | type: ProcPtr 10 | - name: tmCount 11 | type: LONGINT 12 | - name: tmWakeUp 13 | type: LONGINT 14 | - name: tmReserved 15 | type: LONGINT 16 | comment: | 17 | I don't trust IMIV-301 18 | size: 22 19 | 20 | # #### 21 | 22 | - function: 23 | name: InsTime 24 | args: 25 | - name: taskp 26 | type: QElemPtr 27 | register: A0 28 | executor: true 29 | trap: 0xA058 30 | executor_extras: ClearD0 31 | 32 | # #### 33 | 34 | - function: 35 | name: InsXTime 36 | args: 37 | - name: taskp 38 | type: QElemPtr 39 | register: A0 40 | trap: 0xA458 41 | 42 | # #### 43 | 44 | - function: 45 | name: RmvTime 46 | args: 47 | - name: taskp 48 | type: QElemPtr 49 | register: A0 50 | executor: true 51 | trap: 0xA059 52 | executor_extras: ClearD0 53 | 54 | # #### 55 | 56 | - function: 57 | name: PrimeTime 58 | args: 59 | - name: taskp 60 | type: QElemPtr 61 | register: A0 62 | - name: count 63 | type: LONGINT 64 | register: D0 65 | executor: true 66 | trap: 0xA05A 67 | executor_extras: ClearD0 68 | -------------------------------------------------------------------------------- /defs/NotifyMgr.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: NMRec 3 | members: 4 | - name: qLink 5 | type: QElemPtr 6 | - name: qType 7 | type: INTEGER 8 | - name: nmFlags 9 | type: INTEGER 10 | - name: nmPrivate 11 | type: LONGINT 12 | - name: nmReserved 13 | type: INTEGER 14 | - name: nmMark 15 | type: INTEGER 16 | - name: nmIcon 17 | type: Handle 18 | - name: nmSound 19 | type: Handle 20 | - name: nmStr 21 | type: StringPtr 22 | - name: nmResp 23 | type: ProcPtr 24 | comment: | 25 | void myresponse(NMRecPtr foo) 26 | - name: nmRefCon 27 | type: LONGINT 28 | size: 36 29 | 30 | # #### 31 | 32 | - typedef: 33 | name: NMRecPtr 34 | type: NMRec* 35 | comment: | 36 | value of -1 means remove queue element 37 | automatically 38 | 39 | # #### 40 | 41 | - function: 42 | name: NMInstall 43 | return: OSErr 44 | args: 45 | - name: nmptr 46 | type: NMRecPtr 47 | register: A0 48 | executor: true 49 | trap: 0xA05E 50 | returnreg: D0 51 | 52 | # #### 53 | 54 | - function: 55 | name: NMRemove 56 | return: OSErr 57 | args: 58 | - name: nmptr 59 | type: NMRecPtr 60 | register: A0 61 | executor: true 62 | trap: 0xA05F 63 | returnreg: D0 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Multiversal Interfaces 2 | ====================== 3 | 4 | Interfaces to Apple's classic Mac OS APIs (pre-Carbon, i.e. 20th century), 5 | encoded in YAML files along with a Ruby program to convert them 6 | 7 | 1. to C/C++ headers for use with Retro68. 8 | 2. to C++ headers for use as part of Executor 2000 9 | 10 | The API definition files were automatically generated from the header files 11 | that were originally included with Executor 2000. 12 | As Executor was a clean-room implementation of Mac OS and is now available 13 | under a liberal license, the resulting header files can be used and 14 | redistributed freely. The translator program can still be found in the separate 15 | `multiversal-parser` repository. 16 | 17 | JSON Schema 18 | ----------- 19 | 20 | A JSON schema definition for the definition files is available in the file 21 | `multiversal.schema.json`. When it's finished, it will serve as documentation 22 | for the API definition YAML files. 23 | 24 | If you're using `vscode` to edit the YAML files, you can set up automatic schema 25 | validation (= error messages and completion hints as you type) by installing the 26 | `YAML` extension and adding 27 | 28 | "yaml.schemas": { 29 | "multiversal.schema.json": "defs/*.yaml" 30 | } 31 | 32 | to your vscode workspace settings (`.vscode/settings.json`). If you have checked 33 | out the Multiversal Interfaces as a submodule of Executor 2000 or Retro68, add the 34 | subdirectory to the relative paths: 35 | 36 | "yaml.schemas": { 37 | "multiversal/multiversal.schema.json": "multiversal/defs/*.yaml" 38 | } 39 | -------------------------------------------------------------------------------- /defs/VDriver.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: VDParamBlock 3 | members: 4 | - common: COMMONFSQUEUEDEFS 5 | - name: ioRefNum 6 | type: INTEGER 7 | - name: csCode 8 | type: INTEGER 9 | - name: csParam 10 | type: Ptr 11 | 12 | # #### 13 | 14 | - typedef: 15 | name: VDParamBlockPtr 16 | type: VDParamBlock* 17 | 18 | # #### 19 | 20 | - struct: 21 | name: VDEntryRecord 22 | members: 23 | - name: csTable 24 | type: Ptr 25 | - name: csStart 26 | type: INTEGER 27 | - name: csCount 28 | type: INTEGER 29 | 30 | # #### 31 | 32 | - typedef: 33 | name: VDEntRecPtr 34 | type: VDEntryRecord* 35 | 36 | # #### 37 | 38 | - struct: 39 | name: VDGammaRecord 40 | members: 41 | - name: csGTable 42 | type: Ptr 43 | 44 | # #### 45 | 46 | - typedef: 47 | name: VDGamRecPtr 48 | type: VDGammaRecord* 49 | 50 | # #### 51 | 52 | - struct: 53 | name: VDPgInfo 54 | members: 55 | - name: csMode 56 | type: INTEGER 57 | - name: csData 58 | type: LONGINT 59 | - name: csPage 60 | type: INTEGER 61 | - name: csBaseAddr 62 | type: Ptr 63 | 64 | # #### 65 | 66 | - typedef: 67 | name: VDPgInfoPtr 68 | type: VDPgInfo* 69 | 70 | # #### 71 | 72 | - struct: 73 | name: VDFlagRec 74 | members: 75 | - name: flag 76 | type: SignedByte 77 | 78 | # #### 79 | 80 | - typedef: 81 | name: VDFlagPtr 82 | type: VDFlagRec* 83 | 84 | # #### 85 | 86 | - struct: 87 | name: VDDefModeRec 88 | members: 89 | - name: spID 90 | type: SignedByte 91 | 92 | # #### 93 | 94 | - typedef: 95 | name: VDDefModePtr 96 | type: VDDefModeRec* 97 | -------------------------------------------------------------------------------- /defs/PPC.yaml: -------------------------------------------------------------------------------- 1 | - typedef: 2 | name: PPCPortKinds 3 | type: int16_t 4 | 5 | # #### 6 | 7 | - typedef: 8 | name: PPCLocationKind 9 | type: int16_t 10 | 11 | # #### 12 | 13 | - struct: 14 | name: EntityName 15 | members: 16 | - name: objStr 17 | type: Str32 18 | - name: typeStr 19 | type: Str32 20 | - name: zoneStr 21 | type: Str32 22 | 23 | # #### 24 | 25 | - struct: 26 | name: PPCXTIAddress 27 | members: 28 | - name: fAddressType 29 | type: int16_t 30 | - name: fAddress 31 | type: uint8_t[96] 32 | 33 | # #### 34 | 35 | - struct: 36 | name: PPCAddrRec 37 | members: 38 | - name: Reserved 39 | type: uint8_t[3] 40 | - name: xtiAddrLen 41 | type: uint8_t 42 | - name: xtiAddr 43 | type: PPCXTIAddress 44 | 45 | # #### 46 | 47 | - struct: 48 | name: LocationNameRec 49 | members: 50 | - name: locationKindSelector 51 | type: PPCLocationKind 52 | - name: u 53 | union: 54 | - name: npbEntity 55 | type: EntityName 56 | - name: npbType 57 | type: Str32 58 | - name: xtiType 59 | type: PPCAddrRec 60 | size: 104 61 | 62 | # #### 63 | 64 | - struct: 65 | name: PPCPortRec 66 | members: 67 | - name: nameScript 68 | type: ScriptCode 69 | - name: name 70 | type: Str32 71 | - name: portKindsSelector 72 | type: PPCPortKinds 73 | - name: u 74 | union: 75 | - name: portTypeStr 76 | type: Str32 77 | - name: port 78 | struct: 79 | - name: creator 80 | type: OSType 81 | - name: type 82 | type: OSType 83 | size: 72 84 | 85 | # #### 86 | 87 | - typedef: 88 | name: PPCPortPtr 89 | type: PPCPortRec* 90 | -------------------------------------------------------------------------------- /defs/StartMgr.yaml: -------------------------------------------------------------------------------- 1 | - union: 2 | members: 3 | - name: slotDev 4 | struct: 5 | - name: sdExtDevID 6 | type: SignedByte 7 | - name: sdPartition 8 | type: SignedByte 9 | - name: sdSlotNum 10 | type: SignedByte 11 | - name: sdSRsrcID 12 | type: SignedByte 13 | - name: scsiDev 14 | struct: 15 | - name: sdReserved1 16 | type: SignedByte 17 | - name: sdReserved2 18 | type: SignedByte 19 | - name: sdRefNum 20 | type: INTEGER 21 | name: DefStartRec 22 | size: 4 23 | 24 | # #### 25 | 26 | - typedef: 27 | name: DefStartPtr 28 | type: DefStartRec* 29 | 30 | # #### 31 | 32 | - struct: 33 | members: 34 | - name: sdSlot 35 | type: SignedByte 36 | - name: sdSResource 37 | type: SignedByte 38 | name: DefVideoRec 39 | size: 2 40 | 41 | # #### 42 | 43 | - typedef: 44 | name: DefVideoPtr 45 | type: DefVideoRec* 46 | 47 | # #### 48 | 49 | - struct: 50 | members: 51 | - name: sdReserved 52 | type: SignedByte 53 | - name: sdOSType 54 | type: SignedByte 55 | name: DefOSRec 56 | size: 2 57 | 58 | # #### 59 | 60 | - typedef: 61 | name: DefOSPtr 62 | type: DefOSRec* 63 | 64 | # #### 65 | 66 | - lowmem: 67 | name: CPUFlag 68 | type: Byte 69 | address: 0x12F 70 | comment: | 71 | StartMgr IMV-348 (true-b); 72 | 73 | # #### 74 | 75 | - lowmem: 76 | name: TimeDBRA 77 | type: INTEGER 78 | address: 0xD00 79 | comment: | 80 | StartMgr IMV (false); 81 | 82 | # #### 83 | 84 | - lowmem: 85 | name: TimeSCCDB 86 | type: INTEGER 87 | address: 0xD02 88 | comment: | 89 | StartMgr IMV (false); 90 | 91 | # #### 92 | 93 | - lowmem: 94 | name: TimeSCSIDB 95 | type: INTEGER 96 | address: 0xDA6 97 | comment: | 98 | StartMgr IMV (false); 99 | -------------------------------------------------------------------------------- /defs/DeskMgr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: undoCmd 4 | value: 0 5 | - name: cutCmd 6 | value: 2 7 | - name: copyCmd 8 | value: 3 9 | - name: pasteCmd 10 | value: 4 11 | - name: clearCmd 12 | value: 5 13 | 14 | # #### 15 | 16 | - enum: 17 | values: 18 | - name: accEvent 19 | value: 64 20 | - name: accRun 21 | value: 65 22 | - name: accMenu 23 | value: 67 24 | - name: accUndo 25 | value: 68 26 | 27 | # #### 28 | 29 | - lowmem: 30 | name: SEvtEnb 31 | type: Byte 32 | address: 0x15C 33 | comment: | 34 | DeskMgr IMI-443 (false); 35 | 36 | # #### 37 | 38 | - function: 39 | name: OpenDeskAcc 40 | return: INTEGER 41 | args: 42 | - name: acc 43 | type: ConstStringPtr 44 | trap: 0xA9B6 45 | executor: C_ 46 | 47 | # #### 48 | 49 | - function: 50 | name: CloseDeskAcc 51 | args: 52 | - name: rn 53 | type: INTEGER 54 | trap: 0xA9B7 55 | executor: C_ 56 | 57 | # #### 58 | 59 | - function: 60 | name: SystemClick 61 | args: 62 | - name: evp 63 | type: EventRecord* 64 | - name: wp 65 | type: WindowPtr 66 | trap: 0xA9B3 67 | executor: C_ 68 | 69 | # #### 70 | 71 | - function: 72 | name: SystemEdit 73 | return: Boolean 74 | args: 75 | - name: editcmd 76 | type: INTEGER 77 | trap: 0xA9C2 78 | executor: C_ 79 | 80 | # #### 81 | 82 | - function: 83 | name: SystemTask 84 | trap: 0xA9B4 85 | executor: C_ 86 | 87 | # #### 88 | 89 | - function: 90 | name: SystemEvent 91 | return: Boolean 92 | args: 93 | - name: evp 94 | type: EventRecord* 95 | trap: 0xA9B2 96 | executor: C_ 97 | 98 | # #### 99 | 100 | - function: 101 | name: SystemMenu 102 | args: 103 | - name: menu 104 | type: LONGINT 105 | trap: 0xA9B5 106 | executor: C_ 107 | -------------------------------------------------------------------------------- /defs/VRetraceMgr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: qErr 4 | value: -1 5 | - name: vTypErr 6 | value: -2 7 | 8 | # #### 9 | 10 | - struct: 11 | name: VBLTask 12 | members: 13 | - name: qLink 14 | type: QElemPtr 15 | - name: qType 16 | type: INTEGER 17 | - name: vblAddr 18 | type: ProcPtr 19 | - name: vblCount 20 | type: INTEGER 21 | - name: vblPhase 22 | type: INTEGER 23 | size: 14 24 | 25 | # #### 26 | 27 | - typedef: 28 | name: VBLTaskPtr 29 | type: VBLTask* 30 | 31 | # #### 32 | 33 | - lowmem: 34 | name: VBLQueue 35 | type: QHdr 36 | address: 0x160 37 | comment: | 38 | VRetraceMgr IMII-352 (true); 39 | 40 | # #### 41 | 42 | - lowmem: 43 | name: JVBLTask 44 | type: ProcPtr 45 | address: 0xD28 46 | comment: | 47 | VRetraceMgr IMV (false); 48 | 49 | # #### 50 | 51 | - function: 52 | name: VInstall 53 | return: OSErr 54 | args: 55 | - name: vtaskp 56 | type: VBLTaskPtr 57 | register: A0 58 | executor: true 59 | trap: 0xA033 60 | returnreg: D0 61 | 62 | # #### 63 | 64 | - function: 65 | name: VRemove 66 | return: OSErr 67 | args: 68 | - name: vtaskp 69 | type: VBLTaskPtr 70 | register: A0 71 | executor: true 72 | trap: 0xA034 73 | returnreg: D0 74 | 75 | # #### 76 | 77 | - function: 78 | name: GetVBLQHdr 79 | return: QHdrPtr 80 | 81 | # #### 82 | 83 | - function: 84 | name: SlotVInstall 85 | return: OSErr 86 | args: 87 | - name: vtaskp 88 | type: VBLTaskPtr 89 | register: A0 90 | - name: slot 91 | type: INTEGER 92 | register: D0 93 | executor: true 94 | trap: 0xA06F 95 | returnreg: D0 96 | 97 | # #### 98 | 99 | - function: 100 | name: SlotVRemove 101 | return: OSErr 102 | args: 103 | - name: vtaskp 104 | type: VBLTaskPtr 105 | register: A0 106 | - name: slot 107 | type: INTEGER 108 | register: D0 109 | executor: true 110 | trap: 0xA070 111 | returnreg: D0 112 | -------------------------------------------------------------------------------- /defs/Disk.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: firstDskErr 4 | value: -84 5 | - name: sectNFErr 6 | value: -81 7 | - name: seekErr 8 | value: -80 9 | - name: spdAdjErr 10 | value: -79 11 | - name: twoSideErr 12 | value: -78 13 | - name: initIWMErr 14 | value: -77 15 | - name: tk0BadErr 16 | value: -76 17 | - name: cantStepErr 18 | value: -75 19 | - name: wrUnderrun 20 | value: -74 21 | - name: badDBtSlp 22 | value: -73 23 | - name: badDCksum 24 | value: -72 25 | - name: noDtaMkErr 26 | value: -71 27 | - name: badBtSlpErr 28 | value: -70 29 | - name: badCksmErr 30 | value: -69 31 | - name: dataVerErr 32 | value: -68 33 | - name: noAdrMkErr 34 | value: -67 35 | - name: noNybErr 36 | value: -66 37 | - name: offLinErr 38 | value: -65 39 | - name: noDriveErr 40 | value: -64 41 | - name: lastDskErr 42 | value: -64 43 | 44 | # #### 45 | 46 | - struct: 47 | name: DrvSts 48 | members: 49 | - name: track 50 | type: INTEGER 51 | - name: writeProt 52 | type: SignedByte 53 | - name: diskInPlace 54 | type: SignedByte 55 | - name: installed 56 | type: SignedByte 57 | - name: sides 58 | type: SignedByte 59 | - name: qLink 60 | type: QElemPtr 61 | - name: qType 62 | type: INTEGER 63 | - name: dQDrive 64 | type: INTEGER 65 | - name: dQRefNum 66 | type: INTEGER 67 | - name: dQFSID 68 | type: INTEGER 69 | - name: twoSideFmt 70 | type: SignedByte 71 | - name: needsFlush 72 | type: SignedByte 73 | - name: diskErrs 74 | type: INTEGER 75 | size: 22 76 | 77 | # #### 78 | 79 | - function: 80 | name: DiskEject 81 | return: OSErr 82 | args: 83 | - name: rn 84 | type: INTEGER 85 | 86 | # #### 87 | 88 | - function: 89 | name: SetTagBuffer 90 | return: OSErr 91 | args: 92 | - name: bp 93 | type: Ptr 94 | 95 | # #### 96 | 97 | - function: 98 | name: DriveStatus 99 | return: OSErr 100 | args: 101 | - name: dn 102 | type: INTEGER 103 | - name: statp 104 | type: DrvSts* 105 | -------------------------------------------------------------------------------- /defs/ADB.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: ADBDataBlock 3 | members: 4 | - name: devType 5 | type: SignedByte 6 | - name: origADBAddr 7 | type: SignedByte 8 | - name: dbServiceRtPtr 9 | type: ProcPtr 10 | - name: dbDataAreaAddr 11 | type: Ptr 12 | size: 10 13 | 14 | # #### 15 | 16 | - struct: 17 | name: ADBSetInfoBlock 18 | members: 19 | - name: siServiceRtPtr 20 | type: ProcPtr 21 | - name: siDataAreaAddr 22 | type: Ptr 23 | size: 8 24 | 25 | # #### 26 | 27 | - lowmem: 28 | name: KbdLast 29 | type: Byte 30 | address: 0x218 31 | comment: | 32 | QuickDraw IMV-367 (false); 33 | 34 | # #### 35 | 36 | - lowmem: 37 | name: KbdType 38 | type: Byte 39 | address: 0x21E 40 | comment: | 41 | QuickDraw IMV-367 (false); 42 | 43 | # #### 44 | 45 | - function: 46 | name: ADBReInit 47 | executor: true 48 | trap: 0xA07B 49 | 50 | # #### 51 | 52 | - function: 53 | name: ADBOp 54 | return: OSErr 55 | args: 56 | - name: data 57 | type: Ptr 58 | - name: procp 59 | type: ProcPtr 60 | - name: buffer 61 | type: Ptr 62 | - name: command 63 | type: INTEGER 64 | 65 | # #### 66 | 67 | - function: 68 | name: CountADBs 69 | return: INTEGER 70 | executor: true 71 | trap: 0xA077 72 | returnreg: D0 73 | 74 | # #### 75 | 76 | - function: 77 | name: GetIndADB 78 | return: OSErr 79 | args: 80 | - name: adbp 81 | type: ADBDataBlock* 82 | register: A0 83 | - name: index 84 | type: INTEGER 85 | register: D0 86 | executor: true 87 | trap: 0xA078 88 | returnreg: D0 89 | 90 | # #### 91 | 92 | - function: 93 | name: GetADBInfo 94 | return: OSErr 95 | args: 96 | - name: adbp 97 | type: ADBDataBlock* 98 | register: A0 99 | - name: address 100 | type: INTEGER 101 | register: D0 102 | executor: true 103 | trap: 0xA079 104 | returnreg: D0 105 | 106 | # #### 107 | 108 | - function: 109 | name: SetADBInfo 110 | return: OSErr 111 | args: 112 | - name: adbp 113 | type: ADBSetInfoBlock* 114 | register: A0 115 | - name: address 116 | type: INTEGER 117 | register: D0 118 | executor: true 119 | trap: 0xA07A 120 | returnreg: D0 121 | -------------------------------------------------------------------------------- /defs/ScrapMgr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: noScrapErr 4 | value: -100 5 | - name: noTypeErr 6 | value: -102 7 | 8 | # #### 9 | 10 | - struct: 11 | name: ScrapStuff 12 | members: 13 | - name: scrapSize 14 | type: LONGINT 15 | - name: scrapHandle 16 | type: Handle 17 | - name: scrapCount 18 | type: INTEGER 19 | - name: scrapState 20 | type: INTEGER 21 | - name: scrapName 22 | type: StringPtr 23 | size: 16 24 | 25 | # #### 26 | 27 | - typedef: 28 | name: PScrapStuff 29 | type: ScrapStuff* 30 | 31 | # #### 32 | 33 | - lowmem: 34 | name: ScrapSize 35 | type: LONGINT 36 | address: 0x960 37 | comment: | 38 | ScrapMgr IMI-457 (true); 39 | 40 | # #### 41 | 42 | - lowmem: 43 | name: ScrapHandle 44 | type: Handle 45 | address: 0x964 46 | comment: | 47 | ScrapMgr IMI-457 (true); 48 | 49 | # #### 50 | 51 | - lowmem: 52 | name: ScrapCount 53 | type: INTEGER 54 | address: 0x968 55 | comment: | 56 | ScrapMgr IMI-457 (true); 57 | 58 | # #### 59 | 60 | - lowmem: 61 | name: ScrapState 62 | type: INTEGER 63 | address: 0x96A 64 | comment: | 65 | ScrapMgr IMI-457 (true); 66 | 67 | # #### 68 | 69 | - lowmem: 70 | name: ScrapName 71 | type: StringPtr 72 | address: 0x96C 73 | comment: | 74 | ScrapMgr IMI-457 (true); 75 | 76 | # #### 77 | 78 | - function: 79 | name: InfoScrap 80 | return: PScrapStuff 81 | trap: 0xA9F9 82 | executor: C_ 83 | 84 | # #### 85 | 86 | - function: 87 | name: UnloadScrap 88 | return: LONGINT 89 | trap: 0xA9FA 90 | executor: C_ 91 | 92 | # #### 93 | 94 | - function: 95 | name: LoadScrap 96 | return: LONGINT 97 | trap: 0xA9FB 98 | executor: C_ 99 | 100 | # #### 101 | 102 | - function: 103 | name: ZeroScrap 104 | return: LONGINT 105 | trap: 0xA9FC 106 | executor: C_ 107 | 108 | # #### 109 | 110 | - function: 111 | name: PutScrap 112 | return: LONGINT 113 | args: 114 | - name: len 115 | type: LONGINT 116 | - name: rest 117 | type: ResType 118 | - name: p 119 | type: Ptr 120 | trap: 0xA9FE 121 | executor: C_ 122 | 123 | # #### 124 | 125 | - function: 126 | name: GetScrap 127 | return: LONGINT 128 | args: 129 | - name: h 130 | type: Handle 131 | - name: rest 132 | type: ResType 133 | - name: "off" 134 | type: LONGINT* 135 | trap: 0xA9FD 136 | executor: C_ 137 | -------------------------------------------------------------------------------- /defs/CommTool.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: CRMRec 3 | members: 4 | - name: qLink 5 | type: QElemPtr 6 | - name: qType 7 | type: INTEGER 8 | - name: crmVersion 9 | type: INTEGER 10 | - name: crmPrivate 11 | type: LONGINT 12 | - name: crmReserved 13 | type: INTEGER 14 | - name: crmDeviceType 15 | type: LONGINT 16 | - name: crmDeviceID 17 | type: LONGINT 18 | - name: crmAttributes 19 | type: LONGINT 20 | - name: crmStatus 21 | type: LONGINT 22 | - name: crmRefCon 23 | type: LONGINT 24 | size: 34 25 | 26 | # #### 27 | 28 | - typedef: 29 | name: CRMRecPtr 30 | type: CRMRec* 31 | 32 | # #### 33 | 34 | - typedef: 35 | name: CRMErr 36 | type: OSErr 37 | 38 | # #### 39 | 40 | - enum: 41 | values: 42 | - name: crmGenericError 43 | value: -1 44 | - name: crmNoErr 45 | value: 0 46 | 47 | # #### 48 | 49 | - enum: 50 | values: 51 | - name: curCRMVersion 52 | value: 1 53 | 54 | # #### 55 | 56 | - enum: 57 | values: 58 | - name: crmType 59 | value: 9 60 | 61 | # #### 62 | 63 | - enum: 64 | values: 65 | - name: crmRecVersion 66 | value: 1 67 | 68 | # #### 69 | 70 | - enum: 71 | values: 72 | - name: curCRMSerRecVer 73 | value: 0 74 | 75 | # #### 76 | 77 | - enum: 78 | values: 79 | - name: crmSerialDevice 80 | value: 1 81 | 82 | # #### 83 | 84 | - struct: 85 | name: CRMSerialRecord 86 | members: 87 | - name: version 88 | type: INTEGER 89 | - name: inputDriverName 90 | type: StringHandle 91 | - name: outputDriverName 92 | type: StringHandle 93 | - name: name 94 | type: StringHandle 95 | - name: deviceIcon 96 | type: Handle 97 | - name: ratedSpeed 98 | type: LONGINT 99 | - name: maxSpeed 100 | type: LONGINT 101 | - name: reserved 102 | type: LONGINT 103 | size: 30 104 | 105 | # #### 106 | 107 | - typedef: 108 | name: CRMSerialPtr 109 | type: CRMSerialRecord* 110 | 111 | # #### 112 | 113 | - function: 114 | name: CRMGetCRMVersion 115 | return: INTEGER 116 | 117 | # #### 118 | 119 | - function: 120 | name: CRMGetHeader 121 | return: QHdrPtr 122 | 123 | # #### 124 | 125 | - function: 126 | name: CRMInstall 127 | args: 128 | - type: QElemPtr 129 | 130 | # #### 131 | 132 | - function: 133 | name: CRMRemove 134 | return: OSErr 135 | args: 136 | - type: QElemPtr 137 | 138 | # #### 139 | 140 | - function: 141 | name: CRMSearch 142 | return: QElemPtr 143 | args: 144 | - type: QElemPtr 145 | 146 | # #### 147 | 148 | - function: 149 | name: InitCRM 150 | return: CRMErr 151 | -------------------------------------------------------------------------------- /defs/MPW.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: MPWFile 3 | 4 | - funptr: 5 | name: MPWFileProcPtr 6 | args: 7 | - name: file 8 | type: MPWFile* 9 | return: LONGINT 10 | callconv: C 11 | 12 | - funptr: 13 | name: MPWQuitProcPtr 14 | callconv: C 15 | 16 | - funptr: 17 | name: MPWAccessProcPtr 18 | args: 19 | - name: name 20 | type: char* 21 | - name: op 22 | type: LONGINT 23 | - name: file 24 | type: MPWFile* 25 | return: LONGINT 26 | callconv: C 27 | 28 | - funptr: 29 | name: MPWIOCtlProcPtr 30 | args: 31 | - name: file 32 | type: MPWFile* 33 | - name: cmd 34 | type: LONGINT 35 | - name: param 36 | type: void* 37 | return: LONGINT 38 | callconv: C 39 | 40 | 41 | - struct: 42 | name: fsysTable 43 | members: 44 | - name: magic 45 | type: OSType 46 | #- name: quit 47 | # type: MPWQuitProcPtr 48 | - name: access 49 | type: MPWAccessProcPtr 50 | - name: close 51 | type: MPWFileProcPtr 52 | - name: read 53 | type: MPWFileProcPtr 54 | - name: write 55 | type: MPWFileProcPtr 56 | - name: ioctl 57 | type: MPWIOCtlProcPtr 58 | 59 | - struct: 60 | name: MPWFile 61 | members: 62 | - name: flags 63 | type: INTEGER 64 | - name: err 65 | type: INTEGER 66 | - name: functions 67 | type: fsysTable* 68 | - name: cookie 69 | type: LONGINT 70 | - name: count 71 | type: LONGINT 72 | - name: buffer 73 | type: void* 74 | 75 | - struct: 76 | name: MPWSeekParamBlock 77 | members: 78 | - name: whence 79 | type: LONGINT 80 | - name: offset 81 | type: LONGINT 82 | 83 | - struct: 84 | name: devtable 85 | members: 86 | - name: fsys 87 | type: fsysTable 88 | - name: econ 89 | type: fsysTable 90 | - name: syst 91 | type: fsysTable 92 | 93 | - struct: 94 | name: PgmInfo2 95 | members: 96 | - name: magic2 97 | type: INTEGER 98 | - name: argc 99 | type: LONGINT 100 | - name: argv 101 | type: char** 102 | - name: envp 103 | type: char** 104 | - name: exitCode 105 | type: LONGINT 106 | - name: x 107 | type: LONGINT 108 | - name: y 109 | type: LONGINT 110 | - name: tableSize 111 | type: INTEGER 112 | - name: ioptr 113 | type: MPWFile* 114 | - name: devptr 115 | type: devtable* 116 | 117 | - struct: 118 | name: PgmInfo1 119 | members: 120 | - name: magic 121 | type: OSType 122 | - name: pgmInfo2 123 | type: PgmInfo2* 124 | size: 8 125 | 126 | - lowmem: 127 | name: MacPgm 128 | type: PgmInfo1* 129 | address: 0x316 130 | 131 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | # BasedOnStyle: WebKit 4 | AccessModifierOffset: -4 5 | BreakBeforeBraces: Allman 6 | Standard: Cpp11 7 | TabWidth: 4 8 | UseTab: Never 9 | AlignAfterOpenBracket: Align 10 | IndentCaseLabels: true 11 | IndentWidth: 4 12 | ReflowComments: true 13 | SortIncludes: false 14 | PointerAlignment: Right 15 | SpaceAfterTemplateKeyword: false 16 | SpaceBeforeParens: Never 17 | ColumnLimit: 79 18 | 19 | BreakBeforeBinaryOperators: All 20 | AlwaysBreakAfterReturnType: None 21 | AlwaysBreakBeforeMultilineStrings: false 22 | AlignEscapedNewlinesLeft: false 23 | 24 | AlignConsecutiveAssignments: false 25 | AlignConsecutiveDeclarations: false 26 | AlignOperands: false 27 | AlignTrailingComments: false 28 | AllowAllParametersOfDeclarationOnNextLine: true 29 | AllowShortBlocksOnASingleLine: false 30 | AllowShortCaseLabelsOnASingleLine: false 31 | AllowShortFunctionsOnASingleLine: All 32 | AllowShortIfStatementsOnASingleLine: false 33 | AllowShortLoopsOnASingleLine: false 34 | AlwaysBreakAfterDefinitionReturnType: None 35 | AlwaysBreakTemplateDeclarations: false 36 | BinPackArguments: true 37 | BinPackParameters: true 38 | BraceWrapping: 39 | AfterClass: false 40 | AfterControlStatement: false 41 | AfterEnum: false 42 | AfterFunction: true 43 | AfterNamespace: false 44 | AfterObjCDeclaration: false 45 | AfterStruct: false 46 | AfterUnion: false 47 | BeforeCatch: false 48 | BeforeElse: false 49 | IndentBraces: false 50 | BreakBeforeTernaryOperators: true 51 | BreakConstructorInitializersBeforeComma: true 52 | BreakAfterJavaFieldAnnotations: false 53 | BreakStringLiterals: true 54 | CommentPragmas: '^ IWYU pragma:' 55 | ConstructorInitializerAllOnOneLineOrOnePerLine: false 56 | ConstructorInitializerIndentWidth: 4 57 | ContinuationIndentWidth: 4 58 | Cpp11BracedListStyle: true 59 | DerivePointerAlignment: false 60 | DisableFormat: false 61 | ExperimentalAutoDetectBinPacking: false 62 | ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] 63 | IncludeCategories: 64 | - Regex: '^"(llvm|llvm-c|clang|clang-c)/' 65 | Priority: 2 66 | - Regex: '^(<|"(gtest|isl|json)/)' 67 | Priority: 3 68 | - Regex: '.*' 69 | Priority: 1 70 | IncludeIsMainRegex: '$' 71 | IndentWrappedFunctionNames: false 72 | JavaScriptQuotes: Leave 73 | JavaScriptWrapImports: true 74 | KeepEmptyLinesAtTheStartOfBlocks: true 75 | MacroBlockBegin: '' 76 | MacroBlockEnd: '' 77 | MaxEmptyLinesToKeep: 2 78 | NamespaceIndentation: Inner 79 | ObjCBlockIndentWidth: 4 80 | ObjCSpaceAfterProperty: true 81 | ObjCSpaceBeforeProtocolList: true 82 | PenaltyBreakBeforeFirstCallParameter: 19 83 | PenaltyBreakComment: 300 84 | PenaltyBreakFirstLessLess: 120 85 | PenaltyBreakString: 1000 86 | PenaltyExcessCharacter: 1000000 87 | PenaltyReturnTypeOnItsOwnLine: 60 88 | SpaceAfterCStyleCast: false 89 | SpaceBeforeAssignmentOperators: true 90 | SpaceInEmptyParentheses: false 91 | SpacesBeforeTrailingComments: 1 92 | SpacesInAngles: false 93 | SpacesInContainerLiterals: true 94 | SpacesInCStyleCastParentheses: false 95 | SpacesInParentheses: false 96 | SpacesInSquareBrackets: false 97 | ... 98 | 99 | -------------------------------------------------------------------------------- /defs/EventMgr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: nullEvent 4 | value: 0 5 | - name: mouseDown 6 | value: 1 7 | - name: mouseUp 8 | value: 2 9 | - name: keyDown 10 | value: 3 11 | - name: keyUp 12 | value: 4 13 | - name: autoKey 14 | value: 5 15 | - name: updateEvt 16 | value: 6 17 | - name: diskEvt 18 | value: 7 19 | - name: activateEvt 20 | value: 8 21 | - name: networkEvt 22 | value: 10 23 | - name: driverEvt 24 | value: 11 25 | - name: app1Evt 26 | value: 12 27 | - name: app2Evt 28 | value: 13 29 | - name: app3Evt 30 | value: 14 31 | - name: app4Evt 32 | value: 15 33 | - name: kHighLevelEvent 34 | value: 23 35 | 36 | # #### 37 | 38 | - enum: 39 | values: 40 | - name: charCodeMask 41 | value: 0xFF 42 | - name: keyCodeMask 43 | value: 0xFF00 44 | 45 | # #### 46 | 47 | - enum: 48 | values: 49 | - name: mDownMask 50 | value: 2 51 | - name: mUpMask 52 | value: 4 53 | - name: keyDownMask 54 | value: 8 55 | - name: keyUpMask 56 | value: 16 57 | - name: autoKeyMask 58 | value: 32 59 | - name: updateMask 60 | value: 64 61 | - name: diskMask 62 | value: 128 63 | - name: activMask 64 | value: 256 65 | 66 | # #### 67 | 68 | - enum: 69 | values: 70 | - name: highLevelEventMask 71 | value: 1024 72 | - name: driverMask 73 | value: 2048 74 | - name: app1Mask 75 | value: 4096 76 | - name: app2Mask 77 | value: 8192 78 | - name: app3Mask 79 | value: 16384 80 | - name: app4Mask 81 | value: -32768 82 | - name: everyEvent 83 | value: -1 84 | comment: | 85 | #define networkMask 1024 86 | 87 | # #### 88 | 89 | - enum: 90 | values: 91 | - name: activeFlag 92 | value: 1 93 | - name: changeFlag 94 | value: 2 95 | - name: btnState 96 | value: 128 97 | - name: cmdKey 98 | value: 256 99 | - name: shiftKey 100 | value: 512 101 | - name: alphaLock 102 | value: 1024 103 | - name: optionKey 104 | value: 2048 105 | - name: ControlKey 106 | value: 4096 107 | 108 | # #### 109 | 110 | - enum: 111 | values: 112 | - name: rightShiftKey 113 | value: 0x2000 114 | - name: rightOptionKey 115 | value: 0x4000 116 | - name: rightControlKey 117 | value: 0x8000 118 | 119 | # #### 120 | 121 | - struct: 122 | name: EventRecord 123 | members: 124 | - name: what 125 | type: INTEGER 126 | - name: message 127 | type: LONGINT 128 | - name: when 129 | type: LONGINT 130 | - name: where 131 | type: Point 132 | - name: modifiers 133 | type: INTEGER 134 | size: 16 135 | 136 | # #### 137 | 138 | - lowmem: 139 | name: KeyMap 140 | type: uint8_t[16] 141 | address: 0x174 142 | comment: | 143 | was LONGINT KeypadMap[2]; 144 | EventMgr SysEqu.a (true-b); 145 | -------------------------------------------------------------------------------- /defs/SegmentLdr.yaml: -------------------------------------------------------------------------------- 1 | - function: 2 | name: ExitToShell 3 | trap: 0xA9F4 4 | executor: C_ 5 | 6 | # #### 7 | 8 | - enum: 9 | values: 10 | - name: appOpen 11 | value: 0 12 | - name: appPrint 13 | value: 1 14 | 15 | # #### 16 | 17 | - struct: 18 | name: AppFile 19 | members: 20 | - name: vRefNum 21 | type: INTEGER 22 | - name: fType 23 | type: OSType 24 | - name: versNum 25 | type: INTEGER 26 | - name: fName 27 | type: Str255 28 | size: 264 29 | 30 | # #### 31 | 32 | - lowmem: 33 | name: loadtrap 34 | type: Byte 35 | address: 0x12D 36 | comment: | 37 | SegmentLdr SysEqu.a (true-b); 38 | 39 | # #### 40 | 41 | - lowmem: 42 | name: FinderName 43 | type: Byte[16] 44 | address: 0x2E0 45 | comment: | 46 | SegmentLdr IMII-59 (true); 47 | 48 | # #### 49 | 50 | - lowmem: 51 | name: CurApRefNum 52 | type: INTEGER 53 | address: 0x900 54 | comment: | 55 | SegmentLdr IMII-58 (true); 56 | 57 | # #### 58 | 59 | - lowmem: 60 | name: CurApName 61 | type: Byte[34] 62 | address: 0x910 63 | comment: | 64 | * NOTE: IMIII says CurApName is 32 bytes long, but it looks to me like 65 | * it is really 34 bytes long. 66 | SegmentLdr IMII-58 (true); 67 | 68 | # #### 69 | 70 | - lowmem: 71 | name: CurJTOffset 72 | type: INTEGER 73 | address: 0x934 74 | comment: | 75 | SegmentLdr IMII-62 (true-b); 76 | 77 | # #### 78 | 79 | - lowmem: 80 | name: CurPageOption 81 | type: INTEGER 82 | address: 0x936 83 | comment: | 84 | SegmentLdr IMII-60 (true); 85 | 86 | # #### 87 | 88 | - lowmem: 89 | name: AppParmHandle 90 | type: Handle 91 | address: 0xAEC 92 | comment: | 93 | SegmentLdr IMII-57 (true); 94 | 95 | # #### 96 | 97 | - function: 98 | name: CountAppFiles 99 | args: 100 | - name: messagep 101 | type: INTEGER* 102 | - name: countp 103 | type: INTEGER* 104 | 105 | # #### 106 | 107 | - function: 108 | name: GetAppFiles 109 | args: 110 | - name: index 111 | type: INTEGER 112 | - name: filep 113 | type: AppFile* 114 | 115 | # #### 116 | 117 | - function: 118 | name: ClrAppFiles 119 | args: 120 | - name: index 121 | type: INTEGER 122 | 123 | # #### 124 | 125 | - only-for: Executor 126 | verbatim: | 127 | extern void Launch(ConstStringPtr appl, INTEGER vrefnum); 128 | extern void Chain(ConstStringPtr appl, INTEGER vrefnum); 129 | 130 | # #### 131 | 132 | - function: 133 | name: GetAppParms 134 | args: 135 | - name: namep 136 | type: StringPtr 137 | - name: rnp 138 | type: INTEGER* 139 | - name: aphandp 140 | type: Handle* 141 | trap: 0xA9F5 142 | executor: C_ 143 | 144 | # #### 145 | 146 | - function: 147 | name: UnloadSeg 148 | args: 149 | - name: addr 150 | type: void* 151 | trap: 0xA9F1 152 | executor: C_ 153 | 154 | # #### 155 | 156 | - enum: 157 | values: 158 | - name: _LoadSeg 159 | value: 0xA9F0 160 | - name: _UnLoadSeg 161 | value: 0xA9F1 162 | - name: _Launch 163 | value: 0xA9F2 164 | - name: _Chain 165 | value: 0xA9F3 166 | -------------------------------------------------------------------------------- /defs/ToolboxEvent.yaml: -------------------------------------------------------------------------------- 1 | - lowmem: 2 | name: KeyThresh 3 | type: INTEGER 4 | address: 0x18E 5 | comment: | 6 | ToolboxEvent IMI-246 (true); 7 | 8 | # #### 9 | 10 | - lowmem: 11 | name: KeyRepThresh 12 | type: INTEGER 13 | address: 0x190 14 | comment: | 15 | ToolboxEvent IMI-246 (true); 16 | 17 | # #### 18 | 19 | - lowmem: 20 | name: DoubleTime 21 | type: LONGINT 22 | address: 0x2F0 23 | comment: | 24 | ToolboxEvent IMI-260 (true); 25 | 26 | # #### 27 | 28 | - lowmem: 29 | name: CaretTime 30 | type: LONGINT 31 | address: 0x2F4 32 | comment: | 33 | ToolboxEvent IMI-260 (true); 34 | 35 | # #### 36 | 37 | - lowmem: 38 | name: ScrDmpEnb 39 | type: Byte 40 | address: 0x2F8 41 | comment: | 42 | ToolboxEvent IMI-258 (true); 43 | 44 | # #### 45 | 46 | - lowmem: 47 | name: JournalFlag 48 | type: INTEGER 49 | address: 0x8DE 50 | comment: | 51 | ToolboxEvent IMI-261 (false); 52 | 53 | # #### 54 | 55 | - lowmem: 56 | name: JournalRef 57 | type: INTEGER 58 | address: 0x8E8 59 | comment: | 60 | ToolboxEvent IMI-261 (false); 61 | 62 | # #### 63 | 64 | - function: 65 | name: KeyTranslate 66 | return: uint32_t 67 | args: 68 | - name: mapp 69 | type: Ptr 70 | - name: code 71 | type: uint16_t 72 | - name: state 73 | type: uint32_t* 74 | trap: 0xA9C3 75 | executor: C_ 76 | 77 | # #### 78 | 79 | - function: 80 | name: GetNextEvent 81 | return: Boolean 82 | args: 83 | - name: em 84 | type: INTEGER 85 | - name: evt 86 | type: EventRecord* 87 | trap: 0xA970 88 | executor: C_ 89 | 90 | # #### 91 | 92 | - function: 93 | name: WaitNextEvent 94 | return: Boolean 95 | args: 96 | - name: mask 97 | type: INTEGER 98 | - name: evp 99 | type: EventRecord* 100 | - name: sleep 101 | type: LONGINT 102 | - name: mousergn 103 | type: RgnHandle 104 | trap: 0xA860 105 | executor: C_ 106 | 107 | # #### 108 | 109 | - function: 110 | name: EventAvail 111 | return: Boolean 112 | args: 113 | - name: em 114 | type: INTEGER 115 | - name: evt 116 | type: EventRecord* 117 | trap: 0xA971 118 | executor: C_ 119 | 120 | # #### 121 | 122 | - function: 123 | name: GetMouse 124 | args: 125 | - name: p 126 | type: Point* 127 | trap: 0xA972 128 | executor: C_ 129 | 130 | # #### 131 | 132 | - function: 133 | name: Button 134 | return: Boolean 135 | trap: 0xA974 136 | executor: C_ 137 | 138 | # #### 139 | 140 | - function: 141 | name: StillDown 142 | return: Boolean 143 | trap: 0xA973 144 | executor: C_ 145 | 146 | # #### 147 | 148 | - function: 149 | name: WaitMouseUp 150 | return: Boolean 151 | trap: 0xA977 152 | executor: C_ 153 | 154 | # #### 155 | 156 | - function: 157 | name: GetKeys 158 | args: 159 | - name: keys 160 | type: uint8_t* 161 | trap: 0xA976 162 | executor: C_ 163 | 164 | # #### 165 | 166 | - function: 167 | name: TickCount 168 | return: ULONGINT 169 | trap: 0xA975 170 | executor: C_ 171 | 172 | # #### 173 | 174 | - function: 175 | name: GetDblTime 176 | return: LONGINT 177 | 178 | # #### 179 | 180 | - function: 181 | name: GetCaretTime 182 | return: LONGINT 183 | -------------------------------------------------------------------------------- /defs/SoundDvr.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: swMode 4 | value: -1 5 | - name: ftMode 6 | value: 1 7 | - name: ffMode 8 | value: 0 9 | 10 | # #### 11 | 12 | - typedef: 13 | name: FreeWave 14 | type: Byte[30001] 15 | 16 | # #### 17 | 18 | - struct: 19 | name: FFSynthRec 20 | members: 21 | - name: mode 22 | type: INTEGER 23 | - name: fcount 24 | type: Fixed 25 | - name: waveBytes 26 | type: FreeWave 27 | size: 30008 28 | 29 | # #### 30 | 31 | - typedef: 32 | name: FFSynthPtr 33 | type: FFSynthRec* 34 | 35 | # #### 36 | 37 | - struct: 38 | name: Tone 39 | members: 40 | - name: tcount 41 | type: INTEGER 42 | - name: amplitude 43 | type: INTEGER 44 | - name: tduration 45 | type: INTEGER 46 | size: 6 47 | 48 | # #### 49 | 50 | - typedef: 51 | name: Tones 52 | type: Tone[5001] 53 | 54 | # #### 55 | 56 | - struct: 57 | name: SWSynthRec 58 | members: 59 | - name: mode 60 | type: INTEGER 61 | - name: triplets 62 | type: Tones 63 | size: 30008 64 | 65 | # #### 66 | 67 | - typedef: 68 | name: SWSynthPtr 69 | type: SWSynthRec* 70 | 71 | # #### 72 | 73 | - typedef: 74 | name: Wave 75 | type: Byte[256] 76 | 77 | # #### 78 | 79 | - typedef: 80 | name: WavePtr 81 | type: Wave* 82 | 83 | # #### 84 | 85 | - struct: 86 | name: FTSoundRec 87 | members: 88 | - name: fduration 89 | type: INTEGER 90 | - name: sound1Rate 91 | type: Fixed 92 | - name: sound1Phase 93 | type: LONGINT 94 | - name: sound2Rate 95 | type: Fixed 96 | - name: sound2Phase 97 | type: LONGINT 98 | - name: sound3Rate 99 | type: Fixed 100 | - name: sound3Phase 101 | type: LONGINT 102 | - name: sound4Rate 103 | type: Fixed 104 | - name: sound4Phase 105 | type: LONGINT 106 | - name: sound1Wave 107 | type: WavePtr 108 | - name: sound2Wave 109 | type: WavePtr 110 | - name: sound3Wave 111 | type: WavePtr 112 | - name: sound4Wave 113 | type: WavePtr 114 | size: 50 115 | 116 | # #### 117 | 118 | - typedef: 119 | name: FTSndRecPtr 120 | type: FTSoundRec* 121 | 122 | # #### 123 | 124 | - struct: 125 | name: FTSynthRec 126 | members: 127 | - name: mode 128 | type: INTEGER 129 | - name: sndRec 130 | type: FTSndRecPtr 131 | size: 6 132 | 133 | # #### 134 | 135 | - typedef: 136 | name: FTsynthPtr 137 | type: FTSynthRec* 138 | 139 | # #### 140 | 141 | - lowmem: 142 | name: SdVolume 143 | type: Byte 144 | address: 0x260 145 | comment: | 146 | SoundDvr IMII-232 (true-b); 147 | 148 | # #### 149 | 150 | - lowmem: 151 | name: SoundPtr 152 | type: FTSndRecPtr 153 | address: 0x262 154 | comment: | 155 | SoundDvr IMII-227 (false); 156 | 157 | # #### 158 | 159 | - lowmem: 160 | name: SoundBase 161 | type: Ptr 162 | address: 0x266 163 | comment: | 164 | SoundDvr IMIII-21 (true-b); 165 | 166 | # #### 167 | 168 | - lowmem: 169 | name: SoundLevel 170 | type: Byte 171 | address: 0x27F 172 | comment: | 173 | SoundDvr IMII-234 (false); 174 | 175 | # #### 176 | 177 | - lowmem: 178 | name: CurPitch 179 | type: INTEGER 180 | address: 0x280 181 | comment: | 182 | SoundDvr IMII-226 (true-b); 183 | 184 | # #### 185 | 186 | - function: 187 | name: StartSound 188 | args: 189 | - name: srec 190 | type: Ptr 191 | - name: nb 192 | type: LONGINT 193 | - name: comp 194 | type: ProcPtr 195 | 196 | # #### 197 | 198 | - function: 199 | name: StopSound 200 | 201 | # #### 202 | 203 | - function: 204 | name: SoundDone 205 | return: Boolean 206 | 207 | # #### 208 | 209 | - function: 210 | name: GetSoundVol 211 | args: 212 | - name: volp 213 | type: INTEGER* 214 | 215 | # #### 216 | 217 | - function: 218 | name: SetSoundVol 219 | args: 220 | - name: vol 221 | type: INTEGER 222 | -------------------------------------------------------------------------------- /defs/LowMem.yaml: -------------------------------------------------------------------------------- 1 | - lowmem: 2 | name: nilhandle 3 | type: Ptr 4 | address: 0x0 5 | comment: | 6 | Declarations of low memory globals which haven't been put anywhere else 7 | yet follow. Whenever a low memory global clearly belongs to one manager/module, 8 | put it should live in the appropriate header. 9 | There is also a complete list of low memory globals in globals.cpp, 10 | which is not used but might be nice to have. 11 | rsys/misc MADEUP (true-b); 12 | 13 | # #### 14 | 15 | - lowmem: 16 | name: trapvectors 17 | type: LONGINT[10] 18 | address: 0x80 19 | comment: | 20 | * NOTE: MacWrite starts writing longwords at location 0x80 for TRAPs 21 | rsys/misc WHOKNOWS (true-b); 22 | 23 | # #### 24 | 25 | - lowmem: 26 | name: dodusesit 27 | type: Ptr 28 | address: 0xE4 29 | comment: | 30 | rsys/misc WHOKNOWS (true-b); 31 | 32 | # #### 33 | 34 | - lowmem: 35 | name: hyperlong 36 | type: LONGINT 37 | address: 0x1AA 38 | comment: | 39 | * Hypercard does a movel to this location. 40 | rsys/misc WHOKNOWS (true-b); 41 | 42 | # #### 43 | 44 | - lowmem: 45 | name: mathones 46 | type: LONGINT 47 | address: 0x282 48 | comment: | 49 | * NOTE: mathones is a LONGINT that Mathematica looks at that contains -1 50 | * on a Mac+ 51 | rsys/misc WHOKNOWS (true-b); 52 | 53 | # #### 54 | 55 | - lowmem: 56 | name: ROM85 57 | type: INTEGER 58 | address: 0x28E 59 | comment: | 60 | * NOTE: Theoretically ROM85 is mentioned in IMV, but I don't know where. 61 | * On a Mac+ the value 0x7FFF is stored there. 62 | * tim: It is at least on page IMV-328. 63 | MacTypes IMV-328 (true-b); 64 | 65 | # #### 66 | 67 | - lowmem: 68 | name: BufTgFNum 69 | type: LONGINT 70 | address: 0x2FC 71 | comment: | 72 | DiskDvr IMII-212 (false); 73 | 74 | # #### 75 | 76 | - lowmem: 77 | name: BufTgFFlg 78 | type: INTEGER 79 | address: 0x300 80 | comment: | 81 | DiskDvr IMII-212 (false); 82 | 83 | # #### 84 | 85 | - lowmem: 86 | name: BufTgFBkNum 87 | type: INTEGER 88 | address: 0x302 89 | comment: | 90 | DiskDvr IMII-212 (false); 91 | 92 | # #### 93 | 94 | - lowmem: 95 | name: BufTgDate 96 | type: LONGINT 97 | address: 0x304 98 | comment: | 99 | DiskDvr IMII-212 (false); 100 | 101 | # #### 102 | 103 | - lowmem: 104 | name: MCLKPCmiss1 105 | type: INTEGER 106 | address: 0x3A0 107 | comment: | 108 | MacLinkPC badaccess (true-b); 109 | 110 | # #### 111 | 112 | - lowmem: 113 | name: MCLKPCmiss2 114 | type: INTEGER 115 | address: 0x3A6 116 | comment: | 117 | MacLinkPC badaccess (true-b); 118 | 119 | # #### 120 | 121 | - lowmem: 122 | name: JFLUSH 123 | type: VoidUPP 124 | address: 0x6F4 125 | comment: | 126 | * JFLUSH is a guess from disassembling some of Excel 3.0 127 | idunno guess (true-b); 128 | 129 | # #### 130 | 131 | - lowmem: 132 | name: JResUnknown1 133 | type: VoidUPP 134 | address: 0x700 135 | comment: | 136 | idunno resedit (true-b); 137 | 138 | # #### 139 | 140 | - lowmem: 141 | name: JResUnknown2 142 | type: VoidUPP 143 | address: 0x714 144 | comment: | 145 | idunno resedit (true-b); 146 | 147 | # #### 148 | 149 | - lowmem: 150 | name: graphlooksat 151 | type: INTEGER 152 | address: 0x952 153 | comment: | 154 | * NOTE: The graphing program looks for a -1 in 0x952 155 | rsys/misc WHOKNOWS (true-b); 156 | 157 | # #### 158 | 159 | - lowmem: 160 | name: macwritespace 161 | type: LONGINT 162 | address: 0x954 163 | comment: | 164 | * NOTE: MacWrite stores a copy of the trap address for LoadSeg in 954 165 | rsys/misc WHOKNOWS (true-b); 166 | 167 | # #### 168 | 169 | - lowmem: 170 | name: DSErrCode 171 | type: INTEGER 172 | address: 0xAF0 173 | comment: | 174 | MacTypes IMII-362 (true); 175 | 176 | # #### 177 | 178 | - lowmem: 179 | name: SCSIFlags 180 | type: INTEGER 181 | address: 0xB22 182 | comment: | 183 | uknown Private.a (true-b); 184 | 185 | # #### 186 | 187 | - lowmem: 188 | name: LastSPExtra 189 | type: LONGINT 190 | address: 0xB4C 191 | comment: | 192 | rsys/misc WHOKNOWS (true-b); 193 | 194 | # #### 195 | 196 | - lowmem: 197 | name: lastlowglobal 198 | type: LONGINT 199 | address: 0x2000 200 | comment: | 201 | rsys/misc MadeUp (true-b); 202 | -------------------------------------------------------------------------------- /defs/AliasMgr.yaml: -------------------------------------------------------------------------------- 1 | - typedef: 2 | name: AliasFilterUPP 3 | type: ProcPtr 4 | 5 | # #### 6 | 7 | - typedef: 8 | name: AliasHandle 9 | type: Handle 10 | 11 | # #### 12 | 13 | - typedef: 14 | name: AliasTypeInfo 15 | type: int16_t 16 | 17 | # #### 18 | 19 | - enum: 20 | values: 21 | - name: kSystemFolderType 22 | value: "'macs'" 23 | - name: kDesktopFolderType 24 | value: "'desk'" 25 | - name: kTrashFolderType 26 | value: "'trsh'" 27 | - name: kWhereToEmptyTrashFolderType 28 | value: "'empt'" 29 | - name: kPrintMonitorDocsFolderType 30 | value: "'prnt'" 31 | - name: kStartupFolderType 32 | value: "'strt'" 33 | - name: kAppleMenuFolderType 34 | value: "'amnu'" 35 | - name: kControlPanelFolderType 36 | value: "'ctrl'" 37 | - name: kExtensionFolderType 38 | value: "'extn'" 39 | - name: kPreferencesFolderType 40 | value: "'pref'" 41 | - name: kTemporaryFolderType 42 | value: "'temp'" 43 | - name: kFontFolderType 44 | value: "'font'" 45 | 46 | # #### 47 | 48 | - dispatcher: 49 | name: AliasDispatch 50 | trap: 0xA823 51 | selector-location: D0W 52 | 53 | # #### 54 | 55 | - function: 56 | name: FindFolder 57 | return: OSErr 58 | args: 59 | - name: vRefNum 60 | type: int16_t 61 | - name: folderType 62 | type: OSType 63 | - name: createFolder 64 | type: Boolean 65 | - name: foundVRefNum 66 | type: int16_t* 67 | - name: foundDirID 68 | type: int32_t* 69 | dispatcher: AliasDispatch 70 | selector: 0x0000 71 | executor: C_ 72 | 73 | # #### 74 | 75 | - function: 76 | name: NewAlias 77 | return: OSErr 78 | args: 79 | - name: fromFile 80 | type: FSSpecPtr 81 | - name: target 82 | type: FSSpecPtr 83 | - name: alias 84 | type: AliasHandle* 85 | dispatcher: AliasDispatch 86 | selector: 0x0002 87 | executor: C_ 88 | 89 | # #### 90 | 91 | - function: 92 | name: NewAliasMinimal 93 | return: OSErr 94 | args: 95 | - name: target 96 | type: FSSpecPtr 97 | - name: alias 98 | type: AliasHandle* 99 | dispatcher: AliasDispatch 100 | selector: 0x0008 101 | executor: C_ 102 | 103 | # #### 104 | 105 | - function: 106 | name: NewAliasMinimalFromFullPath 107 | return: OSErr 108 | args: 109 | - name: fullpathLength 110 | type: int16_t 111 | - name: fullpath 112 | type: Ptr 113 | - name: zoneName 114 | type: Str32 115 | - name: serverName 116 | type: Str31 117 | - name: alias 118 | type: AliasHandle* 119 | dispatcher: AliasDispatch 120 | selector: 0x0009 121 | executor: C_ 122 | 123 | # #### 124 | 125 | - function: 126 | name: UpdateAlias 127 | return: OSErr 128 | args: 129 | - name: fromFile 130 | type: FSSpecPtr 131 | - name: target 132 | type: FSSpecPtr 133 | - name: alias 134 | type: AliasHandle 135 | - name: wasChanged 136 | type: Boolean* 137 | dispatcher: AliasDispatch 138 | selector: 0x0006 139 | executor: C_ 140 | 141 | # #### 142 | 143 | - function: 144 | name: ResolveAlias 145 | return: OSErr 146 | args: 147 | - name: fromFile 148 | type: FSSpecPtr 149 | - name: alias 150 | type: AliasHandle 151 | - name: target 152 | type: FSSpecPtr 153 | - name: wasAliased 154 | type: Boolean* 155 | dispatcher: AliasDispatch 156 | selector: 0x0003 157 | executor: C_ 158 | 159 | # #### 160 | 161 | - function: 162 | name: ResolveAliasFile 163 | return: OSErr 164 | args: 165 | - name: theSpec 166 | type: FSSpecPtr 167 | - name: resolveAliasChains 168 | type: Boolean 169 | - name: targetIsFolder 170 | type: Boolean* 171 | - name: wasAliased 172 | type: Boolean* 173 | dispatcher: AliasDispatch 174 | selector: 0x000C 175 | executor: C_ 176 | 177 | # #### 178 | 179 | - function: 180 | name: MatchAlias 181 | return: OSErr 182 | args: 183 | - name: fromFile 184 | type: FSSpecPtr 185 | - name: rulesMask 186 | type: int32_t 187 | - name: alias 188 | type: AliasHandle 189 | - name: aliasCount 190 | type: int16_t* 191 | - name: aliasList 192 | type: FSSpecArrayPtr 193 | - name: needsUpdate 194 | type: Boolean* 195 | - name: aliasFilter 196 | type: AliasFilterUPP 197 | - name: yourDataPtr 198 | type: Ptr 199 | dispatcher: AliasDispatch 200 | selector: 0x0005 201 | executor: C_ 202 | 203 | # #### 204 | 205 | - function: 206 | name: GetAliasInfo 207 | return: OSErr 208 | args: 209 | - name: alias 210 | type: AliasHandle 211 | - name: index 212 | type: AliasTypeInfo 213 | - name: theString 214 | type: Str63 215 | dispatcher: AliasDispatch 216 | selector: 0x0007 217 | executor: C_ 218 | -------------------------------------------------------------------------------- /defs/QuickTime.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: MovieRecord 3 | members: 4 | - name: data 5 | type: LONGINT[1] 6 | size: 4 7 | 8 | # #### 9 | 10 | - typedef: 11 | name: Movie 12 | type: MovieRecord* 13 | 14 | # #### 15 | 16 | - typedef: 17 | name: TimeValue 18 | type: LONGINT 19 | 20 | # #### 21 | 22 | - dispatcher: 23 | name: QuickTime 24 | trap: 0xAAAA 25 | selector-location: D0W 26 | 27 | # #### 28 | 29 | - function: 30 | name: EnterMovies 31 | return: OSErr 32 | dispatcher: QuickTime 33 | selector: 0x0001 34 | executor: C_ 35 | 36 | # #### 37 | 38 | - function: 39 | name: ExitMovies 40 | dispatcher: QuickTime 41 | selector: 0x0002 42 | executor: C_ 43 | 44 | # #### 45 | 46 | - function: 47 | name: MoviesTask 48 | args: 49 | - name: movie 50 | type: Movie 51 | - name: maxmillisecs 52 | type: LONGINT 53 | dispatcher: QuickTime 54 | selector: 0x0005 55 | executor: C_ 56 | 57 | # #### 58 | 59 | - function: 60 | name: PrerollMovie 61 | return: OSErr 62 | args: 63 | - name: movie 64 | type: Movie 65 | - name: time 66 | type: TimeValue 67 | - name: rate 68 | type: Fixed 69 | dispatcher: QuickTime 70 | selector: 0x0006 71 | executor: C_ 72 | 73 | # #### 74 | 75 | - function: 76 | name: SetMovieActive 77 | args: 78 | - name: movie 79 | type: Movie 80 | - name: active 81 | type: Boolean 82 | dispatcher: QuickTime 83 | selector: 0x0009 84 | executor: C_ 85 | 86 | # #### 87 | 88 | - function: 89 | name: StartMovie 90 | args: 91 | - name: movie 92 | type: Movie 93 | dispatcher: QuickTime 94 | selector: 0x000B 95 | executor: C_ 96 | 97 | # #### 98 | 99 | - function: 100 | name: StopMovie 101 | args: 102 | - name: movie 103 | type: Movie 104 | dispatcher: QuickTime 105 | selector: 0x000C 106 | executor: C_ 107 | 108 | # #### 109 | 110 | - function: 111 | name: GoToBeginningOfMovie 112 | args: 113 | - name: movie 114 | type: Movie 115 | dispatcher: QuickTime 116 | selector: 0x000D 117 | executor: C_ 118 | 119 | # #### 120 | 121 | - function: 122 | name: SetMovieGWorld 123 | args: 124 | - name: movie 125 | type: Movie 126 | - name: cgrafp 127 | type: CGrafPtr 128 | - name: gdh 129 | type: GDHandle 130 | dispatcher: QuickTime 131 | selector: 0x0016 132 | executor: C_ 133 | 134 | # #### 135 | 136 | - function: 137 | name: UpdateMovie 138 | return: OSErr 139 | args: 140 | - name: movie 141 | type: Movie 142 | dispatcher: QuickTime 143 | selector: 0x001F 144 | executor: C_ 145 | 146 | # #### 147 | 148 | - function: 149 | name: DisposeMovie 150 | args: 151 | - name: movie 152 | type: Movie 153 | dispatcher: QuickTime 154 | selector: 0x0023 155 | executor: C_ 156 | 157 | # #### 158 | 159 | - function: 160 | name: GetMovieVolume 161 | return: INTEGER 162 | args: 163 | - name: movie 164 | type: Movie 165 | dispatcher: QuickTime 166 | selector: 0x002E 167 | executor: C_ 168 | 169 | # #### 170 | 171 | - function: 172 | name: CloseMovieFile 173 | return: OSErr 174 | args: 175 | - name: refnum 176 | type: INTEGER 177 | dispatcher: QuickTime 178 | selector: 0x00D5 179 | executor: C_ 180 | 181 | # #### 182 | 183 | - function: 184 | name: IsMovieDone 185 | return: Boolean 186 | args: 187 | - name: movie 188 | type: Movie 189 | dispatcher: QuickTime 190 | selector: 0x00DD 191 | executor: C_ 192 | 193 | # #### 194 | 195 | - function: 196 | name: NewMovieFromFile 197 | return: OSErr 198 | args: 199 | - name: moviep 200 | type: Movie* 201 | - name: refnum 202 | type: INTEGER 203 | - name: residp 204 | type: INTEGER* 205 | - name: resnamep 206 | type: StringPtr 207 | - name: flags 208 | type: INTEGER 209 | - name: datarefwaschangedp 210 | type: Boolean* 211 | dispatcher: QuickTime 212 | selector: 0x00F0 213 | executor: C_ 214 | 215 | # #### 216 | 217 | - function: 218 | name: GetMoviePreferredRate 219 | return: Fixed 220 | args: 221 | - name: movie 222 | type: Movie 223 | dispatcher: QuickTime 224 | selector: 0x00F3 225 | executor: C_ 226 | 227 | # #### 228 | 229 | - function: 230 | name: GetMovieBox 231 | args: 232 | - name: movie 233 | type: Movie 234 | - name: boxp 235 | type: Rect* 236 | dispatcher: QuickTime 237 | selector: 0x00F9 238 | executor: C_ 239 | 240 | # #### 241 | 242 | - function: 243 | name: SetMovieBox 244 | args: 245 | - name: movie 246 | type: Movie 247 | - name: boxp 248 | type: const Rect* 249 | dispatcher: QuickTime 250 | selector: 0x00FA 251 | executor: C_ 252 | 253 | # #### 254 | 255 | - function: 256 | name: NewMovieController 257 | return: ComponentInstance 258 | args: 259 | - name: movie 260 | type: Movie 261 | - name: mrectp 262 | type: const Rect* 263 | - name: flags 264 | type: LONGINT 265 | dispatcher: QuickTime 266 | selector: 0x018A 267 | executor: C_ 268 | 269 | # #### 270 | 271 | - function: 272 | name: DisposeMovieController 273 | args: 274 | - name: cntrller 275 | type: ComponentInstance 276 | dispatcher: QuickTime 277 | selector: 0x018B 278 | executor: C_ 279 | 280 | # #### 281 | 282 | - function: 283 | name: OpenMovieFile 284 | return: OSErr 285 | args: 286 | - name: filespecp 287 | type: const FSSpec* 288 | - name: refnump 289 | type: INTEGER* 290 | - name: perm 291 | type: uint8_t 292 | dispatcher: QuickTime 293 | selector: 0x0192 294 | executor: C_ 295 | -------------------------------------------------------------------------------- /defs/MacTypes.yaml: -------------------------------------------------------------------------------- 1 | - typedef: 2 | name: INTEGER 3 | type: int16_t 4 | 5 | # #### 6 | 7 | - typedef: 8 | name: LONGINT 9 | type: int32_t 10 | 11 | # #### 12 | 13 | - typedef: 14 | name: ULONGINT 15 | type: uint32_t 16 | 17 | # #### 18 | 19 | - typedef: 20 | name: Boolean 21 | type: int8_t 22 | 23 | # #### 24 | 25 | - typedef: 26 | name: CharParameter 27 | type: int16_t 28 | comment: | 29 | very important not to use this as char 30 | 31 | # #### 32 | 33 | - typedef: 34 | name: SignedByte 35 | type: int8_t 36 | 37 | # #### 38 | 39 | - typedef: 40 | name: Byte 41 | type: uint8_t 42 | 43 | # #### 44 | 45 | - typedef: 46 | name: Ptr 47 | type: char* 48 | 49 | # #### 50 | 51 | - typedef: 52 | name: Handle 53 | type: Ptr* 54 | 55 | # #### 56 | 57 | - typedef: 58 | name: Boolean 59 | type: int8_t 60 | 61 | # #### 62 | 63 | - typedef: 64 | name: SInt8 65 | type: int8_t 66 | 67 | # #### 68 | 69 | - typedef: 70 | name: UInt8 71 | type: uint8_t 72 | 73 | # #### 74 | 75 | - typedef: 76 | name: SInt16 77 | type: int16_t 78 | 79 | # #### 80 | 81 | - typedef: 82 | name: UInt16 83 | type: uint16_t 84 | 85 | # #### 86 | 87 | - typedef: 88 | name: SInt32 89 | type: int32_t 90 | 91 | # #### 92 | 93 | - typedef: 94 | name: UInt32 95 | type: uint32_t 96 | 97 | # #### 98 | 99 | - typedef: 100 | name: Str15 101 | type: Byte[16] 102 | 103 | # #### 104 | 105 | - typedef: 106 | name: Str31 107 | type: Byte[32] 108 | 109 | # #### 110 | 111 | - typedef: 112 | name: Str32 113 | type: Byte[33] 114 | 115 | # #### 116 | 117 | - typedef: 118 | name: Str63 119 | type: Byte[64] 120 | 121 | # #### 122 | 123 | - typedef: 124 | name: Str255 125 | type: Byte[256] 126 | 127 | # #### 128 | 129 | - typedef: 130 | name: StringPtr 131 | type: Byte* 132 | 133 | # #### 134 | 135 | - typedef: 136 | name: ConstStringPtr 137 | type: const uint8_t* 138 | 139 | # #### 140 | 141 | - typedef: 142 | name: ConstStr255Param 143 | type: ConstStringPtr 144 | 145 | # #### 146 | 147 | - typedef: 148 | name: ConstStr63Param 149 | type: ConstStringPtr 150 | 151 | # #### 152 | 153 | - typedef: 154 | name: ConstStr31Param 155 | type: ConstStringPtr 156 | 157 | # #### 158 | 159 | - typedef: 160 | name: ConstStr16Param 161 | type: ConstStringPtr 162 | 163 | # #### 164 | 165 | - typedef: 166 | name: StringHandle 167 | type: StringPtr* 168 | 169 | # #### 170 | 171 | - struct: 172 | name: RoutineDescriptor 173 | 174 | # #### 175 | 176 | - typedef: 177 | name: UniversalProcPtr 178 | type: RoutineDescriptor* 179 | 180 | # #### 181 | 182 | - funptr: 183 | name: VoidUPP 184 | 185 | # #### 186 | 187 | - typedef: 188 | name: Fixed 189 | type: LONGINT 190 | 191 | # #### 192 | 193 | - typedef: 194 | name: Fract 195 | type: LONGINT 196 | 197 | # #### 198 | 199 | - typedef: 200 | name: SmallFract 201 | type: uint16_t 202 | comment: | 203 | SmallFract represnts values between 0 and 65535 204 | 205 | # #### 206 | 207 | - enum: 208 | values: 209 | - name: MaxSmallFract 210 | value: 0xFFFF 211 | 212 | # #### 213 | 214 | - typedef: 215 | name: Extended 216 | type: double 217 | 218 | # #### 219 | 220 | - typedef: 221 | name: Size 222 | type: LONGINT 223 | 224 | # #### 225 | 226 | - typedef: 227 | name: OSErr 228 | type: INTEGER 229 | 230 | # #### 231 | 232 | - only-for: Executor 233 | verbatim: | 234 | class OSErrorException : public std::runtime_error 235 | { 236 | public: 237 | OSErr code; 238 | 239 | OSErrorException(OSErr err) : std::runtime_error("oserror"), code(err) {} 240 | }; 241 | 242 | # #### 243 | 244 | - typedef: 245 | name: OSType 246 | type: LONGINT 247 | 248 | # #### 249 | 250 | - typedef: 251 | name: ResType 252 | type: LONGINT 253 | 254 | # #### 255 | 256 | - only-for: Executor 257 | verbatim: | 258 | constexpr OSType operator"" _4(const char*x, size_t n) 259 | { 260 | assert(n == 4); 261 | return (uint8_t(x[0]) << 24) | (uint8_t(x[1]) << 16) | (uint8_t(x[2]) << 8) | uint8_t(x[3]); 262 | } 263 | 264 | # #### 265 | 266 | - union: 267 | name: QElem 268 | 269 | # #### 270 | 271 | - typedef: 272 | name: QElemPtr 273 | type: QElem* 274 | 275 | # #### 276 | 277 | - struct: 278 | name: QHdr 279 | members: 280 | - name: qFlags 281 | type: INTEGER 282 | - name: qHead 283 | type: QElemPtr 284 | - name: qTail 285 | type: QElemPtr 286 | size: 10 287 | 288 | # #### 289 | 290 | - typedef: 291 | name: QHdrPtr 292 | type: QHdr* 293 | 294 | # #### 295 | 296 | - enum: 297 | values: 298 | - name: noErr 299 | value: 0 300 | - name: paramErr 301 | value: -50 302 | 303 | # #### 304 | 305 | - struct: 306 | name: Rect 307 | members: 308 | - name: top 309 | type: INTEGER 310 | - name: left 311 | type: INTEGER 312 | - name: bottom 313 | type: INTEGER 314 | - name: right 315 | type: INTEGER 316 | size: 8 317 | 318 | # #### 319 | 320 | - typedef: 321 | name: RectPtr 322 | type: Rect* 323 | 324 | # #### 325 | 326 | - only-for: Executor 327 | verbatim: | 328 | inline short RECT_WIDTH(const Rect *r) 329 | { 330 | return r->right - r->left; 331 | } 332 | inline short RECT_HEIGHT(const Rect *r) 333 | { 334 | return r->bottom - r->top; 335 | } 336 | 337 | # #### 338 | 339 | - typedef: 340 | name: ScriptCode 341 | type: INTEGER 342 | comment: | 343 | from IntlUtil.h 344 | 345 | # #### 346 | 347 | - typedef: 348 | name: LangCode 349 | type: INTEGER 350 | 351 | # #### 352 | 353 | - not-for: executor 354 | struct: 355 | name: Point 356 | members: 357 | - name: v 358 | type: INTEGER 359 | - name: h 360 | type: INTEGER 361 | size: 4 362 | -------------------------------------------------------------------------------- /make-multiverse.rb: -------------------------------------------------------------------------------- 1 | require 'yaml' 2 | require 'set' 3 | require 'fileutils' 4 | require 'optparse' 5 | 6 | require './generator' 7 | require './cincludes' 8 | require './executor' 9 | 10 | BUILTIN_NAMES=Set.new [ 11 | "uint8_t", "uint16_t", "uint32_t", "uint64_t", 12 | "int8_t", "int16_t", "int32_t", "int64_t", 13 | "char", 14 | "ProcPtr", 15 | "void", 16 | "const", 17 | "bool", 18 | "sizeof", 19 | "double" 20 | ] 21 | 22 | def hexlit(thing, sz=16) 23 | case thing 24 | when Integer 25 | digits = thing.to_s(16).upcase 26 | return "0x" + "0" * [sz/4 - digits.length, 0].max + digits 27 | else 28 | return thing.to_s 29 | end 30 | end 31 | 32 | def main_elem(item) 33 | item.each do |key, value| 34 | next if ["only-for", "not-for", "api"].include? key 35 | return key, value 36 | end 37 | return nil 38 | end 39 | 40 | $global_name_map = {} 41 | 42 | class HeaderFile 43 | attr_reader :file, :name, :declared_names, :required_names, :included, :included_why, :data 44 | def initialize(file, filter_key:nil) 45 | @file = file 46 | @name = File.basename(@file, ".yaml") 47 | 48 | @data = YAML::load(File.read(@file)) 49 | 50 | @filter_key = filter_key.downcase 51 | 52 | @data.reject! do |item| 53 | onlyfor = item["only-for"] 54 | notfor = item["not-for"] 55 | 56 | onlyfor = [onlyfor] if onlyfor and not onlyfor.is_a? Array 57 | notfor = [notfor] if notfor and not notfor.is_a? Array 58 | 59 | next true if onlyfor and not onlyfor.map {|x| x.downcase}.index(filter_key) 60 | next true if notfor and notfor.map {|x| x.downcase}.index(filter_key) 61 | next false 62 | end 63 | 64 | @data.each do |item| 65 | item.reject! { |k| k == "only-for" or k == "not-for" } 66 | end 67 | 68 | collect_dependencies 69 | 70 | @included = nil 71 | @included_why = nil 72 | end 73 | 74 | private 75 | 76 | def collect_dep(str) 77 | tmp = str.to_s.dup 78 | tmp.gsub!(/'[^']+'/,"") 79 | tmp.scan(/[a-zA-Z_][a-zA-Z0-9_]*/).each do |x| 80 | @required_names << x unless BUILTIN_NAMES.member?(x) 81 | end 82 | end 83 | 84 | def collect_members_dependencies(members) 85 | members.each do |member| 86 | collect_dep(member["type"]) if member["type"] 87 | collect_members_dependencies(member["struct"]) if member["struct"] 88 | collect_members_dependencies(member["union"]) if member["union"] 89 | collect_dep(member["common"]) if member["common"] 90 | end 91 | end 92 | 93 | def collect_dependencies 94 | @declared_names = Set.new 95 | @required_names = Set.new 96 | @data.each do |item| 97 | key, value = main_elem(item) 98 | @declared_names << value["name"] if value["name"] 99 | $global_name_map[value["name"]] = item if value["name"] 100 | case key 101 | when "enum" 102 | value["values"].each do |val| 103 | @declared_names << val["name"] 104 | collect_dep(val["value"]) if val["value"] 105 | end 106 | when "typedef" 107 | collect_dep(value["type"]) 108 | when "struct", "union" 109 | collect_members_dependencies value["members"] if value["members"] 110 | when "function", "funptr" 111 | collect_dep(value["return"]) if value["return"] 112 | (value ["args"] or []).each do |arg| 113 | collect_dep(arg["type"]) 114 | end 115 | @declared_names.merge value["variants"] if value["variants"] 116 | end 117 | end 118 | @required_names = @required_names - @declared_names 119 | end 120 | 121 | public 122 | def collect_includes(all_declared_names) 123 | @included = Set.new 124 | @included_why = {} 125 | @required_names.each do |n| 126 | where = all_declared_names[n] 127 | if where then 128 | @included << where 129 | @included_why[where] = Set.new unless @included_why[where] 130 | @included_why[where] << n 131 | elsif @filter_key == "executor" and n == "Point" then 132 | else 133 | print "??????????????? Where is #{n}\n" 134 | end 135 | end 136 | end 137 | 138 | end 139 | 140 | class Defs 141 | attr_reader :headers, :declared_names, :topsort 142 | def initialize(filter_key:nil) 143 | @headers = {} 144 | @declared_names = {} 145 | 146 | print "Reading yaml files..." 147 | Dir.glob('defs/*.yaml') do |file| 148 | header = HeaderFile.new(file, filter_key: filter_key) 149 | @headers[header.name] = header 150 | 151 | header.declared_names.each { |n| @declared_names[n] = header.name } 152 | end 153 | 154 | print "#{headers.size} files.\n" 155 | 156 | headers.each do |name, header| 157 | header.collect_includes(declared_names) 158 | end 159 | 160 | 161 | @topsort = [] 162 | done = Set.new 163 | headers.each do |name, header| 164 | do_topsort(name, done) 165 | end 166 | end 167 | 168 | private 169 | 170 | def do_topsort(name, done, active=Set.new, stack=[]) 171 | print "INCLUDE CYCLE #{stack.join('=>')} => #{name}\n" if active.include?(name) 172 | return if done.include?(name) 173 | active << name 174 | done << name 175 | stack << name 176 | 177 | @headers[name].included.each do |incname| 178 | do_topsort(incname, done, active, stack) 179 | end 180 | @topsort << name 181 | active.delete?(name) 182 | stack.pop 183 | end 184 | end 185 | 186 | 187 | Options = Struct.new(:output_dir, :generator) 188 | $options = Options.new 189 | $options.output_dir = "./out" 190 | 191 | OptionParser.new do |op| 192 | op.on('-o', '--output-dir=PATH', String) { |a| $options.output_dir = a } 193 | op.on('-G', '--generator=GEN', { 194 | 'CIncludes'=>CIncludesGenerator, 195 | 'Executor'=>ExecutorGenerator 196 | }) { |a| $options.generator = a } 197 | end.parse! 198 | 199 | defs = Defs.new(filter_key: $options.generator.filter_key) 200 | $options.generator.new.generate(defs) 201 | -------------------------------------------------------------------------------- /defs/Serial.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: baud300 4 | value: 380 5 | - name: baud600 6 | value: 189 7 | - name: baud1200 8 | value: 94 9 | - name: baud1800 10 | value: 62 11 | - name: baud2400 12 | value: 46 13 | - name: baud3600 14 | value: 30 15 | - name: baud4800 16 | value: 22 17 | - name: baud7200 18 | value: 14 19 | - name: baud9600 20 | value: 10 21 | - name: baud14400 22 | value: 6 23 | - name: baud19200 24 | value: 4 25 | - name: baud28800 26 | value: 2 27 | - name: baud38400 28 | value: 1 29 | - name: baud57600 30 | value: 0 31 | 32 | # #### 33 | 34 | - enum: 35 | values: 36 | - name: stop10 37 | value: 16384 38 | - name: stop15 39 | value: -32768 40 | - name: stop20 41 | value: -16384 42 | 43 | # #### 44 | 45 | - enum: 46 | values: 47 | - name: noParity 48 | value: 0 49 | - name: oddParity 50 | value: 4096 51 | - name: evenParity 52 | value: 12288 53 | 54 | # #### 55 | 56 | - enum: 57 | values: 58 | - name: data5 59 | value: 0 60 | - name: data6 61 | value: 2048 62 | - name: data7 63 | value: 1024 64 | - name: data8 65 | value: 3072 66 | 67 | # #### 68 | 69 | - enum: 70 | values: 71 | - name: swOverrunErr 72 | value: 1 73 | - name: parityErr 74 | value: 16 75 | - name: hwOverrunErr 76 | value: 32 77 | - name: framingErr 78 | value: 64 79 | 80 | # #### 81 | 82 | - enum: 83 | values: 84 | - name: ctsEvent 85 | value: 32 86 | - name: breakEvent 87 | value: 128 88 | 89 | # #### 90 | 91 | - enum: 92 | values: 93 | - name: xOffWasSent 94 | value: 0x80 95 | 96 | # #### 97 | 98 | - typedef: 99 | name: SPortSel 100 | type: SignedByte 101 | 102 | # #### 103 | 104 | - enum: 105 | values: 106 | - name: sPortA 107 | value: 0 108 | - name: sPortB 109 | value: 1 110 | 111 | # #### 112 | 113 | - enum: 114 | values: 115 | - name: kSERDConfiguration 116 | value: 8 117 | - name: kSERDInputBuffer 118 | value: 9 119 | - name: kSERDSerHShake 120 | value: 10 121 | - name: kSERDClearBreak 122 | value: 11 123 | - name: kSERDSetBreak 124 | value: 12 125 | - name: kSERDBaudRate 126 | value: 13 127 | - name: kSERDHandshake 128 | value: 14 129 | - name: kSERDClockMIDI 130 | value: 15 131 | - name: kSERDMiscOptions 132 | value: 16 133 | - name: kSERDAssertDTR 134 | value: 17 135 | - name: kSERDNegateDTR 136 | value: 18 137 | - name: kSERDSetPEChar 138 | value: 19 139 | - name: kSERDSetPEAltChar 140 | value: 20 141 | - name: kSERDSetXOffFlag 142 | value: 21 143 | - name: kSERDClearXOffFlag 144 | value: 22 145 | - name: kSERDSendXOn 146 | value: 23 147 | - name: kSERDSendXOnOut 148 | value: 24 149 | - name: kSERDSendXOff 150 | value: 25 151 | - name: kSERDSendXOffOut 152 | value: 26 153 | - name: kSERDResetChannel 154 | value: 27 155 | - name: kSERDHandshakeRS232 156 | value: 28 157 | - name: kSERDStickParity 158 | value: 29 159 | - name: kSERDAssertRTS 160 | value: 30 161 | - name: kSERDNegateRTS 162 | value: 31 163 | - name: kSERD115KBaud 164 | value: 115 165 | - name: kSERD230KBaud 166 | value: 230 167 | comment: | 168 | Serial driver control codes 169 | 170 | # #### 171 | 172 | - enum: 173 | values: 174 | - name: kSERDInputCount 175 | value: 2 176 | - name: kSERDStatus 177 | value: 8 178 | - name: kSERDVersion 179 | value: 9 180 | - name: kSERDGetDCD 181 | value: 256 182 | comment: | 183 | Serial driver status codes 184 | 185 | # #### 186 | 187 | - struct: 188 | name: SerShk 189 | members: 190 | - name: fXOn 191 | type: Byte 192 | - name: fCTS 193 | type: Byte 194 | - name: xOn 195 | type: Byte 196 | - name: xOff 197 | type: Byte 198 | - name: errs 199 | type: Byte 200 | - name: evts 201 | type: Byte 202 | - name: fInX 203 | type: Byte 204 | - name: "null" 205 | type: Byte 206 | size: 8 207 | 208 | # #### 209 | 210 | - struct: 211 | name: SerStaRec 212 | members: 213 | - name: cumErrs 214 | type: Byte 215 | - name: xOffSent 216 | type: Byte 217 | - name: rdPend 218 | type: Byte 219 | - name: wrPend 220 | type: Byte 221 | - name: ctsHold 222 | type: Byte 223 | - name: xOffHold 224 | type: Byte 225 | - name: dsrHold 226 | type: Byte 227 | comment: | 228 | unimplemented 229 | - name: modemStatus 230 | type: Byte 231 | comment: | 232 | unimplemented 233 | size: 8 234 | 235 | # #### 236 | 237 | - only-for: Executor 238 | verbatim: | 239 | const char *const MODEMINAME = ".AIn"; 240 | const char *const MODEMONAME = ".AOut"; 241 | const char *const PRNTRINAME = ".AIn"; 242 | const char *const PRNTRONAME = ".AOut"; 243 | 244 | # #### 245 | 246 | - enum: 247 | values: 248 | - name: MODEMIRNUM 249 | value: -6 250 | - name: MODEMORNUM 251 | value: -7 252 | - name: PRNTRIRNUM 253 | value: -8 254 | - name: PRNTRORNUM 255 | value: -9 256 | 257 | # #### 258 | 259 | - function: 260 | name: RAMSDOpen 261 | return: OSErr 262 | args: 263 | - name: port 264 | type: SPortSel 265 | executor: true 266 | 267 | # #### 268 | 269 | - function: 270 | name: RAMSDClose 271 | args: 272 | - name: port 273 | type: SPortSel 274 | executor: true 275 | 276 | # #### 277 | 278 | - function: 279 | name: SerReset 280 | return: OSErr 281 | args: 282 | - name: rn 283 | type: INTEGER 284 | - name: config 285 | type: INTEGER 286 | executor: true 287 | 288 | # #### 289 | 290 | - function: 291 | name: SerSetBuf 292 | return: OSErr 293 | args: 294 | - name: rn 295 | type: INTEGER 296 | - name: p 297 | type: Ptr 298 | - name: len 299 | type: INTEGER 300 | executor: true 301 | 302 | # #### 303 | 304 | - function: 305 | name: SerHShake 306 | return: OSErr 307 | args: 308 | - name: rn 309 | type: INTEGER 310 | - name: flags 311 | type: const SerShk* 312 | executor: true 313 | 314 | # #### 315 | 316 | - function: 317 | name: SerSetBrk 318 | return: OSErr 319 | args: 320 | - name: rn 321 | type: INTEGER 322 | executor: true 323 | 324 | # #### 325 | 326 | - function: 327 | name: SerClrBrk 328 | return: OSErr 329 | args: 330 | - name: rn 331 | type: INTEGER 332 | executor: true 333 | 334 | # #### 335 | 336 | - function: 337 | name: SerGetBuf 338 | return: OSErr 339 | args: 340 | - name: rn 341 | type: INTEGER 342 | - name: lp 343 | type: LONGINT* 344 | executor: true 345 | 346 | # #### 347 | 348 | - function: 349 | name: SerStatus 350 | return: OSErr 351 | args: 352 | - name: rn 353 | type: INTEGER 354 | - name: serstap 355 | type: SerStaRec* 356 | executor: true 357 | -------------------------------------------------------------------------------- /defs/ProcessMgr.yaml: -------------------------------------------------------------------------------- 1 | - typedef: 2 | name: LaunchFlags 3 | type: INTEGER 4 | 5 | # #### 6 | 7 | - struct: 8 | name: ProcessSerialNumber 9 | members: 10 | - name: highLongOfPSN 11 | type: uint32_t 12 | - name: lowLongOfPSN 13 | type: uint32_t 14 | size: 8 15 | 16 | # #### 17 | 18 | - struct: 19 | members: 20 | - name: magic 21 | type: uint32_t 22 | - name: n_fsspec 23 | type: INTEGER 24 | - name: fsspec 25 | type: FSSpec[0] 26 | name: ROMlib_AppParameters_t 27 | 28 | # #### 29 | 30 | - enum: 31 | values: 32 | - name: APP_PARAMS_MAGIC 33 | value: 0xd6434a1b 34 | comment: | 35 | chosen from /dev/random 36 | 37 | # #### 38 | 39 | - typedef: 40 | name: AppParametersPtr 41 | type: ROMlib_AppParameters_t* 42 | 43 | # #### 44 | 45 | - struct: 46 | name: LaunchParamBlockRec 47 | members: 48 | - name: reserved1 49 | type: LONGINT 50 | - name: reserved2 51 | type: INTEGER 52 | - name: launchBlockID 53 | type: INTEGER 54 | - name: launchEPBLength 55 | type: LONGINT 56 | - name: launchFileFlags 57 | type: INTEGER 58 | - name: launchControlFlags 59 | type: LaunchFlags 60 | - name: launchAppSpec 61 | type: FSSpecPtr 62 | - name: launchProcessSN 63 | type: ProcessSerialNumber 64 | - name: launchPreferredSize 65 | type: LONGINT 66 | - name: launchMinimumSize 67 | type: LONGINT 68 | - name: launchAvailableSize 69 | type: LONGINT 70 | - name: launchAppParameters 71 | type: AppParametersPtr 72 | size: 44 73 | 74 | # #### 75 | 76 | - enum: 77 | values: 78 | - name: extendedBlock 79 | value: 0x4C43 80 | 81 | # #### 82 | 83 | - enum: 84 | values: 85 | - name: extendedBlockLen 86 | value: sizeof(LaunchParamBlockRec) - 12 87 | 88 | # #### 89 | 90 | - enum: 91 | values: 92 | - name: launchContinue 93 | value: 0x4000 94 | 95 | # #### 96 | 97 | - struct: 98 | name: ProcessInfoRec 99 | members: 100 | - name: processInfoLength 101 | type: uint32_t 102 | - name: processName 103 | type: StringPtr 104 | - name: processNumber 105 | type: ProcessSerialNumber 106 | - name: processType 107 | type: uint32_t 108 | - name: processSignature 109 | type: OSType 110 | - name: processMode 111 | type: uint32_t 112 | - name: processLocation 113 | type: Ptr 114 | - name: processSize 115 | type: uint32_t 116 | - name: processFreeMem 117 | type: uint32_t 118 | - name: processLauncher 119 | type: ProcessSerialNumber 120 | - name: processLaunchDate 121 | type: uint32_t 122 | - name: processActiveTime 123 | type: uint32_t 124 | - name: processAppSpec 125 | type: FSSpecPtr 126 | size: 60 127 | 128 | # #### 129 | 130 | - typedef: 131 | name: ProcessInfoPtr 132 | type: ProcessInfoRec* 133 | 134 | # #### 135 | 136 | - enum: 137 | values: 138 | - name: modeDeskAccessory 139 | value: 0x00020000 140 | - name: modeMultiLaunch 141 | value: 0x00010000 142 | - name: modeNeedSuspendResume 143 | value: 0x00004000 144 | - name: modeCanBackground 145 | value: 0x00001000 146 | - name: modeDoesActivateOnFGSwitch 147 | value: 0x00000800 148 | - name: modeOnlyBackground 149 | value: 0x00000400 150 | - name: modeGetFrontClicks 151 | value: 0x00000200 152 | - name: modeGetAppDiedMsg 153 | value: 0x00000100 154 | - name: mode32BitCompatible 155 | value: 0x00000080 156 | - name: modeHighLevelEventAware 157 | value: 0x00000040 158 | - name: modeLocalAndRemoteHLEvents 159 | value: 0x00000020 160 | - name: modeStationeryAware 161 | value: 0x00000010 162 | - name: modeUseTextEditServices 163 | value: 0x00000008 164 | comment: | 165 | flags for the `processMode' field of the `ProcessInformationRec' 166 | record 167 | 168 | # #### 169 | 170 | - enum: 171 | values: 172 | - name: kNoProcess 173 | value: 0 174 | - name: kSystemProcess 175 | value: 1 176 | - name: kCurrentProcess 177 | value: 2 178 | 179 | # #### 180 | 181 | - enum: 182 | values: 183 | - name: procNotFound 184 | value: -600 185 | 186 | # #### 187 | 188 | - only-for: Executor 189 | verbatim: | 190 | extern void process_create(bool desk_accessory_p, 191 | uint32_t type, uint32_t signature); 192 | 193 | # #### 194 | 195 | - function: 196 | name: GetCurrentProcess 197 | return: OSErr 198 | args: 199 | - name: serial_number 200 | type: ProcessSerialNumber* 201 | dispatcher: OSDispatch 202 | selector: 0x0037 203 | executor: C_ 204 | 205 | # #### 206 | 207 | - function: 208 | name: GetNextProcess 209 | return: OSErr 210 | args: 211 | - name: serial_number 212 | type: ProcessSerialNumber* 213 | dispatcher: OSDispatch 214 | selector: 0x0038 215 | executor: C_ 216 | 217 | # #### 218 | 219 | - function: 220 | name: GetProcessInformation 221 | return: OSErr 222 | args: 223 | - name: serial_number 224 | type: ProcessSerialNumber* 225 | - name: info 226 | type: ProcessInfoPtr 227 | dispatcher: OSDispatch 228 | selector: 0x003A 229 | executor: C_ 230 | 231 | # #### 232 | 233 | - function: 234 | name: SameProcess 235 | return: OSErr 236 | args: 237 | - name: serial_number0 238 | type: ProcessSerialNumber* 239 | - name: serial_number1 240 | type: ProcessSerialNumber* 241 | - name: same_out 242 | type: Boolean* 243 | dispatcher: OSDispatch 244 | selector: 0x003D 245 | executor: C_ 246 | 247 | # #### 248 | 249 | - only-for: Executor 250 | verbatim: | 251 | extern OSErr C_GetFrontProcess(ProcessSerialNumber *serial_number, int32_t dummy = -1); 252 | PASCAL_SUBTRAP(GetFrontProcess, 0xA88F, 0x0039, OSDispatch); 253 | 254 | # #### 255 | 256 | - function: 257 | name: SetFrontProcess 258 | return: OSErr 259 | args: 260 | - name: serial_number 261 | type: ProcessSerialNumber* 262 | dispatcher: OSDispatch 263 | selector: 0x003B 264 | executor: C_ 265 | 266 | # #### 267 | 268 | - function: 269 | name: WakeUpProcess 270 | return: OSErr 271 | args: 272 | - name: serial_number 273 | type: ProcessSerialNumber* 274 | dispatcher: OSDispatch 275 | selector: 0x003C 276 | executor: C_ 277 | 278 | # #### 279 | 280 | - function: 281 | name: GetProcessSerialNumberFromPortName 282 | return: OSErr 283 | args: 284 | - name: port_name 285 | type: PPCPortPtr 286 | - name: serial_number 287 | type: ProcessSerialNumber* 288 | dispatcher: OSDispatch 289 | selector: 0x0035 290 | executor: C_ 291 | 292 | # #### 293 | 294 | - function: 295 | name: GetPortNameFromProcessSerialNumber 296 | return: OSErr 297 | args: 298 | - name: port_name 299 | type: PPCPortPtr 300 | - name: serial_number 301 | type: ProcessSerialNumber* 302 | dispatcher: OSDispatch 303 | selector: 0x0046 304 | executor: C_ 305 | 306 | # #### 307 | 308 | - function: 309 | name: LaunchApplication 310 | return: OSErr 311 | args: 312 | - name: params 313 | type: LaunchParamBlockRec* 314 | register: A0 315 | executor: true 316 | trap: 0xA9F2 317 | returnreg: D0 318 | 319 | # #### 320 | 321 | - only-for: Executor 322 | verbatim: | 323 | extern OSErr NewLaunch(ConstStringPtr appl, INTEGER vrefnum, 324 | LaunchParamBlockRec *lpbp); 325 | -------------------------------------------------------------------------------- /multiversal.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "array", 3 | "items": { 4 | "allOf": [ 5 | { 6 | "type": "object", 7 | "properties": { 8 | "not-for": { 9 | "type": "string" 10 | }, 11 | "only-for": { 12 | "type": "string" 13 | }, 14 | "api": { 15 | "type": "string" 16 | } 17 | } 18 | }, 19 | { 20 | "oneOf": [ 21 | { 22 | "type": "object", 23 | "required": [ "enum" ], 24 | "properties": { "enum": { "$ref": "#/definitions/enum" } } 25 | }, 26 | { 27 | "type": "object", 28 | "required": [ "struct" ], 29 | "properties": { "struct": { "$ref": "#/definitions/struct" } } 30 | }, 31 | { 32 | "type": "object", 33 | "required": [ "union" ], 34 | "properties": { "union": { "$ref": "#/definitions/union" } } 35 | }, 36 | { 37 | "type": "object", 38 | "required": [ "function" ], 39 | "properties": { "function": { "$ref": "#/definitions/function" } } 40 | }, 41 | { 42 | "type": "object", 43 | "required": [ "funptr" ], 44 | "properties": { "funptr": { "$ref": "#/definitions/funptr" } } 45 | }, 46 | { 47 | "type": "object", 48 | "required": [ "lowmem" ], 49 | "properties": { "lowmem": { "$ref": "#/definitions/lowmem" } } 50 | }, 51 | { 52 | "type": "object", 53 | "required": [ "verbatim" ], 54 | "properties": { "verbatim": { "$ref": "#/definitions/verbatim" } } 55 | }, 56 | { 57 | "type": "object", 58 | "required": [ "typedef" ], 59 | "properties": { "typedef": { "$ref": "#/definitions/typedef" } } 60 | }, 61 | { 62 | "type": "object", 63 | "required": [ "common" ], 64 | "properties": { "common": { "$ref": "#/definitions/common" } } 65 | }, 66 | { 67 | "type": "object", 68 | "required": [ "dispatcher" ], 69 | "properties": { "dispatcher": { "$ref": "#/definitions/dispatcher" } } 70 | } 71 | ] 72 | } 73 | ] 74 | }, 75 | "definitions": { 76 | "expr": { 77 | "oneOf": [ { "type": "string" }, { "type": "integer" } ] 78 | }, 79 | "enum": { 80 | "type": "object", 81 | "properties": { 82 | "values": { 83 | "type": "array", 84 | "items": { 85 | "type": "object", 86 | "properties": { 87 | "name": { "type": "string" }, 88 | "value": { "$ref": "#/definitions/expr" }, 89 | "old_name": { "type": "string" } 90 | }, 91 | "required": ["name"] 92 | } 93 | } 94 | }, 95 | "required": ["values"] 96 | }, 97 | "struct": { 98 | "type": "object" 99 | }, 100 | "union": { 101 | "type": "object" 102 | }, 103 | "function": { 104 | "type": "object", 105 | "properties": { 106 | "name": { "type": "string" }, 107 | "return": { "type": "string" }, 108 | "args": { 109 | "type": "array", 110 | "items": { 111 | "type": "object", 112 | "properties": { 113 | "name": { "type": "string" }, 114 | "type": { "type": "string" }, 115 | "register": { "$ref": "#/definitions/reg" } 116 | }, 117 | "required": [ "type" ] 118 | } 119 | }, 120 | "trap": { "type": "integer" }, 121 | "inline": { "type": "string" }, 122 | "noinline": { "type": "string" }, 123 | "executor": { "oneOf": [ {"type":"string"}, {"type":"boolean"}] }, 124 | "returnreg": { "$ref": "#/definitions/reg" }, 125 | "variants": { "type": "array", "items": { "type": "string" }}, 126 | "executor_extras": { "type": "string" }, 127 | "m68k-inline": { "type": "array", "items": { "type": "integer" }}, 128 | "dispatcher": { "type": "string" }, 129 | "selector": { "type": "integer" }, 130 | "file_trap": { "oneOf": [ {"type":"string"}, {"type":"boolean"}] }, 131 | "comment": { "type": "string" }, 132 | "old_name": { "type": "string" } 133 | }, 134 | "additionalProperties": false, 135 | "required": [ "name" ] 136 | }, 137 | "funptr": { 138 | "type": "object", 139 | "properties": { 140 | "name": { "type": "string" }, 141 | "return": { "type": "string" }, 142 | "args": { 143 | "type": "array", 144 | "items": { 145 | "type": "object", 146 | "properties": { 147 | "name": { "type": "string" }, 148 | "type": { "type": "string" }, 149 | "register": { "$ref": "#/definitions/reg" } 150 | }, 151 | "required": [ "type" ] 152 | } 153 | }, 154 | "returnreg": { "$ref": "#/definitions/reg" }, 155 | "comment": { "type": "string" }, 156 | "callconv": { "type": "string" } 157 | }, 158 | "additionalProperties": false, 159 | "required": [ "name" ] 160 | }, 161 | "lowmem": { 162 | "type": "object", 163 | "properties": { 164 | "name": { "type": "string" }, 165 | "type": { "type": "string" }, 166 | "address": { "type": "integer" }, 167 | "comment": { "type": "string" } 168 | }, 169 | "additionalProperties": false, 170 | "required": [ "name", "type", "address" ] 171 | }, 172 | "verbatim": { 173 | "type": "string" 174 | }, 175 | "typedef": { 176 | "type": "object", 177 | "properties": { 178 | "name": { "type": "string" }, 179 | "type": { "type": "string" }, 180 | "comment": { "type": "string" } 181 | }, 182 | "required": [ "name", "type" ], 183 | "additionalProperties": false 184 | }, 185 | "common": { 186 | "type": "object" 187 | }, 188 | "dispatcher": { 189 | "type": "object" 190 | }, 191 | "reg": { 192 | "type": "string" 193 | } 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /defs/MixedMode.yaml: -------------------------------------------------------------------------------- 1 | - typedef: 2 | name: ISAType 3 | type: uint8_t 4 | 5 | # #### 6 | 7 | - typedef: 8 | name: CallingConventionType 9 | type: uint16_t 10 | 11 | # #### 12 | 13 | - typedef: 14 | name: ProcInfoType 15 | type: uint32_t 16 | 17 | # #### 18 | 19 | - typedef: 20 | name: RegisterSelectorType 21 | type: uint16_t 22 | 23 | # #### 24 | 25 | - typedef: 26 | name: RoutineFlagsType 27 | type: uint16_t 28 | 29 | # #### 30 | 31 | - enum: 32 | values: 33 | - name: kM68kISA 34 | value: 0 35 | - name: kPowerPCISA 36 | value: 1 37 | 38 | # #### 39 | 40 | - enum: 41 | values: 42 | - name: kPascalStackBased 43 | - name: kCStackBased 44 | - name: kRegisterBased 45 | - name: kThinkCStackBased 46 | value: 5 47 | - name: kD0DispatchedPascalStackBased 48 | value: 8 49 | - name: kD0DispatchedCStackBased 50 | value: 9 51 | - name: kD1DispatchedPascalStackBased 52 | value: 12 53 | - name: kStackDispatchedPascalStackBased 54 | value: 14 55 | - name: kSpecialCase 56 | 57 | # #### 58 | 59 | - struct: 60 | name: PPCProcDescriptor 61 | members: 62 | - name: code 63 | type: uint32_t 64 | - name: rtoc 65 | type: uint32_t 66 | 67 | # #### 68 | 69 | - typedef: 70 | name: RDFlagsType 71 | type: uint8_t 72 | 73 | # #### 74 | 75 | - struct: 76 | name: RoutineRecord 77 | members: 78 | - name: procInfo 79 | type: ProcInfoType 80 | - name: reserved1 81 | type: uint8_t 82 | - name: ISA 83 | type: ISAType 84 | - name: routineFlags 85 | type: RoutineFlagsType 86 | - name: procDescriptor 87 | type: ProcPtr 88 | - name: reserved2 89 | type: uint32_t 90 | - name: selector 91 | type: uint32_t 92 | size: 20 93 | 94 | # #### 95 | 96 | - struct: 97 | name: RoutineDescriptor 98 | members: 99 | - name: goMixedModeTrap 100 | type: uint16_t 101 | - name: version 102 | type: uint8_t 103 | - name: routineDescriptorFlags 104 | type: RDFlagsType 105 | - name: reserved1 106 | type: uint32_t 107 | - name: reserved2 108 | type: uint8_t 109 | - name: selectorInfo 110 | type: uint8_t 111 | - name: routineCount 112 | type: uint16_t 113 | - name: routineRecords 114 | type: RoutineRecord[1] 115 | size: 32 116 | 117 | # #### 118 | 119 | - enum: 120 | values: 121 | - name: MIXED_MODE_TRAP 122 | value: 0xAAFE 123 | 124 | # #### 125 | 126 | - enum: 127 | values: 128 | - name: kRoutineDescriptorVersion 129 | value: 7 130 | 131 | # #### 132 | 133 | - enum: 134 | values: 135 | - name: kSelectorsAreNotIndexable 136 | value: 0 137 | 138 | # #### 139 | 140 | - enum: 141 | values: 142 | - name: kNoByteCode 143 | - name: kOneByteCode 144 | - name: kTwoByteCode 145 | - name: kFourByteCode 146 | 147 | # #### 148 | 149 | - enum: 150 | values: 151 | - name: kCallingConventionWidth 152 | value: 4 153 | 154 | # #### 155 | 156 | - enum: 157 | values: 158 | - name: kStackParameterPhase 159 | value: 6 160 | 161 | # #### 162 | 163 | - enum: 164 | values: 165 | - name: kStackParameterWidth 166 | value: 2 167 | 168 | # #### 169 | 170 | - enum: 171 | values: 172 | - name: kResultSizeWidth 173 | value: 2 174 | 175 | # #### 176 | 177 | - enum: 178 | values: 179 | - name: kRegisterD0 180 | value: 0 181 | - name: kRegisterD1 182 | comment: | 183 | 1 184 | - name: kRegisterD2 185 | comment: | 186 | 2 187 | - name: kRegisterD3 188 | comment: | 189 | 3 190 | - name: kRegisterA0 191 | comment: | 192 | 4 193 | - name: kRegisterA1 194 | comment: | 195 | 5 196 | - name: kRegisterA2 197 | comment: | 198 | 6 199 | - name: kRegisterA3 200 | comment: | 201 | 7 202 | - name: kRegisterD4 203 | comment: | 204 | 8 205 | - name: kRegisterD5 206 | comment: | 207 | 9 208 | - name: kRegisterD6 209 | comment: | 210 | 10 211 | - name: kREgisterD7 212 | comment: | 213 | 11 214 | - name: kRegisterA4 215 | comment: | 216 | 12 217 | - name: kRegisterA5 218 | comment: | 219 | 13 220 | - name: kRegisterA6 221 | comment: | 222 | 14 223 | - name: kCCRegisterCBit 224 | value: 16 225 | - name: kCCRegisterVBit 226 | comment: | 227 | 17 228 | - name: kCCRegisterZBit 229 | comment: | 230 | 18 231 | - name: kCCRegisterNBit 232 | comment: | 233 | 19 234 | - name: kCCRegisterXBit 235 | comment: | 236 | 20 237 | 238 | # #### 239 | 240 | - typedef: 241 | name: UniversalProcPtr 242 | type: RoutineDescriptor* 243 | 244 | # #### 245 | 246 | - only-for: Executor 247 | verbatim: | 248 | #define RESULT_SIZE(n) ((n) << kCallingConventionWidth) 249 | #define STACK_ROUTINE_PARAMETER(arg, n) \ 250 | ((n) << (kStackParameterPhase + ((arg)-1) * kStackParameterWidth)) 251 | 252 | # #### 253 | 254 | - dispatcher: 255 | name: MixedModeDispatch 256 | trap: 0xAA59 257 | selector-location: D0W 258 | 259 | # #### 260 | 261 | - function: 262 | name: NewRoutineDescriptor 263 | return: UniversalProcPtr 264 | args: 265 | - name: proc 266 | type: ProcPtr 267 | - name: info 268 | type: ProcInfoType 269 | - name: isa 270 | type: ISAType 271 | dispatcher: MixedModeDispatch 272 | selector: 0x0000 273 | executor: C_ 274 | 275 | # #### 276 | 277 | - function: 278 | name: DisposeRoutineDescriptor 279 | args: 280 | - name: ptr 281 | type: UniversalProcPtr 282 | dispatcher: MixedModeDispatch 283 | selector: 0x0001 284 | executor: C_ 285 | 286 | # #### 287 | 288 | - function: 289 | name: NewFatRoutineDescriptor 290 | return: UniversalProcPtr 291 | args: 292 | - name: m68k 293 | type: ProcPtr 294 | - name: ppc 295 | type: ProcPtr 296 | - name: info 297 | type: ProcInfoType 298 | dispatcher: MixedModeDispatch 299 | selector: 0x0002 300 | executor: C_ 301 | 302 | # #### 303 | 304 | - function: 305 | name: SaveMixedModeState 306 | return: OSErr 307 | args: 308 | - name: statep 309 | type: void* 310 | - name: vers 311 | type: uint32_t 312 | dispatcher: MixedModeDispatch 313 | selector: 0x0003 314 | executor: C_ 315 | 316 | # #### 317 | 318 | - function: 319 | name: RestoreMixedModeState 320 | return: OSErr 321 | args: 322 | - name: statep 323 | type: void* 324 | - name: vers 325 | type: uint32_t 326 | dispatcher: MixedModeDispatch 327 | selector: 0x0004 328 | executor: C_ 329 | 330 | # #### 331 | 332 | - not-for: executor 333 | function: 334 | name: CallUniversalProc 335 | return: LONGINT 336 | args: 337 | - name: theProcPtr 338 | type: UniversalProcPtr 339 | - name: procInfo 340 | type: ProcInfoType 341 | - type: ... 342 | - only-for: executor 343 | function: 344 | name: CallUniversalProc 345 | executor: C_ 346 | comment: | 347 | Executor's version does not declare variable arguments. 348 | We get them directly from the PowerPC stack instead. 349 | 350 | return: LONGINT 351 | args: 352 | - name: theProcPtr 353 | type: UniversalProcPtr 354 | - name: procInfo 355 | type: ProcInfoType 356 | 357 | # #### 358 | 359 | - only-for: Executor 360 | verbatim: | 361 | extern uint32_t ModeSwitch(UniversalProcPtr theProcPtr, ProcInfoType procInfo, ISAType fromISA); 362 | -------------------------------------------------------------------------------- /defs/HelpMgr.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: HMStringResType 3 | members: 4 | - name: hmmResID 5 | type: INTEGER 6 | - name: hmmIndex 7 | type: INTEGER 8 | size: 4 9 | 10 | # #### 11 | 12 | - struct: 13 | name: HMMessageRecord 14 | members: 15 | - name: hmmHelpType 16 | type: INTEGER 17 | - name: u 18 | union: 19 | - name: hmmString 20 | type: Str255 21 | - name: hmmPict 22 | type: INTEGER 23 | - name: hmmStringRes 24 | type: HMStringResType 25 | - name: hmmTEHandle 26 | type: TEHandle 27 | - name: hmmPictHandle 28 | type: PicHandle 29 | - name: hmmTERes 30 | type: INTEGER 31 | - name: hmmSTRRes 32 | type: INTEGER 33 | size: 258 34 | 35 | # #### 36 | 37 | - typedef: 38 | name: HMMessageRecPtr 39 | type: HMMessageRecord* 40 | 41 | # #### 42 | 43 | - enum: 44 | values: 45 | - name: hmHelpDisabled 46 | value: -850 47 | - name: hmBalloonAborted 48 | value: -853 49 | - name: hmSameAsLastBalloon 50 | value: -854 51 | - name: hmHelpManagerNotInited 52 | value: -855 53 | - name: hmSkippedBalloon 54 | value: -857 55 | - name: hmWrongVersion 56 | value: -858 57 | - name: hmUnknownHelpType 58 | value: -859 59 | - name: hmOperationUnsupported 60 | value: -861 61 | - name: hmNoBalloonUp 62 | value: -862 63 | - name: hmCloseViewActive 64 | value: -863 65 | 66 | # #### 67 | 68 | - dispatcher: 69 | name: Pack14 70 | trap: 0xA830 71 | selector-location: D0W 72 | comment: | 73 | & 0xFF ? ### 74 | 75 | # #### 76 | 77 | - function: 78 | name: HMGetBalloons 79 | return: Boolean 80 | dispatcher: Pack14 81 | selector: 0x0003 82 | executor: C_ 83 | 84 | # #### 85 | 86 | - function: 87 | name: HMSetBalloons 88 | return: OSErr 89 | args: 90 | - name: flag 91 | type: Boolean 92 | dispatcher: Pack14 93 | selector: 0x0104 94 | executor: C_ 95 | 96 | # #### 97 | 98 | - function: 99 | name: HMIsBalloon 100 | return: Boolean 101 | dispatcher: Pack14 102 | selector: 0x0007 103 | executor: C_ 104 | 105 | # #### 106 | 107 | - function: 108 | name: HMShowBalloon 109 | return: OSErr 110 | args: 111 | - name: msgp 112 | type: HMMessageRecord* 113 | - name: tip 114 | type: Point 115 | - name: alternaterectp 116 | type: RectPtr 117 | - name: tipprocptr 118 | type: Ptr 119 | - name: proc 120 | type: INTEGER 121 | - name: variant 122 | type: INTEGER 123 | - name: method 124 | type: INTEGER 125 | dispatcher: Pack14 126 | selector: 0x0B01 127 | executor: C_ 128 | 129 | # #### 130 | 131 | - function: 132 | name: HMShowMenuBalloon 133 | return: OSErr 134 | args: 135 | - name: item 136 | type: INTEGER 137 | - name: menuid 138 | type: INTEGER 139 | - name: flags 140 | type: LONGINT 141 | - name: itemreserved 142 | type: LONGINT 143 | - name: tip 144 | type: Point 145 | - name: alternaterectp 146 | type: RectPtr 147 | - name: tipproc 148 | type: Ptr 149 | - name: proc 150 | type: INTEGER 151 | - name: variant 152 | type: INTEGER 153 | dispatcher: Pack14 154 | selector: 0x0E05 155 | executor: C_ 156 | 157 | # #### 158 | 159 | - function: 160 | name: HMRemoveBalloon 161 | return: OSErr 162 | dispatcher: Pack14 163 | selector: 0x0002 164 | executor: C_ 165 | 166 | # #### 167 | 168 | - function: 169 | name: HMGetHelpMenuHandle 170 | return: OSErr 171 | args: 172 | - name: mhp 173 | type: MenuHandle* 174 | dispatcher: Pack14 175 | selector: 0x0200 176 | executor: C_ 177 | 178 | # #### 179 | 180 | - function: 181 | name: HMGetFont 182 | return: OSErr 183 | args: 184 | - name: fontp 185 | type: INTEGER* 186 | dispatcher: Pack14 187 | selector: 0x020A 188 | executor: C_ 189 | 190 | # #### 191 | 192 | - function: 193 | name: HMGetFontSize 194 | return: OSErr 195 | args: 196 | - name: sizep 197 | type: INTEGER* 198 | dispatcher: Pack14 199 | selector: 0x020B 200 | executor: C_ 201 | 202 | # #### 203 | 204 | - function: 205 | name: HMSetFont 206 | return: OSErr 207 | args: 208 | - name: font 209 | type: INTEGER 210 | dispatcher: Pack14 211 | selector: 0x0108 212 | executor: C_ 213 | 214 | # #### 215 | 216 | - function: 217 | name: HMSetFontSize 218 | return: OSErr 219 | args: 220 | - name: size 221 | type: INTEGER 222 | dispatcher: Pack14 223 | selector: 0x0109 224 | executor: C_ 225 | 226 | # #### 227 | 228 | - function: 229 | name: HMSetDialogResID 230 | return: OSErr 231 | args: 232 | - name: resid 233 | type: INTEGER 234 | dispatcher: Pack14 235 | selector: 0x010C 236 | executor: C_ 237 | 238 | # #### 239 | 240 | - function: 241 | name: HMGetDialogResID 242 | return: OSErr 243 | args: 244 | - name: residp 245 | type: INTEGER* 246 | dispatcher: Pack14 247 | selector: 0x0213 248 | executor: C_ 249 | 250 | # #### 251 | 252 | - function: 253 | name: HMSetMenuResID 254 | return: OSErr 255 | args: 256 | - name: menuid 257 | type: INTEGER 258 | - name: resid 259 | type: INTEGER 260 | dispatcher: Pack14 261 | selector: 0x020D 262 | executor: C_ 263 | 264 | # #### 265 | 266 | - function: 267 | name: HMGetMenuResID 268 | return: OSErr 269 | args: 270 | - name: menuidp 271 | type: INTEGER* 272 | - name: residp 273 | type: INTEGER* 274 | dispatcher: Pack14 275 | selector: 0x0314 276 | executor: C_ 277 | 278 | # #### 279 | 280 | - function: 281 | name: HMScanTemplateItems 282 | return: OSErr 283 | args: 284 | - name: whichid 285 | type: INTEGER 286 | - name: whicresfile 287 | type: INTEGER 288 | - name: whictype 289 | type: ResType 290 | dispatcher: Pack14 291 | selector: 0x0410 292 | executor: C_ 293 | 294 | # #### 295 | 296 | - function: 297 | name: HMBalloonRect 298 | return: OSErr 299 | args: 300 | - name: messp 301 | type: HMMessageRecord* 302 | - name: rectp 303 | type: Rect* 304 | dispatcher: Pack14 305 | selector: 0x040E 306 | executor: C_ 307 | 308 | # #### 309 | 310 | - function: 311 | name: HMBalloonPict 312 | return: OSErr 313 | args: 314 | - name: messp 315 | type: HMMessageRecord* 316 | - name: pictp 317 | type: PicHandle* 318 | dispatcher: Pack14 319 | selector: 0x040F 320 | executor: C_ 321 | 322 | # #### 323 | 324 | - function: 325 | name: HMGetBalloonWindow 326 | return: OSErr 327 | args: 328 | - name: windowpp 329 | type: WindowPtr* 330 | dispatcher: Pack14 331 | selector: 0x0215 332 | executor: C_ 333 | 334 | # #### 335 | 336 | - function: 337 | name: HMExtractHelpMsg 338 | return: OSErr 339 | args: 340 | - name: type 341 | type: ResType 342 | - name: resid 343 | type: INTEGER 344 | - name: msg 345 | type: INTEGER 346 | - name: state 347 | type: INTEGER 348 | - name: helpmsgp 349 | type: HMMessageRecord* 350 | dispatcher: Pack14 351 | selector: 0x0711 352 | executor: C_ 353 | 354 | # #### 355 | 356 | - function: 357 | name: HMGetIndHelpMsg 358 | return: OSErr 359 | args: 360 | - name: type 361 | type: ResType 362 | - name: resid 363 | type: INTEGER 364 | - name: msg 365 | type: INTEGER 366 | - name: state 367 | type: INTEGER 368 | - name: options 369 | type: LONGINT* 370 | - name: tip 371 | type: Point 372 | - name: altrectp 373 | type: Rect* 374 | - name: theprocp 375 | type: INTEGER* 376 | - name: variantp 377 | type: INTEGER* 378 | - name: helpmsgp 379 | type: HMMessageRecord* 380 | - name: count 381 | type: INTEGER* 382 | dispatcher: Pack14 383 | selector: 0x1306 384 | executor: C_ 385 | -------------------------------------------------------------------------------- /defs/CodeFragments.yaml: -------------------------------------------------------------------------------- 1 | - only-for: Executor 2 | verbatim: | 3 | const std::nullptr_t kUnresolvedCFragSymbolAddress = nullptr; 4 | 5 | # #### 6 | 7 | - struct: 8 | name: cfrg_resource_t 9 | members: 10 | - name: reserved0 11 | type: uint32_t 12 | - name: reserved1 13 | type: uint32_t 14 | - name: version 15 | type: uint32_t 16 | - name: reserved2 17 | type: uint32_t 18 | - name: reserved3 19 | type: uint32_t 20 | - name: reserved4 21 | type: uint32_t 22 | - name: reserved5 23 | type: uint32_t 24 | - name: n_descripts 25 | type: int32_t 26 | size: 32 27 | 28 | # #### 29 | 30 | - only-for: Executor 31 | verbatim: | 32 | #define CFRG_VERSION(cfrg) ((cfgr)->version) 33 | #define CFRG_N_DESCRIPTS(cfrg) ((cfrg)->n_descripts) 34 | 35 | # #### 36 | 37 | - struct: 38 | name: cfir_t 39 | members: 40 | - name: isa 41 | type: OSType 42 | - name: update_level 43 | type: uint32_t 44 | - name: current_version 45 | type: uint32_t 46 | - name: oldest_definition_version 47 | type: uint32_t 48 | - name: stack_size 49 | type: uint32_t 50 | - name: appl_library_dir 51 | type: int16_t 52 | - name: fragment_type 53 | type: uint8_t 54 | - name: fragment_location 55 | type: uint8_t 56 | - name: offset_to_fragment 57 | type: int32_t 58 | - name: fragment_length 59 | type: int32_t 60 | - name: reserved0 61 | type: uint32_t 62 | - name: reserved1 63 | type: uint32_t 64 | - name: cfir_length 65 | type: uint16_t 66 | - name: name 67 | type: uint8_t[1] 68 | size: 44 69 | 70 | # #### 71 | 72 | - only-for: Executor 73 | verbatim: | 74 | #define CFIR_ISA(cfir) ((cfir)->isa) 75 | #define CFIR_TYPE(cfir) ((cfir)->fragment_type) 76 | #define CFIR_LOCATION(cfir) ((cfir)->fragment_location) 77 | #define CFIR_LENGTH(cfir) ((cfir)->cfir_length) 78 | #define CFIR_OFFSET_TO_FRAGMENT(cfir) ((cfir)->offset_to_fragment) 79 | #define CFIR_FRAGMENT_LENGTH(cfir) ((cfir)->fragment_length) 80 | #define CFIR_NAME(cfir) ((cfir)->name) 81 | 82 | # #### 83 | 84 | - enum: 85 | values: 86 | - name: kImportLibraryCFrag 87 | - name: kApplicationCFrag 88 | - name: kDropInAdditionCFrag 89 | - name: kStubLibraryCFrag 90 | - name: kWeakStubLibraryCFrag 91 | 92 | # #### 93 | 94 | - enum: 95 | values: 96 | - name: kWholeFork 97 | value: 0 98 | 99 | # #### 100 | 101 | - enum: 102 | values: 103 | - name: kInMem 104 | - name: kOnDiskFlat 105 | - name: kOnDiskSegmented 106 | 107 | # #### 108 | 109 | - enum: 110 | values: 111 | - name: kPowerPCArch 112 | value: "'pwpc'" 113 | - name: kMotorola68KArch 114 | value: "'m68k'" 115 | 116 | # #### 117 | 118 | - enum: 119 | values: 120 | - name: kLoadLib 121 | value: 1 122 | comment: | 123 | deprecated 124 | - name: kReferenceCFrag 125 | value: 1 126 | - name: kFindLib 127 | value: 2 128 | - name: kLoadNewCopy 129 | value: 5 130 | 131 | # #### 132 | 133 | - typedef: 134 | name: LoadFlags 135 | type: uint32_t 136 | 137 | # #### 138 | 139 | - struct: 140 | name: MemFragment 141 | members: 142 | - name: address 143 | type: Ptr 144 | - name: length 145 | type: uint32_t 146 | - name: inPlace 147 | type: Boolean 148 | - name: reservedA 149 | type: uint8_t 150 | - name: reservedB 151 | type: uint16_t 152 | size: 12 153 | 154 | # #### 155 | 156 | - struct: 157 | name: DiskFragment 158 | members: 159 | - name: fileSpec 160 | type: FSSpecPtr 161 | - name: offset 162 | type: uint32_t 163 | - name: length 164 | type: uint32_t 165 | size: 12 166 | 167 | # #### 168 | 169 | - struct: 170 | name: SegmentedFragment 171 | members: 172 | - name: fileSpec 173 | type: FSSpecPtr 174 | - name: rsrcType 175 | type: OSType 176 | - name: rsrcID 177 | type: INTEGER 178 | - name: reservedA 179 | type: uint16_t 180 | size: 12 181 | 182 | # #### 183 | 184 | - struct: 185 | name: FragmentLocator 186 | members: 187 | - name: where 188 | type: uint32_t 189 | - name: u 190 | union: 191 | - name: inMem 192 | type: MemFragment 193 | - name: onDisk 194 | type: DiskFragment 195 | - name: inSegs 196 | type: SegmentedFragment 197 | size: 16 198 | 199 | # #### 200 | 201 | - struct: 202 | name: InitBlock 203 | members: 204 | - name: contextID 205 | type: uint32_t 206 | - name: closureID 207 | type: uint32_t 208 | - name: connectionID 209 | type: uint32_t 210 | - name: fragLocator 211 | type: FragmentLocator 212 | - name: libName 213 | type: StringPtr 214 | - name: reserved4 215 | type: uint32_t 216 | size: 36 217 | 218 | # #### 219 | 220 | - struct: 221 | name: CFragConnection 222 | 223 | # #### 224 | 225 | - typedef: 226 | name: ConnectionID 227 | type: CFragConnection* 228 | 229 | # #### 230 | 231 | - struct: 232 | name: CFragClosure 233 | 234 | # #### 235 | 236 | - typedef: 237 | name: CFragClosureID 238 | type: CFragClosure* 239 | 240 | # #### 241 | 242 | - dispatcher: 243 | name: CodeFragmentDispatch 244 | trap: 0xAA5A 245 | selector-location: StackW 246 | 247 | # #### 248 | 249 | - function: 250 | name: GetDiskFragment 251 | return: OSErr 252 | args: 253 | - name: fsp 254 | type: FSSpecPtr 255 | - name: offset 256 | type: LONGINT 257 | - name: length 258 | type: LONGINT 259 | - name: fragname 260 | type: ConstStr63Param 261 | - name: flags 262 | type: LoadFlags 263 | - name: connp 264 | type: ConnectionID* 265 | - name: mainAddrp 266 | type: Ptr* 267 | - name: errname 268 | type: Str255 269 | dispatcher: CodeFragmentDispatch 270 | selector: 0x0002 271 | executor: C_ 272 | 273 | # #### 274 | 275 | - typedef: 276 | name: SymClass 277 | type: uint8_t 278 | 279 | # #### 280 | 281 | - function: 282 | name: FindSymbol 283 | return: OSErr 284 | args: 285 | - name: connID 286 | type: ConnectionID 287 | - name: symName 288 | type: ConstStr255Param 289 | - name: symAddr 290 | type: Ptr* 291 | - name: symClass 292 | type: SymClass* 293 | dispatcher: CodeFragmentDispatch 294 | selector: 0x0005 295 | executor: C_ 296 | 297 | # #### 298 | 299 | - function: 300 | name: CloseConnection 301 | return: OSErr 302 | args: 303 | - name: cidp 304 | type: ConnectionID* 305 | dispatcher: CodeFragmentDispatch 306 | selector: 0x0004 307 | executor: C_ 308 | 309 | # #### 310 | 311 | - function: 312 | name: GetSharedLibrary 313 | return: OSErr 314 | args: 315 | - name: library 316 | type: ConstStr63Param 317 | - name: arch 318 | type: OSType 319 | - name: loadflags 320 | type: LoadFlags 321 | - name: cidp 322 | type: ConnectionID* 323 | - name: mainaddrp 324 | type: Ptr* 325 | - name: errName 326 | type: Str255 327 | dispatcher: CodeFragmentDispatch 328 | selector: 0x0001 329 | executor: C_ 330 | 331 | # #### 332 | 333 | - function: 334 | name: GetMemFragment 335 | return: OSErr 336 | args: 337 | - name: addr 338 | type: void* 339 | - name: length 340 | type: uint32_t 341 | - name: fragname 342 | type: ConstStr63Param 343 | - name: flags 344 | type: LoadFlags 345 | - name: connp 346 | type: ConnectionID* 347 | - name: mainAddrp 348 | type: Ptr* 349 | - name: errname 350 | type: Str255 351 | dispatcher: CodeFragmentDispatch 352 | selector: 0x0003 353 | executor: C_ 354 | 355 | # #### 356 | 357 | - function: 358 | name: CountSymbols 359 | return: OSErr 360 | args: 361 | - name: id 362 | type: ConnectionID 363 | - name: countp 364 | type: LONGINT* 365 | dispatcher: CodeFragmentDispatch 366 | selector: 0x0006 367 | executor: C_ 368 | 369 | # #### 370 | 371 | - function: 372 | name: GetIndSymbol 373 | return: OSErr 374 | args: 375 | - name: id 376 | type: ConnectionID 377 | - name: index 378 | type: LONGINT 379 | - name: name 380 | type: Str255 381 | - name: addrp 382 | type: Ptr* 383 | - name: classp 384 | type: SymClass* 385 | dispatcher: CodeFragmentDispatch 386 | selector: 0x0007 387 | executor: C_ 388 | -------------------------------------------------------------------------------- /defs/DeviceMgr.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: DCtlEntry 3 | 4 | # #### 5 | 6 | - typedef: 7 | name: DCtlPtr 8 | type: DCtlEntry* 9 | 10 | # #### 11 | 12 | - typedef: 13 | name: DCtlHandle 14 | type: DCtlPtr* 15 | 16 | # #### 17 | 18 | - typedef: 19 | name: DCtlHandlePtr 20 | type: DCtlHandle* 21 | 22 | # #### 23 | 24 | - funptr: 25 | return: OSErr 26 | args: 27 | - type: ParmBlkPtr 28 | register: A0 29 | - type: DCtlPtr 30 | register: A1 31 | returnreg: D0 32 | name: DriverUPP 33 | 34 | # #### 35 | 36 | - struct: 37 | members: 38 | - name: udrvrOpen 39 | type: DriverUPP 40 | - name: udrvrPrime 41 | type: DriverUPP 42 | comment: | 43 | read and write 44 | - name: udrvrCtl 45 | type: DriverUPP 46 | comment: | 47 | control and killio 48 | - name: udrvrStatus 49 | type: DriverUPP 50 | - name: udrvrClose 51 | type: DriverUPP 52 | - name: udrvrName 53 | type: Str255 54 | name: umacdriver 55 | 56 | # #### 57 | 58 | - typedef: 59 | name: umacdriverptr 60 | type: umacdriver* 61 | 62 | # #### 63 | 64 | - struct: 65 | name: ramdriver 66 | members: 67 | - name: drvrFlags 68 | type: INTEGER 69 | - name: drvrDelay 70 | type: INTEGER 71 | - name: drvrEMask 72 | type: INTEGER 73 | - name: drvrMenu 74 | type: INTEGER 75 | - name: drvrOpen 76 | type: INTEGER 77 | - name: drvrPrime 78 | type: INTEGER 79 | - name: drvrCtl 80 | type: INTEGER 81 | - name: drvrStatus 82 | type: INTEGER 83 | - name: drvrClose 84 | type: INTEGER 85 | - name: drvrName 86 | type: char 87 | size: 20 88 | 89 | # #### 90 | 91 | - typedef: 92 | name: ramdriverptr 93 | type: ramdriver* 94 | 95 | # #### 96 | 97 | - typedef: 98 | name: ramdriverhand 99 | type: ramdriverptr* 100 | 101 | # #### 102 | 103 | - enum: 104 | values: 105 | - name: Open 106 | - name: Prime 107 | - name: Ctl 108 | - name: Stat 109 | - name: Close 110 | name: DriverRoutineType 111 | 112 | # #### 113 | 114 | - struct: 115 | name: DCtlEntry 116 | members: 117 | - name: dCtlDriver 118 | type: umacdriverptr 119 | comment: | 120 | not just Ptr 121 | - name: dCtlFlags 122 | type: INTEGER 123 | - name: dCtlQHdr 124 | type: QHdr 125 | - name: dCtlPosition 126 | type: LONGINT 127 | - name: dCtlStorage 128 | type: Handle 129 | - name: dCtlRefNum 130 | type: INTEGER 131 | - name: dCtlCurTicks 132 | type: LONGINT 133 | - name: dCtlWindow 134 | type: WindowPtr 135 | - name: dCtlDelay 136 | type: INTEGER 137 | - name: dCtlEMask 138 | type: INTEGER 139 | - name: dCtlMenu 140 | type: INTEGER 141 | size: 40 142 | 143 | # #### 144 | 145 | - enum: 146 | values: 147 | - name: asyncTrpBit 148 | value: 1 << 10 149 | - name: noQueueBit 150 | value: 1 << 9 151 | 152 | # #### 153 | 154 | - enum: 155 | values: 156 | - name: NEEDTIMEBIT 157 | value: 1 << 13 158 | 159 | # #### 160 | 161 | - enum: 162 | values: 163 | - name: aRdCmd 164 | value: 2 165 | - name: aWrCmd 166 | value: 3 167 | 168 | # #### 169 | 170 | - enum: 171 | values: 172 | - name: killCode 173 | value: 1 174 | 175 | # #### 176 | 177 | - enum: 178 | values: 179 | - name: NDEVICES 180 | value: 48 181 | 182 | # #### 183 | 184 | - enum: 185 | values: 186 | - name: abortErr 187 | value: -27 188 | - name: badUnitErr 189 | value: -21 190 | - name: controlErr 191 | value: -17 192 | - name: dInstErr 193 | value: -26 194 | - name: dRemovErr 195 | value: -25 196 | - name: notOpenErr 197 | value: -28 198 | - name: openErr 199 | value: -23 200 | - name: readErr 201 | value: -19 202 | - name: statusErr 203 | value: -18 204 | - name: unitEmptyErr 205 | value: -22 206 | - name: writErr 207 | value: -20 208 | 209 | # #### 210 | 211 | - lowmem: 212 | name: UTableBase 213 | type: DCtlHandlePtr 214 | address: 0x11C 215 | comment: | 216 | DeviceMgr IMII-192 (false); 217 | 218 | # #### 219 | 220 | - lowmem: 221 | name: Lvl1DT 222 | type: ProcPtr[8] 223 | address: 0x192 224 | comment: | 225 | DeviceMgr IMII-197 (false); 226 | 227 | # #### 228 | 229 | - lowmem: 230 | name: Lvl2DT 231 | type: ProcPtr[8] 232 | address: 0x1B2 233 | comment: | 234 | DeviceMgr IMII-198 (false); 235 | 236 | # #### 237 | 238 | - lowmem: 239 | name: UnitNtryCnt 240 | type: INTEGER 241 | address: 0x1D2 242 | comment: | 243 | DeviceMgr ThinkC (true-b); 244 | 245 | # #### 246 | 247 | - lowmem: 248 | name: VIA 249 | type: Ptr 250 | address: 0x1D4 251 | comment: | 252 | DeviceMgr IMIII-39 (true-b); 253 | 254 | # #### 255 | 256 | - lowmem: 257 | name: SCCRd 258 | type: Ptr 259 | address: 0x1D8 260 | comment: | 261 | DeviceMgr IMII-199 (false); 262 | 263 | # #### 264 | 265 | - lowmem: 266 | name: SCCWr 267 | type: Ptr 268 | address: 0x1DC 269 | comment: | 270 | DeviceMgr IMII-199 (false); 271 | 272 | # #### 273 | 274 | - lowmem: 275 | name: IWM 276 | type: Ptr 277 | address: 0x1E0 278 | comment: | 279 | DeviceMgr ThinkC (false); 280 | 281 | # #### 282 | 283 | - lowmem: 284 | name: ExtStsDT 285 | type: ProcPtr[4] 286 | address: 0x2BE 287 | comment: | 288 | DeviceMgr IMII-199 (false); 289 | 290 | # #### 291 | 292 | - lowmem: 293 | name: JFetch 294 | type: Ptr 295 | address: 0x8F4 296 | comment: | 297 | DeviceMgr IMII-194 (false); 298 | 299 | # #### 300 | 301 | - lowmem: 302 | name: JStash 303 | type: Ptr 304 | address: 0x8F8 305 | comment: | 306 | DeviceMgr IMII-195 (false); 307 | 308 | # #### 309 | 310 | - lowmem: 311 | name: JIODone 312 | type: Ptr 313 | address: 0x8FC 314 | comment: | 315 | DeviceMgr IMII-195 (false); 316 | 317 | # #### 318 | 319 | - function: 320 | name: PBControl 321 | return: OSErr 322 | args: 323 | - name: pbp 324 | type: ParmBlkPtr 325 | register: A0 326 | - name: a 327 | type: Boolean 328 | register: TrapBit<0x400> 329 | executor: true 330 | file_trap: true 331 | trap: 0xA004 332 | returnreg: D0 333 | variants: 334 | - PBControlSync 335 | - PBControlAsync 336 | 337 | # #### 338 | 339 | - function: 340 | name: PBStatus 341 | return: OSErr 342 | args: 343 | - name: pbp 344 | type: ParmBlkPtr 345 | register: A0 346 | - name: a 347 | type: Boolean 348 | register: TrapBit<0x400> 349 | executor: true 350 | file_trap: true 351 | trap: 0xA005 352 | returnreg: D0 353 | variants: 354 | - PBStatusSync 355 | - PBStatusAsync 356 | 357 | # #### 358 | 359 | - function: 360 | name: PBKillIO 361 | return: OSErr 362 | args: 363 | - name: pbp 364 | type: ParmBlkPtr 365 | register: A0 366 | - name: a 367 | type: Boolean 368 | register: TrapBit<0x400> 369 | executor: true 370 | file_trap: true 371 | trap: 0xA006 372 | returnreg: D0 373 | variants: 374 | - PBKillIOSync 375 | - PBKillIOAsync 376 | 377 | # #### 378 | 379 | - function: 380 | name: OpenDriver 381 | return: OSErr 382 | args: 383 | - name: name 384 | type: ConstStringPtr 385 | - name: rnp 386 | type: INTEGER* 387 | executor: true 388 | 389 | # #### 390 | 391 | - function: 392 | name: CloseDriver 393 | return: OSErr 394 | args: 395 | - name: rn 396 | type: INTEGER 397 | executor: true 398 | 399 | # #### 400 | 401 | - function: 402 | name: Control 403 | return: OSErr 404 | args: 405 | - name: rn 406 | type: INTEGER 407 | - name: code 408 | type: INTEGER 409 | - name: param 410 | type: const void* 411 | executor: true 412 | 413 | # #### 414 | 415 | - function: 416 | name: Status 417 | return: OSErr 418 | args: 419 | - name: rn 420 | type: INTEGER 421 | - name: code 422 | type: INTEGER 423 | - name: param 424 | type: Ptr 425 | executor: true 426 | 427 | # #### 428 | 429 | - function: 430 | name: KillIO 431 | return: OSErr 432 | args: 433 | - name: rn 434 | type: INTEGER 435 | executor: true 436 | 437 | # #### 438 | 439 | - function: 440 | name: GetDCtlEntry 441 | return: DCtlHandle 442 | args: 443 | - name: rn 444 | type: INTEGER 445 | executor: true 446 | -------------------------------------------------------------------------------- /defs/Finder.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: DTPBRec 3 | members: 4 | - name: qLink 5 | type: QElemPtr 6 | - name: qType 7 | type: INTEGER 8 | - name: ioTrap 9 | type: INTEGER 10 | - name: ioCmdAddr 11 | type: Ptr 12 | - name: ioCompletion 13 | type: ProcPtr 14 | - name: ioResult 15 | type: OSErr 16 | - name: ioNamePtr 17 | type: StringPtr 18 | - name: ioVRefNum 19 | type: INTEGER 20 | - name: ioDTRefNum 21 | type: INTEGER 22 | - name: ioIndex 23 | type: INTEGER 24 | - name: ioTagInfo 25 | type: LONGINT 26 | - name: ioDTBuffer 27 | type: Ptr 28 | - name: ioDTReqCount 29 | type: LONGINT 30 | - name: ioDTActCount 31 | type: LONGINT 32 | - name: filler1 33 | type: SignedByte 34 | - name: ioIconType 35 | type: SignedByte 36 | - name: filler2 37 | type: INTEGER 38 | - name: ioDirID 39 | type: LONGINT 40 | - name: ioFileCreator 41 | type: OSType 42 | - name: ioFileType 43 | type: OSType 44 | - name: ioFiller3 45 | type: LONGINT 46 | - name: ioDTLgLen 47 | type: LONGINT 48 | - name: ioDTPyLen 49 | type: LONGINT 50 | - name: ioFiller4 51 | type: INTEGER[14] 52 | - name: ioAPPLParID 53 | type: LONGINT 54 | size: 104 55 | 56 | # #### 57 | 58 | - typedef: 59 | name: DTPBRecPtr 60 | type: DTPBRec* 61 | 62 | # #### 63 | 64 | - typedef: 65 | name: DTPBPtr 66 | type: DTPBRec* 67 | 68 | # #### 69 | 70 | - function: 71 | name: PBDTGetPath 72 | return: OSErr 73 | args: 74 | - name: dtp 75 | type: DTPBPtr 76 | register: A0 77 | executor: true 78 | dispatcher: FSDispatch 79 | selector: 0x20 80 | returnreg: D0 81 | 82 | # #### 83 | 84 | - function: 85 | name: PBDTCloseDown 86 | return: OSErr 87 | args: 88 | - name: dtp 89 | type: DTPBPtr 90 | register: A0 91 | executor: true 92 | dispatcher: FSDispatch 93 | selector: 0x21 94 | returnreg: D0 95 | 96 | # #### 97 | 98 | - function: 99 | name: PBDTAddIcon 100 | return: OSErr 101 | args: 102 | - name: dtp 103 | type: DTPBPtr 104 | register: A0 105 | - name: async 106 | type: Boolean 107 | register: TrapBit<0x400> 108 | executor: true 109 | file_trap: true 110 | trap: 0xA260 111 | dispatcher: FSDispatch 112 | selector: 0x22 113 | returnreg: D0 114 | variants: 115 | - PBDTAddIconSync 116 | - PBDTAddIconAsync 117 | 118 | # #### 119 | 120 | - function: 121 | name: PBDTGetIcon 122 | return: OSErr 123 | args: 124 | - name: dtp 125 | type: DTPBPtr 126 | register: A0 127 | - name: async 128 | type: Boolean 129 | register: TrapBit<0x400> 130 | executor: true 131 | file_trap: true 132 | trap: 0xA260 133 | dispatcher: FSDispatch 134 | selector: 0x23 135 | returnreg: D0 136 | variants: 137 | - PBDTGetIconSync 138 | - PBDTGetIconAsync 139 | 140 | # #### 141 | 142 | - function: 143 | name: PBDTGetIconInfo 144 | return: OSErr 145 | args: 146 | - name: dtp 147 | type: DTPBPtr 148 | register: A0 149 | - name: async 150 | type: Boolean 151 | register: TrapBit<0x400> 152 | executor: true 153 | file_trap: true 154 | trap: 0xA260 155 | dispatcher: FSDispatch 156 | selector: 0x24 157 | returnreg: D0 158 | variants: 159 | - PBDTGetIconInfoSync 160 | - PBDTGetIconInfoAsync 161 | 162 | # #### 163 | 164 | - function: 165 | name: PBDTAddAPPL 166 | return: OSErr 167 | args: 168 | - name: dtp 169 | type: DTPBPtr 170 | register: A0 171 | - name: async 172 | type: Boolean 173 | register: TrapBit<0x400> 174 | executor: true 175 | file_trap: true 176 | trap: 0xA260 177 | dispatcher: FSDispatch 178 | selector: 0x25 179 | returnreg: D0 180 | variants: 181 | - PBDTAddAPPLSync 182 | - PBDTAddAPPLAsync 183 | 184 | # #### 185 | 186 | - function: 187 | name: PBDTRemoveAPPL 188 | return: OSErr 189 | args: 190 | - name: dtp 191 | type: DTPBPtr 192 | register: A0 193 | - name: async 194 | type: Boolean 195 | register: TrapBit<0x400> 196 | executor: true 197 | file_trap: true 198 | trap: 0xA260 199 | dispatcher: FSDispatch 200 | selector: 0x26 201 | returnreg: D0 202 | variants: 203 | - PBDTRemoveAPPLSync 204 | - PBDTRemoveAPPLAsync 205 | 206 | # #### 207 | 208 | - function: 209 | name: PBDTGetAPPL 210 | return: OSErr 211 | args: 212 | - name: dtp 213 | type: DTPBPtr 214 | register: A0 215 | - name: async 216 | type: Boolean 217 | register: TrapBit<0x400> 218 | executor: true 219 | file_trap: true 220 | trap: 0xA260 221 | dispatcher: FSDispatch 222 | selector: 0x27 223 | returnreg: D0 224 | variants: 225 | - PBDTGetAPPLSync 226 | - PBDTGetAPPLAsync 227 | 228 | # #### 229 | 230 | - function: 231 | name: PBDTSetComment 232 | return: OSErr 233 | args: 234 | - name: dtp 235 | type: DTPBPtr 236 | register: A0 237 | - name: async 238 | type: Boolean 239 | register: TrapBit<0x400> 240 | executor: true 241 | file_trap: true 242 | trap: 0xA260 243 | dispatcher: FSDispatch 244 | selector: 0x28 245 | returnreg: D0 246 | variants: 247 | - PBDTSetCommentSync 248 | - PBDTSetCommentAsync 249 | 250 | # #### 251 | 252 | - function: 253 | name: PBDTRemoveComment 254 | return: OSErr 255 | args: 256 | - name: dtp 257 | type: DTPBPtr 258 | register: A0 259 | - name: async 260 | type: Boolean 261 | register: TrapBit<0x400> 262 | executor: true 263 | file_trap: true 264 | trap: 0xA260 265 | dispatcher: FSDispatch 266 | selector: 0x29 267 | returnreg: D0 268 | variants: 269 | - PBDTRemoveCommentSync 270 | - PBDTRemoveCommentAsync 271 | 272 | # #### 273 | 274 | - function: 275 | name: PBDTGetComment 276 | return: OSErr 277 | args: 278 | - name: dtp 279 | type: DTPBPtr 280 | register: A0 281 | - name: async 282 | type: Boolean 283 | register: TrapBit<0x400> 284 | executor: true 285 | file_trap: true 286 | trap: 0xA260 287 | dispatcher: FSDispatch 288 | selector: 0x2A 289 | returnreg: D0 290 | variants: 291 | - PBDTGetCommentSync 292 | - PBDTGetCommentAsync 293 | 294 | # #### 295 | 296 | - function: 297 | name: PBDTFlush 298 | return: OSErr 299 | args: 300 | - name: dtp 301 | type: DTPBPtr 302 | register: A0 303 | - name: async 304 | type: Boolean 305 | register: TrapBit<0x400> 306 | executor: true 307 | file_trap: true 308 | trap: 0xA260 309 | dispatcher: FSDispatch 310 | selector: 0x2B 311 | returnreg: D0 312 | variants: 313 | - PBDTFlushSync 314 | - PBDTFlushAsync 315 | 316 | # #### 317 | 318 | - function: 319 | name: PBDTReset 320 | return: OSErr 321 | args: 322 | - name: dtp 323 | type: DTPBPtr 324 | register: A0 325 | - name: async 326 | type: Boolean 327 | register: TrapBit<0x400> 328 | executor: true 329 | file_trap: true 330 | trap: 0xA260 331 | dispatcher: FSDispatch 332 | selector: 0x2C 333 | returnreg: D0 334 | variants: 335 | - PBDTResetSync 336 | - PBDTResetAsync 337 | 338 | # #### 339 | 340 | - function: 341 | name: PBDTGetInfo 342 | return: OSErr 343 | args: 344 | - name: dtp 345 | type: DTPBPtr 346 | register: A0 347 | - name: async 348 | type: Boolean 349 | register: TrapBit<0x400> 350 | executor: true 351 | file_trap: true 352 | trap: 0xA260 353 | dispatcher: FSDispatch 354 | selector: 0x2D 355 | returnreg: D0 356 | variants: 357 | - PBDTGetInfoSync 358 | - PBDTGetInfoAsync 359 | 360 | # #### 361 | 362 | - function: 363 | name: PBDTOpenInform 364 | return: OSErr 365 | args: 366 | - name: dtp 367 | type: DTPBPtr 368 | register: A0 369 | executor: true 370 | dispatcher: FSDispatch 371 | selector: 0x2E 372 | returnreg: D0 373 | 374 | # #### 375 | 376 | - function: 377 | name: PBDTDelete 378 | return: OSErr 379 | args: 380 | - name: dtp 381 | type: DTPBPtr 382 | register: A0 383 | - name: async 384 | type: Boolean 385 | register: TrapBit<0x400> 386 | executor: true 387 | file_trap: true 388 | trap: 0xA260 389 | dispatcher: FSDispatch 390 | selector: 0x2F 391 | returnreg: D0 392 | variants: 393 | - PBDTDeleteSync 394 | - PBDTDeleteAsync 395 | -------------------------------------------------------------------------------- /custom/Multiverse.r: -------------------------------------------------------------------------------- 1 | #ifndef _MULTIVERSE_R_ 2 | #define _MULTIVERSE_R_ 3 | 4 | type 'SIZE' 5 | { 6 | boolean reserved; 7 | boolean ignoreSuspendResumeEvents, acceptSuspendResumeEvents; 8 | boolean reserved; 9 | boolean cannotBackground, canBackground; 10 | boolean needsActivateOnFGSwitch, doesActivateOnFGSwitch, multiFinderAware = true; 11 | boolean backgroundAndForeground, onlyBackground; 12 | boolean dontGetFrontClicks, getFrontClicks; 13 | boolean ignoreChildDiedEvents, acceptChildDiedEvents; 14 | boolean not32BitCompatible, is32BitCompatible; 15 | boolean notHighLevelEventAware, isHighLevelEventAware, reserved = false; 16 | boolean onlyLocalHLEvents, localAndRemoteHLEvents, reserved = false; 17 | boolean notStationeryAware, isStationeryAware, reserved = false; 18 | boolean dontUseTextEditServices, useTextEditServices, reserved = false; 19 | boolean notDisplayManagerAware, displayManagerAware, reserved = false; 20 | boolean reserved; 21 | boolean reserved; 22 | 23 | unsigned longint; // preferred 24 | unsigned longint; // minimum 25 | }; 26 | 27 | type 'cfrg' 28 | { 29 | longint = 0; 30 | longint = 0; 31 | longint = 1; // version 32 | longint = 0; 33 | longint = 0; 34 | longint = 0; 35 | longint = 0; 36 | longint = $$CountOf(fragments); 37 | array fragments 38 | { 39 | start: 40 | literal longint kPowerPC = 'pwpc', kPowerPCCFragArch = 'pwpc'; 41 | longint kFullLib = 0, kIsCompleteCFrag = 0, kUpdateLib = 1; 42 | hex longint kNoVersionNum = 0; 43 | hex longint kNoVersionNum = 0; 44 | longint kDefaultStackSize = 0; 45 | integer kNoAppSubFolder = 0; 46 | byte kIsLib = 0, kIsApp = 1, kImportLibraryCFrag = 0, kApplicationCFrag = 1, 47 | kDropInAdditionCFrag = 2, kStubLibraryCFrag = 3, kWeakStubLibraryCFrag = 4; 48 | byte kOnDiskFlat = 1, kDataForkCFragLocator = 1, kOnDiskSegmented = 2; 49 | longint kZeroOffset = 0; 50 | longint kWholeFork = 0, kCFragGoesToEOF = 0; 51 | longint = 0; 52 | longint = 0; 53 | integer = (end[$$ArrayIndex(fragments)] - start[$$ArrayIndex(fragments)]) / 8; 54 | pstring; 55 | align long; 56 | end: 57 | }; 58 | }; 59 | 60 | type 'rdes' 61 | { 62 | hex string = $"AAFE 0700 0000 0000 0000 0000"; 63 | binary longint; // proc info 64 | hex string = $"0001 0007 0000 0020 0000 0000 0000 0000"; 65 | hex string; 66 | }; 67 | 68 | type 'STR ' 69 | { 70 | pstring; 71 | }; 72 | 73 | type 'STR#' 74 | { 75 | integer = $$CountOf(strings); 76 | array strings { pstring; }; 77 | }; 78 | 79 | type 'ICN#' 80 | { 81 | array { hex string[128]; }; 82 | }; 83 | 84 | type 'ics#' 85 | { 86 | array { hex string[32]; }; 87 | }; 88 | 89 | type 'icl8' 90 | { 91 | hex string[1024]; 92 | }; 93 | 94 | type 'ics8' 95 | { 96 | hex string[256]; 97 | }; 98 | 99 | type 'icl4' 100 | { 101 | hex string[512]; 102 | }; 103 | 104 | type 'ics4' 105 | { 106 | hex string[128]; 107 | }; 108 | 109 | type 'FREF' 110 | { 111 | literal longint; 112 | integer; 113 | pstring; 114 | }; 115 | 116 | type 'BNDL' 117 | { 118 | literal longint; 119 | integer; 120 | integer = $$CountOf(types) - 1; 121 | array types 122 | { 123 | literal longint; 124 | integer = $$CountOf(frefs) - 1; 125 | array frefs 126 | { 127 | integer; 128 | integer; 129 | }; 130 | }; 131 | }; 132 | 133 | type 'vers' 134 | { 135 | hex byte; 136 | hex byte; 137 | hex byte development = 0x20, alpha = 0x40, beta = 0x60, release = 0x80; 138 | hex byte; 139 | integer verUS = 0, verAustria = 92; 140 | pstring; 141 | pstring; 142 | }; 143 | 144 | type 'WIND' 145 | { 146 | rect; 147 | integer documentProc, dBoxProc, plainDBox, altDBoxProc, noGrowDocProc, 148 | movableDBoxProc, zoomDocProc = 8, zoomNoGrow = 12, rDocProc = 16; 149 | byte invisible, visible; 150 | fill byte; 151 | byte noGoAway, goAway; 152 | fill byte; 153 | hex unsigned longint; 154 | pstring; 155 | align word; 156 | unsigned integer noAutoCenter = 0x0000, centerMainScreen = 0x280a, 157 | alertPositionMainScreen = 0x300a, staggerMainScreen = 0x380a, 158 | centerParentWindow = 0xa80a, alertPositionParentWindow = 0xb00a, 159 | staggerParentWindow = 0xb80a, centerParentWindowScreen = 0x680a, 160 | alertPositionParentWindowScreen = 0x700a, staggerParentWindowScreen = 0x780a; 161 | }; 162 | 163 | type 'DLOG' 164 | { 165 | rect; 166 | integer documentProc, dBoxProc, plainDBox, altDBoxProc, noGrowDocProc, 167 | movableDBoxProc, zoomDocProc = 8, zoomNoGrow = 12, rDocProc = 16; 168 | byte invisible, visible; 169 | fill byte; 170 | byte noGoAway, goAway; 171 | fill byte; 172 | hex unsigned longint; // refCon 173 | integer; 174 | pstring; 175 | align word; 176 | unsigned integer noAutoCenter = 0x0000, centerMainScreen = 0x280a, 177 | alertPositionMainScreen = 0x300a, staggerMainScreen = 0x380a, 178 | centerParentWindow = 0xa80a, alertPositionParentWindow = 0xb00a, 179 | staggerParentWindow = 0xb80a, centerParentWindowScreen = 0x680a, 180 | alertPositionParentWindowScreen = 0x700a, staggerParentWindowScreen = 0x780a; 181 | }; 182 | 183 | type 'ALRT' 184 | { 185 | rect; 186 | integer; 187 | array [4] 188 | { 189 | boolean OK, Cancel; 190 | boolean invisible, visible; 191 | unsigned bitstring[2] silent, sound1, sound2, sound3; 192 | }; 193 | unsigned integer noAutoCenter = 0x0000, centerMainScreen = 0x280a, 194 | alertPositionMainScreen = 0x300a, staggerMainScreen = 0x380a, 195 | centerParentWindow = 0xa80a, alertPositionParentWindow = 0xb00a, 196 | staggerParentWindow = 0xb80a, centerParentWindowScreen = 0x680a, 197 | alertPositionParentWindowScreen = 0x700a, staggerParentWindowScreen = 0x780a; 198 | }; 199 | 200 | type 'DITL' 201 | { 202 | integer = $$CountOf(items) - 1; 203 | array items 204 | { 205 | fill long; 206 | rect; 207 | switch { 208 | case UserItem: 209 | boolean enabled, disabled; 210 | key bitstring[7] = 0; 211 | fill byte; 212 | case Button: 213 | boolean enabled, disabled; 214 | key bitstring[7] = 4; 215 | pstring; 216 | case CheckBox: 217 | boolean enabled, disabled; 218 | key bitstring[7] = 5; 219 | pstring; 220 | case RadioButton: 221 | boolean enabled, disabled; 222 | key bitstring[7] = 6; 223 | pstring; 224 | case Control: 225 | boolean enabled, disabled; 226 | key bitstring[7] = 7; 227 | byte = 2; 228 | integer; 229 | case StaticText: 230 | boolean enabled, disabled; 231 | key bitstring[7] = 8; 232 | pstring; 233 | case EditText: 234 | boolean enabled, disabled; 235 | key bitstring[7] = 16; 236 | pstring; 237 | case Icon: 238 | boolean enabled, disabled; 239 | key bitstring[7] = 32; 240 | byte = 2; 241 | integer; 242 | case Picture: 243 | boolean enabled, disabled; 244 | key bitstring[7] = 64; 245 | byte = 2; 246 | integer; 247 | case HelpItem: 248 | boolean enabled, disabled; 249 | key bitstring[7] = 1; 250 | switch 251 | { 252 | case HMScanhdlg: 253 | longint = 4; 254 | key integer = 1; 255 | integer; 256 | case HMScanhrct: 257 | longint = 4; 258 | key integer = 2; 259 | integer; 260 | case HMScanAppendhdlg: 261 | longint = 6; 262 | key integer = 8; 263 | integer; 264 | integer; 265 | }; 266 | }; 267 | align word; 268 | }; 269 | }; 270 | 271 | type 'MENU' 272 | { 273 | integer; 274 | integer = 0; 275 | integer = 0; 276 | integer textMenuProc = 0; 277 | fill word; 278 | hex bitstring[31] allEnabled=0x7FFFFFFF; 279 | boolean disabled, enabled; 280 | pstring apple = "\0x14"; 281 | array 282 | { 283 | pstring; 284 | byte noIcon; 285 | char noKey = "\0x00", hierarchicalMenu = "\0x$1B"; 286 | char noMark = "\0x00", check = "\0x12"; 287 | byte plain; 288 | }; 289 | fill byte; 290 | }; 291 | 292 | type 'MBAR' 293 | { 294 | integer = $$CountOf(menus); 295 | array menus { integer; }; 296 | }; 297 | 298 | #endif -------------------------------------------------------------------------------- /generator.rb: -------------------------------------------------------------------------------- 1 | require 'tempfile' 2 | 3 | class Generator 4 | def self.filter_key 5 | nil 6 | end 7 | 8 | def initialize 9 | @type_size_map = { 10 | "uint8_t" => 1, 11 | "uint16_t" => 2, 12 | "uint32_t" => 4, 13 | "uint64_t" => 8, 14 | "int8_t" => 1, 15 | "int16_t" => 2, 16 | "int32_t" => 4, 17 | "int64_t" => 8, 18 | "char" => 1, 19 | "Point" => 4, 20 | "ProcPtr" => 4, 21 | "void" => 0, 22 | "double" => 8 23 | } 24 | @fancy_comments = false 25 | @expand_common = true 26 | end 27 | def size_of_type(type) 28 | return nil if not type 29 | return @type_size_map[type] if @type_size_map[type] 30 | return 4 if type =~ /[*\[\]]/ 31 | return nil 32 | end 33 | 34 | def starredtext(str, align, lchar:'*', rchar:'*') 35 | maxlinelen = str.lines.map{|s| s.rstrip.length}.max 36 | 37 | str.each_line do |s| 38 | s.rstrip! 39 | c = (75 - s.length) 40 | b = case align 41 | when "center" then c/2 42 | when "left" then c - 1 43 | when "right" then 1 44 | end 45 | a = c - b 46 | a = 0 if a < 0 47 | b = 0 if b < 0 48 | @out << " #{lchar}#{' '*a}#{s}#{' '*b}#{rchar}\n" 49 | end 50 | 51 | end 52 | 53 | def starline 54 | @out << "/#{'*'*77}/\n" 55 | end 56 | 57 | def box(title, comment=nil, order:1) 58 | if title or comment then 59 | @out << "/#{'*'*77}\n" 60 | #print " *#{' '*75}*\n" 61 | starredtext(title, 'center') if title 62 | @out << " *#{' '*75}*\n" if title and comment 63 | starredtext(comment, 'left') if comment 64 | 65 | @out << " #{'*'*77}/\n" 66 | else 67 | starline 68 | end 69 | end 70 | 71 | 72 | def document_dependencies(header) 73 | out = "" 74 | if header.included.size > 0 then 75 | out << "Needs:\n" 76 | 77 | colwidth = header.included.map(&:size).max + 4 + 2 + 4 78 | maxlinelen = 70 79 | 80 | header.included.each do |inc| 81 | line = " " * 4 + inc + ".h" 82 | line << " " * (colwidth - line.length) 83 | indent = line.length 84 | whys = header.included_why[inc].to_a 85 | whys.each_index do |idx| 86 | why = whys[idx] 87 | last = (idx == whys.size - 1) 88 | if line.length + why.size + (last ? 0 : 1) > maxlinelen 89 | out << line << "\n" 90 | line = " " * indent 91 | end 92 | line << why 93 | line << ", " unless last 94 | end 95 | out << line << "\n" 96 | end 97 | end 98 | return out 99 | end 100 | 101 | def declare_members(members) 102 | members.each do |member| 103 | sub = (member["struct"] or member["union"]) 104 | if sub then 105 | @out << (if member["struct"] then "struct" else "union" end) << "{" 106 | declare_members sub 107 | @out << "} " << member["name"] << ";" 108 | elsif member["common"] 109 | if @expand_common then 110 | declare_members($global_name_map[member["common"]]["common"]["members"]) 111 | else 112 | @out << member["common"] << ";" 113 | end 114 | else 115 | @out << decl(member["type"], member["name"]) << ";" 116 | @out << " // " << member["comment"].rstrip << "\n" if member["comment"] 117 | end 118 | end 119 | end 120 | 121 | def convert_expression(expr) 122 | return expr 123 | end 124 | 125 | def declare_enum(value) 126 | @out << "typedef " if value["name"] 127 | @out << "enum {" 128 | value["values"].each do |val| 129 | @out << val["name"] 130 | if val["value"] then 131 | @out << " = " << convert_expression(val["value"].to_s) << "," 132 | else 133 | @out << "," 134 | end 135 | @out << " // " << val["comment"].rstrip if val["comment"] 136 | @out << "\n" 137 | if val["old_name"] then 138 | @out << "#if OLDROUTINENAMES\n" 139 | @out << "#define #{val["old_name"]} #{val["name"]}\n" 140 | @out << "#endif\n" 141 | end 142 | end 143 | @out << "}" 144 | @out << value["name"] if value["name"] 145 | @out << ";" 146 | end 147 | 148 | def declare_typedef(value) 149 | @out << "typedef " 150 | @out << decl(value["type"], value["name"]) 151 | @out << ";" 152 | 153 | sz = size_of_type(value["type"]) 154 | @type_size_map[value["name"]] = sz if sz 155 | end 156 | 157 | def generate_preamble(header) 158 | title = "\n" + header.name + ".h\n" + "="*(header.name.length+2) + "\n" 159 | titlecomment = nil 160 | if header.included.size > 0 then 161 | titlecomment = document_dependencies(header) 162 | titlecomment << "\n\n" 163 | else 164 | title << "\n" 165 | end 166 | box(title, titlecomment) 167 | @out << "\n\n" 168 | end 169 | def generate_postamble(header) 170 | end 171 | def generate_comment(key, value) 172 | if @fancy_comments then 173 | box(value["name"], value["comment"]) 174 | else 175 | return unless value["comment"] 176 | value["comment"].each_line do |l| 177 | @out << "// " << l.rstrip << "\n" 178 | end 179 | end 180 | end 181 | 182 | def declare_verbatim(value) 183 | @out << value.strip << "\n" 184 | end 185 | 186 | def generate_header(header) 187 | @out = "" 188 | 189 | generate_preamble(header) 190 | 191 | header.data.each do |item| 192 | key, value = main_elem(item) 193 | 194 | make_api_ifdef item["api"] do 195 | generate_comment(key, value) 196 | 197 | case key 198 | when "enum" 199 | declare_enum(value) 200 | 201 | when "struct", "union" 202 | declare_struct_union(key, value) 203 | 204 | when "dispatcher" 205 | declare_dispatcher(value) 206 | 207 | when "typedef" 208 | declare_typedef(value) 209 | 210 | when "function" 211 | declare_function(value) 212 | 213 | when "lowmem" 214 | declare_lowmem(value) 215 | 216 | when "funptr" 217 | @type_size_map[value["name"]] = 4 218 | declare_funptr(value) 219 | 220 | when "verbatim" 221 | declare_verbatim(value) 222 | 223 | when "executor_only" 224 | declare_verbatim(value["code"]) 225 | end 226 | @out << "\n" 227 | end 228 | @out << "\n" 229 | end 230 | generate_postamble(header) 231 | return @out 232 | end 233 | 234 | def make_api_ifdef(api) 235 | yield 236 | end 237 | 238 | def formatted_file(name, &block) 239 | if not @format_command then 240 | if system('clang-format --version', [:out, :err]=>File::NULL) then 241 | @format_command = "clang-format" 242 | elsif system('uncrustify --version', [:out, :err]=>File::NULL) then 243 | @format_command = "uncrustify -q -c uncrustify.cfg" 244 | elsif system('astyle --version', [:out, :err]=>File::NULL) then 245 | @format_command = "astyle --style=allman --max-code-length=79 --mode=c" 246 | end 247 | end 248 | #IO.popen("#{@format_command} > \"#{name}\"", "w", &block) 249 | tmp = Tempfile.new('multiverse-tmp') 250 | block.call(tmp) 251 | tmp.close 252 | 253 | if @format_command then 254 | newtext = "" 255 | IO.popen("#{@format_command}", "r", :in => tmp.path) do |pipe| 256 | newtext = pipe.read 257 | end 258 | else 259 | newtext = File.read(tmp.path) 260 | end 261 | 262 | tmp.unlink 263 | 264 | filtered = "" 265 | newtext.each_line do |line| 266 | if line =~ /^\/\/ clang-format o.*/ then 267 | else 268 | filtered += line 269 | end 270 | end 271 | newtext = filtered 272 | 273 | if !File.readable?(name) || File.read(name) != newtext then 274 | File.write(name, newtext) 275 | print "#{name}\n" 276 | end 277 | end 278 | end 279 | -------------------------------------------------------------------------------- /defs/StdFilePkg.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: putDlgID 4 | value: -3999 5 | 6 | # #### 7 | 8 | - enum: 9 | values: 10 | - name: putSave 11 | value: 1 12 | - name: putCancel 13 | value: 2 14 | - name: putEject 15 | value: 5 16 | - name: putDrive 17 | value: 6 18 | - name: putName 19 | value: 7 20 | 21 | # #### 22 | 23 | - enum: 24 | values: 25 | - name: getDlgID 26 | value: -4000 27 | 28 | # #### 29 | 30 | - enum: 31 | values: 32 | - name: getOpen 33 | value: 1 34 | - name: getCancel 35 | value: 3 36 | - name: getEject 37 | value: 5 38 | - name: getDrive 39 | value: 6 40 | - name: getNmList 41 | value: 7 42 | - name: getScroll 43 | value: 8 44 | 45 | # #### 46 | 47 | - struct: 48 | name: SFReply 49 | members: 50 | - name: good 51 | type: Boolean 52 | - name: copy 53 | type: Boolean 54 | - name: fType 55 | type: OSType 56 | - name: vRefNum 57 | type: INTEGER 58 | - name: version 59 | type: INTEGER 60 | - name: fName 61 | type: Str63 62 | size: 74 63 | 64 | # #### 65 | 66 | - typedef: 67 | name: SFTypeList 68 | type: OSType[4] 69 | 70 | # #### 71 | 72 | - lowmem: 73 | name: SFSaveDisk 74 | type: INTEGER 75 | address: 0x214 76 | comment: | 77 | StdFilePkg IMIV-72 (true); 78 | 79 | # #### 80 | 81 | - lowmem: 82 | name: CurDirStore 83 | type: LONGINT 84 | address: 0x398 85 | comment: | 86 | StdFilePkg IMIV-72 (true); 87 | 88 | # #### 89 | 90 | - struct: 91 | name: StandardFileReply 92 | members: 93 | - name: sfGood 94 | type: Boolean 95 | - name: sfReplacing 96 | type: Boolean 97 | - name: sfType 98 | type: OSType 99 | - name: sfFile 100 | type: FSSpec 101 | - name: sfScript 102 | type: ScriptCode 103 | - name: sfFlags 104 | type: INTEGER 105 | - name: sfIsFolder 106 | type: Boolean 107 | - name: sfIsVolume 108 | type: Boolean 109 | - name: sfReserved1 110 | type: LONGINT 111 | - name: sfReserved2 112 | type: INTEGER 113 | size: 88 114 | 115 | # #### 116 | 117 | - funptr: 118 | return: INTEGER 119 | args: 120 | - name: item 121 | type: INTEGER 122 | - name: theDialog 123 | type: DialogPtr 124 | name: DlgHookUPP 125 | 126 | # #### 127 | 128 | - funptr: 129 | return: Boolean 130 | args: 131 | - name: pb 132 | type: CInfoPBPtr 133 | name: FileFilterUPP 134 | 135 | # #### 136 | 137 | - funptr: 138 | return: INTEGER 139 | args: 140 | - name: item 141 | type: INTEGER 142 | - name: theDialog 143 | type: DialogPtr 144 | - name: yourDataPtr 145 | type: void* 146 | name: DlgHookYDUPP 147 | 148 | # #### 149 | 150 | - funptr: 151 | return: Boolean 152 | args: 153 | - name: pb 154 | type: CInfoPBPtr 155 | - name: yourDataPtr 156 | type: void* 157 | name: FileFilterYDUPP 158 | 159 | # #### 160 | 161 | - funptr: 162 | args: 163 | - name: theDialog 164 | type: DialogPtr 165 | - name: itemNo 166 | type: INTEGER 167 | - name: activating 168 | type: Boolean 169 | - name: yourDataPtr 170 | type: void* 171 | name: ActivateYDUPP 172 | 173 | # #### 174 | 175 | - enum: 176 | values: 177 | - name: sfItemOpenButton 178 | value: 1 179 | - name: sfItemCancelButton 180 | value: 2 181 | - name: sfItemBalloonHelp 182 | value: 3 183 | - name: sfItemVolumeUser 184 | value: 4 185 | - name: sfItemEjectButton 186 | value: 5 187 | - name: sfItemDesktopButton 188 | value: 6 189 | - name: sfItemFileListUser 190 | value: 7 191 | - name: sfItemPopUpMenuUser 192 | value: 8 193 | - name: sfItemDividerLinePict 194 | value: 9 195 | - name: sfItemFileNameTextEdit 196 | value: 10 197 | comment: | 198 | Put only 199 | - name: sfItemPromptStaticText 200 | value: 11 201 | - name: sfItemNewFolderUser 202 | value: 12 203 | 204 | # #### 205 | 206 | - enum: 207 | values: 208 | - name: sfHookFirstCall 209 | value: -1 210 | - name: sfHookLastCall 211 | value: -2 212 | - name: sfHookNullEvent 213 | value: 100 214 | - name: sfHookRebuildList 215 | value: 101 216 | - name: sfHookFolderPopUp 217 | value: 102 218 | - name: sfHookOpenFolder 219 | value: 103 220 | - name: sfHookOpenAlias 221 | value: 104 222 | - name: sfHookGoToDesktop 223 | value: 105 224 | - name: sfHookGoToAliasTarget 225 | value: 106 226 | - name: sfHookGoToParent 227 | value: 107 228 | - name: sfHookGoToNextDrive 229 | value: 108 230 | - name: sfHookGoToPrevDrive 231 | value: 109 232 | - name: sfHookChangeSelection 233 | value: 110 234 | 235 | # #### 236 | 237 | - enum: 238 | values: 239 | - name: sfMainDialogRefCon 240 | value: "'stdf'" 241 | 242 | # #### 243 | 244 | - enum: 245 | values: 246 | - name: sfPutDialogID 247 | value: -6043 248 | - name: sfGetDialogID 249 | value: -6042 250 | 251 | # #### 252 | 253 | - dispatcher: 254 | name: Pack3 255 | trap: 0xA9EA 256 | selector-location: StackW 257 | 258 | # #### 259 | 260 | - function: 261 | name: SFPPutFile 262 | args: 263 | - name: p 264 | type: Point 265 | - name: prompt 266 | type: ConstStringPtr 267 | - name: name 268 | type: ConstStringPtr 269 | - name: dh 270 | type: DlgHookUPP 271 | - name: rep 272 | type: SFReply* 273 | - name: dig 274 | type: INTEGER 275 | - name: fp 276 | type: ModalFilterUPP 277 | dispatcher: Pack3 278 | selector: 0x0003 279 | executor: C_ 280 | 281 | # #### 282 | 283 | - function: 284 | name: SFPutFile 285 | args: 286 | - name: p 287 | type: Point 288 | - name: prompt 289 | type: ConstStringPtr 290 | - name: name 291 | type: ConstStringPtr 292 | - name: dh 293 | type: DlgHookUPP 294 | - name: rep 295 | type: SFReply* 296 | dispatcher: Pack3 297 | selector: 0x0001 298 | executor: C_ 299 | 300 | # #### 301 | 302 | - function: 303 | name: SFPGetFile 304 | args: 305 | - name: p 306 | type: Point 307 | - name: prompt 308 | type: ConstStringPtr 309 | - name: filef 310 | type: FileFilterUPP 311 | - name: numt 312 | type: INTEGER 313 | - name: tl 314 | type: SFTypeList 315 | - name: dh 316 | type: DlgHookUPP 317 | - name: rep 318 | type: SFReply* 319 | - name: dig 320 | type: INTEGER 321 | - name: fp 322 | type: ModalFilterUPP 323 | dispatcher: Pack3 324 | selector: 0x0004 325 | executor: C_ 326 | 327 | # #### 328 | 329 | - function: 330 | name: SFGetFile 331 | args: 332 | - name: p 333 | type: Point 334 | - name: prompt 335 | type: ConstStringPtr 336 | - name: filef 337 | type: FileFilterUPP 338 | - name: numt 339 | type: INTEGER 340 | - name: tl 341 | type: SFTypeList 342 | - name: dh 343 | type: DlgHookUPP 344 | - name: rep 345 | type: SFReply* 346 | dispatcher: Pack3 347 | selector: 0x0002 348 | executor: C_ 349 | 350 | # #### 351 | 352 | - function: 353 | name: StandardGetFile 354 | args: 355 | - name: filef 356 | type: FileFilterUPP 357 | - name: numt 358 | type: INTEGER 359 | - name: tl 360 | type: SFTypeList 361 | - name: replyp 362 | type: StandardFileReply* 363 | dispatcher: Pack3 364 | selector: 0x0006 365 | executor: C_ 366 | 367 | # #### 368 | 369 | - function: 370 | name: StandardPutFile 371 | args: 372 | - name: prompt 373 | type: ConstStringPtr 374 | - name: defaultname 375 | type: ConstStringPtr 376 | - name: replyp 377 | type: StandardFileReply* 378 | dispatcher: Pack3 379 | selector: 0x0005 380 | executor: C_ 381 | 382 | # #### 383 | 384 | - function: 385 | name: CustomPutFile 386 | args: 387 | - name: prompt 388 | type: ConstStringPtr 389 | - name: defaultName 390 | type: ConstStringPtr 391 | - name: replyp 392 | type: StandardFileReply* 393 | - name: dlgid 394 | type: INTEGER 395 | - name: where 396 | type: Point 397 | - name: dlghook 398 | type: DlgHookYDUPP 399 | - name: filterproc 400 | type: ModalFilterYDUPP 401 | - name: activeList 402 | type: Ptr 403 | - name: activateproc 404 | type: ActivateYDUPP 405 | - name: yourdatap 406 | type: void* 407 | dispatcher: Pack3 408 | selector: 0x0007 409 | executor: C_ 410 | 411 | # #### 412 | 413 | - function: 414 | name: CustomGetFile 415 | args: 416 | - name: filefilter 417 | type: FileFilterYDUPP 418 | - name: numtypes 419 | type: INTEGER 420 | - name: typelist 421 | type: SFTypeList 422 | - name: replyp 423 | type: StandardFileReply* 424 | - name: dlgid 425 | type: INTEGER 426 | - name: where 427 | type: Point 428 | - name: dlghook 429 | type: DlgHookYDUPP 430 | - name: filterproc 431 | type: ModalFilterYDUPP 432 | - name: activeList 433 | type: Ptr 434 | - name: activateproc 435 | type: ActivateYDUPP 436 | - name: yourdatap 437 | type: void* 438 | dispatcher: Pack3 439 | selector: 0x0008 440 | executor: C_ 441 | -------------------------------------------------------------------------------- /defs/OSEvent.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: evtNotEnb 4 | value: 1 5 | 6 | # #### 7 | 8 | - struct: 9 | name: EvQEl 10 | members: 11 | - name: qLink 12 | type: QElemPtr 13 | - name: qType 14 | type: INTEGER 15 | - name: evtQWhat 16 | type: INTEGER 17 | - name: evtQMessage 18 | type: LONGINT 19 | - name: evtQWhen 20 | type: LONGINT 21 | - name: evtQWhere 22 | type: Point 23 | - name: evtQModifiers 24 | type: INTEGER 25 | size: 22 26 | 27 | # #### 28 | 29 | - typedef: 30 | name: EvQElPtr 31 | type: EvQEl* 32 | 33 | # #### 34 | 35 | - enum: 36 | values: 37 | - name: osEvt 38 | value: 15 39 | - name: SUSPENDRESUMEBITS 40 | value: 0x01000000 41 | - name: SUSPEND 42 | value: 0 << 0 43 | - name: RESUME 44 | value: 1 << 0 45 | - name: CONVERTCLIPBOARD 46 | value: 1 << 1 47 | - name: mouseMovedMessage 48 | value: 0xFA 49 | 50 | # #### 51 | 52 | - enum: 53 | values: 54 | - name: SZreserved0 55 | value: 1 << 15 56 | - name: SZacceptSuspendResumeEvents 57 | value: 1 << 14 58 | - name: SZreserved1 59 | value: 1 << 13 60 | - name: SZcanBackground 61 | value: 1 << 12 62 | - name: SZdoesActivateOnFGSwitch 63 | value: 1 << 11 64 | - name: SZonlyBackground 65 | value: 1 << 10 66 | - name: SZgetFrontClicks 67 | value: 1 << 9 68 | - name: SZAcceptAppDiedEvents 69 | value: 1 << 8 70 | - name: SZis32BitCompatible 71 | value: 1 << 7 72 | - name: SZisHighLevelEventAware 73 | value: 1 << 6 74 | - name: SZlocalAndRemoveHLEvents 75 | value: 1 << 5 76 | - name: SZisStationeryAware 77 | value: 1 << 4 78 | - name: SZuseTextEditServices 79 | value: 1 << 3 80 | - name: SZreserved2 81 | value: 1 << 2 82 | - name: SZreserved3 83 | value: 1 << 1 84 | - name: SZreserved4 85 | value: 1 << 0 86 | name: SZ_t 87 | 88 | # #### 89 | 90 | - struct: 91 | name: SIZEResource 92 | members: 93 | - name: size_flags 94 | type: int16_t 95 | - name: preferred_size 96 | type: int32_t 97 | - name: minimum_size 98 | type: int32_t 99 | 100 | # #### 101 | 102 | - only-for: Executor 103 | verbatim: | 104 | /* executor-only struct */ 105 | typedef struct size_info 106 | { 107 | int16_t size_flags; 108 | int32_t preferred_size; 109 | int32_t minimum_size; 110 | bool size_resource_present_p; 111 | bool application_p; 112 | } size_info_t; 113 | 114 | extern size_info_t size_info; 115 | 116 | # #### 117 | 118 | - lowmem: 119 | name: monkeylives 120 | type: INTEGER 121 | address: 0x100 122 | comment: | 123 | OSEvent SysEqu.a (true-b); 124 | 125 | # #### 126 | 127 | - lowmem: 128 | name: SysEvtMask 129 | type: INTEGER 130 | address: 0x144 131 | comment: | 132 | OSEvent IMII-70 (true); 133 | 134 | # #### 135 | 136 | - lowmem: 137 | name: EventQueue 138 | type: QHdr 139 | address: 0x14A 140 | comment: | 141 | OSEvent IMII-71 (true); 142 | 143 | # #### 144 | 145 | - lowmem: 146 | name: Ticks 147 | type: ULONGINT 148 | address: 0x16A 149 | comment: | 150 | OSEvent IMI-260 (true); 151 | 152 | # #### 153 | 154 | - lowmem: 155 | name: MBState 156 | type: Byte 157 | address: 0x172 158 | comment: | 159 | EventMgr PegLeg (True-b); 160 | 161 | # #### 162 | 163 | - lowmem: 164 | name: MTemp 165 | type: Point 166 | address: 0x828 167 | comment: | 168 | QuickDraw PegLeg (True-b); 169 | 170 | # #### 171 | 172 | - lowmem: 173 | name: MouseLocation 174 | type: Point 175 | address: 0x82C 176 | comment: | 177 | QuickDraw Vamp (true); 178 | 179 | # #### 180 | 181 | - lowmem: 182 | name: MouseLocation2 183 | type: Point 184 | address: 0x830 185 | comment: | 186 | QuickDraw MacAttack (true); 187 | 188 | # #### 189 | 190 | - only-for: Executor 191 | verbatim: | 192 | namespace callconv 193 | { 194 | struct D0Minus1Boolean 195 | { 196 | operator bool() { return EM_D0 == 0; } 197 | 198 | static void set(bool b) 199 | { 200 | EM_D0 = b ? 0 : -1; 201 | } 202 | 203 | template 204 | static void afterCall(T) {} 205 | 206 | }; 207 | } 208 | 209 | # #### 210 | 211 | - function: 212 | name: PPostEvent 213 | return: OSErr 214 | args: 215 | - name: evcode 216 | type: INTEGER 217 | - name: evmsg 218 | type: LONGINT 219 | - name: qelp 220 | type: EvQElPtr* 221 | 222 | # #### 223 | 224 | - function: 225 | name: PostEvent 226 | return: OSErr 227 | args: 228 | - name: evcode 229 | type: INTEGER 230 | - name: evmsg 231 | type: LONGINT 232 | 233 | # #### 234 | 235 | - not-for: executor 236 | function: 237 | name: FlushEvents 238 | args: 239 | - name: evmask 240 | type: INTEGER 241 | - name: stopmask 242 | type: INTEGER 243 | trap: 0xA032 244 | m68k-inline: [0x201F, 0xA032] 245 | - only-for: executor 246 | function: 247 | name: FlushEvents 248 | args: 249 | - name: evmask 250 | type: INTEGER 251 | register: D0LowWord 252 | - name: stopmask 253 | type: INTEGER 254 | register: D0HighWord 255 | trap: 0xA032 256 | executor_extras: ClearD0 257 | executor: true 258 | 259 | # #### 260 | 261 | - not-for: executor 262 | function: 263 | name: GetOSEvent 264 | return: Boolean 265 | args: 266 | - name: evmask 267 | type: INTEGER 268 | register: D0 269 | - name: eventp 270 | type: EventRecord* 271 | register: A0 272 | trap: 0xA031 273 | m68k-inline: [0xA031, 0x5240] 274 | returnreg: D0 275 | - only-for: executor 276 | function: 277 | name: GetOSEvent 278 | return: Boolean 279 | args: 280 | - name: evmask 281 | type: INTEGER 282 | register: D0 283 | - name: eventp 284 | type: EventRecord* 285 | register: A0 286 | trap: 0xA031 287 | returnreg: D0Minus1Boolean 288 | executor: true 289 | 290 | # #### 291 | 292 | - not-for: executor 293 | function: 294 | name: OSEventAvail 295 | return: Boolean 296 | args: 297 | - name: evmask 298 | type: INTEGER 299 | register: D0 300 | - name: eventp 301 | type: EventRecord* 302 | register: A0 303 | trap: 0xA030 304 | m68k-inline: [0xA030, 0x5240] 305 | returnreg: D0 306 | - only-for: executor 307 | function: 308 | name: OSEventAvail 309 | return: Boolean 310 | args: 311 | - name: evmask 312 | type: INTEGER 313 | register: D0 314 | - name: eventp 315 | type: EventRecord* 316 | register: A0 317 | trap: 0xA030 318 | returnreg: D0Minus1Boolean 319 | executor: true 320 | 321 | # #### 322 | 323 | - function: 324 | name: SetEventMask 325 | args: 326 | - name: evmask 327 | type: INTEGER 328 | 329 | # #### 330 | 331 | - function: 332 | name: GetEvQHdr 333 | return: QHdrPtr 334 | 335 | # #### 336 | 337 | - function: 338 | name: geteventelem 339 | return: EvQEl* 340 | 341 | # #### 342 | 343 | - struct: 344 | name: TargetID 345 | members: 346 | - name: sessionID 347 | type: int32_t 348 | - name: name 349 | type: PPCPortRec 350 | - name: location 351 | type: LocationNameRec 352 | - name: recvrName 353 | type: PPCPortRec 354 | size: 252 355 | 356 | # #### 357 | 358 | - typedef: 359 | name: TargetIDPtr 360 | type: TargetID 361 | 362 | # #### 363 | 364 | - struct: 365 | name: HighLevelEventMsg 366 | members: 367 | - name: HighLevelEventMsgHeaderlength 368 | type: int16_t 369 | - name: version 370 | type: int16_t 371 | - name: reserved1 372 | type: int32_t 373 | - name: theMsgEvent 374 | type: EventRecord 375 | - name: userRefCon 376 | type: int32_t 377 | - name: postingOptions 378 | type: int32_t 379 | - name: msgLength 380 | type: int32_t 381 | size: 36 382 | 383 | # #### 384 | 385 | - typedef: 386 | name: HighLevelEventMsgPtr 387 | type: HighLevelEventMsg* 388 | 389 | # #### 390 | 391 | - funptr: 392 | return: Boolean 393 | args: 394 | - type: Ptr 395 | - type: HighLevelEventMsgPtr 396 | - type: TargetID* 397 | name: GetSpecificFilterUPP 398 | 399 | # #### 400 | 401 | - enum: 402 | values: 403 | - name: noOutstandingHLE 404 | value: -607 405 | - name: bufferIsSmall 406 | value: -608 407 | 408 | # #### 409 | 410 | - function: 411 | name: AcceptHighLevelEvent 412 | return: OSErr 413 | args: 414 | - name: sender_id_return 415 | type: TargetID* 416 | - name: refcon_return 417 | type: int32_t* 418 | - name: msg_buf 419 | type: Ptr 420 | - name: msg_length_return 421 | type: int32_t* 422 | dispatcher: OSDispatch 423 | selector: 0x0033 424 | executor: C_ 425 | 426 | # #### 427 | 428 | - function: 429 | name: GetSpecificHighLevelEvent 430 | return: Boolean 431 | args: 432 | - name: fn 433 | type: GetSpecificFilterUPP 434 | - name: data 435 | type: Ptr 436 | - name: err_return 437 | type: OSErr* 438 | dispatcher: OSDispatch 439 | selector: 0x0045 440 | executor: C_ 441 | 442 | # #### 443 | 444 | - function: 445 | name: PostHighLevelEvent 446 | return: OSErr 447 | args: 448 | - name: evt 449 | type: EventRecord* 450 | - name: receiver_id 451 | type: Ptr 452 | - name: refcon 453 | type: int32_t 454 | - name: msg_buf 455 | type: Ptr 456 | - name: msg_length 457 | type: int32_t 458 | - name: post_options 459 | type: int32_t 460 | dispatcher: OSDispatch 461 | selector: 0x0034 462 | executor: C_ 463 | -------------------------------------------------------------------------------- /defs/SpeechManager.yaml: -------------------------------------------------------------------------------- 1 | - struct: 2 | name: VoiceSpec 3 | members: 4 | - name: creator 5 | type: OSType 6 | - name: id 7 | type: OSType 8 | 9 | # #### 10 | 11 | - typedef: 12 | name: VoiceSpecPtr 13 | type: VoiceSpec* 14 | 15 | # #### 16 | 17 | - struct: 18 | name: VoiceFileInfo 19 | members: 20 | - name: fileSpec 21 | type: FSSpec 22 | - name: resID 23 | type: uint16_t 24 | 25 | # #### 26 | 27 | - struct: 28 | name: SpeechStatusInfo 29 | members: 30 | - name: outputBusy 31 | type: Boolean 32 | - name: outputPaused 33 | type: Boolean 34 | - name: inputBytesLeft 35 | type: int32_t 36 | - name: phonemeCode 37 | type: int16_t 38 | 39 | # #### 40 | 41 | - struct: 42 | name: VoiceDescription 43 | members: 44 | - name: length 45 | type: int32_t 46 | - name: voice 47 | type: VoiceSpec 48 | - name: version 49 | type: int32_t 50 | - name: name 51 | type: Str63 52 | - name: comment 53 | type: Str255 54 | - name: gender 55 | type: int16_t 56 | - name: age 57 | type: int16_t 58 | - name: script 59 | type: int16_t 60 | - name: language 61 | type: int16_t 62 | - name: region 63 | type: int16_t 64 | - name: reserved 65 | type: int32_t[4] 66 | 67 | # #### 68 | 69 | - struct: 70 | name: SpeechChannelRecord 71 | members: 72 | - name: data 73 | type: LONGINT[1] 74 | 75 | # #### 76 | 77 | - typedef: 78 | name: SpeechChannel 79 | type: SpeechChannelRecord* 80 | 81 | # #### 82 | 83 | - struct: 84 | name: PhonemeInfo 85 | members: 86 | - name: opcode 87 | type: int16_t 88 | - name: phStr 89 | type: Str15 90 | - name: exampleStr 91 | type: Str31 92 | - name: hiliteStart 93 | type: int16_t 94 | - name: hiliteEnd 95 | type: int16_t 96 | 97 | # #### 98 | 99 | - struct: 100 | name: PhonemeDescriptor 101 | members: 102 | - name: phonemeCount 103 | type: int16_t 104 | - name: thePhonemes 105 | type: PhonemeInfo[1] 106 | 107 | # #### 108 | 109 | - struct: 110 | name: SpeechXtndData 111 | members: 112 | - name: synthCreator 113 | type: OSType 114 | - name: synthData 115 | type: Byte[2] 116 | 117 | # #### 118 | 119 | - struct: 120 | name: DelimiterInfo 121 | members: 122 | - name: startDelimiter 123 | type: Byte[2] 124 | - name: endDelimiter 125 | type: Byte[2] 126 | 127 | # #### 128 | 129 | - function: 130 | name: SpeechManagerVersion 131 | return: NumVersion 132 | dispatcher: SoundDispatch 133 | selector: 0x0000000C 134 | executor: C_ 135 | 136 | # #### 137 | 138 | - function: 139 | name: SpeechBusy 140 | return: int16_t 141 | dispatcher: SoundDispatch 142 | selector: 0x003C000C 143 | executor: C_ 144 | 145 | # #### 146 | 147 | - function: 148 | name: SpeechBusySystemWide 149 | return: int16_t 150 | dispatcher: SoundDispatch 151 | selector: 0x0040000C 152 | executor: C_ 153 | 154 | # #### 155 | 156 | - function: 157 | name: CountVoices 158 | return: OSErr 159 | args: 160 | - name: numVoices 161 | type: int16_t* 162 | dispatcher: SoundDispatch 163 | selector: 0x0108000C 164 | executor: C_ 165 | 166 | # #### 167 | 168 | - function: 169 | name: DisposeSpeechChannel 170 | return: OSErr 171 | args: 172 | - name: chan 173 | type: SpeechChannel 174 | dispatcher: SoundDispatch 175 | selector: 0x021C000C 176 | executor: C_ 177 | 178 | # #### 179 | 180 | - function: 181 | name: SpeakString 182 | return: OSErr 183 | args: 184 | - name: textToBeSpoken 185 | type: ConstStringPtr 186 | dispatcher: SoundDispatch 187 | selector: 0x0220000C 188 | executor: C_ 189 | 190 | # #### 191 | 192 | - function: 193 | name: StopSpeech 194 | return: OSErr 195 | args: 196 | - name: chan 197 | type: SpeechChannel 198 | dispatcher: SoundDispatch 199 | selector: 0x022C000C 200 | executor: C_ 201 | 202 | # #### 203 | 204 | - function: 205 | name: ContinueSpeech 206 | return: OSErr 207 | args: 208 | - name: chan 209 | type: SpeechChannel 210 | dispatcher: SoundDispatch 211 | selector: 0x0238000C 212 | executor: C_ 213 | 214 | # #### 215 | 216 | - function: 217 | name: GetIndVoice 218 | return: OSErr 219 | args: 220 | - name: index 221 | type: int16_t 222 | - name: voice 223 | type: VoiceSpec* 224 | dispatcher: SoundDispatch 225 | selector: 0x030C000C 226 | executor: C_ 227 | 228 | # #### 229 | 230 | - function: 231 | name: NewSpeechChannel 232 | return: OSErr 233 | args: 234 | - name: voice 235 | type: VoiceSpec* 236 | - name: chan 237 | type: SpeechChannel* 238 | dispatcher: SoundDispatch 239 | selector: 0x0418000C 240 | executor: C_ 241 | 242 | # #### 243 | 244 | - function: 245 | name: StopSpeechAt 246 | return: OSErr 247 | args: 248 | - name: chan 249 | type: SpeechChannel 250 | - name: whereToStop 251 | type: int32_t 252 | dispatcher: SoundDispatch 253 | selector: 0x0430000C 254 | executor: C_ 255 | 256 | # #### 257 | 258 | - function: 259 | name: PauseSpeechAt 260 | return: OSErr 261 | args: 262 | - name: chan 263 | type: SpeechChannel 264 | - name: whereToPause 265 | type: int32_t 266 | dispatcher: SoundDispatch 267 | selector: 0x0434000C 268 | executor: C_ 269 | 270 | # #### 271 | 272 | - function: 273 | name: SetSpeechRate 274 | return: OSErr 275 | args: 276 | - name: chan 277 | type: SpeechChannel 278 | - name: rate 279 | type: Fixed 280 | dispatcher: SoundDispatch 281 | selector: 0x0444000C 282 | executor: C_ 283 | 284 | # #### 285 | 286 | - function: 287 | name: GetSpeechRate 288 | return: OSErr 289 | args: 290 | - name: chan 291 | type: SpeechChannel 292 | - name: rate 293 | type: Fixed* 294 | dispatcher: SoundDispatch 295 | selector: 0x0448000C 296 | executor: C_ 297 | 298 | # #### 299 | 300 | - function: 301 | name: SetSpeechPitch 302 | return: OSErr 303 | args: 304 | - name: chan 305 | type: SpeechChannel 306 | - name: pitch 307 | type: Fixed 308 | dispatcher: SoundDispatch 309 | selector: 0x044C000C 310 | executor: C_ 311 | 312 | # #### 313 | 314 | - function: 315 | name: GetSpeechPitch 316 | return: OSErr 317 | args: 318 | - name: chan 319 | type: SpeechChannel 320 | - name: pitch 321 | type: Fixed* 322 | dispatcher: SoundDispatch 323 | selector: 0x0450000C 324 | executor: C_ 325 | 326 | # #### 327 | 328 | - function: 329 | name: UseDictionary 330 | return: OSErr 331 | args: 332 | - name: chan 333 | type: SpeechChannel 334 | - name: dictionary 335 | type: Handle 336 | dispatcher: SoundDispatch 337 | selector: 0x0460000C 338 | executor: C_ 339 | 340 | # #### 341 | 342 | - function: 343 | name: MakeVoiceSpec 344 | return: OSErr 345 | args: 346 | - name: creator 347 | type: OSType 348 | - name: id 349 | type: OSType 350 | - name: voice 351 | type: VoiceSpec* 352 | dispatcher: SoundDispatch 353 | selector: 0x0604000C 354 | executor: C_ 355 | 356 | # #### 357 | 358 | - function: 359 | name: GetVoiceDescription 360 | return: OSErr 361 | args: 362 | - name: voice 363 | type: const VoiceSpec* 364 | - name: info 365 | type: VoiceDescription* 366 | - name: infoLength 367 | type: LONGINT 368 | dispatcher: SoundDispatch 369 | selector: 0x0610000C 370 | executor: C_ 371 | 372 | # #### 373 | 374 | - function: 375 | name: GetVoiceInfo 376 | return: OSErr 377 | args: 378 | - name: voice 379 | type: const VoiceSpec* 380 | - name: selector 381 | type: OSType 382 | - name: voiceInfo 383 | type: void* 384 | dispatcher: SoundDispatch 385 | selector: 0x0614000C 386 | executor: C_ 387 | 388 | # #### 389 | 390 | - function: 391 | name: SpeakText 392 | return: OSErr 393 | args: 394 | - name: chan 395 | type: SpeechChannel 396 | - name: textBuf 397 | type: const void* 398 | - name: textBytes 399 | type: ULONGINT 400 | dispatcher: SoundDispatch 401 | selector: 0x0624000C 402 | executor: C_ 403 | 404 | # #### 405 | 406 | - function: 407 | name: SetSpeechInfo 408 | return: OSErr 409 | args: 410 | - name: chan 411 | type: SpeechChannel 412 | - name: selector 413 | type: OSType 414 | - name: speechInfo 415 | type: const void* 416 | dispatcher: SoundDispatch 417 | selector: 0x0654000C 418 | executor: C_ 419 | 420 | # #### 421 | 422 | - function: 423 | name: GetSpeechInfo 424 | return: OSErr 425 | args: 426 | - name: chan 427 | type: SpeechChannel 428 | - name: selector 429 | type: OSType 430 | - name: speechInfo 431 | type: void* 432 | dispatcher: SoundDispatch 433 | selector: 0x0658000C 434 | executor: C_ 435 | 436 | # #### 437 | 438 | - function: 439 | name: SpeakBuffer 440 | return: OSErr 441 | args: 442 | - name: chan 443 | type: SpeechChannel 444 | - name: textBuf 445 | type: const void* 446 | - name: textBytes 447 | type: ULONGINT 448 | - name: controlFlags 449 | type: int32_t 450 | dispatcher: SoundDispatch 451 | selector: 0x0828000C 452 | executor: C_ 453 | 454 | # #### 455 | 456 | - function: 457 | name: TextToPhonemes 458 | return: OSErr 459 | args: 460 | - name: chan 461 | type: SpeechChannel 462 | - name: textBuf 463 | type: const void* 464 | - name: textBytes 465 | type: ULONGINT 466 | - name: phonemeBuf 467 | type: Handle 468 | - name: phonemeBytes 469 | type: LONGINT* 470 | dispatcher: SoundDispatch 471 | selector: 0x0A5C000C 472 | executor: C_ 473 | -------------------------------------------------------------------------------- /defs/ToolboxUtil.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: sysPatListID 4 | value: 0 5 | 6 | # #### 7 | 8 | - enum: 9 | values: 10 | - name: iBeamCursor 11 | value: 1 12 | - name: crossCursor 13 | value: 2 14 | - name: plusCursor 15 | value: 3 16 | - name: watchCursor 17 | value: 4 18 | 19 | # #### 20 | 21 | - struct: 22 | name: Int64Bit 23 | members: 24 | - name: hiLong 25 | type: LONGINT 26 | - name: loLong 27 | type: LONGINT 28 | size: 8 29 | 30 | # #### 31 | 32 | - typedef: 33 | name: PatPtr 34 | type: Pattern* 35 | 36 | # #### 37 | 38 | - typedef: 39 | name: PatHandle 40 | type: PatPtr* 41 | 42 | # #### 43 | 44 | - function: 45 | name: FracSqrt 46 | return: Fract 47 | args: 48 | - name: x 49 | type: Fract 50 | trap: 0xA849 51 | executor: C_ 52 | 53 | # #### 54 | 55 | - function: 56 | name: FracSin 57 | return: Fract 58 | args: 59 | - name: x 60 | type: Fixed 61 | trap: 0xA848 62 | executor: C_ 63 | 64 | # #### 65 | 66 | - function: 67 | name: FixATan2 68 | return: Fixed 69 | args: 70 | - name: x 71 | type: LONGINT 72 | - name: y 73 | type: LONGINT 74 | trap: 0xA818 75 | executor: C_ 76 | 77 | # #### 78 | 79 | - function: 80 | name: FracCos 81 | return: Fract 82 | args: 83 | - name: x 84 | type: Fixed 85 | trap: 0xA847 86 | executor: C_ 87 | 88 | # #### 89 | 90 | - function: 91 | name: FixRatio 92 | return: Fixed 93 | args: 94 | - name: n 95 | type: INTEGER 96 | - name: d 97 | type: INTEGER 98 | trap: 0xA869 99 | executor: C_ 100 | 101 | # #### 102 | 103 | - function: 104 | name: FixMul 105 | return: Fixed 106 | args: 107 | - name: a 108 | type: Fixed 109 | - name: b 110 | type: Fixed 111 | trap: 0xA868 112 | executor: C_ 113 | 114 | # #### 115 | 116 | - function: 117 | name: FixRound 118 | return: INTEGER 119 | args: 120 | - name: x 121 | type: Fixed 122 | trap: 0xA86C 123 | executor: C_ 124 | 125 | # #### 126 | 127 | - function: 128 | name: NewString 129 | return: StringHandle 130 | args: 131 | - name: s 132 | type: ConstStringPtr 133 | trap: 0xA906 134 | executor: C_ 135 | 136 | # #### 137 | 138 | - function: 139 | name: SetString 140 | args: 141 | - name: h 142 | type: StringHandle 143 | - name: s 144 | type: ConstStringPtr 145 | trap: 0xA907 146 | executor: C_ 147 | 148 | # #### 149 | 150 | - function: 151 | name: GetString 152 | return: StringHandle 153 | args: 154 | - name: i 155 | type: INTEGER 156 | trap: 0xA9BA 157 | executor: C_ 158 | 159 | # #### 160 | 161 | - function: 162 | name: GetIndString 163 | args: 164 | - name: s 165 | type: StringPtr 166 | - name: sid 167 | type: INTEGER 168 | - name: index 169 | type: INTEGER 170 | executor: C_ 171 | 172 | # #### 173 | 174 | - function: 175 | name: Munger 176 | return: LONGINT 177 | args: 178 | - name: h 179 | type: Handle 180 | - name: "off" 181 | type: LONGINT 182 | - name: p1 183 | type: Ptr 184 | - name: len1 185 | type: LONGINT 186 | - name: p2 187 | type: Ptr 188 | - name: len2 189 | type: LONGINT 190 | trap: 0xA9E0 191 | executor: C_ 192 | 193 | # #### 194 | 195 | - function: 196 | name: PackBits 197 | args: 198 | - name: sp 199 | type: Ptr* 200 | - name: dp 201 | type: Ptr* 202 | - name: len 203 | type: INTEGER 204 | trap: 0xA8CF 205 | executor: C_ 206 | 207 | # #### 208 | 209 | - function: 210 | name: UnpackBits 211 | args: 212 | - name: sp 213 | type: Ptr* 214 | - name: dp 215 | type: Ptr* 216 | - name: len 217 | type: INTEGER 218 | trap: 0xA8D0 219 | executor: C_ 220 | 221 | # #### 222 | 223 | - function: 224 | name: BitTst 225 | return: Boolean 226 | args: 227 | - name: bp 228 | type: Ptr 229 | - name: bn 230 | type: LONGINT 231 | trap: 0xA85D 232 | executor: C_ 233 | 234 | # #### 235 | 236 | - function: 237 | name: BitSet 238 | args: 239 | - name: bp 240 | type: Ptr 241 | - name: bn 242 | type: LONGINT 243 | trap: 0xA85E 244 | executor: C_ 245 | 246 | # #### 247 | 248 | - function: 249 | name: BitClr 250 | args: 251 | - name: bp 252 | type: Ptr 253 | - name: bn 254 | type: LONGINT 255 | trap: 0xA85F 256 | executor: C_ 257 | 258 | # #### 259 | 260 | - function: 261 | name: BitAnd 262 | return: LONGINT 263 | args: 264 | - name: a 265 | type: LONGINT 266 | - name: b 267 | type: LONGINT 268 | trap: 0xA858 269 | executor: C_ 270 | 271 | # #### 272 | 273 | - function: 274 | name: BitOr 275 | return: LONGINT 276 | args: 277 | - name: a 278 | type: LONGINT 279 | - name: b 280 | type: LONGINT 281 | trap: 0xA85B 282 | executor: C_ 283 | 284 | # #### 285 | 286 | - function: 287 | name: BitXor 288 | return: LONGINT 289 | args: 290 | - name: a 291 | type: LONGINT 292 | - name: b 293 | type: LONGINT 294 | trap: 0xA859 295 | executor: C_ 296 | 297 | # #### 298 | 299 | - function: 300 | name: BitNot 301 | return: LONGINT 302 | args: 303 | - name: a 304 | type: LONGINT 305 | trap: 0xA85A 306 | executor: C_ 307 | 308 | # #### 309 | 310 | - function: 311 | name: BitShift 312 | return: LONGINT 313 | args: 314 | - name: a 315 | type: LONGINT 316 | - name: n 317 | type: INTEGER 318 | trap: 0xA85C 319 | executor: C_ 320 | 321 | # #### 322 | 323 | - function: 324 | name: HiWord 325 | return: INTEGER 326 | args: 327 | - name: a 328 | type: LONGINT 329 | trap: 0xA86A 330 | executor: C_ 331 | 332 | # #### 333 | 334 | - function: 335 | name: LoWord 336 | return: INTEGER 337 | args: 338 | - name: a 339 | type: LONGINT 340 | trap: 0xA86B 341 | executor: C_ 342 | 343 | # #### 344 | 345 | - function: 346 | name: LongMul 347 | args: 348 | - name: a 349 | type: LONGINT 350 | - name: b 351 | type: LONGINT 352 | - name: c 353 | type: Int64Bit* 354 | trap: 0xA867 355 | executor: C_ 356 | 357 | # #### 358 | 359 | - function: 360 | name: GetPattern 361 | return: PatHandle 362 | args: 363 | - name: id 364 | type: INTEGER 365 | trap: 0xA9B8 366 | executor: C_ 367 | 368 | # #### 369 | 370 | - function: 371 | name: GetIndPattern 372 | args: 373 | - name: op 374 | type: Byte* 375 | - name: plistid 376 | type: INTEGER 377 | - name: index 378 | type: INTEGER 379 | 380 | # #### 381 | 382 | - function: 383 | name: GetCursor 384 | return: CursHandle 385 | args: 386 | - name: id 387 | type: INTEGER 388 | trap: 0xA9B9 389 | executor: C_ 390 | 391 | # #### 392 | 393 | - function: 394 | name: GetPicture 395 | return: PicHandle 396 | args: 397 | - name: id 398 | type: INTEGER 399 | trap: 0xA9BC 400 | executor: C_ 401 | 402 | # #### 403 | 404 | - function: 405 | name: DeltaPoint 406 | return: LONGINT 407 | args: 408 | - name: a 409 | type: Point 410 | - name: b 411 | type: Point 412 | trap: 0xA94F 413 | executor: C_ 414 | 415 | # #### 416 | 417 | - function: 418 | name: SlopeFromAngle 419 | return: Fixed 420 | args: 421 | - name: a 422 | type: INTEGER 423 | trap: 0xA8BC 424 | executor: C_ 425 | 426 | # #### 427 | 428 | - function: 429 | name: AngleFromSlope 430 | return: INTEGER 431 | args: 432 | - name: s 433 | type: Fixed 434 | trap: 0xA8C4 435 | executor: C_ 436 | 437 | # #### 438 | 439 | - function: 440 | name: FracMul 441 | return: Fract 442 | args: 443 | - name: x 444 | type: Fract 445 | - name: y 446 | type: Fract 447 | trap: 0xA84A 448 | executor: C_ 449 | 450 | # #### 451 | 452 | - function: 453 | name: FixDiv 454 | return: Fixed 455 | args: 456 | - name: x 457 | type: Fixed 458 | - name: y 459 | type: Fixed 460 | trap: 0xA84D 461 | executor: C_ 462 | 463 | # #### 464 | 465 | - function: 466 | name: FracDiv 467 | return: Fract 468 | args: 469 | - name: x 470 | type: Fract 471 | - name: y 472 | type: Fract 473 | trap: 0xA84B 474 | executor: C_ 475 | 476 | # #### 477 | 478 | - function: 479 | name: Long2Fix 480 | return: Fixed 481 | args: 482 | - name: x 483 | type: LONGINT 484 | trap: 0xA83F 485 | executor: C_ 486 | 487 | # #### 488 | 489 | - function: 490 | name: Fix2Long 491 | return: LONGINT 492 | args: 493 | - name: x 494 | type: Fixed 495 | trap: 0xA840 496 | executor: C_ 497 | 498 | # #### 499 | 500 | - function: 501 | name: Fix2Frac 502 | return: Fract 503 | args: 504 | - name: x 505 | type: Fixed 506 | trap: 0xA841 507 | executor: C_ 508 | 509 | # #### 510 | 511 | - function: 512 | name: Frac2Fix 513 | return: Fixed 514 | args: 515 | - name: x 516 | type: Fract 517 | trap: 0xA842 518 | executor: C_ 519 | 520 | # #### 521 | 522 | - only-for: Executor 523 | verbatim: | 524 | // TODO: 525 | // Executor will need to provide both 80-bit extended versions as trap 526 | // and 64-bit double versions for PPC. 527 | // Multiversal Interfaces might also need to declare a 96-bit extended version for 68881. 528 | extern Extended Fix2X(Fixed x); 529 | extern Fixed X2Fix(Extended *xp); 530 | extern Extended Frac2X(Fract x); 531 | extern Fract X2Frac(Extended *xp); 532 | 533 | # #### 534 | 535 | - function: 536 | name: R_X2Fix 537 | return: Fixed 538 | args: 539 | - name: x 540 | type: extended80* 541 | trap: 0xA844 542 | executor: C_ 543 | 544 | # #### 545 | 546 | - function: 547 | name: R_X2Frac 548 | return: Fract 549 | args: 550 | - name: x 551 | type: extended80* 552 | trap: 0xA846 553 | executor: C_ 554 | -------------------------------------------------------------------------------- /defs/Gestalt.yaml: -------------------------------------------------------------------------------- 1 | - enum: 2 | values: 3 | - name: gestaltPhysicalRAMSize 4 | value: "'ram '" 5 | - name: gestaltAddressingModeAttr 6 | value: "'addr'" 7 | - name: gestaltAliasMgrAttr 8 | value: "'alis'" 9 | - name: gestaltAppleEventsAttr 10 | value: "'evnt'" 11 | - name: gestaltAppleTalkVersion 12 | value: "'atlk'" 13 | - name: gestaltAUXVersion 14 | value: "'a/ux'" 15 | - name: gestaltConnMgrAttr 16 | value: "'conn'" 17 | - name: gestaltCRMAttr 18 | value: "'crm '" 19 | - name: gestaltCTBVersion 20 | value: "'ctbv'" 21 | - name: gestaltDBAccessMgrAttr 22 | value: "'dbac'" 23 | - name: gestaltDITLExtAttr 24 | value: "'ditl'" 25 | - name: gestaltEasyAccessAttr 26 | value: "'easy'" 27 | - name: gestaltEditionMgrAttr 28 | value: "'edtn'" 29 | - name: gestaltExtToolboxTable 30 | value: "'xttt'" 31 | - name: gestaltFindFolderAttr 32 | value: "'fold'" 33 | - name: gestaltFontMgrAttr 34 | value: "'font'" 35 | - name: gestaltFPUType 36 | value: "'fpu '" 37 | - name: gestaltFSAttr 38 | value: "'fs '" 39 | - name: gestaltFXfrMgrAttr 40 | value: "'fxfr'" 41 | - name: gestaltHardwareAttr 42 | value: "'hdwr'" 43 | - name: gestaltHelpMgrAttr 44 | value: "'help'" 45 | - name: gestaltIconUtilitiesAttr 46 | value: "'icon'" 47 | - name: gestaltKeyboardType 48 | value: "'kbd '" 49 | - name: gestaltLogicalPageSize 50 | value: "'pgsz'" 51 | - name: gestaltLogicalRAMSize 52 | value: "'lram'" 53 | - name: gestaltLowMemorySize 54 | value: "'lmem'" 55 | - name: gestaltMiscAttr 56 | value: "'misc'" 57 | - name: gestaltMMUType 58 | value: "'mmu '" 59 | - name: gestaltNotificatinMgrAttr 60 | value: "'nmgr'" 61 | - name: gestaltNuBusConnectors 62 | value: "'sltc'" 63 | - name: gestaltOSAttr 64 | value: "'os '" 65 | - name: gestaltOSTable 66 | value: "'ostt'" 67 | - name: gestaltParityAttr 68 | value: "'prty'" 69 | - name: gestaltPopupAttr 70 | value: "'pop!'" 71 | - name: gestaltPowerMgrAttr 72 | value: "'powr'" 73 | - name: gestaltPPCToolboxAttr 74 | value: "'ppc '" 75 | - name: gestaltProcessorType 76 | value: "'proc'" 77 | - name: gestaltQuickdrawVersion 78 | value: "'qd '" 79 | - name: gestaltQuickdrawFeatures 80 | value: "'qdrw'" 81 | - name: gestaltResourceMgrAttr 82 | value: "'rsrc'" 83 | - name: gestaltScriptCount 84 | value: "'scr#'" 85 | - name: gestaltScriptMgrVersion 86 | value: "'scri'" 87 | - name: gestaltSoundAttr 88 | value: "'snd '" 89 | - name: gestaltSpeechAttr 90 | value: "'ttsc'" 91 | - name: gestaltStandardFileAttr 92 | value: "'stdf'" 93 | - name: gestaltStdNBPAttr 94 | value: "'nlup'" 95 | - name: gestaltTermMgrAttr 96 | value: "'term'" 97 | - name: gestaltTextEditVersion 98 | value: "'te '" 99 | - name: gestaltTimeMgrVersion 100 | value: "'tmgr'" 101 | - name: gestaltToolboxTable 102 | value: "'tbbt'" 103 | - name: gestaltVersion 104 | value: "'vers'" 105 | - name: gestaltVMAttr 106 | value: "'vm '" 107 | - name: gestaltMachineIcon 108 | value: "'micn'" 109 | - name: gestaltMachineType 110 | value: "'mach'" 111 | - name: gestaltROMSize 112 | value: "'rom '" 113 | - name: gestaltROMVersion 114 | value: "'romv'" 115 | - name: gestaltSystemVersion 116 | value: "'sysv'" 117 | - name: gestaltNativeCPUtype 118 | value: "'cput'" 119 | - name: gestaltSysArchitecture 120 | value: "'sysa'" 121 | 122 | # #### 123 | 124 | - enum: 125 | values: 126 | - name: gestaltMacQuadra610 127 | value: 53 128 | - name: gestaltCPU68040 129 | value: 4 130 | - name: gestaltCPU601 131 | value: 0x101 132 | - name: gestaltCPU603 133 | value: 0x103 134 | - name: gestaltCPU604 135 | value: 0x104 136 | - name: gestaltCPU603e 137 | value: 0x106 138 | - name: gestaltCPU603ev 139 | value: 0x107 140 | - name: gestaltCPU750 141 | value: 0x108 142 | comment: | 143 | G3 144 | - name: gestaltCPU604e 145 | value: 0x109 146 | - name: gestaltCPU604ev 147 | value: 0x10A 148 | - name: gestaltCPUG4 149 | value: 0x10C 150 | comment: | 151 | determined by running test app on Sybil 152 | - name: gestaltNoMMU 153 | value: 0 154 | - name: gestalt68k 155 | value: 1 156 | - name: gestaltPowerPC 157 | value: 2 158 | 159 | # #### 160 | 161 | - enum: 162 | values: 163 | - name: gestalt32BitAddressing 164 | value: 0 165 | - name: gestalt32BitSysZone 166 | value: 1 167 | - name: gestalt32BitCapable 168 | value: 2 169 | 170 | # #### 171 | 172 | - enum: 173 | values: 174 | - name: gestaltHasVIA1 175 | value: 0 176 | - name: gestaltHasVIA2 177 | value: 1 178 | - name: gestaltHasASC 179 | value: 3 180 | - name: gestaltHasSSC 181 | value: 4 182 | - name: gestaltHasSCI 183 | value: 7 184 | comment: | 185 | gestaltHardwareAttr return values 186 | 187 | # #### 188 | 189 | - enum: 190 | values: 191 | - name: gestaltEasyAccessOff 192 | value: 1 << 0 193 | - name: gestalt68881 194 | value: 1 195 | - name: gestaltMacKbd 196 | value: 1 197 | - name: gestalt68040MMu 198 | value: 4 199 | - name: gestalt68000 200 | value: 1 201 | - name: gestalt68040 202 | value: 5 203 | 204 | # #### 205 | 206 | - enum: 207 | values: 208 | - name: gestaltOriginalQD 209 | value: 0 210 | - name: gestalt8BitQD 211 | value: 0x0100 212 | - name: gestalt32BitQD 213 | value: 0x0200 214 | - name: gestalt32BitQD11 215 | value: 0x0210 216 | - name: gestalt32BitQD12 217 | value: 0x0220 218 | - name: gestalt32BitQD13 219 | value: 0x0230 220 | 221 | # #### 222 | 223 | - enum: 224 | values: 225 | - name: gestaltHasColor 226 | value: 0 227 | - name: gestaltHasDeepGWorlds 228 | value: 1 229 | - name: gestaltHasDirectPixMaps 230 | value: 2 231 | - name: gestaltHasGrayishTextOr 232 | value: 3 233 | 234 | # #### 235 | 236 | - enum: 237 | values: 238 | - name: gestaltTE1 239 | value: 1 240 | - name: gestaltTE2 241 | value: 2 242 | - name: gestaltTE3 243 | value: 3 244 | - name: gestaltTE4 245 | value: 4 246 | - name: gestaltTE5 247 | value: 5 248 | 249 | # #### 250 | 251 | - enum: 252 | values: 253 | - name: gestaltDITLExtPresent 254 | value: 0 255 | 256 | # #### 257 | 258 | - enum: 259 | values: 260 | - name: gestaltStandardTimeMgr 261 | value: 1 262 | - name: gestaltVMPresent 263 | value: 1 << 0 264 | 265 | # #### 266 | 267 | - enum: 268 | values: 269 | - name: gestaltClassic 270 | value: 1 271 | - name: gestaltMacXL 272 | value: 2 273 | - name: gestaltMac512KE 274 | value: 3 275 | - name: gestaltMacPlus 276 | value: 4 277 | - name: gestaltMacSE 278 | value: 5 279 | - name: gestaltMacII 280 | value: 6 281 | - name: gestaltMacIIx 282 | value: 7 283 | - name: gestaltMacIIcx 284 | value: 8 285 | - name: gestaltMacSE30 286 | value: 9 287 | - name: gestaltPortable 288 | value: 10 289 | - name: gestaltMacIIci 290 | value: 11 291 | - name: gestaltMacIIfx 292 | value: 13 293 | - name: gestaltMacClassic 294 | value: 17 295 | - name: gestaltMacIIsi 296 | value: 18 297 | - name: gestaltMacLC 298 | value: 19 299 | 300 | # #### 301 | 302 | - enum: 303 | values: 304 | - name: gestaltHasFSSpecCalls 305 | value: 1 << 1 306 | 307 | # #### 308 | 309 | - enum: 310 | values: 311 | - name: gestaltStandardFile58 312 | value: 1 << 0 313 | 314 | # #### 315 | 316 | - enum: 317 | values: 318 | - name: gestaltUndefSelectorErr 319 | value: -5551 320 | - name: gestaltUnknownErr 321 | value: -5550 322 | - name: gestaltDupSelectorErr 323 | value: -5552 324 | - name: gestaltLocationErr 325 | value: -5553 326 | 327 | # #### 328 | 329 | - enum: 330 | values: 331 | - name: gestaltSerialAttr 332 | value: "'ser '" 333 | - name: gestaltHasGPIaToDCDa 334 | value: 0 335 | - name: gestaltHasGPIaToRTxCa 336 | value: 1 337 | - name: gestaltHasGPIbToDCDb 338 | value: 2 339 | - name: gestaltHidePortA 340 | value: 3 341 | - name: gestaltHidePortB 342 | value: 4 343 | - name: gestaltPortADisabled 344 | value: 5 345 | - name: gestaltPortBDisabled 346 | value: 6 347 | 348 | # #### 349 | 350 | - enum: 351 | values: 352 | - name: gestaltOpenTpt 353 | value: "'otan'" 354 | 355 | # #### 356 | 357 | - funptr: 358 | return: OSErr 359 | args: 360 | - type: OSType 361 | - type: LONGINT* 362 | name: SelectorFunctionUPP 363 | 364 | # #### 365 | 366 | - dispatcher: 367 | name: GestaltDispatch 368 | trap: 0xA1AD 369 | selector-location: TrapBits 370 | 371 | # #### 372 | 373 | - enum: 374 | values: 375 | - name: _Gestalt 376 | value: 0xA1AD 377 | 378 | # #### 379 | 380 | - function: 381 | name: Gestalt 382 | return: OSErr 383 | args: 384 | - name: selector 385 | type: OSType 386 | register: D0 387 | - name: responsep 388 | type: LONGINT* 389 | register: Out 390 | executor: C_ 391 | dispatcher: GestaltDispatch 392 | selector: 0x000 393 | returnreg: D0 394 | 395 | # #### 396 | 397 | - function: 398 | name: NewGestalt 399 | return: OSErr 400 | args: 401 | - name: selector 402 | type: OSType 403 | register: D0 404 | - name: selFunc 405 | type: SelectorFunctionUPP 406 | register: A0 407 | executor: C_ 408 | dispatcher: GestaltDispatch 409 | selector: 0x200 410 | returnreg: D0 411 | 412 | # #### 413 | 414 | - function: 415 | name: ReplaceGestalt 416 | return: OSErr 417 | args: 418 | - name: selector 419 | type: OSType 420 | register: D0 421 | - name: selFunc 422 | type: SelectorFunctionUPP 423 | register: A0 424 | - name: oldSelFuncp 425 | type: SelectorFunctionUPP* 426 | register: Out 427 | executor: C_ 428 | dispatcher: GestaltDispatch 429 | selector: 0x400 430 | returnreg: D0 431 | --------------------------------------------------------------------------------