Use Arduino para recrear un decodificador de teclado de computadora

[Max Breedon] Encontré un viejo clon de Apple IIe hace veinte años. Acababa de desenterrar esta Epson AP-200 de la pila de recuperación y rápidamente descubrió que el chip de descifrado del teclado se había estropeado. El chip antiguo era demasiado confuso para reemplazarlo, y pronto esta publicación será el resultado principal de Google para la cadena, "C35224E", por lo que rompió su UNO de confianza y creó un decodificador de teclado de reemplazo.

A diferencia del Apple II, donde toda la decodificación del teclado tiene lugar en el teclado, este clon utilizó un chip especial en la placa principal. Aunque es una parte rara y casi indiscutible, la arquitectura de ar y la conexión de este chip se descubre probando cada rastro de continuidad. Después de lucir como cuatro pines de datos, ordenó al Arduino que enviara señales al clon para ver qué señales aparecían. Eso no funcionó, pero lo llevó a la idea de que dos de los cables son el reloj y los datos, y después de experimentar un poco, descubrió que el tercer pin es una especie de habilitador local que envió al personaje.

Hacer, [Max] creó una plataforma Arduino para hacer lo mismo. El Arduino usa un registro de desplazamiento para interactuar con la matriz de 8 × 10 del teclado, y el boceto traduce cualquier dato en serie que recibe a las pulsaciones de teclas que espera el clon. Después de crear un prototipo con UNO, [Max] conecté un Arduino Nano (así como el interruptor de registro) a una placa secundaria con pines que se extienden hacia los enchufes del chip antiguo. ¡Una solución constante!

Además de un controlador de teclado extraño perdido con el tiempo, este clon de Apple IIe tiene algunas partes adicionales que son completamente extrañas. Hay dos chips que se encuentran en varios otros clones de Apple etiquetados como STK 65301 y STK 65371, utilizados como expresión ASIC, MMU o 20-IC del brillo wozziano condensado en silicio personalizado. Hay otro chip extraño en este clon, ROM 27c32 cargado con bits repetidos. No hay un código obvio o una cadena 6502 en esta ROM, así que si alguien tiene una idea de lo que hace este chip, envíe [Max] conocido.

  • Bill Sussman dice:

    La ROM con bits repetidos podría ser un PLD humano deficiente. Podría hacer decodificación de direcciones o algo así.

    • Olsen dice:

      Wikipedia menciona algo así en PLD, un truco de proyecto que tengo que recordar.
      https://en.m.wikipedia.org/wiki/Programmable_logic_device

    • Factura dice:

      Ese era mi pensamiento también. Hice cosas similares en el momento en que se diseñó esta máquina.

  • Conocido dice:

    Mi uso favorito de la eprom “back day” era convertir EBCDIC a ASCII o viceversa, alimentar la línea de dirección ASCII para generar bits de datos EBCDEC.

    Mi dinero es para un generador de caracteres: inserte ASCII en las líneas de dirección A3 a A10 y se puede acceder a los patrones de bits para cada una de las 8 líneas del carácter iterando a través de las 8 opciones de A0-A2.

    • Bill Sussman dice:

      Oh, sí, esto tiene más sentido. Incluso dice que es una de las dos ROM a bordo. debe ser CGROM.

  • Olsen dice:

    Mmm. ¿Soy solo yo o el hecho de que lo extraño aparezca tres veces en el párrafo final sea un poco más extraño?

    • Elliot Williams dice:

      Es más extraño.

    • Dave Davidson dice:

      no, si te refieres a extraños, todos son del mismo tamaño que extraños.

  • Sidra de pera dice:

    32 Kbits es suficiente para almacenar un juego de caracteres de 8 × 16. El 2732 es probablemente un generador de caracteres ROM.

    • David Kuder dice:

      De hecho, un juego de caracteres de 7 × 8. Ya sea Normal e Inversa o Superior e Inferior. El Apple II / II + usó una rom de 32 kbit y almacenó 4 copias de la fuente, agregando un juego de caracteres intermitentes usando el octavo bit de cada fila. El IIc cambió esto a mayúsculas y minúsculas y MouseText.

  • jpa dice:

    Hmm, 74HC595 tiene salidas push-pull. ¿No significa eso que cuando presiona 3 teclas al mismo tiempo, podría provocar un cortocircuito en dos líneas y hacer que fluya mucha corriente VCC -> GND a través de las teclas?

    • Max dice:

      Creo que tiene razón: si dos teclas en la misma columna se mantuvieran presionadas al mismo tiempo, ese máximo en el escaneo de 595 filas se restablecería a la salida baja de una fila baja de 595.

      Me preocuparé por eso en 20 años cuando lo vuelva a sacar del ático.

  • Freidoun dice:

    ¿Cómo califica esta computadora como un clon de Apple? Diferentes hardware, firmware, sistema operativo, etc. ¿Qué se copió?

    • DainBramage dice:

      Probablemente la compatibilidad de software, que era algo realmente importante en ese entonces.

    • David Kuder dice:

      Grandes porcentajes de roms de Apple II fueron copiados en masa por clones de la época. Varios clones de Apple II cambiaron solo el "Apple][” greeting. This is what led to the Macintosh easter egg where you could hit the programmer’s switch and call a routine to draw the pirate mac icon. Jobs wanted to be able to pull a clone maker into court and very dramatically pull up the pirate mac icon to say “SEE! They STOLE from us!”

  • dtremit says:

    The computer isn’t an Epson AP-200; the Epson AP-200 is just the disk drive connected to it.

    • richfiles says:

      Yeah… I’m kinda curious what KIND of Apple II clone this is.

      • bhtooefr says:

        It’s a generic Taiwanese Apple //e clone, they were made under a bunch of different names, with that board design. I’ve got one that’s branded as a “Hacker //e”.

        The STK chips aren’t just functional clones of the IOU and MMU – they’re actually ghost-shift versions of the NTSC version of the Apple IOU and MMU, so you could replace them with genuine Apple parts.

  • kris says:

    (Fun fact, I have one of these same clones, although the case is slightly different and looks like some minor chip differences on the motherboard)

    That mystery ROM is definitely the character generator. Each character is an 8×8 binary representation and there are 256 of them. I don’t know what the remainder of the ROM contains though (might be junk). Quick python script to visualize it (see Max’s page for the ROM dump)

    import sys

    with open(sys.argv[1], "R") como f:
    línea = 0
    char_num = 0
    por c en f.read ():
    si la línea% 8 == 0:
    presi
    presione "Carácter% d"% char_num
    char_num + = 1

    línea + = 1
    b = "{0: 08b}". formato (ord (c))
    s = ""
    para c en invertido (b):
    s + = '#' si c == '1' otro ''
    presi s

Maya Lorenzo
Maya Lorenzo

Deja una respuesta

Tu dirección de correo electrónico no será publicada.