      Reduced to its fundamental principles, the microprocessor is not difficult to understand.  Its simply the electronic equivalent of a knee-jerk.  Every time you hit the microprocessor with an electronic hammer blowthe proper digital inputit reacts by performing a specific something, always the same thing for the same input.  For example, the bit pattern 0010110 tells an Intel 8086-family microprocessor needs to know what to subtract from what, and it needs to know what to do with the result.  The first question is handled by variations of the subtract instruction, of which there are about seven (depending on what you regard as subtraction because each particular instruction tells the microprocessor to take numbers from differing places and compute the difference in slightly different manners).  The numbers to be worked on can be located in one of three placesin one of the microprocessors registers, in ordinary RAM memory, or in the code of the instruction itself.  The result is always stored in a register.  (If the information to be worked on is stored on disk it must first be transferred to RAM.)  Other microprocessor instructions tell the chip to put numbers in its registers to be worked on later and to move information from a register to somewhere else, for example to the memory or an output port.  The example instruction tells the microprocessor to subtract an immediate number from the accumulator, a particular microprocessor register that is favored for calculations.  Everything the microprocessor does consists of nothing more than a series of these on-step-a-time instructions.  Simple subtraction or addition of two numbers may entail dozens of steps, including the conversion of the numbers from decimal to binary (ones and zeros) notation that the microprocessor understands.  Computer programs are complex because they must reduce processes that people think of as one step in itselfadding numbers, typing a letter, moving a block of graphicsinto a long and complex series of tiny, incremental steps. 

Back to top of page

                  The Intel family comprises four principal numeric coprocessor chips, the 8087, the 80287, the 80387, and 80387SX.  Each is designed to work with a particular microprocessor in the Intel 8086 family.  Each of this quartet shares some common traits.  Beyond the 8-, 16-, and 32-bit processors youre used to dealing with, the Intel coprocessors work 80 bits at a time.  Each uniformly has eight 80-bit registers in which to perform their calculations.  They work with 32-, 64 or 80 bit floating point numbers, 32 or 64-bit integers, and 18-digit binary coded decimal (BCD) numbers.  (Binary Coded Decimal numbers simply use a specific four-bit digital code to represent each of the decimal digits between zero and nine.)  The Intel numeric coprocessors also add new abilities to those native to the host microprocessor, such as tangent and logarithmic functions.  Instead of simply working with the resident microprocessor in your computer,the Intel coprocessors work as an extension of it.  They connect to the address and data lines of your PC and execute the instructions meant for them as they arise within programs.  They can carry out their calculations at the same time as the microprocessor, so both chips can be thinking at the same time.  Because they read their instructions directly from the bus, they impose no microprocessor overhead to set them rolling on problem. 

Back to top of page

                  Computer memory systems are often divided into two types, primary storage and secondary storage.  Primary storage is that which is immediately accessible by the computer or microprocessor.  Anything kept in primary storage is immediately accessible and ready to be used.  This form of memory is called on-line storage because it is always connected to the computer.  It may be directly accessible through the address lines of a microprocessor or through I/O ports of the computer.  Because any specific part of this memory, any random byte, can be instantly found and retrieved, primary storage is often termed Random Access Memory or RAM.  Regardless of its name, primary storage is, in effect, the short term memory of the computer.  Its easy to get at but tends to be limited in capacity.  Long-term computer memory is termed secondary storage.  Not only does this form of memory maintain information that must be kept for a long time, but it also holds the bulk of the information the computer deals with.  Secondary storage may be tens, hundreds, or thousands of times larger than primary storage, and because of its bulk is often termed mass storage.  These data are held off-line and is not directly accessible by the computer.  To be used, it must be transferred from secondary storage into primary storage. 

