Page 2 of 2
Posted: Sat Jul 21, 2007 5:18 pm
by B.E
With the information you've provided so far, I would say it's a stack problem(i.e you havn't pop all the data that you pushed on to the stack, or you've popped to much). or it could be a interrupt not being handled(i.e timer) which causes a double fault which because that interrupt is implemented yet causes a tripple fault and restarts.
Can I see your bochsout file, also if I could see the implementation of the function that your calling that would be great,.
Posted: Sat Jul 21, 2007 6:22 pm
by Dex
I would put my money on your A20 code does not work, try a differant one or try setting your stack to a differant address.
Or just try this:
Code: Select all
push eax ; Do this to shift the stack pointer
push eax ; and again
call check ;;;;This is the Function
mov byte [es:0xB809E], "T" Print T
chk01:
jmp chk01
and see if you get the T
Posted: Tue Jul 24, 2007 5:21 am
by mathematician
So far as I can see the only possible explanation is faulty memory. Even if there was a memory mapped device at that address, it would need a hardware interrupt to wake it up. In any case, it is unlikely that the interrupt would always occur precisely between the two mov's.
Unless somebody else can see something I can't.
Posted: Tue Jul 24, 2007 7:19 am
by Dex
@mathematician, What if the A20 was not enabled, ( as most A20 code does not work on all PC ) odd megabytes are inaccessible, which the first and second print # may be go between odd and even ?.