Spisu treści:

Samodzielny emulator Retro CP/M: 8 kroków
Samodzielny emulator Retro CP/M: 8 kroków

Wideo: Samodzielny emulator Retro CP/M: 8 kroków

Wideo: Samodzielny emulator Retro CP/M: 8 kroków
Wideo: NOKIA N-GAGE: “Konsolofon” w 2021 | RetroTydzień #5 2024, Listopad
Anonim
Samodzielny emulator retro CP/M
Samodzielny emulator retro CP/M

Ten projekt wykorzystuje moduł VGA32 ESP v1.4 do uruchomienia kombinacji RunCPM i FabGL, aby zapewnić samodzielny komputer z systemem równoważnym do CP/M 2.2. Popularny w latach 80. jako system operacyjny dla małych komputerów. Możesz cofnąć się w czasie i ponownie odwiedzić stare oprogramowanie, takie jak Wordstar, Supercalc, Adventure i Zork.

Jest samodzielny dzięki uprzejmości projektu FabGL, który dostarczył oprogramowanie do obsługi standardowego monitora VGA i klawiatury PS/2.

Główny system operacyjny to zmodyfikowana wersja RunCPM, została rozwidlona z oryginalnej pracy na Github i dodałem bibliotekę FabGL, aby umożliwić jej używanie na ekranie zamiast na konsoli szeregowej.

Chciałbym tylko bardzo podziękować obu projektom. Tak trzymaj!

Oprogramowanie zostało przetestowane na co najmniej dwóch wersjach sprzętu. Jeden VGA32 ESP v1.4 (w stanie gotowym do sprzedaży). Drugą moją starą wersję, zbudowałem z modułu Wroom ESP32 i kawałków złomu ze starych komputerów.

Poniższa witryna Github zawiera ważne informacje na temat tych ustawień, a także zmodyfikowane oprogramowanie gotowe do zainstalowania.

Ten projekt dotyczy instalacji oprogramowania, a nie sprzętu.

Kieszonkowe dzieci:

Moduł VGA32 ESP V1.4 (testowany). Znalezione na eBay/aliexpress/amazon itp

Arduino IDE zainstalowane na komputerze, zakładam, że jeśli to czytasz, już to masz.

Zainstaluj pakiet wsparcia ESP32 dla Arduino IDE. https://github.com/espressif/arduino-esp32 Zobacz krok 1

Biblioteka FabGL https://www.fabglib.org/ nie musisz niczego pobierać, arduino IDE może to zrobić za nas, patrz krok 2.

Pobierz kopię zmodyfikowanego RunCPM z

Krok 1: Zainstaluj obsługę ESP32 dla Arduino (opcjonalnie)

Zainstaluj obsługę ESP32 dla Arduino (opcjonalnie)
Zainstaluj obsługę ESP32 dla Arduino (opcjonalnie)

Być może już to zrobiłeś, jeśli tak, możesz pominąć ten krok.

wejdź na https://github.com/espressif/arduino-esp32 i postępuj zgodnie z instrukcjami instalacji za pomocą menedżera forów, na przykład:

Instrukcja instalacji za pomocą Menedżera płyt Arduino IDE============================================= =========

Stabilny link do wydania:

Zainstaluj aktualne upstream Arduino IDE na poziomie 1.8 lub nowszym. Aktualna wersja znajduje się na stronie Arduino.

Uruchom Arduino i otwórz okno Preferencje.

Wprowadź jeden z powyższych linków do wydania w polu Dodatkowe adresy URL menedżera tablicy. Możesz dodać wiele adresów URL, oddzielając je przecinkami.

Otwórz Menedżera tablic z menu Narzędzia > Tablica i zainstaluj platformę esp32 (i nie zapomnij wybrać płyty ESP32 z menu Narzędzia> Tablica po instalacji).

Krok 2: Dodawanie biblioteki FabGL do IDE

Dodawanie biblioteki FabGL do IDE
Dodawanie biblioteki FabGL do IDE
Dodawanie biblioteki FabGL do IDE
Dodawanie biblioteki FabGL do IDE

Używając pustego szkicu w Arduino IDE, upewnij się, że wybrałeś płytkę ESP z menu Narzędzia, Tablice. (W momencie pisania tego tekstu VGA32 ESP nie było wymienione, wybrałem ogólną płytę Dev Kit).

Z menu Szkic wybierz Dołącz bibliotekę, a następnie wybierz Menedżer bibliotek.

W oknie dialogowym wyszukiwania wpisz FabGL i poczekaj, aż pojawi się na poniższej liście, teraz kliknij przycisk Instaluj.

skończone

Krok 3: Dodawanie dodatkowej biblioteki kart SD używanej przez RunCPM

Dodawanie dodatkowej biblioteki kart SD używanej przez RunCPM
Dodawanie dodatkowej biblioteki kart SD używanej przez RunCPM

To prawie to samo, co w poprzednim kroku, ale zamiast FabGL wyszukaj SDFat

Z menu Szkic wybierz Dołącz bibliotekę, a następnie wybierz Menedżer bibliotek. W oknie dialogowym wyszukiwania wpisz SDFat i poczekaj, aż pojawi się na poniższej liście, prawdopodobnie będziesz musiał przewinąć listę w dół.

Masz do wyboru dwie wersje:

1, SdFat autorstwa Billa Greimana

2, SdFat - Widelec Adafruit

Próbowałem obu, oba wydają się działać w porządku. Ale projekt RunCPM zalecił drugą opcję „Adafruit Fork”, jednak w najnowszych notatkach teraz mówi:

Wszystkie tablice korzystają teraz z biblioteki SdFat, stąd:

Więc teraz wybieram pierwszą opcję dla tego projektu.

skończone

Krok 4: Pobierz zmodyfikowany projekt RunCPM

Pobierz zmodyfikowany projekt RunCPM
Pobierz zmodyfikowany projekt RunCPM
Pobierz zmodyfikowany projekt RunCPM
Pobierz zmodyfikowany projekt RunCPM

Odwiedź witrynę Github, Kliknij przycisk KOD i pobierz jako plik ZIP

Zapisz ten plik gdzieś (zwykle w katalogu o nazwie Arduino.

Rozpakuj plik do tej samej lokalizacji, utworzy folder o nazwie RunCPM-master

skończone

Krok 5: Otwórz i przejrzyj program RunCPM i skompiluj

Otwórz i przejrzyj program RunCPM i skompiluj
Otwórz i przejrzyj program RunCPM i skompiluj

Możesz teraz użyć pliku Arduino IDE, menu Otwórz. Przejdź do folderu, który skompresowałeś powyżej.

Wewnątrz tego folderu znajduje się kolejny o nazwie RunCPM. Otwórz folder.

Wewnątrz tego folderu znajduje się plik.ino o nazwie RunCPM.ino. To jest główny plik projektu - otwórz go.

Możesz teraz obejrzeć projekt, przeczytać komentarze itp. Dokonaj zmian, jeśli potrzebujesz dopasować swoją wersję VGA32 -ESP. Powinien być wstępnie skonfigurowany dla wersji 1.4 płyty.

Możesz teraz kliknąć kompiluj i prześlij, zakładając, że masz podłączony VGA32 ESP, załaduje emulator do twojego urządzenia.

WAŻNE: VGA32 może mieć problem z kartą SD w tym momencie, więc nie podłączaj go, aby wiedzieć. Zobacz ostatni krok poniżej, aby uzyskać więcej informacji.

Krok 6: Utwórz kartę SD gotową do uruchomienia RunCPM z

To chyba najbardziej podstępny krok. Proponuję przeczytać README.md witryny Github, aby dowiedzieć się, jak to zrobić. Oto moja lista tego, co robić:

Zakładam, że masz pustą kartę SD lub nie jesteś zainteresowany przechowywaniem żadnych plików na tej, którą masz, spowoduje to jej usunięcie.

1, sformatuj kartę SD jako FAT-32

2, Utwórz kilka folderów o nazwach A, B, C D itd. (do P będą to dyski podczas uruchamiania CP/M). Zauważ, że są to wielkie litery.

3, W każdym utworzonym folderze Utwórz kolejny folder o nazwie 0 (to zero) i opcjonalnie 1, 2, 3 itd. (do 15) Następnie foldery są obszarami użytkownika w emulacji CP/M. Aby rozpocząć, potrzebujesz tylko folderu 0.

4, Z pobranego folderu projektu w katalogu arduino znajdź folder o nazwie CCP. Zawiera różne wersje procesora konsoli poleceń CP/M. Skopiuj ten o nazwie CCP-DR.60K do katalogu głównego karty SD.

5, Teraz znajdź folder w katalogu projektu o nazwie DISK, zawiera plik A. ZIP, musisz rozpakować ten plik do katalogu o nazwie A/0/ na karcie SD. (zobacz także plik 1streadme, aby uzyskać więcej informacji). Niestety nie ma "0" na liście folderów, więc musisz najpierw rozpakować do folderu tymczasowego, a następnie skopiować zawartość folderu A do A/0/ na karcie SD.

6, Po wykonaniu powyższych kroków będziesz mieć kartę SD o takiej strukturze:

F: CCP-DR.60K

/A/0

/1STREAD. ME

/ASM. COM

/…. itp

/B/0

/C/0

itp

Jeśli podczas próby rozruchu z karty SD pojawią się błędy dotyczące niemożności załadowania CCP itp., sprawdź dokładnie, czy wszystko jest we właściwym tempie!

Chcąc nieco ułatwić ten etap, wrzuciłem gotową wersję powyższego, z dodatkiem oprogramowania cp/m, a także pobierz go stąd https://github.com/coopzone-dc/RunCPM/blob /master/… i po prostu rozpakuj go do katalogu głównego sformatowanej karty SD. Powinieneś zacząć, a później możesz stworzyć swój własny.

Polecam również zapoznać się z przewodnikiem konfiguracji w repozytorium Github, zawiera opis potrzebnych folderów.

Krok 7: Podłącz monitor VGA i klawiaturę

Podłącz monitor VGA i klawiaturę
Podłącz monitor VGA i klawiaturę

Odłącz zasilanie karty VGA32 ESP.

Podłącz monitor VGA

Podłącz klawiaturę PS/2 Podłącz ponownie zasilanie do karty VGA32 ESP, powinieneś zobaczyć migające kontrolki klawiatury i około 10 sekund później na ekranie pojawi się obraz z monitem CP/M!

Ważne: VGA32 ma problem podczas korzystania z karty SD i miękkiego resetu, dlatego ważne jest, aby WYŁĄCZYĆ ZASILANIE jako pierwszy krok powyżej. Dalsze informacje znajdują się w ostatnim kroku.

Precz odchodzisz…

Krok 8: Problem z kartą SD na module VGA32

Problem z kartą SD na module VGA32
Problem z kartą SD na module VGA32
Problem z kartą SD na module VGA32
Problem z kartą SD na module VGA32

Zdjęcie powyżej pokazuje moją drugą kartę ESP32 (domową), działa dobrze i nie ma problemu poniżej. Więc wiem, że nie jest to problem z oprogramowaniem, proszę przeczytać poniżej o wersji VGA32.

W moim module VG32 ESP (v1.4) karta SD korzysta z GPIO12. Nie jest to zalecane przez Espressif Systems, ponieważ ten pin jest używany po włączeniu zasilania do wykrywania napięcia roboczego pamięci wewnętrznej. Żałuję, że ktoś nie powiedział temu facetowi, który zrobił tę kartę VGA32! Może jest inaczej w twoim, więc miejmy nadzieję, że nie będziesz mieć tego problemu.

Problemy to:

1, Nie można przesłać szkicu, gdy karta jest podłączona.

2, po naciśnięciu przycisku resetowania blokuje się do momentu wyjęcia karty SD. Następnie uruchamia się ekran błędu z informacją o braku karty SD! Możesz włożyć kartę i zresetować ją ponownie, a drugi raz będzie działać.

Ten problem można naprawić (ale jest ryzyko) zobacz README.md na

lub zawsze możesz wykonać twarde wyłączenie/włączenie, aby uruchomić deskę. Z jakiegoś powodu wydaje się, że to działa dobrze. Ponadto, jeśli chcesz ponownie załadować oprogramowanie RunCPM, musisz najpierw wyjąć kartę SD.

To jest fragment pliku README. MD, który wyjaśnia problem. Użyłem poprawki i działa dobrze, ALE ze względu na jej charakter ryzyko jest twoje, czytaj dalej…

Jednak ustawienia VGA32 ESP wydają się mieć konflikt z ustawieniami GPIO dla karty SD.

Działa, ale aby wgrać, musisz wyjąć kartę SD i po miękkim resecie musisz wyjąć kartę SD, a następnie wymienić ją, a następnie ponownie zresetować. Działa dobrze po włączeniu lub twardym resecie. Jeśli możesz pomóc to naprawić, daj mi znać. AKTUALIZACJA 11 października 2020 r.: VGA32 ESP v1.4 używa GPIO12 (MTDI, odczyt po włączeniu/zresetowaniu). Ten pin określa napięcie pamięci RAM, napięcie wewnętrznego LDO (VDD_SDIO). Gdy karta SD jest obecna, ciągnie ten pin wysoko, a ESP32 myśli, że napięcie RAM powinno wynosić 1,8 V, bez karty SD ten pin ma wewnętrzne obniżanie, aby ustawić napięcie RAM na 3,3 V. Jest to właściwie wspomniane w notatkach z przykładów podanych w projekcie FABGL, cytując: uwagi dotyczące GPIO 2 i 12 - GPIO2: może powodować problemy z programowaniem. GPIO2 musi być również pozostawione niepodłączone / pływające lub napędzane na niskim poziomie, aby można było wejść do szeregowego bootloadera. W normalnym trybie rozruchu (wysoki GPIO0), GPIO2 jest ignorowane. - GPIO12: należy unikać. Wybiera napięcie błysku. Aby z niego skorzystać, należy wyłączyć ustawienie wykrywania GPIO12 za pomocą: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V UWAGA!! Dobry dla ESP32 z napięciem 3.3V (ESP-WROOM-32). To zepsuje twój ESP32, jeśli flash nie jest 3.3V UWAGA1: zastąp "/dev/cu. SLAB_USBtoUART" portem szeregowym UWAGA2: espefuse.py można pobrać z

To dalej wskazuje, że należy unikać GPIO12, szkoda, że nikt nie powiedział producentowi karty VGA32 ESP!

NAPRAWIONO: Wypróbowałem opcję ustawienia napięcia lampy błyskowej, aby pominąć użycie GPIO12 i mogę potwierdzić na moim vga32 ESP, to działa! Problem rozwiązany nie więcej problemów z kartą SD. Zachęcam do sprawdzenia, ponownego sprawdzenia i zastanowienia się nad stworzeniem CEGŁY, jeśli również zdecydujesz się spróbować. Nie polecam tego jako akcji, ale dla mnie zadziałało.

Zalecana: