Browse Source

AROS, Amiga: Exec.library AllocMem renamed to ExecAllocMem (unification with MorphOS)

git-svn-id: trunk@31600 -
marcus 10 years ago
parent
commit
5a77040787

+ 5 - 5
packages/amunits/src/coreunits/amigalib.pas

@@ -186,7 +186,7 @@ begin
     IOReq := NIL;
     IOReq := NIL;
     if port <> NIL then
     if port <> NIL then
     begin
     begin
-        IOReq := AllocMem(size, MEMF_CLEAR or MEMF_PUBLIC);
+        IOReq := ExecAllocMem(size, MEMF_CLEAR or MEMF_PUBLIC);
         if IOReq <> NIL then
         if IOReq <> NIL then
         begin
         begin
             IOReq^.io_Message.mn_Node.ln_Type   := NT_REPLYMSG;
             IOReq^.io_Message.mn_Node.ln_Type   := NT_REPLYMSG;
@@ -229,7 +229,7 @@ var
 begin
 begin
    sigbit := AllocSignal(-1);
    sigbit := AllocSignal(-1);
    if sigbit = -1 then CreatePort := nil;
    if sigbit = -1 then CreatePort := nil;
-   port := Allocmem(sizeof(tMsgPort),MEMF_CLEAR or MEMF_PUBLIC);
+   port := ExecAllocmem(sizeof(tMsgPort),MEMF_CLEAR or MEMF_PUBLIC);
    if port = nil then begin
    if port = nil then begin
       FreeSignal(sigbit);
       FreeSignal(sigbit);
       CreatePort := nil;
       CreatePort := nil;
@@ -275,7 +275,7 @@ begin
     stackSize   := (stackSize + 3) and not 3;
     stackSize   := (stackSize + 3) and not 3;
     totalsize := sizeof(tMemList) + sizeof(tTask) + stackSize;
     totalsize := sizeof(tMemList) + sizeof(tTask) + stackSize;
 
 
-    memlist := AllocMem(totalsize, MEMF_PUBLIC + MEMF_CLEAR);
+    memlist := ExecAllocMem(totalsize, MEMF_PUBLIC + MEMF_CLEAR);
     if memlist <> NIL then begin
     if memlist <> NIL then begin
        memlist^.ml_NumEntries := 1;
        memlist^.ml_NumEntries := 1;
        memlist^.ml_ME[0].me_Un.meu_Addr := Pointer(memlist + 1);
        memlist^.ml_ME[0].me_Un.meu_Addr := Pointer(memlist + 1);
@@ -398,7 +398,7 @@ end;
   the stackpointer for both Pascal/StdCall and cdecl functions, so the stackpointer will
   the stackpointer for both Pascal/StdCall and cdecl functions, so the stackpointer will
   be correct on exit. It also needs no manual RTS. The argument push order is also
   be correct on exit. It also needs no manual RTS. The argument push order is also
   correct for both. (KB) }
   correct for both. (KB) }
-procedure HookEntry; assembler; 
+procedure HookEntry; assembler;
 asm
 asm
   move.l a1,-(a7)    // Msg
   move.l a1,-(a7)    // Msg
   move.l a2,-(a7)    // Obj
   move.l a2,-(a7)    // Obj
@@ -416,7 +416,7 @@ begin
   SetLength(argarray, length(args));
   SetLength(argarray, length(args));
   SetLength(strarray, length(args));
   SetLength(strarray, length(args));
   j:=0;
   j:=0;
-  for i := low(args) to High(args) do 
+  for i := low(args) to High(args) do
     begin
     begin
       case args[i].vtype of
       case args[i].vtype of
         vtinteger : argarray[i] := longint(args[i].vinteger);
         vtinteger : argarray[i] := longint(args[i].vinteger);

+ 1 - 1
packages/amunits/src/coreunits/exec.pas

@@ -1191,7 +1191,7 @@ PROCEDURE Alert(alertNum : ULONG location 'd7'); syscall _ExecBase 108;
 FUNCTION AllocAbs(byteSize : ULONG location 'd0'; location : POINTER location 'a1') : POINTER; syscall _ExecBase 204;
 FUNCTION AllocAbs(byteSize : ULONG location 'd0'; location : POINTER location 'a1') : POINTER; syscall _ExecBase 204;
 FUNCTION Allocate(freeList : pMemHeader location 'a0'; byteSize : ULONG location 'd0') : POINTER; syscall _ExecBase 186;
 FUNCTION Allocate(freeList : pMemHeader location 'a0'; byteSize : ULONG location 'd0') : POINTER; syscall _ExecBase 186;
 FUNCTION AllocEntry(entry : pMemList location 'a0') : pMemList; syscall _ExecBase 222;
 FUNCTION AllocEntry(entry : pMemList location 'a0') : pMemList; syscall _ExecBase 222;
-FUNCTION AllocMem(byteSize : ULONG location 'd0'; requirements : ULONG location 'd1') : POINTER; syscall _ExecBase 198;
+FUNCTION ExecAllocMem(byteSize : ULONG location 'd0'; requirements : ULONG location 'd1') : POINTER; syscall _ExecBase 198;
 FUNCTION AllocPooled(poolHeader : POINTER location 'a0'; memSize : ULONG location 'd0') : POINTER; syscall _ExecBase 708;
 FUNCTION AllocPooled(poolHeader : POINTER location 'a0'; memSize : ULONG location 'd0') : POINTER; syscall _ExecBase 708;
 FUNCTION AllocSignal(signalNum : LONGINT location 'd0') : shortint; syscall _ExecBase 330;
 FUNCTION AllocSignal(signalNum : LONGINT location 'd0') : shortint; syscall _ExecBase 330;
 FUNCTION AllocTrap(trapNum : LONGINT location 'd0') : LONGINT; syscall _ExecBase 342;
 FUNCTION AllocTrap(trapNum : LONGINT location 'd0') : LONGINT; syscall _ExecBase 342;

+ 1 - 1
packages/amunits/src/utilunits/doublebuffer.pas

@@ -141,7 +141,7 @@ begin
         OpenDoubleBuffer := Nil;
         OpenDoubleBuffer := Nil;
     end;
     end;
 
 
-    bm := AllocMem(SizeOf(tBitMap), MEMF_PUBLIC);
+    bm := ExecAllocMem(SizeOf(tBitMap), MEMF_PUBLIC);
     if bm = Nil then begin
     if bm = Nil then begin
         CloseWindow(w);
         CloseWindow(w);
         CloseScreen(s);
         CloseScreen(s);

