; ; 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, "fgets.c", 1189, 1084483078 .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, "./_file.h", 742, 1084367783 .import _fgetc .export _fgets .import __errno ; --------------------------------------------------------------- ; unsigned char* __fastcall__ fgets (unsigned char*, unsigned int, struct _FILE*) ; --------------------------------------------------------------- .segment "CODE" .proc _fgets .segment "CODE" ; ; { ; .dbg line, "fgets.c", 22 jsr pushax ; ; if (size == 0) { ; .dbg line, "fgets.c", 26 jsr decsp4 ldy #$06 lda (sp),y iny ora (sp),y bne L0004 ; ; _errno = EINVAL; ; .dbg line, "fgets.c", 28 tax tya sta __errno stx __errno+1 ; ; return 0; ; .dbg line, "fgets.c", 29 txa jmp L0003 ; ; i = 0; ; .dbg line, "fgets.c", 33 L0004: ldx #$00 txa ldy #$02 jsr staxysp ; ; while (--size) { ; .dbg line, "fgets.c", 34 L000C: ldx #$00 lda #$01 ldy #$06 jsr subeqysp stx tmp1 ora tmp1 jeq L000D ; ; if ((c = fgetc (f)) == EOF) { ; .dbg line, "fgets.c", 37 ldy #$05 jsr ldaxysp jsr _fgetc ldy #$00 jsr staxysp cpx #$FF bne L001F cmp #$FF bne L001F ; ; s[i] = '\0'; ; .dbg line, "fgets.c", 38 ldy #$08 lda (sp),y clc ldy #$02 adc (sp),y pha ldy #$09 lda (sp),y ldy #$03 adc (sp),y tax pla sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ; ; if ((f->f_flags & _FERROR) != 0 || i == 0) { ; .dbg line, "fgets.c", 40 ldy #$05 jsr ldaxysp ldy #$01 sta ptr1 stx ptr1+1 lda (ptr1),y and #$04 bne L0019 iny lda (sp),y iny ora (sp),y bne L000D ; ; return 0; ; .dbg line, "fgets.c", 42 L0019: ldx #$00 txa jmp L0003 ; ; s[i++] = c; ; .dbg line, "fgets.c", 50 L001F: ldy #$0B jsr pushwysp ldy #$05 jsr ldaxysp sta regsave stx regsave+1 clc adc #$01 bcc L0022 inx L0022: ldy #$04 jsr staxysp lda regsave ldx regsave+1 jsr tosaddax sta sreg stx sreg+1 ldy #$00 lda (sp),y sta (sreg),y ; ; if (c == '\n') { ; .dbg line, "fgets.c", 53 iny lda (sp),y jne L000C dey lda (sp),y cmp #$0D jne L000C ; ; s[i] = '\0'; ; .dbg line, "fgets.c", 59 L000D: ldy #$08 lda (sp),y clc ldy #$02 adc (sp),y pha ldy #$09 lda (sp),y ldy #$03 adc (sp),y tax pla sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ; ; return s; ; .dbg line, "fgets.c", 62 ldy #$09 jsr ldaxysp ; ; } ; .dbg line, "fgets.c", 63 L0003: ldy #$0A jmp addysp .dbg line .endproc