O co chodzi?
W tym poście chciałbym przedstawić projekt, którym ostatnio się zajmowałem. To projekt sklonowania pierwszego peceta, to znaczy zbudowania komputera kompatybilnego z oryginalnym komputerem osobistym IBM, który zapoczątkował wszystkie dzisiejsze pecety.
Zajmuję się tym już od ponad roku i w ostatnim czasie udało mi się doprowadzić go do stanu używalności. W końcu komputer ożył i działa. Długo na to czekałem. Zebranie wszystkich potrzebnych części zajęło wieki.
Po co?
Komputer ten zbudowałem samodzielnie z pojedynczych części. Zajęło to rok, ale było to tańsze niż kupienie oryginalnego IBM PC czy klona. Na pewno nie wyszło tanio, bo sam już nie wiem, jaki był całkowity koszt, ponieważ koszt składał się on z mnóstwa pojedynczych, tanich części.
Czy było warto?
Poza tym był to bardzo ciekawy projekt do zrealizowania. Wiele nauczyłem się tworząc ten komputer. Nauczyłem się lutować, zrozumiałem działanie układów scalonych i części dyskretnych. Polecam każdemu, kto interesuje się takimi rzeczami, spróbować czegoś podobnego.
Całkowicie sam to zbudowałeś?
Mój komputer zbudowałem na podstawie pewnego projektu z GitHuba. Pewien człowiek z Anglii zaprojektował płytki drukowane i opisał wszystko na YouTube. Jest to świetny sposób na zbudowanie takiego komputera, jednak są różne podobne projekty w internecie.
Projekt komputera można znaleźć wraz ze szczegółami pod adresem: www.homebrew8088.com
Kilka zdjęć komputera:




Czemu tak długo?
Znaczną część czasu od rozpoczęcia projektu do pierwszego uruchomienia zajęło czekanie na części, bardziej niż samo lutowanie, ale największym problemem dla mnie okazało się zaprogramowanie BIOS-u. Najtańsza oferta gotowego programatora była dla mnie trudna do przełknięcia, dlatego spróbowałem samodzielnie zbudować najprostszy projekt programatora.
Mój programator i jego problemy
Zacząłem budowę mojego programatora od znalezienia jakiegoś już gotowego projektu. Ktoś już próbował stworzyć prosty programator dla mojego układu scalonego, dlatego zacząłem zbierać części na jego budowę.
Projekt programatora można znaleźć w raz szczegółami pod adresem:
https://oshwlab.com/temporary/nano-flash-programmer-iii/
Jako że sam pomysł polegał na maksymalnym obniżeniu kosztu programatora, a najdroższym elementem była płytka drukowana, której wykonanie musiałem specjalnie zamówić. Postanowiłem obejść się bez niej. Co okazało się karkołomnym pomysłem. Samodzielne wykonanie płytki okazało się strasznie trudne moimi podstawowymi narzędziami. Powstała ogromna plątanina, w której wszystko było okropnie ciasno przylutowane. Musiałem się mocno starać, aby nie powstawały zwarcia.

Jednak i tak nigdy nie dowiedziałem się, czy moje trzy dni ciągłej pracy od rana do wieczora się opłaciły, ponieważ gdy sprawdziłem, że programator nie działa, nie wiedziałem jeszcze, że źle wgrywałem do niego dane. Dowiedziałem się o tym dopiero po tym, jak już myśląc że płytka nie działa zamówiłem nową, gotową.

Programator z nową płytką jednak również nie chciał współpracować. Po pół roku zamówiłem więc nowy, uniwersalny programator T48. Może i tani nie był, ale gdy przyszedł, od razu udało mi się po raz pierwszy uruchomić mój komputer!

