Post an entry

Posted July 1, 2009 1:38 am
Email: dct6412 [at] yahoo [dot] com

Tom

This website is the closest thing I've found to what I've been looking for, but I don't understand it yet.

My idea is to have only a few components in a system. I want to write a small BIOS/OS which can write and read to any memory location based on input from the serial/COM port. I envisioned the commands to be simple (e.g. "w 00fff 0008" to write the value of 8h to memory locatoin 00fff" or "r 00fff" to display the value of memory locaton 00fff). I want to read and understand every single instruction along the way so it is necessary to start with a ROM image that is as small as possible.

At first I only want to support the memory and a serial/COM interface. I do NOT want to support a keyboard, mouse, network, disk drive, video or anything else. Just a basic interface to understand the process from CPU reset/turn-on to a running program that can't even be called a real operating system. It'd be computer hardware and I'd have taken control of it so it'd be doing what I want.

I found SIMNOW and downloaded it - I'm running it on Vista and it works. My first day I started getting errors because I have no BIOS or memory image (although the workspace GUI shows the basic devices and their connections).

I want to document my progress and eventually hit the more complicated milestones:

a) write to multiple memory locations
b) fetch two values from memory, operate on the values, write to a third location and finally read that location and verify correct operation.
c) enable keyboard function - type a key to see it echoed over the serial/com i/o
d) enable vga with a driver - type a key to see it echoed over the display

etc, etc, etc. One small baby step forward at a time documented clearly with diagrams and pictures.

Any advice for a new BIOS/OS enthusiast?

Thanks!
My idea is to have only a few components in a system. The CPU <-> northbridge <-> memory <-> southbrdige <-> ROM (for BIOS) with an additional connection from the southbridge to a serial/COM port.

I want to write a small BIOS/OS which can write and read to any memory location based on input from the serial/COM port. I envisioned the commands to be simple (e.g. "w 00fff 0008" to write the value of 8h to memory locatoin 00fff" or "r 00fff" to display the value of memory locaton 00fff).

That's it at first - no keyboard, mouse, network, disk drive, video or anything else. Just a basic interface to understand the process from CPU reset/turn-on to a running program that can't even be called a real operating system. It'd be computer hardware and I'd have taken control of it so it'd be doing what I want.

I found SIMNOW and downloaded it - I'm running it on Vista and it works but I started getting errors because I have no BIOS or memory image (although the workspace GUI shows the basic devices and their connections).

I want to document my progress and eventually hit the more complicated milestones:

a) write to multiple memory locations
b) fetch two values from memory, operate on the values, write to a third location and finally read that location and verify it worked.
c) enable keyboard function - type a key to see it echoed over the serial/com i/o
d) enable vga with a driver - type a key to see it echoed over the display

etc, etc, etc. One small baby step forward at a time documented clearly with diagrams and pictures.

Any advice for a new BIOS/OS enthusiast?

Thanks!

Posted April 4, 2009 1:17 pm

Ian Jack

Kailas - Thanks for your comments. I've loved playing with assembler ever since my first 6502 computer. Since then I've played with 6809, Z80, 8086, x86, x86_64, PPC, and ARM. It's great fun; but it can be a little difficult getting information on the other hardware in one's computer!

Location: Mumbai - Posted April 3, 2009 7:32 am
Email: kvshetye [at] yahoo [dot] com

Kailas Shetye

a really nice project. I remember the efforts I had put to write a code in assembler to put machine in 32bit and just to display a string after that.

dont know if this will be useful to emulate some other processor and boot a different os. still thinking if this can be done using ur project.

Posted March 20, 2009 11:21 am

Ian Jack

Abhijeet - the book by Burgess, that I mention in the documentation page, is a really good example of a more complete (32-bit) operating system. The other books, about OS X, Linux, and BSD are in-depth discussions of real operating systems for which the code is available. But they are rather heavy going.

I'm slowly getting round to improving the documentation, and I'll look to improve the system in the future, but it's just a hobby so I can't devote all my time to it!

Ian

Posted March 17, 2009 6:27 am
Email: abhijeetnayak [at] yahoo [dot] com

abhijeet nayak

Hello,
I am very interested in OS design and implementation. I want to build my small learning OS. I have completed the Galvin theory book. Now where should i look further?

It would be nice if you can add more documentation on your site for learning.

thanks
abhijeet nayak

Posted March 6, 2009 8:39 am

Ian Jack

I'll make a real effort Matt! I do have a real life also, but I'll see what can be done.

Location: London UK - Posted March 1, 2009 5:23 pm
Website - Email: pushproxy [at] yahoo [dot] co [dot] uk

Matt Parsons

Come on Ian, hurry up with the rest of the Docs

This makes for fun Lunch Time reading!

Cheers!

Matt

Posted February 15, 2009 9:17 am

Ian Jack

All code here will work on any x86_64 chip, Intel or AMD. I originally started this work using an Athlon 64, but now use both Intel and AMD dual core chips.

Also note that SimNow, despite what the documentation implies, works perfectly well on Intel chips also. You really need it if developing low-level x86_64 code!

Posted February 15, 2009 3:45 am

Cad

Is it AMD only ??
Not Intel core2duo ??

Location: London, UK - Posted February 14, 2009 10:44 pm

Chris Poole

Thanks for posting this code and even putting some explanation of the code.

I really enjoyed taking a look at this, as I played with a lot of very raw 32 bit protected mode code back in the 90s, so it's pleasing to be able to update some of that knowledge to include the AMD64 architecture by looking through your work.

Thanks for sharing - nice code!

Page 2 of 3   «Previous   Next »   

[ Login ]

Script by Dagon Design