Bueno, aca no estoy usando nada de eso, entro con cada potenciometro derivado a masa con una resistencia de 100K (porque los potenciometros de estos joysticks tienen ese valor), y tomo el voltaje del medio, que lo mando directo al conversor A/D del PIC. El valor capturado queda en un registro interno del sintetizador hasta que lo pido desde la C64 enviando un byte de valor ASCII 9 (TAB), a lo que el PIC responde con un byte con el valor de POTX y el estado del boton 1, si desde la C64 envio un byte de valor ASCII 11 (VT, vertical tab), el PIC responde con un byte con el valor de POTY y el estado del boton 2. Por eso lo de indirecto, estoy leyendo un joystick por RS232, cuando podria entrar por el puerto de joystick. Igual hay que aclarar que los joysticks de PC usan un valor distinto de potenciometro que los paddles de Commodore, asi que igual habria que adaptarlo.
En cuanto a la entrada de potenciometros de los puertos de joystick, a ver si me acuerdo mas o menos como funciona, como para que tengas una idea.
La captura la hace el SID, que primero tiene que seleccionar con unos 4066 (o 4016, no me acuerdo) cual de las dos entradas leer (joy1 o 2), despues descarga el capacitor en la C64, me parece que todo el ciclo de captura dura 512 microsegundos y ocurre continuamente, no se puede detener. Si no recuerdo mal, pasa 256 us descargando el capacitor mandandole 0, y luego los otros 256 us se lo conecta al puerto de joystick y se va cargando a traves del potenciometro en el paddle, lo que mide el SID es el tiempo que tarda en cargarse, y ese tiempo le va a decir aproximadamente el valor del potenciometro.
El mouse 1351 reporta el movimiento simulando un potenciometro, en la realidad el 1351 deberia mover un potenciometro por el cual deberia pasar la corriente que viene desde los 5V de la C64, hacia la entrada POTX o POTY del SID en el puerto de joystick. De acuerdo al valor de resistencia, el capacitor va a llegar a la carga completa antes o despues.
Pero el 1351 lo hace de manera digital, engañando al SID, en lugar de variar una resistencia y con eso el tiempo de carga del capacitor, simplemente espera hasta el momento en que el capacitor deberia estar cargado, y manda un 1 a esa entrada, cargandolo al instante.
El detalle, es que el mouse detecta cuando empieza el ciclo de 512 us, sabe que hay 256 us donde el SID descarga al capacitor, y luego temporiza el momento justo de los otros 256 us para poner el 1 cuando corresponda. No me acuerdo ahora como se detectaba el inicio del ciclo, me parece que el mouse lee la propia entrada de POTX del puerto de joystick y si detecta un 0 es que el SID esta descargando el capacitor, y si esta en alta impedancia es que esta capturando. Lo digo medio de memoria porque no experimente con esto y hace un tiempo que lo lei, pero por ahi te da una idea de como funciona.