https://www.pcjs.org/blog/2017/10/13/ PCjs Machines Home of the original IBM PC emulator for browsers. * About * Blog * Explorer * Repository Logo PCjs Blog Corporations Are Crappy Archivists In my all-too-brief but soon-to-be-revisited blog post "Of Mice And When", I mentioned that there seemed to be a lot of confusion on the Internet regarding the Microsoft Bus Mouse and the Microsoft InPort Mouse. I even found some software that claimed to emulate a "microsoft bus mouse" but was actually emulating an InPort mouse. Thankfully, one decidedly unconfused person, Michal Necasek, sent me a link to his Bus Mouse emulation, which includes the following prologue that gets it exactly right: The Microsoft Bus Mouse was an early mouse sold by Microsoft, originally introduced in 1983. The mouse had a D-shaped 9-pin connector which plugged into a small ISA add-in board. The mouse itself was very simple (compared to a serial mouse) and most of the logic was located on the ISA board. Later, Microsoft sold an InPort mouse, which was also called a "bus mouse", but used a different interface. Microsoft part numbers for the Bus Mouse were 037-099 (100 ppi) and 037-199 (200 ppi). The Bus Mouse adapter included IRQ configuration jumpers (ref. MS article Q12230). The IRQ could be set to one of 2, 3, 4, 5. The typical setting would be IRQ 2 for a PC/XT and IRQ 5 for an AT compatible. Because IRQ 5 may conflict with a SoundBlaster or a PCI device, this device defaults to IRQ 3. Note that IRQ 3 is also used by the COM 2 device, not often needed. The ISA adapter was built around an Intel 8255A compatible chip (ref. MS article Q46369). Once enabled, the adapter raises the configured IRQ 30 times per second; the rate is not configurable. The interrupts occur regardless of whether the mouse state has changed or not. To function properly, the 8255A must be programmed as follows: - Port A: Input. Used to read motion deltas and button states. - Port B: Output. Not used except for mouse detection. - Port C: Split. Upper bits set as output, used for control purposes. Lower bits set as input, reflecting IRQ state. Detailed information was gleaned from Windows and OS/2 DDK mouse samples. This is one of the telltale signs of a conscientious programmer: comments that are relevant, detailed, accurate, and provide invaluable context that source code alone does not. NOTE: The above file has already moved once (without any redirect), so just in case that happens again, we've saved a copy. Anyway, I wanted to supplement this information with the Microsoft KnowledgeBase articles that he referenced; specifically: * Q12230 * Q46369 I thought this would be a trivial task ("OK Google"). Even Michal seemed confident at the time that merely citing the KB articles by their unique "Q" identifier was more than sufficient. Surely anyone who cared to read those articles could simply pull up their nearest KnowledgeBase database and immediately access them. I was wrong. Long story short, Google was a bust. But worse than that, Microsoft.com was a bust ("No results found for Q12230"). Which is sad, given that Microsoft wrote all these articles. They also don't seem to remember that they were called KnowledgeBase articles, not " Knowledge Base". And digging into their "Knowledge Base" Web Resources just took me to a Windows IT Pro Center, which looked more like a shopping page than a resource page. If there were links to KnowledgeBase articles anywhere on that page, they were well-hidden. But, I figured that's OK, because I've got enough old MSDN Library CDs to create a tower that would rival any Jenga structure, and surely these articles would be on one of those. I was wrong. For example, Microsoft Developer Studio, circa 1996, was a bust. It definitely contained some KnowledgeBase articles, just not the ones I was interested in. Screenshot of Microsoft Developer Studio circa 1996 And Visual Studio 2003's MSDN Library was no better. Screenshot of Microsoft Visual Studio 2003 MSDN Library I wasn't alone in my frustration either. Even Michal, who had dug up the KB articles originally, couldn't find them again. He did eventually find Q12230 in the MSDN Library, January 2000 (DVD edition), but only after much trial-and-error. He had expected older MSDN libraries to contain the article as well, but they didn't. He also theorized that the reason Q46369 had disappeared was because it was flagged (incorrectly) as an "OS/2" article, and Microsoft may have decided to expunge everything OS/2-related at some point. It wasn't until I tried some old Microsoft Programmer's Library CD-ROMs, circa 1991, that I finally had success. Using the "Microsoft Programmer's Library 1.3" CD-ROM and searching within the "MS KnowledgeBase - C" section of the "C References" library did the trick. Screenshot of Microsoft Programmer's Library 1.3: Q12230 Screenshot of Microsoft Programmer's Library 1.3: Q46369 The organization of KB articles on that CD-ROM is somewhat haphazard. For example, many of the articles filed under "MS KnowledgeBase - C" (including the two I was looking for) have nothing to do with C. And other libraries on the CD-ROM, like those for MS-DOS or Hardware, contain no KnowledgeBase articles at all. And some of the KB collections, like "MS KnowledgeBase - OS/2", have had all their metadata stripped, including the original KB article number, which is a bit disappointing. But what's most disappointing of all is that Microsoft clearly doesn't care about this information. Years ago, someone there probably made the calculated decision that there was no financial incentive for the company to maintain the information any longer, despite the substantial investment they made to produce it in the first place, and since they're not in the "archiving" business, it might as well be removed. The problem is that no one else is able to access it either, even people who are in the "archiving" business. And you can't exactly walk into Microsoft and file a "records request", like you can at the National Archives or a public library. It also seems rather presumptuous for Microsoft to determine, based largely on its own self-interest, what the "shelf life" of this information should be. It's certainly their right, but it's not a right that should be encouraged. In an effort to unlock this data from an ancient CD-ROM that few people still have, let alone know what it contains, I've taken all the articles from the "MS KnowledgeBase - C" section and created a small KB Article Archive. We can now finally provide links to both of the KB articles referenced above: * Q12230: IRQ Settings and Mouse Installation * Q46369: InPort/Bus Mouse Comparison and Overview so that anyone else looking for KB articles from that era might have an easier time, but more importantly, so that the information is preserved in a meaningful and useful way. Finally, a shout-out to neozeed, who came up with a clever brute-force way of extracting all the raw text from the Programmer's Library CD-ROM. It was this raw text that I used to create my small KB archive. The only downside of that method of extraction is that all "hyperlinking" information was lost. Jeff Parsons Oct 13, 2017 PCjs Explorer * Expand All * Collapse All * Surprise Me * Hardware + Arcade o Space Invaders + DEC o PDP-10 # KA10 @ PDP-10 KA10 Test @ Documentation # KL10 @ Documentation # Documentation o PDP-11 # PDP-11/20 @ PDP-11/20 with BASIC @ PDP-11/20 with Bootstrap Loader @ PDP-11/20 with Boot Monitor @ PDP-11/20 with Front Panel # PDP-11/45 @ PDP-11/45 with 256Kb @ PDP-11/45 with VT100 # PDP-11/70 @ PDP-11/70 with 4Mb @ PDP-11/70 "Server Array" @ PDP-11/70 with Boot Monitor @ PDP-11/70 with Front Panel @ PDP-11/70 with CPU Exerciser @ PDP-11/70 with RSTS/E @ PDP-11/70 with RT-11 @ PDP-11/70 with XXDP+ @ PDP-11/70 with VT100 @ Documentation # Documentation o VT100 # VT100 Terminal # Dual VT100 Terminals # VT100 connected to IBM PC AT o ROMs # Assorted DEC ROMs + IBM PC o AT&T # AT&T 6300 @ Color Graphics @ Documentation o CDP # CDP MPC 1600 @ Color Graphics @ Documentation o COMPAQ # COMPAQ Portable @ Monochrome Graphics @ Documentation # DeskPro 286 @ Documentation # DeskPro 386 @ Documentation o IBM # PCJr (Model 4860) @ Documentation # PC (Model 5150) @ Color Graphics @ Monochrome Display @ Dual Displays @ VGA Display @ Documentation # PC XT (Model 5160) @ Color Graphics @ Enhanced Graphics @ Monochrome Display @ Documentation # PC AT (Model 5170) @ Color Graphics @ VGA Display with CD-ROM @ Documentation # PC Hard Drives @ Documentation # PC Video Adapters @ Documentation o Zenith # Zenith Z-150 @ Color Graphics @ Documentation + Intel 8080 o 8080 Exerciser + LED Simulations o Game of Life o Lite-Brite o Text Scroller + Ohio Scientific o Challenger 1P o Challenger 1P "Array" o Challenger 1P with Debugger + Texas Instruments o TI-42 Calculator # TI-42 # TI-42 with Diagnostics o TI-55 Calculator # TI-55 # TI-57 with Diagnostics o TI-57 Calculator # TI-57 # TI-57 with Diagnostics # TI-57 with Revised ROM * Software + DEC o PDP-10 # Diagnostics @ KA10 - DAKAA - DAKAB - DAKAC - DAKAD - DAKAE - DAKAF - DAKAG - DAKAH - DAKAI - DAKAJ - DAKAK - DAKAL - DAKAM - DAKBA # Languages @ MACRO-10 # Tests @ PDP-10 Mini-Assembler Tests @ PDP-10 Opcode Tests o PDP-11 # Disks @ RK03 - RT-11 4.0 # Tapes @ BASIC - BASIC (Single User) @ Diagnostics - D0AA - D0BA - D0CA - D0DA - D0EA - D0FA - D0GA - D0HA - D0IA - D0JA - D0KA - D0LA - D0MA - D0NA - D0NB - D0NC - D0OA - DEQKC + IBM PC o Applications # IBM @ BASIC - Programs from PC DOS 1.00 - DONKEY.BAS from PC DOS 1.00 @ Multiplan - IBM Multiplan 1.00 # Lotus @ 1-2-3 - 1-2-3 1A - 1-2-3 1A* # Microsoft @ Microsoft Chart - Microsoft Chart 2.02 @ Microsoft Multiplan - Microsoft Multiplan 1.06 - Microsoft Multiplan 2.00 - Microsoft Multiplan 2.01 @ Microsoft Word - Microsoft Word 1.10 - Microsoft Word 1.15 - Microsoft Word 3.00 - Microsoft Word 3.10 - Microsoft Word 5.00 @ Word for Windows - Word for Windows 2.0c # Other @ dBASE II - dBASE II 2.4 @ dBASE III - dBASE III 1.0 @ SuperCalc - SuperCalc 1.10 @ SuperCalc2 - SuperCalc2 1.00 @ SuperCalc3 - SuperCalc3 1.00 @ ThinkTank - ThinkTank (1987) @ VisiCalc - VisiCalc (1981) @ WordStar - Overview - WordStar 3.20 - WordStar 3.24 - WordStar 3.30 - WordStar 4.00 - WordStar for PCjr o Demos # IBM @ Exploring the IBM PC - Exploring the IBM PC (CGA) - Exploring the IBM PC (MDA) - Exploring the IBM PC AT 1.00 - Exploring the IBM PC AT 2.00 @ IBM EGA Demos and Utilities - Fantasy Land o Devices # Mouse @ Microsoft Mouse - MS Mouse 2.00 - MS Mouse 2.50 - MS Mouse 4.00 - MS Mouse 5.00 - MS Mouse 6.xx # ROM @ IBM PC ROMs - IBM PC BIOS Sources - IBM PC XT BIOS Sources - IBM PC AT BIOS Sources o Diagnostics # COMPAQ @ COMPAQ Diagnostics 5.02 @ COMPAQ Diagnostics 5.08 @ COMPAQ Diagnostics 6.12 @ COMPAQ DeskPro 386 (1986) @ COMPAQ User Programs (1987) @ COMPAQ User Programs (1989) # IBM Diagnostics @ IBM PC - IBM PC Diagnostics 1.00 - IBM PC Diagnostics 1.02 - IBM PC Diagnostics 1.02 (Adv) - IBM PC Diagnostics 2.02 - IBM PC Diagnostics 2.05 - IBM PC Diagnostics 2.05 (Adv) - IBM PC Diagnostics 2.07 - IBM PC Diagnostics 2.20 (Adv) @ IBM PC AT - IBM PC AT Diagnostics 1.01 (Adv) - IBM PC AT Diagnostics 1.02 - IBM PC AT Diagnostics 2.00 - IBM PC AT Diagnostics 2.07 (Adv) o Games # IBM @ 101 Monochrome Mazes (1983) # Id Software @ Commander Keen (1991) @ Wolfenstein 3D (1993) # Infocom @ The Hitchhiker's Guide to the Galaxy @ Leather Goddesses of Phobos @ Planetfall @ Zork I: The Great Underground Empire @ Zork II: The Wizard of Frobozz @ Zork III: The Dungeon Master # Microsoft @ Microsoft Adventure @ Flight Simulator (1984) # Other @ Adventures in Math (1983) @ Castle Adventure (1985) @ Dune II (1992) @ Executive Suite (1982) @ Invaders Boot Sector (2019) @ King's Quest (1985) @ King's Quest (1987) @ Lemmings (1991) @ Moria (1992) @ The Oregon Trail (1990) @ Rogue (1985) @ Trump Castle (1988) @ Wizardry I (1984) o Languages # Borland @ Turbo Pascal - Borland Turbo Pascal 2.00B - Borland Turbo Pascal 3.00B - Borland Turbo Pascal 3.01A - Borland Turbo Pascal 3.02A - Borland Turbo Pascal 4.00 - Borland Turbo Pascal 5.00 - Borland Turbo Pascal 5.50 - Borland Turbo Pascal 6.00 # Digital Research @ Pascal/MT+ - Pascal/MT+ 3.11 # IBM @ APL - IBM APL 1.00 @ BASIC - BASIC Compiler = IBM BASIC Compiler 1.00 = IBM BASIC Compiler 2.00 @ COBOL - IBM COBOL 1.00 @ Macro Assembler - IBM Macro Assembler 1.00 - IBM Macro Assembler 2.00 @ Pascal - IBM Pascal Compiler 1.00 # Logitech @ Modula-2/86 - Modula-2/86 1.00 - Modula-2/86 1.10 # Microsoft @ BASIC - BASIC Compiler = MS BASIC Compiler 5.36 - QBasic = MS QBasic 1.10 - QuickBASIC = MS QuickBASIC 1.00 = MS QuickBASIC 2.00 = MS QuickBASIC 2.01 = MS QuickBASIC 3.00 = MS QuickBASIC 4.00 = MS QuickBASIC 4.50 - Visual Basic = MS Visual Basic 1.00 @ C Compiler - Microsoft C Compiler 1.03 - Microsoft C Compiler 1.04 - Microsoft C Compiler 2.03 - Microsoft C Compiler 3.00 - Microsoft C Compiler 4.00 - Microsoft C Compiler 5.00 - Microsoft C Compiler 5.10 - Microsoft C Compiler for OS/2 5.10 @ COBOL - MS COBOL 1.12 @ Macro Assembler - Macro Assembler 1.00-1981 - Macro Assembler 1.00 - Macro Assembler 1.06 - Macro Assembler 1.10 - Macro Assembler 1.12 - Macro Assembler 1.25 - Macro Assembler 2.04 - Macro Assembler 3.00 - Macro Assembler 3.01 - Macro Assembler 4.00 - Macro Assembler 5.00 - Macro Assembler 5.10 - Macro Assembler 5.10 (Feb 1988) - Macro Assembler 6.00 - Macro Assembler 6.11 @ Pascal - MS Pascal = MS Pascal 3.31 = MS Pascal 4.00 - MS QuickPascal = MS QuickPascal 1.00 # Other @ RatBas - RatBas (1982) o SDKs # OS/2 SDKs @ Microsoft - MS OS/2 SDK 1.02 # Windows SDKs @ Windows SDK 1.01 @ Windows SDK 1.03 @ Windows SDK 1.04 o Shareware # Books @ DOS Internals (1994) @ Graphics for the IBM PC @ Inside the IBM PC @ Unauthorized Windows 95 @ Undocumented DOS @ The Undocumented PC @ Undocumented Windows # Magazines @ PC Disk Magazine @ PC Magazine Diskettes @ PC Tech Journal Diskettes # Miscellaneous @ PC-SIG Library 8th Edition @ Small Computer Book Club @ Unprotect Assortment o Systems # CP/M-86 @ CP/M-86 1.00 @ CP/M-86 1.1B # DOS @ COMPAQ - COMPAQ MS-DOS 1.10 - COMPAQ MS-DOS 1.11 - COMPAQ MS-DOS 1.12 - COMPAQ MS-DOS 2.11 - COMPAQ MS-DOS 2.12 - COMPAQ MS-DOS 3.00 - COMPAQ MS-DOS 3.10 - COMPAQ MS-DOS 3.31 @ Digital Research - DR DOS 3.31 - DR DOS 3.32 - DR DOS 3.33 - DR DOS 3.34 - DR DOS 3.40 - DR DOS 3.41 - DR DOS 5.00 - DR DOS 6.00 @ IBM - PC DOS 0.90 - PC DOS 1.00 - PC DOS 1.10 - PC DOS 2.00 - PC DOS 2.10 - PC DOS 3.00 - PC DOS 3.10 - PC DOS 3.20 - PC DOS 3.30 - PC DOS 4.00 - PC DOS 4.01 - PC DOS 5.00 - PC DOS 5.02 - PC DOS 6.10 - PC DOS 6.30 - PC DOS 7.00 @ MS-DOS - MS-DOS 2.00 - MS-DOS 3.20 - MS-DOS 3.21 - MS-DOS 3.30 - MS-DOS 3.31 - MS-DOS 4.00 - MS-DOS 4.01 - MS-DOS 4.0M - MS-DOS 5.00 - MS-DOS 6.00 - MS-DOS 6.20 - MS-DOS 6.22 # DOS Extensions @ IBM - TopView = TopView 1.00 = TopView 1.01 = TopView 1.10 @ Microsoft - MS-DOS Manager = MS-DOS Manager 1.00 @ Quarterdeck - DESQview = DESQview 1.02 - QEMM-386 = QEMM-386 4.10 = QEMM-386 4.23 = QEMM-386 5.13 = QEMM-386 6.02 @ SoftLogic - Software Carousel = Software Carousel 2.0.3 - DoubleDOS = DoubleDOS 2.1F = DoubleDOS 2.1V - Disk Optimizer = Disk Optimizer 2.0.3 @ Other - Omniview 386 = Omniview 386 4.30 # OS/2 @ IBM OS/2 - IBM OS/2 1.0 - IBM OS/2 1.1 - IBM OS/2 1.2 - IBM OS/2 1.3 @ MS OS/2 - MS OS/2 1.0 @ OS/2 Prototype Disks - OS/2 CP-DOS (v7.68) - OS/2 SIZZLE (v7.68.18) - OS/2 FOOTBALL (v7.68.17) - OS/2 FOOTBALL (v4.41.00) - OS/2 1.0 Debugger (1988) # UNIX @ IBM - PC/IX = PC/IX 1.0 - XENIX = XENIX 1.0 = XENIX 2.0 @ Microport - AT&T UNIX System V-AT = AT&T UNIX System V-AT 2.3 @ MINIX - MINIX 1.1 @ QNX - QNX 1.1 - QNX 1.2 @ SCO - Xenix 8086 = Xenix 8086 2.1.3 - Xenix 286 = Xenix 286 2.1.3 = Xenix 286 2.2.1e = Xenix 286 2.2.3b = Xenix 286 2.3.2d - Xenix 386 = Xenix 386 2.2.3b = Xenix 386 2.3.2f = Xenix 386 2.3.4h # Windows @ Microsoft Windows 1.00 @ Microsoft Windows 1.01 @ Microsoft Windows 1.02 @ Microsoft Windows 1.03 @ Microsoft Windows 1.03a @ Microsoft Windows 1.03b @ Microsoft Windows 1.04 @ Microsoft Windows 2.03 @ Microsoft Windows/386 2.0x @ Microsoft Windows/386 2.10 @ Microsoft Windows 2.11 @ Microsoft Windows 3.00 @ Microsoft Windows 3.10 @ Windows for Workgroups 3.11 @ Windows 95 (Build 499) @ Windows 95 (RTM) 4.00.950 o Tests # PCx86 CPU Tests # PCx86 TestMonitor # VGA "Black Book" Tests o Utilities # Borland @ Sidekick - Sidekick 1.11C - Sidekick 1.56 @ SideKick Plus - SideKick Plus 1.00A # IBM @ IBM Professional Debug - IBM Professional Debug 1.00 # Microsoft @ Unfiled - MS Unfiled Utilities # Norton Utilities @ Norton Utilities 2.00 @ Norton Utilities 2.01 @ Norton Utilities 3.00 @ Norton Utilities 3.10 @ Norton Utilities 4.00 @ Norton Utilities 4.00 (Adv) @ Norton Utilities 4.50 (Adv) @ Norton Utilities 5.00 @ Norton Utilities 6.01 # Other @ Enhanced DEBUG - Enhanced DEBUG 1.32b @ FlickerFree - FlickerFree 1.0 @ OBJASM - OBJASM 2.0 @ PC Tools - PC Tools 1.03 - PC Tools 4.30 @ PFM (Paul's File Manager) - PFM 3.14 @ Spacemaker - Spacemaker 1.06 @ UNP - UNP 4.11 + OSI C1P o BASIC Programs # OSI @ BASIC MATH @ CHECKING @ COUNTER @ POKER @ PRESIDENTS @ STAR WARS @ TRIG TUTOR # Other @ SEAWOLFE @ SPACEWAR @ STAR TREK @ TANK FOR TWO # PCjs @ CHECKERS @ HANGWOMAN @ LIFE @ OTHELLO @ SOFORECAST @ TUBELIST o 6502 Programs # PCjs @ 6502 Assembler (8K) @ BASIC Extensions @ LIFE # Processor Tests @ BCD Tests @ Overflow Tests + PCjs o Software Archive * Documents + Books o Programming o Microsoft Programmer's Library + Datasheets o Intel o Motorola + Magazines o BYTE o DosGetNews() o Microsoft Languages o Microsoft Systems Journal o PC Disk Magazine o PC Tech Journal + Manuals o DEC o IBM o Intel o Microsoft + Papers o Research # Electronic Computer Project # Tom Estelita + Photos o Lite-Brite + PCjs o Library o Document Archive o Programming Notes pcjs.org (c) 2012-2021 Jeff Parsons PCjs is released under an MIT License