#x16-PRos (real mode OS)
1 messages · Page 1 of 1 (latest)
I am updating it. For example, now it is version 0.4, but I am already working on version 0.5. It is already possible to use. I tested it on several computersона рабI am updating it. For example, now it is version 0.4, but I am already working on version 0.5. It is already usable. I tested it on several computers and it works
I think your website's image file might be corrupted or something
QEMU can't boot it
Maybe
Let me test it...
it fails both with -hda and -cdrom, might wanna check that out
Yay
do you plan to get some "userspace" support for program writing
maybe port/write a small assembler?
oh wait you have bf lol, nice
In the previous version 0.3 there was a BASIC support, but I remove it because the implementation was very poor.
I think your snake game has a bug
lol, I'm not trying to break your system, I think that little real-mode OS's like this are very charming and fun, but I just ran into an issue
nevermind it works fine now, huh
woah, these are pretty neat, definitely a "x86 real mode" moment
awesome project!!!! I'm excited to hear more from it!!!!!
Thank you so much!
Several of my subscribers have started doing libc for my OS
I recently started working with them.
Several modules are already completed. Now we are working on the stdio.h
@quartz cape why did you create a new thread instead of using the existing one?
Idk
We made printf. It supports all types of data including float and double.
cool !
bro just use stdio.h
You can't just take someone else's implementation, since each OS has its own peculiarities. Its own API, its own memory management and etc.
ik i was joking
Guys check it out - PS/2 mouse driver
cool
but wait
it's a true driver or you use bios interrupt ?
For now I use BIOS in this driver, but not everywhere
so it's not a driver the actual driver is in the bios
still cool tought
how laggy is it
Small, almost imperceptible flickering
damn
Is this in c?
nop it's in asm
X86?
Is it on github?
yes
yes
Noice
Paint program
this is nice, do like a good real mode os
I made BMP images rendering!
nice!
I improved the info menu by adding ASCII art and also improved the CPU info
Added display of remaining disk space and disk letter to the DIR command
Pong game
Hello everyone!
I recently completed the playback of IMF files in my OS.
IMF is a music file format, which is a set of instructions for the ADlib sound card, which was developed by id Software for use in games such as Doom and Wolfenstein 3D.
The format itself is super cool:
- Lightweight
- Cool sound quality
But there is no way to convert MP3 to IMF. The formats are too different. So either take music from old games, or write it ourselves using special programs.
I will try to implement support for WAW and MP3, but for now you can listen to the sound of that very IMF file.
I apologize in advance for the loud sound of the PC Speaker at startup. It can be turned off.
I also make the new help menu
All that remains is to fix the bugs in the system API and we can start working on the graphical interface
Although, we still need to make a custom font
Oh, I also need something like "autoexec.bin"
haha cool
oh yes
and script version too
very cool
Thanks!
New commands
GREP - search text in the file
HEAD - print first 10 lines of a txt file
TAIL - print last 10 lines of a txt file
add markdown support so you can view your docs :D
Oh, that's great idea!
does HEAD/tail support -n ?
and does grep support regex 
No...
have you think of porting/creating an assembler
so you could dev the OS under itself !
modify kernel
assemble
replace KERNEL.BIN
tail -f support when?
what is that ?
continue to follow the end of the file until Ctrl c
oh cool
how usefull it is ?
- does it work on head ?
no because you don't append to the head
it's very useful for following logs as new lines get added
oh cool i'm gonna do that
I'm starting to work on directory support. Now the root directory won't be filled with a bunch of files.
Everything will be nicely laid out in folders:
- configs
- programs
- games
- images
I also make upscale for BMP images.
cool
what do i need to build the OS ?
oh nasm and mtools
is there a way i can just not use mtools and instead put file on a mounted fat32 partition ?
you should just get mtools its really not that big
where is the git repo ?
i can find it on google i guess
also i want to do a multiboot of this thing
so i need to use an already existant image
image which is already mounted
if you're using debian/ubuntu its sudo apt install mtools,
if you're using macOS it's brew install mtools,
if you're using arch linux it's sudo pacman -S mtools
no i want to build from source
i hope it won't be to complicated
...why though
i want to try building an OS from with in my OS
and this seem like a good candidate
oh...
i'm cooked
mtools is in python
wait
i'm on the wrong mtools 
bahahahAHAHHAHHAH
the source cod is only 511kb with a bit of hope it can hapoend
nl_langinfo 😭 i") afraid
I make little icons for the terminal
And the program, to create these icons
x16-PRos (real mode OS)
In theory, this program can be ported to the OS itself
oh thats epix
do it !
There is only one problem: these sparkles are not displayed at the cursor position, but only at the specified coordinates, and I do not understand how to make them appear at the cursor location.
We need to solve this problem, and then start making a graphical interface.
why ?
gui in real mode seems like a bad idea
a TUI with tiling windows wouldnt be bad though
(floating windows are complicated, especially for real mode)
editing bitmaps in text mode?
Now when you start the OS, this logo will be displayed
cool
does it scale
Nah
cant wait 0.5
I'll say this: the new version won't be released anytime soon.
Yah
PRos ricing
insane
I need the new CFG file
THEME.CFG
Then the OS will become fully customizable in terms of color palette.
Finally fixed file system API
2 new commands have been added:
- THEME - Change the theme
- SETUP - Go through the system setup again
why would you go through setup a second time
no settings program? 
Yes. It's easier to run the setup again than to write an entire, albeit simple, program.
questionable but ight
ISO image creation has been added to the build script, as not all computers can correctly work with an IMG image written to a flash drive.
Added AutoExec
You can suggest ideas for programs, utilities, or even OS improvements. Just don't suggest anything too complicated; I write everything in assembly, after all :]
By the way, I'm thinking about adding support for .COM programs
add fork() 

