Homebrew 8088 – Klon IBM PC

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:

Zdjęcie komputera 1
Zdjęcie komputera 2
Zdjęcie komputera 3
Zdjęcie komputera 4

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.

Plątanina kabli płytki programatora

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ą.

Gotowy prosty programator

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!

Programator T48

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:

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.

Windows 3.11 – 86Box

86Box – Co to?

86Box to świetne rozwiązanie dla emulacji starych komputerów, pozwala na dokładną emulacje wybranego sprzętu i korzystanie z retro sprzętu bez konieczności jego posiadania.

Dzięki temu można poznać i korzystać z komputera jak przed latami, w zaledwie kilka chwil, zobaczyć stare systemu operacyjne i dowiedzieć się jak wyglądała przeszłość.

Ja skorzystałem z 86Box aby cofnąć się do 1993 roku i zobaczyć jak wyglądał Windows 3.11.

Polecam wejść na stronę WWW 86Box i zobaczyć to na własne oczy – 86box.net

Proste i bezproblemowe rozwiązanie

Publikuje moją konfigurację i obraz dysku zainstalowanym Windows 3.11 z wieloma już zainstalowanymi programami oraz w pełni skonfigurowanymi zainstalowanymi sterownikami.

Mam zamiar udostępnić łatwy sposób na zabawę czy poznanie tego systemu operacyjnego.

Wszytko to zrobiłem jak mi się nudziło ale nie spodziewałem się że to będzie tak problematyczne.

Dlatego uznałem że udostępnienie gotowego systemu będzie dobrym pomysłem.

Kilka Screenów:

Aby skorzystać z obrazu dysku należy wybrać odpowiednią konfigurację sprzętu którą podaje:

Machine:

  • Machine type: i486 (Socket 3)
  • Machine: [SiS 496] Soyo 4SAW2
  • CPU type: AMD Am5x86
  • Frequency: 160(P90)
  • Memory: 18MB

Display:

  • [ISA 16] Cirrus Logic GD5434 (Diamond SpeedStar 64 Rev. A3)

Input devices:

  • Microsoft Serial Mouse

Sound:

  • [ISA16] Sound Blaster 16

Network:

  • Mode: Slirp
  • Adapter: [PCI] Realtek RTL8029AS

Storage controllers:

  • HD Controller: Internal controller
  • FD Controller: Internal controller

Hard disks:

  • File name: win311.vhd
  • Bus: IDE
  • ID: 0:0
  • Size(MB): 1024MB
  • Cylinders: 2080
  • Heads: 16
  • Sectors: 63

Floppy & CR-ROM drives

  • 3,5″ 1.44M Floppy Drive
  • 5,25″ 1.2M Floppy Drive
  • ATAPI-(1:0)-16x-86BOX CD-ROM 1.00

Obraz Dysku Do Pobrania

BIOS – Jak to działa?

Prezentacja o BIOS:

Podstawowe informacje

  • BIOS jest dość ograniczony i przestarzały.
  • BIOS działa w 16-bitowym trybie procesora.
  • BIOS znajduje się w pamięci ROM.
  • BIOS może użyć jedynie 1MB pamięci.
  • BIOS nie jest w stanie przygotować karty graficznej.
  • Typowy BIOS zajmuje 4-8 MB.

Zadania

  • BIOS sprawdza działanie wszystkich komponentów komputera, np. taktowanie RAM-u, w ramach POST.
  • Po starcie BIOS przejmuje kontrolę.
  • BIOS rezerwuje blok pamięci BIOS Data Area, gdzie przechowuje informacje o konfiguracji.
  • BIOS jest pomostem pomiędzy programem a sprzętem.
  • BIOS zawiera pamięć CMOS, w której zapisywane są ustawienia.

Shadowing

  • Dostęp do RAM jest szybszy niż ROM.
  • Z tego powodu często kopiuje się BIOS do RAM-u podczas startu (shadowing).
  • Adres BIOS to F0000-FFFFF.
  • Istnieje opcja kopiowania BIOS-u innych urządzeń, takich jak karty graficznej.

Alokacja Pamięci trybu rzeczywistego

  • Procesor najpierw wykonuje kod spod adresu F000:FFF0.
  • Aby zachować kompatybilność, procesor uruchamia się w trybie 16-bitowym.
  • BIOS nie przełącza procesora w tryb 32-bitowy — robi to system operacyjny.
  • Może zalokować jedynie 1MB pamięci.
schemat pamięci BIOS

START KOMPUTERA

  1. Inicjalizacja procesora — procesor sam to robi. Rejestry domyślnie zawierają adres BIOS-u (F000h:FFF0h).
  2. Uruchomienie BIOS:
    • W adresach F000h:FFF0h znajduje się BIOS.
    • BIOS najpierw wykrywa urządzenia.
    • Wykonuje procedurę diagnostyczną POST.
    • Jeżeli komputer nie został odłączony od zasilania, BIOS nie wykonuje wszystkich testów.
  3. Analiza procesora i chipset płyty:
    • Analiza procesora,
    • Inicjalizacja chipsetu,
    • przygotowanie kontrolera pamięci, który zostanie wykorzystany do rozpakowania reszty BIOS-U do RAM-u.
  4. Analiza elementów płyty głównej:
    • Bios testuje i inicjuje pozostałe urządzenia.
    • Konfiguruje ich podstawowe ustawienia (CAS lantency i kolejność bootowania).
    • Można wejść do trybu konfiguracji BIOS-u.
  5. Analiza zasobów płyty głównej:
    • na końcu POST BIOS wykrywa dostępne zasoby,
    • zostaną one przypisane urządzeniom Plug & Play,
    • jeśli system operacyjny wspiera Plug & Play, BIOS przydziela zasoby jedynie podzespołom biorącym udział w uruchamianiu.

