Mattise Version 1.0 Alpha Released
-
- Member
- Posts: 2566
- Joined: Sun Jan 14, 2007 9:15 pm
- Libera.chat IRC: miselin
- Location: Sydney, Australia (I come from a land down under!)
- Contact:
Mattise Version 1.0 Alpha Released
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.
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.
- Brynet-Inc
- Member
- Posts: 2426
- Joined: Tue Oct 17, 2006 9:29 pm
- Libera.chat IRC: brynet
- Location: Canada
- Contact:
-
- Member
- Posts: 2566
- Joined: Sun Jan 14, 2007 9:15 pm
- Libera.chat IRC: miselin
- Location: Sydney, Australia (I come from a land down under!)
- Contact:
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
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

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

One technical thing - the SHIFT key doesn't work (it doesn't make the letter caps.)
inflater
My web site: http://inflater.wz.cz (Slovak)
Derrick operating system: http://derrick.xf.cz (Slovak and English
)
Derrick operating system: http://derrick.xf.cz (Slovak and English

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.

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.
Programming: sewing for men.
And I am impressed that you did all that in 4 months, or how long did it take you to get there?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.
-
- Member
- Posts: 2566
- Joined: Sun Jan 14, 2007 9:15 pm
- Libera.chat IRC: miselin
- Location: Sydney, Australia (I come from a land down under!)
- Contact:
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.

'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.
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> $
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));

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...
The real problem with goto is not with the control transfer, but with environments. Properly tail-recursive closures get both right.
-
- Member
- Posts: 2566
- Joined: Sun Jan 14, 2007 9:15 pm
- Libera.chat IRC: miselin
- Location: Sydney, Australia (I come from a land down under!)
- Contact:
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?
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
Code: Select all
read /usr/wheeeeee.txt
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?
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:
That'll be space and white-on-black. On that background the cursor should show fine. 
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;
}

The real problem with goto is not with the control transfer, but with environments. Properly tail-recursive closures get both right.
-
- Member
- Posts: 97
- Joined: Thu Mar 15, 2007 2:27 pm