#!/bin/bash TRAP_STRIPPER_SED_CMD=`mktemp -u /tmp/ida-traps-$USER-XXXXXXXX` sed 's#\(.*\) \(.*\)#s/\\b_\2\\b/dc.w \$\1 ; _\2/#' > "$TRAP_STRIPPER_SED_CMD" << HEREDOC A000 Open A001 Close A002 Read A003 Write A004 Control A005 Status A006 KillIO A007 GetVolInfo A008 Create A009 Delete A00A OpenRF A00B Rename A00C GetFileInfo A00D SetFileInfo A00E UnmountVol A00F MountVol A010 Allocate A011 GetEOF A012 SetEOF A013 FlushVol A014 GetVol A015 SetVol A016 FInitQueue A017 Eject A018 GetFPos A019 InitZone A01B SetZone A01C FreeMem A01F DisposePtr A01F DisposPtr A020 SetPtrSize A021 GetPtrSize A023 DisposeHandle A023 DisposHandle A024 SetHandleSize A025 GetHandleSize A027 ReallocHandle A029 HLock A02A HUnlock A02B EmptyHandle A02C InitApplZone A02D SetApplLimit A02E BlockMove A02F PostEvent A030 OSEventAvail A031 GetOSEvent A032 FlushEvents A033 VInstall A034 VRemove A035 OffLine A036 MoreMasters A038 WriteParam A039 ReadDateTime A03A SetDateTime A03B Delay A03C CmpString A03D DrvrInstall A03E DrvrRemove A03F InitUtil A040 ResrvMem A041 SetFilLock A042 RstFilLock A043 SetFilType A044 SetFPos A045 FlushFile A047 SetTrapAddress A049 HPurge A04A HNoPurge A04B SetGrowZone A04C CompactMem A04D PurgeMem A04E AddDrive A04F RDrvrInstall A050 CompareString A050 RelString A051 ReadXPRam A052 WriteXPRam A054 UprString A055 StripAddress A056 LowerText A056 LwrString A057 SetAppBase A057 SetApplBase A058 InsTime A059 RmvTime A05A PrimeTime A05B PowerOff A05C MemoryDispatch A05D SwapMMUMode A05E NMInstall A05F NMRemove A060 FSDispatch A061 MaxBlock A063 MaxApplZone A064 MoveHHi A065 StackSpace A067 HSetRBit A068 HClrRBit A069 HGetState A06A HSetState A06C InitFS A06D InitEvents A06E SlotManager A06F SlotVInstall A070 SlotVRemove A071 AttachVBL A072 DoVBLTask A075 SIntInstall A076 SIntRemove A077 CountADBs A078 GetIndADB A079 GetADBInfo A07A SetADBInfo A07B ADBReInit A07C ADBOp A07D GetDefaultStartup A07E SetDefaultStartup A07F InternalWait A080 GetVideoDefault A081 SetVideoDefault A082 DTInstall A083 SetOSDefault A084 GetOSDefault A085 PMgrOp A086 IOPInfoAccess A087 IOPMsgRequest A088 IOPMoveData A089 SCSIAtomic A08A Sleep A08B CommToolboxDispatch A08D DebugUtil A08F DeferUserFn A090 SysEnvirons A091 Translate24To32 A092 EgretDispatch A094 ServerDispatch A09E PowerMgrDispatch A09F PowerDispatch A0A4 HeapDispatch A0AC FSMDispatch A0AE VADBProc A0DD PPC A0FE TEFindWord A0FF TEFindLine A11A GetZone A11D MaxMem A11E NewPtr A122 NewHandle A126 HandleZone A128 RecoverHandle A12F PPostEvent A146 GetTrapAddress A148 PtrZone A15C MemoryDispatchA0Result A162 PurgeSpace A166 NewEmptyHandle A193 Microseconds A198 HWPriv A1AD Gestalt A200 HOpen A204 PBControlImmed A205 PBStatusImmed A207 HGetVInfo A207 PBHGetVInfoSync A208 HCreate A209 HDelete A209 PBHDeleteSync A20A HOpenRF A20B HRename A20B PBHRenameSync A20C HGetFileInfo A20C PBHGetFInfoSync A20D HSetFileInfo A20D PBHSetFInfoSync A20E HUnmountVol A210 AllocContig A214 HGetVol A215 HSetVol A22E BlockMoveData A23C MarkSensitiveEqualString A241 HSetFLock A242 HRstFLock A247 SetOSTrapAddress A256 StripText A260 HFSDispatch A285 IdleUpdate A28A SleepQInstall A28A SlpQInstall A31E NewPtrClear A322 NewHandleClear A346 GetOSTrapAddress A3AD NewGestalt A43C CaseSensitiveEqualString A440 ReserveMemSys A456 UpperText A458 InsXTime A485 IdleState A48A SleepQRemove A48A SlpQRemove A51E NewPtrSys A522 NewHandleSys A562 PurgeSpaceSys A5AD ReplaceGestalt A63C CaseAndMarkSensitiveEqualString A647 SetToolBoxTrapAddress A647 SetToolTrapAddress A656 StripUpperText A685 SerialPower A71E NewPtrSysClear A722 NewHandleSysClear A746 GetToolBoxTrapAddress A746 GetToolTrapAddress A7AD GetGestaltProcPtr A800 SoundDispatch A801 SndDisposeChannel A802 SndAddModifier A803 SndDoCommand A804 SndDoImmediate A805 SndPlay A806 SndControl A807 SndNewChannel A808 InitProcMenu A809 GetControlVariant A809 GetCVariant A80A GetWVariant A80B PopUpMenuSelect A80C rGetResource A80C RGetResource A80D Count1Resources A80E Get1IndResource A80E Get1IxResource A80F Get1IxType A810 Unique1ID A811 TESelView A812 TEPinScroll A813 TEAutoView A814 SetFractEnable A815 SCSIDispatch A816 Pack8 A817 CopyMask A818 FixATan2 A819 XMunger A81A HOpenResFile A81B HCreateResFile A81C Count1Types A81D InvalMenuBar A81F Get1Resource A820 Get1NamedResource A821 MaxSizeRsrc A822 ResourceDispatch A823 AliasDispatch A824 HFSUtilDispatch A825 MenuDispatch A826 InsertMenuItem A826 InsMenuItem A827 HideDialogItem A827 HideDItem A828 ShowDialogItem A828 ShowDItem A82A ComponentDispatch A82B Pack9 A82C Pack10 A82D Pack11 A82E Pack12 A82F Pack13 A830 Pack14 A831 Pack15 A833 ScrnBitMap A834 SetFScaleDisable A835 FontMetrics A836 GetMaskTable A837 MeasureText A838 CalcMask A839 SeedFill A83A ZoomWindow A83B TrackBox A83C TEGetOffset A83D TEDispatch A83E TEStyleNew A83F Long2Fix A840 Fix2Long A841 Fix2Frac A842 Frac2Fix A843 Fix2X A844 X2Fix A845 Frac2X A846 X2Frac A847 FracCos A848 FracSin A849 FracSqrt A84A FracMul A84B FracDiv A84D FixDiv A84E GetItemCmd A84F SetItemCmd A850 InitCursor A851 SetCursor A852 HideCursor A853 ShowCursor A854 FontDispatch A855 ShieldCursor A856 ObscureCursor A858 BitAnd A859 BitXOr A85A BitNot A85B BitOr A85C BitShift A85D BitTst A85E BitSet A85F BitClr A860 WaitNextEvent A861 Random A862 ForeColor A863 BackColor A864 ColorBit A865 GetPixel A866 StuffHex A867 LongMul A868 FixMul A869 FixRatio A86A HiWord A86B LoWord A86C FixRound A86D InitPort A86E InitGraf A86F OpenPort A870 LocalToGlobal A871 GlobalToLocal A872 GrafDevice A873 SetPort A874 GetPort A875 SetPBits A876 PortSize A877 MovePortTo A878 SetOrigin A879 SetClip A87A GetClip A87B ClipRect A87C BackPat A87D ClosePort A87E AddPt A87F SubPt A880 SetPt A881 EqualPt A882 StdText A883 DrawChar A884 DrawString A885 DrawText A886 TextWidth A887 TextFont A888 TextFace A889 TextMode A88A TextSize A88B GetFontInfo A88C StringWidth A88D CharWidth A88E SpaceExtra A88F OSDispatch A890 StdLine A891 LineTo A892 Line A893 MoveTo A894 Move A895 ShutDown A896 HidePen A897 ShowPen A898 GetPenState A899 SetPenState A89A GetPen A89B PenSize A89C PenMode A89D PenPat A89E PenNormal A89F DisableDogCow A89F EnableDogCow A89F InitDogCow A89F Moof A89F Unimplemented A8A0 StdRect A8A1 FrameRect A8A2 PaintRect A8A3 EraseRect A8A4 InverRect A8A5 FillRect A8A6 EqualRect A8A7 SetRect A8A8 OffsetRect A8A9 InsetRect A8AA SectRect A8AB UnionRect A8AC Pt2Rect A8AD PtInRect A8AE EmptyRect A8AF StdRRect A8B0 FrameRoundRect A8B1 PaintRoundRect A8B2 EraseRoundRect A8B3 InverRoundRect A8B4 FillRoundRect A8B5 ScriptUtil A8B6 StdOval A8B7 FrameOval A8B8 PaintOval A8B9 EraseOval A8BA InvertOval A8BB FillOval A8BC SlopeFromAngle A8BD StdArc A8BE FrameArc A8BF PaintArc A8C0 EraseArc A8C1 InvertArc A8C2 FillArc A8C3 PtToAngle A8C4 AngleFromSlope A8C5 StdPoly A8C6 FramePoly A8C7 PaintPoly A8C8 ErasePoly A8C9 InvertPoly A8CA FillPoly A8CB OpenPoly A8CC ClosePgon A8CC ClosePoly A8CD KillPoly A8CE OffsetPoly A8CF PackBits A8D0 UnpackBits A8D1 StdRgn A8D2 FrameRgn A8D3 PaintRgn A8D4 EraseRgn A8D5 InverRgn A8D6 FillRgn A8D7 BitMapRgn A8D7 BitMapToRegion A8D8 NewRgn A8D9 DisposeRgn A8D9 DisposRgn A8DA OpenRgn A8DB CloseRgn A8DC CopyRgn A8DD SetEmptyRgn A8DE SetRecRgn A8DF RectRgn A8E0 OffsetRgn A8E1 InsetRgn A8E2 EmptyRgn A8E3 EqualRgn A8E4 SectRgn A8E5 UnionRgn A8E6 DiffRgn A8E7 XOrRgn A8E8 PtInRgn A8E9 RectInRgn A8EA SetStdProcs A8EB StdBits A8EC CopyBits A8ED StdTxMeas A8EE StdGetPic A8EF ScrollRect A8F0 StdPutPic A8F1 StdComment A8F2 PicComment A8F3 OpenPicture A8F4 ClosePicture A8F5 KillPicture A8F6 DrawPicture A8F7 Layout A8F8 ScalePt A8F9 MapPt A8FA MapRect A8FB MapRgn A8FC MapPoly A8FD PrGlue A8FE InitFonts A8FF GetFName A900 GetFNum A901 FMSwapFont A902 RealFont A903 SetFontLock A904 DrawGrowIcon A905 DragGrayRgn A906 NewString A907 SetString A908 ShowHide A909 CalcVis A90A CalcVBehind A90B ClipAbove A90C PaintOne A90D PaintBehind A90E SaveOld A90F DrawNew A910 GetWMgrPort A911 CheckUpDate A912 InitWindows A913 NewWindow A914 DisposeWindow A914 DisposWindow A915 ShowWindow A916 HideWindow A917 GetWRefCon A918 SetWRefCon A919 GetWTitle A91A SetWTitle A91B MoveWindow A91C HiliteWindow A91D SizeWindow A91E TrackGoAway A91F SelectWindow A920 BringToFront A921 SendBehind A922 BeginUpDate A923 EndUpDate A924 FrontWindow A925 DragWindow A926 DragTheRgn A927 InvalRgn A928 InvalRect A929 ValidRgn A92A ValidRect A92B GrowWindow A92C FindWindow A92D CloseWindow A92E SetWindowPic A92F GetWindowPic A930 InitMenus A931 NewMenu A932 DisposeMenu A932 DisposMenu A933 AppendMenu A934 ClearMenuBar A935 InsertMenu A936 DeleteMenu A937 DrawMenuBar A938 HiliteMenu A939 EnableItem A93A DisableItem A93B GetMenuBar A93C SetMenuBar A93D MenuSelect A93E MenuKey A93F GetItmIcon A940 SetItmIcon A941 GetItmStyle A942 SetItmStyle A943 GetItmMark A944 SetItmMark A945 CheckItem A946 GetItem A946 GetMenuItemText A947 SetItem A947 SetMenuItemText A948 CalcMenuSize A949 GetMenuHandle A949 GetMHandle A94A SetMFlash A94B PlotIcon A94C FlashMenuBar A94D AddResMenu A94D AppendResMenu A94E PinRect A94F DeltaPoint A950 CountMItems A951 InsertResMenu A952 DeleteMenuItem A952 DelMenuItem A953 UpdtControl A954 NewControl A955 DisposControl A955 DisposeControl A956 KillControls A957 ShowControl A958 HideControl A959 MoveControl A95A GetControlReference A95A GetCRefCon A95B SetControlReference A95B SetCRefCon A95C SizeControl A95D HiliteControl A95E GetControlTitle A95E GetCTitle A95F SetControlTitle A95F SetCTitle A960 GetControlValue A960 GetCtlValue A961 GetControlMinimum A961 GetMinCtl A962 GetControlMaximum A962 GetMaxCtl A963 SetControlValue A963 SetCtlValue A964 SetControlMinimum A964 SetMinCtl A965 SetControlMaximum A965 SetMaxCtl A966 TestControl A967 DragControl A968 TrackControl A969 DrawControls A96A GetControlAction A96A GetCtlAction A96B SetControlAction A96B SetCtlAction A96C FindControl A96D Draw1Control A96E Dequeue A96F Enqueue A970 GetNextEvent A971 EventAvail A972 GetMouse A973 StillDown A974 Button A975 TickCount A976 GetKeys A977 WaitMouseUp A978 UpdateDialog A978 UpdtDialog A97B InitDialogs A97C GetNewDialog A97D NewDialog A97E SelectDialogItemText A97E SelIText A97F IsDialogEvent A980 DialogSelect A981 DrawDialog A982 CloseDialog A983 DisposDialog A983 DisposeDialog A984 FindDialogItem A984 FindDItem A985 Alert A986 StopAlert A987 NoteAlert A988 CautionAlert A98B ParamText A98C ErrorSound A98D GetDialogItem A98D GetDItem A98E SetDialogItem A98E SetDItem A98F SetDialogItemText A98F SetIText A990 GetDialogItemText A990 GetIText A991 ModalDialog A992 DetachResource A993 SetResPurge A994 CurResFile A995 InitResources A996 RsrcZoneInit A997 OpenResFile A998 UseResFile A999 UpdateResFile A99A CloseResFile A99B SetResLoad A99C CountResources A99D GetIndResource A99E CountTypes A99F GetIndType A9A0 GetResource A9A1 GetNamedResource A9A2 LoadResource A9A3 ReleaseResource A9A4 HomeResFile A9A5 GetResourceSizeOnDisk A9A5 SizeRsrc A9A6 GetResAttrs A9A7 SetResAttrs A9A8 GetResInfo A9A9 SetResInfo A9AA ChangedResource A9AB AddResource A9AC AddReference A9AD RemoveResource A9AD RmveResource A9AE RmveReference A9AF ResError A9B0 WriteResource A9B1 CreateResFile A9B2 SystemEvent A9B3 SystemClick A9B4 SystemTask A9B5 SystemMenu A9B6 OpenDeskAcc A9B7 CloseDeskAcc A9B8 GetPattern A9B9 GetCursor A9BA GetString A9BB GetIcon A9BC GetPicture A9BD GetNewWindow A9BE GetNewControl A9BF GetRMenu A9C0 GetNewMBar A9C1 UniqueID A9C2 SysEdit A9C3 KeyTrans A9C3 KeyTranslate A9C4 OpenRFPerm A9C5 RsrcMapEntry A9C6 SecondsToDate A9C6 Secs2Date A9C7 Date2Secs A9C7 DateToSeconds A9C8 SysBeep A9C9 SysError A9CA PutIcon A9CB TEGetText A9CC TEInit A9CD TEDispose A9CE TETextBox A9CE TextBox A9CF TESetText A9D0 TECalText A9D1 TESetSelect A9D2 TENew A9D3 TEUpdate A9D4 TEClick A9D5 TECopy A9D6 TECut A9D7 TEDelete A9D8 TEActivate A9D9 TEDeactivate A9DA TEIdle A9DB TEPaste A9DC TEKey A9DD TEScroll A9DE TEInsert A9DF TESetAlignment A9DF TESetJust A9E0 Munger A9E1 HandToHand A9E2 PtrToXHand A9E3 PtrToHand A9E4 HandAndHand A9E5 InitPack A9E6 InitAllPacks A9E7 Pack0 A9E8 Pack1 A9E9 Pack2 A9EA Pack3 A9EB FP68K A9EB Pack4 A9EC Elems68K A9EC Pack5 A9ED Pack6 A9EE DECSTR68K A9EE Pack7 A9EF PtrAndHand A9F0 LoadSeg A9F1 UnLoadSeg A9F2 Launch A9F3 Chain A9F4 ExitToShell A9F5 GetAppParms A9F6 GetResFileAttrs A9F7 SetResFileAttrs A9F8 MethodDispatch A9F9 InfoScrap A9FA UnloadScrap A9FA UnlodeScrap A9FB LoadScrap A9FB LodeScrap A9FC ZeroScrap A9FD GetScrap A9FE PutScrap A9FF Debugger AA00 OpenCPort AA01 InitCPort AA02 CloseCPort AA03 NewPixMap AA04 DisposePixMap AA04 DisposPixMap AA05 CopyPixMap AA06 SetPortPix AA07 NewPixPat AA08 DisposePixPat AA08 DisposPixPat AA09 CopyPixPat AA0A PenPixPat AA0B BackPixPat AA0C GetPixPat AA0D MakeRGBPat AA0E FillCRect AA0F FillCOval AA10 FillCRoundRect AA11 FillCArc AA12 FillCRgn AA13 FillCPoly AA14 RGBForeColor AA15 RGBBackColor AA16 SetCPixel AA17 GetCPixel AA18 GetCTable AA19 GetForeColor AA1A GetBackColor AA1B GetCCursor AA1C SetCCursor AA1D AllocCursor AA1E GetCIcon AA1F PlotCIcon AA20 OpenCPicture AA21 OpColor AA22 HiliteColor AA23 CharExtra AA24 DisposCTable AA24 DisposeCTable AA25 DisposCIcon AA25 DisposeCIcon AA26 DisposCCursor AA26 DisposeCCursor AA27 GetMaxDevice AA28 GetCTSeed AA29 GetDeviceList AA2A GetMainDevice AA2B GetNextDevice AA2C TestDeviceAttribute AA2D SetDeviceAttribute AA2E InitGDevice AA2F NewGDevice AA30 DisposeGDevice AA30 DisposGDevice AA31 SetGDevice AA32 GetGDevice AA33 Color2Index AA34 Index2Color AA35 InvertColor AA36 RealColor AA37 GetSubTable AA38 UpdatePixMap AA39 MakeITable AA3A AddSearch AA3B AddComp AA3C SetClientID AA3D ProtectEntry AA3E ReserveEntry AA3F SetEntries AA40 QDError AA41 SetWinColor AA42 GetAuxWin AA43 SetControlColor AA43 SetCtlColor AA44 GetAuxCtl AA44 GetAuxiliaryControlRecord AA45 NewCWindow AA46 GetNewCWindow AA47 SetDeskCPat AA48 GetCWMgrPort AA49 SaveEntries AA4A RestoreEntries AA4B NewCDialog AA4B NewColorDialog AA4C DelSearch AA4D DelComp AA4E SetStdCProcs AA4F CalcCMask AA50 SeedCFill AA51 CopyDeepMask AA52 HFSPinaforeDispatch AA52 HighLevelFSDispatch AA53 DictionaryDispatch AA54 TextServicesDispatch AA56 SpeechRecognitionDispatch AA57 DockingDispatch AA59 MixedModeDispatch AA5A CodeFragmentDispatch AA5C OCEUtils AA5D DigitalSignature AA5E TBDispatch AA60 DeleteMCEntries AA60 DelMCEntries AA61 GetMCInfo AA62 SetMCInfo AA63 DispMCInfo AA63 DisposeMCInfo AA64 GetMCEntry AA65 SetMCEntries AA66 MenuChoice AA67 ModalDialogMenuSetup AA68 DialogDispatch AA73 ControlDispatch AA74 AppearanceDispatch AA75 IconServicesDispatch AA7D StartupDispatch AA7E SysDebugDispatch AA80 AVLTreeDispatch AA81 FileMappingDispatch AA90 InitPalettes AA91 NewPalette AA92 GetNewPalette AA93 DisposePalette AA94 ActivatePalette AA95 NSetPalette AA95 SetPalette AA96 GetPalette AA97 PmForeColor AA98 PmBackColor AA99 AnimateEntry AA9A AnimatePalette AA9B GetEntryColor AA9C SetEntryColor AA9D GetEntryUsage AA9E SetEntryUsage AA9F CTab2Palette AAA0 Palette2CTab AAA1 CopyPalette AAA2 PaletteDispatch AAA3 CodecDispatch AAA4 ALMDispatch AADB CursorDeviceDispatch AAF2 ControlStripDispatch AAF3 ExpansionBusDispatch AAF3 ExpansionManager AB1D QDExtensions ABC3 NQDMisc ABC9 IconDispatch ABCA DeviceLoop ABE0 QDExtensions2 ABE9 NameRegistryDispatch ABEB DisplayDispatch ABED DragDispatch ABF1 GestaltValueDispatch ABF2 ThreadDispatch ABF6 CollectionMgr ABF8 StdOpcodeProc ABFC TranslationDispatch ABFF DebugStr HEREDOC # relative paths please cd "`dirname $0`/.." T=`mktemp -u /tmp/ida-interleave-$USER-XXXXXXXX` python3 IDA/cutter.py <(LC_CTYPE=C tr '\r' '\n' < OS/StartMgr/Boot3.a) <(sed -f "$TRAP_STRIPPER_SED_CMD" IDA/pure.asm | sed 's/^ /\t\t\t\t/') | sed 's/\(RESUME\|YIELD\)-IDA/redacted IDA macro/g' | sed 's/^\(\w\+\s\+\)=/\1set/' | # ida uses = to set vars sed 's/\$600026BE/ipJumpTbl/' | # specific sed 's/\(unk_\|word_\|dword_\|byte_\)\(\w\{1,4\}\)\b/\$\2/g' | # memory addresses not yet programmed into IDA sed 's/\b_\(A\w\w\w\)\b/dc.w \$\1/g' | # underscore-trap... fix this! sed 's/\b\(d[0-9]\)-\(a[0-9]\)\b/\1-d7\/a0-\2/' | # dodgy dX-aY register ranges => dX-d7/a0-aY cat > "$T" && LC_CTYPE=C tr '\n' '\r' < "$T" > OS/StartMgr/Boot3.a