Code Monkey home page Code Monkey logo

corruptedbycpu / cyjon Goto Github PK

View Code? Open in Web Editor NEW
411.0 411.0 27.0 15.03 MB

A simple, clean code, multi-tasking kernel written in pure Assembly language for 64-bit processors from the AMD64 family.

Home Page: https://blackdev.org

License: GNU General Public License v3.0

Assembly 98.52% Shell 1.31% HTML 0.16%
64bit amd64 asm assembly assembly-language bootloader console cyjon gui kernel nasm operating-system os osdev shell system-programming window-manager wm x86-64

cyjon's Introduction

Welcome!

Foton/Cyjon/Fern-Night is a simple project of multitasking operating system for 64-bit processors from x86_64 family.

A system that is detached from reality. Fully resident in memory. (Yep, no installation on hard drive needed.)

Foton v0.243

cyjon's People

Contributors

corruptedbycpu avatar masterneko avatar phcoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cyjon's Issues

wm

odpalenie 4-go okna powoduje kaskad臋

obraz

binary memory map

the binary memory map describes only one space, starting with the physical address 0x00100000
process the rest of the memory map entries and describe them in a binary memory map

kernel_page_merge

je艣li stos kontekstu rodzica jest wi臋kszy... to jest problem....
zlokalizowa膰 pocz膮tek stosu kontekstu rodzica i poinformowa膰 procedur臋 o pomini臋ciu tej przestrzeni

Boot Black Screen Problem

When I want to flash the cyjon.img file and try it on my own computer, the screen just gets black.

By the way, I'm sorry for my english -_-

Please don't give up on assembly!

I am sure you have many valid reasons to use C, but may I suggest that you stay in asm?

So many low-level concepts are more succinctly expressed in assembly! Just look at the layers and layers of C headers required to wrap around the hardware registers alone - something which is a given in assembly.

If that does not convince you, consider that right now this is a unique and valuable project. Convert it to C and with will be just another half-baked hobby OS!

Either way, thank you for your work!

race condition of APs

occurs: spontaneously, when more than 1 cpu core is used

find why task_ap_address[ cpu_id ] doesn't contain task pointer at kernel_task
it might be race condition at AP initialization -_-
bypass created. is safe for system

kernel_task:

	; [...]

	; bug, AP doesn't have information about currently executed task?
	test	r10,	r10
	jnz	.ok

	; set initial task as closed
	mov	r10,	qword [r8 + KERNEL_STRUCTURE.task_queue_address]

.ok:

	; [...]

FPU

Ok, I need some help with file fpu.asm

Procedure soler_fpu_float_to_fraction, should return INTEGER from FRACTION

eg.

in:
soler_fpu_precision	dq	4	; convert max 4 digits after "."
soler_fpu_float_result	dq	5.076	; float

out:
soler_fpu_precision	dq	3	; integer
soler_fpu_fraction	dq	76	; integer

soler_fpu_precision contains number of digits after "."
soler_fpu_fraction contains integer of 076

FPU is hard to digest for me, and Bochs doesn't help with that...

Some explanation:

; this procedure wil change X to ZERO in variable soler_fpu_float_result
call	soler_fpu_float_only	; X.Y > 0.Y

clean exec

Ze wzgl臋du na procedur臋 wczytywania pliku do przestrzeni pami臋ci w pliku kernel/exec.asm
system nie gwarantuje czystego stosu podczas pierwszego uruchomienia procesu, co za tym idzie - w rejestrach r8-r15 mog膮 znajdowa膰 si臋 艣mieci.

sie膰, interfejs

brak obs艂ugi wi臋cej ni偶 1 pakietu na raz przez kontroler sieciowy

make script gives me error.

Hello, I just cloned the git repo and installed nasm and qemu and qemu-system-x86-x64 (or something like that). but when I ran the
make.sh it gave me

kernel/stream.asm:80: error: symbol `kernel_stream_set.process_run_end' undefined
kernel/stream.asm:82: error: label `kernel_stream_set.process_run_no_copy_out_to_parent' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:109: error: label `kernel_stream_set.process_run_ready' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:127: error: label `kernel_stream' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:137: error: label `kernel_stream.1' changed during code generation [-w+error=label-redef-late]
kernel/macro/lock.asm:12: ... from macro `macro_lock' defined here [-w+error=label-redef-late]
kernel/stream.asm:139: error: label `kernel_stream.reload' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:143: error: label `kernel_stream.search' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:183: error: label `kernel_stream.error' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:190: error: label `kernel_stream.found' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:220: error: label `kernel_stream.end' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:235: error: label `kernel_stream_release' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:240: error: label `kernel_stream_release.1' changed during code generation [-w+error=label-redef-late]
kernel/macro/lock.asm:12: ... from macro `macro_lock' defined here [-w+error=label-redef-late]
kernel/stream.asm:265: error: label `kernel_stream_receive' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:275: error: label `kernel_stream_receive.1' changed during code generation [-w+error=label-redef-late]
kernel/macro/lock.asm:12: ... from macro `macro_lock' defined here [-w+error=label-redef-late]
kernel/stream.asm:293: error: label `kernel_stream_receive.load' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:314: error: label `kernel_stream_receive.continue' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:326: error: label `kernel_stream_receive.close' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:336: error: label `kernel_stream_receive.end' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:356: error: label `kernel_stream_insert' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:364: error: label `kernel_stream_insert.retry' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:366: error: label `kernel_stream_insert.1' changed during code generation [-w+error=label-redef-late]
kernel/macro/lock.asm:12: ... from macro `macro_lock' defined here [-w+error=label-redef-late]
kernel/stream.asm:374: error: label `kernel_stream_insert.next' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:385: error: label `kernel_stream_insert.insert' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:402: error: label `kernel_stream_insert.continue' changed during code generation [-w+error=label-redef-late]
kernel/stream.asm:417: error: label `kernel_stream_insert.end' changed during code generation [-w+error=label-redef-late]
kernel/sleep.asm:10: error: label `kernel_sleep' changed during code generation [-w+error=label-redef-late]
kernel/driver/rtc.asm:47: error: label `driver_rtc_semaphore' changed during code generation [-w+error=label-redef-late]
kernel/driver/rtc.asm:49: error: label `driver_rtc_microtime' changed during code generation [-w+error=label-redef-late]
kernel/driver/rtc.asm:51: error: label `driver_rtc_date_and_time' changed during code generation [-w+error=label-redef-late]
kernel/driver/rtc.asm:55: error: label `driver_rtc' changed during code generation [-w+error=label-redef-late]
kernel/driver/rtc.asm:78: error: label `driver_rtc_get_date_and_time' changed during code generation [-w+error=label-redef-late]
./make.sh: line 15: build/kernel: No such file or directory
zero/storage.asm:28: error: expression syntax error
./make.sh: line 18: build/zero: No such file or directory
bootsector.asm:59: error: expression syntax error
disk.asm:12: error: `incbin': unable to get length of file `build/bootsector'
disk.asm:17: error: `incbin': unable to get length of file `build/zero'
disk.asm:22: error: `incbin': unable to get length of file `build/kernel'

What does this mean, I'm not fimiliar with nasm that much.
nor with qemu. please help.

floating point numbers

If window manager is using image scaling function (wallpaper) then unfortunately the application crashes.

This problem only occurs in Cyjon, although the configuration of the processor options for handling floating point registers is the same at Fern-Night.

image

zamkni臋cie programu

w Qemu, zamkni臋cie programu 6 razy, generuje wyj膮tek procesora
zlokalizowa艂em procedur臋:
kernel_page_map_logical podczas tworzenia procesu
wska藕nik wyj艣cia z tej procedury "ret" zosta艂 podmieniony...

workspace logical address change

right now:
0x0000000000000000 - software stack
0x0000000000100000 - kernel
0x0000800000000000 - kernel stack / context switch stack
0xFFFF800000000000 - software

to be:
0x0000000000000000 - software
0x0000400000000000 - software stack
0x0000400000000000 - open space
0x0000600000000000 - libraries
0x0000700000000000 - kernel
0x0000800000000000 - kernel stack / context switch stack

changing the space for this model will reduce the kernel code and programs by several Bytes ;)

Won't build

minivac2:~/cyjon/Cyjon$ nasm -f bin kernel/library.asm -o build/library
kernel/library/bosu/header.asm:9: error: symbol LIBRARY_BOSU_WINDOW_NAME_length' redefined kernel/library/bosu/header.asm:10: error: symbol LIBRARY_BOSU_WINDOW_BACKGROUND_color' redefined
kernel/library/bosu/header.asm:12: error: symbol LIBRARY_BOSU_WINDOW_BORDER_THICKNESS_pixel' redefined kernel/library/bosu/header.asm:13: error: symbol LIBRARY_BOSU_WINDOW_BORDER_color' redefined
kernel/library/bosu/header.asm:16: error: symbol LIBRARY_BOSU_WINDOW_FLAG_flush' redefined kernel/library/bosu/header.asm:18: error: symbol LIBRARY_BOSU_WINDOW_FLAG_visible' redefined
kernel/library/bosu/header.asm:19: error: symbol LIBRARY_BOSU_WINDOW_FLAG_fixed_xy' redefined kernel/library/bosu/header.asm:20: error: symbol LIBRARY_BOSU_WINDOW_FLAG_fixed_z' redefined
kernel/library/bosu/header.asm:21: error: symbol LIBRARY_BOSU_WINDOW_FLAG_fragile' redefined kernel/library/bosu/header.asm:22: error: symbol LIBRARY_BOSU_WINDOW_FLAG_arbiter' redefined
kernel/library/bosu/header.asm:23: error: symbol LIBRARY_BOSU_WINDOW_FLAG_transparent' redefined ...kernel/library/bosu/header.asm:171: error: symbol LIBRARY_BOSU_STRUCTURE_ELEMENT_CHAIN_size' redefined
kernel/library/terminal/header.asm:9: error: symbol LIBRARY_TERMINAL_STRUCTURE' redefined kernel/library/terminal/header.asm:24: error: symbol LIBRARY_TERMINAL_STRUCTURE_size' redefined
kernel/library/terminal/header.asm:26: error: symbol LIBRARY_TERMINAL_STURCTURE_CURSOR' redefined kernel/library/terminal/header.asm:29: error: symbol LIBRARY_TERMINAL_STURCTURE_CURSOR_size' redefined

sie膰, arp, icmp

zoptymalizowa膰 rozmiar przestrzeni pakiet贸w ARP i ICMP w przestrzeni j膮dra systemu

Redraw window outlines when moving them

This is a pretty cool project and after playing around with it for a few minutes, I noticed that when moving a window, the entire window is redrawn until the cursor is let go of. I recommend instead for the good old windows 95 approach of only drawing the window outlines when moving them. I think this will make it faster and smoother.

duplikaty okien

otworzenie okna np. "console" i powielenie klawisza "enter" powtarza klikni臋cie myszk膮 w menu (kt贸re jest ju偶 ukryte).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    馃枛 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 馃搳馃搱馃帀

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google 鉂わ笍 Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.