2 ; Peter Ferrie, 21.11.2014
4 ; off_t __fastcall__ lseek(int fd, off_t offset, int whence);
11 .include "zeropage.inc"
14 .include "filedes.inc"
29 jsr getfd ; Returns A, Y and C
36 ; Valid whence values are 0..2
44 sta mliparam + MLI::MARK::REF_NUM
64 ; MARK_COUNT must == EOF_COUNT, otherwise unexpected behaviour
65 .assert MARK_COUNT = EOF_COUNT, error
69 lda mliparam + MLI::MARK::POSITION
70 ldx mliparam + MLI::MARK::POSITION+1
71 ldy mliparam + MLI::MARK::POSITION+2
75 sta mliparam + MLI::MARK::POSITION
78 sta mliparam + MLI::MARK::POSITION+1
81 sta mliparam + MLI::MARK::POSITION+2
84 bne einval ; less than 0 or greater than 2^24 - 1
92 ; Need to return the position in EAX
93 .if (.cpu .bitand ::CPU_ISET_65SC02)
99 lda mliparam + MLI::MARK::POSITION+2
101 ldx mliparam + MLI::MARK::POSITION+1
102 lda mliparam + MLI::MARK::POSITION
110 errno: jsr __directerrno ; leaves -1 in AX
111 stx sreg ; extend return value to 32 bits
116 oserr: jsr __mappederrno ; leaves -1 in AX
117 stx sreg ; extend return value to 32 bits