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.)
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
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
otworzenie okna np. "console" i powielenie klawisza "enter" powtarza kliknięcie myszką w menu (które jest już ukryte).
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.
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.
brak generatora liczb losowych
zoptymalizować rozmiar przestrzeni pakietów ARP i ICMP w przestrzeni jądra systemu
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
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 -_-
1 sekunda trwa zbyt długo ;)
prawdopodobnie zła konfiguracja kontrolera RTC
kernel\init\rtc.asm
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 ;)
brak obsługi otrzymywanych jak i wysyłanych danych o rozmiarze większym niż ramka Ethernet
brak możliwości otworzenia większej ilości programów
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
Hi Andrzej, do you want a GUI design?
How can I port the Doom game to CyjonOS?
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...
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.
Fern-Night - arrow keys are working,
Cyjon - nope...
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:
; [...]
I already know how to do it :)
Although I once wrote in Cyjon transparent window support (https://www.youtube.com/watch?v=cidKvpEcpH0) it was only ONE window.
Now it dawned on me how to do it for a larger quantity (windows) without losing that much in performance 👍
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
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!
brak obsługi więcej niż 1 pakietu na raz przez kontroler sieciowy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.