Cyjon OS

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

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 19x, ostatnio: akasei, 2017-08-25 14:39
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

2015-08-14 14:22
2

Kod źródłowy systemu operacyjnego Cyjon OS (jak i on sam), zostanie wydany na licencji CC SA-NC-ND.
Wszelkie modyfikacje/poprawki/usprawnienia będzie można wprowadzać tylko za pomocą oficjalnych narzędzi np. Git.

Udostępniłem na licencji CC BY-NC-ND pierwszą część kodu źródłowego systemu operacyjnego Cyjon OS
Blisko 6 tyś linii kodu wraz z komentarzami.
https://github.com/akasei/Cyjon

Zapraszam do przeglądania.


edytowany 2x, ostatnio: akasei, 2015-08-18 21:08

Pozostało 580 znaków

2015-08-18 22:20
carramba_nielogowany
0

"Oby slady stóp twoich przetrwały na piasku"

Widzę czcionkę, którą kiedyś stworzyłem kopiując z zxspectrum a potem podarowałem w przypływie pijaństwa akasei :)

Miło przy okazji zobaczyć mnóstwo nowych twarzy i pozdrowienia dlawszystkich (i zielonego pq) :)

Pozostało 580 znaków

2015-08-19 18:29
0

Udostępniłem drugą część kodu źródłowego, zapraszam do przeglądania.


Pozostało 580 znaków

2015-08-19 21:27
1

@akasei: zakładam że pytałeś o to czy zajrzałem do kodu.

Nic na tyle zaawansowanego w ASM nie pisałem, więc tylko kilka porad natury ogólnej.

1) Komentarze.

  • Jest ich dużo, szkoda tylko że po polsku. Blokuje to dostęp programistom spoza Polski (jest ich ok. 150x więcej zakładając podobny rozkład wszędzie).
  • czasami przesadzasz (piszesz oczywistości):
 
    ; kontynuuj z pozostałymi fragmentami
    loop    .loop
 
        ; powrót z procedury
    ret

Takie komentarze nie pomagają w czytaniu kodu.

2) W wielu miejscach nie używasz stałych:

        shr eax,    9   ; /512
 
... w tym samym pliku dalej
 
    ; zamień na pozostałą ilość sektorów do załadowania
    shr eax,    9

Zamiast tego powinno się dać zrobić:

        SECTOR_CNT equ 9
        shr eax,    SECTOR_CNT

3) dokumentacja:

  • w readme powinno znaleźć się:
    a) wymagania sprzętowe
    b) przetestowane platformy (w tym wirtualne)
    c) adres www projektu
    d) wymagania softwarowe, np. wersja nasm, ew. adres www do kompilatora, wersja i rodzaj OS do kompilacji

  • brakuje katalogu \doc, a w nim:
    a) opis katalogów projektu
    b) opis zaimplementowanych komend
    c) lista znanych błędów oprogramowania (niekoniecznie - jeśli jest to prowadzone w github)
    d) opis komunikatów błędów (jeśli jakieś są): kod, treść, znaczenie

4) marketing: dodaj zrzut ekranu do katalogu \doc i podłącz do README.md na github.

Pokaż pozostałe 10 komentarzy
Udostępniłem trzecią część kodu źródłowego systemu Cyjon OS. - akasei 2015-08-21 22:19
@vpiotr: po części uzupełniłem :) - akasei 2015-08-23 19:57
przydałby się makefile. Każdy Linux ma make. Lista pasujących celów: test, all, clean. Patrz https://www.gnu.org/software/make/manual/html_node/Goals.html oraz http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_4.html - vpiotr 2015-08-23 23:13
@vpiotr: utworzyłem prosty Makefile, lepsze to niż nic :) - akasei 2015-08-24 08:31

Pozostało 580 znaków

2015-08-25 19:47
0

1) użyj make w readme
2) w plikach powinna być chociaż 1-liniowa informacja czego dotyczy dany plik, przykład: key_delete.asm: zawiera 14 linii wstępu i w żadnej nie ma takiej informacji

BTW, do kupienia jest nowe ZX, za jedyne 582 zł ;-)
http://www.zxvega.co.uk/

(myślę czy się nie skusić)

jestem zwolennikiem C64 ;) - akasei 2015-08-25 20:14
make dopisany, a co do komentarza - nazwa pliku mówi sama za siebie - akasei 2015-08-26 11:48
PS: poszukuję edytora tekstowego (ide), w którym mogę zdefiniować rozmiary kolejnych tabulatorów w linii, aktualnie korzystam z Geany (gdzie nie ma takiej funkcji) - akasei 2015-08-26 14:22

Pozostało 580 znaków

2015-12-21 05:18
10

Ja dalej żyję :)

user image

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


edytowany 4x, ostatnio: akasei, 2016-01-05 23:54
Pokaż pozostałe 11 komentarzy
interfejs nie będzie chyba trudny :D - akasei 2016-01-03 18:52
tekst wstawiony do okna jest automatycznie załamywany jeśli cały wyraz nie mieści się w oknie, okno message jest napisane naprędce - akasei 2016-01-03 18:54
tak samo musiałem napisać sobie program do tablicy kolorów z kodami, już mi się w głowie informacje nie mieszczą (mylą) - akasei 2016-01-03 18:54
funkcje do tworzenia okienek wywaliłem na zew. do liblioteki, teraz każdy program może z niej korzystać - akasei 2016-01-05 23:55
pora się wziąć za menu wyboru :D (będzie hardcore) - akasei 2016-01-06 00:01

Pozostało 580 znaków

2016-05-24 13:04
0

Jak tam prace nad systemem? :)

Pozostało 580 znaków

2016-05-24 18:00
11

Skupiam się na obsłudze sieci, mogę odbierać i wysyłać ramki Ethernet, odpowiadać na zapytania ARP (czyli, ktoś pyta o adres MAC interfejsu skonfigurowanej dla danego adresu IP).
Niedawno mogłem mieć już gotowe odpowiedzi na protokole ICMP, ale okazało się że takowe ramki nie dochodzą do maszyny wirtualnej. Po prostu cisza, Wireshark jasno dawał mi do zrozumienia, że krążą po sieci, ale wirtualka krzyczy "basta".
Więc na razie rezygnuje z ICMP, i idę głębiej w IP>TCP, same podstawy by obsłużyć protokół HTTP.

user image

Ha! Stało się zadość :)

Pingi działają!
user image

PS: nie piszę stosu TCP/IP, dopóki nie obsłużę choćby połowicznie HTTP.

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


edytowany 6x, ostatnio: akasei, 2017-02-28 17:21
Pokaż pozostałe 2 komentarze
nie wydaje mi się to dobrym rozwiązaniem. - Azarien 2016-05-26 01:34
chcę tylko zobaczyć jak Cyjon się ze mną wita przez przeglądarkę :D wtedy wezmę się na poważnie ;) (przynajmniej będzie doświadczenie już za pasem) - akasei 2016-05-26 01:41
udało się, otrzymuję już wszystkie pakiety, nawet ICMP :) teraz wirtualna dioda na karcie sieciowej "mryga" jak szalona xD - akasei 2016-05-27 01:02
długo nie trzeba było czekać :) idę sobie w nagrodę pograć w wiedźmina (krew i wino zamówione) - akasei 2016-05-27 23:25
jestem już w trakcie tworzenia obsługi protokołu http - akasei 2016-05-29 22:26

Pozostało 580 znaków

2016-06-11 16:40
1
akasei napisał(a):

Aktualizacja 11.06.2016

Nie rób w ten sposób, pisz nowego posta.

Jedna uwaga: czy piszesz kod tak by był thread-safe? Będzie ci potem łatwiej gdy dodasz obsługę wątków (nie wiem czy już masz) i wielordzeniowości.

Trzymam się zasady, aby nie pisać pod własnymi postami (chyba, że dostanę przyzwolenie od moderatora). - akasei 2016-06-11 16:45
Jezeli jest dlugi odstep czasu to smialo pisz - fasadin 2016-06-11 16:53
Na tym forum nie ma żadnego zakazu pisania pod własnymi postami, więc trudno tu na coś przyzwalać w tej kwestii. :) Owszem, zdarza się, że scalamy posty, ale raczej wtedy, gdy ktoś napisze 3 posty w ciągu kilku minut, a nie jeśli będą między nimi wielodniowe przerwy. W takiej sytuacji wątek się nie odświeża, więc nikt nie wie, że coś napisałeś. - somekind 2016-06-11 16:56
No dobra, cokolwiek nie zmodyfikowałem to chyba osoby, które włączyły sobie obserwację - dostaną wiadomość :) ? - akasei 2016-06-11 17:11
@akasei, tym bardziej, że ten wątek jest jak blog - co jakiś czas chcesz zaprezentować dodane nowości, więc piszesz nowy post; Jak będzie w kółko edytował jeden post to nikt się o tym nie dowie, bo Twój wątek nie zostanie podbity na początek listy wątków w kategorii; - furious programming 2016-06-11 17:13

Pozostało 580 znaków

2016-06-11 20:06
0

Gdyby, ktoś nie widział czym jest Cyjon :)
user image


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę