Page 1 of 2
Mattise Version 1.0 Alpha Released
Posted: Thu Mar 29, 2007 3:21 pm
by pcmattman
The alpha for version 1.0 of my operating system has (finally) been released on the 4-month 'anniversary' of project start. It can be downloaded at sourceforge:
http://sourceforge.net/projects/mattise/ as a ZIP with a disk image and a quick 'readme' to familiarize users with the OS.
Please do test the operating system and point out problems within it. It would also help if you could point out errors in my code.
Posted: Thu Mar 29, 2007 5:02 pm
by Brynet-Inc
Looks good pcmattman, Keep up the good work
BTW: Any specific reason you're using CVS vs SVN? Just out of curiosity..
[BUG]
Posted: Thu Mar 29, 2007 8:03 pm
by ~
It looks like the floppy disk never stops spinning or at least delays a very long time.
Posted: Thu Mar 29, 2007 10:00 pm
by pcmattman
Yes, the floppy is set to 100 seconds to spin down. This was mainly for testing purposes. Next release it will be much smaller.
I'm using CVS because I completely understand CVS as a pose to SVN and because I've already got everything I need to connect to CVS repositries.
Edit: the floppy timeout is now down to 2 seconds. Any other bugs are welcome

Posted: Fri Mar 30, 2007 8:41 am
by inflater
Nice work, pcmattman, but I like independent operating systems from UNIX/MS-DOS more, but - keep up the good work.
One technical thing - the SHIFT key doesn't work (it doesn't make the letter caps.)
inflater
Posted: Fri Mar 30, 2007 12:53 pm
by turtling
I like the M in the top right corner. It's a good idea. I like it a lot.
I tried 'ls' and 'dir', without success, but the 'help' command was there. So I typed 'ld', for list dir, I think. The extra line return between each file wasted some precious screen space, I think.
Posted: Fri Mar 30, 2007 1:14 pm
by ~
turtling wrote:I like the M in the top right corner. It's a good idea. I like it a lot.
I tried 'ls' and 'dir', without success, but the 'help' command was there. So I typed 'ld', for list dir, I think. The extra line return between each file wasted some precious screen space, I think.
And I am impressed that you did all that in 4 months, or how long did it take you to get there?
Posted: Fri Mar 30, 2007 7:28 pm
by pcmattman
The 'M' in the top right corner is a remnant of testing the multitasker
'ls' and 'dir' are not supported, the command you're looking for is 'ld'. At the time of creation there was basically nothing on the floppy so it only took up half the screen. Now I'm going to have to play around with it.
And SHIFT should work, I'm pretty sure it works for me.
4 months it has taken, that is true. I have worked at it almost every day of the past 4 months, though, so it's not like it was easy.
Posted: Sat Mar 31, 2007 12:23 pm
by mystran
Code: Select all
'MULTSECTTXT' (fil) - file size is 523 bytes = 1 kb
'WHEEEEEETXT' (fil) - file size is 562 bytes = 1 kb
END USR
root@localhost> $ help
help: displays this information
echo: prints text
exec: executes a program
lp: lists the processes running
cls: clears the screen
ld: lists all the files on the drive
read: displays a file
exit: exits Mattise and shuts down the computer (NI)
restart: restarts the computer
selftest: performs a self-test
encrypt: encrypts a string
decrypt: decrypts a string
oot@localhost> $ selftest
irst memory block allocated: id: 3159, address: 5331968
econd memory block allocated: id: 3159, address: 5331968
oot@localhost> $
There's some issue with some of the commands, as the first chracter of each line seems to be missing. It's not all the time, but it's often.
Copypasting the above was painful btw, because the screen seems to contain NUL characters after each line??
I was also unable to figure out how to actually read any of the files.
Neither / or \ seemed to work as a directory separator...
Also, I see no text mode cursor. Is this normal? If you know where the cursor should be, here's how to set the position.
Code: Select all
// set cursor position:
//
// screenpos is simply (y*80 + x) for 80x25 textmode
// out8_p is byte output with io_wait
// cursor LOW port to vga INDEX register
out8_p(0x3d4, 0x0F);
out8_p(0x3d5, (unsigned char)(screenpos&0xFF));
// cursor HIGH port to vga INDEX register
out8_p(0x3d4, 0x0E);
out8_p(0x3d5, (unsigned char)((screenpos>>8)&0xFF));
Simple enough to copypaste.
edit: also set the character attributes to non-zero to actually get the cursor to show, otherwise the cursor will be black on black which isn't visible
Finally, it seems like your keyboard driver doesn't handle shift, as I was unable to get any capital letters (or special characters that need shift for that matter).
That was in Bochs. Didn't have time to test on real PC yet. I'll see if I can manage at some point...
Posted: Sat Mar 31, 2007 6:08 pm
by pcmattman
Null characters at the end of each line are caused by the clear-screen algorithm which clears to NULL.
I'm still trying to figure out why characters at the start of the line are sometimes cut off, it probably has something to do with newline handling.
/ is the only directory seperator, ie
That should work.
I did try to put in the text-mode cursor but it never worked properly. I'll be fixing that soon as well.
The keyboard driver does handle shift, I don't know what you're all talking about there.
After reading your post, mystran, I did go and test on a real PC. Shift works, reading of files works etc...
Obviously I have some serious quality control to work on. May I ask which version of Bochs/what hardware you are testing on?
Posted: Sat Mar 31, 2007 6:56 pm
by mystran
My Bochs is more or less near latest, as I just updated it like mm.. 8 days ago or something (and shift works the obvious way in my own kernel so I'd say "strange").
As for clearing screen, I suggest you clear it with bytes 0x20,0x07. You can ofcourse optimize and clear the whole screen with 0x0720 (little endian 16-bits = character and attribute at the same time) or even 0x07200720 (32-bit access for less access).
Something like:
Code: Select all
// 16-bits at a time, for clarity
void clearscreen() {
static const unsigned short *screen = (unsigned short*) 0xB8000;
for(i = 0; i < 80*25; i++) screen[i] = 0x0720;
}
That'll be space and white-on-black. On that background the cursor should show fine.

Posted: Mon Apr 02, 2007 12:54 am
by pcmattman
Nope. No cursor. Although, as I type/as characters are displayed the cursor does show up for a short period of time (ie. before the characters get drawn).
Posted: Mon Apr 02, 2007 3:01 pm
by anon19287473
The sourceforge site says there are libs? Are they libs I'd be familier w/ (from Unix, curses etc.)?
Posted: Mon Apr 02, 2007 5:32 pm
by pcmattman
Ahem... it says libs in development. It's basically a stdlib that incorporates standard stuff like putc, etc... that developers can link in to their code to write programs for Mattise.
The functionality would be the same, but you wouldn't be able to use Unix libs, you'd have to use my libs.
Posted: Sun Apr 08, 2007 10:09 pm
by pcmattman
@mystran - I reinspected my code and fixed the text-mode cursor.