| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738 | {    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}{$include utild1.inc}{$WARNING Ugly hack, remove this ASAP!}type  PInterface = Pointer;{ * 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   : SmallInt;    ss_WaitQueue   : TMinList;    ss_MultipleLink: TSemaphoreRequest;    ss_Owner       : PTask;    ss_QueueCount  : SmallInt;  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: SmallInt;    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);{$include utild2.inc}
 |