Sunday 3 July 2011

Panasonic JR-200UP

The Panasonic JR200
Here's another machine that is nearly 30 years old. It is somewhat obscure, but apparently a few were imported to Finland around 1984. I'll go through some of my initial experiences with this computer, which has been previously unknown to me.

BASIC operation

The Panasonic has a very solid appearance. The casing is bigger than a ZX spectrum, yet considerably smaller than a VIC-20 or a C64. A seventies space typeface declares “Panasonic personal computer 32k memory”. A dry run on the keyboard did not impress, yet it works pretty well in action. The keyboard is not nearly as bad as Laser 200, a bit better than a ZX rubber. With full screen editing and well positioned cursor keys, it's okay for BASIC programming. A feature I like is the inclusion of the BASIC keywords on the keyboard as a kind of reference. It's possible to invoke the keywords with a combination of CTRL+key. Far from saying that this keyboard is comparable to modern keyboards, but it's not a torture.

For the hobbyist (both then and now), the computer is quite a nice treat. Everything works pretty smoothly and the editing is user friendly compared to some other computers at the time. The JR-BASIC is not far from Microsoft BASIC, and for those with previous programming experience it is easy to adapt to. The video and character memory is simply laid out and easy to use even from within BASIC.

Some neat touches make the life of a hobbyist easier. The BASIC interpreter accepts hexadecimal, and there's a built-in function for returning decimal in hex. The character set can be adjusted by directly POKEing into the character set memory space, starting from $D000. Contrast this to the C64, where the same action would have required multiple preparatory pokes plus duplicating the character set from ROM. For learning machine code the 6802-based processor is simple and straightforward.

An interesting feature is a built-in monitor, which can be invoked with the MON command. With the monitor it is possible to change memory contents by entering hex, or examine how the present BASIC program is tokenised, starting from address $0800. Sadly the monitor is somewhat lacking in features, as it does not do disassembly or cannot display the memory contents as characters. However, the 6802 has a clear instruction set and 16-bit addresses are stored in a readable high-low format, both factors which make a hex dump like this a bit more readable. What is a bit unclear that the commands, D, M and G have to be typed in capital letters, which can be a bit annoying as this is not required in BASIC and the hex input itself does not care about the case.

The BASIC line entry is a slightly more picky than some others. It really insists on putting a space before and after the commands. There are no shorthands to the commands, so typing ?1+1 does NOT work. Having to type PRINT each time means the Panasonic works less well as a calculator.

There are supposedly two ways to break into the program, using CTRL-C for exiting normal basic, and a single hard BREAK key which should be able to exit even a stuck machine code loop. In many situations, however, the machine had to be switched off and on. This was quite common practice back in the time, but nowadays it does not feel right to do this. The hard break had to be used when exiting program loops with the PICK keyboard input command. Use of the PICK command makes the loop impervious to the soft break.

The manual is quite sparse. Although it has some useful information on the BASIC instruction set and how to define characters and things like that, it does not have any real examples. The reader is assumed to have a good knowledge about how computers generally work. There's no sample machine code program or a list of 6802 instructions, but these can be found from the Internet.

Graphics

The first impression about the graphics capabilities bring into mind the Sinclair ZX Spectrum, but the presence of the character display points more towards other computers. The palette of Black, Blue, Red, Magenta, Green, Cyan, Yellow and White are very reminiscent of the ZX, and it's nice to see them here. As the Panasonic lacks the variable brightness of the Spectrum, there are only 8 colours available. There are no sprites or hardware scrolling, which is a bit sad, as the CPU is slow for throwing graphics around. The character display and user defined characters alleviates this somewhat, as character displays are very quick for rough graphics. The amount of definable characters is 256+64, enough to give a theoretical resolution of 256x192, comparable to the Spectrum. I can't see why games like Manic Miner could not be reproduced faithfully with some clever on-the-go modification of the character set.

The PLOT command can be used to create graphics with the resolution of 64x48. At first it appears that the computer merely sorts logically some of the characters included in the character set and prints them out as some kind of pseudo-graphics. But it's actually a bit more clever than that. The low resolution graphics is not made out of the character set at all, as it is possible to have four different colours on the same cursor area. Furthermore, there is no need to switch to a different display "mode", as each character on the display in a way has its own mode. Each screen character can be either a standard character, a user defined character, or a low resolution graphics cell. So the low resolution graphics and the normal graphics can coexist on the same display. However, the low resolution graphics has fairly limited uses.

Curiously, even though the BASIC has commands pretty much for any sensible operation, changing the border colour has to be done with POKE $CA00,n. Of course, learning this makes it easy to implement in machine code.

Loading tape files

The Panasonic uses a 8-pin DIN socket for tape input/output. This connection was quite common in machines like the MSX and apparently TRS-80. The pin assignment seems to be quite similar to an MSX, but I have not absolutely checked. As the computer did not come supplied with the standard tape lead, I had to improvise one. Here is how I did it:

The tape connector as seen behind the computer. The cable is not to scale.
GND=Ground, IN=Signal in for loading, OUT=Signal out for recording

I connected the ground to the bases of two microphone style jacks, and connected the signal pins to the jack tips. I connected both to the same ground and it seems to work. I connected the microphone jacks to my Mac Mini audio input and output, and used Audacity as a substitute for a tape recorder.

