Idle DR-DOS
os2museum.com
os2museum.com
Power management under DOS on early x86 laptops was downright primitive. There were no standards of any kind (I'd never even heard of the DR-DOS $IDLE$ device until now, but it doesn't seem like that gained any kind of traction at the time), not even BIOS-based abstractions. Just vendor-provided 'drivers' (in name only: it's not like DOS made any distinction between system and user code) that directly communicated with the hardware.
Unsurprisingly, that all broke down as soon as you did anything even remotely interesting. Run QEMM386? No power management for you! Have a certain PCMCIA card inserted? Ditto! And shipping any kind of updates took forever at that time (literally FedExing floppies...), so getting a working system was pretty much impossible.
Because it acted more like a real OS, with user programs calling through driver APIs rather than touching the hardware directly, with the right driver support Windows could run on a 186-based system; one (the Tandy 2000) was used to develop Windows 1.0's color modes because it had a high-resolution 8-color display before the EGA came out: https://www.1000bit.it/lista/t/tandy/tandy2000_ad.jpg
ISA-compatible "clones" of the 186, like the NEC V40 and the "Hornet", did not have the SoC problem and could be used in PC-compatible system designs.
REP BOUND only compares against lower bound
REP MUL result in AH (byte) or SP (word)
REP IMUL result in CH (byte) or BP (word)
REP IMUL reg,r/m,i16 first operand ignored, 32 bit result in DX:AX
REP IMUL reg,r/m,i8 first op ign., AH=result bit 23..16, AL=bit 7..0
AAM 00H no "divide by zero" exception, AH=FFh, AL unchanged
So it's certainly based on the 80186 microcode, as none of these instructions do the same on any other x86 chip.I mained a used Tandy 2000 for a while as a kid/teenager. Back when it came out, computers still came with full technical docs, including Intel's extensive 186 documentation. I've forgotten things about that beleaguered chip many enthusiasts never knew.
One such example is the RM Nimbus: https://www.computinghistory.org.uk/det/41537/RM-Nimbus-PC-(...
It had a 186 from the very first models, and was later re-branded as PC-186 when they introduced their 286 model.
Kudos, indeed!
An examination of the source code for the PC/AT BIOS reveals what it actually does when waiting for input on INT 16/AH=0 --- it polls the keyboard buffer in a loop that also appears to repeatedly update the keyboard LED indicator status, and one of the instructions that it executes (with interrupts enabled) is a NOP. Naturally, that makes one wonder whether simply replacing that NOP with a HLT would be sufficient to idle the CPU, and if so, why didn't IBM do that originally; and what newer BIOSes do.
The 6A69MV39 AWARD BIOS I inspected (from 1999) looks similar, but loops with a "delay" created by reading from I/O port 0EBh.