CompuServe Thread

#SLOWWWWW ACAD

3 messages in this thread
#33621From: Raymond H EmplitFeb 18, 1992 7:39 PM
Joe, In my experience, it's possible to get the SLOWWWWW ACAD problem with DOS5 even with NEWDX and/or QEMM. On my system, I have already run NEWDX. If I set up EMM386 or QEMM386 to provide EMS memory all is OK. If I disable EMS and use the memory manager only for high memory loading of drivers, etc., one of two things happens: 1. ACAD refuses to load and complains that another program has put the microprocessor in real mode. 2. ACAD loads and all seems OK but drawings load VERY slowly, REGENs take forever, etc. STATUS reports only a fraction of the RAM (I have 16 MB) as being available for ACAD. Thus I must have EMS enabled to use either memory manager. With QEMM386 this isn't too bad since EMS memory is only taken from XMS when needed. EMM386 takes the memory at boot time. In both cases, however, I lose 64K of upper memory for a page frame. Since ACAD isn't using EMS this situation doesn't seem to make sense. What's going on? Ray
#33656From: Joe MacRaeFeb 19, 1992 2:50 AM
Raymond, If you disable EMS you are essentially telling the machine "….sure, we got all this ram, but we aren't gonna' use it." So the machine doesn't. It still sees it, but it really won't access it and you are choking it down to just the one meg originally specified in DOS for the PC. (incidentally this is a situation we live with even today and the reason for page frames) Even though the machines and new processors will let you see and use more than the original one meg of ram, we still have to go through contortions to access any memory above the one megabyte barrier set in the original DOS. The way this is done is to establish a frame area in ram and swap sections of the extended or expanded memory into and out of this area. This is the page frame and is commonly or defaulted to 64k. In DOS 5.0 you can set up to 4 page frames and control their size from 16k (I believe) to 256k. Each byte (and bit for that matter) has a specific address in memory. With the DOS usage of address and offset we are able to access one meg of ram in an 8 bit operating system. (rather unique for DOS by the way) An 8 bit system only has 256 individual and unique addresses but by adding an 8 bit offset we can increase this to 65,536 (or 64k or a DOS segment. Ever wonder why a .COM program was limited to 64k ??? Or where the small model program came from??) Now add a nibble to the front of the address (4 bits or one hex number) for a total of 16 segments and we get one meg. As you see DOS actually works with a 20 bit address…a nibble for the segment, a byte for the sector and a byte for the offset. This is where these funny addresses come from like CAF15. These are hex numbers that represent these addresses and have a range from 00000 to FFFFF. 10 of these segments were assigned to the programming area and the other 4 were assigned to the machine for housekeeping (BIOS and stuff). The memory managers actually swap additional memory segments into and out of the 11th segment just above the 640k DOS limit for programming. and they establish swapping segments in the EMS to be able to do this (this is where
#34526From: Raymond H EmplitFeb 24, 1992 8:25 PM
Joe, EMM386 and QEMM386 allow 386/486 machines to use EXTENDED memory as EXPANDED memory. This requires the use of a page frame in the memory space between 640K and 1M. Expanded memory can be used by many programs such as Quattro to allow large amounts of data to be processed. AutoCad through release 9 used this method. The newer versions of AutoCad use extended memory directly using a DOS extender and don't require expanded memory. Both EMM386 and QEMM386 have an additional feature – they allow TSRs and device drivers to be loaded into the space between 640K and 1M. If EXPANDED memory is not required, a NOEMS switch can be set and the 64K page frame will also be available for TSRs and drivers. What I don't understand is why AutoCad, which doesn't use expanded memory, won't run correctly when NOEMS is set. I suspect that there is a memory conflict. When NOEMS is set, the TSRs and drivers load into a different physical address – probably within the page frame. When expanded memory is enabled, the page frame is not used when AutoCad runs so the conflict does not occur. Does this make sense? Ray