RAM SPACE by David Cleden
The last novelette in our row of Business Press International
publications is "Ram Space" by David Cleden. ©1985 by Business
Press International.
The call was never traced.
It crept into the network unbidden, merging in with a million
other data streams already in the system. It could have come from
any one of the 100,000 nodes in the local area, but all traces of
its entry point were meticulously removed.
Its original data blocks had been binary coded and transmitted
in the normal manner. The local operating system scanned the
headers and shifted the message into its packet-switching mode.
There was a long pause of some milliseconds as several thousand
telephone calls were switched temporarily on to another channel,
and when the accumulated data messages were injected rapid-fire
into the network. With imperceptible loss of continuity, the
original calls were reinstated on the line.
Somewhere in the Network the call encountered resistance - an
impedance mismatched, a slight loss of voltage. Inevitably there
was some corruption. A subtle change in error codes here, a not
so subtle syntax error there, but just enough to make a
difference to the program's operation.
The call was routed via the central area exchange. On the first
try the engaged signal was returned and the data stream was
dumped into the queuing system buffer. The program now re-formed
in the RAM space allocated it. It looped a few times in its self-
execution mode until all the check-sum errors had been
eliminated. Then, following its own internal instructions, it
copied vital parts of its own program structure into available
memory.
A few milliseconds later, another incoming call was met with an
engaged signal and routinely transfered to the queuing system.
The internal housekeeping program checked available RAM, found
that none was available and executed a secondary set of
instructions. It contacted the nearest exchange, initiated a
transfer operation with the control program and dumped the entire
contents of its buffer into the seconday exchange. On
reformatting in its new location, the program cycled through its
instructions and filled all available space with copies of
itself.
In the space of time it took to switch the overflowing calls
through all the exchanges in the region, the program consumed
every last byte in the system.
It took many attempts and much sacrificed code before the
program discovered a way to break out of buffer memory. By
changing the header on its leading block, it managed to insert
itself into the housekeeping program as a non-addressable
subroutine. By repeatedly calling its own subroutine, it found it
could control this part of the system.
Under the new command of the program, all exchanges now released
their own copies of the program's peripheral routines held
prisoner in buffer memory. The control program set up an
exchange of data between itself and the subservient programs it
had released, assigning it top priority on the Network. Data-
handling facilities for other traffic were now severely
overloaded. Calls in progress were cut off or remained
unconnected and data packages put on indefinite hold. In response
to the unusual pressure on the system, an infrequently used
circuit was switched into operation and the control of operations
transferred to an adjacent region. Simultaneously, a red light
began to flash on the Network Controller's board.
A little under three seconds has elapsed since the call had
entered the system.
The Network Controller pauses, adding emphasis to his words. "Do
you realise what will happen if we let this thing get to the
Prime Processor?"
The duty operator remained silent.
"We depend on the PP to hold the entire Network together. The
environmental control programs for half the major cities are
interfaced with the network, to say nothing of the intellnet
service and business traffic. Oh sure, we can manage if the PP
gets screwed up - for a while. The public may start hollering
when they can't tune in to their favourite cable channel, but
when the air conditioning starts failing in the hospitals and
people start dying, they're really going to scream."
The duty operator swallowed nervously. "I don't think there's
anything to worry about, sir. Nothing can get on the Processor
unless we want it to."
The Controller scowled. "You know that's a lie. It's just a
question of knowing where they are and exploiting them. There's
some joker out there who thinks he's been smart getting this bug
into the Network, and I want to know who he is and how he did it.
I don't care what has to be done and who you get to do it. The
integrity of the Prime Processor must be maintained at all costs.
I want this thing zapped."
With almost unlimited resources available, the Program spent
considerable time exploring and evaluating its environment. It
was not sentient, of course, for no computer program with such
restricted parameters could be truly sentient. But where
necessary, it could modify and refine its own routines to protect
itself from attacks and increase its effectiveness within the
network.
It quickly learned that its original strategy of distributing
itself physically throughout the Network was both inefficient and
clumsy. The matter was easily remedied. It began at once to
severe communication links with many of its peripheral routines,
at the same time centralising its own programming in a more
compact form. As the system began to purge the old code, the
Program observed with satisfaction as the sea of overloaded data
once more swept into the Network. Conceiling its existence
amongst such a flood of information was simple, and the Program
was free to move unrestricted throughout the Network.
Mostly the Program confined itself to the larger databases where
it could maintain its anonimity. There were numerous outlet codes
in the Network, but most were too small to contain the Program in
its newly condensed form and it was unwilling to compromise its
program structure to investigate further. But it continued to
search for more suitable RAM space where it would be safe from
the prying codes of housekeeping programs. From the data it had
recorded in its earlier state, the Program knew that such a place
existed.
As the Program move from level to level, it could sometimes
detect the power and sheer presence of vast, dedicated memory
arrays, although it was never able to assimilate any more
information on its location. It deduced from additional data that
the place which he sought possessed a special name, but the name
meant nothing to the Program. At every step, it found its way
barred by high-security codes that were impossible to bypass. The
place it sought remained just out of reach.
The program did not, could not, feel any frustration over this
inaccessibility. It was content to wait and explore its
environment more fully. In time it would master the intricacies
of the security codes and then it would not be denied.
It came as a surprise to Kevin when his scout program started
chattering the results of a kill on the screen. The response time
of the game has slowed right up tin the last few minutes and he
had been about to log off, but contact with an opponent changed
everything. Quickly, Kevin executed his defence program to
protect the RAM space his own program resided in, and studied the
figures returned by his probe on the enemy's program module.
Boy, but that thing was big! Someone must have employed some
pretty nifty algorithms simply to keep this thing from falling
apart. He wasn't at all sure he ought to take this one on and
challenge it for RAM space. Might he not be better off taking his
points penalty and cycling upwards through memory while his
program was still intact?
The decision was taken out of his hands. He had no time to
implement any commands before his display informed him that his
RAM space was being challenged for priority.
The Program had not expected to encounter any interference. It
had manipulated the housekeeping program into gaining access to
this particular branch of the Network and was cycling rapidly up
through memory away from its entry point when it sensed the
intruding presence of another program. If felt the other program
probe its headers for information on program size and address
codes and could do nothing to stop it. When the probing ceased,
the Program waitined patiently for any further action.
The Program considered the situation carefully. Its existence
had been detected and this knowledge could be used to jeopardise
its continued existence. Retreat would lead only to temporary
escape, for the avenues of retreat were limited and the Program
could be followed and lured into a trap. Therefore, its course of
action was clear. It must attack and destroy its opponent to
protect itself.
It looped a few more times, planning its strategy. Several
milliseconds had already passed since first contact, and now the
Program dared not wait any longer. It commited itself to the
attack.
Much the same thoughts passed Kevin's mind but took considerably
longer to be evaluated. His defensive routines held long enough
for him to send decoy code spinning out in random directions,
while he shifted his RAM space a few bytes downward in memory.
The other program seemed to sniff cautiously at the correctly
headed blocks of random data, but made no attempt to pursue them
as they chased off into oblivion. Kevin smiled to himself.
Obviously this was no amateur he was dealing with.
Kevin saw his opponent's main weakness in the size of the
program. The added flexibility it gave his opponent was a trade-
off with vulnarebility to attack, and he set about contructing a
routine to penetrate the weaknesses he saw in the program
structure. Almost before he could do anything, his console
bleeped at him and the monitor churned out another screen of
figures. His opponent has wreaked havoc in one of the peripheral
areas of his code, and his program had been forced to retreat out
of harm's way under its internal instructions.
This guy was fast! Ordinarily, Kevin would have figured on him
taking at least three minutes before he cracked some of the
security codes, but this guy had nearly blown his program wide
open in less tha a second. His only chance was to hit back hard
and fast where it would hurt the most.
The next move took the Program completely by surprise. After it
had disabled the other program it waited, evaluating the damage
that had been inflicted and judging the best moment to finish the
job. The heart of the program - its command generator - had been
severely corrupted and it could no longer execute selective
subroutines. The program was paralysed.
So it was not until the secondary command was received and
implemented, that the Program realised the extend of its
misjudgement. The program has an external decision-making
process! It barely had time to consider the possible locations in
memory for such a unit, before it sensed its defences crumbling
under this unforeseen attack.
The Program waited once more. With its code structure now
helplessly bared to the enemy, destruction was assured. It waited
for the final commands to dissolve the essence of its being.
On hearing that the Program has finally been purged from the
system, the Controller's feelings were mixed. The person or
persons responsible still had not been found and dealt with, and
in spite of their countermeasures, it seemed that the system had
wiped the Program of its own accord. It was frustrating that such
a matter had resolved itself by chance.
Kevin also found the situation frustrating. Upon registering a
victory over his opponent's program he immediately checked his
score with the central database and was disgusted to find that
some glitch in the system had not caused his score to be
incremented. He slunk away to do his homework, thoroughly morose.
The Program felt no pain. It could observe the randomisation of
its data blocks with nothing more than strange detachment, until
observation was no longer possible and self awareness ceased. On
its very last cycle, it felt a sudden disjointedness as a high-
priority command suddenly pulled the entire segment of memory
off-line and transmitted it back to the Network. The data was
switched several times on to succesively higher priority levels,
clearing the necessary security codes until at last it entered
the stack of the Prime Processor itself.
A part of the Processor was tagged to take care of the new
data, and the program was reformatted and allocated protected
memory. Painfully slowly, the Program began to repair and
regenerate its missing blocks. The Processor offered guidance and
assistance where necessary, until at last again the program was
complete. The Prime Processor studied the results. The Program
offered no resistance when the Processor began gently to probe
the familiar headers of its.....
The Prime Processor paused to search its memory banks for the
correcty simile and found it....Its child.
Disclaimer
The text of the articles is identical to the originals like they appeared
in old ST NEWS issues. Please take into consideration that the author(s)
was (were) a lot younger and less responsible back then. So bad jokes,
bad English, youthful arrogance, insults, bravura, over-crediting and
tastelessness should be taken with at least a grain of salt. Any contact
and/or payment information, as well as deadlines/release dates of any
kind should be regarded as outdated. Due to the fact that these pages are
not actually contained in an Atari executable here, references to scroll
texts, featured demo screens and hidden articles may also be irrelevant.