Hot answers tagged

500 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

This is because of a flaw in the way Windows 95 generates events, and the fact that many applications are event driven. Windows 95 applications often use asynchronous I/O, that is they ask for some ...
user avatar
  • 14k
230 votes
Accepted

Why does trying to break into the NT 3.1 kernel reboot my 486DX4 machine?

Short explation The Windows NT 3.1 kernel is incompatible with enhanced 486 processors. Specifically, it is incompatible with 486 processors providing the CPUID instructions. Kernel debugging works ...
user avatar
195 votes
Accepted

Why does the infamous "ENGAGERIDLEYMOTHERFUCKER" Metroid password break NES emulators?

Let's take a look at the code! A few seconds of Googling led me to a high-quality annotated disassembly by Kent Hansen and Nick Mikstas: https://www.metroid-database.com/source-code/ Whenever the user ...
user avatar
  • 5,224
104 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

Yes, it's a real effect resulting in causing a measurable speed up and can be reproduced at will: Try opening a large file with Notepad on a contemporary machine. The window must not be full screen. ...
user avatar
  • 174k
86 votes
Accepted

What made Windows Me so crash-prone?

I am unsure about what made it so crash prone To start with, it wasn't. Windows ME was not much different from 98SE and on its own as stable as its predecessor. The only plausible thing I could ...
user avatar
  • 174k
63 votes

Why does Windows 1.01 crash at the splash screen?

This is a botched version check error message. Windows 1.x was designed to run under MS-DOS 2.0, 3.0 and 3.10; to ensure it only runs under one of these, it performs a version test on its host DOS. ...
user avatar
  • 17.2k
57 votes
Accepted

Why does the kill-screen glitch occur in Pac-man?

