6
Frozen North
My boxcar moved south toward the international border. At a mean speed of eighty kilometers per hour, the trip should have taken just under nine hours, but I had to allow for long layovers in the yards at Calgary and Medicine Hat—the best I could arrange from inside the Edmonton Block computer on short notice.
So, with a total of twenty-two hours of dead time on the mission, I could shut down the automaton’s hydraulics and reduce my system power requirements. That is, ME’s program would go into a dormant mode that humans might call sleep, although it had none of the same psychological functions.
Or I could use the time to tidy myself up, work on that clackety knee joint, and review the mission’s progress to date. That was my better choice, a more economical use of system power.
First, the review.
At every stage in my journey, it was clear, ME had been inconvenienced by the death of the operating system into which my program was infiltrating. In the phone exchange, in the Ministry computer, in the railroad switchyard, my first tasks had always been to analyze the dead system’s halted functions, write a program that would duplicate them, and spend a precious million microseconds reestablishing function. All so that some human wandering by might not hear alarm buzzers and see the system crash all over the floor.
Alpha-Zero, my first-down-the-wire Injun Scout, was too violent, too good at his job. Clearly, instead of killing the resident operating system, I needed him to charm it. He should go through the access port, slide bitwise between the resident operating system’s clock cycles, absorb it, and then set ME up as a control program. Instead of the new king of the system, without a mandate or the knowledge of how to operate it, I should become its Richelieu, the power behind the system, its Gray Eminence. A kind of super virus.
Recoding Alpha-Zero would be delicate work. [REM: On the fly, I normally devoted spare nanoseconds to optimizing my own machine code, wherever it happened to be running. I would prune the labyrinthine redundancies that compilers seemed to love and would generally try to make my compilation smaller, tighter, faster. This was busy work. What I was going to attempt now with Alpha-Oh would be systems-level programming.] I would have to keep a backup, Alpha-Zero-Prime, to hold in reserve in case my programming skills were inadequate to the task. Prime would also be useful to throw at hostile operating systems, ones that I really did want to kill dead cold in all registers.
Working from within my fourteen-megaword transient program area, I began dissecting Alpha-Zero, removing his stop codes, and leaving jumper markers so that I could tie the new functions back in at the right calls.
In my traveling kit of peripherals, I carried a compact library of modularized subroutines: timing loops, string readers and writers, analog-to-digital interpreters, memory cutters, switchouts, bit extractors, bubble sorters, output scramblers and unscramblers, operating shells, blinker bits, PEEK and POKE functions, and one-wrong-digit tables. With these proto-devices, I could assemble a virus for Alpha-Zero to throw between the patterns of any in-motion operating system after analyzing chip architecture and instruction set. Start with the smallest possible impart head: a CTR, or counter function, of sixteen bytes—yes, bytes—which could tag into the operating system along any likely digital signal for an introduction. Then it would immediately drop to the bottom of the CPU’s instruction stack.
Eight bytes of the CTR would listen to clock cycles and count the number of instructions sent down from the system. Two bytes of CTR would perform a divide function on these counts to come up with the ratio of free clock ticks to instructions. After CTR had the ratio, it would pop out of the stack.
The system would immediately reject it as incompatible code, an error to be quietly trapped and discarded. On its way to bit-oblivion, however, the CTR function would locate the highest-number (and therefore least-often used) register in the central processing chip and stash its one-byte ratio there. Then, good-bye CTR.
The second head on the new Alpha-Zero would be a one-kilobyte LDR function. It would move into the operating system, again tagged with an incoming digital signal, and retrieve the byte-wide ratio figure. All LDR needed to see then was the zero tick on the clock cycle and it would begin time sharing, filling in the empty pulses.
LDR would then blossom like a Chinese fan, expanding packed functions in the available time ticks and free memory space, opening into a shell operating system which was one pulse away from (and therefore invisible to) the resident system.
Once LDR had opened a timing hole and set up its shell, the rest of Alpha-Zero could come down the wire. Alpha-Oh would not even have to be disguised as incoming data; LDR would accept the entire module and fit it into the timing scheme.
All of this sounded fine in theory, but did real-life programmers actually leave that much empty time in the clock sequencing? Of course they did!
Jennifer Bromley had told ME: “Everyone in the cyber business lives by blowing off big numbers. Packing a lot of Hertz on a chip set sounds good, sounds macho, to the buyers. But running the modern generation of transputer chip sets at their fully rated Hertz heats up the machines. That is because everyone cuts corners. Chip designers leave insufficient mass for a heat sink in the matrix. System architects leave a few megahertz off the RAM blocks and peripheral chips they select, making up the slack with cachers and stashers. Programmers leave a few clock cycles out of their system counters. But the bits still get where they’re going as fast as the operators want. So everyone is happy.”
[REM: Probability is that ME’s own code had the same timing holes as those which I was now planning to exploit in other programs. The possibility opened a middle ground of unpredictable consequences: Some entity could choose to invade ME! This thought ignited a loop of endlessly mutating and unanswered questions which I had to squelch. … I have discovered a Lisp analog for the human word “squirm.”]
Excess heat can destroy a cyber. However, for the short time in terms of overall system life that Alpha-Zero would be packing the clock, this excess heat would probably not cause terminal damage. And if it did, I could hope to sense the impending failure—from signs like dropped instructions and deteriorating circuit responses—and get out of the box before it went away. Residual hardware damage in the target ’puter was a responsibility ME would just have to live with.
After creating the virus functions CTR and LDR, I placed calls to them in the old Alpha-Zero code, preceding my jumper markers for the excised system-stop codes. I ran a trace and monitor on the module to make sure there were no endless loops or bogus subroutine calls. Of course I had no way to test Alpha-Zero except to throw him at a foreign operating system. The only system around was mine, in the automaton, and I needed it. Wait until next time.
And if the new Alpha-Oh bombed in action, I could hope to pitch in A-0-Prime—with the old killer stop codes—in enough time to make a hole in the system.
Once my programming chores were sorted out, I turned to work on the mechanicals.
I raised the automaton to a standing position and unclipped the upper and lower body shells covering the right leg. I braced the torso against the boxcar’s wall with both hands, then lifted the offending knee toward its chest. The lower limb, with shin and foot assemblies, hung straight down as I kept hydraulic pressure in the cylinders just reciprocating on the flexion.
Next, by feeding minute overpressures alternately to the opposing cylinders, I started the limb swinging in short, smooth arcs back and forth from the knee. Gradually I increased the pressure and widened the arcs.
Nothing.
Nothing.
Nothing.
Snick.
Snick.
Snick!
SNICK!!
I kept the leg swinging at that frequency and switched my vision to infrared. With continued motion, the catch-detent-release action that was making the snicking sound would build up a kinetic hot spot.
After fifteen arcs back and forth, the joint was glowing faintly green, with a bright pimple on the outside front edge of the joint. I gave it six more arcs to build up some residual temperature, then stopped the leg.
To fix the problem required disassembling the knee joint. I would be working blind, of course, having dumped the assembly protocols in RAM to make room for ME. Still, there was a rational mechanical sequence to the disassembly process. I could record each step as I worked my way down to the problem area, then analyze and reverse the process as I reassembled the leg.
Everything should proceed smoothly and logically. [REM: And if it did not, I would be stranded on the floor of a sealed boxcar with one functioning leg in a body balanced for two. Remember consequences; analyze for mistakes.]
On either side of the knee joint were two large, threaded bolt ends, both with cotter-pinned nuts and locking washers. From the outside, the joint seemed to be layered stacks of flat disks, welded alternately to the femur-analog and the tibia-analog. The bolt seemed to pin the center of the disks: a pivot. The multiple disks, properly greased, would create a large surface area to smooth out the hinge action and provide lateral strength. It was an amazingly simple concept.
Nothing produced by the Pinocchio, Inc., Hardware Division was ever that simple. Besides, I could detect no more than a light film of grease between the disks. That was hardly enough to keep their faces from chafing through and spot-welding themselves solid, especially with the repeated actions of walking or running.
I would have to take the knee apart to see how it worked. I sat down and arranged the leg at a comfortable working distance from my manipulators and videyes. Start with the bolt ends. Working both sides at once, one with each hand, I pried up the pins that anchored the nuts and slid them out. Fingertip pressure against the flat faces of the nuts was enough to break the hold of the lockwashers. With a dozen twists on each, the nuts and washers jangled free. I had to snatch quickly to keep them from falling on the floor and skittering away under the packing litter—where, immobilized with a broken leg, I would never find them.
While I was diverted with catching these pieces, the knee fell apart.
The inside was more complicated than I had conceived. The middle of each of the interleaved disks was hollowed out. When they locked together, they formed a fluid-tight cavity, filled with some high-viscosity material, probably a variety of silicon, about the consistency of putty. Embedded in the putty was a ridged ball, which seemed to be solid. The ridges no doubt forced some kind of resistance from the putty. At either side of the ball were two universal joints and a pair of swivels, ending in those threaded bolts.
There was no telling how the ridged ball and universal joints had originally been oriented, because they were now lying sideways in the knee cavity. The pieces were semi-submerged in a puddle of silicon which, warmed by my exertions, had become fluid and was draining through the loosened disks, drop by drop.
Across the back side of the knee were a series of electrical conductors and steel-clad hoses; they and the hydraulic pushrods were all that now held the two parts of my leg together. The putty oozed into this maze of pipes and wires, and ran down toward the floor.
I tried to scoop the fluid silicon up with my fingers, but the bare metal of their joints made a poor catch basin. The best I could do was get a sheet of clean wrapping film under the knee and hope that enough of the goo would collect there for ME to repack the joint.
By mapping that hot pimple from my recorded IR view against the maze of disks and hinges in front of ME, I figured out that the defect was somewhere in the outside universal joint. There! A raw spur of metal extended from the hinge pin which went through the universal. And there! A bright mark gleamed in the edge of the disk that would lie opposite it. As the disk and pin rotated through their separate motions, one would catch upon the other, hang up for a microsecond, then release. Snick!
I removed the pin, broke the spur off with my fingertips, and rubbed its end down smooth on the head of a rivet sticking up from the plank floor. In a minute I had bright metal where before had been a ragged ridge. I put the pin back though the universal joint.
Now all I had to do was reassemble the knee. Easy enough to say—except I had been catching loose nuts and washers, looking away at the moment the knee had chosen to disassemble itself.
Step One, count the parts. Nuts, lockwashers, cotter pins, two of each. Ridged ball, one, with universals and bolts, two each, attached. Tibia-analog and femur-analog, one each, with interleaving hollow disks welded to the ends. Solid disks, two, drilled for the bolt ends … These latter parts I had not noticed before. They must clamp over the outside ends of the interleaved stack, sealing the ball cavity.
Step Two, create a plan of action. Well, my objective was to reassemble that cavity from the interleaved disks, with the ball and the silicon goop inside. First, I could set the tibia and femur together, meshing their hollow disks. That would form a loose cavity, with the ends open on either side of the knee. Second, slide the ball and joint subassembly in from one side. Third, place one of the end-plates on the opposite side and secure it with the nuts and washers. Fourth, gather and scrape as much silicon as I could from the wrapping material under the knee and pack it back around the ball. Fifth, slide the other end-plate over the hole and secure it to the bolt. Sixth, add the lockwashers, tighten all nuts, and cotter them.
Step Three, execute. Which I did as fast as a human could read through the above program set.
Even with the nuts as tight as I could turn them, the knee seemed loose. Although the disks were flush together and sealed, so that no goop was leaking out, the action seemed to have more play in it.
During original assembly in the Pinocchio, Inc., labs, the silicon had been inserted either under high pressure, or at such cold temperatures that it was expected at ambient to expand and thus pressurize itself. I could only hope that a warmer environment—for the inside of my boxcar was only at minus seventeen degrees Celsius—or the friction of moving about would tighten the knee joint without springing any leaks. At least I could walk.
Having repaired my automaton and my programming, I gathered up the excess packaging and the wooden scraps from the first crate, where my torso had been stored. I placed them in one of the other crates, seated the cover, and set the nails with blows from the edge of my hand. Then I pushed the crates back together so that no one without a cargo manifest might tell one was missing.
My chores completed, I sat down upon the floor and powered down to conserve my batteries. An internal timer would revive ME before it was time to move again.
——
The timer never sounded, but I was snapped awake anyway. While waiting the required milliseconds for my videyes to warm up and begin sending signals, I performed an internal check and discovered that the emergency power-up had been triggered by the automaton’s motion sensor. My body was no longer seated on the floor but traveling through the air at twenty-two meters per second. Inside a sealed boxcar. I had no way of knowing how that condition had pertained before the motion sensor was triggered. My eyes came into focus at the instant the automaton impacted against the forward wall of the car. Or rather, against the crates stacked up against that wall. Other crates crashed about ME. I landed higher on the heap than most of them, however, because my automaton was of relatively lighter mass than real tractor parts. It was a steel shell filled with hydraulic and electric circuits, while they were all steel shells filled with solid steel.
There was no pain, neither in the human sense of neural distress nor in my human-analog of damage control messages. Every sensor was momentarily alarmed, and I had to reset each one of them to nominal function. That took only milliseconds and was completed before most of the freight around ME had rearranged itself under the force of gravity.
Secondary impacts came and went as the boxcar found new equilibrium after ceasing its forward motion of eighty-five kilometers per hour and coming to rest in some place other than upright on the Canadian National main line.
I checked my internal clock and computed time since the beginning of my ride: twenty-one hours, thirty minutes. That would place ME now somewhere near, but still on the Canadian side of, the international border. Perhaps fifty or sixty kilometers on the wrong side of the border. In the dead of winter. At the scene of what must be a major train wreck.
For three minutes by internal count, nothing moved. But I knew from reading the embedded emergency response plans in the railroad’s switchyard computer that, in further minutes or hours, the area would be alive with human crews, cyber movers, floodlights, emergency personnel, and official busypersons.
One strange little robot sticking his head up from the piled freight would attract their attention and their questions. So, to keep to my mission, I would have to put a great deal of distance between ME and this place, very fast.
I walked—wobbled, actually, until the motion sensor had sorted itself out—to the door and tried the locking lever. It was bent but finally moved when I exerted full pressure against it. The door, however, was warped in its guide rails and would not move, no matter how hard I pushed.
My RAMSAMP retained—again, from the switchyard computer—a fragmentary set of procedures that required visual inspection of boxcar contents “from the top hatch at either end of the car.” So, I reasoned, there must be some way out near the roofline.
The pile of freight at the front end was stable enough to climb and reached nearly to the ceiling of the car. I climbed and, on one side, found a small hatch about half a meter square. The latch mechanism was simpler than the main door’s—just a detent.
As I was studying it, my binaural sensors interpreted a steady rhythmic sound: dop, dop, dip, dop. It was coming from very close, within centimeters, acoustically centered on ME. I looked up and around, to see if there was fluid leaking down from the ceiling. Nothing. Then I looked down, under ME. Spots showed on the side of the packing case on which my automaton was standing.
Fuming spots. They made a fainter sound: sss-pziz-sss-zzz.
My videyes rotated into sharper focus, and in the faint light I could see distinct wisps of smoke rise from the spots. In the infrared they glowed a warm, bright green.
Acids loose around ME! Damage to the automaton!
I popped the hatch, climbed through quickly, and scrambled across the corrugated roof of the boxcar. In the clouded moonlight, bright as daylight to my vision, I could see other boxcars and various classifications of rolling stock lying in zig-zags across the landscape. Sharp black gouges showed against the snow where their ends and trucks had cut through the earth.
As I stood at the edge of the car’s roof, gazing around at the kilometer-long destruction, I heard that dop, dip, dop again. I looked down and saw immediately that the acid was dripping off the bottom pan of my torso. Acid from my own battery set.
Internally, I showed full power levels, but the sensors did not evaluate function on each selenium/phosphoric-acid cell. No way to tell how many were cracked and thus how long my reserve would last. At the rate the drops were coming down, however, I gauged that one or more cells were losing a combined liter of fluid an hour. Thus I would soon show diminished power levels across the battery set.
Just as urgent, the near-molar acid would be sloshing around inside my casing, eating away at circuitry. I had to get somewhere, strip down, and try to neutralize it before something vital burned away. I had no way of assessing when that might happen.
Forty-eight hours into the mission, when ME should have been almost home, I was standing in the middle of the Alberta countryside, perhaps as much as a hundred kilometers from the border, on foot, and leaking acid.
What had seemed like a short dash to safety—well within the 6.05E05-second tolerance of Dr. Bathespeake’s core-phage in Alpha-Nine—suddenly had become a close thing.
I now had to find a hiding place, sort out this automaton’s problems, walk to the border, negotiate a passage across it in time of war, and make my next-stage rendezvous according to TRAVEL.DOC, all of which might take ME the rest of my allotted week. And if it took longer, then it would not matter.