ack/mach/mantra/int/mloopc
1984-07-23 11:49:00 +00:00

504 lines
6.7 KiB
Plaintext

!THIS FILE CONTAINS THE SYSTEM CALLS FOR PMDS-II AS SUBROUTINES FOR THE
!EM-INTERPRETER. a1 CONTAINS A POINTER TO THE RETURN AREA . EACH SUBROUTINE
!EXPECTS ITS DATA IN THE FORM EM PRODUCES AND GIVES ITS RESULTS AS EM
!REQUIRES
_exit: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 1
_fork: move.l (sp),(a1)
trap #0
.short 2
lea 4(sp),sp
bcs 2f
tst.l d0 !PID OF CHILD IN PARENT, 0 IN CHILD
bne 1f
trap #0
.short 20
mov d1,-(sp) !PID OF PARENT IN d1
mov #1,-(sp) !(PID OF CHILD IN D0),FLAG 1 IN CHILD
bra 0f
1: mov d0,-(sp) !PID OF CHILD IN d0
cl -(sp) !FLAG 0 IN PARENT
0: cl -(sp)
bra 3f
2: mov d0,-(sp)
mov d0,-(sp)
3: move.l (a1),a0
jmp (a0)
!_fork is special
_read: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 3
sys0: lea 16(sp),sp
bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l d0,-(sp)
cl -(sp)
2: move.l (a1),a0
jmp (a0)
_write: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 4
bra sys0
_open: move.l (sp),(a1)
#ifndef lword
bsr st243
#endif
trap #0
.short 5
sys1: lea 12(sp),sp
sys5: bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: mov d0,-(sp)
cl -(sp)
2: move.l (a1),a0
jmp (a0)
_close: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 6
sys3: lea 8(sp),sp
sys4: bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: cl -(sp)
2: move.l (a1),a0
jmp (a0)
_wait: move.l (sp),(a1)
trap #0
.short 7
sys6: lea 4(sp),sp
bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: mov d1,-(sp) ! ??
mov d0,-(sp)
cl -(sp)
2: move.l (a1),a0
jmp (a0)
_creat: move.l (sp),(a1)
#ifndef lword
bsr st243
#endif
trap #0
.short 8
bra sys1
_link: move.l (sp),(a1)
trap #0
.short 9
lea 12(sp),sp
bra sys4
_unlink: move.l (sp),(a1)
trap #0
.short 10
bra sys3
_chdir: move.l (sp),(a1)
trap #0
.short 12
bra sys3
_mknod: move.l (sp),(a1)
#ifndef lword
bsr st244
#endif
trap #0
.short 14
lea 16(sp),sp
bra sys4
_chmod: move.l (sp),(a1)
#ifndef lword
bsr st243
#endif
trap #0
.short 15
lea 12(sp),sp
bra sys4
_chown: move.l (sp),(a1)
#ifndef lword
bsr st244
#endif
trap #0
.short 16
lea 16(sp),sp
bra sys4
_break: move.l (sp),(a1)
trap #0
.short 17
lea 8(sp),sp
bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l -4(sp),nd
cl -(sp)
2: move.l (a1),a0
jmp (a0)
.data
nd: .long endbss
.text
_stat: move.l (sp),(a1)
trap #0
.short 18
lea 12(sp),sp
bra sys4
_lseek: move.l (sp),(a1)
#ifndef lword
bsr st245
#endif
trap #0
.short 19
lea 16(sp),sp
bcc 1f
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l d1,-(sp)
mov d0,-(sp)
cl -(sp)
2: move.l (a1),a0
jmp (a0)
_getpid: move.l (sp),(a1)
trap #0
.short 20
add.l #4,sp
mov d0,-(sp)
move.l (a1),a0
jmp (a0)
_mount: move.l (sp),(a1)
#ifndef lword
bsr st246
#endif
trap #0
.short 21
lea 16(sp),sp
bra sys4
_umount: move.l (sp),(a1)
trap #0
.short 22
bra sys3
_setuid: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 23
bra sys3
_getuid: move.l (sp),(a1)
trap #0
.short 24
sys7: add.l #4,sp
mov d1,-(sp)
mov d0,-(sp)
move.l (a1),a0
jmp (a0)
_stime: move.l (sp),(a1)
trap #0
.short 25
bra sys3
_ptrace: move.l (sp),(a1)
#ifndef lword
bsr st247
#endif
trap #0
.short 26
lea 20(sp),sp
bra sys5
_alarm: move.l (sp),(a1)
#ifndef lword
sub.l #2,sp
clr.w 4(sp)
#endif
trap #0
.short 27
lea 8(sp),sp
mov d0,-(sp)
move.l (a1),a0
jmp (a0)
_fstat: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 28
lea 12(sp),sp
bra sys4
_pause: trap #0
.short 29
rts
_utime: move.l (sp),(a1)
trap #0
.short 30
lea 12(sp),sp
bra sys4
_access: move.l (sp),(a1)
#ifndef lword
bsr st248
#endif
trap #0
.short 33
lea 12(sp),sp
bra sys4
_nice:
#ifndef lword
bsr 241
#endif
trap #0
.short 34
move.l (sp)+,(sp)
rts
_ftime: move.l (sp),(a1)
trap #0
.short 35
bra sys3
_sync: trap #0
.short 36
rts
_kill: move.l (sp),(a1)
#ifndef lword
bsr st248
#endif
trap #0
.short 37
lea 12(sp),sp
bra sys4
_dup: move.l (sp),(a1)
#ifndef lword
bsr st248
#endif
trap #0
.short 38
bra sys1
_pipe: move.l (sp),(a1)
trap #0
.short 42
bra sys6
_times: trap #0
.short 43
move.l (sp),a0
add.l #8,sp
jmp (a0)
_profil: trap #0
.short 44
move.l (sp),a0
lea 20(sp),sp
jmp (a0)
_setgid: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 46
bra sys3
_getgid: move.l (sp),(a1)
trap #0
.short 47
bra sys7
_signal: move.l (sp)+,retaddr
mov (sp)+,d4
extend d4
move.l d4,-(sp)
move.l retaddr,-(sp)
trap #0
.short 48
mov d0,-(sp)
bne 1f
mov d0,-(sp)
1: move.l retaddr,a0
jmp (a0)
.data
retaddr: .long 0
.text
_acct: move.l (sp),(a1)
trap #0
.short 51
bra sys3
_lock: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 53
bra sys3
_ioctl: move.l (sp),(a1)
#ifndef lword
bsr st248
#endif
trap #0
.short 54
lea 16(sp),sp
bra sys4
_mpxcall: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 56
lea 12(sp),sp
bra sys4
_exece: move.l (sp),(a1)
trap #0
.short 59
lea 16(sp),sp
bra sys4
_umask: move.l (sp),(a1)
#ifndef lword
bsr st241
#endif
trap #0
.short 60
add.l #8,sp
mov d0,-(sp)
move.l (a1),a0
jmp (a0)
_chroot: move.l (sp),(a1)
trap #0
.short 61
bra sys3
!----------------------------------------------------------------------------
! STACK ADJUSTMENT FOR THE TWO BYTE INTERPRETER
!-----------------------------------------------------------------------------
#ifndef lword
st241: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
move.w 10(sp),d0
ext.l d0
move.l d0,8(sp)
rts
st243: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
move.l 10(sp),8(sp)
move.w 14(sp),d0
ext.l d0
move.l d0,12(sp)
rts
st244: move.l (sp),-(sp)
move.l 8(sp),4(sp)
move.l 12(sp),8(sp)
move.w 16(sp),d0
ext.l d0
move.l d0,12(sp)
move.w 18(sp),d0
ext.l d0
move.l d0,16(sp)
rts
st245: move.l (sp),-(sp)
move.l 8(sp),4(sp)
move.w 12(sp),d0
ext.l d0
move.l d0,8(sp)
move.l 14(sp),12(sp)
move.w 18(sp),d0
ext.l d0
move.l d0,16(sp)
rts
st246: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
move.l 10(sp),8(sp)
move.l 14(sp),12(sp)
move.w 18(sp),d0
ext.l d0
move.l d0,16(sp)
rts
st247: sub.l #6,sp
move.l 6(sp),(sp)
move.l 10(sp),4(sp)
move.w 14(sp),d0
ext.l d0
move.l d0,8(sp)
move.w 16(sp),d0
ext.l d0
move.l d0,12(sp)
move.l 18(sp),16(sp)
move.w 22(sp),d0
ext.l d0
move.l d0,20(sp)
rts
st248: move.l (sp),-(sp)
move.l 8(sp),4(sp)
move.w 12(sp),d0
ext.l d0
move.l d0,8(sp)
move.w 14(sp),d0
ext.l d0
move.l d0,12(sp)
rts
#endif