Umbrella OS

5

I oto jest UmbrellaOS
screenshot-20201007155704.png
Może niektórzy pamiętają mój poprzedni system operacyjny, BSCS, ale ten zawierał niestety trudny do rozwiązania błąd zmiany dysku, którego nie udało mi się rozwiązać. Moje drugie podejście do tego problemu to UmbrellaOS.
UWAGA: Nie zapewnia ochrony przed desczem
Domyślnym znakiem zachęty jest tylda (~) co można jednak zmienić za pomocą polecenia ask. Jest jeszcze polecenie zmieniające tryb ekranu, restartujące komputer itd. (brak obsługi dysków na razie).
Aktualna lista poleceń:

ask x - ustaw znak zachęty
mode x - ustaw tryb ekranu
boot - restart komputera
type - narzędie "cat"
info - informacje o systemie
echo xxx - wyswietl napis, ta sama komenda co na dosie
abcd xxx - wykonuje program w języku ABCD (https://esolangs.org/wiki/ABCD)
halt - zatrzymanie CPU za pomocą opkodu F4h, a jak zawiedzie - za pomocą pętli nieskończonej

Oczywiście projekt zamierzam rozwijać i dodawać nowe polecenia. Inspiracją do 2giego podejścia do stworzenia OS'a był Cyjon OS.

2

UmbrellaOS ma od teraz możliwość programowania
screenshot-20201008084236.png
Wszystko za sprawą tego, że dodałem do systemu interpretator języka ABCD (wersja z małymi literami, w oryginale należy stosować duże) https://esolangs.org/wiki/ABCD. Jestem świadomy, że ABCD nie jest z wielu powodów najlepszym językiem programowania, ale na pewno jest najprostszy do zaimplementowania w asmie (zarówno 8080 jak i x86, w tym przypadku x86). Aby rozszerzyć możliwości interpretatora, planuję dodać stos, możliwość czytania pamięci ram (na przykład aby dowiedzieć się jaki jest ustawiony znak zachęty), operacje bitowe i arytmetyczne, pętle... oczywiście pod warunkiem że zmieszczę się w boot-sektorze :). Na screenshocie widzimy szyfrowanie i odszyfrowywanie kodu Cezara za pomocą ABCD.

0

Ale to przecież nie jest OS, bo odpalasz to w Dosboxie. To co zrobiłeś to co najwyżej jakiś shell.

1

Ładnie. Pochwalisz się kodem? Myślałeś nad ładowaniem większej liczby sektorów, żeby nie mieć ograniczenia do 446 bajtów?

0

W sumie dwie nowe miniaktualizacje
Po pierwsze, teraz wiersz poleceń jest case-insensitive, jak w DOSie (choć UmbrellaOS nie ma z systemem Marka Zbikowsiego nic wspólnego):
screenshot-20201008135929.png
A po drugie, kolor znaków jest zmieniony na fioletowy (aby to zobaczyć, najpierw musimy przejść rzecz jasna w tryb graficzny komendą mode B*):
screenshot-20201008140259.png
*Standardowo tryb ekranu w poleceniu mode ma być cyfrą dziesiętną, ale tryb graficzny ma numer 18 (12 szesnastkowo) więc gdy podamy duże B, to w wyniku odejmowania 66-48=18 ustawimy właśnie ten tryb.

5

Jako element edukacyjny rzecz zawsze wartościowa i za to gratuluję. Jednak to co robisz na miano systemu operacyjnego nie zasługuje ( z definicji).
Obecnie to program uruchamiany z MBR. Nawet bardzo stare biosy były wielokrotnie bardziej skomplikowanymi aplikacjami a jednak na miano systemów operacyjnych nie zasługują.
Jak chcesz napisać system operacyjny to przynajmniej dowiedz się czym takowy jest: https://pl.wikipedia.org/wiki/System_operacyjny

1

mógłbym to zrobić za pomocą int13h ale wtedy musiałbym z góry wiedzieć z czego odpalany jest system

Number dysku z którego jest odpalony system dostajesz w rejestrze DL:

An MBR is loaded by the BIOS at physical address 0x7c00, with DL set to the "drive number" that the MBR was loaded from.

https://wiki.osdev.org/MBR_(x86)#MBR_Bootstrap

2

oczywiście pod warunkiem że zmieszczę się w boot-sektorze

Dobrze rozumiem, że nie masz zaimplementowanego bootloadera w tym projekcie i nie wychodzisz poza boot-sektor? Jeśli tak jest to, żebyś mógł pisać o tym, że Twój projekt jest chociaż zalążkiem systemu operacyjnego powinieneś chociaż załadować więcej sektorów, napisać minimalistyczny kernel i skoczyć do tego kernela za pomocą bootloadera właśnie. To co zaimplementowałeś teraz to raczej shell. Przecież już samo ograniczanie się do tych 512 bajtów powinno być zachęcające, żeby jednak większą ilość miejsca mieć do dyspozycji. Możliwe, że ją znasz, ale ta strona https://wiki.osdev.org/Main_Page jest bardzo przydatna jeśli chce się stworzyć autorski OS.

0

No, wresczie UmbrellaOS ma więcej miejsca :)
screenshot-20201008160703.png
Oczywiście na screenie tego nie widać. Wszystko dzięki "agencji mieszkaniowej" int13h oraz użytkownikowi @mad_penguin, który przysłał mi odpowiedź, skąd wiedzieć pod jakim numerem jest nośnik z systemem. Przez rozszerzenie możliwości systemu, DOSBox odmówił współpracy, i od teraz będę musiał testować system pod Bochsem. Na razie nie wiem jeszcze co zrobić z tym bonusowym pół kilobajta.

0

Pierwsze korzyści z wprowadzenia second-stage
screenshot-20201008173416.png
Jak się zapewne domyślacie jest to nic innego jak pomoc, której tekst jest umieszczony w 2gim sektorze dysku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0