Browse Source

Initial revision

ceriel 37 years ago
parent
commit
4043036e27
94 changed files with 1233 additions and 0 deletions
  1. 3 0
      mach/xenix3/.distr
  2. 6 0
      mach/xenix3/Action
  3. 5 0
      mach/xenix3/libsys/.distr
  4. 88 0
      mach/xenix3/libsys/LIST
  5. 27 0
      mach/xenix3/libsys/Makefile
  6. 10 0
      mach/xenix3/libsys/_exit.s
  7. 13 0
      mach/xenix3/libsys/_pipe.s
  8. 13 0
      mach/xenix3/libsys/_profil.s
  9. 22 0
      mach/xenix3/libsys/_sdget.s
  10. 16 0
      mach/xenix3/libsys/_stime.s
  11. 8 0
      mach/xenix3/libsys/_time.s
  12. 13 0
      mach/xenix3/libsys/_wait.s
  13. 6 0
      mach/xenix3/libsys/access.s
  14. 6 0
      mach/xenix3/libsys/acct.s
  15. 11 0
      mach/xenix3/libsys/alarm.s
  16. 6 0
      mach/xenix3/libsys/brk.s
  17. 6 0
      mach/xenix3/libsys/chdir.s
  18. 6 0
      mach/xenix3/libsys/chmod.s
  19. 6 0
      mach/xenix3/libsys/chown.s
  20. 6 0
      mach/xenix3/libsys/chroot.s
  21. 1 0
      mach/xenix3/libsys/cleanup.c
  22. 6 0
      mach/xenix3/libsys/close.s
  23. 4 0
      mach/xenix3/libsys/compmodule
  24. 6 0
      mach/xenix3/libsys/creat.s
  25. 6 0
      mach/xenix3/libsys/creatsem.s
  26. 5 0
      mach/xenix3/libsys/dup.c
  27. 6 0
      mach/xenix3/libsys/dup2.c
  28. 9 0
      mach/xenix3/libsys/execl.c
  29. 10 0
      mach/xenix3/libsys/execle.c
  30. 8 0
      mach/xenix3/libsys/execv.c
  31. 19 0
      mach/xenix3/libsys/execve.s
  32. 5 0
      mach/xenix3/libsys/exit.c
  33. 6 0
      mach/xenix3/libsys/fcntl.s
  34. 20 0
      mach/xenix3/libsys/fork.s
  35. 6 0
      mach/xenix3/libsys/fstat.s
  36. 12 0
      mach/xenix3/libsys/ftime.s
  37. 8 0
      mach/xenix3/libsys/getegid.s
  38. 8 0
      mach/xenix3/libsys/geteuid.s
  39. 7 0
      mach/xenix3/libsys/getgid.s
  40. 10 0
      mach/xenix3/libsys/getpgrp.s
  41. 7 0
      mach/xenix3/libsys/getpid.s
  42. 8 0
      mach/xenix3/libsys/getppid.s
  43. 7 0
      mach/xenix3/libsys/getuid.s
  44. 5 0
      mach/xenix3/libsys/gtty.c
  45. 52 0
      mach/xenix3/libsys/head_em.s
  46. 6 0
      mach/xenix3/libsys/ioctl.s
  47. 6 0
      mach/xenix3/libsys/kill.s
  48. 6 0
      mach/xenix3/libsys/link.s
  49. 6 0
      mach/xenix3/libsys/lock.s
  50. 23 0
      mach/xenix3/libsys/locking.s
  51. 25 0
      mach/xenix3/libsys/lseek.s
  52. 6 0
      mach/xenix3/libsys/mknod.s
  53. 6 0
      mach/xenix3/libsys/mount.s
  54. 19 0
      mach/xenix3/libsys/nap.s
  55. 6 0
      mach/xenix3/libsys/nbwaitsem.s
  56. 6 0
      mach/xenix3/libsys/nice.s
  57. 6 0
      mach/xenix3/libsys/open.s
  58. 6 0
      mach/xenix3/libsys/opensem.s
  59. 11 0
      mach/xenix3/libsys/pause.s
  60. 14 0
      mach/xenix3/libsys/pipe.c
  61. 6 0
      mach/xenix3/libsys/profil.c
  62. 23 0
      mach/xenix3/libsys/ptrace.s
  63. 15 0
      mach/xenix3/libsys/rdchk.s
  64. 6 0
      mach/xenix3/libsys/read.s
  65. 22 0
      mach/xenix3/libsys/sbrk.s
  66. 20 0
      mach/xenix3/libsys/sdenter.s
  67. 19 0
      mach/xenix3/libsys/sdfree.s
  68. 19 0
      mach/xenix3/libsys/sdget.c
  69. 19 0
      mach/xenix3/libsys/sdgetv.s
  70. 19 0
      mach/xenix3/libsys/sdleave.s
  71. 20 0
      mach/xenix3/libsys/sdwaitv.s
  72. 6 0
      mach/xenix3/libsys/setgid.s
  73. 6 0
      mach/xenix3/libsys/setuid.s
  74. 14 0
      mach/xenix3/libsys/shutdn.s
  75. 123 0
      mach/xenix3/libsys/signal.s
  76. 6 0
      mach/xenix3/libsys/sigsem.s
  77. 6 0
      mach/xenix3/libsys/stat.s
  78. 5 0
      mach/xenix3/libsys/stime.c
  79. 5 0
      mach/xenix3/libsys/stty.c
  80. 7 0
      mach/xenix3/libsys/sync.s
  81. 70 0
      mach/xenix3/libsys/sys.s
  82. 11 0
      mach/xenix3/libsys/time.c
  83. 19 0
      mach/xenix3/libsys/times.s
  84. 22 0
      mach/xenix3/libsys/ulimit.s
  85. 6 0
      mach/xenix3/libsys/umask.s
  86. 6 0
      mach/xenix3/libsys/umount.s
  87. 6 0
      mach/xenix3/libsys/uname.s
  88. 6 0
      mach/xenix3/libsys/unlink.s
  89. 6 0
      mach/xenix3/libsys/ustat.s
  90. 6 0
      mach/xenix3/libsys/utime.s
  91. 11 0
      mach/xenix3/libsys/wait.c
  92. 6 0
      mach/xenix3/libsys/waitsem.s
  93. 6 0
      mach/xenix3/libsys/write.s
  94. 16 0
      mach/xenix3/libsys/xdup.s

