Author Topic: Split traps  (Read 1720 times)

Offline OS923

  • Platinum Member (500+ Posts)
  • *****
  • Posts: 559
Split traps
« on: October 10, 2018, 06:31:53 AM »
I search the complete list of split traps.

From Inside Macintosh - PowerPC System Software page 1-68:
Note also that the system software includes a small number of split traps, system software routines that are implemented with 680x0 code (usually in ROM) and as PowerPC code in an import library. Because the PowerPC code is contained directly in the import library, you cannot patch the PowerPC portion of a split trap. In general, however, only those routines are implemented as split traps that are not likely candidates for patching. For example, a number of very small utility routines like AddPt and SetRect are implemented as split traps.

Finally, there are two problems which even fat patches can’t solve: “split traps” and selector-based traps. “Split” traps are minor utility routines (such as AddPt) which would be overwhelmed by the overhead of the trap dispatching mechanisms and which never really need to be patched. These routines are implemented as 68K code in the ROM and as PowerPC code in the Interface Library, which allows 68K code to access the 68K copy efficiently, and the PowerPC code to use the function without going through interface glue. Since the ROM-based versions of these routines are never called from PowerPC code, a patch on one of the “split traps” will only apply to 68K code calling the trap.

The hardest news about working with traps is that you never truly know whether you are calling an “accelerated” (PowerPC) trap, an emulated trap, or a “split trap.” Inside Macintosh doesn’t say which traps are which. A clever programmer could figure out which traps are which in a given machine with a given version of the system, but, as in the rest of the system software, these details are subject to change over time, and the presence of split traps make an otherwise easy task (of telling an emulated trap from an accelerated one) extremely difficult; a “split trap” looks just like any other 68K trap in the ROM.

Offline OS923

  • Platinum Member (500+ Posts)
  • *****
  • Posts: 559
Re: Split traps
« Reply #1 on: March 18, 2019, 03:43:29 AM »
Split traps:

Code: [Select]
OS: AddDrive
OS: AttachVBL
OS: BlockMove
OS: BlockMoveData
OS: CountADBs
OS: DTInstall
OS: DeferUserFn
OS: Delay
OS: DriverInstall
OS: DriverInstallReserveMem
OS: DrvrRemove
OS: FlushCodeCache
OS: FlushEvents
OS: Gestalt
OS: GetADBInfo
OS: GetDefaultStartup
OS: GetGestaltProcPtr
OS: GetOSDefault
OS: GetOSTrapAddress
OS: GetToolTrapAddress
OS: GetTrapAddress
OS: GetVideoDefault
OS: HWPriv
OS: InitEvents
OS: InitFS
OS: InitUtil
OS: InternalWait
OS: MemoryDispatch
OS: MemoryDispatchA0Result
OS: NewGestalt
OS: OSEventAvail
OS: PBKillIOAsync
OS: PBKillIOImmed
OS: PBKillIOSync
OS: ReadXPRam
OS: ReplaceGestalt
OS: SIntInstall
OS: SIntRemove
OS: SetADBInfo
OS: SetDefaultStartup
OS: SetOSDefault
OS: SetVideoDefault
OS: SlotManager
OS: SlotVInstall
OS: SlotVRemove
OS: StripAddress
OS: SwapMMUMode
OS: Translate24To32
OS: VInstall
OS: VRemove
OS: WriteParam
TB: ActivatePalette
TB: AddPt
TB: AnimateEntry
TB: AnimatePalette
TB: BitAnd
TB: BitClr
TB: BitMapToRegion
TB: BitNot
TB: BitOr
TB: BitSet
TB: BitShift
TB: BitTst
TB: BitXor
TB: CTab2Palette
TB: CalcMenuSize
TB: Chain
TB: CheckMenuItem
TB: ClearMenuBar
TB: CloseDeskAcc
TB: CopyPalette
TB: CouldAlert
TB: CouldDialog
TB: CursorDeviceDispatch
TB: DeleteMCEntries
TB: DeleteMenu
TB: DeltaPoint
TB: Dequeue
TB: DisposeCCursor
TB: DisposeCIcon
TB: DisposeMCInfo
TB: DisposePalette
TB: EmptyRect
TB: Enqueue
TB: EqualPt
TB: EqualRect
TB: Fix2Frac
TB: Fix2Long
TB: Fix2X
TB: FixATan2
TB: FixDiv
TB: FixMul
TB: FixRatio
TB: FixRound
TB: Frac2Fix
TB: Frac2X
TB: FracCos
TB: FracDiv
TB: FracMul
TB: FracSin
TB: FracSqrt
TB: FreeAlert
TB: FreeDialog
TB: GestaltValueDispatch
TB: GetAppParms
TB: GetCCursor
TB: GetCIcon
TB: GetCursor
TB: GetEntryColor
TB: GetEntryUsage
TB: GetIcon
TB: GetItemCmd
TB: GetItemIcon
TB: GetItemMark
TB: GetItmStyle
TB: GetKeys
TB: GetMCEntry
TB: GetMCInfo
TB: GetMaskTable
TB: GetMenuBar
TB: GetMenuHandle
TB: GetMenuItemText
TB: GetMouse
TB: GetNewPalette
TB: GetPalette
TB: GetPattern
TB: GetPicture
TB: GetSubTable
TB: GrafDevice
TB: HandAndHand
TB: HandToHand
TB: HiWord
TB: InfoScrap
TB: InitAllPacks
TB: InitGDevice
TB: InitMenus
TB: InitPack
TB: InitPalettes
TB: InitProcMenu
TB: InitResources
TB: InsetRect
TB: InvalMenuBar
TB: LoWord
TB: LoadScrap
TB: LoadSeg
TB: Long2Fix
TB: LongMul
TB: MakeITable
TB: MapPt
TB: MapRect
TB: MenuChoice
TB: MethodDispatch
TB: NewPalette
TB: OffsetRect
TB: Pack1
TB: Pack10
TB: Pack12
TB: Pack13
TB: Pack2
TB: Pack7
TB: Palette2CTab
TB: PaletteDispatch
TB: PlotCIcon
TB: PlotIcon
TB: PmBackColor
TB: PmForeColor
TB: ProtectEntry
TB: Pt2Rect
TB: PtInRect
TB: PtToAngle
TB: PtrAndHand
TB: PtrToHand
TB: PtrToXHand
TB: PutIcon
TB: Random
TB: ReserveEntry
TB: RestoreEntries
TB: SaveEntries
TB: ScalePt
TB: ScrnBitMap
TB: SectRect
TB: SetClientID
TB: SetEntries
TB: SetEntryColor
TB: SetEntryUsage
TB: SetItemIcon
TB: SetItemMark
TB: SetItemStyle
TB: SetMCEntries
TB: SetMCInfo
TB: SetMenuBar
TB: SetMenuFlashCount
TB: SetMenuItemText
TB: SetPalette
TB: SetPt
TB: SetRect
TB: SetResPurge
TB: StuffHex
TB: SubPt
TB: TickCount
TB: UnionRect
TB: UnloadScrap
TB: UnloadSeg
TB: UpdatePixMap
TB: X2Fix
TB: X2Frac

68K traps:

