Skip to content

Releases: leo007er1/MascOS

MascOS 0.2.3

21 Aug 10:43
Compare
Choose a tag to compare

Ability to create and rename files, tested 2 games, reworked parallel ports driver and more.

Major changes

  • Tested 2 games: DOS Defender, an Asteroids clone, and Floppy Bird. They work but since I don't have a joystick I can't fully test Dos Defender.
  • Reworked parallel ports driver.
  • Fixed touch command. Now you can create files and it writes changes to the disk.
  • Added rename command.
  • Added functions to write FAT and root directory to disk.
  • Fixed .BIN programs not able to run.
  • Revamped GetAttribute function(now it's useful).
  • Fixed HI.COM not executing.
  • run command is now faster.
  • Now file extension gets checked before executing a program, only .COM and .BIN files are valid.

Minor changes

  • Added int 0x21 Get interrupt vector and Set interrupt vector, with ah set to 0x25 and 0x35 respectively.
  • Now strings can be terminated with a $ too, just like MS DOS.
  • Now you don't need sudo permissions to compile the "stable" version.
  • Now int 0x21 "Get system time" function returns seconds and hundredths.
  • Fixed shell command buffer overflow.
  • Fixed shell not updating arguments counter.
  • Updated README.md.
  • Improved code.
  • Minor changes.

MascOS 0.2.2

31 Jul 11:16
Compare
Choose a tag to compare

PC Speaker driver now works, a new file manager and quality of life improvements.

Major changes

  • Fixed PC Speaker driver.
  • Fixed PC Speaker emulation in Qemu.
  • Added a file manager program, type files to launch it. Only shows the list of files and let's the user select them, nothing more nothing else.
  • Improved a lot bootloader performance: I forgot to divide a value and it resulted in writing 7168 sectors instead of 14... Don't worry, at least I noticed it after 10 months :)
  • VgaPaintLine is now VgaPaint: instead of colouring entire lines you can now specify individual chuncks of screen you want to colour. In cx put how many columns to colour, in bx the screen coordinates and in al the colour. Check the documentation for more.
  • Now the sound command works, it plays a fixed track to test the pc speaker.
  • Added a new interrupt for sound, int 0x24. See the documentation.
  • Added another new interrupt, int 0x25, used to launch a program from another program.

Minor changes

  • Fixed possible bug arising from loading the root directory.
  • Fixed bootloader possibly setting random BootDisk value.
  • Removed GetRootDirInfo from bootloader since it's useless now.
  • Moved almost all values used in BPB to Common.inc, for easier access to those values.
  • Added FAT12.asm, it's used to manipulate the FATs and the root directory. It's necessary for the upcoming update.
  • Added RenameFile.
  • Added a sound to TrashVim.
  • Added VgaGotoPos.
  • Reduced kernel size by ~700 bytes.
  • Generally improved the code.

MascOS 0.2.1

06 Jul 12:25
Compare
Choose a tag to compare

MS DOS interrupts, new commands and loads of improvements!

Major changes

  • Implemented some MS DOS system interrupts to allow MS DOS programs to run on the os. Due to this the old interrupt 0x21 is now 0x23, check out the interrupt documentation.
  • Programs now get loaded in memory like in MS DOS: the actual program code starts at offset 0x100, before that there's space used to contain various information.
  • Now programs memory gets freed after closing it and jumping to the shell.
  • Added standby command.
  • Added run command, which executes whatever program you tell it to run.
  • colour command now supports custom colours instead of a fixed value. Just input a hex value and it will change the colours used by the VGA driver. Type reset to use the default colours.
  • .COM programs can now run on the operating system.

Minor changes

  • Finally fixed command line attributes: now there's no need to put two spaces before the argument, now it behaves like any other normal shell.
  • Fixed CompareCommand needing an extra character for every command name to work.
  • Started to implement functions to create a file.
  • Removed partial support for VESA.
  • Added a hello world program.
  • Fixed serial ports driver.
  • Fixed TrashVim.asm program not working properly and improved it's interface.
  • Now to launch the os just type make debug or make run instead of using bash scripts.
  • You can now run the os without root permissions :)
  • VgaPrintCharMacro doesn't switch DS and ES values anymore.
  • Improved command line attributes performance.
  • Improved VgaClearLine and VgaPaintLine performance.
  • Added StringLenght, StringCompare and StringHexToInt functions.
  • Minor changes to Makefile.
  • Generally improved the code.

MascOS 0.2.0

04 Dec 18:26
Compare
Choose a tag to compare

Big update incoming!

External programs

Loading and executing a file is now much more painless, at least for me.

  • Added LoadProgram label, that loads a program automatically without asking you the address in memory : )
  • Now to exit from a program int 0x20 is used, instead of using a jmp instruction.
  • DS and ES now get set to the same value as CS.
  • All VGA and disk functions now work better for external programs.

