home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / m2 / CycloneModules.lha / modules / txt / ExecL.def < prev    next >
Text File  |  1996-12-01  |  12KB  |  361 lines

  1. (*
  2. **    Cyclone Modula-2 Interface module:
  3. **    $VER: exec_protos.h 39.15 (1.10.93)
  4. **    Includes Release 40.15
  5. **
  6. **    C prototypes. For use with 32 bit integers only.
  7. **
  8. **    (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  9. **        All Rights Reserved
  10. **
  11. **      Interface module by Marcel Timmermans
  12. **      (C) Copyright 1995-1996 Marcel Timmermans
  13. **      All Rights Reserved
  14. *)
  15.  
  16. DEFINITION MODULE ExecL {"exec.library",33};
  17.  
  18. FROM SYSTEM IMPORT ADDRESS, SHORTSET, BITSET, LONGSET, WORD;
  19.  
  20. IMPORT ExecD,Reg;
  21.  
  22. (* 
  23.    Automatic variable must be declared when there is a library 
  24.    open code
  25.  *)
  26.  
  27. VAR 
  28.   execBase : ExecD.ExecBasePtr; (* Automatic filled in when using module *)    
  29.  
  30. PROCEDURE Supervisor(userFunction{Reg.A5}:PROC); CODE -30;
  31.  
  32. PROCEDURE InitCode(startClass{Reg.D0}:ExecD.ResidentFlagSet;
  33.                    version{Reg.D1}:LONGINT); CODE -72;
  34.  
  35. PROCEDURE InitStruct(initTable{Reg.A1}:ADDRESS;
  36.                      memory{Reg.A2}:ADDRESS;
  37.                      size{Reg.D0}:LONGCARD); CODE -78;
  38.  
  39. PROCEDURE MakeLibrary(vectors{Reg.A0}:ADDRESS;
  40.                       structure{Reg.A1}:ADDRESS;
  41.                       init{Reg.A2}:ADDRESS;
  42.                       dataSize{Reg.D0}:LONGINT;
  43.                       segList{Reg.D1}:ExecD.BPTR):ExecD.LibraryPtr; CODE -84;
  44.  
  45. PROCEDURE MakeFunctions(target{Reg.A0}:ADDRESS;
  46.                         functArray{Reg.A1}:ADDRESS;
  47.                         functDispBase{Reg.A2}:ADDRESS); CODE -90;
  48.  
  49. PROCEDURE FindResident(name{Reg.A1}:ADDRESS):ExecD.ResidentPtr; CODE -96;
  50.  
  51. (*------ diagnostics --------------------------------------------------*)
  52. PROCEDURE Alert(alertNum{7}:LONGINT;parameters{13}:ADDRESS); CODE -108;
  53. PROCEDURE Debug(flags{Reg.D0}:LONGSET); CODE -114;
  54.  
  55. (*------ interrupts ---------------------------------------------------*)
  56.  
  57. PROCEDURE Disable(); CODE -120;
  58.  
  59. PROCEDURE Enable(); CODE -126;
  60.  
  61. PROCEDURE Forbid(); CODE -132;
  62.  
  63. PROCEDURE Permit(); CODE -138;
  64.  
  65. PROCEDURE SetSR(newSR{Reg.D0}:BITSET;mask{Reg.D1}:BITSET):BITSET; CODE -144;
  66.  
  67. PROCEDURE SuperState():ADDRESS; CODE -150;
  68.  
  69. PROCEDURE UserState(sysStack{Reg.D0}:ADDRESS); CODE -156;
  70.  
  71. PROCEDURE AddIntServer(intNum{Reg.D0}: LONGINT;
  72.                        interrupt{Reg.A1}:ExecD.InterruptPtr); CODE -168;
  73.  
  74. PROCEDURE RemIntServer(intNum{Reg.D0}: LONGINT;
  75.                        interrupt{Reg.A1}:ExecD.InterruptPtr); CODE -174;
  76.  
  77. PROCEDURE Cause(interrupt{Reg.A1}:ExecD.InterruptPtr); CODE -180;
  78.  
  79. (*------ memory allocation --------------------------------------------*)
  80.  
  81. PROCEDURE Allocate(freeList{Reg.A0}:ExecD.MemHeaderPtr;
  82.                    byteSize{Reg.D0}:LONGINT):ADDRESS; CODE -186;
  83.  
  84. PROCEDURE Deallocate(freeList{Reg.A0}:ExecD.MemHeaderPtr;
  85.                      memoryBlock{Reg.A1}:ADDRESS;
  86.                      byteSize{Reg.D0}:LONGINT); CODE -192;
  87.  
  88. PROCEDURE AllocMem(byteSize{Reg.D0}:LONGINT;
  89.                    requirements{Reg.D1}:ExecD.MemReqSet):ADDRESS; CODE -198;
  90.  
  91. PROCEDURE AllocAbs(byteSize{Reg.D0}:LONGINT;
  92.                    location{Reg.A1}:ADDRESS):ADDRESS; CODE -204;
  93.  
  94. PROCEDURE FreeMem(memoryBlock{Reg.A1}:ADDRESS;
  95.                   byteSize{Reg.D0}:LONGINT); CODE -210;
  96.  
  97. PROCEDURE AvailMem(requirements{Reg.D1}:ExecD.MemReqSet):LONGINT; CODE -216;
  98.  
  99. PROCEDURE AllocEntry(
  100.               memList{Reg.A0}:ExecD.MemListPtr):ExecD.MemListPtr; CODE -222;
  101.  
  102. PROCEDURE FreeEntry(memList{Reg.A0}:ExecD.MemListPtr); CODE -228;
  103.  
  104. (*------ lists --------------------------------------------------------*)
  105.  
  106. PROCEDURE Insert(list{Reg.A0}:ExecD.ListPtr;
  107.                  node{Reg.A1}:ADDRESS;
  108.                  listNode{Reg.A2}:ADDRESS); CODE -234;
  109.  
  110. PROCEDURE AddHead(list{Reg.A0}:ExecD.ListPtr;
  111.                   node{Reg.A1}:ADDRESS); CODE -240;
  112.  
  113. PROCEDURE AddTail(list{Reg.A0}:ExecD.ListPtr;
  114.                   node{Reg.A1}:ADDRESS); CODE -246;
  115.  
  116. PROCEDURE Remove(node{Reg.A1}:ADDRESS); CODE -252;
  117.  
  118. PROCEDURE RemTail(list{Reg.A0}:ExecD.ListPtr):ADDRESS; CODE -264;
  119.  
  120. PROCEDURE RemHead(list{Reg.A0}:ExecD.ListPtr):ADDRESS; CODE -258;
  121.  
  122. PROCEDURE Enqueue(list{Reg.A0}:ExecD.ListPtr;
  123.                   node{Reg.A1}:ADDRESS); CODE -270;
  124.  
  125. PROCEDURE FindName(start{Reg.A0}:ADDRESS;
  126.                    name{Reg.A1}:ADDRESS):ADDRESS; CODE -276;
  127.  
  128. (*------ tasks --------------------------------------------------------*)
  129.  
  130. PROCEDURE AddTask(task{Reg.A1}:ExecD.TaskPtr;
  131.                   initialPC{Reg.A2}:ADDRESS;
  132.                   finalPC{Reg.A3}:ADDRESS); CODE -282;
  133.  
  134. PROCEDURE RemTask(task{Reg.A1}:ExecD.TaskPtr); CODE -288;
  135.  
  136. PROCEDURE FindTask(name{Reg.A1}:ADDRESS):ExecD.TaskPtr; CODE -294;
  137.  
  138. PROCEDURE SetTaskPri(task{Reg.A1}:ExecD.TaskPtr;
  139.                      priority{Reg.D0}:SHORTINT):SHORTINT; CODE -300;
  140.  
  141. PROCEDURE SetSignal(newSignals{Reg.D0}:LONGSET;
  142.                     signalMask{Reg.D1}:LONGSET):LONGSET; CODE -306;
  143.  
  144. PROCEDURE SetExcept(newSignals{Reg.D0}:LONGSET;
  145.                     signalMask{Reg.D1}:LONGSET):LONGSET; CODE -312;
  146.  
  147. PROCEDURE Wait(signalSet{Reg.D0}:LONGSET):LONGSET; CODE -318;
  148.  
  149. PROCEDURE Signal(task{Reg.A1}:ExecD.TaskPtr;
  150.                  signals{Reg.D0}:LONGSET); CODE -324;
  151.  
  152. PROCEDURE AllocSignal(
  153.            signalNum{Reg.D0}:LONGINT):LONGINT; CODE -330;
  154.  
  155. PROCEDURE FreeSignal(signalNum{Reg.D0}:LONGINT); CODE -336;
  156.  
  157. PROCEDURE AllocTrap(trapNum{Reg.D0}:LONGINT):LONGINT; CODE -342;
  158.  
  159. PROCEDURE FreeTrap(trapNum{Reg.D0}:LONGINT); CODE -348;
  160.  
  161. (*------ messages -----------------------------------------------------*)
  162.  
  163. PROCEDURE AddPort(port{Reg.A1}:ExecD.MsgPortPtr); CODE -354;
  164.  
  165. PROCEDURE RemPort(port{Reg.A1}:ExecD.MsgPortPtr); CODE -360;
  166.  
  167. PROCEDURE PutMsg(port{Reg.A0}:ExecD.MsgPortPtr;
  168.                  message{Reg.A1}:ADDRESS); CODE -366;
  169.  
  170. PROCEDURE GetMsg(port{Reg.A0}:ExecD.MsgPortPtr):ADDRESS; CODE -372;
  171.  
  172. PROCEDURE ReplyMsg(message{Reg.A1}:ADDRESS); CODE -378;
  173.  
  174. PROCEDURE WaitPort(port{Reg.A0}:ExecD.MsgPortPtr); CODE -384;
  175.  
  176. PROCEDURE FindPort(name{Reg.A1}:ADDRESS):ExecD.MsgPortPtr; CODE -390;
  177.  
  178. (*------ libraries ----------------------------------------------------*)
  179.  
  180. PROCEDURE AddLibrary(library{Reg.A1}:ExecD.LibraryPtr); CODE -396;
  181.  
  182. PROCEDURE RemLibrary(library{Reg.A1}:ExecD.LibraryPtr); CODE -402;
  183.  
  184. PROCEDURE OldOpenLibrary(libName{Reg.A1}:ADDRESS):ExecD.LibraryPtr; CODE -408;
  185.  
  186. PROCEDURE CloseLibrary(library{Reg.A1}:ExecD.LibraryPtr); CODE -414;
  187.  
  188. PROCEDURE SetFunction(library{Reg.A1}:ExecD.LibraryPtr;
  189.                       funcOffset{Reg.A0}:INTEGER;
  190.                       funcEntry{Reg.D0}:ADDRESS):ADDRESS; CODE -420;
  191.  
  192. PROCEDURE SumLibrary(library{Reg.A1}:ExecD.LibraryPtr); CODE -426;
  193.  
  194. PROCEDURE AddDevice(device{Reg.A1}:ExecD.DevicePtr); CODE -432;
  195.  
  196. PROCEDURE RemDevice(device{Reg.A1}:ExecD.DevicePtr); CODE -438;
  197.  
  198. PROCEDURE OpenDevice(devName{Reg.A0}:ADDRESS;
  199.                      unitNumber{Reg.D0}:LONGINT;
  200.                      ioRequest{Reg.A1}:ADDRESS;
  201.                      flags{Reg.D1}:LONGSET); CODE -444;
  202.  
  203. PROCEDURE CloseDevice(ioRequest{Reg.A1}:ADDRESS); CODE -450;
  204.  
  205. PROCEDURE DoIO(ioRequest{Reg.A1}:ADDRESS); CODE -456;
  206.  
  207. PROCEDURE SendIO(ioRequest{Reg.A1}:ADDRESS); CODE -462;
  208.  
  209. PROCEDURE CheckIO(ioRequest{Reg.A1}:ADDRESS):BOOLEAN; CODE -468;
  210.  
  211. PROCEDURE WaitIO(ioRequest{Reg.A1}:ADDRESS); CODE -474;
  212.  
  213. PROCEDURE AbortIO(ioRequest{Reg.A1}:ADDRESS); CODE -480;
  214.  
  215. (*------ resources ----------------------------------------------------*)
  216.  
  217. PROCEDURE AddResource(resource{Reg.A1}:ADDRESS); CODE -486;
  218.  
  219. PROCEDURE RemResource(resource{Reg.A1}:ADDRESS); CODE -492;
  220.  
  221. PROCEDURE OpenResource(resName{Reg.A1}:ADDRESS):ADDRESS; CODE -498;
  222.  
  223. (*------ private diagnostic support -----------------------------------*)
  224. (*------ misc ---------------------------------------------------------*)
  225. PROCEDURE RawDoFmt(formatString{Reg.A0}:ADDRESS;
  226.                    dataStream{Reg.A1}:ADDRESS;
  227.                    putChProc{Reg.A2}:ADDRESS;
  228.                    putChData{Reg.A3}:ADDRESS); CODE -522;
  229.  
  230. PROCEDURE GetCC():BITSET; CODE -528;
  231.  
  232. PROCEDURE TypeOfMem(address{Reg.A1}:ADDRESS):ExecD.MemReqSet; CODE -534;
  233.  
  234. PROCEDURE Procure(
  235.            semaphore{Reg.A0}:ExecD.SemaphorePtr;
  236.            bidMessage{Reg.A1}:ExecD.MessagePtr):LONGINT; CODE -540;
  237.  
  238. PROCEDURE Vacate(semaphore{Reg.A0}:ExecD.SemaphorePtr); CODE -546;
  239.  
  240. PROCEDURE OpenLibrary(libName{Reg.A1}:ADDRESS;
  241.                       version{Reg.D0}:LONGINT):ExecD.LibraryPtr; CODE -552;
  242.  
  243. (*--- functions in V33 or higher (distributed as Release 1.2) ---*)
  244. (*------ signal semaphores (note funny registers)----------------------*)
  245.  
  246. PROCEDURE InitSemaphore(
  247.            signalSemaphore{Reg.A0}:ExecD.SignalSemaphorePtr); CODE -558;
  248.  
  249. PROCEDURE ObtainSemaphore(
  250.            signalSemaphore{Reg.A0}:ExecD.SignalSemaphorePtr); CODE -564;
  251.  
  252. PROCEDURE ReleaseSemaphore(
  253.            signalSemaphore{Reg.A0}:ExecD.SignalSemaphorePtr); CODE -570;
  254.  
  255. PROCEDURE AttemptSemaphore(
  256.            signalSemaphore{Reg.A0}:ExecD.SignalSemaphorePtr
  257.           ):BOOLEAN; CODE -576;
  258.  
  259. PROCEDURE ObtainSemaphoreList(list{Reg.A0}:ExecD.ListPtr); CODE -582;
  260.  
  261. PROCEDURE ReleaseSemaphoreList(list{Reg.A0}:ExecD.ListPtr); CODE -588;
  262.  
  263. PROCEDURE FindSemaphore(
  264.             name{Reg.A1}:ADDRESS):ExecD.SignalSemaphorePtr; CODE -594;
  265.  
  266. PROCEDURE AddSemaphore(
  267.             signalSemaphore{Reg.A1}:ExecD.SignalSemaphorePtr); CODE -600;
  268.  
  269. PROCEDURE RemSemaphore(
  270.             signalSemaphore{Reg.A1}:ExecD.SignalSemaphorePtr); CODE -606;
  271.  
  272. (*------ kickmem support ----------------------------------------------*)
  273.  
  274. PROCEDURE SumKickData():LONGCARD; CODE -612;
  275.  
  276. PROCEDURE AddMemList(size{Reg.D0}:LONGINT;
  277.                      attributes{Reg.D1}:ExecD.MemReqSet;
  278.                      pri{Reg.D2}:LONGINT;
  279.                      base{Reg.A0}:ADDRESS;
  280.                      name{Reg.A1}:ADDRESS):LONGINT; CODE -618;
  281.  
  282. PROCEDURE CopyMem(source{Reg.A0}:ADDRESS;
  283.                   dest{Reg.A1}:ADDRESS;
  284.                   size{Reg.D0}:LONGINT); CODE -624;
  285.  
  286. PROCEDURE CopyMemQuick(source{Reg.A0}:ADDRESS;
  287.                        dest{Reg.A1}:ADDRESS;
  288.                        size{Reg.D0}:LONGINT); CODE -630;
  289.  
  290. (*------ cache --------------------------------------------------------*)
  291. (*--- functions in V36 or higher (distributed as Release 2.0) ---*)
  292.  
  293. PROCEDURE CacheClearU; CODE -636;
  294.  
  295. PROCEDURE CacheClearE(address{Reg.A0}:ADDRESS;
  296.                       length{Reg.D0}:LONGCARD;
  297.                       caches{Reg.D1}:ExecD.CacheFlagSet); CODE -642;
  298.  
  299. PROCEDURE CacheControl(cacheBits{Reg.D0},
  300.                        cacheMask{Reg.D1}:ExecD.CacheFlagSet
  301.                        ):ExecD.CacheFlagSet; CODE -648;
  302.  
  303. (*------ misc ---------------------------------------------------------*)
  304.  
  305. PROCEDURE CreateIORequest(replyPort{Reg.A0}:ExecD.MsgPortPtr;
  306.                           size{Reg.D0}:LONGINT):ADDRESS ; CODE -654;
  307.  
  308. PROCEDURE DeleteIORequest(iorequest{Reg.A0}:ADDRESS); CODE -660;
  309.  
  310. PROCEDURE CreateMsgPort():ExecD.MsgPortPtr; CODE -666;
  311.  
  312. PROCEDURE DeleteMsgPort(port{Reg.A0}:ExecD.MsgPortPtr); CODE -672;
  313.  
  314. PROCEDURE ObtainSemaphoreShared(
  315.             sigSem{Reg.A0}:ExecD.SignalSemaphorePtr); CODE -678;
  316.  
  317. (*------ even more memory support -------------------------------------*)
  318.  
  319. PROCEDURE AllocVec(byteSize{Reg.D0}:LONGINT;
  320.                    requirements{Reg.D1}:ExecD.MemReqSet):ADDRESS; CODE -684;
  321.  
  322. PROCEDURE FreeVec(memoryBlock{Reg.A1}:ADDRESS); CODE -690;
  323.  
  324. PROCEDURE CreatePool(requirements{Reg.D0}: ExecD.MemReqSet;
  325.              puddleSize{Reg.D1} : LONGINT;
  326.              puddleThresh{Reg.D2}: LONGINT): ADDRESS; CODE -696;
  327.  
  328. PROCEDURE DeletePool(poolHeader{Reg.A0}: ADDRESS); CODE -702;
  329.  
  330. PROCEDURE AllocPooled(poolHeader{Reg.A0}:ADDRESS;
  331.                       memSize{Reg.D0}:LONGINT):ADDRESS; CODE -708;
  332.  
  333. PROCEDURE FreePooled(poolHeader{Reg.A0}:ADDRESS;
  334.                      memory{Reg.A1}:ADDRESS;
  335.                      memSize{Reg.D0}:LONGINT); CODE -714;
  336.  
  337. (*------ misc ---------------------------------------------------------*)
  338.  
  339. PROCEDURE ColdReboot; CODE -726;
  340.  
  341. PROCEDURE StackSwap(VAR newStack{Reg.A0}:ExecD.StackSwapStruct); CODE -732;
  342.  
  343. (*------ task trees ---------------------------------------------------*)
  344.  
  345. PROCEDURE ChildFree(tid{0}:ADDRESS); CODE -738;
  346. PROCEDURE ChildOrphan(tid{0}:ADDRESS); CODE-744;
  347. PROCEDURE ChildStatus(tid{0}:ADDRESS); CODE -750;
  348. PROCEDURE ChildWait(tid{0}:ADDRESS); CODE -756;
  349.  
  350. (* ------ future expansion ---------------------------------------------*)
  351.  
  352. PROCEDURE CachePreDMA(vaddress{Reg.A0}:ADDRESS;
  353.                       VAR length{Reg.A1}:LONGINT;
  354.                       flags{Reg.D1}:LONGCARD):ADDRESS; CODE -762;
  355.  
  356. PROCEDURE CachePostDMA(vaddress{Reg.A0}:ADDRESS;
  357.                        VAR length{Reg.A1}:LONGINT;
  358.                        flags{Reg.D1}:LONGCARD); CODE -768;
  359.  
  360. END ExecL.
  361.