Yes, it is written completely from scratch. I've been developing it since I was in 7th grade (2013). I am now working on the more "high-level" aspects of the operating system, like porting OS-Specific Toolchains (GCC, Binutils, etc.) and the GUI (I am planning not to use free libraries like LibPNG, LibGTK+, or Cairo for graphics management. I am sort of anti-GNU. I am developing my own graphics library called "iVGA" instead.).
you can visit
http://arcrascent.wordpress.com to see screenshots of the OS.
But sorry, but no... The OS is closed-source at least as of now... And neither there is any public image releases yet... Plus, my 64-bit machine broke last week and is in the repair shop for now so I cannot produce any more new images for a couple of weeks... But once my machine comes back,
I'll post an image as soon as possible. But you can still
PM me to request private access to look at how I implemented things like:
- Realmode Emulator (Physically emulates Intel 80186 Microprocessor; Works with long mode
)
- v8086 Monitor (but I'm sure there are other great implementations)
- Switching to VGA mode without BIOS interrupt calls (faster than traditional int 0x10 BIOS interrupt call mode-switching mechanism)
- Serial Console
- Process Management/Multitasking
Again,
PM me if you would like to request access. (you are going to need a bitbucket account).
If you gain access and would like to build the OS, these are the steps: I am personally using Ubuntu 14.04.10 LTS on x86_64 arch, so I cannot guarantee success if using another platform. The OS requres MASSIVE resources to build.
1) Clone the repo at
https://[email protected]/arcr ... os-rc.git/
2) "cd" into the directory
3) run
Make sure you type "bash" instead of "./", since the executable flag is not set yet (the script will automatically do that).
Once run, the script will:
----------------------------------------------------------------------------------
Install the following packages on your system:
- nasm (assembler)
- xorriso (el torito file system image creator)
- qemu (i386) (virtualization software I)
- bochs (virtualization software II)
- bochs-x (virtualization software patch I)
- bochs-sdl (virtualization software patch II)
- flex (lexic parser)
- automake (automake software; for building GNU software)
- autoconf (autoconf software; for building GNU software)
- texinfo (TeX support)
- sloccount (lines-of-code counter)
- virtualbox (virtualization software III)
- grub legacy (bootloader)
Then, the script will download the following packages to obtain old releases of software and libraries required for building several GNU utilities (e.g. GCC, Binutils)
- autoconf v2.64
- automake v2.64
- GCC v4.4
- GCC multilib v4.4
WARNING: The script will hard-link the old binaries to fit the up-to-date binary names, and preexisting binaries of software in the above list will be backed-up (e.g. gcc --> gcc.old), but overwritten and the up-to-date binaries
WILL NOT BE INVOKED WHEN THE BINARY IS EXECUTED VIA COMMAND. (i.e. "gcc" after running the script will automatically run GCC v4.4 and NOT the preexisting gcc (probably v4.8.x or v4.9.x).) (e.g. /usr/bin/gcc-4.4 ==> /usr/bin/gcc)
After that, the script will change default GNOME configurations (if existent) to fix automount bugs and set executable flags (+x) for shell scripts in the source code library.
Finally, the script will automatically download the i386-elf-gcc cross compiler and install it to ~/cross/ (the directory will be created automatically by the script) and add it to the $PATH automatically.
----------------------------------------------------------------------------------
4) The script will automatically setup everything (so you don't have to
!), so no worries about dependency issues
5) Now, I am very lazy, so I wrote a bunch of stuffs to do different things. The one you are going to use is "makeos.sh", the script to automatically compile, link, and a build a floppy or HDD image based on the arguments supplied, it will automatically take care of the version management and build number management (automatic incrementation).
The script will also "cp" the contents of the directory "Additional/" into the ROOT of the image... so if you would like to add additional files to the image, simply add that image to the directory.
This is the synopsis:
- The script takes 2 arguments, the cleaner and image type
- The "cleaner" argument is either "--true" or "--false"; "--false" will automatically clean-up temporary files generated by the script (NOT the object files) -- this option increases because some other scripts that call this script need the temporary files to read version info about the current build. "--true" will keep those temporary files.
You will almost always use the "--false" option.
- The "image type" argument is either "--fd" or "--hd"; obviously, "--fd" builds a floppy image and "--hd" builds a HDD image
So:
Will build a floppy image and clean-up script temporary files
And
Will build a HDD image and clean-up script temporary files
If you build a floppy disk the image will be called "Floppy.img" and hdd image will be called "hdd.img".
Just in case you haven't figured out, the code is in the "SYSTEM/" directory!
6) Now to the testing...
run the "test.sh script". It takes 2 optional arguments
- "--hd" or "--fd" depending on your image type
- "--bochs" or "--qemu" to choose emulators
If no arguments are given, the script will use the hdd image by default, and if it is not there, it will look for the floppy image.
ON THE OTHER HAND, if the second argument is missing, it will simply use QEMU by default:
So
Will use hdd.img if existent or Floppy.img if not and use QEMU
And
Will use Floppy.img with Bochs emulator
Got it??
Anyways, +muazzam, the forum tells me that you are 12 years old. Are you actually 12 years old and in 10th grade and doing OSDev?? That's pretty darn intense. You beat me by a lot! And i also saw your post about you favoring asm over c because you feel more comfortable in asm. Wow... I personally love assembly but cannot replace C for it because asm, it is so "simple" (everything looks the same once you write/read asm for hours) that you forget what you were writing...