home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-05-14 | 54.8 KB | 2,182 lines |
- /* Definitionen fuer "GEMDOS","BIOS","XBIOS"-``Inline''-Betriebssystemaufrufe.
- *
- * Die Datei ist mit: #include "oscalls.m2h" noch vor dem eigentlichen
- * Programmcode 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.
- *
- * Es wird nur das Datenregister D0 fuer die Parameteruebergabe benoetigt,
- * das TOS selbst veraendert die Register D0-D2 und A0-A2.
- */
-
- /* "GEM"-Funktionsnummern in D0 */
- #define VDIOpCode 115
- #define AESOpCode 200
- #define AESApplYield 201 /* siehe c't 5'90, S.203 */
-
- /* "XBIOS"-Funktionsnummern */
- #define INITMOUS 0
- #define SSBRK 1
- #define PHYSBASE 2
- #define LOGBASE 3
- #define GETREZ 4
- #define SETSCREEN 5
- #define SETPALETTE 6
- #define SETCOLOR 7
- #define FLOPRD 8
- #define FLOPWR 9
- #define FLOPFMT 10
- #define MIDIWS 12
- #define MFPINT 13
- #define IOREC 14
- #define RSCONF 15
- #define KEYTBL 16
- #define RANDOM 17
- #define PROTOBT 18
- #define FLOPVER 19
- #define SCRDMP 20
- #define CURSCONF 21
- #define SETTIME 22
- #define GETTIME 23
- #define BIOSKEYS 24
- #define IKBDWS 25
- #define JDISINT 26
- #define JENABINT 27
- #define GIACCESS 28
- #define OFFGIBIT 29
- #define ONGIBIT 30
- #define XBTIMER 31
- #define DOSOUND 32
- #define SETPRT 33
- #define KBDVBASE 34
- #define KBRATE 35
- #define PRTBLK 36
- #define VSYNC 37
- #define SUPEXEC 38
- #define PUNTAES 39
- #define FLOPRATE 41 /* ab TOS 1.04 */
- #define DMAREAD 42 /* TT */
- #define DMAWRITE 43 /* TT */
- #define BCONMAP 44 /* vorhanden, falls Bconmap(0) = 0 */
- #define NVMACCESS 46 /* TT */
- #define METAINIT 48 /* Meta-DOS, Funktionen 49 bis 63 reserviert */
- #define BLITMODE 64 /* ab TOS 1.02 */
- #define ESETSHIFT 80 /* TT */
- #define EGETSHIFT 81 /* TT */
- #define ESETBANK 82 /* TT */
- #define ESETCOLOR 83 /* TT */
- #define ESETPALETTE 84 /* TT */
- #define EGETPALETTE 85 /* TT */
- #define ESETGRAY 86 /* TT */
- #define ESETSMEAR 87 /* TT */
-
- /* "Falcon"-Erweiterungen -- ohne Gewaehr! */
- #define VSETMODE 88
- #define VGETMONITOR 89
- #define VSETSYNC 90
- #define VGETSIZE 91
- #define VSETRGB 93
- #define VGETRGB 94
- #define DSP_DOBLOCK 96
- #define DSP_BLKHANDSHAKE 97
- #define DSP_BLKUNPACKED 98
- #define DSP_INSTREAM 99
- #define DSP_OUTSTREAM 100
- #define DSP_IOSTREAM 101
- #define DSP_REMOVEINTERRUPTS 102
- #define DSP_GETWORDSIZE 103
- #define DSP_LOCK 104
- #define DSP_UNLOCK 105
- #define DSP_AVAILABLE 106
- #define DSP_RESERVE 107
- #define DSP_LOADPROG 108
- #define DSP_EXECPROG 109
- #define DSP_EXECBOOT 110
- #define DSP_LODTOBINARY 111
- #define DSP_TRIGGERHC 112
- #define DSP_REQUESTUNIQUEABILITY 113
- #define DSP_GETPROGABILITY 114
- #define DSP_FLUSHSUBROUTINES 115
- #define DSP_LOADSUBROUTINE 116
- #define DSP_INQSUBRABILITY 117
- #define DSP_RUNSUBROUTINE 118
- #define DSP_HF0 119
- #define DSP_HF1 120
- #define DSP_HF2 121
- #define DSP_HF3 122
- #define DSP_BLKWORDS 123
- #define DSP_BLKBYTES 124
- #define DSP_HSTAT 125
- #define DSP_SETVECTORS 126
- #define DSP_MULTBLOCKS 127
- #define LOCKSND 128
- #define UNLOCKSND 129
- #define SOUNDCMD 130
- #define SETBUFFER 131
- #define SETMODE 132
- #define SETTRACKS 133
- #define SETMONTRACKS 134
- #define SETINTERRUPT 135
- #define BUFFOPER 136
- #define DSPTRISTATE 137
- #define GPIO 138
- #define DEVCONNECT 139
- #define SNDSTATUS 140
- #define BUFFPTR 141
- #define VSETMASK 150
-
- /* "BIOS"-Funktionsnummern */
- #define GETMPB 0
- #define BCONSTAT 1
- #define BCONIN 2
- #define BCONOUT 3
- #define RWABS 4
- #define SETEXC 5
- #define TICKCAL 6
- #define GETBPB 7
- #define BCOSTAT 8
- #define MEDIACH 9
- #define DRVMAP 10
- #define KBSHIFT 11
-
- /* "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 /* ab GEMDOS 0.19 */
- #define SREALLOC 21
- #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 /* ab GEMDOS 0.19 */
- #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 /* nur mit Netzwerk oder MiNT */
-
- /* MultiGEM-Erweiterung */
- #define MFORK 112
-
- /* Mag!X-Erweiterung */
- #define SCONFIG 51
-
- /* MiNT-Erweiterungen */
- #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
- #define TMALARM 317
-
- /*===========================================================================*/
-
- #ifdef MM2
- #define XTRAP 14 /* XBIOS */
- #define BTRAP 13 /* BIOS */
- #define DTRAP 1 /* GEMDOS */
- #define GTRAP 2 /* AES & VDI */
- #else
- #define XTRAP 4E4EH /* XBIOS */
- #define BTRAP 4E4DH /* BIOS */
- #define DTRAP 4E41H /* GEMDOS */
- #define GTRAP 4E42H /* AES & VDI */
-
- #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 */
-
- #define PSHW 3F00H /* MOVE.W D0, -(sp) */
- #define PSHL 2F00H /* MOVE.L D0, -(sp) */
- #define PSHC 3F3CH /* MOVE.W #<const>, -(sp) */
- #endif
-
- /* Unter MiNT koennte man sich das Registerretten sparen, da MiNT lediglich
- * die Register D0 und A0 veraendert (z.Z. wird auch A0 nicht veraendert,
- * das muss aber nicht so bleiben!).
- */
- #if (defined HM2)
- # define SAVEREGS CODE(48E7H,2020H); /* movem.l D2/A2, -(sp) */
- # define RESTOREREGS CODE(4CDFH,0404H); /* movem.l (sp)+, D2/A2 */
- #else
- # define SAVEREGS
- # define RESTOREREGS
- #endif
-
- /*===========================================================================*/
-
- #if (defined LPRM2) || (defined SPCM2)
- #undef CODE
-
- PROCEDURE GEM0;CODE(GTRAP);(* Parameter in D0, D1 *)
-
- PROCEDURE XBIOS0(f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1w(p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2w(p2,p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS5w(p5,p4,p3,p2,p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS6w(p6,p5,p4,p3,p2,p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1l(p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2l(p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS3l(p3,p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS4l(p4,p3,p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS6l(p6,p5,p4,p3,p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1w1l(p2:LONGCARD;p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1w2l(p3,p2:LONGCARD;p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2w1l(p3:LONGCARD;p2,p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS3w1l(p4:LONGCARD;p3,p2,p1,f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1l1w1l(p3:LONGCARD;p2:WORD;p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS1l1w1l1w(p4:WORD;p3:LONGCARD;p2:WORD;p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2l2w(p4,p3:WORD;p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2l5w(p7,p6,p5,p4,p3:WORD;p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
- PROCEDURE XBIOS2l5w1l1w(p9:WORD;p8:LONGCARD;p7,p6,p5,p4,p3:WORD;p2,p1:LONGCARD;f:WORD);CODE(XTRAP);
-
- PROCEDURE BIOS0(f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w(p,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS2w(p2,p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w1l(p2:LONGCARD;p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w1l3w1l(p6:LONGCARD;p5,p4,p3:WORD;p2:LONGCARD;p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1l(p:LONGCARD;f:WORD);CODE(BTRAP);
-
- PROCEDURE GEMDOS0(f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w(p,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w(p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS3w(p3,p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w1l(p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w2l(p3,p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w3l(p4,p3,p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w1l(p3:LONGCARD;p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w2l(p4,p3:LONGCARD;p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w1l1w(p3:WORD;p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l(p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2l(p2,p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l1w(p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l2w(p3,p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l1w1l(p3:LONGCARD;p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- #define CODE INLINE
-
- #ifdef __OSCALLS__
- /* Die Syntax mit den Punkten fuer optionale Parameter ist
- * moeglicherweise GNU-CPP-spezifisch.
- */
- #define _INLINE(p...) /* Stackkorrektur kann entfallen */
- #else
- #define _INLINE INLINE
- #endif
-
- #define XCALL0(f)\
- XBIOS0(f);_INLINE(ADDQ2)
- #define XCALL1w(f,p)\
- XBIOS1w(p,f);_INLINE(ADDQ4)
- #define XCALL2w(f,p1,p2)\
- XBIOS2w(p2,p1,f);_INLINE(ADDQ6)
- #define XCALL5w(f,p1,p2,p3,p4,p5)\
- XBIOS5w(p5,p4,p3,p2,p1,f);_INLINE(LEA,12)
- #define XCALL6w(f,p1,p2,p3,p4,p5,p6)\
- XBIOS6w(p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,14)
- #define XCALL1w1l(f,p1,p2)\
- XBIOS1w1l(p2,p1,f);_INLINE(ADDQ8)
- #define XCALL1w2l(f,p1,p2,p3)\
- XBIOS1w2l(p3,p2,p1,f);_INLINE(LEA,12)
- #define XCALL2w1l(f,p1,p2,p3)\
- XBIOS2w1l(p3,p2,p1,f);_INLINE(LEA,10)
- #define XCALL3w1l(f,p1,p2,p3,p4)\
- XBIOS3w1l(p4,p3,p2,p1,f);_INLINE(LEA,12)
- #define XCALL1l(f,p)\
- XBIOS1l(p,f);_INLINE(ADDQ6)
- #define XCALL2l(f,p1,p2)\
- XBIOS2l(p2,p1,f);_INLINE(LEA,10)
- #define XCALL3l(f,p1,p2,p3)\
- XBIOS3l(p3,p2,p1,f);_INLINE(LEA,14)
- #define XCALL4l(f,p1,p2,p3,p4)\
- XBIOS4l(p4,p3,p2,p1,f);_INLINE(LEA,18)
- #define XCALL6l(f,p1,p2,p3,p4,p5,p6)\
- XBIOS6l(p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,26)
- #define XCALL1l1w1l(f,p1,p2,p3)\
- XBIOS1l1w1l(p3,p2,p1,f);_INLINE(LEA,12)
- #define XCALL1l1w1l1w(f,p1,p2,p3,p4)\
- XBIOS1l1w1l1w(p4,p3,p2,p1,f);_INLINE(LEA,14)
- #define XCALL2l2w(f,p1,p2,p3,p4)\
- XBIOS2l2w(p4,p3,p2,p1,f);_INLINE(LEA,14)
- #define XCALL2l5w(f,p1,p2,p3,p4,p5,p6,p7)\
- XBIOS2l5w(p7,p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,20)
- #define XCALL2l5w1l1w(f,p1,p2,p3,p4,p5,p6,p7,p8,p9)\
- XBIOS2l5w1l1w(p9,p8,p7,p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,26)
-
- #define BCALL0(f)\
- BIOS0(f);_INLINE(ADDQ2)
- #define BCALL1w(f,p)\
- BIOS1w(p,f);_INLINE(ADDQ4)
- #define BCALL2w(f,p1,p2)\
- BIOS2w(p2,p1,f);_INLINE(ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- BIOS1w1l(p2,p1,f);_INLINE(ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- BIOS1w1l3w1l(p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,18)
- #define BCALL1l(f,p)\
- BIOS1l(p,f);_INLINE(ADDQ6)
-
- #define DCALL0(f)\
- GEMDOS0(f);_INLINE(ADDQ2)
- #define DCALL1w(f,p)\
- GEMDOS1w(p,f);_INLINE(ADDQ4)
- #define DCALL2w(f,p1,p2)\
- GEMDOS2w(p2,p1,f);_INLINE(ADDQ6)
- #define DCALL3w(f,p1,p2,p3)\
- GEMDOS3w(p3,p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1w1l(f,p1,p2)\
- GEMDOS1w1l(p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1w2l(f,p1,p2,p3)\
- GEMDOS1w2l(p3,p2,p1,f);_INLINE(LEA,12)
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- GEMDOS1w3l(p4,p3,p2,p1,f);_INLINE(LEA,16)
- #define DCALL2w1l(f,p1,p2,p3)\
- GEMDOS2w1l(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- GEMDOS2w2l(p4,p3,p2,p1,f);_INLINE(LEA,14)
- #define DCALL1w1l1w(f,p1,p2,p3)\
- GEMDOS1w1l1w(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l(f,p)\
- GEMDOS1l(p,f);_INLINE(ADDQ6)
- #define DCALL2l(f,p1,p2)\
- GEMDOS2l(p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l1w(f,p1,p2)\
- GEMDOS1l1w(p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1l2w(f,p1,p2,p3)\
- GEMDOS1l2w(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l1w1l(f,p1,p2,p3)\
- GEMDOS1l1w1l(p3,p2,p1,f);_INLINE(LEA,12)
-
- #elif (defined TDIM2)
-
- #ifdef __OSCALLS__
- #define _BCODE(p...) CODE(BTRAP)
- #define _XCODE(p...) CODE(XTRAP)
- #define _DCODE(p...) CODE(DTRAP)
- #define _GCODE(p...) CODE(GTRAP)
- #else
- #define _BCODE CODE
- #define _XCODE CODE
- #define _DCODE CODE
- #define _GCODE CODE
- #endif
-
- #define XCALL0(f)\
- PUSH(f);_XCODE(XTRAP,ADDQ2)
- #define XCALL1w(f,p)\
- PUSH(CARDINAL(p));PUSH(CARDINAL(f));_XCODE(XTRAP,ADDQ4)
- #define XCALL2w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,ADDQ6)
- #define XCALL5w(f,p1,p2,p3,p4,p5)\
- PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,12)
- #define XCALL6w(f,p1,p2,p3,p4,p5,p6)\
- PUSH(CARDINAL(p6));PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,14)
- #define XCALL1w1l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,ADDQ8)
- #define XCALL1w2l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _XCODE(XTRAP,LEA,12)
- #define XCALL2w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _XCODE(XTRAP,LEA,10)
- #define XCALL3w1l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(CARDINAL(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));\
- PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,12)
- #define XCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_XCODE(XTRAP,ADDQ6)
- #define XCALL2l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,10)
- #define XCALL3l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _XCODE(XTRAP,LEA,14)
- #define XCALL4l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));\
- PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,18)
- #define XCALL6l(f,p1,p2,p3,p4,p5,p6)\
- PUSH(LONGCARD(p6));PUSH(LONGCARD(p5));PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));\
- PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(LONGCARD(f));_XCODE(XTRAP,LEA,26)
- #define XCALL1l1w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));\
- PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,12)
- #define XCALL1l1w1l1w(f,p1,p2,p3,p4)\
- PUSH(CARDINAL(p4));PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));\
- PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,14)
- #define XCALL2l2w(f,p1,p2,p3,p4)\
- PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));\
- PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,14)
- #define XCALL2l5w(f,p1,p2,p3,p4,p5,p6,p7)\
- PUSH(CARDINAL(p7));PUSH(CARDINAL(p6));PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));\
- PUSH(CARDINAL(p3));PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _XCODE(XTRAP,LEA,20)
- #define XCALL2l5w1l1w(f,p1,p2,p3,p4,p5,p6,p7,p8,p9)\
- PUSH(CARDINAL(p9));PUSH(LONGCARD(p8));PUSH(CARDINAL(p7));PUSH(CARDINAL(p6));\
- PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));PUSH(LONGCARD(p2));\
- PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_XCODE(XTRAP,LEA,26)
-
- #define BCALL0(f)\
- PUSH(f);_BCODE(BTRAP,ADDQ2)
- #define BCALL1w(f,p)\
- PUSH(CARDINAL(p));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ4)
- #define BCALL2w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- PUSH(LONGCARD(p6));PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,LEA,18)
- #define BCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ6)
-
- #define DCALL0(f)\
- PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ2)
- #define DCALL1w(f,p)\
- PUSH(CARDINAL(p));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ4)
- #define DCALL2w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ6)
- #define DCALL3w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,ADDQ8)
- #define DCALL1w1l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ8)
- #define DCALL1w2l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,12)
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));\
- PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,16)
- #define DCALL2w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));\
- PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,14)
- #define DCALL1w1l1w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ6)
- #define DCALL2l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,10)
- #define DCALL1l1w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ8)
- #define DCALL1l2w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL1l1w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,12)
-
- #elif (defined MM2)
-
- #define XCALL0(f)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f))
- #define XCALL1w(f,p)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p))
- #define XCALL2w(f,p1,p2)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2))
- #define XCALL5w(f,p1,p2,p3,p4,p5)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5))
- #define XCALL6w(f,p1,p2,p3,p4,p5,p6)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5),CAST(SHORTCARD,p6))
- #define XCALL1w1l(f,p1,p2)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2))
- #define XCALL1w2l(f,p1,p2,p3)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3))
- #define XCALL2w1l(f,p1,p2,p3)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
- #define XCALL3w1l(f,p1,p2,p3,p4)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3),CAST(LONGCARD,p4))
- #define XCALL1l(f,p)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
- #define XCALL2l(f,p1,p2)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2))
- #define XCALL3l(f,p1,p2,p3)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3))
- #define XCALL4l(f,p1,p2,p3,p4)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD(p4))
- #define XCALL6l(f,p1,p2,p3,p4,p5,p6)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD,p4),CAST(LONGCARD,p5),CAST(LONGCARD,p6))
- #define XCALL1l1w1l(f,p1,p2,p3)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
- #define XCALL1l1w1l1w(f,p1,p2,p3,p4)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3),CAST(SHORTCARD,p4))
- #define XCALL2l2w(f,p1,p2,p3,p4)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4))
- #define XCALL2l5w(f,p1,p2,p3,p4,p5,p6,p7)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5),CAST(SHORTCARD,p6),\
- CAST(SHORTCARD,p7))
- #define XCALL2l5w1l1w(f,p1,p2,p3,p4,p5,p6,p7,p8,p9)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5),CAST(SHORTCARD,p6),\
- CAST(SHORTCARD,p7)CAST(LONGCARD,p8),CAST(SHORTCARD,p9))
-
- #define BCALL0(f)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f))
- #define BCALL1w(f,p)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p))
- #define BCALL2w(f,p1,p2)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2))
- #define BCALL1w1l(f,p1,p2)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2))
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5),CAST(LONGCARD,p6))
- #define BCALL1l(f,p)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
-
- #define DCALL0(f)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f))
- #define DCALL1w(f,p)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p))
- #define DCALL2w(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2))
- #define DCALL3w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1w1l(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2))
- #define DCALL1w2l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3))
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD,p4))
- #define DCALL2w1l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD,p4))
- #define DCALL1w1l1w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1l(f,p)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
- #define DCALL2l(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2))
- #define DCALL1l1w(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2))
- #define DCALL1l2w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1l1w1l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
-
- #else /* HM2 */
-
- #define XCALL0(f)\
- CODE(PSHC,f,XTRAP,ADDQ2)
- #define XCALL1w(f,p)\
- SETREG(0,p);CODE(PSHW,PSHC,f,XTRAP,ADDQ4)
- #define XCALL2w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,XTRAP,ADDQ6)
- #define XCALL5w(f,p1,p2,p3,p4,p5)\
- SETREG(0,p5);CODE(PSHW);SETREG(0,p4);CODE(PSHW);\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,XTRAP,LEA,12)
- #define XCALL6w(f,p1,p2,p3,p4,p5,p6)\
- SETREG(0,p6);CODE(PSHW);SETREG(0,p5);CODE(PSHW);SETREG(0,p4);CODE(PSHW);\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,XTRAP,LEA,14)
- #define XCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,XTRAP,ADDQ8)
- #define XCALL1w2l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,XTRAP,LEA,12)
- #define XCALL2w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,XTRAP,LEA,10)
- #define XCALL3w1l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);\
- SETREG(0,p1);CODE(PSHW,PSHC,f,XTRAP,LEA,12)
- #define XCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,XTRAP,ADDQ6)
- #define XCALL2l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,10)
- #define XCALL3l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,XTRAP,LEA,14)
- #define XCALL4l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,18)
- #define XCALL6l(f,p1,p2,p3,p4,p5,p6)\
- SETREG(0,p6);CODE(PSHL);SETREG(0,p5);CODE(PSHL);SETREG(0,p4);CODE(PSHL);\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,XTRAP,LEA,26)
- #define XCALL1l1w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,12)
- #define XCALL1l1w1l1w(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHW);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,14)
- #define XCALL2l2w(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHW);SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,14)
- #define XCALL2l5w(f,p1,p2,p3,p4,p5,p6,p7)\
- SETREG(0,p7);CODE(PSHW);SETREG(0,p6);CODE(PSHW);SETREG(0,p5);CODE(PSHW);\
- SETREG(0,p4);CODE(PSHW);SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,20)
- #define XCALL2l5w1l1w(f,p1,p2,p3,p4,p5,p6,p7,p8,p9)\
- SETREG(0,p9);CODE(PSHW);SETREG(0,p8);CODE(PSHL);\
- SETREG(0,p7);CODE(PSHW);SETREG(0,p6);CODE(PSHW);SETREG(0,p5);CODE(PSHW);\
- SETREG(0,p4);CODE(PSHW);SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHL,PSHC,f,XTRAP,LEA,26)
-
- #define BCALL0(f)\
- CODE(PSHC,f,BTRAP,ADDQ2)
- #define BCALL1w(f,p)\
- SETREG(0,p);CODE(PSHW,PSHC,f,BTRAP,ADDQ4)
- #define BCALL2w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- SETREG(0,p6);CODE(PSHL);SETREG(0,p5);CODE(PSHW);SETREG(0,p4);CODE(PSHW);\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,BTRAP,LEA,18)
- #define BCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,BTRAP,ADDQ6)
-
- #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 DCALL1l1w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,DTRAP,LEA,12)
-
- #endif
-
- /*==========================================================================*/
- /* "XBIOS"-Calls */
- /*==========================================================================*/
-
- #define initmous(_TYPE,_PARAM,_VEC)\
- SAVEREGS\
- XCALL1w2l(INITMOUS,_TYPE,_PARAM,_VEC);\
- RESTOREREGS
-
- #define ssbrk(_AMOUNT,_ADR)\
- SAVEREGS\
- XCALL1w(SSBRK,_AMOUNT);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define physbase(_ADR)\
- SAVEREGS\
- XCALL0(PHYSBASE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define logbase(_ADR)\
- SAVEREGS\
- XCALL0(LOGBASE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define getrez(_RES)\
- SAVEREGS\
- XCALL0(GETREZ);\
- RESTOREREGS\
- GETUWREG(0,_RES)
-
- /* _MODE wird nur beim Falcon ausgewertet! */
- #define setscreen(_LOG,_PHYS,_REZ,_MODE)\
- SAVEREGS\
- XCALL2l2w(SETSCREEN,_LOG,_PHYS,_REZ,_MODE);\
- RESTOREREGS
-
- #define setpalette(_PAL)\
- SAVEREGS\
- XCALL1l(SETPALETTE,_PAL);\
- RESTOREREGS
-
- #define setcolor(_REG,_COL,_OLD)\
- SAVEREGS\
- XCALL2w(SETCOLOR,_REG,_COL);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define floprd(_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT,_RES)\
- SAVEREGS\
- XCALL2l5w(FLOPRD,_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define flopwr(_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT,_RES)\
- SAVEREGS\
- XCALL2l5w(FLOPWR,_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define flopfmt(_BUF,_FIL,_DEV,_SPT,_TRK,_SIDE,_INTRLV,_MAGIC,_VIRGIN,_RES)\
- SAVEREGS\
- XCALL2l5w1l1w(FLOPFMT,_BUF,_FIL,_DEV,_SPT,_TRK,_SIDE,_INTRLV,_MAGIC,_VIRGIN);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define midiws(_CNT,_BUF)\
- SAVEREGS\
- XCALL1w1l(MIDIWS,_CNT,_BUF);\
- RESTOREREGS
-
- #define mfpint(_NO,_VEC)\
- SAVEREGS\
- XCALL1w1l(MFPINT,_NO,_VEC);\
- RESTOREREGS
-
- #define iorec(_DEV,_ADR)\
- SAVEREGS\
- XCALL1w(IOREC,_DEV);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define rsconf(_SPEED,_FLOW,_UCR,_RSR,_TSR,_SCR,_RES)\
- SAVEREGS\
- XCALL6w(RSCONF,_SPEED,_FLOW,_UCR,_RSR,_TSR,_SCR);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define keytbl(_UNSHIFT,_SHIFT,_CAPS,_ADR)\
- SAVEREGS\
- XCALL3l(KEYTBL,_UNSHIFT,_SHIFT,_CAPS);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define random(_RND)\
- SAVEREGS\
- XCALL0(RANDOM);\
- RESTOREREGS\
- GETLREG(0,_RND)
-
- #define protobt(_BUF,_SER,_TYPE,_EXEC)\
- SAVEREGS\
- XCALL2l2w(PROTOBT,_BUF,_SER,_TYPE,_EXEC);\
- RESTOREREGS
-
- #define flopver(_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT,_RES)\
- SAVEREGS\
- XCALL2l5w(FLOPVER,_BUF,_FIL,_DEV,_SEC,_TRK,_SIDE,_CNT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define scrdmp()\
- SAVEREGS\
- XCALL0(SCRDMP);\
- RESTOREREGS
-
- #define cursconf(_FUNC,_OP,_RES)\
- SAVEREGS\
- XCALL2w(CURSCONF,_FUNC,_OP);\
- RESTOREREGS\
- GETUWREG(0,_RES)
-
- #define settime(_DATIME)\
- SAVEREGS\
- XCALL1l(SETTIME,_DATIME);\
- RESTOREREGS
-
- #define gettime(_DATIME)\
- SAVEREGS\
- XCALL0(GETTIME);\
- RESTOREREGS\
- GETLREG(0,_DATIME)
-
- #define bioskeys()\
- SAVEREGS\
- XCALL0(BIOSKEYS);\
- RESTOREREGS
-
- #define ikbdws(_CNT,_BUF)\
- SAVEREGS\
- XCALL1w1l(IKBDWS,_CNT,_BUF);\
- RESTOREREGS
-
- #define jdisint(_INT)\
- SAVEREGS\
- XCALL1w(JDISINT,_INT);\
- RESTOREREGS
-
- #define jenabint(_INT)\
- SAVEREGS\
- XCALL1w(JENABINT,_INT);\
- RESTOREREGS
-
- #define giaccess(_DATA,_REG,_OLD)\
- SAVEREGS\
- XCALL2w(GIACCESS,_DATA,_REG);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define offgibit(_BIT)\
- SAVEREGS\
- XCALL1w(OFFGIBIT,_BIT);\
- RESTOREREGS
-
- #define ongibit(_BIT)\
- SAVEREGS\
- XCALL1w(ONGIBIT,_BIT);\
- RESTOREREGS
-
- #define xbtimer(_TIMER,_CTRL,_DATA,_VEC)\
- SAVEREGS\
- XCALL3w1l(XBTIMER,_TIMER,_CTRL,_DATA,_VEC);\
- RESTOREREGS
-
- #define dosound(_BUF)\
- SAVEREGS\
- XCALL1l(DOSOUND,_BUF);\
- RESTOREREGS
-
- #define setprt(_CONF,_OLD)\
- SAVEREGS\
- XCALL1w(SETPRT,_CONF);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define kbdvbase(_ADR)\
- SAVEREGS\
- XCALL0(KBDVBASE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define kbrate(_INIT,_REP,_OLD)\
- SAVEREGS\
- XCALL2w(KBRATE,_INIT,_REP);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define prtblk(_BUF)\
- SAVEREGS\
- XCALL1l(PRTBLK,_BUF);\
- RESTOREREGS
-
- #define supexec(_PROC)\
- SAVEREGS\
- XCALL1l(SUPEXEC,_PROC);\
- RESTOREREGS
-
- #define vsync()\
- SAVEREGS\
- XCALL0(VSYNC);\
- RESTOREREGS
-
- #define puntaes()\
- SAVEREGS\
- XCALL0(PUNTAES);\
- RESTOREREGS
-
- #define floprate(_DRV,_SEEK,_OLD)\
- SAVEREGS\
- XCALL2w(FLOPRATE,_DRV,_SEEK);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define dmaread(_SEC,_CNT,_BUF,_DEV,_RES)\
- SAVEREGS\
- XCALL1l1w1l1w(DMAREAD,_SEC,_CNT,_BUF,_DEV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define dmawrite(_SEC,_CNT,_BUF,_DEV,_RES)\
- SAVEREGS\
- XCALL1l1w1l1w(DMAWRITE,_SEC,_CNT,_BUF,_DEV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define bconmap(_DEV,_RES)\
- SAVEREGS\
- XCALL1w(BCONMAP,_DEV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define nvmaccess(_OP,_START,_CNT,_BUF,_RES)\
- SAVEREGS\
- XCALL3w1l(NVMACCESS,_OP,_START,_CNT,_BUF);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define metainit(_BUF)\
- SAVEREGS\
- XCALL1l(METAINIT,_BUF);\
- RESTOREREGS
-
- #define blitmode(_MODE,_OLD)\
- SAVEREGS\
- XCALL1w(BLITMODE,_MODE);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define esetshift(_MODE,_OLD)\
- SAVEREGS\
- XCALL1w(ESETSHIFT,_MODE);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define egetshift(_RES)\
- SAVEREGS\
- XCALL0(EGETSHIFT);\
- RESTOREREGS\
- GETUWREG(0,_RES)
-
- #define esetbank(_BANK,_OLD)\
- SAVEREGS\
- XCALL1w(ESETBANK,_BANK);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define esetcolor(_REG,_COL,_OLD)\
- SAVEREGS\
- XCALL2w(ESETCOLOR,_REG,_COL);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define esetpalette(_REG,_COL,_BUF)\
- SAVEREGS\
- XCALL2w1l(ESETPALETTE,_REG,_COL,_BUF);\
- RESTOREREGS
-
- #define egetpalette(_REG,_COL,_BUF)\
- SAVEREGS\
- XCALL2w1l(EGETPALETTE,_REG,_COL,_BUF);\
- RESTOREREGS
-
- #define esetgray(_SWITCH,_OLD)\
- SAVEREGS\
- XCALL1w(ESETGRAY,_SWITCH);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define esetsmear(_SWITCH,_OLD)\
- SAVEREGS\
- XCALL1w(ESETSMEAR,_SWITCH);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- /*==========================================================================*/
- /* "Falcon"-XBIOS-Calls (ohne Gewaehr!) */
- /*==========================================================================*/
-
- #define vsetmode(_MODE,_RES)\
- SAVEREGS\
- XCALL1w(VSETMODE,_MODE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define vgetmonitor(_TYPE)\
- SAVEREGS\
- XCALL0(VGETMONITOR);\
- RESTOREREGS\
- GETSWREG(0,_TYPE)
-
- #define vsetsync(_EXT)\
- SAVEREGS\
- XCALL1w(VSETSYNC,_EXT);\
- RESTOREREGS
-
- #define vgetsize(_MODE,_SIZE)\
- SAVEREGS\
- XCALL1w(VGETSIZE,_MODE);\
- RESTOREREGS\
- GETLREG(0,_SIZE)
-
- #define vsetrgb(_IDX,_CNT,_BUF)\
- SAVEREGS\
- XCALL2w1l(VSETRGB,_IDX,_CNT,_BUF);\
- RESTOREREGS
-
- #define vgetrgb(_IDX,_CNT,_BUF)\
- SAVEREGS\
- XCALL2w1l(VGETRGB,_IDX,_CNT,_BUF);\
- RESTOREREGS
-
- #define dsp_doblock(_DATIN,_SIZIN,_DATOUT,_SIZOUT)\
- SAVEREGS\
- XCALL4l(DSP_DOBLOCK,_DATIN,_SIZIN,_DATOUT,_SIZOUT);\
- RESTOREREGS
-
- #define dsp_blkhandshake(_DATIN,_SIZIN,_DATOUT,_SIZOUT)\
- SAVEREGS\
- XCALL4l(DSP_BLKHANDSHAKE,_DATIN,_SIZIN,_DATOUT,_SIZOUT);\
- RESTOREREGS
-
- #define dsp_blkunpacked(_DATIN,_SIZIN,_DATOUT,_SIZOUT)\
- SAVEREGS\
- XCALL4l(DSP_BLKUNPACKED,_DATIN,_SIZIN,_DATOUT,_SIZOUT);\
- RESTOREREGS
-
- #define dsp_instream(_DATIN,_BSIZ,_NBLK,_BLKS)\
- SAVEREGS\
- XCALL4l(DSP_INSTREAM,_DATIN,_BSIZ,_NBLK,_BLKS);\
- RESTOREREGS
-
- #define dsp_outstream(_DATOUT,_BSIZ,_NBLK,_BLKS)\
- SAVEREGS\
- XCALL4l(DSP_OUTSTREAM,_DATOUT,_BSIZ,_NBLK,_BLKS);\
- RESTOREREGS
-
- #define dsp_iostream(_DATIN,_DATOUT,_BISIZ,_BOSIZ,_NBLK,_BLKS)\
- SAVEREGS\
- XCALL6l(DSP_IOSTREAM,_DATIN,_DATOUT,_BISIZ,_BOSIZ,_NBLK,_BLKS);\
- RESTOREREGS
-
- #define dsp_removeinterrupts(_MASK)\
- SAVEREGS\
- XCALL1w(DSP_REMOVEINTERRUPTS,_MASK);\
- RESTOREREGS
-
- #define dsp_getwordsize(_SIZE)\
- SAVEREGS\
- XCALL0(DSP_GETWORDSIZE);\
- RESTOREREGS\
- GETSWREG(0,_)
-
- #define dsp_lock(_RES)\
- SAVEREGS\
- XCALL0(DSP_LOCK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_unlock()\
- SAVEREGS\
- XCALL0(DSP_UNLOCK);\
- RESTOREREGS
-
- #define dsp_available(_XMEM,_YMEM)\
- SAVEREGS\
- XCALL2l(DSP_AVAILABLE,_XMEM,_YMEM);\
- RESTOREREGS
-
- #define dsp_reserve(_XMEM,_YMEM,_RES)\
- SAVEREGS\
- XCALL2l(DSP_RESERVE,_XMEM,_YMEM);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_loadprog(_FILE,_ABILITY,_BUF,_RES)\
- SAVEREGS\
- XCALL1l1w1l(DSP_LOADPROG,_FILE,_ABILITY,_BUF);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_execprog(_CODE,_CSIZ,_ABILITY)\
- SAVEREGS\
- XCALL2l1w(DSP_EXECPROG,_CODE,_CSIZ,_ABILITY);\
- RESTOREREGS
-
- #define dsp_execboot(_CODE,_CSIZ,_ABILITY)\
- SAVEREGS\
- XCALL2l1w(DSP_EXECBOOT,_CODE,_CSIZ,_ABILITY);\
- RESTOREREGS
-
- #define dsp_lodtobinary(_FILE,_CODE,_RES)\
- SAVEREGS\
- XCALL2l(DSP_LODTOBINARY,_FILE,_CODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define dsp_triggerhc(_VEC)\
- SAVEREGS\
- XCALL1w(DSP_TRIGGERHC,_VEC);\
- RESTOREREGS
-
- #define dsp_requestuniqueability(_ABILITY)\
- SAVEREGS\
- XCALL0(DSP_REQUESTUNIQUEABILITY);\
- RESTOREREGS\
- GETSWREG(0,_ABILITY)
-
- #define dsp_getprogability(_ABILITY)\
- SAVEREGS\
- XCALL0(DSP_GETPROGABILITY,_ABILITY);\
- RESTOREREGS\
- GETSWREG(0,_ABILITY)
-
- #define dsp_flushsubroutines()\
- SAVEREGS\
- XCALL0(DSP_FLUSHSUBROUTINES);\
- RESTOREREGS
-
- #define dsp_loadsubroutine(_BUF,_SIZ,_ABILITY,_RES)\
- SAVEREGS\
- XCALL2l1w(DSP_LOADSUBROUTINE,_BUF,_SIZ,_ABILITY);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_inqsubrability(_ABILITY,_RES)\
- SAVEREGS\
- XCALL1w(DSP_INQSUBRABILITY,_ABILITY);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_runsubroutine(_HANDLE,_RES)\
- SAVEREGS\
- XCALL1w(DSP_RUNSUBROUTINE,_HANDLE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_hf0(_FLAG,_RES)\
- SAVEREGS\
- XCALL1w(DSP_HF0,_FLAG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_hf1(_FLAG,_RES)\
- SAVEREGS\
- XCALL1w(DSP_HF1,_FLAG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_hf2(_RES)\
- SAVEREGS\
- XCALL0(DSP_HF2);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_hf3(_RES)\
- SAVEREGS\
- XCALL0(DSP_HF3);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define dsp_blkwords(_DATIN,_SIZIN,_DATOUT,_SIZOUT)\
- SAVEREGS\
- XCALL4l(DSP_BLKWORDS,_DATIN,_SIZIN,_DATOUT,_SIZOUT);\
- RESTOREREGS
-
- #define dsp_blkbytes(_DATIN,_SIZIN,_DATOUT,_SIZOUT)\
- SAVEREGS\
- XCALL4l(DSP_BLKBYTES,_DATIN,_SIZIN,_DATOUT,_SIZOUT);\
- RESTOREREGS
-
- #define dsp_hstat(_STAT)\
- SAVEREGS\
- XCALL0(DSP_HSTAT);\
- RESTOREREGS\
- GETUWREG(0,_)
-
- #define dsp_setvectors(_REC,_XMT)\
- SAVEREGS\
- XCALL2l(DSP_SETVECTORS,_REC,_XMT);\
- RESTOREREGS
-
- #define dsp_multblocks(_NSEND,_NREC,_BSEND,_BREC)\
- SAVEREGS\
- XCALL4l(DSP_MULTBLOCKS,_NSEND,_NREC,_BSEND,_BREC);\
- RESTOREREGS
-
- #define locksnd(_RES)\
- SAVEREGS\
- XCALL0(LOCKSND);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define unlocksnd(_RES)\
- SAVEREGS\
- XCALL0(UNLOCKSND);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define soundcmd(_MODE,_DAT,_RES)\
- SAVEREGS\
- XCALL2w(SOUNDCMD,_MODE,_DAT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setbuffer(_REG,_BEG,_END,_RES)\
- SAVEREGS\
- XCALL1w2l(SETBUFFER,_REG,_BEG,_END);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setmode(_MODE,_RES)\
- SAVEREGS\
- XCALL1w(SETMODE,_MODE);\
- RESTOREREGS\
- GETLREG(0,_MODE)
-
- #define settracks(_PLAY,_REC,_RES)\
- SAVEREGS\
- XCALL2w(SETTRACKS,_PLAY,_REC);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setmontracks(_TRACK,_RES)\
- SAVEREGS\
- XCALL1w(SETMONTRACKS,_TRACK);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setinterrupt(_SRC,_CAUSE,_RES)\
- SAVEREGS\
- XCALL2w(SETINTERRUPT,_SRC,_CAUSE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define buffoper(_MODE,_RES)\
- SAVEREGS\
- XCALL1w(BUFFOPER,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define dsptristate(_XMT,_REC,_RES)\
- SAVEREGS\
- XCALL2w(DSPTRISTATE,_XMT,_REC);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define gpio(_MODE,_DAT,_RES)\
- SAVEREGS\
- XCALL2w(GPIO,_MODE,_DAT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define devconnect(_SRC,_DST,_CLK,_PRE,_PROTO,_RES)\
- SAVEREGS\
- XCALL5w(DEVCONNECT,_SRC,_DST,_CLK,_PRE,_PROTO);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define sndstatus(_RESET,_RES)\
- SAVEREGS\
- XCALL1w(SNDSTATUS,_RESET);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define buffptr(_BUF,_RES)\
- SAVEREGS\
- XCALL1l(BUFFPTR,_BUF);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define vsetmask(_ORM,_ANDM,_OVLAY)\
- SAVEREGS\
- XCALL2l1w(VSETMASK,_ORM,_ANDM,_OVLAY);\
- RESTOREREGS
-
- /*==========================================================================*/
- /* "BIOS"-Calls */
- /*==========================================================================*/
-
- #define getmpb(_MPB)\
- SAVEREGS\
- BCALL1l(GETMPB,_MPB);\
- RESTOREREGS
-
- #define bconstat(_DEV,_READY)\
- SAVEREGS\
- BCALL1w(BCONSTAT,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_READY)
-
- #define bconin(_DEV,_KEY)\
- SAVEREGS\
- BCALL1w(CCONIN,_DEV);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define bconout(_DEV,_CHAR,_RES)\
- SAVEREGS\
- BCALL2w(BCONOUT,_DEV,_CHAR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define rwabs(_FLAG,_BUF,_CNT,_REC,_DEV,_LREC,_RES)\
- SAVEREGS\
- BCALL1w1l3w1l(RWABS,_FLAG,_BUF,_CNT,_REC,_DEV,_LREC);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setexc(_VEC,_ADR,_OLD)\
- SAVEREGS\
- BCALL1w1l(SETEXC,_VEC,_ADR);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #define tickcal(_MS)\
- SAVEREGS\
- BCALL0(TICKCAL);\
- RESTOREREGS\
- GETLREG(0,_MS)
-
- #define bcostat(_DEV,_READY)\
- SAVEREGS\
- BCALL1w(BCOSTAT,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_READY)
-
- #define getbpb(_DEV,_BPB)\
- SAVEREGS\
- BCALL1w(GETBPB,_DEV);\
- RESTOREREGS\
- GETLREG(0,_BPB)
-
- #define mediach(_DEV,_CHG)\
- SAVEREGS\
- BCALL1w(MEDIACH,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_CHG)
-
- #define drvmap(_DRIVES)\
- SAVEREGS\
- BCALL0(DRVMAP);\
- RESTOREREGS\
- GETLREG(0,_DRIVES)
-
- #define kbshift(_MODE,_STAT)\
- SAVEREGS\
- BCALL1w(KBSHIFT,_MODE);\
- RESTOREREGS\
- GETLREG(0,_STAT)
-
- /*==========================================================================*/
- /* "GEMDOS"-Calls */
- /*==========================================================================*/
-
- #define p_term0()\
- DCALL0(PTERM0)
-
- #define c_conin(_KEY)\
- SAVEREGS\
- DCALL0(CCONIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_conout(_CHAR)\
- SAVEREGS\
- DCALL1w(CCONOUT,_CHAR);\
- RESTOREREGS
-
- #define c_auxin(_CHAR)\
- SAVEREGS\
- DCALL0(CAUXIN);\
- RESTOREREGS\
- GETSWREG(0,_CHAR)
-
- #define c_auxout(_CHAR)\
- SAVEREGS\
- DCALL1w(CAUXOUT,_CHAR);\
- RESTOREREGS
-
- #define c_prnout(_CHAR)\
- SAVEREGS\
- DCALL1w(CPRNOUT,_CHAR);\
- RESTOREREGS
-
- #define c_rawio(_DAT,_RES)\
- SAVEREGS\
- DCALL1w(CRAWIO,_DAT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define c_rawcin(_KEY)\
- SAVEREGS\
- DCALL0(CRAWCIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_necin(_KEY)\
- SAVEREGS\
- DCALL0(CNECIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_conws(_STR)\
- SAVEREGS\
- DCALL1l(CCONWS,_STR);\
- RESTOREREGS
-
- #define c_conrs(_BUF)\
- SAVEREGS\
- DCALL1l(CCONRS,_BUF);\
- RESTOREREGS
-
- #define c_conis(_STAT)\
- SAVEREGS\
- DCALL0(CCONIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define d_setdrv(_DRV,_DRIVES)\
- SAVEREGS\
- DCALL1w(DSETDRV,_DRV);\
- RESTOREREGS\
- GETLREG(0,_DRIVES)
-
- #define c_conos(_STAT)\
- SAVEREGS\
- DCALL0(CCONOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_prnos(_STAT)\
- SAVEREGS\
- DCALL0(CPRNOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_auxis(_STAT)\
- SAVEREGS\
- DCALL0(CAUXIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_auxos(_STAT)\
- SAVEREGS\
- DCALL0(CAUXOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define m_addalt(_START,_SIZE,_RES)\
- SAVEREGS\
- DCALL2l(MADDALT,_START,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define s_realloc(_SIZE,_ADR)\
- SAVEREGS\
- DCALL1l(SREALLOC,_SIZE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define d_getdrv(_DRV)\
- SAVEREGS\
- DCALL0(DGETDRV);\
- RESTOREREGS\
- GETUWREG(0,_DRV)
-
- #define f_setdta(_DTA)\
- SAVEREGS\
- DCALL1l(FSETDTA,_DTA);\
- RESTOREREGS
-
- #define s_uper(_DAT,_VAL)\
- SAVEREGS\
- DCALL1l(SUPER,_DAT);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define t_getdate(_DATE)\
- SAVEREGS\
- DCALL0(TGETDATE);\
- RESTOREREGS\
- GETUWREG(0,_DATE)
-
- #define t_setdate(_DATE,_RES)\
- SAVEREGS\
- DCALL1w(TSETDATE,_DATE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define t_gettime(_TIME)\
- SAVEREGS\
- DCALL0(TGETTIME);\
- RESTOREREGS\
- GETUWREG(0,_TIME)
-
- #define t_settime(_TIME,_RES)\
- SAVEREGS\
- DCALL1w(TSETTIME,_TIME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_getdta(_DTA)\
- SAVEREGS\
- DCALL0(FGETDTA);\
- RESTOREREGS\
- GETREGADR(0,_DTA)
-
- #define s_version(_VERS)\
- SAVEREGS\
- DCALL0(SVERSION);\
- RESTOREREGS\
- GETUWREG(0,_VERS)
-
- #define p_termres(_KEEP,_RET)\
- DCALL1l1w(PTERMRES,_KEEP,_RET)
-
- #define d_free(_BUF,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DFREE,_BUF,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_create(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCREATE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_delete(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DDELETE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_setpath(_PATH,_RES)\
- SAVEREGS\
- DCALL1l(DSETPATH,_PATH);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_create(_FILE,_ATTR,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FCREATE,_FILE,_ATTR);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_open(_FILE,_MODE,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FOPEN,_FILE,_MODE);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_close(_HNDL,_RES)\
- SAVEREGS\
- DCALL1w(FCLOSE,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_read(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FREAD,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_write(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FWRITE,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_delete(_FILE,_RES)\
- SAVEREGS\
- DCALL1l(FDELETE,_FILE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_seek(_OFF,_HNDL,_MODE,_POS)\
- SAVEREGS\
- DCALL1l2w(FSEEK,_OFF,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_POS)
-
- #define f_attrib(_FILE,_FLAG,_ATTR,_OLD)\
- SAVEREGS\
- DCALL1l2w(FATTRIB,_FILE,_FLAG,_ATTR);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define m_xalloc(_SIZE,_MODE,_ADR)\
- SAVEREGS\
- DCALL1l1w(MXALLOC,_SIZE,_MODE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define f_dup(_STD,_HNDL)\
- SAVEREGS\
- DCALL1w(FDUP,_STD);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_force(_STD,_HNDL,_RES)\
- SAVEREGS\
- DCALL2w(FFORCE,_STD,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_getpath(_PATH,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DGETPATH,_PATH,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define m_alloc(_SIZE,_ADR)\
- SAVEREGS\
- DCALL1l(MALLOC,_SIZE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define m_free(_ADR,_RES)\
- SAVEREGS\
- DCALL1l(MFREE,_ADR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define m_shrink(_ADR,_SIZE,_RES)\
- SAVEREGS\
- DCALL1w2l(MSHRINK,0,_ADR,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_exec(_MODE,_PROG,_TAIL,_ENV,_RES)\
- SAVEREGS\
- DCALL1w3l(PEXEC,_MODE,_PROG,_TAIL,_ENV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_term(_RET)\
- DCALL1w(PTERM,_RET)
-
- #define f_sfirst(_FILE,_ATTR,_RES)\
- SAVEREGS\
- DCALL1l1w(FSFIRST,_FILE,_ATTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_snext(_RES)\
- SAVEREGS\
- DCALL0(FSNEXT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_rename(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL1w2l(FRENAME,0,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_datime(_DATIME,_FILE,_FLAG)\
- SAVEREGS\
- DCALL1l2w(FDATIME,_DATIME,_FILE,_FLAG);\
- RESTOREREGS
-
- #define f_lock(_HDL,_MODE,_FROM,_LEN,_RES)\
- SAVEREGS\
- DCALL2w2l(FLOCK,_HDL,_MODE,_FROM,_LEN);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- /*==========================================================================*/
- /* MultiGEM-Calls */
- /*==========================================================================*/
-
- #define m_fork(_PRG,_CMD,_RES)\
- SAVEREGS\
- DCALL1l1w1l(MFORK,_PRG,5AA7H,_CMD);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- /*==========================================================================*/
- /* Mag!X-Calls */
- /*==========================================================================*/
-
- #define s_config(_MODE,_SET,_RES)\
- SAVEREGS\
- DCALL1w1l(SCONFIG,_MODE,_SET);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- /*==========================================================================*/
- /* MiNT-Calls */
- /*==========================================================================*/
-
- #define s_yield(_RES)\
- SAVEREGS\
- DCALL0(SYIELD);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_pipe(_PTR,_RES)\
- SAVEREGS\
- DCALL1l(FPIPE,_PTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_cntl(_HNDL,_ARG,_CMD,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FCNTL,_HNDL,_ARG,_CMD);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_instat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FINSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_outstat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FOUTSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_getchar(_HNDL,_MODE,_RES)\
- SAVEREGS\
- DCALL2w(FGETCHAR,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_putchar(_HNDL,_CHAR,_MODE,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FPUTCHAR,_HNDL,_CHAR,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_wait(_RES)\
- SAVEREGS\
- DCALL0(PWAIT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_nice(_DELTA,_PRIO)\
- SAVEREGS\
- DCALL1w(PNICE,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_PRIO)
-
- #define p_getpid(_PID)\
- SAVEREGS\
- DCALL0(PGETPID);\
- RESTOREREGS\
- GETSWREG(0,_PID)
-
- #define p_getppid(_PPID)\
- SAVEREGS\
- DCALL0(PGETPPID);\
- RESTOREREGS\
- GETSWREG(0,_PPID)
-
- #define p_getpgrp(_PGRP)\
- SAVEREGS\
- DCALL0(PGETPGRP);\
- RESTOREREGS\
- GETSWREG(0,_PGRP)
-
- #define p_setpgrp(_PID,_GRP,_RES)\
- SAVEREGS\
- DCALL2w(PSETPGRP,_PID,_GRP);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_getuid(_UID)\
- SAVEREGS\
- DCALL0(PGETUID);\
- RESTOREREGS\
- GETSWREG(0,_UID)
-
- #define p_setuid(_UID,_RES)\
- SAVEREGS\
- DCALL1w(PSETUID,_UID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_kill(_PID,_SIG,_RES)\
- SAVEREGS\
- DCALL2w(PKILL,_PID,_SIG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_signal(_SIG,_HANDLER,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSIGNAL,_SIG,_HANDLER);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #define p_vfork(_RES)\
- SAVEREGS\
- DCALL0(PVFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_getgid(_GID)\
- SAVEREGS\
- DCALL0(PGETGID);\
- RESTOREREGS\
- GETSWREG(0,_GID)
-
- #define p_setgid(_GID,_RES)\
- SAVEREGS\
- DCALL1w(PSETGID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_sigblock(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGBLOCK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_sigsetmask(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGSETMASK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_usrval(_ARG,_VAL)\
- SAVEREGS\
- DCALL1l(PUSRVAL,_ARG);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_domain(_DOM,_OLD)\
- SAVEREGS\
- DCALL1w(PDOMAIN,_DOM);\
- RESTOREREGS\
- GETSWREG(0,_OLD)
-
- #define p_sigreturn()\
- SAVEREGS\
- DCALL0(PSIGRETURN);\
- RESTOREREGS
-
- #define p_fork(_RES)\
- SAVEREGS\
- DCALL0(PFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_wait3(_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL1w1l(PWAIT3,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_select(_TIMEOUT,_RFDS,_WFDS,_XFDS,_RES)\
- SAVEREGS\
- DCALL1w3l(FSELECT,_TIMEOUT,_RFDS,_WFDS,_XFDS);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_rusage(_RSCADR,_RES)\
- SAVEREGS\
- DCALL1l(PRUSAGE,_RSCADR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_setlimit(_LIM,_VAL,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSETLIMIT,_LIM,_VAL);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define t_alarm(_SECS,_OLD)\
- SAVEREGS\
- DCALL1l(TALARM,_SECS);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_ause(_RES)\
- SAVEREGS\
- DCALL0(PAUSE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define s_ysconf(_WHICH,_VAL)\
- SAVEREGS\
- DCALL1w(SYSCONF,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_sigpending(_SIGS)\
- SAVEREGS\
- DCALL0(PSIGPENDING);\
- RESTOREREGS\
- GETLREG(0,_SIGS)
-
- #define d_pathconf(_NAME,_WHICH,_VAL)\
- SAVEREGS\
- DCALL1l1w(DPATHCONF,_NAME,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_msg(_MODE,_MBOXID,_MSGPTR,_RES)\
- SAVEREGS\
- DCALL1w2l(PMSG,_MODE,_MBOXID,_MSGPTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_midipipe(_PID,_IN,_OUT,_RES)\
- SAVEREGS\
- DCALL3w(FMIDIPIPE,_PID,_IN,_OUT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_renice(_PID,_DELTA,_CURRENT)\
- SAVEREGS\
- DCALL2w(PRENICE,_PID,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_CURRENT)
-
- #define d_opendir(_NAME,_FLAG,_DIR)\
- SAVEREGS\
- DCALL1l1w(DOPENDIR,_NAME,_FLAG);\
- RESTOREREGS\
- GETLREG(0,_DIR)
-
- #define d_readdir(_LEN,_DIR,_BUF,_RES)\
- SAVEREGS\
- DCALL1w2l(DREADDIR,_LEN,_DIR,_BUF);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_rewinddir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DREWINDDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_closedir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCLOSEDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_xattr(_FLAG,_NAME,_XATTR,_RES)\
- SAVEREGS\
- DCALL1w2l(FXATTR,_FLAG,_NAME,_XATTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_link(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_symlink(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FSYMLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_readlink(_BUFSIZ,_BUF,_NAME,_RES)\
- SAVEREGS\
- DCALL1w2l(FREADLINK,_BUFSIZ,_BUF,_NAME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_cntl(_CMD,_NAME,_ARG,_RES)\
- SAVEREGS\
- DCALL1w2l(DCNTL,_CMD,_NAME,_ARG);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_chown(_FILE,_UID,_GID,_RES)\
- SAVEREGS\
- DCALL1l2w(FCHOWN,_FILE,_UID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_chmod(_FILE,_MODE,_RES)\
- SAVEREGS\
- DCALL1l1w(FCHMOD,_FILE,_MODE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_umask(_MODE,_OLD)\
- SAVEREGS\
- DCALL1w(PUMASK,_MODE);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_semaphore(_MODE,_ID,_TOUT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSEMAPHORE,_MODE,_ID,_TOUT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define d_lock(_MODE,_DRV,_RES)\
- SAVEREGS\
- DCALL2w(DLOCK,_MODE,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_sigpause(_SIGMASK,_RES)\
- SAVEREGS\
- DCALL1l(PSIGPAUSE,_SIGMASK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_sigaction(_SIG,_ACT,_OACT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSIGACTION,_SIG,_ACT,_OACT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_geteuid(_EUID)\
- SAVEREGS\
- DCALL0(PGETEUID);\
- RESTOREREGS\
- GETSWREG(0,_EUID)
-
- #define p_getegid(_EGID)\
- SAVEREGS\
- DCALL0(PGETEGID);\
- RESTOREREGS\
- GETSWREG(0,_EGID)
-
- #define p_waitpid(_PID,_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL2w1l(PWAITPID,_PID,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define d_getcwd(_PATH,_DRV,_SIZE,_RES)\
- SAVEREGS\
- DCALL1l2w(DGETCWD,_PATH,_DRV,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define s_alert(_MSG,_RES)\
- SAVEREGS\
- DCALL1l(SALERT,_MSG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define t_malarm(_MSECS,_OLD)\
- SAVEREGS\
- DCALL1l(TMALARM,_MSECS);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
-