Изменить стиль страницы

Klicks closed his eyes and tilted his head slightly, listening intently. "Let’s see … three-to-the-thirteenth-power cycles per…"

"Cycles per second?"

"No. Shit! Cycles per unit of Martian time-keeping."

"And how long is one of those?"

"It’s… uh, well, it’s not long."

"Great." The Sternberger shook under another impact. Triceratopses seemed to be using their horns to perforate a hole in one side of the ship. They were making damn good progress, too.

"Well, can’t you program the radio to try a range of frequencies?" asked Klicks.

I looked at the controls. "Not directly. But I might be able to hook the radio up to my palmtop." There was a small patchcord bus running vertically along one side of the radio console. "I’d need the right cable, though."

Klicks picked up the electronic camera. "What about this one?" he said, unplugging the fiber-optic serial cable I’d used to connect it to my palmtop earlier.

"Well, that’s the right type of cable, yes, but it’s the wrong gender. The radio expects a female plug; that one has male connectors at both ends."

"I think I used a gender-changer when I hooked up my spectroscopes," Klicks said. He stepped over to the compact lab and started rummaging around. "Here it is." Klicks handed the little doodad to me, and we completed the connection between the radio and my palmtop computer. "Now can you send the signal?"

"Yes, but only in one frequency at a time, and — damn it. It would take all afternoon to send that binary sequence in even a small sampling of possible radio frequencies." I shook my head, discouraged. It had sounded like such a good idea. "Besides, we don’t even know how long each of the binary pulses should be."

"One time-keeping unit each." Klicks paused, realizing what he’d just said. "That means if we get the right number for the frequency, we’ll automatically have the right length for the pulses." He paused once more, straining to hear that inner voice again. "And don’t bother trying to modulate the bits into the carrier wave. Just send them directly by interrupting the transmission for the zeros."

"Okay." I wished my nose would stop hurting. "I’ll write a little program to try different variables for the length of the time-keeping unit." The cable wasn’t long enough to reach back to my crash couch, so I had to type standing up, my palmtop balanced on the fake woodgrain molding that surrounded the radio console. "Any guess as to what value we should start with?"

Klicks closed his eyes. "Try … try four or five seconds. I don’t know, but that feels about right."

The radio console could only accept instructions in CURB, a standard communications-processor language. It’d been ages since I’d programmed anything in that. I hoped I remembered enough; we certainly didn’t have time for me to thumb through the on-line manual. My fingers danced, calling up a little calculator. I worked out three-to-the-thirteenth, the number of cycles per unit of Martian time Klicks had specified, then typed: Set Frequency = 1594323. Frequency = Frequency + …

Another ceratopsian head smashed against the hull, and this time it ruptured. I heard the roar of water rushing out of the tank beneath our feet. Bet that surprised them.

I decided to start a little lower than Klicks’s guess. Set Time-unit = 3.000 s. Goto Send…

The ship shook again as a triceratops skull smashed against it. "Can’t you go any faster, Brandy?"

"Do you want to do it, fathead?"

"Sorry." He backed away.

The horns had pierced the hull in enough places now to loosen a large piece of it. Through the glassteel, I could see the ceratopsian lumbering off.

I typed out the program’s final line, then issued the compile command. One, two, three error messages flashed on the screen, along with the corresponding line numbers. "Boolean expression expected." "Type mismatch." "Reserved word." Damn.

"What’s wrong?" said Klicks.

"Error messages. I made some mistakes."

"Did you want — ?"

"Shut up and let me fix them, please." I switched back to the program editor and hit the key to jump to the first error. Ah, the Boolean problem was simple enough: just a typo, "adn" instead of "and"; serves me right for running with AutoCorrect turned off. I fixed the misspelling.

Crrack!

I swung briefly around. A boneheaded pachycephalosaur was ramming its skull against the perforated hole in the wall. It was now painfully obvious what the Het we had found inside the dissected bonehead had been up to: evaluating the dinosaur’s potential as a living battering ram. How fortunate they’d been able to find an application for it so quickly. "They’re almost through," shouted Klicks.

I tapped out the command that jumped the cursor to the second error. Type mismatch. What the hell did that mean in this context? Oh, I see. I’d tried to do a mathematical operation on a text variable. Stupid.

The self-harmonizing notes from the trombone-crested parasaurolophus split the air, presumably calling out for the bonehead to charge again.

The cursor jumped to the third error. Reserved word? That meant the name I’d chosen for a variable — FREQUENCY — was one the program didn’t allow, because it used it exclusively for some other function. Okay, let’s try a different name. Call it SAVE_ASS, and hope that it does. I almost cracked the palmtop’s tiny case with the force with which I bashed out the compile command again.

I held my breath until the message flashed in front of my face: "Compilation successful. No errors."

"Got it!" I said.

"Terrific!" crowed Klicks. "Start transmitting." I highlighted the program file name and held my finger above the Enter key.

"Hit the damn key!" said Klicks.

"I…"

"What’s wrong?"

"You know what’s going to happen/’ I said. "I’m not sure I can…"

"If you don’t want to press it, I will."

I looked at him, held his gaze. "No," I said. "Failing to act is a decision in and of itself." I pressed down on the key. The program started running and the radio began transmitting.

Crrack! The pachycephalosaur skull with its yellow and blue display colors smashed the loosened section of hull inward. A circular piece of metal about a meter and a half across crashed to the floor with an ear-splitting clang. Before we could react, the bonehead was gone and a triceratops face was poking through from outside. Klicks cocked his rifle. This individual had only one eye horn. The other probably had snapped off while it was attacking our ship. In one continuous motion, Klicks flopped to his belly and fired up into the soft tissue on the underside of the beast’s throat. It teetered for a moment, then slumped back, dead. Lucky shot: he must have severed the thing’s spinal cord.

Through the jagged opening in the hull we could see two other ceratopsians shouldering the carcass aside. Klicks fired over and over, but these beasts weren’t about to repeat the same mistake. They kept their heads tipped down, the bony frills shielding them. In short order, the path was cleared and a platoon of troodons danced into view. They waited for Klicks to lower his rile to reload, then charged, a scaly green wave of teeth and claws surging forward -

Klicks tried to rise to his feet, but instead slammed into the deck. My stomach seemed to drop right through my boots. The closest of the troodons slapped onto their bellies, two of them being impaled on the ragged edge of the hole in the Sternberger wall, most of the rest tumbling backward out onto the mud flat. Feeling like I weighed a million kilos, I ran as though in slow motion toward the edges of the impromptu doorway, leaning out over the two troodon corpses. Overhead, the great quetzalcoatlus, gliding in a wide circle, crumpled like a paper toy and began plummeting to the earth. Nearby, the sauropod’s twelve meters of neck came crashing to the ground, hitting with a sound like a thunderclap. The tyrannosaurs staggered for a few moments, then, one by one, fell to their knees, their legbones snapping under their own massive weight. The earth vibrated and shook beneath our feet as gravity surged back to a full, normal g. Suddenly the mud flat began to ripple like the Tacoma Narrows bridge, great clouds of brown dust rising into the darkening sky.