Cyjon OS

Odpowiedz Nowy wątek
2015-04-10 20:41
52

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

edytowany 20x, ostatnio: Akasei, 2019-06-16 19:33
Unikałbym stosowania istniejących nazw własnych programów. Tak tylko piszę. Ogólnie bardzo fajnie. :) - Tacet 2015-04-11 00:24
Tak, zgadzam się... dopóki się z tym nie panoszę na lewo i prawo, mogę je stosować. Nazwy te zastosowałem by osoby postronne szybko się odnalazły. - Akasei 2015-04-11 00:34
Powoli przepisuję "uproszczony" kod jądra systemu do GitHub, dodając masę komentarzy. - Akasei 2015-04-11 18:00
Plik system.zip powyżej, nieaktualny. Najnowszą wersję zawsze można pobrać z GitHub. - Akasei 2015-12-21 07:15
GitHub nieaktualny, najnowszej wersji nie można nigdzie pobrać. Do czasu otrzymania satysfakcjonującego kodu. - Akasei 2017-08-25 14:34

Pozostało 580 znaków

2017-05-26 10:48
0

Coś się dzieje w temacie?:) Bo śledziłem z zapartym tchem :)


Kto nigdy nie zrobił var dupa niech pierwszy rzuci kamień.

Pozostało 580 znaków

2017-05-26 12:19
0

Nie posiadam tyle czasu przerobowego, teraz nadmiar pracy w robocie. Od czerwca ruszam dalej.

title

edytowany 1x, ostatnio: Akasei, 2019-06-16 19:40
Czemu tą nową nazwą swojego systemu wprowadzasz innych w błąd że to dystrybucja Linuksa? Czemu na stronie wataha.net usunąłeś changelog... ? - jpacanowski 2017-05-26 15:26
nie staram się wprowadzać w błąd, w między czasie kompiluję własną dystrybucje gnu/linux pod nazwą wataha. cyjon będzie w subdomenie. kwestia czasu - Akasei 2017-05-27 11:35

Pozostało 580 znaków

2017-06-01 07:55
1

Mogę już dodawać parę etykiet na raz w jednym oknie :) Cokolwiek wyjdzie poza obszar etykiety lub okna jest ignorowane (niedrukowalne).

etykiety

edytowany 4x, ostatnio: Akasei, 2019-06-16 19:40
btw. dlaczego mój nick jest na zielonym tle? - Akasei 2017-06-01 07:58
Autorzy tematu są wyróżnieni. - Michalk001 2017-06-01 07:59
Font monospace do etykiet? Fuuuuuu… - furious programming 2017-06-06 00:47
@furious programming: nie chce mi sie teraz implementować FreeType (lub TrueType) ;) - Akasei 2017-06-06 08:42

Pozostało 580 znaków

2017-06-24 15:06
0

Świetnie, nadziałem się na własną minę :D w konfiguracji kontrolera PIT. Kod jądra systemu przeszedł znaczące zmiany w optymalizacji kodu, przez swoją nieuwagę - nie zwróciłem uwagi na zawartość rejestru RDX przez co zwolniłem procka do ~15 przełączeń zadań na 1s. Zmarnowane 2 godziny na wyrywaniu włosów.

Btw. Rize wymaga ulepszenia, dlatego jak znajdę czas na implementacje tego http://www.trackze.ro/wsbe-5-be-clipped/, sterowniki prawie nie będą potrzebne.

W tym momencie bawię się ikonami ;)

edytowany 1x, ostatnio: Akasei, 2017-06-24 15:09
@jpacanowski: robi wrażenie, ale to tylko feature :) po drugie gość pisze własne jądro systemu w języku wysokiego poziomu i powoli przenosi do niego różne aplikacje z GNU - Akasei 2017-06-24 17:07
W sumie fajne, ale totalnie nie mam pojęcia do czego takie obracanie mogłoby się przydać, oprócz ćwiczenia mięśni szyi :P - EntityPamerano 2017-06-24 17:09
@akasei: ;D To kiedy pokażesz swoje API abym mógł napisać w końcu jakąś apkę pod twój OS? :P - jpacanowski 2017-06-24 17:21
@EntityPamerano: Chyba tylko po to, aby pokazać jakim się jest guru optymalizacji ;) - jpacanowski 2017-06-24 17:22
@jpacanowski: isnieje szansa na ten rok :> - Akasei 2017-06-24 17:24

