home *** CD-ROM | disk | FTP | other *** search
- ;odinglue.asm
- ;Created 4-Jul-90 by Peter Oerbaek
- ;Last updated 2-Sep-90 by Peter Oerbaek
- ;This is in the public domain.
- ;C-interface gluecode for odin.library V2.7
- ;Assemble with 'as' for Aztec-C 3.40a or later
- ;Assemble with Assem/A68K for Lattice / DICE / PDC
- ;Assembles OK as is with A68K 2.6!!!!
-
- ;public macro ;de-comment this for use with Assem
- ; XDEF \1
- ; endm
-
- __CreateEnvelope equ -30
- __InitEnvelope equ -36
- __DisposeEnvelope equ -42
- __StartTask equ -48
- __StartProcess equ -54
- __In equ -60
- __Rd equ -66
- __Out equ -72
- __CopyOut equ -78
- __Eval equ -84
- __Inp equ -90
- __Rdp equ -96
- __AwaitNamedEnvelope equ -102
- __PollNamedEnvelope equ -108
- __OutEmptyEnvelope equ -114
-
- ;--- Version 2 additions
- __TimedIn equ -120
- __TimedRd equ -126
- __AsyncIn equ -132
- __AsyncRd equ -138
- __AwaitTimed equ -144
- __AsyncRequest equ -150
- __UniqueName equ -156
-
- public _OdinBase ;for use with Manx 'as'
- ; XREF _OdinBase ;for use with Assem
-
- _InitEnvelope:
- movem.l a2/a6,-(sp) ;a6,a2,pc,env,name,len,copyfunc
- move.l 12(sp),a1
- move.l 16(sp),a0
- move.l 20(sp),d0
- move.l 24(sp),a2
- move.l _OdinBase,a6
- jsr __InitEnvelope(a6)
- movem.l (sp)+,a2/a6
- rts
- public _InitEnvelope
-
- _In:
- moveq.l #__In,d1
- bra.s simplecall
- public _In
-
- _Out:
- moveq.l #__Out,d1
- bra.s simplecall
- public _Out
-
- _CopyOut:
- moveq.l #__CopyOut,d1
- ; bra.s simplecall
- public _CopyOut
-
- simplecall: ;call with only parameter in A1
- move.l a6,-(sp) ;a6,pc,env
- move.l 8(sp),a1
- move.l _OdinBase,a6
- jsr 0(a6,d1.l)
- move.l (sp)+,a6
- rts
-
- _Rd:
- moveq.l #__Rd,d1
- bra.s simplecall
- public _Rd
-
-
- _Inp:
- moveq.l #__Inp,d1
- bra.s simplecall
- public _Inp
-
- _Rdp:
- moveq.l #__Rdp,d1
- bra.s simplecall
- public _Rdp
-
- _Eval:
- movem.l d2/a6,-(sp) ;a6,d2,pc,a1,d0,d1,d2
- move.l 12(sp),a1
- movem.l 16(sp),d0-d2
- move.l _OdinBase,a6
- jsr __Eval(a6)
- movem.l (sp)+,d2/a6
- rts
- public _Eval
-
- _StartTask:
- move.l a6,-(sp) ;a6,pc,proc,name,pri,stack
- movem.l 8(sp),a0/a1
- movem.l 16(sp),d0/d1
- move.l _OdinBase,a6
- jsr __StartTask(a6)
- move.l (sp)+,a6
- rts
- public _StartTask
-
- _StartProcess:
- move.l a6,-(sp)
- movem.l 8(sp),a0/a1
- movem.l 16(sp),d0/d1
- move.l _OdinBase,a6
- jsr __StartProcess(a6)
- move.l (sp)+,a6
- rts
- public _StartProcess
-
- _AwaitNamedEnvelope:
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l _OdinBase,a6
- jsr __AwaitNamedEnvelope(a6)
- move.l (sp)+,a6
- rts
- public _AwaitNamedEnvelope
-
- _PollNamedEnvelope:
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l _OdinBase,a6
- jsr __PollNamedEnvelope(a6)
- move.l (sp)+,a6
- rts
- public _PollNamedEnvelope
-
- _OutEmptyEnvelope:
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l _OdinBase,a6
- jsr __OutEmptyEnvelope(a6)
- move.l (sp)+,a6
- rts
- public _OutEmptyEnvelope
-
- _CreateEnvelope:
- move.l a6,-(sp) ;a6,pc,name,size
- move.l 8(sp),a0
- move.l 12(sp),d0
- move.l _OdinBase,a6
- jsr __CreateEnvelope(a6)
- move.l (sp)+,a6
- rts
- public _CreateEnvelope
-
- _DisposeEnvelope:
- move.l a6,-(sp)
- move.l 8(sp),a1
- move.l _OdinBase,a6
- jsr __DisposeEnvelope(a6)
- move.l (sp)+,a6
- rts
- public _DisposeEnvelope
-
- ;--- version 2 additions
-
- _TimedIn:
- move.l a6,-(sp) ;a6,pc,env,secs,micros
- move.l 8(sp),a1
- movem.l 12(sp),d0-d1
- move.l _OdinBase,a6
- jsr __TimedIn(a6)
- move.l (sp)+,a6
- rts
- public _TimedIn
-
- _TimedRd:
- move.l a6,-(sp) ;a6,pc,env,secs,micros
- move.l 8(sp),a1
- movem.l 12(sp),d0-d1
- move.l _OdinBase,a6
- jsr __TimedRd(a6)
- move.l (sp)+,a6
- rts
- public _TimedRd
-
- _AsyncIn:
- move.l a6,-(sp) ;a6,pc,env,port
- move.l 8(sp),a1
- move.l 12(sp),a0
- move.l _OdinBase,a6
- jsr __AsyncIn(a6)
- move.l (sp)+,a6
- rts
- public _AsyncIn
-
- _AsyncRd:
- move.l a6,-(sp) ;a6,pc,env,port
- move.l 8(sp),a1
- move.l 12(sp),a0
- move.l _OdinBase,a6
- jsr __AsyncRd(a6)
- move.l (sp)+,a6
- rts
- public _AsyncRd
-
- _AwaitTimed:
- move.l a6,-(sp) ;a6,pc,name,secs,micros
- move.l 8(sp),a0
- movem.l 12(sp),d0/d1
- move.l _OdinBase,a6
- jsr __AwaitTimed(a6)
- move.l (sp)+,a6
- rts
- public _AwaitTimed
-
- _AsyncRequest:
- move.l a6,-(sp) ;a6,pc,name,port
- move.l 8(sp),a0
- move.l 12(sp),d0
- move.l _OdinBase,a6
- jsr __AsyncRequest(a6)
- move.l (sp)+,a6
- rts
- public _AsyncRequest
-
- _UniqueName:
- move.l a6,-(sp) ;a6,pc,buffer
- move.l 8(sp),a0
- move.l _OdinBase,a6
- jsr __UniqueName(a6)
- move.l (sp)+,a6
- rts
- public _UniqueName
-
- end
-
-