Simple Operating System

Reply

Join Date: Jan 2006
Posts: 2
Reputation: amrani.ah is an unknown quantity at this point 
Solved Threads: 0
amrani.ah amrani.ah is offline Offline
Newbie Poster

Simple Operating System

 
0
  #1
Jan 2nd, 2006
since im new here and this is my first post........

i started programming as a freshman (im now a sophmore) with VB, and have since, i and my teachers feel, have mastered that, tought myself C and am pretty accomplished in that language. I am working on the object oriented part of C. I am looking to create an operating system, have done some reasearch and found most say to use Assembely or a mix of assembely and C/C++. I have gone through a few assembely tutorials, and am completely ready and willing to spend a few years on this project if necessary.

I have at my disposal a development envoriment consisting of a development machine and a test machine, and a way to transfer files between the two, but they are not directly linked.

now that you have a slight background and know what i am capable of doing/learning here is my question.

I would like to create a simple operating system for the x86 platform that will boot up the machine, check to see if a cd is in the cd-rom drive, if so, execute the code (mostlikely in C) from the CD, if not, execute some default code (again, mostlikely C) that will bring up a screen which i can code myself.

wow, there really is no question in there......i guess what i want is to know is if there is an os out there that does this, or something close to this that i could modify. if not then how should i go about starting with this, and any help is apprecieated

lol, hope i came across as clear
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 5
Reputation: mikemark is an unknown quantity at this point 
Solved Threads: 0
mikemark's Avatar
mikemark mikemark is offline Offline
Newbie Poster

Re: Simple Operating System

 
0
  #2
Jan 12th, 2006
Originally Posted by amrani.ah
since im new here and this is my first post........

i started programming as a freshman (im now a sophmore) with VB, and have since, i and my teachers feel, have mastered that, tought myself C and am pretty accomplished in that language. I am working on the object oriented part of C. I am looking to create an operating system, have done some reasearch and found most say to use Assembely or a mix of assembely and C/C++. I have gone through a few assembely tutorials, and am completely ready and willing to spend a few years on this project if necessary.

I have at my disposal a development envoriment consisting of a development machine and a test machine, and a way to transfer files between the two, but they are not directly linked.

now that you have a slight background and know what i am capable of doing/learning here is my question.

I would like to create a simple operating system for the x86 platform that will boot up the machine, check to see if a cd is in the cd-rom drive, if so, execute the code (mostlikely in C) from the CD, if not, execute some default code (again, mostlikely C) that will bring up a screen which i can code myself.

wow, there really is no question in there......i guess what i want is to know is if there is an os out there that does this, or something close to this that i could modify. if not then how should i go about starting with this, and any help is apprecieated

lol, hope i came across as clear
hmm looks like a LOT of code for cd-rom access i think,
BUT a floppy disk method is VERY easy, for just one, or two seperate
floppy disk drives, i can send you code for a boot loader for fdd if you want?
Reply With Quote Quick reply to this message  
Join Date: Jan 2006
Posts: 2
Reputation: amrani.ah is an unknown quantity at this point 
Solved Threads: 0
amrani.ah amrani.ah is offline Offline
Newbie Poster

Re: Simple Operating System

 
0
  #3
Jan 12th, 2006
Originally Posted by mikemark
hmm looks like a LOT of code for cd-rom access i think,
BUT a floppy disk method is VERY easy, for just one, or two seperate
floppy disk drives, i can send you code for a boot loader for fdd if you want?
Yea, that would be great. E-mail is amrani.ah@gmail.com. thx
Reply With Quote Quick reply to this message  
Join Date: Oct 2009
Posts: 1
Reputation: jth92 is an unknown quantity at this point 
Solved Threads: 0
jth92 jth92 is offline Offline
Newbie Poster
 
0
  #4
18 Days Ago
Could I get a copy of the boot loader too? My email is jth_92@yahoo.com.

Thanks.
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 5
Reputation: mikemark is an unknown quantity at this point 
Solved Threads: 0
mikemark's Avatar
mikemark mikemark is offline Offline
Newbie Poster

sorry to dissappoint

 
0
  #5
18 Days Ago
Its been ages since I did assembler, I had a simple notepad with save on same disk (no files, just a random permemenant spot of data), a bitmap file loader&display, serial debug terminal, robotics control (via parallel port), ect ect

Before i ramble on about INT13 you have to understand what disk(0) means and what wiping out your bootsector does, means, and how to backup/restore it without loosing ALL the files on your hdd!!!!!
i reccomend testing this on a computer with the hdd disconnected COMPLETELY. (so if it attempts to wipe the hdd, it will only give you an error?) Be warned.

That was WAY back a while. There was a fire that took my hard drive AND my ****ing backup! ughh! It wasnt terribly difficult, first you need to practise copying from hard drive to memory (use BIOS interupt 13h to copy your instructions from disk to memory) then move instruction execution pointer to the start of that address, DONT FORGET REGISTERS! lol

once your there you can add program objects and a command interpreter (hint, model it on a "notepad" first, then add the actual interaction) but as always remember to save and restore registers (and instruction execution pointer?) after every program /begenning of interupt, and yes you CAN write your own interupts, but i have no clue how (DOS has a few)

here is an unfinished (and untested) example i just pulled from (g)oogle real quick, it'll work because i recognise it's code, but you'll probably have to know basic assembler and registers ect...

mov ah, 2 ; function 2, read sectors
mov al, 1 ; read 1 sector
mov ch, 0 ; track 0
mov cl, 0 ; sector 0
mov dh, 0 ; head 0
mov dl, 0 ; drive 0 (A (0=A, 80h = driv 0, 81h = drive 1)
mov bx, offset buffer ; where to put the data (ES:BX)
int 13h

then you just need to execute the data in the buffer!

NOTE ABOUT BOOT DISKS:
im not sure about hdds, but with floppys and probably hdds too, you need to make sure a specific two bytes on the disk are set to a specific value in order for the BIOS to even ATTEMPT to copy&load the bootsector. very important.

hope that helps! and good luck with your projects!

NOTE: example is taken from
http://www.programmersheaven.com/mb/...3h-service-02/
i make no claim to rights of blah blah blah .....
want me to take down?, PM me
Reply With Quote Quick reply to this message  
Join Date: Sep 2009
Posts: 1
Reputation: AMarchini is an unknown quantity at this point 
Solved Threads: 0
AMarchini AMarchini is offline Offline
Newbie Poster
 
0
  #6
17 Days Ago
Originally Posted by amrani.ah View Post

I would like to create a simple operating system for the x86 platform that will boot up the machine, check to see if a cd is in the cd-rom drive, if so, execute the code (mostlikely in C) from the CD, if not, execute some default code (again, mostlikely C) that will bring up a screen which i can code myself.
An excellent starting point is this link , Just download the OSD.ZIP file and start reading:
http://geezer.osdevbrasil.net/osd/code/

Tony
Reply With Quote Quick reply to this message  
Join Date: Oct 2008
Posts: 122
Reputation: NotNull is an unknown quantity at this point 
Solved Threads: 13
NotNull's Avatar
NotNull NotNull is offline Offline
Junior Poster
 
0
  #7
16 Days Ago
Func AH=2 INT 13h Disk Services:
CH=Low eight bits of cylinder number
CL=Sector number should start at 1
bits 6-7 represent two high bits of cylinder number (hard disk only).
So the MBR would be at Cylinder/Track 0 head 0 Sector 1

"NOTE ABOUT BOOT DISKS:
im not sure about hdds, but with floppys and probably hdds too, you need to make sure a specific two bytes on the disk are set to a specific value in order for the BIOS to even ATTEMPT to copy&load the bootsector. very important."
This is true for floppy disks too.
These two bytes are at offsets 510 - 511 (offsets relative to 0)
and is a WORD which contains AA55 or a byte at a time 55-AA
these are the last two bytes of the 512 byte boot sector,
your bootloader must fit within 512-2 bytes or else it will have to
load the rest from another part of the drive itself.

Even in the documentation I have the track/cylinder seem to have
the same meaning - but I read in MS-DOS encyclopedia that
cylinder actually refers to the number of like numbered sectors
on the drive.

Learning how operating systems work or are implemented for
a particular architecture can be qwite educational,
x86:
A 16-bit operating system is pretty straight forward,
besides device drivers which require proprietary information
lest the primitive services of the BIOS are used to create the drivers,
and managing a file system on a harddisk,
it uses the same parts of the architecture for implementing
services for programs and managing them as do the
applications which it serves.
32-bit architecture is not as straight forward, there are
parts of it reserved for system programs,
and several system data structures used by the CPU.
It is more complicated.
No reason to be discouraged at all though.

Older DOS systems I believe had a bootloader on the MBR
which contained a partition table with information on
partitions on the drive and which was bootable.
The MBR also contained the BIOS Parameter Block.
The first sector of the bootable partition was loaded into
memory and executed.

Good day...
[[AxxXx3BBbLbLLLaAzXxZiO]]
Last edited by NotNull; 16 Days Ago at 10:08 pm.
----------------------------------------------------------
To control a mind violates a man, and all it has been used for is
hurting and afflicting. Nowonder I progam in assembly...
--->Now available http://dotcoding.netai.net/
Reply With Quote Quick reply to this message  
Reply

Message:



Similar Threads
Other Threads in the Assembly Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC