diff --git a/programs/man/intro.1 b/programs/man/intro.1 index eb23526..d5c1e2f 100644 --- a/programs/man/intro.1 +++ b/programs/man/intro.1 @@ -3,30 +3,19 @@ intro - introduction to MontaukOS userspace .SH DESCRIPTION - MontaukOS is a hobbyist 64-bit operating system written in C++20, - currently at version 0.1.7 (API version 8). Userspace programs + MontaukOS is a 64-bit operating system written in C++20, + currently at version 0.2.0 (API version 11). Userspace programs run in Ring 3, are loaded as static ELF64 binaries, and communicate with the kernel through the x86-64 SYSCALL/SYSRET - mechanism (150 syscalls -- see syscalls(2)). + mechanism (roughly 190 syscall numbers, 0-189 - see syscalls(2)). - Programs are compiled with a freestanding cross-compiler and - linked at virtual address 0x400000. There is no standard C - library for C++ programs -- all system interaction goes through - the montauk:: syscall wrappers. A desktop environment with a - window server, GUI apps, and Bluetooth/audio/networking stacks - runs on top of the same syscall API. + Programs are built with the x86_64-montauk cross toolchain and + linked at virtual address 0x400000. MontaukOS has its own C + library along with the Montauk API (montauk:: wrappers). .SH GETTING STARTED To write a new system/CLI program, create a directory under - programs/src/ with a main.cpp file. The entry point is: - - extern "C" void _start() { ... } - - There is no argc/argv. Use montauk::getargs() to retrieve any - arguments passed by the parent process. Include - for the full typed syscall API. GUI apps additionally use - win_create()/win_poll()/win_present() from montauk/Window.hpp - (see framebuffer(2)). + programs/src/ with a main.cpp file. Build with: @@ -39,15 +28,12 @@ The boot ramdisk is mounted as drive 0 with the following directory structure: - 0:/os/ System/CLI binaries (shell, init, man, etc.), - plus os-owned data: certs/, firmware/, - licenses/, wallpapers/ - 0:/apps/ GUI app bundles, one directory per app - (.elf + manifest.toml + icon) + 0:/os/ System/CLI binaries, os data + 0:/apps/ App bundles 0:/config/ System-wide config TOMLs - 0:/users// Per-user home directories (created at - login), with Music/, Videos/, Pictures/, - config/ subdirectories + 0:/users// User home directories + 0:/state/ Mutable system runtime state + 0:/tmp/ Scratch space 0:/fonts/ Shared fonts 0:/icons/ Shared icons 0:/man/ Manual pages @@ -56,15 +42,12 @@ Lua, headers and libraries), when installed 0:/boot/ Kernel, bootloader, ramdisk image - There is no 0:/games/, 0:/common/, 0:/home/, or 0:/etc/ -- - these were used by earlier single-user releases and no longer - exist. 0:/lib/ was merged into 0:/sdk/. Games and other GUI - programs (including doom) ship as bundles under 0:/apps/. - .SH SHELL - The interactive shell is the primary way to interact with + The interactive shell can be used to interact with MontaukOS. Commands are resolved against the current directory - first, then 0:/os/. Type 'help' at the shell prompt for a list + first, then 0:/os/. + + Type 'help' at the shell prompt for a list of commands. Use 'man shell' for detailed shell documentation. .SH MAN PAGES @@ -77,6 +60,8 @@ fetch(1) HTTP client ping(1) ICMP ping nslookup(1) DNS lookup + wifi(1) Wi-Fi configuration + sshd(1) SSH daemon fontscale(1) Terminal font scaling edit(1) Text editor man(1) The man command itself @@ -90,6 +75,7 @@ file(2) File I/O syscalls framebuffer(2) Framebuffer access malloc(3) Memory allocation + rtlsdr(3) RTL-SDR software radio API .SH SEE ALSO shell(1), syscalls(2), malloc(3)