The Novels

Economics 101, a Novel (Rough Draft) -- My first sustained attempt at a novel, two-thirds finished in rough draft, and heading a little too far south.
What would you do if you and your study partner, with whom you had been seriously discussing marriage, suddenly found yourselves all alone together on a desert island? Study economics?
Sociology 500, a Romance (Second Draft) -- The first book in the Economics 101 Trilogy.(On hold.)
Karel and Dan, former American football teammates and now graduate students, meet fellow graduate students Kristie and Bobbie, and the four form a steady study group.

Featured Post

Sociology 500, a Romance, ch 1 pt 1 -- Introducing Bobbie

TOC Well, let's meet Roberta Whitmer. Bobbie entered the anthropology department office and looked around. Near the receptionis...

Monday, August 24, 2020

Backup01: 33209: Rocks -- 2805

Third version backup of https://joel-rees-economics.blogspot.com/2020/08/bk-33209-rocks-2805.html.

Chapter 13.8 Straits -- Intellectual Property Agreements

Chapter 14.0: Rocks -- 2805


Bill grinned sardonically. "Well, I think this will work out well."

(You may want to put your BS meter away for this chapter, or at least set the threshold level pretty high.)

Bob chuckled. "Stephanie, can you get together with Carrie and see that what these three signed gets replaced with a more appropriate agreement?"

"I'd be happy to, sir."

"The same as Joe and Julia's agreements, with an addendum for their projects?" Ms. Philips asked.

Bill answered for him. "Yes, yes, of course."

And Bob nodded.

Ms. Steward, Ms. Philips, Mike, our Bob, and Jennifer got together at one end of the table.

As Julia and I connected her mainboard to one of the TVs, I whispered to her. "I thought the two guys were from Motorola's legal department."

"I did, too," she whispered back. "Must be much higher up in management."

I nodded my agreement.

(No, I never even came close to meeting Motorola's Bob and Bill in the real world.)

A number of engineers came in, bringing in pizza and liquid refreshment.

"Your friends," Motorola's Bob said to me with a grin, "are having pizza elsewhere. I think we should have some pizza in here, too." He turned to one of the engineers. "Jess, I hope there's something non-alcoholic to drink?"

The engineer named Jesse started, and looked up guiltily from the six-packs he was carrying. "Erm ...."

An engineer on the other side of the room called out, "Denny made sure we had root beer, and I made sure we had some other options." He held up two-liter bottles of soft drinks. "Not all of us are fueled by beer."

"Good job, Tobe."

Tobias gave Bob a thumbs-up.

As we ate pizza and talked, we demonstrated what we had done so far -- the ROM menus, BASIC, TSC's debug system, and Flex, and using Flex to run Motorola's assemblers.

We shared some comments and discussion of the process of getting Flex to run on the Micro Chroma 68, and I described my dynamic RAM refresh circuit, explaining how I borrowed the video scan counter of the 6847, and mentioning the problems I had run into with my original design. I also explained the simplistic bank switching that made it possible to run Flex.

Several of the engineers commented on how my refresh circuit sounded similar to a circuit the engineers who worked with Radio Shack on the Color Computer had produced before they designed the sequential address multiplexor as a separate circuit. Not yet being familiar with the SAM, I couldn't comment.

Jennifer, our Bob, and Mike had taken care of their paperwork by then. Bob knew something about the SAM already, and he discussed it a bit with the engineers.

We showed them the 6801 daughterboard on Julia's mainboard, and her keyboard, and she described the way we were using the 6805 and its timer to scan and debounce the keyboard and control the hexadecimal display, augmenting the I/O with either latch or multiplexor.

Then she loaded Forth on her computer from tape and used it to send numbers out to her keyboard's hexadecimal display.

We stopped for a few minutes while Bob, Bill, and some of the engineers discussed whether Motorola wanted to ask us for permission to use the keyboard decoder/numeric display design and code for an application note, and the upshot was that they did, and the five of us agreed to discuss that with the rest of the group.

Most of the engineers were appreciative of Julia's Forth examples, and I explained what I had done to get the drivers to work, mentioning that we hadn't solved the disk problems yet for Forth.

My disk interface was the topic of considerable discussion, and Ms. Philips and Ms. Steward quickly produced a sharing addendum to allow us to get the schematics out for everyone to look at. Before long, Julia and I had another addendum to our agreements -- an internship contract for producing several tech notes on the use of the 6801 as a floppy disk controller. The addendum allowed Motorola the option of building a semi-custom "system on a chip" SOC floppy disk controller based on my circuits.

Denny had already shared the schematics Julia had drawn up from my scrawls with some of his friends. But now the context was Motorola, so the addendum was deemed wise.

"Ah, to be an undergrad with all the time in the world again," Tobias reflected jocularly. "Do you think you could get a 6805 to handle the floppy controller functions?"

I tilted my head and thought. "That would probably limit sector size, with X being only eight bits. Come to think of it, the size of X might require enough extra code to prevent the processor from keeping up with the data."

Another engineer, Sharon, asked, "What's your general impression of the 6805?"

"It does the job for little things like the keyboard controller," our Bob volunteered.

I concurred.

There was general approval of that analysis.

"But I miss stack support," I added.

"On an eight-bitter?" Jesse queried. "You'd prefer the 6502, maybe?"

Jennifer noted, "The 6502 is a clever design, but it belongs to MOS Technologies and Commodore, doesn't it?"

(In the real world, Motorola might have been smart to use their patent agreements with MOS Technologies and second-source the 6502 in the late 1970s. They did offer to produce SOC chips with the 6502 as the CPU core in the mid-to-late 1980s. But that history is not for this story.)

"The 6502 is a good chip," I asserted. "It straddles some boundaries like the 6809, but I think the way it does so constrains compatible upgrade paths." I paused for thought and emphasis. "Every application wants room to grow. Maybe some shouldn't, but many can profitably grow in scope and function. And growing software reliably wants things like code re-use by re-entrant subroutine call, and keeping subroutines re-entrant requires something like a stack that you can push to and pop from, for parameters and local variables. There's no push or pop on the 6805."

Julia added, "Even if you aren't calling subroutines a lot, a stack helps manage RAM. Global RAM is harder to keep track of, even if you never re-use any variables."

I turned and raised my eyebrows. "You're picking this stuff up."

"A little. Dad has been explaining things you haven't."

"Oh. Sorry. I'll have to do better."

"It's okay." She smiled. "He enjoys it. He always wanted his oldest child to be an engineer."

"Now I know why he likes me so much."

We grinned at each other, then Julia coughed discreetly.

I ducked my head and turned back to the engineers, several of whom were quietly clapping their hands, rolling their eyes, or pretending to give us wolf-whistles.

"Anyway, as Julia points out, a stack you can reference makes RAM much easier to manage. Of course, you can synthesize a stack, but synthesizing is slow, and a disincentive, and the code to support the synthesized stack is a distraction."

An engineer named Pete objected. "Moving up to the 6801 is not that hard."

"But it does require reworking a lot of the code, and checking all of it for side-effects of the differences between the two," I parried. "And there are the bit manipulation instructions in the 6805 that the 6801 does not have, easy enough to synthesize on the 6801, but still requiring time and effort. Adding stack support to the 6805 ought not to be that much of a change, and it would support quite a bit of application growth. That would give the customers' engineers much more confidence in choosing the improved 6805 for small projects with the potential to become large."

(The 68HC11, an evolutionary step from the 6801 that Motorola introduced in 1984, did have bit manipulation instructions. And the 6805 itself later evolved to the confusingly named 68HC08, which did introduce more complete stack support via instruction pre-byte escape -- single stack with stack indexing, as opposed to the dual stack and index marking I suggest  below. In the real world. Several years later.)

Jesse countered, "Okay, how do you propose to add stack support with minimal change? Pre-bytes like on the 6809 are too expensive for a pure eight-bitter."

(Well, they were just a little too expensive in the early 1980s.)

"Add a second stack register. Maybe call it U for user stack, following the 6809's register naming. Add push and pop instructions that push and pop to the U stack, and transfer instructions that allow moving U to X and back. And instructions to save U and restore it using the S stack. Eight instructions should do the trick."

Julia handed me a sheet of scratch paper, and I wrote down the additional instructions:
PSHUA, PULUA
PSHUX, PULUX
PSHSU, PULSU
TUX, TXU
I drew out a map of the registers of the 6805, except for the condition codes:

6805 register b15b14b13b12 b11b10b9b8 b7b6b5b4 b3b2b1b0
A:
A7A6A5A4 A3A2A1A0
X:
X7X6X5X4 X3X2X1X0
SP:00000000 1(SP6)SP5SP4 SP3SP2SP1SP0
PC: ------PC12 PC11PC10PC9PC8 PC7PC6PC5PC4 PC3PC2PC1PC0

Then I drew out a modified map, including the U stack:

2805 register b15b14b13b12 b11b10b9b8 b7b6b5b4 b3b2b1b0
A:
A7A6A5A4 A3A2A1A0
X:
X7X6X5X4 X3X2X1X0
U:00000000 1(U6)U5U4 U3U2U1U0
SP:00000001 00SP5SP4 SP3SP2SP1SP0
PC: ------PC12 PC11PC10PC9PC8 PC7PC6PC5PC4 PC3PC2PC1PC0

"Keeping the stacks separate will allow moving the return stack out of the direct page. It could then be given its own port to the CPU, in its own address space, with separate on-chip address and data lines. That would allow proceeding to the next instruction while the call instruction stacks the return address. That way, calls should end up costing no more than jumps, and it should be possible to make the return operator faster, as well."

The comment about calls taking less time got some discussion of a nature too technical to bore you with here.

Except for the subroutine entry and exit protocol. "Subroutines," I continued, "could look like this:"
ROUTINEA
    TUX
    LDA 0,X ; 1st parameter
    LDX 1,X ; 2nd parameter
    ...
    TUX
    LDA 2,X ; 3rd parameter
    ...
    INX ; clear all parameters
    INX
    INX
    TXU
    RTS
"But X is only eight bits," an engineer named Wayne objected.

"The S register is only six or seven bits in the 6805. The return stack is so small it that it will run out of memory before it cycles through the addresses allocated to it in the direct page. But you can move it out of the direct page and no one would notice, and it could still be effectively less than eight bits to be decremented and incremented by the push and pop.

"If it weren't for wanting to sometimes directly shift local variables, and the lack of sixteen-bit index offsets for the unary instructions in the 6805, you could put the parameter stack outside the direct page, too. Putting it where the return stack is now should be no problem, at any rate, and allow access by unary instructions."

Several of the engineers started scribbling on scratch paper.

Sharon said, "This could be useful."

An engineer named Chuck intoned, "Room in the design for improvement is good engineering."

Bill asked, "Are you taking notes on this, Julia?"

"Is that okay?"

"Can we get a copy, and can we mark parts we don't want shared outside?"

"Sure."

"In that case, thank you, make sure you get Chuck's comment about room for improvement in, too, and please continue."

He and Motorola's Bob again exchanged silent words, and both nodded in agreement.

I shook my head and said quietly, "Julia, I presume upon you too much."

Julia grinned. "I'll claim my pay when we get back home."

I grinned back.

"Get a room!" There was a bit of chuckling. We had an audience again.

An engineer named Jack objected. "Isn't dedicating RAM to a second stack a waste?"

I shook my head. "RAM is easy to make and relatively easy to test, isn't it? Shouldn't it be cheap? Like candy. And the call stack doesn't have to be completely inaccessible. If it's in the extended address space, it would be accessible via extended addressing or 16-bit index offsets."

An engineer named Monty grumbled to himself. "Testing RAM is a good way to bring up new processes, too. Forcing the customer to scrimp on RAM is just a little anti-social."

Motorola's Bob chuckled at that, and asked Julia to quote Monty on it.

Jesse was also sketching something on note paper. "Separate address spaces. We could put part of the direct page RAM in its own address space and give it its own port to the ALU, and shave a cycle of access time for that area in direct page RAM," he muttered, half to himself.

Julia repeated, sub-vocalizing, "... shave a cycle for the direct page RAM access."

Jennifer overheard Jesse, and asked him, "Could that be done without making it difficult to speed the processor up?"

Jesse scratched his head. "Actually, if we're careful, it should make it easier to keep things in sync in a process shrink."

"I was thinking about overclocking."

Jesse chuckled. "Overclocking is one of those dirty secrets we don't talk about, but it can be used to predict whether certain aspects of a process shrink will work."

Our Bob joined him in chuckling.

"Is a process shrink where you make the masks smaller?" Jennifer asked.

Our Bob nodded.

Jesse answered, "It's more than that, but, yeah."

"Could that be used to improve access time to the parameter stack?" I asked.

"That would be a bit more complicated," he replied. "Might be too much beyond the concept of an eight-bit micro-controller."

"You know," I commented, "one thing I'd like to have is a way for the CPU to catch things when calls or interrupts try to push too much on the stack, and when return instructions try to pull too much off."

"How can you save state on the stack when the stack isn't valid?" Wayne asked in a tone that was almost rhetorical.

"Could you have a limit register for S that could trigger an interrupt when a call or interrupt would decrement S below it? The limit register could be set by the program, high enough to allow the stack interrupt room to save state without walking on variables."

Jesse looked up from his scratch calculations. "Shadow register sets that get switched in when handling interrupts could be a rather more elegant solution to the stack overflow conundrum."

Julia held her hand up. "Can you help me write that as a note?"

"Interrupts work like calls on our processors. They save the processor state on the call stack. That allows interrupts to nest, to a certain extent. A stack overflow interrupt would fundamentally be unable to nest anyway, so saving state somewhere else might make sense. Some processors have shadow registers --"

Our Bob cleared his throat and said, in a loud whisper, "Z-80. And the 68000's A7 system stack, although that's just one register."

"-- for fast context switches." Jesse chuckled before continuing. "Shadow registers might be one place where you could save the processor's state on stack overflow."

Julia and Ms. Philips conferred with Jesse and our Bob on this and Julia continued with her notes.

"Speaking of the interrupt stack," an engineer named Craig pointed out, "stacking the U stack on interrupts will mess with stack frame compatibility."

"That's part of the reason I call this ideal processor with conflicting specifications the 2805," I explained.

"Conflicting specifications," Motorola's Bob chuckled, and all the engineers joined him.

Julia looked at me in puzzlement.

Tobias explained with a grin: "Conflicting specifications is part of what makes engineering fun." That got more chuckles.

"Giving the processor another name would help let customers know not to expect perfect compatibility," Wayne nodded. "But it also might make sense to not automatically save the U stack pointer." He frowned in thought.

"Assume the interrupt handler routine will behave nicely with the interrupted routine's parameter space, or switch it out itself?" I asked.

"Something like that. There won't be a lot of RAM to switch the stack around in, in a 6805."

"True."

"So, while we're critiquing the 6805, is there anything else?" Motorola's Bob asked.

"Not enough I/O pins. We had to use either an external 8 bit latch or an external multiplexor to get enough I/O bits to read 64 keys and communicate with the main CPU. If we had a package with sixteen more bits of I/O, we could decode larger keyboards without external parts and still give a parallel interface to the main processor. A serial keyboard interface could be done with fewer, but it would still need more than we have."

Julia looked up as she handed Ms. Steward another page-full of notes. "Serial keyboard cables will be better for office computers anyway, right, Joe?"

I agreed.

Jesse nodded, too. "Flatpack can give 64 pins in a reasonably small package. Socketing those is expensive for now, but surface mount is cheap."

Julia stopped him for explanation, and he drew pictures for her. "Flat-pick looks more like a square black chip than a millipede. Contacts on the edges like this. Sockets for them look like cups, but they are often soldered flat on top of the circuit board."


"So separate parts might actually be a better engineering option?" I asked.

"Maybe."

"Anything else?" Motorola's Bob prompted.

"Daydreams?" I laughed.

"Sure." He grinned.

"The 6801's eight-bit multiply is useful. A pair of eight-bit divides -- integer and fractional -- might be useful, too. But I'm thinking about a complete one-bit multiply and one-bit divide."

He furrowed his brow. "Single bit? That seems like swimming against the current."

"Software multiplies spend a lot of time in branch instructions. If you could do a full single-bit multiply with one instruction and stack those instructions up, you could cut the time for a multiply to maybe a quarter of the time of a software multiply on the 6805 and 6801, without the complexity of a full multiplier circuit. You could get similar improvements with a single-bit divide."

(Again, many versions of the 6805 ended up getting a full 8-bit multiplier circuit, and the 68HC11 ended up getting both the 8-bit integer and fractional divides, in the real world.)

Craig responded. "Which algorithm, and how are the arguments addressed? Several known pits to fall into, but it might be worth looking at again."

Bill had picked up the Forth listing, and was looking at the first page.

"This is the license for using Forth?" he asked.

"For the Forth Interest Group's model interpreter," I replied

Monty explained, "There are many Forth development systems with more traditional licensing. The Forth Interest Group uses the liberal license and some of the models are known to be a little buggy in places. In some cases, it's almost as if they just threw code over the wall and abandoned it."

"How do you mean?" Bob asked.

"A liberal license requires an active development team to be useful. The development team can charge to fix bugs. But their model interpreter for our 6800 has nobody following up on it."

Bill laughed. "There's something cynical about giving code away for free and charging to fix bugs."

Monty shrugged. "On the other hand, the user is also able to look for and fix bugs himself. I saw this work at MIT. The group that works with the liberally licensed LISP interpreters only allows contributions that are liberally licensed into their code base. It's a rather elegant approach to sharing. Code that doesn't get used doesn't get fixed."

Bill's forehead wrinkled. "Elegant and efficient. Survival of the fittest. Hmm."

(I should note, I was actually as prescient as the me of this chapter -- two or three years later in my college career in the real world.

And we should also assure ourselves that the real engineers who worked for the real Motorola were aware of pretty much all of this.

Which path is best is often not clear. Motorola's management in the real world made decisions that, in hindsight, appear to have been counterproductive. Examining certain of those decisions is part of my reason for writing this story.

Hindsight does appear to be clearer than foresight, which is precisely the reason that this story is something of a waste of time, in effect, an idolatry of idealized abstract mathematical machines.

But if we are comparing ways to destructively waste time, I think it's less a waste of time than body pornography -- that's essentially an idolatry of idealized bodies. Modern pornography adds saccharin personality to the mix. Some rich person's ideal, not real, imaginary value only.

Speaking of the real world, of course you know, in the real world, Motorola's management and engineers had no reason to do blue-sky brainstorming like this with me, much less believe my ideas. But for this experiment to work, in the world of this novel, they must.)

Chapter 14.1: Rocks -- what?

[Backed up at https://joel-rees-economics.blogspot.com/2020/08/bk-33209-rocks-2805.html.]


Backup: 33209: Rocks -- 2805

Backup of https://joelrees-novels.blogspot.com/2020/08/33209-rocks-2805.html.

Chapter 13.8 Straits -- Intellectual Property Agreements

Chapter 14.0: Rocks -- 2805

[202008262244 -- 2nd edit, with register maps:]

Bill grinned sardonically. "Well, I think this will work out well."

(You may want to put your BS meter away for this chapter, or at least set the threshold level pretty high.)

Bob chuckled. "Stephanie, can you get together with Carrie and see that what these three signed gets replaced with a more appropriate agreement?"

"I'd be happy to, sir."

"The same as Joe and Julia's agreements, with an addendum for their projects?" Ms. Philips asked.

Bill answered for him. "Yes, yes, of course."

And Bob nodded.

Ms. Steward, Ms. Philips, Mike, our Bob, and Jennifer got together at one end of the table.

As Julia and I connected her mainboard to one of the TVs, I whispered to her. "I thought the two guys were from Motorola's legal department."

"I did, too," she whispered back. "Must be much higher up in management."

I nodded my agreement.

(No, I never even came close to meeting Motorola's Bob and Bill in the real world.)

A number of engineers came in, bringing in pizza and liquid refreshment.

"Your friends," Motorola's Bob said to me with a grin, "are having pizza elsewhere. I think we should have some pizza in here, too." He turned to one of the engineers. "Jeff, I hope there's something non-alcoholic to drink?"

The engineer named Jeff started, and looked up guiltily from the six-packs he was carrying. "Erm ...."

An engineer on the other side of the room called out, "Denny made sure we had root beer, and I made sure we had some other options." He held up two-liter bottles of soft drinks. "Not all of us are fueled by beer."

"Good job, Tobe."

Tobias gave Bob a thumbs-up.

As we ate pizza and talked, we demonstrated what we had done so far -- the ROM menus, BASIC, TSC's debug system, and Flex, and using Flex to run Motorola's assemblers.

We shared some comments and discussion of the process of getting Flex to run on the Micro Chroma 68, and I described my dynamic RAM refresh circuit, explaining how I borrowed the video scan counter of the 6847, and mentioning the problems I had run into with my original design. I also explained the simplistic bank switching that made it possible to run Flex.

Several of the engineers commented on how my refresh circuit sounded similar to a circuit the engineers who worked with Radio Shack on the Color Computer had produced before they designed the sequential address multiplexor as a separate circuit. Not yet being familiar with the SAM, I couldn't comment.

Jennifer, our Bob, and Mike had taken care of their paperwork by then. Bob knew something about the SAM already, and he discussed it a bit with the engineers.

We showed them the 6801 daughterboard on Julia's mainboard, and her keyboard, and she described the way we were using the 6805 and its timer to scan and debounce the keyboard and control the hexadecimal display, augmenting the I/O with either latch or multiplexor.

Then she loaded Forth on her computer from tape and used it to send numbers out to her keyboard's hexadecimal display.

We stopped for a few minutes while Bob, Bill, and some of the managing engineers discussed whether Motorola wanted to ask us for permission to use the keyboard decoder/numeric display design and code for an application note, and the upshot was that they did, and the five of us agreed to discuss that with the rest of the group.

Most of the engineers were appreciative of Julia's Forth examples, and I explained what I had done to get the drivers to work, mentioning that we hadn't solved the disk problems yet for Forth.

My disk interface was the topic of considerable discussion, and Ms. Philips and Ms. Steward quickly produced a sharing addendum to allow us to get the schematics out for everyone to look at. Before long, Julia and I had an addendum to our agreement, an internship contract for producing several tech notes on the use of the 6801 as a floppy disk controller. The addendum allowed Motorola the option of building a semi-custom "system on a chip" SOC floppy disk controller based on my circuits.

Denny had already shared the schematics Julia had drawn up from my scrawls with some of his friends. But now the context was Motorola, so the addendum was deemed wise.

"Ah, to be an undergrad with all the time in the world again," Tobias reflected jocularly. "Do you think you could get a 6805 to handle the floppy controller functions?"

I tilted my head and thought. "That would probably limit sector size, with X being only eight bits. Come to think of it, the size of X might require enough extra code to prevent the processor from keeping up with the data."

Another engineer, Sharon, asked, "What's your general impression of the 6805?"

"It does the job for little things like the keyboard controller," our Bob volunteered.

I concurred.

There was general approval of that analysis.

"But I miss stack support," I added.

"On an eight-bitter?" Jeff queried. "You'd prefer the 6502, maybe?"

Jennifer noted, "The 6502 is a clever design, but it belongs to MOS Technologies and Commodore, doesn't it?"

(In the real world, Motorola might have been smart to use their patent agreements with MOS Technologies and second-source the 6502 in the late 1970s. They did offer to produce SOC chips with the 6502 as the CPU core in the mid-to-late 1980s. But that idea is not for this story.)

"The 6502 is a good chip," I asserted. "It straddles some boundaries like the 6809, but I think the way it does so constrains compatible upgrade paths." I paused for thought and emphasis. "Every application wants room to grow. Maybe some shouldn't, but many can profitably grow in scope and function. And growing software reliably wants things like code re-use by re-entrant subroutine call, and keeping subroutines re-entrant requires something like a stack that you can push to and pop from, for parameters and local variables. There's no push or pop on the 6805."

Julia added, "Even if you aren't calling subroutines a lot, a stack helps manage RAM. Global RAM is harder to keep track of, even if you never re-use any variables."

I turned and raised my eyebrows. "You're picking this stuff up."

"A little. Dad has been explaining things you haven't."

"Oh. Sorry. I'll have to do better."

"It's okay." She smiled. "He enjoys it. He always wanted his oldest child to be an engineer."

"Now I know why he likes me so much."

We grinned at each other, then Julia coughed discreetly.

I ducked my head and turned back to the engineers, several of whom were quietly clapping their hands, rolling their eyes, or pretending to give us wolf-whistles.

"Anyway, as Julia points out, a stack you can reference makes RAM much easier to manage. Of course, you can synthesize a stack, but synthesizing is slow, and a disincentive, and the code to support the synthesized stack is a distraction."

An engineer named Pete objected. "Moving up to the 6801 is not that hard."

"But it does require reworking a lot of the code, and checking all of it for side-effects of the differences between the two," I parried. "And there are the bit manipulation instructions in the 6805 that the 6801 does not have, easy enough to synthesize on the 6801, but still requiring time and effort. Adding stack support to the 6805 ought not to be that much of a change, and it would support quite a bit of application growth. That would give the customers' engineers much more confidence in choosing the improved 6805 for small projects with the potential to become large."

(The 68HC11, an evolutionary step from the 6801 that Motorola introduced in 1984, did have bit manipulation instructions. And the 6805 itself later evolved to the confusingly named 68HC08, which did introduce more complete stack support via instruction pre-byte escape -- single stack with stack indexing, as opposed to the dual stack and index marking I suggest  below. In the real world. Several years later.)

Jeff countered, "Okay, how do you propose to add stack support with minimal change? Pre-bytes like on the 6809 are too expensive for a pure eight-bitter."

(Well, they were too expensive in the early 1980s.)

"Add a second stack register. Maybe call it U for user stack, following the 6809's register naming. Add push and pop instructions that push and pop to the U stack, and transfer instructions that allow moving U to X and back. And instructions to save U and restore it using the S stack. Eight instructions should do the trick."

Julia handed me a sheet of scratch paper, and I wrote down the additional instructions:
PSHUA, PULUA
PSHUX, PULUX
PSHSU, PULSU
TUX, TXU
I drew out a map of the registers of the 6805, except for the condition codes:

6805 register b15b14b13b12 b11b10b9b8 b7b6b5b4 b3b2b1b0
A:
A7A6A5A4 A3A2A1A0
X:
X7X6X5X4 X3X2X1X0
SP:00000000 1(SP6)SP5SP4 SP3SP2SP1SP0
PC: ------PC12 PC11PC10PC9PC8 PC7PC6PC5PC4 PC3PC2PC1PC0

Then I drew out a modified map, including the U stack:

2805 register b15b14b13b12 b11b10b9b8 b7b6b5b4 b3b2b1b0
A:
A7A6A5A4 A3A2A1A0
X:
X7X6X5X4 X3X2X1X0
U:00000000 1(U6)U5U4 U3U2U1U0
SP:00000001 00SP5SP4 SP3SP2SP1SP0
PC: ------PC12 PC11PC10PC9PC8 PC7PC6PC5PC4 PC3PC2PC1PC0

"Keeping the stacks separate will allow moving the return stack out of the direct page. It could also be given its own port to the CPU, in its own address space, with separate address and data lines. That would allow proceeding to the next instruction while the call instruction stacks the return address. That way, calls should end up costing no more than jumps, and it should be possible to make the return operator faster, as well."

The comment about calls taking less time got some attention and discussion.

"Subroutines," I continued, could look like this:
ROUTINEA
    TUX
    LDA 0,X ; 1st parameter
    LDX 1,X ; 2nd parameter
    ...
    TUX
    LDA 2,X ; 3rd parameter
    ...
    INX ; clear all parameters
    INX
    INX
    TXU
    RTS
"But X is only eight bits," an engineer named Wayne objected.

"S is only six or seven bits in the 6805. The return stack is so small it that it will run out of memory before it cycles through the addresses allocated to it in the direct page. But you can move it out of the direct page and no one would notice, and it could still be effectively less than eight bits to be decremented and incremented by the push and pop.

"If it weren't for wanting to sometimes directly shift local variables, and the lack of sixteen-bit index offsets for the unary instructions in the 6805, you could put the parameter stack outside the direct page, too. Putting it where the return stack is now should be no problem, at any rate, and allow access by unary instructions."

Several of the engineers started scribbling on scratch paper.

Sharon said, "This could be useful."

An engineer named Chuck intoned, "Room in the design for improvement is good engineering."

Bill asked, "Are you taking notes on this, Julia?"

"Is that okay?"

"Can we get a copy, and can we mark parts we don't want shared outside?"

"Sure."

"In that case, thank you, make sure you get that bit about room for improvement in, and please continue."

He and Motorola's Bob again exchanged silent words, and both nodded in agreement.

I shook my head and said quietly, "I presume upon you too much."

Julia grinned. "I'll claim my pay when we get back home."

I grinned back.

"Get a room!" There was a bit of chuckling. We had an audience again.

An engineer named Jack objected. "Isn't dedicating RAM to a second stack a waste?"

I shook my head. "RAM is easy to make and relatively easy to test, isn't it? Shouldn't it be cheap? Like candy. And the call stack doesn't have to be completely inaccessible. If it's in the extended address space, it would be accessible via extended addressing or 16-bit index offsets."

An engineer named Monty grumbled to himself. "Testing RAM is a good way to bring up new processes, too. Forcing the customer to scrimp on RAM is just a little anti-social."

Motorola's Bob chuckled at that, and asked Julia to quote Monty on it.

Jeff was also sketching something on note paper. "Separate address spaces. We could put part of the direct page RAM in its own address space and give it its own port to the ALU, and shave a cycle of access time for that area in direct page RAM," he muttered, half to himself.

Julia repeated, sub-vocalizing, "... shave a cycle for the direct page RAM."

Jennifer overheard Jeff, and asked him, "Could that be done without making it difficult to speed the processor up?"

Jeff scratched his head. "Actually, if we're careful, it should make it easier to keep things in sync in a process shrink."

"I was thinking about overclocking."

Jeff chuckled. "Overclocking is one of those dirty secrets we don't talk about, but it can be used to predict whether certain aspects of a process shrink will work."

Our Bob joined him in chuckling.

"Is a process shrink where you make the masks smaller?" Jennifer asked.

Our Bob nodded.

Jeff answered, "It's more than that, but, yeah."

"Could that be used to improve access time to the parameter stack?" I asked.

"That would be a bit more complicated," he replied. "Might be too much beyond the concept of an eight-bit micro-controller."

"You know," I commented, "one thing I'd like to have is a way for the CPU to catch the condition when calls or interrupts try to push too much on the stack, and when return instructions try to pull too much off."

"How can you save state on the stack when the stack isn't valid?" Wayne asked in a tone that was almost rhetorical.

"Could you have a limit register for S that could trigger an interrupt when a call or interrupt would decrement S below it? The limit register could be set by the program, high enough to allow the stack interrupt room to save state without walking on variables."

Jeff looked up from his scratch calculations. "Shadow register sets that get switched in when handling interrupts could be a rather elegant solution to the stack overflow conundrum."

Julia held her hand up. "Can you help me write that as a note?"

"Interrupts work like calls on our processors. They save the processor state on the call stack. That allows interrupts to nest, to a certain extent. A stack overflow interrupt would fundamentally be unable to nest, so saving state somewhere else might make sense. Some processors have shadow registers --"

Our Bob cleared his throat and said, in a loud whisper, "Z-80. And the 68000's A7 system stack, although that's just one register."

"-- for fast context switches. Shadow registers might be one place where you could save the processor's state on stack overflow."

Julia and Ms. Philips conferred with Jeff and our Bob on this and Julia continued with her notes.

"Speaking of the interrupt stack," an engineer named Greg pointed out, "stacking the U stack on interrupts will mess with stack frame compatibility."

"That's part of the reason I call this ideal processor with conflicting specifications the 2805," I explained.

"Conflicting specifications," Motorola's Bob chuckled, and all the engineers joined him.

"Giving the processor another name would help let customers know not to expect perfect compatibility," Wayne nodded. "But it also might make sense not to automatically save the U stack pointer." He frowned in thought.

"So, while we're critiquing the 6805, is there anything else?" Motorola's Bob asked.

"Not enough I/O pins. We had to use either an external 8 bit latch or an external multiplexor to get enough I/O bits to read 64 keys. If we had a package with sixteen more bits of I/O, we could decode larger keyboards without external parts and still give a parallel interface to the main processor. A serial keyboard interface could be done with fewer, but it would still need more than we have."

Julia looked up as she handed Ms. Steward another page-full of notes. "Serial keyboard cables will be better for office computers anyway, right, Joe?"

I agreed.

Jeff nodded. "Flatpack can give 64 pins in a reasonably small package. Socketing those is expensive for now, but surface mount is cheap."

Julia stopped him for explanation, and he drew pictures for her. "Flat-pick looks more like a square black chip than a millipede. Contacts on the edges like this. Sockets for them look like cups, but they are often soldered flat on the circuit board."

"So separate parts might actually be a better engineering option?" I asked.

"Maybe."

"Anything else?" Motorola's Bob prompted.

"Daydreaming time?" I laughed.

"Sure." He grinned.

"The 6801's eight-bit multiply is useful. A pair of eight-bit divides -- integer and fractional -- might be useful, too. But I'm thinking about a complete one-bit multiply and one-bit divide."

He furrowed his brow. "Single bit? That seems like swimming against the current."

"Software multiplies spend a lot of time in branch instructions. If you could do a full single-bit multiply with one instruction and stack those instructions up, you could cut the time for a multiply to maybe a quarter of the time of a software multiply on the 6805 and 6801, without the complexity of a full multiplier circuit. You could get similar improvements with a single-bit divide."

(Again, many versions of the 6805 ended up getting a full 8-bit multiplier circuit, and the 68HC11 ended up getting both the 8-bit integer and fractional divides, in the real world.)

Greg responded. "Which algorithm, and how are the arguments addressed? Several known pits to fall into, but it might be worth looking at again."

Bill had picked up the Forth listing, and was looking at the first page.

"This is the license for using Forth?" he asked.

"For the Forth Interest Group's model interpreter," I replied

Monty explained, "There are many Forth development systems with more traditional licensing. The Forth Interest Group uses the liberal license and some of the models are known to be a little buggy in places. In some cases, it's almost as if they just threw code over the wall and abandoned it."

"How do you mean?" Bob asked.

"A liberal license requires an active development team to be useful. The development team can charge to fix bugs. But their model for our 6800 has nobody following up on it."

Bill laughed. "There's something cynical about that."

Monty shrugged. "On the other hand, the user is also able to look for and fix bugs. I saw this work at MIT. The group that works with the liberally licensed LISP interpreters only allows contributions that are liberally licensed into their code base. It's a rather elegant approach to sharing. Code that doesn't get used doesn't get fixed."

Bill's forehead wrinkled. "Elegant and efficient. Survival of the fittest. Hmm."

(I should note, I was actually as prescient as the me of this novel -- two or three years later in my college career in the real world.

And we should also assure ourselves that the real engineers who worked for the real Motorola were aware of pretty much all of this.

Which path is best is often not clear. Motorola's management in the real world made decisions that, in hindsight, appear to have been counterproductive. Examining certain of those decisions is part of my reason for writing this story.

Hindsight does appear to be clearer than foresight, which is precisely the reason that this story is something of a waste of time, in effect, an idolatry of idealized abstract mathematical machines.

But I think it's less a waste of time than body pornography -- that's essentially an idolatry of idealized bodies. Modern pornography adds saccharin personality to the mix. Ideal, not real, imaginary value only.

Speaking of the real world, of course you know that, in the real world, Motorola's management and engineers had no reason to do blue-sky brainstorming like this with me, much less believe my ideas. But for this experiment to work, in the world of this novel, they must.)

[202008262244 -- 2nd edit, with register maps.]

[202008242104 -- original edit:]
Bill grinned sardonically. "Well, I think this will work well."

(You may want to put your BS meter away for this chapter.)

Bob chuckled. "Stephanie, can you get together with Carrie and see that what these three signed gets replaced with a more appropriate agreement?"

"I'd be happy to, sir."

"The same as Joe and Julia's agreements, with an addendum for their projects?" Ms. Philips asked.

Bill answered for him. "Yes, yes, of course."

And Bob nodded.

Ms. Steward, Ms. Philips, Mike, Bob, and Jennifer got together at one end of the table.

As Julia and I connected her mainboard to one of the TVs, I whispered to her. "I thought the two guys were from Motorola's legal department."

"I did, too," she whispered back. "Must be much higher up in management."

I nodded my agreement.

(No, I never even came close to meeting Bob and Bill in the real world.)

A number of engineers came in, bringing in pizza and liquid refreshment.

"Your friends," Bob said to me with a grin, "are having pizza elsewhere. I think we should have some pizza in here, too." He turned to one of the engineers. "Jeff, I hope there's something non-alcoholic to drink?"

Jeff started and looked up guiltily from the six-packs he was carrying. "Erm ...."

An engineer on the other side of the room called out, "Denny made sure we had root beer, and I made sure we had some other options." He held up two-liter bottles of soft drinks. "Not all of us are fueled by beer."

As we ate pizza and talked, we demonstrated what we had done so far -- the ROM menus, BASIC, TSC's debug system, and Flex, and using Flex to run Motorola's assemblers.

We shared some comments and discussion of the process of getting Flex to run on the Micro Chroma 68, and I described my dynamic RAM refresh circuit, explaining how I borrowed the video scan counter of the 6847, and mentioning the problems I had run into with my original design. I also explained the simplistic bank switching that made it possible to run Flex.

Several of the engineers commented on how my refresh circuit sounded similar to a circuit the engineers who worked with Radio Shack on the Color Computer had produced before they designed the sequential address multiplexor as a separate circuit. Not yet being familiar with the SAM, I couldn't comment.

Bob, Jennifer, and Mike had taken care of their paperwork by then. Bob knew something about the SAM already, and he asked the engineers some questions about it.

We showed them the 6801 daughterboard on Julia's mainboard, and her keyboard, and she described the how we were using the 6805 and its timer to scan and debounce the keyboard and control the hexadecimal display, augmenting the I/O with either latch or multiplexor.

Then she loaded Forth on her computer from tape and used it to send numbers out to her keyboard's hexadecimal display.

We stopped for a few minutes while Bob, Bill, and some of the managing engineers discussed whether Motorola wanted to ask us for the keyboard decoder code and design for an application note, and the upshot was that they did, and we agreed to discuss that with the rest of the group.

Most of the engineers were appreciative of the Forth examples, and I explained what I had done to get the drivers to work, mentioning that we hadn't solved the disk problems yet for Forth.

My disk interface was the topic of considerable discussion, and Ms. Philips and Ms. Steward quickly produced a sharing addendum to allow us to get the schematics out for everyone to look at. Before long, Julia and I had an addendum to our agreement, a contract for producing several tech notes on the use of the 6801 as a floppy disk controller. The addendum allowed Motorola the option of building a semi-custom "system on a chip" SOC floppy disk controller based on my circuits.

Denny had already shared the schematics Julia had drawn up from my scrawls with some of his friends, but the context was now Motorola, so the addendum was deemed wise.

"Ah, to be an undergrad with all the time in the world again. Do you think you could get a 6805 to handle that?" an engineer named Tobias asked.

I tilted my head and thought. "That would probably limit sector size, with X being only eight bits. Come to think of it, the size of X might require enough extra code to prevent the processor from keeping up with the data."

Another engineer, named Sharon, asked, "What's your general impression of the 6805?"

"It does the job for little things like the keyboard controller," Bob volunteered.

I concurred.

There was general approval of that analysis.

"But I miss stack support," I added.

"On an eight-bitter?" Jeff queried. "You'd prefer the 6502, maybe?"

Jennifer noted, "The 6502 is a clever design, but it belongs to MOS Technologies and Commodore."

(In the real world, Motorola might have been smart to use their patent agreements with MOS Technologies and second-source the 6502 in the late 1970s. They did offer to produce SOC chips with the 6502 as the CPU core in the mid-to-late 1980s. But that idea is not for this story.)

"The 6502 is a good chip. It straddles some boundaries like the 6809, but the way it does so constrains compatible upgrade paths," I asserted. 

"Every application wants room to grow," I continued. "Maybe some shouldn't, but some should, and growth wants things like code re-use by subroutine call, and keeping subroutines re-entrant requires something like a stack that you can push to and pop from, for parameters and local variables. There's no push or pop on the 6805."

Julia added, "Even if you aren't calling subroutines a lot, a stack helps manage RAM. Global RAM is harder to keep track of, even if you never re-use any variables."

I turned and raised my eyebrows. "You're picking this stuff up."

"A little. Dad has been explaining things you haven't."

"Oh. Sorry. I'll have to do better."

"It's okay." She smiled. "He enjoys it. He always wanted his oldest child to be an engineer."

"Now I know why he likes me so much."

We grinned at each other, then Julia coughed discreetly.

I ducked my head and turned back to the engineers, several of whom were quietly clapping their hands, rolling their eyes, or pretending to give us wolf-whistles.

"Anyway, as Julia points out, a stack you can reference makes RAM much easier to manage. Of course, you can synthesize a stack, but synthesizing is slow, and a disincentive, and the code to support the synthesized stack is a distraction."

An engineer named Pete objected. "Moving up to the 6801 is not that hard."

"But it does require reworking a lot of the code, and checking all of it. And there are the bit instructions in the 6805 that the 6801 does not have," I parried. "Adding stack support to the 6805 ought not to be that much of a change, and it would support quite a bit of project growth. That would give the customers' engineers much more confidence in choosing the 6805 for small projects with the potential to become large."

(The 68HC11, an evolutionary step from the 6801 that Motorola introduced in 1984, did have bit instructions. And the 6805 itself later evolved to the confusingly named 68HC08, which did introduce more complete stack support --  single stack with stack indexing via pre-byte, as opposed to the ideas I present below. In the real world. Years later.)

Jeff countered, "Okay, how do you propose to add stack support with minimal change? Prebytes like on the 6809 are too expensive."

(Well, they were too expensive in the early 1980s.)

"Add a second stack register, maybe call it U for user stack, following the 6809's register naming. Add push and pop instructions that push and pop to the U stack, and transfer instructions that allow moving U to X and back. And instructions to save U and restore it using the S stack. Eight instructions should do the trick."

Julia handed me a sheet of scratch paper, and I wrote down the additional instructions:
PSHUA, PULUA
PSHUX, PULUX
PSHSU, PULSU
TUX, TXU
"Keeping the stacks separate will allow moving the return stack out of the direct page. It could also be given its own port to the CPU, its own address space, with separate address and data lines. That would allow proceeding to the next instruction while the call stacks the return address. It should cost no more than jumps, and it should enable faster returns."

The comment about calls taking less time got some attention and discussion.

"Subroutines," I continued, could look like this:
ROUTINEA
    TUX
    LDA 0,X ; 1st parameter
    LDX 1,X ; 2nd parameter
    ...
    TUX
    LDA 2,X ; 3rd parameter
    ...
    INX ; clear all parameters
    INX
    INX
    TXU
    RTS
"But X is only eight bits," an engineer named Wayne objected.

"S is only eight bits in the 6805. The return stack is so small it that it will run out of memory before it cycles through the addresses in the direct page. But you can move it out of the direct page and no one would notice, and it would still be effectively less than eight bits that would change.

"If it weren't for wanting to sometimes directly shift local variables, and the lack of sixteen-bit index offsets for the unary instructions in the 6805, you could put the parameter stack outside the direct page, too. Putting it where the return stack is now should be no problem, at any rate, and allow access by unary instructions."

Several of the engineers started scribbling code out on scratch paper.

Sharon said, "This could be useful."

An engineer named Chuck intoned, "Room in the design for improvement is good engineering."

Bob asked, "Are you taking notes on this, Julia?"

"Is that okay?"

"Can we get a copy, and can we mark parts we don't want shared outside?"

"Sure."

"In that case, thank you, and please continue."

I shook my head and said quietly, "I presume upon you too much."

She grinned. "I'll claim my pay when we get back home."

I grinned back.

"Get a room!" There was a bit of chuckling. We had an audience again.

An engineer named Jack objected. "Isn't dedicating RAM to a second stack a waste?"

I shook my head. "RAM is easy to make and relatively easy to test, isn't it? Shouldn't it be cheap? Like candy. But it doesn't have to be completely inaccessible. It might be accessible via extended addressing or 16-bit index offsets."

An engineer named Monty grumbled, "Testing RAM is a good way to bring up new processes, too. Forcing the customer to scrimp on RAM is just a little anti-social."

Jeff was also sketching something on note paper. "Separate address spaces. We could put part of the direct page RAM in its own address space and shave a cycle of access time for that RAM," he muttered, half to himself.

"One thing I'd like to see in CPUs in general is a way to catch things when calls or interrupts try to push too much on the stack, and when return instructions try to pull too much off."

"How can you save state on the stack when the stack isn't valid?" Wayne asked in a tone that was almost rhetorical.

"I've thought about limit registers that can be set to trigger when any further push will leave no more room for an interrupt to save full state without walking on variables."

Jeff looked up from his sketching. "Shadow register sets that get switched in when handling interrupts are a rather elegant solution to the stack overflow conundrum."

"Speaking of the interrupt stack," an engineer named Greg said, "stacking the U stack on interrupts will mess with stack frame compatibility."

"That's part of the reason I call this ideal processor with conflicting specifications the 2805."

This drew chuckles from the engineers.

"Maybe it makes sense to not stack the parameter stack pointer automatically, or maybe you need to use another name so the developers know they need to make changes," Wayne nodded.

Bob chuckled. "So, while we're critiquing the 6805, is there anything else?"

"Not enough I/O pins. We had to use either an external 8 bit latch or an external multiplexor to read 64 keys. If we had a package with sixteen more bits of I/O, we could decode larger keyboards without external parts and still give a parallel interface to the main processor. Eight more would work if the interface is serial."

Jeff nodded. "Flatpack can give 64 pins in a reasonably small package. Socketing those is expensive for now, but surface mount is cheap."

"Separate parts might be preferred?" I asked.

"Maybe."

"Anything else?" Bob prompted.

"Daydreaming time?" I laughed.

"Sure." He grinned.

"The 6801's eight-bit multiply is useful. An eight-bit pair of divides, integer and fractional, might be useful, too. But I'm thinking about a complete one-bit multiply and one-bit divide."

Bob furrowed his brow. "Single bit? That seems like swimming against the current."

"Software multiplies spend a lot of time in branch instructions. If you could do a full single-bit multiply with one instruction and stack those instructions up, you could cut the time for a multiply in maybe a quarter of the time of a software multiply, without the complexity of a full multiplier circuit."

Greg responded. "Which algorithm, and how are the arguments addressed? Several known pits to fall into, but it might be worth looking at again."

Bill had picked up the Forth listing, and was looking at the first page.

"This is the license for using Forth?" he asked.

"For the Forth Interest Group's model interpreter," I replied

Monty explained, "There are many Forth development systems with more traditional licensing. The fig uses the liberal license and some of the models are known to be a little buggy in places. In some cases, it's almost as if they just threw code over the wall and abandoned it."

"How do you mean?" Bob asked.

"A liberal license requires an active development team to be useful. The development team can charge to fix bugs."

Bill laughed. "There's something cynical about that."

Monty shrugged. "On the other hand, the user is also able to look for and fix bugs. I saw this work at MIT. The group that works with the liberally licensed LISP interpreters only allows contributions that are liberally licensed into their code base. It's a rather elegant approach to sharing. Code that doesn't get used doesn't get fixed."

Bill's forehead wrinkled. "Elegant and efficient. Hmm."

(I should note, I was actually this prescient -- two or three years later in my college career. And we must also assure ourselves that the real engineers who worked for the real Motorola were aware of pretty much all of this. Which path was not clear. Management made decisions that, in hindsight, were counterproductive.

Motorola's management and engineers had no reason to talk with me like this in the real world, much less believe me. But for this experiment to work, in the world of this novel, they must.

Hindsight does seem to be clearer than foresight, which is precisely the reason that this story is something of a waste of time. But I think it's less a waste of time than certain very popular classes of fiction that a lot of people waste a lot of money on. Idolatry of idealized bodies and saccharin personalities can't be more healthy than idolatry of idealized abstract mathematical machines.)
[202008242104 -- original edit.]

Chapter 14.1: Rocks -- what?

[Backed up at https://joel-rees-economics.blogspot.com/2020/08/bk-33209-rocks-2805.html.]




Backup: 33209: Straits -- Intellectual Property Agreements

Backup of https://joelrees-novels.blogspot.com/2020/08/33209-straits-intellectual-property-agreements.html.

Chapter 13.7 Straits -- The Road to Austin

Chapter 13.8: Straits -- Intellectual Property Agreements


"Ms. Philips."

"Hi, Joe, Julia. We're glad you could both make it."

We were in a conference room that seemed large for just Julia, me, Ms. Philips, and the two men in suits flanking her, whom I supposed were from Motorola's legal department. Two small stacks of papers and a legal-size note pad lay in front of Ms. Philips.

"We seem to be underdressed," I began.

"No problem. You've been on the road, we didn't tell you what to expect. But if it's okay, we want to take video of our meeting again for management." She pointed out the cameras.

Julia and I both nodded.

"Sure."

"No problem."

Ms. Philips continued, "Management also wanted to get non-disclosures and some other IP agreements signed."

I checked with Julia and she gave me an inquisitive look.

I shrugged and turned back to Ms. Philips. "I guess we missed something here. We need NDAs and IP agreements?"

"Ahh ..." Now it was Ms. Philips turn to look puzzled. She turned to the man on her right.

"There are some chicken-and-egg problems here," he replied to her unasked question.

"Can't talk without agreeing not to talk?" Julia asked.

I nodded once in concurrence. "I don't know why we should need that kind of agreement. I'm just some guy taking tech courses at a podunk college in west Texas ..."

"Hey!" Julia gave me an elbow and a sharp look.

I returned her reproach with look of chagrin. "Okay, not podunk, but definitely not a big name like MIT, or even moderately well-known like Renssalaer Poly or Texas Tech."

She gave me another sharp look and I closed my eyes and nodded resignedly."I don't mean to disparage OC. It's a good school. But I don't think I'm doing anything special. Whose toes did I tread on?"

Ms. Philips laughed. "Not treading on toes. Just, well, it's a competitive industry, lots of players, not enough customers to support them all."

"Masaka." I shook my head. "Amortize the development cost and push the price down, and people'll be putting microcontrollers in everything. There won't be any bounds to the market."

None of the three sitting across the table from us commented on that.

"But I guess boards of directors start talking about market limits when they want control, and computers do carry that cachet of the mirage of control. I really must have tread somewhere too close to something, but I assume we can't expect an answer to that without a non-disclosure agreement?"

The man to Ms. Philips's right cleared his throat with a cough.

The man to her left said simply, "Please don't jump to conclusions."

"I guess I should have gotten Denny to give me more specifics." Julia and I both leaned forward to stand. "I'm not sure what I, uhm, we expected, but I feel like we've been caught out of position."

Now the man to her left smiled and waved for us to sit back down. "I must apologize. We should have coordinated better. Carrie, can I get a look at the paperwork?"

The man at her right frowned.

Julia and I both hesitated between sitting and standing.

"Sir." Ms. Philips handed him the stacks of papers.

He scanned them quickly. "Stock NDAs for new hires. Not appropriate here."

"Bob, ..." the man to her left began, and they exchanged an unspoken word or two before he leaned back with an air of dissatisfaction.

"Sir," Carrie pointed to certain paragraphs on the first page of one stack, "I edited certain clauses appropriately, made some substitutions and deletions, and changed the document ID." She turned to the next page.

Bob stopped her. "I'm sorry, Carrie, I should have taken a more direct hand in this. Do you have a legal pad?"

She handed him her legal pad

 took out some blank pages and wrote too quickly for me to follow upside-down without making myself too obvious. "Make it simple, limit it to best effort to avoid representing themselves as being privy to Motorola's plans until two years or superseded by other agreement. And state that we'll give our best effort to refrain from using their work without permission."

He looked up at me. "We'll take the responsibility of avoiding exposing you to sensitive materials, if you'll be responsible for not sharing things you don't want us to see. And if we need to share something, we can make specific agreements." He turned again to Ms. Philips. "You can add a clause about special agreements, as well."

Julia and I exchanged looks again.

Julia said, "I might be able to sign something like that."

I nodded in agreement, and Carrie stood and moved to a stenographer's typewriter in a corner.

The other man cleared his throat again.

"Okay, Bill, Let's hear it."

"Bob, you know that's going to be a lot of work to go through every time we want to work together on something new. Clumsy. And the board will raise Cain about lost revenue."

"Bill, you know as well as I that expected revenue can't be dealt with as revenue until we have legitimate reason to expect it, and NDAs and NCAs do not provide that reason. The board may not want to listen to sound economic principles, but there is no loss until there is something to be gained."

"I agree with that." Bob nodded.

"We have some good processors."

"Of course."

"But every time we get some grass-roots excitement going about our processors, we've  been having the engineers sign non-disclosures and non-competes, and suddenly all the market excitement evaporates into the long tail of big projects. I think we've been cutting off our corporate nose to spite our corporate face --"

"You've said that before."

"-- killing the goose that lays the golden egg." He turned to me. "Pardon the expression."

I grinned. "I don't see a problem with the expression, as long as it remains metaphor. And I probably agree about NDAs and NCAs as not being what they appear to be. I'll need a lot of leeway if I'm going to keep the group we've got motivated."

I checked with Julia, and she smiled and nodded. "I'm with Joe on that." She reached out and gave my hand a squeeze.

"Thanks for being patient with us."

Bill nodded with a still-dissatisfied attempt at a smile. "Well, while we're waiting for some new documents, how was the trip?"

We offered a few details of the road down and the weather, but didn't mention the undercurrents. Both men were amused at the idea of five adults packed into a subcompact station wagon for six hours. Even Ms. Philips chuckled a bit while she typed.

"You didn't happen to bring the computer you're working on?" Bill asked, somewhat out of the blue.

Bob lifted an eyebrow. "I don't suppose there was room in that car."

"Actually, we did."

"Would you be willing to let us take a look at it?"

"Bill, I don't know if we want to expose the company to their work just yet."

"There's nothing I consider proprietary in it. How about you, Julia?"

She nodded. "I trust your judgement."

Carrie took the page from the typewriter, and brought it to Bob. "What do you think?"

He read it carefully, then handed it to me. I put it between Julia and me, and we read it together.

"I think," I said, "it'll give us the room we need to work and allow you to protect Motorola's interests."

"Joe, shouldn't it mention existing work, and avoid making claims for the group?"

"Ah, yes. Of course."

With Julia's input, we added wording for existing work, a disclaimer relative to the group, and an addendum describing what we and the group had done to that point. With a bit of discussion we found wording we could all agree on. Then Julia joined Ms. Philips at the typewriter.

Bill asked, "So, can we get a peek at what you've done?"

"I think it's okay, Joe," Julia said from where she and Ms. Philips were working. "Why don't you go ahead and bring them in?"

"Them?" Bob asked.

"Julia's and mine."

Bill and I went out to the car and brought the computers in. When we returned, Bob had brought in a couple of color TVs to use as displays.

Julia and I looked over the completed agreement together, then faced each other, communicating silently.

"If you'll excuse us a minute," Julia said.

"Sure," Bob nodded.

"Do you need a place to talk alone?" Bill asked.

"If it's okay."

Ms. Philips opened a door to an office connected to the conference room and left us alone.

We both knelt down and joined hands, and Julia offered her prayer for wisdom and blessings in making decisions. I added to that a prayer that the directions we took would be guided for our own benefit and for all involved.

"I feel like we can sign this," Julia's face showed mixed trepidation and confidence.

"I feel similarly impressed."

Julia's expression cleared, and we shared a hug.

After we returned to the conference room and had both signed the agreement, Julia and I unpacked our computers and set them up.

[JMR202008241334 edits -- new:]

While we did so, the door opened, and Ms. Steward showed Mike, Bob, and Jennifer in.

Mike looked at us a bit uncertainly. "We signed," he said, more as a question than a statement. "The internship seemed too good to pass up."

[JMR202008241334 edits -- old: ]

While we did so, the door opened, and Ms. Steward showed Mike in.

Mike looked at us a bit uncertainly. "I signed," he said, more as a question than a statement. "The internship seemed too good to pass up."

[JMR202008241334 edits end.]


Chapter 13.9: Straits -- what?

[Backed up at https://joel-rees-economics.blogspot.com/2020/08/bk-33209-straits-intellectual-property-agreements.html.]


Monday, August 17, 2020

[Backup] PHR: Pink Heels and Rusty -- Title Page and Table of Contents

Backup of https://joelrees-novels.blogspot.com/2020/08/phr-title-toc-pink-heels-and-rusty.html.


Pink Heels and Rusty

by Joel Matthew Rees,
Amagasaki, Japan, October 2017
Copyright 2017 Joel Matthew Rees. 
All rights reserved.

  1. Paperboy
  2. UDP Packets
  3. Invitation
  4. Swimmingly
  5. Deeper Water
  6. New School

Author's note (17 August 2020):

This is derived from a pseudo-flash fiction piece I wrote from a writing prompt that Jenny Flake Rabe posted in the LDS Beta Readers group on Facebook (https://joels-random-eikaiwa.blogspot.com/2017/10/pink-heels-and-rusty.html).

I started writing the rest of the story  just before I ran into an open car door on my bicycle, sheering a couple of ribs and shattering my elbow. The accident and the recovery afterwards effectively hid the plot and the world it takes place in from me. (I could read my notes, but I couldn't immerse myself in them deeply enough to continue.)

Other things take priority now, for reasons I don't have time to delineate. I don't know when I might have the spare time, budget, and energy to rebuild the world and the plot and finish it, but I decided to put the chapters I had up in my novels blog anyway.

If you think it's interesting, leave me a note. If enough people like it, I'll see if I can shift some things around, but no promises.


Monday, August 10, 2020

Backup: 33209: Straits -- The Road to Austin

Backup of https://joelrees-novels.blogspot.com/2020/08/33209-straits-road-to-austin.html.


Chapter 13.6 Straits -- Proceeding Forth

Chapter 13.7: Straits -- Road to Austin


Friday morning, I drove over early to pick Julia up.

"Are you sure you don't want to take Julia's car?"

"Mom, it's really yours, and you need it tomorrow." Daughter gave mother a hug and a kiss.

"Bien, bien." She sighed, letting Julia loose with some reservation. "Drive carefully, and call us when you get there or if you have problems."

"Prometemos." I gave her a hug and a kiss to both cheeks.

"En tus manos."

"We'll pray before we go."

Julia's dad gave me a hug and a hand-clasp, and a stern look, with a "Vaya con Dios," before giving his daughter her hug and kiss.

At my house, we got in a half hour of exercises and and showers, and then we packed the computers and road food, said a quick prayer, and headed to school.

After our last classes for the morning, we met the rest of the Friday group in the parking lot.

They had decided to pool in Suzanne's Impala, so there would be only her car and mine to keep track of. Campus security had been notified about the trip, and we had the okay to leave cars in the parking lot over the weekend.

I suggested a prayer before we leave, and no one objected. Julia suggested I be voice for the group, and I offered a prayer for our safety, and that the trip would have good results for all. Everyone responded with, "Amen."

Mike, Pat, and George had prepared a bit of their own food and drinks for the road down, but we had room in the cooler for what needed cooling. We had all packed light, mostly relying on making grocery store raids in Austin for Saturday and the ride back. We left most of the space in the station wagon bed open for whatever we might be bringing back.

The plan was for me to drop by Denny's place on the way to Motorola, their apartment being within three miles of the Motorola building I needed to go to. Then Julia and the others could go shopping, visit with Denny and Denise, and maybe go see the campground where the rest of the Friday group were parking themselves.
Of course things never really go according to plan, even when they go according to plan.

Suzanne didn't stay anywhere close to the double-nickel speed limit. We lost sight of them within a minute of hitting the Interstate, even though I kicked the speed up to 62.

"There's the turn-off to the airport." I kept trying to get conversation started, but it kept dying before it started. Julia squeezed my hand again on the gearshift lever.
"Are you okay, back there, Pat? The middle of that seat is not comfortable, I know."

"I'm okay." I'm sure she was being stoic.

"Beautiful scenery, huh?"

George laughed, at least.

"It has its own beauty," Julia commented, but no one in the rear seat took the bait.

"Peanut butter and cheese sandwich?" Julia asked, and I nodded.

Pat fished the bread, cheese, and peanut butter from the cooler, handing them to Julia, and then she and George and Mike dug into the bologna, pressed pork and other fixings from the cooler.

"Can you pass me the lettuce and tomatoes, too?"

"Ah. Sure." Pat handed the lettuce and tomatoes forward, and food changed hands.

"Are you making your own?" I asked.

Julia nodded and took a bite of my sandwich, frowning as she handed it to me. "Needs something. Mayonnaise?"

I took a bite and nodded, glancing in the rear-view mirror to see Mike's reaction. He was busy with food.

Pat handed her the jar of Mayonnaise. "Joe has perverted your taste buds, Julia."

"Yep."

That got chuckles from everyone.

Julia mixed grape and lemon-lime soda in a cup.

"Where'd you get that from?" George complained.

"Not from Joe."

"No?"

"From his dad."

"Oh."

She shared her cup with me, too, trading it for the sandwich and taking a bite while I was taking a sip, so I would have a hand to keep on the wheel. I glanced at Mike again, but he was looking out the window absently while he chewed on his sandwich.

*****

"Turn-off for Garden City." I moved to the exit ramp and slowed down and we turned right. "This always feels like I'm turning south, but we're actually turning more east than south. We've been going north-east."

"Can I drive from Garden City?" Julia asked as we left the Interstate behind.

"I don't know why not."

*****

"There's Suzanne," Pat announced.

The whole group was out of the car, sitting at a road-side table. They waved as we pulled up.

George, Mike, and Pat extracted themselves from the back seat, and Julia and I got out of the front, and we exchanged status with the other group before they climbed in and started off again ahead of us.

"Take a short jog?" Julia suggested.

"Mmm. Yeah."

All five of us jogged about a half minute back the way we had come, then walked back to the car. Julia took the driver's seat.

"I'm riding shotgun!" Pat called out, claiming the passenger-side front seat.

I looked at Mike and George. "I think that's fair, if we're up to this?"

They both nodded, so I got in first and moved to the middle.

"With five of us, she's not going to be as responsive as when it's just you and me," I coached from my backseat position.

"I know." Julia started the engine and babied the clutch maybe just a little too much, but got us going smoothly down the highway.

"Much better scenery here," Pat commented.

"Should get greener as we go to San Angelo," George added absently.

"Somewhere along here, my church used to try to farm pecans," I said. "I think they only got a couple of years of good crop before the climate or insects got to the trees."

"Too bad," Mike said. "I like pecans."

Conversation was less strained after Garden City.

We met Suzanne's group again at a rest stop just before San Angelo. Again, they went ahead as we took a break to stretch, jog, and walk.

"Can I take the wheel next?" Mike asked.

I looked at Julia and she shrugged and smiled. "That means you and I get to ride in back."

George gave Mike a look of consolation and Mike shrugged.

Pat's tilted head ceded temporary defeat.

"I'll take navigator." George took the passenger-side front seat, and I got in the back, oving to the middle again. Julia climbed in beside me. 

"Ryō-te ni hana," I grinned, patting the empty seat as Pat hesitated on the other side of the car.

"Huh?" George raised an eyebrow. "Benihana? Japanese?"

"Yeah. Ryō-te ni hana. Flower in each hand. But not literally in hand, or even meta-literally. It's what a guy can say when he gets to sit between two beautiful women."

"Maybe Julia should sit in the middle?" Pat was not climbing in.

"Joe's just joking," Julia explained. "It's the kind of joke his dad would make, too. Neither of them would ever presume anything."

"Are you sure?"

"Sorry. I was just recalling a Japanese phrase that seemed to fit. I didn't think it would be offensive."

Mike started the engine. "Pat, it is a compliment, you know."

Pat bent down and gave him a sharp through the front window.

"I'll sit in the middle," Julia sighed and started to climb out.

"Why can't you sit in the front?" Pat asked Julia, wheedling.

"Pat!" Julia said with more than a bit of exasperation.

"Okay, okay, I'll sit in the navigator's seat." I moved to the side.

"No!" Pat and Julia exclaimed in unison.

George laughed, and climbed out. "I think that's the best idea for now."

I climbed out of the back and got in the front.

Pat sighed, but gave in, again taking the center because she was the smallest.

Mike had no problems getting the car moving, and we drove in silence for the first few minutes.

Then Pat spoke up. "I guess I was being silly."

"You were," Mike confirmed with a wry grin. "Let me fight my own battles."

I reached over for a fist bump, and this time he responded in kind.

"Rivals," he said, and I nodded.

"Rivals."

Julia looked a little put-out, but not angry.

By the time we put San Angelo behind us, fishing had become a topic of conversation, discussing the best lakes in central Texas for different kinds of fish and such. I mostly listened, not having much experience.

We took another rest stop at Eden, and Pat took a turn at the wheel. Julia sat between Mike and me in the back, and conversation turned to sports and school.

George took the wheel at Brady, and this time Mike took the navigator seat, and Pat let me sit between her and Julia. I mostly enjoyed listening to Julia and her friends reconnecting, talking about things they had done together and about plans for the future. I guessed that her breakup with Mike had been the cause of some distancing between her and Pat and George, as well.

"Your mom couldn't lend you her car for this?" Pat idly asked Julia when other topics had subsided for a bit.

"She wanted us to take it, but she needs it tomorrow. Even if she didn't, bucket seats are a bit less conducive to romance on the road."

I grinned and unobtrusively kissed her cheek. We both turned away when our lips got too close.

When I glanced at Mike, he rolled his eyes, but nodded. He was beginning to understand.

At Llano, Suzanne's group waited for us to finish our quick rest stop so that I could take the lead into Austin. I took the wheel, with Mike riding navigator and Julia sitting behind me, Pat in the middle again. Leading the way down through the Barton Creek area.

Julia rested her hand on my shoulder, and when my shifting hand was free, we held hands.

"Both hands on the wheel!" Mike grinned to let me know he was joking, and we bumped fists again. Pat looked disappointed, but seemed to have given up being angry at me.

It was about five thirty when we pulled into Denny and Denise's apartment complex, parking first in front of their apartment. We made quick introductions, and Suzanne and her group turned to head for her car.

"Don't rush off just yet," Denise said.

Denny explained, "There are a couple of recruiters waiting at Motorola to talk with anyone who wants to listen and talk. I can help you find a good campsite after."

We looked at each other.

"I understand there'll be pizza, too."

"Ah, well, yeah."

"Sure."

"Let's do it."

"Well, except, Julia, the people who want to talk with Joe also want to talk with the person who has been taking notes for him."

"Me?"

I caught her eye. "Makes sense."

After some quick discussion, we followed Denny to Motorola, and Pat, George, and Mike joined Suzanne's group to listen to the recruiters.


Chapter 13.8: Straits -- what?

[Backed up at https://joel-rees-economics.blogspot.com/2020/08/bk-33209-straits-road-to-austin.html.]


Sunday, August 2, 2020

Backup: 33209: Straits -- Proceeding Forth

Backup of https://joelrees-novels.blogspot.com/2020/08/33209-straits-proceeding-forth.html.


Chapter 13.5 Straits -- Exercises, Exercises

Chapter 13.6: Straits -- Proceeding Forth


Tanya looked up from her keyboard circuit board. "How long do you think it will take them to get us those Micro Chromas?"

Julia and Bob were helping her debug her work. The rest of us with working keyboards were spread out helping those whose keyboards were not yet working.

Julia looked over at me and said, "Do you think they'll have them on Friday?"

I blinked and she winced. She mouthed a silent "Woops, sorry."

I gave her a wry smile and a wink.

"Denny hasn't said," I replied.

For a minute, work proceeded, then Suzanne looked up from where she was working with a group. "Friday?" She looked over at Dr. Brown. "Friday? Something happening Friday?"

He raised his eyebrows and shook his head. "I heard Joe may be going to Austin to talk with some people at Motorola. Other than that, who knows?"

"That's cool," said Wallace.

"Be fun to go check out that surplus shop this weekend," Bob commented. "I don't suppose you're going to have time for that, Joe?"

"No, actually, that's part of the plan. Rolling out on my nephews' floor Friday evening and hitting the surplus store on Saturday." I deliberately left grammar incomplete, too.

"Hey," Winston spoke up. "We could caravan down. I'm sure Julia wants to go, too. Leaving in the morning? We could skip classes."

That got a ripple of laughter and chatter.

"Leaving as soon as my last class of the morning is done. Eating on the road so I can get to Motorola in time without speeding."

"They're not flying you out?" Bob asked.

"Denny pointed out the strategic benefit of me being able to visit the surplus store, so they gave me the option."

Chuck asked, "So what time should we meet to caravan?"

I looked at Julia and she tilted her head and shrugged. I looked at Doctor Brown and he just shrugged, too.

"Julia's going with you, right?" Suzanne didn't ask, didn't really accuse, just said it like she was confirming a known fact.

"Uhm, ..."

The whole class was suddenly quiet.

"Look. I'll be under a really tight schedule. If I had a CB radio in the car, we probably could caravan, but I don't, and I really won't have time to wait for anyone. I'm not saying you guys can't caravan, and I'm not saying we won't see anyone on the road, either, just that I don't want to speed and I won't be able to slow down or stop. Well, except for emergencies, of course."

I stopped for breath and thought and glanced at Mike, who was shaking his head, his expression hard with doubt and distrust. Pat and George were whispering together beside him.

"Julia is planning on going with me so she can look at disk drives and such, unless she changes her mind. My brother said it was okay for her to sleep on the couch in their living room. As I said, I'll be in with my nephews. And," I glared at everyone and no one in particular, "my brother and his wife will kick me out on the street if I try to move to the living room in the middle of the night."

That got laughs.

"They don't have any extra room beyond that," I added. "So anyone who goes Friday will have to find their own place to spend the night."

"It might be a better approach to leave early Saturday and meet up in Austin," Doctor Brown suggested, quietly.

We discussed logistics for several minutes, and I promised I'd bring the address and phone number of the surplus shop on Thursday before we returned to working on keyboards and talk turned to expanding the computers and figuring out what kind of enclosures to put the electronics in.

More than half the students had their keyboards working by the time I needed to go deliver my newspapers, and, at Doctor Brown's suggestion, we broke the lab session up so I would have time I needed to get ready for Friday. The rest of the group agreed, albeit some seemed reluctant.

As Julia and I loaded her car with our computers, Mike, Pat, and George approached us. That Mike was unhappy was clear from his expression.

"Julia, I need to talk to you."

Julia looked at me and I raised my eyebrows and tilted my head.

"Joe needs to get back," she replied.

Mike fixed me with an angry stare. "I'd like to talk with Julia alone."

"If you're not going to say it in front of Joe, don't even bother."

Pat pursed her lips. "Julia, I don't think you're being fair to Mike. At best."

Julia shut the back seat door and turned to me. "Let's go." She handed me her keys. "I'd like you to drive."

I took the keys, gave her a hug, and leaned close to her ear. In a low voice only she could hear, I said, "We're still a little early, maybe we should listen to what he has to say."

She gave me a moue, then turned to Mike. "Two minutes. Here, now."

Mike looked at me hesitantly, then took a deep breath.

"What are you doing?"

Julia gave him a look I was glad I was not on the receiving end of. "What makes you think you have a right to ask such a question?"

"It seems to me like Joe gets a free pass I never got."

"So what if he does? I have a right to make my own choices, and he never asks me for what I'm not willing to give."

I could tell that hurt going down.

"Just for the record, Mike, can I ask how far you tried to go with Julia?"

That earned me a burning look from both Mike and Julia.

"I think it's a relevant question," I added

"He couldn't keep his hands out from under my clothes."

"You said you liked it."

"I changed my mind."

"Why?"

"I thought you wouldn't like me if I said no. Then I prayed and I realized that, if being turned down was going to turn you off, I shouldn't have been saying yes in the first place."

"If God told you to turn me down, why wouldn't he tell me I shouldn't date you? And why doesn't he tell you to turn Joe down?"

"Joe has never once tried to put his hands on me where they don't belong. He respects me."

"Then what is this going to Austin alone with him?"

I broke in. "My brother and his wife will literally kick me out in the street if I try anything."

"What if she tries for it?"

"I'll still be the one to go out in the street, since guys are better able to defend themselves. But if I couldn't trust Julia, and If I couldn't trust them, I wouldn't be letting Julia go with me."

"What about on the road?"

"We've promised each other not to even kiss on the road."

"I don't believe that."

Julia sneered. I'd never seen her do that before, and it disturbed me.

"You never did believe me, or in me, or in my ability to make up my own mind."

"Okay, I was a stupid high-school kid. I guess I wasn't mature enough. But ...," Mike trailed off.

"Yeah, high school kids think love is all about hormones and emotions." I regretted the words the moment they came out of my mouth, but they were not words I could recall without consequences.

I prayed again, in my heart, for forgiveness and guidance, not just for myself, but for all five of us.

"Uhm, maybe I should ask Denny if we can squeeze two more guys in on the boys' floor in sleeping bags, and an air mattress on the living room floor for Pat."

Mike gave me a shocked look, but it did not compare to the look of surprise and confusion Julia gave me.

"Hey. We're just here to ...," George began, but he, too, trailed off. "Uhm, maybe that would be a good idea, even though I'm not sure I want to get to know you that well, Joe." He chuckled.

I gave him a wry half-smile.

Pat was looking very thoughtful. "That olive green compact station wagon of yours is gonna be a tight squeeze, but maybe I can put up with being squeezed between two of my best friends for two six-hour trips over one weekend."

The doubts in Julia's face began to resolve themselves, and Julia nodded slowly. "Maybe it's a good idea. If Mike promises to accept what he sees."

Mike took some visible effort to pick his jaw back up off the metaphorical floor.

"I, uhm, I'll think about it."

"I'm still too upset to drive, Joe."

I held the door for Julia.

"See you guys tomorrow." I nodded to the three of them as I slid into the drivers side.

Julia scooted over on the bench seat and nestled against me. "Pat, we'll call you when we found out what Denny says."

*****

While I folded newspapers and stuffed them in my carrier bags, Julia drew up some more sketches for enclosures.

"If my keyboard is separate from the computer box, I'll need a longer cable."

"Yeah."

"And a ribbon cable isn't going to work."

"True. Too stiff, too many conductors spaced too far apart to bend well. Too easily broken."

"Is this why a keyboard controller might have a serial port instead of a parallel port?"

"Yup." I took one of the newspapers and set it in front of me, sideways. "Keyboard." I pointed to the bags. "Computer." I drew a line in the air from the bags to the newspaper in front of me, twirling my finger as I did. "Maybe a coiled telephone handset cord. Two or four wires inside instead of nine or more, and flexible." I stretched a rubber band from the bag to the newspaper, and it snapped. "Ouch."

We both laughed.

"Maybe that's what I should do. I think I want the disk drives in the same box as the mainboard."

"We can do it, if you think it's a good idea."

After I got back from delivering the newspapers, she showed me her new sketches. Then we went into the kitchen and put something together for dinner. After dinner, we went to the piano in the den and Julia played so I could practice for my recital.

It was late enough for evening rates to apply when we were done with that, so I called Denny and asked about the Micro Chroma 68 boards, and about the possibility of putting Mike, George, and Pat up for a night, as well. Denny and Denise sounded a bit skeptical, but they decided it could be done, but that would be the absolute limit.

And Denny said he knew they had gathered some Micro Chroma 68 kits, but he didn't know how many, or whether they'd be turning them over to me on Friday.

We called Pat, and George and Mike were there, too, so she let them know it would be possible.

"What now?"Julia asked as we sat down on the sofa in the living room.

"I need to study the 8086 and the 9900 a bit more. But I also need to figure out that Forth stuff."

"What you were looking at when we both fell asleep night before last?"

"That."

"I think that's what you should work on now."

"You might be inspired." I got out the package and looked through it again. I had ordered a printed copy of the fig-FORTH FOR 6800 ASSEMBLY SOURCE LISTING and a copy of the source on tape, with a copy of the fig-FORTH Installation Manual, Glossary, and Model, and a copy of an introductory textbook, Leo Brodie's Starting Forth.  

I picked the baby blue cover Installation Manual up again, thought about it for a moment, and put it down.

"What?"

"I dunno. I seem more inclined to look at the source than at the instructions."

"You definitely seem to be inspired today."

I opened up the pink cover Source Listing and scanned through it.

"Me?"

"You got the same answer to prayer I got, and you followed through."

"Oh. Mike. I think he'll be okay."

"Oh, Joe, I'm scared."

I looked up from the listing.

"What if God says I can't marry you, that I have to get back together with Mike?"

The lyrics to a hymn came to mind.

Know this, that every soul is free
To choose her husband and whom she'll marry.
"Boop-boop!" Giselle called out from her room. My singing was loud enough for her to hear.

"Is that really a song?"

"Almost."

"It's in the hymnbook." Giselle came in and headed through the kitchen to the den.

"How does it really go?"

I grinned and stood, and took Julia's hand. She stood, too, and we followed Giselle.

Giselle had the hymnbook open to number 240, and she gave it to Julia.

Julia took it and set it in the music tray of the old upright, and sat down on the piano bench. She checked the key and ran through the intro, and we started singing:
Know this, that ev’ry soul is free
To choose his life and what he’ll be;
For this eternal truth is giv’n:
That God will force no man to heav’n.

He’ll call, persuade, direct aright,
And bless with wisdom, love, and light,
In nameless ways be good and kind,
But never force the human mind.

Freedom and reason make us men;
Take these away, what are we then?
Mere animals, and just as well
The beasts may think of heav’n or hell.

May we no more our pow’rs abuse,
But ways of truth and goodness choose;
Our God is pleased when we improve
His grace and seek his perfect love.
Julia stood up with eyes bright and moist, and we shared a three-way hug.

"Now I should leave you two alone." Giselle returned to her room.

"Anonymous, from around 1805," Julia read from the notes.

"About the year Joseph Smith was born."

"Included in your first hymnal. You guys have some really cool hymns."

"That's one I wish we sang more often."

She put the hymnal back and we shared a gentle kiss before returning to the living room.

Reluctantly, I released her hand and picked the listing back up.

"Well, there's the place to customize the I/O routines."

"Oh?"

"Keyboard, display, disk. No, that says virtual disk, so it'll take a bit more work. We aren't likely to be doing real disk just yet."

"What can you do without disks?"

"Not sure. Let's load the source in from tape, then save that to disk."

That took a few minutes.

"Now I'll fix the I/O routines to match the Micro Chroma 68's hardware."

That took a bit longer.

"Save the resulting source and assemble it."

The assembler kicked out a few errors for me, so I fixed my mistakes and save and assembled it again. This time, it assembled cleanly.

Julia watched me patiently.

I saved the binary file to both disk and tape, and loaded and ran it. It came up nicely, first time.

FORTH-68                               
  OK                                            
                                                    

Julia went in to ask Giselle if she could borrow her TV, and Giselle came back out to watch as she loaded the binary from tape into her Micro Chroma 68+6801 and ran it. It came up nicely for her, too.


For a half hour or so, we played with the examples from Leo Brodie's book.

"No way to save our work?"

"Not without the disk I/O. Let's see if I can figure that out."

I let Giselle play on my computer while I went back to the manuals to try to understand what Forth was all about.

The parameter stack, I understood. But the virtual machine was Greek to me for the evening.

"No decimal point," Giselle muttered.

"I think Joe is going to have to program that himself."

"Probably so," I agreed.

"Making your own words is fun." Giselle smiled. "Can we make this work with my word processor?"

"I think I'd have to rewrite the entire interpreter." I showed her the pink-covered program listing.

"A hundred pages? It'll take some time?"

"Seven thousand lines of code or so. It'd definitely take some time."

(fig Forth took the real me a full six months to get running, but that was because I did it the wrong way, hand assembling the source and entering the object in hexadecimal, also by hand. I saved the object to the fast cassette. I learned a lot, but I also learned a lot of bad habits in the process. DIY-everything has limits.

No, the reason the me in this story progresses much more quickly is that he doesn't try to do everything himself. Even if you think that's what he's doing.

Forth, by the way, was a revelation, but I'm not sure it wasn't a revelation of the dark arts.

The power you feel when you write your first BASIC program can be a little intoxicating.

The power you feel with Forth is more direct, stronger, more full of promise. But the details of implementation still bite you in the end, just like with any computer language, and they bite in ways that the majority of programmers and software engineers, unfamiliar with Forth, do not understand.

The me in this story was immune to the power effects, even though the real me was not. Giselle was not, but lack of floating point math muted the effects. Julia wasn't immune either, but I think she mentally hid herself behind the me of this story.

If you want to play with a more modern Forth interpreter than the one I used back then, look up Gforth. Disk I/O is working in that one, and it includes floating point numbers and a number of other useful features. Or if you want a feel of what I was working with, the fig Forth interpreters can be found on-line, along with emulators to try them out on. An emulator for the Micro Chroma 68 itself has  even recently been added to the MAME/MESS project. I should write up a blog post of how to get those running, some day.

I do have a partially useful description up of how to get my BIF-6809 interpreter running on the XRoar Color Computer emulator.)

*****

In the lab the next day, we got the all the rest of the keyboards running, and those with Micro Chroma 68+6801s played with Forth a bit. Several of us tried to work out the disk emulator stubs in the 6800 model, but the bug in the model and the narrow screen of the Micro Chroma 68 defeated us.

More than BASIC and Flex, Forth got everyone excited to get their own mainboards running.

The discussion included enclosures, and somebody pointed out that the surplus shop might have some, which raised the interest level in the trip to Austin. Ultimately, two caravans were planned, one leaving at the same time as Julia and me and another leaving at six Saturday morning. Several knew the Austin area, and they discussed campgrounds.

For Institute that night, two sister missionaries stationed in Midland came to talk about how they prepared for their missions. Julia and Giselle both listened intently. I was also asked to give an impromptu testimony, and I spoke frankly, as I felt inspired.

Back at my house, Julia and I prepared lunch and dinner for the trip with help and advice from Mom, Dad, and Giselle. We pre-packed the computers, as well.

*****

"No, Mamá, it would not make more sense for me to spend the night at Joe's house, even in their spare room. We already have enough rumors going around at school as it is."

Mrs. Cisneros gave her own daughter a moue. "I suppose you're right. I don't know why Mike had to go and meddle in things."

"Mamá, paciencia. Todas las cosas buenas vendrán."

I reiterated what Julia said: "All good things will come, Mom."

Mrs. Cisneros turned to me with a shrewd, but pleased look and nodded. "Muy bien, hijo mio."

Julia looked at me with wide, surprised eyes. "Besas."

I complied.


Chapter 13.7: Straits -- 2801, 3801

[Backed up at https://joel-rees-economics.blogspot.com/2020/08/bk-33209-straits-proceeding-forth.html.]