Jump to content
IGNORED

Model I Lower Case mods.


mutterminder
 Share

Recommended Posts

I have three TRS-80 Model I computers that have been hanging out in my garage for about 20 years.  For whatever reason, recently I decided to take them out to test.  All of them are Level 2 BASIC, with 16K and and a numeric keypad. Two of them actually worked when I first powered them up.  Of these two, both had a lower case mod installed,  the older one was an Electric Pencil style mod with a switch (which seemed to be needed), the other contained the official Radio Shack lower case mod.  The third machine powered up, but had some issues.  A bunch of semi-random characters appeared on the screen and then the screen would slowly start filling with "A"s, starting at the bottom right corner.  This is the one I decided to start with. Ultimately the main problem appeared to be the keyboard flex, which had deteriorated, and was shorting out internally. This was resolved by replacing the cable with an old IDE cable. I'll talk about what I did next in a further post.

Edited by mutterminder
Improvement
  • Like 1
Link to comment
Share on other sites

One lesson learned, which should have been obvious to me in hindsight, is the positioning of the right angle pin headers that I used with the IDE cable for the keyboard.  To clear the case, and allow room for the IDE connectors, the connectors need to mounted pointing towards the inside of the PCB.  Once I had repaired the keyboard connection, the TRS-80 booted okay, but I found that some keys simple did not want to work.  I removed one of the keyswitches and disassembled it, finding nothing obviously wrong.  A simple cleaning and some Deoxit, seemed to do the trick, for the other keys that did not work, I sprayed Deoxit into the contact mechanism and exercised the keys repeatedly until they finally started working reliably. Next, I decided that this TRS-80 needed the lower case modification, particularly since it had the 8046673 character generator with proper descenders for lower case characters already installed.  As many of you probably already know, Radio Shack cheaped out on the video RAM and only installed 7 bits of memory.  They left out bit 6, and kind faked it by running bits 5 and 7 through a nand gate.  So with both bits low, you get a high on bit 6.  This has the effect having characters 0-31, be interpreted as 64-95. It looks like some software took advantage of this feature, and used values 0-31 for displaying upper case characters. This must also be the case for the first versions of BASIC, which will show the unseen special characters in 0-31 if you use the modification I used for this particular TRS-80.  For this TRS-80, I made the simplest lower case mod I know of, which is to clip the output of the nand gate Z30-13, piggyback another 2102 RAM on top of one of the others, feed bit data bit 6 into it, and feed data bit 6 out to the place where Z30-13 used to go.  This works beautifully with this particular character generator. See attached picture.  I thought my adventures with this particular TRS-80 were done, but after several hours of successful testing, the audio in on the cassette port stopped working, so I'll have to look at that a little later.  However next I decided to look the TRS-80 with the Electric Pencil lower case mod.

 

The Electric Pencil mod was created before Radio Shack released their own official lower case mod. It employed a switch which either enabled or disabled the mod (because of the special character set that was now visible in BASIC) depending on user needs.  If you were running the Electric Pencil word processor, you could switch it in (though you probably had lower case characters with no proper descenders on "g", "j", "p", "q", and "y",  plus a "flying a"), or if you were running BASIC or other programs that didn't use proper ASCII character values, you could switch it out.  

20221023_171919.jpg

Edited by mutterminder
  • Like 2
Link to comment
Share on other sites

The Electric Pencil was one of the earliest word processors for micro computers, and was available on many early machines.  The TRS-80 version actually had the lower case modification instructions printed in the manual. The full modification would have included adding a new control key as well. My second TRS-80 had the lower case portion of the modification, but thankfully did not have the extra key added as well. (I probably wouldn't mind the extra key if it was done so you couldn't tell.) The Electric Pencil mod is functional but inelegant. Even in the late 70s there was a better way.  I certainly didn't design my own lower case mod back then, but I'm not sure where I found the information.  It had to be one of the magazines I read back then, 80 Micro, Byte, Creative Computing, Popular Electronics, Radio Electronics, etc.  I haven't been able to locate it.  However,  I do recall that it used an unused Or gate from one of the chips.  The idea is simple - you route the Nanded bits 7 and 5 through one side of the Or gate, and bit 6 through the other side. The combined signal is sent to the character generator.  This way you still don't get characters 0-31, but when you want to display lower case characters you can.  No switch needed!  The only drawback to this method, is that if you actually wanted to display any of those low numbered characters, you can't.

 

I removed the switch installed by the previous owner and rewired the circuit using a an unused Or gate on Z25.  The Or gate doesn't appear entirely stable, though it works well after the computer warms up.  I'll probably have to replace it with a newer part.  It's not some of my best solder work either, so perhaps it needs a little rework.

 

 

20221030_121541.thumb.jpg.eab09695c64b6a42c3610060629af556.jpg

Edited by mutterminder
  • Like 1
Link to comment
Share on other sites

When I installed my lower case mod back in 1979, I really didn't have that much software that used it. But I wanted to use it in my own programs because it bothered me to have everything in CAPS.  I was dependent on audio cassette storage at this time, and I had recently purchased  Microsoft Editor Assembler-Plus on tape.  So I decided to write my own lower case driver in assembly language.  It was my first "big" program in Z-80 assembly.  To make it work transparently, I had to hook into Level II BASIC's keyboard scanning routines, I don't exactly remember how I found them, though I think that there were probably some magazine articles that gave some the entry addresses for Level II BASIC, so that one could use them in ones own programs.   With keyboard normal operation the shift function work backwards for upper and lower case.  So if you typed un-shifted, you got upper case, and if you held down shift you got lower case. In my driver I decided to use "shift-up arrow", to toggle this feature so that typing without shift gave you lower case and holding shift down gave you upper case.  I was entirely unaware that by this time "shift-break" was sort of the unofficial standard for this sort of thing.  In any case, I think my idea, makes more sense.  With "shift-up arrow" there is no danger of accidentally hitting break in the middle of running a BASIC program.  

 

As I had one of the very first TRS-80s, I was plagued with persistent key-bounce.  I had learned to live with it, but I really wanted it gone, so I incorporated a keyboard de-bounce routine into my lower case driver.   I preloaded this driver every time I booted my machine for the next three or four years.  By that time I had disk drives and I was running LDOS, which had a lower case driver built in.  I recently stumbled across and an old tape of my lower case driver.  I've converted it into a wave file and uploaded it below.  This is the 48K version of the program, though I know I had a 16K version as well.  Just to be clear it doesn't take that much memory to run,  it's actually a very small TSR, but it was assembled to fit in the top of memory for a computer with that amount of RAM.  It's been a while since I've done any Z-80 assembly, so I didn't fix up a 16K version for upload.  If someone wants to tackle it, you'll get no complaint from me.

  • Like 1
Link to comment
Share on other sites

This was more than 40 years ago (Jeez that's a long time ago), so I might have the year wrong.  I must have written the lower case driver in 1980, 'cause Microsoft Editor Assembler-Plus didn't come out until then. I'm surprised I remember as much as I do.

 

Edited by mutterminder
Link to comment
Share on other sites

Here's how the Model I looks with the original 8046670 character generator.   The flying "a" and no true descenders.  It's somewhat disconcerting to see the lower case characters displayed in this way.  I would like to replace the character generator with a 8046673, but I haven't been able to find any.  It looks like Ian Mavric in Australia, is offering an lower case kit with a character generator that he created himself.  http://www.frehd.com   Maybe I will try that.   

 

 

Lower Case Display.jpg

  • Haha 1
Link to comment
Share on other sites

Back in the day I rigged up an (outboard!) patch to the circuitry that subtracted two from the row count, detecting the affected characters with some decoder logic that included a few diodes. Due to circumstances, I ended up getting a different board that had a "flying-a" chip, and it only took one extra diode to add the 'a'. I reverse-engineered it a few months ago, but the computer itself currently needs the sync generator repaired.

 

The best way would probably be a daughter-board with an EPROM for the character generator, which is roughly what you linked to.

But your link is broken because somehow the word "Maybe" got stuck to it. http://www.frehd.com

  • Like 1
Link to comment
Share on other sites

22 hours ago, Bruce Tomlin said:

Back in the day I rigged up an (outboard!) patch to the circuitry that subtracted two from the row count, detecting the affected characters with some decoder logic that included a few diodes. Due to circumstances, I ended up getting a different board that had a "flying-a" chip, and it only took one extra diode to add the 'a'. I reverse-engineered it a few months ago, but the computer itself currently needs the sync generator repaired.

 

The best way would probably be a daughter-board with an EPROM for the character generator, which is roughly what you linked to.

But your link is broken because somehow the word "Maybe" got stuck to it. http://www.frehd.com

They say that necessity is the mother of invention.  Your solution to the problem is definitely inventive! And very clever. I would be interested in seeing your schematic for this circuit. I don't know if I would try to install it in my machine or not, but it does have a certain appeal.

This link should work. For some reason the link on his business card did not work.   http://members.iinet.net.au/~ianmav/trs80/  He has all sorts of cool TRS-80 stuff, I happened to have the card because I just bought Model 4 HD graphics card from him.

Edited by mutterminder
Link to comment
Share on other sites

  • 2 weeks later...
19 hours ago, ClausB said:

Did Tandy get them at discount because of it?

That's what people think.

On 11/8/2022 at 7:29 AM, mutterminder said:

I would be interested in seeing your schematic for this circuit.

Two points:

- turns out "j" wasn't made to descend

- I still don't know what the stuff on the right does, and won't know until I repair my old TRS-80 so I can mess around with that circuit.

It really pushes the 7483 and makes it run warm.

 

Anyhow, I'd probably be better off taking it all out and just putting a 2764 in there with all 12 scan lines. That just wasn't an option back in 1984 or so.

IMG_20220701_151840551..jpg

trs-lc.pdf

  • Like 2
Link to comment
Share on other sites

Thanks for turning this into a schematic.  You're right about the "j" if you dropped it two lines it wouldn't look right at all.  Are all connections show in this drawing? I plan to study it a bit.  If I decide to put it in one of my TRS-80s, I think I would turn it into a PCB first.  Trying to fit all of that perf board into the case look like a bit of a challenge.

Link to comment
Share on other sites

The chargen chip itself is not on the schematic, just references to its pins, since most of it is just brought straight out on that ribbon cable. And don't build the mystery meat on the right, of course.

 

But really, just dropping an eprom in there would be so much better. Even though it could be months before I do it, I've already made the .bin for a 6x12 chargen, with the graphics blocks too. I just still need to finish the inverse chars I want in C0-FF.

  • Like 1
Link to comment
Share on other sites

8 hours ago, Bruce Tomlin said:

The chargen chip itself is not on the schematic, just references to its pins, since most of it is just brought straight out on that ribbon cable. And don't build the mystery meat on the right, of course.

 

But really, just dropping an eprom in there would be so much better. Even though it could be months before I do it, I've already made the .bin for a 6x12 chargen, with the graphics blocks too. I just still need to finish the inverse chars I want in C0-FF.

A new character generator is surely a lot simpler, but your "selective bit pattern manipulator" has a certain "mad inventor" charm.  It might be difficult for young people who grew up in the age of the internet to understand how such a interesting solution to a problem was even created in the first place. Would you be willing to upload the original KiCad drawing so people can play with it a bit?

Edited by mutterminder
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...