Back to top of page

                  Not all memory must be endowed with the ability to be changed.  Just as there are many memories that you would like to retainyour first love, the names of all the stars in the Zodiac, the answers to the chemistry exama computer is better off when it can remember particularly important information without regard to the vagaries of the power line.  Perhaps the most important of these more permanent recollections is the program code that tells a microprocessor that it is actually part of a computer and how it should carry out its duties.  In the old-fashioned world of relays, you could permanently set memory in one position or another by careful application of a hammer, and with enough assurance and impact, you could guarantee the system would never forget.  In the world of solid-state the principle is the same,  but the programming instrument is somewhat different.  All you need is switches that do not switchor, more accurately, switch once and jam.  This permanent kind of memory is valuable in computers that a whole family of devices called Read-Only Memory or ROM chips has developed.  They are called read-only because the computer that they are installed in cannot write or rewrite new code and store it in them.  Only what is already there can be read from the memory.  In contrast, the other kind of memory, to which the microprocessor can write as well as read, is logically termed Read-Write Memory.  This term is, however, rarely used.  Instead, read-write memory is generally called RAM even though ROM also allows random access.  If ROM chips cannot be written by the computer, the information inside must come from somewhere.  In one kind of chip, the mask ROM, the information is built into the memory chip at the time it is fabricated.  The mask is a master pattern used to draw the various circuit elements on the chip during fabrication.  When the circuit elements of the chip are grown on the silicon substrate, the pattern includes the information that will be read in the final device.  Nothing, other than a hammer blow or its equivalent, can alter what is contained in this sort of memory.  Mask ROMs are not common in personal computers because they require their programming be carried out when the chips are manufactured; changes are not easy to make and the quantities that must be manufactured to make production affordable are daunting.  One alternative is the Programmable Read-Only Memory chip or PROM.  This style of circuit consists of an array of elements that work like fuses.  Normally, the fuses conduct electricity.  However, like fuses, these circuit elements can be blown, which stops the electric flow.  PROM chips are manufactured and delivered with all of their fuses intact.  A special machinecalled a PROM programmer or PROM burneris used to blow the fuses one-by-one according to the needs of the software to be coded inside the chip.  This process is usually termed burning the PROM.  As with most conflagrations, the effects of burning a PROM are permanent.  The chip cannot be changed to update or revise the program inside.  PROMs are definitely not something for people who cant make up their mindsor a fast changing industry.  Happily, technology has brought an alternative, the Erasable Programmable Read-Only Memory chip or EPROM.  EPROMS are almost self-healing semiconductors because the data inside an EPROM can be erased and the chip reused for other data or programs.  EPROM chips are easy to spot because they have a clear window in the center of the top of their package.  Invariably, this window is covered with a label of some kind, and with good reason.  The chip is erased by shining high-intensity ultraviolet light through the window.  If stray light should leak through the window, the chip could be inadvertently erased.  (Normal room light wont erase the chip because it contains very little ultraviolet.  Bright sunshine does, however, and can erase EPROMs.)  Because of their versatility, permanent memory, and easy reprogrammability, EPROMs are ubiquitous inside personal computers.[1]  The evolution of the RAM chip has closely followed the development of the personal computer.  The success of the small computer fueled demand for memory chips.  At the same time, the capacity of memory chips has increased and, except for a temporary rise following the plummet of the dollar, their price has tumbled.  At the time the first PC was introduced the standard RAM chip could store 16 kilobits of information, that is, 16,384 bits or 2048 bytes.  The memory cells (where each bit is stored) was assigned its own address so bits were individually retrievable.  These were the smallest capacity memory chips used by any PC-compatible computer.  Besides the original IBM PC, they were also used on some accessories, such as memory expansion boards and video adapters.  Today these chips are expensive because relatively few new devices use them and their rarity has made manufacturing, distributing, and storing of these chips uneconomical.  By the time the XT was introduced, about a year later, chips with a larger capacity proved to be more cost-effective.  Although able to store four times the data, 64-kilobit chips then began to cost less than four times the price of 16-kilobit chips.  The PC system board was revised to accommodate the better memory buy and the XT was designed to accept them.  In a few years, 64-kilobit chips became so popular that their price fell below that of 16-kilobit chips.  By 1984, the best value in memory had become the next step larger, the 256-kilobit chip, and RAM chips of this size were chosen for the original AT.  Now chips with one megabit capacity are becoming popular.[1]  Memory beyond the megabyte addressable by the 8088, which can be accessed through the protected mode of the 80286 and 80386 microprocessors, is generally termed extended memory (although IBM sometimes calls it expanded memory, a term reserved by most writers for another type of memory).  Up to 15 megabytes of extended memory can be added to an 80286-based computer, four gigabytes to an 80386.  The most important distinguishing  characteristic between extended and base memory is that programs that run in real mode cannot execute in extended memory.  DOS is written for the real mode, so it is limited to base memory.  This is not to say extended memory is inaccessible in real mode.  Programs dont know how to address its extra bytes.  Although extended memory can be used for data storage, software must be particularly written to take advantage of it.  Few DOS-based programs are.  The primary example of a program that is the VDISK floppy-disk emulator included with DOS 3.0 or later.  Although the program code for VDISK executes in normal DOS memory in real mode, it can use extended memory for data storage.  Because OS/2 can operate in protected mode, it can take full advantage of extended memory.  Note, however, that when its compatibility box is used to run old-fashioned DOS applications, OS/2 shifts back to real mode and is constrained by the 640K memory limit in executing them. 

