diff --git a/libsrc/common/Makefile b/libsrc/common/Makefile index 1de5b9a93..30db5df7c 100644 --- a/libsrc/common/Makefile +++ b/libsrc/common/Makefile @@ -73,6 +73,7 @@ S_OBJS = _fdesc.o \ atoi.o \ calloc.o \ copydata.o \ + creat.o \ ctime.o \ divt.o \ errno.o \ diff --git a/libsrc/common/creat.s b/libsrc/common/creat.s new file mode 100644 index 000000000..a8b81f09b --- /dev/null +++ b/libsrc/common/creat.s @@ -0,0 +1,45 @@ +; +; Ullrich von Bassewitz, 2003-06-12 +; +; int __fastcall__ creat (const char* name, unsigned mode); +; + + .export _creat + .import _open + .import pushax + + .include "fcntl.inc" + + +; The call +; +; creat (name, mode); +; +; is equivalent to +; +; open (name, O_CREAT | O_WRONLY | O_TRUNC, mode); +; + + +.proc _creat + + pha + txa + pha ; Save mode + + lda #<(O_CREAT | O_WRONLY | O_TRUNC) + ldx #>(O_CREAT | O_WRONLY | O_TRUNC) + jsr pushax + + pla + tax + pla + jsr pushax ; Push mode on argument stack + + ldy #6 ; Number of argument bytes + jmp _open + +.endproc + + +