Important changes

  • Adapted the VGA driver to allow to change screen colours on the fly and better code(still a freaking arrow in the eye but for now it's ok).
  • Fixed VGA screen scrolling, FINALLY.
  • Added CMOS.asm, that messes with the CMOS and RTC.
  • Added APM.asm, APM driver that lets the kernel control power states of all devices.
  • Added 2 new functions called GetFileName and GetFileSize, use int 0x22 ah = 2 and int 0x22 ah = 3 respectively to use them.
  • LoadFile behaves differently now: it uses es:bx to know the address to read to, instead of adding the kernel offset and other stupid things.
  • Added time command, that shows system time and date.
  • Now the ls command is automatized: no matter what and how many files are there it will list them all.
  • Added cat command, that shows a files contents.
  • Added colour command, that changes the colours used by the VGA driver(doesn't switch back to previous colours)
  • Added shutdown command, it's purpose is to shutdown the computer(who would have ever thought of that)
  • Should have fixed for good the command line attributes not being the same as to what the user inputted. This was unexpectedly difficult to do.

Less important changes

  • Added another new function called StringToInt which converts a given string with numbers in it, into an intiger.
  • Reduced "loading screen" wait time because I felt like to.
  • SearchFile communicates if everything went well with the carry flag now, since it allows to not use a cmp instruction but just a jmp, for cleaner code.
  • LoadFile now saves the registers.
  • Should have improved VgaPrintString performance.
  • VgaClearScreen no longer uses BIOS, but does everything by hand.
  • Added a new function called VgaGetColours that returns into bx the colours currently used by the VGA driver.
  • Added another new function called VgaPaintScreen that changes foreground and background colour of the screen, and changes the colours used by the VGA driver.
  • VgaPrintString should now be faster, since now it moves character and attribute byte together instead of moving them separately and does less memory read/writes.
  • Improved shell compare commands performance sligthly, by removing all the test instructions.
  • Renamed Edit program into TrashVim because I felt like to do it.
  • Shifted the includes in the kernel after all kernels code.
  • Other minor changes.

MascOS 0.1.7

16 Oct 17:56
Compare
Choose a tag to compare

MascOS 0.1.7

The biggest update yet?

Major changes

  • Added custom interrupts to the IVT, so external programs can access kernel functions with ease without including any file. Documentation is in this file.
  • Wrote some code for the PIT driver.
  • Added PC speaker setup file. Doesn't work.
  • Added Serial.asm, which will be the serial ports driver. Hasn't been tested yet!.
  • Added Parallel.asm, which will be the parallel ports driver. Hasn't been tested yet!.

Other changes

  • Added a new function called VgaClearLine, that clears out a single line.

  • Added another new function named VgaBackspace: deletes the previous character. Implemented it because Edit needed it.

  • VgaSetCursor no longer uses the BIOS, but messes itself with I/O ports.

  • Fixed VgaPaintLine compatibility with 286 and older.

  • Now VESA can properly set a video mode.

  • Removed Memory.asm from bootloader, since we get the amount of free ram with BDA.

  • fetch command now displays the real amount of avaiable ram, not a dummy text anymore.

  • Added sound command. Used for testing the pc speaker driver.

  • Qemu now emulates the 486, since that is the oldest cpu option.

  • Generally improved the code a bit.

MascOS 0.1.6

29 Sep 14:22
Compare
Choose a tag to compare

MascOS 0.1.6

Pretty important update!

Major Changes

Now it's possible to load and execute external programs!!! But remember the os it's still in early stage of development and security flaws and bugs are just right around the corner.

  • Now code gets compiled with the instructions set of the 8086, not the 286 anymore
  • Fixed VGA driver compatibility with 286 and older
  • Hopefully fixed compatibility of the entire bootloader and kernel with 286 and older
  • Generally improved Edit, and it now can display text
  • Ditched IO.asm in favor of the new VGA driver
  • Fixed SearchFile label
  • Fixed LoadFile label

Minor changes

  • Fixed command line attributes not recognizing an attribute without a space at the end
  • Added documentation on how to create a program
  • Now AttributesBuffer gets cleared if there are attributes there
  • Reduced CommandBuffer size from 64 bytes to 32 bytes
  • Changed command line "arrow" with a ->
  • Decreased a bit the size of the kernel using the test instruction instead of cmp

MascOS 0.1.5

19 Sep 16:54
Compare
Choose a tag to compare

MascOS 0.1.5

Updates from now on will be much slower since school kicked in, and I'm lazy as your grandma when she wakes up.

Major changes

  • Fixed VGA driver, now it works like a charm
  • Added support for scrolling the screen, but it's buggy, it is being used so if you don't see the text or the text is weird you are still writing normally, so you can just type clear and the screen will be cleared and back to normal
  • Added VgaPaintLine label, with this you can change the colours of both background and foreground of a line, so you don't need to print more bytes to colour the entire line
  • Disabled text blinking. Only works on real VGA hardware and not emulated one
  • Command line attributes now work

Smaller changes

  • Converted shell commands to use the new VGA driver
  • Added colours to the fetch command
  • Makefile now warns you and stops if you don't have root powers, since you need those to mount the image
  • Fixed some typos
  • Minor changes (shifted data location in memory, stuff like this)

MascOS 0.1.4

08 Sep 17:08
Compare
Choose a tag to compare

What's changed

  • Text colors, both background and foreground since that's what VGA supports! Note that the driver is only being used in the logo and the initial messages of the shell, since it's still bugged. Thanks V01D on discord for helping!
  • Added support for command line attributes, hasn't been tested yet
  • Added VESA.asm to later support VESA and replace VGA if possible, since it goes up to higher resolutions and supports more colors
  • The fetch command code now it's way cleaner thanks to macros
  • The PrintLogo labels code is cleaner thanks again to macros
  • Updated the kernel and bootloader README.md files
  • When running the os in qemu the constant output of Servicing hardware int=0x70 and int 0x8 is now solved: I masked those interrupts by setting 2 bits on I/O ports
  • Added the first program, Edit. It's there for test purposes, especially for Disk.asm, it doesn't do anything for now
  • Makefile no longer shows that annoying MascOS.flp already exists error, finally