Giter Club home page Giter Club logo

floppyos's Introduction

FLOPPYOS

FLOPPYOS is an operating system built to run on a floppy disk using the FAT12 filesystem

Current features

Not much currently just a terminal with a few commands

Terminal

Currently supported commands:

  • clear: clears the terminal
  • shutdown: shuts the machine down
  • find: finds a file on the computer and prints its logical and physical address/sector
  • open: opens the file specified and runs it
  • restart: performs a warm restart
  • datetime: outputs the date time
  • colour: changes the colour of the text
  • help: displays all commands
  • discover: displays all the files

That's it, currently

Plans

  • A large array of commands for my terminal
  • Support for other connected disks to allow more programs to be loaded
  • Networking
  • GUI
  • And more

How to run

WARNING

Please do not run this on your main PC, as of current it has only been tested on a VM with only access to the floppy image

For Linux

Using the pre-built image

Install qemu using

sudo apt install qemu-system-x86

And then run the operating system using

qemu-system-i386 -m 1 -fda FLOPPYOS.img

Building it yourself

Run the build script using

bash Build.sh

And this will install, build, and launch FLOPPYOS

Burning onto a floppy disk

First mount the disk

Burning this on will remove all data onto your disk

Run the following command

sudo dd status=noxfer conv=notrunc if=test.img of=/dev/sdb bs=4M && sync

Wait until finish, eject and then it's done

Enjoy FLOPPYOS (:

For Windows

Make sure you have qemu-system-x86 by installing it through this link

Make sure to add qemu to your environment variables

Run the following command

qemu-system-i386 -m 1 -fda FLOPPYOS.img

floppyos's People

Contributors

sopho-s avatar sophos111 avatar

Watchers

 avatar

floppyos's Issues

Clean and optimise current working code #1

The current code is mostly un optimised and very messy, due to my lack of assembly knowledge, cleaning and optimisation will be very important to the future life of this project

Add a colour command

The colour function should take a colour and change future terminal commands to that colour

Add memory assignment interrupts

If applications want to store large bits of data separately and retrieve them later but wish not not keep a record of them themselves the kernel should provide support for this, and if a program tries to access data that is protected by the kernel then it should not allow it

Add write functions

When a program wants to write something it should ask for x amount of sectors, put the data in the file buffer and then ask the kernel to write it

Image generation breaks when burnt onto disk

When I write this onto my floppy disk windows does not read it any more, it is still there in my file explorer but no ability to read the floppy nor any ability to see details about the floppy disk

Most likely because the build currently just flat out ignores the FAT12 file system when writing the bios

Parameter functionality

Currently, the terminal pushes the parameters to the stack but, unless there is the right amount of parameters sent to each function, the stack is not cleaned up after

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.