2003-08-01

A note on CPUs

Matthias Paul wrote this email to the fd-dev list about a different topic, but as always, Matthias presents information that may be useful to other FreeDOS developers, so I thought I'd re-post his comments here:

As I wrote in my original answer, the HP 100/200 LX and the HP OmniGo 700LX have an Intel 80186 CPU.

For those who are not aware of this CPU, it is an enhanced and higher integrated version of the 8086 with several on- board peripherals included. There also exists a 80188 8-bit- bus version of the 80186. Many of the instructions require less clock cycles to complete compared to a 8086, and there are also a number of new instructions - which most (less good) CPU manuals list as being available since the 286, not mentioning the 186 at all. However, virtually all instructions of the later 80286 (except for anything dealing with Protected Mode, which was introduced not before the 80286) were already supported by the 80188/80186. The NEC V20 (8-bit-bus) and V30 (16-bit-bus) CPUs (which are also enhanced versions of the 8088/8086 with an additional 8080 mode (for CP/M-80 compatibility)) also support most of the 80188/80186 instructions.

The reason why many people are not aware of the 80188/80186 is simply, because IBM didn't used this CPU in any of their personal computers. The original IBM PC and the PC/XT both used an 8088 (not 8086), and the PC/AT already used a 80286 CPU. However, the 80188/80186 were often used in industrial controls and PC based embedded systems as well as in lots of mobile devices, before it became superseeded by the Intel 386EX (a modernized version of the 80386DX with several enhancements for use in embedded systems) and similar 386-based CPUs from other vendors like AMD. The 386EX is still very cheaply available (although end-of-lifed as well), the 186 and 188 are no more for several years now. Today, many embedded systems are based on the Pentium compatible National Semiconductor Geode (IIRC originally based on a Cyrix design???), which is reaching its end-of-lifetime as well.

The HP 100/200LX and the HP OmniGo 700LX used a customized version of the Intel 80186, (that's why I wrote "Intel 80186 core") - same instruction set, but sligthly different hardware tailored specifically for the HP LX series. If you order ten-thousands or hundred-thousands of CPUs as Hewlett Packard did for their LX series, you can always have custom designs incorporated.

Since the 80188/80186 CPU do not support any form of Protected Mode, they do not and cannot support Extended Memory, that is, they are limited to 1 Mb direct address space, just like a 8088/8086. Nevertheless, the HP LX (or other devices) can have more system RAM, which is used either as RAM disk(s) utilizing the proprietary ROM/RAM bankswitching logic of the HP (most ROM-based systems have some form of this) and/or (given one of the few HP LX EMS emulators is loaded) provide Expanded Memory (not Extended Memory!) for EMS-aware applications to use. Finally, a machine not supporting Protected Mode or Extended Memory cannot support VCPI, DPMI, DPMS, Cloaking or the like for obvious hardware reasons.