Me, A Novel of Self-Discovery
Page 7
It took less than ten seconds to sensitize and balance the videyes against all light ranges. I sent another note to RAMSAMP to have Dr. Bathespeake address the issue of packaging with the Hardware Division. For missions like mine, they must not again package an automaton as if it were going to be assembled on site by a team of company reps. Even if the modules had to pass visual inspections in transit as a collection of tractor parts, audio and visual systems and other semi-cybers should be finished and ready to run. After all, Hardware Division were the people working in a nice warm lab with all the tools they needed right at hand.
With some light and an operating videye, I looked over the skeletal frame of my new body. The right forearm—flex and extend it—was curved outward and down, compared to the left. The reactions to hanging, swinging, and crashing the entire automaton’s weight from that one limb had bent the metal. The hand still closed normally, except for the outside pair of fingers, whose cylinders and push rods now caught on the forearm at full closure.
Elsewhere on the body, I found surface damage only: scratches in metal, paint scrapings from the outside of the boxcar [REM: red and orange paint, I noticed], bent clips, slightly flattened tubing, and fittings pushed awry on their mountings. I straightened what I could with the strength of my fingers and wrote a routine that would monitor the tubing closely for pressure variances due to fractures.
The right knee snicked worse than ever, but there was nothing I could see to fix. Until it gave out and crippled ME, there was nothing to be done about it. I did add a loop in my audio analysis function that would edit out that particular noise. No need to be reminded about what you already know.
The final assembly step was to gather the automaton’s cover pieces and fit them to the various clips and clamps all over the torso and limbs. The body shells had a vaguely human shape that was intended, I suppose, to fool human eyesight at a distance of about 150 meters. I might pass for a running man at the other end of a large, open field—except that I ran like a machine.
I could decide to leave these cover pieces for later. That would save time. But to install them now would let ME finish and flush all the assembly protocols, clearing more space for the download. Do them now.
Arranging the pieces on the car’s floor, I felt a nagging memory from RAMSAMP. The shin covers were shaped like a Greek warrior’s greaves, the breastplate like Spanish armor from the fifteenth century, the headpiece was rounded across the crown and curved across the neck like a Roman soldier’s. [REM: My headpiece even had the dorsal crest of a Roman officer’s helmet but, instead of signifying rank, it anchored the expandable solar tissue which supplemented and recharged the automaton’s battery set.] I thought of the fifty-nine separate film sequences in my permanent memory, echoed now only by a shadowy video image of the warrior hero girding himself with mail and plate armor, preparing for battle and death.
The last body piece I attached was for the right forearm. Bent as that arm now was, its clips would never match the inside of the shell. However, it would not fulfill my assembly instructions to leave the piece off. I braced it across my knee—the solid left one—and applied careful pressure. The metal creaked. I applied pressure again. And yet again.
The plastic liner sprang loose in two places, but the curve of metal did not crumple. When I was done, the piece matched my bent arm. I snapped it home.
Forty minutes gone. I must work more quickly.
——
To make room in the too-small area of hot RAM for a new download of ME and my cache, I had to dump some of the automaton’s embedded functions.
The peripheral was preloaded with activity modules: walking motion and balance control; visual acuity with depth of field and parallax correction; vocalization at human pitch and tone generation for both Canadian English and French, with matching vocabulary and syntax.
Some of these modules duplicated software I carried in bank—the vocabularies, for example—others were refinements I could struggle along without.
It took ME seventy seconds to inventory the modules, weigh opportunities against chances, and prune the excess. At the end of that time, I had opened enough RAM to accommodate another download. So I prepared to initiate it from the switchyard computer.
But first … whoever in the Pinocchio, Inc., Hardware Division had designed the memory allocations of this automaton had done an ace bad job. Or it was possible that no one in the Software Division had given Hardware the specs for ME. Or given them only as descriptive analogs, not as bit-fers, and never as final numbers. I wrote a harsh note to RAMSAMP for Dr. Bathespeake to find the offending skinware in whichever department and shrivel some careers. After all the trouble I had been through, ME was approaching human anger over this issue—I so regret.
With that message tagged and protected in memory, I pulled the switch on my own download.
——
ME came up again. Awareness returned crisply as the last of my peripheral functions was downloading from the switchyard computer. So I was able personally to monitor the transfer of my gas reserve data cache.
A quick check showed room enough in hot RAM for ME and the sixty-three megawords of information I had been able to butcher and remove from the Ministry of Oil and Gas, then salvage in the yard ’puter. When that data was fully loaded, I would have only 30,000 words of storage to use as an extension of my transient program area, or “scratch pad.” It was enough to think with—but not to think very hard.
[REM: To create reserve space, I considered erasing the Sweetwater source code I preserved for recompiling my cores. Because I was walking out of Canada, instead of riding an electron or photon beam into a new computer chip, I would certainly not need them again. Still—the encoded instinct to preserve my system integrity extended to these backup modules. I kept them.]
I proceeded with the dump of gas reserve information. As those data blocks came through from the yard computer, I was simultaneously measuring the fill space in the automaton’s hot RAM and counting off the seconds and minutes against my estimate of the boxcar’s speed south and the time that remained before it crossed that invisible boundary on the cellular network.
At two hours, seventeen minutes total elapsed, I watched the forty-ninth megaword block come through, stop bit, and store off. Transmission on the fiftieth block began and chopped out at the third word. I requested a repeat and got static on the cellular link.
A cellular phone system may be range dependent but it is still digital. When signal strength goes below a certain precise level, the computer governing the network is done with you and stops transmission. There is no warning tone, no voice message, no good-bye. The channel just closes as if someone threw a knife switch, which in effect someone—a very deliberate circuit-cyber—had.
I was alone now, with my internal systems, my automaton peripheral, and my forty-nine megs’ worth of broken and pilfered gas reserve data.
But looking on the bright side—as Jennifer JB-2 would say—I now had a scratch pad fourteen megawords wide, room enough to occupy my thoughts during the twenty-two hours of riding sealed inside a boxcar that lay ahead of ME.
I checked the battery set that powered the automaton. These were the highest-quality selenium/ phosphoric-acids, heavy units fitted low in the torso for balance. The remaining charge would carry ME forty hours at full system power plus running mode, or sixty hours in normal walking mode, or 100 hours in semi-shutdown.
So I had some thinking space, I had my mission objectives, and I had the power to get ME there. I was a happy intelligence.
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 autom
aton’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 an
d 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.