I had written this "Armchair Detective" story when IBM 386 PCs were around. I was inspired to write it after reading some Black Widower mystery stories by Issac Assimov. This story stars a group of programmers. In a sense, programmers are detectives too when tracking down a bug. That was the whole idea of the story. See if this story brings back the memories of the early days of the IBM PC and DOS.
Creative Commons License
This work is licensed under a Creative Commons License.

The Riddle of the IBM PC

Copyright (C) 1994, Sanjay Kanade
A computer mystery story to read online

Rick Harmon looked about the table. He appeared a bit worried and said, "You know, I'd have almost missed this meeting."

"Hmmm. Another of those after-office meetings with your manager?" asked Alan Tipton, toying with his mug of beer.

"What?" Said Roger Rosandich, breaking in, "Rick, you too have a manager who likes to call a meeting when the poor folks are just leaving to go home?"

"I guess, I'm lucky I'm not alone." Rick smiled faintly, "But, to tell you the truth, I really don't blame my boss. These days, the poor fellow is all worked up about the new Windows development tools. Every few months, a new tool pops up and he gets nervous whether we are using the right tool. First, we had Borland C++, in Windows 3.1 days, then came Visual C++, and then Visual Basic. Since then, many versions have appeared of MFC and OWL. As if that were not enough, there comes Delphi, and then C++ Builder. Tough job for a manager to decide which one to use! You should see my manager's face when these discussions creep in to our weekly meetings."

"Serves him right!" Alan chuckled as he poured himself another glass of beer, "When you are a manager, you should have strong opinions. If you don't, those nasty programmers working for you will take you for a ride!" He pointed a finger at Nancy Walters.

"Don't look at me, Alan!" Nancy put on a grim face, raising her hand. Then, she smiled mischievously, "Folks, someone got promoted as manager too soon." She concluded in her singing tone.

Alan looked at Nancy disdainfully. Then, he looked away at others with a crooked smile, "I don't know why you guys hate managers. Give me one good reason!"

He intended to continue with this topic, but Roger interrupted him, "Shut up, Alan, and listen," Roger looked about the table at others, "Anyone got a call from Jeff Taylor? Why is he late?"

Six of them were gathered around a large table at the back end of Uno's, the restaurant famous for its deep dish pizzas. Julie Strauss was wondering whether this meeting was going to be as interesting as the last meeting they had at Uno's. This was a monthly dinner of the Armchair Bugshooter's Club or "ABC." The term was coined by Julie, who was a systems programmer. In fact, all of them were programmers and enjoyed talking about the latest trends and information on the next programming tool around the corner, claiming to take over the world. Alan Tipton had become a manager recently, but continued to take interest in even the low level programming issues. It was he who had thought of this Friday early dinner meeting, to discuss some interesting, real-world programming anecdotes.

In the last few sessions, a new interesting format for this informal meeting had emerged. Each month, a member of the club would present an interesting story related to the art of program debugging or computer support, based on a real life experience of his or her own or that of a friend. The members of ABC were supposed to ask the right questions and then lead to a solution in a true armchair detective fashion. Hence, the name Armchair Bugshooter's Club. It was great fun and promised presence of all the members, month after month, no absentees so far. But today, it was Jeff Taylor's turn to tell a story, and he was late. If he failed to turn up, would someone else take his turn to present a programming riddle? Highly unlikely. It needed some preparation and effort. Julie was a bit sad as she sipped her iced tea.

"I suppose, our dear friend, Jeff Taylor, is busy in his basement looking for today's story." Alan said with twinkling eyes, "While we wait, permit me, may I toss in a small problem? An appetizer, perhaps?"

"Oh, no!", Nancy shook her head vigorously, "Not one of those stories from your IBM mainframe days."

Alan looked at her and hesitated. Then, he went on with a sheepish smile, "I'm sure you'll enjoy this one, Nancy."

"Do we have a choice?" Rick eyed him over his glass. "Shoot, Alan. I give you my permission. But, you must promise that you'll shut up as soon as Jeff comes in."

"No problem and no offence taken." Alan raised his glass, "This is a story of good, old IBM mainframe days. I was a customer support engineer back then. As it happened, the evening shift computer operator fell sick and left early. His manager was unable to start a program from the operator's console. The problem was with the password needed at the console. He was sure he had it right, but the program refused to run. The operator could not be contacted. So, he called me. I went promptly. Here's the interesting part. I sat down at the operator's console and started the program. When it came to the password prompt, I asked the manager and keyed in the password. And, voila! The system took it. The manager was simply baffled. He thought it was some trick and claimed that he had tried the password at least three times, and it didn't work."