Pozostało 580 znaków

2017-06-24 22:03
4

Wystarczył dzień roboczy by uzyskać możliwość wyświetlania ikon!

title

Teraz obsługa zdarzeń :) kliknięcie i otworzenie aplikacji, pierwszą będzie... a jak, konsola.

edytowany 1x, ostatnio: Akasei, 2019-06-16 19:41
Osoby postronne proszę o przetestowanie (link nieaktualny) - Akasei 2017-06-24 22:12
Jaki zestaw ikon chcecie :) ? - Akasei 2017-06-24 23:37

Pozostało 580 znaków

2017-07-03 14:53
3

Przywrócono odczyt zawartości plików do przestrzeni procesów. Proces console interpretuje już zawartość urzadzenia znakowego /dev/console/0.

Czas przepisać powłokę shell i uruchomić ją kierując standardowe wyjście na /dev/console/0

title

PS: poproszę o strukturę najprostszego formatu/kontenera video :)

edytowany 3x, ostatnio: Akasei, 2019-06-16 19:41
po głowie już mi chodzi jakaś prosta gierka platformowa... - Akasei 2017-07-03 16:02
@akasei: w ramach easter egga możesz napisać jakąś grę uruchamianą z konsoli np.: tetrisa :) Wtedy user wpisując powiedzmy.: i_will_donate_you_my_master odpali sobie grę. - grzesiek51114 2017-07-04 07:54
@grzesiek51114 prostszy dla mnie będzie saper :P bo i tam musze zaimplementować obsługę myszki w oknach, btw już wiem jak obsłużę klawiaturę dla procesów uruchomionych w konsoli :) - Akasei 2017-07-04 07:59
@akasei Czy istnieje jakiś kanał IRC albo inne miejsce w sieci związane z tym systemem? - jpacanowski 2017-07-04 20:25
@jpacanowski #osdev.pl na http://freenode.org/ jestem tam zawsze, ale jeśli będziesz musiał czekać na moją odpowiedź to musisz uzbroić sie w konto shell - Akasei 2017-07-04 21:40
przebywam też na kanale już nie istniejącego forum #linuksowo - Akasei 2017-07-04 21:42

Pozostało 580 znaków

2017-07-05 12:39
0

Stoję teraz przed trudnym zadaniem logistycznym, jak zezwolić powłoce (proces shell) na dostęp do bufora :)

title

Dostęp do bufora klawiatury powinno mieć okno, które jest aktywne, ale w tym momencie każdy proces wywołujący żądanie otrzyma klawisz z bufora.

Jeśli ktoś ma pojęcie, w jaki sposób to działa w Xorg - proszę o przywołanie.

PS:

bash-4.3# ./count.sh 
Rozmiar kodu źródłowego bez komentarzy i pustych linii: 5037
Całość: 10149
bash-4.3# ls -lh build/kernel 
-rw-r--r-- 1 root root 32K lip  5 12:56 build/kernel

Wszystkie liblioteki i czcionki, przeniesione zostaną do przestrzeni wspólnej, zaoszczędzi się trochę KiB (programy będą lżejsze).

PS2:

13:15 < milyges> jak w uniksie, przez wirtualne urządzenie konsoli
13:15 < milyges> shell chodzi na konsoli wirtualnej, a dane z klawiatury przesyła do niej okno konsoli
13:25 -!- jpacanowski [[email protected]] has joined #osdev.pl
13:28 -!- jpacanowski [[email protected]] has quit [Client Quit]
13:59 <+akasei> milyges: aktualnie mam tak, rize(odpowiednik X) odpala proces console, proces console tworzy urządzenie znakowe /dev/console/X i uruchamia
proces shell informując go że standardowe wyjście jest na /dev/console/X, następnie proces console interpretuje wszystko co znajdzie się w
/dev/console/X i wyświetla w swoim oknie
14:00 <+akasei> to by znaczyło że proces console musi utworzyc jeszcze jedno urządzenie (typu klawiatura) i przekazać je do procesu shell z informacją stąd
pobieraj sobie klawisze
14:01 <+akasei> dobrze kumam?
14:02 <+akasei> zatem proces console będzie pobierał klawisze z bufora klawiatury gdy będzie miał takie prawo (będzie aktywnym oknem) i zapisywął je do
urządzenia typu klawiatura ?
14:02 <+akasei> to się da zrobić :)

edytowany 7x, ostatnio: Akasei, 2019-06-16 19:41
"13:25 -!- jpacanowski" -> Oo, widzę że jestem gwiazdą tego postu, hehe... Co wejdę na kanał to nikt nic nie pisze, a tym razem co za pech - mogłem poczekać dłużej, a ominęła mnie taka ciekawa dyskusja :) - jpacanowski 2017-07-05 23:26
@jpacanowski: po to są właśnie konta shell, dostęp 24h - Akasei 2017-07-06 05:52

Pozostało 580 znaków

2017-07-05 20:54
0

Popełniłem coś lepszego w tym momencie :)

Pokaż pozostałe 13 komentarzy
@vpiotr: masz może zrzuty ekranu? - Akasei 2017-07-06 15:55
@akasei: nie, może kiedyś w przypływie nudy zrobię. Całkiem ładnie wyglądało z tego co pamiętam. - vpiotr 2017-07-06 16:10
@vpiotr: też coś takiego pisałem w TP. szkoda tylko że brakowało mi pomysłu do czego to wykorzystać. - Azarien 2017-07-06 18:47
@akasei: OBS https://obsproject.com/download Program do streamownia jednak ma możliwość nagrywania filmów w dobrej jakości i działa na linux. Jak zainstalować: https://github.com/jp9000/obs[...]ki/Install-Instructions#linux - babubabu 2017-07-06 23:51
jestem juz na ukonczeniu obslugi klawiatury w podprocesach konsoli (kazdy taki podproces dostaje własną kolejkę fifo klawiatury), aktualizacja wideo w godzinach porannych soboty lub godzinach nocnych dzis - Akasei 2017-07-07 15:49

Pozostało 580 znaków

2017-07-08 00:38
0

Gotowe, zaimplementowałem obsługę FIFO dla procesów i łączę ją z klawiaturą.

@babubabu program jest rewelacyjny, ten krótki materiał zajmuje 700 KiB....

edytowany 1x, ostatnio: Akasei, 2017-07-08 00:40
wiecęj? ;-) - Azarien 2017-07-08 10:49
teraz, skupie się na przepisywaniu wszystkich programów - czyli przywrócenie usług jądra - Akasei 2017-07-08 11:08
@akasei: @Azarienowi chodziło o to, że masz literówkę w szelu :-) - Patryk27 2017-07-08 11:12
Ty pokazujesz cuda jakie stworzyłeś, w nocy zmęczony wstawiasz na YT, a oni się skupiają w filmiku na literkach i ortografii :D - jpacanowski 2017-07-08 18:09
No i piksele oczu nie wybijają :D - babubabu 2017-07-08 22:11

Pozostało 580 znaków

2017-07-10 21:15
1

Więc tak... zawiodłem się na instrukcji procesora :D

Najpierw:
title

Zatem, jeśli nie jestem po prostu zmęczony to znalazłem błąd w działaniu instrukcji btr.
Na zrzucie widać, że pobrałem najmłodszy ustawiony bit z zespołu komórek w qword [rsi] i jego numer załadowałem do akumulatora oraz wykonałem reset bitu nr 11 (numer w rejestrze rax) w komórce pamięci pod adresem 0x10B0A8. Do tej pory działało poprawnie, jak widać po wcześniejszych Bajtach w pamięci.

Ale! Teraz instrukcja btr zachowała tylko znak bitu w fladze CF i zostawiła bit nadal ustawiony w komórce pamięci :(

Może coś przeoczyłem... więc idę się przespać.

BTW: procedura wykonująca tą operację jest jedną z głównych (pobiera wolną stronę z binarnej mapy pamięci...)

edytowany 2x, ostatnio: Akasei, 2019-06-16 19:41
BSF nie zmienia czasem wartości w RSI przeszukując bity w pamięci ? Niby nie powinna :P - devport 2017-07-10 22:10
szkoda że zakrywasz bajty instrukcji. - Azarien 2017-07-10 22:36
Opis już nie jeden sprawdzałem :P i nic nie piszą o zmianie RSI - devport 2017-07-11 09:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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