X-Apparently-From: Message-ID: <008101c05d17$e51937c0$a3881004@dbcooper> From: "Patrick Moran" To: References: <8F361C761C5 AT reze-1 DOT rz DOT rwth-aachen DOT de> <004101c05c41$8a42b0f0$e4881004 AT dbcooper> <2 DOT 07b7 DOT FVTF DOT G4XS7T AT belous DOT munic DOT msk DOT su> Subject: Re: Optimizing CONFIG.SYS... Date: Sat, 2 Dec 2000 13:24:29 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.3018.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.3018.1300 Reply-To: opendos AT delorie DOT com ----- Original Message ----- From: "Arkady V.Belousov" To: Sent: Saturday, December 02, 2000 3:38 AM Subject: Re: Optimizing CONFIG.SYS... > X-Comment-To: Patrick Moran > > No! > > 2-δΕΛ-2000 02:04 pmoran22 AT yahoo DOT com (Patrick Moran) wrote to > : > > PM> I am checking up on XMS memory now, in the book "DOS beyond 640K" It does > PM> refer to XMS memory in it but was not listed in the index. It is extended > PM> memory and from what I have read so far, it is NOT swap memory, it is in > PM> fact extended memory. > > XMS is _not_ an memory. I am not going to argue this any more. It is real physical memory that is beyond 1MB. It is a meory manager, not a spcification. DPMI and VCPI are specifications. It is all extended memory and physically exists in your computer if you have it installed. It is not virtual memory, it is real and you can look at it and touch it physically. It is merely managed by LIM 4.0, EMS, EMM386, HIMEM.SYS, EEMS, XMS, JQRYBIZ18941, or whatever other memory manager someone gives a name to. > PM> But I need to poke around the book some more about it. > PM> I think some of the comments made about XMS is untrue. It should be much > PM> faster than EMS because there is no window to swap memory through I believe > > You prosecute me as liar?! Not a liar. Probably just confused with some of the terminology used. It was stated that EMS can swap memory faster than XMS can access memory. That is not true, because XMS does not swap memory, it allows DOS to directly access extended memory. EMS swaps it out between conventional and extended through a tiny window. > PM> that Task Manager is using DPMS through the extended memory created by XMS. > > 1. When "real mode" app works with EMS it can create and handle it data > directly in EMS window without any _additional_ copying, as this is required > for XMS. 2. XMS _not_ create any memory. Taks Manager DOES NOT NEED ANY EMS MEMORY, period, period. You can, however, use expnded memory if it is available when a program is running in Task manager. For example, you can run DV in Task manager if you so desired, I don't have any idea why anyone would but you can. You can also run windows in a Task manager task. Why anyone would want to beats me, but it can be done. XMS does create memory. Without it DOS cannot access that memory, unless another memory manager is used. XMS makes the exyended memory available to DOS. Without it, DOS only has 1MB of memory to work with and DOS by itself cannot use all of that. It cannot use A000-FFFF or the first 64K minus 16 bytes above 1MB. It needs a memory manager that will allow it to do this. Of course there are some exceptions. Tandy DOS could use the A000-B7FF range for a total of 736K conventional memory. But that was specially written for the Tandy computers. AST could also do things that the normal releases of DOS could not do, but these were modified OEN DOSes. Some would not even work on other computers. Some Tandy DOSes will not work on IBM Clones, 2.1 for example. I did start out using a Tandy DOS on a 286 clone, but that was a 286 Tandy DOS. > PM> What I can't figure out is why do you even need a memory manager at all for > PM> extended memory. > > Because "real mode" apps have "native" access only to 1M of memory. Only because Gates never wrote DOS and DOS was never written the way it should have been and can be written. look at Flex for example. It can run native DOS prgrams and run in 32 bit protected mode. It is a 32 bit protected mode DOS, and most likely the way DOS should have been similarly written in the first place. > > PM> It already exist, all you have to do is use it. DOS, > > This shows you don't know machine laguage of x86. "Real mode" apps have > access to 64k segments (because 16 bit offset) with 64K of "paragraphs" > (64K*16=1M). To access additional memory "real mode" apps _must_ use > additional hardware (expanded memory boards or copying/mapping extended > memory fatures, present in memory managers). Not true. Take a look at a block diagram of the internals of the 8086 CPU. You will find that it is basically two 8085 CPUs running in parallel. One 16 bit address register is offset by 4 bits, not 16 bits from the other 8085 and thus gives a total of 20 address lines: A0-A19. Although I can see where you are comming from, yes there are 16 64K pages so-to speak. 4 bits has 16 possible combinations, thus you have 16 64k pages of conventionl memory. However, you also have an additional page of memory minus 16 bytes. because these two processors address registers are added together before the address if actually sent to the 20 address lines on the CPU. However, since the 8086/88 only has 20 address lines, this additional page of memory is wrapped around to the beginning of memory, i.e. 0000-FFEF. NOTE: that last number is F F E F. When you add; 0FFFF and FFFF0 You get 10FFEF The 8086 does not know what to do with the leading 1 so it is ignored and you get the last 16 bytes of the lower 1MB and then wrap around to 0 and start over again. The rest of each 8085 8 bit registers are tied together in parallel to make 16 bit registers. I believe, without looking it up, that the status register just used one of the 8085 8 bit status registers. New microcode was added to support 16 bit operations and some of the old 8 bit code was deleted. Thus you cannot run 8008/8080/Z-80/8085 programs on it that have not been converted. The 8086/88 can also directly replace an 8085 CPU and use the 8085 hardware. One pin on the 8086/88 CPU will modify the 8086/88 to do this. As a result you can not use an 8087 co-processor. If you put a physical switch, say an unused logic gate, into the hardware and have software enable and disable it, the 8086 could in fact address what we now call the HMA area (64k -16 bytes above 1MB RAM.) The 8086 by itself cannot access this area because of only having 20 address lines, but it can address this memory with outside help. DOS is not even capable of doing this. Hardware is used to flip this 21st address line on and off (A20) and this is called the A20 gate. it was orinially implemented in the keyboard ROM and still is if you turn off the fast A20 gate in CMOS. Had this feature been implemented in the 8086 and an external formerely unsued logic gate been used and DOS had been written to access this and all the memory below 1MB, we probably would not have the need for any memory managers. DOS would also have had to been written to use flat memory rather than segmented offset memory. Pat _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com