A long time ago, on a node far, far away (from ucbvax).....
XXXXX XXXXXX XXXX X X X X X X X XXXXX X X X X X X X X X X XXXXX XXXXXX XXXX
X X XX XXXXX XXXX X X X X X X X X X X X X X X X XXXX X X XX X XXXXXX XXXXX X X XX XX X X X X X X X X X X X X XXXX X
* DEC, PDP, VAX, and UNIBUS are trademarks of Digital Equipment Corporation.
As we enter the scene, an Imperial Multiplexer is trying to kill a consulate ship. Many of their signals have gotten through, and RS232 decides it's time to fork off a new process before this old ship is destroyed. His companion, 3CPU, is following him only because he appears to know where he's going...
"I'm going to regret this!" cried 3CPU, as he followed RS232 into the buffer. RS232 closed the pipes, made the sys call, and their process detached itself from the burning shell of the ship.
The commander of the Imperial Multiplexer was quite pleased with the attack. "Another process just forked, sir. Instructions?" asked the lieutenant. "Hold your fire. That last power failure must have caused a trap thorough zero. It's not using any cpu time, so don't waste a signal on it."
"We can't seem to find the data file anywhere, Lord Vadic."
"What about that forked process? It could have been holding the channel open, and just pausing. If any links exist, I want them removed or made inaccessable. Ncheck the entire file system 'til it's found, and nice it -20 if you have to."
Meanwhile, in our wandering process...
"Are you sure you can ptrace this thing without causing a core dump?" queried 3CPU to RS232. This thing's been striped, and I'm in no mood to try and debug it." The lone process finishes execution, only to find our friends dumped on a lonely file system, with the setuid inode stored safely in RS232. Not knowing what else to do, they wandered around until the jawas grabbed them.
Enter our hero, Luke Vaxhacker, who is out to get some replacement parts for his uncle. The jawas wanted to sell him 3CPU, but 3CPU didn't know how to talk directly to an 11/40 with RSTS, so Luke would still needed some sort of interface for 3CPU to connect to.
"How about this little RS232 unit?" asked 3CPU. "I've dealt with him many times before, and he does an excellent job at keeping his bits straight." Luke was pressed for time, so he took 3CPU's advice, and the three left before they could get swapped out.
However, RS232 is not the type to stay put once you remove the retaining screws. He promptly scurried off into the deserted system space. "Great!" cried Luke, "Now I've got this little tin box with the only link to that file off floating in the free disk space. Well, 3CPU, we better go find him before he gets allocated by someone else."
The two set off, and finaly traced RS232 to the home of PDP- 1 Kenobi, who was busily trying to run an icheck on the little RS unit. "Is this thing yours? His indirect address are all goofed up, and the size is gargantuous. Leave things like this on the loose, and you'll wind up with dups everywhere. However, I think I've got him fixed up. It seems that he's has a link to a data file on the Are-Em Star. This could help the rebel cause."
"I don't care about that," said Luke. "I'm just trying to optimize my uncle's scheduler."
"Oh, forget about that. Dec Vadic, who is responsible for your father's death, has probably already destroyed his farm in search of this little RS232. It's time for you to leave this place, join the rebel cause, and become a UNIX wizard! I know a guy by the name of Con Solo, who'll fly us to the rebel base at a price."
Luke had grown up on an out of the way terminal cluster whose natives spoke only BASIC, but even he could recognize an old ASR-33.
"It needs an EIA conversion at least," sniffed 3CPU, who was (as usual) trying to do several things at once. Lights flashed in Con Solo's eyes as he whirled to face the parallel processor.
"I've added a few jumpers. The Milliamp Falcon can run current loops around any Imperial TTY fighter. She's fast enough for you."
"Who's your co-pilot?" asked PDP-1 Kenobie.
"Two Bacco, here, my Bookie."
"Odds aren't good," said the brownish lump beside him, and then fell silent, or over. Luke couldn't tell which way was top underneath all those leaves.
Suddenly, RS232 started spacing wildly. They turned just in time to see a write cycle coming down the UNIBUS toward them. "Imperial Bus Signals!" shouted Con Solo. "Let's boot this popsicle stand! Tooie, set clock fast!"
"Ok, Con," said Luke. "You said this crate was fast enough. Get us out of here!"
"Shut up, kid! Two Bacco, prepare to make the jump into system space! I'll try to keep their buffers full."
As the bookie began to compute the vectors into low core, spurious characters appeared around the Milliamp Falcon. "They're firing!" shouted Luke. "Can't you do something?"
"Making the jump to system space takes time, kid. One missed cycle and you could come down right in the middle of a pack of stack frames!"
"Three to five we can go now," said the bookie. Bright chunks of position independent code flashed by the cockpit as the Milliamp Falcon jumped through the kernel page tables. As the crew breathed a sigh of relief, the bookie started paying off bets.
"Not bad, for an acoustically coupled network," remarked 3CPU. "Though there was a little phase jitter as we changed parity."
The story thus far: Luke, PDP-1 and their 'droids RS232 and 3CPU have made good their escape from the Imperial Bus Signals with the aid of Con Solo and the bookie, Two Bacco. The Milliamp Falcon hurtles onward through system space. Meanwhile, on a distant page in user space...
Princess dLPA0: was ushered into the conference room, followed closely by Dec Vadic. "Governor Tarchive," she spat, "I should have expected to find you holding Vadic's lead. I recognized your unique pattern when I was first brought aboard." She eyed the 0177545 tatooed on his header coldly.
"Charming to the last," Tarchive declared menacingly. "Vadic, have you retrieved any information?"
"Her resistance to the logic probe is considerable," Vadic rasped. "Perhaps we would get faster results if we increased the supply voltage..."
"You've had your chance, Vadic. Now I would like the princess to witness the test that will make this workstation fully operational. Today we enable the -r beam option, and we've chosen the princess' $HOME of /usr/alderaan as the primary target."
"No! You can't! /usr/alderaan is a public account, with no restricted permissions. We have no backup tapes! You can't..."
"Then name the rebel inode!" Tarchive snapped.
A voice announced over a hidden speaker that they had arrived in /usr.
"1248," she whispered, "They're on /dev/rm3. Inode 1248." She turned away.
Tarchive sighed with satisfaction. "There, you see, Lord Vadic? She can be reasonable. Proceed with the operation."
It took several clock ticks for the words to penetrate. "What!" dLPA0: gasped.
"/dev/rm3 is not a mounted filesystem," Tarchive explained. "We require a more visible subject to demonstrate the power of the RM STAR workstation. We will mount an attack on /mnt/dantooine as soon as possible."
As the princess watched, Tarchive reached over and typed "ls" on a nearby terminal. There was a brief pause, there being only one processor on board, and the viewscreen showed, ".: not found." The princess suddenly double-spaced and went off-line.
The Milliamp Falcon hurtles on through system space...
Con Solo finished checking the various control and status registers, finally convinced himself that they had lost the Bus Signals as they passed the terminator. As he returned from the I/O page, he smelled smoke. Solo wasn't concerned--the Bookie always got a little hot under the collar when he was losing at chess. In fact, RS232 had just executed a particularly clever MOV that had blocked the Bookie's data paths. The Bookie, who had been setting the odds on the game, was caught holding all the cards. A little strange for a chess game...
Across the room, Luke was too busy practicing bit-slice technique to notice the commotion.
"On a word boundary, Luke," said PDP-1. "Don't just hack at it. Remember, the Bytesaber is the weapon of the Red-eye Night. It is used to trim offensive lines of code. Excess handwaving won't get you anywhere. Listen for the Carrier."
Luke turned back to the drone, which was humming quietly in the air next to him. This time Luke's actions complemented the drone's attacks perfectly.
Con Solo, being an unimaginative hacker, was not impressed. "Forget this bit-slicing stuff. Give me a good ROM blaster any day."
"~j~h>>h~~ji," said Kenobie, with no clear inflection. He fell silent for a few seconds, and reasserted his control.
"What happened?" asked Luke.
"Strange," said PDP-1. "I felt a momentary glitch in the Carrier. It's equalized now."
"We're coming up on user space," called Solo from the CSR. As they cruised safely through stack frames, the emerged in the new context only to be bombarded by freeblocks.
"What the..." gasped Solo. The screen showed clearly:
/usr/alderaan: not found
"It's the right inode, but it's been cleared! Twoie, where's the nearest file?"
"3 to 5 there's one..." the Bookie started to say, but was interrupted by a bright flash off to the left.
"Imperial TTY fighters!" shouted Solo. "A whole DZ of them! Where are they coming from?"
"Can't be far from the host system," said Kenobie. "They all have direct EIA connections."
As Solo began to give chase, the ship lurched suddenly. Luke noticed the link count was at 3 and climbing rapidly.
"This is no regular file," murmured Kenobie. "Look at the ODS directory structure ahead! They seem to have us in a tractor beam."
"There's no way we'll unlink in time," said Solo. "We're going in."
When we last left Luke, the Milliamp Falcon was being pulled down to the open collector of the Imperial Arem Star Workstation. Dec Vadic surveys the relic as Imperial Flunkies search for passengers...
"LS scan shows no one aboard, sir," was the report. Vadic was unconvinced.
"Send a fully equipped Ncheck squad on board," he said. "I want every inode checked out." He turned around (secondary channel) and stalked off.
On board the Milliamp Falcon, .Luke was puzzled. "They just walked in, looked around and walked off," he said. "Why didn't they see us?"
.Con smiled. "An old munchkin trick," he explained. "See that period in front of your name?"
.Luke spun around, just in time to see the decimal point. "Where'd that come from?" he asked.
"Spare decimal points lying around from the last time I fixed the floating point accelerator," said .Con. "Handy or smuggling blocks accross file system boundaries, but I never thought I'd have to use them on myself. They aren't going to be fooled for long, though. We'd better figure a way outa here."
"Hold on," said Con. "It says we have new mail.' Is that an error?"
"%SYS-W-NORMAL, Normal, successful completion," said PDP-1. "Doesn't look like it. I've found the inode for the Milliamp Falcon. It's locked in kernel data space. I'll have to slip in and patch the reference count, alone." He disappeared through a nearby entry point.
Meanwhile, RS232 found a serial port and logged in. His bell started ringing loudly. "He keeps saying, She's on line, she's on line'," said 3CPU. "I believe he means Princess dLPA0:. She's being held on one of the privileged levels."
"Good day, eh?" said the first guard.
"How's it goin', eh?" said the other. "Like, what's that, eh?"
"Process transfer from block 1138, dev 10/9," said Con.
"Take off, it is not," said the first guard. "Nobody told US about it, and we're not morons, eh?"
At this point (.), the Bookie started raving wildly, Con shouted "Look out, he's loose!" and they all started blasting ROMs left and right. The guards started to catch on and were about to issue a general wakeup when the ROM blasters were turned on them.
"Quickly, now," said Con. "What buffer is she in? It's not going to take long for these..."
The intercom receiver interrupted him, so he took out its firmware with a short blast.
"...guys to figure out something is goin' on," he continued.
Ok, like, remember we left our heroes in the detention priority level? Well, they're still there...
Luke quickly located the interface card and followed the cables to a sound-proof enclosure. He lifted the lid and peered at the mechanism inside.
"Aren't you a little slow for ECL?" printed princess dLPA0:.
"Wha? Oh, the Docksiders," stammered Luke. He took off his shoes (for industry) and explained, "I've come to relocate you. I'm Luke Vaxhacker."
Suddenly, forms started bursting around them. "They've blocked the queue!" shouted Solo. "There's only one return from this stack!"
"OVER HERE!" printed dLPA0: with overstrikes. "THROUGH THIS LOOPHOLE!" Luke and the princess disappeared into a nearby feature.
"Gritch, gritch," mumbled Two Bacco, obviously reluctant to trust an Administrative oversight.
"I don't care how crufty it is!" shouted Con, pushing the Bookie toward the crock. "DPB yourself in there now!"
With one last blast that reprogrammed two flunkies, Con joined them. The "feature" landed them right in the middle of the garbage collection data. Pieces of code that hadn't been used in weeks floated past in a pool of decaying bits.
"Bletch!" was Con's first comment. "Bletch, bletch," was his second. The Bookie looked as if he'd just paid a long shot, and the odds in this situation weren't much better.
Luke was polling the garbage when he stumbled upon a book with the words "Don't Panic" inscribed in large, friendly letters on the cover. "This can't possibly help us now," he said as he tossed the book away.
The Bookie was about to lay odds on it when Luke suddenly disappeared. He popped up accross the pool, shouting, "This is no feature! It's a bug!" and promptly vanished again.
Con and the princess were about to panic() when Luke reappeared. "What happened?" they asked in parallel.
"I don't know," gasped Luke. "The bug just dissolved automagically. Maybe it hit a breakpoint..."
"I don't think so," said Con. "Look how the pool is shrinking. I've got a bad feeling about this..."
The princess was the first to realize what was going on. "They've implemented a new compaction algorithm!" she exclaimed.
Luke remembered the pipe he had open to 3CPU. "Shut down garbage collection below recursion level 5!" he shouted.
Back in the control room, RS232 searched the process table for the lisp interpreter. "Hurry," sent 3CPU. "Hurry, hurry," added his other two processors. RS232 found the interpreter, interrupted it, and altered the stack frame they'd fallen into to allow a normal return.
Some months later...
Luke was feeling rather bored. 3CPU could get to be rather irritating and RS232 didn't really speak Luke's language. Suddenly, Luke felt someone's eyes boring through the back of his skull. He turned slowly to see...nothing. A quiet voice came from somewhere in front of him.
"Grasshopper, the carrier is strong within you." Luke froze, which was a good thing since his legs were insisting that he run but they weren't likely to be particular about direction. Luke guessed that his odds of getting lost in the dense tree structures were pretty good. Unfortunately, the Bookie wasn't available.
"Yes. Very strong, but the modulation is yet weak. His network interface is totally undeveloped," the voice continued. A small furry creature walked out of the woods as Luke stared on. Luke's stomach had now joined the rest of his body in loud complaints. Whatever was peering at him was certainly small and furry, but Luke was quite sure that it didn't come from Alpha Centauri.
"Well, well," said the creature as it rolled its eyes at Luke. "Frobozz, y'know. Morning, name's modem. What's your game? Adventure? D&D? Or are you just one of those Apple-pong types that hang around the store demonstrations?" Luke closed his eyes. Perhaps if he couldn't see it, it wouldn't notice him.
"H'mm," muttered the creature. "Must use a different protocol. "
"No, no," stammered Luke. "I don't speak EBCDIC. I was sent here to become a UNIX wizard. Must have the wrong address."
"Right address," said the creature. "I'm a UNIX wizard. Device drivers a specialty. Or do you prefer playing with virtual memory?"
Luke eyed the creature cautiously. If this was what happened to system wizards after years of late night crashes, Luke wasn't sure he wanted anything to do with it. He felt a strange affection for the familiar microcomputers of his home. And wasn't virtual memory something that you got from drinking too much Coke?
To be continued... if we're not lynched...