1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 23:29:39 +00:00
cc65/libsrc/telestrat/open.s

34 lines
995 B
ArmAsm
Raw Permalink Normal View History

2017-02-01 23:11:11 +00:00
.export _open
2019-02-05 22:27:52 +00:00
2017-02-01 23:11:11 +00:00
.import addysp,popax
2019-02-05 22:27:52 +00:00
2017-02-01 23:11:11 +00:00
.importzp sp,tmp2,tmp3,tmp1
2019-02-05 22:27:52 +00:00
2017-01-31 21:33:19 +00:00
.include "telestrat.inc"
.include "errno.inc"
2019-02-05 22:27:52 +00:00
.include "fcntl.inc"
; int open (const char* name, int flags, ...); /* May take a mode argument */
2016-12-14 20:22:10 +00:00
.proc _open
; Throw away any additional parameters passed through the ellipsis
2017-01-31 21:33:19 +00:00
dey ; Parm count < 4 shouldn't be needed to be...
dey ; ...checked (it generates a c compiler warning)
dey
dey
2019-02-05 22:27:52 +00:00
beq parmok ; Branch if parameter count ok
jsr addysp ; Fix stack, throw away unused parameters
2016-12-14 20:22:10 +00:00
; Parameters ok. Pop the flags and save them into tmp3
2017-02-01 23:11:11 +00:00
parmok:
jsr popax ; Get flagss
sta tmp3 ; save flags
2016-12-14 20:22:10 +00:00
; Get the filename from stack and parse it. Bail out if is not ok
2019-02-05 22:27:52 +00:00
jsr popax ; Get name
ldy tmp3 ; Get flags again
BRK_TELEMON XOPEN ; launch primitive ROM
2017-01-31 21:33:19 +00:00
rts
2016-12-14 20:22:10 +00:00
.endproc