Code: [Select]
OS: CommToolboxDispatch
OS: DebugUtil
OS: EgretDispatch
OS: EndianSwap16Bit
OS: FInitQueue
OS: FSDispatch
OS: FSMDispatch
OS: GetOSEvent
OS: HFSDispatch
OS: IOPInfoAccess
OS: IOPMoveData
OS: IOPMsgRequest
OS: IdleState
OS: IdleUpdate
OS: InstallTimeTask
OS: InstallXTimeTask
OS: NMInstall
OS: NMRemove
OS: PBAllocContigAsync
OS: PBAllocContigSync
OS: PBAllocateAsync
OS: PBAllocateSync
OS: PBControlAsync
OS: PBControlImmed
OS: PBControlSync
OS: PBCreateAsync
OS: PBCreateSync
OS: PBDeleteAsync
OS: PBDeleteSync
OS: PBFlushFileAsync
OS: PBFlushFileSync
OS: PBFlushVolAsync
OS: PBFlushVolSync
OS: PBGetFInfoAsync
OS: PBGetFInfoSync
OS: PBGetFPosAsync
OS: PBGetFPosSync
OS: PBGetVInfoAsync
OS: PBGetVInfoSync
OS: PBGetVolAsync
OS: PBGetVolSync
OS: PBHCreateAsync
OS: PBHCreateSync
OS: PBHDeleteAsync
OS: PBHDeleteSync
OS: PBHGetFInfoAsync
OS: PBHGetFInfoSync
OS: PBHGetVInfoAsync
OS: PBHGetVInfoSync
OS: PBHGetVolAsync
OS: PBHGetVolSync
OS: PBHRenameAsync
OS: PBHRenameSync
OS: PBHRstFLockAsync
OS: PBHRstFLockSync
OS: PBHSetFInfoAsync
OS: PBHSetFInfoSync
OS: PBHSetFLockAsync
OS: PBHSetFLockSync
OS: PBHSetVolAsync
OS: PBHSetVolSync
OS: PBHTrashVolumeCachesSync
OS: PBReadAsync
OS: PBReadImmed
OS: PBReadSync
OS: PBRenameAsync
OS: PBRenameSync
OS: PBRstFLockAsync
OS: PBRstFLockSync
OS: PBSetFInfoAsync
OS: PBSetFInfoSync
OS: PBSetFLockAsync
OS: PBSetFLockSync
OS: PBSetFPosAsync
OS: PBSetFPosSync
OS: PBSetFVersAsync
OS: PBSetFVersSync
OS: PBSetVolAsync
OS: PBSetVolSync
OS: PBStatusAsync
OS: PBStatusImmed
OS: PBStatusSync
OS: PBWriteAsync
OS: PBWriteImmed
OS: PBWriteSync
OS: PMgrOp
OS: PPostEvent
OS: PostEvent
OS: PowerDispatch
OS: PowerMgrDispatch
OS: PowerOff
OS: PrimeTimeTask
OS: RemoveTimeTask
OS: SerialPower
OS: ServerDispatch
OS: SetA5
OS: SetApplBase
OS: Sleep
OS: SleepQInstall
OS: SleepQRemove
OS: SysEnvirons
OS: TEFindLine
OS: TEFindWord
TB: ALMDispatch
TB: AVLTreeDispatch
TB: AddReference
TB: AliasDispatch
TB: CloseResFile
TB: ComponentDispatch
TB: ControlStripDispatch
TB: CountMenuItems
TB: DebugStr
TB: Debugger
TB: DictionaryDispatch
TB: DigitalSignature
TB: DisplayDispatch
TB: DockingDispatch
TB: ExitToShell
TB: GetNewMBar
TB: GetScrap
TB: HFSUtilDispatch
TB: HOpenResFile
TB: HighLevelFSDispatch
TB: InsertMenu
TB: KeyTranslate
TB: Layout
TB: OCEUtils
TB: OSDispatch
TB: Pack11
TB: Pack14
TB: Pack15
TB: Pack3
TB: Pack4
TB: Pack5
TB: Pack8
TB: Pack9
TB: PrGlue
TB: RmveReference
TB: ShutDown
TB: SndAddModifier
TB: SndControl
TB: SndDisposeChannel
TB: SndDoCommand
TB: SndDoImmediate
TB: SndNewChannel
TB: SndPlay
TB: SoundDispatch
TB: SynchronizeIO
TB: SysBeep
TB: TBDispatch
TB: TEActivate
TB: TEAutoView
TB: TECalText
TB: TEClick
TB: TECopy
TB: TEDeactivate
TB: TEDelete
TB: TEDispatch
TB: TEDispose
TB: TEGetOffset
TB: TEGetText
TB: TEIdle
TB: TEInit
TB: TEInsert
TB: TEPaste
TB: TEPinScroll
TB: TEScroll
TB: TESelView
TB: TESetAlignment
TB: TESetSelect
TB: TESetText
TB: TEStyleNew
TB: TETextBox
TB: TEUpdate
TB: ThreadDispatch
TB: Unimplemented

PPC traps:

