* * trap.asm * Toolbox Interface library for * * GNO Kernel * v2.0.6 * Copyright 1991-1997, Procyon Inc. * * $Id: trap.asm,v 1.2 1997/07/27 23:33:36 gdr Exp $ * case on mcopy trap.mac udispatch gequ $E10008 dummy start ; ends up in .root end * int getpid(void) inline (0x0903, udispatch); getpid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space anop ; doesn't take errno ldx #$0903 jsl udispatch pla sta retval ret 2:retval END * int getppid(void) inline (0x4003, udispatch); getppid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space ph4 #errno ldx #$4003 jsl udispatch pla sta retval ret 2:retval END getuid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space ph4 #errno ldx #$2A03 jsl udispatch pla sta retval ret 2:retval END getgid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space ph4 #errno ldx #$2B03 jsl udispatch pla sta retval ret 2:retval END geteuid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space ph4 #errno ldx #$2C03 jsl udispatch pla sta retval ret 2:retval END getegid START libc_sys__ retval equ 1 sub (0:foo),2 assertVersion $0204 ; check for minimum version pha ; push result space ph4 #errno ldx #$2D03 jsl udispatch pla sta retval ret 2:retval END setuid START libc_sys__ retval equ 1 sub (2:uid),2 assertVersion $0204 ; check for minimum version pha ; push result space ph2 uid ph4 #errno ldx #$2E03 jsl udispatch pla sta retval ret 2:retval END setruid START libc_sys__ retval equ 1 sub (2:ruid),2 assertVersion $0206 ; check for minimum version pha ; push result space pea $FFFF ph2 ruid ph4 #errno ldx #$5303 ; setreuid jsl udispatch pla sta retval ret 2:retval END seteuid START libc_sys__ retval equ 1 sub (2:euid),2 assertVersion $0206 ; check for minimum version pha ; push result space ph2 euid pea $FFFF ph4 #errno ldx #$5303 ; setreuid jsl udispatch pla sta retval ret 2:retval END setreuid START libc_sys__ retval equ 1 sub (2:euid,2:ruid),2 assertVersion $0206 ; check for minimum version pha ; push result space ph2 euid ph2 ruid ph4 #errno ldx #$5303 ; setreuid jsl udispatch pla sta retval ret 2:retval END setgid START libc_sys__ retval equ 1 sub (2:gid),2 assertVersion $0204 ; check for minimum version pha ; push result space ph2 gid ph4 #errno ldx #$2F03 jsl udispatch pla sta retval ret 2:retval END setrgid START libc_sys__ retval equ 1 sub (2:rgid),2 assertVersion $0206 ; check for minimum version pha ; push result space pea $FFFF ph2 rgid ph4 #errno ldx #$5403 ; setregid jsl udispatch pla sta retval ret 2:retval END setegid START libc_sys__ retval equ 1 sub (2:egid),2 assertVersion $0206 ; check for minimum version pha ; push result space ph2 egid pea $FFFF ph4 #errno ldx #$5403 ; setregid jsl udispatch pla sta retval ret 2:retval END setregid START libc_sys__ retval equ 1 sub (2:egid,2:rgid),2 assertVersion $0206 ; check for minimum version pha ; push result space ph2 egid ph2 rgid ph4 #errno ldx #$5403 ; setregid jsl udispatch pla sta retval ret 2:retval END * int kill(int pid, int sig) inline (0x0A03, udispatch); kill START libc_sys__ retval equ 1 sub (2:sig,2:pid),2 assertVersion $0204 ; check for minimum version pha ph2 pid ph2 sig ph4 #errno ; tell the library routine where it is ldx #$0A03 jsl udispatch pla sta retval ret 2:retval END * int fork(void *subr) inline(0x0B03, udispatch); fork START libc_sys__ vfork ENTRY retval equ 1 sub (4:subr),2 assertVersion $0204 ; check for minimum version pha ph4 subr ph4 #errno ldx #$0B03 jsl udispatch pla sta retval ret 2:retval END * int fork2(void *subr, int stack, int prio, char *name, word argc, ...) fork2 START libc_sys__ subr equ 7 stack equ subr+4 prio equ stack+2 name equ prio+2 argc equ name+4 * set up the variable frame phb phk plb phd tsc tcd assertVersion $0204 ; check for minimum version pha ; temp space for result pei (subr+2) pei (subr) pei (stack) pei (prio) pei (name+2) pei (name) pea 0 tdc clc adc #argc pha ph4 #errno ldx #$3F03 jsl udispatch pla tay ; temp store result in Y lda argc asl a clc adc #argc tax dex lda 5 sta 1,x lda 4 sta 0,x pld plb dex dex phx tsc clc adc 1,s tcs tya rtl END * int exec(char *filename,char *cmdline) inline(0x0C03, udispatch); * * This function is provided in syscall.c * *exec START libc_sys__ *retval equ 1 * sub (4:cmdline,4:filename),2 * * pha * ph4 filename * ph4 cmdline * ph4 #errno * ldx #$0C03 * jsl udispatch * pla * sta retval * ret 2:retval * END * int swait(int sem) inline(0x0D03, udispatch); swait START libc_sys__ retval equ 1 sub (2:sem),2 assertVersion $0204 ; check for minimum version pha ph2 sem ph4 #errno ldx #$0D03 jsl udispatch pla sta retval ret 2:retval END * int ssignal(int sem) inline(0x0E03, udispatch); ssignal START libc_sys__ retval equ 1 sub (2:sem),2 assertVersion $0204 ; check for minimum version pha ph2 sem ph4 #errno ldx #$0E03 jsl udispatch pla sta retval ret 2:retval END * int screate(int count) inline(0x0F03, udispatch); screate START libc_sys__ retval equ 1 sub (2:sem),2 assertVersion $0204 ; check for minimum version pha ph2 sem ph4 #errno ldx #$0F03 jsl udispatch pla sta retval ret 2:retval END * int sdelete(int sem) inline(0x1003, udispatch); sdelete START libc_sys__ retval equ 1 sub (2:sem),2 assertVersion $0204 ; check for minimum version pha ph2 sem ph4 #errno ldx #$1003 jsl udispatch pla sta retval ret 2:retval END * void *signal(int sig, void (*func)()) inline(0x1603, udispatch); signal START libc_sys__ retval equ 1 sub (4:func,2:sig),4 assertVersion $0204 ; check for minimum version pha pha ph2 sig ph4 func ph4 #errno ldx #$1603 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int wait(union wait *status) inline(0x1703, udispatch); wait START libc_sys__ retval equ 1 sub (4:status),2 assertVersion $0204 ; check for minimum version pha ph4 status ph4 #errno ldx #$1703 jsl udispatch pla sta retval ret 2:retval END * int tcnewpgrp(int fdtty) inline(0x1803, udispatch); tcnewpgrp START libc_sys__ retval equ 1 sub (2:fdtty),2 assertVersion $0204 ; check for minimum version pha ph2 fdtty ph4 #errno ldx #$1803 jsl udispatch pla sta retval ret 2:retval END * int settpgrp(int fdtty) inline(0x1903, udispatch); settpgrp START libc_sys__ retval equ 1 sub (2:fdtty),2 assertVersion $0204 ; check for minimum version pha ph2 fdtty ph4 #errno ldx #$1903 jsl udispatch pla sta retval ret 2:retval END * int tctpgrp(int fdtty, int pid) inline(0x1A03, udispatch); tctpgrp START libc_sys__ retval equ 1 sub (2:pid,2:fdtty),2 assertVersion $0204 ; check for minimum version pha ph2 fdtty ph2 pid ph4 #errno ldx #$1A03 jsl udispatch pla sta retval ret 2:retval END * longword sigsetmask(longword mask) inline(0x1B03, udispatch); sigsetmask START libc_sys__ retval equ 1 sub (4:mask),4 assertVersion $0204 ; check for minimum version pha pha ph4 mask ph4 #errno ldx #$1B03 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * longword sigblock(longword mask) inline(0x1C03, udispatch); sigblock START libc_sys__ retval equ 1 sub (4:mask),4 assertVersion $0204 ; check for minimum version pha pha ph4 mask ph4 #errno ldx #$1C03 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int _execve(char *filename,char *cmdline) inline(0x1D03,udispatch); _execve START libc_sys__ retval equ 1 sub (4:cmdline,4:filename),2 assertVersion $0204 ; check for minimum version pha ph4 filename ph4 cmdline ph4 #errno ldx #$1D03 jsl udispatch pla sta retval ret 2:retval END * longword alarm(longword seconds) inline(0x1E03,udispatch); alarm START libc_sys__ retval equ 1 sub (4:seconds),4 assertVersion $0204 ; check for minimum version pha pha ph4 seconds ph4 #errno ldx #$1E03 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * longword alarm10(longword seconds) inline(0x4203,udispatch); alarm10 START libc_sys__ retval equ 1 sub (4:seconds),4 assertVersion $0204 ; check for minimum version pha pha ph4 seconds ph4 #errno ldx #$4203 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int setdebug(int code) inline(0x1F03,udispatch); setdebug START libc_sys__ retval equ 1 sub (2:code),2 assertVersion $0204 ; check for minimum version pha ph2 code anop ; doesn't take errno ldx #$1F03 jsl udispatch pla sta retval ret 2:retval END * void *setsystemvector(void *vect) inline(0x2003,udispatch); setsystemvector START libc_sys__ retval equ 1 sub (4:vect),4 assertVersion $0204 ; check for minimum version pha pha ph4 vect anop ; doesn't take errno ldx #$2003 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int sigpause(longword mask) inline(0x2103,udispatch); sigpause START libc_sys__ retval equ 1 sub (4:mask),2 assertVersion $0204 ; check for minimum version pha ph4 mask ph4 #errno ldx #$2103 jsl udispatch pla sta retval ret 2:retval END * kvmt *kvm_open(void) inline(0x1103, udispatch); kvm_open START libc_sys__ retval equ 1 sub (0:foo),4 assertVersion $0204 ; check for minimum version pha pha ph4 #errno ldx #$1103 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int kvm_close(kvmt *k) inline(0x1203, udispatch); kvm_close START libc_sys__ retval equ 1 sub (4:k),2 assertVersion $0204 ; check for minimum version pha ph4 k ph4 #errno ldx #$1203 jsl udispatch pla sta retval ret 2:retval END * struct pentry *kvm_getproc(kvmt *kd, int pid) inline(0x1303, udispatch); kvm_getproc START libc_sys__ kvmgetproc ENTRY retval equ 1 sub (2:pid,4:kd),4 assertVersion $0204 ; check for minimum version pha pha ph4 kd ph2 pid ph4 #errno ldx #$1303 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * struct pentry *kvm_nextproc(kvmt *kd) inline(0x1403, udispatch); kvm_nextproc START libc_sys__ kvmnextproc ENTRY retval equ 1 sub (4:kd),4 assertVersion $0204 ; check for minimum version pha pha ph4 kd ph4 #errno ldx #$1403 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END * int kvm_setproc(kvmt *kd) inline(0x1503, udispatch); kvm_setproc START libc_sys__ kvmsetproc ENTRY retval equ 1 sub (4:kd),4 assertVersion $0204 ; check for minimum version pha ph4 kd ph4 #errno ldx #$1503 jsl udispatch pla sta retval ret 2:retval END dup START libc_sys__ retval equ 1 sub (2:fd),2 assertVersion $0204 ; check for minimum version pha ph2 fd ph4 #errno ldx #$2203 jsl udispatch pla sta retval ret 2:retval END dup2 START libc_sys__ retval equ 1 sub (2:fd2,2:fd1),2 assertVersion $0204 ; check for minimum version pha ph2 fd1 ph2 fd2 ph4 #errno ldx #$2303 jsl udispatch pla sta retval ret 2:retval END pipe START libc_sys__ retval equ 1 sub (4:intptr),2 assertVersion $0204 ; check for minimum version pha ph4 intptr ph4 #errno ldx #$2403 jsl udispatch pla sta retval ret 2:retval END * int _getpgrp(int pid) inline(0x2503, udispatch); _getpgrp START libc_sys__ retval equ 1 sub (2:pid),2 assertVersion $0204 ; check for minimum version pha ph2 pid ph4 #errno ldx #$2503 jsl udispatch pla sta retval ret 2:retval END * int setpgrp(int pid, int pgrp) inline(0x2503, udispatch); setpgid START libc_sys__ setpgrp ENTRY retval equ 1 sub (2:pgrp,2:pid),2 assertVersion $0204 ; check for minimum version pha ph2 pid ph2 pgrp ph4 #errno ldx #$3403 jsl udispatch pla sta retval ret 2:retval END * int ioctl (int fd, unsigned long request, void *argp); ioctl START libc_sys__ retval equ 1 sub (4:argp,4:request,2:d),2 assertVersion $0204 ; check for minimum version pha ph2 d ph4 request ph4 argp ph4 #errno ldx #$2603 jsl udispatch pla sta retval ret 2:retval END * int stat (const char *filename, struct stat *s_buf); stat START libc_sys__ retval equ 1 sub (4:buf,4:name),2 assertVersion $0204 ; check for minimum version pha ph4 name ph4 buf ph4 #errno ldx #$2703 jsl udispatch pla sta retval ret 2:retval END * int fstat (int fd, struct stat *s_buf); fstat START libc_sys__ retval equ 1 sub (4:buf,2:fd),2 assertVersion $0204 ; check for minimum version pha ph2 fd ph4 buf ph4 #errno ldx #$2803 jsl udispatch pla sta retval ret 2:retval END * int lstat (const char *filename, struct stat *s_buf); lstat START libc_sys__ retval equ 1 sub (4:buf,4:name),2 assertVersion $0204 ; check for minimum version pha ph4 name ph4 buf ph4 #errno ldx #$2903 jsl udispatch pla sta retval ret 2:retval END procsend START libc_sys__ retval equ 1 sub (4:msg,2:pid),2 assertVersion $0204 ; check for minimum version pha ph2 pid ph4 msg ph4 #errno ldx #$3003 jsl udispatch pla sta retval ret 2:retval END procreceive START libc_sys__ retval equ 1 sub (0:foo),4 assertVersion $0204 ; check for minimum version pha pha ph4 #errno ldx #$3103 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END procrecvclr START libc_sys__ retval equ 1 sub (0:foo),4 assertVersion $0204 ; check for minimum version pha pha ph4 #errno ldx #$3203 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END procrecvtim START libc_sys__ retval equ 1 sub (2:timeout),4 assertVersion $0204 ; check for minimum version pha pha ph2 timeout ph4 #errno ldx #$3303 jsl udispatch pla sta retval pla sta retval+2 ret 4:retval END times START libc_sys__ retval equ 1 sub (4:buffer),2 assertVersion $0204 ; check for minimum version pha ph4 buffer ph4 #errno ldx #$3503 jsl udispatch pla sta retval ret 2:retval END * int pcreate(int count); pcreate START libc_sys__ subroutine (2:count),0 assertVersion $0204 ; check for minimum version pha pei (count) ph4 #errno ldx #$3603 jsl udispatch ply return2 END * int psend(int portid, long int msg); psend START libc_sys__ subroutine (4:msg,2:portid),0 assertVersion $0204 ; check for minimum version pha pei (portid) pei (msg+2) pei (msg) ph4 #errno ldx #$3703 jsl udispatch ply return2 END * long int preceive(int portid); preceive START libc_sys__ subroutine (2:portid),0 assertVersion $0204 ; check for minimum version pha pha pei (portid) ph4 #errno ldx #$3803 jsl udispatch ply plx return2 END * int pdelete(int portid, int (*dispose)()); pdelete START libc_sys__ subroutine (4:dispose,2:portid),0 assertVersion $0204 ; check for minimum version pha pei (portid) pei (dispose+2) pei (dispose) ph4 #errno ldx #$3903 jsl udispatch ply return2 END * int preset(int portid, int (*dispose)()); preset START libc_sys__ subroutine (4:dispose,2:portid),0 assertVersion $0204 ; check for minimum version pha pei (portid) pei (dispose+2) pei (dispose) ph4 #errno ldx #$3A03 jsl udispatch ply return2 END * int pbind(int portid, char *name); pbind START libc_sys__ subroutine (4:name,2:portid),0 assertVersion $0204 ; check for minimum version pha pei (portid) pei (name+2) pei (name) ph4 #errno ldx #$3B03 jsl udispatch ply return2 END * int pgetport(char *name); pgetport START libc_sys__ subroutine (4:name),0 assertVersion $0204 ; check for minimum version pha pei (name+2) pei (name) ph4 #errno ldx #$3C03 jsl udispatch ply return2 END * int pgetcount(int portnum); pgetcount START libc_sys__ subroutine (2:portnum),0 assertVersion $0204 ; check for minimum version pha pei (portnum) ph4 #errno ldx #$3D03 jsl udispatch ply return2 END * int pgetport(char *name); scount START libc_sys__ subroutine (2:sem),0 assertVersion $0204 ; check for minimum version pha pei (sem) ph4 #errno ldx #$3E03 jsl udispatch ply return2 END * void SetGNOQuitRec(word pCount,GSString255Ptr pathname, word flags) SetGNOQuitRec START libc_sys__ retval equ 1 sub (2:flags,4:pathname,2:pCount),0 assertVersion $0204 ; check for minimum version pha ph2 pCount ph4 pathname ph2 flags ph4 #errno ; tell the library routine where it is ldx #$4103 jsl udispatch pla ret END * int select (int width, fd_set *readfds, fd_set *writefds, * fd_set *exceptfds, struct timeval *timeout); select START libc_sys__ res equ 1 sub (4:toptr,4:exc,4:wr,4:rd,2:nfd),2 assertVersion $0206 ; check for minimum version pha pei (nfd) pei (rd+2) pei (rd) pei (wr+2) pei (wr) pei (exc+2) pei (exc) pei (toptr+2) pei (toptr) ph4 #errno ldx #$4303 jsl udispatch pla sta res ret 2:res END InstallNetDriver START libc_sys__ res equ 1 sub (2:domain,4:netcore),2 assertVersion $0206 ; check for minimum version pha pei (netcore+2) pei (netcore) pei (domain) ph4 #errno ldx #$4403 jsl udispatch pla sta res ret 2:res END socket START libc_sys__ res equ 1 sub (2:protocol,2:type,2:domain),2 assertVersion $0206 ; check for minimum version pha pei (domain) pei (type) pei (protocol) ph4 #errno ldx #$4503 jsl udispatch pla sta res ret 2:res END bind START libc_sys__ res equ 1 sub (2:addrlen,4:myaddr,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (myaddr+2) pei (myaddr) pei (addrlen) ph4 #errno ldx #$4603 jsl udispatch pla sta res ret 2:res END connect START libc_sys__ res equ 1 sub (2:addrlen,4:servaddr,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (servaddr+2) pei (servaddr) pei (addrlen) ph4 #errno ldx #$4703 jsl udispatch pla sta res ret 2:res END listen START libc_sys__ res equ 1 sub (2:backlog,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (backlog) ph4 #errno ldx #$4803 jsl udispatch pla sta res ret 2:res END accept START libc_sys__ res equ 1 sub (4:addrlen,4:remaddr,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (remaddr+2) pei (remaddr) pei (addrlen+2) pei (addrlen) ph4 #errno ldx #$4903 jsl udispatch pla sta res ret 2:res END recvfrom START libc_sys__ res equ 1 sub (4:addrlen,4:remaddr,2:flags,4:len,4:buf,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (buf+2) pei (buf) pei (len+2) pei (len) pei (flags) pei (remaddr+2) pei (remaddr) pei (addrlen+2) pei (addrlen) ph4 #errno ldx #$4A03 jsl udispatch pla sta res ret 2:res END sendto START libc_sys__ res equ 1 sub (2:addrlen,4:remaddr,2:flags,4:len,4:buf,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (buf+2) pei (buf) pei (len+2) pei (len) pei (flags) pei (remaddr+2) pei (remaddr) pei (addrlen) ph4 #errno ldx #$4B03 jsl udispatch pla sta res ret 2:res END recv START libc_sys__ res equ 1 sub (2:flags,4:len,4:buf,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (buf+2) pei (buf) pei (len+2) pei (len) pei (flags) ph4 #errno ldx #$4C03 jsl udispatch pla sta res ret 2:res END send START libc_sys__ res equ 1 sub (2:flags,4:len,4:buf,2:fd),2 assertVersion $0206 ; check for minimum version pha pei (fd) pei (buf+2) pei (buf) pei (len+2) pei (len) pei (flags) ph4 #errno ldx #$4D03 jsl udispatch pla sta res ret 2:res END getpeername START libc_sys__ res equ 1 sub (4:addrlen,4:addr,2:s),2 assertVersion $0206 ; check for minimum version pha pei (s) pei (addr+2) pei (addr) pei (addrlen+2) pei (addrlen) ph4 #errno ldx #$4E03 jsl udispatch pla sta res ret 2:res END getsockname START libc_sys__ res equ 1 sub (4:addrlen,4:addr,2:s),2 assertVersion $0206 ; check for minimum version pha pei (s) pei (addr+2) pei (addr) pei (addrlen+2) pei (addrlen) ph4 #errno ldx #$4F03 jsl udispatch pla sta res ret 2:res END getsockopt START libc_sys__ res equ 1 sub (4:optlen,4:optval,2:optname,2:level,2:s),2 assertVersion $0206 ; check for minimum version pha pei (s) pei (level) pei (optname) pei (optval+2) pei (optval) pei (optlen+2) pei (optlen) ph4 #errno ldx #$5003 jsl udispatch pla sta res ret 2:res END setsockopt START libc_sys__ res equ 1 sub (2:optlen,4:optval,2:optname,2:level,2:s),2 assertVersion $0206 ; check for minimum version pha pei (s) pei (level) pei (optname) pei (optval+2) pei (optval) pei (optlen) ph4 #errno ldx #$5103 jsl udispatch pla sta res ret 2:res END shutdown START libc_sys__ res equ 1 sub (2:how,2:s),2 assertVersion $0206 ; check for minimum version pha pei (s) pei (how) ph4 #errno ldx #$5203 jsl udispatch pla sta res ret 2:res END