There are only seven fruit in Pac-man. The way the game calculates the number of fruit to draw is as follows: LD A,(#4E13): Load the level number (at memory address 0x4E13) into A. INC A: Increment A....
user avatar
  • 17.6k
53 votes

Was memory corruption a common problem in large programs written in assembly language?

Coding in assembly is brutal. Rogue pointers Assembly languages rely even more on pointers (through address registers) so you can't even rely on the compiler or static analyzing tools to warn you ...
user avatar
50 votes

In the classic "Windows 98 crashes live on CNN" video, why does the BSOD appear so oddly?

VGA graphics and text modes have different scan rates. The Windows desktop runs in some graphics mode (looks like 640x480, likely 60 Hz) while the BSoD is in text mode (720x400 at 70 Hz). The adapter ...
user avatar
  • 2,905
43 votes

How did anti-Y2K-bug boards work?

From a CNN article I found about one such card: Most pre-1997 PCs had real-time clock chips ticking off six-digit dates (mm-dd-yy) translated by the BIOS into eight-digit dates indicating the proper ...
user avatar
  • 17.2k
41 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

It wasn't just Windows 95, but Windows 3.x as well, even though they work very differently. Other answers talk about pre-emptive multitasking, so let's first clarify this: Window 3.x was using ...
user avatar
  • 3,592
41 votes

How can I play QBasic Nibbles on a modern machine?

The problem is simple. At initialisation, Nibbles measures the time it takes to perform 1000 empty iterations of a FOR loop with a DOUBLE counter in order to determine how many such iterations are ...
user avatar
  • 17.2k
37 votes

How can I play QBasic Nibbles on a modern machine?

DOSBox, with the default CPU speed of 3000 cycles on this Linux box, runs nibbles.bas without problems.
user avatar
  • 17.2k
34 votes

Why does the infamous "ENGAGERIDLEYMOTHERFUCKER" Metroid password break NES emulators?

Fundamentally these 'passwords' aren't really passwords as such, but map back to a string of bits that control the state of the game - so it's more of a string representation of the current state of ...
user avatar
  • 441
26 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

The reason is because of how WM_TIMER is limited to 15.6ms intervals by default. If you call SetTimer() with a 1ms interval it will still be called in 15.6ms intervals. WM_TIMER drives a lot of stuff ...
user avatar
  • 269
25 votes

Was memory corruption a common problem in large programs written in assembly language?

I spent most of my career writing assembler, solo, small teams and large teams (Cray, SGI, Sun, Oracle). I worked on embedded systems, OS, VMs, and bootstrap loaders. Memory corruption was seldom if ...
user avatar
25 votes
Accepted

Why can MS-DOS not read partitions starting at logical sector 0?

This is a consequence of a buggy overflow check. Internally, MS-DOS uses logical block addressing to access file systems. Since version 4.0, MS-DOS uses 32 bits for sector addresses in order to ...
user avatar
  • 17.2k
24 votes

Why did Pokémon Red have so many overflow bugs?

Overflow doesn't mean what you think. That flag exposes the internal ALU carry from bit 6 -> bit 7. It's needed when you are handling the most significant byte of a 2-complement number, because you ...
user avatar
  • 2,078
24 votes

Why did Pokémon Red have so many overflow bugs?

I cannot speak about Pokémon in particular, but as a programmer for ~30 years, I'll answer thus: either laziness, incorrect assumption, or surprise. Laziness After an operation that overflows, you ...
user avatar
  • 1,337
21 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

Raymond Chen from Microsoft has a great answer on his blog: One danger of the MsgWaitForMultipleObjects function is calling it when there are already messages waiting to be processed, because ...
user avatar
21 votes
Accepted

How did the C64 lockup bug and its workarounds work?

It’s good ol’ buffer overflow. I diagnosed this in VICE. It turns out that supercat’s hunch that this is caused by clobbering a register of the CIA chip is mostly correct (they only got the register ...
user avatar
  • 17.2k
19 votes

Was memory corruption a common problem in large programs written in assembly language?

Simple idiotic errors abound in assembly, no matter how careful you are. It turns out that even stupid compilers for poorly-defined high level languages (like C) constrain a huge range of possible ...
user avatar
  • 10k
17 votes

Why did moving the mouse cursor cause Windows 95 to run more quickly?

Arguably, this is a common bug in early software based on an event-processing loop rather than a Windows bug: if some DD-paths of the loop only process a single event, then every time when two events ...
user avatar
16 votes
Accepted

Intel 386 multiply bug

Software can identify those early steppings on the 386 by checking whether the XBTS and/or IBTS instruction can be executed, since these instructions were dropped in later chip revisions. Software ...
user avatar
  • 28.4k
14 votes

Was memory corruption a common problem in large programs written in assembly language?

I wrote the original garbage collector for MDL, a Lisp like language, back in 1971-72. It was quite a challenge for me back then. It was written in MIDAS, an assembler for the PDP-10 running ITS. ...
user avatar
  • 4,510
14 votes
Accepted

What is the CoCo "Head Banger bug" and what is the "fix"?

I posted this question because I had those thoughts, and then spent ages going through multiple dead ends until I finally found it (my Google-fu is on the fritz). So that I don't have to go through ...
user avatar
  • 1,337
14 votes

Why did Pokémon Red have so many overflow bugs?

I think your premise is wrong. Firstly "overflow" in most cases doesn't mean pure arithmetic overflow, it means overflow of some other limit, checking said limits would require more than a single ...
user avatar
  • 1,939
14 votes
Accepted

Is this a bug or an allowed Pascal behavior?

The ISO 7185 Pascal standard, section 6.4.3.5 "File-types", says (my emphasis): There shall be a file-type that is denoted by the required structured-type-identifier text. The structure of ...
user avatar
  • 21.9k
12 votes
Accepted

Was there a bug in Wirth's original Pascal compiler?

If the compilers you have were based on the P-series, then I believe that there was indeed a bug. In the P-series compilers after P2, the destination of an assignment is determined by a routine named ...
user avatar
  • 3,357
10 votes
Accepted

SYSENTER/SYSEXIT broken on Pentium Pro and Pentium II?

In the Pentium® II Processor Specification Update Release Date: October 1998 errata for the Intel documentation, the entry for A62 states: Plans - Errata NoFix - SYSENTER/SYSEXIT instructions can ...
user avatar
  • 2,286

Only top scored, non community-wiki answers of a minimum length are eligible