home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 420.lha / OdinLibrary_v2.7 / odinglue.asm < prev    next >
Encoding:
Assembly Source File  |  1990-10-01  |  4.1 KB  |  242 lines

  1. ;odinglue.asm 
  2. ;Created 4-Jul-90 by Peter Oerbaek
  3. ;Last updated 2-Sep-90 by Peter Oerbaek
  4. ;This is in the public domain.
  5. ;C-interface gluecode for odin.library V2.7
  6. ;Assemble with 'as' for Aztec-C 3.40a or later
  7. ;Assemble with Assem/A68K for Lattice / DICE / PDC
  8. ;Assembles OK as is with A68K 2.6!!!!
  9.  
  10. ;public    macro        ;de-comment this for use with Assem
  11. ;    XDEF    \1
  12. ;    endm
  13.  
  14. __CreateEnvelope    equ    -30
  15. __InitEnvelope    equ    -36
  16. __DisposeEnvelope    equ    -42
  17. __StartTask    equ    -48
  18. __StartProcess    equ    -54
  19. __In        equ    -60
  20. __Rd        equ    -66
  21. __Out        equ    -72
  22. __CopyOut        equ    -78
  23. __Eval        equ    -84
  24. __Inp        equ    -90
  25. __Rdp        equ    -96
  26. __AwaitNamedEnvelope equ    -102
  27. __PollNamedEnvelope    equ    -108
  28. __OutEmptyEnvelope    equ    -114
  29.  
  30. ;--- Version 2 additions
  31. __TimedIn        equ    -120
  32. __TimedRd        equ    -126
  33. __AsyncIn        equ    -132
  34. __AsyncRd        equ    -138
  35. __AwaitTimed    equ    -144
  36. __AsyncRequest    equ    -150
  37. __UniqueName    equ    -156
  38.  
  39.     public    _OdinBase        ;for use with Manx 'as'
  40. ;    XREF    _OdinBase        ;for use with Assem
  41.  
  42. _InitEnvelope:
  43.     movem.l    a2/a6,-(sp)    ;a6,a2,pc,env,name,len,copyfunc
  44.     move.l    12(sp),a1
  45.     move.l    16(sp),a0
  46.     move.l    20(sp),d0
  47.     move.l    24(sp),a2
  48.     move.l    _OdinBase,a6
  49.     jsr    __InitEnvelope(a6)
  50.     movem.l    (sp)+,a2/a6
  51.     rts
  52.     public _InitEnvelope
  53.  
  54. _In:
  55.     moveq.l    #__In,d1
  56.     bra.s    simplecall
  57.     public    _In
  58.  
  59. _Out:
  60.     moveq.l    #__Out,d1
  61.     bra.s    simplecall
  62.     public    _Out
  63.  
  64. _CopyOut:
  65.     moveq.l    #__CopyOut,d1
  66. ;    bra.s    simplecall
  67.     public    _CopyOut
  68.  
  69. simplecall:    ;call with only parameter in A1
  70.     move.l    a6,-(sp)        ;a6,pc,env
  71.     move.l    8(sp),a1
  72.     move.l    _OdinBase,a6
  73.     jsr    0(a6,d1.l)
  74.     move.l    (sp)+,a6
  75.     rts
  76.     
  77. _Rd:
  78.     moveq.l    #__Rd,d1
  79.     bra.s    simplecall
  80.     public    _Rd
  81.  
  82.  
  83. _Inp:
  84.     moveq.l    #__Inp,d1
  85.     bra.s    simplecall
  86.     public    _Inp
  87.  
  88. _Rdp:
  89.     moveq.l    #__Rdp,d1
  90.     bra.s    simplecall
  91.     public    _Rdp
  92.  
  93. _Eval:
  94.     movem.l    d2/a6,-(sp)    ;a6,d2,pc,a1,d0,d1,d2
  95.     move.l    12(sp),a1
  96.     movem.l    16(sp),d0-d2
  97.     move.l    _OdinBase,a6
  98.     jsr    __Eval(a6)
  99.     movem.l    (sp)+,d2/a6
  100.     rts
  101.     public    _Eval
  102.  
  103. _StartTask:
  104.     move.l    a6,-(sp)        ;a6,pc,proc,name,pri,stack
  105.     movem.l    8(sp),a0/a1
  106.     movem.l    16(sp),d0/d1
  107.     move.l    _OdinBase,a6
  108.     jsr    __StartTask(a6)
  109.     move.l    (sp)+,a6
  110.     rts
  111.     public    _StartTask
  112.  
  113. _StartProcess:
  114.     move.l    a6,-(sp)
  115.     movem.l    8(sp),a0/a1
  116.     movem.l    16(sp),d0/d1
  117.     move.l    _OdinBase,a6
  118.     jsr    __StartProcess(a6)
  119.     move.l    (sp)+,a6
  120.     rts
  121.     public    _StartProcess
  122.  
  123. _AwaitNamedEnvelope:
  124.     move.l    a6,-(sp)
  125.     move.l    8(sp),a0
  126.     move.l    _OdinBase,a6
  127.     jsr    __AwaitNamedEnvelope(a6)
  128.     move.l    (sp)+,a6
  129.     rts
  130.     public    _AwaitNamedEnvelope
  131.  
  132. _PollNamedEnvelope:
  133.     move.l    a6,-(sp)
  134.     move.l    8(sp),a0
  135.     move.l    _OdinBase,a6
  136.     jsr    __PollNamedEnvelope(a6)
  137.     move.l    (sp)+,a6
  138.     rts
  139.     public    _PollNamedEnvelope
  140.  
  141. _OutEmptyEnvelope:
  142.     move.l    a6,-(sp)
  143.     move.l    8(sp),a0
  144.     move.l    _OdinBase,a6
  145.     jsr    __OutEmptyEnvelope(a6)
  146.     move.l    (sp)+,a6
  147.     rts
  148.     public    _OutEmptyEnvelope
  149.  
  150. _CreateEnvelope:
  151.     move.l    a6,-(sp)        ;a6,pc,name,size
  152.     move.l    8(sp),a0
  153.     move.l    12(sp),d0
  154.     move.l    _OdinBase,a6
  155.     jsr    __CreateEnvelope(a6)
  156.     move.l    (sp)+,a6
  157.     rts
  158.     public    _CreateEnvelope
  159.  
  160. _DisposeEnvelope:
  161.     move.l    a6,-(sp)
  162.     move.l    8(sp),a1
  163.     move.l    _OdinBase,a6
  164.     jsr    __DisposeEnvelope(a6)
  165.     move.l    (sp)+,a6
  166.     rts
  167.     public    _DisposeEnvelope
  168.  
  169. ;--- version 2 additions
  170.  
  171. _TimedIn:
  172.     move.l    a6,-(sp)    ;a6,pc,env,secs,micros
  173.     move.l    8(sp),a1
  174.     movem.l    12(sp),d0-d1
  175.     move.l    _OdinBase,a6
  176.     jsr    __TimedIn(a6)
  177.     move.l    (sp)+,a6
  178.     rts
  179.     public    _TimedIn
  180.  
  181. _TimedRd:
  182.     move.l    a6,-(sp)    ;a6,pc,env,secs,micros
  183.     move.l    8(sp),a1
  184.     movem.l    12(sp),d0-d1
  185.     move.l    _OdinBase,a6
  186.     jsr    __TimedRd(a6)
  187.     move.l    (sp)+,a6
  188.     rts
  189.     public    _TimedRd
  190.  
  191. _AsyncIn:
  192.     move.l    a6,-(sp)    ;a6,pc,env,port
  193.     move.l    8(sp),a1
  194.     move.l    12(sp),a0
  195.     move.l    _OdinBase,a6
  196.     jsr    __AsyncIn(a6)
  197.     move.l    (sp)+,a6
  198.     rts
  199.     public    _AsyncIn
  200.  
  201. _AsyncRd:
  202.     move.l    a6,-(sp)    ;a6,pc,env,port
  203.     move.l    8(sp),a1
  204.     move.l    12(sp),a0
  205.     move.l    _OdinBase,a6
  206.     jsr    __AsyncRd(a6)
  207.     move.l    (sp)+,a6
  208.     rts
  209.     public    _AsyncRd
  210.  
  211. _AwaitTimed:
  212.     move.l    a6,-(sp)    ;a6,pc,name,secs,micros
  213.     move.l    8(sp),a0
  214.     movem.l    12(sp),d0/d1
  215.     move.l    _OdinBase,a6
  216.     jsr    __AwaitTimed(a6)
  217.     move.l    (sp)+,a6
  218.     rts
  219.     public    _AwaitTimed
  220.  
  221. _AsyncRequest:
  222.     move.l    a6,-(sp)    ;a6,pc,name,port
  223.     move.l    8(sp),a0
  224.     move.l    12(sp),d0
  225.     move.l    _OdinBase,a6
  226.     jsr    __AsyncRequest(a6)
  227.     move.l    (sp)+,a6
  228.     rts
  229.     public    _AsyncRequest
  230.  
  231. _UniqueName:
  232.     move.l    a6,-(sp)    ;a6,pc,buffer
  233.     move.l    8(sp),a0
  234.     move.l    _OdinBase,a6
  235.     jsr    __UniqueName(a6)
  236.     move.l    (sp)+,a6
  237.     rts
  238.     public    _UniqueName
  239.  
  240.     end
  241.  
  242.