Retrocomputing på ett chip

Nya elektriska element gör det möjligt för oss att rekonstruera gamla ledningar mycket mer effektivt. Speciellt är de lättillgängliga och prisvärda FPGA-kit som erbjuder möjlighet att sätta ihop ledningar av massor av gamla datorer som en “on-a-chip” -lösning.

När jag hanterade för att få tag på en gammal bubbla-leddskärm såväl som ett ganska mekaniskt matris-tangentbord fattade jag ett beslut att utveckla en kopia av en gammal enstaka styrdator. Rationella val tycktes vara att utveckla antingen Kim-1 eller Heathkit ET-3400. Replicas av Kim-1 finns redan, även för Arduino, så min uppgift skulle minimeras för att länka tangentbordet såväl som displayen. Men då berättade jag för mig själv att jag skulle använda sanningen att min bubbla skärm har 9 positioner som en anledning att utveckla den legendariska Tjeckoslovakiska singelbrädan PMI-80 som utnyttjade exakt samma display. Min replika är en FPGA, eller snarare en FPGA-emulator av denna extremt dator.

PMI-80

Original PMI-80 [Källa: DLW-blogg] Det är sannolikt inte många människor bland besökarna av Hackaday som skulle förstå den här datorn, som gjordes på 80-talet i den tidigare Tjeckoslovakien. Hackaday Editor [Brian Benchoff] kan vara den enda som läser detta som har ett sådant prov. Men om du har en av dina egna, skulle vi också höra om det i kommentarerna nedan. För de som inte är riktiga bekanta, låt oss presentera det först.

PMI-80 är en dator för en enda styrelse baserad på en Intel 8080-processor. Med tanke på att den producerades i åttiotalet bakom den så kallade järnridån, använde den tjeckoslovakiska Tesla-chips istället för originalintellen, även om de var funktionellt identiska, inklusive numreringen (Intel 8080A hade en beteckning MHB8080A, erbjöds PIO 8255A som MHB8255A etc.)

Basen består av gemensam “helig treenighet” -band (8080A – 8224 – 8228). På ingången av harts 8224 var kretsen en kondensator såväl som diod, vilket gav återställning efter att ha dragits på. Kristallen hade 10 MHz, så datorn körde med en frekvens av 10/9 = 1,111 MHz. Inmatningskretsen 8228 var kopplad till + 12V, vilket var säker på att i händelse av en avbrottsförfrågan utfördes riktningen 7 (dvs hoppa till adressen $ 0038).

Minne utvecklades från 1K PROM (8608, 1KX8) samt 1 KB RAM (2x 2114) chips. Prom erbjöds på en adress $ 0000 – $ 03FF, RAM var på $ 1C00 – $ 1FFF. Det var även möjligt att lägga till extra 2708 minne ($ 0400 – $ 07FF) till styrelsen.

VAD30-skärm [Bildkälla: Nostalcomp.cz] Datorn inkluderade dessutom en VQD30-skärm, som producerades i det tidigare Tyskland (Deutsche Demokratische Republik). Detta var en praktisk ekvivalent av skärmar NSA1198 eller CQYP95 – 9 sju segmenterade typiska katoddisplayer. Inmatningsdata levererades av ett tangentbord som utvecklades som en 3 × 9 matris. Båda dessa kringutrustning drivs av en krets baserad på PIO 8255. Port A Outlets (PA0-PA6) hanterade privata segment (anoder) med drivransistorerna. Lägsta fyra bitar av port C avkodades av en krets MH1082 (ekvivalent med 74145) för kod 1-från-9, som användes för att välja positioner, såväl som samtidigt aktivera tangentbordets kolumner. Tangentbordslinjer var kopplade till bitar PC4-PC6.

Programmen hölls på tejp på ett extremt grundläggande sätt, vilket också hanterades med hjälp av PIO 8255. Varje post hade en startbit (1), då det verkliga värdet, såväl som en stoppbit (0). Under inspelning gav ett program en leverantörsfrekvenscykel på 0,2ms på PA6-porten såväl som strobed den med stiftet PA7. Under läsningen erbjöds informationen på bit PC7.

Pio 8255 var kopplad som en perifer vid adresser $ F8- $ FB. Datorkortet aktiverade införandet av en ytterligare PIO-krets, som sedan kopplades till adresser $ F4- $ F7 samt helt erbjuds till applikationer.

Drift

Tangentbordet bestod av 25 hemligheter som är inrättade i en 5 × 5 matris. Inuti var det dock trådlöst annorlunda. Två hemligheter (RE såväl som i) har lett direkt till processorns ingångar (återställ, respektive int). De vistelsehemligheter (0-9, A-F, ex, R, Br, M, L, S och =) har anslutits i den redan påpekade 3 × 9 matrisen som visas här.

Efter att ha stängt den, kontrolleras skärmbilden “PMI-80” samt dator väntade på vilken typ av avgörande press. Därefter gick det i primärskärmsläge, bestämd av “?” på vänster sida av displayen. Då väntade datorn på skärmkommandon.

Övervaka kommandon

M – Ändring / Visa minnesinnehållet. Efter att ha tryckt på M visas tecknet M till vänster och dator väntar på adressinmatning. Tryck på = aktiverar datainmatningen. Varje gång du trycker på = Adress riktlinjen ökar med 1. Dataingången är klar genom att trycka på andra än = såväl som 0-f.

R-visa samt ändring av innehållet i register. Efter att ha tryckt på är karaktären “R” till vänster och datorn väntar på en tangenttryck som motsvarar registreringsparet (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Återigen är det möjligt att anpassa dataas 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.

Resurser

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 *