+ 127 - 127
packages/arosunits/src/exec.pas

@@ -22,7 +22,7 @@ missing:
 defines:
 defines:
   AROS_NEED_LONG_ALIGN    = ????
   AROS_NEED_LONG_ALIGN    = ????
   AROS_FLAVOUR_BINCOMPAT  = Bincompat mode
   AROS_FLAVOUR_BINCOMPAT  = Bincompat mode
-  AROS_MORPHOS_COMPATIBLE = ????       
+  AROS_MORPHOS_COMPATIBLE = ????
 }
 }
 
 
 
 
@@ -41,7 +41,7 @@ type
   SIPTR        = NativeInt;
   SIPTR        = NativeInt;
   PIPTR        = ^IPTR;
   PIPTR        = ^IPTR;
   STRPTR       = PChar;
   STRPTR       = PChar;
-  CONST_STRPTR = PChar;  
+  CONST_STRPTR = PChar;
   BPTR         = Pointer;
   BPTR         = Pointer;
   BSTR         = Pointer;
   BSTR         = Pointer;
   BOOL         = SmallInt;
   BOOL         = SmallInt;
@@ -73,11 +73,11 @@ type
    ti_Data: IPTR;
    ti_Data: IPTR;
  end;
  end;
  PPTagItem = ^PTagItem;
  PPTagItem = ^PTagItem;
- 
+
 const
 const
   TAG_USER = 1 shl 31;  // differentiates user tags from system tags
   TAG_USER = 1 shl 31;  // differentiates user tags from system tags
 // END of part from utility move
 // END of part from utility move
-  
+
 const
 const
 // There is a problem with Boolean vaules in taglists, just use this for now instead
 // There is a problem with Boolean vaules in taglists, just use this for now instead
   LTrue : LongInt = 1;
   LTrue : LongInt = 1;
@@ -85,8 +85,8 @@ const
 
 
 type
 type
 // List Node Structure.  Each member in a list starts with a Node
 // List Node Structure.  Each member in a list starts with a Node
-  PNode = ^TNode; 
-  
+  PNode = ^TNode;
+
 {$ifdef AROS_FLAVOUR_BINCOMPAT}
 {$ifdef AROS_FLAVOUR_BINCOMPAT}
   TNode =  record
   TNode =  record
     ln_Succ,                // Pointer to next (successor)
     ln_Succ,                // Pointer to next (successor)
@@ -113,7 +113,7 @@ type
     mln_Pred : PMinNode;
     mln_Pred : PMinNode;
   End;
   End;
 
 
