for reference purposes for all those interested in learning about + making music with the original hardware + software from the late 1980s + early 1990s thanks for visiting
Who | MIDI Interfaces | Software | TIMELINE | PCI | ISA | ATARI ST | DOS/PC | WIN/PC | MAC | Drums | Synths | Modules |Sequencers | Samplers | Tape Rec | Mix Consoles |
Artists |Recent | VST | ios inst | E-mu | Ensoniq | Akai "S" Series | Akai MPCs | Roland "S" Series | Drum Machines | Roland JV Addons | early 90s Synths | late 80s synths
guests are encouraged to: REGISTER to view file attachments + add relevant videos, downloads, resources. (credit your SOURCE!).to post a vid just paste url!

Recent Posts

Windows 98 (Jun 1998) / USB 2.0 Support in Windows 98
«  by chrisNova777 on September 22, 2017, 07:51:49 PM »
intel Pentium (Mar 1993) / ABIT IT5V (1996?)
«  by chrisNova777 on September 22, 2017, 07:10:37 PM »
ABIT IT5V,17.html

Intel 82430VX chipset, consisting of
82437VX System Controller
82371SB PCI I/O IDE Xcelerator
Socket: Socket 7
Supported CPUs:
Intel Pentium Classic, P54C, 75 - 200 MHz
Intel Pentium with MMX, P55C
Cyrix/IBM 6x86 P120+ - P200+ (P200+ support according to the manual)
Cyrix/IBM 6x86L, the new split voltage 6x86 CPUs
Cyrix/IBM M2, supports multiplier setting of 3.5 for M2
AMD K5 PR90 - PR166, according to the manual
Automatic detection of CPU type, setup with CPU SoftMenuTM in BIOS setup.
Supported CPU Voltages:
3.60 V
STD 3.38 V
VRE 3.52 V
2.50 V
2.70 V
2.80 V
2.93 V
Automatic detection of single or split voltage, setup with CPU SoftMenuTM in BIOS setup.
Supported Multiplier Settings:
x1.5, x2, x2.5, x3 for Intel Pentium CPUs
x2, x3 for Cyrix/IBM 6x86 CPUs
x2, x2.5, x3, x3.5 for Cyrix/IBM M2 CPUs
Setup with CPU SoftMenuTM in BIOS setup.
Supported Bus Speeds:
50 MHz
55 MHz
60 MHz
66 MHz
68 MHz ('turbo frequency' of 66 MHz)
75 MHz
Setup with CPU SoftMenuTM in BIOS setup.
Second Level Cache
Pipelined Burst Static RAM Cache
0 kB onboard, 0 kB in COAST slot
256 kB onboard, 0 kB in COAST slot
512 kB onboard, NO COAST slot
0 kB onboard, 256 kB in COAST slot
0 kB onboard, 512 kB in COAST slot
Maximum of 64 MB cacheable RAM, as usual for VX boards.

4 72 pin SIMM slots
no ECC support (VX chipset)
RAM types supported:
FPM RAM without parity
EDO RAM without parity
RAM sizes supported:
2 168 pin DIMM slots
3.3 V unbuffered RAM
supports FPM and EDO and SDRAM
RAM sizes supported:
Please note, that DIMM doesn't say SDRAM!!
Maximum RAM supported 128 MB, only to be accomplished via the SIMM slots. Please note, that you can't use any of the SIMM slots in case you are using both DIMM slots, due to the only 4 external (5 altogehter) CAS lines of the VX chipset. Each DIMM slot uses 2 CAS lines, each SIMM slot uses one CAS line.
Maximum of 64 MB cacheable RAM due to VX chipset.

4 PCI slots, 3 full length
running at busclck/2
PCI specification 2.1

4 ISA Slots, 2 full length, 2 2/3 length, one of the 2/3 length shared with PCI slot 4

33 cm x 22 cm full size AT. This means it's longer than the majority of the AT boards, which has the advantage that the CPU is quite far from the expansion slots. This enables you to use 2/3 length cards in each slot which isn't full length.
Super I/O

1 Floppy Port (up to 2.88 MB, Japan 3 Mode Floppy Supported)
2 Serial Ports (16550 Fast UART Compatible)
1 Parallel Port (ECP, EPP Port)
IrDA TX/RX Header (= infra red port support)
PS/2 Mouse connector
IDE Controller

2 x PCI Bus Master IDE ports (up to 4 IDE devices)
PIO Mode 3 & 4
DMA Mode 2

Award Plug&Play BIOS, tested with revision '1S', flashable
Supports CPU SoftMenuTM which makes the board almost jumperless. All CPU settings are adjusted in the BIOS setup! Only one jumper for L2 cache size on board.
Supports bootable CDROM and bootable SCSI HDD, additionally you can boot from the first partition of any EIDE HDD connected, which means you can boot up to 4 different OSs via the BIOS setup.
Coming With

2 serial port ribbon cables, attached to a mounting bracket
1 parallel ribbon cable and PS/2 mouse cable, attached to a mounting bracket
1 IDE ribbon cable
1 floppy ribbon cable
floppy disk with
Bus Master IDE Driver for Windows95, OS/2, WindowsNT
BIOS Flash program
SoftMenu as program

Best manual I've ever seen, very coprehensive, BUT it's missing one thing! It doesn't tell you how you can mix SIMMs and DIMMs.
intel Pentium (Mar 1993) / Re: intel pentium 133 (1995)
«  by chrisNova777 on September 22, 2017, 04:47:39 PM »
 pentium 133 requires no heatsink

Windows 95 (Aug 1995) / windows 95 cpu release dates
«  by chrisNova777 on September 22, 2017, 04:33:25 PM »
486 DX2 66: August 1992.
Pentium 66: March 1993.
Pentium 90: March 1994.
Pentium 133: June 1995.
Pentium 166: January 1996.
Pentium 200: June 1996.
Pentium MMX 166-200: January 1997.
Pentium MMX 233: June 1997.
Windows 98 (Jun 1998) / Re: How to Enable ACPI Support in Windows 98
«  by chrisNova777 on September 22, 2017, 03:38:58 PM »
To disable ACPI support on a clean Win98/98SE/ME install type this "setup /p i". If your BIOS is an Award based BIOS you can use Modbin6.exe and enable/disable the hidden ACPI option.
Windows 98 (Jun 1998) / How to Enable ACPI Support in Windows 98
«  by chrisNova777 on September 22, 2017, 03:27:15 PM »