that fork as well
spear
zeroek
I am developing a new website for the project
For comparison, here's what it looked like before.
There is no way to add EFI support to a real-mode OS.
fair
well maybee it's possible
return to 16 real mode
and when you access hardware use actual driver in 32 bits mode
ghrn go back to 16 once finish
Neofetch-like program
how would you emulate? If you were to try and emulate it on x16-PRos you would need to store things in 16 bits, while uefi uses 64 and 32 bits
idk
It would be nice to add memory usage here, but I don't know how to do that in real mode
SETUP is now a standalone program. Previously, it was part of the core.
Also now APM is used for shutdown and restart
APM? that still exists?
Here are the final system requirements for the OS
ohhh I dunno, 64k, too rich for my tastes, where do you get so much ram 
Why is the maximum a 486?
I have an i686 box that could probably run this
cant uefi emulate the bios?
no without csm it cant
i see
i think you could
you get back to real mofr
and make a protected mode wrapper
around uefi function
fair
Configuring the Command Line Prompt
Now, using the config, you can create your own command line prompt. Everything is stored in the PROMPT.CFG file.
Supported:
- Displaying simple ASCII characters
- Displaying pseudographics
- Displaying the username
Here's how to work with the config:
If you need something simple, for example, one ASCII character, the config will look like this:
>
If you need the username in the prompt, use this:
$username >
And if you need a pseudographic character that isn't on the keyboard, use this:
%FE %10
After %, write the ASCII code of the character.
I'll soon add a new config (THEME.CFG) and the terminal will become fully customizable.
I like configs more
Finally have a working implementation of directories (folders). There are a couple of bugs, but I`ll fix them.
x16-PRos x86_64?
use fpu registers as gprs 
I'm curious, whats the meaning of the dog in the logo
This is just my dog. I decided to use it as the project logo.
cute dog
Thanks!
I made better IMF player
I also made new theme config file: you can change any color in the PRos using RGB
класс
A couple more songs in PRos:
- SONIC.IMF from the Sonic game
- Hoopes & Dreams from Undertale
8086/8088 operating systems always HATE CD-ROM
also
HDA not working is something he needs to check
that means it won't really work on any hard drive (which is fine for 8086/8088 and is actually normal.. even MS/PC-DOS ended up not caring for other storage devices for a long time)
only diskettes (floppies)
FS & GS data segments do not exist on 8086/8088
-# I am sorry if I am being a pain or something..
also don't enable interrupts in the boot sector/record
interrupts like causing a nuclear fallout when using int 13h, which may lead to failed disk access (if writing / reading) / corrupted sectors that you attempted to access (if writing)
cool project
I like it
I like 8086/8088 stuff
I need to add Russian language support
No you dont
Send me some cool .mid music please
I will convert it to .imf and test it on my OS
i can send you some later
passport.mid
Somehow, the Windows 3.1 MIDI driver worked on my OS, so now I have a MIDI player. The MIDI driver is proprietary, though. I'll still need to write my own.
absolute rush e
👍
it sounds like the tetris theme remix for some reason
New version! 5 months later!
x16-PRos v0.5 is out. The changelog is enormous.
Some of the changes:
- More than 10 bugs fixed
- Added user system with password encryption
- Support for multimedia formats (IMF, BMP)
- New programs
- Added the ability to work with directories
- Fixes that make the OS work on almost all CSM-compatible computers
- Customization
Source code: https://github.com/PRoX2011/x16-PRos
Full changelog: https://github.com/PRoX2011/x16-PRos/blob/main/docs/changes/v0.5.txt
bee m pee
The logo was made by me, btw
Yes, that`s true
Created a Telegram channel and chat for communication, news and suggestions
Support Han Akbe: Solana BcAiCCSpBXjMSeKfYRfyE7DxBoH1id7yGdonn8vzLyos TON UQCap-lxOGhYHi6ON5H7ur2ILU_3L-nH4583cSc8a6VEHDG7 Support PRoX: https://dalink.to/proxdev
you should make a discord server
in my opinion
(if you dont already have one)
prox
yes?
Video review. It's in Russian. Use subtitles.
В этом видео я расскажу, что поменялось в моей операционной системе, которую я пишу с нуля за 5 месяцев разработки обновления.
GitHub проекта: https://github.com/PRoX2011/x16-PRos
Телеграм канал: https://t.me/PRoXChannal
С...
i dont need any subtitles 
This OS will die on the 8086 or 8088
And 80186
Works for the 80286,80386, and above
Hello everyone!
x16-PRos has received a major website update.
The biggest change is the documentation. I've tried to describe everything: how to run it (on an emulator and real hardware), how to use the API, and the available terminal commands. I've added the first program examples (I'll be gradually adding more) and updated the visuals to make the site more user-friendly.
Website link: http://x16-pros.prosdev.org/ (temporarily http, coming soon to https)
Advertising space is now available on the site at reasonable prices. Perfect for various IT projects and public groups. For any questions, please contact me via PM
x16 PRos — a minimalist 16-bit OS. Image, documentation, source code. Modern responsive landing page.
yo
jump into protected mode :D
it gives you 4GB available RAM, and 32-bit registers!!
if you need, i have a script which goes into said protected mode (x32)
but... if you're not testing this in QEMU then it might just not work lol
I created a new configuration file. It allows you to:
- Mute the startup sound,
- Choose a custom image for the startup screensaver,
- Stretch the image to full screen (if its resolution is smaller than the screen resolution)
fire
Okay, now root looks neater:
/BIN - programs
/CONF - configs
/MUSIC - IMF music
/DOCS - tips, documentation
Programs are now executed from the BIN directory in the context of the current directory.
FINALY!!!!
i made this myself, do u agree OP?
+1 byte
and +perfs
Hehe
I'm fed up with this. A new release is coming soon. There will be a lot of interesting stuff, but the most important thing is support for COM programs. And I understand that I'll be the only one working on the kernel. People sometimes create their own programs, and that's really cool, but basically all the development is my responsibility. There's interest in the project (1900 subscribers on YouTube, over 200 stars on GitHub), but only three of them contribute, and even then, it's not serious—not a single really important or interesting feature. They create issues on GitHub like, "My program doesn't work, please fix it." You write in the CONTRIBUTING section that it's ONLY ENGLISH IN ISSUES, but no, they still write whatever they want, without even sticking to the template.
Maybe the problem is with the OS itself? What's wrong with it? MikeOS works pretty much the same as mine, but people have contributed there, creating cool software and games.
Overall, if the situation doesn't change after the new version is released, I'll either take up developing a new OS or leave this field of activity altogether for a while.
i think, i know the reason
go DM
x16-PRos v0.6-dev
I pushed a new version 0.6 into the DEV branch. The list of changes is long, but briefly:
- Improved organization of files on disk
- Added test support for COM programs
- Fixed bugs in string api and file system
that's probably because your os is written in assembly, and most people do prefer higher level languages like c
and yeah, nobody respects issue templates lol
also, they might not see much interest in an os for the 8086 cpu
since they would never use it on their own machine
Why?
It's more convenient for the developer to solve the problem
yes it is
and the world would be better if everyone respected that
anyway, i have to go
I have a simple template:
- OS version
- What was expected
- What happened
- What was the OS running on
x16-PRos v0.6.1
The new version has been released! The list of changes can be read in docs/changes
In the release version, CAT was improved, and the documentation built into the system was completely updated and rewritten (DOCS/)
cat improvement update
it took me a moment to recognize that this isn't super mario world somehow
I made a wav player
оно кстати работает/this works btw
туториал про яваскрипт (js tutorial)
работает (works)
оно реально работает но это не ява скрипт там на простом ассемблере легче
кайф
what
English please!
More music! Wavplay has been added to the x16-PRos repo
pc speaker or what
Sound Blaster
working on multiple disks support
Yeah, well done
I've implemented a way to write system logs to a file. The version has been published to the dev branch. You can try out all the latest features.
I made a better HEXEDIT and WRITER
unfortunately i cant run it on my test machine
since i dont have csm
or im too stupid to find it
i like the nano-like editor lol
Wow, this OS is a lot of hard work
i like it very
btw, i wanted to ask, how you load programs from a sector of the disk. because when i simply jump to a specific adress in memory to load my program and then jump back to my kernel adress, i cant load the programs again. because it shows a disk error. that is pretty annoying because you always have to restart the vm
I made a simple TUI program launcher. Works fine even in the real hardware
The first of all, I had a file system in my OS. In your situation you maybe should save registers and kernel segment state before runing program.
is it difficult to make or implement a filesystem?
it depends on the fs
I dont have the stack defined, maybe this is the problem? But I dont know how to do that.
I defined it in the bootloader as sp = 0x7c00 but this is for the kernel, right? So that doesnt matter i guess.
most of the time the kernel them setup it's own stack
the kernel should reload its segments and stack
how do i do that?
every time i try, the OS crashes after executing a program
sam as you do in the bootloader
(we should move to #programming or #1474418546225320121 i think)
okay
x16-PRos now has support of different timezones
cool
thx
Check out the dev branch if u want
It took me three days, but what a result! Full support for cp866 and .FNT fonts for this encoding system-wide. By default, the image includes four fonts, but you can add your own 8x16 fonts from old DOS, for example. Plus, there's a TUI program and configuration file for configuration.
nice!
Thanks!
Pushed all the new features to the dev branch. Added support for sub-directories and a new terminal theme.
bro is cooking that 16-bit sh*t
im reading the disk.asm file of MikeOS and it is exactly the same as your fs.asm file
You r wrong, lol. Similar function names, but completely different code
I am going to do a 0.8 release soon
So
Check the dev branch, I need your feedback
New OS project for raspberry pi 3 btw
MikeOS don't even have a directory support
And it haven't multiple disks support
Look closely to the source code
Say hello to the 0.8!
The new version 0.8 has been released after almost a month of development!
The changes affected both developers and users.
There's a long story here about the changes, so please read the changelog and release notes.
I'll be waiting for your feedback :]
no its exactly the same. and string.asm is copied too
yeah i know, you added your own functions, but there is a lot copied
im not saying it is bad, do it if you want, because mikeOS is opensource
in fairness I followed a guide for writing a bootloader once that was nearly identical to the mikeOS bootloader and the x16 bootloader (iirc), it's probably just a common way of doing things
So these are default functions that are more or less the same in all operating systems.
light mode 
Wow, I didn't think the code from the assembler forum had this origin.
I wish I could find a link to the code I borrowed from the forum. That was almost a year ago.
what assembly forum?
I don't remember, I told you it was a long time ago. By the way, I looked closely and the code is still different. The author of the code on the forum changed the cmp to test
Website update
A new news tab has been added to the project's website. I'll be posting about new features there from now on.
x16-PRos — a minimalist 16-bit OS written in pure x86 assembly. Runs on real hardware. Image, documentation, source code.
And now you can download old version of x16-PRos
Hi everyone!
Well, I have some very interesting news.
Starting with version 0.9, x16-PRos will support *.EXE(MZ) executable files. These are the very programs and games from MS-DOS.
At the moment, I've written several functions for the compatibility layer that allow running programs and games up to 450kib in size. Now I'm thinking about how to expand these limits, and from there it's not far to DOOM.
In the screenshots I'm running some games, namely:
- Alley Cat
- Bruce Lee
- Road Fighter
And hello world, what else.
if you do the command hello and then give it a argument the whole OS would restart and then stop here:
thats a little bug
btw this happens if you type in a wrong command and then give it an argument
i tested your OS a little bit
I know about this, fixing this rn
This feature was pushed into the dev branch. And there is new syscall for writing big files.
Now I need to optimize the kernel size a little bit
Офигеть ты игры добавил
Так красочно
А как это все рендерится?
English, pelase!
Это режим MS-DOS совместимости
This is MS-DOS compatibility mode.
Игры можно скачать из интернета (например с old DOS), а уже потом в системе запустить. По умолчанию их нету в образе.
Games can be downloaded from the internet (for example, from old DOS), and then run on the system. By default, they are not included in the disk image.
Nu tipa coroche imba
@stark mountain @quartz cape please speak English!
This is an English-speaking server.
If you wanna speak Russian, take it to a Russian-speaking server or to DMs.
I made 7 new themes for the terminal
The purple one is a bit quirky
first one looks like ubuntu 😭
I have a specific Ubuntu theme for the terminal since 0.5 btw)
Old photo, but anyway, you can check it yourself
cool!
nice!
@quartz cape Btw, how much of this is taken from or inspired by MikeOS? I noticed some similarities, but no attribution.
On an unrelated note, I notice you do mov sp, 0xFFFF.
I looked how the loading of programs and the file system were implemented there. Just because I was not too experienced in OS development. I didn't like everything else. I ended up writing the file system myself (to support directories), and the program loading logic also changed.
Now, The level of inspiration from this system is simply as minimal as possible. As I said, The string manipulation functions were taken from a forum and I recently learned about the origin of these functions.. But yeah, I need to leave a link to the original in the file.
So, the inspiration is present, but practically no code was taken. Only a couple of functions from the forum.
Is there a problem?
Yes, this stack is misaligned. You should do mov sp, 0, as push decrements sp before writing to the stack.
I got it, thank you, will be fixed
Out of curiosity, which forum did you take it from?
It was about 1 year ago, I don't remember
10 months actually
I've looked into the source code more closely, and quite a lot of code seems to be taken. This is especially apparent in version 0.4, the one to introduce file system support. Not only is the directory structure and memory layout very similar to MikeOS (tho the latter could be coincidence, I haven't looked too closely), the fs.asm from version 0.4 definitely took substantial portions of code from MikeOS disk.asm.
you can also tell that the portions you added have comments
while the portions taken from disk.asm have comments stripped
etc ...
Yes, a lot of code was taken from disk.asm at that time. Obviously, it was wrong of me, but I ended up reimplementing most of the borrowed functions in newer versions. At that time I simply had no experience in this, so I looked at other people’s things.
So I ask you to accept my apology for all of this.
It's fine to look at other people's things, and borrow code, as long as you do proper attribution and don't violate copyright.
Now I've improved and I do it completely myself. I gained experience, so this hasn't happened at all since then.
While the current version of fs.asm is substantially rewritten, there's still a lot of traces of the original.
So at the very least give some attribution and comply with the license terms of the Mike OS license.
Which I believe is a BSD3 license
I don't want other people's licenses in my project at all, this is one of the reasons why I rewrote my FS implementation
Well, I'm sorry, but as it stands now, your project is probably violating MikeOS copyright.
Then I will completely change the code from 0.4
It's not 0.4, but also the current version.
While it is rewritten, it's probably still a derivative work.
There's still some similarities visible even now.
What I'm saying is that these similarities are coming to the new versions from 0.4, the new code is mine, but it grows around the old one.
Yeah, then we are in agreement that all versions since 0.4 that currently exist need to attribute MikeOS and comply with the terms of their license.
Look, the BSD license is very permissive, it's not hard to comply with it.
I wouldn't call it a complete dependence, since initially only a small amount was taken.

