Retrocomputer sur une puce

author
7 minutes, 43 seconds Read

Les nouveaux éléments électriques nous permettent de reconstruire un ancien câblage beaucoup plus efficacement. En particulier, les kits FPGA facilement accessibles ainsi que abordables, qui offrent la possibilité de mettre en place un câblage de nombreux anciens ordinateurs comme une solution «sur la puce».

Lorsque j’ai manipulé pour obtenir une prise d’un ancien écran à LED de bulles ainsi qu’un clavier matrice assez mécanique, j’ai décidé de développer une réplique d’un ancien ordinateur de conseil unique. Les choix rationnels semblaient être de développer Kim-1 ou Heathkit et-3400. Les répliques de Kim-1 existent déjà, même pour Arduino, mon tâche serait donc minimisée pour relier le clavier ainsi que l’affichage. Cependant, alors je me suis dit que j’utiliserais la vérité que mon écran à bulles a 9 positions pour développer le légendaire PMI-80 de la carte unique tchécoslovaque qui utilisait exactement le même affichage. Ma réplique est une FPGA, ou plutôt un émulateur FPGA de cet extrêmement ordinateur.

PMI-80

PMI-80 original [Source: Le blog de DLW] Il n’y a probablement pas beaucoup de gens parmi les visiteurs de Hackaday qui comprendraient cet ordinateur, qui a été fabriqué dans les années 80 dans l’ancienne Tchécoslovaquie. Editeur Hackaday [Brian Benchoff] peut être le seul à lire ceci qui a un tel spécimen. Cependant, si vous avez l’une de vos propres que nous aimerions en entendre parler dans les commentaires ci-dessous. Pour ceux qui ne sont pas bien familiers, présentons-le en premier.

PMI-80 est un ordinateur d’établissement unique basé sur un processeur Intel 8080. Considérant que cela a été produit dans les années quatre-vingt derrière le rideau de fer, il utilisait des chips Tesla tchécoslovakiens au lieu d’original Intel, bien qu’ils soient fonctionnellement identiques, y compris la numérotation (Intel 8080a avait une désignation MHB8080A, PIO 8255A a été offerte comme MHB8255A. etc.)

La base consiste en un câblage commun “Sainte Trinité” (8080A – 8224 – 8228). Sur l’entrée du circuit de résine 8224, c’était un condensateur ainsi que la diode, l’alimentation de la réinitialisation après la mise sous tension. Le cristal avait 10 MHz, l’ordinateur fonctionnait donc à une fréquence de 10/9 = 1,111 MHz. Le circuit d’entrée INTA 8228 a été lié à + 12V, qui s’est assuré qu’en cas de demande d’interruption, la direction 7 de 7 a été effectuée (c’est-à-dire passer à l’adresse 0038 $).

La mémoire a été développée à partir de 1k PROM (8608, 1kx8) ainsi que de 1 kb de chips (2x 2114). Le bal a été offert lors d’une adresse 0000 $ – 03ff, RAM était à 1 C00 $ – 1 FAXFF. Il était même possible d’ajouter une mémoire supplémentaire 2708 (0400 $ – 0700 $) au tableau.

Écran VAD30 [Source de l’image: NostalComp.Cz] L’ordinateur comprenait en outre un affichage VQD30, produit dans l’ancienne Allemagne (Deutsche Demokratische Republik). C’était un équivalent pratique des écrans NSA1198 ou CQYP95 – 9 écrans de cathode typiques à sept segments. Les données d’entrée ont été fournies par un clavier développé comme matrice 3 × 9. Ces deux périphériques ont été entraînés par un circuit basé sur le PIO 8255. PORT A PORETS (PA0-PA6) Des segments privés gérés (anodes) avec les transistors de lecteur. Les quatre bits de port C ont été décodés par un circuit MH1082 (équivalent à 74145) pour coder 1-de-9, qui a été utilisé pour choisir des positions, ainsi que l’activation simultanée des colonnes du clavier. Les lignes de clavier étaient liées aux bits PC4-PC6.

Les programmes ont été conservés sur bande de manière extrêmement fondamentale, qui a également été gérée à l’aide du PIO 8255. Chaque entrée avait un bit de départ (1), puis la valeur réelle, ainsi qu’un bit d’arrêt (0). Lors de l’enregistrement d’un programme produit un cycle de fréquence de fournisseur de 0,2 ms sur le port PA6 et le surgit avec la broche PA7. Pendant la lecture, les informations ont été offertes à Bit PC7.

PIO 8255 était lié comme un périphérique aux adresses de F8- $ FB. La carte informatique permettait d’insertion d’un circuit PIO de plus, qui a ensuite été liée à des adresses F4- $ F7 ainsi que complètement proposée aux applications.

Opération

Le clavier a été composé de 25 secrets mis en place dans une matrice 5 × 5. À l’intérieur, cependant, il a été câblé différemment. Deux secrets (RE ainsi que i) ont conduit directement aux entrées du processeur (réinitialisation, respectivement int). Les secrets restants (0-9, A-F, EX, R, BR, M, L, S ainsi que =) ont été câblés dans la matrice de 3 × 9 déjà indiquée, comme indiqué ici.

Après l’allumage, l’écran d’écran vérifiée «PMI-80» ainsi que l’ordinateur attendu à tout type de presse cruciale. Après cela, il est allé en mode écran primaire, déterminé par “?” sur le côté gauche de l’écran. Ensuite, l’ordinateur a attendu des commandes d’écran.

Commandes de surveillance

M – Modification / Afficher le contenu de la mémoire. Après avoir appuyé sur M, le personnage M apparaît à gauche ainsi que l’ordinateur attend la saisie de l’adresse. Appuyez sur = active la saisie des données. Chaque fois que vous appuyez sur = la ligne directrice d’adresses boosts par 1. L’entrée des données est complétée en appuyant sur les secrets autres que = ainsi que 0-f.

R – Voir ainsi que modifier le contenu des registres. Après avoir appuyé sur R, le caractère “R” apparaît sur la gauche ainsi que l’ordinateur attend une touche de frappe qui correspond à une paire d’enregistrement (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Encore une fois, il est possible de personnaliser les donnéesas 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.

Ressources

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

Similar Posts

Leave a Reply

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