Play "Binary Time constant" Sound on the Apple II
Go to file
2018-08-10 15:19:53 +02:00
play-btc.cfg Initial commit 2018-08-10 01:39:54 +02:00
play-btc.dsk Added sample disk image. 2018-08-10 15:19:53 +02:00
play-btc.s Fixed cycle count for non-page-crossing byte read. 2018-08-10 14:56:44 +02:00
README.md Update README.md 2018-08-10 15:07:21 +02:00
sound.btc Initial commit 2018-08-10 01:39:54 +02:00

Play-BTc

Play "Binary Time constant" Sound on the Apple II

The BTc Sound Compression Algorithm is decribed on https://www.romanblack.com/btc_alg.htm. On https://www.romanblack.com/picsound.htm there's the BTc Sound Encoder 3.0.

Play-BTc plays .btc files created by the BTc Sound Encoder on the Apple II. However, certain settings in the BTc Sound Encoder are necessary:

  • The Algorithm needs to be set to 1 bit.
  • The Frequency needs to be 33000Hz (use Resample .WAV if necessary).
  • The number of Samples mustn't exeed 362500 (use Trim .WAV if necessary).

To built Play-BTc:

  • Get cc65
  • Enter cl65 -C play-btc.cfg play-btc.s

To run Play-BTc:

  • Put play-btc on a ProDOS disk as the BIN file PLAY.BTC with start address $800
  • Put path_to_cc65/target/apple2/util/loader.system on the ProDOS disk as the SYS file PLAY.BTC.SYSTEM
  • Run PLAY.BTC.SYSTEM

The player loop is based on cycle counting. The slowest loop variant is when the reader needs to switch from the current memory page to the next. 31 cycles is the fastest I could come up with for that variant. The two other variants (just using the next bit from the current byte, reading the next byte from the current page) are padded with unnecessary operations to use 31 cycles too. Given the CPU freqency of a stock Apple II these 31 cycles lead to the 33kHz.