“Hello Squidboy,” said the virtual machine, peering at the trashed geometry that had been the lad’s body. “Wanta play? Hello Squidboy. Wanta play?”
“Kwirkey Halt,” said Russ, and Squidboy and the Dexter-fragments stopped moving. Russ turned to me, a savage gleam in his eye. “What do you bet it’s your fault?”
“My code was fully tested for the Veep,” I spluttered. “Keep in mind that the Adze is a different machine. And of course it could be your port that’s causing the problem.”
“You wish,” said Russ, then spoke again to the Kwirkey operating system that was running this simulation. “Kwirkey Debug!”
A ray-traced retrocurved chrome figure appeared in the cyberspace of the kitchen.
“I am Kwirkey Debug. I am ready.”
Rather than being the tuxedo of a living user, this was a so-called daemon, a construct projected by autonomous software. In cyberspace, daemons had taken the place of menus and command-line interpreters. The GoMotion ants were daemons, too, though daemons of a much different order.
“Hello Kwirkey Debug,” said Russ. “I’m Russ and this is Jerzy. We want to set a breakpoint.”
“Which kind of breakpoint? At address, changed memory global, expression true, or hardware interrupt?” inquired the daemon. S/he spoke in a cool androgynous tone. Some goofing hacker had set the daemon’s tux to morph-wander slowly about in a parameter space that let her/im vary between male and female and between fat and thin. As we watched, the daemon changed from a fat man to a muscular woman to a skinny man-but all the while s/he was made of rippling, reflective chrome. Hackers were suckers for ray-traced chrome, also it was computationally cheap thanks to the new quaternion-based Mori-Kuzin hack, which had been the exclusive property of Unisys for about a week until a phreak called Phineas Phage had broadcast the source code all over cyberspace.
“Break when the following expression is true,” said Russ. “ Squidboy’s pincer intersects Dexter’s chest.”
“Breakpoint is set,” said Kwirkey Debug.
“Reset and run,” said Russ.
The kitchen flickered as Kwirkey Debug reinitialized it. Now Squidboy was in his nest, and Dexter was coming in again. Kwirkey Debug stood off in a corner, staring at Dexter’s chest.
Dexter Christensen glanced up at us, moving his head like a very old man.
“Wow! Are you startin‘ up the robot?” slurred Dexter. His voice was deep and grainy. The code ran substantially slower with the breakpoint on, so that Kwirkey Debug could be sure not to miss the exact instant when Squidboy hit Dexter.
“Hello Squidboy,” groaned Squidboy. He sounded like the cartoon voice of a giant octopus in an underwater treasure cave.
“Hi, Mr. Robot,” oozed Dexter. “Do you wanta play?”
“Wanta play?” mocked sepulchral Squidboy.
“Let’s go in the living room,” drooled Dexter and reached out for Squidboy’s pincer. Moving at a speed that was fast even under slo-mo, Squidboy swung his left arm forward in a hard, flat arc that…
“Breakpoint,” said Kwirkey Debug. “Squidboy’s pincer intersects Dexter’s chest.”
Squidboy stood frozen in place with the tip of his left-hand manipulator poised daintily against Dexter.
“Show us a chart of Squidboy’s attribute variables,” said Russ.
Kwirkey Debug gestured with two hands and a small chart sproinged into existence. On the left of the chart were the names I’d assigned to Squidboy’s variables, and on the right were the variables’ numeric values. We scrolled the chart up and down, looking things over.
“How about that variable there called stroke_persist,” said Russ presently. “It’s set to 4,294,967,289.” He paused gloatingly. “You jack-off.”
“Oh hell.” Stroke_persist was supposed to be a small integer like three or minus eleven or something. It measured how hard Squidboy pushed against things. With a stroke_persist value of four billion, Squidboy’s normal motions would become amplified so much that he must perforce slash into those around him. How had stroke_persist gotten to be four billion?
“Kwirkey Debug,” I said. “Please set a breakpoint for the following condition: Squidboy’s stroke_persist is larger than four billion. Then reset and run.”
“Yes,” said Kwirkey Debug.
On the third run, the breakpoint tripped as Dexter reached for Squidboy’s left hand.
“Show us the source code with the instruction pointer,” I said.
Another chart appeared, and*bingo* there it was, our breakpoint had kicked in right after an instruction that set stroke_persist equal to -7. This is what it was supposed to do; the 7 meant move softly, and the minus meant you’re using your left arm. But Russ’s Kwirkey translator had decided that stroke_persist was always to be a positive number, and if you view a thirty-two-bit representation of -7 as a positive number, you think it’s 4,294,967,289.
I started trying to explain this to Russ, but instead of letting me finish he rudely yelled that using minus for left-hand had been a stupid trick in the first place, and that now it was worse than stupid, it was unusable since Squidboy had three, hands. Funny I hadn’t thought of that. I recovered by pointing out that Russ had no business assuming that all of Squidboy’s state variables were positive integers. Russ countered that he needed to assume all numbers to be positive so that the ROBOT. LIB calls could be made at maximum speed, thus guaranteeing that “his” code would run faster than the “kludgey” code for the Veep. He said that if I wanted to keep track of left, right, and middle, I should use a separate flag variable instead of trying to do it with negative numbers. I began to respond that…
“Let’s go ahead and fix the first bug and see what happens next,” said Sun Tam quietly. Russ and I had been so absorbed in the Sphex’s cyberspace, and in our quarreling, that neither of us had noticed when Sun sat down next to us.
“Edit code,” said Russ to Kwirkey Debug, and the silver figure produced what looked like a large pink rubber eraser. “I ONLY MAKE BIG MISTEAKS” was printed on the eraser-some West West hacker’s idea of a joke.
“This is too stupid,” I said. “I’ll fix it on my own machine. Let’s meet back here in an hour.” I went back in the pit and squeezed all the negative numbers out of my program. It was, as Russ had suggested, a matter of using a two-bit hand_flag variable to do what the minuses had done. I used hand_flag 0 for LEFT, 1 for MIDDLE, and 2 for RIGHT; which meant that binary 00, 01, and 10 stood for, respectively, the pincer, the tentacle, and the humanoid hand. First the new code wouldn’t compile (in my excitement I’d left out a “;”), then it compiled but crashed (I’d forgotten to rebuild one of the submodules with the new header file), and then*siiigh* my quick fix was done. I rushed back to the Sphex. Russ and Sun Tam were waiting.
Russ downloaded the new code and said, “Run.”
This time Squidboy and Dexter made it into the living room.
“Hi there,” said Perky Pat brightly. She was sitting in an armchair watching television. Walt was passed-out drunk on the couch, and Baby Scooter was lying on the floor gumming a filthy teething ring. The screen of the virtual TV against the wall was painted with changing real-time network television. I could clearly hear the TV voices through the Sphex speaker. Just now a newscaster was saying that a judge had denied Stu’s pretrial motion to have my venue moved out of Silicon Valley. “So Jerzy Rugby’s state trial on charges of criminal trespass, computer intrusion, and extreme cruelty to animals is still scheduled to begin the week after next in San Jose,” the newscaster said. “Thursday, May 28. This network will be providing special coverage of that trial.”
I was so involved in listening to the TV that I wasn’t watching when Squidboy veered too far around Baby Scooter, lost his balance, and fell onto Walt’s neck. I looked just in time to see Walt’s head come off and fall onto the floor. It made a nasty thump.
“Oh, no way!” I cried. “Squidboy didn’t hit him that hard.”
“Let’s just fix it,” said Sun Tam. “Kwirkey Debug, reset and run to the point where Squidboy passes Baby Scooter.”
This time there was nothing grossly wrong with any of the values in Squidboy’s registers. We single-stepped the code forward, watching the numbers. The value of the direction_angle started doing something queer just before Squidboy fell over: it began oscillating irregularly between two, then four, then eight values, and then burst into what looked like totally random fluctuations.
“I recognize that behavior,” I said, talking quickly before Russ could start up with the insults. “That’s the