Oprogramowanie systemowe RC2014

przez | 26 września 2022
Podstawowy zestaw do pracy z CP/M

Każdy system komputerowy wymaga oprogramowania do swojego działania. Umownie przyjęto jego podział na niskopoziomowe, powszechnie nazywane BIOS oraz system operacyjny. Powstawały komputery w których ten podział był zatarty, BIOS zawierał “system operacyjny” w postaci interpretera BASIC lub program MONITORA umożliwiający uruchomienie programów użytkownika.

W standardzie RC2014 największą popularność zdobyły dwa rodzaje oprogramowania niskopoziomowego: podstawowy Small Computer Monitor (SCM) i rozbudowany RomWBW. Twórca standardu również zaadaptował BIOS Granta Searlea do zestawów przez siebie oferowanych. RomWBW wspiera, praktycznie każdy znany i stosowany w komputerach 8-bit układ peryferyjny. Osiągnięto to dzięki wprowadzeniu dodatkowej warstwy HAL pomiędzy sprzętem a systemem operacyjnym. Realizacja takiego rozwiązania wymusza posiadania MMU przez komputer na którym ma on działać oraz większą niż obsługiwana przez CPU wielkość pamięci. W środowisku RCBus każdy komputer wyposażony w pamięci ROM/RAM 512kB pracuje pod kontrolą RomWBW. W przypadku mniej rozbudowanych systemów stosuje się SCM. Autor tego rozwiązania wspiera wszystkie oferowane przez siebie konfiguracje, również niektóre inne, w pełni kompatybilne z adresacją używaną w oficjalnych modułach RC2014.

Problem z oprogramowaniem pojawia się w przypadku użycia innych układów lub w konfiguracji która nie jest wspierana. W takim przypadku można napisać swój własny BIOS i dostosować CBIOS systemu CP/M pod własne potrzeby i takie rozwiązanie ma największe walory edukacyjne. Inną drogą jest modyfikacja dostępnych źródeł wcześniej wspomnianego software. Tu możemy się tylko skupić na dostosowaniu oprogramowania do posiadanego sprzętu i mamy pewność, że pozostała funkcjonalność będzie działać poprawnie.

Universal Z80 SIO Module

Pierwszym tego przykładem jest uniwersalny moduł pod dowolny układ z rodziny Z80 SIO, które mają różne wyprowadzenia portu 2. W trakcie projektowania tego modułu zrezygnowałem z użycia 74*04 w celu zachowania zgodności z tak projektowanymi modułami SIO w standardzie RC2014, bo używanie 1/6 układu tylko po to, by uzyskać pozorną zgodność z ACIA 68B50 uznałem za zbyteczne. Sterowanie tego układu jest zgodne z propozycjami Zilog przedstawionymi w ich dokumentacji. Takie posunięcie, dla typowego w RC2014 układu Z80 SIO, pociąga za sobą niezgodność z dostępnym podstawowym oprogramowaniem (w przypadku RomWBW problem ten nie istnieje). Do zestawu przedstawionego na pierwszym zdjęciu potrzebowałem BIOS, który ma pełną funkcjonalność przy 16kB ROM i oczywistym wyborem był SCM v1.0.0, gdyż nowsze wersje tego oprogramowania mają większe zapotrzebowania pamięci ROM. Autor w nowszych odsłonach SCM skupił się na auto-detekcji podłączonego sprzętu, co w tym przypadku było kompletnie niepotrzebne oraz przekraczało założoną wielkość pamięci ROM. Okazało się, że ta wersja niepoprawnie wykrywa tak skonfigurowany SIO (następne mają poprawiony ten błąd) i należało to zmienić przez użycie procedury stosowanej w nowszych wersjach. Kolejny problem, to że autor przygotował CP/M tylko dla modułów zgodnych z oficjalnym sterowaniem, więc to należało również poprawić. Tu zdecydowałem się użycie własnego CBIOS, który używałem w innych projektach, więc przebudowa znanego kodu była zdecydowanie łatwiejsza.

Oprogramowanie SCM uwzględniające opisane poprawki sterowania Z80 SIO oraz umożliwiające użycie jako portu szeregowego układów XR88C681 lub 16C450/550 pod adresem 0xA0