hi
well atleast for the
fetch-raw-descriptor LDTR.valid=0
i have found out the problem. actually the problem is in my kernel loader it is not loading the kernel properly in the memory.. i checked this by adding a long function which was just printing text on the screen and then it gave m,e the same error
so it means that there is a certain size limit upto which my kernel is being loaded in the memory and when the size of the kernel goes beyond that limit then it doesnt load the remaining part in the memory thus resulting in an incomplete kernel in the memory
lets say if my kenrel is 12,000 bytes (actually its 9,000 bytes right now) so 12000/512 = 24 sectors
and this is the code i m using for loading it into the memory
Code: Select all
readFloppy:
???;es:bx==> 0000:5000h
???mov ax,0
???mov es,ax
???mov bx,5000h
???
???mov ah,2
???mov al,17???
???mov ch,0???;cylinder=0
???mov cl,3???;sector=2
???mov dh,0???;head=0
???mov dl,0???;floppy drive
???int 13h ???;read it
???jc readFloppy
readFloppy2:
???mov al,17?????????;load another full head
???inc dh
???int 13h
???jc readFloppy2
i know it juts got off-topic but these are all the problems i m having in my way to multitasking
ok now the thing is that before i knew this size problem i just had this readFloppy function to load the kernel in the memory i just added this readFloppy2 and after adding this when i called the setup_GDT() from my kernel i got these bochs errors
00000578434i[FDD ] partial read() on floppy image returns 352/512
00000578946i[FDD ] read() on floppy image returns 0
00008892552p[CPU ] >>PANIC<< prefetch: running in bogus memory
so
1. wat do u think about this size problem do i need to load more sectors off the floppy image coz even this readFloppy2 isnt enough when i write some more functions .. is there any way to load the whole image
2.wat do u think about this GDT thingy .. is there any problem with the GDT code which i attached in my previous post or anything else
desperately waiting for reply
ur help is greatly appreciated