From 4bf79e358a396d4cffb3f804791942598aa7ef57 Mon Sep 17 00:00:00 2001 From: Martin Petr Date: Sat, 22 Nov 2025 23:43:42 +0100 Subject: [PATCH] Add shell and echo app --- src/os/src/config/keyboard.ts | 4 ++++ src/os/src/oskrnl/app/launcher.ts | 8 ++++++++ src/os/src/oskrnl/index.ts | 3 +++ test-hdd/apps/echo/index.js | 1 + test-hdd/apps/echo/meta.lam | 5 +++++ test-hdd/apps/tysh/index.js | 23 +++++++++++++++++++++++ test-hdd/apps/tysh/meta.lam | 5 +++++ test-hdd/hello.txt | 1 - test-hdd/myapp.js | 1 - test-hdd/ushellc | 1 + 10 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/os/src/oskrnl/app/launcher.ts create mode 100644 test-hdd/apps/echo/index.js create mode 100644 test-hdd/apps/echo/meta.lam create mode 100644 test-hdd/apps/tysh/index.js create mode 100644 test-hdd/apps/tysh/meta.lam delete mode 100644 test-hdd/hello.txt delete mode 100644 test-hdd/myapp.js create mode 100644 test-hdd/ushellc diff --git a/src/os/src/config/keyboard.ts b/src/os/src/config/keyboard.ts index 0db6001..f5d94cd 100644 --- a/src/os/src/config/keyboard.ts +++ b/src/os/src/config/keyboard.ts @@ -1,5 +1,6 @@ export const Keycode = { Enter: 28, + Backspace: 14, Q: 16, W: 17, E: 18, @@ -28,10 +29,12 @@ export const Keycode = { M: 50, ".": 52, "/": 53, + " ": 57, }; export const RKeycode = { 28: "Enter", + 14: "Backspace", 16: "Q", 17: "W", 18: "E", @@ -60,4 +63,5 @@ export const RKeycode = { 50: "M", 52: ".", 53: "/", + 57: " ", }; diff --git a/src/os/src/oskrnl/app/launcher.ts b/src/os/src/oskrnl/app/launcher.ts new file mode 100644 index 0000000..ef5769d --- /dev/null +++ b/src/os/src/oskrnl/app/launcher.ts @@ -0,0 +1,8 @@ +import { kmod_app_run } from "../../kernel/modules/app/app.kmod"; + +export function oskrnl_app_launcher_run(path: string, args: string) { + if ((globalThis as any).__oskrnl) { + (globalThis as any).__oskrnl.app_args = args; + } + kmod_app_run(path); +} diff --git a/src/os/src/oskrnl/index.ts b/src/os/src/oskrnl/index.ts index 0542e69..3cd74bd 100644 --- a/src/os/src/oskrnl/index.ts +++ b/src/os/src/oskrnl/index.ts @@ -1,10 +1,13 @@ +import { oskrnl_app_launcher_run } from "./app/launcher"; import { oskrnl_console_log, oskrnl_console_update } from "./console/console"; import { oskrnl_input_onKeyPress } from "./input/input"; export function oskrnl_register() { (globalThis as any).__oskrnl = { + app_args: "why", console_log: oskrnl_console_log, console_update: oskrnl_console_update, input_onKeyPress: oskrnl_input_onKeyPress, + app_launcher_run: oskrnl_app_launcher_run, }; } diff --git a/test-hdd/apps/echo/index.js b/test-hdd/apps/echo/index.js new file mode 100644 index 0000000..ba7f8b1 --- /dev/null +++ b/test-hdd/apps/echo/index.js @@ -0,0 +1 @@ +__oskrnl.console_log(__oskrnl.app_args); diff --git a/test-hdd/apps/echo/meta.lam b/test-hdd/apps/echo/meta.lam new file mode 100644 index 0000000..f06b5f2 --- /dev/null +++ b/test-hdd/apps/echo/meta.lam @@ -0,0 +1,5 @@ +{ + "app:name": "echo", + "app:version": "1.0.0", + "app:entrypoint": "index.js" +} diff --git a/test-hdd/apps/tysh/index.js b/test-hdd/apps/tysh/index.js new file mode 100644 index 0000000..6a6d8ff --- /dev/null +++ b/test-hdd/apps/tysh/index.js @@ -0,0 +1,23 @@ +__oskrnl.console_log("> "); + +var input = ""; +var inputActive = true; + +__oskrnl.input_onKeyPress(function (key) { + if (!inputActive) return; + + if (key == "Backspace") input = input.slice(0, -1); + else if (key == "Enter") { + inputActive = false; + process(); + return; + } else input += key.toLowerCase(); + + __oskrnl.console_update("> " + input); +}); + +function process() { + var app = input.split(" ")[0]; + var args = input.split(" ").slice(1); + __oskrnl.app_launcher_run(app, args.join(" ")); +} diff --git a/test-hdd/apps/tysh/meta.lam b/test-hdd/apps/tysh/meta.lam new file mode 100644 index 0000000..921d7e8 --- /dev/null +++ b/test-hdd/apps/tysh/meta.lam @@ -0,0 +1,5 @@ +{ + "app:name": "tysh", + "app:version": "1.0.0", + "app:entrypoint": "index.js" +} diff --git a/test-hdd/hello.txt b/test-hdd/hello.txt deleted file mode 100644 index 5ef648a..0000000 --- a/test-hdd/hello.txt +++ /dev/null @@ -1 +0,0 @@ -It works! \ No newline at end of file diff --git a/test-hdd/myapp.js b/test-hdd/myapp.js deleted file mode 100644 index 3ee7f0c..0000000 --- a/test-hdd/myapp.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Hello from myApp"); diff --git a/test-hdd/ushellc b/test-hdd/ushellc new file mode 100644 index 0000000..b8610be --- /dev/null +++ b/test-hdd/ushellc @@ -0,0 +1 @@ +/disk/apps/tysh \ No newline at end of file