Sprawdzane elementy POST

  1. Test rejestrów procesora
  2. Suma kontrolna BIOS-u
  3. Test sterownika klawiatury
  4. Test zegara systemowego
  5. Sprawdzanie dostępu do bazowych 64 KB pamięci
  6. Test cache
  7. Test baterii CMOS
  8. Test karty graficznej
  9. Test trybu chronionego
  10. Próba zapisu i odczytu pamięci konwencjonalnej
  11. Test pamięci rozszerzonej
  12. Test DMA
  13. Sprawdzanie konfiguracji systemowej
  14. KONIEC POST

URUCHOMIENIE SYSTEMU OPERACYJNEGO

  1. Po zakończeniu POST BIOS wywołuje przerwanie 0x19 (próbuje załadować pierwszy sektor MBR z zerowej ścieżki dysku do RAM-u pod adres 0000:7C00).
  2. Jeżeli ładowanie systemu nie powiedzie się z powodu problemu z MBR, wywoływane jest przerwanie 0x18 (wyświetlany jest komunikat „NO BOOT DEVICE AVAILABLE”).

START SYSTEMU OPERACYJNEGO

  1. Proces początkowego ładowania
  2. Wybór systemu operacyjnego
  3. Wykrywanie sprzętu i wybór konfiguracji systemowej
  4. Ładowanie jądra
  5. Logowanie w systemie operacyjnym

BIOS przekazuje kontrolę do sytemu operacyjnego Windows:

  • W systemach Windows NT uruchamianie przejmuje NTLDR (NT Loader).
  • Najpierw wykonywany jest NTDETECT.COM (analiza komputera).
  • Pobiera Z BIOS-u informacje („HKEY_LOCAL_MACHINE\Hardware\Description” )

Hasła Bios


rodzaje:

  • User – hasło ma zablokować uruchomienie komputera. User nie może też zmieniać w ustawień BIOS-u
  • Supervisor – ma pełen dostęp do wszystkich opcji BIOS-u.
  • W niektórych BIOS-ach można wybrać zasięg działania hasła

przechowywanie BIOS-U:

  • hasła nie są przechowywane bezpośrednio w pamięci BIOS-u
  • BIOS przechowuje sumę kontrolną haseł zamiast nich
  • hasła można zlać, znając algorytm

Metody łamania haseł BIOS-u:

  • hasła serwisowe
  • brute-force
  • Odczyt CMOS i szukanie hasła czy sumy kontrolnej
  • Kasowanie CMOS

OZNACZENIA BIOS

W nazwie BIOS-u zapisana jest informacja o chipsecie i producencie np:
02/05/2002/i815EP-W83627-6A69RA1RC-7T

POWODY AWARII

  • Wirus
  • Niewłaściwa aktualizacja
  • Wyłączenie komputera w trakcie aktualizacji

HOT SWAPPING

Wymiana układu ROM z innej płyty głównej tego samego modelu.

SYSYTEMY OCHRONY BIOS-u

  • DUAL BIOS – Dwa BIOS-y Gigabyte, firma Gigabyte
  • QUAD BIOS – Dwa BIOS-y + dysk + CD, firma Gigabyte
  • DIEHARD BIOS – Dwa BIOS-y z przyciskiem, firma ASUS

Kalafiory – W__0

Witajcie użytkownicy!

Chciałbym się z wami podzielić kilkoma informacjami na temat kalafiorów.

  • Czy wiedzieliście, że brokuły są biologicznie sklasyfikowane jako kapusta? Dokładnie mówiąc kapusta szparagowa.
  • Brokuł jest przodkiem kalafiora.
  • Starożytni Grecy i rzymianie posiadali dostęp do brokuł.
  • Pierwsze zapiski o brokułach pochodzą z roku 1560.
  • Kiedy to prawdopodobnie został on sprowadzony z Półwyspu Apenińskiego do Francji, a następnie rozpowszechnił się w całej Europie docierając na Wyspy Brytyjskie w XVIII wieku. Do Stanów Zjednoczonych trafił poprzez osadników włoskich, gdzie w 1920 roku w Brooklynie powstała pierwsza towarowa plantacja brokuła. Największe uprawy w Europie znajdują się w Hiszpanii, we Włoszech, Francji i Polsce[5]. Największymi producentami w skali światowej są Chiny i Indie (łącznie ok. 70% produkcji).

Do tego warto wspomnieć, że brokuły są kwiatami.

Pozdrawiam serdecznie!

Użytkownik nr. 17 W__0