-{ 
+{
  Note: Newly initialized IORequests, and software interrupt structures
  Note: Newly initialized IORequests, and software interrupt structures
  used with Cause(), should have type NT_UNKNOWN.  The OS will assign a type
  used with Cause(), should have type NT_UNKNOWN.  The OS will assign a type
  when they are first used.
  when they are first used.
@@ -124,13 +124,13 @@ type
 Const
 Const
 
 
   NT_UNKNOWN      =  0; // Unknown Node
   NT_UNKNOWN      =  0; // Unknown Node
-  NT_TASK         =  1; // Exec task 
+  NT_TASK         =  1; // Exec task
   NT_INTERRUPT    =  2; // Interrupt
   NT_INTERRUPT    =  2; // Interrupt
   NT_DEVICE       =  3; // Device
   NT_DEVICE       =  3; // Device
   NT_MSGPORT      =  4; // Message Port
   NT_MSGPORT      =  4; // Message Port
   NT_MESSAGE      =  5; // Indicates message currently pending
   NT_MESSAGE      =  5; // Indicates message currently pending
   NT_FREEMSG      =  6;
   NT_FREEMSG      =  6;
-  NT_REPLYMSG     =  7; // Message has been replied 
+  NT_REPLYMSG     =  7; // Message has been replied
   NT_RESOURCE     =  8;
   NT_RESOURCE     =  8;
   NT_LIBRARY      =  9;
   NT_LIBRARY      =  9;
   NT_MEMORY       = 10;
   NT_MEMORY       = 10;
@@ -144,7 +144,7 @@ Const
   NT_GRAPHICS     = 18;
   NT_GRAPHICS     = 18;
   NT_DEATHMESSAGE = 19;
   NT_DEATHMESSAGE = 19;
   NT_HIDD         = 20; // AROS Specific
   NT_HIDD         = 20; // AROS Specific
-  
+
   NT_USER         = 254; // User node types work down from here
   NT_USER         = 254; // User node types work down from here
   NT_EXTENDED     = 255;
   NT_EXTENDED     = 255;
 
 
@@ -226,20 +226,20 @@ const
   ACPU_AddressErr = $80000003; // Illegal address access (ie: odd)
   ACPU_AddressErr = $80000003; // Illegal address access (ie: odd)
   ACPU_InstErr    = $80000004; // Illegal instruction
   ACPU_InstErr    = $80000004; // Illegal instruction
   ACPU_DivZero    = $80000005; // Divide by zero
   ACPU_DivZero    = $80000005; // Divide by zero
-  ACPU_CHK        = $80000006; // Check instruction error 
-  ACPU_TRAPV      = $80000007; // TrapV instruction error 
-  ACPU_PrivErr    = $80000008; // Privilege violation error 
-  ACPU_Trace      = $80000009; // Trace error 
-  ACPU_LineA      = $8000000A; // Line 1010 Emulator error 
-  ACPU_LineF      = $8000000B; // Line 1111 Emulator error 
-  ACPU_Format     = $8000000E; // Stack frame format error 
-  ACPU_Spurious   = $80000018; // Spurious interrupt error 
-  ACPU_AutoVec1   = $80000019; // AutoVector Level 1 interrupt error 
-  ACPU_AutoVec2   = $8000001A; // AutoVector Level 2 interrupt error 
-  ACPU_AutoVec3   = $8000001B; // AutoVector Level 3 interrupt error 
-  ACPU_AutoVec4   = $8000001C; // AutoVector Level 4 interrupt error 
-  ACPU_AutoVec5   = $8000001D; // AutoVector Level 5 interrupt error 
-  ACPU_AutoVec6   = $8000001E; // AutoVector Level 6 interrupt error 
+  ACPU_CHK        = $80000006; // Check instruction error
+  ACPU_TRAPV      = $80000007; // TrapV instruction error
+  ACPU_PrivErr    = $80000008; // Privilege violation error
+  ACPU_Trace      = $80000009; // Trace error
+  ACPU_LineA      = $8000000A; // Line 1010 Emulator error
+  ACPU_LineF      = $8000000B; // Line 1111 Emulator error
+  ACPU_Format     = $8000000E; // Stack frame format error
+  ACPU_Spurious   = $80000018; // Spurious interrupt error
+  ACPU_AutoVec1   = $80000019; // AutoVector Level 1 interrupt error
+  ACPU_AutoVec2   = $8000001A; // AutoVector Level 2 interrupt error
+  ACPU_AutoVec3   = $8000001B; // AutoVector Level 3 interrupt error
+  ACPU_AutoVec4   = $8000001C; // AutoVector Level 4 interrupt error
+  ACPU_AutoVec5   = $8000001D; // AutoVector Level 5 interrupt error
+  ACPU_AutoVec6   = $8000001E; // AutoVector Level 6 interrupt error
   ACPU_AutoVec7   = $8000001F; // AutoVector Level 7 interrupt error
   ACPU_AutoVec7   = $8000001F; // AutoVector Level 7 interrupt error
 
 
 // alert libraries
 // alert libraries
@@ -299,59 +299,59 @@ const
   AN_StackProbe   = $0100000E; // Stack appears to extend out of range
   AN_StackProbe   = $0100000E; // Stack appears to extend out of range
   AN_BadFreeAddr  = $0100000F; // Memory header not located. [ Usually an invalid address passed to FreeMem() ]
   AN_BadFreeAddr  = $0100000F; // Memory header not located. [ Usually an invalid address passed to FreeMem() ]
   AN_BadSemaphore = $01000010; // An attempt was made to use the old message semaphores.
   AN_BadSemaphore = $01000010; // An attempt was made to use the old message semaphores.
-  
+
 // dos.library
 // dos.library
   AN_DOSLib       = $07000000;
   AN_DOSLib       = $07000000;
   AN_StartMem     = $07010001; // no memory at startup
   AN_StartMem     = $07010001; // no memory at startup
-  AN_EndTask      = $07000002; // EndTask didn't 
-  AN_QPktFail     = $07000003; // Qpkt failure 
-  AN_AsyncPkt     = $07000004; // Unexpected packet received 
-  AN_FreeVec      = $07000005; // Freevec failed 
-  AN_DiskBlkSeq   = $07000006; // Disk block sequence error 
-  AN_BitMap       = $07000007; // Bitmap corrupt 
-  AN_KeyFree      = $07000008; // Key already free 
-  AN_BadChkSum    = $07000009; // Invalid checksum 
-  AN_DiskError    = $0700000A; // Disk Error 
-  AN_KeyRange     = $0700000B; // Key out of range 
-  AN_BadOverlay   = $0700000C; // Bad overlay 
-  AN_BadInitFunc  = $0700000D; // Invalid init packet for cli/shell 
-  AN_FileReclosed = $0700000E; // A filehandle was closed more than once 
-
-// graphics.library 
+  AN_EndTask      = $07000002; // EndTask didn't
+  AN_QPktFail     = $07000003; // Qpkt failure
+  AN_AsyncPkt     = $07000004; // Unexpected packet received
+  AN_FreeVec      = $07000005; // Freevec failed
+  AN_DiskBlkSeq   = $07000006; // Disk block sequence error
+  AN_BitMap       = $07000007; // Bitmap corrupt
+  AN_KeyFree      = $07000008; // Key already free
+  AN_BadChkSum    = $07000009; // Invalid checksum
+  AN_DiskError    = $0700000A; // Disk Error
+  AN_KeyRange     = $0700000B; // Key out of range
+  AN_BadOverlay   = $0700000C; // Bad overlay
+  AN_BadInitFunc  = $0700000D; // Invalid init packet for cli/shell
+  AN_FileReclosed = $0700000E; // A filehandle was closed more than once
+
+// graphics.library
   AN_GraphicsLib  = $02000000;
   AN_GraphicsLib  = $02000000;
-  AN_GfxNoMem     = $82010000; // graphics out of memory 
-  AN_GfxNoMemMspc = $82010001; // MonitorSpec alloc, no memory 
-  AN_LongFrame    = $82010006; // long frame, no memory 
-  AN_ShortFrame   = $82010007; // short frame, no memory 
-  AN_TextTmpRas   = $02010009; // text, no memory for TmpRas 
-  AN_BltBitMap    = $8201000A; //  BltBitMap, no memory 
-  AN_RegionMemory = $8201000B; //  regions, memory not available 
-  AN_MakeVPort    = $82010030; //  MakeVPort, no memory 
+  AN_GfxNoMem     = $82010000; // graphics out of memory
+  AN_GfxNoMemMspc = $82010001; // MonitorSpec alloc, no memory
+  AN_LongFrame    = $82010006; // long frame, no memory
+  AN_ShortFrame   = $82010007; // short frame, no memory
+  AN_TextTmpRas   = $02010009; // text, no memory for TmpRas
+  AN_BltBitMap    = $8201000A; //  BltBitMap, no memory
+  AN_RegionMemory = $8201000B; //  regions, memory not available
+  AN_MakeVPort    = $82010030; //  MakeVPort, no memory
   AN_GfxNewError  = $0200000C;
   AN_GfxNewError  = $0200000C;
   AN_GfxFreeError = $0200000D;
   AN_GfxFreeError = $0200000D;
-  AN_GfxNoLCM     = $82011234; // emergency memory not available 
+  AN_GfxNoLCM     = $82011234; // emergency memory not available
   AN_ObsoleteFont = $02000401; // unsupported font description used
   AN_ObsoleteFont = $02000401; // unsupported font description used
 
 
 // intuition.library
 // intuition.library
   AN_Intuition    = $04000000;
   AN_Intuition    = $04000000;
-  AN_GadgetType   = $84000001; // unknown gadget type 
-  AN_BadGadget    = $04000001; // Recovery form of AN_GadgetType 
-  AN_CreatePort   = $84010002; // create port, no memory 
-  AN_ItemAlloc    = $04010003; // item plane alloc, no memory 
-  AN_SubAlloc     = $04010004; // sub alloc, no memory 
-  AN_PlaneAlloc   = $84010005; // plane alloc, no memory 
-  AN_ItemBoxTop   = $84000006; // item box top < RelZero 
-  AN_OpenScreen   = $84010007; // open screen, no memory 
-  AN_OpenScrnRast = $84010008; // open screen, raster alloc, no memory 
-  AN_SysScrnType  = $84000009; // open sys screen, unknown type 
-  AN_AddSWGadget  = $8401000A; // add SW gadgets, no memory 
-  AN_OpenWindow   = $8401000B; // open window, no memory 
-  AN_BadState     = $8400000C; // Bad State Return entering Intuition 
-  AN_BadMessage   = $8400000D; // Bad Message received by IDCMP 
-  AN_WeirdEcho    = $8400000E; // Weird echo causing incomprehension 
-  AN_NoConsole    = $8400000F; // couldn't open the Console Device 
-  AN_NoISem       = $04000010; // Intuition skipped obtaining a sem 
-  AN_ISemOrder    = $04000011; // Intuition obtained a sem in bad order 
+  AN_GadgetType   = $84000001; // unknown gadget type
+  AN_BadGadget    = $04000001; // Recovery form of AN_GadgetType
+  AN_CreatePort   = $84010002; // create port, no memory
+  AN_ItemAlloc    = $04010003; // item plane alloc, no memory
+  AN_SubAlloc     = $04010004; // sub alloc, no memory
+  AN_PlaneAlloc   = $84010005; // plane alloc, no memory
+  AN_ItemBoxTop   = $84000006; // item box top < RelZero
+  AN_OpenScreen   = $84010007; // open screen, no memory
+  AN_OpenScrnRast = $84010008; // open screen, raster alloc, no memory
+  AN_SysScrnType  = $84000009; // open sys screen, unknown type
+  AN_AddSWGadget  = $8401000A; // add SW gadgets, no memory
+  AN_OpenWindow   = $8401000B; // open window, no memory
+  AN_BadState     = $8400000C; // Bad State Return entering Intuition
+  AN_BadMessage   = $8400000D; // Bad Message received by IDCMP
+  AN_WeirdEcho    = $8400000E; // Weird echo causing incomprehension
+  AN_NoConsole    = $8400000F; // couldn't open the Console Device
+  AN_NoISem       = $04000010; // Intuition skipped obtaining a sem
+  AN_ISemOrder    = $04000011; // Intuition obtained a sem in bad order
 
 
 // System utility library
 // System utility library
   AN_UtilityLib   = $34000000;
   AN_UtilityLib   = $34000000;
@@ -373,7 +373,7 @@ const
 
 
 // diskfont.library
 // diskfont.library
   AN_DiskfontLib  = $0B000000;
   AN_DiskfontLib  = $0B000000;
-  
+
 // icon.library
 // icon.library
   AN_IconLib      = $09000000;
   AN_IconLib      = $09000000;
 
 
@@ -396,7 +396,7 @@ const
 // ------ trackdisk.device
 // ------ trackdisk.device
   AN_TrackDiskDev = $14000000;
   AN_TrackDiskDev = $14000000;
   AN_TDCalibSeek  = $14000001; // calibrate: seek error
   AN_TDCalibSeek  = $14000001; // calibrate: seek error
-  AN_TDDelay      = $14000002; // delay: error on timer wait 
+  AN_TDDelay      = $14000002; // delay: error on timer wait
 
 
 // timer.device
 // timer.device
   AN_TimerDev     = $15000000;
   AN_TimerDev     = $15000000;
@@ -432,7 +432,7 @@ const
 // For use by any application that needs it
 // For use by any application that needs it
   AN_Unknown      = $35000000;
   AN_Unknown      = $35000000;
 
 
-// AROS Additions 
+// AROS Additions
   AN_Aros         = $40000000;
   AN_Aros         = $40000000;
   AN_OOP          = $41000000;
   AN_OOP          = $41000000;
 
 
@@ -446,7 +446,7 @@ const
   IOERR_NOCMD      = -3; // command not supported by device
   IOERR_NOCMD      = -3; // command not supported by device
   IOERR_BADLENGTH  = -4; // not a valid length (usually IO_LENGTH)
   IOERR_BADLENGTH  = -4; // not a valid length (usually IO_LENGTH)
   IOERR_BADADDRESS = -5; // invalid address (misaligned or bad range)
   IOERR_BADADDRESS = -5; // invalid address (misaligned or bad range)
-  IOERR_UNITBUSY   = -6; // device opens ok, but requested unit is busy 
+  IOERR_UNITBUSY   = -6; // device opens ok, but requested unit is busy
   IOERR_SELFTEST   = -7; // hardware failed self-test
   IOERR_SELFTEST   = -7; // hardware failed self-test
 
 
 type
 type
@@ -462,7 +462,7 @@ type
     rt_Name: CONST_STRPTR;    // pointer to node name
     rt_Name: CONST_STRPTR;    // pointer to node name
     rt_IdString: CONST_STRPTR;// pointer to ident string
     rt_IdString: CONST_STRPTR;// pointer to ident string
     rt_Init: APTR;            // pointer to init code
     rt_Init: APTR;            // pointer to init code
-    rt_Revision: Word;        // Extension taken over from MorphOS. Only valid if RTF_EXTENDED is set 
+    rt_Revision: Word;        // Extension taken over from MorphOS. Only valid if RTF_EXTENDED is set
     rt_Tags: PTagItem;         // PTagItem
     rt_Tags: PTagItem;         // PTagItem
   end;
   end;
 
 
@@ -473,7 +473,7 @@ const
   RTF_SINGLETASK  = $02;
   RTF_SINGLETASK  = $02;
   RTF_AFTERDOS    = $04;
   RTF_AFTERDOS    = $04;
   RTF_AUTOINIT    = $80;
   RTF_AUTOINIT    = $80;
-  
+
   RTF_EXTENDED    = $40; // MorphOS extension: extended structure fields are valid
   RTF_EXTENDED    = $40; // MorphOS extension: extended structure fields are valid
 
 
 // Compatibility:
 // Compatibility:
@@ -482,7 +482,7 @@ const
   RTW_COLDSTART   = $01;
   RTW_COLDSTART   = $01;
 
 
   RTT_STARTUP = TAG_USER + $04AF1234;
   RTT_STARTUP = TAG_USER + $04AF1234;
-  
+
 type
 type
 //****** MemChunk ****************************************************
 //****** MemChunk ****************************************************
   PMemChunk = ^TMemChunk;
   PMemChunk = ^TMemChunk;
@@ -538,7 +538,7 @@ const
   MEMF_LARGEST       = 1 shl 17;
   MEMF_LARGEST       = 1 shl 17;
   MEMF_REVERSE       = 1 shl 18;
   MEMF_REVERSE       = 1 shl 18;
   MEMF_TOTAL         = 1 shl 19; // AvailMem: return total size of memory
   MEMF_TOTAL         = 1 shl 19; // AvailMem: return total size of memory
-  MEMF_HWALIGNED     = 1 shl 20; // For AllocMem() - align address and size to physical page boundary 
+  MEMF_HWALIGNED     = 1 shl 20; // For AllocMem() - align address and size to physical page boundary
   MEMF_SEM_PROTECTED = 1 shl 20; // For CreatePool() - add semaphore protection to the pool
   MEMF_SEM_PROTECTED = 1 shl 20; // For CreatePool() - add semaphore protection to the pool
   MEMF_NO_EXPUNGE    = 1 shl 31; // AllocMem: Do not cause expunge on failure
   MEMF_NO_EXPUNGE    = 1 shl 31; // AllocMem: Do not cause expunge on failure
 
 
@@ -564,10 +564,10 @@ type
 const
 const
   MEMHF_RECYCLE   =  1; // 0 = First time, 1 = recycle
   MEMHF_RECYCLE   =  1; // 0 = First time, 1 = recycle
 //***** Low Memory handler return values **************************
 //***** Low Memory handler return values **************************
-  MEM_ALL_DONE    = -1; // We did all we could do 
+  MEM_ALL_DONE    = -1; // We did all we could do
   MEM_DID_NOTHING =  0; // Nothing we could do...
   MEM_DID_NOTHING =  0; // Nothing we could do...
   MEM_TRY_AGAIN   =  1; // We did some, try the allocation again
   MEM_TRY_AGAIN   =  1; // We did some, try the allocation again
-    
+
 type
 type
   PInterrupt = ^TInterrupt;
   PInterrupt = ^TInterrupt;
   TInterrupt = record
   TInterrupt = record
@@ -583,7 +583,7 @@ type
     iv_Code: Pointer;
     iv_Code: Pointer;
     iv_Node: PNode;
     iv_Node: PNode;
   end;
   end;
-  
+
 // PRIVATE
 // PRIVATE
   PSoftIntList = ^TSoftIntList;
   PSoftIntList = ^TSoftIntList;
   TSoftIntList = record    // For EXEC use ONLY!
   TSoftIntList = record    // For EXEC use ONLY!
@@ -600,7 +600,7 @@ const
   Usage:
   Usage:
     AddIntServer(INTB_KERNEL + irq, irq_handler);
     AddIntServer(INTB_KERNEL + irq, irq_handler);
     RemIntServer(INTB_KERNEL + irq, irq_handler); }
     RemIntServer(INTB_KERNEL + irq, irq_handler); }
-  INTB_KERNEL = 16;   
+  INTB_KERNEL = 16;
 
 
 { This file defines ports and messages, which are used for inter-
 { This file defines ports and messages, which are used for inter-
   task communications using the routines defined toward the
   task communications using the routines defined toward the
@@ -615,7 +615,7 @@ type
     mp_SigTask: Pointer;   { task to be signalled (TaskPtr) }
     mp_SigTask: Pointer;   { task to be signalled (TaskPtr) }
     mp_MsgList: TList;     { message linked list  }
     mp_MsgList: TList;     { message linked list  }
   end;
   end;
-    
+
 //****** Message *****************************************************
 //****** Message *****************************************************
   PMessage = ^TMessage;
   PMessage = ^TMessage;
   TMessage = record
   TMessage = record
@@ -633,7 +633,7 @@ type
     mn_Magic: ULONG;        // can be used to figure out the message sender
     mn_Magic: ULONG;        // can be used to figure out the message sender
     mn_Version: ULONG;      // version can be used to extend a message in later versions
     mn_Version: ULONG;      // version can be used to extend a message in later versions
   end;
   end;
-  
+
 { definition for entry Magic in Messages
 { definition for entry Magic in Messages
   Magic is introduced to prevent Multiple Ports, for example if you´r using
   Magic is introduced to prevent Multiple Ports, for example if you´r using
   ScreenNotifications and DecorNotifications you must have two Ports as long
   ScreenNotifications and DecorNotifications you must have two Ports as long
@@ -641,7 +641,7 @@ type
   problem.}
   problem.}
 const
 const
   MAGIC_DECORATOR    = $8000001;
   MAGIC_DECORATOR    = $8000001;
-  MAGIC_SCREENNOTIFY = $8000002;    
+  MAGIC_SCREENNOTIFY = $8000002;
 
 
 {   Every Amiga Task has one of these Task structures associated with it.
 {   Every Amiga Task has one of these Task structures associated with it.
     To find yours, use FindTask(Nil).  AmigaDOS processes tack a few more
     To find yours, use FindTask(Nil).  AmigaDOS processes tack a few more
@@ -657,7 +657,7 @@ type
     tc_TDNestCnt: Shortint; // task disabled nesting
     tc_TDNestCnt: Shortint; // task disabled nesting
     tc_SigAlloc: ULONG;     // sigs allocated
     tc_SigAlloc: ULONG;     // sigs allocated
     tc_SigWait: ULONG;      // sigs we are waiting for
     tc_SigWait: ULONG;      // sigs we are waiting for
-    tc_SigRecvd: ULONG;     // sigs we have received 
+    tc_SigRecvd: ULONG;     // sigs we have received
     tc_SigExcept: ULONG;    // sigs we will take excepts for
     tc_SigExcept: ULONG;    // sigs we will take excepts for
     tc_TrapAlloc: Word;     // traps allocated
     tc_TrapAlloc: Word;     // traps allocated
     tc_TrapAble: Word;      // traps enabled
     tc_TrapAble: Word;      // traps enabled
@@ -681,13 +681,13 @@ type
     stk_Upper: APTR;   // Upper end of stack (size + Lowest)
     stk_Upper: APTR;   // Upper end of stack (size + Lowest)
     stk_Pointer: APTR; // Stack pointer at switch point
     stk_Pointer: APTR; // Stack pointer at switch point
   end;
   end;
-  
+
   PStackSwapArgs = ^TStackSwapArgs;
   PStackSwapArgs = ^TStackSwapArgs;
   TStackSwapArgs = record
   TStackSwapArgs = record
     Args: array[0..7] of IPTR;
     Args: array[0..7] of IPTR;
   end;
   end;
 
 
-const  
+const
 //----- Flag Bits ------------------------------------------
 //----- Flag Bits ------------------------------------------
   TB_PROCTIME         = 0;
   TB_PROCTIME         = 0;
   TB_ETASK            = 3;
   TB_ETASK            = 3;
@@ -733,13 +733,13 @@ type
 {$ifdef AROS_MORPHOS_COMPATIBLE}
 {$ifdef AROS_MORPHOS_COMPATIBLE}
   TETask = record
   TETask = record
     Message: TMessage;
     Message: TMessage;
-    Parent: PTask;	    // Pointer to task
+    Parent: PTask;      // Pointer to task
     UniqueID: ULONG;
     UniqueID: ULONG;
     Children: TMinList; // List of children
     Children: TMinList; // List of children
     TrapAlloc: Word;
     TrapAlloc: Word;
     TrapAble: Word;
     TrapAble: Word;
-    Result1: ULONG;	    // First result
-    Result2: APTR;	    // Result data pointer (AllocVec)
+    Result1: ULONG;     // First result
+    Result2: APTR;      // Result data pointer (AllocVec)
     MsgPort: TMsgPort;
     MsgPort: TMsgPort;
     MemPool: Pointer;
     MemPool: Pointer;
     Reserved: array[0..1] of Pointer;
     Reserved: array[0..1] of Pointer;
@@ -750,16 +750,16 @@ type
 // Extended Task structure
 // Extended Task structure
   TETask = record
   TETask = record
     et_Message: TMessage;
     et_Message: TMessage;
-    et_Parent: APTR;	     // Pointer to parent task
+    et_Parent: APTR;       // Pointer to parent task
     et_UniqueID: ULONG;
     et_UniqueID: ULONG;
     et_Children: TMinList; // List of children
     et_Children: TMinList; // List of children
     et_TrapAlloc: Word;
     et_TrapAlloc: Word;
     et_TrapAble: Word;
     et_TrapAble: Word;
-    et_Result1: ULONG;	   // First result
-    et_Result2: APTR;	     // Result data pointer (AllocVec)
+    et_Result1: ULONG;     // First result
+    et_Result2: APTR;      // Result data pointer (AllocVec)
     et_TaskMsgPort: TMsgPort;
     et_TaskMsgPort: TMsgPort;
     et_Compatibility: array[0..3] of APTR;   // Reserve this space for compiled software to access iet_startup and iet_acpd
     et_Compatibility: array[0..3] of APTR;   // Reserve this space for compiled software to access iet_startup and iet_acpd
-    et_MemPool: Pointer;	            // Task's private memory pool
+    et_MemPool: Pointer;              // Task's private memory pool
 {$ifdef aros}
 {$ifdef aros}
     et_Reserved: array[0..0] of IPTR; // MorphOS Private
     et_Reserved: array[0..0] of IPTR; // MorphOS Private
     et_TaskStorage: Pointer;          // Task Storage Slots
     et_TaskStorage: Pointer;          // Task Storage Slots
@@ -804,7 +804,7 @@ const
 
 
   TASKERROR_OK = 0;
   TASKERROR_OK = 0;
   TASKERROR_NOMEMORY = 1;
   TASKERROR_NOMEMORY = 1;
-// Actions for ShutdownA() 
+// Actions for ShutdownA()
   SD_ACTION_POWEROFF   = 0;
   SD_ACTION_POWEROFF   = 0;
   SD_ACTION_COLDREBOOT = 1;
   SD_ACTION_COLDREBOOT = 1;
 
 
@@ -843,14 +843,14 @@ type
     ss_QueueCount: SmallInt;
     ss_QueueCount: SmallInt;
   end;
   end;
 
 
-// Semaphore procure message for Procure/Vacate 
+// Semaphore procure message for Procure/Vacate
   PSemaphoreMessage = ^TSemaphoreMessage;
   PSemaphoreMessage = ^TSemaphoreMessage;
   TSemaphoreMessage = record
   TSemaphoreMessage = record
     ssm_Message: TMessage;
     ssm_Message: TMessage;
     ssm_Semaphore: PSignalSemaphore;
     ssm_Semaphore: PSignalSemaphore;
   end;
   end;
 
 
-{ not in aros? 
+{ not in aros?
   PSemaphore = ^TSemaphore;
   PSemaphore = ^TSemaphore;
   TSemaphore = record
   TSemaphore = record
     sm_MsgPort: TMsgPort;
     sm_MsgPort: TMsgPort;
@@ -863,7 +863,7 @@ const
 
 
 //------ Special Constants ---------------------------------------
 //------ Special Constants ---------------------------------------
   LIB_RESERVED =  4;   // Exec reserves the first 4 vectors
   LIB_RESERVED =  4;   // Exec reserves the first 4 vectors
-  LIB_VECTSIZE =  6;   // Each library entry takes 6 bytes 
+  LIB_VECTSIZE =  6;   // Each library entry takes 6 bytes
   LIB_BASE     = (-LIB_VECTSIZE);
   LIB_BASE     = (-LIB_VECTSIZE);
   LIB_USERDEF  = (LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE));
   LIB_USERDEF  = (LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE));
   LIB_NONSTD   = (LIB_USERDEF);
   LIB_NONSTD   = (LIB_USERDEF);
@@ -885,15 +885,15 @@ type
     lib_Version,          // major
     lib_Version,          // major
     lib_Revision: Word;   // minor
     lib_Revision: Word;   // minor
 {$ifdef AROS_NEED_LONG_ALIGN}
 {$ifdef AROS_NEED_LONG_ALIGN}
-    lib_pad1: Word; 
-{$endif}    
-    lib_IdString: STRPTR; // ASCII identification 
+    lib_pad1: Word;
+{$endif}
+    lib_IdString: STRPTR; // ASCII identification
     lib_Sum: ULONG;       // the checksum itself
     lib_Sum: ULONG;       // the checksum itself
     lib_OpenCnt: Word;    // number of current opens
     lib_OpenCnt: Word;    // number of current opens
 {$ifdef AROS_NEED_LONG_ALIGN}
 {$ifdef AROS_NEED_LONG_ALIGN}
-    lib_pad2: Word; 
-{$endif}    
-    
+    lib_pad2: Word;
+{$endif}
+
   end; // Warning: size is not a longword multiple!
   end; // Warning: size is not a longword multiple!
 
 
 const
 const
@@ -961,7 +961,7 @@ type
     io_Data: APTR;        // points to data area
     io_Data: APTR;        // points to data area
     io_Offset: ULONG;     // offset for block structured devices
     io_Offset: ULONG;     // offset for block structured devices
   end;
   end;
-  
+
 // library vector offsets for device reserved vectors
 // library vector offsets for device reserved vectors
 const
 const
     DEV_BEGINIO = -30;
     DEV_BEGINIO = -30;
@@ -998,10 +998,10 @@ type
 
 
   PExecBase = ^TExecBase;
   PExecBase = ^TExecBase;
   TExecBase = record
   TExecBase = record
-// Standard Library Structure  
+// Standard Library Structure
     LibNode: TLibrary; // Standard library node
     LibNode: TLibrary; // Standard library node
 { ******* Static System Variables ******* }
 { ******* Static System Variables ******* }
-    SoftVer: Word;          // kickstart release number (obs.) 
+    SoftVer: Word;          // kickstart release number (obs.)
     LowMemChkSum: SmallInt; // checksum of 68000 trap vectors
     LowMemChkSum: SmallInt; // checksum of 68000 trap vectors
     ChkBase: ULONG;         // system base pointer complement
     ChkBase: ULONG;         // system base pointer complement
     ColdCapture,            // coldstart soft capture vector
     ColdCapture,            // coldstart soft capture vector
@@ -1127,7 +1127,7 @@ const
   SFF_QuantumOver = 1 shl 13; // Task's time slice is over
   SFF_QuantumOver = 1 shl 13; // Task's time slice is over
 
 
 // AttnResched. AmigaOS(tm)-compatible, but private.
 // AttnResched. AmigaOS(tm)-compatible, but private.
-  ARF_AttnSwitch  = 1 shl 7;  // Delayed task switch pending 
+  ARF_AttnSwitch  = 1 shl 7;  // Delayed task switch pending
 
 
 { ***** Selected flag definitions for Cache manipulation calls ********* }
 { ***** Selected flag definitions for Cache manipulation calls ********* }
 
 
@@ -1142,7 +1142,7 @@ const
   CACRF_WriteAllocate = 1 shl 13; // 68030 Write-Allocate mode (must always be set!)
   CACRF_WriteAllocate = 1 shl 13; // 68030 Write-Allocate mode (must always be set!)
   CACRF_InvalidateD   = 1 shl 15;
   CACRF_InvalidateD   = 1 shl 15;
   CACRF_EnableE       = 1 shl 30;
   CACRF_EnableE       = 1 shl 30;
-  CACRF_CopyBack      = 1 shl 31;                                            
+  CACRF_CopyBack      = 1 shl 31;
 
 
   DMA_Continue        = 1 shl 1;  // Continuation flag for CachePreDMA
   DMA_Continue        = 1 shl 1;  // Continuation flag for CachePreDMA
   DMA_NoModify        = 1 shl 2;  // Set if DMA does not update memory
   DMA_NoModify        = 1 shl 2;  // Set if DMA does not update memory
@@ -1152,15 +1152,15 @@ const
  * Runtime debug output flags, MorphOS-compatible.
  * Runtime debug output flags, MorphOS-compatible.
  * Most of them are reserved for now.
  * Most of them are reserved for now.
  *}
  *}
-  EXECDEBUGF_INITRESIDENT     = $00000001;  // Single resident initialization       
-  EXECDEBUGF_INITCODE         = $00000002;  // Kickstart initialization             
-  EXECDEBUGF_FINDRESIDENT     = $00000004;  // Resident search                      
-  EXECDEBUGF_CREATELIBRARY    = $00000010;  // Library creation                     
-  EXECDEBUGF_SETfunction      = $00000020;  // Library function patching            
+  EXECDEBUGF_INITRESIDENT     = $00000001;  // Single resident initialization
+  EXECDEBUGF_INITCODE         = $00000002;  // Kickstart initialization
+  EXECDEBUGF_FINDRESIDENT     = $00000004;  // Resident search
+  EXECDEBUGF_CREATELIBRARY    = $00000010;  // Library creation
+  EXECDEBUGF_SETfunction      = $00000020;  // Library function patching
   EXECDEBUGF_NEWSETfunction   = $00000040;
   EXECDEBUGF_NEWSETfunction   = $00000040;
   EXECDEBUGF_CHIPRAM          = $00000080;
   EXECDEBUGF_CHIPRAM          = $00000080;
-  EXECDEBUGF_ADDTASK          = $00000100;  // Task creation                        
-  EXECDEBUGF_REMTASK          = $00000200;  // Task removal                         
+  EXECDEBUGF_ADDTASK          = $00000100;  // Task creation
+  EXECDEBUGF_REMTASK          = $00000200;  // Task removal
   EXECDEBUGF_GETTASKATTR      = $00000400;
   EXECDEBUGF_GETTASKATTR      = $00000400;
   EXECDEBUGF_SETTASKATTR      = $00000800;
   EXECDEBUGF_SETTASKATTR      = $00000800;
   EXECDEBUGF_EXCEPTHANDLER    = $00001000;
   EXECDEBUGF_EXCEPTHANDLER    = $00001000;
@@ -1193,19 +1193,19 @@ type
     avl_balance: LONG;
     avl_balance: LONG;
   end;
   end;
   AVLKey = Pointer;
   AVLKey = Pointer;
-  
+
   PAVLNODECOMP = ^AVLNODECOMP;
   PAVLNODECOMP = ^AVLNODECOMP;
   AVLNODECOMP = APTR;
   AVLNODECOMP = APTR;
   PAVLKEYCOMP = ^AVLKEYCOMP;
   PAVLKEYCOMP = ^AVLKEYCOMP;
   AVLKEYCOMP = APTR;
   AVLKEYCOMP = APTR;
- 
+
 
 
 const
 const
 // Magic constants for RawDoFmt() anv VNewRawDoFmt() to be given as PutChProc
 // Magic constants for RawDoFmt() anv VNewRawDoFmt() to be given as PutChProc
   RAWFMTFUNC_STRING = 0; // Output to string given in PutChData
   RAWFMTFUNC_STRING = 0; // Output to string given in PutChData
   RAWFMTFUNC_SERIAL = 1; // Output to debug log (usually serial port)
   RAWFMTFUNC_SERIAL = 1; // Output to debug log (usually serial port)
   RAWFMTFUNC_COUNT  = 2; // Just count characters, PutChData is a pointer to the counter (ULONG *)
   RAWFMTFUNC_COUNT  = 2; // Just count characters, PutChData is a pointer to the counter (ULONG *)
-  
+
 // function headers
 // function headers
 function AbortIO(IORequest: PIORequest): LongInt; syscall AOS_ExecBase 80;
 function AbortIO(IORequest: PIORequest): LongInt; syscall AOS_ExecBase 80;
 procedure AddDevice(Device: PDevice); syscall AOS_ExecBase 72;
 procedure AddDevice(Device: PDevice); syscall AOS_ExecBase 72;
@@ -1224,7 +1224,7 @@ procedure Alert(AlertNum: ULONG); syscall AOS_ExecBase 18;
 function AllocAbs(ByteSize: ULONG; Location: APTR): APTR; syscall AOS_ExecBase 34;
 function AllocAbs(ByteSize: ULONG; Location: APTR): APTR; syscall AOS_ExecBase 34;
 function Allocate(FreeList: PMemHeader; ByteSize: ULONG): PMemHeader; syscall AOS_ExecBase 31;
 function Allocate(FreeList: PMemHeader; ByteSize: ULONG): PMemHeader; syscall AOS_ExecBase 31;
 function AllocEntry(Entry: PMemList): PMemList; syscall AOS_ExecBase 37;
 function AllocEntry(Entry: PMemList): PMemList; syscall AOS_ExecBase 37;
-function AllocMem(ByteSize: ULONG; Requirements: ULONG): APTR; syscall AOS_ExecBase 33;
+function ExecAllocMem(ByteSize: ULONG; Requirements: ULONG): APTR; syscall AOS_ExecBase 33;
 function AllocPooled(PoolHeader: APTR; MemSize: ULONG): APTR; syscall AOS_ExecBase 118;
 function AllocPooled(PoolHeader: APTR; MemSize: ULONG): APTR; syscall AOS_ExecBase 118;
 function AllocSignal(SignalNum: LongInt): ShortInt; syscall AOS_ExecBase 55;
 function AllocSignal(SignalNum: LongInt): ShortInt; syscall AOS_ExecBase 55;
 function AllocTrap(TrapNum: LongInt): LongInt; syscall AOS_ExecBase 57;
 function AllocTrap(TrapNum: LongInt): LongInt; syscall AOS_ExecBase 57;
@@ -1412,7 +1412,7 @@ begin
   begin
   begin
     if Assigned(List^.lh_Head^.ln_Succ) then
     if Assigned(List^.lh_Head^.ln_Succ) then
       GetHead := List^.lh_Head;
       GetHead := List^.lh_Head;
-  end;  
+  end;
 end;
 end;
 
 
 function GetTail(List: PList): PNode; inline;
 function GetTail(List: PList): PNode; inline;
@@ -1422,7 +1422,7 @@ begin
   begin
   begin
     if Assigned(List^.lh_TailPred^.ln_Pred) then
     if Assigned(List^.lh_TailPred^.ln_Pred) then
       GetTail := List^.lh_TailPred;
       GetTail := List^.lh_TailPred;
-  end;  
+  end;
 end;
 end;
 
 
 function GetSucc(Node: PNode): PNode; inline;
 function GetSucc(Node: PNode): PNode; inline;
@@ -1431,7 +1431,7 @@ begin
   if Assigned(Node) then
   if Assigned(Node) then
     if Assigned(Node^.ln_Succ) then
     if Assigned(Node^.ln_Succ) then
       if Assigned(Node^.ln_Succ^.ln_Succ) then
       if Assigned(Node^.ln_Succ^.ln_Succ) then
-        GetSucc := Node^.ln_Succ;  
+        GetSucc := Node^.ln_Succ;
 end;
 end;
 
 
 function GetPred(Node: PNode): PNode; inline;
 function GetPred(Node: PNode): PNode; inline;
@@ -1450,13 +1450,13 @@ var
 begin
 begin
   if not Assigned(List) or not Assigned(NodeProc) then
   if not Assigned(List) or not Assigned(NodeProc) then
     Exit;
     Exit;
-  Node := GetHead(List);  
+  Node := GetHead(List);
   for i := 0 to ListLength(List) do
   for i := 0 to ListLength(List) do
   begin
   begin
     if not Assigned(Node) then
     if not Assigned(Node) then
       Exit;
       Exit;
     NodeProc(Node);
     NodeProc(Node);
-    Node := GetSucc(Node);  
+    Node := GetSucc(Node);
   end;
   end;
 end;
 end;
 
 
@@ -1468,14 +1468,14 @@ var
 begin
 begin
   if not Assigned(List) or not Assigned(NodeProc) then
   if not Assigned(List) or not Assigned(NodeProc) then
     Exit;
     Exit;
-  Node := GetHead(List);  
+  Node := GetHead(List);
   if not Assigned(Node) then
   if not Assigned(Node) then
     Exit;
     Exit;
   while Assigned(Node) do
   while Assigned(Node) do
   begin
   begin
     if not Assigned(Node) then
     if not Assigned(Node) then
       Exit;
       Exit;
-    NextNode := GetSucc(Node);  
+    NextNode := GetSucc(Node);
     NodeProc(Node);
     NodeProc(Node);
     Node := NextNode;
     Node := NextNode;
   end;
   end;
@@ -1496,7 +1496,7 @@ begin
       Next := Current^.ln_Succ;
       Next := Current^.ln_Succ;
       Inc(ListLength);
       Inc(ListLength);
       if (not Assigned(Current)) or (not Assigned(Next)) then
       if (not Assigned(Current)) or (not Assigned(Next)) then
-        Exit;  
+        Exit;
     end;
     end;
 end;
 end;
 
 
@@ -1511,7 +1511,7 @@ function IsMinListEmpty(List: PMinList): Boolean;
 begin
 begin
   IsMinListEmpty := True;
   IsMinListEmpty := True;
   if Assigned(List) then
   if Assigned(List) then
-    IsMinListEmpty := List^.mlh_TailPred = PMinNode(List); 
+    IsMinListEmpty := List^.mlh_TailPred = PMinNode(List);
 end;
 end;
 
 
 function IsMsgPortEmpty(Mp: PMsgPort): Boolean;
 function IsMsgPortEmpty(Mp: PMsgPort): Boolean;