Re: Question about the A20 line



Hi there,

http://www.osdever.net/tutorials/a20.php?the_id=4

I use a similar method to attempt to enable the a20, in that i set bit 1 in
the controller status (a20 enable). This doesnt seem to work on a variety
of machines, how widely supported is the 0xDF controller command? I read
somewhere that this is only supported on really really old controllers.

I believe there is a bios int 0x15 call to enable/disable the a20.

INT 15 AX=2400 disable A20
INT 15 AX=2401 enable A20
INT 15 AX=2402 query status A20
INT 15 AX=2403 query A20 support (kbd or port 92)

Are these calls supported on most modern bios's? Can one use these safely?

Then theres the port 0x92 method.. Safe or unsafe on most modern pc's?

Thanks for the reply though.. I am still curious if anyone knows what
the little snippet of code I provided does... it seems to be reading/writing
to some area of memory and making a comparison.. but to what, i dont know.

I suspect this:

"Wait until A20 really *is* enabled; it can take a fair amount of time on
certain systems. The memory location used here (0x200) is the int 0x80
vector, which should be safe to use. When A20 is disabled, the test memory
locations are an alias of each other (segment 0:offset 0x200 and segment
0xffff:offset 0x210). {0xffff0 + 0x210 = 0x100200, but if A20 is disabled,
this becomes 0x000200.} We just wait (busy wait/loop) until these memory
locations are no longer aliased. "

I just found this at
http://www.faqs.org/docs/Linux-HOWTO/Linux-Init-HOWTO.html

What does this mean though?

Thanks!


"Dirk Wolfgang Glomp" <spamtrap@xxxxxxxxxx> wrote in message
news:qvp0pd.hf.ln@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> ;----------------------------
> EnableA20: call W_8042
> jnz BACK
> mov al, 0D1h
> out 64h, al
> call W_8042
> jnz BACK
> mov al, 0DFh
> out 60h, al
> W_8042: xor cx, cx
> STATUS: in al, 64h
> and al, 2
> loopnz STATUS
> BACK: ret
> ;----------------------------
>
> Dirk
>


.