Code: [Select]
OS: CmpString
OS: CompactMem
OS: CompactMemSys
OS: CompareString
OS: DisposeHandle
OS: DisposePtr
OS: EmptyHandle
OS: FreeMem
OS: FreeMemSys
OS: GetPtrSize
OS: GetZone
OS: HClrRBit
OS: HGetState
OS: HLock
OS: HNoPurge
OS: HPurge
OS: HSetRBit
OS: HSetState
OS: HUnlock
OS: HandleZone
OS: HeapDispatch
OS: InitApplZone
OS: InitZone
OS: InlineGetHandleSize
OS: LowerText
OS: MaxApplZone
OS: MaxBlock
OS: MaxBlockSys
OS: MaxMem
OS: Microseconds
OS: MoreMasters
OS: MoveHHi
OS: NewEmptyHandle
OS: NewEmptyHandleSys
OS: NewHandle
OS: NewHandleClear
OS: NewHandleSys
OS: NewHandleSysClear
OS: NewPtr
OS: NewPtrClear
OS: NewPtrSys
OS: NewPtrSysClear
OS: PBCloseAsync
OS: PBCloseImmed
OS: PBCloseSync
OS: PBEject
OS: PBHOpenAsync
OS: PBHOpenRFAsync
OS: PBHOpenSync
OS: PBMountVol
OS: PBOffLine
OS: PBOpenAsync
OS: PBOpenRFAsync
OS: PBOpenRFSync
OS: PBOpenSync
OS: PBUnmountVol
OS: PBUnmountVolImmed
OS: PtrZone
OS: PurgeMem
OS: PurgeMemSys
OS: PurgeSpace
OS: PurgeSpaceContiguous
OS: PurgeSpaceSysContiguous
OS: RDrvrInstall
OS: ReadDateTime
OS: ReallocateHandle
OS: ReallocateHandleSys
OS: RecoverHandle
OS: RecoverHandleSys
OS: ReserveMem
OS: ReserveMemSys
OS: SCSIAtomic
OS: SetApplLimit
OS: SetDateTime
OS: SetGrowZone
OS: SetHandleSize
OS: SetOSTrapAddress
OS: SetPtrSize
OS: SetToolTrapAddress
OS: SetTrapAddress
OS: SetZone
OS: StackSpace
OS: StripText
OS: StripUpperText
OS: UpperText
OS: UprText
OS: WriteXPRam
TB: AddComp
TB: AddResource
TB: AddSearch
TB: Alert
TB: AllocCursor
TB: AngleFromSlope
TB: AppearanceDispatch
TB: AppendMenu
TB: AppendResMenu
TB: BackColor
TB: BackPat
TB: BackPixPat
TB: BeginUpdate
TB: BringToFront
TB: Button
TB: CalcCMask
TB: CalcMask
TB: CalcVis
TB: CalcVisBehind
TB: CautionAlert
TB: ChangedResource
TB: CharExtra
TB: CharWidth
TB: CheckUpdate
TB: ClipAbove
TB: ClipRect
TB: CloseCPort
TB: CloseDialog
TB: ClosePicture
TB: ClosePoly
TB: ClosePort
TB: CloseRgn
TB: CloseWindow
TB: CodeFragmentDispatch
TB: CollectionMgr
TB: Color2Index
TB: ColorBit
TB: ControlDispatch
TB: ControlRef
TB: CopyBits
TB: CopyDeepMask
TB: CopyMask
TB: CopyPixMap
TB: CopyPixPat
TB: CopyRgn
TB: Count1Resources
TB: Count1Types
TB: CountResources
TB: CountTypes
TB: CreateResFile
TB: CurResFile
TB: DateToSeconds
TB: DelComp
TB: DelSearch
TB: DeleteMenuItem
TB: DetachResource
TB: DeviceLoop
TB: DialogDispatch
TB: DialogSelect
TB: DiffRgn
TB: DisableItem
TB: DisposeCTable
TB: DisposeControl
TB: DisposeDialog
TB: DisposeGDevice
TB: DisposeMenu
TB: DisposePixMap
TB: DisposePixPat
TB: DisposeRgn
TB: DisposeWindow
TB: DragControl
TB: DragDispatch
TB: DragGrayRgn
TB: DragTheRgn
TB: DragWindow
TB: Draw1Control
TB: DrawChar
TB: DrawControls
TB: DrawDialog
TB: DrawGrowIcon
TB: DrawMenuBar
TB: DrawNew
TB: DrawPicture
TB: DrawString
TB: DrawText
TB: EmptyRgn
TB: EnableItem
TB: EndUpdate
TB: EqualRgn
TB: EraseArc
TB: EraseOval
TB: ErasePoly
TB: EraseRect
TB: EraseRgn
TB: EraseRoundRect
TB: ErrorSound
TB: EventAvail
TB: FMSwapFont
TB: FillArc
TB: FillCArc
TB: FillCOval
TB: FillCPoly
TB: FillCRect
TB: FillCRgn
TB: FillCRoundRect
TB: FillOval
TB: FillPoly
TB: FillRect
TB: FillRgn
TB: FillRoundRect
TB: FindControl
TB: FindDialogItem
TB: FindWindow
TB: FlashMenuBar
TB: FontDispatch
TB: FontMetrics
TB: ForeColor
TB: FrameArc
TB: FrameOval
TB: FramePoly
TB: FrameRect
TB: FrameRgn
TB: FrameRoundRect
TB: FrontWindow
TB: Get1IndResource
TB: Get1IndType
TB: Get1NamedResource
TB: Get1Resource
TB: GetAuxWin
TB: GetAuxiliaryControlRecord
TB: GetBackColor
TB: GetCPixel
TB: GetCTSeed
TB: GetCTable
TB: GetCWMgrPort
TB: GetClip
TB: GetControlAction
TB: GetControlMaximum
TB: GetControlMinimum
TB: GetControlReference
TB: GetControlTitle
TB: GetControlValue
TB: GetControlVariant
TB: GetDeviceList
TB: GetDialogItem
TB: GetDialogItemText
TB: GetFNum
TB: GetFontInfo
TB: GetFontName
TB: GetForeColor
TB: GetGDevice
TB: GetIndResource
TB: GetIndType
TB: GetMainDevice
TB: GetMaxDevice
TB: GetMaxResourceSize
TB: GetMenu
TB: GetNamedResource
TB: GetNewCWindow
TB: GetNewControl
TB: GetNewDialog
TB: GetNewWindow
TB: GetNextDevice
TB: GetNextEvent
TB: GetPen
TB: GetPenState
TB: GetPixPat
TB: GetPixel
TB: GetPort
TB: GetResAttrs
TB: GetResFileAttrs
TB: GetResInfo
TB: GetResource
TB: GetResourceSizeOnDisk
TB: GetString
TB: GetWMgrPort
TB: GetWRefCon
TB: GetWTitle
TB: GetWVariant
TB: GetWindowPic
TB: GlobalToLocal
TB: GrowWindow
TB: HCreateResFile
TB: HideControl
TB: HideCursor
TB: HideDialogItem
TB: HidePen
TB: HideWindow
TB: HiliteColor
TB: HiliteControl
TB: HiliteMenu
TB: HiliteWindow
TB: HomeResFile
TB: IconDispatch
TB: Index2Color
TB: InitCPort
TB: InitCursor
TB: InitDialogs
TB: InitFonts
TB: InitGraf
TB: InitPort
TB: InitWindows
TB: InsertMenuItem
TB: InsertResMenu
TB: InsetRgn
TB: InvalRect
TB: InvalRgn
TB: InvertArc
TB: InvertColor
TB: InvertOval
TB: InvertPoly
TB: InvertRect
TB: InvertRgn
TB: InvertRoundRect
TB: IsDialogEvent
TB: KillControls
TB: KillPicture
TB: KillPoly
TB: LaunchApplication
TB: Line
TB: LineTo
TB: LoadResource
TB: LocalToGlobal
TB: MakeRGBPat
TB: MapPoly
TB: MapRgn
TB: MeasureText
TB: MenuDispatch
TB: MenuKey
TB: MenuSelect
TB: MixedModeDispatch
TB: ModalDialog
TB: ModalDialogMenuSetup
TB: Move
TB: MoveControl
TB: MovePortTo
TB: MoveTo
TB: MoveWindow
TB: Munger
TB: NewCWindow
TB: NewColorDialog
TB: NewDialog
TB: NewGDevice
TB: NewMenu
TB: NewPixMap
TB: NewPixPat
TB: NewRgn
TB: NewString
TB: NewWindow
TB: NoteAlert
TB: ObscureCursor
TB: OffsetPoly
TB: OffsetRgn
TB: OpColor
TB: OpenCPicture
TB: OpenCPort
TB: OpenDeskAcc
TB: OpenPicture
TB: OpenPoly
TB: OpenPort
TB: OpenRFPerm
TB: OpenResFile
TB: OpenRgn
TB: Pack0
TB: Pack6
TB: PackBits
TB: PaintArc
TB: PaintBehind
TB: PaintOne
TB: PaintOval
TB: PaintPoly
TB: PaintRect
TB: PaintRgn
TB: PaintRoundRect
TB: ParamText
TB: PenMode
TB: PenNormal
TB: PenPat
TB: PenPixPat
TB: PenSize
TB: PicComment
TB: PinRect
TB: PopUpMenuSelect
TB: PortSize
TB: PtInRgn
TB: PutScrap
TB: QDError
TB: QDExtensions
TB: RGBBackColor
TB: RGBForeColor
TB: RGetResource
TB: RealColor
TB: RealFont
TB: RectInRgn
TB: RectRgn
TB: ReleaseResource
TB: RemoveResource
TB: ResError
TB: ResourceDispatch
TB: RsrcMapEntry
TB: RsrcZoneInit
TB: SCSIDispatch
TB: SaveOld
TB: ScriptUtil
TB: ScrollRect
TB: SecondsToDate
TB: SectRgn
TB: SeedCFill
TB: SeedFill
TB: SelectDialogItemText
TB: SelectWindow
TB: SendBehind
TB: SetCCursor
TB: SetCPixel
TB: SetClip
TB: SetControlAction
TB: SetControlColor
TB: SetControlMaximum
TB: SetControlMinimum
TB: SetControlReference
TB: SetControlTitle
TB: SetControlValue
TB: SetCursor
TB: SetDeskCPat
TB: SetDeviceAttribute
TB: SetDialogItem
TB: SetDialogItemText
TB: SetEmptyRgn
TB: SetFScaleDisable
TB: SetFontLock
TB: SetFractEnable
TB: SetGDevice
TB: SetItemCmd
TB: SetOrigin
TB: SetPenState
TB: SetPort
TB: SetPortBits
TB: SetPortPix
TB: SetRectRgn
TB: SetResAttrs
TB: SetResFileAttrs
TB: SetResInfo
TB: SetResLoad
TB: SetStdCProcs
TB: SetStdProcs
TB: SetString
TB: SetWRefCon
TB: SetWTitle
TB: SetWinColor
TB: SetWindowPic
TB: ShieldCursor
TB: ShowControl
TB: ShowCursor
TB: ShowDialogItem
TB: ShowHide
TB: ShowPen
TB: ShowWindow
TB: SizeControl
TB: SizeWindow
TB: SlopeFromAngle
TB: SpaceExtra
TB: StdArc
TB: StdBits
TB: StdComment
TB: StdGetPic
TB: StdLine
TB: StdOpcode
TB: StdOval
TB: StdPoly
TB: StdPutPic
TB: StdRRect
TB: StdRect
TB: StdRgn
TB: StdText
TB: StdTxMeas
TB: StillDown
TB: StopAlert
TB: StringWidth
TB: SysError
TB: SystemClick
TB: SystemEdit
TB: SystemEvent
TB: SystemMenu
TB: SystemTask
TB: TestControl
TB: TestDeviceAttribute
TB: TextFace
TB: TextFont
TB: TextMode
TB: TextServicesDispatch
TB: TextSize
TB: TextWidth
TB: TrackBox
TB: TrackControl
TB: TrackGoAway
TB: TranslationDispatch
TB: UnionRgn
TB: Unique1ID
TB: UniqueID
TB: UnpackBits
TB: UpdateControls
TB: UpdateDialog
TB: UpdateResFile
TB: UseResFile
TB: ValidRect
TB: ValidRgn
TB: WaitMouseUp
TB: WaitNextEvent
TB: WriteResource
TB: XMunger
TB: XorRgn
TB: ZeroScrap
TB: ZoomWindow
TB: ataManager

Offline OS923

  • Platinum Member (500+ Posts)
  • *****
  • Posts: 559
Re: Split traps
« Reply #2 on: March 26, 2019, 05:56:49 AM »
The list that I published is not the list of split traps, but rather the list of 68K traps in ROM.

If you open System in The Fragmalyzer then you see 3 fragments with the name InterfaceLib. If you click on them then you see a list of function names. If you click on them then it opens a window with assembler code. (This can freeze your computer; 1.5.2 freezes less than 1.1.2.) If it shows a CallUniversalProc or a CallOSTrapUniversalProc then it's not a split trap.

Does everyone agree that this is the way to detect a split trap?

Offline OS923

  • Platinum Member (500+ Posts)
  • *****
  • Posts: 559
Re: Split traps
« Reply #3 on: April 12, 2019, 08:33:43 AM »
I found 36 split traps. They are all toolbox traps, not OS traps.
Code: [Select]

All other 68K traps cause a mode switch in a PPC program.