1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-09-25 20:56:10 +00:00

Start write-up on audio generation.

Thomas Harte 2021-06-25 12:39:42 -04:00
parent e3146840e8
commit 8416337191

@ -63,4 +63,24 @@ The unexpanded 64kb machine divides this up as:
The 128kb machine adds a further four banks of RAM at F8FB; further expansion RAM usually populates the 4mb address space downward from there.
At reset all four paging registers are cleared to 0, making the first 16kb of the EXOS ROM visible in all four segments of the Z80's addressing space.
At reset all four paging registers are cleared to 0, making the first 16kb of the EXOS ROM visible in all four segments of the Z80's addressing space.
### Audio Generation
IstvánV provides detailed Hungarian notes [http://ep128.hu/Ep_Konyv/Exos.htm#242a](here). The following is a result of machine translating those via a couple of different online translators and synthesising the results.
#### Sound Generators
Each channel has a flip flop specifying its current state — high or low.
Standard operation: a 12-bit counter counts downwards from the specified reload value at a rate of 250 kHz (on a 4 Mhz machine, if bit 1 of port BFh is clear). It is reloaded when it overflows, and:
* if no distortion is specified, the output switches state;
* otherwise the specified polynomial output is sampled and becomes the generator's new state.
The polynomial counters run continuously at 250 kHz.
If high-pass filtering is enabled, any falling edge on the linked channel's output resets this channel's state.
If ring modulation is enabled, the channel's actual output is the XNOR of its output and that of the other channel.
In both cases, the other channel's output is that after the application of distortion, high-pass filtering and ring modulation.