Tandy PC-6 Pocket Computer
The PC-6 was the best (in my opinion) rebadged Casio pocket computer Radio Shack sold. It had the most memory out of the box, supported an additional 8KB memory expansion module, peripherals such as a printer and cassette interface, and “assembly” language simulation.
The PC-6 was the third Casio model Radio Shack released, the prior two were the PC-5 and PC-4. Radio Shack continued with their switchover to Casio models with the PC-6.
The program space with the Casio models was segmented into 10 areas. These areas are P0 through P9. This differs from the Sharp models where the program space was not segmented at all. If you wanted to store more than one program, you had to do so by getting creative with the line numbers (keeping programs segmented). With the Casio models, the segmented program areas allow for up to 10 programs, each in their own space.
This model had a 24 character LCD display, an expansion port, and a two tone buzzer. It ran off two CR-2032 batteries and used a CR-1220 as a memory backup. This was very handy for keeping your programs intact when changing the main batteries.
Radio Shack Pocket Computer Releases
The first pocket computer, the PC-1 was introduced for catalog year 1981 and the last catalog year for a pocket computer was 1992 with the PC-6.
The PC-5 was its predecessor, which was sold for only one catalog year. It was basically the same model as the PC-6, except that it had 4KB of RAM and no possibility for adding a memory expansion module. The PC-5 did not have the reset button exposed – the reset button was under the back cover. There are a few differences between the PC-5 and PC-6, the biggest BASIC difference is the PC-5 does not support the DIM statement, only the DEFM statement. Of course this changes some of the variable handling a bit if trying to run a PC-6 program on a PC-5.
The PC-5 model is a rare find on auction sites. Perhaps because this model was sold for just one year before being replaced by the PC-6. Or, perhaps not as many of them were sold. Another model which was sold for only one year was the PC-8, and I have seen far more PC-8’s for sale than the PC-5’s.
The PC-6 was released in catalog year 1987 and sold through catalog year 1992. It is the longest running pocket computer model Radio Shack offered. This model is still very easy to find on auction sites such as eBay because they were sold for so many years more than any other model Radio Shack offered.
I prefer the Sharp models of pocket computers rebadged by Radio Shack because their peripherals were better designed and I preferred their form factor. For example, the PC-2 in my opinion was the best and most capable rebadged pocket computer Radio Shack ever sold. There really was not an equivalent rebadged Casio model.
However, the PC-6 was the best of the rebadged Casio line.
The Radio Shack PC-5 and PC-6 pocket computers were Casio FX-780P and FX-790P models respectively. The printer and cassette modules for these models were separate units, unlike the rebadged Sharp pocket computers Radio Shack sold which had one-piece printer cassette modules. Similar to the PC-8 where it used the PC-3 printer and cassette module, the PC-5 and PC-6 used the PC-4 printer and cassette modules. There was a specific cassette module for these Casio models, the FA-5 which plugged directly into the side of the pocket computer. These are not easily found these days.
Over the years there have been a few PC-5’s pop up on eBay. I found one recently that was new in the box and the sales receipt was in in between the pages in the user guide. The PC-5 was purchased at a Radio Shack in Brooklyn NY on November 26, 1985 for $119.95.
“Clamshell” Design
The PC-6 (and its predecessor, the PC-5) were “clamshell” designs, which provided for a small form factor for the pocket, with decent button sizes. However, this exposed the PC-6 to some unfortunate possibilities for a shortened life span.
The plastic clasp that holds the PC-6 shut is known to snap. The ribbon cable which connects the two halves together adds a concern of possible wear over time. I have not heard of this happening frequently. Lastly, the hinges are known to break, and when that happens, the ribbon cable would then be subject to additional stress.
This reminds me of the unfortunate design of the PC-7, another rebadged Casio model Radio Shack sold. I owned one of these and that folding cover eventually wears down and makes button presses a challenge as they age.
Because I owned the PC-7 when it came out, when I hold a PC-6, I immediately appreciate the hard plastic and metal case. If you were to actually put a PC-6 in your pocket, it would survive. It is more durable than the PC-7 in your pocket.
My PC-5 had a dim LCD display which seemed to improve on occasion. I found that the sliding power switch was the culprit and a simple cleaning with IPA solved that issue.
Peripheral Connection Challenge
Because the PC-5 and PC-6 pocket computers were “clamshell” designs, they could not simply dock to a printer or cassette module. A special cable was required, and this cable is very difficult to find. Before jumping into how they connect, let’s take a look back at the PC-4:
The PC-4 had a separate printer and cassette interface. In the picture above, the two piece printer and cassette module was quite a hack. If you were to connect just the printer to the PC-4, for example, you would need to attach the plastic spacer/holder to the PC-4, then plug the printer onto the back of the spacer, using a thumbscrew to hold it together. On the other hand, if you had the cassette module, you can stack the PC-4, cassette interface, then printer together, again, with a thumbscrew holding it all together.
When assembled together, if you have to change the two “AA” batteries in the cassette module, you would need to take the printer off the back of it so that you can remove the battery cover. Further, to charge the printer, the Casio user guide states that it must not be connected to either the cassette module or the computer.
Finding and Fixing a PC-4 Printer
The PC-4 printer, Radio Shack catalog number 26-3652 (also Casio FP-12S) is thermal, using 1 1/2″ wide paper. This is quite small, compared to the PC-1, PC-2, and PC-3 printers (Sharp variants), which used 2 1/4″ paper. Similar to the 2 1/4” paper, this thermal paper is easily found on Amazon and it is inexpensive.
I found one of these printers on eBay with the box. As with all of the other various pocket computer printers such as the printers for the PC-1, PC-2 and PC-3 for example, the NiCd battery pack needed to be replaced. Luckily there was very little leakage.
The Radio Shack version has a noise shield over the battery pack, which prevented any of the leakage or dust from getting into the PCB. The Casio FP-12S has no such shield. The wiring to the battery needs to be carefully noted. In the case of the Radio Shack model, the green wire is negative and the black wire is positive with the connection to the battery pack.
The Casio printer is really quite cheaply made compared to the Sharp models. For example, the battery pack was held in place by melted plastic on either side of the battery. To replace the battery, I ended up using a hot glue gun to hold the replacement in place. The replacement I used was a ready-made AAA NiMH 800mAh pack.
The printer had a similar mechanism to the PC-3 printer where the print head moves on a worm gear which also feeds the paper as it returns back to the left after printing a line.
After replacing the battery pack, I charged up the battery and connected my PC-4. The printer worked! It was a bit odd seeing such a small printout, compared to other models. It appears the printer I acquired was made on or after 1982, by the stamp on the motor. My Casio FP-12S was made in 1988.
I remembered that the user guide for the printer mentions that neither the pocket computer nor the cassette interface can be connected to the printer when it is being charged.
I have since picked up some spare units, printer cables and printers. It is very interesting to see examples of how these products were used back then. I have often seen labels on the pocket computers and printers which give a hint of their usage in the field.
The PC-6 Peripheral Port
The PC-6 unfortunately cannot simply plug directly into the printer and/or cassette interface. Technically it is possible to turn the PC-6 sideways and connect it, but that is likely to put stress on the connector and lead to premature wear.
Radio Shack (and Casio) sold a cable which connected between the PC-6 and the printer or cassette interface. This cable is extremely difficult to find today. The Casio part number is the SB-2, the Radio Shack catalog number is 26-3671.
The peripheral interface is a 12-pin connector which is proprietary. It has a keyed direction to it, meaning the official connection cable would plug in only one way on each side.
This is the same connector that was on the PC-5 (similar model) and the PC-4.
A Printer not Commonly Found
I suspect most owners of the PC-6 did not bother with the small printer offered for this pocket computer, which is likely why the printer and the cable are rarely seen any longer. As a reminder, the printer that was offered for the PC-6 (and the PC-5) was the PC-4 printer.
The PC-4 (first version) was extremely limited in both memory and BASIC support. The PC-4 was a rebadged Casio PB-100. For example, it had only 544 bytes available for programs. Without BASIC support for printing (it can only echo the screen to the printer) it really was one of the worst of the pocket computer models. Perhaps this is also why the PC-4 printer is not commonly available any longer.
Perhaps the PC-4 was useful for basic functions and limited programs, but you could do little else with it. Without support for DATA statements (until the second version), bit wise functions, limited string functions, only 544 bytes for programs, and limited printer support, the banner program is a challenge on this model.
The PC-4 did support a 1KB RAM expansion module, but those are as common today as the SB-2 cable is today. A second version of the PC-4 was released, which added a few BASIC commands, such as DATA, READ, and RESTORE.
New Use for the PC-4 Printer
Since the PC-6 is far more capable than the PC-4, attaching it to my PC-4 printer would offer more capability for use of the printer. Even though the support in BASIC for printing is the same as the PC-4, and there are no bitwise operators, the PC-6 has far more memory to work with. It supports DATA statements and other additional BASIC commands which allow for more interesting programs to be written. Perhaps even the banner program can be written for the PC-6.
However, unable to find the SB-2 cable meant I could not simply plug in the PC-6 to the printer to experiment with it.
Building a Cable
I chose to build a cable myself; it was only 12 pins.
The connector on the PC-4, PC-5, and PC-6 is unique. It was not something I was able to find online at an electronic parts supplier, yet.
I took the female connector from an old PB-100 (PC-4):
This was a bit easier than trying to find a compatible equivalent on an electronics part supplier site. Having these spare units around for “parts” calculators and modules is sometimes handy.
I was especially careful not to use too much heat removing the connector from the PCB. I used some solder wick and pried up each pin carefully one by one until the connector was free from the PCB.
For the male end of the cable, it turns out that standard header blocks fit well. I happened to have a few of those available for testing the fit.
I did not have ribbon cable wide enough on hand, so I ended up using three pieces of four-wire ribbon cable and some heat shrink to keep it together.
To help avoid shorts and to add a little durability to the connectors, I added small heat shrink to each soldered pin connection.
The cable is quite fragile and care must be taken to avoid damaging it when unplugging either end. Perhaps I will find a way to surround the connections with plastic or similar methods for adding some strength to each side of the connection.
Testing the Cable
Because I value the PC-6 more than the PC-4, I used the PC-4 as my test before plugging in the PC-6. In reality, I did actually probe the cable with a continuity tester to ensure no shorts and was careful to get the orientation correct.
The cable worked! I turned the print mode on and saw my calculations printed on the printer.
Without any problems connecting the PC-4, I connected the PC-6, and the same test worked perfectly. I also tested saving to tape and loading from tape.
Update
Since publishing the first revision of this article, I found the 26-3671 interface cable on eBay. It was completely by chance – I had a saved search alert me to new listings for a PC-6. I received an alert and reviewed the pictures for a new listing for a PC-6 when I saw one of the photos showed the cable, Radio Shack catalog number 26-3671. It was also mentioned as included in the listing description. The price for the PC-6 was reasonable, and had the usual broken hinges, but all I needed was the cable.
The PC-6 was delivered, with the cable, and upon testing it, it worked!
The seller of the PC-6 with the cable did not include or mention the cassette interface nor printer, which is interesting since they had possession of the interface cable. Before the item arrived, I was curious if the PC-6 also had the 8KB memory expansion installed, since the original owner had purchased the interface cable. When the PC-6 arrived, I took off the back cover and sure enough, as an added bonus, the 8KB memory expansion was there:
Since the PC-6 I found had broken hinges, I took the memory expansion module out and installed it in the PC-6 I already had.
PC-6 BASIC Support
I have been using my banner program as a baseline for capability and comparison across multiple vintage portable computer models. Each model has specific advantages or disadvantages, usually around its printer type (thermal versus pens or ink), BASIC support, and how much memory it takes to accomplish the task.
Similar to the PC-4, the PC-6 does not offer specific printer support in BASIC other than echo to the printer via the PRINT statement. This is done by using the MODE 7 command to turn the printer echo on, the PRINT command(s) would then echo to the printer, and the MODE 8 command turns the printer echo off.
The PC-6 supports far more BASIC commands than the PC-4 (at least the first version). However, it supports similar limited character and string functions. It does support the DATA command with READ and RESTORE.
The PC-6 is missing some convenient BASIC features which are useful for the banner program. It does not have a command to convert a character to an ASCII integer. This is necessary to break down the string to print into individual characters and then convert each character into indexes to the bitmap font data. It also does not support a bitwise AND function.
In order to write a banner program for this Pocket Computer model, I will need to work around these limitations. Of course, the objective is to use as little memory as possible, without obscuring the code too much.
Challenges for the Banner Program
Since the PC-6 does not offer a way to read the internal ROM address space like I could with the PC-2, I will need to use my font bitmap data via DATA statements versus reading the bitmap from ROM.
I will need to work around the limited character functions available on the PC-6. I will need to find a new way to index the font bitmap data for each character to print for the banner.
The PC-6 does not support bitwise AND logic, which means I will need to find a new way to inspect the font bitmap data and translate it for each line to print.
This printer can print 20 characters per line. The font width is 7 characters, and the printer width unfortunately is one character short for a perfect match for a 1:3 scale upwards. This means a scale of 1:2 is the most we can do for printing each character. This leaves 3 character spaces on the top and bottom of the banner.
Only one string variable exists, “$” which allows for more than 7 characters in length. DIM statements do not provide extension of this size limitation. The MID$ function can operate only on this special string variable.
Advantages of this Printer
Unlike the PC-8 (and PC-3) printer, it is possible to print a string without an automatic line feed on this printer. This means that I would not need a string variable 20 characters in length in order to print a full row of characters on this printer. I am able to issue multiple print commands without an automatic line feed occurring (unlike with the PC-3 printer).
PRINT "XX";
Another advantage of this printer is it supports a few special characters, mainly a “block” character which is useful for the purpose of printing a banner.
PRINT "▓▓";
Banner Program Adapted
Due to the lack of an available command to convert a character to an integer (such as an ASCII code), I was not able to index the font bitmap data using the ASCII code to derive an offset into the data array.
Instead, I simply added an indexer character before each 5 byte bitmap sequence. I then indexed the array by searching for the letter currently needed. This method consumed 39 more bytes than previous iterations of the banner program where DATA sections were necessary (A-Z, 0-9, a space, and 2 quotes).
Luckily, the PC-6 has a function which converts a string in hex to a numeric value, &H:
170 READ A$
180 A$ = "&H" + A$
190 B = VAL(A$)
This allows me to store the bitmap data as a hex string for each byte in the bitmap data. This limits the use of memory to just two bytes per row in the font bitmap. The PC-8 for example, without the hex to numeric function, requires storage of some values using 3 digits (any value greater than 100). For example, the PC-8 would require this statement for the letter A:
1 DATA 124,18,17,18,124
Two of these bytes require 3 characters. The PC-6 equivalent can be:
1 DATA 7C,12,11,12,7C
Over the span of the entire bitmap data, this saved approximately 20 bytes. This offset some of the additional memory needed to create the index to find the characters.
Without a bitwise AND command, I modified the logic to look at the lowest bit in the current value for the bitmap row. If the value was odd, then the lowest bit is a 1. On the other hand, if the value was even, then the bit was a zero. The PC-6 has a FRAC command which can be used to determine whether division has a remainder. I used division by 2 as the argument to this function to determine even or odd.
320 FOR F = 1 TO 7
330 H = FRAC(B/2) : IF H = 0 THEN 350
340 PRINT "▓▓"; : GOTO 360
350 PRINT " ";
360 B = INT(B/2) : NEXT F
I used the INT command to round off the division by 2 to right shift the remaining bits in the font bitmap row.
However, this approach prints starting from bit 0, as opposed to starting at bit 7 as with all previous iterations of the banner program. Therefore, I switched the logic around to print starting with the last letter in the banner and worked backwards. I also had to flip the font bitmap data accordingly.
Testing the Banner Program
I thought at first I was not going to be able to create a version of the banner program for the PC-6, but in the end, I was able to do so. Not only that, this version is quite efficient (minus the font bitmap data), using only 909 bytes of memory.
There were several attempts at the program, with modifications on each iteration which slowly arrived at the final output:
Utilities
Marcus von Cube has posted a series of CASsette IO Utilities which can be used to convert WAV files to ASCII output and vice versa. This is very helpful to avoid typing entire programs into the PC-5 / PC-6 and to be able to visualize an entire program at once on a PC screen.
The list730 and bas730 executables were what I found to be compatible and work with not only the PC-5 and PC-6, but the PC-4 as well. List730 converts a WAV file to an ASCII file. I used Audacity to “amplify” WAV files I have recorded from the cassette interface and then ran them into list730. Bas730 can be used to convert an ASCII file to a WAV file to be loaded into the pocket computer.
Passwords
The PC-5 and PC-6 support a “password” feature which if set, prevents listing or modification of programs in the pocket computer. When saving the programs to tape, the password is stored with the program(s). When loading the program(s), the password is loaded as well. This prevents attempts to bypass the password by copying of a program to tape, loading and reading the contents.
The password can be sniffed out using the list730 executable with a recording from the PC-5 or PC-6. As a test, I wrote a one-line program in P0 then I set the password on my PC-5 to “TEST”. I then used the SAVE ALL command to save the programs to tape. I recorded the output using Audacity, then fed the WAV file into list730:
The password “TEST” is clearly visible in the output. Using the method above, one could recover the password on any PC-5 or PC-6 using the cassette interface, Audacity, and CASsette IO Utilities.
Final Thoughts
I am glad I built an interface cable to be able to connect the PC-6 to the printer and cassette modules. I had been waiting for an SB-2 cable to pop up for sale for quite awhile. Even though I eventually found a cable, it was fairly simple to build one. Without a printer or cassette interface, this pocket computer just is not as useful to me as one that has this option.
I went in to this project with a heavy bias toward the Sharp pocket computers, mainly on my experience with the PC-7 (read my intro for the PC-8) and the PC-4. The PC-7 had no peripheral support and the PC-4 had such anemic BASIC support (first version) and limited memory out of the box, it was the most challenging to write a banner program for.
Getting my hands on a PC-6, which like the Model 100, I would see year after year in the Radio Shack catalogs, was a great experience. Not only was it far more capable than the PC-4 and PC-7, it has a good feel when using it. The buzzer option for keypresses provides positive feedback that the key was recognized. This was especially helpful for the membrane part of the keyboard. The feel and responsiveness was better than the membrane keyboard on the PC-7.
Note that the buzzer in this model is simply either a low or high tone. It does not support variable pitch nor duration.
The PC-6 has so many more features than I have described here. For example, it has more scientific and math related functions, a data bank, and an assembly simulator.
One should not get too excited about the assembly feature in this computer. It is just a “simulator”, intended for teaching and learning assembly in general. It does not support reading/writing outside of the simulator environment, printers, nor other I/O. This is nothing like the assembly support on the PC-2 for example. A good write up of the history of why this feature exists in both the PC-6 and the PC-5 is here.
After going through the exercise to adapt the banner program to this model, it forced me to become more familiar with the Casio flavor of BASIC and its advantages and disadvantages. As it turned out, I came out with a more optimized version of the banner program than on the PC-8.
Overall, this experience has definitely changed my mind on Casio pocket computers, at least this model. My frame of reference for pocket computers is what Radio Shack rebadged and sold. They did not always pick the best that Casio nor Sharp had available. The PC-2 was quite a hit, and a good choice. Throughout the years, Radio Shack seemed to focus mainly on price and portability as a priority when choosing the models to rebadge and sell.
Program Listing
I included the PC-6 banner program as a WAV file, if you have a PC-6 or PC-5 and the cassette interface:
I included the banner program listing below. Be sure to ignore the REM statements, I added these to illustrate the various sections of the program flow. If you wish to add more characters to the data array, remove the last zero byte, add the characters in the same format, and then append a zero byte.
1 DATA A,7C,12,11,12,7C,B,36,49,49,7F,41
2 DATA C,22,41,41,41,3E,D,3E,41,4,7F,41
3 DATA E,41,49,49,49,7F,F,1,9,9,9,7F
4 DATA G,39,49,41,41,3E,H,7F,8,8,8,7F
5 DATA I,0,41,7F,41,0,J,1,7F,41,40,20
6 DATA K,41,22,14,8,7F,L,40,40,40,40,7F
7 DATA M,7F,7F,C,2,7F,N,7F,10,8,4,7F
8 DATA O,3E,41,41,41,E3,P,6,9,9,9,7F
9 DATA Q,5E,21,51,41,E3,R,46,29,19,9,7F
10 DATA S,32,49,49,49,26,T,1,1,7F,1,1
11 DATA U,3F,40,40,40,3F,V,7,18,60,18,7
12 DATA W,7F,20,18,20,7F,X,63,14,8,14,63
13 DATA Y,3,4,78,4,3,Z,43,45,49,51,61
14 DATA 0,3E,45,49,51,3E,1,0,40,7F,42,0
15 DATA 2,46,49,51,61,42,3,31,4B,4D,49,41
16 DATA 4,10,7F,12,14,18,5,39,45,45,45,27
17 DATA 6,30,49,49,4A,3C,7,3,5,79,1,1
18 DATA 8,36,49,49,49,36,9,1E,29,49,49,6
19 DATA " ",0,0,0,0,0,0
100 CLEAR
110 INPUT “TEXT”;$
120 MODE 7 : L=LEN($)
130 FOR C=L TO 1 STEP -1
READ TO LOCATION IN DATA ARRAY FOR CURRENT CHAR BITMAP
140 E$ = MID$(C,1) : RESTORE : READ A$
150 IF A$ = E$ THEN 170
160 READ U$,V$,W$,X$,Y$,A$ : GOTO 150
170 READ A$
READ EACH ROW IN BITMAP FOR THIS CHARACTER
200 FOR D = 1 TO 5
205 A$ = “&H” + A$ : PRINT " ";
215 B = VAL(A$)
220 FOR F = 1 TO 7
230 H = FRAC(B/2) : IF H = 0 THEN 250
240 PRINT "▓▓"; : GOTO 260
250 PRINT " ";
260 B = INT(B/2) : NEXT F
270 PRINT ""
NEXT CHARACTER
280 READ A$ : NEXT D
290 PRINT ""
300 NEXT C
DONE
310 PRINT "" : MODE 8
320 END