Homebrew 8088 – Klon IBM PC

O co chodzi?

W tym poście chciałbym przedstawić projekt nad którym ostatnio się zajmowałem. To projekt sklonowania pierwszego peceta, to znaczy zbudowania komputera kompatybilnego z oryginalnym komputerem osobistym od IBM który zapoczątkował wszystkie dzisiejsze PC-ty.

Zajmuje się tym już od ponad roku i w ostatnim czasie udało mi się doprowadzić go stanu używalności. W końcu komputer ożył i działa. Długo na to czekałem, zebranie wszystkich pojedynczych 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ńszcze niż kupienie oryginalnego IBM PC czy klona. Na pewno nie wyszło tanio bo sam już nie wiem ile całkowity koszt, ponieważ koszt składa się z mnóstwa pojedynczych tanich części.

Czy było warto?

Poza tym taki projekt był bardzo ciekawym projektem do stworzenia. 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 do spróbowania czegoś podobnego.

Całkowicie sam to zbudowałeś?

Mój komputer zbudowałem na podstawie pewnego projektu z GitHub-a. Pewien człowiek z Angli zaprojektował płytki drukowane i opisał wszytko na YouTube. Jest to świetny sposób na zbudowanie takiego sposobu jednak są różne podobne projekty w internecie.

Projekt komputera można znaleźć w raz szczegółami pod: www.homebrew8088.com

Kilka zdjęć komputera:

Czemu tak długo?

Znaczną cześć czasu od zaczęcia projektu do pierwszego uruchomienia zajęło czekanie na części niż samego lutowania 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ć najprostszą wersje 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:
https://oshwlab.com/temporary/nano-flash-programmer-iii/

Jako że sam pomysł polegał na zmniejszeniu jak najbardziej 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 wszytko było okropnie ciasno przylutowane. Musiałem męczyć się o to aby nie powstawały zwarcia.

Jednak i tak nigdy nie dowiedziałem się czy moje 3 dni ciągłej pracy od rana do wieczora się opłaciły ponieważ, gdy już sprawdziłem że programator nie działa nie wiedziałem że źle wgrywałem na niego dane. Czego się dowiedziałem się 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ć. Zamówiłem wiec po pół roku już nowy uniwersalny programator T48. Może i tani nie był ale po tym jak 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 zatrzymywał po tym jak nie pisałem na klawiaturze przez pewien czas, jednak gdy uruchomiłem jakikolwiek program problemu nie było. Rozwiązanie okazało się użycie FREE-DOS 1.3, czyli czyli darmowa wersja DOS-a. Nie jest to kompetentne rozwiązanie problemu tylko jego obejście ale działa. Z moich poszukiwań wynika że może być to konflikt układów HC z HTC 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 pierwszy raz poprawnie zaprogramowałem po tym jak mój uniwersalny programator przyszedł 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 dla 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 powinna na nic wpłynąć wszystkie inne BIOS-y poza „Skiselev 8088_BIOS” który działa.

Czemu? Jak? Dlaczego? Nie wiem…

Komputer BOOT-ujacy 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 jest na osobnej karcie która ma standardowe złącze ISA oraz kilka dodatkowych pinów dla sygnałów których nie ma na ISA czyli sygnały klawiatury czy PC speaker-a. Płyta ma oddzielne taktowanie ISA aby to umożliwić. Jednak jest 8 bitowa jako że 8088 to procesor 16 bitowy jednak z 8 bitową szyną danych a ISA to szyna danych z adresami.

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 speaker-a czy dysku USB. Układy logiczne w oryginalnym IBM PC pochodziły już z 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 metoda trzymania danych w tym projekcie został użyty porostu dysk USB. Aby podłączyć tak nowy dysk do tak starej technologi został użyty układ 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 prawie porostu wyprowadzeniami z procesora danych i adresów wraz z dodatkowymi sygnałami. Więc nie jest to tak nie możliwe. Wystarczy dodatkowo zaprogramować specjalny dodatkowy BIOS obsługujący USB.

RAM:

Ilość RAM-u to 640 KB jako że tak ustalił IBM z Microsoft na początku projektowania IBM PC. Ponieważ 8088 może zaadresować 1000kb czyli 1MB to 640KB przeznaczono na programy a 360KB na BIOS, kartę graficzną i inne urządzenia.

GPU:

Karta graficzna którą użyłęm 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ę. Kupić kartę dźwiękową aby usłyszeć coś więcej od prostych pisków PC speaker-a. Mam zamiar napisać kilka więcej postów o używaniu mojego komputerka czy prostej grze którą na niego zaprogramowałem. Podsumowując mnóstwo możliwości.

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 przestarzale
  • Bios działa w trybie 16 bitowym procesora
  • Bios znajduje się w pamięci ROM
  • Może użyć jedynie 1MB pamięci
  • Bios nie jest w stanie przygotować karty graficznej
  • Typowy bios zajmuje 4-8MB

Zadania

  • Bios sprawdza działanie wszystkich komponentów komputera np. taktowanie ram POST
  • Po starcie bios przejmuje kontrole
  • Bios rezerwuje blok pamięci BIOS data area gdzie przechowuje informacje konfiguracji
  • Bios jest pomostem pomiędzy programem a sprzętem
  • Bios zawiera pamięć CMOS która zawiera zapisywane ustawienia

Shadowing

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

Alokacja Pamięci trybu rzeczywistego

-Procesor wpierw wykonuje z adresu F0000-FFF0.
-Aby zachować kompatybilność procesor uruchamia się w trybie 16-biotym.
-BIOS nie przełącza procesora w tryb 32 bitowy, robi to OS.
-Może zalokować jedynie 1MB pamięci

START KOMPUTERA

1.Inicjalizacja Procesora – Procesor sie sam to robi. Rejestry domyśle zawierają adres BIOS (F000h:FFF0h)

2.Uruchomienie BIOS:
-W adresach F000h:FFF0h znajduje się BIOS.
-Bios w pierw wykrywa urządzenia.
-Dokonuje procedery diagnostycznej POST
-Jeżeli komputer nie został odłączony od zasilania, bios nie wykonuje wszystkich testów.

3.Analiza procesora i chipsetu płyty:
-Analiza procesora
-Inicjalizacja chipsetu
-przygotowanie kontrolera pamięci, który zostanie wykorzystany do rozpakowania reszty BIOSU do RAM

4.Analiza elementów płyty głównej
-Bios testuje i inicjuje pozostałe urządzenia
-konfiguruje ich podstawowe ustawienia (CAS lantency, kolejność bootowania)
-Można wejść do trybu konfiguracji BIOS

5.Analiza zasobów płyty głównej
-Na końcu POST wykrywa dostępne zasoby
-Zostaną one przypisane urządzenia Plug&Play
-Jeśli Os wspiera Plug & Play BIOS przydziela zasoby jedynie podzespołom biorącym udział u uruchamianiu

Sprawdzane elementy POST

  1. test rejestrów procesora
  2. Suma kontrolna Bios
  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 d 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 do 0000:7C00)
  2. -Jeżeli ładowanie systemu się nie powiedzie z powodu MBR wywoływanie jest przerwanie 0x18 ( wyświetlane jest „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 kontrole do OS
-WINDOWS:
-W systemach Windows NT uruchamianie przejmuje NTLdr(NT loader)
-Najpierw wykonuje NTDETECT.COM (analiza komputera)
-Pobiera Z BIOS informacje ( „HKEY_LOCAL_MACHINE\Hardware\Description” )

Hasła Bios

-rodzaje:
-User – hasło ma zablokować uruchomienie się komputera. User nie może też grzebać w ustawieniach bios

-Supervisor – ma pełen dostęp do wszystkich opcji BIOS. Inne uprawnienia zwykle.

-W niektórych BIOS-ach można wybrać zasięg działania hasła

-przechowywanie BIOS
-hasła nie są przechowywane w pamięci BIOS
-BIOS przechowuje sumę kontrolną haseł zamiast nich
-hasła można zlać znając algorytm
-łamanie haseł BIOS
-hasła serwisowe
-brut-force
-odczyt CMOS i szukanie hasła czy sumy kontrolnej
-kasowanie CMOS

OZNACZENIA BIOS

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

POWODY AWARII

-Wirus
-Niewlaściwa aktualizacja
-Wyłaczenie komutera w trakcie aktualizacji\

HOT SWAPPING

Wymiana układu ROM Z innej plyty głownej tego samego modelu

SYSYTEMY OCHRONY BIOS

-DUAL BIOS – Dwa Biosy Gigabyte
-QUAD BIOS – Dwa Biosy + dysk + CD Gigabyte
-DIEHARD BIOS – Dwa Biosy z przyciskiem 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