;odinglue.asm 
;Created 4-Jul-90 by Peter Oerbaek
;Last updated 11-Jul-90 by Peter Oerbaek
;This is in the public domain.
;C-interface gluecode for odin.library V1.11
;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

	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:
	move.l	a6,-(sp)		;a6,pc,env
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__In(a6)
	move.l	(sp)+,a6
	rts
	public	_In

_Out:
	move.l	a6,-(sp)
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__Out(a6)
	move.l	(sp)+,a6
	rts
	public	_Out

_CopyOut:
	move.l	a6,-(sp)
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__CopyOut(a6)
	move.l	(sp)+,a6
	rts
	public	_CopyOut

_Rd:
	move.l	a6,-(sp)
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__Rd(a6)
	move.l	(sp)+,a6
	rts
	public	_Rd

_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

_Inp:
	move.l	a6,-(sp)
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__Inp(a6)
	move.l	(sp)+,a6
	rts
	public	_Inp

_Rdp:
	move.l	a6,-(sp)
	move.l	8(sp),a1
	move.l	_OdinBase,a6
	jsr	__Rdp(a6)
	move.l	(sp)+,a6
	rts
	public	_Rdp

_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

	end

