; ; 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 _div .import __tz .export _mktime .segment "RODATA" _MonthLength: .byte $1F .byte $1C .byte $1F .byte $1E .byte $1F .byte $1E .byte $1F .byte $1F .byte $1E .byte $1F .byte $1E .byte $1F _MonthDays: .word $0000 .word $001F .word $003B .word $005A .word $0078 .word $0097 .word $00B5 .word $00D4 .word $00F3 .word $0111 .word $0130 .word $014E ; --------------------------------------------------------------- ; unsigned long __near__ __fastcall__ mktime (register struct tm *TM) ; --------------------------------------------------------------- .segment "CODE" .proc _mktime: near .segment "CODE" jsr pushax ldy #$00 ldx #$04 jsr regswap2 jsr decsp4 ldy #$03 L0002: lda regbank-1,x sta (sp),y dey dex bne L0002 jsr decsp4 lda regbank+4 ora regbank+4+1 jeq L0005 ldy #$01 lda (regbank+4),y tax dey lda (regbank+4),y jsr pushax ldx #$00 lda #$3C jsr _div sta regbank+0 stx regbank+0+1 ldy sreg sty regbank+0+2 ldy sreg+1 sty regbank+0+3 lda regbank+0 ldy #$00 sta (regbank+4),y iny lda regbank+0+1 sta (regbank+4),y ldy #$03 lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 txa adc regbank+2+1 tax cpx #$80 jcs L0005 iny lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 pha txa adc regbank+2+1 tax pla sta (regbank+4),y iny txa sta (regbank+4),y tax dey lda (regbank+4),y jsr pushax ldx #$00 lda #$3C jsr _div sta regbank+0 stx regbank+0+1 ldy sreg sty regbank+0+2 ldy sreg+1 sty regbank+0+3 lda regbank+0 ldy #$02 sta (regbank+4),y iny lda regbank+0+1 sta (regbank+4),y ldy #$05 lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 txa adc regbank+2+1 tax cpx #$80 jcs L0005 iny lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 pha txa adc regbank+2+1 tax pla sta (regbank+4),y iny txa sta (regbank+4),y tax dey lda (regbank+4),y jsr pushax ldx #$00 lda #$18 jsr _div sta regbank+0 stx regbank+0+1 ldy sreg sty regbank+0+2 ldy sreg+1 sty regbank+0+3 lda regbank+0 ldy #$04 sta (regbank+4),y iny lda regbank+0+1 sta (regbank+4),y ldy #$07 lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 txa adc regbank+2+1 tax cpx #$80 jcs L0005 iny lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 pha txa adc regbank+2+1 tax pla L0029: sta (regbank+4),y iny txa sta (regbank+4),y ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y jsr pushax ldx #$00 lda #$0C jsr _div sta regbank+0 stx regbank+0+1 ldy sreg sty regbank+0+2 ldy sreg+1 sty regbank+0+3 lda regbank+0 ldy #$08 sta (regbank+4),y iny lda regbank+0+1 sta (regbank+4),y ldy #$0B lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 txa adc regbank+2+1 tax cpx #$80 jcs L0005 iny lda (regbank+4),y tax dey lda (regbank+4),y clc adc regbank+2 pha txa adc regbank+2+1 tax pla sta (regbank+4),y iny txa sta (regbank+4),y ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y cpx #$00 bne L000D cmp #$01 bne L000D ldy #$0B lda (regbank+4),y tax dey lda (regbank+4),y sta ptr1 stx ptr1+1 lda #$6C clc adc ptr1 pha lda #$07 adc ptr1+1 tax pla jsr _IsLeapYear tax beq L000D ldx #$00 lda #$1D jmp L0023 L000D: ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y sta ptr1 txa clc adc #>(_MonthLength) sta ptr1+1 ldy #<(_MonthLength) ldx #$00 lda (ptr1),y L0023: ldy #$02 jsr staxysp ldy #$07 lda (regbank+4),y tax dey lda (regbank+4),y jsr pushax ldy #$05 jsr ldaxysp jsr tosicmp bmi L000A beq L000A ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y cpx #$00 bne L0014 cmp #$0B bne L0014 txa sta (regbank+4),y iny sta (regbank+4),y ldy #$0B lda (regbank+4),y tax jmp L002E L0014: iny lda (regbank+4),y tax L002E: dey lda (regbank+4),y jsr incax1 sta (regbank+4),y iny txa sta (regbank+4),y ldy #$07 lda (regbank+4),y tax dey lda (regbank+4),y sec ldy #$02 sbc (sp),y pha txa iny sbc (sp),y tax pla ldy #$06 jmp L0029 L000A: ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y jsr aslax1 clc adc #<(_MonthDays) tay txa adc #>(_MonthDays) tax tya jsr ldaxi sta ptr1 stx ptr1+1 ldy #$07 lda (regbank+4),y tax dey lda (regbank+4),y clc adc ptr1 pha txa adc ptr1+1 tax pla jsr decax1 ldy #$0E sta (regbank+4),y iny txa sta (regbank+4),y ldy #$09 lda (regbank+4),y tax dey lda (regbank+4),y cmp #$02 txa sbc #$00 bvs L0019 eor #$80 L0019: bpl L0018 ldy #$0B lda (regbank+4),y tax dey lda (regbank+4),y sta ptr1 stx ptr1+1 lda #$6C clc adc ptr1 pha lda #$07 adc ptr1+1 tax pla jsr _IsLeapYear tax beq L0018 ldy #$0F lda (regbank+4),y tax dey lda (regbank+4),y jsr incax1 sta (regbank+4),y iny txa sta (regbank+4),y L0018: ldy #$0B lda (regbank+4),y tax dey lda (regbank+4),y ldy #$46 jsr decaxy jsr pushax ldx #$01 lda #$6D jsr tosumulax sta ptr1 stx ptr1+1 ldy #$0B lda (regbank+4),y tax dey lda (regbank+4),y ldy #$45 jsr decaxy jsr shrax2 clc adc ptr1 sta ptr1 txa adc ptr1+1 sta ptr1+1 ldy #$0F lda (regbank+4),y tax dey lda (regbank+4),y clc adc ptr1 pha txa adc ptr1+1 tax pla jsr stax0sp lda regbank+4 ldx regbank+4+1 jsr pushax ldy #$03 jsr ldaxysp jsr incax4 jsr pushax lda #$07 jsr tosumoda0 ldy #$0C jsr staxspidx lda regbank+4 ldx regbank+4+1 jsr pushax ldx #$00 txa ldy #$10 jsr staxspidx jsr ldax0sp jsr axulong jsr pusheax ldx #$51 lda #$01 sta sreg lda #$00 sta sreg+1 lda #$80 jsr tosumuleax jsr pusheax ldy #$05 lda (regbank+4),y tax dey lda (regbank+4),y jsr axulong jsr pusheax ldx #$0E lda #$10 jsr tosumul0ax jsr tosaddeax jsr pusheax ldy #$03 lda (regbank+4),y tax dey lda (regbank+4),y jsr pushax lda #$3C jsr tosumula0 jsr axulong jsr tosaddeax jsr pusheax ldy #$01 lda (regbank+4),y tax dey lda (regbank+4),y jsr axulong jsr tosaddeax jsr pusheax lda __tz+1+3 sta sreg+1 lda __tz+1+2 sta sreg ldx __tz+1+1 lda __tz+1 jsr tossubeax jmp L0001 L0005: ldx #$FF stx sreg stx sreg+1 txa L0001: pha stx tmp1 ldy #$09 ldx #$05 L001D: lda (sp),y sta regbank+0,x dey dex bpl L001D ldx tmp1 pla ldy #$0A jmp addysp .segment "RODATA" M0001: .word $0000 M0002: .word $0000 M0003: .word $0000 M0004: .word $0000 M0005: .word $0000 .endproc ; --------------------------------------------------------------- ; unsigned char __near__ __fastcall__ IsLeapYear (unsigned int Year) ; --------------------------------------------------------------- .segment "CODE" .proc _IsLeapYear: near .segment "CODE" jsr pushax ldy #$00 lda (sp),y ldx #$00 and #$03 bne L000A jsr pushw0sp lda #$64 jsr tosumoda0 cpx #$00 bne L0005 cmp #$00 bne L000F jsr pushw0sp ldx #$01 lda #$90 jsr tosumodax cpx #$00 bne L000E cmp #$00 beq L000F L000E: ldx #$00 jmp L000A L0005: ldx #$00 L000F: lda #$01 jmp L000D L000A: txa L000D: jmp incsp2 .endproc