Mój komputer i jego problemy
Problemy dziwne:
Po tym, jak udało mi się ożywić komputer, zainstalowałem MS-DOS 6.22 i zauważyłem pierwszy problem. Komputer się zawieszał po pewnym czasie nie pisania na klawiaturze, jednak gdy uruchamiałem jakikolwiek program, problemu nie było. Rozwiązaniem okazało się użycie FREEDOS 1.3, czyli darmowej wersja DOS-a. Nie jest to pełne rozwiązanie problemu, tylko jego obejście. Ale zadziała! Z moich poszukiwań wynika, że może to być konflikt układów HC z HCT, ale dalej czekam na nowe układy. Sam DOS wyświetla błąd, że IRQ dzieli przez zero.
Problemy dziwniejsze:
Drugim problemem jest BIOS, który po raz pierwszy poprawnie zaprogramowałem dopiero wtedy, gdy przyszedł uniwersalny programator i nie było żadnego z nim problemu. Jednak szukając rozwiązania problemu z błędem IRQ próbowałem zaprogramować inny BIOS. Znalazłem „GlaBIOS”, czyli jeden z wielu nowych BIOS-ów do takich komputerów, i problem trochę ustąpił. Szukając dalej rozwiązania próbowałem kolejnych BIOS-ów i sprawdzania układów scalonych. Jednak po wyjęciu układu DMA i ponownym jego włożeniu – co nie powinno na nic wpłynąć – przestały działać wszystkie BIOS-y poza „Skiselev 8088_BIOS” który dalej działa.
Czemu? Jak? Dlaczego? Nie wiem…
Komputer bootujący GlaBIOS:

Architektura komputera
Specyfikacja:
- ATX Form Factor
- ATX Power Connector
- 8284 with 14.31818 Crystal
- PC Speaker
- PS/2 Keyboard connector
- 8088 8MHz CPU
- 640kB RAM
- Trident 9000i GPU
- PC Speaker
- 8 Bit ISA
Płyta główna:
Płyta główna komputera jest uniwersalna dla wielu rodzajów procesorów, ponieważ procesor znajduje się na osobnej karcie, która ma standardowe złącze ISA oraz kilka dodatkowych pinów dla sygnałów, których nie ma w ISA, czyli sygnały klawiatury czy PC speakera. Płyta ma oddzielne taktowanie ISA, aby to umożliwić. Jednak jest 8-bitowa, ponieważ 8088 to procesor 16-bitowy, ale z 8-bitową szyną danych, a ISA to magistrala danych i adresów.
Na płycie głównej znajduje się kontroler klawiatury, układ DMA oraz układy logiczne potrzebne do przetwarzania reszty sygnałów m.in. sygnału PC speakera czy dysku USB. Układy logiczne w oryginalnym IBM PC pochodziły ze starej serii LS. Dzisiaj te układy są zastąpione układami HC oraz HCT. Układy HCT są kompatybilne z układami LS, tych powinno się używać w takich projektach.
Dysk:
Jako budżetowa metodę przechowywania danych w tym projekcie użyto po prostu dysku USB. Aby podłączyć tak nowy dysk do tak starej technologii, użyto układu CH375 który tłumaczy USB na sygnały równoległe, które z pomocą jednego układu logicznego da się podpiąć do szyny ISA, która jest w praktyce niemal po prostu zbiorem wyprowadzeń danych i adresów procesora wraz z dodatkowymi sygnałami. Więc nie jest to aż tak niemożliwe. Wystarczy dodatkowo zaprogramować specjalny dodatkowy BIOS obsługujący USB.
RAM:
Ilość RAM-u to 640 KB, jako że tak ustalili IBM i Microsoft podczas projektowania IBM PC. Ponieważ 8088 może zaadresować 1MB, z czego 640KB przeznaczono na programy, a 360KB na BIOS, kartę graficzną i inne urządzenia.
Karta Graficzna:
Karta graficzna której użyłem, to popularna kiedyś karta Trident 9000i. Jest to bardzo kompatybilna karta VGA która dobrze współpracuje z takimi komputerami.
Co dalej?
Dalej zamierzam znaleźć i naprawić wcześniej opisane problemy z moim komputerem, kupić kartę I/O aby podłączyć myszkę czy drukarkę, oraz kupić kartę dźwiękową, aby usłyszeć coś więcej niż proste piski PC speakera. Mam zamiar napisać jeszcze kilka postów o używaniu mojego komputerka i o prostej grze, którą na niego zaprogramowałem. Krótko mówiąc, możliwości jest mnóstwo.






