; ; File generated by cc65 v 2.19 - Git ab8bb268 ; .fopt compiler,"cc65 v 2.19 - Git ab8bb268" .setcpu "HUC6280" .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 lda (regbank+4) 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 sta (regbank+4) ldy #$01 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 L002F: 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 bra L0029 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 L0029: 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 dey lda (regbank+4),y bra L0033 L0014: iny lda (regbank+4),y tax dey lda (regbank+4),y L0033: ina bne L0025 inx L0025: 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 L002F 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 L001B eor #$80 L001B: bpl L001A 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 L001A ldy #$0F lda (regbank+4),y tax dey lda (regbank+4),y ina bne L0028 inx L0028: sta (regbank+4),y iny txa sta (regbank+4),y L001A: 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 stz 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) 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 bra L0001 L0005: ldx #$FF stx sreg stx sreg+1 txa L0001: pha stx tmp1 ldy #$09 ldx #$05 L0020: lda (sp),y sta regbank+0,x dey dex bpl L0020 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 lda (sp) 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 bra L000A L0005: ldx #$00 L000F: lda #$01 bra L000D L000A: txa L000D: jmp incsp2 .endproc