; ; File generated by cc65 v 2.11.0 ; .fopt compiler,"cc65 v 2.11.0" .setcpu "6502" .smart on .autoimport on .case on .debuginfo on .importzp sp, sreg, regsave, regbank, tmp1, ptr1, ptr2 .macpack longbranch .dbg file, "fseek.c", 1389, 1084483758 .dbg file, "../../include/stdio.h", 5945, 1113916546 .dbg file, "../../include/stddef.h", 2974, 1061022172 .dbg file, "../../include/stdarg.h", 2817, 1102777145 .dbg file, "../../include/errno.h", 3647, 1060696125 .dbg file, "../../include/unistd.h", 3912, 1061022172 .dbg file, "./_file.h", 742, 1084367783 .export _fseek .import __errno .import _lseek ; --------------------------------------------------------------- ; int __fastcall__ fseek (register struct _FILE*, long, int) ; --------------------------------------------------------------- .segment "CODE" .proc _fseek .segment "CODE" ; ; { ; .dbg line, "fseek.c", 24 jsr pushax ldy #$06 ldx #$04 jsr regswap2 ; ; if ((f->f_flags & _FOPEN) == 0) { ; .dbg line, "fseek.c", 28 jsr decsp4 ldy #$01 lda (regbank+4),y and #$01 bne L0004 ; ; _errno = EINVAL; /* File not open */ ; .dbg line, "fseek.c", 29 tax lda #$07 sta __errno stx __errno+1 ; ; return -1; ; .dbg line, "fseek.c", 30 dex jmp L0020 ; ; if ((f->f_flags & _FPUSHBACK) && whence == SEEK_CUR) { ; .dbg line, "fseek.c", 36 L0004: lda (regbank+4),y and #$08 beq L000B ldy #$04 lda (sp),y iny ora (sp),y bne L000B ; ; --offset; ; .dbg line, "fseek.c", 37 tax sta sreg sta sreg+1 lda #$01 iny jsr lsubeqysp ; ; res = lseek(f->f_fd, offset, whence); ; .dbg line, "fseek.c", 41 L000B: jsr decsp6 ldy #$00 lda (regbank+4),y ldy #$04 sta (sp),y iny lda #$00 sta (sp),y ldy #$0F jsr ldeaxysp ldy #$00 jsr steaxysp ldy #$0B jsr ldaxysp jsr _lseek ldy #$00 jsr steaxysp ; ; if (res < 0) { ; .dbg line, "fseek.c", 47 ldy #$03 jsr ldeaxysp lda sreg+1 bpl L0017 ; ; f->f_flags |= _FERROR; ; .dbg line, "fseek.c", 48 ldy #$01 lda (regbank+4),y ora #$04 sta (regbank+4),y ; ; return -1; ; .dbg line, "fseek.c", 49 ldx #$FF jmp L0020 ; ; f->f_flags &= ~(_FEOF | _FPUSHBACK); ; .dbg line, "fseek.c", 55 L0017: ldy #$01 lda (regbank+4),y and #$F5 sta (regbank+4),y ; ; return 0; ; .dbg line, "fseek.c", 58 ldx #$00 L0020: txa ; ; } ; .dbg line, "fseek.c", 59 pha ldy #$0A lda (sp),y sta regbank+4 iny lda (sp),y sta regbank+5 pla iny jmp addysp .dbg line .endproc