home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / DVD!OMA2.DMS / in.adf / Examples / Library / Exec / Exec.asm next >
Encoding:
Assembly Source File  |  1994-10-13  |  8.5 KB  |  483 lines

  1.  
  2. ; Exec-Interface
  3.  
  4.     INCLUDE    "lvo/exec.i"
  5.  
  6. _SysBase    EQU    4
  7.  
  8.  
  9.  
  10.  
  11.  
  12. CREATE MACRO Name,Registermaske,Registeranzahl,Satz1,Anzahl1,Satz2,Anzahl2...
  13.  
  14.     IFD    \1
  15.     XDEF    _\1
  16.  
  17. _\1
  18.     IFEQ     \3-1
  19.     move.l    \2,-(SP)
  20.     ELSE
  21.     movem.l    \2,-(SP)
  22.     ENDC
  23.  
  24. TIEFE    SET    4+4*\3
  25.     IFNC     '\4',''
  26.     SATZ    \4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i,\j
  27.     ENDC
  28.  
  29.     move.l    _SysBase,a6
  30.     jsr        _LVO\1(a6)
  31.     IFEQ     \3-1
  32.     move.l    (SP)+,\2
  33.     ELSE
  34.     movem.l    (SP)+,\2
  35.     ENDC
  36.     rts
  37.  
  38.     ENDC
  39.  
  40.     ENDM
  41.  
  42.  
  43.  
  44.  
  45.  
  46. SATZ    MACRO    Satz1,Anzahl1,Satz2,Anzahl2...
  47.     IFEQ     \2-1
  48.     move.l    TIEFE(SP),\1
  49.     ELSE
  50.     movem.l    TIEFE(SP),\1
  51.     ENDC
  52. TIEFE    SET    TIEFE+4*\2
  53.     IFNC     '\3',''
  54.     SATZ    \3,\4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i
  55.     ENDC
  56.     ENDM
  57.  
  58.  
  59.  
  60.  
  61.  
  62. ; Supervisor()
  63. ;    CREATE    Supervisor,a6,1
  64.  
  65. ; ExitIntr()
  66. ;    CREATE    ExitIntr,a6,1
  67.  
  68. ; Schedule()
  69. ;    CREATE    Schedule,a6,1
  70.  
  71. ; Reschedule()
  72. ;    CREATE    Reschedule,a6,1
  73.  
  74. ; Switch()
  75. ;    CREATE    Switch,a6,1
  76.  
  77. ; Dispatch()
  78. ;    CREATE    Dispatch,a6,1
  79.  
  80. ; Exception()
  81. ;    CREATE    Exception,a6,1
  82.  
  83. ; InitCode(startClass,version)(D0/D1)
  84.     CREATE    InitCode,a6,1,d0-d1,2
  85.  
  86. ; InitStruct(initTable,memory,size)(A1/A2,D0)
  87.     CREATE    InitStruct,a2/a6,2,a1-a2,2,d0,1
  88.  
  89. ; MakeLibrary(funcInit,structInit,libInit,dataSize,codeSize)(A0/A1/A2,D0/D1)
  90.     CREATE    MakeLibrary,a2/a6,2,a0-a2,3,d0-d1,2
  91.  
  92. ; MakeFunctions(target,functionArray,funcDispBase)(A0,A1,A2)
  93.     CREATE    MakeFunctions,a2/a6,2,a0-a2,3
  94.  
  95. ; FindResident(name)(A1)
  96.     CREATE    FindResident,a6,1,a1,1
  97.  
  98. ; InitResident(resident,segList)(A1,D1)
  99.     CREATE    InitResident,a6,1,a1,1,d1,1
  100.  
  101. ; Alert(alertNum,parameters)(D7,A5)
  102.     CREATE    Alert,d7/a5/a6,3,d7/a5,2
  103.  
  104. ; Debug()
  105.     CREATE    Debug,a6,1
  106.  
  107. ; Disable()
  108.     CREATE    Disable,a6,1
  109.  
  110. ; Enable()
  111.     CREATE    Enable,a6,1
  112.  
  113. ; Forbid()
  114.     CREATE    Forbid,a6,1
  115.  
  116. ; Permit()
  117.     CREATE    Permit,a6,1
  118.  
  119. ; SetSR(newSR,mask)(D0/D1)
  120.     CREATE    SetSR,a6,1,d0-d1,2
  121.  
  122. ; SuperState()
  123.     CREATE    SuperState,a6,1
  124.  
  125. ; UserState(sysStack)(D0)
  126.     CREATE    UserState,a6,1,d0,1
  127.  
  128. ; SetIntVector(intNumber,interrupt)(D0/A1)
  129.     CREATE    SetIntVector,a6,1,d0/a1,2
  130.  
  131. ; AddIntServer(intNumber,interrupt)(D0/A1)
  132.     CREATE    AddIntServer,a6,1,d0/a1,2
  133.  
  134. ; RemIntServer(intNumber,interrupt)(D0/A1)
  135.     CREATE    RemIntServer,a6,1,d0/a1,2
  136.  
  137. ; Cause(interrupt)(A1)
  138.     CREATE    Cause,a6,1,a1,1
  139.  
  140. ; Allocate(freeList,byteSize)(A0,D0)
  141.     CREATE    Allocate,a6,1,a0,1,d0,1
  142.  
  143. ; Deallocate(freeList,memoryBlock,byteSize)(A0/A1,D0)
  144.     CREATE    Deallocate,a6,1,a0-a1,2,d0,1
  145.  
  146. ; AllocMem(byteSize,requirements)(D0/D1)
  147.     CREATE    AllocMem,a6,1,d0-d1,2
  148.  
  149. ; AllocAbs(byteSize,location)(D0/A1)
  150.     CREATE    AllocAbs,a6,1,d0/a1,2
  151.  
  152. ; FreeMem(memoryBlock,byteSize)(A1,D0)
  153.     CREATE    FreeMem,a6,1,a1,1,d0,1
  154.  
  155. ; AvailMem(requirements)(D1)
  156.     CREATE    AvailMem,a6,1,d1,1
  157.  
  158. ; AllocEntry(entry)(A0)
  159.     CREATE    AllocEntry,a6,1,a0,1
  160.  
  161. ; FreeEntry(entry)(A0)
  162.     CREATE    FreeEntry,a6,1,a0,1
  163.  
  164. ; Insert(list,node,pred)(A0/A1/A2)
  165.     CREATE    Insert,a2/a6,2,a0-a2,3
  166.  
  167. ; AddHead(list,node)(A0/A1)
  168.     CREATE    AddHead,a6,1,a0-a1,2
  169.  
  170. ; AddTail(list,node)(A0/A1)
  171.     CREATE    AddTail,a6,1,a0-a1,2
  172.  
  173. ; Remove(node)(A1)
  174.     CREATE    Remove,a6,1,a1,1
  175.  
  176. ; RemHead(list)(A0)
  177.     CREATE    RemHead,a6,1,a0,1
  178.  
  179. ; RemTail(list)(A0)
  180.     CREATE    RemTail,a6,1,a0,1
  181.  
  182. ; Enqueue(list,node)(A0/A1)
  183.     CREATE    Enqueue,a6,1,a0-a1,2
  184.  
  185. ; FindName(list,name)(A0/A1)
  186.     CREATE    FindName,a6,1,a0-a1,2
  187.  
  188. ; AddTask(task,initPC,finalPC)(A1/A2/A3)
  189.     CREATE    AddTask,a2-a3/a6,3,a1-a3,3
  190.  
  191. ; RemTask(task)(A1)
  192.     CREATE    RemTask,a6,1,a1,1
  193.  
  194. ; FindTask(name)(A1)
  195.     CREATE    FindTask,a6,1,a1,1
  196.  
  197. ; SetTaskPri(task,priority)(A1,D0)
  198.     CREATE    SetTaskPri,a6,1,a1,1,d0,1
  199.  
  200. ; SetSignal(newSignals,signalSet)(D0/D1)
  201.     CREATE    SetSignal,a6,1,d0-d1,2
  202.  
  203. ; SetExcept(newSignals,signalSet)(D0/D1)
  204.     CREATE    SetExcept,a6,1,d0-d1,2
  205.  
  206. ; Wait(signalSet)(D0)
  207.     CREATE    Wait,a6,1,d0,1
  208.  
  209. ; Signal(task,signalSet)(A1,D0)
  210.     CREATE    Signal,a6,1,a1,1,d0,1
  211.  
  212. ; AllocSignal(signalNum)(D0)
  213.     CREATE    AllocSignal,a6,1,d0,1
  214.  
  215. ; FreeSignal(signalNum)(D0)
  216.     CREATE    FreeSignal,a6,1,d0,1
  217.  
  218. ; AllocTrap(trapNum)(D0)
  219.     CREATE    AllocTrap,a6,1,d0,1
  220.  
  221. ; FreeTrap(trapNum)(D0)
  222.     CREATE    FreeTrap,a6,1,d0,1
  223.  
  224. ; AddPort(port)(A1)
  225.     CREATE    AddPort,a6,1,a1,1
  226.  
  227. ; RemPort(port)(A1)
  228.     CREATE    RemPort,a6,1,a1,1
  229.  
  230. ; PutMsg(port,message)(A0/A1)
  231.     CREATE    PutMsg,a6,1,a0-a1,2
  232.  
  233. ; GetMsg(port)(A0)
  234.     CREATE    GetMsg,a6,1,a0,1
  235.  
  236. ; ReplyMsg(message)(A1)
  237.     CREATE    ReplyMsg,a6,1,a1,1
  238.  
  239. ; WaitPort(port)(A0)
  240.     CREATE    WaitPort,a6,1,a0,1
  241.  
  242. ; FindPort(name)(A1)
  243.     CREATE    FindPort,a6,1,a1,1
  244.  
  245. ; AddLibrary(library)(A1)
  246.     CREATE    AddLibrary,a6,1,a1,1
  247.  
  248. ; RemLibrary(library)(A1)
  249.     CREATE    RemLibrary,a6,1,a1,1
  250.  
  251. ; OldOpenLibrary(libName)(A1)
  252.     CREATE    OldOpenLibrary,a6,1,a1,1
  253.  
  254. ; CloseLibrary(library)(A1)
  255.     CREATE    CloseLibrary,a6,1,a1,1
  256.  
  257. ; SetFunction(library,funcOffset,funcEntry)(A1,A0,D0)
  258.     CREATE    SetFunction,a6,1,a1,1,a0,1,d0,1
  259.  
  260. ; SumLibrary(library)(A1)
  261.     CREATE    SumLibrary,a6,1,a1,1
  262.  
  263. ; AddDevice(device)(A1)
  264.     CREATE    AddDevice,a6,1,a1,1
  265.  
  266. ; RemDevice(device)(A1)
  267.     CREATE    RemDevice,a6,1,a1,1
  268.  
  269. ; OpenDevice(devName,unit,ioRequest,flags)(A0,D0/A1,D1)
  270.     CREATE    OpenDevice,a6,1,a0,1,d0/a1,2,d1,1
  271.  
  272. ; CloseDevice(ioRequest)(A1)
  273.     CREATE    CloseDevice,a6,1,a1,1
  274.  
  275. ; DoIO(ioRequest)(A1)
  276.     CREATE    DoIO,a6,1,a1,1
  277.  
  278. ; SendIO(ioRequest)(A1)
  279.     CREATE    SendIO,a6,1,a1,1
  280.  
  281. ; CheckIO(ioRequest)(A1)
  282.     CREATE    CheckIO,a6,1,a1,1
  283.  
  284. ; WaitIO(ioRequest)(A1)
  285.     CREATE    WaitIO,a6,1,a1,1
  286.  
  287. ; AbortIO(ioRequest)(A1)
  288.     CREATE    AbortIO,a6,1,a1,1
  289.  
  290. ; AddResource(resource)(A1)
  291.     CREATE    AddResource,a6,1,a1,1
  292.  
  293. ; RemResource(resource)(A1)
  294.     CREATE    RemResource,a6,1,a1,1
  295.  
  296. ; OpenResource(resName,version)(A1,D0)
  297.     CREATE    OpenResource,a6,1,a1,1,d0,1
  298.  
  299. ; RawIOInit()
  300.     CREATE    RawIOInit,a6,1
  301.  
  302. ; RawMayGetChar()
  303.     CREATE    RawMayGetChar,a6,1
  304.  
  305. ; RawPutChar(char)(d0)
  306.     CREATE    RawPutChar,a6,1,d0,1
  307.  
  308. ; RawDoFmt()(A0/A1/A2/A3)
  309.     CREATE    RawDoFmt,a2-a3/a6,3,a0-a3,4
  310.  
  311. ; GetCC()
  312.     CREATE    GetCC,a6,1
  313.  
  314. ; TypeOfMem(address)(A1);
  315.     CREATE    TypeOfMem,a6,1,a1,1
  316.  
  317. ; Procure(semaport,bidMsg)(A0/A1)
  318.     CREATE    Procure,a6,1,a0-a1,2
  319.  
  320. ; Vacate(semaport)(A0)
  321.     CREATE    Vacate,a6,1,a0,1
  322.  
  323. ; OpenLibrary(libName,version)(A1,D0)
  324.     CREATE    OpenLibrary,a6,1,a1,1,d0,1
  325.  
  326. ; InitSemaphore(sigSem)(A0)
  327.     CREATE    InitSemaphore,a6,1,a0,1
  328.  
  329. ; ObtainSemaphore(sigSem)(A0)
  330.     CREATE    ObtainSemaphore,a6,1,a0,1
  331.  
  332. ; ReleaseSemaphore(sigSem)(A0)
  333.     CREATE    ReleaseSemaphore,a6,1,a0,1
  334.  
  335. ; AttemptSemaphore(sigSem)(A0)
  336.     CREATE    AttemptSemaphore,a6,1,a0,1
  337.  
  338. ; ObtainSemaphoreList(sigSem)(A0)
  339.     CREATE    ObtainSemaphoreList,a6,1,a0,1
  340.  
  341. ; ReleaseSemaphoreList(sigSem)(A0)
  342.     CREATE    ReleaseSemaphoreList,a6,1,a0,1
  343.  
  344. ; FindSemaphore(sigSem)(A1)
  345.     CREATE    FindSemaphore,a6,1,a1,1
  346.  
  347. ; AddSemaphore(sigSem)(A1)
  348.     CREATE    AddSemaphore,a6,1,a1,1
  349.  
  350. ; RemSemaphore(sigSem)(A1)
  351.     CREATE    RemSemaphore,a6,1,a1,1
  352.  
  353. ; SumKickData()
  354.     CREATE    SumKickData,a6,1
  355.  
  356. ; AddMemList(size,attributes,pri,base,name)(D0/D1/D2/A0/A1)
  357.     CREATE    AddMemList,d2/a6,2,d0-d2,3,a0-a1,2
  358.  
  359. ; CopyMem(source,dest,size)(A0/A1,D0)
  360.     CREATE    CopyMem,a6,1,a0-a1,2,d0,1
  361.  
  362. ; CopyMemQuick(source,dest,size)(A0/A1,D0)
  363.     CREATE    CopyMemQuick,a6,1,a0-a1,2,d0,1
  364.  
  365.  
  366.  
  367.  
  368.  
  369. ; Offsets
  370.  
  371.     IFD    OFFSETS
  372.  
  373.     XDEF    _LVOSupervisor
  374.     XDEF    _LVOExitIntr
  375.     XDEF    _LVOSchedule
  376.     XDEF    _LVOReschedule
  377.     XDEF    _LVOSwitch
  378.     XDEF    _LVODispatch
  379.     XDEF    _LVOException
  380.     XDEF    _LVOInitCode
  381.     XDEF    _LVOInitStruct
  382.     XDEF    _LVOMakeLibrary
  383.     XDEF    _LVOMakeFunctions
  384.     XDEF    _LVOFindResident
  385.     XDEF    _LVOInitResident
  386.     XDEF    _LVOAlert
  387.     XDEF    _LVODebug
  388.     XDEF    _LVODisable
  389.     XDEF    _LVOEnable
  390.     XDEF    _LVOForbid
  391.     XDEF    _LVOPermit
  392.     XDEF    _LVOSetSR
  393.     XDEF    _LVOSuperState
  394.     XDEF    _LVOUserState
  395.     XDEF    _LVOSetIntVector
  396.     XDEF    _LVOAddIntServer
  397.     XDEF    _LVORemIntServer
  398.     XDEF    _LVOCause
  399.     XDEF    _LVOAllocate
  400.     XDEF    _LVODeallocate
  401.     XDEF    _LVOAllocMem
  402.     XDEF    _LVOAllocAbs
  403.     XDEF    _LVOFreeMem
  404.     XDEF    _LVOAvailMem
  405.     XDEF    _LVOAllocEntry
  406.     XDEF    _LVOFreeEntry
  407.     XDEF    _LVOInsert
  408.     XDEF    _LVOAddHead
  409.     XDEF    _LVOAddTail
  410.     XDEF    _LVORemove
  411.     XDEF    _LVORemHead
  412.     XDEF    _LVORemTail
  413.     XDEF    _LVOEnqueue
  414.     XDEF    _LVOFindName
  415.     XDEF    _LVOAddTask
  416.     XDEF    _LVORemTask
  417.     XDEF    _LVOFindTask
  418.     XDEF    _LVOSetTaskPri
  419.     XDEF    _LVOSetSignal
  420.     XDEF    _LVOSetExcept
  421.     XDEF    _LVOWait
  422.     XDEF    _LVOSignal
  423.     XDEF    _LVOAllocSignal
  424.     XDEF    _LVOFreeSignal
  425.     XDEF    _LVOAllocTrap
  426.     XDEF    _LVOFreeTrap
  427.     XDEF    _LVOAddPort
  428.     XDEF    _LVORemPort
  429.     XDEF    _LVOPutMsg
  430.     XDEF    _LVOGetMsg
  431.     XDEF    _LVOReplyMsg
  432.     XDEF    _LVOWaitPort
  433.     XDEF    _LVOFindPort
  434.     XDEF    _LVOAddLibrary
  435.     XDEF    _LVORemLibrary
  436.     XDEF    _LVOOldOpenLibrary
  437.     XDEF    _LVOCloseLibrary
  438.     XDEF    _LVOSetFunction
  439.     XDEF    _LVOSumLibrary
  440.     XDEF    _LVOAddDevice
  441.     XDEF    _LVORemDevice
  442.     XDEF    _LVOOpenDevice
  443.     XDEF    _LVOCloseDevice
  444.     XDEF    _LVODoIO
  445.     XDEF    _LVOSendIO
  446.     XDEF    _LVOCheckIO
  447.     XDEF    _LVOWaitIO
  448.     XDEF    _LVOAbortIO
  449.     XDEF    _LVOAddResource
  450.     XDEF    _LVORemResource
  451.     XDEF    _LVOOpenResource
  452.     XDEF    _LVORawIOInit
  453.     XDEF    _LVORawMayGetChar
  454.     XDEF    _LVORawPutChar
  455.     XDEF    _LVORawDoFmt
  456.     XDEF    _LVOGetCC
  457.     XDEF    _LVOTypeOfMem
  458.     XDEF    _LVOProcure
  459.     XDEF    _LVOVacate
  460.     XDEF    _LVOOpenLibrary
  461.     XDEF    _LVOInitSemaphore
  462.     XDEF    _LVOObtainSemaphore
  463.     XDEF    _LVOReleaseSemaphore
  464.     XDEF    _LVOAttemptSemaphore
  465.     XDEF    _LVOObtainSemaphoreList
  466.     XDEF    _LVOReleaseSemaphoreList
  467.     XDEF    _LVOFindSemaphore
  468.     XDEF    _LVOAddSemaphore
  469.     XDEF    _LVORemSemaphore
  470.     XDEF    _LVOSumKickData
  471.     XDEF    _LVOAddMemList
  472.     XDEF    _LVOCopyMem
  473.     XDEF    _LVOCopyMemQuick
  474.  
  475.     ENDC
  476.  
  477.  
  478.  
  479.  
  480.  
  481.     END
  482.  
  483.