|
@@ -0,0 +1,1739 @@
|
|
|
+{
|
|
|
+ $Id$
|
|
|
+ This file is part of the Free Pascal run time library.
|
|
|
+
|
|
|
+ exec definitions (V50) for MorphOS/PowerPC
|
|
|
+ Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
|
|
|
+
|
|
|
+ Free Pascal conversion
|
|
|
+ Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
|
|
|
+
|
|
|
+ See the file COPYING.FPC, included in this distribution,
|
|
|
+ for details about the copyright.
|
|
|
+
|
|
|
+ This program is distributed in the hope that it will be useful,
|
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
+
|
|
|
+ **********************************************************************}
|
|
|
+
|
|
|
+{$include emuld.inc}
|
|
|
+
|
|
|
+const
|
|
|
+ TAG_USER = (1 Shl 31);
|
|
|
+
|
|
|
+
|
|
|
+{ * exec node definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PNode = ^TNode;
|
|
|
+ TNode = packed record
|
|
|
+ ln_Succ: PNode;
|
|
|
+ ln_Pred: PNode;
|
|
|
+ ln_Type: Byte;
|
|
|
+ ln_Pri : ShortInt;
|
|
|
+ ln_Name: PChar;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PMinNode = ^TMinNode;
|
|
|
+ TMinNode = packed record
|
|
|
+ mln_Succ: PMinNode;
|
|
|
+ mln_Pred: PMinNode;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ NT_UNKNOWN = 0;
|
|
|
+ NT_TASK = 1;
|
|
|
+ NT_INTERRUPT = 2;
|
|
|
+ NT_DEVICE = 3;
|
|
|
+ NT_MSGPORT = 4;
|
|
|
+ NT_MESSAGE = 5;
|
|
|
+ NT_FREEMSG = 6;
|
|
|
+ NT_REPLYMSG = 7;
|
|
|
+ NT_RESOURCE = 8;
|
|
|
+ NT_LIBRARY = 9;
|
|
|
+ NT_MEMORY = 10;
|
|
|
+ NT_SOFTINT = 11;
|
|
|
+ NT_FONT = 12;
|
|
|
+ NT_PROCESS = 13;
|
|
|
+ NT_SEMAPHORE = 14;
|
|
|
+ NT_SIGNALSEM = 15;
|
|
|
+ NT_BOOTNODE = 16;
|
|
|
+ NT_KICKMEM = 17;
|
|
|
+ NT_GRAPHICS = 18;
|
|
|
+ NT_DEATHMESSAGE = 19;
|
|
|
+ NT_USER = 254;
|
|
|
+ NT_EXTENDED = 255;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec list definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PList = ^TList;
|
|
|
+ TList = packed record
|
|
|
+ lh_Head : PNode;
|
|
|
+ lh_Tail : PNode;
|
|
|
+ lh_TailPred: PNode;
|
|
|
+ lh_Type : Byte;
|
|
|
+ lh_pad : Byte;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PMinList = ^TMinList;
|
|
|
+ TMinList = packed record
|
|
|
+ mlh_Head : PMinNode;
|
|
|
+ mlh_Tail : PMinNode;
|
|
|
+ mlh_TailPred: PMinNode;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec alert definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ ACPU_BusErr = $80000002;
|
|
|
+ ACPU_AddressErr = $80000003;
|
|
|
+ ACPU_InstErr = $80000004;
|
|
|
+ ACPU_DivZero = $80000005;
|
|
|
+ ACPU_CHK = $80000006;
|
|
|
+ ACPU_TRAPV = $80000007;
|
|
|
+ ACPU_PrivErr = $80000008;
|
|
|
+ ACPU_Trace = $80000009;
|
|
|
+ ACPU_LineA = $8000000A;
|
|
|
+ ACPU_LineF = $8000000B;
|
|
|
+ ACPU_Format = $8000000E;
|
|
|
+ ACPU_Spurious = $80000018;
|
|
|
+ ACPU_AutoVec1 = $80000019;
|
|
|
+ ACPU_AutoVec2 = $8000001A;
|
|
|
+ ACPU_AutoVec3 = $8000001B;
|
|
|
+ ACPU_AutoVec4 = $8000001C;
|
|
|
+ ACPU_AutoVec5 = $8000001D;
|
|
|
+ ACPU_AutoVec6 = $8000001E;
|
|
|
+ ACPU_AutoVec7 = $8000001F;
|
|
|
+
|
|
|
+ AT_DeadEnd = $80000000;
|
|
|
+ AT_Recovery = $00000000;
|
|
|
+
|
|
|
+ AG_NoMemory = $00010000;
|
|
|
+ AG_MakeLib = $00020000;
|
|
|
+ AG_OpenLib = $00030000;
|
|
|
+ AG_OpenDev = $00040000;
|
|
|
+ AG_OpenRes = $00050000;
|
|
|
+ AG_IOError = $00060000;
|
|
|
+ AG_NoSignal = $00070000;
|
|
|
+ AG_BadParm = $00080000;
|
|
|
+ AG_CloseLib = $00090000;
|
|
|
+ AG_CloseDev = $000A0000;
|
|
|
+ AG_ProcCreate = $000B0000;
|
|
|
+ AG_MsgPortNotEmpty = $000C0000 { * V50 * };
|
|
|
+
|
|
|
+ AO_ExecLib = $00008001;
|
|
|
+ AO_GraphicsLib = $00008002;
|
|
|
+ AO_LayersLib = $00008003;
|
|
|
+ AO_Intuition = $00008004;
|
|
|
+ AO_MathLib = $00008005;
|
|
|
+ AO_DOSLib = $00008007;
|
|
|
+ AO_RAMLib = $00008008;
|
|
|
+ AO_IconLib = $00008009;
|
|
|
+ AO_ExpansionLib = $0000800A;
|
|
|
+ AO_DiskfontLib = $0000800B;
|
|
|
+ AO_UtilityLib = $0000800C;
|
|
|
+ AO_KeyMapLib = $0000800D;
|
|
|
+
|
|
|
+ AO_AudioDev = $00008010;
|
|
|
+ AO_ConsoleDev = $00008011;
|
|
|
+ AO_GamePortDev = $00008012;
|
|
|
+ AO_KeyboardDev = $00008013;
|
|
|
+ AO_TrackDiskDev = $00008014;
|
|
|
+ AO_TimerDev = $00008015;
|
|
|
+
|
|
|
+ AO_CIARsrc = $00008020;
|
|
|
+ AO_DiskRsrc = $00008021;
|
|
|
+ AO_MiscRsrc = $00008022;
|
|
|
+
|
|
|
+ AO_BootStrap = $00008030;
|
|
|
+ AO_Workbench = $00008031;
|
|
|
+ AO_DiskCopy = $00008032;
|
|
|
+ AO_GadTools = $00008033;
|
|
|
+ AO_Unknown = $00008035;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * exec.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_ExecLib = $01000000;
|
|
|
+ AN_ExcptVect = $01000001;
|
|
|
+ AN_BaseChkSum = $01000002;
|
|
|
+ AN_LibChkSum = $01000003;
|
|
|
+
|
|
|
+ AN_MemCorrupt = $81000005;
|
|
|
+ AN_IntrMem = $81000006;
|
|
|
+ AN_InitAPtr = $01000007;
|
|
|
+ AN_SemCorrupt = $01000008;
|
|
|
+
|
|
|
+ AN_FreeTwice = $01000009;
|
|
|
+ AN_BogusExcpt = $8100000A;
|
|
|
+ AN_IOUsedTwice = $0100000B;
|
|
|
+ AN_MemoryInsane = $0100000C;
|
|
|
+
|
|
|
+ AN_IOAfterClose = $0100000D;
|
|
|
+ AN_StackProbe = $0100000E;
|
|
|
+ AN_BadFreeAddr = $0100000F;
|
|
|
+ AN_BadSemaphore = $01000010;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * graphics.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_GraphicsLib = $02000000;
|
|
|
+ AN_GfxNoMem = $82010000;
|
|
|
+ AN_GfxNoMemMspc = $82010001;
|
|
|
+ AN_LongFrame = $82010006;
|
|
|
+ AN_ShortFrame = $82010007;
|
|
|
+ AN_TextTmpRas = $02010009;
|
|
|
+ AN_BltBitMap = $8201000A;
|
|
|
+ AN_RegionMemory = $8201000B;
|
|
|
+ AN_MakeVPort = $82010030;
|
|
|
+ AN_GfxNewError = $0200000C;
|
|
|
+ AN_GfxFreeError = $0200000D;
|
|
|
+
|
|
|
+ AN_GfxNoLCM = $82011234;
|
|
|
+
|
|
|
+ AN_ObsoleteFont = $02000401;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * layers.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_LayersLib = $03000000;
|
|
|
+ AN_LayersNoMem = $83010000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * intuition.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_Intuition = $04000000;
|
|
|
+ AN_GadgetType = $84000001;
|
|
|
+ AN_BadGadget = $04000001;
|
|
|
+ AN_CreatePort = $84010002;
|
|
|
+ AN_ItemAlloc = $04010003;
|
|
|
+ AN_SubAlloc = $04010004;
|
|
|
+ AN_PlaneAlloc = $84010005;
|
|
|
+ AN_ItemBoxTop = $84000006;
|
|
|
+ AN_OpenScreen = $84010007;
|
|
|
+ AN_OpenScrnRast = $84010008;
|
|
|
+ AN_SysScrnType = $84000009;
|
|
|
+ AN_AddSWGadget = $8401000A;
|
|
|
+ AN_OpenWindow = $8401000B;
|
|
|
+ AN_BadState = $8400000C;
|
|
|
+ AN_BadMessage = $8400000D;
|
|
|
+ AN_WeirdEcho = $8400000E;
|
|
|
+ AN_NoConsole = $8400000F;
|
|
|
+ AN_NoISem = $04000010;
|
|
|
+ AN_ISemOrder = $04000011;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * math.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_MathLib = $05000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * dos.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_DOSLib = $07000000;
|
|
|
+ AN_StartMem = $07010001;
|
|
|
+ AN_EndTask = $07000002;
|
|
|
+ AN_QPktFail = $07000003;
|
|
|
+ AN_AsyncPkt = $07000004;
|
|
|
+ AN_FreeVec = $07000005;
|
|
|
+ AN_DiskBlkSeq = $07000006;
|
|
|
+ AN_BitMap = $07000007;
|
|
|
+ AN_KeyFree = $07000008;
|
|
|
+ AN_BadChkSum = $07000009;
|
|
|
+ AN_DiskError = $0700000A;
|
|
|
+ AN_KeyRange = $0700000B;
|
|
|
+ AN_BadOverlay = $0700000C;
|
|
|
+ AN_BadInitFunc = $0700000D;
|
|
|
+ AN_FileReclosed = $0700000E;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * ramlib.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_RAMLib = $08000000;
|
|
|
+ AN_BadSegList = $08000001;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * icon.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_IconLib = $09000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * expansion.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_ExpansionLib = $0A000000;
|
|
|
+ AN_BadExpansionFree = $0A000001;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * diskfont.library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_DiskfontLib = $0B000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * audio.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_AudioDev = $10000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * console.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_ConsoleDev = $11000000;
|
|
|
+ AN_NoWindow = $11000001;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * gameport.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_GamePortDev = $12000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * keyboard.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_KeyboardDev = $13000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * trackdisk.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_TrackDiskDev = $14000000;
|
|
|
+ AN_TDCalibSeek = $14000001;
|
|
|
+ AN_TDDelay = $14000002;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * timer.device
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_TimerDev = $15000000;
|
|
|
+ AN_TMBadReq = $15000001;
|
|
|
+ AN_TMBadSupply = $15000002;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * cia.resource
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_CIARsrc = $20000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * disk.resource
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_DiskRsrc = $21000000;
|
|
|
+ AN_DRHasDisk = $21000001;
|
|
|
+ AN_DRIntNoAct = $21000002;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * misc.resource
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_MiscRsrc = $22000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * bootstrap
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_BootStrap = $30000000;
|
|
|
+ AN_BootError = $30000001;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Workbench
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_Workbench = $31000000;
|
|
|
+ AN_NoFonts = $B1000001;
|
|
|
+ AN_WBBadStartupMsg1 = $31000001;
|
|
|
+ AN_WBBadStartupMsg2 = $31000002;
|
|
|
+ AN_WBBadIOMsg = $31000003;
|
|
|
+ AN_WBReLayoutToolMenu = $B1010009;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * DiskCopy
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_DiskCopy = $32000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * toolkit for Intuition
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_GadTools = $33000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * System utility library
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_UtilityLib = $34000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * For use by any application that needs it
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AN_Unknown = $35000000;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec error definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ IOERR_OPENFAIL = (-1);
|
|
|
+ IOERR_ABORTED = (-2);
|
|
|
+ IOERR_NOCMD = (-3);
|
|
|
+ IOERR_BADLENGTH = (-4);
|
|
|
+ IOERR_BADADDRESS = (-5);
|
|
|
+ IOERR_UNITBUSY = (-6);
|
|
|
+ IOERR_SELFTEST = (-7);
|
|
|
+ IOERR_NOMEMORY = (-8);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec resident definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PResident = ^TResident;
|
|
|
+ TResident = packed record
|
|
|
+ rt_MatchWord: Word;
|
|
|
+ rt_MatchTag : PResident;
|
|
|
+ rt_EndSkip : Pointer;
|
|
|
+ rt_Flags : Byte;
|
|
|
+ rt_Version : Byte;
|
|
|
+ rt_Type : Byte;
|
|
|
+ rt_Pri : Byte;
|
|
|
+ rt_Name : PChar;
|
|
|
+ rt_IdString : PChar;
|
|
|
+ rt_Init : Pointer;
|
|
|
+ { * Only valid when RTF_EXTENDED is set
|
|
|
+ * }
|
|
|
+ rt_Revision : Word; { * Revision Entry * }
|
|
|
+ rt_Tags : Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ RTC_MATCHWORD = $4AFC;
|
|
|
+
|
|
|
+ RTF_AUTOINIT = (1 Shl 7);
|
|
|
+ RTF_EXTENDED = (1 Shl 6); { * structure extension is valid * }
|
|
|
+ { * rt_Init points to a PPC function which must be defined as
|
|
|
+ *
|
|
|
+ * struct Library* LIB_Init(struct Library *MyLibBase,
|
|
|
+ * BPTR SegList,
|
|
|
+ * struct ExecBase *SysBase)
|
|
|
+ * }
|
|
|
+ RTF_PPC = (1 Shl 3);
|
|
|
+ RTF_AFTERDOS = (1 Shl 2);
|
|
|
+ RTF_SINGLETASK = (1 Shl 1);
|
|
|
+ RTF_COLDSTART = (1 Shl 0);
|
|
|
+
|
|
|
+ RTW_NEVER = 0;
|
|
|
+ RTW_COLDSTART = 1;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec memory definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PMemChunk = ^TMemChunk;
|
|
|
+ TMemChunk = packed record
|
|
|
+ nc_Next : PMemChunk;
|
|
|
+ nc_Bytes: DWord;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PMemHeader = ^TMemHeader;
|
|
|
+ TMemHeader = packed record
|
|
|
+ mh_Node : TNode;
|
|
|
+ mh_Attributes: Word;
|
|
|
+ mh_First : PMemChunk;
|
|
|
+ mh_Lower : Pointer;
|
|
|
+ mh_Upper : Pointer;
|
|
|
+ mh_Free : DWord;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PMemEntry = ^TMemEntry;
|
|
|
+ TMemEntry = packed record
|
|
|
+ me_Un: packed record
|
|
|
+ case Byte of
|
|
|
+ 0 : (meu_Regs: DWord);
|
|
|
+ 1 : (meu_Addr: Pointer)
|
|
|
+ end;
|
|
|
+ me_Length: DWord;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PMemList = ^TMemList;
|
|
|
+ TMemList = packed record
|
|
|
+ ml_Node : TNode;
|
|
|
+ ml_NumEntries: Word;
|
|
|
+ ml_ME : PMemEntry;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ MEMF_ANY = 0;
|
|
|
+ MEMF_PUBLIC = (1 Shl 0);
|
|
|
+ MEMF_CHIP = (1 Shl 1);
|
|
|
+ MEMF_FAST = (1 Shl 2);
|
|
|
+ MEMF_LOCAL = (1 Shl 8);
|
|
|
+ MEMF_24BITDMA = (1 Shl 9);
|
|
|
+ MEMF_KICK = (1 Shl 10);
|
|
|
+ MEMF_SWAP = (1 Shl 11); { * Memory that can be swapped out to disk * }
|
|
|
+
|
|
|
+ MEMF_CLEAR = (1 Shl 16);
|
|
|
+ MEMF_LARGEST = (1 Shl 17);
|
|
|
+ MEMF_REVERSE = (1 Shl 18);
|
|
|
+ MEMF_TOTAL = (1 Shl 19);
|
|
|
+ MEMF_SEM_PROTECTED = (1 Shl 20); { * Pools: semaphore protection * }
|
|
|
+ MEMF_NO_EXPUNGE = (1 Shl 31);
|
|
|
+
|
|
|
+ MEM_BLOCKSIZE = 8;
|
|
|
+ MEM_BLOCKMASK = (MEM_BLOCKSIZE - 1);
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PMemHandlerData = ^TMemHandlerData;
|
|
|
+ TMemHandlerData = packed record
|
|
|
+ memh_RequestSize : DWord;
|
|
|
+ memh_RequestFlags: DWord;
|
|
|
+ memh_Flags : DWord;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ MEMHF_RECYCLE = (1 Shl 0);
|
|
|
+
|
|
|
+ MEM_DID_NOTHING = 0;
|
|
|
+ MEM_ALL_DONE = -1;
|
|
|
+ MEM_TRY_AGAIN = 1;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec port definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PMsgPort = ^TMsgPort;
|
|
|
+ TMsgPort = packed record
|
|
|
+ mp_Node : TNode;
|
|
|
+ mp_Flags : Byte;
|
|
|
+ mp_SigBit : Byte;
|
|
|
+ mp_SigTask: Pointer;
|
|
|
+ mp_MsgList: TList;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ PF_ACTION = 3;
|
|
|
+ PA_SIGNAL = 0;
|
|
|
+ PA_SOFTINT = 1;
|
|
|
+ PA_IGNORE = 2;
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PMessage = ^TMessage;
|
|
|
+ TMessage = packed record
|
|
|
+ mn_Node : TNode;
|
|
|
+ mn_ReplyPort: PMsgPort;
|
|
|
+ mn_Length : Word;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec task definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PTask = ^TTask;
|
|
|
+ TTask = packed record
|
|
|
+ tc_Node : TNode;
|
|
|
+ tc_Flags : Byte;
|
|
|
+ tc_State : Byte;
|
|
|
+ tc_IDNestCnt: ShortInt;
|
|
|
+ tc_TDNestCnt: ShortInt;
|
|
|
+ tc_SigAlloc : DWord;
|
|
|
+ tc_SigWait : DWord;
|
|
|
+ tc_SigRecvd : DWord;
|
|
|
+ tc_SigExcept: DWord;
|
|
|
+ {$IF 0}
|
|
|
+ tc_TrapAlloc: Word;
|
|
|
+ tc_TrapAble : Word;
|
|
|
+ {$ELSE}
|
|
|
+ tc_ETask: Pointer;
|
|
|
+ {$ENDIF}
|
|
|
+ tc_ExceptData: Pointer;
|
|
|
+ tc_ExceptCode: Pointer;
|
|
|
+ tc_TrapData : Pointer;
|
|
|
+ tc_TrapCode : Pointer;
|
|
|
+ tc_SPReg : Pointer;
|
|
|
+ tc_SPLower : Pointer;
|
|
|
+ tc_SPUpper : Pointer;
|
|
|
+ tc_Switch : Pointer; { *** OBSOLETE *** }
|
|
|
+ tc_Launch : Pointer; { *** OBSOLETE *** }
|
|
|
+ tc_MemEntry : TList;
|
|
|
+ tc_UserData : Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ TB_PROCTIME = 0;
|
|
|
+ TB_ETASK = 3;
|
|
|
+ TB_STACKCHK = 4;
|
|
|
+ TB_EXCEPT = 5;
|
|
|
+ TB_SWITCH = 6;
|
|
|
+ TB_LAUNCH = 7;
|
|
|
+
|
|
|
+ TF_PROCTIME = (1 Shl TB_PROCTIME);
|
|
|
+ TF_ETASK = (1 Shl TB_ETASK);
|
|
|
+ TF_STACKCHK = (1 Shl TB_STACKCHK);
|
|
|
+ TF_EXCEPT = (1 Shl TB_EXCEPT);
|
|
|
+ TF_SWITCH = (1 Shl TB_SWITCH);
|
|
|
+ TF_LAUNCH = (1 Shl TB_LAUNCH);
|
|
|
+
|
|
|
+ TS_INVALID = 0;
|
|
|
+ TS_ADDED = 1;
|
|
|
+ TS_RUN = 2;
|
|
|
+ TS_READY = 3;
|
|
|
+ TS_WAIT = 4;
|
|
|
+ TS_EXCEPT = 5;
|
|
|
+ TS_REMOVED = 6;
|
|
|
+
|
|
|
+ SIGB_ABORT = 0;
|
|
|
+ SIGB_CHILD = 1;
|
|
|
+ SIGB_BLIT = 4;
|
|
|
+ SIGB_SINGLE = 4;
|
|
|
+ SIGB_INTUITION = 5;
|
|
|
+ SIGB_NET = 7;
|
|
|
+ SIGB_DOS = 8;
|
|
|
+
|
|
|
+ SIGF_ABORT = (1 Shl SIGB_ABORT);
|
|
|
+ SIGF_CHILD = (1 Shl SIGB_CHILD);
|
|
|
+ SIGF_BLIT = (1 Shl SIGB_BLIT);
|
|
|
+ SIGF_SINGLE = (1 Shl SIGB_SINGLE);
|
|
|
+ SIGF_INTUITION = (1 Shl SIGB_INTUITION);
|
|
|
+ SIGF_NET = (1 Shl SIGB_NET);
|
|
|
+ SIGF_DOS = (1 Shl SIGB_DOS);
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PTaskTrapMessage = ^TTaskTrapMessage;
|
|
|
+ TTaskTrapMessage = packed record
|
|
|
+ Message: TMessage; { * Message Header * }
|
|
|
+ Task : TTask; { * connected Task * }
|
|
|
+ Version: DWord; { * version of the structure * }
|
|
|
+ TType : DWord; { * Exception Type * }
|
|
|
+ DAR : DWord; { * Exception Address Register * }
|
|
|
+ DSISR : DWord; { * Exception DSISR Reg * }
|
|
|
+
|
|
|
+ { * This is undiscovered land...
|
|
|
+ * never assume a size of this structure
|
|
|
+ * }
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ VERSION_TASKTRAPMESSAGE = $0;
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PETask = ^TETask;
|
|
|
+ TETask = packed record
|
|
|
+ Message : TMessage;
|
|
|
+ Parent : PTask;
|
|
|
+ UniqueID : DWord;
|
|
|
+ Children : TMinList;
|
|
|
+ TrapAlloc: Word;
|
|
|
+ TrapAble : Word;
|
|
|
+ Result1 : DWord;
|
|
|
+ Result2 : Pointer;
|
|
|
+ MsgPort : TMsgPort;
|
|
|
+
|
|
|
+ { * Don't touch!!!!!!!!!..there'll be an interface
|
|
|
+ * sooner than later.
|
|
|
+ * New Entries...most of the above entries
|
|
|
+ * are only their for structure compatability.
|
|
|
+ * They have no meaning as the OS never supported
|
|
|
+ * them.
|
|
|
+ * }
|
|
|
+
|
|
|
+ { * A Task Pool for the task.
|
|
|
+ * }
|
|
|
+ MemPool: Pointer;
|
|
|
+
|
|
|
+ { * PPC's Stack Lower Ptr
|
|
|
+ * The initial stack is allocated through
|
|
|
+ * AllocVec, so a FreeVec(ETask^.PPCSPLower);
|
|
|
+ * would work.
|
|
|
+ * If you use PPCStackSwap you must allocate
|
|
|
+ * your stack block with AllocVec();
|
|
|
+ * }
|
|
|
+ PPCSPLower: Pointer;
|
|
|
+
|
|
|
+ { * PPC's Stack Upper Ptr
|
|
|
+ * }
|
|
|
+ PPCSPUpper : Pointer;
|
|
|
+ PPCRegFrame: Pointer;
|
|
|
+ PPCLibData : Pointer;
|
|
|
+
|
|
|
+ { * On a PPC exception this msgport
|
|
|
+ * is sent an exception msg...
|
|
|
+ * the task is stopped until somebody
|
|
|
+ * wakes it up again.
|
|
|
+ * (asynchron exception interface)
|
|
|
+ * If this Port is NULL the message is
|
|
|
+ * sent to SysBase->ex_PPCTrapMsgPort.
|
|
|
+ * }
|
|
|
+ PPCTrapMsgPort: PMsgPort;
|
|
|
+ PPCTrapMessage: PTaskTrapMessage;
|
|
|
+
|
|
|
+ { * This is undiscovered land...
|
|
|
+ * never assume a size of this structure
|
|
|
+ * }
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PTaskInitExtension = ^TTaskInitExtension;
|
|
|
+ TTaskInitExtension = packed record
|
|
|
+ { * Must be filled with TRAP_PPCTASK
|
|
|
+ * }
|
|
|
+ Trap : Word;
|
|
|
+ Extension: Word; { * Must be set to 0 * }
|
|
|
+ Tags : Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ TASKTAG_DUMMY = (TAG_USER + $100000);
|
|
|
+
|
|
|
+ { * Ptr to an ULONG Errorfield where a better error description
|
|
|
+ * can be stored.
|
|
|
+ * }
|
|
|
+ TASKTAG_ERROR = (TASKTAG_DUMMY + $0);
|
|
|
+
|
|
|
+ { * Code type
|
|
|
+ * can be stored.
|
|
|
+ * }
|
|
|
+ TASKTAG_CODETYPE = (TASKTAG_DUMMY + $1);
|
|
|
+
|
|
|
+ { * Start PC
|
|
|
+ * code must be of TASKTAG_CODETYPE
|
|
|
+ * }
|
|
|
+ TASKTAG_PC = (TASKTAG_DUMMY + $2);
|
|
|
+
|
|
|
+ { * Final PC
|
|
|
+ * code must be of TASKTAG_CODETYPE
|
|
|
+ * }
|
|
|
+ TASKTAG_FINALPC = (TASKTAG_DUMMY + $3);
|
|
|
+
|
|
|
+ { * Stacksize...Default 8192
|
|
|
+ * }
|
|
|
+ TASKTAG_STACKSIZE = (TASKTAG_DUMMY + $4);
|
|
|
+
|
|
|
+ { * Std Stacksize...
|
|
|
+ * Default(use the stack defined by tc_SPLower..tc_SPUpper)
|
|
|
+ * }
|
|
|
+ TASKTAG_STACKSIZE_M68K = (TASKTAG_DUMMY + $5);
|
|
|
+
|
|
|
+ { * specify task name, name is copied
|
|
|
+ * }
|
|
|
+ TASKTAG_NAME = (TASKTAG_DUMMY + $6);
|
|
|
+
|
|
|
+ { * tc_UserData
|
|
|
+ * }
|
|
|
+ TASKTAG_USERDATA = (TASKTAG_DUMMY + $7);
|
|
|
+
|
|
|
+ { * Task priority
|
|
|
+ * }
|
|
|
+ TASKTAG_PRI = (TASKTAG_DUMMY + $8);
|
|
|
+
|
|
|
+ { * Pool's Puddlesize
|
|
|
+ * }
|
|
|
+ TASKTAG_POOLPUDDLE = (TASKTAG_DUMMY + $9);
|
|
|
+
|
|
|
+ { * Pool's ThreshSize
|
|
|
+ * }
|
|
|
+ TASKTAG_POOLTHRESH = (TASKTAG_DUMMY + $a);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr3
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG1 = (TASKTAG_DUMMY + $10);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr4
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG2 = (TASKTAG_DUMMY + $11);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr5
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG3 = (TASKTAG_DUMMY + $12);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr6
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG4 = (TASKTAG_DUMMY + $13);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr7
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG5 = (TASKTAG_DUMMY + $14);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr8
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG6 = (TASKTAG_DUMMY + $15);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr9
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG7 = (TASKTAG_DUMMY + $16);
|
|
|
+
|
|
|
+ { * PPC First Argument..gpr10
|
|
|
+ * }
|
|
|
+ TASKTAG_PPC_ARG8 = (TASKTAG_DUMMY + $17);
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Startup message to be passed to task/process, ReplyMsg'd at RemTask()
|
|
|
+ * ti_Data: struct Message *
|
|
|
+ * }
|
|
|
+ TASKTAG_STARTUPMSG = (TASKTAG_DUMMY + $18);
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Create internal MsgPort for task/process, deleted at RemTask()
|
|
|
+ * ti_Data: struct MsgPort **, can be NULL
|
|
|
+ * }
|
|
|
+ TASKTAG_TASKMSGPORT = (TASKTAG_DUMMY + $19);
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ CODETYPE_M68K = $0;
|
|
|
+ { *
|
|
|
+ * System V4 ABI
|
|
|
+ * }
|
|
|
+ CODETYPE_PPC = $1;
|
|
|
+
|
|
|
+const
|
|
|
+ TASKERROR_OK = 0;
|
|
|
+ TASKERROR_NOMEMORY = 1;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Stack swap structure as passed to StackSwap() and PPCStackSwap()
|
|
|
+ * }
|
|
|
+type
|
|
|
+ PStackSwapStruct = ^TStackSwapStruct;
|
|
|
+ TStackSwapStruct = packed record
|
|
|
+ stk_Lower : Pointer; { * Lowest byte of stack * }
|
|
|
+ stk_Upper : Pointer; { * Upper end of stack (size + Lowert) * }
|
|
|
+ stk_Pointer: Pointer; { * Stack pointer at switch point * }
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PPPCStackSwapArgs = ^TPPCStackSwapArgs;
|
|
|
+ TPPCStackSwapArgs = packed record
|
|
|
+ Args: Array[0..7] Of DWord; { * The C register arguments from gpr3..gpr11 * }
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * NewGetTaskAttrsA(), NewSetTaskAttrsA() tags
|
|
|
+ * }
|
|
|
+const
|
|
|
+ TASKINFOTYPE_ALLTASK = $0;
|
|
|
+ TASKINFOTYPE_NAME = $1;
|
|
|
+ TASKINFOTYPE_PRI = $2;
|
|
|
+ TASKINFOTYPE_TYPE = $3;
|
|
|
+ TASKINFOTYPE_STATE = $4;
|
|
|
+ TASKINFOTYPE_FLAGS = $5;
|
|
|
+ TASKINFOTYPE_SIGALLOC = $6;
|
|
|
+ TASKINFOTYPE_SIGWAIT = $7;
|
|
|
+ TASKINFOTYPE_SIGRECVD = $8;
|
|
|
+ TASKINFOTYPE_SIGEXCEPT = $9;
|
|
|
+ TASKINFOTYPE_EXCEPTDATA = $a;
|
|
|
+ TASKINFOTYPE_EXCEPTCODE = $b;
|
|
|
+ TASKINFOTYPE_TRAPDATA = $c;
|
|
|
+ TASKINFOTYPE_TRAPCODE = $d;
|
|
|
+ TASKINFOTYPE_STACKSIZE_M68K = $e;
|
|
|
+ TASKINFOTYPE_STACKSIZE = $f;
|
|
|
+ TASKINFOTYPE_USEDSTACKSIZE_M68K = $10;
|
|
|
+ TASKINFOTYPE_USEDSTACKSIZE = $11;
|
|
|
+ TASKINFOTYPE_TRAPMSGPORT = $12;
|
|
|
+ TASKINFOTYPE_STARTUPMSG = $13;
|
|
|
+ TASKINFOTYPE_TASKMSGPORT = $14;
|
|
|
+ TASKINFOTYPE_POOLPTR = $15;
|
|
|
+ TASKINFOTYPE_POOLMEMFLAGS = $16;
|
|
|
+ TASKINFOTYPE_POOLPUDDLESIZE = $17;
|
|
|
+ TASKINFOTYPE_POOLTHRESHSIZE = $18;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Task Scheduler statistics (exec 50.42)
|
|
|
+ * }
|
|
|
+ TASKINFOTYPE_NICE = $19;
|
|
|
+ TASKINFOTYPE_AGETICKS = $1a;
|
|
|
+ TASKINFOTYPE_CPUTIME = $1b;
|
|
|
+ TASKINFOTYPE_LASTSECCPUTIME = $1c;
|
|
|
+ TASKINFOTYPE_RECENTCPUTIME = $1d;
|
|
|
+ TASKINFOTYPE_VOLUNTARYCSW = $1e;
|
|
|
+ TASKINFOTYPE_INVOLUNTARYCSW = $1f;
|
|
|
+ TASKINFOTYPE_LASTSECVOLUNTARYCSW = $20;
|
|
|
+ TASKINFOTYPE_LASTSECINVOLUNTARYCSW = $21;
|
|
|
+ { * Added in exec 50.45 * }
|
|
|
+ TASKINFOTYPE_LAUNCHTIMETICKS = $22;
|
|
|
+ TASKINFOTYPE_LAUNCHTIMETICKS1978 = $23;
|
|
|
+ TASKINFOTYPE_PID = $24;
|
|
|
+
|
|
|
+ TASKINFOTYPE_68K_NEWFRAME = $50;
|
|
|
+
|
|
|
+ TASKINFOTYPE_PPC_SRR0 = $100;
|
|
|
+ TASKINFOTYPE_PPC_SRR1 = $101;
|
|
|
+ TASKINFOTYPE_PPC_LR = $102;
|
|
|
+ TASKINFOTYPE_PPC_CTR = $103;
|
|
|
+ TASKINFOTYPE_PPC_CR = $104;
|
|
|
+ TASKINFOTYPE_PPC_XER = $105;
|
|
|
+ TASKINFOTYPE_PPC_GPR = $106;
|
|
|
+ TASKINFOTYPE_PPC_FPR = $107;
|
|
|
+ TASKINFOTYPE_PPC_FPSCR = $108;
|
|
|
+ TASKINFOTYPE_PPC_VSCR = $109;
|
|
|
+ TASKINFOTYPE_PPC_VMX = $10a;
|
|
|
+ TASKINFOTYPE_PPC_VSAVE = $10b;
|
|
|
+ TASKINFOTYPE_PPC_FRAME = $10c;
|
|
|
+ TASKINFOTYPE_PPC_FRAMESIZE = $10d;
|
|
|
+ TASKINFOTYPE_PPC_NEWFRAME = $10e;
|
|
|
+
|
|
|
+ TASKINFOTAG_DUMMY = (TAG_USER + $110000);
|
|
|
+ { * Used with TASKINFOTYPE_ALLTASK
|
|
|
+ * }
|
|
|
+ TASKINFOTAG_HOOK = (TASKINFOTAG_DUMMY + $0);
|
|
|
+ { * Used with TASKINFOTYPE_PPC_GPR,TASKINFOTYPE_PPC_FPR,TASKINFOTYPE_PPC_VMX
|
|
|
+ * to define the copy area
|
|
|
+ * }
|
|
|
+ TASKINFOTAG_REGSTART = (TASKINFOTAG_DUMMY + $1);
|
|
|
+ { * Used with TASKINFOTYPE_PPC_GPR,TASKINFOTYPE_PPC_FPR,TASKINFOTYPE_PPC_VMX
|
|
|
+ * to define the copy area
|
|
|
+ * }
|
|
|
+ TASKINFOTAG_REGCOUNT = (TASKINFOTAG_DUMMY + $2);
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * NewSetTaskAttrsA(..,@TaskFrame68k,sizeof(TTaskFrame68k),TASKINFOTYPE_68K_NEWFRAME,...);
|
|
|
+ * }
|
|
|
+type
|
|
|
+ PTaskFrame68k = ^TTaskFrame68k;
|
|
|
+ TTaskFrame68k = packed record
|
|
|
+ PC: Pointer;
|
|
|
+ SR: Word;
|
|
|
+ Xn: Array[0..14] Of LongInt;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Don't depend on these
|
|
|
+ * }
|
|
|
+const
|
|
|
+ DEFAULT_PPCSTACKSIZE = 32768;
|
|
|
+ DEFAULT_M68KSTACKSIZE = 2048;
|
|
|
+ DEFAULT_TASKPUDDLESIZE = 4096;
|
|
|
+ DEFAULT_TASKTHRESHSIZE = 4096;
|
|
|
+
|
|
|
+
|
|
|
+{ * exec interrupt definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PInterrupt = ^TInterrupt;
|
|
|
+ TInterrupt = packed record
|
|
|
+ is_Node: TNode;
|
|
|
+ is_Data: Pointer;
|
|
|
+ is_Code: Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PIntVector = ^TIntVector;
|
|
|
+ TIntVector = packed record
|
|
|
+ iv_Data: Pointer;
|
|
|
+ iv_Code: Pointer;
|
|
|
+ iv_Node: PNode;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PSoftIntList = ^TSoftIntList;
|
|
|
+ TSoftIntList = packed record
|
|
|
+ sh_List: TList;
|
|
|
+ sh_Pad : Word;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ SIH_PRIMASK = $f0;
|
|
|
+
|
|
|
+ INTB_NMI = 15;
|
|
|
+ INTF_NMI = (1 Shl INTB_NMI);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec semaphore definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Shouldn't be available public..
|
|
|
+ * }
|
|
|
+type
|
|
|
+ PSemaphoreRequest = ^TSemaphoreRequest;
|
|
|
+ TSemaphoreRequest = packed record
|
|
|
+ sr_Link : TMinNode;
|
|
|
+ sr_Waiter: PTask;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PSignalSemaphore = ^TSignalSemaphore;
|
|
|
+ TSignalSemaphore = packed record
|
|
|
+ ss_Link : TNode;
|
|
|
+ ss_NestCount : Integer;
|
|
|
+ ss_WaitQueue : TMinList;
|
|
|
+ ss_MultipleLink: TSemaphoreRequest;
|
|
|
+ ss_Owner : PTask;
|
|
|
+ ss_QueueCount : Integer;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PSemaphoreMessage = ^TSemaphoreMessage;
|
|
|
+ TSemaphoreMessage = packed record
|
|
|
+ ssm_Message : TMessage;
|
|
|
+ ssm_Semaphore: PSignalSemaphore;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ SM_SHARED = 1;
|
|
|
+ SM_EXCLUSIVE = 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec machine definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ MACHINE_M68k = $0;
|
|
|
+ MACHINE_PPC = $1;
|
|
|
+ MACHINE_NO = $ffffffff;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec library definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ LIB_VECTSIZE = 6;
|
|
|
+ LIB_RESERVED = 4;
|
|
|
+ LIB_BASE = (-LIB_VECTSIZE);
|
|
|
+ LIB_USERDEF = (LIB_BASE - (LIB_RESERVED * LIB_VECTSIZE));
|
|
|
+ LIB_NONSTD = (LIB_USERDEF);
|
|
|
+
|
|
|
+ LIB_OPEN = -6;
|
|
|
+ LIB_CLOSE = -12;
|
|
|
+ LIB_EXPUNGE = -18;
|
|
|
+ LIB_EXTFUNC = -24;
|
|
|
+ LIB_GETQUERYATTR = -24; { * LIBF_QUERY * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PLibrary = ^TLibrary;
|
|
|
+ TLibrary = packed record
|
|
|
+ lib_Node : TNode;
|
|
|
+ lib_Flags : Byte;
|
|
|
+ lib_pad : Byte;
|
|
|
+ lib_MegSize : Word;
|
|
|
+ lib_PosSize : Word;
|
|
|
+ lib_Version : Word;
|
|
|
+ lib_Revision: Word;
|
|
|
+ lib_IdString: PChar;
|
|
|
+ lib_Sum : DWord;
|
|
|
+ lib_OpenCnt : Word;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ LIBF_SUMMING = (1 Shl 0);
|
|
|
+ LIBF_CHANGED = (1 Shl 1);
|
|
|
+ LIBF_SUMUSED = (1 Shl 2);
|
|
|
+ LIBF_DELEXP = (1 Shl 3);
|
|
|
+ { *
|
|
|
+ * private
|
|
|
+ * }
|
|
|
+ LIBF_RAMLIB = (1 Shl 4);
|
|
|
+ { *
|
|
|
+ * Needs to be set if the GetQueryAttr function is legal
|
|
|
+ * }
|
|
|
+ LIBF_QUERYINFO = (1 Shl 5);
|
|
|
+ { *
|
|
|
+ * The remaining bits are reserved and aren`t allowed to be touched
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+ { * NewSetFunction extensions
|
|
|
+ * }
|
|
|
+const
|
|
|
+ SETFUNCTAG_Dummy = (TAG_USER +$01000000);
|
|
|
+
|
|
|
+ { * Set the machine type of the function
|
|
|
+ * Default is 68k
|
|
|
+ * }
|
|
|
+ SETFUNCTAG_MACHINE = (SETFUNCTAG_Dummy + $1);
|
|
|
+
|
|
|
+ { * Function type specifier
|
|
|
+ * }
|
|
|
+ SETFUNCTAG_TYPE = (SETFUNCTAG_Dummy + $2);
|
|
|
+
|
|
|
+ { * ID String
|
|
|
+ * }
|
|
|
+ SETFUNCTAG_IDNAME = (SETFUNCTAG_Dummy + $3);
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Set to TRUE if the replaced function will never be used
|
|
|
+ * again.
|
|
|
+ * }
|
|
|
+ SETFUNCTAG_DELETE = (SETFUNCTAG_Dummy + $4);
|
|
|
+
|
|
|
+
|
|
|
+ { * See emul/emulinterface.h for more informations
|
|
|
+ * }
|
|
|
+
|
|
|
+ { * Save Emulation PPC Registers
|
|
|
+ * Call Function
|
|
|
+ * Restore Emulation PPC Registers
|
|
|
+ * REG_D0 = Result
|
|
|
+ * }
|
|
|
+const
|
|
|
+ SETFUNCTYPE_NORMAL = 0;
|
|
|
+ { * Call Function
|
|
|
+ * Must use the global register settings of the emulation
|
|
|
+ * REG_D0 = Result
|
|
|
+ * }
|
|
|
+ SETFUNCTYPE_QUICK = 1;
|
|
|
+ { * Save Emulation PPC Registers
|
|
|
+ * Call Function
|
|
|
+ * Restore Emulation PPC Registers
|
|
|
+ * No Result
|
|
|
+ * Needed to replace functions like
|
|
|
+ * forbid,obtainsemaphores which are
|
|
|
+ * defined as trashing no registers
|
|
|
+ * }
|
|
|
+ SETFUNCTYPE_NORMALNR = 2;
|
|
|
+ { * Call Function
|
|
|
+ * Must use the global register settings of the emulation
|
|
|
+ * No Result
|
|
|
+ * Needed to replace functions like
|
|
|
+ * forbid,obtainsemaphores which are
|
|
|
+ * defined as trashing no registers
|
|
|
+ * }
|
|
|
+ SETFUNCTYPE_QUICKNR = 3;
|
|
|
+ SETFUNCTYPE_NORMALSR = 4;
|
|
|
+ SETFUNCTYPE_NORMALSRNR = 5;
|
|
|
+ SETFUNCTYPE_NORMALD0_D1 = 6;
|
|
|
+ SETFUNCTYPE_NORMALRESTORE = 7;
|
|
|
+ SETFUNCTYPE_SYSTEMV = 8;
|
|
|
+ SETFUNCTYPE_NORMALD0D1SR = 9;
|
|
|
+ SETFUNCTYPE_NORMALD0D1A0A1SR = 10;
|
|
|
+
|
|
|
+
|
|
|
+ { * CreateLibrary extensions
|
|
|
+ * }
|
|
|
+ LIBTAG_BASE = (TAG_USER + $01000100);
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Function/Vector Array
|
|
|
+ * }
|
|
|
+ LIBTAG_FUNCTIONINIT = (LIBTAG_BASE+$0);
|
|
|
+ { *
|
|
|
+ * Struct Init
|
|
|
+ * }
|
|
|
+ LIBTAG_STRUCTINIT = (LIBTAG_BASE+$1);
|
|
|
+ { *
|
|
|
+ * Library Init
|
|
|
+ * }
|
|
|
+ LIBTAG_LIBRARYINIT = (LIBTAG_BASE+$2);
|
|
|
+ { *
|
|
|
+ * Init Code Type
|
|
|
+ * }
|
|
|
+ LIBTAG_MACHINE = (LIBTAG_BASE+$3);
|
|
|
+ { *
|
|
|
+ * Library Base Size
|
|
|
+ * }
|
|
|
+ LIBTAG_BASESIZE = (LIBTAG_BASE+$4);
|
|
|
+ { *
|
|
|
+ * SegList Ptr
|
|
|
+ * }
|
|
|
+ LIBTAG_SEGLIST = (LIBTAG_BASE+$5);
|
|
|
+ { *
|
|
|
+ * Library Priority
|
|
|
+ * }
|
|
|
+ LIBTAG_PRI = (LIBTAG_BASE+$6);
|
|
|
+ { *
|
|
|
+ * Library Type..Library,Device,Resource,whatever
|
|
|
+ * }
|
|
|
+ LIBTAG_TYPE = (LIBTAG_BASE+$7);
|
|
|
+ { *
|
|
|
+ * Library Version
|
|
|
+ * (UWORD)
|
|
|
+ * }
|
|
|
+ LIBTAG_VERSION = (LIBTAG_BASE+$8);
|
|
|
+ { *
|
|
|
+ * Library Flags
|
|
|
+ * }
|
|
|
+ LIBTAG_FLAGS = (LIBTAG_BASE+$9);
|
|
|
+ { *
|
|
|
+ * Library Name
|
|
|
+ * }
|
|
|
+ LIBTAG_NAME = (LIBTAG_BASE+$a);
|
|
|
+ { *
|
|
|
+ * Library IDString
|
|
|
+ * }
|
|
|
+ LIBTAG_IDSTRING = (LIBTAG_BASE+$b);
|
|
|
+ { *
|
|
|
+ * AddDevice(),AddLibrary(),AddResource()..
|
|
|
+ * depends on LibNode.ln_Type field which
|
|
|
+ * can be set by some Init function, Struct Scripts
|
|
|
+ * or LIBTAG_TYPE.
|
|
|
+ * If you set LIBTAG_PUBLIC the library
|
|
|
+ * is added to the right system list.
|
|
|
+ * }
|
|
|
+ LIBTAG_PUBLIC = (LIBTAG_BASE+$c);
|
|
|
+ { *
|
|
|
+ * Library Revision
|
|
|
+ * (UWORD)
|
|
|
+ * }
|
|
|
+ LIBTAG_REVISION = (LIBTAG_BASE+$d);
|
|
|
+ { *
|
|
|
+ * Library QueryInfo Flag
|
|
|
+ * (Boolean)
|
|
|
+ * }
|
|
|
+ LIBTAG_QUERYINFO = (LIBTAG_BASE+$e);
|
|
|
+
|
|
|
+
|
|
|
+ { * Private
|
|
|
+ * don`t touch...floating design
|
|
|
+ * }
|
|
|
+type
|
|
|
+ PFuncEntry = ^TFuncEntry;
|
|
|
+ TFuncEntry = packed record
|
|
|
+ EmulLibEntry : TEmulLibEntry;
|
|
|
+ OldFunction : Pointer; { * Needed for bookkeeping * }
|
|
|
+ end;
|
|
|
+
|
|
|
+ PFuncOldEntry = ^TFuncOldEntry;
|
|
|
+ TFuncOldEntry = packed record
|
|
|
+ Command : Word;
|
|
|
+ FuncEntry: PFuncEntry;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * EmulLibEntry.Extension
|
|
|
+ * }
|
|
|
+const
|
|
|
+ FUNCENTRYEXTF_LIBRARY = $1; { * Entry created by the OS * }
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Functionarray first ULONG ID defines the format
|
|
|
+ * of the functionarray for MakeFunctions()/MakeLibrary().
|
|
|
+ *
|
|
|
+ * If there`s not such id the functionarray is a
|
|
|
+ * 32Bit 68k function ptr array.
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+
|
|
|
+ { * 68k 16bit relative functionarray ptrs
|
|
|
+ * (UWORD) $ffff stops it
|
|
|
+ * }
|
|
|
+
|
|
|
+ FUNCARRAY_16BIT_OLD = $ffffffff;
|
|
|
+
|
|
|
+ { * PPC 32bit functionarray ptrs
|
|
|
+ * (ULONG) $ffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_NATIVE = $fffefffe;
|
|
|
+
|
|
|
+ { * Starts a functionarray block.
|
|
|
+ * This way it`s possible to mix 68k and PPC
|
|
|
+ * function definitions.
|
|
|
+ * BASE:
|
|
|
+ * FUNCTIONARRAY_BEGIN
|
|
|
+ * FUNCARRAY_32BIT_NATIVE
|
|
|
+ * FUNC0
|
|
|
+ * FUNC1
|
|
|
+ * .
|
|
|
+ * FUNCn
|
|
|
+ * $ffffffff
|
|
|
+ * FUNCn+1 (No ID->32Bit 68k)
|
|
|
+ * FUNCn+2
|
|
|
+ * .
|
|
|
+ * FUNCm
|
|
|
+ * $ffffffff
|
|
|
+ * FUNCARRAY_16BIT_OLD
|
|
|
+ * FUNCm+1-BASE
|
|
|
+ * FUNCm+2-BASE
|
|
|
+ * .
|
|
|
+ * FUNCo-BASE
|
|
|
+ * $ffff
|
|
|
+ * FUNCTIONARRAY_END
|
|
|
+ * }
|
|
|
+
|
|
|
+ FUNCARRAY_BEGIN = $fffdfffd;
|
|
|
+
|
|
|
+ { * Ends a functionarray block.
|
|
|
+ * }
|
|
|
+ FUNCARRAY_END = $fffcfffc;
|
|
|
+
|
|
|
+ { * PPC 32bit Quick functionarray ptrs.
|
|
|
+ * These functions must comply to the emulation's
|
|
|
+ * register layout which is defined inside the
|
|
|
+ * emul/emulregs.h. That means the register layout
|
|
|
+ * MUST also be valid during interrupts/task switches.
|
|
|
+ * You can't just destroy A7(r31), SR or PC.
|
|
|
+ *
|
|
|
+ * You shouldn't use this for any normal code
|
|
|
+ * as there's no real reason to do so. If you
|
|
|
+ * really think you need to use it please ask
|
|
|
+ * us first on the dev mailinglist.
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_QUICK_NATIVE = $fffbfffb;
|
|
|
+
|
|
|
+ { * PPC 32bit QuickNR(No Result) functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_QUICKNR_NATIVE = $fffafffa;
|
|
|
+
|
|
|
+ { * PPC 32bit no result functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_NR_NATIVE = $fff9fff9;
|
|
|
+
|
|
|
+ { * PPC 32bit SR functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_SR_NATIVE = $fff8fff8;
|
|
|
+
|
|
|
+ { * PPC 32bit SR(no result) functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_SRNR_NATIVE = $fff7fff7;
|
|
|
+
|
|
|
+ { * PPC 32bit D0_D1 functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_D0D1_NATIVE = $fff6fff6;
|
|
|
+
|
|
|
+ { * PPC 32bit Restore1 functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_RESTORE_NATIVE = $fff5fff5;
|
|
|
+
|
|
|
+ { * PPC 32bit SystemV ABI entry
|
|
|
+ * these function entries DON'T comply
|
|
|
+ * to the amiga register modell REG_D0-A6
|
|
|
+ * but comply to the PPC SystemV ABI so
|
|
|
+ * you can directly use PPC C Argument
|
|
|
+ * parsing. That way you're also not limited
|
|
|
+ * with the register count.
|
|
|
+ * Such library functions can't be used
|
|
|
+ * by 68k emulation, so you can only use
|
|
|
+ * them for new code.
|
|
|
+ * As we allow these new functions to be
|
|
|
+ * used with old functions we keep the
|
|
|
+ * 6 bytes function entry steps in the library.
|
|
|
+ * Layout is
|
|
|
+ *
|
|
|
+ * CODE_JMP, &FuncEntry ; Old Entry
|
|
|
+ * CODE_ILLEGAL, Function ; SystemV ABI Entry
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_SYSTEMV = $fff4fff4;
|
|
|
+
|
|
|
+ { * PPC 32bit D0D1SR functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_D0D1SR_NATIVE = $fff3fff3;
|
|
|
+
|
|
|
+ { * PPC 32bit D0D1A0A1SR functionarray ptrs
|
|
|
+ * (ULONG) $ffffffff stops it
|
|
|
+ * }
|
|
|
+ FUNCARRAY_32BIT_D0D1A0A1SR_NATIVE = $fff2fff2;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec device definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PDevice = ^TDevice;
|
|
|
+ TDevice = packed record
|
|
|
+ dd_Library: TLibrary;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PUnit = ^TUnit;
|
|
|
+ TUnit = packed record
|
|
|
+ unit_MsgPort: TMsgPort;
|
|
|
+ unit_flags : Byte;
|
|
|
+ unit_pad : Byte;
|
|
|
+ unit_OpenCnt: Word;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ UNITF_ACTIVE = (1 Shl 0);
|
|
|
+ UNITF_INTASK = (1 Shl 1);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec io definitions (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PIORequest = ^TIORequest;
|
|
|
+ TIORequest = packed record
|
|
|
+ io_Message: TMessage;
|
|
|
+ io_Device : PDevice;
|
|
|
+ io_Unit : PUnit;
|
|
|
+ io_Command: Word;
|
|
|
+ io_Flags : Byte;
|
|
|
+ io_Error : ShortInt;
|
|
|
+ end;
|
|
|
+
|
|
|
+type
|
|
|
+ PIOStdReq = ^TIOStdReq;
|
|
|
+ TIOStdReq = packed record
|
|
|
+ io_Message: TMessage;
|
|
|
+ io_Device : PDevice;
|
|
|
+ io_Unit : PUnit;
|
|
|
+ io_Command: Word;
|
|
|
+ io_Flags : Byte;
|
|
|
+ io_Error : ShortInt;
|
|
|
+ io_Actual : DWord;
|
|
|
+ io_Length : DWord;
|
|
|
+ io_Data : Pointer;
|
|
|
+ io_Offset : DWord;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ DEV_BEGINIO = -30;
|
|
|
+ DEV_ABORTIO = -36;
|
|
|
+
|
|
|
+ IOB_QUICK = 0;
|
|
|
+ IOF_QUICK = (1 Shl IOB_QUICK);
|
|
|
+
|
|
|
+ CMD_INVALID = 0;
|
|
|
+ CMD_RESET = 1;
|
|
|
+ CMD_READ = 2;
|
|
|
+ CMD_WRITE = 3;
|
|
|
+ CMD_UPDATE = 4;
|
|
|
+ CMD_CLEAR = 5;
|
|
|
+ CMD_STOP = 6;
|
|
|
+ CMD_START = 7;
|
|
|
+ CMD_FLUSH = 8;
|
|
|
+ CMD_NONSTD = 9;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+{ * exec include (V50)
|
|
|
+ *********************************************************************
|
|
|
+ * }
|
|
|
+
|
|
|
+
|
|
|
+type
|
|
|
+ PExecBase = ^TExecBase;
|
|
|
+ TExecBase = packed record
|
|
|
+ LIbNode : TLibrary;
|
|
|
+ SoftVer : Word;
|
|
|
+ LowMemChkSum: Integer;
|
|
|
+ ChkBase : DWord;
|
|
|
+ ColdCapture : Pointer;
|
|
|
+ CoolCapture : Pointer;
|
|
|
+ WarmCapture : Pointer;
|
|
|
+ SysStkUpper : Pointer;
|
|
|
+ SysStkLower : Pointer;
|
|
|
+ MaxLocMem : DWord;
|
|
|
+ DebugEntry : Pointer;
|
|
|
+ DebugData : Pointer;
|
|
|
+ AlertData : Pointer;
|
|
|
+ MaxExtMem : Pointer;
|
|
|
+ ChkSum : Word;
|
|
|
+ IntVects : Array[0..15] Of TIntVector;
|
|
|
+ ThisTask : PTask;
|
|
|
+ IdleCount : DWord;
|
|
|
+ DispCount : DWord;
|
|
|
+ Quantum : Word;
|
|
|
+ Elapsed : Word;
|
|
|
+ SysFlags : Word;
|
|
|
+ IDNestCnt : ShortInt;
|
|
|
+ TDNestCnt : ShortInt;
|
|
|
+ AttnFlags : Word;
|
|
|
+ AttnResched : Word;
|
|
|
+ ResModules : Pointer;
|
|
|
+
|
|
|
+ TaskTrapCode : Pointer;
|
|
|
+ TaskExceptCode: Pointer;
|
|
|
+ TaskExitCode : Pointer;
|
|
|
+ TaskSigAlloc : DWord;
|
|
|
+ TaskTrapAlloc : Word;
|
|
|
+
|
|
|
+ MemList : TList;
|
|
|
+ ResourceList: TList;
|
|
|
+ DeviceList : TList;
|
|
|
+ IntrList : TList;
|
|
|
+ LibList : TList;
|
|
|
+ PortList : TList;
|
|
|
+ TaskReady : TList;
|
|
|
+ TaskWait : TList;
|
|
|
+ SoftInts : Array[0..5] Of TSoftIntList;
|
|
|
+ LastAlert : Array[0..3] Of LongInt;
|
|
|
+
|
|
|
+ VBlankFrequency : Byte;
|
|
|
+ PowerSupplyFrequency: Byte;
|
|
|
+ SemaphoreList : TList;
|
|
|
+ KickMemPtr : Pointer;
|
|
|
+ KickTagPtr : Pointer;
|
|
|
+ KickCheckSum : Pointer;
|
|
|
+ ex_Pad0 : Word;
|
|
|
+ ex_LaunchPoint : DWord;
|
|
|
+ ex_RamLibPrivate : Pointer;
|
|
|
+ ex_EClockFrequency : DWord;
|
|
|
+ ex_CacheControl : DWord;
|
|
|
+ ex_TaskID : DWord;
|
|
|
+
|
|
|
+ { * New ABox Emulation Entries
|
|
|
+ * }
|
|
|
+ ex_EmulHandleSize : DWord; { * PPC EmulHandleSize..*private* * }
|
|
|
+ ex_PPCTrapMsgPort : PMsgPort; { * PPC ABox Exception MsgPort..*private* * }
|
|
|
+ ex_Reserved1 : Array[0..2] Of DWord;
|
|
|
+ ex_MMULock : Pointer;
|
|
|
+ ex_PatchPool : Pointer; { * PatchPool Ptr needed by SetFunction..*private* * }
|
|
|
+ ex_PPCTaskExitCode : Pointer; { * PPC Task exit function * }
|
|
|
+ ex_DebugFlags : DWord; { * Exec Debug Flags..*private* * }
|
|
|
+
|
|
|
+ ex_MemHandlers : TMinList;
|
|
|
+ ex_MemHandler : Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Outdated 68k cpu informations
|
|
|
+ *
|
|
|
+ * }
|
|
|
+const
|
|
|
+ AFB_68010 = 0;
|
|
|
+ AFB_68020 = 1;
|
|
|
+ AFB_68030 = 2;
|
|
|
+ AFB_68040 = 3;
|
|
|
+ AFB_68881 = 4;
|
|
|
+ AFB_68882 = 5;
|
|
|
+ AFB_FPU40 = 6;
|
|
|
+ AFB_68060 = 7;
|
|
|
+ AFB_PRIVATE = 15;
|
|
|
+
|
|
|
+ AFF_68010 = (1 Shl AFB_68010);
|
|
|
+ AFF_68020 = (1 Shl AFB_68020);
|
|
|
+ AFF_68030 = (1 Shl AFB_68030);
|
|
|
+ AFF_68040 = (1 Shl AFB_68040);
|
|
|
+ AFF_68881 = (1 Shl AFB_68881);
|
|
|
+ AFF_68882 = (1 Shl AFB_68882);
|
|
|
+ AFF_FPU40 = (1 Shl AFB_FPU40);
|
|
|
+ AFF_68060 = (1 Shl AFB_68060);
|
|
|
+ AFF_PRIVATE = (1 Shl AFB_PRIVATE);
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Outdated 68k cache functionality
|
|
|
+ * Mostly without function.
|
|
|
+ * }
|
|
|
+const
|
|
|
+ CACRF_EnableI = (1 Shl 0);
|
|
|
+ CACRF_FreezeI = (1 Shl 1);
|
|
|
+ CACRF_ClearI = (1 Shl 3);
|
|
|
+ CACRF_IBE = (1 Shl 4);
|
|
|
+ CACRF_EnableD = (1 Shl 8);
|
|
|
+ CACRF_FreezeD = (1 Shl 9);
|
|
|
+ CACRF_ClearD = (1 Shl 11);
|
|
|
+ CACRF_DBE = (1 Shl 12);
|
|
|
+ CACRF_WriteAllocate = (1 Shl 13);
|
|
|
+ CACRF_EnableE = (1 Shl 30);
|
|
|
+ CACRF_CopyBack = (1 Shl 31);
|
|
|
+
|
|
|
+ DMA_Continue = (1 Shl 1);
|
|
|
+ DMA_NoModify = (1 Shl 2);
|
|
|
+ DMA_ReadFromRAM = (1 Shl 3);
|
|
|
+
|
|
|
+ SB_SAR = 15;
|
|
|
+ SB_TQE = 14;
|
|
|
+ SB_SINT = 13;
|
|
|
+
|
|
|
+ SF_SAR = (1 Shl SB_SAR);
|
|
|
+ SF_TQE = (1 Shl SB_TQE);
|
|
|
+ SF_SINT = (1 Shl SB_SINT);
|
|
|
+
|
|
|
+
|
|
|
+ { ****** Debug Flags...(don`t depend on them) ********** }
|
|
|
+const
|
|
|
+ EXECDEBUGF_INITRESIDENT = $1;
|
|
|
+ EXECDEBUGF_INITCODE = $2;
|
|
|
+ EXECDEBUGF_FINDRESIDENT = $4;
|
|
|
+
|
|
|
+ EXECDEBUGF_CREATELIBRARY = $10;
|
|
|
+ EXECDEBUGF_SETFUNCTION = $20;
|
|
|
+ EXECDEBUGF_NEWSETFUNCTION = $40;
|
|
|
+ EXECDEBUGF_CHIPRAM = $80;
|
|
|
+
|
|
|
+ EXECDEBUGF_ADDTASK = $100;
|
|
|
+ EXECDEBUGF_REMTASK = $200;
|
|
|
+ EXECDEBUGF_GETTASKATTR = $400;
|
|
|
+ EXECDEBUGF_SETTASKATTR = $800;
|
|
|
+
|
|
|
+ EXECDEBUGF_EXCEPTHANDLER = $1000;
|
|
|
+ EXECDEBUGF_ADDDOSNODE = $2000;
|
|
|
+ EXECDEBUGF_PCI = $4000;
|
|
|
+ EXECDEBUGF_RAMLIB = $8000;
|
|
|
+
|
|
|
+ EXECDEBUGF_NOLOGSERVER = $10000;
|
|
|
+ EXECDEBUGF_NOLOGWINDOW = $20000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * "env:MorphOS/LogPath" contains the logfile path,
|
|
|
+ * If not specified it`s using "ram:.morphoslog"
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_LOGFILE = $40000;
|
|
|
+ EXECDEBUGF_LOGKPRINTF = $80000;
|
|
|
+
|
|
|
+ { * Memory Tracking Flags
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_PERMMEMTRACK = $100000;
|
|
|
+ EXECDEBUGF_MEMTRACK = $200000;
|
|
|
+
|
|
|
+ { * CyberGuardPPC Flags
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_CYBERGUARDDEADLY = $400000;
|
|
|
+
|
|
|
+ { * PPCLib Flags
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_LOADSEG = $01000000;
|
|
|
+ EXECDEBUGF_UNLOADSEG = $02000000;
|
|
|
+ EXECDEBUGF_PPCSTART = $04000000;
|
|
|
+
|
|
|
+ { * UserFlags
|
|
|
+ * }
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Enables debug output for cybergraphx
|
|
|
+ * }
|
|
|
+const
|
|
|
+ EXECDEBUGF_CGXDEBUG = $08000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Should be used to control user LibInit/DevInit Debug output
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_INIT = $40000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Should be used to control logging
|
|
|
+ * }
|
|
|
+ EXECDEBUGF_LOG = $80000000;
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Execbase list IDs
|
|
|
+ * }
|
|
|
+ EXECLIST_DEVICE = 0;
|
|
|
+ EXECLIST_INTERRUPT = 1;
|
|
|
+ EXECLIST_LIBRARY = 2;
|
|
|
+ EXECLIST_MEMHANDLER = 3;
|
|
|
+ EXECLIST_MEMHEADER = 4;
|
|
|
+ EXECLIST_PORT = 5;
|
|
|
+ EXECLIST_RESOURCE = 6;
|
|
|
+ EXECLIST_SEMAPHORE = 7;
|
|
|
+ EXECLIST_TASK = 8;
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * Execnotify hook message
|
|
|
+ * }
|
|
|
+type
|
|
|
+ PExecNotifyMessage = ^TExecNotifyMessage;
|
|
|
+ TExecNotifyMessage = packed record
|
|
|
+ MType : DWord;
|
|
|
+ Flags : DWord;
|
|
|
+ Extra : DWord;
|
|
|
+ Extension: Pointer;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+const
|
|
|
+ EXECNOTIFYF_REMOVE = (1 Shl 0); { * if clear, is ADD * }
|
|
|
+ EXECNOTIFYF_POST = (1 Shl 1); { * if clear, is PRE * }
|
|
|
+
|
|
|
+
|
|
|
+ { *
|
|
|
+ * AddExecNodeTagList tags
|
|
|
+ * }
|
|
|
+const
|
|
|
+ SAL_Dummy = (TAG_USER + 1000);
|
|
|
+ SAL_Type = (SAL_Dummy + 1);
|
|
|
+ SAL_Priority = (SAL_Dummy + 2);
|
|
|
+ SAL_Name = (SAL_Dummy + 3);
|
|
|
+
|
|
|
+
|
|
|
+{
|
|
|
+ $Log$
|
|
|
+ Revision 1.1 2004-06-13 20:52:20 karoly
|
|
|
+ * initial revision
|
|
|
+
|
|
|
+}
|