home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
program
/
m2posx02
/
oscalls.m2h
< prev
next >
Wrap
Text File
|
1993-10-23
|
18KB
|
898 lines
/* Definitionen fuer "GEMDOS"-``Inline''-Betriebssystemaufrufe.
*
* Die Datei ist mit: #include "oscalls.m2h" noch vor dem eigentlichen
* Programmcode (z.B. als letzte ``Importdatei'') in die M2-Datei einzuladen.
* Die Datei kann sowohl im aktuellen Verzeichnis zusammen mit den M2-Dateien
* stehen, als auch im Verzeichnis, in dem der Praeprozessor nach Include-
* Dateien sucht; falls der GNU-Praeprozessor (gcc-cpp) benutzt wird, muss
* hierfuer die Environmentvariable GNUINC gesetzt werden, z.B.:
*
* setenv GNUINC f:\usr\include\m2
*
* Die Argumente der Makros sollten nur einfache (nicht Teil eines RECORDs
* oder eines ARRAYs), lokale (vor allem keine VAR-Parameter) Variablen sein.
*
* "GEMDOS": Es wird nur das Datenregister D0 fuer die Parameteruebergabe
* benoetigt, das "GEMDOS" selbst veraendert die Register D0-D2 und A0-A2.
*/
/* "GEMDOS"-Funktionsnummern */
#define PTERM0 0
#define CCONIN 1
#define CCONOUT 2
#define CAUXIN 3
#define CAUXOUT 4
#define CPRNOUT 5
#define CRAWIO 6
#define CRAWCIN 7
#define CNECIN 8
#define CCONWS 9
#define CCONRS 10
#define CCONIS 11
#define DSETDRV 14
#define CCONOS 16
#define CPRNOS 17
#define CAUXIS 18
#define CAUXOS 19
#define MADDALT 20
#define DGETDRV 25
#define FSETDTA 26
#define SUPER 32
#define TGETDATE 42
#define TSETDATE 43
#define TGETTIME 44
#define TSETTIME 45
#define FGETDTA 47
#define SVERSION 48
#define PTERMRES 49
#define DFREE 54
#define DCREATE 57
#define DDELETE 58
#define DSETPATH 59
#define FCREATE 60
#define FOPEN 61
#define FCLOSE 62
#define FREAD 63
#define FWRITE 64
#define FDELETE 65
#define FSEEK 66
#define FATTRIB 67
#define MXALLOC 68
#define FDUP 69
#define FFORCE 70
#define DGETPATH 71
#define MALLOC 72
#define MFREE 73
#define MSHRINK 74
#define PEXEC 75
#define PTERM 76
#define FSFIRST 78
#define FSNEXT 79
#define FRENAME 86
#define FDATIME 87
#define FLOCK 92
#if MINT /* "MiNT-GEMDOS"-Erweiterungen (bis Version 0.99) */
#define SYIELD 255
#define FPIPE 256
#define FCNTL 260
#define FINSTAT 261
#define FOUTSTAT 262
#define FGETCHAR 263
#define FPUTCHAR 264
#define PWAIT 265
#define PNICE 266
#define PGETPID 267
#define PGETPPID 268
#define PGETPGRP 269
#define PSETPGRP 270
#define PGETUID 271
#define PSETUID 272
#define PKILL 273
#define PSIGNAL 274
#define PVFORK 275
#define PGETGID 276
#define PSETGID 277
#define PSIGBLOCK 278
#define PSIGSETMASK 279
#define PUSRVAL 280
#define PDOMAIN 281
#define PSIGRETURN 282
#define PFORK 283
#define PWAIT3 284
#define FSELECT 285
#define PRUSAGE 286
#define PSETLIMIT 287
#define TALARM 288
#define PAUSE 289
#define SYSCONF 290
#define PSIGPENDING 291
#define DPATHCONF 292
#define PMSG 293
#define FMIDIPIPE 294
#define PRENICE 295
#define DOPENDIR 296
#define DREADDIR 297
#define DREWINDDIR 298
#define DCLOSEDIR 299
#define FXATTR 300
#define FLINK 301
#define FSYMLINK 302
#define FREADLINK 303
#define DCNTL 304
#define FCHOWN 305
#define FCHMOD 306
#define PUMASK 307
#define PSEMAPHORE 308
#define DLOCK 309
#define PSIGPAUSE 310
#define PSIGACTION 311
#define PGETEUID 312
#define PGETEGID 313
#define PWAITPID 314
#define DGETCWD 315
#define SALERT 316
#endif /* MINT */
/* "XBIOS" */
#define SUPEXEC 38
/* "BIOS" */
#define SETEXC 5
#define DTRAP 4E41H
#define BTRAP 4E4DH
#define XTRAP 4E4EH
#define PSHW 3F00H /* MOVE.W D0, -(sp) */
#define PSHL 2F00H /* MOVE.L D0, -(sp) */
#define PSHC 3F3CH /* MOVE.W #<const>, -(sp) */
#define ADDQ2 548FH /* ADDQ.l #2, sp */
#define ADDQ4 588FH /* ADDQ.l #4, sp */
#define ADDQ6 5C8FH /* ADDQ.l #6, sp */
#define ADDQ8 508FH /* ADDQ.l #8, sp */
#define LEA 4FEFH /* LEA <const>(sp), sp */
#if HM2 || TDIM2 || MM2 || LPRM2 || SPCM2 || FTLM2
#define DCALL0(f)\
CODE(PSHC,f,DTRAP,ADDQ2)
#define DCALL1w(f,p)\
SETREG(0,p);CODE(PSHW,PSHC,f,DTRAP,ADDQ4)
#define DCALL2w(f,p1,p2)\
SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ6)
#define DCALL3w(f,p1,p2,p3)\
SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
#define DCALL1w1l(f,p1,p2)\
SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
#define DCALL1w2l(f,p1,p2,p3)\
SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
CODE(PSHW,PSHC,f,DTRAP,LEA,12)
#define DCALL1w3l(f,p1,p2,p3,p4)\
SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);\
SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,16)
#define DCALL2w1l(f,p1,p2,p3)\
SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
CODE(PSHW,PSHC,f,DTRAP,LEA,10)
#define DCALL2w2l(f,p1,p2,p3,p4)\
SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);\
SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,14)
#define DCALL1w1l1w(f,p1,p2,p3)\
SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
CODE(PSHW,PSHC,f,DTRAP,LEA,10)
#define DCALL1l(f,p)\
SETREG(0,p);CODE(PSHL,PSHC,f,DTRAP,ADDQ6)
#define DCALL2l(f,p1,p2)\
SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,LEA,10)
#define DCALL1l1w(f,p1,p2)\
SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,ADDQ8)
#define DCALL1l2w(f,p1,p2,p3)\
SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
CODE(PSHL,PSHC,f,DTRAP,LEA,10)
#define XCALL1l(f,p)\
SETREG(0,p);CODE(PSHL,PSHC,f,XTRAP,ADDQ6)
#define BCALL1w1l(f,p1,p2)\
SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ8)
#endif
/*==========================================================================*/
/* "GEMDOS"-Calls */
/*==========================================================================*/
#define Pterm0()\
DCALL0(PTERM0)
#define Cconin(_KEY)\
SAVEREGS\
DCALL0(CCONIN);\
RESTOREREGS\
GETLREG(0,_KEY)
#define Cconout(_CHAR)\
SAVEREGS\
DCALL1w(CCONOUT,_CHAR);\
RESTOREREGS
#define Cauxin(_CHAR)\
SAVEREGS\
DCALL0(CAUXIN);\
RESTOREREGS\
GETSWREG(0,_CHAR)
#define Cauxout(_CHAR)\
SAVEREGS\
DCALL1w(CAUXOUT,_CHAR);\
RESTOREREGS
#define Cprnout(_CHAR)\
SAVEREGS\
DCALL1w(CPRNOUT,_CHAR);\
RESTOREREGS
#define Crawio(_DAT,_RES)\
SAVEREGS\
DCALL1w(CRAWIO,_DAT);\
RESTOREREGS\
GETLREG(0,_RES)
#define Crawcin(_KEY)\
SAVEREGS\
DCALL0(CRAWCIN);\
RESTOREREGS\
GETLREG(0,_KEY)
#define Cnecin(_KEY)\
SAVEREGS\
DCALL0(CNECIN);\
RESTOREREGS\
GETLREG(0,_KEY)
#define Cconws(_STR)\
SAVEREGS\
DCALL1l(CCONWS,_STR);\
RESTOREREGS
#define Cconrs(_BUF)\
SAVEREGS\
DCALL1l(CCONRS,_BUF);\
RESTOREREGS
#define Cconis(_STAT)\
SAVEREGS\
DCALL0(CCONIS);\
RESTOREREGS\
GETSWREG(0,_STAT)
#define Dsetdrv(_DRV,_DRIVES)\
SAVEREGS\
DCALL1w(DSETDRV,_DRV);\
RESTOREREGS\
GETLREG(0,_DRIVES)
#define Cconos(_STAT)\
SAVEREGS\
DCALL0(CCONOS);\
RESTOREREGS\
GETSWREG(0,_STAT)
#define Cprnos(_STAT)\
SAVEREGS\
DCALL0(CPRNOS);\
RESTOREREGS\
GETSWREG(0,_STAT)
#define Cauxis(_STAT)\
SAVEREGS\
DCALL0(CAUXIS);\
RESTOREREGS\
GETSWREG(0,_STAT)
#define Cauxos(_STAT)\
SAVEREGS\
DCALL0(CAUXOS);\
RESTOREREGS\
GETSWREG(0,_STAT)
#define Maddalt(_START,_SIZE,_RES)\
SAVEREGS\
DCALL2l(MADDALT,_START,_SIZE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dgetdrv(_DRV)\
SAVEREGS\
DCALL0(DGETDRV);\
RESTOREREGS\
GETUWREG(0,_DRV)
#define Fsetdta(_DTA)\
SAVEREGS\
DCALL1l(FSETDTA,_DTA);\
RESTOREREGS
#define Super(_DAT,_VAL)\
SAVEREGS\
DCALL1l(SUPER,_DAT);\
RESTOREREGS\
GETLREG(0,_VAL)
#define Tgetdate(_DATE)\
SAVEREGS\
DCALL0(TGETDATE);\
RESTOREREGS\
GETUWREG(0,_DATE)
#define Tsetdate(_DATE,_RES)\
SAVEREGS\
DCALL1w(TSETDATE,_DATE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Tgettime(_TIME)\
SAVEREGS\
DCALL0(TGETTIME);\
RESTOREREGS\
GETUWREG(0,_TIME)
#define Tsettime(_TIME,_RES)\
SAVEREGS\
DCALL1w(TSETTIME,_TIME);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fgetdta(_DTA)\
SAVEREGS\
DCALL0(FGETDTA);\
RESTOREREGS\
GETREGADR(0,_DTA)
#define Sversion(_VERS)\
SAVEREGS\
DCALL0(SVERSION);\
RESTOREREGS\
GETUWREG(0,_VERS)
#define Ptermres(_KEEP,_RET)\
DCALL1l1w(PTERMRES,_KEEP,_RET)
#define Dfree(_BUF,_DRV,_RES)\
SAVEREGS\
DCALL1l1w(DFREE,_BUF,_DRV);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dcreate(_DIR,_RES)\
SAVEREGS\
DCALL1l(DCREATE,_DIR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Ddelete(_DIR,_RES)\
SAVEREGS\
DCALL1l(DDELETE,_DIR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dsetpath(_PATH,_RES)\
SAVEREGS\
DCALL1l(DSETPATH,_PATH);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fcreate(_FILE,_ATTR,_HNDL)\
SAVEREGS\
DCALL1l1w(FCREATE,_FILE,_ATTR);\
RESTOREREGS\
GETLREG(0,_HNDL)
#define Fopen(_FILE,_MODE,_HNDL)\
SAVEREGS\
DCALL1l1w(FOPEN,_FILE,_MODE);\
RESTOREREGS\
GETLREG(0,_HNDL)
#define Fclose(_HNDL,_RES)\
SAVEREGS\
DCALL1w(FCLOSE,_HNDL);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fread(_HNDL,_LEN,_BUF,_CNT)\
SAVEREGS\
DCALL1w2l(FREAD,_HNDL,_LEN,_BUF);\
RESTOREREGS\
GETLREG(0,_CNT)
#define Fwrite(_HNDL,_LEN,_BUF,_CNT)\
SAVEREGS\
DCALL1w2l(FWRITE,_HNDL,_LEN,_BUF);\
RESTOREREGS\
GETLREG(0,_CNT)
#define Fdelete(_FILE,_RES)\
SAVEREGS\
DCALL1l(FDELETE,_FILE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fseek(_OFF,_HNDL,_MODE,_POS)\
SAVEREGS\
DCALL1l2w(FSEEK,_OFF,_HNDL,_MODE);\
RESTOREREGS\
GETLREG(0,_POS)
#define Fattrib(_FILE,_FLAG,_ATTR,_OLD)\
SAVEREGS\
DCALL1l2w(FATTRIB,_FILE,_FLAG,_ATTR);\
RESTOREREGS\
GETSWREG(0,_OLD)
#define Mxalloc(_SIZE,_MODE,_ADR)\
SAVEREGS\
DCALL1l1w(MXALLOC,_SIZE,_MODE);\
RESTOREREGS\
GETREGADR(0,_ADR)
#define Fdup(_STD,_HNDL)\
SAVEREGS\
DCALL1w(FDUP,_STD);\
RESTOREREGS\
GETLREG(0,_HNDL)
#define Fforce(_STD,_HNDL,_RES)\
SAVEREGS\
DCALL2w(FFORCE,_STD,_HNDL);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dgetpath(_PATH,_DRV,_RES)\
SAVEREGS\
DCALL1l1w(DGETPATH,_PATH,_DRV);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Malloc(_SIZE,_ADR)\
SAVEREGS\
DCALL1l(MALLOC,_SIZE);\
RESTOREREGS\
GETREGADR(0,_ADR)
#define Mfree(_ADR,_RES)\
SAVEREGS\
DCALL1l(MFREE,_ADR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Mshrink(_ADR,_SIZE,_RES)\
SAVEREGS\
DCALL1w2l(MSHRINK,0,_ADR,_SIZE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pexec(_MODE,_PROG,_TAIL,_ENV,_RES)\
SAVEREGS\
DCALL1w3l(PEXEC,_MODE,_PROG,_TAIL,_ENV);\
RESTOREREGS\
GETLREG(0,_RES)
#define Pterm(_RET)\
DCALL1w(PTERM,_RET)
#define Fsfirst(_FILE,_ATTR,_RES)\
SAVEREGS\
DCALL1l1w(FSFIRST,_FILE,_ATTR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fsnext(_RES)\
SAVEREGS\
DCALL0(FSNEXT);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Frename(_OLD,_NEW,_RES)\
SAVEREGS\
DCALL1w2l(FRENAME,0,_OLD,_NEW);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fdatime(_DATIME,_FILE,_FLAG)\
SAVEREGS\
DCALL1l2w(FDATIME,_DATIME,_FILE,_FLAG);\
RESTOREREGS
#define Flock(_HDL,_MODE,_FROM,_LEN,_RES)\
SAVEREGS\
DCALL2w2l(FLOCK,_HDL,_MODE,_FROM,_LEN);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Supexec(_PROC)\
SAVEREGS\
XCALL1l(SUPEXEC,_PROC);\
RESTOREREGS
#define Setexc(_VEC,_ADR,_OLD)\
SAVEREGS\
BCALL1w1l(SETEXC,_VEC,_ADR);\
RESTOREREGS\
GETREGADR(0,_OLD)
#if MINT
/*==========================================================================*/
/* MiNT-Calls */
/*==========================================================================*/
#define Syield()\
SAVEREGS\
DCALL0(SYIELD);\
RESTOREREGS
#define Fpipe(_PTR,_RES)\
SAVEREGS\
DCALL1l(FPIPE,_PTR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fcntl(_HNDL,_ARG,_CMD,_RES)\
SAVEREGS\
DCALL1w1l1w(FCNTL,_HNDL,_ARG,_CMD);\
RESTOREREGS\
GETLREG(0,_RES)
#define Finstat(_HNDL,_CNT)\
SAVEREGS\
DCALL1w(FINSTAT,_HNDL);\
RESTOREREGS\
GETLREG(0,_CNT)
#define Foutstat(_HNDL,_CNT)\
SAVEREGS\
DCALL1w(FOUTSTAT,_HNDL);\
RESTOREREGS\
GETLREG(0,_CNT)
#define Fgetchar(_HNDL,_MODE,_RES)\
SAVEREGS\
DCALL2w(FGETCHAR,_HNDL,_MODE);\
RESTOREREGS\
GETLREG(0,_RES)
#define Fputchar(_HNDL,_CHAR,_MODE,_RES)\
SAVEREGS\
DCALL1w1l1w(FPUTCHAR,_HNDL,_CHAR,_MODE);\
RESTOREREGS\
GETLREG(0,_RES)
#define Pwait(_RES)\
SAVEREGS\
DCALL0(PWAIT);\
RESTOREREGS\
GETLREG(0,_RES)
#define Pnice(_DELTA,_PRIO)\
SAVEREGS\
DCALL1w(PNICE,_DELTA);\
RESTOREREGS\
GETLREG(0,_PRIO)
#define Pgetpid(_PID)\
SAVEREGS\
DCALL0(PGETPID);\
RESTOREREGS\
GETUWREG(0,_PID)
#define Pgetppid(_PPID)\
SAVEREGS\
DCALL0(PGETPPID);\
RESTOREREGS\
GETUWREG(0,_PPID)
#define Pgetpgrp(_PGRP)\
SAVEREGS\
DCALL0(PGETPGRP);\
RESTOREREGS\
GETUWREG(0,_PGRP)
#define Psetpgrp(_PID,_GRP,_RES)\
SAVEREGS\
DCALL2w(PSETPGRP,_PID,_GRP);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pgetuid(_UID)\
SAVEREGS\
DCALL0(PGETUID);\
RESTOREREGS\
GETUWREG(0,_UID)
#define Psetuid(_UID,_RES)\
SAVEREGS\
DCALL1w(PSETUID,_UID);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pkill(_PID,_SIG,_RES)\
SAVEREGS\
DCALL2w(PKILL,_PID,_SIG);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Psignal(_SIG,_HANDLER,_OLD)\
SAVEREGS\
DCALL1w1l(PSIGNAL,_SIG,_HANDLER);\
RESTOREREGS\
GETREGADR(0,_OLD)
#define Pvfork(_RES)\
SAVEREGS\
DCALL0(PVFORK);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pgetgid(_GID)\
SAVEREGS\
DCALL0(PGETGID);\
RESTOREREGS\
GETUWREG(0,_GID)
#define Psetgid(_GID,_RES)\
SAVEREGS\
DCALL1w(PSETGID,_GID);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Psigblock(_MASK,_OLD)\
SAVEREGS\
DCALL1l(PSIGBLOCK,_MASK);\
RESTOREREGS\
GETLREG(0,_OLD)
#define Psigsetmask(_MASK,_OLD)\
SAVEREGS\
DCALL1l(PSIGSETMASK,_MASK);\
RESTOREREGS\
GETLREG(0,_OLD)
#define Pusrval(_ARG,_VAL)\
SAVEREGS\
DCALL1l(PUSRVAL,_ARG);\
RESTOREREGS\
GETLREG(0,_VAL)
#define Pdomain(_DOM,_OLD)\
SAVEREGS\
DCALL1w(PDOMAIN,_DOM);\
RESTOREREGS\
GETSWREG(0,_OLD)
#define Psigreturn()\
SAVEREGS\
DCALL0(PSIGRETURN);\
RESTOREREGS
#define Pfork(_RES)\
SAVEREGS\
DCALL0(PFORK);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pwait3(_FLAG,_RUSAGE,_RES)\
SAVEREGS\
DCALL1w1l(PWAIT3,_FLAG,_RUSAGE);\
RESTOREREGS\
GETLREG(0,_RES)
#define Fselect(_TIMEOUT,_RFDS,_WFDS,_XFDS,_RES)\
SAVEREGS\
DCALL1w3l(FSELECT,_TIMEOUT,_RFDS,_WFDS,_XFDS);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Prusage(_RSCADR)\
SAVEREGS\
DCALL1l(PRUSAGE,_RSCADR);\
RESTOREREGS
#define Psetlimit(_LIM,_VAL,_OLD)\
SAVEREGS\
DCALL1w1l(PSETLIMIT,_LIM,_VAL);\
RESTOREREGS\
GETLREG(0,_OLD)
#define Talarm(_SECS,_OLD)\
SAVEREGS\
DCALL1l(TALARM,_SECS);\
RESTOREREGS\
GETLREG(0,_OLD)
#define Pause()\
SAVEREGS\
DCALL0(PAUSE);\
RESTOREREGS
#define Sysconf(_WHICH,_VAL)\
SAVEREGS\
DCALL1w(SYSCONF,_WHICH);\
RESTOREREGS\
GETLREG(0,_VAL)
#define Psigpending(_SIGS)\
SAVEREGS\
DCALL0(PSIGPENDING);\
RESTOREREGS\
GETLREG(0,_SIGS)
#define Dpathconf(_NAME,_WHICH,_VAL)\
SAVEREGS\
DCALL1l1w(DPATHCONF,_NAME,_WHICH);\
RESTOREREGS\
GETLREG(0,_VAL)
#define Pmsg(_MODE,_MBOXID,_MSGPTR,_RES)\
SAVEREGS\
DCALL1w2l(PMSG,_MODE,_MBOXID,_MSGPTR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fmidipipe(_PID,_IN,_OUT,_RES)\
SAVEREGS\
DCALL3w(FMIDIPIPE,_PID,_IN,_OUT);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Prenice(_PID,_DELTA,_CURRENT)\
SAVEREGS\
DCALL2w(PRENICE,_PID,_DELTA);\
RESTOREREGS\
GETLREG(0,_CURRENT)
#define Dopendir(_NAME,_FLAG,_DIR)\
SAVEREGS\
DCALL1l1w(DOPENDIR,_NAME,_FLAG);\
RESTOREREGS\
GETLREG(0,_DIR)
#define Dreaddir(_LEN,_DIR,_BUF,_RES)\
SAVEREGS\
DCALL1w2l(DREADDIR,_LEN,_DIR,_BUF);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Drewinddir(_DIR,_RES)\
SAVEREGS\
DCALL1l(DREWINDDIR,_DIR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dclosedir(_DIR,_RES)\
SAVEREGS\
DCALL1l(DCLOSEDIR,_DIR);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fxattr(_FLAG,_NAME,_XATTR,_RES)\
SAVEREGS\
DCALL1w2l(FXATTR,_FLAG,_NAME,_XATTR);\
RESTOREREGS\
GETLREG(0,_RES)
#define Flink(_OLD,_NEW,_RES)\
SAVEREGS\
DCALL2l(FLINK,_OLD,_NEW);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fsymlink(_OLD,_NEW,_RES)\
SAVEREGS\
DCALL2l(FSYMLINK,_OLD,_NEW);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Freadlink(_BUFSIZ,_BUF,_NAME,_RES)\
SAVEREGS\
DCALL1w2l(FREADLINK,_BUFSIZ,_BUF,_NAME);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Dcntl(_CMD,_NAME,_ARG,_RES)\
SAVEREGS\
DCALL1w2l(DCNTL,_CMD,_NAME,_ARG);\
RESTOREREGS\
GETLREG(0,_RES)
#define Fchown(_FILE,_UID,_GID,_RES)\
SAVEREGS\
DCALL1l2w(FCHOWN,_FILE,_UID,_GID);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Fchmod(_FILE,_MODE,_RES)\
SAVEREGS\
DCALL1l1w(FCHMOD,_FILE,_MODE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pumask(_MODE,_OLD)\
SAVEREGS\
DCALL1w(PUMASK,_MODE);\
RESTOREREGS\
GETUWREG(0,_OLD)
#define Psemaphore(_MODE,_ID,_TOUT,_RES)\
SAVEREGS\
DCALL1w2l(PSEMAPHORE,_MODE,_ID,_TOUT);\
RESTOREREGS\
GETLREG(0,_RES)
#define Dlock(_MODE,_DRV,_RES)\
SAVEREGS\
DCALL2w(DLOCK,_MODE,_DRV);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Psigpause(_SIGMASK)\
SAVEREGS\
DCALL1l(PSIGPAUSE,_SIGMASK);\
RESTOREREGS
#define Psigaction(_SIG,_ACT,_OACT,_RES)\
SAVEREGS\
DCALL1w2l(PSIGACTION,_SIG,_ACT,_OACT);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Pgeteuid(_EUID)\
SAVEREGS\
DCALL0(PGETEUID);\
RESTOREREGS\
GETUWREG(0,_EUID)
#define Pgetegid(_EGID)\
SAVEREGS\
DCALL0(PGETEGID);\
RESTOREREGS\
GETUWREG(0,_EGID)
#define Pwaitpid(_PID,_FLAG,_RUSAGE,_RES)\
SAVEREGS\
DCALL2w1l(PWAITPID,_PID,_FLAG,_RUSAGE);\
RESTOREREGS\
GETLREG(0,_RES)
#define Dgetcwd(_PATH,_DRV,_SIZE,_RES)\
SAVEREGS\
DCALL1l2w(DGETCWD,_PATH,_DRV,_SIZE);\
RESTOREREGS\
GETSWREG(0,_RES)
#define Salert(_MSG)\
SAVEREGS\
DCALL1l(SALERT,_MSG);\
RESTOREREGS
#endif /* MINT */