event_I_func: sbi SPCR, SPE cbi PORTD, 6 ldi r16, 0x02 rcall send_spi ldi r16, 0x00 rcall send_spi ldi r16, 0x08 rcall send_spi ldi r16, 0x00 rcall send_spi sbi PORTD, 6 cbi PORTD, 6 ldi r16, 0x02 rcall send_spi ldi r16, 0x02 rcall send_spi ldi r16, 0x00 rcall send_spi ldi r16, 0x00 rcall send_spi sbi PORTD, 6 cbi PORTD, 6 ldi r16, 0x02 rcall send_spi ldi r16, 0x0B rcall send_spi ldi r16, 0x01 rcall send_spi ldi r16, 0x01 rcall send_spi sbi PORTD, 6 cbi PORTD, 6 ldi r16, 0x02 rcall send_spi ldi r16, 0x03 rcall send_spi ldi r16, LOW( 12288 ) rcall send_spi ldi r16, HIGH( 12288 ) rcall send_spi sbi PORTD, 6 cbi PORTD, 6 ldi r16, 0x02 rcall send_spi ldi r16, 0x05 rcall send_spi ldi r16, 0xAC rcall send_spi ldi r16, 0x45 rcall send_spi sbi PORTD, 6 ret event_play: sbi PORTD, 2 rcall event_I_func event_play2: ldi ZL, LOW( MP3_CurrentCluster ) ldi ZH, HIGH( MP3_CurrentCluster ) ld r18, Z+ ld r19, Z+ ld r20, Z+ ld r21, Z+ rcall fat_get_cluster_addr rcall hdd_sectcount_chs rcall hdd_read_cluster ldi ZL, LOW( FS_ClusterSize ) ldi ZH, HIGH( FS_ClusterSize ) ld r16, Z event_play_cluster_loop: push r16 rcall hdd_read_datareg2 ldi r16, 0xFF out PORTB, r16 ldi ZL, LOW( FS_WorkSector ) ldi ZH, HIGH( FS_WorkSector ) ldi r16, 16 sbi SPCR, SPE cbi PORTD, 5 event_play_send_sector: push r16 rcall send_spi_32byte pop r16 event_play_dreq: sbis PIND, 4 rjmp event_play_dreq dec r16 brne event_play_send_sector sbi PORTD, 5 cbi SPCR, SPE pop r16 dec r16 brne event_play_cluster_loop ldi ZL, LOW( MP3_CurrentCluster ) ldi ZH, HIGH( MP3_CurrentCluster ) ld r18, Z+ ld r19, Z+ ld r20, Z+ ld r21, Z+ rcall fat_get_next_cluster cpi r19, 0xFF brlo event_play_save_cluster cpi r18, 0xF8 brsh event_play_stop event_play_save_cluster: ldi ZL, LOW( MP3_CurrentCluster ) ldi ZH, HIGH( MP3_CurrentCluster ) st Z+, r18 st Z+, r19 st Z+, r20 st Z+, r21 mov r16, RXByte cpi r16, 'n' breq event_play_stop rjmp event_play2 event_play_stop: cbi PORTD, 2 ret send_spi_32byte: ldi r16, 32 ld r17, Z+ send_spi_32byte_loop: sbis PIND, 4 rjmp send_spi_32byte_loop out SPDR, r17 ld r17, Z+ send_spi_32byte_wait: sbis SPSR, SPIF rjmp send_spi_32byte_wait dec r16 brne send_spi_32byte_loop ret