Showing posts with label screen. Show all posts
Showing posts with label screen. Show all posts

Thursday, June 05, 2014

Amazon's new smartphone is a mystery

For the past few days, the internet has been ablaze with remarks about Amazon's rumored smartphone they plan to release near the end of July. A teaser ad has been floating around the Amazon web store asking users if they want to be invited to a device unveiling on June 18th in Seatle Washington. Interestingly enough, it seems to be pretty close to Apple's WWDC conference. Amazon must be trying to compete directly with iOS 8 and the iPhone 6 (and whatever else Apple intends to release). So far the specifications have been well hidden by Amazon, but it has leaked that the new smartphone will have glasses-free 3D support. Judging by the leaked information, it seems very similar to the 3D display type on the Nintendo 3DS. Follow our Twitter feed (@allstuffnerdy) and we'll keep you updated when Amazon unveils their new device on June 18th.

Hey blog readers! If you want to follow our meaningless updates, check out our pages here:
Facebook: http://on.fb.me/U9s2Ld
Twitter: Follow us @allstuffnerdy
Google+: https://www.google.com/+AllstuffnerdyBlogspot
If you have a business you would like us to mention at the beginning of a post, check out our gigs on Fiverr:
Joshua: http://fiverr.com/armmaster17
Brandon: http://fiverr.com/maltzy
Spreadshirt: http://allstuffnerdy.spreadshirt.com
Check out our SpreadShirt shop for our awesome selection of geeky apparel. We offer Mens, Womens, and kid sizes of T-shirts, Long-sleeve shirts, and hoodies in addition to coffee mugs and more. Check out our store here: http://allstuffnerdy.spreadshirt.com

Monday, June 02, 2014

Cosmos - Part 3 - Mouse support

UPDATE: THIS CODE NO LONGER WORKS WITH THE NEWEST VERSION OF COSMOS. STAY TUNED FOR MY NEW COSMOS TUTORIAL SERIES.

This advertising slot is open! To have a paragraph here featuring your company (doesn't have to be tech related), go to http://www.fiverr.com/armmaster17/mention-your-company-in-a-blog-post.

Hey blog readers! we have a new Facebook page! Check it out at http://on.fb.me/U9s2Ld

Before I begin, I would like to thank Philip Rader for his helpful article at http://bytealot.blogspot.com/2012/09/cosmos-c-gui-tutorial-mouse-cursors.html. However, I only recommend using his article as a reference. The majority of his code doesn't work anymore since he used an older version. But we will be using a little bit of his code.

Hello blog readers! If you haven't already, go ahead and do parts one through two before you try this tutorial, especially if you have no experience with Cosmos or programming. You can find part 1 here ->http://allstuffnerdy.blogspot.com/2014/05/cosmos-part-1-programming-your-own-os.html. But let's move on to adding GUI and mouse support. Go ahead and open up your project from the last tutorial, and edit it so it looks like this:
Just note that on line 6, your code should say "namespace " without the quotes, and the name of your project. So unless you named your project TOS like I did, line 6 should look different on your screen. If you need more help with this drop a comment below. But once your code looks like this go ahead and type in the following code.

The code if you need to copy and paste is below. Remember, on line 6 you should replace "TOS" with the name of your project.

using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;
using Cosmos.Hardware;

namespace TOS
{
    public class Kernel : Sys.Kernel
    {
        VGAScreen screen;
        Mouse mouse;
        protected override void BeforeRun()
        {
            screen = new VGAScreen();
            //screen.SetMode320x200x8();
            screen.SetGraphicsMode(VGAScreen.ScreenSize.Size320x200, VGAScreen.ColorDepth.BitDepth8);
            screen.Clear(15);
            mouse = new Mouse();
            mouse.Initialize(320, 200);
        }

        protected override void Run()
        {
            screen.SetPixel320x200x8((uint)mouse.X, (uint)mouse.Y, 0);
        }
    }
}

Now go ahead and run it. This is what you should get. Make sure that you click on the window when the VMWARE image shows up so your OS recognizes your mouse.
Basically what's happening is we are finding the (X,Y) coordinates of the mouse, and coloring that same spot on the screen black. But there is no code to go back and clear the last pixel. So go ahead and edit your code again so it looks like this. Remember to change line 6 like you did before.

using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;
using Cosmos.Hardware;

namespace TOS
{
    public class Kernel : Sys.Kernel
    {
        VGAScreen screen;
        Mouse mouse;
        protected override void BeforeRun()
        {
            screen = new VGAScreen();
            //screen.SetMode320x200x8();
            screen.SetGraphicsMode(VGAScreen.ScreenSize.Size320x200, VGAScreen.ColorDepth.BitDepth8);
            screen.Clear(15);
            mouse = new Mouse();
            mouse.Initialize(320, 200);
        }

        protected override void Run()
        {
            screen.Clear(15);
            screen.SetPixel320x200x8((uint)mouse.X, (uint)mouse.Y, 0);
            screen.SetPixel320x200x8((uint)mouse.X - 1, (uint)mouse.Y, 0);
            screen.SetPixel320x200x8((uint)mouse.X, (uint)mouse.Y - 1, 0);
            screen.SetPixel320x200x8((uint)mouse.X - 2, (uint)mouse.Y, 0);
            screen.SetPixel320x200x8((uint)mouse.X, (uint)mouse.Y - 2, 0);
        }
    }
}

Now go ahead and run it. Now you should see a single black pixel that acts as your mouse. Congratulations! You have created a GUI! This is what it should look like (minus the red circle):
It might be really laggy, but that's probably because you aren't on a computer that supports hyper-v. If you want to see your new OS run at it's true speed, follow these instructions.

EDIT: the built-in Cosmos tools for making bootable media are broken. I will upload a tutorial as soon as I have found a work-around.

For even more fun, check out part 4 here -> (link under construction). And feel free to edit the code as much as you like. If you run into trouble, just leave a comment below and any of the authors here will be happy to help. Have Fun!


Hey blog readers! If you want to follow our meaningless updates, check out our pages here:
Facebook: http://on.fb.me/U9s2Ld
Twitter: Follow us @allstuffnerdy
Google+: https://www.google.com/+AllstuffnerdyBlogspot
If you have a business you would like us to mention at the beginning of a post, check out our gigs on Fiverr:
Joshua: http://fiverr.com/armmaster17
Brandon: http://fiverr.com/maltzy