+ 3 - 0
mach/xenix3/.distr

@@ -0,0 +1,3 @@
+Action
+cv
+libsys

+ 6 - 0
mach/xenix3/Action

@@ -0,0 +1,6 @@
+name "Xenix 3.0 8086 systemcall library"
+dir libsys
+end
+name "Xenix 3.0 conversion program from ack.out --> Xenix 3.0 a.out"
+dir cv
+end

+ 5 - 0
mach/xenix3/libsys/.distr

@@ -0,0 +1,5 @@
+LIST
+Makefile
+compmodule
+libmon_s.a
+head_em.s

+ 88 - 0
mach/xenix3/libsys/LIST

@@ -0,0 +1,88 @@
+libmon_s.a
+exit.c
+cleanup.c
+stty.c
+gtty.c
+dup.c
+dup2.c
+execl.c
+execle.c
+execv.c
+pipe.c
+profil.c
+sdget.c
+stime.c
+time.c
+wait.c
+_exit.s
+_pipe.s
+_profil.s
+_sdget.s
+_stime.s
+_time.s
+_wait.s
+access.s
+acct.s
+alarm.s
+brk.s
+chdir.s
+chmod.s
+chown.s
+chroot.s
+close.s
+creat.s
+creatsem.s
+execve.s
+fcntl.s
+fork.s
+fstat.s
+ftime.s
+getegid.s
+geteuid.s
+getgid.s
+getpgrp.s
+getpid.s
+getppid.s
+getuid.s
+ioctl.s
+kill.s
+link.s
+lock.s
+locking.s
+lseek.s
+mknod.s
+mount.s
+nap.s
+nbwaitsem.s
+nice.s
+open.s
+opensem.s
+pause.s
+ptrace.s
+rdchk.s
+read.s
+sbrk.s
+sdenter.s
+sdfree.s
+sdgetv.s
+sdleave.s
+sdwaitv.s
+setgid.s
+setuid.s
+shutdn.s
+signal.s
+sigsem.s
+stat.s
+sync.s
+sys.s
+times.s
+ulimit.s
+umask.s
+umount.s
+uname.s
+unlink.s
+ustat.s
+utime.s
+waitsem.s
+write.s
+xdup.s

