On account of the other thread, I want to finish my EMS board but there is some question over how exactly EMS is supposed to work. Please help!
My understanding of LIM 4 is that:
So, say the frame is 64KB at E000h. Then, accessing between E000h and E3FF(F)h refers to the page whose number is stored in the first register, and E400..E7FF(F)h the second and so on. An application could also use the window as 2x 32KB or 1x 64KB by aligning the four registers accordingly.
But, since the hardware obviously has to have implemented 16-bit registers to support this, why didn't the spec allow for the full 1GB address space (64K pages)?
My understanding of LIM 4 is that:
- EMS memory is addressed by 16KB page number, from 0..2047, giving a maximum of 32MB (2K x 16KB)
- A least one 64KB page frame should be provided
- The page frame accommodates four pages, hence at least four registers should be provided
So, say the frame is 64KB at E000h. Then, accessing between E000h and E3FF(F)h refers to the page whose number is stored in the first register, and E400..E7FF(F)h the second and so on. An application could also use the window as 2x 32KB or 1x 64KB by aligning the four registers accordingly.
But, since the hardware obviously has to have implemented 16-bit registers to support this, why didn't the spec allow for the full 1GB address space (64K pages)?