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, February 24, 2020

Backup: 33209: Interviewing IBM

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-interviewing-ibm.html.

Chapter 8: Bootstrapping, or Baby Steps

Chapter 9: Interviewing IBM


I took the computer to school with my stereo cassette deck on Wednesday, borrowed a scope again, and tuned the fast cassette interface circuit. That went quickly, and I got good write (record) and read (playback) results at 1500 baud on the stereo deck.

Then I decided to experiment, and I got my lab kits out and used the parts and breadboard to put together an MFM state machine for read and write, and started experimenting with recording raw bits on tape in MFM. I was able to get consistent reads from writes on text data up to over four kilobaud on the portable cassette recorder, and up to almost nine kilobaud on the stereo cassette deck.

(As with tuning the slow cassete interface, I never really bothered to do this. MFM? The fast cassette interface I put together may have used MFM recording. I apparently didn't pay enough attention, and the actual devices are not where I can dig them out to check. Anyway, the me in this story needs to experiment with MFM at this point. I'm pretty sure MFM could have achieved four kilobaud on a reasonably good cassette recorder and eight kilobaud on a moderately high-fidelity cassette deck, with reasonably good tapes and a reasonably fast MFM state machine.)

Dr. Brown observed my work and decided it would be a good lab for the digital circuits class, and asked me to leave my breadboarded interface intact for him to work up the lab from. I complied, taking a copy of the circuit diagram with me, to add to the Micro Chroma 68 as an interface, later.

When I got home, my mother gave me a message from Ms. Bight's secretary. Ms. Bight had heard from Freddy Burns about my building the computer, and wondered if I could bring it to the interview with me. I called before I started folding newspapers and confirmed that I would.

After delivering the newspapers and checking homework, I reviewed and revised my résumé and proposal, then spent more time using the monitor's disassembler to explore the monitor ROM's object code.

*****

Mom had offered to take the route on Thursday so I wouldn't be under too much time pressure to make it to the IBM office in Midland for the interview, but the newspapers came on time. After I got them out, I took a quick shower, changed into a suit, packed the computer, display, and stereo cassette deck in the Colt, and drove to the interview. I arrived a little before the interview was scheduled, at ten to six, but was shown in when I arrived.

(Okay, I said that the institutions were pretty much as they were, as they affected me. They indeed have been, to this point. But if my actions in this fictional version of the world had no affect on them, this story would have no point in being written.)

"Hi. Come on in and have a chair. Should I call you Marion or Joseph?"

"Hello, Ms. Bight. Most people call me Joe."

"You can call me Meg. Megabyte if you wish," she laughed. "I've been telling people for years that we need to be talking about megabytes of memory."

I chuckled at her joke. "It's a forward-looking name."

"We really haven't done student internships at this office before. We don't have an established set of procedures, so you are pioneering."

"I enjoy pioneering."

"That's good to hear. Did you bring your proposal?"

"Sure. I have it here, with my résumé."

I handed her the folder I was carrying, and she scanned it over quickly.

"Résumé looks good. Maybe a tad too much detail."

I've always had problems putting too much detail in my résumés.

"And your proposal looks good, too. Do I get to see your computer?"

"It's in the car. Figured I'd tell your secretary I was here first, before I brought it in."

"I could read this while you go get it."

"Sure."

It took three trips to bring in the whole setup.

She raised her eyebrows as she examined the circuit boards. "Clean work, but very much not ready for marketing."

"It's not really intended for the market. Old 8-bit CPU. Just using it in my classes. Later it'll be my ROM burner when I start playing with other processors."

"Old processor?"

"The eight-bit sixty-eight hundred. Well, actually, sixty-eight oh-two, but still labeled by Motorola as not intended for new stuff."

"Oh." She sounded disappointed. "Not the sixty-eight thousand."

"The 68000 is a much bigger package -- sixty-four pins. Motorola doesn't seem to be into multiplexing address and data, except for their SOCs."

"Never seen one up close. Come to think of it, when Freddy mentioned it, I think he did say it was the 8-bit 6800, and I only heard the sixty-eight. So what can you do with a 6800?"

"Wrote the résumé and the proposal both on this, using a text editor and a text processor."

"Text editor plus text processor. Screen doesn't look like what is printed, then?"

"True. No preview mode on this. But this is running Tiny BASIC from ROM, so I can use it as a nice programmable calculator. My electronics prof sometimes has me demonstrating what we're working on in the AC and digital logic classes on days when I borrow a 'scope at school. And of course I plan on using this for the microprocessors class."

"Then I guess it works pretty well for you. Have you had any problems while building it?"

"Not really. According to my electronics teacher, not nearly enough."

She laughed and I shrugged.

Then she gave me a sharp look. "You're not joking."

"He says people learn more from mistakes. I think he has a point."

"But you seem to already understand quite a lot of this. Do you need to even take the microprocessors class?"

"There are some topics I need to cover still. And, of course, I gotta give them a good reason to give me the piece of paper that says I graduated."

"Are you sure? Two Steves come to mind."

"True, Jobs and Wozniak never graduated, but they had a lot more experience than I do when they started making computers."

"Several of my employees don't have degrees."

"Neither does my brother. He says he's the only non-degreed engineer in his division at Motorola. But they keep nagging him about it, and he goes back to school only to have them drop emergency projects in his lap before courses are complete."

"Good point. I've done the same thing to my employees."

I refrained from mentioning that my dad and I had an agreement about my working on a degree and staying rent-free at home. (In the real world, I remembering mentioning the agreement to the boss at IBM, which was probably not strategic.)

"So show me what you can do with this."

I showed her the loan amortization program and the Newton-Raphson program, loading them from the fast cassette and letting her examine my source code.

"Very readable source code, even with the gotos."

"Thanks. Readability is something I work at, even for small programs like these."

"You're using your stereo cassette deck."

"I have an interface that runs faster than 300 baud in here, and it works with a mid-to-hi-fi deck."

"Did you invent it?"

"No, it was a circuit one of my brother's friends put together. Yesterday I played around with MFM recording techniques, though. It looks like I could add an MFM circuit that runs at between four and eight kilobaud, which would give more than a half a megabyte of storage per side on a 30 minute tape."

"Stereo. Using both channels?"

"Ran into crosstalk problems yesterday. It'd need a bit more careful design in the write and read circuits. Just using one channel now."

"Do you plan to put an operating system on it?"

"Yeah, once I get floppy drives working on it, I plan to put an OS called Flex on it."

"Floppy drives?"

"Going to Austin to look for possibilities in a surplus electronics store down there."

She raised her eyebrows. "Surplus likely means a raw drive."

"Yeah. Save a bit of money and have the fun of designing the electronics for it. Maybe."

She shook her head. "Well, promise not to make that kind of decision with company time, okay?"

I chuckled and nodded. "Yeah. Different priorities there."

"Programming languages?"

"Flex has Pascal and ForTran available."

"That's good to hear. You mentioned other processors. Intel?"

"Maybe. But I don't really have much access to them. 8080 at school. I get a lot of free parts from my brother, with company permission."

Her expression sharpened.

"It's an engineering incentive program. They're allowed to pull parts from the reject bin and test them, and use any that are good enough for what they want to do."

"Ah." She nodded doubtfully.

"So I'm doing a lot of the grunt work for him."

She gave a quiet snort. "Just don't do that without permission here."

"Of course. Never without permission."

"So this computer does what you need. I guess you don't need to build one with a 68000?"

"Well," I chuckled. "I want to be able to work with Japanese. Less than 256 characters works okay on an 8-bit computer, but, for thousands of characters, you need more address space than a typical 8-bit has."

"Oh, that's right." She glanced down at my résumé. "You just got back from two years over there, like, a few months ago?"

"Yeah."

"And you speak Japanese?"

"Nan-to-ka."

She chuckled. "And what does that mean?"

"It means 'Sort-of'. Some people said I was speaking pretty well. But I still make a lot of mistakes."

"Oh. So what did you do as a missionary?"

"Found a few people who were interested in learning about what we believe. Taught free English classes. Looked for opportunities to be of service to people."

"I've heard that your missionary program is like a sales training program."

"Some people treat it that way, but my mission presidents did not. They asked us to deepen our understanding of our religion instead of focusing on sales techniques."

"Interesting. So how would you summarize your religion?

"Depends. What do you think about religion?"

"I'm agnostic, or maybe atheistic. Grew up Methodist, but I really have a hard time believing in the God people preach."

"Well, one thing I believe is that, even though there are dangers, the universe is not out to get me."

"Heh. Not out to get me. That's nice to now."

"Most people don't really quite grasp what I mean when I say God wants us to be happy, so I try different points of view on it, and this is one."

"I guess I could see that. Is that all?"

"Well, if you can believe that paranoia is not a universal truth, then it does make it easier to believe that it's worth trying to be a better person. And that kind of ties into what the electronics professor says about mistakes. We do learn more when things go wrong, and learning makes us happier than having nothing go wrong."

"Nicely put." She laughed "Backhanded persuasion. I'll have to be careful around you if I don't want to lose my agnostic attitude." She nodded with a bemused grin. "So, I can take what you said in your proposal seriously, that you would like to learn what it's like to work at an IBM sales office?"

"Yeah."

"Can I mention your computer building ambitions in my analysis, since you didn't really mention them in either?"

"Sure."

"What are your plans?"

"Well, I'm thinking first I'll rework this design to include the 6801 instead of the 6802."

"Not familiar with the part numbers, but that sounds like a step backwards."

"It's actually a step forward. Small, but important compatible improvements to the instruction set, SOC-style built-in RAM and I/O. I'm thinking to build a trainer with maybe three chips, with a header than allows attaching a 6847 video controller like this, more RAM, I/O, etc."

"Making this computer obsolete immediately?"

"I think I'll keep this one for ROM burning, if for nothing else."

"How about the 68000?"

"After I get comfortable with the 6809."

"6809? It's better than the 6801 or something?"

"More like a crossover 16-bit CPU. Lots of index registers, compared to the 6800."

"Index registers are useful."

"Yep. I want to build a 6845-based video controller for the 6809 first, so I can output more resolution than what a TV is capable of. Then I'll know what I'm doing when I build something similar for the 68000."

"Good plan, but it will take a while. How do you plan on bringing all the hardware up?"

"I've recently heard about a language called Forth that's good for bringing hardware up. I'm planning on putting that on this computer after I get the floppies running, along with the Flex software."

She nodded thoughtfully. "Sounds like you have a plan."

"Then I want to try writing my own OS and programming language. And I want to compare code for the 6800, the 6809, and the 68000."

"Now that's getting pretty ambitious."

"Yeah, I'll have to adjust my plans as I go, since I'm planning on finishing school, as well, and holding down a job in the industry while I'm at it."

"Okay, I'll submit the proposal and see what my superiors say."
"Thank you."

 "Thanks for coming in. I'll let you know the results."

"I appreciate the opportunity, and I look forward to it."

"Give my secretary a call every now and then to keep me informed when things move forward with your computers."

"I'd love to."

Chapter 10: Headwinds

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-interviewing-ibm.html.]

Sunday, February 16, 2020

Backup01: 33209: Bootstrapping, or Baby Steps

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-bootstrapping-or-baby-steps.html. Major changes from Friday evening, completed 202002162126.
First backup at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-bootstrapping-or-baby-steps.html.

Chapter 7.5: A little about the 6800 (and Others)

Chapter 8: Bootstrapping, or Baby Steps


After delivering the Saturday morning edition, I lined the inside of the box with sheet metal and installed the fan and the power supply, mounted the mainboard horizontally on offsets, grounded the board to the Faraday cage made by the sheet metal, mounted the keyboard, and tested that it still worked when everything was assembled.

Then, while I worked on designing the dynamic RAM circuitry and the ROM circuitry, Giselle played with the computer, using Tiny BASIC and asking me how to do things as she experimented.

Departing drastically from the example refresh circuit in the Micro Chroma 68's manual, I decided to borrow the video display generator's scan for the refresh strobe.

You may be thinking that the video scan works on the wrong part of the address for refresh. You're right. Dynamic RAM refresh strobes have to count through the row addresses several hundred times per second. The VDG's lower address lines continuously count, completing their count tens of times per second, but if you attach the address lines in the usual way, the lines that count end up being column addresses, not row addresses.

However, contrary to ROM, RAM doesn't really care about the order it is addressed in. Where you write the data is where it reads back from, and if the address lines don't change between write and read, the readback succeeds without any notice that the lines don't match the labels.

Well, many dynamic RAMs have row burst mode for speed, and if you use row burst access, the row must be an actual row. Otherwise, you'd be burst accessing with gaps, which is generally not useful. Row burst wouldn't allow what I did at all. But the Micro Chroma 68 would definitely not need row burst mode. Adding cache RAM and seeing how far beyond 2 Megahertz I could overclock it was not part of the plan.

So, if I swapped the usual rank of row and column, I could borrow the low order address scan count for refresh strobe, by addressing the dRAM rows instead of the columns with the VDG low address lines. Doing this, the row refresh would be completed within the required timing of once every ten or so milliseconds.

I was a little worried that changing VDG modes would cause problems, but it looked like it would still be quick enough, even if the VDG skipped a frame. So I decided to wire it up and see if it would work.

I added a whole 6821 PIA for an extra bit of output to switch between the lower 32K and the upper 32K. That was a waste, but I thought I could use the extra bits elsewhere.

With a bit of additional logic, I was able to decode the selected 32K bank starting just above static RAM, at addresses $2000 to $9FFF, giving 40K of contiguous addressable RAM.

I quickly had enough of a circuit design put together to walk to Radio Shack and pick up perfboards, a bunch of headers and sockets for them, some 74LS series bus buffer latches, and some other parts, and start wiring the circuit up on one of the perfboards, using point-to-point soldering on the low-profile socket pins. I wasn't able to finish wiring the board before bedtime.

*****

On Sunday, Br. Burns gave me the name and contact information of the manager at the local IBM office, Margaret Bight, and told me she would be expecting to hear from me. I invited him to come take a look at the Micro Chroma 68, and he brought his family over to visit after church meetings.

"Not sure what to say. It looks like a very capable toy. Games, maybe?" was his impression.

Hard to argue with.

I spent Sunday evening at a young adult home evening activity, where we had a gospel-oriented discussion and played Uno after.

*****

Monday evening, I finished wiring up the dynamic RAM and wrote some code for testing it. It worked for both banks of 32 kilobytes, keeping memory contents even when switching between VDG modes.

However, when I tried using one bank as a high-speed substitute for mass storage, I discovered that switching banks to write each byte would corrupt  the bank switched out. It wouldn't be a problem to buffer the data in the static RAM, but I didn't see why it should be losing the data when switching for every byte.

While I analyzed the schematic, Giselle tried it out, quite happy at being able to try out some of the larger BASIC programs she had found in a book at the library.

I couldn't find the problem by just analysis.

*****

Tuesday, I dropped by Dr. Brown's office to ask if I could borrow a scope again to analyze the problem. He said I could.

That evening, after homework and before scriptures, I looked more carefully at the 6844 direct memory access controller. I wanted to see if there were some way to squeeze it into the Micro Chroma 68, to reduce the I/O burden on the CPU if I added a floppy disk controller. It was clear I'd have to perform an extensive bit of surgery on the Micro Chroma 68's printed circuit board in order to hook it in.

So I set that idea aside and started working out the EPROM programmer from the EPROM application notes. Realizing I needed more than the 5 volts that the simple power supplies Denny and I had built, I dug through the spec sheets and application notes that Denny had given me and looked at a switched mode power supply controller's application notes.

Wednesday, with Dr. Brown and the classes observing, I determined that the 6821 was drawing more power than I was giving it when I switched it that fast, which took power away from the dRAMs. Adding a decoupling capacitor on the memory board, and running an additional power and ground pair of wires to the RAM board solved the problem.

(The real me never put a scope on the problem, satisfied with 32K of RAM that he was not thinking he would ever fully use. He seems to have preferred painfully slow progress on Tera he and more daydreaming (about CPUs, memory, peripherals, and code) to generating actual code. Daydreaming. (Speaking of which,  the timing on getting the real world Giselle involved with computers was much later, and involved a different CPU. And didn't get as good traction.) So it might have been power problems, or it might have been timing, or I may have gotten the strobe and the bank switch line crossed up somehow. Until I can un-mothball the old Micro Chroma 68 I built up in the real world, I have no way of knowing.)

At the library, I made a copy of the dRAM circuit diagram for Denny, with notes on the power requirements.

When I got home, I called the IBM office, and the receptionist set me up with an appointment for the next week, instructing me to prepare something written about what I would like to accomplish during the internship. She didn't give me any clues about what kind of goals might be appropriate, said that was part of what they would be judging my application on.

With the RAM circuit settled, I added ROM sockets to the same perfboard, using more of the 6821's output bits and some logic to select the ROM socket to enable. Since the EPROMs I had were 4K, I wired the sockets to be addressed as 4K EPROMs.

While I was at it, I moved the BASIC ROM to the memory board so that it would be close to the circuitry I was using to switch ROMs in and out.

I considered combining four exclusive-or gates on A14, A13, A12, and A11, with four bits of parallel port, to allow switching between the two banks of RAM 2 kilobytes at a time. It wouldn't allow moving the 2 KB segments around in the memory map like the 6829 would, but it would give me more flexibility in using what was there.

Ultimately, I decided I didn't know what I would be using it for, and adding the XOR gates to the addressing would be simple enough to do later.

*****

On Thursday, after delivering the papers, Mom and I were in the kitchen. I was waiting for some toast to pop up, cutting a slice of cheese, for a snack to fuel my work on the EPROM burner design.

Mom was working on Dad's and her income tax records on the kitchen table.

Giselle snuck in through the living room, with a suspicious expression and a squarish load in a plain brown paper grocery sack under her arm and went straight to her room. She returned to the living room, sans load, and announced that she was not, under any circumstances, to be disturbed, then returned to her room and shut the door.

"What do you think is in the box in the bag?"

"Looks about the right size to be a Color Computer," I guessed, semi-randomly.

She nodded and went back to her bookkeeping.

Twenty minutes later, I was back in my room sketching out a tentative design and writing out a parts list, when Giselle came in looking frustrated.

"I need your help. But you have to promise not to tell Mom and Dad."

"Sure. I'm sure you'll tell them yourself anyway, and I'm sure whatever it is can wait until you do. But, just so you know, Mom and I already guessed it looked about the right size for a Color Computer."

"Well!" She stood, arms akimbo, angrily staring at me.

"It was a guess. Giselle, we know you're not going to do anything bad, so just take your time, and if we guessed right just pretend we guessed wrong. Okay?"

She turned without answering and left. From the hall, she called. "Are you coming?"

"Coming."

Spread out on her bed were a Color Computer with only 4 KB RAM, manuals, a program pack cartridge, and a 64 K RAM upgrade kit. "It was on sale," she explained.

"You want me to install the RAM upgrade."

"I want you to make sure I turn it on right."

"Okay."

"Then install the upgrade."

I obliged, fetching my tools and my TV from my room. After letting her check that it turned on okay, I carefully removed the "NO USER SERVICEABLE PARTS INSIDE!" sticker over the middle screw in the base without tearing it, and opened the case up. I may not have been a Tandy service technician, but I sure wasn't just an ordinary user.

Pretty soon we had the 64 K RAMs swapped in, the circuit board modified as necessary, and BASIC showing its welcome message once again on my TV screen. Giselle checked how much RAM she had:
PRINT MEM
24871
"That's not 64 K!"

"True. But that's what half of 64 K looks like after BASIC reserves the RAM it needs and the display RAM. The top half of the RAM shadows the ROMs and ports. To use the full 64 K, you'll need to either copy the BASIC ROM into RAM or use OS-9. And you'll still not be able to access something like 8K, I think."

"OS-9 needs floppy disks."

"Yes, it does."

"So what do I do? I don't have any more savings I dare spend."

"Good question. But you can always use the RAM you do have for whatever you were going to do with it."

"I bought a word processing cart."

"Sounds good."

"I want to run a business typing. How do I print?"

"I don't know much about business, but you need a printer, and your own TV for display, too. I think it's time to consult with Mom and Dad."

She looked at me with a thoughtful face.

"Okay."

And she went in to get Mom.

I watched for a few minutes while she and Mom used my TV and cassette recorder to get familiar with the new computer and word processing cart.

Her word processing cart used the Color Computer's highest density graphics to produce true lower case letters on the screen, and to make preview modes available, where you couldn't see the actual text, but you could see how the text would spread across the page.

Mom asked questions as Giselle tried things, and Giselle let Mom take her turn. Shortly, Giselle had the basics of the word processing cart mastered, and had typed in and saved some sample documents. I went back to my room to work some more on the power supply a little before Dad came home and came into my room.

"Hi, son."

"Hey, Dad. What's up?"

"I need your help. Wheres our Mommy?"

"She and Giselle are ... in her bedroom discussing some things."

Dad ducked out of my room, and I heard him start chuckling quietly in the hallway. Then he came back in my room. "Looks like one of my questions is settled. Can you come give me a hand?"

"Give me a minute to complete my notes and I can."

"What're working on?"

"Need a different power supply than what Denny and I built, different voltages for all the stuff I want to hook up."

"Will you need it for a printer?"

"Depends on what kind of port the printer has. Are you thinking of buying a printer?"

"There was a, I think you called it a dot matrix printer on sale at Radio Shack."

"Oh."

I finished the line I was drawing and went with Dad to the living room.

"Three hundred on sale." Dad frowned. "If it won't work, we can take it back today."

I looked at the box and saw that it was one of the printers that had both a standard parallel interface and a serial interface specifically designed for the Color Computer.

"This will definitely work with Giselle's new tools."

"Well, that's good to know."

"I'll need to wire up my own ports to use it with the Micro Chroma 68, but it should work okay with that, too."

"Then we'll keep it."

"If you think the family finances are up to it."

Three hundred dollars in 1981 was about twice what I brought in on a good month with the newspapers, and about half what I could make at a good job in electronics repair. It was more than Dad and Mom's monthly payments for the house loan, but that was because they took the loan out in the mid-1960s. A new house loan at the time would start about three hundred.

 "We'll be okay."

"I upgraded Giselle's computer to 64 K, but she still needs a TV monitor and cassette recorder of her own before she can start using it for real."

"Ah. Yes. I should talk to your mother. He turned toward Giselle's open door. "Max? Can I have a word with you?"

Giselle started and turned around with a guilty look on her face.

Dad grinned at Gizelle. "Hi, Zee."

"Uh, hi, Dad?" She swallowed.

"Nice day for new tools, isn't it?"

"Uhh ..."

"What do you need, Ted? Giselle and I were exploring her word processor program."

"Won't take long." Dad indicated the living room with his head.

"Just a minute, Giselle."

I went back into my room, to allow Mom and Dad to consult in private. I didn't have time to remember what I was doing before Dad called me into Giselle's room to help hook the printer up.

Giselle's test documents printed nicely, and we were all pleased.

"But I understand you need a TV monitor and a cassette deck of your own."

"Well, ... yeah. I do."

"If I bought them, would you mind sharing? Letting me work on my class handouts and tests when you aren't busy?"

Giselle's face lit up. "I could do that!"

So we went back to Radio Shack and picked out a TV and cassette deck, checking the demo units to see that they worked well with the demo Color Computer.

Back home again, I called Denny.

"Now what?"

"Got the dynamic RAM working pretty cheap."

"Oh, yeah?"

"Used the VDG for the refresh counter."

"Heh. Send me the diagram?"

"Tomorrow. I'm looking at the EPROM burner and other I/O, and we need power at other than 5 volts. So I'm looking at building a switcher."

"Are you sure you want to do that? Why not just do a voltage doubler?"

"Voltage doubler, switch mode, same stuff happening, .... Hadn't thought of that. Would be a bit less of a reach."

"Well, yeah. That's the point. Get this built so you can use it to help build your real computer."

I thought for a moment more. "I guess I'll look at it. So, what I'm really calling for, I'm thinking your surplus store is going to be the best place to get a UV EPROM eraser and a raw disk drive."

"You're wanting to come down for the three-day weekend ...?"

"Was thinking next week or the week after, actually."

 "Why not jump on it now?"

"Giselle has bought herself a Color Computer, and Dad and Mom have bought a TV monitor and cassette recorder for her, and she's going to be wanting help this weekend."

"She's what? No, no, she's supposed to wait until we've built our super-duper computers and use them!"

"Heh."

"Well, ..., okay, tell her I forgive her. This time. And to have fun with it."

"So, ..."

"So next week will be better for me than the week after. Date?"

"Date."

(As noted previously, this whole episode did not happen at all in the real world. I don't know if Giselle would have taken to the Color Computer as readily as this, if it had. Giselle got her first computer while I was on my six-year break from BYU, and Dad and Mom got their first computer after Chika and I moved to Japan. I also got my first printer during that six-year break.)

*****

Over Friday, Saturday, and Monday, I got voltage doubler circuits working for RS 232C and the EPROM, and I wired the fast cassette interface, a parallel printer port, and a couple of serial ports on one perfboard. The parallel and serial ports worked fine for the printer, with a cable adapter for the serial port. The fast cassette interface also seemed to work fine, but I wanted to take it in for tuning the next week.

I used my own text editor and text processor to write up a résumé and a proposal for the internship, focusing on my experience in electronics to that point, my progress on the Micro Chroma 68, my interest in using Japanese on computers, and on my interest in how things were done at IBM, saved them on the slow cassette and the fast cassette, and printed it all out on the new printer. It was visibly dot matrix, but still quite legible.

And Dad got some class handouts worked up on Giselle's computer, and Giselle started putting samples together for showing potential clients.

*****

I somehow made time to go to the Valentine's Day dance on Saturday and play softball with the church young adult group on Monday.

Neil's little sister, Niki, with encouragement from her brother by mail and promises of help from me and Br. Orange, was handling the sound for the dance. Br. Orange and I spelled her at the turntable so she could go dance, and she enjoyed it and decided she could start doing it regularly.

Of course, I danced three or four with her. Five years' difference seems like a lot when you're twenty-one or sixteen.

There was a young woman named Brandy who had come to earn college money working in the oilfield support for a year, who claimed a few dances with me and spent some time hanging out around the turntable when I was on it. Very interesting person, very strong personality. If you called her cute, you had to have your wits ready, but she was pretty good-looking.

She came to play softball on Monday, and when she hit a homer with two on in the eleventh inning and our side won, I cheered with "That's my woman!"

She politely but firmly informed me she was not my woman when she came in to home plate, and I filed that particular cheer away as one not to use without considering how the woman I was cheering might perceive my interests.

Maybe "That's our woman!" would have been better, but somehow I doubted it.

*****

"That's a computer?" Mike's face showed his doubt.

I had brought the Micro Chroma 68 to Tuesday's BASIC class, to pass off the previous week's assignment of an amortization table, and most of the students were gathered around where I had set it up before class started. It was showing the TVBUG monitor ROM prompt on the screen.

"No, it's a wooden box with a computer inside it," Pat rolled her eyes and shook her head. "Of course it's a computer."

I chuckled. "It's a work in progress, but, yeah, it does have a microcomputer in there."

"No operating system?" she asked.

"Not yet, not unless you can calll a debugging monitor an operating system."

Don looked puzzled. "What's an operating system?"

Prof. Bright cleared his throat behind us. He had come in to get a look at the Micro Chroma 68.

Prof. Crane chuckled. "Don, do I need to put that question on the final?"

"No! Wait. Is it the thing where we log in on the Univac and then give it the command to run BASIC?"

"By me, I think he's got it," George intoned in a British accent cobbed from Monty Python or Dr. Who.

Prof. Bright nodded. "Very good, Don. That's the boot ROM giving you some kind of prompt, right, Joe?" He was clearly prompting me.

"Yeah. It's a debugging monitor, so it accepts debugger commands. I have Tiny BASIC in a ROM, there," I lifted the cover and pointed at the ROM, visible on the memory board. "So I can just give it the command to jump into the ROM at the right place, and it will boot BASIC." I demonstrated, as I had for my family, and the Tiny BASIC prompt came up. "Although, really, considering the amount of ROM in the thing, it's hard to call this guy's startup process bootstrapping."

Prof. Crane tilted his head. "Why would you say that?"

"The monitor, tape interface, and the BASIC interpreter are all already resident in ROM, not read into RAM from tape or disk or some persistent storage device. There's no sense of the computer 'raising itself by its own bootstraps to a usable state'. All it is does is initialize some variables so code that's already there can run."

Prof. Bright nodded. "But initializing the variables is something it does for itself, right?"

"Well, I guess I can grant that."

"So," Prof. Crane asked, "can you fix it so it goes from the monitor to BASIC without typing that monitor command in?"

I had to think for a moment. "I don't recall seeing code where the monitor checks for a other ROMs to execute, but I couldn't swear it's not there. There are a couple of diagrams, I think, for circuits to change the reset vector."

"Doesn't the reset process do some bootstrapping in the CPU itself?"

"I'm sure it does, but Motorola hides that pretty well. It's a black box." I thought for a minute. "I am planning on getting floppy disks and purchasing or writing an operating system for this computer. When I do, I'll have to write drivers for the floppy disks, at least. Initializing the drivers before reading the OS from the floppy will make starting it up a bootstrap process."

"Something like this?" Prof. Bright draw a state transition diagram on the whiteboard:
reset -> monitor -> driver init -> OS
I nodded in agreement. "Something like that."

"So," Pat asked, "What OS are you thinking of? CPM? Unix?"

"I've been looking around, and it looks like the best suspect is an operating system called Flex. I don't really know much about CPM or Unix, but I haven't seen either available for the 6800."

"I've been using both at work. Unix comes with source code, and lots of people are implementing CPM from the specifications and documentation."

"Source code? What's the CPU?"

"The computers are PDP-11s, but the source code is in C."

I looked at Pat expectantly.

She didn't add anything.

"See what?"

 "C language. The programming language, 'C'."

The words I heard were "See language. The programming language, see?" But the intonation was not "see" as an imperative, but as a name. I had to process that.

"It's not in PDP-whatever assembly language? The name of the language is 'See'?"

"Right. 'C'. But some of it is in PDP-11 assembler."

More questions came to mind. "What is the PDP-11's CPU?"

"Uhm, PDP-11?"

The professors were listening to the exchange in amusement, but Prof. Bright took pity on me about the processor. "PDP-11 is a mini. I understand the 6800 register model and assembler are modeled after the PDP series somewhat."

"So a PDP series minicomputer processor." I nodded. And most of the operating system is written in a high level language called 'See'."

Prof. Crane took further pity on me and wrote the letter 'C' on the whiteboard. "'C', see?"

I chuckled at the joke. "Now I see."

Pat nodded and some of the other students laughed nervously.

"Ah, time to start today's lesson. Past time, even. Let's get our textbooks out." Prof. Crane asked if there were any questions, then started us discussing roots of equations in preparation for the Newton-Raphson project.

After class, he checked my program and the output. "You know, it would be easier to grade this if I had a printout of the source to look over after you take the computer home."

"Ah. Yeah. We bought a printer." I dug the two-page printout out and handed it to him.

"Oh. Great. Thanks."

"So what do you think of porting Unix to it?" Pat was waiting around, very interested in the computer. Several of the other students were also hanging around.

"I haven't seen any advertisements for a C compiler for this."

"Oh." She seemed disappointed. "I guess you're not interested in writing a compiler yourself?"

"I've seen those railroad track syntax diagrams for Pascal, but I haven't even seen a programmers manual for this C language. And I guess I need something fairly easy to start on, to bootstrap my understanding of how to write such things."

Prof. Bright had returned, and was listening. "Do you think you might like to write a compiler?"

I thought about that. "Sure. Maybe. But it has to be something that doesn't require tools I don't have."

He and Prof. Crane exchanged glances.

"What would you suggest, Rusty?"

"Languages built on lists can be easy to write. LISP has a bit of a steep learning curve. Snobol was fun, but I have no idea how to get information on it. Forth is a bit easier, and there's the fig -- the Forth Interest Group -- giving information out for the cost of copying it."

"Ah, Forth. That's stacks and RPN. You were saying you like Hewlett Packard calculators, weren't you, Joe?"

I had said such a thing, and my interest was piqued.

On the way home, I dropped by the library to see if I could find information on Forth or the Forth Interest Group, and again I found an ad from Mountain View Press, in Dr. Dobb's Journal. Again I took a copy of the ad home with me.

At home, I delivered the newspapers first because Mountain View Press was in California, and I could call after six o'clock local time and get cheaper rates. I got the information I needed, and wrote out an order for hardcopy of the 6800 model source code and the installation manual, and a copy of the source code on cassette tape in Kansas City format.

Chapter 9: Headwind

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-bootstrapping-or-baby-steps.html.]

Tuesday, February 11, 2020

Backup: 33209: Bootstrapping, or Baby Steps

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-bootstrapping-or-baby-steps.html.
Second backup at https://joel-rees-economics.blogspot.com/2020/02/bk01-33209-bootstrapping-or-baby-steps.html. Major changes from Friday evening.

Chapter 7.5: A little about the 6800 (and Others)

Chapter 8: Bootstrapping, or Baby Steps


After delivering the Saturday morning edition, I lined the inside of the box with sheet metal and installed the fan and the power supply, mounted the mainboard horizontally on offsets, grounded the board to the Faraday cage, mounted the keyboard, and tested that it still worked when everything was assembled.

While I worked on designing the dynamic RAM circuitry and the ROM circuitry, Giselle played with the computer, using Tiny BASIC and asking me how to do things as she experimented.

Departing drastically from the example refresh circuit in the manual, I decided to borrow the video display generator's scan for the refresh strobe.

You may be thinking that the video scan works on the wrong part of the address for refresh. You're right. Dynamic RAM refresh strobes have to count through the row addresses several hundred times per second. The VDG's lower address lines continuously count, completing their count tens of times per second, but if you attach the address lines in the usual way, the lines that count end up being column addresses, not row addresses.

However, contrary to ROM, RAM doesn't really care about the order it is addressed in. Where you write the data is where it reads back from, and if the address lines don't change between write and read, the readback succeeds without any notice that the lines don't match the labels.

Well, many dynamic RAMs have row burst mode for speed, and if you use row burst access, the row must be an actual row. Otherwise, you'd be burst accessing with gaps, which is generally not useful. Row burst wouldn't allow what I did at all. But the Micro Chroma 68 would definitely not need row burst mode. Adding cache RAM and seeing how far beyond 2 Megahertz I could overclock it was not part of the plan.

So, if I swapped the usual rank of row and column, I could borrow the low order address scan count for refresh strobe, by addressing the dRAM rows instead of the columns with the VDG low address lines. Doing this, the row refresh would be completed within the required timing of once every ten or so milliseconds.

I was a little worried that changing VDG modes would cause problems, but it looked like it would still be quick enough, even if the VDG skipped a frame. So I decided to wire it up and see if it would work.

I added a whole 6821 PIA for an extra bit of output to switch between the lower 32K and the upper 32K. That was a waste, but I thought I could use the extra bits elsewhere.

With a bit of additional logic, I was able to decode the selected 32K bank starting just above static RAM, at addresses $2000 to $9FFF, giving 40K of contiguous addressable RAM.

I quickly had enough of a circuit design put together to walk to Radio Shack and pick up perfboards, a bunch of headers and sockets for them, some 74LS series bus buffer latches, and some other parts, and start wiring the circuit up on one of the perfboards, using point-to-point soldering on the low-profile socket pins. I wasn't able to finish wiring the board before bedtime.

*****

On Sunday, Br. Burns gave me the name and contact information of the manager at the local IBM office, Margaret Bight, and told me she would be expecting to hear from me. I invited him to come take a look at the Micro Chroma 68, and he brought his family over to visit after church meetings.

"Not sure what to say. It looks like a very capable toy. Games, maybe?" was his impression.

Hard to argue with.

I spent Sunday evening at a young adult home evening activity, where we had a gospel-oriented discussion and played Uno after.

*****

Monday evening, I finished wiring up the dynamic RAM and wrote some code for testing it. It worked for both banks of 32 kilobytes, keeping memory contents even when switching between VDG modes.

However, when I tried using one bank as a high-speed substitute for mass storage, I discovered that switching banks to write each byte would corrupt  the bank switched out. It wouldn't be a problem to buffer the data in the static RAM, but I didn't see why it should be losing the data when switching for every byte.

While I analyzed the schematic, Giselle tried it out, quite happy at being able to try out some of the larger BASIC programs she had found in a book at the library.

I couldn't find the problem by just analysis.

*****

Tuesday, I dropped by Dr. Brown's office to ask if I could borrow a scope again to analyze the problem. He said I could.

That evening, after homework and before scriptures, I looked more carefully at the 6844 direct memory access controller. I wanted to see if there were some way to squeeze it into the Micro Chroma 68, to reduce the I/O burden on the CPU if I added a floppy disk controller. It was clear I'd have to perform an extensive bit of surgery on the Micro Chroma 68's printed circuit board in order to hook it in.

So I set that idea aside and started working out the EPROM programmer from the EPROM application notes. Realizing I needed more than the 5 volts that the simple power supplies Denny and I had built, I dug through the spec sheets and application notes that Denny had given me and looked at a switched mode power supply controller's application notes.

Wednesday, with Dr. Brown and the classes observing, I determined that the 6821 was drawing more power than I was giving it when I switched it that fast. Adding a decoupling capacitor on the memory board, and running an additional power and ground pair of wires to the RAM board solved the problem.

(The real me never put a scope on the problem, satisfied with 32K of RAM that he was not thinking he would ever fully use. He seems to have preferred painfully slow progress on Tera he and more daydreaming about CPUs, memory, peripherals, and code. Daydreaming. Speaking of which,  the timing on getting the real world Giselle involved with computers was much later, and involved a different CPU. So it might have been power problems, or it might have been timing, or I may have gotten the strobe and the bank switch line crossed up somehow. Until I can un-mothball it, I have no way of knowing.)

At the library, I made a copy of the dRAM circuit diagram for Denny, with notes on the power requirements.

When I got home, I called the IBM office, and the receptionist set me up with an appointment for the next week, instructing me to prepare something written about what I would like to accomplish during the internship. She didn't give me any clues about what kind of goals might be appropriate.

With the RAM circuit settled, I added ROM sockets to the board, using more of the 6821's output bits and some logic to select the ROM socket to enable. Since the EPROMs I had were 4K, I wired the sockets to be addressed as 4K EPROMs.

(The real me ended up wiring the dRAM in the kludge area of the mainboard.)

*****

On Thursday, after delivering the papers, Mom and I were in the kitchen. I was waiting for some toast to pop up, cutting a slice of cheese, for a snack to fuel my work on the EPROM burner design.

Mom was working on Dad's and her income tax records on the kitchen table.

Giselle snuck in through the living room, with a suspicious expression and a squarish load in a plain brown paper grocery sack under her arm and went straight to her room. She returned to the living room, sans load, and announced that she was not, under any circumstances, to be disturbed, then returned to her room and shut the door.

"What do you think is in the box in the bag?"

"Looks about the right size to be a Color Computer," I guessed, semi-randomly.

She nodded and went back to her bookkeeping.

Twenty minutes later, I was back in my room sketching out a tentative design and writing out a parts list, when Giselle came in looking frustrated.

"I need your help. But you have to promise not to tell Mom and Dad."

"Sure. I'm sure you'll tell them yourself anyway, and I'm sure whatever it is can wait until you do. But, just so you know, Mom and I already guessed it looked about the right size for a Color Computer."

"Well!" She stood, arms akimbo, angrily staring at me.

"It was a guess. Giselle, we know you're not going to do anything bad, so just take your time, and if we guessed right just pretend we guessed wrong. Okay?"

She turned without answering and left. From the hall, she called. "Are you coming?"

"Coming."

Spread out on her bed were a Color Computer with only 4 KB RAM, manuals, a program pack cartridge, and a 64 K RAM upgrade kit. "It was on sale," she explained.

"You want me to install the RAM upgrade."

"I want you to make sure I turn it on right."

"Okay."

"Then install the upgrade."

I obliged, fetching my tools and my TV from my room. After letting her check that it turned on okay, I carefully removed the "NO USER SERVICEABLE PARTS INSIDE!" sticker over the middle screw in the base without tearing it, and opened the case up. I may not have been a Tandy service technician, but I sure wasn't just an ordinary user.

Pretty soon we had the 64 K RAMs swapped in, the circuit board modified as necessary, and BASIC showing its welcome message once again on my TV screen. Giselle checked how much RAM she had:
PRINT MEM
24871
"That's not 64 K!"

"True. But that's what half of 64 K looks like after BASIC reserves the RAM it needs and the display RAM. The top half of the RAM shadows the ROMs and ports. To use the full 64 K, you'll need to either copy the BASIC ROM into RAM or use OS-9. And you'll still not be able to access something like 8K, I think."

"OS-9 needs disks."

"Yes, it does."

"So what do I do? I don't have any more savings I dare spend."

"Good question. But you can always use the RAM you do have for whatever you were going to do with it."

"I bought a word processing cart."

"Sounds good."

"I want to run a business typing. How do I print?"

"I don't know much about business, but you need a printer, and your own TV for display, too. I think it's time to consult with Mom and Dad."

She looked at me with a thoughtful face.

"Okay."

And she went in to get Mom.

I watched for a few minutes while she and Mom used my TV and cassette recorder to get familiar with the new computer and word processing cart.

Her word processing cart used the Color Computer's highest density graphics to produce true lower case letters on the screen, and to make preview modes available, where you couldn't see the actual text, but you could see how the text would spread across the page.

Mom asked questions as Giselle tried things, and Giselle let Mom take her turn. Shortly, Giselle had the basics of the word processing cart mastered, and had typed in and saved some sample documents. I went back to my room to work some more on the power supply a little before Dad came home and came into my room.

"Hi, son."

"Hey, Dad. What's up?"

"I need your help. Wheres our Mommy?"

"She and Giselle are ... in her bedroom discussing some things."

Dad ducked out of my room, and I heard him start chuckling quietly in the hallway. Then he came back in my room. "Looks like one of my questions is settled. Can you come give me a hand?"

"Give me a minute to complete my notes and I can."

"What're working on?"

"Need a different power supply than what Denny and I built, different voltages for all the stuff I want to hook up."

"Will you need it for a printer?"

"Depends on what kind of port the printer has. Are you thinking of buying a printer?"

"There was a, I think you called it a dot matrix, printer on sale at Radio Shack."

"Oh."

I finished the line I was drawing and went with Dad to the living room.

"If it won't work, we can take it back today."

I looked at the box, and it was one of the printers that had both a standard parallel interface and a serial interface for the Color Computer. "This will work with Giselle's new, uhm, tool."

"Well, that's good to know."

"I'll need to wire up the ports to use it with the Micro Chroma 68, but it should work okay with that, too."

"Then we'll keep it."

"If you think the family finances are up to it."

 "We'll be okay."

"I upgraded Giselle's computer to 64 K, but she still needs a TV monitor and cassette recorder of her own before she can start using it for real."

"Ah. Yes. I should talk to your mother. He turned toward Giselle's open door. "Max? Can I have a word with you?"

Giselle started and turned around with a guilty look on her face.

Dad grinned at Gizelle. "Hi, Zee."

"Uh, hi, Dad?" She swallowed.

"Nice day for new tools, isn't it?"

"Uhh ..."

"What do you need, Ted? Giselle and I were exploring her word processor program."

Dad indicated the living room with his head.

"Just a minute, Giselle."

I went back into my room, to allow Mom and Dad to consult in private. It didn't take long, and Dad called me into Giselle's room to help hook the printer up.

Giselle's test documents printed nicely, and we were all pleased.

"But I understand you need a TV monitor and a cassette deck of your own."

"Well, ... yeah. I do."

"If I bought them, would you mind sharing? Letting me work on my class handouts and tests when you aren't busy?"

Giselle's face lit up. "I could do that!"

So we went back to Radio Shack and picked up a TV and cassette deck, checking the demo units to see that they worked well with the demo Color Computer.

Back home again, I called Denny.

"Now what?"

"Got the dynamic RAM working pretty cheap."

"Oh, yeah?"

"Used the VDG for the refresh counter."

"Heh. Send me the diagram?"

"Tomorrow. I'm looking at the EPROM burner and other I/O, and we need power at other than 5 volts. I'm looking at building a switcher."

"Are you sure you want to do that? Why not just do a voltage doubler?"

"Voltage doubler, switch mode, .... Hadn't thought of that. Would be a bit less of a reach."

"Well, yeah. That's the point. Get this built so you can use it to help build your real computer."

"Hmm. I guess I'll look at it. So, what I'm really calling for, I'm thinking your surplus store is going to be the best place to get a UV EPROM eraser and a raw disk drive."

"You're wanting to come down for the three-day weekend ...?"

"Was thinking next week or the week after, actually."

 "Why not jump on it now?"

"Giselle has bought herself a Color Computer, and Dad and Mom have bought other things she needs, and she's going to be wanting help this weekend."

"She's what? No, no, she's supposed to wait until we've built our super-duper computers and use them!"

"Heh."

"Well, ..., okay, tell her I forgive her. This time. And to have fun with it."

(As noted previously, this whole episode did not happen at all in the real world. I don't know if Giselle would have taken to the Color Computer as readily as this, if it had.)

*****

Over Friday and the three-day weekend, I got voltage doublers working for RS 232C and the EPROM, and I wired the fast cassette interface, a parallel printer port, and a couple of serial ports on one perfboard. The parallel and serial ports worked fine for the printer, with a cable adapter for the serial port. The fast cassette interface also seemed to work fine, but I wanted to take it in for tuning the next week.

I used my own text editor and text processor to write up a proposal for the internship, focusing on my experience to that point, my interest in using Japanese on computers, and on my interest in how things were done at IBM, and printed it out on the new printer.

Dad got some handouts worked up on Giselle's computer, and Giselle started putting typing samples together to use when talking with clients.

*****

And I somehow had time to go play softball with the church young adult group on Monday.

When Brandy hit a homer in the eleventh inning and our side won, I cheered with "That's my woman!"

She politely but firmly informed me she was not my woman, and I filed that cheering phrase away as one not to use without considering how the woman I was cheering might perceive my interests.

Maybe "That's our woman!" would have been better, but somehow I doubted it.

Chapter 9: Headwind

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-bootstrapping-or-baby-steps.html.]

Backup: 33209: A little about the 6800 (and Others)

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-little-about-6800-and-others.html.

Chapter 7: Wandering Eyes

Chapter 7.5: A Little about the 6800 (and Others)


This chapter is for the geek in you. It's also important background information, to motivate the directions taken by various people in the story.

The 6800 had the primary binary operators that could be implemented for its two accumulators (A and B) in integrated circuits of the early 1970s:
  • Addition (ADD) and subtraction (SUB)
  • ADD and SUB taking previous carries into account (ADC and SBC)
  • Compare (CMP -- subtract without storing the result.)
  • Data movement (LDA and STA -- load and store accumulator)
  • Bit logic: AND, OR, and XOR (exclusive-or)
  • Bit test (BIT -- bit AND without storing the result.) 
  • Compare index register (CPX -- index as one operand instead of accumulator)
  • Load and store index and stack register (LDX, STX, LDS, STS -- also index and stack pointers instead of accumulators)
They also had several unary operators. Well, unary operators are binary operators with one of the operands implicit:
  • Increment and decrement (INC, DEC -- add and subtract 1)
  • shift and rotate left and right 1:
    • "Arithmetic" Shift Left (ASL -- equivalent to adding operand to itself. Ignores sign, or, in other words, the previous sign disappears.)
    • "Arithmetic" and "Logical" Shift Right (ASR  and LSR -- equivalent to dividing by 2. ASR preserves the high bit as a sign bit, LSR clears the high bit.)
    • Bit rotate left and right (ROL, ROR --  shifts, but the previous carry bit gets shifted in to replace the vacated bit.)
    All shifts and rotates save the bit shifted out in the carry bit, so the rotates are nine-bit rotations.
    Note that shifting n times is multiplying or dividing by 2n.
  • Clear (CLR -- load or store 0)
  • Bit Complement (COM: invert the bits, equivalent to subtracting the operand from 255 or bit XOR-ing with $FF. $FF == 255, or eight bits set to 1s.)
  • Negate (NEG: subtract the operand from 256. 256 == $100, one more than fits in eight bits.)
  • Value test (TST -- subtract zero from operand. Tells the program whether the operand is zero or negative, without altering the operand.)
Of the unary operators, the right shifts and the bit rotates are the only operators that can't be synthesized from one or more binary operators. And the rotates can be synthesized from the shifts, so the only truly necessary unary operators ar the two right shifts.

However, the unary operators can operate directly on memory, which can save a lot of code that would otherwise have to save the accumulator, do the math, and then restore the accumulator.

Hopefully, you are wondering how the operands are specified. This is the strength of the 6800, what sets it apart from the 8080. But it is also one of the places the engineers missed a bet.

Each of the binary operators (or instructions) has a version for each accumulator.  The other operand is specified as
  • the value of a byte of memory at an absolute sixteen-bit address (extended mode)
  • the value of the byte of memory immediately  following the instruction (immediate mode)
  • or the value pointed at by the index register offset by value of the byte following the instruction (indexed mode)
  • ... or the value at one of the first 256 locations in memory (direct mode).
The direct mode saves a byte, and the time of a memory cycle, somewhat softening the cost of saving registers to memory and then restoring them.

(Unfortunately, while the unary operators/instructions have both indexed and extended mode versions -- operating directly on memory. They also have a version for each accumulator. But there is not a direct mode version, apparently because the designers ran out of space in the 8-bit op-code map.

Kibitzing is free and you can always say it shouldabeen, but I think if I had been on the design team I'd have agitated for moving the inherent operators out of one of the ranks, to clear space for a direct mode version.

This is not a serious problem in any of the real implementations of the 6800, because direct is exactly the same as extended, with the high byte of the address equal to zero, except for the code size and time savings.

But if there were a direct mode version of the unary operators, the intent that the direct page be used to overcome the scarcity of registers would have been more clear, and much of the false information that circulated about the limits of the 6800 instruction set could have been avoided.

Also, if you wanted to put the direct page in its own address space, it would be a problem, which is something to keep that in mind.)

In addition, there are several instructions that are called "inherent" mode, where the operands are all implicit in the instruction. These include
  • manipulating result flag bits (TPA, TAP -- transfer Processor flags to/from A accumulator)
  • incrementing and decrementing the index and stack pointers (INX, DEX, INS, DES)
  • moving and adding/subtracting between accumulators (ABA, SBA, TBA TAB)
  • pushing and popping the accumulators to/from the stack (PSH, PUL. Note that the "pop from stack" operator in Motorola dialect is "PUL".)
  • moving the stack pointer to/from the index register to get at parameters (TSX, TXS)
  • returning from subroutines and interrupts (RTS, RTI)
  • waiting for interrupts (WAI)
  • Software interrupt (SWI -- useful for debugging and/or system calls)
Then there are the flow of control instructions which operate on the program counter (PC -- called instruction pointer in many other CPUs):
  • Jump and call/jump to subroutine (JMP and JSR -- only indexed and extended modes.)
  • Near branch and call (BRA, BSR -- one byte of signed offset is added to program counter.)
  • Conditional branches (Bcc -- condition encoded in the instruction.):
    • BEQ, BNE (zero bit -- equal or not equal after subtract or compare.)
    • BPL, BMI (negative bit -- plus or minus.)
    • BCC, BCS (carry bit -- clear or set, complemented in unsigned compare in BHI and BLS.)
    • BHI, BLS (combination carry and zero for unsigned comparison, high and low-or-same.)
    • BVC, BVS (overflow bit -- used in signed comparisons.)
    • BGT, BGE, BLE, BLT (combination overflow, zero, and negative bits for signed compares -- greater than, greater than or equal, less than or equal, less than)
I think that covers the instruction set of the 6800.

All of this is done with relatively few transistors, about 4000 to 5000 gates, less than ten thousand individual transistors, making it possible to manufacture the part using the technology available in the mid-1970s.

In the process of building these, however, they developed new technology that enabled more complex CPUs that could multiply and divide and such without having to add and subtract repeatedly.

When you design a computer's central processing unit, you may not realize it, but you use a mathematical technique of reducing the abstract general computing machine to real hardware.

Each CPU design reflects the what the engineers were focusing on when they performed the reduction.

RISC, "Reduced Instruction Set Computer", is therefore something of a pun, overloading the word "reduced" in a somewhat confusing way. The mathematical reduction in RISC architecture is performed with a focus on simplifying the instruction set -- reducing the number of instructions. (Didn't I say engineers love puns?)

When the 4004 was designed, the focus was on the functionality of a single accumulator in an absolute, incomplete reduction of the general computing model. It had to be that way, to fit a functional calculator controller into the available space on an integrated circuit using the technologies available and techniques understood in the very early seventies. The 8080 inherited that focus, through the 8008, adding separate index functionality in the form of index registers.

Intel's engineers were aware of the importance of indexing, so they designed it in a way that a base index address could be saved in one pair of eight bit registers, to be copied to the index register pair where offsets could be added as necessary. Each register had a purpose, and you moved data to the necessary register to operate on it.

Motorola's engineers started with an eight-bit implementation (reduction) of a minicomputer that they had built for their internal use, internally called the 680, according to one story I've heard. According to another, the 6800 was a reduction of the PDP-11 architecture. Either way, they focused on a pair of general-purpose accumulators., adding an index register that implicitly performed offsets.

Lack of generalization in the 8080 was a bottleneck, and the Z-80 was developed as an extension to the 8080, to get around that lack. The Z-80 was the source of the "80" in Tandy Radio Shack TRS-80's name.

The 6800's generalizations also had some lacks. Having only one index register can be clumsy. Constant offsets are not the only math you want to do on index addresses.

The 6502 was developed in no small part as a response to those lacks. It allows variables in page zero (6502 equivalent of the 6800 direct page) to be used directly as pointers, which helps it keep in the same ballpark, performance-wise, as the Z-80.

Motorola developed the 6801 to address the worst of the lacks in the 6800 while keeping the transistor count low, to save room for other functions in systems-on-a-chip (SOC) applications.
  • The 6801 adds instructions which pair the A and B accumulators, A as the high byte, to load, store, add, subtract, and shift sixteen bit values. This significantly simplifies manipulating pointers.
  • It also adds an instruction to directly add the B accumulator to the index register, directly supporting small variable offsets.
  • CPX, the comparison for the index register, is generalized in effect on the flags. Again, this improves index handling.
  • It adds a hardware multiply instruction, 8 bit by 8 bit, yielding sixteen bits useful for many things, including speeding array index math.
  • Adding a JSR call into the direct page might seem odd, but it makes it less costly to implement a small number of short convenience subroutines.
  • Pushing and PUL-ing (popping) the index register seems like an odd omission in the 6800, the omission is corrected in the 6801.)
  • BRN is not really new with the 6801, but the 6801 makes it official, allowing its use as a marker No-op separate from the one-byte NOP. 
*****

In overall performance, an engineered skilled in programming the 6502, Z-80, and 6801 could get similar performance from each in many general applications. The companies that produced them also produced a variety of special purpose microcontrollers based on or similar to them, for specific classes of applications, as the market moved forward in the 1980s.

*****


That's too much tech for one chapter, but I'll add a little more arithmetic, for background.

The smallest bit of information in a binary computer is called a "bit". You may think this is a pun, and it is, but it is also an acronym: "Binary digIT".
A bit can take two values, but the values can be interpreted in many ways, for example:

Values of a Bit
Values:OnOff
Numeric:10
Logic:TrueFalse
Sign:PlusMinus
Gender:Non-traditionalTraditional

are some possible ways of interpreting the values of a bit. Note, in particular, that the actual assignments are arbitrary. "On" could also be interpreted as "minus", for instance.

Two bits together can take four values. Some example interpretations might be

Values of Two Bits Strung Together
Values:On-OnOn-OffOff-OnOff-Off
Unsigned Numeric:3210
Signed Numeric:-1-210
Logic:TrueTheoreticalFantasyFalse
Sign:Plus-RealPlus-ImaginaryMinus-RealMinus-Imaginary
Vegetable:PotatoOnionCabbageCarrot

The fundamental size of a piece of information for a computer has been traditionally called a "byte".  Yes, this is a pun, pure and simple.

Most modern computers use an eight bit byte, which allows 28, or 256 possible values. Numeric interpretations quickly spring to mind, such as 0 to 255, or -128 to 127. Other interpretations are not just possible, but are quite often used. For example, one might imagine an encoding in which male, female, and 254 other genders are encoded in an eight-bit byte.

More typical is the US ASCII encoding, which actually only uses seven bits. Uppercase 'A', for instance, is encoded as decimal 65, and lowercase 'z' as decimal 122. '0' through '9' are decimal 48 through 57, which may seem confusing until you consider carefully the difference between numerals and numbers, or between the names of numbers and the value of numbers. The period, '.', is decimal 46.


So we can use numbers as codes for letters and words and all sorts of ideas, which means we can also store and work on text.

And we can use numbers to specify the color of a dot on a screen or a piece of paper, so we can also store pictures.

This provides us with ways to store and manipulate pretty much any information we could want. Sort of.

Interpretations are arbitrary. The binary number
01101101011000010110100101101100
could easily be read as binary equivalent of the decimal number
1,835,100,524
But If you put the most significant byte last, as Intel has been influencing the world more and more to do, it would be  
swap order: 01101100 01101001 01101101 01100001
compress:  01101100011010010110110101100001
decimal: 1,818,848,609
Or it could be the text string
mail
Of if the Intel byte order played tricks on you, it could be
liam
Or it could be interpreted as a floating point number under several different standards. Depending on the standard, it could be very large or very small.


Even as integers unsullied by byte order issues, the numbers have limits.

A byte in a 6800 or 6502 or about any microprocessor you'll see is eight bits. (In some other computer CPUs, especially older mainframes, a byte will be a different size -- nine, six, seven, twelve, etc.)

An 8-bit register or memory cell can store a number between 0 and 255, inclusive. That's not a lot, but you can string several together. Two 8-bit registers treated together can store a number between 0 and 65,535, inclusive.

Unsigned Integers
SizebitsMinimumMaximumas Power of 2
1 bit1 bit0121-1
2 bits2 bits0322-1
1 nibble4 bits01524-1
1 byte8 bits025528-1
2 bytes16 bits065,535216-1
4 bytes32 bits04,294,967,295232-1
8 bytes64 bits018,446,744,073,709,551,615264-1

(Nibble is also sometimes spelled "nybble".)

The same numbers can be read as signed numbers, in various ways. Two's complement is currently the most common method:

Signed Integers (Two's Complement)
SizebitsMinimumMaximumas Power of 2
1 bit1 bitplusminus--
2 bits2 bits-21-21 ~ 21-1
1 nibble4 bits-87-23 ~ 23-1
1 byte8 bits-128127-27 ~ 27-1
2 bytes16 bits-3276832767-215 ~ 215-1
4 bytes32 bits-2,147,483,6482,147,483,647-231 ~ 231-1
8 bytes64 bits-9,223,372,036,854,775,8089,223,372,036,854,775,807-263 ~ 263-1


It's tempting to show some limits for the current most common standard floating point numbers, but this really is probably enough tech for this chapter.

[JMR202002111425, added after posting:]

*****

Well, wait. I need to mention the 6809.

Some people think the 68000 was Motorola's answer to Intel's 8086.

That isn't really a good comparison.

The 68000 was Motorola's answer to the ARM, almost ten years too early. Or it was Motorola's answer to AMD's x86-64, about twenty years too early and 32 bits short. More to the point, it was Motorola's answer to Intel's iAPX 432, which was another architecture that was a little too much, too far ahead of its time.

That the 68000 was successful so far ahead of its time is something to think about, but I want to point to what was actually Motorola's answer to the 8086, the 6809. (Perhaps it would be more clear if I said it was the answer to the 8088.)

The 6809 is often mistaken for a stepping stone between the 6800 and the 68000. But they were developed simultaneously, with different but similar design goals.

The 6801, by the way, is thought to have been influenced by the design work on the 6809.

The 6809 was targeted more towards extending the 6800's reach into the sixteen-bit controller market, which it did quite well.

For various reasons (including the ever-mistaken "Must not compete with ourselves!" mantra), Motorola's SOC offerings split between the true-8-bit 6805 series and the half-16-bit 6801 series for half a decade, then moved ahead building on the 6801 instead of the 6809.

Although some see the 68HC11 as a stripped-down 6809, the indexed modes tells the tale. The 68HC11 is simply a 6801 with an additional index register and hardware divide, and appropriate instruction extensions. The 68HC12 and 68HC16 continued building on the 6801, neither offering the advanced programming model that the 6809 offered, although the 68HC16 offered a twenty bit address space.

This programming model could almost be achieved in the 8086, but Intel designed that for the mis-engineered stack frame approach to nested local context. BP and SP are in the same segment unless overridden. (We won't mention the half-baked nature of the segments up until the 80386, since everyone knows about that.)

The 68000 could be used to implement the model, but no one did because Intel was busy pushing stack frames. And IBM, ...

But that gets ahead of my story.

[JMR202002111425 end]

Chapter 8: Bootstrapping

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-little-about-6800-and-others.html.]

Sunday, February 9, 2020

Backup: 33209: Wandering Eyes

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-wandering-eyes.html.

Chapter 6: Marion Had a Micro Chroma

Chapter 7: Wandering Eyes


Friday, I was done with classes and lab work by noon, so Dad and I went to the computer store on 42nd Street, across from the old mall.

(Why Odessa would need two malls within a mile of each other is beyond me and a lot of people who live there. Who knows what the development company that built the second one was thinking? Surely they could have been more imaginative. On the other hand, most malls are intentionally built near the higher class enclaves of a community, which shows how little real estate people think ahead. Parasitic attitudes.)

With some urging, Mom and Giselle came, too.

We asked to look at the Apple II, checking the prices for disk drives, RAM, an 80 column display card, a monitor capable of displaying 80 characters, and a printer. When the owner, Jim Harrow, showed us the prices, Dad whistled a low whistle and muttered under his breath, "Could buy a decent used car for this kind of money."

"Would you like to try the word processor, sir?" Jim was quick on the pick up.

"Dad teaches Spanish. Does the word processor handle diacritical marks?"

"I have a number of customers who buy computers specifically for Spanish word processing, and I have this one set up for it. You could sit down and give it a try."

"Sitting down isn't going to find us an oil patch in the back yard," Dad complained with a wry grin as he sat.

Jim smiled at the joke showed us how to select the keyboard layouts and type in several European languages, then how to print the results out, showing how to adjust the output for a daisy wheel printer and for a dot-matrix printer. Dad was impressed.

Giselle and Mom each tried it out, as well. I had tried it out in the past, and we didn't have all afternoon, so I declined.

"I could almost justify this for the time it would save making tests and handouts. Almost." Dad was thinking.

Mom turned to me, "Now, Joe what about your classes?"

"You're taking classes at UTPB?"

"OC. Electronics."

"Hang on."

Jim went into the backroom.

While he was gone, Mom noticed the synthesizer keyboard on the table on the side. "Does this thing play music, too?" she asked.

"Yeah. That plugs into a synthesizer, which has a lot of sounds our organ can't even try to make. Realistic sounding chimes and drums, echoes in pitch, ..."

"Well, maybe I don't need that."

"Realistic sounding strings and horns, too. I think the whole setup is less than what you would have paid for our organ, new."

"Well, that could be interesting, especially since it's about time to get the organ looked at. The atmosphere in west Texas sure seems to be hard on electronics." She referred to the tendency for the desert air, polluted as it was from refinery and well burnoff made excessive by operating companies that could not be bothered with considerations of pollution or waste, to eat into the metals in switches and sockets.

"I could look at the organ sometime." I was thinking it would be interesting to try controlling the family organ with the computer, but decided not to mention that.

Dad shook his head. "You're too busy."

The keyboard alone cost about as much as the Apple II that would host it and the synthesizer. These days, you can get a good integrated keyboard with a lot of preset synthesized instruments built in, for much less than that keyboard cost. But you could program your own waveforms on that synthesizer card, which is still high-end functionality these days.

Jim came back out with a woman I recognized from previous visits. She was carrying a couple of prototyping boards, one of which would fit into the Apple II's expansion bus.

"This is my wife, Jayne. She likes to dabble in hardware."

"We both do electronics. But Jim is usually busy with customers, so I get to have all the fun." She grinned and showed me what she was working on, a 6502-based remote temperature sensor that interfaced with the Apple through a serial port.

"Looks interesting. But I have a 6800 prototyping board that I plan on using. I'm thinking it could load code through a serial port. Are cross-assemblers for the 6800 series available for the Apple?"

"Actually, yes. And there's also a Pascal development system with a great screen editor you can use for writing programs. You could use that to write the code and do initial tests, then upload the source code and use a native 6800 compiler from there."

At the time, Pascal was the language to bet on for applications that didn't require the high-powered math functionality of ForTran or the business and data functionality of CoBOL. C and Unix were just coming out of the universities.

"No cross compilers for Pascal?" I asked.

"Somebody will probably will have something soon. Or maybe you could write one and sell it?"

"It's a thought."

"Oh. And we have a 6809 co-processor card called the MILL on order for the store, that you might be interested in. It runs OS-9/6809 and Uniflex." Both of these operating systems were strongly influenced by Unix, and, while I was not yet familiar with Unix, I had heard something about the OS's flexibility particularly in the BASIC class.

"Uh, yeah. I've heard some rumors about it. When do you expect it in?"

"They were talking about two weeks, two weeks ago. You know how that goes."

"I'll have to drop back by in a couple of weeks, then." I looked over at Mom. "Could my mom try out the synthesizer before we leave today?"

"Sure."

They set up the synthesizer and demonstrated some of the sounds, then let Mom play a hymn using synthesized glass harp.

"It sounds nice. Maybe we can afford one someday." She was impressed, but was definitely not thinking seriously about it.

After a bit more discussion of available software and hardware, we thanked them for their time and left the store.

"Should we go to the Radio Shack in the new mall, or the one close to home?"

Giselle decided for us. "Close to home."

At Radio Shack, we looked at the Model III and the Color Computer. The salesperson, Trina, let us play with the built-in BASIC on both, but did not have much in the way of word processing to demonstrate. Nor did we have much time left to examine the computers, since I had to get back to deliver newspapers.

While Dad and I talked with Trina, Giselle commandeered one of the Color Computer demo machines and started playing with it .

Trina did show us the store copy of the catalog of third party-products. Tried to send us home with another copy of the current general catalog, but I told her I already had it. She also showed us some printers. But she wasn't able to provide any information about Spanish language word processing.

On a later trip, she showed me in an updated 3rd party catalog that Spanish support was available for the Model III, similar to the Apple. The color Computer would require more hardware for displaying Spanish characters, but it would be simple to add drivers if we used the OS-9 operating system.

Giselle really took to the Color Computer. I was less impressed, thinking that Radio Shack had managed to avoid taking advantage of the potential of the 6809 in it for any purpose but price-cutting.

Dad tried to compare the Model III with the Color Computer.

"Okay, the Color Computer is significantly cheaper, if you have a TV already, but the Model III's 80 column screen is nice. The Color Computer's 32 column screen makes it look like a toy in comparison."

I agreed. "But if you use OS-9, you can hang an 80-column terminal on it, so it isn't a fatal flaw."

"But it makes the Color Computer more expensive."

"True."

"So why buy the Color Computer instead of the Model III?"

"Your son is looking at developing computer software and hardware," Trina began.

Dad nodded.

She continued, "The market for 3rd party software and hardware for the Model III is pretty well filled with established players. It's a crowded market. There's a lot more room to compete in in the 3rd party market for the Color Computer."

That's the kind of response I was always slow with when I worked for Radio Shack before my mission, and that's probably the biggest reason I didn't do well at sales.

"And there's OS-9," I added. "But with the way Radio Shack focused on cheap hardware, OS-9 is not as much of a plus as it should be."

Trina left my comment alone, and Dad just looked at me with a blank look.

On the way home, Dad said, "Radio Shack's computers look cheaper, but I get the impression the add-ons nickel-and-dime you to death, as Denny would say."

It was something I had thought about, too. "Right now, any way you go, you get the same need for add-ons. Jim showed us an integrated system with the Apple. With Radio Shack, we'd have to do more of the integration ourselves."

"But you can handle figuring out what to integrate and how?"

"Probably. No guarantees I won't make mistakes."

"No guarantee Jim won't make mistakes, either. There were other computers beside Apples in Jim's store, weren't there?"

"Northstar, Exidy, at least. I didn't ask about them because I didn't think they'd have as good support for the stuff you want and for my stuff."

After the newspapers were delivered, I went out to the garage and got to work. By the time I went to bed, the box was built, waiting for the sheet-metal lining for the Faraday cage to keep the Federal Communication Commission happy by reducing radio interference, and to protect the computer from static electricity.

Then I checked my homework. It was taken care of, so I started looking closely at the spec sheet for the 6829 memory management unit (MMU). I liked the idea of being able to move blocks of address around, but, with the address decoding already pretty much done for the Micro Chroma 68, it looked like it would take a lot of work to retro-fit it.

Chapter 8:

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-wandering-eyes.html.]

Thursday, February 6, 2020

Backup: 33209: Marion Had a Micro Chroma

Backup of https://joelrees-novels.blogspot.com/2020/02/33209-marion-had-micro-chroma.html.


Chapter 5: Possible Uses for the Micro Chroma 68

Chapter 6: Marion Had a Micro Chroma


"Good morning, Doctor Brown."

Dr. Brown grinned at me through the door of the lab where he was preparing for class. "Top of the AM to you, Marion Joseph. Are you early for tomorrow's classes?"

"Yep. Early for tomorrow." I grinned back. "I've got that prototyping board running."

"Well that's good. Is it running laps?"

"It'll probably run rings around these 8080 trainers." I indicated the trainer kits stored on the shelves against the wall behind me.

"Yeah, the trainers are clocked pretty slow."

"Can you take a look at it tomorrow, to see if it will be okay for the microprocessors class?"

"I think I can, if you bring it."

"Okay. I'll bring it. I was also wondering if I could use a scope and a frequency source to check and tune the cassette interface."

"You want to do that in class so the other mages can take a gander at the process?"

"Don't know if it will go right or not."

"Not going right gives us more opportunities to learn ..."

"Okay. I'll do it in class."

"Just for the record, have you given a peek at the lab book for the class yet?"

"Yeah, I scanned through it at the bookstore. Will you be using the same book next year?"

"Not sure, but those are the kinds of labs you'll be doing."

"I guess I should go look at it some more."

On the way home, I went to the bookstore to look at the lab book again, and decided to buy it, even though it was expensive and entirely focused on the 8080.

Then I went to the library to hunt in the recent issues of Byte, Kilobaud, and Popular Electronics for advertisements for software for the 6800. Found an ad for Technical Systems Consultants in Kilobaud, so I took a Xerox copy of it home with me.

At home, after delivering the newspapers, I got out a pencil and some paper, and sketched out a box to hold the Micro Chroma 68 mainboard, the power supply, a fan, and three perfboards mounted above the mainboard. Taking a clue from the Apple II and Radio Shack's TRS-80 Color Computer (and typewriters), I sketched a slanted seventh face on one end to mount the keyboard and ten-key pad on, leaving about two thirds of the top face as a removable cover to set the TV monitor on.

Depending on how I mounted the keyboard, there might be just enough space between the keyboard and the top cover to mount a perfboard with breadboard and signal headers on. (I wasn't thinking in terms of needing someplace to rest my wrists, but most typewriters of the time had that deficiency.)

I showed the sketch to Dad.

"Looks good. Just getting it in a box will make it less scary for me and Mom, I think."

I had to agree, for a variety of reasons, static electricity among them.

Setting the sketch aside, I picked up the microprocessors text and looked more carefully through the units, writing down rough guesses about the parts I'd need for the labs for each subject. (The real me didn't really think this far ahead.)

After ten o'clock, when the cheapest phone rates began, I called Denny.

"This phone call is expensive.

"Not as expensive as it could be. Don't rub it in. I changed my mind."

"Did you? About what?"

"Could you send me the editor and the assembler on cassette? I want to test drive it."

"I snuck it into your stuff. Go look for it."

"No kidding? I'll go look."

There it was, an extra cassette in the stuff I had brought back from Austin. In fact, he had slipped in some other things as well, including a rail of chips that I had asked him about, a couple of direct memory access controllers (6844 DMAC) and extra parallel and serial ports (6821 and 6850), and some blank EPROMs.

I called him back to say thanks.

I tried loading the assembler, but it kept giving me errors. With a couple of tries adjusting the tank circuit, I was able to get what seemed like a clean load, but it wouldn't run.

So I called it a night and shut things down, reading scriptures before I slept.

*****

Wednesday morning, after breakfast and exercises (more healthy habits I'd gotten better at during my mission), I wrapped the Micro Chroma 68 mainboard in aluminum foil, to give it some protection from static, and loaded it with the manuals, some blank cassette tapes, and my cheap cassette recorder into the hardside briefcase I often used as a toolbox. Left the tools that had been in it on my desk.

I had also considered using the briefcase as a box for the Micro Chroma 68, but it would have been a tight squeeze, and then I would have had to buy a real toolcase.

I put the briefcase and my TV into the back seat of the Colt and drove to school. General parking was free back then, but I usually rode my bicycle to save gas money and get exercise. Carrying the prototyping board unprotected was reason enough to drive.

Arriving at the digital circuits class early, I set the computer up and checked and dual channel oscilloscope, a reference frequency generator and some other equipment out, getting it ready for the demonstration. Some of the other students wandered over as they came in, to see what I was doing.

Dr. Brown decided to let my demonstration start the class, so the rest of the students gathered, and I explained what I understood of what I was doing, putting signals from several testpoints on the 'scope, then focusing on the tone generator. Dr. Brown filled in the gaps in my explanations and guided me a bit when I wasn't sure how to proceed.

I set up reference signals from the frequency generator on one channel on the 'scope, then the corresponding signals from the data output circuit on the other, and adjusted a potentiometer until the signal frequencies matched. I used that to record a set of test tones, then used those test tones to test the input.

Then I tried loading the assembler, and it loaded and ran.

"Known good tapes are an important test tool," Dr. Brown explained. I typed in the input-and-loop hack and assembled it to show what the output looked like, then ran it to show how typing on the screen could look.

Then Dr. Brown had me sketch the bit recovery circuit out on the blackboard, and we used the 'scope to see where the bits from the test tones were getting latched and shifted into the serial port. We also did some calculations of recording speed and tape capacity, and I typed in a short BASIC program and saved it, powered the Micro Chroma 68 down and back up, and demonstrated the process of loading the program back in.

That all took about half the class, after which Dr. Brown tied some of what I had shown into what we were studying, and proceeded with the lecture for the day.

After class, several of the students wanted to know how they could get one of the computers, and I explained how it was a prototyping kit, and only cheap because my brother got me parts. I also explained how Radio Shack's TRS-80 Color Computer had the same video generator, but a better microprocessor.

Even so, there was something of a consensus that building your own from was more interesting.

Over lunch, Dr. Brown looked at my list of parts for the labs from the textbook.

"Looks usable. But I'll have to ask you to show your work. I'll probably ask you to do some hand-assembly on the tests, to make sure you understand that. And I'll ask you to remove the assembler ROM when you pass things off. This all assumes you can find a lab partner willing to work on the 6800, of course."

"No problem. I think I'll be doing both the 8080 and the 6800 anyway."

"Suit yourself on that. I can only give you credit for one time through the class, howsomever."

After lunch, we repeated the demonstration for the AC circuits class, with Dr. Brown prompting me to focus more on the AC parts than the digital parts.

(The real me never got up the ambition to tune the cassette interface with a 'scope and a frequency reference, much less demonstrate the process in class. Kansas City tapes were somewhat notorious for being hard to read, although that was probably because people didn't bother to find 'scopes and tune them. And I was more interested in the high speed cassette interface and the novel I was trying to read. And the real me never got an assembler for the Micro Chroma 68, assembling the fig-Forth source by hand instead, but I'm getting ahead of myself.)

Before heading home, I made copies of my sketches of the box at the library.

After delivering the newspapers, I reviewed my sketches and went out to the garage to see if we had materials for the computer case. We had sheet metal leftover from the flashing when we shingled the roof before my mission, but I wanted plywood with a better finish than we had.

Standoffs to mount the board and a fan to keep the power supply cool were also things I needed to buy. So I went to Radio Shack to get standoffs, and see if they had a fan. They had a 5 inch AC powered fan, and I got it, even though I thought I could get a better price somewhere else.

While there, I looked at the software and hardware for their computers.

Returning home, I made another test tape, and put it in an envelope with copies of my box sketches, to send to Denny. And I wrote a check and an order to TSC, for my own official copies of the assembler, the debug package, the text editor, and the text processor.

And called it a long Wednesday.

(Lots of things on this day that the real me did differently. This whole week.)

***** 

Thursday, in the BASIC class, I discovered that rumors of the Micro Chroma 68 had been circulating, and some of the students wanted me to bring it to class here, too. Professor Crane said it would be okay, so I promised to bring it once it was in a box.

On the way home, I went around to the post-office behind our house and sent Denny the test cassette and my sketches. Also sent the software order to TSC.

After delivering newspapers, I went to church to help out with the youth program, then ran by Gibson's Hardware on the way home to get the plywood and a length of one-by-one for the inside corners of the box. When I got home, I got out the circular saw and cut the bottom, top, and side panels, but I shut the saw down at eight, to avoid bothering the neighbors.

Instead of continuing with the box, I made sure I was ready for Friday's classes.

Before reading my nightly scriptures, I studied the Micro Chroma 68's memory map and spent fifteen minutes sketching out possible circuits for the dynamic RAM and extra ROM.

Chapter 7: Wandering Eyes

[Backed up at https://joel-rees-economics.blogspot.com/2020/02/bk-33209-marion-had-micro-chroma.html.]