	; These are the stubs for MAPUX's system calls

	; These are exported
	XDEF	__exit		;  0
	XDEF	_open		;  1
	XDEF	_close		;  2
	XDEF	_creat		;  3 
	XDEF	_mknod		;  4
	XDEF	_link		;  5
	XDEF	_unlink		;  6
	XDEF	_read		;  7
	XDEF	_write		;  8
	XDEF	_seek		;  9
	XDEF	_chdir		; 10
	XDEF	_sync		; 11
	XDEF	_access		; 12
	XDEF	_chmod		; 13
	XDEF	_chown		; 14
	XDEF	_stat		; 15
	XDEF	_fstat		; 16
	XDEF	_dup		; 17
	XDEF	_getpid		; 18
	XDEF	_getppid	; 19
	XDEF	_getuid		; 20
	XDEF	_umask		; 21
	XDEF	_getfsys	; 22
	XDEF	_execve		; 23
	XDEF	_wait		; 24
	XDEF	_setuid		; 25
	XDEF	_setgid		; 26
	XDEF	_time		; 27
	XDEF	_stime		; 28
	XDEF	_ioctl		; 29
	XDEF	_brk		; 30
	XDEF	_sbrk		; 31
	XDEF	_fork		; 32
	XDEF	_mount		; 33
	XDEF	_umount		; 34
	XDEF	_signal		; 35
	XDEF	_dup2		; 36
	XDEF	_pause		; 37
	XDEF	_alarm		; 38
	XDEF	_kill		; 39
	XDEF	_pipe		; 40 
	XDEF	_getgid		; 41
	XDEF	_times		; 42

	XDEF	_ERRNO		; User's error code


	SECTION DATA

_ERRNO:	ds.l	1		; One word long

	SECTION END


	SECTION CODE

	; These functions are where C comes

__exit:
	clr.l	-(sp)
	bra	collect

_open:
	move.l	#1,-(sp)
	bra	collect
	
_close:
	move.l	#2,-(sp)
	bra	collect

_creat:
	move.l	#3 ,-(sp)
	bra	collect

_mknod:
	move.l	#4,-(sp)
	bra	collect

_link:
	move.l	#5,-(sp)
	bra	collect

_unlink:
	move.l	#6,-(sp)
	bra	collect

_read:
	move.l	#7,-(sp)
	bra	collect

_write:
	move.l	#8,-(sp)
	bra	collect

_seek:
	move.l	#9,-(sp)
	bra	collect

_chdir:
	move.l	#10,-(sp)
	bra	collect

_sync:
	move.l	#11,-(sp)
	bra	collect

_access:
	move.l	#12,-(sp)
	bra	collect

_chmod:
	move.l	#13,-(sp)
	bra	collect

_chown:
	move.l	#14,-(sp)
	bra	collect

_stat:
	move.l	#15,-(sp)
	bra	collect

_fstat:
	move.l	#16,-(sp)
	bra	collect

_dup:
	move.l	#17,-(sp)
	bra	collect

_getpid:
	move.l	#18,-(sp)
	bra	collect

_getppid:
	move.l	#19,-(sp)
	bra	collect

_getuid:
	move.l	#20,-(sp)
	bra	collect

_umask:
	move.l	#21,-(sp)
	bra	collect

_getfsys:
	move.l	#22,-(sp)
	bra	collect

_execve:
	move.l	#23,-(sp)
	bra	collect

_wait:
	move.l	#24,-(sp)
	bra	collect

_setuid:
	move.l	#25,-(sp)
	bra	collect

_setgid:
	move.l	#26,-(sp)
	bra	collect

_time:
	move.l	#27,-(sp)
	bra	collect

_stime:
	move.l	#28,-(sp)
	bra	collect

_ioctl:
	move.l	#29,-(sp)
	bra	collect

_brk:
	move.l	#30,-(sp)
	bra	collect

_sbrk:
	move.l	#31,-(sp)
	bra	collect

_fork:
	move.l	#32,-(sp)
	bra	collect

_mount:
	move.l	#33,-(sp)
	bra	collect

_umount:
	move.l	#34,-(sp)
	bra	collect

_signal:
	move.l	#35,-(sp)
	bra	collect

_dup2:
	move.l	#36,-(sp)
	bra	collect

_pause:
	move.l	#37,-(sp)
	bra	collect

_alarm:
	move.l	#38,-(sp)
	bra	collect

_kill:
	move.l	#39,-(sp)
	bra	collect

_pipe:
	move.l	#40 ,-(sp)
	bra	collect

_getgid:
	move.l	#41,-(sp)
	bra	collect


	; Sorts out the error condition stuff
collect:
	trap	#0		; Perform the actual call
	bcs	error		; Something went wrong
	clr.l	_ERRNO		; No error occured
	add.l	#4,sp		; Remove function number
	rts			; Looks like a C function finished
error:	move.l	d0,_ERRNO	; This global is available to the user
	clr.l	d0		; Return value is zero
	add.l	#4,sp		; Remove function number
	rts			; Looks like a C function finished

	SECTION END

