Como parte del proyecto de reemplazar las ROMs de Amiga con memorias Flash, se me ocurrió hacer un Kickstart Switcher, para poder cambiar entre 2 ROMs, en mi caso entre la 1.3 original y la nueva 3.1 o lo que le vaya a poner.
Muchos de los Kickstart Switchers usan un interruptor mecanico para hacer el cambio, con lo que hay que agujerear la carcasa de la máquina en algun lado para poder ponerl el interruptor ese.
Otros usan un metodo electronico y alguna convinación de teclas para hacer el cambio, anunciando el cambio de rom mediante un zumbador.
Yo fuí por esta última opción, usando la señal de RESET para hacer el cambio. Asi que mirando detenidamente uno de los ks switchers que hay en Amiga Hardware descubrí que integrados usar, un monostable 74LS123 y un flip-flop 74LS74, pero no pude sacar el circuito de ahí. Despues de leer este documento: LINK encontré la forma de implementarlo.
En principio pensaba hacer todo en una sola placa, la memoria flash, el zocalo para la ROM original y el switch todo junto. Pero pronto me dí cuenta que eso iba a quedar enorme y no iba a entrar comodo en el lugar que hay en la A500, aparte de necesitar sacar la señal de RESET de algún lado.
Entonces se me ocurrió hacer una placa separada, que se enchufe al conector de teclado interno de la A500 y que el teclado en sí se enchufe a esta plaquita. (En realidad lo de usar el LED en lugar de zumbador vino despues de esta decision)
Bueno, les dejo el esquema y en el siguiente post pongo como funciona y muestro el prototipo en acción.
Bueno, el funcionamiento del switch es el siguiente, se realiza el reset desde el teclado de la A500 (CTRL-Amiga-Amiga), si se mantiene pulsadas las teclas por poco tiempo el circuito no actúa, pero si se mantiene el reset por un par de segundos, se realiza el cambio de ROM, indicado por un parpadeo del LED de la disquetera.
El funcionamiento es el siguiente:
Al producirse un reset (_RESET = 0) se dispara el primer monostable (IC4A), lo que produce un pulso de un par de segundos, la salida invertida Q maneja el reloj del primer flip-flop (IC5A), de manera que al pasar de 0 a 1 hace pasar el estado de _RESET a la salida Q. Si _RESET se ha mantenido en 0 por el tiempo que dura el pulso del primer monostable, la salida Q del primer flip-flop pasa a 0, lo que dispara al 2do monostable. El segundo monostable manda un pulso corto (pero suficientemente largo para ser notado por una persona), que hace que el 2do flip-flop cambie de estado (si Q = 1 -> Q = 0 y viceversa). Y un transistor amplifica este pulso y activa el LED de la disquetera. Las salidas Q y Q de este flip-flop se conectan a las entradas CE de las ROMs.
Para que el circuito quede listo para un nuevo cambio, la salida Q del 2do monostable se usa para presetear al 1er flip flop. C1 y R5 hacen lo propio con el 2do flip-flop cuando se enciende el circuito, asegurandose de que al encender siempre este seleccionada la misma ROM.
Acá esta el circuito armado en el protoboard y andando, hay más resistencias y condensadores porque entre el tarro de electroliticos que tengo no habia ni un condensador del valor que necesitaba >:(
Puse los comentarios en ingles para los que encuentren el video de casualidad entiendan un poco de que se trata.
Y bueno, con este circuito, los que tengan uno de esos Kickstartswitcher con interruptor mecanico pueden sacarselo y soldar 2 de los 3 cables (el 3ro es masa) a este circuito y evitar agujerear su A500.