Giter Site home page Giter Site logo

rhutik03 / osakaos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pac-ac/osakaos

0.0 0.0 0.0 14.48 MB

The de facto operating system developed for the cult of Ayumu "Osaka" Kasuga.

Home Page: https://www.youtube.com/@dpacarana

License: GNU General Public License v3.0

C++ 98.35% C 0.29% Assembly 0.71% Makefile 0.66%

osakaos's Introduction

osakaOS v1.0

THE operating system of all time.

osakaOS is a 32 bit, singletasking, megalithic operating system that is made with a focus on unconventional/ridiculous design choices. It uses a text-based command line to edit files using the Osaka FileSystem and create small programs using the AyumuScript scripting language.

It also features small programs called 'modes' for small games and entertainment. The commands include the ability to read and write directly to memory, disk sectors, and most importantly, print ASCII art of Osaka :)

How to run/compile

Included is a pre-compiled bootable iso image that you can use in any normal virtualization software. To compile from source do 'sudo make run' and pray for the best. The binary will be built and QEMU will boot from the virtual disk.

You will probably need the following software packages: g++, binutils, libc6-dev-i386, qemu-system-x86_64 grub-legacy, grub2, xorriso.

If you plan on using other emulators then make sure it has piix4 ide support for storage, at least 2MB of memory, and pc speaker support for basic audio. Emulation is the preferred way to run the OS as running it on real hardware requires a very old machine for the drivers to work, as well as a lack of concern for the data on the machine since the OS doesn't care to ask if you want to write over a pre-existing system partition, it will just do it. Also the OS crashes a lot (most of the time on purpose) and that would be very annoying on bare metal.

How to get audio using PulseAudio

If you're using a linux host and use pulseaudio like me, add this line load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/pulse-socket to /etc/pulse/default.pa. Then restart pulseaudio and the settings in the makefile should work. (original post here)

Extra

During development this project was/will receive monthly updates on my youtube page.

This project is partly based on the WYOOS tutorial series. Although many things from the tutorial have been changed or removed for various reasons.

There are quite a number of glitches that I've yet to fix.

  • Deleting a file that was not the most recently created might cause files to be listed incorrectly.
  • Every 4th LBA won't save/read data correctly on it's last sector. (The filesystem itself isn't finished yet.)
  • Recent versions of QEMU have deprecated the 'pcspk' option. It might take some work to get speaker emulation working.
  • Other stuff that I haven't found yet or are too insignificant to mention in the README.

Yes there are graphics. Currently they're in a very sorry state but I do have plans to develop them further. There are also implementations for things like multitasking and networking but they're underutilized currently.

Why did you make an entire OS after this character? Are you obsessed or something? No, I just thought it would be funny.

Full Command List


GENERIC


"say (string)" - print out whatever arguments were passed.

"help" - list common commands and keyboard shortcuts.

"clear" - clear text from screen.


DRIVERS/SYSTEM

"delay (int)" - use the PIT timer to delay the system by (int) number of milliseconds.

"beep (int)" - use the pc speaker to beep at (int) frequency.

"rmem (int)" - read value from (int) memory address.

"wmem (int) (int)" - write 2nd (int) value to 1st (int) memory address.

"rdisk (int) (int)" - read from 1st (int) sector number for 2nd (int) number of bytes.

"wdisk (int) (string)" - write (string) data to (int) sector.


FILESYSTEM

"files" - list all known files and number of files currently allocated.

"size (file)" - print out size of (file) in bytes.

"delete (file)" - deletes and removes (file) from filesystem. [partly broken]


MISC

"osaka (int)" - print out Osaka ascii art.

"dad" - print out more ascii art.

"random (anything)" - execute random command with given args.

"PANIC" - panic car alarm, must restart the system.

"explode" - make annoying beeps and graphical freakout as the system crashes. [currently broken]

"sata (int) (string)" - string should be a full command that is repeated for (int) number of times, if (int) is 0 or not provided, it will repeat the command forever. [currently broken]

"andagi" - print out "sata andagi".


AYUMUSCRIPT

"int (string) (int)" - define variable with name (string) and value (int).

"+ (string) (int)" - add value (int) to variable (string).

"- (string) (int)" - subtract value (int) from variable (string).

"* (string) (int)" - multiply value (int) by variable (string).

"/ (string) (int)" - divide variable (string) by value (int).

"% (string) (int)" - modulus variable (string) by value (int).

"& (string) (int)" - AND variable (string) by value (int).

"| (string) (int)" - OR variable (string) by value (int).

"^ (string) (int)" - XOR variable (string) by value (int).

"if/loop (var/int) (op) (var/int)" - determine if expression is true, if so nothing changes, if not, commands won't be processed.

"fi/pool" - allow command to be processed again.

"rng" - produce random number and save it in return value ($R).

"// (string)" - does nothing, meant for comments in AyumuScript files.

"ex (file)" - executes files as a script.

osakaos's People

Contributors

pac-ac avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.