RetroComputing en un chip

RetroComputing en un chip

Los nuevos elementos eléctricos nos permiten reconstruir un cableado antiguo mucho de manera más eficiente. Especialmente, los kits de FPGA fácilmente accesibles y asequibles que ofrecen la posibilidad de armar el cableado de lotes de computadoras antiguas como una solución de “ON-A-Chip”.

Cuando manejé para obtener un control de una pantalla LED de burbujas antigua, así como un teclado de matriz bastante mecánico, tomé la decisión de desarrollar una réplica de una antigua computadora de una sola placa. Las opciones racionales parecían ser desarrollar cualquiera de los KIM-1 o Heathkit ET-3400. Las réplicas de KIM-1 ya existen, incluso para Arduino, por lo que mi tarea se minimizaría para vincular el teclado, así como la pantalla. Sin embargo, luego me dije a mí mismo que usaría la verdad de que mi pantalla de burbujas tiene 9 posiciones como una razón para desarrollar la legendaria computadora de la placa de una sola placa checoslovak PMI-80 que utilizó exactamente la misma pantalla. Mi réplica es un FPGA, o más bien un emulador de FPGA de esta extremadamente computadora.

PMI-80

PMI-80 original [Fuente: DLW BLOG] Lo más probable es que no haya mucha gente entre los visitantes de Hackaday que entenderían esta computadora, que se realizó en los años 80 en la antigua Checoslovaquia. El editor de Hackaday [Brian Benchoff] puede ser el único que lee esto que tiene un espécimen de este tipo. Sin embargo, si tiene uno de los suyos, nos gustaría saberlo también en los comentarios a continuación. Para aquellos que no están bien familiar, lo presenten primero.

PMI-80 es una computadora de una sola placa que se basa en un procesador Intel 8080. Teniendo en cuenta que se produjo en los años ochenta detrás de la llamada cortina de hierro, utilizó chips de Tesla checoslovaquianos en lugar de Intel Original Intel, aunque eran funcionalmente idénticos, incluidos la numeración (Intel 8080A tuvo una designación MHB8080A, PIO 8255A se ofreció como MHB8255A etc.)

La base consiste en el cableado “Santa Trinidad” común (8080A – 8224 – 8228). En la entrada del circuito de resina 8224, fue un capacitor, así como un diodo, que suministra restablecimiento después de encenderlo. El cristal tenía 10 MHz, por lo que la computadora se estaba ejecutando a una frecuencia de 10/9 = 1.111 MHz. El circuito de entrada INTA 8228 se vinculó a + 12V, que se aseguró de que en el caso de una solicitud de interrupción, se realizó la dirección RST 7 (I.E. Saltar a la dirección $ 0038).

La memoria se desarrolló a partir de 1K PROM (8608, 1KX8), así como 1 KB RAM (2x 2114) Fichas. Se ofreció PROM en una dirección de $ 0000 – $ 03FF, RAM fue de $ 1C00 – $ 1FFF. Incluso fue posible agregar 2708 memoria adicional ($ 0400 – $ 07FF) a la placa.

VAD30 PANTALLA [Fuente de imagen: NOSTALCOMP.CZ] La computadora también incluyó una pantalla VQD30, producida en la antigua Alemania (Deutsche Demokratische Republik). Este fue un equivalente práctico de las pantallas NSA1198 o CQYP95 – 9 pantallas de cátodos típicos de siete segmentados. Los datos de entrada fueron suministrados por un teclado que se desarrolló como una matriz de 3 × 9. Ambos de estos periféricos fueron impulsados ​​por un circuito basado en el PIO 8255. Puerto A Ourletes (PA0-PA6) Se administraron segmentos privados (ánodos) con los transistores de la unidad. Los cuatro bits más bajos del puerto C fueron decodificados por un circuito MH1082 (equivalente a 74145) al código 1-desde-9, que se utilizó para elegir posiciones, así como la activación simultánea de las columnas del teclado. Las líneas de teclado estaban vinculadas a bits PC4-PC6.

Los programas se mantuvieron en cinta de una manera extremadamente básica, lo que también se manejaba por medio del PIO 8255. Cada entrada tenía un bit de inicio (1), luego el valor real, así como un bit de parada (0). Durante la grabación, un programa produjo un ciclo de frecuencia del proveedor de 0.2ms en el puerto PA6, así como también lo estrobajo con el PIN PA7. Durante la lectura, se ofreció la información en BIT PC7.

PIO 8255 se vinculó como un periférico en las direcciones $ F8- $ FB. La placa de la computadora permitió la inserción de un circuito PIO más, que luego se vinculó a las direcciones $ F4- $ F7, así como se ofreció completamente a las aplicaciones.

