Mail Archives: djgpp/1999/07/31/00:58:09
Rock wrote:
> But I'm not using any lobels in my real-mode ISR.
In your first post you had "cs:[128 + keyIndex]". Until
now I assumed keyIndex was the label of some sort of data
structure within the ISR. Much of what I said was based
on that.
> ax and bx registers to get the key 'index' in bx, and the key's on/off
> status in ah. No labels there, and works fine up to this point. As
> soon as I uncomment this instruction
>
> mov [cs:(REAL_KEY_ISR_SIZE + 4 + bx)], ah
If I understand it correctly now, the data structure is accessed
without any label and is located directly after the code of the
ISR, and REAL_KEY_ISR_SIZE is the size of the code in the ISR.
If that is the instruction that triggers the crash then you
must consider the ways that it might be wrong. Is REAL_KEY_ISR_SIZE
correctly equal to the size of the ISR's code? When you allocated
conventional memory for the ISR, did you allocate enough for the
code *plus* the data? Does bx have a value that is in range?
> install the protected mode ISR, then not only do I have a problem
> getting my 'default' DS selector, but that even worse is if it is
> called from real-mode, then just about all the selectors are illegal
> real-mode segments (except cs and, it looks like, gs). How can I get
> all the information I need with just that?
I don't remember the answer. I know I have seen it in this
newsgroup. I think it is somewhere in the FAQ.
--
http://www.erols.com/johnfine/
http://www.geocities.com/SiliconValley/Peaks/8600/
- Raw text -