Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;========================================
- ; main function
- 07:FF3A:20 98 FF JSR $FF98 ; wait
- 07:FF3D:20 87 FF JSR $FF87 ; read next byte
- 07:FF40:85 02 STA $02 ; if (byte == 0)
- 07:FF42:C9 00 CMP #$00 ;
- 07:FF44:F0 1D BEQ $FF63 ; branch to wait
- 07:FF46:C9 10 CMP #$10 ; else if (byte == 0x10)
- 07:FF48:F0 37 BEQ $FF81 ; branch to exit
- 07:FF4A:29 F0 AND #$F0 ; write: (byte & 0xF0) >> 1
- 07:FF4C:4A LSR ;
- 07:FF4D:8D 11 40 STA $4011 ;
- 07:FF50:20 93 FF JSR $FF93 ; wait
- 07:FF53:20 98 FF JSR $FF98 ; wait
- 07:FF56:A5 02 LDA $02 ; write: (byte & 0x0F) << 3
- 07:FF58:29 0F AND #$0F ;
- 07:FF5A:0A ASL ;
- 07:FF5B:0A ASL ;
- 07:FF5C:0A ASL ;
- 07:FF5D:8D 11 40 STA $4011 ;
- 07:FF60:4C 3A FF JMP $FF3A ; loop more sample data
- 07:FF63:A9 40 LDA #$40 ; write: 0x40
- 07:FF65:8D 11 40 STA $4011 ;
- 07:FF68:20 87 FF JSR $FF87 ; read next byte
- 07:FF6B:A8 TAY ;
- 07:FF6C:20 98 FF JSR $FF98 ; wait
- 07:FF6F:20 98 FF JSR $FF98 ; wait
- 07:FF72:20 90 FF JSR $FF90 ; wait
- 07:FF75:20 90 FF JSR $FF90 ; wait
- 07:FF78:20 93 FF JSR $FF93 ; wait
- 07:FF7B:88 DEY ;
- 07:FF7C:D0 EE BNE $FF6C ; loop (byte) times
- 07:FF7E:4C 3A FF JMP $FF3A ; loop more sample data
- 07:FF81:A9 00 LDA #$00 ; silence the channel
- 07:FF83:8D 11 40 STA $4011 ;
- 07:FF86:60 RTS ; exit
- ;========================================
- ; load next byte of sample data
- 07:FF87:B1 00 LDA ($00),Y
- 07:FF89:E6 00 INC $00
- 07:FF8B:D0 02 BNE $FF8F
- 07:FF8D:E6 01 INC $01
- 07:FF8F:60 RTS
- ;========================================
- 07:FF90:20 93 FF JSR $FF93 ; <-wait 34 cycles
- 07:FF93:EA NOP ; <-wait 14 cpu cycles
- 07:FF94:EA NOP
- 07:FF95:EA NOP
- 07:FF96:EA NOP
- 07:FF97:60 RTS
- ;========================================
- ; wait 385 cpu cycles
- 07:FF98:A2 36 LDX #$36
- 07:FF9A:CA DEX
- 07:FF9B:EA NOP
- 07:FF9C:D0 FC BNE $FF9A
- 07:FF9E:60 RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement