BIOS working area? 
Author Message
 BIOS working area?



Quote:
> Hi , How are you?

I'm alright. You don't HAVE to start every message like that... such as
"How's it{*filter*}?" instead. I'm only joking, you're being very polite.

Quote:
>     Would you like to answer me some questions?
>     After the BIOS interrupt table (0-400h) , there is a BIOS data area .
Is
> it start from 400h to 500h , right?

Yes. In fact, including the BYTE at address 500h. Which holds the "PrtScr"
status byte.

Quote:
> Is different type of BIOS will have different size of that area? Can i use
> this area for storing my data after the computer bootup?

You should not touch the BIOS data area (BDA) nor the XBDA/EBDA (EXtended
BIOS data area).

Power Management code which runs in System Mg. Mode (SMM) usually from
underneat video memory at A000-BFFF uses the BDA and XBDA during power
events which you have no or little control over from your program or OS or
whatever (without explicitly disabling it via chipset control).

My advice is to use everything from 0x00000600 (segment 0060), up til end of
conventional memory. The size of conventional memory is expressed in
kilobytes in the BDA at offset 13h, interrupt 12h returns this value in AX.

From you boot sector code, you can do this:

int    12h        ; get conv mem size

shl    ax, 6    ; shl by 6, to get segment address of first non-available
part of mem.
sub    ax, 60h ; this will usually be 0xA000, then subtract 60h.

There you go, that's the number of paragraphs (16 byte chunks) of memory you
can use, starting at segment 60h.

Get my OS package from http://www.*-*-*.com/
at my loader (src/loader/loader.asm) and boot sectors
(src/boot/fat/fat??.asm) to see how I do my loading and how I detect memory.

Regards,
Thomas.



Sun, 07 Jul 2002 03:00:00 GMT  
 BIOS working area?
Hi , How are you?
    Would you like to answer me some questions?
    After the BIOS interrupt table (0-400h) , there is a BIOS data area . Is
it start from 400h to 500h , right?
Is different type of BIOS will have different size of that area? Can i use
this area for storing my data after the computer bootup?

thank you



Mon, 08 Jul 2002 03:00:00 GMT  
 BIOS working area?
Would you like to tell me does the BDA always end with segment 60h and where
is the XBDA/EBDA?
thanks a lots!!


Mon, 08 Jul 2002 03:00:00 GMT  
 BIOS working area?


Quote:
> Would you like to tell me does the BDA always end with segment 60h and
where
> is the XBDA/EBDA?

The BDA really consists of segment 40h (400h-4FFh) with the addition of the
print screen byte at 500h. The rest is not used by the BIOS, but once upon a
time the remainder of segment 50h was used for the Basic Interpreter that
used to live in ROM.

I suggest that you start with segment 60h, but only because it is a near
number. You could also align to a page (4KB) boundary and start with segment
100h if you want to, or you could start with segment 51h, but I wouldn't go
lower. Once you're in PM, if you're not planning to call certain BIOS
interrupt in V86 mode I suppose you could safely enough start at segment 50h
and overwrite the printscreen status byte which isn't very important.

The XBDA usually start where conventional memory ends. As I said, INT 12h
returns the size in KB. If the size is less 640k (value 280h returned in
AX), you probably have an XBDA at 9FC0 or something.

The WORD at 40Eh (offset 0Eh in the BDA at segment 40h), contains the
segment address of the XBDA, but you don't really need to know where it is,
as long as you know that if it's there, it will be excluded by the memory
size value.

Regards,
Thomas.



Mon, 08 Jul 2002 03:00:00 GMT  
 BIOS working area?


Quote:


> > Would you like to tell me does the BDA always end with segment 60h and
> where
> > is the XBDA/EBDA?

> The BDA really consists of segment 40h (400h-4FFh) with the addition of
the
> print screen byte at 500h. The rest is not used by the BIOS, but once upon
a
> time the remainder of segment 50h was used for the Basic Interpreter that
> used to live in ROM.

> I suggest that you start with segment 60h, but only because it is a near
> number.

That was supposed to be 'neat number', did I confuse anybody?

Quote:
> The XBDA usually start where conventional memory ends. As I said, INT 12h
> returns the size in KB. If the size is less 640k (value 280h returned in
> AX), you probably have an XBDA at 9FC0 or something.

You can also get this value from the BDA at offset 13h, or physical address
413h.

The size is given in KB. Shift left by 6 to get paragraph address. Shift
left by 10 to get a byte value.

T



Mon, 08 Jul 2002 03:00:00 GMT  
 BIOS working area?
If I don't mistake then 40:E word contain Extended BDA only in PS/2,

otherwise it contain LPT4 port address.
...and later (in dos load time):
50:1 start Basic and Dos data area.
70:0 start Dos internal device-drivers (IO.SYS) area.
--
  Ivar,  (c)RMSoft.

  http://my.tele2.ee/rmsoft



Mon, 08 Jul 2002 03:00:00 GMT  
 
 [ 6 post ] 

 Relevant Pages 

1. BIOS data area seem stop??

2. keyboard BIOS data area?

3. Reading from the BIOS data area

4. Read from BIOS data area

5. BIOS DATA area?

6. BIOS DATA area?

7. Reading from the BIOS data area

8. Accessing the BIOS NV areas.

9. BIOS Data area?

10. Help with BIOS data area please??

11. BIOS not working?

12. (gulp) None of my BIOS's work, 2000

 

 
Powered by phpBB® Forum Software