Retrocomputing บนชิป

องค์ประกอบไฟฟ้าใหม่ช่วยให้เราสามารถสร้างสายไฟเก่าได้อย่างมีประสิทธิภาพมากขึ้น โดยเฉพาะอย่างยิ่งชุด FPGA ที่เข้าถึงได้ง่ายและราคาไม่แพงซึ่งมีความเป็นไปได้ที่จะรวบรวมการเดินสายของคอมพิวเตอร์เก่าจำนวนมากเป็นโซลูชัน “on-a-chip”

เมื่อฉันจัดการเพื่อให้ได้รับหน้าจอ LED Bubble แบบเก่ารวมถึงแป้นพิมพ์เมทริกซ์เชิงกลค่อนข้างฉันตัดสินใจที่จะพัฒนาแบบจำลองของคอมพิวเตอร์บอร์ดเดียวเก่า ตัวเลือกที่มีเหตุผลดูเหมือนจะพัฒนา KIM-1 หรือ Heathkit ET-3400 แบบจำลองของ KIM-1 มีอยู่แล้วแม้สำหรับ Arduino ดังนั้นงานของฉันจะย่อเล็กสุดเพื่อเชื่อมโยงแป้นพิมพ์รวมถึงจอแสดงผล อย่างไรก็ตามฉันบอกตัวเองว่าฉันจะใช้ความจริงที่ว่าหน้าจอฟองของฉันมี 9 ตำแหน่งเป็นเหตุผลในการพัฒนาคอมพิวเตอร์เดี่ยวเช็กซอสโลวักในตำนาน PMI-80 ซึ่งใช้จอแสดงผลเดียวกันที่แน่นอน My Replica เป็น FPGA หรือเป็นตัวจำลอง FPGA ของคอมพิวเตอร์นี้มาก

PMI-80

PMI-80 ดั้งเดิม [ที่มา: บล็อก DLW] มีแนวโน้มมากที่สุดในหมู่ผู้เข้าชมของ Hackaday ที่จะเข้าใจคอมพิวเตอร์เครื่องนี้ซึ่งทำในยุค 80 ในอดีตเชโกสโลวะเกีย Editor Hackaday [Brian Benchoff] อาจเป็นเพียงคนเดียวที่อ่านสิ่งนี้ที่มีตัวอย่างดังกล่าว อย่างไรก็ตามหากคุณมีหนึ่งในตัวคุณเองเราต้องการได้ยินเกี่ยวกับความคิดเห็นด้านล่าง สำหรับผู้ที่ไม่คุ้นเคยเรามาแนะนำมันก่อน

PMI-80 เป็นคอมพิวเตอร์สถาบันเดียวที่ใช้โปรเซสเซอร์ Intel 8080 เมื่อพิจารณาว่ามันถูกผลิตในแปดสิบหลังม่านเหล็กที่เรียกว่ามันใช้ชิปเทสลาเชโกสโลวะเกียแทนที่จะเป็นต้นฉบับของ Intel แม้ว่าพวกเขาจะเหมือนกันกับการกำหนดหมายเลข (Intel 8080A มีการกำหนด MHB8080A, PIO 8255A ถูกนำเสนอเป็น MHB8255A ฯลฯ )

ฐานประกอบด้วยการเดินสายไฟ “Holy Trinity” ทั่วไป (8080A – 8224 – 8228) ในการป้อนข้อมูลของเรซิ่น 8224 วงจรเป็นตัวเก็บประจุรวมถึงไดโอดจัดหาการรีเซ็ตหลังจากเปิดใช้งาน คริสตัลมี 10 MHz ดังนั้นคอมพิวเตอร์จึงทำงานที่ความถี่ 10/9 = 1.111 MHz วงจรอินพุต INTA 8228 เชื่อมโยงกับ + 12V ซึ่งทำให้แน่ใจว่าในกรณีที่มีการร้องขอการหยุดชะงักทิศทาง RST 7 ถูกดำเนินการ (I.E. ข้ามไปยังที่อยู่ $ 0038)

