Skip to content
crwntecPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XBC-89-OS

❯ Xtremly Basic Calculator

Built with the tools and technologies:

C GNU%20Bash


Table of Contents


Overview

This Project is a 32-Bit x86 Operating system running a calculator that performs basic arithmetic operations. It consists of a custom bootloader written in NASM assembly that loads kernel and firmware from the disk and calls the kernel entry. The kernel then intializes Screen and Keyboard aswell as other basic things and runs the firmware containing the calculator code. The Firmware is written purely in C mostly without standard librarys and converts input into Reverse Polish Notation using the Shunting Yard Algorithm


Features

- Custom Bootloader
- 32-Bit protected mode
- VGA and Keyboard Drivers
- Arithmetic Calculator

Project Structure

└── os/
    ├── .github
    │   └── workflows
    ├── README.md
    ├── build
    │   ├── boot.bin
    │   ├── cpu
    │   ├── drivers
    │   ├── firmware
    │   ├── kernel
    │   ├── kernel.bin
    ├── makefile
    ├── output
    │   └── image.bin
    ├── setup-gcc-debian.sh
    └── src
        ├── boot
        ├── cpu
        ├── drivers
        ├── firmware
        └── kernel

Project Index

XBC-89-OS/
setup-gcc-debian.sh ❯ Setup Code for installing cross-compiler chain on Debian
makefile ❯ Makefile to build and run the project
src
kernel
kernel_entry.asm ❯ Kernel entry code calling main function
kernel.c ❯ Kernel source
kernel.h ❯ kernel header
util.c ❯ Utility source
util.h ❯ Utility header
firmware
eval.c ❯ Evaluation and Shunting source
eval.h ❯ Evaluation and Shunting header
xbc.c ❯ Calculator source
xbc.h ❯ Calculator header
tokenize.c ❯ Tokenizer source
tokenize.h ❯ Tokenizer header
util.c ❯ Firmware utilities source
util.h ❯ Firmware utilities header
cpu
low_level.c ❯ Low Level source for communication with external devices
low_level.h ❯ Low Level header
interrupt.asm ❯ Assembly file redefining interrupt service routines (ISRs)
idt.c ❯ Interrupt Descriptor Table (IDT) source
idt.h ❯ IDT header
isr.c ❯ ISR definitions and init source
isr.h ❯ ISR header
drivers
libscreen.c ❯ VGA Display driver source
libscreen.h ❯ VGA Display driver header
libkey.c ❯ PS/2 Keyboard driver source
libkey.h ❯ PS/2 Keyboard driver source
boot
boot.asm ❯ Bootloader
include
disk.asm ❯ Routines for disk loading
print.asm ❯ Print routine for real mode
switch_to_pm.asm ❯ Routines for switching to 32-Bit PM
gdt.asm ❯ Global Descriptor Table (GDT)

Getting Started

Prerequisites

Before getting started with os, ensure your runtime environment meets the following requirements:

  • Programming Language: C and Assembly
  • Emulator: Qemu or similar

Installation

Install os using one of the following methods:

Build from source:

  1. Clone the os repository:
❯ git clone https://github.com/crwntec/XBC-89-OS.git
  1. Navigate to the project directory:
❯ cd XBC-89-OS
  1. Install the project dependencies:

echo './setup-gcc-debian.sh'

Usage

Run os using the following command: echo 'make run'


Project Roadmap

  • Task 1: Implement working operating system.
  • Task 2: Implement calculator.
  • Task 3: Extend calculator functionality.

Contributing

  • 💬 Join the Discussions: Share your insights, provide feedback, or ask questions.
  • 🐛 Report Issues: Submit bugs found or log feature requests for the os project.
Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your LOCAL account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/crwntec/XBC-89-OS.git
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to LOCAL: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


Acknowledgments

  • Writing a Simple Operating System - from Scratch by Nick Blundell Link (sadly incomplete :( )
  • Making an OS (x86) series by Daedalus Community Link

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages