Usage: WINBOND.EXE = normal run, ignore unknown Winbond device ID's WINBOND.EXE -f = accept and probe unknown Winbond device ID's WINBOND.EXE -h = print usage information The program dumps some registers of the Winbond SuperIO chips that are relevant to "auto-power-on" on ATX hard power-up (+5VSB up). Limitations: This program only works in native MS-DOS, as it requires direct hardware access. When I started writing it, I really tried using DLportIO under Win32 - only to find out that Windows XP kept throwing a "privileged instruction" exception. They didn't bitch if I tried to access the LPT, but they did bitch consistently if I tried to access 0x2E. Go figure... I don't even bother to try ZwSystemDebugControl, which is reportedly inconsistent across Windows versions too. This program specifically supports selected known Winbond chips, detected by their device ID's. Check the detection table in the source code of w83.c (at the top of the C file), called static struct w83_dev_id w83_dev_ids[] Feel free to add your own ID's, if you feel the algorithms apply. Obviously you'll need to recompile the proggie afterwards (written in Borland C 3.1). The program may work for other Winbond ID's, or it may not. Different Winbond chips have slightly different feature sets = different register sets and different meanings of bits within the same registers, even in this area. The program essentially can detect Winbond SuperIO chips that sit at the well-known service IO port addresses of 0x2E/2F and 0x4E/4F. These can be LPC chips (W83627) and PCI chips (W83977). Most of the Configuration Registers being dumped belong to the "Logical Device A (ACPI)". Motivation: On one model of a motherboard, we had a problem with the "power loss behavior" BIOS option. Even if this was toggled to "power on, no matter what", the board wouldn't start up after the ATX PSU got powered and started to provide standby power. After some head scratching and googling, I've managed to find out that this function was likely implemented using some specific functionality in the Winbond SuperIO chip (W93627EHG = LPC). Using a multi-meter, I've discovered that indeed the ATX Power Button input was directly attached to the Winbond's pin 68 (PSIN#), and its pin 72 (PWRCTL#) was directly connected to the ATX power connector's PS_ON. There also seems to be an output called PSOUT# (panel switch pass-thru), SLP_SX# (sleep state input from ICH), PWROK and others. All in all, it seems like the Winbond SuperIO chip is also the heart of the motherboard's PSU sequencing "glue logic"! Plus, the Winbond has +5VSB and even +Vbatt inputs, and some of its registers are battery-powered. This was new to me, so far I've always thought that only the BIOS NVRAM had a battery backup, which is nowadays a part of the ICH (Intel South Bridge). If your BIOS setting for the auto-power-up seems to misbehave, maybe even after a BIOS upgrade that should've corrected a relevant bug, it may be a good idea to remove the battery from its socket to properly reset the relevant circuits. Depending on exactly how the "CMOS Reset" jumper is implemented, it may or may not reset the Winbond battery-powered registers!