หน่วยความจำได้รับการพัฒนาจาก 1K Prom (8608, 1kx8) รวมถึงชิป 1 KB RAM (2×1114) พรหมได้รับการเสนอที่อยู่ที่ที่อยู่ $ 0000 – $ 03FF, RAM อยู่ที่ $ 1C00 – $ 1FFF เป็นไปได้ที่จะเพิ่มหน่วยความจำพิเศษ 2708 ($ 0400 – $ 07FF) ลงในบอร์ด

หน้าจอ Vad30 [ภาพที่มา: nostalcomp.cz] คอมพิวเตอร์ยังรวมถึงจอแสดงผล VQD30 ที่ผลิตในอดีตเยอรมนี (Deutsche Demokratische Republik) นี่คือการปฏิบัติที่เทียบเท่ากับหน้าจอ NSA1198 หรือ CQYP95 – 9 การแสดงไวน์ทั่วไปเจ็ดเซ็กกอก ข้อมูลอินพุตถูกจัดทำโดยคีย์บอร์ดซึ่งได้รับการพัฒนาเป็นเมทริกซ์ 3 × 9 อุปกรณ์ต่อพ่วงทั้งสองนี้ถูกขับเคลื่อนด้วยวงจรที่อยู่บนพื้นฐานของ PIO 8255 พอร์ตร้านค้า (PA0-PA6) ที่มีการจัดการเซ็กเมนต์ส่วนตัว (Anodes) กับทรานซิสเตอร์ไดรฟ์ พอร์ต C ที่ต่ำที่สุดสี่บิตถูกถอดรหัสโดยวงจร MH1082 (เทียบเท่ากับ 74145) เป็นรหัส 1-FROM-9 ซึ่งใช้เพื่อเลือกตำแหน่งรวมถึงการเปิดใช้งานคอลัมน์ของคีย์บอร์ดพร้อมกัน สายแป้นพิมพ์เชื่อมโยงกับบิต PC4-PC6

โปรแกรมถูกเก็บไว้บนเทปในวิธีการพื้นฐานอย่างยิ่งซึ่งได้รับการจัดการเช่นกันโดยวิธีการ PIO 8255 ทุกรายการมีบิตเริ่มต้น (1) จากนั้นค่าจริงเช่นเดียวกับการหยุดบิต (0) ในระหว่างการบันทึกโปรแกรมที่ผลิตวงจรความถี่ของผู้ให้บริการ 0.2ms บนพอร์ต PA6 เช่นเดียวกับ Strobbed ด้วย PIN PA7 ในระหว่างการอ่านข้อมูลถูกนำเสนอที่บิต PC7

PIO 8255 เชื่อมโยงเป็นอุปกรณ์ต่อพ่วงที่อยู่ที่ที่อยู่ $ F8- $ FB บอร์ดคอมพิวเตอร์เปิดใช้งานการแทรกวงจร PIO อีกหนึ่งตัวซึ่งเชื่อมโยงกับที่อยู่ $ F4- $ F7 รวมถึงเสนอให้กับแอปพลิเคชันอย่างสมบูรณ์

การดำเนินการ

แป้นพิมพ์ประกอบด้วย 25 ความลับที่ตั้งไว้ในเมทริกซ์ขนาด 5 × 5 อย่างไรก็ตามข้างในอย่างไรก็ตามมันมีสายแตกต่างกัน สองความลับ (RE รวมถึง i) นำไปสู่อินพุตของโปรเซสเซอร์โดยตรง (รีเซ็ตตามลำดับ INT) ความลับการเข้าพัก (0-9, A-F, EX, R, BR, M, L, S เช่นเดียวกับ =) ได้รับการต่อสายในการชี้ไปแล้ว 3 × 9 เมทริกซ์ตามที่แสดงที่นี่

หลังจากเปิดใช้งานหน้าจอหน้าจอตรวจสอบ “PMI-80” รวมถึงคอมพิวเตอร์รอการกดที่สำคัญทุกประเภท หลังจากนั้นมันเข้าไปในโหมดหน้าจอหลักกำหนดโดย “?” ทางด้านซ้ายของจอแสดงผล จากนั้นคอมพิวเตอร์จะรอคำสั่ง Screen

ตรวจสอบคำสั่ง

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

Author: found

Leave a Reply

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