From the JR BASIC, LOAD is used for loading Basic files, whereas MLOAD is for binaries. A=USR($1000) would then execute the code starting from $1000. Also, the G1000 command within the monitor can also be used.

The Panasonic allows a choice between 600 baud and 2400 baud rates for storage. This can be changed from a switch below the computer. Apparently the 600 baud can be chosen for reliability whereas the 2400 should only be used with Panasonic's dedicated tape recorder. With this setup, the 2400 baud rate has worked fine. Just to be sure I use 44100khz sample rate with 16 bit accuracy. I have not made tests but I believe 8 bits would work just as fine, not so sure about compromising the sample rate though.

Looking at the saved files I started building an understanding on how the data is actually stored into the tape, with the hope of creating audio files from binaries on the Mac. The normal saved recordings are constructed from two parts, the header and the actual data. The header is pretty straightforward but the data part was a bit trickier. Both the header and the data have a checksum, which is built from adding up all the values into an 8-bit counter. Files larger than 255 bytes are divided into page-sized chunks each with their own checksum.

The above diagram depicts how header data is stored in the waveform. The data part uses a bit different format, depending on the chosen baud rate.

In the end I could generate the wave files and load them into the Panasonic. Mostly this was made by imitating the structure of the previously recorded output from the machine. I also spent time trying to find existing software for the Panasonic, and in the end found some .CJR files related to a virtual Panasonic emulator. (by “James the Animal Tamer” in 2002) I did not bother to fire up my PC to find out if the emulator works, as I'm only interested in using the actual machine. There may or may not exist a program called the CJR2WAV or something similar, which would apparently perform the function I was seeking. I did not search comprehensively but it seems to be currently unavailable. Besides, it was more interesting learning experience to try to make my own.

The software

The CJR files were a welcome find. Adjusting my wave generator program I could convert some of the CJR-based programs into wave files that actually could be loaded into the machine. So I was enjoying games like Solitaire, Vortex, Crazy Mazey and so on. There are several games (Junkman Joe, Galactic Chase, Mischievous Mansion) that have a different format and so far I have had no success loading them. Most of the ones I could load were written almost entirely in BASIC, possibly converted from some another computer. I’ll quickly go through some of the more interesting ones.

I loaded the Solitaire first and it is very addictive. The cards can be manipulated with simple keystrokes which is a refreshing change from mouse-based card games. The graphics are likewise very minimal and pleasantly laid out. The program offers four solitaire varieties. Sound is very sparse, with the occasional beep for an invalid move.

Mars Cars is a kind of a loose Pac Man variant, except the enemies do not behave in very intelligent fashion nor is there really a maze to speak of. Some sort of space car is moved in four directions and the player has to catch four treasures guarded by critters. After collecting the treasures the player proceeds to the next screen via the exit. The car can “eat” the obstacles on screen, which forms part of the game strategy. The critters have to be let out of their containment area before the treasure can be safely picked up. If the aliens moved in a less random way the concept could be quite interesting.

Vortex on the first sight appeared to be a fun arcade game. The player has to fire missiles to four directions to counter torpedoes that appear from different sides of the screen. Occasionally a “saucer” appears. Yet the game is devoid of any content or development throughout the game, it merely gets faster all the time until it becomes impossibly fast. There is never more than a single torpedo on screen.

Crazy Mazey is another maze game. This time the player guides a car in a city-like maze, collecting dollar signs and avoiding the pursuing cars. This game utilizes per-pixel moving graphics, not seen in the other games. On the faster level, the game runs pretty smoothly. The enemy cars pursue the player in a very determined and annoying manner!

Santa Paravia is one of those management/diplomacy games which where featured as magazine and book type-in listings in early 80s. You know, the player manages a mine, a city, a nation or a space variant of any of them. The player makes choices of resource allocation and at some point the player is killed randomly because there is a mutiny or plague or whatever. Santa Paravia has an occasional graphical screen that adds some charm to the otherwise text-based proceedings.

Judging from this small sample of games, the Panasonic does not really have that impressive catalogue. The arcade games are a bit lazily done and could have been more interesting with only very little additions. Then again at around 1983 there were really not that many good home computer games on any platform, even though the hardware was already up to it. So perhaps the games are kind of par for the course for this particular vintage. Reputedly the Disney games have more effort put into them, but there’s very little information about them available on the net.

Conclusion

The Panasonic JR-200 is an impressively simple and straightforward computer. In some ways it reminds me of the MSX, but without the video chip hassle. The 6802-based chip has a simple instruction set and although the monitor is not really a full monitor, it does give quick access to beginner level machine code.

Nowadays it has become a truism to say that a hardware is just as good as its' software catalogue. But these were different times. I don't feel right to blame the machine for not having a huge amount of great games, as home home computers at that time had other purposes too. In the 70s, home computers were the domain of hardware hackers and DIY electronics enthusiasts. As the audiences became wider in the beginning of the 80s, a home computer might still have been bought for hobbyist purposes, such as learning to program BASIC and then moving onto machine code. There may not have been so much thought put to whether the computer was able to do something "useful". Messing around and learning was (and is) fun in itself. I cannot imagine a much better introductory machine for this purpose than the JR200. Whereas many computers of that time have become very off-putting by the way of user experience, this computer is still quite neat for typing in programs and seeing how they work. It combines a good quality hardware with simple and usable BASIC and gives full 32K space to play with.

Panasonic JR-200 at Old-computers.com


My work on the tape generation.