home *** CD-ROM | disk | FTP | other *** search
- This section addresses some of the most commonly asked questions about
- POV-Ray and the way it works. It applies only to compiles of POV-Ray done
- with Intels 'Code Builder Kit' (ICB) 32bit extended DOS compiler. It also
- includes some hints on maximizing rendering speed toward the end of the
- file.
-
- This section also gives a real quick overview of the POV-Ray operating
- environment. It does not fully describe the options & capabilities of the
- 80386+ processors as that would take volumes. It is instead meant to be a
- simple FYI type overview for those that may be interested.
-
- Intel's 'Code Builder Kit' creates 32-bit protected mode programs that
- take advantage of the enhanced memory management of the 80386+ processors.
- These processors have 3 main modes of operation generally known as the
- 'real', 'virtual 86' and '386 protected' modes.
-
- The 'real' mode of operation is what most people are familiar with. In
- this mode the CPU 'emulates' an 8086/8088 based machine. The 8086 is capa-
- ble of addressing 1 meg of memory, to maintain compatibility this limit is
- also imposed on the '386/'486 processors when running in this mode. This is
- the mode that MS-DOS, and the overwhelming majority of IBM PC based applica-
- tions, operate in. The area generally known as 'conventional memory' is the
- first 640K of this memory block with the second 384K being used for the
- built in BIOS ROMS, I/O buffers (such as video) and things like EMS page
- frame addresses. That is all the memory the 8086/8088 processors are capa-
- ble of directly manipulating. Basically a 386/486 running in real mode is
- nothing more than a fast 8086 based machine. In actual operation the 386/
- 486 CPU's *are* capable of using an additional 64K of memory beyond what the
- 8086 is capable of. This is what 386/486 memory managers are referring to
- at boot time with messages such as '64K high memory area available'. All
- the memory in the machine must be dealt with in 'chunks' (called segments)
- no larger than 64K in this mode.
-
- The 'virtual 86' mode is what programs such as Windows run MS-DOS pro-
- grams in. Basically the CPU sets up 'virtual' machines that all run inde-
- pendently but retain the limits imposed by running in real mode. In this
- mode several programs can be run 'at the same time' with all of them think-
- ing they are running, by them selves, on an 8086 based machine. The advan-
- tage of this mode is that each of the virtual machines may be separated, to
- some extent, in hardware (thru the 386+ processors memory management) and is
- thus less subject to problems between applications.
-
- The '386 protected mode' is quite different from both of these modes,
- bearing more similarity to CPU's like the Motorola 680x0 series used in the
- Macintosh. This is the mode that POV-Ray spends most of it's time running
- in. The mode offers the ability to load applications in separate areas of
- memory and logically remap that memory to any address in the machine. Mem-
- ory available in this mode can be configured as a linear address space of 4
- GigaBytes. (From 0 to 2^32-1 addresses, also called the 'flat memory mo-
- del'.) This memory may be allocated and dealt with at any size, the DOS 64K
- segment is gone as is the DOS '640K limit'. 4,294,967,294 bytes of RAM are
- theoretically available to POV-Ray in this mode, of course machine and com-
- piler limitations dictate what is 'really' available. Given a machine with
- sufficient resources POV-Ray can directly use 64 megabytes of physical RAM
- and (thru the Virtual Memory Manager) additional disk space to total 3.75
- Gigabytes of virtual memory. POV-Ray has the ability to use 3.75 GIGABYTES
- of memory. Intels Code Builder (ICB) reserves the first megabyte of 'real
- mode' memory in the machine for a 'scratch pad' area and for communication
- with the machines built in BIOS and DOS since THEY are 16-bit 'programs'.
- 'Freeing up conventional RAM' has no meaning in this context, POV-Ray does
- not use the area for much. The POVRAY.EXE file actually contains 5 'pro-
- grams'. A Loader/DOS extender (used to add 32-bit functions to MS-DOS since
- MS-DOS is a 16-bit operating system), a Virtual Memory Manager, a protected
- mode 80387 emulator to provide floating point math operations in a machine
- with no coprocessor installed, and the POV-Ray program itself. When POVRAY
- .EXE is invoked the 'loader' is loaded by DOS & executed, it in turn loads
- the DOS extender which checks for the presence of a DPMI *HOST* memory mana-
- ger. (Common DPMI hosts are Windows, OS/2 2.x in a DOS VDM, and Quarter-
- decks QEMM with their QDPMI add on installed. 386MAX is also supposed to
- provide it but I have not verified it's operation.)
-
- This is where it gets complicated. IF an existing DPMI host/memory mana-
- ger (say Windows) is found to be already running the DOS extender USES IT
- for ALL memory requests AND virtual memory management. Windows IT'S SELF
- provides POV-Ray with all it's memory management and the configuration of
- WINDOWS imposes the limits on what the program can use. (How much extended
- memory is allocated to the application, the size that the Windows swap file
- is, and can go to, etc...) If a DPMI host is found to be in operation POV-
- Ray (ICB) will 'gut' it's own virtual memory manager (since it's not used in
- this case) to conserve RAM.
-
- If NO DPMI host is found then the DOS Extender in POV-Ray will provide
- the memory management for the program. (It is NOT, however, a DPMI host).
- The parameters the program will expect to be able to use are set with the
- POVMOD program. (Windows, OS/2 and QEMM/QDPMI must be configured to provide
- at least these parameters for POV-Ray to run. It's very important that the
- program providing the DPMI host services be configured to provide what POV-
- Ray ASKS for (which is in turn what is set with POVMOD) or the program will
- error with an insufficient memory message.)
-
- The loader/extender then checks to see if a coprocessor is installed in
- the machine. IF NONE IS FOUND the 80387 emulator is loaded. If a coproces-
- sor is detected the emulator is NOT loaded to conserve RAM.
-
- NOTE: The emulator will not work correctly in a DOS VDM under OS/2 2.x,
- the machine MUST have a coprocessor installed for the program to function
- well. Under Windows 3.x the VEMD.386 driver MUST be installed to run the
- program on a machine with no coprocessor.
-
- At this point the actual execution of POV-Ray begins.
-