to the amplitude value. Thus in fast mode (bit 14=0), the LSB of the slope value is 28.6dB per second whereas in slow mode
(bit 14=1), it is 1.78dB/sec. Although the slow mode has much more slope resolution than the fast mode, it should only be
used for relatively slow slopes since it can cause a low buzzing sound from large amplitude steps at its slow 1.2KHz update
rate.
Note that the polarity of bit 14 is the same whether the slope is positive or negative. Thus one should OR-in bit 14 after any
twos complement operations.
Addressing Partials
There are 240 sets of the four registers described above in the address range of $030000 - 0307FF. Word moves should
always be used to ensure that both bytes of an addressed register are read/changed simultaneously. Partials are numbered
from 0 to 255 and the partial number used in the formulas below will be called P. If P is divisible by 16, it is a silent partial
and does not contribute to the sound regardless of the register values. The base address for the registers associated with a
given partial, P, is: $030000+(8*P). The Phase Register then is at the base address plus 4, Frequency at base plus 2,
Amplitude at base+6, and Slope at base+0.
Amplitude Ranges
The sound generator theoretically produces 24-bit sample values (240 partials times 16 bits per partial). The lower 20 bits of
these participate in producing the output (yes, all 20) but the upper 4 bits are clipped. The waveform is actually clipped
(which is relatively unnoticable in small amounts), rather than allowed to wraparound which would sound truly awful. Thus
it is theoretically possible to clip a waveform of 17 or more partials if they are at maximum amplitude and perfectly in phase.
In practice, clipping seldom, if ever, occurs because not all partials of a listenable sound are going to be at maximum at once
and the slight frequency errors due to the 0.3Hz quantization ensures that phases are going to be scrambled in the long term.
The programmer may therefore feel free to use any amplitude range desired.
Sound Generator Control/Status
The overall sound generator is controlled by a write-only register at $030800. The bit assignments are as follows:
BIT 0
0=Halt, 1=Run
BIT 1
1=Single-cycle execution for each write, 0=no effect
BIT 2
don't care
BIT 3
0=Mute, 1=Normal operation
Bit 4-7
don't care
Thus normal operation is achieved by writing $09 to $038000. Normally the sound generator is started at power-up after
clearing all of the Amplitude and Slope registers and then is left running continuously. For effective muting of startup and
power-down transients, Mute should be held active for several hundred milliseconds after initializing and starting the sound
generator and also immediately forced on in the power-fail interrupt service routine (see description above). Single-cycle
execution is for diagnostic and hardware debugging use.
Also at address $038000 is a read-only status register for the sound generator. Its bit assignments are:
BIT 0
1=Access timeslot to sound generator registers
BIT 1
1=Run mode
BIT 2
Serial data for sample readback
BIT 3
1=16th sample (slow slopes will be applied)
Bit 4-7
undefined
These bits are provided for diagnostic purposes. Bit 2 allows a diagnostic program to read the low 20 bits of the last
calculated sample one bit at a time.
Anti-Alias Filter Considerations
K150FS Programmer's Model
7
Rev. A 26-APR-88
Need help?
Do you have a question about the K150 - PROGRAMMERS MODEL REV A and is the answer not in the manual?
Questions and answers