VOGONS


First post, by kegepet

User metadata
Rank Newbie
Rank
Newbie

I know that enabling usb legacy support allows you to use a usb keyboard in a legacy os such as DOS, but then what is port 60/64 emulation. Judging by the various descriptions I've read, it seems to do the same thing. Could someone please explain the difference. Thanks.

Reply 3 of 5, by Tiido

User metadata
Rank l33t
Rank
l33t

Port60/64 stuff emulates the hardware of keyboard controller for things that access the hardware directly, even if it doesn't physically exist. I imagine legacy support should do that automatically though there's a chance only the BIOS interrupts are handled without actual hardware emulation in some cases.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 4 of 5, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie

There were 2 ways how USB keyboard and mouse support could be implemented for legacy software that pre-dated USB.

The 1st method actually made use of a real IBM 8042 compatible KBC. Most SuperIO chips always had KBC and some chipsets (VIA, NVIDIA) even have KBC integrated. So in this scenario, legacy software actually talked to KBC using port 60/64 and USB acted as a virtual wire periodically polling the data from USB keyboard/mouse and pumped the data into the KBC. From the KBC perspective, it was the same as receiving the data from PS/2 keyboard/mouse over wire. This was the most popular method simply because there wasn't a lot of saving the hardware manufacturers could bargain by cutting out the KBC. In this method, the typical BIOS option was USB legacy Enabled and Port 60h/64h Emulation Disabled. This worked for 99% of the time and the only time that one needed the additional Port 60h/64h emulation was for software that manipulated keyboard/mouse features directly such as using the NumLK, ScrollLK and CapLK LEDs as running lights. This was not a typical use case but there could be other industrial equipment that might require such to work properly.

The 2nd method was called the "virtual-KBC" implementation and it was typically touted for so-called "Legacy Free" PC, a new campaign for ditching all the legacy I/Os (serial, parallel ports etc.) and everything on USB. In this method, the entire IBM 8042 KBC was emulated by the USB software stack in the BIOS and hence Port 60h/64h Emulation became a must. This wasn't a very popular method because it was hard in the beginning to get the emulation as real as a HW KBC for timing sensitive software. At the same time, it was also an effort with a dead end because everyone knew OS without native USB support (such as DOS) was phasing out and UEFI would be the future.

Reply 5 of 5, by NJRoadfan

User metadata
Rank Oldbie
Rank
Oldbie

Found a few Gigabyte boards with both options. The description in the manual is pretty vague. Both methods use SMM to provide the emulation. I'm guessing Port 60/64 provides more emulation for certain situations. Many of these motherboards still have at least one PS/2 port on them, so i8042 support exists somewhere still (all these boards use a LPC I/O chip, even ones without PS/2 ports).

Legacy USB Support: Allows USB keyboard/mouse to be used in MS-DOS. (Default: Enabled)

Port 60/64 Emulation: Enables or disables emulation of I/O ports 64h and 60h. This should be enabled for full legacy support for USB keyboards/mice in MS-DOS or in operating system that does not natively support USB devices. (Default: Disabled)