+ 27 - 0
mach/xenix3/libsys/Makefile

@@ -0,0 +1,27 @@
+# $Header$
+MACH=xenix3.0
+all:		libmon_o.a head_em.o
+
+install: 	all
+		../../install libmon_o.a tail_mon
+		../../install head_em.o head_em
+
+cmp:		all
+		-../../compare libmon_o.a tail_mon
+		-../../compare head_em.o head_em
+
+libmon_o.a:	libmon_s.a
+		ASAR=aal ; export ASAR ;\
+		march . libmon_o.a
+
+head_em.o:	head_em.s
+		$(MACH) -O -c head_em.s
+clean:
+		rm -f *.o libmon_o.a
+
+opr :
+		make pr | opr
+
+pr:
+		@pr `pwd`/head_em.s
+		@arch pv libmon_s.a | pr -h `pwd`/libmon_s.a

+ 10 - 0
mach/xenix3/libsys/_exit.s

@@ -0,0 +1,10 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __exit
+.sect .text
+__exit:
+	mov	ax,1
+	push	bp
+	mov	bp,sp
+	mov	bx,4(bp)
+	call	syscal
+1:	jmp	1b

+ 13 - 0
mach/xenix3/libsys/_pipe.s

@@ -0,0 +1,13 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __pipe
+.sect .text
+__pipe:
+	mov	ax,42
+	call	syscal
+	mov	dx,bx
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	cwd
+1:
+	ret

+ 13 - 0
mach/xenix3/libsys/_profil.s

@@ -0,0 +1,13 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __profil
+.sect .text
+__profil:
+	mov	ax,44
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 22 - 0
mach/xenix3/libsys/_sdget.s

@@ -0,0 +1,22 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __sdget
+.sect .text
+__sdget:
+	mov	ax,3368
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	di,10(bp)
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 16 - 0
mach/xenix3/libsys/_stime.s

@@ -0,0 +1,16 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __stime
+.sect .text
+__stime:
+	mov	ax,25
+	push	bp
+	mov	bp,sp
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	pop	bp
+	ret

+ 8 - 0
mach/xenix3/libsys/_time.s

@@ -0,0 +1,8 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __time
+.sect .text
+__time:
+	mov	ax,13
+	call	syscal
+	mov	dx,bx
+	ret

+ 13 - 0
mach/xenix3/libsys/_wait.s

@@ -0,0 +1,13 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define __wait
+.sect .text
+__wait:
+	mov	ax,7
+	call	syscal
+	mov	dx,bx
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	cwd
+1:
+	ret

+ 6 - 0
mach/xenix3/libsys/access.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _access
+.sect .text
+_access:
+	mov	ax,33
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/acct.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _acct
+.sect .text
+_acct:
+	mov	ax,51
+	jmp	sysal

+ 11 - 0
mach/xenix3/libsys/alarm.s

@@ -0,0 +1,11 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _alarm
+.sect .text
+_alarm:
+	mov	ax,27
+	push	bp
+	mov	bp,sp
+	mov	bx,4(bp)
+	call	syscal
+	pop	bp
+	ret

+ 6 - 0
mach/xenix3/libsys/brk.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _brk
+.sect .text
+_brk:
+	mov	ax,17
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/chdir.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _chdir
+.sect .text
+_chdir:
+	mov	ax,12
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/chmod.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _chmod
+.sect .text
+_chmod:
+	mov	ax,15
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/chown.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _chown
+.sect .text
+_chown:
+	mov	ax,16
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/chroot.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _chroot
+.sect .text
+_chroot:
+	mov	ax,61
+	jmp	sysal

+ 1 - 0
mach/xenix3/libsys/cleanup.c

@@ -0,0 +1 @@
+_cleanup() { }

+ 6 - 0
mach/xenix3/libsys/close.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _close
+.sect .text
+_close:
+	mov	ax,6
+	jmp	sysal

+ 4 - 0
mach/xenix3/libsys/compmodule

@@ -0,0 +1,4 @@
+if xenix3.0 -c $1 1>&2
+then echo `basename $1 $2`.o
+else exit 1
+fi

+ 6 - 0
mach/xenix3/libsys/creat.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _creat
+.sect .text
+_creat:
+	mov	ax,8
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/creatsem.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _creatsem
+.sect .text
+_creatsem:
+	mov	ax,552
+	jmp	sysal

+ 5 - 0
mach/xenix3/libsys/dup.c

@@ -0,0 +1,5 @@
+int
+dup(d)
+{
+	return __xdup(d, 0);
+}

+ 6 - 0
mach/xenix3/libsys/dup2.c

@@ -0,0 +1,6 @@
+int
+dup2(oldd, newd)
+{
+	oldd |= 64;
+	return __xdup(oldd, newd);
+}

+ 9 - 0
mach/xenix3/libsys/execl.c

@@ -0,0 +1,9 @@
+int
+execl(name,args)
+	char *name;
+	int args;
+{
+	extern char **environ;
+
+	return execve(name,&args,environ);
+}

+ 10 - 0
mach/xenix3/libsys/execle.c

@@ -0,0 +1,10 @@
+int
+execle(name,args)
+	char *name;
+	char *args;
+{
+	char **p = &args;
+	while (*p++) ;
+
+	return execve(name,&args,*p);
+}

+ 8 - 0
mach/xenix3/libsys/execv.c

@@ -0,0 +1,8 @@
+int
+execv(name,args)
+	char *name;
+	char **args;
+{
+	extern char **environ;
+	return execve(name,args,environ);
+}

+ 19 - 0
mach/xenix3/libsys/execve.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _execve
+.sect .text
+_execve:
+	mov	ax,59
+	push	bp
+	mov	bp,sp
+	push	si
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	si
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	pop	bp
+	ret

+ 5 - 0
mach/xenix3/libsys/exit.c

@@ -0,0 +1,5 @@
+exit(n)
+{
+	_cleanup();
+	_exit(n);
+}

+ 6 - 0
mach/xenix3/libsys/fcntl.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _fcntl
+.sect .text
+_fcntl:
+	mov	ax,62
+	jmp	sysal

+ 20 - 0
mach/xenix3/libsys/fork.s

@@ -0,0 +1,20 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _fork, _par_uid
+.sect .bss
+.comm	_par_uid, 2
+.sect .text
+_fork:
+	mov	ax,2
+	call	syscal
+	jb	1f
+	and	bx,bx
+	je	2f
+	ret
+1:
+	mov	(_errno),ax
+	mov	ax,-1
+	ret
+2:
+	mov	(_par_uid),ax
+	xor	ax,ax
+	ret

+ 6 - 0
mach/xenix3/libsys/fstat.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _fstat
+.sect .text
+_fstat:
+	mov	ax,28
+	jmp	sysal

+ 12 - 0
mach/xenix3/libsys/ftime.s

@@ -0,0 +1,12 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _ftime
+.sect .text
+_ftime:
+	mov	ax,2856
+	push	bp
+	mov	bp,sp
+	mov	bx,4(bp)
+	call	syscal
+	pop	bp
+	ret
+

