Sunday, August 2, 2020

33209: Straits -- Proceeding Forth

Chapter 13.5 Straits -- Exercises, Exercises

Chapter 13.6: Straits -- Proceeding Forth


Tanya looked up from her keyboard circuit. "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 those 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 another 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 the 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 all 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 -- erm, too much."

"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 to drive."

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 a lot, and I won't be able to slow down or stop. Well, except for emergencies and short rest stops, 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 beside him, whispering together.

"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, somewhat apologetically. "So anyone else 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. Mark and Jeff said they'd bring it, too, in case I forgot.

Shortly, we returned to working on keyboards, and the 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 to do things I needed to do to get ready for Friday. The rest of the group agreed, although 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.

"Mike, 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 whispered close to her ear in a low voice only she could hear, "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, I think you should know, 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 burning looks 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 it was okey 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". She gave Julia a meaningful look. "Especially since it's for another of my best friends."

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 find 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, when we were done with practicing, for evening rates to apply, 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 only because they were friends of Julia's, and 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, we let them know we could do it.

"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 to be more inclined to look at the source code than at the instructions."

"Well, you 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. I wasn't going to follow through, but you did."

"Oh. With 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. I sang:
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 had been loud enough for her to hear.

Julia looked at me doubtfully. "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 her hand. She stood, too, and we followed Giselle.

Giselle opened the hymnbook to number 240 and handed it to Julia.

Julia took it and set it in the music tray of the old upright, and then 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, starting again with the first page.

"You might want to look at this license."

She gave me a look that said, maybe not.

"No, take a look." I showed her the first page of the listing."

* This listing is in the PUBLIC DOMAIN and
* may be freely copied or published with the
* restriction that a credit line is printed
* with the material, crediting the
* authors and the FORTH INTEREST GROUP.

"Public domain? But -- they claim copyright up here."

"Yeah."

"And, even though attribution shouldn't be all that big a problem, they do say it's required. I'm not sure that's actually public domain."

"You may be right. The Berne Convention tends to be interpreted to disallow alienation of copyright anyway, but they are clearly trying to retain some minimal claim."

(I was not particularly conversant in copyrights and the Berne Convention at the time, but I may have known enough about it to be able to say this much.)

"But it's probably legal enough that you can use it. Much more friendly than the other license, at least friendlier to poor students like us."

"I think so, too." We sat down, and I continued reading. "Wow. Right here, under the license, contact info, and attributions."

"What?" She looked over my shoulder again.

* ... All terminal 1/0
* is done in three subroutines:
*   PEMIT  ( word # 182 )
*   PKEY   (        183 )
*   PQTERM (        184 )

"Greek to me."

"Those routines will at least give me some clues."

I used the numbers for help searching through the code, and quickly found the routines.

"That's all?"

Looking over my shoulder again, Julia just laughed. "I'm sure none-the-wiser."

I did a little more searching, using the addresses of labels shown in the code listing, and shortly found the example code.

"Well, this is not exactly the place to customize the I/O routines."

"Oh?"

"More like replace. But I can use these to figure out what to replace the code with. Keyboard, display," I scanned a bit further. "Disk. No, that says virtual disk in RAM, 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 assembly language source in from tape, then save it to disk to work on."

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 saved, 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 with her 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 enough about what Forth was all about to do something with the stub code for the disks.

The parameter stack, I understood. But the virtual machine was Greek to me for the evening. And the virtual disk was still quite opaque.

"No decimal point," Giselle muttered.

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

"Probably so," I agreed, absently. "Also."

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

I looked up from the program listing. "I think I'd have to rewrite the entire interpreter." I showed her the listing.

"That's like, 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, saving 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 to both the real me and the me in this story, 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 -- and never figure out how to deal with.

The me in this story was immune to the power effects, even though the real me was not. Giselle was not really immune, but lack of floating point math muted the effects. I think Julia wasn't immune either, but she instinctively hid 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. It has working disk I/O, floating point numbers, networking, 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. The 6800 model fig Forth is in my sourceforge repositories. 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 my Open Source Developers Network Japan repositories.)

*****

In the lab the next day, we got the rest of the keyboards running, and those with Micro Chroma 68+6801s played with Forth a bit and let others give it a try. 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 for the day.

More than BASIC and Flex, Forth got everyone excited to get their own mainboards running. Both the directness of the programming style and the accessibility of the source code for the fig FORTH interpreter gave it an immediacy that wasn't felt with BASIC.

The conversations again turned toward enclosures, and somebody pointed out that the surplus shop might have some, which raised the interest level in the trip to Austin.

Ultimately, two trips 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. Mark and Jeff said they'd lead the Saturday morning group.

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 about my experiences, as I felt inspired, including both my failures and successes.

Back at the house, raiding from the food storage shelves and the big freezer, as well as the fridge, Julia and I prepared food for the trip, with help and advice from Mom, Dad, and Giselle, and input over the phone from George, Pat, and Mike. Before heading for Julia's, we pre-packed our computers and got the old cooler box ready for the food. And I spent a half hour tuning the Colt's engine and giving the car a check-over.

We stopped at one of the grocery stores at 42nd and Dixie on the way back to her place, for a couple of two-liter bottles of soft drinks and a gallon jug of drinking water.

(I forget which store it was, or even whether it was the one on the north-east corner or the north-west. So much retail churn in Odessa -- the one on the north-west corner is gone now, and the one on the north-east is definitely part of a different chain now.) 

*****

"No, Mamá, it would not make more sense for me to spend the night tonight at Joe's house, not 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.



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


No comments:

Post a Comment

33209: Discovering the 6800 -- Parents and Polygamy

A Look at the 8080/TOC "Whoa, Merry, look who's here!" Jim said, sotto voce. He, Roderick, and I were at our lab table ...