Cosmos VGA

May 13, 2011 at 9:47 PM

I already tried asking this earlier this year, but unfortunately didn't get any responce. I would really appreciate if anybody could help me with my problem;

I am using Cosmos MS 4 and have setup a GUI for the OS (using VGA of course). Now, when I try and render the graphics, if certain elements overlap (lets say the mouse is over the 'taskbar'), you can see the screen flicker. Is there any way to 'pause' the screen, render the graphics, and then unpause it? Or any other way of making it so there is no flickering?

Any help greatly appreciated.

 

Thanks,

Callum

Coordinator
May 14, 2011 at 6:55 AM
that needs double buffering, but we dont support that yet. in fact, you wont see it in MS4: we're currently working on other stuff (filesystem, fixing up compiler a bit)...


You're welcome to join the project and work on our VGA implementation...

On Fri, May 13, 2011 at 10:47 PM, Ca11um <notifications@codeplex.com> wrote:

From: Ca11um

I already tried asking this earlier this year, but unfortunately didn't get any responce. I would really appreciate if anybody could help me with my problem;

I am using Cosmos MS 4 and have setup a GUI for the OS (using VGA of course). Now, when I try and render the graphics, if certain elements overlap (lets say the mouse is over the 'taskbar'), you can see the screen flicker. Is there any way to 'pause' the screen, render the graphics, and then unpause it? Or any other way of making it so there is no flickering?

Any help greatly appreciated.

Thanks,

Callum

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Coordinator
May 14, 2011 at 6:56 AM
Note: VGA is disabled in current sources.

On Sat, May 14, 2011 at 7:55 AM, Matthijs ter Woord <matthijsterwoord@gmail.com> wrote:
that needs double buffering, but we dont support that yet. in fact, you wont see it in MS4: we're currently working on other stuff (filesystem, fixing up compiler a bit)...


You're welcome to join the project and work on our VGA implementation...


On Fri, May 13, 2011 at 10:47 PM, Ca11um <notifications@codeplex.com> wrote:

From: Ca11um

I already tried asking this earlier this year, but unfortunately didn't get any responce. I would really appreciate if anybody could help me with my problem;

I am using Cosmos MS 4 and have setup a GUI for the OS (using VGA of course). Now, when I try and render the graphics, if certain elements overlap (lets say the mouse is over the 'taskbar'), you can see the screen flicker. Is there any way to 'pause' the screen, render the graphics, and then unpause it? Or any other way of making it so there is no flickering?

Any help greatly appreciated.

Thanks,

Callum

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com



Developer
May 25, 2011 at 1:34 AM

As a note, my graphics implementation (currently 1,600 lines), does use double buffering to avoid the flashing of the screen. (now that i think of it, i need to draw my vga pallet reference after the screen is cleared XD)

Coordinator
May 25, 2011 at 7:42 AM
How do you do the actual buffer copying?

On Wed, May 25, 2011 at 2:34 AM, blah38621 <notifications@codeplex.com> wrote:

From: blah38621

As a note, my graphics implementation (currently 1,600 lines), does use double buffering to avoid the flashing of the screen. (now that i think of it, i need to draw my vga pallet reference after the screen is cleared XD)

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Developer
May 25, 2011 at 1:47 PM

I actually perform all of the changes on an array of uint's (each represents a single pixel, i have another class that i can switch to for 32-bit color(1 byte each, alpha, red, green, and blue), I just have to get my color approximation working properly, then i'll switch to that for all color modes), and write that array of uint's to the screen, (i've made a local copy of the mIO stream that the regular VGA screen writes to, and write to it, so I don't have to deal with re-building the dev-kit (it takes my dev computer a full 30 seconds to build the default Guess demo (it's very old, and the cpu in it is from an old laptop i had, I just can't get the cpu to run at the speed it's supposed to (it's running at 1.2 ghz, it should be running at 2ghz, but i can't manage to get the multiplier to change back), it also only has 756mb of ram, and a 40gb hard drive.))). I'm working on creating a system to re-draw only the bits of the screen that are needed.

 

Also, while i'm on the topic, is there a way to write multiple bytes at once to the stream? I know it's possible in C++ with the memcpy command, but how would I do this in Cosmos? As if I could do that, I would be able to make the re-drawing of the screen much faster. (a full re-drawing of the screen currently takes a half second, and that's definately noticable. My test machine is running QEMU on a dual Hyperthreaded Dual-Core 2.4ghz Xeon CPU server XD Sadly the cpu's don't support virtualization, so I can only send 2 of the 8 threads to a single VM (that's using Workstation, not sure what QEMU is capable of), Also only has 2gb of ram (that will be changing soon as the upgrades arrive :P). It's running Ubuntu Linux v10.04 (I dislike the way 10.10 highlights your active desktop, I prefer 10.04's method. Hopefully, I'll upgrade to 11.04 when it comes out.)).

Coordinator
May 25, 2011 at 1:51 PM
i think mIO is a managed memory instance?

please let me know.. if so i think it should be possible...


On Wed, May 25, 2011 at 2:47 PM, blah38621 <notifications@codeplex.com> wrote:

From: blah38621

I actually perform all of the changes on an array of uint's (each represents a single pixel, i have another class that i can switch to for 32-bit color(1 byte each, alpha, red, green, and blue), I just have to get my color approximation working properly, then i'll switch to that for all color modes), and write that array of uint's to the screen, (i've made a local copy of the mIO stream that the regular VGA screen writes to, and write to it, so I don't have to deal with re-building the dev-kit (it takes my dev computer a full 30 seconds to build the default Guess demo (it's very old, and the cpu in it is from an old laptop i had, I just can't get the cpu to run at the speed it's supposed to (it's running at 1.2 ghz, it should be running at 2ghz, but i can't manage to get the multiplier to change back), it also only has 756mb of ram, and a 40gb hard drive.))). I'm working on creating a system to re-draw only the bits of the screen that are needed.

Also, while i'm on the topic, is there a way to write multiple bytes at once to the stream? I know it's possible in C++ with the memcpy command, but how would I do this in Cosmos? As if I could do that, I would be able to make the re-drawing of the screen much faster. (a full re-drawing of the screen currently takes a half second, and that's definately noticable. My test machine is running QEMU on a dual Hyperthreaded Dual-Core 2.4ghz Xeon CPU server XD Sadly the cpu's don't support virtualization, so I can only send 2 of the 8 threads to a single VM (that's using Workstation, not sure what QEMU is capable of), Also only has 2gb of ram (that will be changing soon as the upgrades arrive :P). It's running Ubuntu Linux v10.04 (I dislike the way 10.10 highlights your active desktop, I prefer 10.04's method. Hopefully, I'll upgrade to 11.04 when it comes out.)).

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Coordinator
May 25, 2011 at 1:55 PM
On a side note: would you be interested in helping out the project? we could use help all over the place....


On Wed, May 25, 2011 at 2:50 PM, Matthijs ter Woord <matthijsterwoord@gmail.com> wrote:
i think mIO is a managed memory instance?

please let me know.. if so i think it should be possible...



On Wed, May 25, 2011 at 2:47 PM, blah38621 <notifications@codeplex.com> wrote:

From: blah38621

I actually perform all of the changes on an array of uint's (each represents a single pixel, i have another class that i can switch to for 32-bit color(1 byte each, alpha, red, green, and blue), I just have to get my color approximation working properly, then i'll switch to that for all color modes), and write that array of uint's to the screen, (i've made a local copy of the mIO stream that the regular VGA screen writes to, and write to it, so I don't have to deal with re-building the dev-kit (it takes my dev computer a full 30 seconds to build the default Guess demo (it's very old, and the cpu in it is from an old laptop i had, I just can't get the cpu to run at the speed it's supposed to (it's running at 1.2 ghz, it should be running at 2ghz, but i can't manage to get the multiplier to change back), it also only has 756mb of ram, and a 40gb hard drive.))). I'm working on creating a system to re-draw only the bits of the screen that are needed.

Also, while i'm on the topic, is there a way to write multiple bytes at once to the stream? I know it's possible in C++ with the memcpy command, but how would I do this in Cosmos? As if I could do that, I would be able to make the re-drawing of the screen much faster. (a full re-drawing of the screen currently takes a half second, and that's definately noticable. My test machine is running QEMU on a dual Hyperthreaded Dual-Core 2.4ghz Xeon CPU server XD Sadly the cpu's don't support virtualization, so I can only send 2 of the 8 threads to a single VM (that's using Workstation, not sure what QEMU is capable of), Also only has 2gb of ram (that will be changing soon as the upgrades arrive :P). It's running Ubuntu Linux v10.04 (I dislike the way 10.10 highlights your active desktop, I prefer 10.04's method. Hopefully, I'll upgrade to 11.04 when it comes out.)).

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com



Developer
May 25, 2011 at 2:41 PM

Yep, I'd be willing to help :P

 

Now if I knew why the mouse interupt isn't being called.... Would have a workable GUI os on the trunk version if I could figure that out.... hmmm...

The IOPort class is the right class to be calling for the CPUBus read & write calls in the old mouse code right?

Coordinator
May 25, 2011 at 2:57 PM
> On a side note: would you be interested in helping out the project? we
> could use help all over the place....

Esp in compiler. :)
Coordinator
May 25, 2011 at 2:57 PM
> The IOPort class is the right class to be calling for the CPUBus read &
> write calls in the old mouse code right?

Yes.
Coordinator
May 25, 2011 at 4:07 PM
regarding the interrupt: it was disabled in the interrupts code...

On Wed, May 25, 2011 at 3:57 PM, kudzu <notifications@codeplex.com> wrote:

From: kudzu

> The IOPort class is the right class to be calling for the CPUBus read &
> write calls in the old mouse code right?

Yes.

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Developer
May 25, 2011 at 8:17 PM
Edited May 25, 2011 at 10:13 PM

Well then, I'll just have to enable it again XD (and perhaps enable a few other things as well? XD)

 

Edit:

I can't seem to figure out what you mean by "it was disabled", because I don't see any reason the mouse shouldn't be working in the interrupt code...

Developer
May 26, 2011 at 11:12 AM
Edited May 26, 2011 at 11:14 AM

Find mouse.cs (or something like that)
Now go back here once you're done looking at it's code. :P
It's all COMMENTED OUT. :(
Now un-comment out that, you might receive an error, by then I forgot what to do to fix the error (the fix was provided in the Skype Group, which is now down, sadly -.-)

EDIT:
If this was not your problem then I don't know what's the fix. Heck, last time I checked COSMOS was over a year ago or so! :P

Coordinator
May 26, 2011 at 2:08 PM
> what to do to fix the error (the fix was provided in the Skype Group,
> which is now down, sadly -.-)

Use IRC instead.
Developer
May 26, 2011 at 2:36 PM

:P I already un-commented it and fixed the error :P You had to resolve CPUBus to the IOPortImpl class. (the IOPort class's functions aren't accessable and I didn't feel like re-building the dev-kit) So the code should work, but it doesn't.

Coordinator
May 26, 2011 at 2:39 PM
dont use Impl classes directly: they use some magic in most cases (as they're basically plugs)
the IOPort classes are accessible, but you need to instantiate an IOPort first..


On Thu, May 26, 2011 at 3:36 PM, blah38621 <notifications@codeplex.com> wrote:

From: blah38621

:P I already un-commented it and fixed the error :P You had to resolve CPUBus to the IOPortImpl class. (the IOPort class's functions aren't accessable and I didn't feel like re-building the dev-kit) So the code should work, but it doesn't.

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Developer
May 26, 2011 at 6:17 PM
Edited May 27, 2011 at 12:10 AM

k, I'll see what happens when I instantiate the class instead, that might be why it doesn't want to work for me.

 

Edit:

Btw, the constructors for IOPort were internal, I changed them to public, and unfortunately, the mouse still doesn't work :(.

 

 

Coordinator
May 27, 2011 at 7:22 AM
in general, using plugs methods directly could work, but could also be catastrofic......

On Thu, May 26, 2011 at 7:17 PM, blah38621 <notifications@codeplex.com> wrote:

From: blah38621

k, I'll see what happens when I istantiate the class instead, that might be why it doesn't want to work for me.

Read the full discussion online.

To add a post to this discussion, reply to this email (Cosmos@discussions.codeplex.com)

To start a new discussion for this project, email Cosmos@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com