Back to top of page

  

                  In April, 1985--months after the AT was introduced with its multiple megabytes of extended memory rangea major software publisher, Lotus Development Corporation, and a hardware maker, Intel Corporation, formulated their own method for overcoming the 640K limit of older DOS computers based on the 8088 microprocessor.  A few months later they were joined by Microsoft Corporations, and the development was termed the Lotus-Intel-Microsoft Expanded memory Specification (for its originators), or LIM memory, or EMS, or simply expanded memory.  The initial Version was numbered as EMS Version 3.0 to indicate its compatibility with then-current DOS 3.0.  When Microsoft joined, the spec was slightly revised and denominated as Version 3.2.  The new memory system differed from either base memory or extended memory in not being within the normal address range of its host microprocessor, instead, it relied on hardware circuitry to switch banks of memory within the normal address range of the 8088 microprocessor switching, was neither novel nor unusual, for it has been applied to CP/M computers based on the Z80 microprocessor to break through their inherent 64K addressing limit.  Only the cooperative effort at standardization by oftentimes competing corporations was surprising.  The original EMS specification dealt with its expanded memory in banks of 16 kilobytes.  It mapped out a 64K range in the non-DOS memory area above the bytes used for display memory to switch these banks, up to four at a time, into the address range of the 8088.  Up to eight megabytes of 16K banks of expanded memory could by installed in a system.  The Expanded Memory Specification included the definition of several function callspredefined software routines contained in special EMS software called the Expanded Memory Managerthat were to be used by programs to manipulate the expanded memory.  Because the memory areas beyond the DOS 640K range had been assigned various purposes by IBM, were the bank-switching area assigned an arbitrary location, it could potentially conflict with the operation of other system expansion.  Consequently, the specification allows several address locations for the bank-switching area within the range 784K to 960K.  Because programs had to be specially written to include the function calls provided by the EMS drives, expanded memory does not allow ordinary software to stretch beyond the DOS limit.  Moreover, the original Expanded Memory Specification put a burdensome limit on the uses of this additional memory because it could only be used for data storageprogram code could not execute in the EMS area.  Adding EMS memory to your system also necessitated special expansion boards with the required bank switching hardware built into them.  You couldnt just buy a handful of AST Six-Paks and expect to put all their bytes to work.  The introduction of the AT and its potential of 16 megabytes of addressability overshadowed EMS until the hard reality of the inaccessibility of extended memory hit home.  Even the few available programs that could take advantage of EMS were more useful than the VDISK driver, which was the only DOS-compatible product to use extended memory.  In fact, until the announcement of OS/2, the most valuable application for the extended memory of the AT was as expanded memory using an expanded memory emulation driver, such as V-EMM from Forts Software.  These software-only EMS products can be divided into two classes, those that take advantage of the paged-virtual memory-mapping abilities built into the 80386 microprocessor and those that copy 16K banks of memory from extended into base memory.  Although both types of software have been used effectively, Lotus claims the 80386-based systems are truly compatible with EMS and the block-copying programs cannot provide full, correct EMS functionality. 

Back to top of page

      The IBM BIOS is designed to work through a system of software interrupts.  To activate a routine, a program issues the appropriate interrupts, a special instruction to the microprocessor.  The software interrupt causes the microprocessor to stop what it is doing and start a new routine.  It does this by suspending the execution of the code that it is working on, saving its place, and looking in a table held in memory that lists interrupt vectors.  Each interrupt vector is pointer telling the microprocessor the location where the code associated with the interrupt is located.  The microprocessor reads the value stored in the vector.  The table of interrupt vectors begins at the very start of the microprocessors memory, address 00000(Hex).  Each vector comprises four bytes, and all vectors are stored in increasing order.  The default values for each vector are loaded into RAM from the ROM containing the BIOS when your computer boots up.  Programs can alter these vectors to change the meaning of software interrupts.  Typically, terminate-and-stay-resident programs (TSRs are pop-up programs like SideKick, and background programs like Pro-Key) make such modifications for their own purposes.  Because there are many fewer interrupts available than functions you might want the BIOS to carry out different functions are available for many of the interrupts.  These separate functions are identified by parameter passing.  That is, information is handed over to the BIOS routine as a parameter, a value held in one or more of the registers at the time the software interrupt is issued.  The BIOS routine may also achieve some result and pass it back to the program.
