; ; 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 .forceimport __STARTUP__ .forceimport initmainargs .import _stdin .import _stderr .import _fclose .import _fgets .import _fopen .import _fprintf .import _fread .import _printf .import _malloc .import _free .import __heapmaxavail .import _atexit .import _strerror .import _strlen .import __errno .import __sys .import _doesclrscrafterexit .import _cgetc .export _main .segment "DATA" _verbose: .word $0001 _C_dev: .byte $43,$3A,$00 .segment "RODATA" S0015: .byte $43,$49,$4F,$20,$63,$61,$6C,$6C,$20,$74,$6F,$20,$63,$6C,$6F,$73 .byte $65,$20,$63,$61,$73,$73,$65,$74,$74,$65,$20,$72,$65,$74,$75,$72 .byte $6E,$65,$64,$20,$25,$64,$9B,$00 S0008: .byte $63,$61,$6E,$6E,$6F,$74,$20,$61,$6C,$6C,$6F,$63,$20,$25,$6C,$64 .byte $20,$62,$79,$74,$65,$73,$20,$2D,$2D,$20,$61,$62,$6F,$72,$74,$69 .byte $6E,$67,$2E,$2E,$2E,$9B,$00 S0012: .byte $43,$49,$4F,$20,$63,$61,$6C,$6C,$20,$74,$6F,$20,$6F,$70,$65,$6E .byte $20,$63,$61,$73,$73,$65,$74,$74,$65,$20,$72,$65,$74,$75,$72,$6E .byte $65,$64,$20,$25,$64,$9B,$00 S000E: .byte $66,$69,$6C,$65,$20,$69,$73,$20,$74,$6F,$6F,$20,$6C,$61,$72,$67 .byte $65,$20,$28,$6D,$75,$73,$74,$20,$62,$65,$20,$3C,$20,$33,$32,$37 .byte $36,$38,$29,$9B,$00 S0014: .byte $43,$49,$4F,$20,$63,$61,$6C,$6C,$20,$74,$6F,$20,$77,$72,$69,$74 .byte $65,$20,$66,$69,$6C,$65,$20,$72,$65,$74,$75,$72,$6E,$65,$64,$20 .byte $25,$64,$9B,$00 S0003: .byte $75,$73,$69,$6E,$67,$20,$69,$6F,$63,$62,$20,$69,$6E,$64,$65,$78 .byte $20,$24,$25,$30,$32,$58,$20,$28,$24,$25,$30,$34,$58,$29,$9B,$00 S0007: .byte $65,$6D,$70,$74,$79,$20,$66,$69,$6C,$65,$6E,$61,$6D,$65,$2C,$20 .byte $65,$78,$69,$74,$69,$6E,$67,$2E,$2E,$2E,$9B,$00 S0006 := S0007+0 S0002: .byte $63,$6F,$75,$6C,$64,$6E,$27,$74,$20,$66,$69,$6E,$64,$20,$61,$20 .byte $66,$72,$65,$65,$20,$69,$6F,$63,$62,$9B,$00 S0009: .byte $62,$75,$66,$66,$65,$72,$20,$73,$69,$7A,$65,$3A,$20,$25,$6C,$64 .byte $20,$62,$79,$74,$65,$73,$9B,$00 S0013: .byte $77,$72,$69,$74,$69,$6E,$67,$20,$74,$6F,$20,$63,$61,$73,$73,$65 .byte $74,$74,$65,$2E,$2E,$2E,$9B,$00 S000C: .byte $72,$65,$61,$64,$69,$6E,$67,$20,$69,$6E,$70,$75,$74,$20,$66,$69 .byte $6C,$65,$2E,$2E,$2E,$9B,$00 S000B: .byte $63,$61,$6E,$6E,$6F,$74,$20,$6F,$70,$65,$6E,$20,$27,$25,$73,$27 .byte $3A,$20,$25,$73,$9B,$00 S0010: .byte $66,$69,$6C,$65,$20,$73,$69,$7A,$65,$3A,$20,$25,$6C,$64,$20,$62 .byte $79,$74,$65,$73,$9B,$00 S0011: .byte $6F,$70,$65,$6E,$69,$6E,$67,$20,$63,$61,$73,$73,$65,$74,$74,$65 .byte $2E,$2E,$2E,$9B,$00 S000F: .byte $6E,$6F,$74,$20,$65,$6E,$6F,$75,$67,$68,$20,$6D,$65,$6D,$6F,$72 .byte $79,$9B,$00 S000D: .byte $72,$65,$61,$64,$20,$65,$72,$72,$6F,$72,$9B,$00 S0004: .byte $9B,$66,$69,$6C,$65,$6E,$61,$6D,$65,$3A,$20,$00 S0016: .byte $73,$75,$63,$63,$65,$73,$73,$9B,$00 S000A: .byte $72,$62,$00 S0005 := S0015+38 ; --------------------------------------------------------------- ; struct __iocb *__near__ findfreeiocb (void) ; --------------------------------------------------------------- .segment "CODE" .proc _findfreeiocb: near .segment "CODE" jsr decsp2 ldx #$00 txa jsr stax0sp L0002: jsr ldax0sp cmp #$08 txa sbc #$00 bvc L0006 eor #$80 L0006: asl a lda #$00 tax bcc L0001 jsr ldax0sp jsr aslax4 sta ptr1 stx ptr1+1 lda #$40 clc adc ptr1 sta ptr1 lda #$03 adc ptr1+1 sta ptr1+1 ldy #$00 lda (ptr1),y cmp #$FF bne L0004 jsr ldax0sp jsr aslax4 sta ptr1 stx ptr1+1 lda #$40 clc adc ptr1 pha lda #$03 adc ptr1+1 tax pla jmp L0001 L0004: ldx #$00 lda #$01 jsr addeq0sp jmp L0002 L0001: jmp incsp2 .endproc ; --------------------------------------------------------------- ; int __near__ __cdecl__ main (int argc, char **argv) ; --------------------------------------------------------------- .segment "CODE" .proc _main: near .segment "CODE" ldy #$1E jsr subysp ldx #$80 lda #$01 jsr pushax jsr decsp6 jsr _findfreeiocb jsr pushax jsr decsp2 jsr _doesclrscrafterexit tax beq L0002 lda #<(_cgetc) ldx #>(_cgetc) jsr _atexit L0002: ldy #$03 lda (sp),y dey ora (sp),y bne L0003 lda _stderr ldx _stderr+1 jsr pushax lda #<(S0002) ldx #>(S0002) jsr pushax ldy #$04 jsr _fprintf ldx #$00 lda #$01 jmp L0001 L0003: iny jsr ldaxysp sec sbc #$40 pha txa sbc #$03 tax pla jsr pushax lda #$10 jsr tosdiva0 jsr aslax4 jsr stax0sp lda _verbose ora _verbose+1 beq L0004 lda #<(S0003) ldx #>(S0003) jsr pushax ldy #$05 jsr pushwysp ldy #$09 jsr pushwysp ldy #$06 jsr _printf L0004: ldy #$2D jsr ldaxysp cmp #$02 txa sbc #$00 bvc L0006 eor #$80 L0006: jpl L0005 lda #<(S0004) ldx #>(S0004) jsr pushax ldy #$02 jsr _printf lda #$12 jsr leaa0sp jsr pushax lda #$13 jsr pusha0 lda _stdin ldx _stdin+1 jsr _fgets ldy #$26 jsr staxysp lda #<(S0005) ldx #>(S0005) jsr pushax ldy #$02 jsr _printf ldy #$27 lda (sp),y dey ora (sp),y bne L0007 lda #<(S0006) ldx #>(S0006) jsr pushax ldy #$02 jsr _printf ldx #$00 lda #$01 jmp L0001 L0007: iny jsr ldaxysp sta ptr1 stx ptr1+1 ldy #$00 lda (ptr1),y beq L0008 ldy #$29 jsr pushwysp ldy #$29 jsr ldaxysp jsr _strlen jsr tosaddax jsr decax1 sta ptr1 stx ptr1+1 ldy #$00 lda (ptr1),y cmp #$9B bne L0008 ldy #$29 jsr pushwysp ldy #$29 jsr ldaxysp jsr _strlen jsr tosaddax jsr decax1 sta ptr1 stx ptr1+1 lda #$00 tay sta (ptr1),y L0008: ldy #$27 jsr ldaxysp jsr _strlen stx tmp1 ora tmp1 bne L000C lda #<(S0007) ldx #>(S0007) jsr pushax ldy #$02 jsr _printf ldx #$00 lda #$01 jmp L0001 L000C: ldy #$27 jsr ldaxysp jmp L0022 L0005: ldy #$2B jsr ldaxysp jsr incax2 jsr ldaxi L0022: ldy #$28 jsr staxysp ldy #$0B jsr ldaxysp jsr _malloc ldy #$0E jsr staxysp ldy #$0F lda (sp),y dey ora (sp),y bne L000F jsr __heapmaxavail ldy #$0A jsr staxysp jsr _malloc ldy #$0E jsr staxysp ldy #$0F lda (sp),y dey ora (sp),y bne L000F lda _stderr ldx _stderr+1 jsr pushax lda #<(S0008) ldx #>(S0008) jsr pushax ldy #$0F jsr ldaxysp jsr axulong jsr pusheax ldy #$08 jsr _fprintf ldx #$00 lda #$01 jmp L0001 L000F: lda _verbose ora _verbose+1 beq L0010 lda #<(S0009) ldx #>(S0009) jsr pushax ldy #$0D jsr ldaxysp jsr axulong jsr pusheax ldy #$06 jsr _printf L0010: ldy #$2B jsr pushwysp lda #<(S000A) ldx #>(S000A) jsr _fopen ldy #$10 jsr staxysp ldy #$11 lda (sp),y dey ora (sp),y bne L0011 dey jsr ldaxysp jsr _free lda _stderr ldx _stderr+1 jsr pushax lda #<(S000B) ldx #>(S000B) jsr pushax ldy #$2F jsr pushwysp lda __errno ldx __errno+1 jsr _strerror jsr pushax ldy #$08 jsr _fprintf ldx #$00 lda #$01 jmp L0001 L0011: lda _verbose ora _verbose+1 beq L0012 lda #<(S000C) ldx #>(S000C) jsr pushax ldy #$02 jsr _printf L0012: ldy #$11 jsr pushwysp lda #$01 jsr pusha0 ldy #$11 jsr pushwysp ldy #$17 jsr ldaxysp jsr _fread ldy #$0C jsr staxysp ldy #$0D lda (sp),y dey ora (sp),y bne L0013 lda _stderr ldx _stderr+1 jsr pushax lda #<(S000D) ldx #>(S000D) L0024: jsr pushax ldy #$04 jsr _fprintf ldy #$11 jsr ldaxysp jsr _fclose ldy #$0F jsr ldaxysp jsr _free ldx #$00 lda #$01 jmp L0001 L0013: iny jsr ldaxysp jsr axulong jsr pusheax ldx #$80 lda #$00 sta sreg sta sreg+1 jsr tosgeeax beq L0015 lda _stderr ldx _stderr+1 jsr pushax lda #<(S000E) ldx #>(S000E) jmp L0024 L0015: ldy #$0F jsr pushwysp ldy #$0D jsr ldaxysp jsr tosicmp bne L0016 lda _stderr ldx _stderr+1 jsr pushax lda #<(S000F) ldx #>(S000F) jmp L0024 L0016: lda _verbose ora _verbose+1 beq L0017 lda #<(S0010) ldx #>(S0010) jsr pushax ldy #$0F jsr ldaxysp jsr axulong jsr pusheax ldy #$06 jsr _printf L0017: ldy #$11 jsr ldaxysp jsr _fclose lda _verbose ora _verbose+1 beq L0018 lda #<(S0011) ldx #>(S0011) jsr pushax ldy #$02 jsr _printf L0018: ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #<(_C_dev) ldy #$04 sta (ptr1),y iny lda #>(_C_dev) sta (ptr1),y ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$08 ldy #$0A sta (ptr1),y ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$80 ldy #$0B sta (ptr1),y ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$03 ldy #$02 sta (ptr1),y ldy #$00 lda (sp),y ldy #$05 sta (sp),y ldx #$E4 lda #$56 ldy #$08 jsr staxysp lda #$04 jsr leaa0sp jsr __sys ldy #$06 lda (sp),y cmp #$01 beq L0019 lda _stderr ldx _stderr+1 jsr pushax lda #<(S0012) ldx #>(S0012) jsr pushax ldy #$0A lda (sp),y jsr pusha0 ldy #$06 jsr _fprintf ldy #$0F jsr ldaxysp jsr _free ldx #$00 lda #$01 jmp L0001 L0019: lda _verbose ora _verbose+1 beq L001A lda #<(S0013) ldx #>(S0013) jsr pushax ldy #$02 jsr _printf L001A: ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 ldy #$0F jsr ldaxysp ldy #$04 sta (ptr1),y iny txa sta (ptr1),y ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 ldy #$0D jsr ldaxysp ldy #$08 sta (ptr1),y iny txa sta (ptr1),y ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$0B ldy #$02 sta (ptr1),y ldy #$00 lda (sp),y ldy #$05 sta (sp),y ldx #$E4 lda #$56 ldy #$08 jsr staxysp lda #$04 jsr leaa0sp jsr __sys ldy #$06 lda (sp),y cmp #$01 beq L001B lda _stderr ldx _stderr+1 jsr pushax lda #<(S0014) ldx #>(S0014) jsr pushax ldy #$0A lda (sp),y jsr pusha0 ldy #$06 jsr _fprintf ldy #$0F jsr ldaxysp jsr _free ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$0C ldy #$02 sta (ptr1),y ldy #$00 lda (sp),y ldy #$05 sta (sp),y ldx #$E4 lda #$56 ldy #$08 jsr staxysp lda #$04 jsr leaa0sp jsr __sys ldx #$00 lda #$01 jmp L0001 L001B: ldy #$0F jsr ldaxysp jsr _free ldy #$03 jsr ldaxysp sta ptr1 stx ptr1+1 lda #$0C ldy #$02 sta (ptr1),y ldy #$00 lda (sp),y ldy #$05 sta (sp),y ldx #$E4 lda #$56 ldy #$08 jsr staxysp lda #$04 jsr leaa0sp jsr __sys ldy #$06 lda (sp),y cmp #$01 beq L001C lda _stderr ldx _stderr+1 jsr pushax lda #<(S0015) ldx #>(S0015) jsr pushax ldy #$0A lda (sp),y jsr pusha0 ldy #$06 jsr _fprintf ldx #$00 lda #$01 jmp L0001 L001C: lda #<(S0016) ldx #>(S0016) jsr pushax ldy #$02 jsr _printf ldx #$00 txa L0001: ldy #$2E jmp addysp .endproc