Search found 387 matches

by Andyhhp
Mon Aug 22, 2011 7:12 pm
Forum: Beginning OS Development
Topic: GDT
Replies: 4
Views: 15505

Re: GDT

You have the include paths wrong then.

Double check them - You definitly can include files.

~Andrew
by Andyhhp
Sat Aug 20, 2011 4:30 pm
Forum: Beginning OS Development
Topic: Enabling paging outside bootloader?
Replies: 2
Views: 13088

Re: Enabling paging outside bootloader?

Cant you edit a flag in your multiboot header to cause grub to initialise paging?

Otherwise, the alternative is to link your kernel to 0xC0000000 and have a short stub at the entry point which sets up identitiy paging, then jumps to main.

~Andrew
by Andyhhp
Sun Aug 14, 2011 10:43 am
Forum: Beginning OS Development
Topic: MyOS Problem
Replies: 6
Views: 19001

Re: MyOS Problem

Yes it really will.

You make a loopback device, dd the bootsector to the beginning, remount it to get the correct filesystem driver, and cp the second stage on.

~Andrew
by Andyhhp
Sat Aug 13, 2011 11:36 pm
Forum: Beginning OS Development
Topic: TSS/TAsk Switch
Replies: 3
Views: 15568

Re: TSS/TAsk Switch

The message from bochs means that you are attemping to use the LOCK prefix with an instruction where it is not valid. Unless you have explicitly put in some handcoded asm (at which point you should be less confused about the error), this means that you are trying to execute data in memory. I suggest...
by Andyhhp
Sat Aug 13, 2011 11:33 pm
Forum: Beginners
Topic: My Questions About Tutorial 6
Replies: 2
Views: 14462

Re: My Questions About Tutorial 6

Why multiply cl by cx. Why not moveSectors Per Cluster into the cx and then multiply cx by ax? mul cx means "multiply ax by cx and store the result in ax:cx". In x86, multiplication is hardwired to use the [r][e]ax register, which is why you only specify the second operand. There is no multiplicati...
by Andyhhp
Sat Aug 13, 2011 11:23 pm
Forum: Beginning OS Development
Topic: USB/HDD/CD/DVD Booting
Replies: 3
Views: 15096

Re: USB/HDD/CD/DVD Booting

If you have BIOS emulation then floppy disks and hard disks are very very similar.

However, in protected mode, you will need to send raw scsi commands to the disk (in either case). At that point, there are more intellegent things you can do with a hard drive.

~Andrew
by Andyhhp
Sat Aug 13, 2011 11:21 pm
Forum: Beginning OS Development
Topic: MyOS Problem
Replies: 6
Views: 19001

Re: MyOS Problem

dd is your friend. It is much nicer than the windows alternatives.

See man dd for details.
by Andyhhp
Sun Jun 05, 2011 10:52 pm
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

Which further supports the theory that you have one of your critical structures corrupted.

How big is your codebase?
by Andyhhp
Thu Jun 02, 2011 9:18 am
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

I dont know if it is related to your crash, but you really should sort out
00070321812e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0e)
00070321812e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
by Andyhhp
Mon May 30, 2011 7:31 pm
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

Try asserting that bootsector->Bpb.BytesPerSector is not 0;
by Andyhhp
Mon May 30, 2011 11:26 am
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

In which case, are you sure the crash is not because you have some dud code in your kernel?
by Andyhhp
Sun May 29, 2011 11:35 pm
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

Close, but you have more memory that that.

See http://wiki.osdev.org/Memory_Map_%28x86%29

Also, your calculation is wrong:

0x3000 + 53760 Bytes long (0300:D200) = 0x10200

~Andrew
by Andyhhp
Thu May 26, 2011 8:31 pm
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

One useful debugging measure is to have your kernel loader write a known value into the sector after the final one it loads in memory, and have the start routine of your kernel search for this known value and verify it. That will tell for certain whether it is a bug in your kernel or a bug in your l...
by Andyhhp
Thu May 26, 2011 7:22 pm
Forum: Beginning OS Development
Topic: Kernel size problem
Replies: 23
Views: 46742

Re: Kernel size problem

Can you guarentee you are loading all of your kernel into memory?

Look at the loop which loads it off disk.
by Andyhhp
Fri May 13, 2011 7:57 am
Forum: Beginning OS Development
Topic: PE chapter
Replies: 2
Views: 8921

Re: PE chapter

You want something like:

Code: Select all

typedef void (*entryFunction)(void);
entryFunction myentry = ((entryFunction)(entryPoint + base));
myentry();
Life gets a whole lot easier if you have a typedef in there

~Andrew