mutterminder Posted October 31, 2022 Share Posted October 31, 2022 (edited) 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 October 31, 2022 by mutterminder Improvement 1 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 1, 2022 Author Share Posted November 1, 2022 (edited) 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. Edited November 1, 2022 by mutterminder 2 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 2, 2022 Author Share Posted November 2, 2022 (edited) 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. Edited November 2, 2022 by mutterminder 1 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 2, 2022 Author Share Posted November 2, 2022 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. Lower-Case-Driver-Side-1.WAV 1 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 2, 2022 Author Share Posted November 2, 2022 (edited) 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 November 2, 2022 by mutterminder Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 7, 2022 Author Share Posted November 7, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
Bruce Tomlin Posted November 7, 2022 Share Posted November 7, 2022 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 1 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 8, 2022 Author Share Posted November 8, 2022 (edited) 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 November 8, 2022 by mutterminder Quote Link to comment Share on other sites More sharing options...
ClausB Posted November 18, 2022 Share Posted November 18, 2022 On 11/7/2022 at 8:38 AM, mutterminder said: the original 8046670 character generator. The flying "a" and no true descenders. Does anyone know why the 'a' is elevated? Was it a mistake in the ROM? Did Tandy get them at discount because of it? Quote Link to comment Share on other sites More sharing options...
Bruce Tomlin Posted November 19, 2022 Share Posted November 19, 2022 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. trs-lc.pdf 2 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 21, 2022 Author Share Posted November 21, 2022 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. Quote Link to comment Share on other sites More sharing options...
Bruce Tomlin Posted November 22, 2022 Share Posted November 22, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
mutterminder Posted November 22, 2022 Author Share Posted November 22, 2022 (edited) 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 November 22, 2022 by mutterminder Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.