Skip to content

Commit 1932630

Browse files
authored
Merge pull request #3 from Glowman554/dev
Added support for kernel modules, ac97 and shebangs
2 parents 23574cc + d77b07b commit 1932630

File tree

528 files changed

+4899
-6004
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

528 files changed

+4899
-6004
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111

1212
strategy:
1313
matrix:
14-
preset: [ default, full_screen_terminal, network, network_full_screen_terminal, desktop ]
14+
preset: [ default, full_screen_terminal, network, network_full_screen_terminal ]
1515

1616
runs-on: ubuntu-latest
1717

@@ -35,7 +35,7 @@ jobs:
3535
git config --global user.email "[email protected]"
3636
git config --global user.name "Glowman554"
3737
- name: release
38-
run: MESSAGE_WEBHOOK=${{ secrets.MESSAGE_WEBHOOK }} bash release.sh ${{ matrix.preset }} "${{ github.event.head_commit.message }}"
38+
run: MESSAGE_WEBHOOK=${{ secrets.MESSAGE_WEBHOOK }} MICROOS_BUILD_TOKEN=${{ secrets.MICROOS_BUILD_TOKEN }} bash release.sh ${{ matrix.preset }} "${{ github.event.head_commit.message }}"
3939
- uses: actions/upload-artifact@v4
4040
with:
4141
name: build-${{ matrix.preset }}

.vscode/targets.log

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ PWD = /home/janick/Development/MicroOS
4141
# automatic
4242
%D = $(patsubst %/,%,$(dir $%))
4343
# environment
44-
XDG_DATA_DIRS = /usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/desktop
44+
XDG_DATA_DIRS = /usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/gui
4545
# environment
4646
KONSOLE_DBUS_WINDOW = /Windows/1
4747
# automatic
@@ -51,7 +51,7 @@ KONSOLE_DBUS_WINDOW = /Windows/1
5151
# environment
5252
VSCODE_CODE_CACHE_PATH = /home/janick/.config/Code/CachedData/3b889b090b5ad5793f524b5d1d39fda662b96a2a
5353
# environment
54-
XDG_SESSION_PATH = /org/freedesktop/DisplayManager/Session1
54+
XDG_SESSION_PATH = /org/freegui/DisplayManager/Session1
5555
# environment
5656
LANG = C
5757
# environment
@@ -85,7 +85,7 @@ XDG_CONFIG_DIRS = /home/janick/.config/kdedefaults:/etc/xdg/xdg-plasma:/etc/xdg:
8585
# environment
8686
XCURSOR_THEME = KDE_Classic
8787
# environment
88-
XDG_SESSION_DESKTOP = KDE
88+
XDG_SESSION_GUI = KDE
8989
# makefile (from 'Makefile', line 1)
9090
MAKEFILE_LIST := Makefile
9191
# automatic
@@ -99,7 +99,7 @@ XDG_SESSION_TYPE = x11
9999
# automatic
100100
*F = $(notdir $*)
101101
# environment
102-
CHROME_DESKTOP = code-url-handler.desktop
102+
CHROME_GUI = code-url-handler.gui
103103
# environment
104104
DBUS_SESSION_BUS_ADDRESS = unix:path=/run/user/1000/bus
105105
# automatic
@@ -143,17 +143,17 @@ XDG_SEAT = seat0
143143
# environment
144144
NO_PROXY = 127.0.0.1
145145
# environment
146-
XDG_CURRENT_DESKTOP = KDE
146+
XDG_CURRENT_GUI = KDE
147147
# environment
148148
LS_COLORS = rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
149149
# automatic
150150
+F = $(notdir $+)
151151
# environment
152-
XDG_SEAT_PATH = /org/freedesktop/DisplayManager/Seat0
152+
XDG_SEAT_PATH = /org/freegui/DisplayManager/Seat0
153153
# environment
154-
DESKTOP_SESSION = plasma
154+
GUI_SESSION = plasma
155155
# environment
156-
ORIGINAL_XDG_CURRENT_DESKTOP = KDE
156+
ORIGINAL_XDG_CURRENT_GUI = KDE
157157
# 'override' directive
158158
GNUMAKEFLAGS :=
159159
# environment

Makefile

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ include config.mk
33
all: res
44
make -C mckrnl
55
make -C user
6-
ifeq ($(DESKTOP),1)
7-
make -C desktop
6+
ifeq ($(GUI),1)
7+
make -C gui
88
endif
99

1010
NETDEV = e1000
1111

1212
QEMU_FLAGS = -m 2G -cdrom cdrom.iso -boot d -hda res/foxos.img
1313
QEMU_FLAGS += -netdev user,id=u1 -device $(NETDEV),netdev=u1 -object filter-dump,id=f1,netdev=u1,file=dump.pcap
1414
# QEMU_FLAGS += -soundhw pcspk
15+
ifeq ($(AUDIO),1)
16+
QEMU_FLAGS += -audio driver=pipewire,model=ac97
17+
endif
1518
QEMU_FLAGS += -smp 4
1619

1720
ifdef REMOTE
@@ -27,24 +30,24 @@ endif
2730
initrd.saf:
2831
mkdir -p ./res/initrd/bin
2932
cp -r ./user/bin/*.mex ./res/initrd/bin/ -v
30-
ifeq ($(DESKTOP),1)
31-
cp -r ./desktop/bin/*.mex ./res/initrd/bin/ -v
32-
mkdir -p ./res/initrd/opt/desktop
33-
cp -r ./desktop/resources/* ./res/initrd/opt/desktop
34-
mkdir -p ./res/initrd/opt/desktop/bin
35-
cp -r ./desktop/bin/*.flbb ./res/initrd/opt/desktop/bin/ -v
33+
ifeq ($(GUI),1)
34+
cp -r ./gui/bin/*.mex ./res/initrd/bin/ -v
35+
mkdir -p ./res/initrd/opt/gui/bin
36+
cp -r ./gui/bin/*.flbb ./res/initrd/opt/gui/bin/ -v
3637
endif
3738
cp -r ./initrd/* ./res/initrd/ -v
3839
cp LICENSE ./res/initrd/LICENSE -v
3940
mkdir -p ./res/initrd/docs
4041
cp *.md ./res/initrd/docs/. -v
4142
mkdir -p ./res/initrd/EFI/BOOT
42-
cp mckrnl/mckrnl.* ./res/initrd/EFI/BOOT/. -v
43+
cp mckrnl/core/mckrnl.* ./res/initrd/EFI/BOOT/. -v
44+
mkdir -p ./res/initrd/modules
45+
cp mckrnl/modules/* ./res/initrd/modules/. -v
4346
./res/saf/saf-make ./res/initrd ./res/initrd.saf
4447

4548
iso: all initrd.saf
46-
cp mckrnl/mckrnl.elf cdrom/.
47-
cp mckrnl/mckrnl.syms cdrom/.
49+
cp mckrnl/core/mckrnl.elf cdrom/.
50+
cp mckrnl/core/mckrnl.syms cdrom/.
4851
cp res/initrd.saf cdrom/.
4952
cp LICENSE cdrom/.
5053
grub-mkrescue -o cdrom.iso cdrom/
@@ -85,16 +88,16 @@ run_dbg: iso
8588
run_vnc: iso set_kvm
8689
qemu-system-i386 $(QEMU_FLAGS) -s -vnc :1
8790

88-
EXECUTABLE = mckrnl/mckrnl.elf
91+
EXECUTABLE = mckrnl/core/mckrnl.elf
8992

9093
debug:
9194
gdb -ex "symbol-file $(EXECUTABLE)" -ex "target remote localhost:1234" -ex "b _main"
9295

9396
clean: iso
9497
make -C mckrnl clean
9598
make -C user clean
96-
ifeq ($(DESKTOP),1)
97-
make -C desktop clean
99+
ifeq ($(GUI),1)
100+
make -C gui clean
98101
endif
99102

100103
deepclean:
@@ -107,19 +110,20 @@ libs.zip: all
107110
cp user/libc/include/* res/libs/include/. -rf
108111
cp user/libtinf/include/* res/libs/include/. -rf
109112
cp user/libflvm/include/* res/libs/include/. -rf
113+
cp user/libjson/include/* res/libs/include/. -rf
110114

111-
ifeq ($(DESKTOP),1)
112-
cp desktop/lib/* res/libs/. -rf
113-
cp desktop/libwindow/include/* res/libs/include/. -rf
115+
ifeq ($(GUI),1)
116+
cp gui/lib/* res/libs/. -rf
117+
cp gui/libwindow/include/* res/libs/include/. -rf
114118
endif
115119

116120
zip -r libs.zip res/libs/
117121

118122
compile_flags.txt:
119123
make -C mckrnl compile_flags.txt
120124
make -C user compile_flags.txt
121-
ifeq ($(DESKTOP),1)
122-
make -C desktop compile_flags.txt
125+
ifeq ($(GUI),1)
126+
make -C gui compile_flags.txt
123127
endif
124128

125129
pre_commit:

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ You can test it right in your browser [here](https://glowman554.de/microos)
1717

1818
- [ImDaBigBoss](https://github.com/ImDaBigBoss) for making the [terminal](https://github.com/TheUltimateFoxOS/FoxOS-programs/tree/main/terminal)
1919
- ChaN for making [fatfs](http://elm-chan.org/fsw/ff/00index_e.html)
20+
- [Marcel](https://github.com/marceldobehere) for creating the [audio driver](https://github.com/marceldobehere/MaslOS-2/tree/main/kernel/devices/ac97)

SYSCALLS.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
| SYS_SOCK_DISCONNECT | 0x1b | socket_id | &async | - | - | - |
3030
| SYS_SOCK_SEND | 0x1c | socket_id | &data | size | - | - |
3131
| SYS_SOCK_RECV | 0x1d | socket_id | &async | &data | size | bytes (return) |
32-
| SYS_SOUND_RUN | 0x1e | &coro | &context | - | - | - |
3332
| SYS_TIME | 0x1f | time (return) | - | - | - | - |
3433
| SYS_SET_COLOR | 0x20 | color | background | - | - | - |
3534
| SYS_ASYNC_GETARRW | 0x21 | a (return) | - | - | - | - |
@@ -46,3 +45,7 @@
4645
| SYS_IPV4_RESOLVE_ROUTE | 0x2c | nic | &async | ip | &mac (return) | - |
4746
| SYS_SOCK_SET_LOCAL_PORT | 0x2d | socket_id | port | - | - | - |
4847
| SYS_MMAP_MAPPED | 0x2e | addr | mapped | - | - | - |
48+
| SYS_SOUND_WRITE_PCM | 0x2f | &buffer | size | bytes_written (return) | - | - |
49+
| SYS_SOUND_GET_SAMPLE_RATE | 0x30 | sample_rate (return) | - | - | - | - |
50+
| SYS_SET_PIPE | 0x31 | pid | pipe | output | - | - |
51+
| SYS_RGB_COLOR | 0x32 | color | background | - | - | - |

cdrom/boot/grub/grub.cfg

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,37 @@ set timeout=5
22
set default=0
33

44
menuentry "MicroOS" {
5-
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --syms=/mckrnl.syms --init=initrd:/bin/init.mex
5+
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --modules=/initrd.saf:/modules --syms=/mckrnl.syms --init=initrd:/bin/init.mex
66
module /initrd.saf /initrd.saf
77
module /mckrnl.syms /mckrnl.syms
88
boot
99
}
1010

1111

1212
menuentry "MicroOS (Live)" {
13-
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --syms=/mckrnl.syms --init=initrd:/bin/init.mex --init-arg=tmpfs
13+
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --modules=/initrd.saf:/modules --syms=/mckrnl.syms --init=initrd:/bin/init.mex --init-arg=tmpfs
1414
module /initrd.saf /initrd.saf
1515
module /mckrnl.syms /mckrnl.syms
1616
boot
1717
}
1818

1919
menuentry "MicroOS (Live, gdb)" {
20-
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --syms=/mckrnl.syms --init=initrd:/bin/init.mex --gdb --init-arg=tmpfs
20+
multiboot /mckrnl.elf --serial --initrd=/initrd.saf --modules=/initrd.saf:/modules --syms=/mckrnl.syms --init=initrd:/bin/init.mex --gdb --init-arg=tmpfs
2121
module /initrd.saf /initrd.saf
2222
module /mckrnl.syms /mckrnl.syms
2323
boot
2424
}
2525

2626
menuentry "MicroOS (Live, No serial)" {
27-
multiboot /mckrnl.elf --initrd=/initrd.saf --syms=/mckrnl.syms --init=initrd:/bin/init.mex --init-arg=tmpfs
27+
multiboot /mckrnl.elf --initrd=/initrd.saf --modules=/initrd.saf:/modules --syms=/mckrnl.syms --init=initrd:/bin/init.mex --init-arg=tmpfs
2828
module /initrd.saf /initrd.saf
2929
module /mckrnl.syms /mckrnl.syms
3030
boot
3131
}
3232

3333
menuentry "MicroOS (Installed)" {
34-
multiboot /mckrnl.elf --serial --syms=/mckrnl.syms --init=MicroOS:/bin/init.mex
34+
multiboot /mckrnl.elf --serial --syms=/mckrnl.syms --modules=/initrd.saf:/modules --init=MicroOS:/bin/init.mex
35+
module /initrd.saf /initrd.saf
3536
module /mckrnl.syms /mckrnl.syms
3637
boot
3738
}

config.mk

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
# Build configuration
2-
# Desktop
3-
# DESKTOP = 0
2+
# Gui
3+
# GUI = 0
44
# FIRESTORM = 0
5-
# End Desktop
5+
# End Gui
6+
7+
# Other
8+
ABI_VERSION = 4
9+
# End Other
610

711
# Syscalls
812
SYS_OPEN_ID = 1
@@ -32,7 +36,6 @@ SYS_SOCK_CONNECT_ID = 26
3236
SYS_SOCK_DISCONNECT_ID = 27
3337
SYS_SOCK_SEND_ID = 28
3438
SYS_SOCK_RECV_ID = 29
35-
SYS_SOUND_RUN_ID = 30
3639
SYS_TIME_ID = 31
3740
SYS_SET_COLOR_ID = 32
3841
SYS_ASYNC_GETARRW_ID = 33
@@ -49,6 +52,10 @@ SYS_SET_TERM_ID = 43
4952
SYS_IPV4_RESOLVE_ROUTE_ID = 44
5053
SYS_SOCK_SET_LOCAL_PORT_ID = 45
5154
SYS_MMAP_MAPPED_ID = 46
55+
SYS_SOUND_WRITE_PCM_ID = 47
56+
SYS_SOUND_GET_SAMPLE_RATE_ID = 48
57+
SYS_SET_PIPE_ID = 49
58+
SYS_RGB_COLOR_ID = 50
5259
# End Syscalls
5360

5461
# End Build configuration

config/build.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
{
77
"name": "Experimental",
88
"value": {
9-
"title": "Desktop",
9+
"title": "Gui",
1010
"items": [
1111
{
12-
"name": "DESKTOP",
12+
"name": "GUI",
1313
"value": false
1414
},
1515
{
@@ -18,6 +18,18 @@
1818
}
1919
]
2020
}
21+
},
22+
{
23+
"name": "Other",
24+
"value": {
25+
"title": "Other",
26+
"items": [
27+
{
28+
"name": "ABI_VERSION",
29+
"value": 4
30+
}
31+
]
32+
}
2133
}
2234
]
2335
}

config/kernel.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"file": "mckrnl/include/config.h",
2+
"file": "mckrnl/core/include/config.h",
33
"configuration": {
44
"title": "Kernel configuration",
55
"items": [
@@ -34,7 +34,7 @@
3434
},
3535
{
3636
"name": "STACK_TRACE",
37-
"value": false
37+
"value": true
3838
},
3939
{
4040
"name": "EARLY_SERIAL_DEBUG",
@@ -120,10 +120,6 @@
120120
"name": "THREADS",
121121
"value": false
122122
},
123-
{
124-
"name": "AHCI_DRIVER",
125-
"value": false
126-
},
127123
{
128124
"name": "NETWORK_STACK",
129125
"value": false
@@ -191,6 +187,10 @@
191187
{
192188
"name": "FAST_MEMORY",
193189
"value": true
190+
},
191+
{
192+
"name": "ABI_VERSION",
193+
"value": 4
194194
}
195195
]
196196
}

config/presets/desktop.build.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)