νέα ηλεκτρικά στοιχεία μας επιτρέπουν να ανακατασκευάσουμε την παλιά καλωδίωση πολύ πιο αποτελεσματικά. Ειδικά, τα εύκολα προσβάσιμα καθώς και προσιτά κιτ FPGA που προσφέρουν τη δυνατότητα να συγκεντρώσουν την καλωδίωση πολλών παλιών υπολογιστών ως λύση “on-a-chip”.
Όταν έχω χειριστεί για να πάρω μια παλιά οθόνη LED Bubble, καθώς και ένα αρκετά μηχανικό πληκτρολόγιο μήτρας, έκανα μια απόφαση να αναπτύξω ένα αντίγραφο ενός παλιού υπολογιστή. Οι ορθολογικές επιλογές φαινόταν να είναι να αναπτυχθούν είτε Kim-1 είτε heathkit et-3400. Το αντίγραφο του Kim-1 υπάρχει ήδη, ακόμη και για το Arduino, οπότε ο στόχος μου θα ελαχιστοποιηθεί για να συνδεθεί το πληκτρολόγιο καθώς και την απεικόνιση. Ωστόσο, τότε είπα τον εαυτό μου ότι θα χρησιμοποιούσα την αλήθεια ότι η οθόνη μου Bubble έχει 9 θέσεις ως λόγος να αναπτύξει το θρυλικό Czechoslovak Single Board Computer PMI-80 που χρησιμοποίησε την ίδια ακριβώς οθόνη. Το αντίγραφο μου είναι ένα FPGA, ή μάλλον ένας εξομοιωτής FPGA αυτού του εξαιρετικά υπολογιστή.
PMI-80
Πρωτότυπο PMI-80 [Πηγή: DLW Blog] Υπάρχει πιθανότατα ότι δεν υπάρχουν πολλοί άνθρωποι μεταξύ των επισκεπτών του Hackaday που θα κατανοήσουν αυτόν τον υπολογιστή, το οποίο έγινε στη δεκαετία του ’80 στην πρώην Τσεχοσλοβακία. Ο επεξεργαστής Hackaday [Brian Bendoff] μπορεί να είναι η μόνη που διαβάζει αυτό που έχει ένα τέτοιο δείγμα. Ωστόσο, αν έχετε ένα από τα δικά σας, θα θέλαμε επίσης να ακούσετε σχετικά με τα παρακάτω σχόλια. Για όσους δεν είναι εξοικειωμένοι, ας το εισαγάγει πρώτα.
Το PMI-80 είναι ένας υπολογιστής ιδρύματος ενός πίνακα με βάση έναν επεξεργαστή Intel 8080. Λαμβάνοντας υπόψη ότι παρήχθη στη δεκαετία του ογδόντα πίσω από τη λεγόμενη σιδερένια κουρτίνα, χρησιμοποίησε τα τσιπ της Τσεχοσλοβακίας Tesla αντί των αρχικών Intel, αν και ήταν λειτουργικά πανομοιότυπες, συμπεριλαμβανομένης της αρίθμησης (Intel 8080a είχε μια ονομασία MHB8080A, το PIO 8255A προσφέρθηκε ως MHB8255A και τα λοιπά.)
Η βάση αποτελείται από κοινή καλωδίωση “Αγίας Τριάδας” (8080Α – 8224 – 8228). Στην είσοδο του κυκλώματος ρητίνης 8224 ήταν ένας πυκνωτής καθώς και η δίοδος, η παροχή επαναφοράς αφού ενεργοποιηθεί. Ο κρύσταλλος είχε 10 MHz, οπότε ο υπολογιστής τρέχει σε συχνότητα 10/9 = 1,111 MHz. Το κύκλωμα εισόδου INTA 8228 συνδέθηκε με + 12V, το οποίο βεβαιώθηκε ότι σε περίπτωση αίτησης διακοπής, η κατεύθυνση του RST 7 διεξήχθη (δηλ. Μετάβαση στη διεύθυνση $ 0038).
Η μνήμη αναπτύχθηκε από 1k Prom (8608, 1KX8) καθώς και 1 KB RAM (2x 2114) μάρκες. Το Prom προσφέρθηκε σε μια διεύθυνση $ 0000 – $ 03ff, η Ram ήταν στα $ 1C00 – $ 1fff. Ήταν ακόμη δυνατό να προσθέσετε επιπλέον μνήμη 2708 ($ 0400 – $ 07ff) προς το διοικητικό συμβούλιο.
Οθόνη VAD30 [Πηγή εικόνας: NostalComp.cz] Ο υπολογιστής περιλαμβάνει επιπλέον μια οθόνη VQD30, που παράγεται στην πρώην Γερμανία (Deutsche Demokratische Republic). Αυτό ήταν ένα πρακτικό ισοδύναμο των οθονών NSA1198 ή CQYP95 – 9 επτά κατακερματισμένες τυπικές εμφανίσεις καθόδου. Τα δεδομένα εισόδου παρέχονται από ένα πληκτρολόγιο το οποίο αναπτύχθηκε ως μήτρα 3 × 9. Και τα δύο αυτά περιφερειακά οδηγήθηκαν από ένα κύκλωμα με βάση το PIO 8255. Θύρα Μια πρίζες (PA0-PA6) που διαχειρίζονται ιδιωτικά τμήματα (ανόδους) με τα τρανζίστορ κίνησης. Τα χαμηλότερα τέσσερα δυαδικά ψηφία C αποκωδικοποιήθηκαν από ένα κύκλωμα MH1082 (ισοδύναμο με 74145) στον κωδικό 1-από 9, το οποίο χρησιμοποιήθηκε για να επιλέξει θέσεις, καθώς και ταυτόχρονα ενεργοποίηση των στηλών του πληκτρολογίου. Οι γραμμές πληκτρολογίου συνδέθηκαν με τα bit pc4-pc6.
Τα προγράμματα διατηρήθηκαν σε ταινία με εξαιρετικά βασικό τρόπο, το οποίο διαχειρίζεται επίσης μέσω του PIO 8255. Κάθε είσοδος είχε ένα bit έναρξης (1), τότε η πραγματική τιμή, καθώς και ένα κομμάτι διακοπής (0). Κατά τη διάρκεια της καταγραφής ενός προγράμματος παρήγαγε έναν κύκλο συχνότητας πάροχου 0,2ms στη θύρα PA6 καθώς και το ratobed με το PIN PA7. Κατά τη διάρκεια της ανάγνωσης, οι πληροφορίες προσφέρθηκαν στο Bit PC7.
Το PIO 8255 συνδέθηκε ως περιφερειακό στις διευθύνσεις $ F8- $ FB. Η πλακέτα υπολογιστή επέτρεψε την εισαγωγή ενός ακόμη κύκλου PIO, το οποίο στη συνέχεια συνδέθηκε με τις διευθύνσεις $ F4- $ F7 καθώς και πλήρως προσφέρεται σε εφαρμογές.
Λειτουργία
Το πληκτρολόγιο αποτελείται από 25 μυστικά που ρυθμίστηκαν σε μια μήτρα 5 × 5. Μέσα, ωστόσο, ήταν ενσύρματα διαφορετικά. Δύο μυστικά (re καθώς και i) έχουν οδηγήσει απευθείας στις εισόδους του επεξεργαστή (επαναφορά, αντίστοιχα int). Τα μυστικά παραμονής (0-9, α-f, ex, r, br, m, l, s καθώς και =) έχουν ενσύρματη στην ήδη επεσήμανε 3 × 9 μήτρα όπως φαίνεται εδώ.
Αφού το ενεργοποιήσετε, η οθόνη οθόνης ελέγχεται “PMI-80” καθώς και ο υπολογιστής περίμενε για οποιονδήποτε τύπο κρίσιμου τύπου. Μετά από αυτό πήγε στην κύρια οθόνη, που καθορίζεται από το “?” στην αριστερή πλευρά της οθόνης. Στη συνέχεια, ο υπολογιστής περίμενε για εντολές οθόνης.
Παρακολούθηση εντολών
M – Τροποποίηση / Προβολή της περιεκτικότητας μνήμης. Αφού πιέσετε το M, ο χαρακτήρας M εμφανίζεται στην αριστερή πλευρά καθώς και ο υπολογιστής περιμένει την καταχώρηση διευθύνσεων. Πατώντας = ενεργοποιεί την καταχώρηση δεδομένων. Κάθε φορά που πιέζετε = η κατευθυντήρια γραμμή διεύθυνσης ενισχύει με 1. Η είσοδος δεδομένων ολοκληρώνεται πατώντας τα μυστικά άλλα από = καθώς και 0-f.
R – Δείτε καθώς και την τροποποίηση των περιεχομένων των μητρώων. Αφού πιέζετε r, ο χαρακτήρας “R” εμφανίζεται στην αριστερή πλευρά καθώς και στον υπολογιστή περιμένει για μια πληκτρολόγηση που αντιστοιχεί σε ζεύγος μητρώου (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Και πάλι, είναι δυνατή η προσαρμογή των δεδομένων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.
Πόροι
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