Retrokomput på en brikke

Nye elektriske elementer tillater oss å rekonstruere gamle ledninger mye mer effektivt. Spesielt de lett tilgjengelige samt rimelige FPGA-kitene som gir mulighet til å sette sammen ledninger av mange gamle datamaskiner som en “on-a-chip” -løsning.

Da jeg håndterte for å få tak i en gammel boble LED-skjerm, så vel som et ganske mekanisk matrise tastatur, tok jeg en beslutning om å utvikle en kopi av en gammel enkeltbord datamaskin. Rasjonelle valg syntes å være å utvikle enten Kim-1 eller Heathkit ET-3400. Replikaer av Kim-1 eksisterer allerede, selv for Arduino, så min oppgave ville bli minimert for å koble tastaturet og vise. Men da fortalte jeg meg selv at jeg ville bruke sannheten at min boble-skjerm har 9 stillinger som en grunn til å utvikle den legendariske tsjekkoslovakke enkeltbordet PMI-80 som benyttet nøyaktig samme skjerm. Min kopi er en FPGA, eller heller en FPGA-emulator av denne ekstremt datamaskinen.

PMI-80.

Original PMI-80 [Kilde: DLW Blog] Det er mest sannsynlig ikke mange mennesker blant de besøkende i Hackaday som ville forstå denne datamaskinen, som ble gjort på 80-tallet i det tidligere tsjekkoslovakia. Hackaday Editor [Brian Benchoff] kan være den eneste som leser dette som har et slikt eksemplar. Men hvis du har en av dine egne, vil vi også høre om det i kommentarene nedenfor. For de som ikke er kjent, la oss introdusere det først.

PMI-80 er en enkeltbrett institusjon datamaskin basert på en Intel 8080 prosessor. Tatt i betraktning at det ble produsert i åttitallet bak den såkalte jerngardinet, benyttet den tsjekkoslovakiske Tesla-sjetonger i stedet for originale Intel-ene, selv om de var funksjonelt identiske, inkludert nummerering (Intel 8080A hadde en betegnelse MHB8080A, ble PIO 8255A tilbudt som MHB8255A etc.)

Basen består av vanlig “Holy Trinity” ledninger (8080A – 8224 – 8228). På inngangen til harpiks 8224-kretsen var en kondensator, så vel som diode, og tilføyde tilbakestillingen etter å ha blitt slått på. Krystallet hadde 10 MHz, slik at datamaskinen kjørte med en frekvens på 10/9 = 1.111 MHz. Inta Input Circuit 8228 var knyttet til + 12V, som sørget for at i tilfelle en avbruddsforespørsel ble retningen RST 7 utført (dvs. hopp til adressen $ 0038).

Minne ble utviklet fra 1K PROM (8608, 1KX8) samt 1 KB RAM (2x 2114) chips. Prom ble tilbudt på en adresse $ 0000 – $ 03FF, RAM var på $ 1C00 – $ 1FFF. Det var også mulig å legge til ekstra 2708 minne ($ 0400 – $ 07FF) til brettet.

VAD30-skjerm [Bildekilde: Nostalcomp.cz] Datamaskinen inkluderte i tillegg en VQD30-skjerm, produsert i det tidligere Tyskland (Deutsche Demokratische Republik). Dette var en praktisk ekvivalent av skjermbilder NSA1198 eller CQYP95 – 9 syv-segmenterte typiske katodeskjermer. Inngangsdata ble levert av et tastatur som ble utviklet som en 3 × 9 matrise. Begge disse eksterne enheter ble drevet av en krets basert på PIO 8255. Port A Utløp (PA0-PA6) administrerte private segmenter (anoder) med stasjonstransistorene. Laveste fire biter av port C ble dekodet av en krets MH1082 (tilsvarende 74145) til kode 1-fra-9, som ble benyttet for å velge posisjoner, så vel som samtidig aktivere kolonnene på tastaturet. Tastaturlinjer var knyttet til biter PC4-PC6.

Programmene ble holdt på tape på en ekstremt grunnleggende måte, som også var administrert ved hjelp av PIO 8255. Hver oppføring hadde en startbit (1), så den faktiske verdien, så vel som en stoppbit (0). Under opptaket produserte et program en leverandørfrekvenssyklus på 0.2ms på PA6-porten, så vel som stroffet den med PIN-koden Pa7. Under lesing ble info tilbudt på Bit PC7.

