diff --git a/rtl/amiga/exec.pp b/rtl/amiga/exec.pp index 96babbbf22..2aadf2dd1c 100644 --- a/rtl/amiga/exec.pp +++ b/rtl/amiga/exec.pp @@ -18,1061 +18,7 @@ unit Exec; INTERFACE -TYPE - - STRPTR = PChar; - ULONG = Longint; - LONG = longint; - APTR = Pointer; - BPTR = Longint; - BSTR = Longint; - pWord = ^Word; - pLongint = ^Longint; - pInteger = ^Integer; - - -TYPE - -{$PACKRECORDS 4} - -{ * List Node Structure. Each member in a list starts with a Node * } - - pNode = ^tNode; - tNode = Record - ln_Succ, { * Pointer to next (successor) * } - ln_Pred : pNode; { * Pointer to previous (predecessor) * } - ln_Type : Byte; - ln_Pri : Shortint; { * Priority, for sorting * } - ln_Name : STRPTR; { * ID string, null terminated * } - End; { * Note: Integer aligned * } - -{$PACKRECORDS NORMAL} - -{ * minimal node -- no type checking possible * } - - pMinNode = ^tMinNode; - tMinNode = Record - mln_Succ, - mln_Pred : pMinNode; - End; - - - -{ * -** Note: Newly initialized IORequests, and software interrupt structures -** used with Cause(), should have type NT_UNKNOWN. The OS will assign a type -** when they are first used. -* } - -{ *----- Node Types for LN_TYPE -----* } - -Const - - NT_UNKNOWN = 0; - NT_TASK = 1; { * Exec task * } - NT_INTERRUPT = 2; - NT_DEVICE = 3; - NT_MSGPORT = 4; - NT_MESSAGE = 5; { * Indicates message currently pending * } - NT_FREEMSG = 6; - NT_REPLYMSG = 7; { * Message has been replied * } - NT_RESOURCE = 8; - NT_LIBRARY = 9; - NT_MEMORY = 10; - NT_SOFTINT = 11; { * Internal flag used by SoftInits * } - NT_FONT = 12; - NT_PROCESS = 13; { * AmigaDOS Process * } - NT_SEMAPHORE = 14; - NT_SIGNALSEM = 15; { * signal semaphores * } - NT_BOOTNODE = 16; - NT_KICKMEM = 17; - NT_GRAPHICS = 18; - NT_DEATHMESSAGE = 19; - - NT_USER = 254; { * User node types work down from here * } - NT_EXTENDED = 255; - -{ - This file defines Exec system lists, which are used to link - various things. Exec provides several routines to handle list - processing (defined at the bottom of this file), so you can - use these routines to save yourself the trouble of writing a list - package. -} - - -Type - -{ normal, full featured list } - - pList = ^tList; - tList = record - lh_Head : pNode; - lh_Tail : pNode; - lh_TailPred : pNode; - lh_Type : Byte; - l_pad : Byte; - end; - -{ minimum list -- no type checking possible } - - pMinList = ^tMinList; - tMinList = record - mlh_Head : pMinNode; - mlh_Tail : pMinNode; - mlh_TailPred : pMinNode; - end; - - - -{ ******************************************************************** -* -* Format of the alert error number: -* -* +-+-------------+----------------+--------------------------------+ -* |D| SubSysId | General Error | SubSystem Specific Error | -* +-+-------------+----------------+--------------------------------+ -* 1 7 bits 8 bits 16 bits -* -* D: DeadEnd alert -* SubSysId: indicates ROM subsystem number. -* General Error: roughly indicates what the error was -* Specific Error: indicates more detail -*********************************************************************} - -const -{********************************************************************* -* -* Hardware/CPU specific alerts: They may show without the 8 at the -* front of the number. These are CPU/68000 specific. See 68$0 -* programmer's manuals for more details. -* -*********************************************************************} - ACPU_BusErr = $80000002; { Hardware bus fault/access error } - ACPU_AddressErr = $80000003; { Illegal address access (ie: odd) } - ACPU_InstErr = $80000004; { Illegal instruction } - 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_AutoVec7 = $8000001F; { AutoVector Level 7 interrupt error } - - -{ ******************************************************************** -* -* General Alerts -* -* For example: timer.device cannot open math.library would be $05038015 -* -* Alert(AN_TimerDev|AG_OpenLib|AO_MathLib); -* -********************************************************************} - - -CONST - -{ ------ alert types } - AT_DeadEnd = $80000000; - AT_Recovery = $00000000; - - -{ ------ general purpose alert codes } - 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; { usually too many closes } - AG_CloseDev = $000A0000; { or a mismatched close } - AG_ProcCreate = $000B0000; { Process creation failed } - - -{ ------ alert objects: } - 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; - - - -{ ******************************************************************** -* -* Specific Alerts: -* -********************************************************************} - -{ ------ exec.library } - - AN_ExecLib = $01000000; - AN_ExcptVect = $01000001; { 68000 exception vector checksum (obs.) } - AN_BaseChkSum = $01000002; { Execbase checksum (obs.) } - AN_LibChkSum = $01000003; { Library checksum failure } - - AN_MemCorrupt = $81000005; { Corrupt memory list detected in FreeMem } - AN_IntrMem = $81000006; { No memory for interrupt servers } - AN_InitAPtr = $01000007; { InitStruct() of an APTR source (obs.) } - AN_SemCorrupt = $01000008; { A semaphore is in an illegal state - at ReleaseSempahore() } - AN_FreeTwice = $01000009; { Freeing memory already freed } - AN_BogusExcpt = $8100000A; { illegal 68k exception taken (obs.) } - AN_IOUsedTwice = $0100000B; { Attempt to reuse active IORequest } - AN_MemoryInsane = $0100000C; { Sanity check on memory list failed - during AvailMem(MEMF_LARGEST) } - AN_IOAfterClose = $0100000D; { IO attempted on closed IORequest } - 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_BadSemaphore = $01000010; { An attempt was made to use the old - message semaphores. } - -{ ------ graphics.library } - - 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_GfxNewError = $0200000C; - AN_GfxFreeError = $0200000D; - - AN_GfxNoLCM = $82011234; { emergency memory not available } - - AN_ObsoleteFont = $02000401; { unsupported font description used } - -{ ------ layers.library } - - AN_LayersLib = $03000000; - AN_LayersNoMem = $83010000; { layers out of memory } - -{ ------ intuition.library } - 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 } - -{ ------ math.library } - - AN_MathLib = $05000000; - -{ ------ dos.library } - - AN_DOSLib = $07000000; - 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 } - -{ ------ ramlib.library } - - AN_RAMLib = $08000000; - AN_BadSegList = $08000001; { no overlays in library seglists } - -{ ------ icon.library } - - AN_IconLib = $09000000; - -{ ------ expansion.library } - - AN_ExpansionLib = $0A000000; - AN_BadExpansionFree = $0A000001; { freeed free region } - -{ ------ diskfont.library } - - AN_DiskfontLib = $0B000000; - -{ ------ audio.device } - - AN_AudioDev = $10000000; - -{ ------ console.device } - - AN_ConsoleDev = $11000000; - AN_NoWindow = $11000001; { Console can't open initial window } - -{ ------ gameport.device } - - AN_GamePortDev = $12000000; - -{ ------ keyboard.device } - - AN_KeyboardDev = $13000000; - -{ ------ trackdisk.device } - - AN_TrackDiskDev = $14000000; - AN_TDCalibSeek = $14000001; { calibrate: seek error } - AN_TDDelay = $14000002; { delay: error on timer wait } - -{ ------ timer.device } - - AN_TimerDev = $15000000; - AN_TMBadReq = $15000001; { bad request } - AN_TMBadSupply = $15000002; { power supply -- no 50/60Hz ticks } - -{ ------ cia.resource } - - AN_CIARsrc = $20000000; - -{ ------ disk.resource } - - AN_DiskRsrc = $21000000; - AN_DRHasDisk = $21000001; { get unit: already has disk } - AN_DRIntNoAct = $21000002; { interrupt: no active unit } - -{ ------ misc.resource } - - AN_MiscRsrc = $22000000; - -{ ------ bootstrap } - - AN_BootStrap = $30000000; - AN_BootError = $30000001; { boot code returned an error } - -{ ------ Workbench } - - AN_Workbench = $31000000; - AN_NoFonts = $B1000001; - AN_WBBadStartupMsg1 = $31000001; - AN_WBBadStartupMsg2 = $31000002; - AN_WBBadIOMsg = $31000003; - - AN_WBReLayoutToolMenu = $B1010009; - -{ ------ DiskCopy } - - AN_DiskCopy = $32000000; - -{ ------ toolkit for Intuition } - - AN_GadTools = $33000000; - -{ ------ System utility library } - - AN_UtilityLib = $34000000; - -{ ------ For use by any application that needs it } - - AN_Unknown = $35000000; - - - -CONST - - IOERR_OPENFAIL = -1; { device/unit failed to open } - IOERR_ABORTED = -2; { request terminated early [after AbortIO()] } - IOERR_NOCMD = -3; { command not supported by device } - IOERR_BADLENGTH = -4; { not a valid length (usually IO_LENGTH) } - IOERR_BADADDRESS = -5; { invalid address (misaligned or bad range) } - IOERR_UNITBUSY = -6; { device opens ok, but requested unit is busy } - IOERR_SELFTEST = -7; { hardware failed self-test } - - - -type - pResident = ^tResident; - tResident = record - rt_MatchWord : Word; { Integer to match on (ILLEGAL) } - rt_MatchTag : pResident; { pointer to the above } - rt_EndSkip : Pointer; { address to continue scan } - rt_Flags : Byte; { various tag flags } - rt_Version : Byte; { release version number } - rt_Type : Byte; { type of module (NT_mumble) } - rt_Pri : Shortint; { initialization priority } - rt_Name : STRPTR; { pointer to node name } - rt_IdString : STRPTR; { pointer to ident string } - rt_Init : Pointer; { pointer to init code } - end; - -const - - - RTC_MATCHWORD = $4AFC; - - RTF_AUTOINIT = $80; - RTF_AFTERDOS = $04; - RTF_SINGLETASK = $02; - RTF_COLDSTART = $01; - - -{ Compatibility: } - - RTM_WHEN = $03; - RTW_COLDSTART = $01; - RTW_NEVER = $00; - - - -TYPE - -{ ****** MemChunk **************************************************** } - - pMemChunk = ^tMemChunk; - tMemChunk = Record - mc_Next : pMemChunk; { * pointer to next chunk * } - mc_Bytes : ULONG; { * chunk byte size * } - End; - - -{ ****** MemHeader *************************************************** } - - pMemHeader = ^tMemHeader; - tMemHeader = Record - mh_Node : tNode; - mh_Attributes : Word; { * characteristics of this region * } - mh_First : pMemChunk; { * first free region * } - mh_Lower, { * lower memory bound * } - mh_Upper : Pointer; { * upper memory bound+1 * } - mh_Free : Ulong; { * total number of free bytes * } - End; - - -{ ****** MemEntry **************************************************** } - - pMemUnit = ^tMemUnit; - tMemUnit = Record - meu_Reqs : ULONG; { * the AllocMem requirements * } - meu_Addr : Pointer; { * the address of this memory region * } - End; - - pMemEntry = ^tMemEntry; - tMemEntry = Record - me_Un : tMemUnit; - me_Length : ULONG; { * the length of this memory region * } - End; - - -{ ****** MemList ***************************************************** } - -{ * Note: sizeof(struct MemList) includes the size of the first MemEntry! * } - - pMemList = ^tMemList; - tMemList = Record - ml_Node : tNode; - ml_NumEntries : Word; { * number of entries in this struct * } - ml_ME : Array [0..0] of tMemEntry; { * the first entry * } - End; - -{ *----- Memory Requirement Types ---------------------------* } -{ *----- See the AllocMem() documentation for details--------* } - -Const - - MEMF_ANY = %000000000000000000000000; { * Any type of memory will do * } - MEMF_PUBLIC = %000000000000000000000001; - MEMF_CHIP = %000000000000000000000010; - MEMF_FAST = %000000000000000000000100; - MEMF_LOCAL = %000000000000000100000000; - MEMF_24BITDMA = %000000000000001000000000; { * DMAable memory within 24 bits of address * } - MEMF_KICK = %000000000000010000000000; { Memory that can be used for KickTags } - - MEMF_CLEAR = %000000010000000000000000; - MEMF_LARGEST = %000000100000000000000000; - MEMF_REVERSE = %000001000000000000000000; - MEMF_TOTAL = %000010000000000000000000; { * AvailMem: return total size of memory * } - MEMF_NO_EXPUNGE = $80000000; {AllocMem: Do not cause expunge on failure } - - MEM_BLOCKSIZE = 8; - MEM_BLOCKMASK = MEM_BLOCKSIZE-1; - -Type -{***** MemHandlerData *********************************************} -{ Note: This structure is *READ ONLY* and only EXEC can create it!} - - pMemHandlerData = ^tMemHandlerData; - tMemHandlerData = Record - memh_RequestSize, { Requested allocation size } - memh_RequestFlags, { Requested allocation flags } - memh_Flags : ULONG; { Flags (see below) } - end; - -const - MEMHF_RECYCLE = 1; { 0==First time, 1==recycle } - -{***** Low Memory handler return values **************************} - MEM_DID_NOTHING = 0; { Nothing we could do... } - MEM_ALL_DONE = -1; { We did all we could do } - MEM_TRY_AGAIN = 1; { We did some, try the allocation again } - - -type - pInterrupt = ^tInterrupt; - tInterrupt = record - is_Node : tNode; - is_Data : Pointer; { Server data segment } - is_Code : Pointer; { Server code entry } - end; - - pIntVector = ^tIntVector; - tIntVector = record { For EXEC use ONLY! } - iv_Data : Pointer; - iv_Code : Pointer; - iv_Node : pNode; - end; - - pSoftIntList = ^tSoftIntList; - tSoftIntList = record { For EXEC use ONLY! } - sh_List : tList; - sh_Pad : Word; - end; - -const - SIH_PRIMASK = $F0; - -{ this is a fake INT definition, used only for AddIntServer and the like } - - INTB_NMI = 15; - INTF_NMI = $0080; - -{ - Every Amiga Task has one of these Task structures associated with it. - To find yours, use FindTask(Nil). AmigaDOS processes tack a few more - values on to the end of this structure, which is the difference between - Tasks and Processes. -} - -type - - pTask = ^tTask; - tTask = record - tc_Node : tNode; - tc_Flags : Byte; - tc_State : Byte; - tc_IDNestCnt : Shortint; { intr disabled nesting } - tc_TDNestCnt : Shortint; { task disabled nesting } - tc_SigAlloc : ULONG; { sigs allocated } - tc_SigWait : ULONG; { sigs we are waiting for } - tc_SigRecvd : ULONG; { sigs we have received } - tc_SigExcept : ULONG; { sigs we will take excepts for } - tc_TrapAlloc : Word; { traps allocated } - tc_TrapAble : Word; { traps enabled } - tc_ExceptData : Pointer; { points to except data } - tc_ExceptCode : Pointer; { points to except code } - tc_TrapData : Pointer; { points to trap data } - tc_TrapCode : Pointer; { points to trap code } - tc_SPReg : Pointer; { stack pointer } - tc_SPLower : Pointer; { stack lower bound } - tc_SPUpper : Pointer; { stack upper bound + 2 } - tc_Switch : Pointer; { task losing CPU } - tc_Launch : Pointer; { task getting CPU } - tc_MemEntry : tList; { allocated memory } - tc_UserData : Pointer; { per task data } - end; - -{ - * Stack swap structure as passed to StackSwap() - } - pStackSwapStruct = ^tStackSwapStruct; - tStackSwapStruct = Record - stk_Lower : Pointer; { Lowest byte of stack } - stk_Upper : ULONG; { Upper end of stack (size + Lowest) } - stk_Pointer : Pointer; { Stack pointer at switch point } - end; - - - -{----- Flag Bits ------------------------------------------} - -const - - TB_PROCTIME = 0; - TB_ETASK = 3; - TB_STACKCHK = 4; - TB_EXCEPT = 5; - TB_SWITCH = 6; - TB_LAUNCH = 7; - - TF_PROCTIME = 1; - TF_ETASK = 8; - TF_STACKCHK = 16; - TF_EXCEPT = 32; - TF_SWITCH = 64; - TF_LAUNCH = 128; - -{----- Task States ----------------------------------------} - - TS_INVALID = 0; - TS_ADDED = 1; - TS_RUN = 2; - TS_READY = 3; - TS_WAIT = 4; - TS_EXCEPT = 5; - TS_REMOVED = 6; - -{----- Predefined Signals -------------------------------------} - - SIGB_ABORT = 0; - SIGB_CHILD = 1; - SIGB_BLIT = 4; - SIGB_SINGLE = 4; - SIGB_INTUITION = 5; - SIGB_DOS = 8; - - SIGF_ABORT = 1; - SIGF_CHILD = 2; - SIGF_BLIT = 16; - SIGF_SINGLE = 16; - SIGF_INTUITION = 32; - SIGF_DOS = 256; - - - -{ - This file defines ports and messages, which are used for inter- - task communications using the routines defined toward the - bottom of this file. -} - -type - -{****** MsgPort *****************************************************} - - pMsgPort = ^tMsgPort; - tMsgPort = record - mp_Node : tNode; - mp_Flags : Byte; - mp_SigBit : Byte; { signal bit number } - mp_SigTask : Pointer; { task to be signalled (TaskPtr) } - mp_MsgList : tList; { message linked list } - end; - -{****** Message *****************************************************} - - pMessage = ^tMessage; - tMessage = record - mn_Node : tNode; - mn_ReplyPort : pMsgPort; { message reply port } - mn_Length : Word; { message len in bytes } - end; - - - -{ mp_Flags: Port arrival actions (PutMsg) } - -CONST - - PF_ACTION = 3; { * Mask * } - PA_SIGNAL = 0; { * Signal task in mp_SigTask * } - PA_SOFTINT = 1; { * Signal SoftInt in mp_SoftInt/mp_SigTask * } - PA_IGNORE = 2; { * Ignore arrival * } - - - { Semaphore } -type - pSemaphore = ^tSemaphore; - tSemaphore = record - sm_MsgPort : tMsgPort; - sm_Bids : Integer; - end; - -{ This is the structure used to request a signal semaphore } - - pSemaphoreRequest = ^tSemaphoreRequest; - tSemaphoreRequest = record - sr_Link : tMinNode; - sr_Waiter : pTask; - end; - -{ The actual semaphore itself } - - pSignalSemaphore = ^tSignalSemaphore; - tSignalSemaphore = record - ss_Link : tNode; - ss_NestCount : Integer; - ss_WaitQueue : tMinList; - ss_MultipleLink : tSemaphoreRequest; - ss_Owner : pTask; - ss_QueueCount : Integer; - end; - - -{ ***** Semaphore procure message (for use in V39 Procure/Vacate *** } - - - pSemaphoreMessage = ^tSemaphoreMessage; - tSemaphoreMessage = Record - ssm_Message : tMessage; - ssm_Semaphore : pSignalSemaphore; - end; - -const - SM_SHARED = 1; - SM_EXCLUSIVE = 0; - - -CONST - -{ ------ Special Constants --------------------------------------- } - LIB_VECTSIZE = 6; { Each library entry takes 6 bytes } - LIB_RESERVED = 4; { Exec reserves the first 4 vectors } - LIB_BASE = (-LIB_VECTSIZE); - LIB_USERDEF = (LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE)); - LIB_NONSTD = (LIB_USERDEF); - -{ ------ Standard Functions -------------------------------------- } - LIB_OPEN = -6; - LIB_CLOSE = -12; - LIB_EXPUNGE = -18; - LIB_EXTFUNC = -24; { for future expansion } - -TYPE - -{ ------ Library Base Structure ---------------------------------- } -{ Also used for Devices and some Resources } - - pLibrary = ^tLibrary; - tLibrary = record - lib_Node : tNode; - lib_Flags, - lib_pad : Byte; - lib_NegSize, { number of bytes before library } - lib_PosSize, { number of bytes after library } - lib_Version, { major } - lib_Revision : Word; { minor } - lib_IdString : STRPTR; { ASCII identification } - lib_Sum : ULONG; { the checksum itself } - lib_OpenCnt : Word; { number of current opens } - end; { * Warning: size is not a longword multiple ! * } - -CONST - -{ lib_Flags bit definitions (all others are system reserved) } - - LIBF_SUMMING = %00000001; { we are currently checksumming } - LIBF_CHANGED = %00000010; { we have just changed the lib } - LIBF_SUMUSED = %00000100; { set if we should bother to sum } - LIBF_DELEXP = %00001000; { delayed expunge } - -{ - This file defines the constants and types required to use - Amiga device IO routines, which are also defined here. -} - - -TYPE - -{***** Device *****************************************************} - pDevice = ^tDevice; - tDevice = record - dd_Library : tLibrary; - end; - -{***** Unit *******************************************************} - pUnit = ^tUnit; - tUnit = record - unit_MsgPort : tMsgPort; { queue for unprocessed messages } - { instance of msgport is recommended } - unit_flags, - unit_pad : Byte; - unit_OpenCnt : Word; { number of active opens } - end; - -Const - UNITF_ACTIVE = %00000001; - UNITF_INTASK = %00000010; - -type - - pIORequest = ^tIORequest; - tIORequest = record - io_Message : tMessage; - io_Device : pDevice; { device node pointer } - io_Unit : pUnit; { unit (driver private)} - io_Command : Word; { device command } - io_Flags : Byte; - io_Error : Shortint; { error or warning num } - end; - - pIOStdReq = ^tIOStdReq; - tIOStdReq = record - io_Message : tMessage; - io_Device : pDevice; { device node pointer } - io_Unit : pUnit; { unit (driver private)} - io_Command : Word; { device command } - io_Flags : Byte; - io_Error : Shortint; { error or warning num } - io_Actual : ULONG; { actual number of bytes transferred } - io_Length : ULONG; { requested number bytes transferred} - io_Data : Pointer; { points to data area } - io_Offset : ULONG; { offset for block structured devices } - end; - - -{ library vector offsets for device reserved vectors } - -const - DEV_BEGINIO = -30; - DEV_ABORTIO = -36; - -{ io_Flags defined bits } - - IOB_QUICK = 0; - IOF_QUICK = 1; - - 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; - - - - -{ Definition of the Exec library base structure (pointed to by location 4). -** Most fields are not to be viewed or modified by user programs. Use -** extreme caution. - } - -type - -pExecBase = ^tExecBase; -tExecBase = Record - LibNode : tLibrary; { Standard library node } - -{ ******* Static System Variables ******* } - - SoftVer : Word; { kickstart release number (obs.) } - LowMemChkSum : Integer; { checksum of 68000 trap vectors } - ChkBase : ULONG; { system base pointer complement } - ColdCapture, { coldstart soft capture vector } - CoolCapture, { coolstart soft capture vector } - WarmCapture, { warmstart soft capture vector } - SysStkUpper, { system stack base (upper bound) } - SysStkLower : Pointer; { top of system stack (lower bound) } - MaxLocMem : ULONG; { top of chip memory } - DebugEntry, { global debugger entry point } - DebugData, { global debugger data segment } - AlertData, { alert data segment } - MaxExtMem : Pointer; { top of extended mem, or null if none } - - ChkSum : Word; { for all of the above (minus 2) } - -{ ***** Interrupt Related ************************************** } - - IntVects : Array[0..15] of tIntVector; - -{ ***** Dynamic System Variables ************************************ } - - ThisTask : pTask; { pointer to current task (readable) } - - IdleCount, { idle counter } - DispCount : ULONG; { dispatch counter } - Quantum, { time slice quantum } - Elapsed, { current quantum ticks } - SysFlags : Word; { misc internal system flags } - IDNestCnt, { interrupt disable nesting count } - TDNestCnt : Shortint; { task disable nesting count } - - AttnFlags, { special attention flags (readable) } - AttnResched : Word; { rescheduling attention } - ResModules, { resident module array pointer } - TaskTrapCode, - TaskExceptCode, - TaskExitCode : Pointer; - TaskSigAlloc : ULONG; - TaskTrapAlloc: Word; - - -{ ***** System Lists (private!) ******************************* } - - MemList, - ResourceList, - DeviceList, - IntrList, - LibList, - PortList, - TaskReady, - TaskWait : tList; - - SoftInts : Array[0..4] of tSoftIntList; - -{ ***** Other Globals ****************************************** } - - LastAlert : Array[0..3] of LONG; - - { these next two variables are provided to allow - ** system developers to have a rough idea of the - ** period of two externally controlled signals -- - ** the time between vertical blank interrupts and the - ** external line rate (which is counted by CIA A's - ** "time of day" clock). In general these values - ** will be 50 or 60, and may or may not track each - ** other. These values replace the obsolete AFB_PAL - ** and AFB_50HZ flags. - } - - VBlankFrequency, { (readable) } - PowerSupplyFrequency : Byte; { (readable) } - - SemaphoreList : tList; - - { these next two are to be able to kickstart into user ram. - ** KickMemPtr holds a singly linked list of MemLists which - ** will be removed from the memory list via AllocAbs. If - ** all the AllocAbs's succeeded, then the KickTagPtr will - ** be added to the rom tag list. - } - - KickMemPtr, { ptr to queue of mem lists } - KickTagPtr, { ptr to rom tag queue } - KickCheckSum : Pointer; { checksum for mem and tags } - -{ ***** V36 Exec additions start here ************************************* } - - ex_Pad0 : Word; - ex_Reserved0 : ULONG; - ex_RamLibPrivate : Pointer; - - { The next ULONG contains the system "E" clock frequency, - ** expressed in Hertz. The E clock is used as a timebase for - ** the Amiga's 8520 I/O chips. (E is connected to "02"). - ** Typical values are 715909 for NTSC, or 709379 for PAL. - } - - ex_EClockFrequency, { (readable) } - ex_CacheControl, { Private to CacheControl calls } - ex_TaskID : ULONG; { Next available task ID } - - ex_Reserved1 : Array[0..4] of ULONG; - - ex_MMULock : Pointer; { private } - - ex_Reserved2 : Array[0..2] of ULONG; -{***** V39 Exec additions start here *************************************} - - { The following list and data element are used - * for V39 exec's low memory handler... - } - ex_MemHandlers : tMinList; { The handler list } - ex_MemHandler : Pointer; { Private! handler pointer } - ex_Reserved : Array[0..1] of Shortint; -end; - - -{ ***** Bit defines for AttnFlags (see above) ***************************** } - -{ Processors and Co-processors: } - -CONST - - AFB_68010 = 0; { also set for 68020 } - AFB_68020 = 1; { also set for 68030 } - AFB_68030 = 2; { also set for 68040 } - AFB_68040 = 3; - AFB_68881 = 4; { also set for 68882 } - AFB_68882 = 5; - AFB_FPU40 = 6; { Set if 68040 FPU } - - AFF_68010 = %00000001; - AFF_68020 = %00000010; - AFF_68030 = %00000100; - AFF_68040 = %00001000; - AFF_68881 = %00010000; - AFF_68882 = %00100000; - AFF_FPU40 = %01000000; - -{ AFB_RESERVED8 = %000100000000; } -{ AFB_RESERVED9 = %001000000000; } - - -{ ***** Selected flag definitions for Cache manipulation calls ********* } - - CACRF_EnableI = %0000000000000001; { Enable instruction cache } - CACRF_FreezeI = %0000000000000010; { Freeze instruction cache } - CACRF_ClearI = %0000000000001000; { Clear instruction cache } - CACRF_IBE = %0000000000010000; { Instruction burst enable } - CACRF_EnableD = %0000000100000000; { 68030 Enable data cache } - CACRF_FreezeD = %0000001000000000; { 68030 Freeze data cache } - CACRF_ClearD = %0000100000000000; { 68030 Clear data cache } - CACRF_DBE = %0001000000000000; { 68030 Data burst enable } - CACRF_WriteAllocate = %0010000000000000; { 68030 Write-Allocate mode - (must always be set!) } - CACRF_EnableE = 1073741824; { Master enable for external caches } - { External caches should track the } - { state of the internal caches } - { such that they do not cache anything } - { that the internal cache turned off } - { for. } - - CACRF_CopyBack = $80000000; { Master enable for copyback caches } - - DMA_Continue = 2; { Continuation flag for CachePreDMA } - DMA_NoModify = 4; { Set if DMA does not update memory } - DMA_ReadFromRAM = 8; { Set if DMA goes *FROM* RAM to device } - +{$I exec.inc} procedure AbortIO(io : pIORequest); procedure AddDevice(device : pDevice); @@ -1163,7 +109,7 @@ procedure FreePooled( poolheader, memory: Pointer; procedure FreeSignal(signalNum : Longint); procedure FreeTrap(signalNum : ULONG); procedure FreeVec( memory : Pointer ); -function GetCC : Word; +function GetCC : ULONG; function GetMsg(port : pMsgPort): pMessage; procedure InitCode(startClass, version : ULONG); procedure InitResident(resident : pResident; @@ -1255,13 +201,15 @@ IMPLEMENTATION {* Exec support functions from amiga.lib *} -procedure BeginIO (ioRequest: pIORequest); Assembler; -asm - move.l a6,-(a7) - move.l ioRequest,a1 ; get IO Request - move.l 20(a1),a6 ; extract Device ptr - jsr -30(a6) ; call BEGINIO directly - move.l (a7)+,a6 +procedure BeginIO (ioRequest: pIORequest); +begin + asm + move.l a6,-(a7) + move.l ioRequest,a1 ; get IO Request + move.l 20(a1),a6 ; extract Device ptr + jsr -30(a6) ; call BEGINIO directly + move.l (a7)+,a6 + end; end; function CreateExtIO (port: pMsgPort; size: Longint): pIORequest; @@ -1406,1171 +354,1453 @@ end; -procedure AbortIO(io : pIORequest); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -480(A6) - MOVE.L (A7)+,A6 +procedure AbortIO(io : pIORequest); +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -480(A6) + MOVE.L (A7)+,A6 + end; end; -procedure AddDevice(device : pDevice); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L device,a1 - JSR -432(A6) - MOVE.L (A7)+,A6 +procedure AddDevice(device : pDevice); +begin + asm + MOVE.L A6,-(A7) + MOVE.L device,a1 + MOVE.L _ExecBase,A6 + JSR -432(A6) + MOVE.L (A7)+,A6 + end; end; procedure AddHead(list : pList; - node : pNode); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - MOVE.L node,a1 - JSR -240(A6) - MOVE.L (A7)+,A6 + node : pNode); +begin + asm + MOVE.L A6,-(A7) + MOVE.L list,a0 + MOVE.L node,a1 + MOVE.L _ExecBase,A6 + JSR -240(A6) + MOVE.L (A7)+,A6 + end; end; procedure AddIntServer(intNum : ULONG; - Int : pInterrupt); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L intNum,d0 - MOVE.L Int,a1 - JSR -168(A6) - MOVE.L (A7)+,A6 + Int : pInterrupt); +begin + asm + MOVE.L A6,-(A7) + MOVE.L intNum,d0 + MOVE.L Int,a1 + MOVE.L _ExecBase,A6 + JSR -168(A6) + MOVE.L (A7)+,A6 + end; end; -procedure AddLibrary(lib : pLibrary); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - JSR -396(A6) - MOVE.L (A7)+,A6 +procedure AddLibrary(lib : pLibrary); +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L _ExecBase,A6 + JSR -396(A6) + MOVE.L (A7)+,A6 + end; end; -procedure AddMemHandler(memhand : pInterrupt); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L memhand,a1 - JSR -774(A6) - MOVE.L (A7)+,A6 +procedure AddMemHandler(memhand : pInterrupt); +begin + asm + MOVE.L A6,-(A7) + MOVE.L memhand,a1 + MOVE.L _ExecBase,A6 + JSR -774(A6) + MOVE.L (A7)+,A6 + end; end; procedure AddMemList(size, attr : ULONG; pri : Longint; base : Pointer; - name : STRPTR); Assembler; -asm - MOVEM.L d2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L size,d0 - MOVE.L attr,d1 - MOVE.L pri,d2 - MOVE.L base,a0 - MOVE.L name,a1 - JSR -618(A6) - MOVEM.L (A7)+,d2/a6 + name : STRPTR); +begin + asm + MOVEM.L d2/a6,-(A7) + MOVE.L size,d0 + MOVE.L attr,d1 + MOVE.L pri,d2 + MOVE.L base,a0 + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -618(A6) + MOVEM.L (A7)+,d2/a6 + end; end; -procedure AddPort(port : pMsgPort); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L port,a1 - JSR -354(A6) - MOVE.L (A7)+,A6 +procedure AddPort(port : pMsgPort); +begin + asm + MOVE.L A6,-(A7) + MOVE.L port,a1 + MOVE.L _ExecBase,A6 + JSR -354(A6) + MOVE.L (A7)+,A6 + end; end; -procedure AddResource(resource : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L resource,a1 - JSR -486(A6) - MOVE.L (A7)+,A6 +procedure AddResource(resource : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L resource,a1 + MOVE.L _ExecBase,A6 + JSR -486(A6) + MOVE.L (A7)+,A6 + end; end; -procedure AddSemaphore(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a1 - JSR -600(A6) - MOVE.L (A7)+,A6 +procedure AddSemaphore(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a1 + MOVE.L _ExecBase,A6 + JSR -600(A6) + MOVE.L (A7)+,A6 + end; end; procedure AddTail(list : pList; - node : pNode); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - MOVE.L node,a1 - JSR -246(A6) - MOVE.L (A7)+,A6 + node : pNode); +begin + asm + MOVE.L A6,-(A7) + MOVE.L list,a0 + MOVE.L node,a1 + MOVE.L _ExecBase,A6 + JSR -246(A6) + MOVE.L (A7)+,A6 + end; end; procedure AddTask(task : pTask; - initialPC, finalPC : Pointer); Assembler; -asm - MOVEM.L a2/a3/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L task,a1 - MOVE.L initialPC,a2 - MOVE.L finalPC,a3 - JSR -282(A6) - MOVEM.L (A7)+,a2/a3/a6 + initialPC, finalPC : Pointer); +begin + asm + MOVEM.L a2/a3/a6,-(A7) + MOVE.L task,a1 + MOVE.L initialPC,a2 + MOVE.L finalPC,a3 + MOVE.L _ExecBase,A6 + JSR -282(A6) + MOVEM.L (A7)+,a2/a3/a6 + end; end; procedure Alert(alertNum : ULONG; - parameters : Pointer); Assembler; -asm - MOVEM.L d7/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L alertNum,d7 - JSR -108(A6) - MOVEM.L (A7)+,d7/a6 + parameters : Pointer); +begin + asm + MOVEM.L d7/a6,-(A7) + MOVE.L alertNum,d7 + MOVE.L _ExecBase,A6 + JSR -108(A6) + MOVEM.L (A7)+,d7/a6 + end; end; function AllocAbs(bytesize : ULONG; - location : Pointer) : Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L bytesize,d0 - MOVE.L location,a1 - JSR -204(A6) - MOVE.L (A7)+,A6 + location : Pointer) : Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L bytesize,d0 + MOVE.L location,a1 + MOVE.L _ExecBase,A6 + JSR -204(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function Allocate(mem : pMemHeader; - bytesize : ULONG) : Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mem,a0 - MOVE.L bytesize,d0 - JSR -186(A6) - MOVE.L (A7)+,A6 + bytesize : ULONG) : Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L mem,a0 + MOVE.L bytesize,d0 + MOVE.L _ExecBase,A6 + JSR -186(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function AllocEntry(mem : pMemList) : pMemList; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mem,a0 - JSR -222(A6) - MOVE.L (A7)+,A6 +function AllocEntry(mem : pMemList) : pMemList; +begin + asm + MOVE.L A6,-(A7) + MOVE.L mem,a0 + MOVE.L _ExecBase,A6 + JSR -222(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function AllocMem(bytesize : ULONG; - reqs : ULONG) : Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L bytesize,d0 - MOVE.L reqs,d1 - JSR -198(A6) - MOVE.L (A7)+,A6 + reqs : ULONG) : Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L bytesize,d0 + MOVE.L reqs,d1 + MOVE.L _ExecBase,A6 + JSR -198(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function AllocPooled( pooleheader : Pointer; - memsize : ULONG ): Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L pooleheader,a0 - MOVE.L memsize,d0 - JSR -708(A6) - MOVE.L (A7)+,A6 + memsize : ULONG ): Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L pooleheader,a0 + MOVE.L memsize,d0 + MOVE.L _ExecBase,A6 + JSR -708(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function AllocSignal(signalNum : Longint) : Shortint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L signalNum,d0 - JSR -330(A6) - MOVE.L (A7)+,A6 +function AllocSignal(signalNum : Longint) : Shortint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L signalNum,d0 + MOVE.L _ExecBase,A6 + JSR -330(A6) + MOVE.L (A7)+,A6 + MOVE.B d0,@RESULT + end; end; -function AllocTrap(trapNum : Longint) : Longint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L trapNum,d0 - JSR -342(A6) - MOVE.L (A7)+,A6 +function AllocTrap(trapNum : Longint) : Longint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L trapNum,d0 + MOVE.L _ExecBase,A6 + JSR -342(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function AllocVec( size, reqm : ULONG ): Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L size,d0 - MOVE.L reqm,d1 - JSR -684(A6) - MOVE.L (A7)+,A6 +function AllocVec( size, reqm : ULONG ): Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L size,d0 + MOVE.L reqm,d1 + MOVE.L _ExecBase,A6 + JSR -684(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function AttemptSemaphore(sigsem : pSignalSemaphore) : Boolean; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -576(A6) - MOVE.L (A7)+,A6 - TST.L d0 - SNE d0 - NEG.B d0 +function AttemptSemaphore(sigsem : pSignalSemaphore) : Boolean; +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -576(A6) + MOVE.L (A7)+,A6 + TST.W D0 + BEQ.B @end + MOVEQ #1,D0 + @end: MOVE.B D0,@RESULT + end; end; -function AttemptSemaphoreShared(sigsem : pSignalSemaphore): ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -720(A6) - MOVE.L (A7)+,A6 +function AttemptSemaphoreShared(sigsem : pSignalSemaphore): ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -720(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function AvailMem(attr : ULONG) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L attr,d1 - JSR -216(A6) - MOVE.L (A7)+,A6 +function AvailMem(attr : ULONG) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L attr,d1 + MOVE.L _ExecBase,A6 + JSR -216(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; procedure CacheClearE( cxa : Pointer; - lenght, caches : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L cxa,a0 - MOVE.L lenght,d0 - MOVE.L caches,d1 - JSR -642(A6) - MOVE.L (A7)+,A6 + lenght, caches : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L cxa,a0 + MOVE.L lenght,d0 + MOVE.L caches,d1 + MOVE.L _ExecBase,A6 + JSR -642(A6) + MOVE.L (A7)+,A6 + end; end; -procedure CacheClearU; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -636(A6) - MOVE.L (A7)+,A6 +procedure CacheClearU; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -636(A6) + MOVE.L (A7)+,A6 + end; end; -function CacheControl( cachebits, cachemask: ULONG ): ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L cachebits,d0 - MOVE.L cachemask,d1 - JSR -648(A6) - MOVE.L (A7)+,A6 +function CacheControl( cachebits, cachemask: ULONG ): ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L cachebits,d0 + MOVE.L cachemask,d1 + MOVE.L _ExecBase,A6 + JSR -648(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; procedure CachePostDMA(vaddress, length_IntPtr : Pointer; - flags : ULONG ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L vaddress,a0 - MOVE.L length_IntPtr,a1 - MOVE.L flags,d0 - JSR -768(A6) - MOVE.L (A7)+,A6 + flags : ULONG ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L vaddress,a0 + MOVE.L length_IntPtr,a1 + MOVE.L flags,d0 + MOVE.L _ExecBase,A6 + JSR -768(A6) + MOVE.L (A7)+,A6 + end; end; function CachePreDMA(vaddress, length_intPtr : Pointer; - flags : ULONG): Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L vaddress,a0 - MOVE.L length_intPtr,a1 - MOVE.L flags,d0 - JSR -762(A6) - MOVE.L (A7)+,A6 + flags : ULONG): Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L vaddress,a0 + MOVE.L length_intPtr,a1 + MOVE.L flags,d0 + MOVE.L _ExecBase,A6 + JSR -762(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure Cause(Int : pInterrupt); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L Int,a1 - JSR -180(A6) - MOVE.L (A7)+,A6 +procedure Cause(Int : pInterrupt); +begin + asm + MOVE.L A6,-(A7) + MOVE.L Int,a1 + MOVE.L _ExecBase,A6 + JSR -180(A6) + MOVE.L (A7)+,A6 + end; end; -function CheckIO(io : pIORequest) : pIORequest; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -468(A6) - MOVE.L (A7)+,A6 +function CheckIO(io : pIORequest) : pIORequest; +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -468(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure ChildFree( tid : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L tid,d0 - JSR -738(A6) - MOVE.L (A7)+,A6 +procedure ChildFree( tid : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L tid,d0 + MOVE.L _ExecBase,A6 + JSR -738(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ChildOrphan( tid : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L tid,d0 - JSR -744(A6) - MOVE.L (A7)+,A6 +procedure ChildOrphan( tid : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L tid,d0 + MOVE.L _ExecBase,A6 + JSR -744(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ChildStatus( tid : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L tid,d0 - JSR -750(A6) - MOVE.L (A7)+,A6 +procedure ChildStatus( tid : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L tid,d0 + MOVE.L _ExecBase,A6 + JSR -750(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ChildWait( tid : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L tid,d0 - JSR -756(A6) - MOVE.L (A7)+,A6 +procedure ChildWait( tid : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L tid,d0 + MOVE.L _ExecBase,A6 + JSR -756(A6) + MOVE.L (A7)+,A6 + end; end; -procedure CloseDevice(io : pIORequest); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -450(A6) - MOVE.L (A7)+,A6 +procedure CloseDevice(io : pIORequest); +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -450(A6) + MOVE.L (A7)+,A6 + end; end; -procedure CloseLibrary(lib : pLibrary); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - JSR -414(A6) - MOVE.L (A7)+,A6 +procedure CloseLibrary(lib : pLibrary); +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L _ExecBase,A6 + JSR -414(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ColdReboot; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -726(A6) - MOVE.L (A7)+,A6 +procedure ColdReboot; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -726(A6) + MOVE.L (A7)+,A6 + end; end; procedure CopyMem(source, dest : Pointer; - size : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L source,a0 - MOVE.L dest,a1 - MOVE.L size,d0 - JSR -624(A6) - MOVE.L (A7)+,A6 + size : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L source,a0 + MOVE.L dest,a1 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -624(A6) + MOVE.L (A7)+,A6 + end; end; procedure CopyMemQuick(source, dest : Pointer; - size : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L source,a0 - MOVE.L dest,a1 - MOVE.L size,d0 - JSR -630(A6) - MOVE.L (A7)+,A6 + size : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L source,a0 + MOVE.L dest,a1 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -630(A6) + MOVE.L (A7)+,A6 + end; end; function CreateIORequest( mp : pMsgPort; - size : ULONG ): pIORequest; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mp,a0 - MOVE.L size,d0 - JSR -654(A6) - MOVE.L (A7)+,A6 + size : ULONG ): pIORequest; +begin + asm + MOVE.L A6,-(A7) + MOVE.L mp,a0 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -654(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function CreateMsgPort: pMsgPort; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -666(A6) - MOVE.L (A7)+,A6 +function CreateMsgPort: pMsgPort; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -666(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function CreatePool( requrements,puddlesize, - puddletresh : ULONG ): Pointer; Assembler; -asm - MOVEM.L d2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L requrements,d0 - MOVE.L puddlesize,d1 - MOVE.L puddletresh,d2 - JSR -696(A6) - MOVEM.L (A7)+,d2/a6 + puddletresh : ULONG ): Pointer; +begin + asm + MOVEM.L d2/a6,-(A7) + MOVE.L requrements,d0 + MOVE.L puddlesize,d1 + MOVE.L puddletresh,d2 + MOVE.L _ExecBase,A6 + JSR -696(A6) + MOVEM.L (A7)+,d2/a6 + MOVE.L d0,@RESULT + end; end; procedure Deallocate(header : pMemHeader; block : Pointer; - size : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L header,a0 - MOVE.L block,a1 - MOVE.L size,d0 - JSR -192(A6) - MOVE.L (A7)+,A6 + size : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L header,a0 + MOVE.L block,a1 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -192(A6) + MOVE.L (A7)+,A6 + end; end; -procedure Debug(Param : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L Param,d0 - JSR -114(A6) - MOVE.L (A7)+,A6 +procedure Debug(Param : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L Param,d0 + MOVE.L _ExecBase,A6 + JSR -114(A6) + MOVE.L (A7)+,A6 + end; end; -procedure DeleteIORequest( iorq : Pointer ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L iorq,a0 - JSR -660(A6) - MOVE.L (A7)+,A6 +procedure DeleteIORequest( iorq : Pointer ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L iorq,a0 + MOVE.L _ExecBase,A6 + JSR -660(A6) + MOVE.L (A7)+,A6 + end; end; -procedure DeleteMsgPort( mp : pMsgPort ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mp,a0 - JSR -672(A6) - MOVE.L (A7)+,A6 +procedure DeleteMsgPort( mp : pMsgPort ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L mp,a0 + MOVE.L _ExecBase,A6 + JSR -672(A6) + MOVE.L (A7)+,A6 + end; end; -procedure DeletePool( poolheader : Pointer ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L poolheader,a0 - JSR -702(A6) - MOVE.L (A7)+,A6 +procedure DeletePool( poolheader : Pointer ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L poolheader,a0 + MOVE.L _ExecBase,A6 + JSR -702(A6) + MOVE.L (A7)+,A6 + end; end; -procedure Disable; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -120(A6) - MOVE.L (A7)+,A6 +procedure Disable; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -120(A6) + MOVE.L (A7)+,A6 + end; end; -function DoIO(io : pIORequest) : Shortint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -456(A6) - MOVE.L (A7)+,A6 +function DoIO(io : pIORequest) : Shortint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -456(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure Enable; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -126(A6) - MOVE.L (A7)+,A6 +procedure Enable; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -126(A6) + MOVE.L (A7)+,A6 + end; end; procedure Enqueue(list : pList; - node : pNode); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - MOVE.L node,a1 - JSR -270(A6) - MOVE.L (A7)+,A6 + node : pNode); +begin + asm + MOVE.L A6,-(A7) + MOVE.L list,a0 + MOVE.L node,a1 + MOVE.L _ExecBase,A6 + JSR -270(A6) + MOVE.L (A7)+,A6 + end; end; function FindName(start : pList; - name : STRPTR) : pNode; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L start,a0 - MOVE.L name,a1 - JSR -276(A6) - MOVE.L (A7)+,A6 + name : STRPTR) : pNode; +begin + asm + MOVE.L A6,-(A7) + MOVE.L start,a0 + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -276(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function FindPort(name : STRPTR): pMsgPort; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L name,a1 - JSR -390(A6) - MOVE.L (A7)+,A6 +function FindPort(name : STRPTR): pMsgPort; +begin + asm + MOVE.L A6,-(A7) + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -390(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function FindResident(name : STRPTR) : pResident; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L name,a1 - JSR -96(A6) - MOVE.L (A7)+,A6 +function FindResident(name : STRPTR) : pResident; +begin + asm + MOVE.L A6,-(A7) + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -96(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function FindSemaphore(name : STRPTR) : pSignalSemaphore; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L name,a1 - JSR -594(A6) - MOVE.L (A7)+,A6 +function FindSemaphore(name : STRPTR) : pSignalSemaphore; +begin + asm + MOVE.L A6,-(A7) + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -594(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function FindTask(name : STRPTR) : pTask; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L name,a1 - JSR -294(A6) - MOVE.L (A7)+,A6 +function FindTask(name : STRPTR) : pTask; +begin + asm + MOVE.L A6,-(A7) + MOVE.L name,a1 + MOVE.L _ExecBase,A6 + JSR -294(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure Forbid; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -132(A6) - MOVE.L (A7)+,A6 +procedure Forbid; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -132(A6) + MOVE.L (A7)+,A6 + end; end; -procedure FreeEntry(memList : pMemList); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L memlist,a0 - JSR -228(A6) - MOVE.L (A7)+,A6 +procedure FreeEntry(memList : pMemList); +begin + asm + MOVE.L A6,-(A7) + MOVE.L memlist,a0 + MOVE.L _ExecBase,A6 + JSR -228(A6) + MOVE.L (A7)+,A6 + end; end; procedure ExecFreeMem(memBlock : Pointer; - size : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L memBlock,a1 - MOVE.L size,d0 - JSR -210(A6) - MOVE.L (A7)+,A6 + size : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L memBlock,a1 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -210(A6) + MOVE.L (A7)+,A6 + end; end; procedure FreePooled( poolheader, memory: Pointer; - memsize: ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L poolheader,a0 - MOVE.L memory,a1 - MOVE.L memsize,d0 - JSR -714(A6) - MOVE.L (A7)+,A6 + memsize: ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L poolheader,a0 + MOVE.L memory,a1 + MOVE.L memsize,d0 + MOVE.L _ExecBase,A6 + JSR -714(A6) + MOVE.L (A7)+,A6 + end; end; -procedure FreeSignal(signalNum : Longint); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L signalNum,d0 - JSR -336(A6) - MOVE.L (A7)+,A6 +procedure FreeSignal(signalNum : Longint); +begin + asm + MOVE.L A6,-(A7) + MOVE.L signalNum,d0 + MOVE.L _ExecBase,A6 + JSR -336(A6) + MOVE.L (A7)+,A6 + end; end; -procedure FreeTrap(signalNum : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L signalNum,d0 - JSR -348(A6) - MOVE.L (A7)+,A6 +procedure FreeTrap(signalNum : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L signalNum,d0 + MOVE.L _ExecBase,A6 + JSR -348(A6) + MOVE.L (A7)+,A6 + end; end; -procedure FreeVec( memory : Pointer ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L memory,a1 - JSR -690(A6) - MOVE.L (A7)+,A6 +procedure FreeVec( memory : Pointer ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L memory,a1 + MOVE.L _ExecBase,A6 + JSR -690(A6) + MOVE.L (A7)+,A6 + end; end; -function GetCC : Word; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -528(A6) - MOVE.L (A7)+,A6 +function GetCC : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -528(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function GetMsg(port : pMsgPort): pMessage; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L port,a0 - JSR -372(A6) - MOVE.L (A7)+,A6 +function GetMsg(port : pMsgPort): pMessage; +begin + asm + MOVE.L A6,-(A7) + MOVE.L port,a0 + MOVE.L _ExecBase,A6 + JSR -372(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure InitCode(startClass, version : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L startClass,d0 - MOVE.L version,d1 - JSR -72(A6) - MOVE.L (A7)+,A6 +procedure InitCode(startClass, version : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L startClass,d0 + MOVE.L version,d1 + MOVE.L _ExecBase,A6 + JSR -72(A6) + MOVE.L (A7)+,A6 + end; end; procedure InitResident(resident : pResident; - segList : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L resident,a1 - MOVE.L seglist,d1 - JSR -102(A6) - MOVE.L (A7)+,A6 + segList : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L resident,a1 + MOVE.L seglist,d1 + MOVE.L _ExecBase,A6 + JSR -102(A6) + MOVE.L (A7)+,A6 + end; end; -procedure InitSemaphore(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -558(A6) - MOVE.L (A7)+,A6 +procedure InitSemaphore(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -558(A6) + MOVE.L (A7)+,A6 + end; end; procedure InitStruct(table, memory : Pointer; - size : ULONG); Assembler; -asm - MOVEM.L a2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L table,a1 - MOVE.L memory,a2 - MOVE.L size,d0 - JSR -78(A6) - MOVEM.L (A7)+,a2/a6 + size : ULONG); +begin + asm + MOVEM.L a2/a6,-(A7) + MOVE.L table,a1 + MOVE.L memory,a2 + MOVE.L size,d0 + MOVE.L _ExecBase,A6 + JSR -78(A6) + MOVEM.L (A7)+,a2/a6 + end; end; procedure Insert(list : pList; - node, listNode : pNode); Assembler; -asm - MOVEM.L a2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - MOVE.L node,a1 - MOVE.L listNode,a2 - JSR -234(A6) - MOVEM.L (A7)+,a2/a6 + node, listNode : pNode); +begin + asm + MOVEM.L a2/a6,-(A7) + MOVE.L list,a0 + MOVE.L node,a1 + MOVE.L listNode,a2 + MOVE.L _ExecBase,A6 + JSR -234(A6) + MOVEM.L (A7)+,a2/a6 + end; end; procedure MakeFunctions(target, functionarray : Pointer ; - dispbase : ULONG); Assembler; -asm - MOVEM.L a2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L target,a0 - MOVE.L functionarray,a1 - MOVE.L dispbase,a2 - JSR -90(A6) - MOVEM.L (A7)+,a2/a6 + dispbase : ULONG); +begin + asm + MOVEM.L a2/a6,-(A7) + MOVE.L target,a0 + MOVE.L functionarray,a1 + MOVE.L dispbase,a2 + MOVE.L _ExecBase,A6 + JSR -90(A6) + MOVEM.L (A7)+,a2/a6 + end; end; function MakeLibrary(vec, struct, init : Pointer; dSize : ULONG ; - segList : Pointer) : pLibrary; Assembler; -asm - MOVEM.L a2/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L vec,a0 - MOVE.L struct,a1 - MOVE.L init,a2 - MOVE.L dSize,d0 - MOVE.L seglist,d1 - JSR -84(A6) - MOVEM.L (A7)+,a2/a6 + segList : Pointer) : pLibrary; +begin + asm + MOVEM.L a2/a6,-(A7) + MOVE.L vec,a0 + MOVE.L struct,a1 + MOVE.L init,a2 + MOVE.L dSize,d0 + MOVE.L seglist,d1 + MOVE.L _ExecBase,A6 + JSR -84(A6) + MOVEM.L (A7)+,a2/a6 + MOVE.L d0,@RESULT + end; end; -function ObtainQuickVector(interruptCode : Pointer) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L interruptCode,a0 - JSR -786(A6) - MOVE.L (A7)+,A6 +function ObtainQuickVector(interruptCode : Pointer) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L interruptCode,a0 + MOVE.L _ExecBase,A6 + JSR -786(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure ObtainSemaphore(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -564(A6) - MOVE.L (A7)+,A6 +procedure ObtainSemaphore(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -564(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ObtainSemaphoreList(semlist : pList); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L semlist,a0 - JSR -582(A6) - MOVE.L (A7)+,A6 +procedure ObtainSemaphoreList(semlist : pList); +begin + asm + MOVE.L A6,-(A7) + MOVE.L semlist,a0 + MOVE.L _ExecBase,A6 + JSR -582(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ObtainSemaphoreShared(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -678(A6) - MOVE.L (A7)+,A6 +procedure ObtainSemaphoreShared(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -678(A6) + MOVE.L (A7)+,A6 + end; end; -function OldOpenLibrary(lib : STRPTR): pLibrary; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - JSR -408(A6) - MOVE.L (A7)+,A6 +function OldOpenLibrary(lib : STRPTR): pLibrary; +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L _ExecBase,A6 + JSR -408(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function OpenDevice(devName : STRPTR; unitNumber : ULONG; - io : pIORequest; flags : ULONG) : Shortint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L devName,a0 - MOVE.L unitNumber,d0 - MOVE.L io,a1 - MOVE.L flags,d1 - JSR -444(A6) - MOVE.L (A7)+,A6 + io : pIORequest; flags : ULONG) : Shortint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L devName,a0 + MOVE.L unitNumber,d0 + MOVE.L io,a1 + MOVE.L flags,d1 + MOVE.L _ExecBase,A6 + JSR -444(A6) + MOVE.L (A7)+,A6 + MOVE.B d0,@RESULT + end; end; function OpenLibrary(libName : STRPTR; - version : Integer) : pLibrary; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L libName,a1 - MOVE.L version,d0 - JSR -552(A6) - MOVE.L (A7)+,A6 + version : Integer) : pLibrary; +begin + asm + MOVE.L A6,-(A7) + MOVE.L libName,a1 + MOVE.L version,d0 + MOVE.L _ExecBase,A6 + JSR -552(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function OpenResource(resname : STRPTR): Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L resname,a1 - JSR -498(A6) - MOVE.L (A7)+,A6 +function OpenResource(resname : STRPTR): Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L resname,a1 + MOVE.L _ExecBase,A6 + JSR -498(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure Permit; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -138(A6) - MOVE.L (A7)+,A6 +procedure Permit; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -138(A6) + MOVE.L (A7)+,A6 + end; end; function Procure(sem : pSemaphore; - bid : pMessage) : Boolean; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sem,a0 - MOVE.L bid,a1 - JSR -540(A6) - MOVE.L (A7)+,A6 - TST.L d0 - SNE d0 - NEG.B d0 + bid : pMessage) : Boolean; +begin + asm + MOVE.L A6,-(A7) + MOVE.L sem,a0 + MOVE.L bid,a1 + MOVE.L _ExecBase,A6 + JSR -540(A6) + MOVE.L (A7)+,A6 + TST.W D0 + BEQ.B @end + MOVEQ #1,D0 + @end: MOVE.B D0,@RESULT + end; end; procedure PutMsg(port : pMsgPort; - mess : pMessage); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L port,a0 - MOVE.L mess,a1 - JSR -366(A6) - MOVE.L (A7)+,A6 + mess : pMessage); +begin + asm + MOVE.L A6,-(A7) + MOVE.L port,a0 + MOVE.L mess,a1 + MOVE.L _ExecBase,A6 + JSR -366(A6) + MOVE.L (A7)+,A6 + end; end; procedure RawDoFmt(Form : STRPTR; - data, putChProc, putChData : Pointer); Assembler; -asm - MOVEM.L a2/a3/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L Form,a0 - MOVE.L data,a1 - MOVE.L putChProc,a2 - MOVE.L putChData,a3 - JSR -522(A6) - MOVEM.L (A7)+,a2/a3/a6 + data, putChProc, putChData : Pointer); +begin + asm + MOVEM.L a2/a3/a6,-(A7) + MOVE.L Form,a0 + MOVE.L data,a1 + MOVE.L putChProc,a2 + MOVE.L putChData,a3 + MOVE.L _ExecBase,A6 + JSR -522(A6) + MOVEM.L (A7)+,a2/a3/a6 + end; end; -procedure ReleaseSemaphore(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - JSR -570(A6) - MOVE.L (A7)+,A6 +procedure ReleaseSemaphore(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L _ExecBase,A6 + JSR -570(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ReleaseSemaphoreList(siglist : pList); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L siglist,a0 - JSR -588(A6) - MOVE.L (A7)+,A6 +procedure ReleaseSemaphoreList(siglist : pList); +begin + asm + MOVE.L A6,-(A7) + MOVE.L siglist,a0 + MOVE.L _ExecBase,A6 + JSR -588(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemDevice(device : pDevice); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L device,a1 - JSR -438(A6) - MOVE.L (A7)+,A6 +procedure RemDevice(device : pDevice); +begin + asm + MOVE.L A6,-(A7) + MOVE.L device,a1 + MOVE.L _ExecBase,A6 + JSR -438(A6) + MOVE.L (A7)+,A6 + end; end; -function RemHead(list : pList) : pNode; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - JSR -258(A6) - MOVE.L (A7)+,A6 +function RemHead(list : pList) : pNode; +begin + asm + MOVE.L A6,-(A7) + MOVE.L list,a0 + MOVE.L _ExecBase,A6 + JSR -258(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; procedure RemIntServer(intNum : Longint; - Int : pInterrupt); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L intNum,d0 - MOVE.L Int,a1 - JSR -174(A6) - MOVE.L (A7)+,A6 + Int : pInterrupt); +begin + asm + MOVE.L A6,-(A7) + MOVE.L intNum,d0 + MOVE.L Int,a1 + MOVE.L _ExecBase,A6 + JSR -174(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemLibrary(lib : pLibrary); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - JSR -402(A6) - MOVE.L (A7)+,A6 +procedure RemLibrary(lib : pLibrary); +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L _ExecBase,A6 + JSR -402(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemMemHandler(memhand : pInterrupt); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L memhand,a1 - JSR -780(A6) - MOVE.L (A7)+,A6 +procedure RemMemHandler(memhand : pInterrupt); +begin + asm + MOVE.L A6,-(A7) + MOVE.L memhand,a1 + MOVE.L _ExecBase,A6 + JSR -780(A6) + MOVE.L (A7)+,A6 + end; end; -procedure Remove(node : pNode); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L node,a1 - JSR -252(A6) - MOVE.L (A7)+,A6 +procedure Remove(node : pNode); +begin + asm + MOVE.L A6,-(A7) + MOVE.L node,a1 + MOVE.L _ExecBase,A6 + JSR -252(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemPort(port : pMsgPort); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L port,a1 - JSR -360(A6) - MOVE.L (A7)+,A6 +procedure RemPort(port : pMsgPort); +begin + asm + MOVE.L A6,-(A7) + MOVE.L port,a1 + MOVE.L _ExecBase,A6 + JSR -360(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemResource(resname : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L resname,a1 - JSR -492(A6) - MOVE.L (A7)+,A6 +procedure RemResource(resname : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L resname,a1 + MOVE.L _ExecBase,A6 + JSR -492(A6) + MOVE.L (A7)+,A6 + end; end; -procedure RemSemaphore(sigsem : pSignalSemaphore); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a1 - JSR -606(A6) - MOVE.L (A7)+,A6 +procedure RemSemaphore(sigsem : pSignalSemaphore); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a1 + MOVE.L _ExecBase,A6 + JSR -606(A6) + MOVE.L (A7)+,A6 + end; end; -function RemTail(list : pList) : pNode; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L list,a0 - JSR -264(A6) - MOVE.L (A7)+,A6 +function RemTail(list : pList) : pNode; +begin + asm + MOVE.L A6,-(A7) + MOVE.L list,a0 + MOVE.L _ExecBase,A6 + JSR -264(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure RemTask(task : pTask); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L task,a1 - JSR -288(A6) - MOVE.L (A7)+,A6 +procedure RemTask(task : pTask); +begin + asm + MOVE.L A6,-(A7) + MOVE.L task,a1 + MOVE.L _ExecBase,A6 + JSR -288(A6) + MOVE.L (A7)+,A6 + end; end; -procedure ReplyMsg(mess : pMessage); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mess,a1 - JSR -378(A6) - MOVE.L (A7)+,A6 +procedure ReplyMsg(mess : pMessage); +begin + asm + MOVE.L A6,-(A7) + MOVE.L mess,a1 + MOVE.L _ExecBase,A6 + JSR -378(A6) + MOVE.L (A7)+,A6 + end; end; -procedure SendIO(io : pIORequest); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -462(A6) - MOVE.L (A7)+,A6 +procedure SendIO(io : pIORequest); +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -462(A6) + MOVE.L (A7)+,A6 + end; end; -function SetExcept(newSignals, signalMask : ULONG) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L newSignals,d0 - MOVE.L signalMask,d1 - JSR -312(A6) - MOVE.L (A7)+,A6 +function SetExcept(newSignals, signalMask : ULONG) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L newSignals,d0 + MOVE.L signalMask,d1 + MOVE.L _ExecBase,A6 + JSR -312(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function SetFunction(lib : pLibrary; funcOff : LONG; - funcEntry : Pointer) : Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - MOVE.L funcOff,a0 - MOVE.L funcEntry,d0 - JSR -420(A6) - MOVE.L (A7)+,A6 + funcEntry : Pointer) : Pointer; +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L funcOff,a0 + MOVE.L funcEntry,d0 + MOVE.L _ExecBase,A6 + JSR -420(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function SetIntVector(intNum : Longint; - Int : pInterrupt) : pInterrupt; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L intNum,d0 - MOVE.L Int,a1 - JSR -162(A6) - MOVE.L (A7)+,A6 + Int : pInterrupt) : pInterrupt; +begin + asm + MOVE.L A6,-(A7) + MOVE.L intNum,d0 + MOVE.L Int,a1 + MOVE.L _ExecBase,A6 + JSR -162(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function SetSignal(newSignals, signalMask : ULONG) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L newSignals,d0 - MOVE.L signalMask,d1 - JSR -306(A6) - MOVE.L (A7)+,A6 +function SetSignal(newSignals, signalMask : ULONG) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L newSignals,d0 + MOVE.L signalMask,d1 + MOVE.L _ExecBase,A6 + JSR -306(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function SetSR(newSR, mask : ULONG) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L newSR,d0 - MOVE.L mask,d1 - JSR -144(A6) - MOVE.L (A7)+,A6 +function SetSR(newSR, mask : ULONG) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L newSR,d0 + MOVE.L mask,d1 + MOVE.L _ExecBase,A6 + JSR -144(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; function SetTaskPri(task : pTask; - priority : Longint) : Shortint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L task,a1 - MOVE.L priority,d0 - JSR -300(A6) - MOVE.L (A7)+,A6 + priority : Longint) : Shortint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L task,a1 + MOVE.L priority,d0 + MOVE.L _ExecBase,A6 + JSR -300(A6) + MOVE.L (A7)+,A6 + MOVE.B d0,@RESULT + end; end; -procedure Signal(task : pTask; signals : ULONG); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L task,a1 - MOVE.L signals,d0 - JSR -324(A6) - MOVE.L (A7)+,A6 +procedure Signal(task : pTask; signals : ULONG); +begin + asm + MOVE.L A6,-(A7) + MOVE.L task,a1 + MOVE.L signals,d0 + MOVE.L _ExecBase,A6 + JSR -324(A6) + MOVE.L (A7)+,A6 + end; end; -procedure StackSwap( StackSwapRecord : Pointer ); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L StackSwapRecord,a0 - JSR -732(A6) - MOVE.L (A7)+,A6 +procedure StackSwap( StackSwapRecord : Pointer ); +begin + asm + MOVE.L A6,-(A7) + MOVE.L StackSwapRecord,a0 + MOVE.L _ExecBase,A6 + JSR -732(A6) + MOVE.L (A7)+,A6 + end; end; -procedure SumKickData; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -612(A6) - MOVE.L (A7)+,A6 +procedure SumKickData; +begin + asm + MOVE.L A6,-(A7) + MOVE.L _ExecBase,A6 + JSR -612(A6) + MOVE.L (A7)+,A6 + end; end; -procedure SumLibrary(lib : pLibrary); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L lib,a1 - JSR -426(A6) - MOVE.L (A7)+,A6 +procedure SumLibrary(lib : pLibrary); +begin + asm + MOVE.L A6,-(A7) + MOVE.L lib,a1 + MOVE.L _ExecBase,A6 + JSR -426(A6) + MOVE.L (A7)+,A6 + end; end; -function SuperState : Pointer; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - JSR -150(A6) - MOVE.L (A7)+,A6 +function SuperState : Pointer; +begin + asm + MOVE.L A6,-(A7) + JSR -150(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function Supervisor(thefunc : Pointer): ULONG; Assembler; -asm - MOVEM.L a5/a6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L thefunc,a5 - JSR -30(A6) - MOVEM.L (A7)+,a5/a6 +function Supervisor(thefunc : Pointer): ULONG; +begin + asm + MOVEM.L a5/a6,-(A7) + MOVE.L _ExecBase,A6 + MOVE.L thefunc,a5 + MOVE.L _ExecBase,A6 + JSR -30(A6) + MOVEM.L (A7)+,a5/a6 + MOVE.L d0,@RESULT + end; end; -function TypeOfMem(mem : Pointer) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L mem,a1 - JSR -534(A6) - MOVE.L (A7)+,A6 +function TypeOfMem(mem : Pointer) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L mem,a1 + MOVE.L _ExecBase,A6 + JSR -534(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -procedure UserState(s : Pointer); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L s,d0 - JSR -156(A6) - MOVE.L (A7)+,A6 +procedure UserState(s : Pointer); +begin + asm + MOVE.L A6,-(A7) + MOVE.L s,d0 + MOVE.L _ExecBase,A6 + JSR -156(A6) + MOVE.L (A7)+,A6 + end; end; procedure Vacate(sigsem : pSignalSemaphore; - bidMsg : pSemaphoreMessage); Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L sigsem,a0 - MOVE.L bidMsg,a1 - JSR -546(A6) - MOVE.L (A7)+,A6 + bidMsg : pSemaphoreMessage); +begin + asm + MOVE.L A6,-(A7) + MOVE.L sigsem,a0 + MOVE.L bidMsg,a1 + MOVE.L _ExecBase,A6 + JSR -546(A6) + MOVE.L (A7)+,A6 + end; end; -function Wait(signals : ULONG) : ULONG; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L signals,d0 - JSR -318(A6) - MOVE.L (A7)+,A6 +function Wait(signals : ULONG) : ULONG; +begin + asm + MOVE.L A6,-(A7) + MOVE.L signals,d0 + MOVE.L _ExecBase,A6 + JSR -318(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; -function WaitIO(io : pIORequest) : Shortint; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L io,a1 - JSR -474(A6) - MOVE.L (A7)+,A6 +function WaitIO(io : pIORequest) : Shortint; +begin + asm + MOVE.L A6,-(A7) + MOVE.L io,a1 + MOVE.L _ExecBase,A6 + JSR -474(A6) + MOVE.L (A7)+,A6 + MOVE.B d0,@RESULT + end; end; -function WaitPort(port : pMsgPort): pMessage; Assembler; -asm - MOVE.L A6,-(A7) - MOVE.L _ExecBase,A6 - MOVE.L port,a0 - JSR -384(A6) - MOVE.L (A7)+,A6 +function WaitPort(port : pMsgPort): pMessage; +begin + asm + MOVE.L A6,-(A7) + MOVE.L port,a0 + MOVE.L _ExecBase,A6 + JSR -384(A6) + MOVE.L (A7)+,A6 + MOVE.L d0,@RESULT + end; end; @@ -2580,8 +1810,11 @@ end. { $Log$ - Revision 1.1 1998-03-25 11:18:47 root - Initial revision + Revision 1.2 1998-07-09 17:39:40 carl + * several bugfixes by Nils Sjoholm + + Revision 1.1.1.1 1998/03/25 11:18:47 root + * Restored version Revision 1.3 1998/01/26 12:02:42 michael + Added log at the end