; ; File generated by cc65 v 2.13.3 ; .fopt compiler,"cc65 v 2.13.3" .setcpu "6502" .smart on .autoimport on .case on .debuginfo off .importzp sp, sreg, regsave, regbank, tmp1, ptr1, ptr2 .macpack longbranch .import _initSIDTune .import _prints .import _printw .import _fixSIDTune .import _memcmp .export _playSidFile .export _readSidHeader .export _moveSIDCodeToPlace .export __strcpy .export _MAGIG_ID_PSID .export __memcpy .export __readBigEndianW .segment "RODATA" _MAGIG_ID_PSID: .byte $50 .byte $53 .byte $49 .byte $44 L0001: .byte $0D,$0D,$56,$49,$43,$49,$4F,$55,$53,$20,$53,$49,$44,$20,$50,$4C .byte $41,$59,$45,$52,$0D,$00,$0D,$54,$49,$54,$4C,$45,$3A,$20,$20,$20 .byte $00,$0D,$41,$55,$54,$48,$4F,$52,$3A,$20,$20,$00,$0D,$52,$45,$4C .byte $45,$41,$53,$45,$3A,$20,$00,$0D,$53,$4F,$4E,$47,$53,$3A,$20,$24 .byte $00,$20,$44,$45,$46,$41,$55,$4C,$54,$3A,$20,$24,$00,$0D,$55,$53 .byte $49,$4E,$47,$20,$46,$49,$4C,$45,$20,$53,$49,$5A,$45,$3A,$20,$24 .byte $00,$0D,$49,$4E,$49,$54,$20,$41,$44,$44,$52,$45,$53,$53,$3A,$20 .byte $20,$20,$20,$24,$00,$0D,$50,$4C,$41,$59,$20,$41,$44,$44,$52,$45 .byte $53,$53,$3A,$20,$20,$20,$20,$24,$00,$0D,$4C,$4F,$41,$44,$20,$41 .byte $44,$44,$52,$45,$53,$53,$3A,$20,$20,$20,$20,$24,$00,$0D,$00,$53 .byte $54,$41,$52,$54,$20,$50,$4C,$41,$59,$49,$4E,$47,$2E,$2E,$2E,$0D .byte $00,$0D,$53,$49,$44,$20,$54,$55,$4E,$45,$20,$4E,$4F,$54,$20,$46 .byte $4F,$55,$4E,$44,$20,$49,$4E,$20,$41,$44,$44,$52,$45,$53,$53,$20 .byte $24,$00,$0D,$00 ; --------------------------------------------------------------- ; void __near__ playSidFile (unsigned int, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc _playSidFile: near .segment "CODE" ldy #$7A jsr subysp lda #<(L0001) ldx #>(L0001) jsr pushax jsr _prints ldy #$7F jsr pushwysp lda #$04 jsr leaa0sp jsr pushax jsr _readSidHeader tax jeq L007D lda #<(L0001+22) ldx #>(L0001+22) jsr pushax jsr _prints lda #$1A jsr leaa0sp jsr pushax jsr _prints lda #<(L0001+33) ldx #>(L0001+33) jsr pushax jsr _prints lda #$3A jsr leaa0sp jsr pushax jsr _prints lda #<(L0001+44) ldx #>(L0001+44) jsr pushax jsr _prints lda #$5A jsr leaa0sp jsr pushax jsr _prints lda #<(L0001+55) ldx #>(L0001+55) jsr pushax jsr _prints ldy #$15 jsr pushwysp jsr _printw lda #<(L0001+65) ldx #>(L0001+65) jsr pushax jsr _prints ldy #$17 jsr pushwysp jsr _printw lda #<(L0001+77) ldx #>(L0001+77) jsr pushax jsr _prints ldy #$7D jsr pushwysp jsr _printw lda #<(L0001+97) ldx #>(L0001+97) jsr pushax jsr _prints ldy #$11 jsr pushwysp jsr _printw lda #<(L0001+117) ldx #>(L0001+117) jsr pushax jsr _prints ldy #$13 jsr pushwysp jsr _printw lda #$02 jsr leaa0sp jsr pushax ldy #$7F jsr pushwysp jsr _moveSIDCodeToPlace jsr stax0sp lda #<(L0001+137) ldx #>(L0001+137) jsr pushax jsr _prints jsr pushw0sp jsr _printw lda #<(L0001+157) ldx #>(L0001+157) jsr pushax jsr _prints jsr pushw0sp ldy #$7F jsr pushwysp jsr _fixSIDTune ldy #$11 jsr pushwysp ldy #$13 jsr ldaxysp jsr _initSIDTune ldx #$4E lda #$20 sta $BF84 stx $BF84+1 lda #$81 sta $BF8D lda #<(L0001+159) ldx #>(L0001+159) jsr pushax jsr _prints lda #$11 sta $BF8E jmp L00C2 L007D: lda #<(L0001+177) ldx #>(L0001+177) jsr pushax jsr _prints ldy #$7F jsr pushwysp jsr _printw lda #<(L0001+210) ldx #>(L0001+210) jsr pushax jsr _prints L00C2: ldy #$7E jmp addysp .endproc ; --------------------------------------------------------------- ; unsigned char __near__ readSidHeader (unsigned int, __near__ struct SidHeader1*) ; --------------------------------------------------------------- .segment "CODE" .proc _readSidHeader: near .segment "CODE" jsr ldax0sp sta ptr1 stx ptr1+1 ldy #$03 jsr ldaxysp ldy #$00 sta (ptr1),y iny txa sta (ptr1),y jsr ldax0sp jsr incax2 jsr pushax ldy #$07 jsr pushwysp lda #$04 jsr pusha0 jsr __memcpy jsr ldax0sp jsr incax2 jsr pushax lda #<(_MAGIG_ID_PSID) ldx #>(_MAGIG_ID_PSID) jsr pushax lda #$04 jsr pusha jsr _memcmp cmp #$00 bne L0039 tax jmp incsp4 L0039: jsr pushw0sp ldy #$05 jsr ldaxysp jsr incax4 jsr pushax jsr __readBigEndianW ldy #$06 jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp jsr incax6 jsr pushax jsr __readBigEndianW ldy #$08 jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp jsr incax8 jsr pushax jsr __readBigEndianW ldy #$0A jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp ldy #$0A jsr incaxy jsr pushax jsr __readBigEndianW ldy #$0C jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp ldy #$0C jsr incaxy jsr pushax jsr __readBigEndianW ldy #$0E jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp ldy #$0E jsr incaxy jsr pushax jsr __readBigEndianW ldy #$10 jsr staxspidx jsr pushw0sp ldy #$05 jsr ldaxysp ldy #$10 jsr incaxy jsr pushax jsr __readBigEndianW ldy #$12 jsr staxspidx jsr ldax0sp ldy #$14 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp ldy #$12 jsr incaxy jsr pushax lda #$04 jsr pusha0 jsr __memcpy jsr ldax0sp ldy #$18 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp ldy #$16 jsr incaxy jsr pushax lda #$20 jsr pusha0 jsr __strcpy jsr ldax0sp ldy #$38 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp ldy #$36 jsr incaxy jsr pushax lda #$20 jsr pusha0 jsr __strcpy jsr ldax0sp ldy #$58 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp ldy #$56 jsr incaxy jsr pushax lda #$20 jsr pusha0 jsr __strcpy ldx #$00 lda #$01 jmp incsp4 .endproc ; --------------------------------------------------------------- ; unsigned int __near__ moveSIDCodeToPlace (__near__ struct SidHeader1*, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc _moveSIDCodeToPlace: near .segment "CODE" jsr decsp2 ldy #$05 jsr ldaxysp jsr ldaxi sta sreg stx sreg+1 ldy #$05 jsr ldaxysp ldy #$09 jsr ldaxidx clc adc sreg pha txa adc sreg+1 tax pla jsr pushax ldy #$07 jsr ldaxysp ldy #$0B jsr ldaxidx cpx #$00 bne L00C9 cmp #$00 beq L0069 L00C9: ldy #$07 jsr ldaxysp ldy #$0B jsr ldaxidx ldy #$02 jsr staxysp jmp L006E L0069: jsr ldax0sp jsr ldaxi ldy #$02 jsr staxysp ldx #$00 lda #$02 jsr addeq0sp L006E: ldy #$05 jsr pushwysp ldy #$05 jsr pushwysp ldy #$0B jsr pushwysp jsr __memcpy ldy #$03 jsr ldaxysp jmp incsp8 .endproc ; --------------------------------------------------------------- ; void __near__ _strcpy (__near__ unsigned char*, unsigned int, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc __strcpy: near .segment "CODE" jsr push0 L0019: jsr ldax0sp ldy #$02 cmp (sp),y txa iny sbc (sp),y bcs L001A jsr ldax0sp clc ldy #$04 adc (sp),y sta ptr1 txa iny adc (sp),y sta ptr1+1 ldy #$00 lda (ptr1),y jsr pusha ldy #$00 lda (sp),y cmp #$61 bcc L001F lda (sp),y sec sbc #$20 sta (sp),y L001F: ldy #$02 jsr ldaxysp clc ldy #$07 adc (sp),y sta ptr1 txa iny adc (sp),y sta ptr1+1 ldy #$00 lda (sp),y sta (ptr1),y ldy #$02 jsr ldaxysp jsr incax1 ldy #$01 jsr staxysp jsr incsp1 jmp L0019 L001A: ldy #$09 jsr pushwysp ldy #$05 jsr ldaxysp jsr decax1 jsr tosaddax sta ptr1 stx ptr1+1 lda #$00 tay sta (ptr1),y jmp incsp8 .endproc ; --------------------------------------------------------------- ; void __near__ _memcpy (__near__ unsigned char*, unsigned int, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc __memcpy: near .segment "CODE" jsr push0 L000E: jsr ldax0sp ldy #$02 cmp (sp),y txa iny sbc (sp),y jcs incsp8 jsr ldax0sp clc ldy #$06 adc (sp),y sta sreg txa iny adc (sp),y sta sreg+1 jsr ldax0sp clc ldy #$04 adc (sp),y sta ptr1 txa iny adc (sp),y sta ptr1+1 ldy #$00 lda (ptr1),y sta (sreg),y jsr ldax0sp jsr incax1 jsr stax0sp jmp L000E .endproc ; --------------------------------------------------------------- ; unsigned int __near__ _readBigEndianW (unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc __readBigEndianW: near .segment "CODE" jsr ldax0sp sta ptr1 stx ptr1+1 ldy #$00 lda (ptr1),y tax tya jsr pushax jsr pushw0sp ldy #$05 jsr ldaxysp jsr incax1 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1,x) jsr tosadda0 jmp incsp4 .endproc