สารบัญ:

Retro CP/M Stand Alone Emulator: 8 ขั้นตอน
Retro CP/M Stand Alone Emulator: 8 ขั้นตอน

วีดีโอ: Retro CP/M Stand Alone Emulator: 8 ขั้นตอน

วีดีโอ: Retro CP/M Stand Alone Emulator: 8 ขั้นตอน
วีดีโอ: Building a Standalone Z80 CP/M Computer (part 1) 2024, พฤศจิกายน
Anonim
Retro CP/M Stand Alone Emulator
Retro CP/M Stand Alone Emulator

โปรเจ็กต์นี้ใช้โมดูล VGA32 ESP v1.4 เพื่อเรียกใช้ชุดค่าผสมหรือ RunCPM และ FabGL เพื่อให้คอมพิวเตอร์แบบสแตนด์อโลนที่ใช้ระบบเทียบเท่ากับ CP/M 2.2 เป็นที่นิยมในช่วงปี 1980 เป็นระบบปฏิบัติการสำหรับคอมพิวเตอร์ขนาดเล็ก คุณสามารถย้อนเวลากลับไปและทบทวนซอฟต์แวร์เก่า เช่น Wordstar, Supercalc, Adventure และ Zork

เป็นความอนุเคราะห์แบบสแตนด์อโลนของโครงการ FabGL ที่ให้ซอฟต์แวร์เพื่อเรียกใช้จอภาพ VGA มาตรฐานและแป้นพิมพ์ PS/2

ระบบปฏิบัติการหลักเป็นเวอร์ชันแก้ไขของ RunCPM ซึ่งแยกจากงานต้นฉบับบน Github และฉันได้เพิ่มไลบรารี FabGL เพื่อให้สามารถใช้งานได้บนหน้าจอแทนที่จะเป็นคอนโซลอนุกรม

ฉันอยากจะกล่าวขอบคุณมากสำหรับทั้งสองโครงการ ดีแล้วทำต่อไป!

ซอฟต์แวร์ได้รับการทดสอบกับฮาร์ดแวร์อย่างน้อยสองเวอร์ชัน หนึ่ง VGA32 ESP v1.4 (ตามที่ขายพร้อมทำ) ประการที่สอง เวอร์ชันเก่าของฉัน ฉันสร้างจากโมดูล Wroom ESP32 และเศษบิตจากคอมพิวเตอร์เครื่องเก่า

ไซต์ Github ด้านล่างมีข้อมูลสำคัญเกี่ยวกับการตั้งค่าเหล่านี้ ตลอดจนซอฟต์แวร์พร้อมติดตั้งที่แก้ไขแล้ว

โปรเจ็กต์นี้เกี่ยวกับการติดตั้งซอฟต์แวร์ ไม่เกี่ยวกับฮาร์ดแวร์

เสบียง:

โมดูล VGA32 ESP V1.4 (ทดสอบแล้ว) พบใน eBay / aliexpress / amazon เป็นต้น

Arduino IDE ที่ติดตั้งบนคอมพิวเตอร์ ฉันคิดว่าถ้าคุณอ่านข้อความนี้ คุณมีสิ่งนี้อยู่แล้ว

ติดตั้งชุดสนับสนุน ESP32 สำหรับ Arduino IDE https://github.com/espressif/arduino-esp32 ดูขั้นตอนที่ 1

ไลบรารี FabGL https://www.fabglib.org/ คุณไม่จำเป็นต้องดาวน์โหลดอะไรเลย arduino IDE สามารถทำสิ่งนี้ให้เราได้ ดูขั้นตอนที่ 2

ดาวน์โหลดสำเนา RunCPM ที่แก้ไขแล้วจาก

ขั้นตอนที่ 1: ติดตั้งการสนับสนุน ESP32 สำหรับ Arduino (ไม่บังคับ)

ติดตั้งการสนับสนุน ESP32 สำหรับ Arduino (อุปกรณ์เสริม)
ติดตั้งการสนับสนุน ESP32 สำหรับ Arduino (อุปกรณ์เสริม)

คุณอาจทำสิ่งนี้ไปแล้ว ถ้าคุณมีคุณสามารถข้ามขั้นตอนนี้ได้

เยี่ยมชม https://github.com/espressif/arduino-esp32 และทำตามคำแนะนำในการติดตั้งโดยใช้ตัวจัดการบอร์ดดังนี้:

คำแนะนำในการติดตั้งโดยใช้ Arduino IDE Boards Manager========================================== ================

