Skip to navigation

Aviator on the BBC Micro

Sound: MakeSound

Name: MakeSound [Show more] Type: Subroutine Category: Sound Summary: Make a sound
Arguments: A The sound number from the soundData table (0 to 7)
.MakeSound ASL A \ Set A = A * 8 ASL A \ ASL A \ so we can use it as an index into the soundData table, \ which has 8 bytes per entry CLC \ Set (Y X) = soundData + A ADC #LO(soundData) \ TAX \ starting with the low byte in X LDA #7 \ Set A = 7 for the OSWORD command to make a sound BNE MakeSoundEnvelope \ Jump to MakeSoundEnvelope to set up Y and apply the \ OSWORD command to the (Y X) block, which makes the \ relevant sound (this BNE is effectively a JMP as A is \ never zero)