The circuit is a replica of the Vaus controller made by TAITO and implements a DAC using a counter, a clock generator and a timer.
Half of a 556 is composes an oscillator with a fixed frequency around 60kHz.
A negative pulse coming from the MSX joystick port pin 8 resets a counter and start a timer formed by the other half of the 555 and has a potentiometer in its RC timing network. The output of this timer also works as a clock enable the counter.
The position of the knob determines then the amount of time that the counter has to count up clock pulses:
- fully counter clockwise: 1ms
- fully colockwise: 6.5 ms
Later, an assembly program was written to read the device and the results are
- fully counter clockwise: 63 counts
- fully colockwise: 405 counts
The outputs of the counter are connected to a shift register which is ready to send the data serially when the counting time is over.
Seial data is read at pin 1 of the MSX joystick port (UP) and clock pulses coming from pin 6 shifts out the next data bit
Interesting to notice is that the bits are read FIRST then the next counting cycle is initiated, thus the MSX do have have to waste time waiting for the analog to digital conversion (pulse counting)