ลิงค์ปล่อยเสถียร:

ติดตั้ง Arduino IDE ต้นน้ำปัจจุบันที่ระดับ 1.8 หรือใหม่กว่า เวอร์ชันปัจจุบันอยู่ที่เว็บไซต์ Arduino

เริ่ม Arduino และเปิดหน้าต่างการตั้งค่า

ป้อนหนึ่งในลิงก์เผยแพร่ด้านบนลงในช่อง URL ผู้จัดการบอร์ดเพิ่มเติม คุณสามารถเพิ่ม URL ได้หลายรายการ โดยคั่นด้วยเครื่องหมายจุลภาค

เปิดตัวจัดการบอร์ดจากเครื่องมือ > เมนูบอร์ด และติดตั้งแพลตฟอร์ม esp32 (และอย่าลืมเลือกบอร์ด ESP32 ของคุณจากเครื่องมือ > เมนูบอร์ดหลังการติดตั้ง)

ขั้นตอนที่ 2: การเพิ่มไลบรารี FabGL ลงใน IDE

การเพิ่มไลบรารี FabGL ลงใน IDE
การเพิ่มไลบรารี FabGL ลงใน IDE
การเพิ่มไลบรารี FabGL ลงใน IDE
การเพิ่มไลบรารี FabGL ลงใน IDE

ใช้ภาพร่างเปล่าใน Arduino IDE ตรวจสอบให้แน่ใจว่าคุณได้เลือกบอร์ด ESP ของคุณจากเมนูเครื่องมือ บอร์ด (ในขณะที่เขียน VGA32 ESP ไม่อยู่ในรายการ ฉันเลือกบอร์ด Dev Kit ทั่วไป)

จากเมนู Sketch ให้เลือกรวมไลบรารี จากนั้นเลือกตัวจัดการไลบรารี

ในกล่องโต้ตอบการค้นหาประเภท FabGL และรอให้ปรากฏในรายการด้านล่าง ให้คลิกปุ่มติดตั้ง

เสร็จ

ขั้นตอนที่ 3: การเพิ่มไลบรารีการ์ด SD เพิ่มเติมที่ใช้โดย RunCPM

การเพิ่มไลบรารีการ์ด SD เพิ่มเติมที่ใช้โดย RunCPM
การเพิ่มไลบรารีการ์ด SD เพิ่มเติมที่ใช้โดย RunCPM

นี่เกือบจะเหมือนกับขั้นตอนก่อนหน้า แต่แทนที่จะค้นหา FabGL สำหรับ SDFat

จากเมนู Sketch ให้เลือกรวมไลบรารี จากนั้นเลือกตัวจัดการไลบรารี ในกล่องโต้ตอบการค้นหาประเภท SDFat และรอให้ปรากฏในรายการด้านล่าง คุณอาจจะต้องเลื่อนรายการลง

คุณสามารถเลือกสองเวอร์ชัน:

1, SdFat โดย Bill Greiman

2, SdFat - Adafruit Fork

ฉันได้ลองทั้งสองอย่างแล้ว ดูเหมือนว่าทั้งคู่จะทำงานได้ดี แต่โปรเจ็กต์ RunCPM ได้แนะนำตัวเลือกที่สอง "Adafruit Fork" อย่างไรก็ตามในบันทึกย่อล่าสุดตอนนี้ระบุว่า:

บอร์ดทั้งหมดใช้ไลบรารี SdFat จากที่นี่:

ตอนนี้ฉันเลือกตัวเลือกแรกสำหรับโครงการนี้

เสร็จ

ขั้นตอนที่ 4: ดาวน์โหลดโครงการ RunCPM ที่แก้ไขแล้ว

ดาวน์โหลดโครงการ RunCPM ที่แก้ไขแล้ว
ดาวน์โหลดโครงการ RunCPM ที่แก้ไขแล้ว
ดาวน์โหลดโครงการ RunCPM ที่แก้ไขแล้ว
ดาวน์โหลดโครงการ RunCPM ที่แก้ไขแล้ว

เยี่ยมชมไซต์ Github

คลิกปุ่ม CODE และดาวน์โหลดเป็นไฟล์ ZIP