Pio 8255 var koblet som en perifer på adresser $ F8- $ FB. Datamaskinstyret aktiverte innføring av en ekstra PIO-krets, som deretter var koblet til adresser $ F4- $ F7, så vel som helt tilbudt til applikasjoner.

Operasjon

Tastaturet var sammensatt av 25 hemmeligheter satt opp i en 5 × 5 matrise. Innvendig var det imidlertid kablet annerledes. To hemmeligheter (re så vel som jeg) har ført direkte til inngangene til prosessoren (reset, henholdsvis int). De forblir hemmelighetene (0-9, A-F, EX, R, BR, M, L, S så vel som =) har blitt kablet i den allerede påpekte 3 × 9 matrisen som vist her.

Etter at du har skrudd den på, sjekket skjermbildet “PMI-80”, så vel som datamaskinen ventet på en hvilken som helst type avgjørende press. Etter det gikk det inn i primærskjermmodus, bestemt av “?” på venstre side av displayet. Deretter ventet datamaskinen på skjermkommandoer.

Overvåk kommandoer

M – Modifikasjon / Se minneinnholdet. Etter at du har trykket på, vises tegnet M til venstre, så vel som datamaskinen venter på adresseoppføring. Hvis du trykker på = Aktiverer datainngangen. Hver gang du trykker på = Adresse-retningslinjene øker med 1. Datainngang er fullført ved å trykke på Secrets Annet enn = så vel som 0-F.

R – View samt modifikasjon Innholdet i registre. Etter at du har trykket på r, vises tegnet “R” til venstre, så vel som datamaskinen venter på et tastetrykk som tilsvarer å registrere par (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Igjen er det mulig å tilpasse dataså vel som bruk = trinn til neste par.

Ex – kjører et program. Datamaskinen venter på en adresse, trykker på = hopper inn i programmet. Programmet kan avsluttes ved å hoppe til adressen 0 eller adressen 8 (tilsvarer hopp til skjermen).

Br – nøyaktig samme som G, men med et bruddpunkt. Svært først har du krav til å gå inn i en adresse hvor programmet må seponeres, så vel som deretter neste startadresse.

L, s – tonn samt lagre data (ikke implementert her)

Jeg – Avbrudd. Utløser avbrudd samt hopp for å adressere $ 0038. Det er bare instruksjon: JMP $ 1FE6. På denne adressen (i RAM) må du først produsere et hopp i din håndteringsrutine.
Tilbakestilles. Under tilbakestillingen er RAM ikke klart, slik at den kan benyttes som et programavbrudd, samt gå tilbake til skjermen.

En skjerm som gir kommentarer, tilbys fra GIT-depotet.

PMI-80 i FPGA

Jeg valgte et lavpris FPGA Dev Kit, EP2C5 / EP2C6 lille bord, som er det samme tilskudd som er brukt for sin multicomp (takk for inspirasjonen!). Den har en Altera Cyclone II-chip som jeg programmerte å bruke VHDL.

Jeg koblet et tastatur som en 5 × 5 matrise, ikke i en original 3 × 9; Omkoding i en type som passer for PMI, blir håndtert inne i FPGA.

Skjermen er koblet til motstander direkte til FPGA, så vel som igjen, all logikk samt remapping i en type som passer for emulering, blir gjort inne i FPGA.

Et grensesnitt for å jobbe med en båndopptaker mangler, jeg utførte ikke dette ennå. Du kan se min nåværende søknad på min Github Repo.

Jeg benyttet en freeware vhdl-applikasjon av 8080 kalt Light8080. Det er ikke “T-perfekt”, men det var ikke nødvendig uansett. Jeg har også brukt en Pia8255-komponent.

Den primære koden er i dataene RMI.VHD, hvor alle “limlogikk” for hver komponent: 8080, 8255, RAM, ROM, tastatur og LED.

Arkivet inkluderer også testelementer som jeg benyttet seg når jeg arbeider med emuleringen, f.eks. En grunnleggende skjerm som viser heksadesimale tall. Å få emuleringen til å fungere ordentlig var noe usikre. Den opprinnelige anvendelsen av 8080-prosessoren behandlet noe ikke-standard timing, som et resultat odde spesifikasjoner dukket opp på bussen, for eksempel, rammen stoppet å gi ut info før prosessoren håndterte for å sjekke ut det osv. Et par ting hjalp meg:

Test ROM med en grunnkode

Clock Generator med en frekvens på ca 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.

Resources

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 *