home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-3.DMS / in.adf / Units / Exec.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  34.5 KB  |  2,013 lines

  1. unit Exec;
  2.  
  3. INTERFACE
  4. type
  5.     pshortint = ^shortint;
  6.     ppshortint = ^pshortint;
  7.     pppshortint = ^ppshortint;
  8.     pbyte = ^byte;
  9.     ppbyte = ^pbyte;
  10.     pppbyte = ^ppbyte;
  11.     pinteger = ^integer;
  12.     ppinteger = ^pinteger;
  13.     pword = ^word;
  14.     plongint = ^longint;
  15.     pplongint = ^plongint;
  16.     long = longint;
  17.     plong = ^longint;
  18.     ppointer = ^pointer;
  19.     STRPTR = ^byte;
  20.  
  21.     pNode = ^tNode;
  22.     tNode = record
  23.         ln_Succ: pNode;
  24.         ln_Pred: pNode;
  25.         ln_Type: byte;
  26.         ln_Pri: shortint;
  27.         ln_Name: pbyte;
  28.         end;
  29.  
  30.     pMsgPort = ^tMsgPort;
  31.     pMessage = ^tMessage;
  32.     tMessage = record
  33.         mn_Node: tNode;
  34.         mn_ReplyPort: pMsgPort;
  35.         mn_Length: word;
  36.         end;
  37.  
  38.     pList = ^tList;
  39.     tList = record
  40.         lh_Head: pNode;
  41.         lh_Tail: pNode;
  42.         lh_TailPred: pNode;
  43.         lh_Type: byte;
  44.         l_pad: byte;
  45.         end;
  46.  
  47.     pMemEntry = ^tMemEntry;
  48.     tMemEntry = record
  49.         case integer of
  50.         0: (
  51.         me_Reqs: long;
  52.         );
  53.         1: (
  54.         me_Addr: pointer;
  55.         me_Length: long;
  56.         );
  57.         end;
  58.  
  59.     pInterrupt = ^tInterrupt;
  60.     pTask = ^tTask;
  61.     tMsgPort = record
  62.         mp_Node: tNode;
  63.         mp_Flags: byte;
  64.         mp_SigBit: byte;
  65.         case integer of
  66.         0: (
  67.         mp_SoftInt: pInterrupt;
  68.         );
  69.         1: (
  70.         sm_LockMsg: pMessage;
  71.         );
  72.         2: (
  73.         mp_SigTask: pTask;
  74.         mp_MsgList: tList;
  75.         );
  76.         end;
  77.  
  78.     pUnit = ^tUnit;
  79.     tUnit = record
  80.         unit_MsgPort: tMsgPort;
  81.         unit_flags: byte;
  82.         unit_pad: byte;
  83.         unit_OpenCnt: word;
  84.         end;
  85.  
  86.     pSoftIntList = ^tSoftIntList;
  87.     tSoftIntList = record
  88.         sh_List: tList;
  89.         sh_Pad: word;
  90.         end;
  91.  
  92.     pIntVector = ^tIntVector;
  93.     tIntVector = record
  94.         iv_Data: pointer;
  95.         iv_Code: pointer;
  96.         iv_Node: pNode;
  97.         end;
  98.  
  99.     pLibrary = ^tLibrary;
  100.     tLibrary = record
  101.         lib_Node: tNode;
  102.         lib_Flags: byte;
  103.         lib_pad: byte;
  104.         lib_NegSize: word;
  105.         lib_PosSize: word;
  106.         lib_Version: word;
  107.         lib_Revision: word;
  108.         lib_IdString: pointer;
  109.         lib_Sum: long;
  110.         lib_OpenCnt: word;
  111.         end;
  112.  
  113.     pResident = ^tResident;
  114.     tResident = record
  115.         rt_MatchWord: word;
  116.         rt_MatchTag: pResident;
  117.         rt_EndSkip: pointer;
  118.         rt_Flags: byte;
  119.         rt_Version: byte;
  120.         rt_Type: byte;
  121.         rt_Pri: shortint;
  122.         rt_Name: pbyte;
  123.         rt_IdString: pbyte;
  124.         rt_Init: pointer;
  125.         end;
  126.  
  127.     pMinNode = ^tMinNode;
  128.     pMinList = ^tMinList;
  129.     tMinList = record
  130.         mlh_Head: pMinNode;
  131.         mlh_Tail: pMinNode;
  132.         mlh_TailPred: pMinNode;
  133.         end;
  134.  
  135.     tMinNode = record
  136.         mln_Succ: pMinNode;
  137.         mln_Pred: pMinNode;
  138.         end;
  139.  
  140.     pSemaphoreRequest = ^tSemaphoreRequest;
  141.     tSemaphoreRequest = record
  142.         sr_Link: tMinNode;
  143.         sr_Waiter: pTask;
  144.         end;
  145.  
  146.     pSignalSemaphore = ^tSignalSemaphore;
  147.     tSignalSemaphore = record
  148.         ss_Link: tNode;
  149.         ss_NestCount: integer;
  150.         ss_WaitQueue: tMinList;
  151.         ss_MultipleLink: tSemaphoreRequest;
  152.         ss_Owner: pTask;
  153.         ss_QueueCount: integer;
  154.         end;
  155.  
  156.     pSemaphore = ^tSemaphore;
  157.     tSemaphore = record
  158.         sm_MsgPort: tMsgPort;
  159.         sm_Bids: integer;
  160.         end;
  161.  
  162.     pDevice = ^tDevice;
  163.     pIOStdReq = ^tIOStdReq;
  164.     tIOStdReq = record
  165.         io_Message: tMessage;
  166.         io_Device: pDevice;
  167.         io_Unit: pUnit;
  168.         io_Command: word;
  169.         io_Flags: byte;
  170.         io_Error: shortint;
  171.         io_Actual: long;
  172.         io_Length: long;
  173.         io_Data: pointer;
  174.         io_Offset: long;
  175.         end;
  176.  
  177.     pStackSwapStruct = ^tStackSwapStruct;
  178.     tStackSwapStruct = record
  179.         stk_Lower: pointer;
  180.         stk_Upper: long;
  181.         stk_Pointer: pointer;
  182.         end;
  183.  
  184.     pExecBase = ^tExecBase;
  185.     tExecBase = record
  186.         LibNode: tLibrary;
  187.         SoftVer: word;
  188.         LowMemChkSum: integer;
  189.         ChkBase: long;
  190.         ColdCapture: pointer;
  191.         CoolCapture: pointer;
  192.         WarmCapture: pointer;
  193.         SysStkUpper: pointer;
  194.         SysStkLower: pointer;
  195.         MaxLocMem: long;
  196.         DebugEntry: pointer;
  197.         DebugData: pointer;
  198.         AlertData: pointer;
  199.         MaxExtMem: pointer;
  200.         ChkSum: word;
  201.         IntVects: array [0..15] of tIntVector;
  202.         ThisTask: pTask;
  203.         IdleCount: long;
  204.         DispCount: long;
  205.         Quantum: word;
  206.         Elapsed: word;
  207.         SysFlags: word;
  208.         IDNestCnt: shortint;
  209.         TDNestCnt: shortint;
  210.         AttnFlags: word;
  211.         AttnResched: word;
  212.         ResModules: pointer;
  213.         TaskTrapCode: pointer;
  214.         TaskExceptCode: pointer;
  215.         TaskExitCode: pointer;
  216.         TaskSigAlloc: long;
  217.         TaskTrapAlloc: word;
  218.         MemList: tList;
  219.         ResourceList: tList;
  220.         DeviceList: tList;
  221.         IntrList: tList;
  222.         LibList: tList;
  223.         PortList: tList;
  224.         TaskReady: tList;
  225.         TaskWait: tList;
  226.         SoftInts: array [0..4] of tSoftIntList;
  227.         LastAlert: array [0..3] of longint;
  228.         VBlankFrequency: byte;
  229.         PowerSupplyFrequency: byte;
  230.         SemaphoreList: tList;
  231.         KickMemPtr: pointer;
  232.         KickTagPtr: pointer;
  233.         KickCheckSum: pointer;
  234.         ex_Pad0: word;
  235.         ex_LaunchPoint: long;
  236.         ex_RamLibPrivate: pointer;
  237.         ex_EClockFrequency: long;
  238.         ex_CacheControl: long;
  239.         ex_TaskID: long;
  240.         ex_PuddleSize: long;
  241.         ex_PoolThreshold: long;
  242.         ex_PublicPool: tMinList;
  243.         ex_MMULock: pointer;
  244.         ex_Reserved: array [0..11] of byte;
  245.         end;
  246.  
  247.     pMemChunk = ^tMemChunk;
  248.     pMemHeader = ^tMemHeader;
  249.     tMemHeader = record
  250.         mh_Node: tNode;
  251.         mh_Attributes: word;
  252.         mh_First: pMemChunk;
  253.         mh_Lower: pointer;
  254.         mh_Upper: pointer;
  255.         mh_Free: long;
  256.         end;
  257.  
  258.     tInterrupt = record
  259.         is_Node: tNode;
  260.         is_Data: pointer;
  261.         is_Code: pointer;
  262.         end;
  263.  
  264.     tMemChunk = record
  265.         mc_Next: pMemChunk;
  266.         mc_Bytes: long;
  267.         end;
  268.  
  269.     tDevice = record
  270.         dd_Library: tLibrary;
  271.         end;
  272.  
  273.     pIORequest = ^tIORequest;
  274.     tIORequest = record
  275.         io_Message: tMessage;
  276.         io_Device: pDevice;
  277.         io_Unit: pUnit;
  278.         io_Command: word;
  279.         io_Flags: byte;
  280.         io_Error: shortint;
  281.         end;
  282.  
  283.     pMemList = ^tMemList;
  284.     tMemList = record
  285.         ml_Node: tNode;
  286.         ml_NumEntries: word;
  287.         end;
  288.  
  289.     tTask = record
  290.         tc_Node: tNode;
  291.         tc_Flags: byte;
  292.         tc_State: byte;
  293.         tc_IDNestCnt: shortint;
  294.         tc_TDNestCnt: shortint;
  295.         tc_SigAlloc: long;
  296.         tc_SigWait: long;
  297.         tc_SigRecvd: long;
  298.         tc_SigExcept: long;
  299.         tc_TrapAlloc: word;
  300.         tc_TrapAble: word;
  301.         tc_ExceptData: pointer;
  302.         tc_ExceptCode: pointer;
  303.         tc_TrapData: pointer;
  304.         tc_TrapCode: pointer;
  305.         tc_SPReg: pointer;
  306.         tc_SPLower: pointer;
  307.         tc_SPUpper: pointer;
  308.         tc_Switch: pointer;
  309.         tc_Launch: pointer;
  310.         tc_MemEntry: tList;
  311.         tc_UserData: pointer;
  312.         end;
  313.  
  314.  
  315.  
  316. const
  317.     NT_SOFTINT = $B;
  318.     AN_FreeVec = $7000005;
  319.     AN_IconLib = $9000000;
  320.     AG_CloseLib = $90000;
  321.     AO_IconLib = $8009;
  322.     AN_MathLib = $5000000;
  323.     AN_TMBadSupply = $15000002;
  324.     BYTEMASK = $FF;
  325.     TS_RUN = 2;
  326.     AG_OpenLib = $30000;
  327.     AO_MathLib = $8005;
  328.     AN_BitMap = $7000007;
  329.     AN_BadState = $8400000C;
  330.     TB_SWITCH = 6;
  331.     NT_MSGPORT = 4;
  332.     AN_InitAPtr = $1000007;
  333.     AN_TrackDiskDev = $14000000;
  334.     AN_WBInitPotionAllocDrawer = $B1010004;
  335.     AO_TrackDiskDev = $8014;
  336.     TF_SWITCH = $40;
  337.     NT_UNKNOWN = 0;
  338.     LIB_RESERVED = 4;
  339.     MEMF_LARGEST = $20000;
  340.     RTF_COLDSTART = 1;
  341.     AG_CloseDev = $A0000;
  342.     LIB_OPEN = $FFFFFFFA;
  343.     AG_OpenDev = $40000;
  344.     AN_EndTask = $7000002;
  345.     AN_GamePortDev = $12000000;
  346.     AN_WBReLayoutToolMenu = $B1010009;
  347.     AO_GamePortDev = $8012;
  348.     AN_KeyFree = $7000008;
  349.     NULL = 0;
  350.     TS_EXCEPT = 5;
  351.     SIGB_DOS = 8;
  352.     IOERR_UNITBUSY = $FFFFFFFA;
  353.     CACRF_FreezeD = $200;
  354.     AN_PlaneAlloc = $84010005;
  355.     AN_AudioDev = $10000000;
  356.     AO_AudioDev = $8010;
  357.     CACRF_CopyBack = $80000000;
  358.     MEMF_ANY = 0;
  359.     MEMF_24BITDMA = $200;
  360.     LIBF_SUMMING = 1;
  361.     TB_ETASK = 3;
  362.     AG_NoSignal = $70000;
  363.     AN_MakeVPort = $82010030;
  364.     SIGF_DOS = $100;
  365.     AN_ItemAlloc = $4010003;
  366.     AN_SubAlloc = $4010004;
  367.     AN_WeirdEcho = $8400000E;
  368.     TRUE_ = 1;
  369.     CACRF_FreezeI = 2;
  370.     AN_LongFrame = $82010006;
  371.     AN_KeyRange = $700000B;
  372.     AN_BadExpansionFree = $A000001;
  373.     IOERR_BADLENGTH = $FFFFFFFC;
  374.     INTB_NMI = $F;
  375.     CMD_INVALID = 0;
  376.     AG_ProcCreate = $B0000;
  377.     TF_ETASK = 8;
  378.     DEV_BEGINIO = $FFFFFFE2;
  379.     MEMF_REVERSE = $40000;
  380.     UNITF_ACTIVE = 1;
  381.     AN_FreeTwice = $1000009;
  382.     AN_GraphicsLib = $2000000;
  383.     NT_DEATHMESSAGE = $13;
  384.     LIBF_SUMUSED = 4;
  385.     AG_OpenRes = $50000;
  386.     AO_GraphicsLib = $8002;
  387.     LIB_VECTSIZE = 6;
  388.     LIBF_DELEXP = 8;
  389.     INTF_NMI = $8000;
  390.     RTF_AFTERDOS = 4;
  391.     NT_MEMORY = $A;
  392.     NT_SIGNALSEM = $F;
  393.     NT_SEMAPHORE = $E;
  394.     AN_GfxFreeError = $200000D;
  395.     AN_LayersNoMem = $83010000;
  396.     AN_FileReclosed = $700000E;
  397.     AN_GadTools = $33000000;
  398.     TB_STACKCHK = 4;
  399.     AFB_FPU40 = 6;
  400.     RTW_NEVER = 0;
  401.     AO_GadTools = $8033;
  402.     RTW_COLDSTART = 1;
  403.     AN_BadOverlay = $700000C;
  404.     AN_WBinitTimer = $B101000A;
  405.     AFB_PRIVATE = $F;
  406.     CMD_STOP = 6;
  407.     MEMF_PUBLIC = 1;
  408.     AN_TimerDev = $15000000;
  409.     LIB_USERDEF = $FFFFFFE2;
  410.     AO_TimerDev = $8015;
  411.     AN_IntrMem = $81000006;
  412.     AN_ItemBoxTop = $84000006;
  413.     AN_KeyboardDev = $13000000;
  414.     TF_STACKCHK = $10;
  415.     TS_READY = 3;
  416.     AFF_FPU40 = $40;
  417.     AO_KeyboardDev = $8013;
  418.     AN_LayersLib = $3000000;
  419.     SIGB_SINGLE = 4;
  420.     AO_LayersLib = $8003;
  421.     AN_GfxNoLCM = $82011234;
  422.     AFF_PRIVATE = $8000;
  423.     DMA_Continue = 2;
  424.     AN_StackProbe = $100000E;
  425.     AN_GadgetType = $84000001;
  426.     AN_WBLayoutWBMenusLayoutMenus = $B1010007;
  427.     AN_DiskRsrc = $21000000;
  428.     AO_DiskRsrc = $8021;
  429.     AN_RAMLib = $8000000;
  430.     AN_MiscRsrc = $22000000;
  431.     AN_DiskCopy = $32000000;
  432.     SIGF_SINGLE = $10;
  433.     UNITF_INTASK = 2;
  434.     AO_RAMLib = $8008;
  435.     AO_MiscRsrc = $8022;
  436.     AO_DiskCopy = $8032;
  437.     AN_OpenScreen = $84010007;
  438.     AN_ConsoleDev = $11000000;
  439.     AN_WBBadStartupMsg1 = $31000001;
  440.     AO_ConsoleDev = $8011;
  441.     AN_WBBadStartupMsg2 = $31000002;
  442.     SIGB_CHILD = 1;
  443.     AN_GfxNewError = $200000C;
  444.     AN_DiskfontLib = $B000000;
  445.     DEV_ABORTIO = $FFFFFFDC;
  446.     AO_DiskfontLib = $800B;
  447.     AN_NoConsole = $8400000F;
  448.     AN_DOSLib = $7000000;
  449.     AN_NoFonts = $B1000001;
  450.     MEMF_CLEAR = $10000;
  451.     AO_DOSLib = $8007;
  452.     AN_StartMem = $7010001;
  453.     AN_AsyncPkt = $7000004;
  454.     SIGF_CHILD = 2;
  455.     IOERR_NOCMD = $FFFFFFFD;
  456.     AN_OpenScrnRast = $84010008;
  457.     NT_GRAPHICS = $12;
  458.     NT_EXTENDED = $FF;
  459.     LIB_EXPUNGE = $FFFFFFEE;
  460.     AG_NoMemory = $10000;
  461.     AN_CreatePort = $84010002;
  462.     LIB_EXTFUNC = $FFFFFFE8;
  463.     CACRF_DBE = $1000;
  464.     RTF_AUTOINIT = $80;
  465.     AN_DiskError = $700000A;
  466.     MEMF_LOCAL = $100;
  467.     AN_ExcptVect = $1000001;
  468.     AN_ShortFrame = $82010007;
  469.     AN_TDCalibSeek = $14000001;
  470.     AN_CIARsrc = $20000000;
  471.     AN_DRIntNoAct = $21000002;
  472.     AO_CIARsrc = $8020;
  473.     AN_TextTmpRas = $2010009;
  474.     AFB_68010 = 0;
  475.     AFB_68020 = 1;
  476.     TB_PROCTIME = 0;
  477.     AFB_68030 = 2;
  478.     CACRF_IBE = $10;
  479.     AN_AddSWGadget = $8401000A;
  480.     AN_NoWindow = $11000001;
  481.     AN_TMBadReq = $15000001;
  482.     AFB_68040 = 3;
  483.     AN_WBInitScreenAndWindows1 = $B101000D;
  484.     AN_WBMAlloc = $B1010010;
  485.     INCLUDE_VERSION = $24;
  486.     SIH_PRIMASK = $F0;
  487.     AFF_68010 = 1;
  488.     AN_WBInitScreenAndWindows2 = $B101000E;
  489.     NT_BOOTNODE = $10;
  490.     AFF_68020 = 2;
  491.     CMD_UPDATE = 4;
  492.     AN_ExpansionLib = $A000000;
  493.     AN_WBInitScreenAndWindows3 = $B101000F;
  494.     TF_PROCTIME = 1;
  495.     AFF_68030 = 4;
  496.     AO_ExpansionLib = $800A;
  497.     AN_BootStrap = $30000000;
  498.     AN_BootError = $30000001;
  499.     AFF_68040 = 8;
  500.     AO_BootStrap = $8030;
  501.     AN_BogusExcpt = $8100000A;
  502.     AN_BadFreeAddr = $100000F;
  503.     AN_WBAddToolMenuItem = $B1010008;
  504.     AN_DRHasDisk = $21000001;
  505.     LIBRARY_MINIMUM = $21;
  506.     SIGB_ABORT = 0;
  507.     CACRF_WriteAllocate = $2000;
  508.     AN_Workbench = $31000000;
  509.     AO_Workbench = $8031;
  510.     NT_TASK = 1;
  511.     AN_ObsoleteFont = $2000401;
  512.     AN_OpenWindow = $8401000B;
  513.     FALSE_ = 0;
  514.     IOERR_OPENFAIL = $FFFFFFFF;
  515.     CMD_CLEAR = 5;
  516.     AN_UtilityLib = $34000000;
  517.     SIGF_ABORT = 1;
  518.     AO_UtilityLib = $800C;
  519.     LIBF_CHANGED = 2;
  520.     AFB_68881 = 4;
  521.     AN_MemoryInsane = $100000C;
  522.     NT_FONT = $C;
  523.     NT_KICKMEM = $11;
  524.     AFB_68882 = 5;
  525.     AN_MemCorrupt = $81000005;
  526.     NT_INTERRUPT = 2;
  527.     NT_RESOURCE = 8;
  528.     TS_WAIT = 4;
  529.     AFF_68881 = $10;
  530.     NT_MESSAGE = 5;
  531.     AFF_68882 = $20;
  532.     AN_SysScrnType = $84000009;
  533.     AN_RegionMemory = $8201000B;
  534.     MEMF_TOTAL = $80000;
  535.     AN_SemCorrupt = $1000008;
  536.     CMD_NONSTD = 9;
  537.     NT_FREEMSG = 6;
  538.     NT_USER = $FE;
  539.     MEM_BLOCKMASK = 7;
  540.     LIB_NONSTD = $FFFFFFE2;
  541.     TS_INVALID = 0;
  542.     MEMF_CHIP = 2;
  543.     NT_REPLYMSG = 7;
  544.     AN_IOAfterClose = $100000D;
  545.     AN_TDDelay = $14000002;
  546.     AN_BadChkSum = $7000009;
  547.     LIB_CLOSE = $FFFFFFF4;
  548.     RTF_SINGLETASK = 2;
  549.     AN_BadGadget = $4000001;
  550.     PA_SIGNAL = 0;
  551.     AT_DeadEnd = $80000000;
  552.     AT_Recovery = 0;
  553.     AN_Unknown = $35000000;
  554.     SIGB_BLIT = 4;
  555.     AO_Unknown = $8035;
  556.     TB_LAUNCH = 7;
  557.     NT_DEVICE = 3;
  558.     NT_LIBRARY = 9;
  559.     AG_MakeLib = $20000;
  560.     PA_SOFTINT = 1;
  561.     IOERR_ABORTED = $FFFFFFFE;
  562.     MEMF_FAST = 4;
  563.     TS_REMOVED = 6;
  564.     SIGB_INTUITION = 5;
  565.     SIGF_BLIT = $10;
  566.     PF_ACTION = 3;
  567.     AG_BadParm = $80000;
  568.     AN_WBInitLayerDemon = $B101000B;
  569.     TF_LAUNCH = $80;
  570.     PA_IGNORE = 2;
  571.     IOERR_BADADDRESS = $FFFFFFFB;
  572.     CMD_READ = 2;
  573.     AN_IOUsedTwice = $100000B;
  574.     CACRF_EnableD = $100;
  575.     CMD_FLUSH = 8;
  576.     MEM_BLOCKSIZE = 8;
  577.     LIB_BASE = $FFFFFFFA;
  578.     IOERR_SELFTEST = $FFFFFFF9;
  579.     IOB_QUICK = 0;
  580.     CMD_RESET = 1;
  581.     AN_BadInitFunc = $700000D;
  582.     AN_BadSegList = $8000001;
  583.     SIGF_INTUITION = $20;
  584.     AN_Intuition = $4000000;
  585.     AO_Intuition = $8004;
  586.     AN_BltBitMap = $8201000A;
  587.     AN_WBBadIOMsg = $31000003;
  588.     CACRF_EnableI = 1;
  589.     CACRF_ClearD = $800;
  590.     IOF_QUICK = 1;
  591.     AN_BaseChkSum = $1000002;
  592.     AN_QPktFail = $7000003;
  593.     NT_PROCESS = $D;
  594.     AN_LibChkSum = $1000003;
  595.     AN_WBinitWbGels = $B101000C;
  596.     TS_ADDED = 1;
  597.     TB_EXCEPT = 5;
  598.     CMD_WRITE = 3;
  599.     AG_IOError = $60000;
  600.     AN_GfxNoMemMspc = $82010001;
  601.     CACRF_ClearI = 8;
  602.     AN_ExecLib = $1000000;
  603.     AN_GfxNoMem = $82010000;
  604.     AN_WBCreateWBMenusCreateMenus1 = $B1010005;
  605.     AO_ExecLib = $8001;
  606.     AN_BadMessage = $8400000D;
  607.     AN_WBCreateWBMenusCreateMenus2 = $B1010006;
  608.     CMD_START = 7;
  609.     AN_DiskBlkSeq = $7000006;
  610.     TF_EXCEPT = $20;
  611.     DMA_NoModify = 4;
  612.     RTC_MATCHWORD = $4AFC;
  613.  
  614.  
  615. function Supervisor (userFunction: pointer): long;
  616. procedure InitCode
  617.         (startClass: long;
  618.         version: long);
  619.  
  620. procedure InitStruct
  621.         (initTable: pointer;
  622.         memory: pointer;
  623.         size: long);
  624.  
  625. function MakeLibrary
  626.         (funcInit: pointer;
  627.         structInit: pointer;
  628.         libInit: pointer;
  629.         dataSize: long;
  630.         segList: longint): pLibrary;
  631.  
  632. function MakeFunctions
  633.         (target: pointer;
  634.         functionArray: pointer;
  635.         funcDispBase: pointer): long;
  636.  
  637. function FindResident (name: STRPTR): pResident;
  638. function InitResident
  639.         (resident: pResident;
  640.         segList: long): pointer;
  641.  
  642. procedure Alert (alertNum: long);
  643. procedure Debug (flags: long);
  644. procedure Disable;
  645. procedure Enable;
  646. procedure Forbid;
  647. procedure Permit;
  648. function SetSR
  649.         (newSR: long;
  650.         mask: long): long;
  651.  
  652. function SuperState: pointer;
  653. procedure UserState (sysStack: pointer);
  654. function SetIntVector
  655.         (intNumber: long;
  656.         interrupt: pInterrupt): pInterrupt;
  657.  
  658. procedure AddIntServer
  659.         (intNumber: long;
  660.         interrupt: pInterrupt);
  661.  
  662. procedure RemIntServer
  663.         (intNumber: long;
  664.         interrupt: pInterrupt);
  665.  
  666. procedure Cause (interrupt: pInterrupt);
  667. function Allocate
  668.         (freeList: pMemHeader;
  669.         byteSize: long): pointer;
  670.  
  671. procedure Deallocate
  672.         (freeList: pMemHeader;
  673.         memoryBlock: pointer;
  674.         byteSize: long);
  675.  
  676. function AllocMem
  677.         (byteSize: long;
  678.         requirements: long): pointer;
  679.  
  680. function AllocAbs
  681.         (byteSize: long;
  682.         location: pointer): pointer;
  683.  
  684. procedure FreeMem_
  685.         (memoryBlock: pointer;
  686.         byteSize: long);
  687.  
  688. function AvailMem (requirements: long): long;
  689. function AllocEntry (entry: pMemList): pMemList;
  690. procedure FreeEntry (entry: pMemList);
  691. procedure Insert_
  692.         (list: pList;
  693.         node: pNode;
  694.         pred: pNode);
  695.  
  696. procedure AddHead
  697.         (list: pList;
  698.         node: pNode);
  699.  
  700. procedure AddTail
  701.         (list: pList;
  702.         node: pNode);
  703.  
  704. procedure Remove (node: pNode);
  705. function RemHead (list: pList): pNode;
  706. function RemTail (list: pList): pNode;
  707. procedure Enqueue
  708.         (list: pList;
  709.         node: pNode);
  710.  
  711. function FindName
  712.         (list: pList;
  713.         name: STRPTR): pNode;
  714.  
  715. function AddTask
  716.         (task: pTask;
  717.         initPC: pointer;
  718.         finalPC: pointer): pointer;
  719.  
  720. procedure RemTask (task: pTask);
  721. function FindTask (name: STRPTR): pTask;
  722. function SetTaskPri
  723.         (task: pTask;
  724.         priority: longint): shortint;
  725.  
  726. function SetSignal
  727.         (newSignals: long;
  728.         signalSet: long): long;
  729.  
  730. function SetExcept
  731.         (newSignals: long;
  732.         signalSet: long): long;
  733.  
  734. function Wait (signalSet: long): long;
  735. procedure Signal
  736.         (task: pTask;
  737.         signalSet: long);
  738.  
  739. function AllocSignal (signalNum: shortint): shortint;
  740. procedure FreeSignal (signalNum: shortint);
  741. function AllocTrap (trapNum: longint): longint;
  742. procedure FreeTrap (trapNum: long);
  743. procedure AddPort (port: pMsgPort);
  744. procedure RemPort (port: pMsgPort);
  745. procedure PutMsg
  746.         (port: pMsgPort;
  747.         message: pMessage);
  748.  
  749. function GetMsg (port: pMsgPort): pMessage;
  750. procedure ReplyMsg (message: pMessage);
  751. function WaitPort (port: pMsgPort): pMessage;
  752. function FindPort (name: STRPTR): pMsgPort;
  753. procedure AddLibrary (library: pLibrary);
  754. procedure RemLibrary (library: pLibrary);
  755. function OldOpenLibrary (libName: string): pLibrary;
  756. procedure CloseLibrary (library: pLibrary);
  757. function SetFunction
  758.         (library: pLibrary;
  759.         funcOffset: longint;
  760.         newFunction: pointer): pointer;
  761.  
  762. procedure SumLibrary (library: pLibrary);
  763. procedure AddDevice (device: pDevice);
  764. procedure RemDevice (device: pDevice);
  765. function OpenDevice
  766.         (devName: string;
  767.         unit_: long;
  768.         ioRequest: pIORequest;
  769.         flags: long): shortint;
  770.  
  771. procedure CloseDevice (ioRequest: pIORequest);
  772. function DoIO (ioRequest: pIORequest): shortint;
  773. procedure SendIO (ioRequest: pIORequest);
  774. function CheckIO (ioRequest: pIORequest): boolean;
  775. function WaitIO (ioRequest: pIORequest): shortint;
  776. procedure AbortIO (ioRequest: pIORequest);
  777. procedure AddResource (resource: pointer);
  778. procedure RemResource (resource: pointer);
  779. function OpenResource (resName: string): pointer;
  780. function RawDoFmt
  781.         (formatString: STRPTR;
  782.         dataStream: pointer;
  783.         putChProc: pointer;
  784.         putChData: pointer): pointer;
  785.  
  786. function GetCC: word;
  787. function TypeOfMem (address: pointer): long;
  788. function Procure
  789.         (semaport: pSemaphore;
  790.         bidMsg: pMessage): shortint;
  791.  
  792. procedure Vacate (semaport: pSemaphore);
  793. function OpenLibrary
  794.         (libName: string;
  795.         version: long): pLibrary;
  796.  
  797. procedure InitSemaphore (sigSem: pSignalSemaphore);
  798. procedure ObtainSemaphore (sigSem: pSignalSemaphore);
  799. procedure ReleaseSemaphore (sigSem: pSignalSemaphore);
  800. function AttemptSemaphore (sigSem: pSignalSemaphore): longint;
  801. procedure ObtainSemaphoreList (sigSem: pList);
  802. procedure ReleaseSemaphoreList (sigSem: pList);
  803. function FindSemaphore (sigSem: STRPTR): pSignalSemaphore;
  804. procedure AddSemaphore (sigSem: pSignalSemaphore);
  805. procedure RemSemaphore (sigSem: pSignalSemaphore);
  806. function SumKickData: long;
  807. procedure AddMemList
  808.         (size: long;
  809.         attributes: long;
  810.         pri: longint;
  811.         base: pointer;
  812.         name: STRPTR);
  813.  
  814. procedure CopyMem
  815.         (source: pointer;
  816.         dest: pointer;
  817.         size: long);
  818.  
  819. procedure CopyMemQuick
  820.         (source: plong;
  821.         dest: plong;
  822.         size: long);
  823.  
  824. procedure CacheClearU;
  825. procedure CacheClearE
  826.         (address: pointer;
  827.         length: long;
  828.         caches: long);
  829.  
  830. function CacheControl
  831.         (cacheBits: long;
  832.         cacheMask: long): long;
  833.  
  834. function CreateIORequest
  835.         (port: pMsgPort;
  836.         size: long): pIORequest;
  837.  
  838. procedure DeleteIORequest (iorequest: pIORequest);
  839. function CreateMsgPort: pMsgPort;
  840. procedure DeleteMsgPort (port: pMsgPort);
  841. procedure ObtainSemaphoreShared (sigSem: pSignalSemaphore);
  842. function AllocVec
  843.         (byteSize: long;
  844.         requirements: long): pointer;
  845.  
  846. procedure FreeVec (memoryBlock: pointer);
  847. procedure ColdReboot;
  848. procedure StackSwap (newStack: pStackSwapStruct);
  849. function CachePreDMA
  850.         (address: pointer;
  851.         length: plongint;
  852.         flags: long): pointer;
  853.  
  854. function CachePostDMA
  855.         (address: pointer;
  856.         length: plongint;
  857.         flags: long): longint;
  858.  
  859.  
  860.  
  861. procedure PasToC (p: string; var c);
  862. procedure CToPas (var c; var p: string);
  863. function BitMask (no: shortint): longint;
  864. function IsListEmpty (list: pList): boolean;
  865. function IsMsgPortEmpty (mp: pMsgPort): boolean;
  866.  
  867.  
  868. IMPLEMENTATION
  869. procedure PasToC; xassembler;
  870. asm
  871.     movem.l    4(sp),a0-a1
  872.     moveq    #0,d0
  873.     move.b    (a1)+,d0
  874.     bra        @2
  875. @1:
  876.     move.b    (a1)+,(a0)+
  877. @2:
  878.     dbra    d0,@1
  879.     clr.b    (a0)
  880. end;
  881.  
  882. procedure CToPas; xassembler;
  883. asm
  884.     movem.l    4(sp),a0-a1
  885.     addq.l    #1,a0
  886.     move.w    #254,d0
  887. @1:
  888.     move.b    (a1)+,d1
  889.     beq        @2
  890.     move.b    d1,(a0)+
  891.     dbra    d0,@1
  892. @2:
  893.     addq.b    #1,d0
  894.     not.b    d0
  895.     move.l    4(sp),a0
  896.     move.b    d0,(a0)
  897. end;
  898.  
  899. function BitMask; xassembler;
  900. asm
  901.     moveq    #0,d0
  902.     move.b    4(sp),d1
  903.     bset    d1,d0
  904.     move.l    d0,6(sp)
  905. end;
  906.  
  907. function IsListEmpty;
  908. begin
  909.     IsListEmpty := list^.lh_TailPred = pNode(list)
  910. end;
  911.  
  912. function IsMsgPortEmpty;
  913. begin
  914.     with mp^ do
  915.         IsMsgPortEmpty := mp_MsgList.lh_TailPred = pNode(@mp_MsgList)
  916. end;
  917.  
  918. function Supervisor; xassembler;
  919. asm
  920.     movem.l    a5-a6,-(sp)
  921.     move.l    $C(sp),a5
  922.     move.l    SysBase,a6
  923.     jsr        -$1E(a6)
  924.     move.l    d0,$10(sp)
  925.     movem.l    (sp)+,a5-a6
  926. end;
  927.  
  928. procedure InitCode; xassembler;
  929. asm
  930.     move.l    a6,-(sp)
  931.     lea        8(sp),a6
  932.     move.l    (a6)+,d1
  933.     move.l    (a6)+,d0
  934.     move.l    SysBase,a6
  935.     jsr        -$48(a6)
  936.     move.l    (sp)+,a6
  937. end;
  938.  
  939. procedure InitStruct; xassembler;
  940. asm
  941.     movem.l    a2/a6,-(sp)
  942.     lea        $C(sp),a6
  943.     move.l    (a6)+,d0
  944.     move.l    (a6)+,a2
  945.     move.l    (a6)+,a1
  946.     move.l    SysBase,a6
  947.     jsr        -$4E(a6)
  948.     movem.l    (sp)+,a2/a6
  949. end;
  950.  
  951. function MakeLibrary; xassembler;
  952. asm
  953.     movem.l    a2/a6,-(sp)
  954.     lea        $C(sp),a6
  955.     move.l    (a6)+,d1
  956.     move.l    (a6)+,d0
  957.     move.l    (a6)+,a2
  958.     move.l    (a6)+,a1
  959.     move.l    (a6)+,a0
  960.     move.l    SysBase,a6
  961.     jsr        -$54(a6)
  962.     move.l    d0,$20(sp)
  963.     movem.l    (sp)+,a2/a6
  964. end;
  965.  
  966. function MakeFunctions; xassembler;
  967. asm
  968.     movem.l    a2/a6,-(sp)
  969.     lea        $C(sp),a6
  970.     move.l    (a6)+,a2
  971.     move.l    (a6)+,a1
  972.     move.l    (a6)+,a0
  973.     move.l    SysBase,a6
  974.     jsr        -$5A(a6)
  975.     move.l    d0,$18(sp)
  976.     movem.l    (sp)+,a2/a6
  977. end;
  978.  
  979. function FindResident; xassembler;
  980. asm
  981.     move.l    a6,-(sp)
  982.     move.l    8(sp),a1
  983.     move.l    SysBase,a6
  984.     jsr        -$60(a6)
  985.     move.l    d0,$C(sp)
  986.     move.l    (sp)+,a6
  987. end;
  988.  
  989. function InitResident; xassembler;
  990. asm
  991.     move.l    a6,-(sp)
  992.     movem.l    8(sp),d1/a1
  993.     move.l    SysBase,a6
  994.     jsr        -$66(a6)
  995.     move.l    d0,$10(sp)
  996.     move.l    (sp)+,a6
  997. end;
  998.  
  999. procedure Alert; xassembler;
  1000. asm
  1001.     movem.l    d7/a6,-(sp)
  1002.     move.l    $C(sp),d7
  1003.     move.l    SysBase,a6
  1004.     jsr        -$6C(a6)
  1005.     movem.l    (sp)+,d7/a6
  1006. end;
  1007.  
  1008. procedure Debug; xassembler;
  1009. asm
  1010.     move.l    a6,-(sp)
  1011.     move.l    8(sp),d0
  1012.     move.l    SysBase,a6
  1013.     jsr        -$72(a6)
  1014.     move.l    (sp)+,a6
  1015. end;
  1016.  
  1017. procedure Disable; xassembler;
  1018. asm
  1019.     move.l    a6,-(sp)
  1020.     move.l    SysBase,a6
  1021.     jsr        -$78(a6)
  1022.     move.l    (sp)+,a6
  1023. end;
  1024.  
  1025. procedure Enable; xassembler;
  1026. asm
  1027.     move.l    a6,-(sp)
  1028.     move.l    SysBase,a6
  1029.     jsr        -$7E(a6)
  1030.     move.l    (sp)+,a6
  1031. end;
  1032.  
  1033. procedure Forbid; xassembler;
  1034. asm
  1035.     move.l    a6,-(sp)
  1036.     move.l    SysBase,a6
  1037.     jsr        -$84(a6)
  1038.     move.l    (sp)+,a6
  1039. end;
  1040.  
  1041. procedure Permit; xassembler;
  1042. asm
  1043.     move.l    a6,-(sp)
  1044.     move.l    SysBase,a6
  1045.     jsr        -$8A(a6)
  1046.     move.l    (sp)+,a6
  1047. end;
  1048.  
  1049. function SetSR; xassembler;
  1050. asm
  1051.     move.l    a6,-(sp)
  1052.     lea        8(sp),a6
  1053.     move.l    (a6)+,d1
  1054.     move.l    (a6)+,d0
  1055.     move.l    SysBase,a6
  1056.     jsr        -$90(a6)
  1057.     move.l    d0,$10(sp)
  1058.     move.l    (sp)+,a6
  1059. end;
  1060.  
  1061. function SuperState; xassembler;
  1062. asm
  1063.     move.l    a6,-(sp)
  1064.     move.l    SysBase,a6
  1065.     jsr        -$96(a6)
  1066.     move.l    d0,8(sp)
  1067.     move.l    (sp)+,a6
  1068. end;
  1069.  
  1070. procedure UserState; xassembler;
  1071. asm
  1072.     move.l    a6,-(sp)
  1073.     move.l    8(sp),d0
  1074.     move.l    SysBase,a6
  1075.     jsr        -$9C(a6)
  1076.     move.l    (sp)+,a6
  1077. end;
  1078.  
  1079. function SetIntVector; xassembler;
  1080. asm
  1081.     move.l    a6,-(sp)
  1082.     lea        8(sp),a6
  1083.     move.l    (a6)+,a1
  1084.     move.l    (a6)+,d0
  1085.     move.l    SysBase,a6
  1086.     jsr        -$A2(a6)
  1087.     move.l    d0,$10(sp)
  1088.     move.l    (sp)+,a6
  1089. end;
  1090.  
  1091. procedure AddIntServer; xassembler;
  1092. asm
  1093.     move.l    a6,-(sp)
  1094.     lea        8(sp),a6
  1095.     move.l    (a6)+,a1
  1096.     move.l    (a6)+,d0
  1097.     move.l    SysBase,a6
  1098.     jsr        -$A8(a6)
  1099.     move.l    (sp)+,a6
  1100. end;
  1101.  
  1102. procedure RemIntServer; xassembler;
  1103. asm
  1104.     move.l    a6,-(sp)
  1105.     lea        8(sp),a6
  1106.     move.l    (a6)+,a1
  1107.     move.l    (a6)+,d0
  1108.     move.l    SysBase,a6
  1109.     jsr        -$AE(a6)
  1110.     move.l    (sp)+,a6
  1111. end;
  1112.  
  1113. procedure Cause; xassembler;
  1114. asm
  1115.     move.l    a6,-(sp)
  1116.     move.l    8(sp),a1
  1117.     move.l    SysBase,a6
  1118.     jsr        -$B4(a6)
  1119.     move.l    (sp)+,a6
  1120. end;
  1121.  
  1122. function Allocate; xassembler;
  1123. asm
  1124.     move.l    a6,-(sp)
  1125.     movem.l    8(sp),d0/a0
  1126.     move.l    SysBase,a6
  1127.     jsr        -$BA(a6)
  1128.     move.l    d0,$10(sp)
  1129.     move.l    (sp)+,a6
  1130. end;
  1131.  
  1132. procedure Deallocate; xassembler;
  1133. asm
  1134.     move.l    a6,-(sp)
  1135.     lea        8(sp),a6
  1136.     move.l    (a6)+,d0
  1137.     move.l    (a6)+,a1
  1138.     move.l    (a6)+,a0
  1139.     move.l    SysBase,a6
  1140.     jsr        -$C0(a6)
  1141.     move.l    (sp)+,a6
  1142. end;
  1143.  
  1144. function AllocMem; xassembler;
  1145. asm
  1146.     move.l    a6,-(sp)
  1147.     lea        8(sp),a6
  1148.     move.l    (a6)+,d1
  1149.     move.l    (a6)+,d0
  1150.     move.l    SysBase,a6
  1151.     jsr        -$C6(a6)
  1152.     move.l    d0,$10(sp)
  1153.     move.l    (sp)+,a6
  1154. end;
  1155.  
  1156. function AllocAbs; xassembler;
  1157. asm
  1158.     move.l    a6,-(sp)
  1159.     lea        8(sp),a6
  1160.     move.l    (a6)+,a1
  1161.     move.l    (a6)+,d0
  1162.     move.l    SysBase,a6
  1163.     jsr        -$CC(a6)
  1164.     move.l    d0,$10(sp)
  1165.     move.l    (sp)+,a6
  1166. end;
  1167.  
  1168. procedure FreeMem_; xassembler;
  1169. asm
  1170.     move.l    a6,-(sp)
  1171.     movem.l    8(sp),d0/a1
  1172.     move.l    SysBase,a6
  1173.     jsr        -$D2(a6)
  1174.     move.l    (sp)+,a6
  1175. end;
  1176.  
  1177. function AvailMem; xassembler;
  1178. asm
  1179.     move.l    a6,-(sp)
  1180.     move.l    8(sp),d1
  1181.     move.l    SysBase,a6
  1182.     jsr        -$D8(a6)
  1183.     move.l    d0,$C(sp)
  1184.     move.l    (sp)+,a6
  1185. end;
  1186.  
  1187. function AllocEntry; xassembler;
  1188. asm
  1189.     move.l    a6,-(sp)
  1190.     move.l    8(sp),a0
  1191.     move.l    SysBase,a6
  1192.     jsr        -$DE(a6)
  1193.     move.l    d0,$C(sp)
  1194.     move.l    (sp)+,a6
  1195. end;
  1196.  
  1197. procedure FreeEntry; xassembler;
  1198. asm
  1199.     move.l    a6,-(sp)
  1200.     move.l    8(sp),a0
  1201.     move.l    SysBase,a6
  1202.     jsr        -$E4(a6)
  1203.     move.l    (sp)+,a6
  1204. end;
  1205.  
  1206. procedure Insert_; xassembler;
  1207. asm
  1208.     movem.l    a2/a6,-(sp)
  1209.     lea        $C(sp),a6
  1210.     move.l    (a6)+,a2
  1211.     move.l    (a6)+,a1
  1212.     move.l    (a6)+,a0
  1213.     move.l    SysBase,a6
  1214.     jsr        -$EA(a6)
  1215.     movem.l    (sp)+,a2/a6
  1216. end;
  1217.  
  1218. procedure AddHead; xassembler;
  1219. asm
  1220.     move.l    a6,-(sp)
  1221.     lea        8(sp),a6
  1222.     move.l    (a6)+,a1
  1223.     move.l    (a6)+,a0
  1224.     move.l    SysBase,a6
  1225.     jsr        -$F0(a6)
  1226.     move.l    (sp)+,a6
  1227. end;
  1228.  
  1229. procedure AddTail; xassembler;
  1230. asm
  1231.     move.l    a6,-(sp)
  1232.     lea        8(sp),a6
  1233.     move.l    (a6)+,a1
  1234.     move.l    (a6)+,a0
  1235.     move.l    SysBase,a6
  1236.     jsr        -$F6(a6)
  1237.     move.l    (sp)+,a6
  1238. end;
  1239.  
  1240. procedure Remove; xassembler;
  1241. asm
  1242.     move.l    a6,-(sp)
  1243.     move.l    8(sp),a1
  1244.     move.l    SysBase,a6
  1245.     jsr        -$FC(a6)
  1246.     move.l    (sp)+,a6
  1247. end;
  1248.  
  1249. function RemHead; xassembler;
  1250. asm
  1251.     move.l    a6,-(sp)
  1252.     move.l    8(sp),a0
  1253.     move.l    SysBase,a6
  1254.     jsr        -$102(a6)
  1255.     move.l    d0,$C(sp)
  1256.     move.l    (sp)+,a6
  1257. end;
  1258.  
  1259. function RemTail; xassembler;
  1260. asm
  1261.     move.l    a6,-(sp)
  1262.     move.l    8(sp),a0
  1263.     move.l    SysBase,a6
  1264.     jsr        -$108(a6)
  1265.     move.l    d0,$C(sp)
  1266.     move.l    (sp)+,a6
  1267. end;
  1268.  
  1269. procedure Enqueue; xassembler;
  1270. asm
  1271.     move.l    a6,-(sp)
  1272.     lea        8(sp),a6
  1273.     move.l    (a6)+,a1
  1274.     move.l    (a6)+,a0
  1275.     move.l    SysBase,a6
  1276.     jsr        -$10E(a6)
  1277.     move.l    (sp)+,a6
  1278. end;
  1279.  
  1280. function FindName; xassembler;
  1281. asm
  1282.     move.l    a6,-(sp)
  1283.     lea        8(sp),a6
  1284.     move.l    (a6)+,a1
  1285.     move.l    (a6)+,a0
  1286.     move.l    SysBase,a6
  1287.     jsr        -$114(a6)
  1288.     move.l    d0,$10(sp)
  1289.     move.l    (sp)+,a6
  1290. end;
  1291.  
  1292. function AddTask; xassembler;
  1293. asm
  1294.     movem.l    a2-a3/a6,-(sp)
  1295.     lea        $10(sp),a6
  1296.     move.l    (a6)+,a3
  1297.     move.l    (a6)+,a2
  1298.     move.l    (a6)+,a1
  1299.     move.l    SysBase,a6
  1300.     jsr        -$11A(a6)
  1301.     move.l    d0,$1C(sp)
  1302.     movem.l    (sp)+,a2-a3/a6
  1303. end;
  1304.  
  1305. procedure RemTask; xassembler;
  1306. asm
  1307.     move.l    a6,-(sp)
  1308.     move.l    8(sp),a1
  1309.     move.l    SysBase,a6
  1310.     jsr        -$120(a6)
  1311.     move.l    (sp)+,a6
  1312. end;
  1313.  
  1314. function FindTask; xassembler;
  1315. asm
  1316.     move.l    a6,-(sp)
  1317.     move.l    8(sp),a1
  1318.     move.l    SysBase,a6
  1319.     jsr        -$126(a6)
  1320.     move.l    d0,$C(sp)
  1321.     move.l    (sp)+,a6
  1322. end;
  1323.  
  1324. function SetTaskPri; xassembler;
  1325. asm
  1326.     move.l    a6,-(sp)
  1327.     movem.l    8(sp),d0/a1
  1328.     move.l    SysBase,a6
  1329.     jsr        -$12C(a6)
  1330.     move.b    d0,$10(sp)
  1331.     move.l    (sp)+,a6
  1332. end;
  1333.  
  1334. function SetSignal; xassembler;
  1335. asm
  1336.     move.l    a6,-(sp)
  1337.     lea        8(sp),a6
  1338.     move.l    (a6)+,d1
  1339.     move.l    (a6)+,d0
  1340.     move.l    SysBase,a6
  1341.     jsr        -$132(a6)
  1342.     move.l    d0,$10(sp)
  1343.     move.l    (sp)+,a6
  1344. end;
  1345.  
  1346. function SetExcept; xassembler;
  1347. asm
  1348.     move.l    a6,-(sp)
  1349.     lea        8(sp),a6
  1350.     move.l    (a6)+,d1
  1351.     move.l    (a6)+,d0
  1352.     move.l    SysBase,a6
  1353.     jsr        -$138(a6)
  1354.     move.l    d0,$10(sp)
  1355.     move.l    (sp)+,a6
  1356. end;
  1357.  
  1358. function Wait; xassembler;
  1359. asm
  1360.     move.l    a6,-(sp)
  1361.     move.l    8(sp),d0
  1362.     move.l    SysBase,a6
  1363.     jsr        -$13E(a6)
  1364.     move.l    d0,$C(sp)
  1365.     move.l    (sp)+,a6
  1366. end;
  1367.  
  1368. procedure Signal; xassembler;
  1369. asm
  1370.     move.l    a6,-(sp)
  1371.     movem.l    8(sp),d0/a1
  1372.     move.l    SysBase,a6
  1373.     jsr        -$144(a6)
  1374.     move.l    (sp)+,a6
  1375. end;
  1376.  
  1377. function AllocSignal; xassembler;
  1378. asm
  1379.     move.l    a6,-(sp)
  1380.     move.b    8(sp),d0
  1381.     move.l    SysBase,a6
  1382.     jsr        -$14A(a6)
  1383.     move.b    d0,$A(sp)
  1384.     move.l    (sp)+,a6
  1385. end;
  1386.  
  1387. procedure FreeSignal; xassembler;
  1388. asm
  1389.     move.l    a6,-(sp)
  1390.     move.b    8(sp),d0
  1391.     move.l    SysBase,a6
  1392.     jsr        -$150(a6)
  1393.     move.l    (sp)+,a6
  1394. end;
  1395.  
  1396. function AllocTrap; xassembler;
  1397. asm
  1398.     move.l    a6,-(sp)
  1399.     move.l    8(sp),d0
  1400.     move.l    SysBase,a6
  1401.     jsr        -$156(a6)
  1402.     move.l    d0,$C(sp)
  1403.     move.l    (sp)+,a6
  1404. end;
  1405.  
  1406. procedure FreeTrap; xassembler;
  1407. asm
  1408.     move.l    a6,-(sp)
  1409.     move.l    8(sp),d0
  1410.     move.l    SysBase,a6
  1411.     jsr        -$15C(a6)
  1412.     move.l    (sp)+,a6
  1413. end;
  1414.  
  1415. procedure AddPort; xassembler;
  1416. asm
  1417.     move.l    a6,-(sp)
  1418.     move.l    8(sp),a1
  1419.     move.l    SysBase,a6
  1420.     jsr        -$162(a6)
  1421.     move.l    (sp)+,a6
  1422. end;
  1423.  
  1424. procedure RemPort; xassembler;
  1425. asm
  1426.     move.l    a6,-(sp)
  1427.     move.l    8(sp),a1
  1428.     move.l    SysBase,a6
  1429.     jsr        -$168(a6)
  1430.     move.l    (sp)+,a6
  1431. end;
  1432.  
  1433. procedure PutMsg; xassembler;
  1434. asm
  1435.     move.l    a6,-(sp)
  1436.     lea        8(sp),a6
  1437.     move.l    (a6)+,a1
  1438.     move.l    (a6)+,a0
  1439.     move.l    SysBase,a6
  1440.     jsr        -$16E(a6)
  1441.     move.l    (sp)+,a6
  1442. end;
  1443.  
  1444. function GetMsg; xassembler;
  1445. asm
  1446.     move.l    a6,-(sp)
  1447.     move.l    8(sp),a0
  1448.     move.l    SysBase,a6
  1449.     jsr        -$174(a6)
  1450.     move.l    d0,$C(sp)
  1451.     move.l    (sp)+,a6
  1452. end;
  1453.  
  1454. procedure ReplyMsg; xassembler;
  1455. asm
  1456.     move.l    a6,-(sp)
  1457.     move.l    8(sp),a1
  1458.     move.l    SysBase,a6
  1459.     jsr        -$17A(a6)
  1460.     move.l    (sp)+,a6
  1461. end;
  1462.  
  1463. function WaitPort; xassembler;
  1464. asm
  1465.     move.l    a6,-(sp)
  1466.     move.l    8(sp),a0
  1467.     move.l    SysBase,a6
  1468.     jsr        -$180(a6)
  1469.     move.l    d0,$C(sp)
  1470.     move.l    (sp)+,a6
  1471. end;
  1472.  
  1473. function FindPort; xassembler;
  1474. asm
  1475.     move.l    a6,-(sp)
  1476.     move.l    8(sp),a1
  1477.     move.l    SysBase,a6
  1478.     jsr        -$186(a6)
  1479.     move.l    d0,$C(sp)
  1480.     move.l    (sp)+,a6
  1481. end;
  1482.  
  1483. procedure AddLibrary; xassembler;
  1484. asm
  1485.     move.l    a6,-(sp)
  1486.     move.l    8(sp),a1
  1487.     move.l    SysBase,a6
  1488.     jsr        -$18C(a6)
  1489.     move.l    (sp)+,a6
  1490. end;
  1491.  
  1492. procedure RemLibrary; xassembler;
  1493. asm
  1494.     move.l    a6,-(sp)
  1495.     move.l    8(sp),a1
  1496.     move.l    SysBase,a6
  1497.     jsr        -$192(a6)
  1498.     move.l    (sp)+,a6
  1499. end;
  1500.  
  1501. function OldOpenLibrary; assembler;
  1502. var c_libName: string;
  1503. asm
  1504.     move.l    libName,-(sp)
  1505.     pea        c_libName
  1506.     jsr        PasToC
  1507.     move.l    a6,-(sp)
  1508.     lea        c_libName,a1
  1509.     move.l    SysBase,a6
  1510.     jsr        -$198(a6)
  1511.     move.l    d0,$110(sp)
  1512.     move.l    (sp)+,a6
  1513. end;
  1514.  
  1515. procedure CloseLibrary; xassembler;
  1516. asm
  1517.     move.l    a6,-(sp)
  1518.     move.l    8(sp),a1
  1519.     move.l    SysBase,a6
  1520.     jsr        -$19E(a6)
  1521.     move.l    (sp)+,a6
  1522. end;
  1523.  
  1524. function SetFunction; xassembler;
  1525. asm
  1526.     move.l    a6,-(sp)
  1527.     movem.l    8(sp),d0/a0-a1
  1528.     move.l    SysBase,a6
  1529.     jsr        -$1A4(a6)
  1530.     move.l    d0,$14(sp)
  1531.     move.l    (sp)+,a6
  1532. end;
  1533.  
  1534. procedure SumLibrary; xassembler;
  1535. asm
  1536.     move.l    a6,-(sp)
  1537.     move.l    8(sp),a1
  1538.     move.l    SysBase,a6
  1539.     jsr        -$1AA(a6)
  1540.     move.l    (sp)+,a6
  1541. end;
  1542.  
  1543. procedure AddDevice; xassembler;
  1544. asm
  1545.     move.l    a6,-(sp)
  1546.     move.l    8(sp),a1
  1547.     move.l    SysBase,a6
  1548.     jsr        -$1B0(a6)
  1549.     move.l    (sp)+,a6
  1550. end;
  1551.  
  1552. procedure RemDevice; xassembler;
  1553. asm
  1554.     move.l    a6,-(sp)
  1555.     move.l    8(sp),a1
  1556.     move.l    SysBase,a6
  1557.     jsr        -$1B6(a6)
  1558.     move.l    (sp)+,a6
  1559. end;
  1560.  
  1561. function OpenDevice; assembler;
  1562. var c_devName: string;
  1563. asm
  1564.     move.l    devName,-(sp)
  1565.     pea        c_devName
  1566.     jsr        PasToC
  1567.     move.l    a6,-(sp)
  1568.     lea        c_devName,a0
  1569.     lea        $10C(sp),a6
  1570.     move.l    (a6)+,d1
  1571.     move.l    (a6)+,a1
  1572.     move.l    (a6)+,d0
  1573.     move.l    SysBase,a6
  1574.     jsr        -$1BC(a6)
  1575.     move.b    d0,$11C(sp)
  1576.     move.l    (sp)+,a6
  1577. end;
  1578.  
  1579. procedure CloseDevice; xassembler;
  1580. asm
  1581.     move.l    a6,-(sp)
  1582.     move.l    8(sp),a1
  1583.     move.l    SysBase,a6
  1584.     jsr        -$1C2(a6)
  1585.     move.l    (sp)+,a6
  1586. end;
  1587.  
  1588. function DoIO; xassembler;
  1589. asm
  1590.     move.l    a6,-(sp)
  1591.     move.l    8(sp),a1
  1592.     move.l    SysBase,a6
  1593.     jsr        -$1C8(a6)
  1594.     move.b    d0,$C(sp)
  1595.     move.l    (sp)+,a6
  1596. end;
  1597.  
  1598. procedure SendIO; xassembler;
  1599. asm
  1600.     move.l    a6,-(sp)
  1601.     move.l    8(sp),a1
  1602.     move.l    SysBase,a6
  1603.     jsr        -$1CE(a6)
  1604.     move.l    (sp)+,a6
  1605. end;
  1606.  
  1607. function CheckIO; xassembler;
  1608. asm
  1609.     move.l    a6,-(sp)
  1610.     move.l    8(sp),a1
  1611.     move.l    SysBase,a6
  1612.     jsr        -$1D4(a6)
  1613.     tst.l    d0
  1614.     sne        d0
  1615.     neg.b    d0
  1616.     move.b    d0,$C(sp)
  1617.     move.l    (sp)+,a6
  1618. end;
  1619.  
  1620. function WaitIO; xassembler;
  1621. asm
  1622.     move.l    a6,-(sp)
  1623.     move.l    8(sp),a1
  1624.     move.l    SysBase,a6
  1625.     jsr        -$1DA(a6)
  1626.     move.b    d0,$C(sp)
  1627.     move.l    (sp)+,a6
  1628. end;
  1629.  
  1630. procedure AbortIO; xassembler;
  1631. asm
  1632.     move.l    a6,-(sp)
  1633.     move.l    8(sp),a1
  1634.     move.l    SysBase,a6
  1635.     jsr        -$1E0(a6)
  1636.     move.l    (sp)+,a6
  1637. end;
  1638.  
  1639. procedure AddResource; xassembler;
  1640. asm
  1641.     move.l    a6,-(sp)
  1642.     move.l    8(sp),a1
  1643.     move.l    SysBase,a6
  1644.     jsr        -$1E6(a6)
  1645.     move.l    (sp)+,a6
  1646. end;
  1647.  
  1648. procedure RemResource; xassembler;
  1649. asm
  1650.     move.l    a6,-(sp)
  1651.     move.l    8(sp),a1
  1652.     move.l    SysBase,a6
  1653.     jsr        -$1EC(a6)
  1654.     move.l    (sp)+,a6
  1655. end;
  1656.  
  1657. function OpenResource; assembler;
  1658. var c_resName: string;
  1659. asm
  1660.     move.l    resName,-(sp)
  1661.     pea        c_resName
  1662.     jsr        PasToC
  1663.     move.l    a6,-(sp)
  1664.     lea        c_resName,a1
  1665.     move.l    SysBase,a6
  1666.     jsr        -$1F2(a6)
  1667.     move.l    d0,$110(sp)
  1668.     move.l    (sp)+,a6
  1669. end;
  1670.  
  1671. function RawDoFmt; xassembler;
  1672. asm
  1673.     movem.l    a2-a3/a6,-(sp)
  1674.     lea        $10(sp),a6
  1675.     move.l    (a6)+,a3
  1676.     move.l    (a6)+,a2
  1677.     move.l    (a6)+,a1
  1678.     move.l    (a6)+,a0
  1679.     move.l    SysBase,a6
  1680.     jsr        -$20A(a6)
  1681.     move.l    d0,$20(sp)
  1682.     movem.l    (sp)+,a2-a3/a6
  1683. end;
  1684.  
  1685. function GetCC; xassembler;
  1686. asm
  1687.     movem.l    a2-a3/a6,-(sp)
  1688.     move.l    SysBase,a6
  1689.     jsr        -$210(a6)
  1690.     move.w    d0,$10(sp)
  1691.     movem.l    (sp)+,a2-a3/a6
  1692. end;
  1693.  
  1694. function TypeOfMem; xassembler;
  1695. asm
  1696.     move.l    a6,-(sp)
  1697.     move.l    8(sp),a1
  1698.     move.l    SysBase,a6
  1699.     jsr        -$216(a6)
  1700.     move.l    d0,$C(sp)
  1701.     move.l    (sp)+,a6
  1702. end;
  1703.  
  1704. function Procure; xassembler;
  1705. asm
  1706.     move.l    a6,-(sp)
  1707.     lea        8(sp),a6
  1708.     move.l    (a6)+,a1
  1709.     move.l    (a6)+,a0
  1710.     move.l    SysBase,a6
  1711.     jsr        -$21C(a6)
  1712.     move.b    d0,$10(sp)
  1713.     move.l    (sp)+,a6
  1714. end;
  1715.  
  1716. procedure Vacate; xassembler;
  1717. asm
  1718.     move.l    a6,-(sp)
  1719.     move.l    8(sp),a0
  1720.     move.l    SysBase,a6
  1721.     jsr        -$222(a6)
  1722.     move.l    (sp)+,a6
  1723. end;
  1724.  
  1725. function OpenLibrary; assembler;
  1726. var c_libName: string;
  1727. asm
  1728.     move.l    libName,-(sp)
  1729.     pea        c_libName
  1730.     jsr        PasToC
  1731.     move.l    a6,-(sp)
  1732.     lea        c_libName,a1
  1733.     move.l    $10C(sp),d0
  1734.     move.l    SysBase,a6
  1735.     jsr        -$228(a6)
  1736.     move.l    d0,$114(sp)
  1737.     move.l    (sp)+,a6
  1738. end;
  1739.  
  1740. procedure InitSemaphore; xassembler;
  1741. asm
  1742.     move.l    a6,-(sp)
  1743.     move.l    8(sp),a0
  1744.     move.l    SysBase,a6
  1745.     jsr        -$22E(a6)
  1746.     move.l    (sp)+,a6
  1747. end;
  1748.  
  1749. procedure ObtainSemaphore; xassembler;
  1750. asm
  1751.     move.l    a6,-(sp)
  1752.     move.l    8(sp),a0
  1753.     move.l    SysBase,a6
  1754.     jsr        -$234(a6)
  1755.     move.l    (sp)+,a6
  1756. end;
  1757.  
  1758. procedure ReleaseSemaphore; xassembler;
  1759. asm
  1760.     move.l    a6,-(sp)
  1761.     move.l    8(sp),a0
  1762.     move.l    SysBase,a6
  1763.     jsr        -$23A(a6)
  1764.     move.l    (sp)+,a6
  1765. end;
  1766.  
  1767. function AttemptSemaphore; xassembler;
  1768. asm
  1769.     move.l    a6,-(sp)
  1770.     move.l    8(sp),a0
  1771.     move.l    SysBase,a6
  1772.     jsr        -$240(a6)
  1773.     move.l    d0,$C(sp)
  1774.     move.l    (sp)+,a6
  1775. end;
  1776.  
  1777. procedure ObtainSemaphoreList; xassembler;
  1778. asm
  1779.     move.l    a6,-(sp)
  1780.     move.l    8(sp),a0
  1781.     move.l    SysBase,a6
  1782.     jsr        -$246(a6)
  1783.     move.l    (sp)+,a6
  1784. end;
  1785.  
  1786. procedure ReleaseSemaphoreList; xassembler;
  1787. asm
  1788.     move.l    a6,-(sp)
  1789.     move.l    8(sp),a0
  1790.     move.l    SysBase,a6
  1791.     jsr        -$24C(a6)
  1792.     move.l    (sp)+,a6
  1793. end;
  1794.  
  1795. function FindSemaphore; xassembler;
  1796. asm
  1797.     move.l    a6,-(sp)
  1798.     move.l    8(sp),a1
  1799.     move.l    SysBase,a6
  1800.     jsr        -$252(a6)
  1801.     move.l    d0,$C(sp)
  1802.     move.l    (sp)+,a6
  1803. end;
  1804.  
  1805. procedure AddSemaphore; xassembler;
  1806. asm
  1807.     move.l    a6,-(sp)
  1808.     move.l    8(sp),a1
  1809.     move.l    SysBase,a6
  1810.     jsr        -$258(a6)
  1811.     move.l    (sp)+,a6
  1812. end;
  1813.  
  1814. procedure RemSemaphore; xassembler;
  1815. asm
  1816.     move.l    a6,-(sp)
  1817.     move.l    8(sp),a1
  1818.     move.l    SysBase,a6
  1819.     jsr        -$25E(a6)
  1820.     move.l    (sp)+,a6
  1821. end;
  1822.  
  1823. function SumKickData; xassembler;
  1824. asm
  1825.     move.l    a6,-(sp)
  1826.     move.l    SysBase,a6
  1827.     jsr        -$264(a6)
  1828.     move.l    d0,8(sp)
  1829.     move.l    (sp)+,a6
  1830. end;
  1831.  
  1832. procedure AddMemList; xassembler;
  1833. asm
  1834.     move.l    a6,-(sp)
  1835.     lea        8(sp),a6
  1836.     move.l    (a6)+,a1
  1837.     move.l    (a6)+,a0
  1838.     move.l    (a6)+,d2
  1839.     move.l    (a6)+,d1
  1840.     move.l    (a6)+,d0
  1841.     move.l    SysBase,a6
  1842.     jsr        -$26A(a6)
  1843.     move.l    (sp)+,a6
  1844. end;
  1845.  
  1846. procedure CopyMem; xassembler;
  1847. asm
  1848.     move.l    a6,-(sp)
  1849.     lea        8(sp),a6
  1850.     move.l    (a6)+,d0
  1851.     move.l    (a6)+,a1
  1852.     move.l    (a6)+,a0
  1853.     move.l    SysBase,a6
  1854.     jsr        -$270(a6)
  1855.     move.l    (sp)+,a6
  1856. end;
  1857.  
  1858. procedure CopyMemQuick; xassembler;
  1859. asm
  1860.     move.l    a6,-(sp)
  1861.     lea        8(sp),a6
  1862.     move.l    (a6)+,d0
  1863.     move.l    (a6)+,a1
  1864.     move.l    (a6)+,a0
  1865.     move.l    SysBase,a6
  1866.     jsr        -$276(a6)
  1867.     move.l    (sp)+,a6
  1868. end;
  1869.  
  1870. procedure CacheClearU; xassembler;
  1871. asm
  1872.     move.l    a6,-(sp)
  1873.     move.l    SysBase,a6
  1874.     jsr        -$27C(a6)
  1875.     move.l    (sp)+,a6
  1876. end;
  1877.  
  1878. procedure CacheClearE; xassembler;
  1879. asm
  1880.     move.l    a6,-(sp)
  1881.     lea        8(sp),a6
  1882.     move.l    (a6)+,d1
  1883.     move.l    (a6)+,d0
  1884.     move.l    (a6)+,a0
  1885.     move.l    SysBase,a6
  1886.     jsr        -$282(a6)
  1887.     move.l    (sp)+,a6
  1888. end;
  1889.  
  1890. function CacheControl; xassembler;
  1891. asm
  1892.     move.l    a6,-(sp)
  1893.     lea        8(sp),a6
  1894.     move.l    (a6)+,d1
  1895.     move.l    (a6)+,d0
  1896.     move.l    SysBase,a6
  1897.     jsr        -$288(a6)
  1898.     move.l    d0,$10(sp)
  1899.     move.l    (sp)+,a6
  1900. end;
  1901.  
  1902. function CreateIORequest; xassembler;
  1903. asm
  1904.     move.l    a6,-(sp)
  1905.     movem.l    8(sp),d0/a0
  1906.     move.l    SysBase,a6
  1907.     jsr        -$28E(a6)
  1908.     move.l    d0,$10(sp)
  1909.     move.l    (sp)+,a6
  1910. end;
  1911.  
  1912. procedure DeleteIORequest; xassembler;
  1913. asm
  1914.     move.l    a6,-(sp)
  1915.     move.l    8(sp),a0
  1916.     move.l    SysBase,a6
  1917.     jsr        -$294(a6)
  1918.     move.l    (sp)+,a6
  1919. end;
  1920.  
  1921. function CreateMsgPort; xassembler;
  1922. asm
  1923.     move.l    a6,-(sp)
  1924.     move.l    SysBase,a6
  1925.     jsr        -$29A(a6)
  1926.     move.l    d0,8(sp)
  1927.     move.l    (sp)+,a6
  1928. end;
  1929.  
  1930. procedure DeleteMsgPort; xassembler;
  1931. asm
  1932.     move.l    a6,-(sp)
  1933.     move.l    8(sp),a0
  1934.     move.l    SysBase,a6
  1935.     jsr        -$2A0(a6)
  1936.     move.l    (sp)+,a6
  1937. end;
  1938.  
  1939. procedure ObtainSemaphoreShared; xassembler;
  1940. asm
  1941.     move.l    a6,-(sp)
  1942.     move.l    8(sp),a0
  1943.     move.l    SysBase,a6
  1944.     jsr        -$2A6(a6)
  1945.     move.l    (sp)+,a6
  1946. end;
  1947.  
  1948. function AllocVec; xassembler;
  1949. asm
  1950.     move.l    a6,-(sp)
  1951.     lea        8(sp),a6
  1952.     move.l    (a6)+,d1
  1953.     move.l    (a6)+,d0
  1954.     move.l    SysBase,a6
  1955.     jsr        -$2AC(a6)
  1956.     move.l    d0,$10(sp)
  1957.     move.l    (sp)+,a6
  1958. end;
  1959.  
  1960. procedure FreeVec; xassembler;
  1961. asm
  1962.     move.l    a6,-(sp)
  1963.     move.l    8(sp),a1
  1964.     move.l    SysBase,a6
  1965.     jsr        -$2B2(a6)
  1966.     move.l    (sp)+,a6
  1967. end;
  1968.  
  1969. procedure ColdReboot; xassembler;
  1970. asm
  1971.     move.l    a6,-(sp)
  1972.     move.l    SysBase,a6
  1973.     jsr        -$2D6(a6)
  1974.     move.l    (sp)+,a6
  1975. end;
  1976.  
  1977. procedure StackSwap; xassembler;
  1978. asm
  1979.     move.l    a6,-(sp)
  1980.     move.l    8(sp),a0
  1981.     move.l    SysBase,a6
  1982.     jsr        -$2DC(a6)
  1983.     move.l    (sp)+,a6
  1984. end;
  1985.  
  1986. function CachePreDMA; xassembler;
  1987. asm
  1988.     move.l    a6,-(sp)
  1989.     lea        8(sp),a6
  1990.     move.l    (a6)+,d1
  1991.     move.l    (a6)+,a1
  1992.     move.l    (a6)+,a0
  1993.     move.l    SysBase,a6
  1994.     jsr        -$2FA(a6)
  1995.     move.l    d0,$14(sp)
  1996.     move.l    (sp)+,a6
  1997. end;
  1998.  
  1999. function CachePostDMA; xassembler;
  2000. asm
  2001.     move.l    a6,-(sp)
  2002.     lea        8(sp),a6
  2003.     move.l    (a6)+,d1
  2004.     move.l    (a6)+,a1
  2005.     move.l    (a6)+,a0
  2006.     move.l    SysBase,a6
  2007.     jsr        -$300(a6)
  2008.     move.l    d0,$14(sp)
  2009.     move.l    (sp)+,a6
  2010. end;
  2011.  
  2012. end.
  2013.