ACPI (Advanced Configuration and Power Interface) is an open industry specification co-developed by Compaq, Intel, Microsoft, Phoenix, and Toshiba.

To enable ACPI support in Windows 98, you must have an ACPI- compatible motherboard and an ACPI 1.0-compliant Basic Input/Output System (BIOS).

To enable ACPI support on your Windows 98, or Windows 98 SE system, you need to use either of the following methods:


Reinstall Windows 98 using the /p j command-line switch. This adds the ACPIOption string value with a value data of 1 to the registry. To run Windows 98 Setup using the /p j command-line switch, click Start > Run, and type the following command in the Open box, and then click OK:

setup /p j

Reinstalling Windows 98 is the best way to ensure that all devices are configured correctly.

Change the registry

Force ACPI detection by manually adding the ACPIOption string value to the registry, and then use the Add New Hardware tool in Control Panel to redetect your computer's hardware. To do so, follow these steps:

Since your CD-ROM drive is disabled by the Plug and Play BIOS during hardware detection, manually copy the Windows 98 cabinet (.cab) files from the Windows 98 CD-ROM to your hard disk. To do so, follow these steps:
Create a new folder on your hard disk (let's call it Win98cab)
Copy the contents of the Win98 folder on the Windows 98 CD-ROM to the Win98cab folder you created
Start the Registry Editor
Go to HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \CurrentVersion \ Detect
In the right-hand pane right-click an empty space and choose New > DWORD Value
Name it ACPIOption, double-click it, and change the value to 1
Close the registry editor
Select Start > Settings > Control Panel, and then double-click Add New Hardware
Click Next, click Next again, click Yes (Recommended), and then click Next. ACPI should be detected and installed. After your computer is restarted, all ACPI-enumerated devices are set up again.
Note: If you are prompted for files that the Add New Hardware Wizard cannot find, click Cancel or click Browse and locate the folder to which you copied the Windows 98 .cab files. Do not click Skip File, as this can cause Windows 98 to stop responding (hang) when you restart your computer and require you to reinstall Windows 98.

If there are duplicate entries in Device Manager after enabling ACPI, click a duplicate device that is not showing a conflict, and then click Remove.

For example, if two video adapters are listed, one has a resource conflict indicated by an exclamation point in a yellow circle next to the device. Remove the working video adapter and restart your computer. The device with the resource conflict is the one that should now be running in ACPI mode.

Note: After using method 2 to enable ACPI support, some devices may still detect a conflicting counterpart even after you remove them. If the device is working correctly, use method 1 to reinstall Windows 98 using the /p j command-line switch.

Before running either method, use ScanReg to make a backup of your registry. ACPI is not a fully mature standard, and any little bug in your BIOS or system drivers are going to have you want to uninstall ACPI support. If you want to uninstall ACPI support, just restore the registry backup you made prior to enabling ACPI on your system.
Optimization of Windows 2000/XP: ACPI kills audio performance!

If not indicated otherwise, this text refers to Windows 2000. Settings that should also be applied under Windows XP are stated additionally.

The main problem is the automatically chosen ACPI mode (*1) during installation. W2k will use only one IRQ (9) for all PCI devices. Normally this should be no problem, but in this case the IRQ sharing suffers from bad performance. The computer won't crash, and everything works, but not as well as it should. Two examples: When using a Hammerfall USB/MIDI operation will cause audio stuttering even at highest latency. Data transfers via a network card in the background will disturb audio playback significantly.

The remedy is to change from ACPI to Standard-PC mode. Here's how to do it:

Before installation of W2k:

Check BIOS: the entry Plug and Play OS in your mobo's BIOS should be set to 'NO'.

When installing W2k:

The mode Standard-PC can be selected already prior to a W2k installation. Hit F6 when you are asked for updated SCSI etc. device drivers (blue screen). Then press F5 and choose Standard-PC.

After installation:

Check BIOS: the entry Plug and Play OS in your mobo's BIOS should be set to 'NO'.
Go to Device Manager (Control Panel/System/Hardware), click on 'Computer', then double click on 'ACPI-PC'. Go on with 'Driver' and 'Update Driver'. Select 'Display a list of the known drivers for this device', then 'Show all hardware of this device class'. Now you can select 'Standard-PC' in the list shown in the right window.

Windows 2000 will re-start and re-install all hardware. After this the PC will use the BIOS' IRQ assignments. After the successful reorganization your device manager should look like this:

The assignment to Standard PC bears risks and is not recommended by Microsoft.
Eventually you will have to reinstall Windows and already select the Standard PC mode during the installation.
Further information you can find in the Microsoft knowledgebase (

The ACPI problem is not as severe with Windows XP, as Microsoft has introduced a number of beneficial changes. However, it might still occur that ACPI mode has to be deactivated manually with some system configurations. The procedure here is in principle the same as with Windows 2000.

To find out how your IRQs are assigned, do the following:

Go to the Start menu and click on "Run". Now enter "msinfo32". This starts the system information program. On the left hand side you can see a 'tree' view, similar to those used in the Explorer. Click on the left on "Hardware Resources" and then on "IRQs". On the right hand side, there should appear a list of your devices with the respective IRQ to which it has been assigned. Check if devices (especially your audio card) share an IRQ with other devices, as with Windows 2000. If this is the case, then you should deactivate ACPI.

(*1) ACPI = Automatic Configuration Power Interface

This article is based on information that was kindly provided by RME. For further information regarding this issue please check out RME´s website:

Whether or not you had to deaktivate ACPI, please read as well the article regarding the optimization of the processor scheduling in Win2K/XP:

Problems with single CPU systems and Windows 2000/XP
Article #15857 Updated on Apr 27, 2007 at 12:00 AM
On a dual CPU system Windows 2000 uses a special method to handle interrupts (higher than 15, APIC), but on single CPU systems all devices will have the same IRQ (9). While this seems to be no big problem on laptops, most desktop computers show significant performance problems. The timing critical access on the audio hardware is no longer guaranteed.
This one-interrupt-for-all is caused by the automatically chosen ACPI mode during installation. Normally this should be no problem, but here the IRQ sharing suffers from bad performance. The computer won’t crash, and everything works, but not as good as it should. Two examples: When using a Hammerfall USB/MIDI operation will cause audio stuttering even at highest latency. Data transfers via a network card in the background will disturb audio playback significantly.
The remedy is to change from ACPI to Standard-PC mode. Here’s how to do it:

* Check BIOS:
The entry Plug and Play OS in your mobo’s BIOS should be set to ‘NO’.

* Before installation:
The mode Standard-PC can be selected already prior to a W2k installation. Hit F6 when you are asked for updated SCSI etc. device drivers (blue screen). Then press F5 and choose Standard-PC.

* After installation:
Attention: users notified us that this method might lead to problems. Doing a clean install is also recommended by Microsoft!
Go to Device Manager (Control Panel/System/Hardware), click on ‘Computer’, then double click on ‘ACPI-PC’. Go on with ‘Driver’ and ‘Update Driver’. Select ‘Display a list of the known drivers for this device’, then ‘Show all hardware of this device class’. Now you can select ‘Standard-PC’ in the list shown in the right window.

Windows 2000 will re-start and re-install all hardware. After this the PC will use the BIOS’ IRQ assignments.
Under Windows XP Microsoft has significantly improved both interrupt handling and ACPI. In most cases the interrupts will not be sharing IRQ 9. Even when, problems like with the above mentioned simultaneous network transmission are no longer found. Furthermore XP operates more reliable and stable using the ACPI mode. Therefore changing to Standard-PC mode under Windows XP is not recommended.
The worst thing to do is to use Standard-PC mode with the latest generation of single CPU motherboards, having an advanced programmable interrupt controller (APIC). These boards offer 24 interrupts under Windows XP in ACPI mode (else found on dual CPU boards only) – but only 15 when using Standard-PC mode!
Note 1: The mode Standard-PC brings no advantage on dual CPU systems!
Note 2: For an optimized performance the system performance should be changed to ‘optimized for background tasks’ (see below).
Windows 2000 & XP ACPI & IRQ sharing description from Microsoft Website
Article #14595 Updated on Apr 27, 2007 at 12:00 AM
A General Description of IRQ Sharing in Windows XP (Q314068)
The information in this article applies to:
* Microsoft Windows XP Home Edition
* Microsoft Windows XP Professional
For a Microsoft Windows 2000 version of this article, see Q252420 .
NOTE : This article is for informational use only; it does not contain any troubleshooting information. If you are searching for troubleshooting information that is not referred to in this article, please try searching the Microsoft Knowledge Base again by using keywords that are listed in the following Microsoft Knowledge Base article:


This article offers a general description of how interrupt request (IRQ) sharing is managed in Windows XP. The description includes an explanation of why many of the devices on your computer seem to use the same IRQ and why Windows XP does not include resource rebalancing.


In Windows, peripheral component interconnect (PCI) devices can share IRQs. In accord with the Plug and Play capability that is defined by the PCI specification, adapters are configured by the computer BIOS and are then examined by the operating system and changed if necessary. It is normal behavior for PCI devices to have IRQs shared among them, especially on Advanced Configuration and Power Interface (ACPI) computers that have Windows ACPI support enabled.
In Windows XP, Device Manager may list some or all of the devices on your ACPI motherboard as using the same IRQ (IRQ 9). (To view the list of resources, click either Resources by type or Resources by connection on the View menu). No option is available to change the IRQ setting. Windows takes advantage of the ACPI features of the motherboard, including advanced PCI sharing. The PCI bus uses IRQ 9 for IRQ steering. This feature lets you add more devices without generating IRQ conflicts.
Note that Windows XP cannot rebalance resources in the same way that Microsoft Windows 98 does. After PCI resources are set, they generally cannot be changed. If you change to an invalid IRQ setting or I/O range for the bus that a device is on, Windows XP cannot compensate by rebalancing the resource that was assigned to that bus.
Windows XP does not have this ability because of the more complex hardware schemas that Windows XP is designed to support. Windows 98 does not have to support IOAPICs, multiple root PCI buses, multiple-processor systems, and so on. When you are dealing with these hardware schemas, rebalancing becomes risky and therefore is not implemented in Windows XP except for very specific scenarios. However, PCI devices are required to be able to share IRQs. In general, the ability to share IRQs does not prevent any hardware from working.
The Plug and Play operating system settings in the computer BIOS do not generally affect how Windows XP handles the hardware. However, Microsoft recommends that you set the Plug and Play operating system setting to No or Disabled in the computer BIOS. For information about viewing or modifying the computer BIOS settings, consult the computer documentation or contact the computer manufacturer.
Manually assigning IRQs to PCI slots in the system BIOS as a troubleshooting method may work on some non-ACPI systems that use a standard PC hardware abstraction layer (HAL), but these settings are ignored by Plug and Play in Windows if ACPI support is enabled. If you need to manually assign IRQ addresses through the BIOS to a device on an ACPI motherboard, you must reinstall Windows to force the installation to use a Standard PC HAL.

Solving DPC Latency Issues
Article #1717927 Updated on Jun 15, 2017 at 6:13 PM
What is DPC Latency?

Many audio problems on a computer can be caused by DPC latency.  DPC stands for Deferred Procedure Call.  In its simplest form, it is the part of your Windows system that handles driver efficiency.  If there is a driver that is taking longer than normal to process, it may prevent other drivers from being processed in time.  The worst case is that it can cause your audio interface driver from responding in time and can cause clicks, pops, distortion and dropouts.

How do I check my DPC latency?

There are a few programs that can be helpful in diagnosing DPC latency.  If you are running Windows 7 or higher, the best utility to use is LatencyMon by Resplendence.  This program will not only tell you if there is a DPC issue, but it will also tell you which driver is causing the latency.

LatencyMon download

For Windows XP or Vista systems, the only option is to download the DPC Latency Checker utility by the SysCon.  This utility will only show if you have a DPC latency issue, but it will not tell you what is causing it.

DPC Latency Checker Download

Once I figure out what is causing the problem, how do I  fix it?

LatencyMon will show the status of the latency issues in the Report Area.  The text in the Report Area will turn red when there is problems and will give you a general idea of how to fix it.  The lower section will show you the problematic drivers.

LatencyMon window with arrows pointing at Report Area, Total DPC Latency, and problematic drivers

99% of the time the cause of the issues is an incompatible Wi-fi adapter. If disabling your Wi-Fi doesn’t help, check the problem drivers to find the source of the issue.  The easiest way to find answers is to Google the name of the driver and the word “latency”.  Near the bottom of the picture above you can see that main cause of the issue is ohci1394.sys.  So in Google, type “ohci1394.sys latency”.  You’ll find several forum posts with a variety of solutions.

Here is a shortcut list of what we’ve seen in the past that may help you narrow it down.

ndis.sys = network or wi-fi adapters.  Try disabling Wifi and network adapters in device manager.

 ohci1394.sys = firewire card or firewire device.  Unplug any firewire devices and re-test for latency issues.  Update any drivers for your firewire devices and try again.  Check for IRQ conflicts particularly with video drivers.  If you have a built in firewire port, try using a PCI or PCIe firewire card instead.

USBPORT.sys = These are your USB Controller drivers on your motherboard.  Download the latest chipset drivers for your motherboard, available from your computer or motherboard manufacturers support website.  It also may help if you are on Windows 7 SP1

In rare cases we’ve seen certain computers with Card Reader slots cause high DPC latency. Disable any SD/MMC/Compact Flash entries from within device manager.

nvlddmkm.sys = These are your video card drivers.  Visit and locate the latest drivers for your video card and update them.  Double check for IRQ conflicts between your video card and other devices on your system, particularly the IEEE 1394 Controller. On certain computers these may also be related to your motherboard chipset drivers.

ACPI.sys = This issue occurs typically on laptops.  This can be difficult, sometimes impossible to solve.  This driver is for ACPI on your motherboard which controls different power modes.  First disable any sleep settings on your PC and do normal PC optimization.  In some cases disabling the ACPI Battery from within device manager also helps.  This may disable the ability for the PC to charge the battery on a laptop.

With any of the issues above, be sure to also go through the entire PC Optimization. In addition, be sure to disable any unnecessary devices in your BIOS including legacy Drive A options, Serial Port and Parallel Port options, Onboard Audio, and any Stepping technologies like Intel SpeedStep or AMD K8 Cool&Quiet.
The pentium 166/200MMX (Oct 1996) were the
last cpus to be released by intel before the ACPI Revolution
I was wondering if any of you computer sequencing and audio folks have
come across drivers for gear that wouldn't install correctly.

i.e. a usbmidi interface whereby hardware conflicts in the control panel prevent proper installation of device.

More specifically, in what is called ACPI mode (win2k here), the pc indicates that all drivers are on one interrupt (IRQ 9 in my case), when actually what is happening is that the pc is automatically allocating the interrupts as virtual IRQs. The downside is that you cannot (apparently) change these IRQs manually and if there is an installation problem, then your stuck.

After speaking with a tech from manufacturer of said device, he told me that I should convert to standard PC mode in the control panel of op system. This way the IRQs will go back to being PnP style which are physical not virtual IRQs and they can be manually configured and there are 24.

After doing a little research, I found that they (Microsfot) don't recommend
changing what they call the Hardware Abstraction Layer (HAL) from ACPI to Standard PC and vica versa, and if so, only by reinstalling the op system with Standard PC mode selected:
And the of course, you must reload the drivers for all your devices.

Can anyone shed light on this???
is it preferable to alot of you folks to operate in Standard PC mode instead of ACPI mode or is the tech giving me an excuse to cover up the fact that their current drivers won't install in my PC, and then is this the definition of incompatibility.

I think that the drivers of devices should be written to be able to adapt to changes in PC architecture, or am I asking too much? I thought this was an interesting question to raise about some details in our platform's background that are often overlooked.
Thanks for listening.

As a followup to this,
I recently made the switch from ACPI mode to Standard Mode.
The results were that all my drivers reloaded pretty seemlessly.

Some had to be "guided" to their respective locations, but when complete,
viewing of the IRQ structure revealed the actual IRQ that the devices were using,
and also resolved a host of conflict issues regarding my Midi interface, MOTU audio (PCI) interface as well as USB host controller.

Standard PC mode is definitely the way to go.

Windows 2000 needs to be in Standard Mode for music application. However, you can save yourself a huge headache by backing everything up and upgrading to Win XP Professional! I used to use Win2K recently and was using Standard Mode, but XP is rock solid for music, and I was very skeptical of XP at first. The driver support is excellent as well, and best of all, you don't need to run XP in Standard mode! In fact, some manufcaturers recommend against running XP in Standard Mode.
Everything is working great for me in XP, using Sonar 2 XL, Softsynths such as FM-7, M-Audio Delta 1010 with WDM driver, Emagic AMT 8, etc.
intel Pentium (Mar 1993) / motherboard specs (Jan 1996)
«  by chrisNova777 on September 22, 2017, 08:59:43 AM »

some detals of motherboards that support:
Pentium 120/133 Support
Pentium 75/90/100
Pentium 60/66
80386 SX/DX

486 (Apr 1989) / Re: Asus VL/I-486SV2GX4 (1994) 486 motherboard
«  by chrisNova777 on September 22, 2017, 08:51:47 AM »
cpu upgrades for the asus VL/I-486SV2GX4

Am5x86-P75 (Nov 1995)

Cyrix M1SC/5x86 (Aug 1995)
cpu - 80s / 8086 vs 68000 a comparison (1987)
«  by chrisNova777 on September 22, 2017, 07:16:45 AM »

(Written in 1987)

I. Introduction

Among the high-end microprocessors currently available, two of the most widely used are the Intel 8088 and the Motorola MC68000 (usually abbreviated to just 68000).  Both are members of small families of microprocessors.  The 8088 family includes the 8086 and the more powerful 80286 and 80386; it can trace its lineage through the earlier 8080 and 8008 all the way back to the first microprocessor, the 4004. Since the 8088 is identical to the 8086 in most respects, and since the 8086 is considered to be the “parent” of the 8088 chip’s microprocessor family, I will refer to the 8086 in this paper; however, everything said about it also applies to the more widely-used 8088. The 68000 family contains, besides the 68000 itself, the 68008, the 68010, the 68012, and the 68020.  These processors generally have additional registers and operation codes beyond what the 68000 has; however, I will not be dealing with them.

The rivalry between the 8088-based IBM PC family and the 68000-based Apple Macintosh series sets one wondering how the microprocessors they use perform.  I will be examining these two microprocessors from a programmer’s point of view; the only references to hardware characteristics will be those that are important to most assembly-language programmers using the chips.

II. User Registers

The registers that are available to the assembly-language programmer are where some of the most obvious major differences between the 8086 and the 68000 can be found.  The 8086 contains 14 16-bit registers, four of which can also be used as two eight-bit registers.  All of the 8086’s registers are used for specific functions, although several can be used for general storage as well.

The four “general purpose” registers in the 8086 are called AX, BX, CX, and DX to indicate their “eXtended” (16-bit) length; their two halves can also be referenced as eight-bit registers called AH and AL, BH and BL, CH and CL, and DH and DL, for the High and Low halves of the 16-bit value. The AX register is the primary accumulator; many instructions, such as MOV and AND, have special short forms which specifically deal with the AX register (or the AL register, for eight-bit operations). The BX, CX, and DX registers can also be used as eight- or 16-bit accumulators, but they have unique functions to which they are dedicated in some situations: BX is used as a base pointer in certain addressing modes, CX is used as a loop counter, and DX is used to hold I/O port addresses.

Besides the four “general purpose” registers, the 8086 has four 16-bit index registers, called SP (the stack pointer), BP (the base pointer, used similarly to BX in some addressing modes), SI (source index for string operations), and DI (destination index for string operations). It also has a 16-bit PC register (the program counter) and four 16-bit “segment” registers, called CS (code segment), DS (data segment), SS (stack segment), and ES (extra segment). I will deal more fully with the segment registers in the Addressing Modes section of the paper. Finally, the 8086 has a 16-bit Status register, also called the Flags register or the Program Status Word (PSW).  This register contains nine one-bit flags which keep track of the results of arithmetic operations and certain operating modes; some of the flags will be discussed in detail later on.

The 68000 contains 18 32-bit registers and one 16-bit register, giving it considerably more internal storage space than the 8086.  In addition, the 68000 registers come much closer to being “general purpose” than do those of the 8086.  The 68000 has eight 32-bit “data” registers, named D0 through D7. They can be used to hold 32-, 16-, or 8-bit values, depending on the instructions used to manipulate them. The 16- and 8-bit instructions affect only the appropriate number of lower order bits in the registers.  The data registers can all be used for all arithmetic operations, and most other operations as well.

The 68000 also has seven 32-bit general-purpose “address” registers, named A0 through A6. These registers can also be used for 16-, but not 8-bit operations. They can be used in some arithmetic operations, but they are usually used to hold the addresses of operands which will be manipulated.

The 68000 also has a 32-bit program counter (PC) and two 32-bit stack pointers, called USP (user stack pointer) or A7, used in “user mode,” and SSP (system stack pointer) or A7′, used in “supervisor mode” (see the Other Differences section below for a more complete description of the 68000’s operation modes). However, the USP register can be copied to or from any of the address registers during supervisor mode by using the MOVE instruction.  Finally, the 68000 has a 16-bit SR (Status Register) register, of which the lower eight bits are available in user mode and are called the CCR (Condition Code Register). The CCR essentially holds the results of arithmetic calculations, as with the 8086 Flags register; the rest of the 68000 SR holds other operation mode flags.

In summary, while some of the registers in these two processors share similar functions, e.g. the stack pointers, program counters, and status registers, their “general purpose” registers differ greatly. The 68000 has more of them (15 vs. six, including SI and DI), and they can hold larger values and be used for a greater variety of purposes than those on the 8086.

III. Addressing Modes

The 8086 and the 68000 also differ in how they find the operands for their machine language opcodes, although their addressing modes look less similar at first glance than they actually are.  The 8086, as mentioned before, has a 16-bit program counter and four 16-bit “segment registers.” Depending on the operation being performed, the value of one of the segment registers, shifted left by four bits (in effect multiplying it by 16), is added to an “effective address,” calculated in one of the ways described below, resulting in a 20-bit absolute address.  This means that the 8086 can directly address one megabyte of memory. For fetching instructions, the Code Segment register is used; for stack operations, the Stack Segment register; for certain string operations, the Extra segment register; and for most other operations, the Data Segment register.  The Data Segment default can be overridden to use another segment register in most cases.

The 8086 can access its operands in one of twelve general ways, called addressing modes. They are:

Immediate Mode:
1. Operand is in opcode
Direct Mode:
2. Operand is in register specified in opcode
3. Address of operand is in DS+16 bit signed displacement following opcode
Direct, Indexed Mode:
4. Address of operand is in DS+DI or SI+8 or 16 bit signed displacement
Implied Mode:
5. Address of operand is in DS+DI or SI
Base-Relative, Direct Mode:
6. Address of operand is in DS+BX
7. Address of operand is in DS+BX+8 or 16 bit signed displacement
Base-Relative, Direct, Indexed Mode:
8. Address of operand is in DS+BX+DI or SI+8 or 16 bit signed displacement
Base-Relative, Implied Mode:
9. Address of operand is in DS+BX+DI or SI
Base-Relative, Direct Stack Mode:
10. Address of operand is in SS+BP+8 or 16 bit signed displacement
Base-Relative, Direct, Indexed, Stack Mode:
11. Address of operand is in SS+BP+DI or SI+8 or 16 bit signed displacement
Base-Relative, Implied Stack Mode:
12. Address of operand is in SS+BP+DI or SI

Note that there are actually more than twelve combinations of registers used for addressing, because of the many places where either DI or SI can be used.  However, the above are the twelve patterns that the 8086 uses to compute effective addresses.  Note the dedicated use of specific registers for each addressing mode.

The 68000, in contrast, has no need for the segment registers because of its 32-bit program counter. In fact, the program counter actually allows larger addresses than the chip’s hardware can address: the 68000’s address bus has only 24 bits.  Still, that is enough to handle 16 megabytes, compared with the 8086’s one megabyte address space.  In addition, the specialized register uses of the 8086 are largely missing in the 68000; the main distinction is between the seven address registers and the eight data registers.  Any data register can be used for any purpose that any other data register can; likewise for the address registers.

Here are the available addressing modes in the 68000:

Immediate Mode:
1. Operand is in opcode
Direct Mode:
2. Operand is in register specified in opcode
Absolute Mode:
3. Address of operand is in opcode
Address Register Indirect Mode:
4. Address of operand is in An (n=0-6)
5. Address of operand is in An; predecrement An (n=0-6)
6. Address of operand is in An; postincrement An (n=0-6)
Address Register Indirect Mode/Program Counter Indirect Mode:
7. Address of operand is in An or PC+16 bit signed displacement (n=0-6)
8. Address of operand is in An or PC+Xm+16 or 32 bit signed displacement (n=0-6; Xm=A0-A6 or D0-D7)

Again, there are actually many more combinations of registers than there are access patterns, i.e. addressing modes.  The 68000’s addressing modes tend to each use fewer registers than the 8086’s do; however, most of that difference is due to the 8086’s use of segment registers.  Once they are taken into account, the addressing modes of the two processors are remarkably similar; the largest difference between them is that the 68000 modes can be used with many more registers than can the 8086 modes.  Aside from that, the 8086 lacks predecrement and postincrement modes, a minor omission.

IV. Instruction Sets

Many of the differences between the instruction sets of the 8086 and the 68000 have already been dealt with in the section on User Registers and the section on Addressing Modes.  Differences in those areas lead directly to readily evident differences in the instruction sets, for example the sizes of the values saved on the stack by the CALL/JSR instructions. Below I will discuss notable differences not covered earlier.

The standard assembler mnemonics for the 8086 and the 68000 differ considerably.  Although both use capital letters, the 8086 uses the order “destination, source” in its operand field while the 68000 uses the reverse.  Also, instructions which perform essentially the same function are given different names by the two assemblers. For example, the 8086 CALL (subroutine) performs analogously to the 68000 JSR (Jump to SubRoutine), and the 8086 SBB (SuBtract with Borrow) performs the same function as the 68000 SUBX (SUBtract with eXtend).  Other mnemonics have smaller differences, for example: MOV on the 8086 is MOVE on the 68000 (and as noted above, the order of operands is reversed).

“String operations” means the instructions used to implement operations on consecutive memory elements, usually with some kind of automation or semi-automation. The 8086 has special instructions included for just this purpose. They automatically perform an operation (moving or comparing data), then increment or decrement (depending on the state of the Direction flag in the Flags register) index registers (SI and/or DI) to point to the next element. If they are preceded by the REP instruction, they also decrement and test a counter (CX); if it is not zero, they keep looping. Perhaps the weakest aspect of these instructions, called MOVS, LODS, STOS, SCAS and CMPS, is that they inflexibly use specific registers for each aspect of their operation. Otherwise, they are faster and shorter than the corresponding normal loops would be.

The 68000 does not have dedicated string operation instructions. Instead, it has the predecrement and postincrement addressing modes, mentioned earlier, which can be used with any of the address registers.  These are used with the standard conditional branch instructions.  Thus although the 68000 is more flexible in its implementation of string functions, it cannot have loops which are as tight as those the 8086 can.

Stack operations are an area where the 68000 is clearly more versatile than the 8086.  The 8086 uses PUSH and POP instructions which can only move 16-bit values onto or off of the system stack. To implement more than one stack, the programmer would need to use MOV along with DEC (DECrement value) and INC (INCrement value) on the register or memory location chosen as the second stack’s pointer. The 68000, by contrast, handles stack operations by using the predecrement (for push) and postincrement (for pop) addressing modes on anyone of the address registers, including A7, the USP register. The 68000 can therefore not only move 16-bit values onto or off of the stack, but it can perform other operations such as AND and CLR on stack values, and the MOVEM (MOVE Multiple registers) instruction can be used to good advantage to quickly push or pop many registers at once to or from the stack. The 68000 can also do 32- and 8-bit stack operations.  However, register A7 won’t accept 8-bit operations, to guarantee that words it contains will start on even addresses (see the section on Other Differences below). The 68000 also has two instructions, LINK and UNLK, which allocate and deallocate, respectively, a stack frame for temporary storage.  The 8086 has a form of the RET instruction which adds a given value to the stack pointer before pulling the address off of the stack, but it is most useful for cleaning up at the end of subroutines which are passed values on the stack.

In the area of integer arithmetic, the 8086 is slightly more versatile than the 68000. It can add and subtract 8 or 16 bit values, with or without adding in the carry; it can multiply two 8-bit or two 16-bit values, signed or unsigned; and it can divide 16 by 8 bit or 32 by 16 bit values, signed or unsigned. The 68000 can add and subtract 32 bit values in addition to the operations that the 8086 can do, but it can’t do the 8*8 bit multiplication or the 16/8 bit division that the 8086 can. Of course, those operations are easy to do with the multiplication and division instructions that it does have, simply by clearing the upper parts of the affected registers beforehand.

Besides the regular binary arithmetic operations, the 8086 has instructions to adjust the result so that it can do arithmetic on BCD and ASCII values, as well. The 68000 has special instructions for doing BCD arithmetic, but it has nothing equivalent to the 8086’s ASCII adjustment instructions.

Although the interrupt handling facilities of the 8086 and the 68000 differ considerably, if we limit ourselves to looking at the software interrupt instructions we find that they are very similar. The 8086 INT instruction causes a jump to any of 224 addresses in low memory; there are actually 256 available, but 32 of them are reserved for other purposes.  INTO uses one of those reserved addresses to cause an interrupt if the overflow flag in the Flags register is set. Both INT and INTO push the Flags, CS and PC registers onto the stack before jumping. The IRET instruction returns from an interrupt, restoring the values of Flags, CS and PC from the stack.

The 68000 has similar instructions with different names: TRAP causes a jump to any of 192 addresses in low memory (the other 64 are reserved) and TRAPV causes an interrupt if the overflow flag is set, both of them saving the values of PC and SR on the stack. RETE is the 68000 equivalent of IRET. Note that although the 68000 has 8 priority levels for interrupts, compared to the 8086’s one level, software interrupts on the 68000 always operate at the same priority, so software interrupts are really no different from those on the 8086 in that respect.  There is one small difference, however: interrupts on the 68000 cause the processor to enter supervisor mode, which the 8086 does not have.

In looking over the instruction sets of the 8086 and the 68000, I found a few other oddities I would like to discuss. The first instructions in the alphabetical lists for both processors made me wonder if someone was playing a joke on me: AAA and ABCD on the 8086 and 68000, respectively. The abbreviations stand for Adjust result of ASCII Addition and Add Binary Coded Decimal, but they sure look to me like they were contrived to be cute.  That’s okay. It’s fun to see something like that sneak into general production.

The 8086’s assorted odd instructions include LAHF and SAHF, which load and save the lower byte of the Flags register into the AH register. That seems rather specialized to me. There is also JCXZ, which Jumps if the CX register is Zero. It is the only instruction in the set which tests a full register instead of just a bit or two, and it reinforces the specialized use of CX as a counter.  Last, there is the XLAT instruction, which moves the value pointed to by AL + BX into AL.  It is intended for use in table lookups, but it seems very limited and specialized to me: there is no choice as to which registers may be used.  However, in that respect, it is consistent with what seems to be the general register use philosophy of the 8086.

The 68000 also contains some unusual instructions. In addition to the standard bit test instruction, BTST, it has BCHG, BCLR, and BSET, which combine two operations: they test a bit and then complement, clear, or set it respectively. It also has instructions for dealing with variable-length bit fields, with the mind-numbing mnemonics BFEXTU (Bit Field EXTract Unsigned), BFFFO (Bit Field Find First One), BFINS (Bit Field INSert), BFSET (Bit Field SET), and BFTST (Bit Field TeST). I never thought I’d see three F’s in a row in an assembly language instruction!

Another 68000 instruction which combines two operations is CAS2, which Compares And Swaps two values. It is specifically useful in a multiprocessor environment, where if the operation was done in several steps another processor could grab control of the bus in the middle of the process and corrupt the operation. CHK is an unusual instruction which checks if the value in a data register is between 0 and a given boundary.  Unlike most comparison instructions, if the value is outside of those limits, it causes an interrupt (a trap) rather than setting a flag. Finally, there is RTR, which pulls not only the PC but also the CCR from the stack. It is like RTE, which can only be used in privileged mode, except that it does not restore the high byte of the SR.

Overall, in the majority of areas the 68000 has a more powerful and flexible instruction set than the 8086. That difference is due largely to its having more and larger registers and allowing more versatility in their use.

V. Other Differences

There are a few other differences which will be important to most assembly language programmers on these machines but which do not fit into any of the above categories.  For example, the 8086 allows words (16-bits) to start at any address, while the 68000 requires that words and long words (32-bits) start at even addresses.  Also, the two processors use opposite orders of storage for multibyte numbers: the 8086 stores the lowest valued byte first, the 68000 the highest. And lastly, the 8086, like most microprocessors, has only one operating mode. The 68000, designed more with multi-user environments in mind, has two operating modes: user mode, which is the normal one, and supervisor mode, which is able to use certain privileged instructions affecting the Status Register and I/O devices, like RTE and RESET.  As mentioned above, interrupts cause the 68000 to enter supervisor mode. Having two different modes is useful in preventing ordinary users from changing data belonging to the system or to other users, or even crashing the system.

VI. Conclusion

Both the 8086 and the 68000, and their related families of microprocessors, contain a powerful assortment of registers, addressing modes, and instructions.  Both are able to perform high-precision arithmetic, allow large address spaces, and can access their operands in many different ways.  The 68000, however, has more and larger registers, and allows much greater versatility in their use. In addition, it has a privileged operating mode, which the 8086 lacks, to protect the system from disaster in complex operating environments. From the programmer’s point of view, then, the 68000 seems to be a more desirable chip to use than the 8086.


All technical data on the 8086 is from:

Rector, Russell, and Alexy, George. The 8086 Book. Berkeley, California: Osborne/McGraw-Hill, 1980.

All technical data on the 68000 is from:

Leventhal, Lance A.; Hawkins, Doug; Kane, Gerry; and Cramer, William D. 68000 Assembly Language Programming, Second Edition. Berkeley, California: Osborne/McGraw-Hill, 1986.
intel Pentium II (May 1997) / anandtech reviews the k6
«  by chrisNova777 on September 22, 2017, 07:09:00 AM »

AMD K6 Review
by Anand Lal Shimpi on April 3, 1997 4:51 PM EST
Posted in
+ Add A
AMD had a knockout on their hands with the K5, unfortunately manufacturing problems and lagging delays kept them from grabbing a significant amount of the market. By the time the K5 was performing up to speed Intel had already announced and released their much faster Pentium MMX series of processors and Cyrix was already working on a successor to the 6x86. AMD's answer? A high powered yet low cost alternative to Intel's Pentium Pro and Pentium II, otherwise known as the K6.

The K6's main advantages include:

A highly advanced RISC86 core which decodes complex instructions into much smaller RISC86 operations for greater performance
64KB of L1 Cache
8.8 Million transistors piled up on a die 162 mm2 die using IBM's patented "flip-chip" technology
The smallest 6th generation processor out today!
High scalability from .30 micron fab process to a .25 micron fab process for use with upcoming K6 processors
Excellent price to performance ratio when compared to slower and more expensive Intel processors
First Generation AMD K6 Series Microprocessor
Chip Name   P-Rating   Clock Speed   Bus Speed x Multiplier
AMD K6-PR2/166   PR2/166   166MHz   66 MHz x 2.5
AMD K6-PR2/200   PR2/200   200MHz   66 MHz x 3.0
AMD K6-233   N/A   233MHz   66 MHz x 3.5
After its introduction in April, AMD quickly dropped the PR2 rating of the K6 in favor of actual clock speed ratings.  An intelligent decision on AMD's part, since the PR2 ratings were confusing to many interested in the K6.

Under Windows 95, the performance of the K6 is nearly identical to Intel's more expensive Pentium II. The major differences between the K6 and the Pentium II are its FPU performance and 32 bit Windows NT performance. If neither of those matter to you (I should mention here that the K6's FPU is very well made, and extremely fast contrary to popular belief) then the AMD K6 is a superb choice for a microprocessor. What does the future hold for the K6? Lets take a look at some of AMD's future plans...

AMD K6 266 (a.k.a. AMD K6+)

This bad-boy will be AMD's successor to their first generation K6 processor, although it has been referred to as the AMD K6+ for some time now, the K6-266 will be a normal AMD K6 with a few interesting improvements on the original design.  The FPU of the K6-266 won't be a pipelined FPU, contrary to popular belief, however AMD has made some improvements to the K6's core which will result in faster FPU performance overall.  Currently, the K6's FPU isn't as great as it could be however it is in no way a "poor" FPU.  The Winbench98 FPUMark scores indicate that the AMD K6 isn't nearly as fast as the Pentium MMX in Floating Point operations, however if your main use for a computer is business applications with a few FPU intensive applications/games on the side the AMD K6 is still an excellent processor.

The AMD K6-266 will not be the power consuming daemon its predecessors were, requiring a core voltage of ~2.5v and producing a mere 8W of heat the K6-266 will be a prime candidate for mobile systems as well as desktops.  Expect some nice overclocking options with the K6-266, especially when coupled with the 83.3MHz bus speed setting found on some of the most stable Socket-7 motherboards.


AMD has decided to take the proprietary route with the K6 in the first half of 1998 with the introduction of the K6-3D.  The K6-3D will essentially be a K6, with a few new features, such as a proprietary set of 3D instructions designed to aid in speeding up 3D geometry calculations.  Unfortunately these instructions will be rivaled by Intel's MMX2 instruction set as well as Cyrix's own set of 3D functions, meaning that unless a standard is adopted by all of the manufacturers, both hardware and software, these instructions will remain un-used...much like our current set of MMX instructions.

Along with the addition of a proprietary set of 3D instructions, the K6-3D will be the first Socket-7 processor to embrace a 100MHz bus speed officially, and likewise will be introduced with a minimum clock speed of 300MHz.   Naturally, the K6-3D, although maintaining full compatibility with the Socket-7 specification, will require a new motherboard with support for the 100MHz bus speed in order to achieve its full performance potential.  It may be possible, although not very intelligent, to run the K6-300 at 66 x 4.5 provided that AMD does built in support for the 4.5x clkmul internally on the K6-3D, however with the K6-3D expect your next motherboard purchase to be based on a non-Intel chipset since Intel still refuses to support any bus speeds greater than the good 'ole 66MHz setting we've put up with for the past 2 years.

Physically the AMD K6-3D will feature a total of 9.3 million transistors, on a die size approximately 81 square mm.  Whether or not AMD will continue to use IBM's Flip-Chip technology with future K6 processors, including the K6-3D, is unknown however it would seem very unlikely that AMD would completely discontinue their current manufacturing methods in favor of a new procedure, especially this late into the year.  The manufacturing process which will be used to implement the K6-3D will of course, be a 0.25 micron process like Intel's new Tillamook processor as well as their upcoming additions to the Pentium II series.

AMD K6+ 3D

In order to take some of the lime light away from Intel when they release their long awaited successor to the Pentium Pro, the Deschutes, AMD will be releasing a Deschutes of their own in a sense.  In the late Third Quarter of 1998, AMD will be introducing the product of most of their efforts, the AMD K6+ 3D (what is it with companies and 3D these days?) The AMD K6+ 3D will feature all of the goodies the K6-3D will, as well as some "Pro-like" features which should have Intel shaking. Why?

AMD will supposedly introduce the K6+ 3D, with a full 256KB of 4 way set associative L2 cache, ON CHIP, running AT clock speed. 

The K6+ 3D will also feature an optional Level 3 Cache (L3) commonly found in high end processors such as Digital's 21264, commonly known as the Alpha. The actual size of the L3 cache has yet to be determined, however expect it to be in the range of 1MB - 8MB in order to stay competitive with the market's demands and Intel's offerings with their Deschutes.  The L1 cache size of the K6-3D and the K6+ 3D will most likely be at least 128KB, with the possibility of it being as great as 256KB although more than 256KB of L1 cache will quickly become a manufacturing limitation and will eventually drive the cost of the processor beyond what most are willing to pay for a non-Intel solution.   The K6+ 3D's die size, somewhat larger due to the L2 cache, of 135 square mm will house a whopping 21.3 million transistors.  I wouldn't become too happy about that number since the 21.3 million transistors include those required for the onboard L2 cache and not the processor exclusively.

Marketing 101

AMD's marketing angle for the K6-266, K6-3D, and K6+ 3D will be their price to performance ratio.  If AMD can deliver the chips the market demands, on time, and in great quantities at an affordable cost, they will gain the 30% of the market they are looking for.  However, if AMD is plagued once again by distribution problems, and if the price of the next generation K6 chips isn't what the market is willing to pay for a low cost alternative, then Intel will once again cast their dark shadow over the microprocessor industry.

1998 will be the year for competition, most of which Intel plans to eliminate with the introduction of their 64-bit masterpiece, the Merced a year later in '99.  AMD will continue to pursue their high goals even after the K6 processor dies out, especially with the rumored compatibility between Slot-1 and AMD's upcoming K7 to be released in 1999.

AMD K6 Performance

The following tests were conducted using the same configuration used in all AMD K6 motherboard tests, and can be found on the Socket-7 Motherboard Comparison Guide from which these scores were extracted.  Expect more scores to be up later this week, including a full set of Business Winstone 98 scores.

Windows 95 Performance of the AMD K6
Chip   Business Winstone 97
K6-166 (66MHz x 2.5)   52.1
K6-188 (75MHz x 2.5)   Not Run
K6-200 (66MHz x 3.0)   54.5
K6-208 (83MHz x 2.5)   58.9
K6-225 (75MHz x 3.0)   57.5
K6-233 (66MHz x 3.5)   57.0
K6-250 (83MHz x 3.0)   59.9
The Business Application performance of the AMD K6 is outstanding, expect more scores in this category later, especially Business Winstone 98 scores which test multitasking/task switching capabilities, a feature not found in Winstone 97.

AMD K6 Performance
Chip   FPU Mark   CPU Mark32
K6-166 (66MHz x 2.5)   540   492
K6-188 (75MHz x 2.5)   606   554
K6-200 (66MHz x 3.0)   647   524
K6-208 (83MHz x 2.5)   673   609
K6-225 (75MHz x 3.0)   728   604
K6-233 (66MHz x 3.5)   753   558
K6-250 (83MHz x 3.0)   807   675
The performance of the AMD K6 under Windows 95 is excellent, however the FPU Mark scores are a bit low compared to Intel's Pentium MMX and Pentium II processors.

From these scores you can easily tell (or you will be able to tell) that the K6 is not the world's best Quake performer, however, when coupled with a Diamond Monster 3D, it isn't all that bad.  The 3D Winmark 98 scores indicate that the K6's 3D performance, which is very FPU intensive, is not as strong as that of the Pentium II, however it is very competitive when compared to the Pentium MMX.

In order for you to implement and utilize Ultra ATA technology (also referred to as Ultra DMA or Bus Mastering) your system must have all four of the following elements:

Ultra ATA/33, Ultra ATA/66, or Ultra ATA/100
1 compatible chipset or host adapter.
2 capable system BIOS.
3 device drivers.
4 An Ultra ATA capable hard drive or CD-ROM.