Bir çip üzerinde retrocomputing

Yeni elektrikli elemanlar, eski kabloları daha verimli bir şekilde yeniden yapılandırmamızı sağlar. Özellikle, bir sürü eski bilgisayarın bir araya getirilmesi imkanı sunan uygun fiyatlı FPGA kitlerinin yanı sıra “bir çip” çözümü olarak bir araya getirme imkanı sunar.

Eski bir kabarcığı LED ekranını ve oldukça mekanik bir matris klavyesini ele geçirmeyi iddia ettiğimde, eski bir tek pano bilgisayarın bir kopyasını geliştirmeye karar verdim. Rasyonel seçimlerin KIM-1 veya Heathkit ET-3400’ü geliştirmek için gibiydi. KIM-1’in kopyaları zaten Arduino için bile var, bu yüzden görevim klavyeyi yanı sıra ekrana bağlamak için en aza indirilecektir. Ancak, kendime, kabarcık ekranımın, aynı ekranı kullanan efsanevi Çekoslovak Tek Kurulu Bilgisayar PMI-80’i geliştirmenin bir nedeni olarak 9 pozisyonu olduğu gerçeğini kullanacağımı söyledim. Çoğaltım bir FPGA ya da bunun için bu son derece bilgisayarın bir FPGA emülatörüdür.

PMI-80

Orijinal PMI-80 [Kaynak: DLW Blog] Büyük olasılıkla, bu bilgisayarı eski Çekoslovakya’daki 80’lerde yapılan bu bilgisayarı anlayan HackaDay ziyaretçileri arasında çok fazla insan yoktur. HASTADAY Editor [Brian Benchoff], böyle bir örneğe sahip olan tek kişi bu olabilir. Bununla birlikte, kendinizden birine sahipseniz, aşağıdaki yorumlarda bunu da duyduğumuz için. Tanıdık olmayanlar için ilk önce tanıtalım.

PMI-80, Intel 8080 işlemcisine dayanan tek bir kurulu kurum bilgisayarıdır. Demir perdesinin arkasındaki seksenlerde üretildiği göz önüne alındığında, orijinal Intel’ler yerine Çekoslovakça Tesla Chips’i kullanırlar, ancak numaralandırma da dahil olmak üzere işlevsel olarak aynı olmalarına rağmen (Intel 8080a, MHB8080A, PIO 8255A, MHB8255A olarak sunuldu. vb.)

Baz, ortak “Kutsal Üçlü” kablolamadan oluşur (8080A – 8224 – 8228). Reçine 8224 devresi girişinde, açıldıktan sonra sıfırlama sağlayan diyotun yanı sıra diyot yanı sıra bir kapasitördü. Kristal 10 MHz vardı, bu yüzden bilgisayar 10/9 = 1.111 MHz frekansta çalışıyordu. INTA giriş devresi (8228), bir kesinti isteği durumunda, RST 7’nin yapıldığından emin olan + 12V ile bağlandı (yani 0038 adresine atla).

Hafıza, 1k balo (8608, 1kx8) yanı sıra 1 KB RAM (2x 2114) cipslerden geliştirilmiştir. Balo, 0000 $ – 03FF’lik bir adreste teklif edildi, RAM 1C00 $ – $ 1fff. Kurula ekstra 2708 bellek (0400 $ – 07FF $) eklemek bile mümkündü.

VAD30 Ekranı [Resim kaynağı: nostalcomp.cz] Bilgisayar ek olarak, eski Almanya’da (Deutsche Demokratische Republik) üretilen bir VQD30 ekranını içeriyordu. Bu, NSA1198 veya CQYP95 – 9 yedi bölümlü tipik katot ekranlarının pratik bir eşdeğeri idi. Giriş verileri, 3 × 9 matrisi olarak geliştirilen bir klavye tarafından sağlandı. Bu çevre birimlerinin her ikisi de, PIO 8255’e dayanan bir devre tarafından tahrik edildi. Bir çıkış noktasını (PA0-PA6), sürücü transistörleriyle özel segmentleri (anotlar) yönetti. En düşük dört bağlantı noktası C bağlantı nokta, bir devre MH1082 (74145’e eşdeğer), konumları seçmek için kullanılan ve aynı zamanda klavyenin sütunlarını eşzamanlı olarak etkinleştirin. Klavye hatları BITS PC4-PC6 ile bağlandı.

Programlar, aynı şekilde PIO 8255 vasıtasıyla yönetilen son derece temel bir şekilde bantta tutulmuştur. Her girişin bir başlangıç ​​biti (1), daha sonra gerçek değer ve bir durdurma biti (0) vardı. Bir programın kaydedilmesi sırasında PA6 portunda 0.2ms’lik bir tedarikçi frekans döngüsü üretti ve PIN PA7 ile tanıttı. Okuma sırasında bilgi bit PC7’de sunuldu.

PIO 8255, f8- $ fb adreslerinde periferik olarak bağlandı. Bilgisayar panosu, daha sonra F4- $ F7’yu ve uygulamalara tam olarak sunulan adreslere bağlantılı olan bir pio devresinin yerleştirilmesini sağlamıştır.

Operasyon

Klavye, 5 × 5 matris içinde ayarlanan 25 sırtan oluşuyordu. Bununla birlikte, içinde farklı şekilde kabloladı. İki sır (yanı sıra I) doğrudan işlemcinin girdilerine (sırasıyla, Sırasıyla, Sıralamaya Sıfırla). Kalan sırları (0-9, A-F, Ex, R, Br, M, L, S, de =), burada gösterildiği gibi zaten işaretlenmiş 3 × 9 matrisinde kablolamıştır.

Açtıktan sonra, ekran ekranı “PMI-80” olarak kontrol edildi ve bilgisayarın her türlü önemli pres için beklendiğini kontrol ettiler. Bundan sonra “?” tarafından belirlenen birincil ekran moduna girdi. Ekranın sol tarafında. Sonra bilgisayar ekran komutları için bekledi.

Monitör komutları

M – Bellek içeriğini değiştirme / görüntüleyin. M tuşuna bastıktan sonra, karakter m solundaki gibi görünür ve bilgisayar adres girişi için bekler. Press = veri girişini etkinleştirir. Her basışınızda = Adres Kılavuzu 1 ile güçlendirir. Veri girişi, 0-F’nin yanı sıra dışındaki sırları bastırarak tamamlanır.

R – Görünümün yanı sıra kayıtların içeriğini değiştirme. R düğmesine bastıktan sonra, “R” karakteri solda belirir ve bilgisayar, Kayıt Çifti’ne karşılık gelen bir tuş vuruşu için bekler (AF = A, B = BC, D = DE, HL 9 = 8 = SP). Yine, verileri özelleştirmek mümkündüras 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.

Kaynaklar

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