How is it able to access more than 640KB of memory? Am I misremembering the architecture?
When designing this, we never intended to have support for external chips, so instead we designed this to have the full 1 MB of memory.
Hope this helps!
0b11111111111111110000 + 0b1111111111111111 + 1 = 0x10fff0 = 1mb+64kb-16 (for 8086)Some old Microsoft runtime library adjusted the data segment in order to place variables descending from the top offset. If the program was loaded below 64K, the segment value would become 'negative', which was not a problem until the 286 added more address lines. The main reason for the A20 gate hack was to fix this.
(+ what the string function said: It really was 1MB.)
It's not a PC emulator (or even x86 really, it just interprets the mnemonics you write instead of actual machine code).