+ 8 - 0
mach/xenix3/libsys/getegid.s

@@ -0,0 +1,8 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getegid
+.sect .text
+_getegid:
+	mov	ax,47
+	call	syscal
+	xchg	bx,ax
+	ret

+ 8 - 0
mach/xenix3/libsys/geteuid.s

@@ -0,0 +1,8 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _geteuid
+.sect .text
+_geteuid:
+	mov	ax,24
+	call	syscal
+	xchg	bx,ax
+	ret

+ 7 - 0
mach/xenix3/libsys/getgid.s

@@ -0,0 +1,7 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getgid
+.sect .text
+_getgid:
+	mov	ax,47
+	call	syscal
+	ret

+ 10 - 0
mach/xenix3/libsys/getpgrp.s

@@ -0,0 +1,10 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getpgrp
+.sect .text
+_getpgrp:
+	xor	ax,ax
+	push	ax
+	mov	ax,39
+	call	syscal
+	pop	bx
+	ret

+ 7 - 0
mach/xenix3/libsys/getpid.s

@@ -0,0 +1,7 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getpid
+.sect .text
+_getpid:
+	mov	ax,20
+	call	syscal
+	ret

+ 8 - 0
mach/xenix3/libsys/getppid.s

@@ -0,0 +1,8 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getppid
+.sect .text
+_getppid:
+	mov	ax,20
+	call	syscal
+	xchg	bx,ax
+	ret

+ 7 - 0
mach/xenix3/libsys/getuid.s

@@ -0,0 +1,7 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _getuid
+.sect .text
+_getuid:
+	mov	ax,24
+	call	syscal
+	ret

+ 5 - 0
mach/xenix3/libsys/gtty.c

@@ -0,0 +1,5 @@
+gtty(fildes, arg)
+	char *arg;
+{
+	return ioctl(fildes, ('t' << 8) | 8, arg);
+}

+ 52 - 0
mach/xenix3/libsys/head_em.s

@@ -0,0 +1,52 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+
+.define begtext,begdata,begbss
+.define hol0,.reghp,.limhp,.trppc,.ignmask
+.define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
+.extern _end
+
+ERANGE          = 1
+ESET            = 2
+EIDIVZ          = 6
+EHEAP           = 17
+EILLINS         = 18
+EODDZ           = 19
+ECASE           = 20
+
+.sect .text
+begtext:
+	mov bx,sp
+	mov cx,(bx)
+	add bx,2
+	mov ax,cx
+	inc ax
+	shl ax,1
+	add ax,bx
+	push ax
+	push bx
+	push cx
+	xor bp,bp
+	call    _m_a_i_n
+	call	__exit
+.sect	.data
+begdata:
+hol0:
+	.data2   0,0
+	.data2   0,0
+argv:
+	.data2   3f
+envp:
+	.data2	0
+3:
+	.asciz "PROGRAM"
+.reghp:
+	.data2   endbss
+.limhp:
+	.data2   endbss
+.ignmask:
+	.data2   0
+.trppc:
+	.data2   0
+
+	.sect .bss
+begbss:

+ 6 - 0
mach/xenix3/libsys/ioctl.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _ioctl
+.sect .text
+_ioctl:
+	mov	ax,54
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/kill.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _kill
+.sect .text
+_kill:
+	mov	ax,37
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/link.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _link
+.sect .text
+_link:
+	mov	ax,9
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/lock.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _lock
+.sect .text
+_lock:
+	mov	ax,45
+	jmp	sysal

+ 23 - 0
mach/xenix3/libsys/locking.s

@@ -0,0 +1,23 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _locking
+.sect .text
+_locking:
+	mov	ax,296
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	di,10(bp)
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	mov	dx,ax
+1:
+	ret

+ 25 - 0
mach/xenix3/libsys/lseek.s

