; ; File generated by cc65 v 2.19 - Git ab8bb268 ; .fopt compiler,"cc65 v 2.19 - Git ab8bb268" .setcpu "6502" .smart on .autoimport on .case on .debuginfo off .importzp sp, sreg, regsave, regbank .importzp tmp1, tmp2, tmp3, tmp4, ptr1, ptr2, ptr3, ptr4 .macpack longbranch .import _isdigit .import _islower .import _isspace .import _isupper .import __seterrno .export _strtoul ; --------------------------------------------------------------- ; unsigned long __near__ __fastcall__ strtoul (const char *nptr, char **endptr, int base) ; --------------------------------------------------------------- .segment "CODE" .proc _strtoul: near .segment "CODE" jsr pushax lda regbank+4 ldx regbank+5 jsr pushax ldy #$07 jsr ldaxysp sta regbank+4 stx regbank+4+1 jsr pushl0 jsr pusha jsr pusha jsr push0 jsr decsp6 jmp L0004 L0002: inc regbank+4 bne L0004 inc regbank+4+1 L0004: ldx #$00 lda (regbank+4,x) jsr _isspace stx tmp1 ora tmp1 bne L0002 tay lda (regbank+4),y cmp #$2B beq L0009 cmp #$2D bne L0007 lda #$01 ldy #$09 sta (sp),y L0009: inc regbank+4 bne L0007 inc regbank+4+1 L0007: ldy #$10 lda (sp),y iny ora (sp),y bne L003E tax lda (regbank+4,x) cmp #$30 bne L003D inc regbank+4 bne L000E inc regbank+4+1 L000E: lda (regbank+4,x) cmp #$78 beq L003B cmp #$58 bne L003C L003B: inc regbank+4 bne L0012 inc regbank+4+1 L0012: lda #$10 jmp L004E L003C: lda #$08 dey jsr staxysp jmp L0016 L003D: lda #$0A L004E: dey jsr staxysp jmp L0016 L003E: lda (sp),y bne L0016 dey lda (sp),y cmp #$10 bne L0016 ldy #$00 lda (regbank+4),y cmp #$30 bne L0016 iny lda (regbank+4),y cmp #$78 beq L0043 cmp #$58 bne L0016 L0043: lda #$02 clc adc regbank+4 sta regbank+4 bcc L0016 inc regbank+4+1 L0016: ldx #$FF stx sreg stx sreg+1 txa jsr pusheax ldy #$15 jsr ldaxysp jsr axlong jsr tosumodeax ldy #$00 sta (sp),y ldx #$FF stx sreg stx sreg+1 txa jsr pusheax ldy #$15 jsr ldaxysp jsr axlong jsr tosudiveax ldy #$01 jsr steaxysp L001E: ldx #$00 lda (regbank+4,x) jsr _isdigit stx tmp1 ora tmp1 beq L0021 ldx #$00 lda (regbank+4,x) ldy #$30 jmp L0053 L0021: tax lda (regbank+4,x) jsr _isupper stx tmp1 ora tmp1 beq L0023 ldx #$00 lda (regbank+4,x) ldy #$37 jmp L0053 L0023: tax lda (regbank+4,x) jsr _islower stx tmp1 ora tmp1 jeq L001F ldx #$00 lda (regbank+4,x) ldy #$57 L0053: jsr decaxy ldy #$05 sta (sp),y ldy #$10 cmp (sp),y lda #$00 iny sbc (sp),y bvs L0037 eor #$80 L0037: bmi L001F ldy #$0D jsr ldeaxysp jsr pusheax ldy #$08 jsr ldeaxysp jsr tosugteax bne L0029 ldy #$0D jsr ldeaxysp jsr pusheax ldy #$08 jsr ldeaxysp jsr toseqeax beq L0028 ldy #$05 lda (sp),y ldy #$00 cmp (sp),y beq L0028 bcc L0028 L0029: lda #$01 ldy #$08 sta (sp),y L0028: ldy #$08 lda (sp),y bne L002E ldy #$0D jsr ldeaxysp jsr pusheax ldy #$15 jsr ldaxysp jsr axlong jsr tosumuleax jsr pusheax ldy #$09 ldx #$00 lda (sp),y jsr axulong jsr tosaddeax ldy #$0A jsr steaxysp ldy #$06 ldx #$00 lda #$01 jsr addeqysp L002E: inc regbank+4 jne L001E inc regbank+4+1 jmp L001E L001F: ldy #$13 lda (sp),y dey ora (sp),y beq L0033 ldy #$06 lda (sp),y iny ora (sp),y beq L0031 ldy #$13 jsr ldaxysp sta sreg stx sreg+1 lda regbank+4 ldy #$00 sta (sreg),y iny lda regbank+4+1 jmp L0050 L0031: ldy #$13 jsr ldaxysp sta sreg stx sreg+1 ldy #$15 jsr ldaxysp ldy #$00 sta (sreg),y iny txa L0050: sta (sreg),y L0033: ldy #$08 lda (sp),y beq L0034 lda #$0F jsr __seterrno ldx #$FF stx sreg stx sreg+1 txa jmp L0036 L0034: iny lda (sp),y beq L0035 ldy #$0D jsr ldeaxysp jsr negeax jmp L0036 L0035: ldy #$0D jsr ldeaxysp L0036: pha ldy #$0E lda (sp),y sta regbank+4 iny lda (sp),y sta regbank+5 pla ldy #$16 jmp addysp .endproc