• Please review our updated Terms and Rules here

SOL-20 universal personality module

dfnr2

Experienced Member
Joined
Dec 6, 2011
Messages
466
Location
Dallas, TX
It took a while for me to get back to this, but I have built up and verified the new module.

Here's a photo of the board, along with my original peronality module.

Photo Sep 22, 11 20 15 AM.jpg Photo Sep 22, 11 20 50 AM.jpg Photo Sep 22, 12 14 08 PM.jpg

I've loaded a 27C64 with the ROMs from the SOLACE emulator: SOLOS, CONSOL, SOLOS (v2) and DPMON.

All seem to boot, but keyboard issues keep me from testing them.

I'm working on a new rev which will address some issues. I could use input from you guys.

1) The resistor spacing is too small for regular 1/4 W resistors. I had some 1/8W 10K resistors, which will work just fine--these don't pass much current. I've also seen mini 1/4w resistors which are available from Digikey and Mouser. The new rev (on GitHub) increases the spacing. However, I'm tempted to just replace these with a ressitor network.

2) I am using a 6-wide DIP switch. In my case, I used a Dremel to cut off 2 switches from an 8-wide DIP switch. To avoid requiring a 6-wide DIP switch, I'm changing the switch to a 0.1" 2x6 (or so) header, with jumpers to configure the PCB. This will be easier and cheaper to source, can be cut from a long header, and is easier to understand the configuration, since it may be hard to tell if a switch position is open or closed.

3) I included a switch to enable or disable the C4xx ROM block, in case someone with a 1K ROM decided to put something else at C400, but I doubt this is useful, and requires a switch to be closed, or a jumper to be placed. I'm planning on removing it from the next revision.

4) This board should be compatible with 28C256, 28C128, 28C64, 27C128, and 27C64 (which I used because that's what I had). The 27C256 won't work because of different mapping of a couple of pins compared with 28C256. If I move to a 0.1" header for configuration, it will be easy to add a 2-position jumper to select between 27C256 and everything else.

5) For the Cxxx->Fxxx remapping, a couple of jumpers must be placed between the main board and the module. The pins on the "A" side are all easy to access without removing the main board (which is a project), but they are all used. This version uses pins B2 and B3, which are apparently used for programming at the factory. But, they are hard to access without extensive disassembly. I'm considering just bypassing the connector, since the personality module is basically only providing a switch. Instead, I'm thinking of bringing a pair of wires from the motherboard to a 2-pin 0.1" socket, which can be routed along the side of the case to a switch, or plugged into two shoted pins on the 0.1" header on the personality module. For no remap, the wire could be left unplugged, or for neatness, plugged into a pair of open pins on the 0.1" header.

Or, just require disassembly and accessing the underside of the main board to do the remapping mod.

Any thoughts?

BTW, if anyone wants one of the blank PCBs, let me know.

The design (in progress) is up on GitHub: https://github.com/osiweb/Hardware/tree/master/new/sol20/personality

Dave
 
Nice work, Dave! Glad to see an open source option...yours looks better, too :p I need to get my SOL-20 running, but mine still needs keyboard foam, not a task I'm looking forward to!

1) I tend to use resistor networks whenever I can.

2) Breakaway headers are a win, in my book. I typically don't even stock dual-row versions, I just use a pair of single-row pins. I'd say that's better than a non-8-position DIP switch.

4) Might as well add the jumper for 27256 mode, I assume most people hacking on hardware also have a bucket of these salvaged from old gear.

5) I think either way is a good solution. I don't personally mind flywires.
 
Thanks! I have some weird keyboard behavior, but all the character keys seem to work. I have strange caps/shift behavior and the RETURN key doesn't work. I'm hoping it's all just foam pads and not some weird keyboard logic issue.
 
I would definitely go with the headers too, they are cheaper than DIP switches and in the long run more reliable (except for the very expensive fully sealed DIP types) With the headers when the small link sockets are pulled on and off the scraping effect cleans the gold surface, so they invariably make a good contact as they age. With DIP's they can fail to connect as they age if they are just touching and non sliding contacts. I replaced all the DIP switches in my SOL and on my RAM cards with new Omron ones, in sockets.

The foam pads are available from Texelec, I believe they have now got them so they will reliably trigger a Sol keyboard. There are two types of keyboard, in one case one side of the foam disc is held in place by small arms and they click into position, makes life easy. In the earlier versions they are held in place with a contact adhesive. I did not want to put any liquid adhesive near the key mechanism so to do it I used super thin double sided tape ( only a small fraction of a mm thick) and punched out discs of that to retain the foam discs and have had no trouble with the keyboard since, though my keyboard had one intermittent IC that took me a considerable time to locate and occasionally the keyboard would be disabled.
I would not recommend scouring the pcb surface where the pads touch, an electrical connection is not required and the oxide on the surface is too thin to have any effect, though you could clean it with IPA. If you are stuck for getting working foam discs, the keyboard will also reliably trigger with conductive rubber discs, the type of thing sold for calculator repairs. It changes the operating mode of the keyboard but it still works. I got my replacement foam discs from a Sun 4 keyboard, but at that point the Texelec ones were not perfected.
 
OK, I've pushed rev 2 to github. The changes are:

1) Replaced the DIP switch with an 8 x 2 header
2) Removed the C4xx disable option. C4xx is now always decoded.
3) Added two jumper positions, for 27C256, and everything else other than 27C256
4) Added the option to either make the SOL-PC mainboard mod, or bring the two wires out on a 2-pin socket, and plug them into the rightmost two pins of the header.
5) Replaced the discrete resistors with a couple of networks.

personality.jpg

Some notes:

1) For the SEL0-3 lines, a jumper pulls the line LOW, so the 000 block will require 3 jumpers. If you want a jumper to indicate a logical 1, then invert the ordering of the images in the (E)EPROM. I.E., place the first image at 111, second at 110, third at 101, etc. Since that can all be handled in a script, that's not a bad way to go.

2) For a 'C128, leave Sel3 open. For a 'C64, leave Sel 2 and Sel 3 open.

3) For a 27C256, place a jumper at the 27C256 position. For 28C256, 27/28C128, 27/28C64, place a jumper at "~27C256"

4) To remap to Fxxx, make sure the selected ROM image is compiled for Fxxx, solder the wires to the motherboard as described in the DPMON manual, and either connect them to B2 and B3 on the connector, or to the last two pins on the personality module, and place a jumper in the "Map Fxxx" position. To revert to Cxxx, you can leave the mod wires plugged in. Make sure the selected image is compiled for Cxxx and remove the "Map Fxxx" jumper.

The Resistor network values are not critical at all. The two also don't need to be the same.

For RN1, you can use a 6-, 7-, or 8 resistor network in the 1K-20K range, and be OK, as long as you put pin 1 in the right spot.

For RN2, any 6, 7, or 8-resistor netork is fine, and you can use any value at all, or even just solder a wire across all the pins (no current should flow through the network).


I will probably place an order sometime and check this out, and test the remapping, but I'm not in a rush. If anyone tries it first, let me know (and if you want to send me a spare board, I'd be grateful.)

Meanwhile, I have a bunch of extra Rev 1 boards that will work just fine, so if anyone wants one, PM me and I'll drop one in the mail.

Dave
 
Last edited:
Dave,

Did you ever have any rev 2 boards made?
If not do you still have any rev 1 boards available?
I can't direct message you, since I'm still considered a newbie on this Forum [ Even though I'm over 41 hex years in age ;-) ]
 
I do have some rev 2 boards available. Additionally, the design is on github, and can be sent off to jlcpcb, pcbway, or similar. Since the PCB is pretty small, the OSH Park prototype deal might be a good option as well.
 
Last edited:
I recently received a couple of blank rev 2 PCBs from Dave and was able to build up two personality modules.
I used the "personality_8k.rom" file from the Github fileset to program the 87C64 ICs.

Both modules work great and allow you to have 4 different personalities (one at a time) available for your Sol.
If you use a 87C128 EPROM you could have 8 personalities or 16 with a 87C256 EPROM.

I've attached an image of one of the completed modules. I added an aluminum pull-handle on the boards for easier removal.
Thanks again Dave.
 

Attachments

  • FullyLoaded_top_sm.jpg
    FullyLoaded_top_sm.jpg
    131.1 KB · Views: 15
Back
Top