@@ -0,0 +1,25 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _lseek
+.sect .text
+_lseek:
+	mov	ax,19
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	di,10(bp)
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	mov	dx,ax
+	ret
+1:
+	mov	dx,bx
+	ret

+ 6 - 0
mach/xenix3/libsys/mknod.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _mknod
+.sect .text
+_mknod:
+	mov	ax,14
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/mount.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _mount
+.sect .text
+_mount:
+	mov	ax,21
+	jmp	sysal

+ 19 - 0
mach/xenix3/libsys/nap.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _nap
+.sect .text
+_nap:
+	mov	ax,3112
+	push	bp
+	mov	bp,sp
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	mov	dx,ax
+	ret
+1:
+	mov	dx,bx
+	ret

+ 6 - 0
mach/xenix3/libsys/nbwaitsem.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _nbwaitsem
+.sect .text
+_nbwaitsem:
+	mov	ax,1576
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/nice.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _nice
+.sect .text
+_nice:
+	mov	ax,34
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/open.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _open
+.sect .text
+_open:
+	mov	ax,5
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/opensem.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _opensem
+.sect .text
+_opensem:
+	mov	ax,808
+	jmp	sysal

+ 11 - 0
mach/xenix3/libsys/pause.s

@@ -0,0 +1,11 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _pause
+.sect .text
+_pause:
+	mov	ax,29
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 14 - 0
mach/xenix3/libsys/pipe.c

@@ -0,0 +1,14 @@
+long _pipe();
+
+int
+pipe(f)
+	int f[2];
+{
+	long x;
+
+	x = _pipe();
+	if (x == -1) return -1;
+	f[0] = x;
+	f[1] = x >> 16;
+	return 0;
+}

+ 6 - 0
mach/xenix3/libsys/profil.c

@@ -0,0 +1,6 @@
+profil(buff, bufsiz, offset, scale)
+	char *buff;
+	int (*offset)();
+{
+	_profil(buff, bufsiz, offset, scale, 7262);
+}

+ 23 - 0
mach/xenix3/libsys/ptrace.s

@@ -0,0 +1,23 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _ptrace
+.sect .text
+_ptrace:
+	mov	ax,26
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	di,4(bp)
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,10(bp)
+	mov	(_errno),0
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	pop	di
+	pop	si
+	pop	bp
+	ret

+ 15 - 0
mach/xenix3/libsys/rdchk.s

@@ -0,0 +1,15 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _rdchk
+.sect .text
+_rdchk:
+	mov	ax,1832
+	push	bp
+	mov	bp,sp
+	mov	bx,4(bp)
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	pop	bp
+	ret

+ 6 - 0
mach/xenix3/libsys/read.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _read
+.sect .text
+_read:
+	mov	ax,3
+	jmp	sysal

+ 22 - 0
mach/xenix3/libsys/sbrk.s

@@ -0,0 +1,22 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sbrk
+.sect .text
+_sbrk:
+	push	bp
+	mov	bp,sp
+	push	ds
+	mov	ax,4(bp)
+	cwd
+	push	dx
+	push	ax
+	mov	ax,1
+	push	ax
+	call	__brkctl
+	add	sp,8
+	pop	bp
+	ret
+
+
+__brkctl:
+	mov	ax,4904
+	jmp	sysal

+ 20 - 0
mach/xenix3/libsys/sdenter.s

@@ -0,0 +1,20 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sdenter
+.sect .text
+_sdenter:
+	mov	ax,3880
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 19 - 0
mach/xenix3/libsys/sdfree.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sdfree
+.sect .text
+_sdfree:
+	mov	ax,3624
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 19 - 0
mach/xenix3/libsys/sdget.c

@@ -0,0 +1,19 @@
+char *
+sdget(path, flags, size, mode)
+	char *path;
+	long size;
+{
+	if ((flags  & 2) == 2) {
+		if (size > 0) {
+			extern char *_sdget();
+
+			if (size >= 0x10000L) {
+				extern int errno;
+
+				errno = 22;
+				return (char *) -1;
+			}
+		}
+	}
+	return _sdget(path, flags, (unsigned) size - 1, mode);
+}

+ 19 - 0
mach/xenix3/libsys/sdgetv.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sdgetv
+.sect .text
+_sdgetv:
+	mov	ax,4392
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 19 - 0
mach/xenix3/libsys/sdleave.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sdleave
+.sect .text
+_sdleave:
+	mov	ax,4136
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 20 - 0
mach/xenix3/libsys/sdwaitv.s

@@ -0,0 +1,20 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sdwaitv
+.sect .text
+_sdwaitv:
+	mov	ax,4648
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	di
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	ret

+ 6 - 0
mach/xenix3/libsys/setgid.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _setgid
+.sect .text
+_setgid:
+	mov	ax,46
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/setuid.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _setuid
+.sect .text
+_setuid:
+	mov	ax,23
+	jmp	sysal

+ 14 - 0
mach/xenix3/libsys/shutdn.s

@@ -0,0 +1,14 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _shutdn
+.sect .text
+_shutdn:
+	mov	ax,40
+	push	bp
+	mov	bp,sp
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	mov	(_errno),ax
+	mov	ax,-1
+	pop	bp
+	ret

+ 123 - 0
mach/xenix3/libsys/signal.s

@@ -0,0 +1,123 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _signal
+.sect .text
+_signal:
+	push	bp
+	mov	bp,sp
+	push	si
+	push	di
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	cmp	bx,20
+	jae	1f
+	mov	ax,bx
+	add	bx,bx
+	push	table(bx)
+	mov	table(bx),cx
+	and	cx,cx
+	je	2f
+	cmp	cx,1
+	je	2f
+	add	bx,bx
+	lea	cx,tbl(bx)
+2:
+	mov	bx,ax
+	mov	ax,48
+	call	syscal
+	pop	bx
+	jb	4f
+	and	ax,ax
+	je	5f
+	cmp	ax,1
+	jne	6f
+5:
+	jmp	7f
+6:
+	xchg	ax,bx
+	jmp	7f
+1:
+	mov	ax,22
+4:
+	mov	(_errno),ax
+	mov	ax,-1
+7:
+	pop	di
+	pop	si
+	pop	bp
+	ret
+
+ctch:
+	push	bp
+	mov	bp,sp
+	push	ax
+	push	bx
+	push	cx
+	push	dx
+	push	si
+	push	di
+	mov	ax,2(bp)
+	sub	ax,tbl
+	shr	ax,1
+	push	ax
+	call	table(bx)
+	pop	di
+	pop	di
+	pop	si
+	pop	dx
+	pop	cx
+	pop	bx
+	pop	ax
+	pop	bp
+	add	sp,2
+	pop	(retadr)
+	pop	(dummy)
+	popf
+	jmp	(retadr)
+.sect .bss
+retadr: .space 2
+dummy: .space 2
+.sect .text
+tbl:
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+	call	ctch
+.align
+.sect .bss
+table:
+	.space 40

+ 6 - 0
mach/xenix3/libsys/sigsem.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sigsem
+.sect .text
+_sigsem:
+	mov	ax,1064
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/stat.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _stat
+.sect .text
+_stat:
+	mov	ax,18
+	jmp	sysal

+ 5 - 0
mach/xenix3/libsys/stime.c

@@ -0,0 +1,5 @@
+stime(p)
+	long *p;
+{
+	return _stime(*p);
+}

+ 5 - 0
mach/xenix3/libsys/stty.c

@@ -0,0 +1,5 @@
+stty(fildes, arg)
+	char *arg;
+{
+	return ioctl(fildes, ('t' << 8) | 9, arg);
+}

+ 7 - 0
mach/xenix3/libsys/sync.s

@@ -0,0 +1,7 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _sync
+.sect .text
+_sync:
+	mov	ax,36
+	call	syscal
+	ret

+ 70 - 0
mach/xenix3/libsys/sys.s

@@ -0,0 +1,70 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define syscal, sysal, sysn, sysnl, sysnx, sysc, syse, cerror, _errno
+
+.sect .bss
+	.comm	_errno, 2
+
+.sect .text
+syscal:
+	int	5
+	ret
+
+sysal:
+	push	bp
+	mov	bp,sp
+	push	di
+	push	si
+	mov	di,10(bp)
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	mov	dx,bx
+	pop	si
+	pop	di
+	pop	bp
+	jb	cerror
+	ret
+
+syse:
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+cerror:
+	mov	(_errno),ax
+	mov	ax,-1
+	cwd
+	ret
+
+sysn:
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+	jb	cerror
+	ret
+
+sysnl:
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+	jb	cerror
+	mov	dx,bx
+	ret
+
+sysnx:
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+	jb	cerror
+	xchg	bx,ax
+	ret
+
+sysc:
+	mov	bx,sp
+	add	bx,2
+	call	syscal
+	jb	cerror
+	xor	ax,ax
+	cbw
+	ret
+

+ 11 - 0
mach/xenix3/libsys/time.c

@@ -0,0 +1,11 @@
+long _time();
+
+long
+time(p)
+	long *p;
+{
+	long l = _time();
+	if (p) *p = l;
+
+	return l;
+}

+ 19 - 0
mach/xenix3/libsys/times.s

@@ -0,0 +1,19 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _times
+.sect .text
+_times:
+	mov	ax,43
+	push	bp
+	mov	bp,sp
+	mov	bx,4(bp)
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	mov	dx,ax
+	pop	bp
+	ret
+1:
+	mov	dx,bx
+	pop	bp
+	ret

+ 22 - 0
mach/xenix3/libsys/ulimit.s

@@ -0,0 +1,22 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _ulimit
+.sect .text
+_ulimit:
+	mov	ax,63
+	push	bp
+	mov	bp,sp
+	push	si
+	mov	si,8(bp)
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	pop	si
+	pop	bp
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+	mov	dx,ax
+	ret
+1:
+	mov	dx,bx
+	ret

+ 6 - 0
mach/xenix3/libsys/umask.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _umask
+.sect .text
+_umask:
+	mov	ax,60
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/umount.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _umount
+.sect .text
+_umount:
+	mov	ax,22
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/uname.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _uname
+.sect .text
+_uname:
+	mov	ax,57
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/unlink.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _unlink
+.sect .text
+_unlink:
+	mov	ax,10
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/ustat.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _ustat
+.sect .text
+_ustat:
+	mov	ax,569
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/utime.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _utime
+.sect .text
+_utime:
+	mov	ax,30
+	jmp	sysal

+ 11 - 0
mach/xenix3/libsys/wait.c

@@ -0,0 +1,11 @@
+long _wait();
+
+wait(p)
+	int *p;
+{
+	long l = _wait();
+
+	if (l == -1) return -1;
+	if (*p) *p = (l >> 16);
+	return (int) l;
+}

+ 6 - 0
mach/xenix3/libsys/waitsem.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _waitsem
+.sect .text
+_waitsem:
+	mov	ax,1320
+	jmp	sysal

+ 6 - 0
mach/xenix3/libsys/write.s

@@ -0,0 +1,6 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define _write
+.sect .text
+_write:
+	mov	ax,4
+	jmp	sysal

+ 16 - 0
mach/xenix3/libsys/xdup.s

@@ -0,0 +1,16 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define ___xdup
+.sect .text
+___xdup:
+	push	bp
+	mov	bp,sp
+	mov	ax,41
+	mov	cx,6(bp)
+	mov	bx,4(bp)
+	call	syscal
+	jae	1f
+	mov	(_errno),ax
+	mov	ax,-1
+1:
+	pop	bp
+	ret