123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- .sect .text
- .sect .rom
- .sect .data
- .retaddr:
- .data4 0
- .sect .bss
- .sect .text
- !THIS FILE CONTAINS THE SYSTEM CALLS FOR PMDS-II AS SUBROUTINES FOR THE
- !EM-INTERPRETER. a5 CONTAINS A POINTER TO THE RETURN AREA . EACH SUBROUTINE
- !EXPECTS ITS DATA IN THE FORM EM PRODUCES AND GIVES ITS RESULTS AS EM
- !REQUIRES.
- !THE PMDS-II REQUIRES THE ARGUMENTS ON THE STACK AS 4 BYTE INTEGERS OR
- !POINTERS , AND USES THE C-CALLING CONVENTION. THE 2 BYTE WORDS 4 BYTE
- !POINTERS VERSION HAS TO DO SOME CONVERSION FIRST .
- _Xexit: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr __exit
- _Xfork: move.l (sp)+,.retaddr
- jsr _fork
- tst.l d0
- blt 2f
- bne 1f
- jsr _getpid
- 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: move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- 3: move.l .retaddr,a0
- jmp (a0)
- !_Xfork is special
- _Xread: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _read
- sys0: lea 12(sp),sp
- cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: move.l d0,-(sp)
- cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- _Xwrite: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _write
- bra sys0
- _Xopen: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st243
- #endif
- jsr _open
- sys1: lea 8(sp),sp
- sys5: cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: mov d0,-(sp)
- cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- _Xclose: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _close
- sys3: lea 4(sp),sp
- sys4: cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- _Xwait: move.l (sp)+,.retaddr
- .sect .data
- xxxx:
- .data4 0, 0
- .sect .text
- move.l #xxxx,-(sp)
- jsr _wait
- add.l #4,sp
- sys6: cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: mov xxxx+4,-(sp) ! ??
- mov xxxx,-(sp)
- cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- _Xcreat: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st243
- #endif
- jsr _creat
- bra sys1
- _Xlink: move.l (sp)+,.retaddr
- jsr _link
- lea 8(sp),sp
- bra sys4
- _Xunlink: move.l (sp)+,.retaddr
- jsr _unlink
- bra sys3
- _Xchdir: move.l (sp)+,.retaddr
- jsr _chdir
- bra sys3
- _Xmknod: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st244
- #endif
- jsr _mknod
- lea 12(sp),sp
- bra sys4
- _Xchmod: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st243
- #endif
- jsr _chmod
- lea 8(sp),sp
- bra sys4
- _Xchown: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st244
- #endif
- jsr _chown
- lea 12(sp),sp
- bra sys4
- _Xbreak: move.l (sp)+,.retaddr
- jsr _brk
- lea 4(sp),sp
- cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: move.l -4(sp),nd
- cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- .sect .data
- nd: .data4 endbss
- .sect .text
- _Xstat: move.l (sp)+,.retaddr
- jsr _stat
- lea 8(sp),sp
- bra sys4
- _Xlseek: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st245
- #endif
- jsr _lseek
- lea 12(sp),sp
- cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1: move.l d0,-(sp)
- cl -(sp)
- 2: move.l .retaddr,a0
- jmp (a0)
- _Xgetpid: move.l (sp)+,.retaddr
- jsr _getpid
- mov d0,-(sp)
- move.l .retaddr,a0
- jmp (a0)
- _Xmount: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st246
- #endif
- jsr _mount
- lea 12(sp),sp
- bra sys4
- _Xumount: move.l (sp)+,.retaddr
- jsr _umount
- bra sys3
- _Xsetuid: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _setuid
- bra sys3
- _Xgetuid: move.l (sp)+,.retaddr
- jsr _getuid
- sys7: mov d1,-(sp)
- mov d0,-(sp)
- move.l .retaddr,a0
- jmp (a0)
- _Xstime: move.l (sp)+,.retaddr
- jsr _stime
- bra sys3
- _Xptrace: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st247
- #endif
- jsr _ptrace
- lea 16(sp),sp
- bra sys5
- _Xalarm: move.l (sp)+,.retaddr
- #ifndef lword
- sub.l #2,sp
- clr.w (sp)
- #endif
- jsr _alarm
- lea 4(sp),sp
- mov d0,-(sp)
- move.l .retaddr,a0
- jmp (a0)
- _Xfstat: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _fstat
- lea 8(sp),sp
- bra sys4
- _Xpause: jsr _pause
- rts
- _Xutime: move.l (sp)+,.retaddr
- jsr _utime
- lea 8(sp),sp
- bra sys4
- _Xaccess: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st243
- #endif
- jsr _access
- lea 8(sp),sp
- bra sys4
- _Xnice: move.l (sp)+,.retaddr
- #ifndef lword
- bsr 241
- #endif
- jsr _nice
- move.l .retaddr,(sp)
- rts
- _Xftime: move.l (sp)+,.retaddr
- jsr _ftime
- bra sys3
- _Xsync: jsr _sync
- rts
- _Xkill: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st248
- #endif
- jsr _kill
- lea 4(sp),sp
- bra sys4
- _Xdup: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st248
- #endif
- jsr _dup
- bra sys1
- _Xpipe: move.l (sp)+,.retaddr
- move.l #xxxx,-(sp)
- jsr _pipe
- add.l #4,sp
- bra sys6
- _Xtimes: move.l (sp)+,.retaddr
- jsr _times
- move.l .retaddr,a0
- add.l #4,sp
- jmp (a0)
- _Xprofil: move.l (sp)+,.retaddr
- jsr _profil
- move.l .retaddr,a0
- lea 16(sp),sp
- jmp (a0)
- _Xsetgid: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _setgid
- bra sys3
- _Xgetgid: move.l (sp)+,.retaddr
- jsr _getpid
- bra sys7
- _Xsignal: move.l (sp)+,.retaddr
- mov (sp)+,d4
- extend d4
- move.l d4,-(sp)
- move.l .retaddr,-(sp)
- jsr _signal
- lea 12(sp),sp !remove arguments
- cmp.l #-1,d0
- bne 1f
- move.l _errno,d0
- mov d0,-(sp)
- mov d0,-(sp)
- bra 2f
- 1:
- mov d0,-(sp)
- cl -(sp)
- 2:
- move.l .retaddr,a0
- jmp (a0)
- _Xacct: move.l (sp)+,.retaddr
- jsr _acct
- bra sys3
- !_Xlock: move.l (sp)+,.retaddr
- !#ifndef lword
- ! bsr st241
- !#endif
- ! jsr _lock
- ! bra sys3
- _Xioctl: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st248
- #endif
- jsr _ioctl
- lea 12(sp),sp
- bra sys4
- !_Xmpxcall: move.l (sp)+,.retaddr
- !#ifndef lword
- ! bsr st241
- !#endif
- ! trap #0
- ! .data2 56
- ! lea 12(sp),sp
- ! bra sys4
- _Xexece: move.l (sp)+,.retaddr
- jsr _execve
- lea 12(sp),sp
- bra sys4
- _Xumask: move.l (sp)+,.retaddr
- #ifndef lword
- bsr st241
- #endif
- jsr _umask
- add.l #4,sp
- mov d0,-(sp)
- move.l .retaddr,a0
- jmp (a0)
- _Xchroot: move.l (sp)+,.retaddr
- jsr _chroot
- bra sys3
- !----------------------------------------------------------------------------
- ! STACK ADJUSTMENT FOR THE TWO BYTE INTERPRETER
- !-----------------------------------------------------------------------------
- #ifndef lword
- st241: sub.l #2,sp
- move.l 2(sp),(sp)
- move.w 6(sp),d0
- ext.l d0
- move.l d0,4(sp)
- rts
- st243: 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
- st244: 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 16(sp),d0
- ext.l d0
- move.l d0,12(sp)
- rts
- st245: move.l (sp),-(sp)
- move.w 8(sp),d0
- ext.l d0
- move.l d0,4(sp)
- move.l 10(sp),8(sp)
- move.w 14(sp),d0
- ext.l d0
- move.l d0,12(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.w 14(sp),d0
- ext.l d0
- move.l d0,12(sp)
- rts
- st247: sub.l #6,sp
- move.l 6(sp),(sp)
- move.w 10(sp),d0
- ext.l d0
- move.l d0,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
- st248: move.l (sp),-(sp)
- move.w 8(sp),d0
- ext.l d0
- move.l d0,4(sp)
- move.w 10(sp),d0
- ext.l d0
- move.l d0,8(sp)
- rts
- #endif
|