Cyjon OS

58

Programowanie może być ciekawe.

W pełni 64 bitowe jądro systemu jak i oprogramowanie oraz system plików.
W języku asemblera.

Wszystkie programy pisane własnoręcznie, nie są przenoszone z systemów GNU/Linux (tylko na nich wzorowane - wizualnie :)).

user image

Edytor tekstu "nano":

user image

Aby daleko nie szukać, poniżej paczka z obrazem systemu.

Aktualizacja 21.12.2015:

user image

Aktualizacja 3.1.2016:

user image
user image

Aktualizacja 5.1.2016:
Wykonałem trochę modyfikacji i teraz działa znacznie lepiej (znalazłem parę błędów) jak i się prezentuje.

user image

Aktualizacja 27.05.2016:
Obsługa protokołu ARP, IP i ICMP !

user image

Aktualizacja 11.06.2016:

Udało mi się nawiązać połączenie przez przeglądarkę, "stos" tcp/ip przyjmuje tylko jedno połączenie ;)
Teraz muszę wysłać dane do serwera httpd wraz z identyfikatorem połączenia.
Serwer wyśle odpowiedź do klienta(przeglądarka) i demon_tcp zakończy połączenie, oczekując na następne xD
user image

Aktualizacja 30.06.2016:

Udało się, mam serwer WWW, stos TCP/IP i system operacyjny... a wszystko w asemberze :D
user image

Aktualizacja 28.12.2016:

Niewiele zmieniło się z zew. punktu widzenia, ale pod maską jest już pełna obsługa wirtualnych konsol!
Powłoka otrzymała możliwość buszowania po systemie plików (w tym i każdy inny proces).
title

Aktualizacja 15.01.2017:

title
title
title

Aktualizacja 20.02.2017:

title

Aktualizacja 22.02.2017:

Aktualizacja 21.03.2017:

title

Aktualizacja 23.03.2017:

Aktualizacja 02.07.2017:

title

Aktualizacja 25.08.2017:

title

0

No ładnie to wygląda :)

0

Super sprawa, na pewno musiałeś poświęcić sporo czasu.
Na czym to odpalasz? Masz jakąś maszynkę wirtualną czy pod jakimś sprzętem?

0

@akasei - z jakich materiałów korzystałeś pisząc projekt? Pisałeś w czystym asemblerze czy również w C? Uruchomiłem system na wirtualce, wszystko bangla jak trzeba :] Graty za włożony wysiłek.

0

przykładowe zadania:

  • obsługa myszki (naprościej będzie PS/2)
  • grafika (podstawowe tryby VGA/VESA na początek)
  • możliwość ładowania binarek skompilowanych w C

:)

0

Nie wygodniej i szybciej byłoby to pisać w C?

0
Azarien napisał(a):

przykładowe zadania:

  • obsługa myszki (naprościej będzie PS/2)
  • grafika (podstawowe tryby VGA/VESA na początek)
  • możliwość ładowania binarek skompilowanych w C

:)

Mam taki zarys w głowie:

  1. wersja x <= 1.0 tylko tryb tekstowy
  2. wersja 1.0 > x <= 2.0 dodana zostanie obsługa sieci
  3. wersja 2.0 > x <= 3.0 dodana zostanie obsługa trybu graficznego (najważniejszy będzie framebuffer, by uzyskać większe możliowości dla konsoli)

    KijWMrowisku napisał(a):

    Nie wygodniej i szybciej byłoby to pisać w C?

Nie :) Straciłbym pare lat na nauke języka w stopniu zadowalającym.

PS: 16.04.2015
Jeśli są osoby zaznajomione z językiem asemblera, proszę: https://github.com/Blackden/
Przepisuję kod jądra systemu... powoli.

PS: 17.04.2015
Na serwerze GitHub jest już wystarczająca ilość kodu przeznaczona do kompilacji i uruchomienia jądra systemu w warunkach testowych.

PS: 17.04.2015 12:57
Sprawdziłem czy działa na prawdziwym sprzęcie, płyta główna D510MO + PENDRIVE
user image

Oczywiście to nic nie znaczy :) Bootloader nie posiada obsługi portów USB, tym zajął się BIOS.
Dodatkowo na prawdziwej maszynie po paru/kilku minutach wyskakuje informacja "Unhandled Hardware Interrupt!", co nie występuje na emulatorze. Zdawało mi się, że wyłączyłem pozostałe przerwania sprzętowe...

0
akasei napisał(a):
KijWMrowisku napisał(a):

Nie wygodniej i szybciej byłoby to pisać w C?

Nie :) Straciłbym pare lat na nauke języka w stopniu zadowalającym.

Wątpię. C to bardzo prosty język, tylko trzeba się trzymać pewnych reguł.

Przeczytaj tę książkę i będziesz wiedział właściwie wszystko co potrzeba na początek:
"Język ANSI C. Programowanie.", Brian W. Kernighan, Dennis M. Ritchie

Tworzenie programowania to:

  • napisanie/dodanie kodu
  • kompilacja
  • uruchomienie
  • debugowanie (może być zastąpione przez wyświetlanie)

Dzięki C możesz ten cykl znacząco przyspieszyć. O ile chcesz zrobić coś użytecznego.

Jeśli chcesz zrobić sam wszystko od A do Z (bo np. nie pasuje Ci GNU) to możesz użyć Small C: http://en.wikipedia.org/wiki/Small-C

Musiałbyś go pewnie tylko dostosować do budowania execów x64 zgodnie z Twoimi założeniami.

Jeśli GNU to nie przeszkoda: Tiny C (LGPL): http://bellard.org/tcc/

Więcej kompilatorów: http://en.wikipedia.org/wiki/List_of_compilers#C_compilers

ASM jest dobry do wszelkich interfejsów z hardwarem, do pisania programów (czy nie daj Boże aplikacji) jest strasznym spowalniaczem (chyba że masz już bibliotekę standardową - łańcuchy, pliki, wątki, strumienie, sterta itd).

Edit: jak zrobić własny kompilator: http://www.stack.nl/~marcov/compiler.pdf

0
vpiotr napisał(a):

Edit: jak zrobić własny kompilator: http://www.stack.nl/~marcov/compiler.pdf

Dziękuje za dokument. Na pewno wyciągnę z niego interesujące informacje przy tworzeniu własnego kompilatora w języku asemblera.

Raczej podziękuję za propozycje wykorzystania języków wysokiego poziomu. Lubię porozmawiać z procesorem i sprzętem po swojemu ;) Projekt zapewne nie będzie znany w świecie. Piszę dla własnej przyjemności.

PS: Z chęcią przygarnę dokumentacje na potrzeby tworzenia kompilatora dla języka asemblera.

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