(E)BDA - safe to use memory?
Posted: Fri Feb 07, 2003 9:04 am
I'm learnign how to create an OS (in pure asm, no C for me).
And I wonder what memory areas I can use end not.
This EBDA, exaclty what is it? It appears as if not all computers has it, and that it's size varies.
I've made a list of the memory as I know it, am I right or is something terrible wrong? I've been delaying my test on real PC untill I know that I won't cause some permanent changes to the computer I'm testing my OS on. (I fear that I might unknowingly write to the falsh BIOS, should I be afraid (thus BIOSes are falshed when writing to some memory area) or are BIOSes flashed by some other method, wich can't accedentally be done)
Are there any such no-no memory areas or is everything writeable.
Memory Map:
[table][tr][td]Linear Adress[/td][td]Name[/td][td]Usage/comment[/td][/tr]
[tr][td]000000->0003FF[/td][td]IDT[/td][td]IDT, read only[/td][/tr]
[tr][td]000400->0004FF[/td][td]BDA[/td][td]BIOS data area, read only[/td][/tr]
[tr][td]000500->007BFF[/td][td]FREE[/td][td]Free memory, read/write at will[/td][/tr]
[tr][td]007C00->007DFF[/td][td]boot sect[/td][td]Boot sector, read/write at will[/td][/tr]
[tr][td]007E00->09FBFF[/td][td]FREE[/td][td]Free memory, read/write at will[/td][/tr]
[tr][td]09FC00->09FFFF[/td][td]EBDA[/td][td]extended BIOS data area, read only?[/td][/tr]
[tr][td]0A0000->0AFFFF[/td][td]Gfx Mem[/td][td]Graphics memory, may be written to[/td][/tr]
[tr][td]0B0000->0BFFFF[/td][td]Video Text Mem[/td][td]Video text memory, may be written to[/td][/tr]
[tr][td]0C0000->0C7FFF[/td][td]Video BIOS[/td][td]Video BIOS, read only[/td][/tr]
[tr][td]0C8000->0EFFFF[/td][td]ROMs[/td][td]Adapter ROMs, read only[/td][/tr]
[tr][td]0F0000->0FFFFF[/td][td]Sys BIOS[/td][td]System BIOS, read only[/td][/tr]
[tr][td]100000->10FFEF[/td][td]HMA[/td][td]High Memory Area, read/write at will[/td][/tr]
[tr][td]10FFF0->[/td][td]FREE[/td][td]Free extened memory, read/write at will[/td][/tr]
[/table]
And I wonder what memory areas I can use end not.
This EBDA, exaclty what is it? It appears as if not all computers has it, and that it's size varies.
I've made a list of the memory as I know it, am I right or is something terrible wrong? I've been delaying my test on real PC untill I know that I won't cause some permanent changes to the computer I'm testing my OS on. (I fear that I might unknowingly write to the falsh BIOS, should I be afraid (thus BIOSes are falshed when writing to some memory area) or are BIOSes flashed by some other method, wich can't accedentally be done)
Are there any such no-no memory areas or is everything writeable.
Memory Map:
[table][tr][td]Linear Adress[/td][td]Name[/td][td]Usage/comment[/td][/tr]
[tr][td]000000->0003FF[/td][td]IDT[/td][td]IDT, read only[/td][/tr]
[tr][td]000400->0004FF[/td][td]BDA[/td][td]BIOS data area, read only[/td][/tr]
[tr][td]000500->007BFF[/td][td]FREE[/td][td]Free memory, read/write at will[/td][/tr]
[tr][td]007C00->007DFF[/td][td]boot sect[/td][td]Boot sector, read/write at will[/td][/tr]
[tr][td]007E00->09FBFF[/td][td]FREE[/td][td]Free memory, read/write at will[/td][/tr]
[tr][td]09FC00->09FFFF[/td][td]EBDA[/td][td]extended BIOS data area, read only?[/td][/tr]
[tr][td]0A0000->0AFFFF[/td][td]Gfx Mem[/td][td]Graphics memory, may be written to[/td][/tr]
[tr][td]0B0000->0BFFFF[/td][td]Video Text Mem[/td][td]Video text memory, may be written to[/td][/tr]
[tr][td]0C0000->0C7FFF[/td][td]Video BIOS[/td][td]Video BIOS, read only[/td][/tr]
[tr][td]0C8000->0EFFFF[/td][td]ROMs[/td][td]Adapter ROMs, read only[/td][/tr]
[tr][td]0F0000->0FFFFF[/td][td]Sys BIOS[/td][td]System BIOS, read only[/td][/tr]
[tr][td]100000->10FFEF[/td][td]HMA[/td][td]High Memory Area, read/write at will[/td][/tr]
[tr][td]10FFF0->[/td][td]FREE[/td][td]Free extened memory, read/write at will[/td][/tr]
[/table]