Operación

El teclado estaba compuesto por 25 secretos configurados en una matriz de 5 × 5. En el interior, sin embargo, fue cableado de manera diferente. Dos secretos (s, así como i) han llevado directamente a las entradas del procesador (reinicio, respectivamente int). Los secretos de estadía (0-9, A-F, EX, R, BR, M, L, S, así como =) se han conectado en la matriz de 3 × 9, que se muestran aquí.

Después de encenderlo, la pantalla de la pantalla revisó “PMI-80”, así como la computadora esperó cualquier tipo de prensa crucial. Después de eso se fue al modo de pantalla primaria, determinado por “?” en el lado izquierdo de la pantalla. Luego la computadora esperó a los comandos de pantalla.

Comandos de monitor

M – Modificación / Ver el contenido de la memoria. Después de presionar m, el Carácter M aparece en la izquierda, así como la computadora espera la entrada de la dirección. Presionando = Activa la entrada de datos. Cada vez que presiona = la directriz de dirección aumenta por 1. La entrada de datos se completa presionando secretos que no sean =, así como 0-F.

R – Vista, así como la modificación de los contenidos de los registros. Después de presionar R, el carácter “R” aparece en la izquierda, así como la computadora, espera una pulsación de tecla que corresponde a un par de registrarse (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Nuevamente, es posible personalizar los datos.as well as utilize = step to the next pair.

Ex – runs a program. computer waits for an address, pressing = jumps into the program. The program can be terminated by jumping to the address 0 or address 8 (corresponds to jump to the monitor).

BR – exact same as G, however with a breakpoint. very first you requirement to go into an address at which the program must be discontinued, as well as then the next starting address.

L, S – tons as well as save data (not implemented here)

I – Interruption. triggers interruption as well as jumps to address $0038. There is only instruction: JMP $1FE6. At this address (in RAM), you need to very first produce a jump into your handler routine.
RE – Reset. during reset the RAM does not clear, so it can be utilized as a program interruption as well as return to the monitor.

A screen providing with comments is offered from the Git repository.

PMI-80 in FPGA

I selected an low-cost FPGA dev kit, EP2C5/EP2C6 tiny Board, which is the same one grant Searle utilized for his Multicomp (Thanks for the inspiration!). It has an Altera Cyclone II chip which I programmed utilizing VHDL.

I linked a keyboard as a 5×5 matrix, not in an original 3×9; recoding into a type appropriate for the PMI is being handled inside the FPGA.

The screen is linked with resistors directly to the FPGA, as well as again, all logic as well as remapping into a type appropriate for emulation is being done inside the FPGA.

An interface for working with a tape recorder is missing, I did not carry out this yet. You can see my present application at my Github repo.

I utilized a freeware VHDL application of the 8080 called Light8080. It is not “T-perfect”, however that was not needed anyway. I have likewise utilized a pia8255 component.

The primary code is in the data rmi.vhd, where all the “glue logic” for every component: 8080, 8255, RAM, ROM, keyboard as well as LED.

The archive likewise includes test elements that I utilized when working on the emulation, eg. a basic screen showing hexadecimal numbers. getting the emulation to work properly was somewhat precarious. The original application of the 8080 processor dealt with somewhat non-standard timing, as a result odd specifies appeared on the bus, for example, RAM stopped providing out info before the processor handled to checked out it, etc. A few things assisted me:

Test ROM with a basic code

Clock generator with a frequency of about 1 Hz

Hexadecimal screen (component immediately refreshes the screen content, I brought data into the input directly from data or address bus)

Altera Probe – online logic probe linked to a circuit, it transmits data over a JTAG interface to the Quartus IDE.

Building the hardware as well as composing the emulator was a weekend of work as well as it’s still a “version 0.1”. In the future I would like to prolong the system to emulate other single-board computers (KIM, ET, maybe COSMAC ELF) as well as emulate the tape, maybe as RS-232 interface. Take a look at the quick video demo. inspect out the resources below, as well as leave a comment if you’re thinking about a lot more retro-computing on a chip projects.

Recursos

Source codes: https://github.com/maly/fpmi

PMI-80 description in slovak:

http://www.nostalcomp.cz/pdfka/pmi80_popis.pdf

Click to gain access to pmi80_doplnky.pdf

Click to gain access to pmi_prirucka1.pdf

http://www.nostalcomp.cz/pdfka/pmi_prirucka2.pdf

Leave a Reply

Your email address will not be published. Required fields are marked *