Alan paused and looked around at the faces. They were mildly curious except for Andrew Shackelford who kept turning the pages of a magazine. Alan continued, "Well, I told the manager to try again. He again started the program and typed the password. As soon as he pressed return, the program gave an error message that the password was not valid."

Alan leaned back and said, "So guys, that's it. Tell me why the computer would accept a password from me and not from him."

"Is it some kind of joke?" Rick Harmon said sarcastically, "How can that be?"

Alan continued smiling, amused by their baffled looks. "I assure you there is a completely logical explanation here."

"I know." Nancy snorted, "Now, Alan will give some kind of stupid answer. Folks, just even don't attempt to fall in his trap."

"Alan, are you serious?" Roger asked, "Is this a true story? I wonder whether you have told us everything."

"Yes," Alan Tipton could hardly suppress his mirth, "When I tell you, you'll feel as if you knew it already. Come on. You all are supposed to ask me the right questions to lead you to a solution. Isn't that what we agreed on?"

Julie asked, "Were you able to see the password on the screen as it was typed?"

"No, only a star appeared for each key," Alan answered promptly, "standard behavior for passwords."

"Hmmm," Rick asked, "was it a password in mixed case letters?"

"No, it was all caps in those days." Alan scratched his white beard, "Next thing you will ask, what was the password. Nothing to hide there. I can tell you. The password was "FOXY:19."

Roger Rosandich was thoughtful. "Did you try it one more time?"

"Good thinking, Roger," Alan exclaimed, "I was waiting for that question. You see, I did. I thought I'll let the manager clearly see that it wasn't a trick. So, I left him sitting at the table and I pressed the keys right there in front of his very nose, spelling out each key as I pressed it."

"And, it worked?" Roger asked.

"You will be surprised," Alan smiled, "This time, the password didn't work! Now, don't stare at me with that look of yours, Nancy."

Nancy looked furious. "Absurd. It doesn't make sense." She said.

Rick said, "Alan, you are not pulling our legs, are you? You sure do understand that stories related to hardware failures are a strict 'no, no' in this meeting. And this seems like an intermittent hardware problem to me."

At that moment, Jeff Taylor barged in. "Sorry, guys. I was caught up in the traffic on 101."

Nancy looked relieved, "Jeff, you came just in time to rid us of this joke that Alan calls a riddle." Everyone laughed.

"If what Alan says is true this is not one of his bad stories." Roger said, "Sounds interesting to me!"

"Hey, I trust you, Roger." Jeff pulled a chair, "If you folks haven't solved it yet, let me warm up by hearing it. That is, if you don't mind, Alan."

Alan repeated the story and Jeff scoffed at him in disbelief. Alan turned to Andrew Shackelford who had not spoken a word so far.

"Andrew," Alan addressed him, "they are saying, my story is absurd. Surely, you don't think so too, do you?"

Andrew Shackelford was the quiet member of the ABC. He was always busy reading one magazine or the other. He seemed disinterested in the proceedings of the club but when asked about it, always insisted that he enjoyed every minute of it. He somehow was not very expressive. A man of few words, as they said. Yet, he was the only one who had solved riddle after riddle in all of their previous meetings. And, he had a queer way of thinking too. On all the occasions, he claimed that he was not capable of asking the right questions all the time. In fact, he depended on the others to ask good questions. And then, all of a sudden, a story or an article he read somewhere would pop up in his mind to hint at the solution. Roger thought it a very peculiar way of thinking indeed. As always, Andrew didn't seem interested in what Alan was saying. He had hardly looked up from the magazine he was reading, except to reach for his glass of beer from time to time.

As Alan was addressing him, he looked up and adjusted his glasses, cleared his throat and mumbled, "But, yes, what you say is possible. I know of a similar story I read once,..." He looked up at the ceiling, "I don't remember when and where, but the story was related to spelling errors. A guy had a peculiar spelling problem. By looking at the written word, he often got confused whether its spelling was correct. He had to confirm the spelling by writing that word by hand. He trusted in what his hand wrote but couldn't trust his visual memory for the spelling. Sounds familiar?"

There was an uneasy silence. For once, Julie thought, they had come to expect too much of Andrew. He seemed to relate to stuff that didn't seem logically related to the current problem in hand.

Jeff asked, hesitatingly, "And you think this problem relates to that story? Do you think the manager had a spelling problem?"

"No," Andrew shook his head, "I never meant that. What was significant in Alan's story was the fact that the system accepted the password from him when he was sitting at the console and rejected the password when he was standing by the side of the table. That is what relates to my story." He blinked at others as if failing to see why they still didn't understand him.

Alan started smiling. "Well, guys, I can see that Andrew has got it. He has given you the nicest hint. Any takers?"

There was a minute's silence as everyone contemplated the facts of the problem. Then, Julie said, "I got it. The problem was that the key cap of a character on the keyboard got accidentally interchanged with some adjacent key. Perhaps, two keys fell off and whoever replaced them interchanged them by mistake."

"I see," exclaimed Roger, "when sitting, a person used to touch typing would not look at the keys and would press the correct key. But, when standing, using a single finger to type, he would press keys by looking for the keys. That's what happened to Alan. Obviously, the manager was not used to typing and was always using a single finger to type. Smart, Andrew! Now, I can see the relation to your story."

"Not bad, Alan" Nancy smiled to Alan in acknowledgement, "Not a bad story at all! Now, let's see what Jeff has in store for us."

Jeff looked at Andrew, "So, smart guy, you solved that one too. I bet, you won't be able to solve the problem that I'm going to tell next."

Andrew shrugged, "You overestimate my capability. As I have told you many times, for debugging problems in programs, you need to first collect all the symptoms. Sitting in front of a PC, it's a different game altogether. But, when a customer calls in for support, you need to collect as many symptoms as possible by asking the right questions. The same is true of our ABC stories. As much as I want to, I can't think of all the questions to ask. You people ask better questions than I do. It is only because I have read so much and have so much experience that I can relate the symptoms to other instances."

Andrew, started skimming through his magazine again. Without looking up, he said, "Go ahead, Jeff. We are all ears."

Jeff took a sip of his drink, and started speaking, "Long back, I developed a graphics game program for DOS machines. I gave it to my son who started using it on his PC without any problems. He also gave a copy to his friend. But, I was surprised to learn from him that the game didn't work on his friend's PC. The graphics were distorted and were pushed into a corner of the screen. Now, this really looked strange to me because I had taken considerable effort to put in the code to detect the graphics resolution and calculate the graphics accordingly. I even took care to give an error if old systems like CGA or Hercules were reported. On my machine, I was using SVGA graphics, on my son's machine, it was VGA, on his friend's machine, it was also VGA. Well, I had to actually go and debug it on the problem machine. But, now that I come to think of it, I could have done better. I didn't collect all the symptoms as we do now. And, this problem is solvable by just collecting the symptoms. Can you find out what was wrong with the program?"

Rick thought for a while and asked, "It looks like some sort of uninitialized variable problem to me. Such problems have strange repercussions on different machines."

"Tell me one thing," Julie asked, "What was the minimum configuration that you intended to support?"

"Good question, Julie." Jeff was amused, "I had intended it to run on any IBM compatible PC, even an 8086, with EGA or better adapters. I didn't want to support Hercules and CGA as they were getting obsolete anyway."

"Did you test it on an 8086 machine?" Andrew asked, breaking in.

"Yes, I did, on an old 8086 PC with EGA adapter. And it worked!" Jeff replied promptly. He looked at Andrew and said, "Any ideas, Sherlock?"

"No, it's too early." Andrew said with disappointment, "There aren't enough clues yet. Come on guys, ask some really good questions."

Roger asked, "What was the make and configuration of the PC on which it didn't work?"

Jeff thought for a moment, as if recalling, and said, "It was a normal 386-SX machine with color VGA, 4 MB of RAM and had DOS 5.0 running."

"What was the configuration of the machine that you used for testing and compiling the program? And, what language and compiler did you use?" Rick asked.

"Well, I used Borland C++ 4.0 on my 486-DX33 (Cyrix) machine which had Windows 3.1 and DOS 6.0 installed. As I told you, mine was a Super VGA system." Jeff took another sip from his drink.

"And what was your son's machine?" Roger asked.

"It was a 386-DX with 4 MB of memory, running Windows 3.1 and DOS 6.0.", Jeff replied.

"I'm sure,it has something to do with DOS.", Roger said, "Wait, we didn't ask you, which DOS was installed on the old 8086 PC on which it worked?"

"It was DOS 3.1" Jeff chuckled.

"As if the things are not already muddled with all the DOS, Windows versions and the Microprocessors which were used." Alan declared disdainfully, "Jeff, you are a great one for muddling things up. As you did on that last project, what was its name, oh yes, Tornado."

"Look, who is pointing fingers." Jeff said, "But, if I remember correctly, I was the one who advised you against using that portable C++ GUI library which had the least common features for GUIs. That muddled things up. I bet, if we had used OWL, we would have saved heaps of time."

"Yeah," Alan retorted, "and later you would have to convert all the code from OWL1 to OWL2 and then to OWL 2.5. What an escape it would have been. No, I think we made the right decision to stick to that portable library. You will realize it when we start work on the next version of Windows."

"Enough of fighting, you too!" Nancy took charge, "We have a problem at hand. Any ideas?"

"I'm sure, it has something to do with the DOS configuration, but I can't remember what." Roger repeated.

"Ha!" Rick grinned, "I can always say that! Take my advise and start using a MAC. No more messing with all sorts of configuration problems. Real plug and play!"

"And, keep on paying the high prices when the world is going cheap? Ridiculous. My kid can't afford a MAC from his savings!" Roger said, "Anyway, let us not digress. Come on guys, keep the questions rolling."

Nobody said anything for a while. It was clear that they were not getting anywhere.

"I don't think this problem can be solved in an Armchair. One needs to get down there and debug it out." Nancy said.

"That's what I had to do." Jeff shrugged, "Unless, of course, if Andrew gets a brainwave on this one." He turned to Andrew, "Andrew, I suppose you already know that there is enough data now for you to chew on."

Andrew looked up from his magazine, adjusted his specs and said, "Why has it always to be me? There are brighter minds here who have asked good questions. Think a little harder and the problem is clear."

"You mean, you already know what was wrong?" Roger looked at him incredulously.

"Ah, yes." Andrew smiled, "I seem to remember an article on compilers that changes my perspective and everything is clear now." He continued after a pause, "You see, the main point of this article was that you should not change the default switches or options in a compiler unless you know them thoroughly."

"I don't think I want to spend more time thinking about this. I never seem to get it." Nancy said, "Andrew, please give some more hints."

"Wait a minute!" Alan interrupted, "Now that the show seems to be getting over, let's order our pizzas so that they're ready by the time we finish. I am getting hungry."

He called the waiter and the pizzas were ordered along with more drinks. Everyone was silent for a minute or two as they watched the beer glasses refilled.

Andrew looked at Nancy and said, "Come on Nancy. Don't give up so easily. Try to recall all your knowledge which you amassed working with PCs and DOS and Windows and Graphics adapters and the C compiler switches and options. Let me give you one more hint--since the graphics were pushed to a corner of the screen that means that the computer was failing to perform its basic function, that of calculation. How can that be?"

Julie was amused. She thinked aloud, "Let me repeat what I am thinking. How could a compiler switch affect the computations of the computer? Ideas, anyone?"

Roger had a feeling that Julie was almost there but somehow couldn't pinpoint the final clue. But, it didn't take long. Julie's face lit up.

"I got it, Andrew." She exclaimed, "This problem is related to the math-coprocessor, isn't it?"

"Bravo, Julie!"Andrew was jubilant, "You see the relation? We seem to think alike."

"But, I still needed the hint, didn't I? Yes, that article seems to fit this problem space very well. How come you remembered that article so conveniently?" Julie demanded.

"I, myself, don't know."Andrew said, "It just popped up in my mind. I keep reading so many things that it somehow keeps cooking and is stored somewhere. Frankly, I don't know. I suppose, if you read as much stuff as I do then you will get such hyperlinks automatically."

"Wait a minute, you two!" Alan asked "what is this deal about the math-coprocessor?"

Then, he realized it himself. "You mean, the machine that didn't work had no math-coprocessor because it was an SX? And, I suppose, the old 8086 machine worked because it had a math-coprocessor."

Jeff nodded.

"But, weren't our programs supposed to use a floating-point emulation library if the math-coprocessor was absent?" Asked Roger.

"Yes, but there was a compilation switch in those days that was ON by default." Andrew explained, "The mistake that Jeff might have made was to switch off this option in the compiler IDE. This made the program to depend only on the math-coprocessor. Hence, its graphics calculations screwed up on the 386-SX machine that didn't have the capability for floating point calculations."

"I'm glad they had soon done away with that SX series." Jeff said, "Righto, Andrew. You have done it once again. Kudos."

"Well, I admit, I really enjoyed this one." Rick said, "Keep it going fellas. Whose turn to bring a riddle in the next Friday meeting? Roger, it's yours. And, remember, please be here at 8 sharp next time. We can't afford to waste time every time."

Andrew collected his pile of magazines and got up to leave with the others. He kept thinking--if he could really ask the right questions like they all do, his software debugging life will improve. Perhaps, he should try it next time. He had discovered his uncanny ability to relate to magazine articles only recently, in the ABC meetings!


THE END

Other related links

My list of Armchair Detective books

Open Directory -- Humor links on programming, C and C++

Sherlockian.Net -- Everything the Web offers about Sherlock Holmes, the legendary armchair detective.

Free Cyber-Books -- Directory of Free On-line Novels and Free Online Cyber-Books by Pioneering Internet Authors.

PC-Sherlock -- A game of Logic and Deduction

Computer Humor
Contact