บันทึกไฟล์นี้ไว้ที่ใดที่หนึ่ง (โดยปกติในไดเร็กทอรีชื่อ Arduino

แตกไฟล์ไปที่ตำแหน่งเดิม มันจะสร้างโฟลเดอร์ชื่อ RunCPM-master

เสร็จ

ขั้นตอนที่ 5: เปิดและตรวจสอบโปรแกรม RunCPM และคอมไพล์

เปิดและตรวจสอบโปรแกรม RunCPM และคอมไพล์
เปิดและตรวจสอบโปรแกรม RunCPM และคอมไพล์

ตอนนี้คุณสามารถใช้ไฟล์ Arduino IDE, เมนูเปิด นำทางไปยังโฟลเดอร์ที่คุณซิปด้านบน

ภายในโฟลเดอร์นี้มีอีกชื่อหนึ่งเรียกว่า RunCPM เปิดโฟลเดอร์

ภายในโฟลเดอร์นั้นมีไฟล์.ino ชื่อ RunCPM.ino นี่คือไฟล์โครงการหลัก - เปิด

ขณะนี้คุณสามารถดูโครงการ อ่านความคิดเห็น ฯลฯ ทำการเปลี่ยนแปลงหากคุณต้องการให้ตรงกับเวอร์ชัน VGA32 -ESP ของคุณ ควรกำหนดค่าล่วงหน้าสำหรับ V1.4 ของบอร์ด

ตอนนี้คุณสามารถคลิกคอมไพล์และอัพโหลด สมมติว่าคุณเชื่อมต่อ VGA32 ESP แล้ว มันจะอัปโหลดอีมูเลเตอร์ไปยังอุปกรณ์ของคุณ

สำคัญ: VGA32 อาจมีปัญหากับการ์ด SD ในตอนนี้ ดังนั้นอย่าเสียบปลั๊กเพื่อทราบ ดูขั้นตอนสุดท้ายด้านล่างสำหรับข้อมูลเพิ่มเติม

ขั้นตอนที่ 6: สร้างการ์ด SD ที่พร้อมบูต RunCPM From

นี่อาจเป็นขั้นตอนที่สำคัญที่สุด ฉันแนะนำให้คุณอ่าน README.md ของไซต์ Github เกี่ยวกับวิธีการทำเช่นนี้ นี่คือรายการสิ่งที่ต้องทำของฉัน:

ฉันถือว่าคุณมีการ์ด SD เปล่าหรือไม่สนใจที่จะเก็บไฟล์ใด ๆ ไว้ในการ์ดที่คุณมี สิ่งนี้จะลบทิ้ง

1 ฟอร์แมตการ์ด SD เป็น FAT-32

2, สร้างโฟลเดอร์ชื่อ A, B, CD ฯลฯ (สูงสุด P สิ่งเหล่านี้จะเป็นดิสก์ไดรฟ์เมื่อรัน CP/M) โปรดทราบว่าพวกเขาเป็นเมืองหลวง

3, ในแต่ละโฟลเดอร์ คุณสร้างสร้างโฟลเดอร์อื่นชื่อ 0 (นั่นคือศูนย์) และเลือก 1, 2, 3 ฯลฯ (สูงสุด 15) จากนั้นโฟลเดอร์จะเป็นพื้นที่ผู้ใช้ในการจำลอง CP/M คุณต้องการเพียงโฟลเดอร์ 0 เพื่อเริ่มต้น

4 จากโฟลเดอร์โครงการที่คุณดาวน์โหลดในไดเร็กทอรี Arduino ให้ค้นหาโฟลเดอร์ชื่อ CCP ซึ่งมีเวอร์ชันต่างๆ ของตัวประมวลผลคอนโซลคำสั่ง CP/M คัดลอก CCP-DR.60K ไปยังรูทของการ์ด SD ของคุณ

5, ค้นหาโฟลเดอร์ในไดเร็กทอรีโครงการที่เรียกว่า DISK ซึ่งมีไฟล์ A. ZIP คุณต้องแตกไฟล์นี้ไปยังไดเร็กทอรีชื่อ A/0/ บนการ์ด SD ของคุณ (โปรดดูไฟล์ 1streadme สำหรับข้อมูลเพิ่มเติม) น่าเสียดายที่ไม่มี "0" ในรายการโฟลเดอร์ ดังนั้นคุณต้องคลายซิปไปที่โฟลเดอร์ชั่วคราวก่อน จากนั้นจึงคัดลอกเนื้อหาสำหรับโฟลเดอร์ A ไปยัง A/0/ ในการ์ด SD

6 เมื่อคุณทำตามขั้นตอนข้างต้นแล้ว คุณจะมีการ์ด SD ที่มีโครงสร้างดังนี้:

F: CCP-DR.60K

/A/0

/1STREAD. ME

/ASM. COM

/…. ฯลฯ

/B/0

/C/0

ฯลฯ

หากคุณได้รับข้อผิดพลาดเกี่ยวกับการโหลด CCP ไม่ได้ ฯลฯ เมื่อคุณพยายามบูตจาก SD-Card ให้ตรวจสอบอีกครั้งว่าคุณมีทุกอย่างถูกต้อง!

ในความพยายามที่จะทำให้ขั้นตอนนี้ง่ายขึ้นเล็กน้อย ฉันได้อัปโหลดเวอร์ชันสำเร็จรูปของด้านบน พร้อมด้วยซอฟต์แวร์ cp/m เพิ่มเติมในนั้นเช่นกัน ดาวน์โหลดจากที่นี่ https://github.com/coopzone-dc/RunCPM/blob /master/… และเปิดเครื่องรูดไปที่รูทของ SD-Card ที่ฟอร์แมตแล้ว ควรให้คุณเริ่มต้นจากนั้นคุณสามารถสร้างของคุณเองได้ในภายหลัง

ฉันยังแนะนำให้คุณอ่านคู่มือการตั้งค่าบน Github Repo ซึ่งมีคำอธิบายของโฟลเดอร์ที่คุณต้องการ

ขั้นตอนที่ 7: เชื่อมต่อจอภาพ VGA และคีย์บอร์ด

เชื่อมต่อจอภาพ VGA และคีย์บอร์ด
เชื่อมต่อจอภาพ VGA และคีย์บอร์ด

ถอดสายไฟออกจากการ์ด VGA32 ESP

เชื่อมต่อจอภาพ VGA ของคุณ

เชื่อมต่อแป้นพิมพ์ PS/2 ต่อสายไฟเข้ากับการ์ด VGA32 ESP อีกครั้ง คุณจะเห็นไฟแป้นพิมพ์กะพริบ และประมาณ 10 วินาทีต่อมา รูปภาพจะปรากฏขึ้นบนหน้าจอพร้อมข้อความแจ้ง CP/M!

สำคัญ: VGA32 มีปัญหาเมื่อใช้การ์ด SD และซอฟต์รีเซ็ต นั่นเป็นสาเหตุสำคัญที่ต้องปิดเครื่องตามขั้นตอนแรกข้างต้น ดูขั้นตอนสุดท้ายสำหรับข้อมูลเพิ่มเติม

ไปเลย…

ขั้นตอนที่ 8: ปัญหากับการ์ด SD บนโมดูล VGA32

ปัญหาเกี่ยวกับการ์ด SD บนโมดูล VGA32
ปัญหาเกี่ยวกับการ์ด SD บนโมดูล VGA32
ปัญหาเกี่ยวกับการ์ด SD บนโมดูล VGA32
ปัญหาเกี่ยวกับการ์ด SD บนโมดูล VGA32

ภาพด้านบนแสดงการ์ด ESP32 ใบที่สองของฉัน (ทำเอง) ซึ่งใช้งานได้ดีและไม่มีปัญหาร้อง ดังนั้นฉันรู้ว่าไม่ใช่ปัญหาของซอฟต์แวร์ โปรดอ่านข้อความเกี่ยวกับรุ่น VGA32 ด้านล่าง

ในโมดูล VG32 ESP ของฉัน (v1.4) การ์ด SD ใช้ GPIO12 ซึ่งไม่แนะนำโดย Espressif Systems เนื่องจากพินนี้ใช้สำหรับเปิดเครื่องเพื่อตรวจจับแรงดันไฟฟ้าที่ใช้งานได้สำหรับหน่วยความจำภายใน ฉันหวังว่าจะมีใครสักคนบอกคนที่ทำการ์ด VGA32 ใบนี้! มันอาจจะแตกต่างไปจากคุณ ดังนั้นหวังว่าคุณจะไม่มีปัญหานี้

ปัญหาคือ:

1 ไม่สามารถอัปโหลดภาพร่างเมื่อเสียบการ์ด

2 หลังจากกดปุ่มรีเซ็ต มันจะล็อคจนกว่าจะถอดการ์ด SD ออก จากนั้นบูทไปที่หน้าจอแสดงข้อผิดพลาดว่าไม่มีการ์ด SD! คุณสามารถใส่การ์ดและรีเซ็ตอีกครั้งและจะใช้งานได้ในครั้งที่สอง

ปัญหานี้แก้ไขได้ (แต่มีความเสี่ยง) ดู README.md ได้ที่

หรือคุณสามารถเปิด/ปิดอย่างหนักเพื่อเริ่มบอร์ดได้ ด้วยเหตุผลบางอย่างดูเหมือนว่าจะใช้ได้ดี นอกจากนี้ หากคุณต้องการอัปโหลดซอฟต์แวร์ RunCPM อีกครั้ง คุณต้องถอดการ์ด SD ออกก่อน

นี่เป็นสารสกัดจาก README. MD ที่อธิบายปัญหา ฉันใช้การแก้ไขแล้วและใช้งานได้ดี แต่เนื่องจากความเสี่ยงเป็นของคุณ อ่านต่อ…

อย่างไรก็ตาม การตั้งค่าสำหรับ VGA32 ESP ดูเหมือนจะขัดแย้งกับการตั้งค่า GPIO สำหรับการ์ด SD

ใช้งานได้ แต่ในการอัปโหลด คุณต้องถอดการ์ด SD ออก และหลังจากซอฟต์รีเซ็ต คุณต้องถอดการ์ด SD ออกแล้วแทนที่ตามด้วยการรีเซ็ตอีกครั้ง ใช้งานได้ดีจากการเปิดเครื่องหรือฮาร์ดรีเซ็ต หากคุณสามารถช่วยแก้ไขปัญหานี้ได้โปรดแจ้งให้เราทราบ อัปเดต 11 ต.ค. 2020: VGA32 ESP v1.4 ใช้ GPIO12 (MTDI อ่านเมื่อเปิดเครื่อง/รีเซ็ต) พินนี้กำหนดแรงดันไฟฟ้าสำหรับ RAM, แรงดันไฟฟ้าของ Internal LDO (VDD_SDIO) เมื่อมีการ์ด SD มันจะดึงพินนี้ให้สูงและ ESP32 คิดว่าแรงดัน RAM ควรจะเป็น 1.8V หากไม่มีการ์ด SD พินนี้จะมีปุ่มดึงลงภายในเพื่อตั้งค่าแรงดัน RAM เป็น 3.3V สิ่งนี้ถูกกล่าวถึงจริงในหมายเหตุจากตัวอย่างที่ให้ไว้ในโครงการ FABGL เพื่ออ้างอิง: หมายเหตุเกี่ยวกับ GPIO 2 และ 12 - GPIO2: อาจทำให้เกิดปัญหาในการเขียนโปรแกรม GPIO2 จะต้องถูกปล่อยทิ้งไว้โดยไม่มีการเชื่อมต่อ/ลอย หรือขับเคลื่อนด้วย Low เพื่อเข้าสู่ Serial bootloader ในโหมดบูตปกติ (GPIO0 สูง) GPIO2 จะถูกละเว้น - GPIO12: ควรหลีกเลี่ยง มันเลือกแรงดันแฟลช หากต้องการใช้งานให้ปิดการใช้งานการตั้งค่าการตรวจจับ GPIO12 efuses ด้วย: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V WARN!! เหมาะสำหรับ ESP32 ที่มีแรงดันไฟ 3.3V (ESP-WROOM-32) สิ่งนี้จะทำให้ ESP32 ของคุณพังถ้าแฟลชไม่ใช่ 3.3V NOTE1: แทนที่ "/dev/cu. SLAB_USBtoUART" ด้วยพอร์ตอนุกรมของคุณ NOTE2: espefuse.py สามารถดาวน์โหลดได้จาก

หมายเหตุเพิ่มเติมนี้ควรหลีกเลี่ยง GPIO12 ซึ่งไม่มีใครบอกผู้ผลิตการ์ด VGA32 ESP!

แก้ไขแล้ว: ฉันได้ลองใช้ตัวเลือกในการตั้งค่าแรงดันไฟแฟลชเพื่อแทนที่การใช้ GPIO12 และสามารถยืนยันบน vga32 ESP ของฉันได้ มันได้ผล! แก้ไขปัญหาไม่มีปัญหากับการ์ด SD อีกต่อไป ฉันแนะนำให้คุณตรวจสอบ ตรวจสอบอีกครั้ง และคิดอย่างรอบคอบเกี่ยวกับการสร้างอิฐ หากคุณตัดสินใจที่จะลองใช้เช่นกัน ฉันไม่แนะนำว่าเป็นการกระทำ แต่สำหรับฉันมันใช้ได้ผล

แนะนำ: