Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

edvisdev98/OS-Development

Open more actions menu

Repository files navigation

OS DEVELOPMENT

This repository contains resources for OS development, including KSDOS files and assembly (ASM) examples. It is intended for learning, experimentation, and exploring low-level system concepts such as memory management, boot processes, and hardware interaction.

KSDOS

16-bit real-mode x86 operating system written in NASM assembly, running in QEMU.

Architecture

  • Bootloader + Kernel: bootloader/kernel/ksdos.asm — main kernel entry point
  • 9 Overlays: CC, MASM, CSC, MUSIC, NET, OPENGL, PSYQ, GOLD4, IDE — loaded on demand via ovl_api.asm
  • Build system: Makefile + tools/mkimage.pl — assembles all overlays and embeds them in a FAT12 disk image

Build

make        # build disk.img
make run    # run in QEMU (VNC on :0)
make deploy # package for Raspberry Pi (build/ksdos-watch.tar.gz)

Raspberry Pi Deployment

Files in raspberry/:

FilePurpose
setup.shOne-time Pi setup: installs QEMU, configures TFT SPI overlay, compiles vkbd, installs service
launch.shLaunch script: starts QEMU + virtual keyboard
vkbd.cVirtual keyboard in C: framebuffer rendering + uinput key injection (no QMP socket)
ksdos-watch.servicesystemd unit for auto-start on boot

Virtual Keyboard (vkbd.c)

  • Renders a QWERTY keyboard on the bottom ~36% of the TFT framebuffer
  • Reads touch events via Linux evdev (/dev/input/event*, auto-detected)
  • Injects keypresses into QEMU using uinput (a kernel virtual input device)
  • No QMP socket is exposed — no attack surface
  • Build: gcc -O2 -o vkbd vkbd.c -lpthread
  • The setup.sh script compiles it automatically on the Pi

Pi Setup

make deploy
scp build/ksdos-watch.tar.gz pi@<IP>:~/
ssh pi@<IP> "tar xzf ksdos-watch.tar.gz && sudo bash ksdos-watch/setup.sh && sudo reboot"

Key Files

  • bootloader/kernel/ksdos.asm — kernel main
  • bootloader/kernel/opengl.asm — software graphics primitives (guarded with %ifndef)
  • bootloader/kernel/ovl_api.asm — overlay loader API
  • bootloader/kernel/compiler_asm.asm — defines str_no_space and compiler helpers
  • tools/mkimage.pl — builds FAT12 disk image with overlays
  • raspberry/vkbd.c — touch virtual keyboard (C, uinput)

BOOTLOADER EXAMPLES

Assembly language examples are available in the /examples directory.

The directory includes examples such as basic output:

  • (HelloWorld.asm, PrintCharacters.asm) - character handling;
  • (ClearScreen.asm, BackgroundColor.asm, TextFontColor.asm) - display controlling;
  • (CheckRAM.asm) - simple interaction with memory.

About

This repository contains resources for OS development, including KSDOS (MS-DOS replica) files and assembly (ASM) examples. It is intended for learning, experimentation, and exploring low-level system concepts such as memory management, boot processes, and hardware interaction.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.