From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <8fb16d83a62dd47d262ae5f8020045db@gmx.de> To: lucio@proxima.alt.za, 9fans@9fans.net Date: Mon, 7 Mar 2011 12:50:29 +0100 From: cinap_lenrek@gmx.de In-Reply-To: <20110307110755.GA1893@fangle.proxima.alt.za> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] realemu update Topicbox-Message-UUID: b7f850fc-ead6-11e9-9d60-3106f5b1d025 > On Mon, Mar 07, 2011 at 11:39:10AM +0100, cinap_lenrek@gmx.de wrote: > > /dev/realmodemem is just an image of the first megabyte of > > physical memory that is addressable from 16 bit realmode. > > > That being where the machine's BIOS resides, if memory serves. > Plus whatever can fit in there if one chooses to use the space. > I'll understand things better with the fesh background, thank you. yes, exactly. it also contains the data setup by the bios. this is the memory map from realemu main.c, one entry for each 64k block: static Bus memio[] = { /* 0 */ memory, rmem, wmem, /* RAM: IVT, BIOS data area */ /* 1 */ memory, rmem, wmem, /* custom */ /* 2 */ nil, rbad, wbad, /* 3 */ nil, rbad, wbad, /* 4 */ nil, rbad, wbad, /* 5 */ nil, rbad, wbad, /* 6 */ nil, rbad, wbad, /* 7 */ nil, rbad, wbad, /* 8 */ nil, rbad, wbad, /* 9 */ memory, rmem, wmem, /* RAM: extended BIOS data area */ /* A */ memory, rmem, wrealmem, /* RAM: VGA framebuffer */ /* B */ memory, rmem, wrealmem, /* RAM: VGA framebuffer */ /* C */ memory, rmem, wbad, /* ROM: VGA BIOS */ /* D */ nil, rbad, wbad, /* E */ memory, rmem, wbad, /* ROM: BIOS */ /* F */ memory, rmem, wbad, /* ROM: BIOS */ }; on startup, we read in all the readable memory from the host machine. this means, that if the host machine is not a x86 with a bios that mapped the roms for us it will not work. to make this work have to do the same thing the bios on a pc makes like setting up a realmode interrupt table and discover and map in the vga roms. > > the write returns when the BIOS call returns and the machine > > state can be read back from /dev/realmode. > > > That is a neat idea. yeah, its the power of filesystem abstraction all over again :) also, with realemu, you can interrupt the write to /dev/realmode in case the code hangs in a endless loop. otherwise it will return if the code comes back from the interrupt call to the bios or when the code produces some kind of exception. errstr will be set to a string describing the exception and the exception number will be in u->trap when reading /dev/realmode back. -- cinap