Dear Tim,
I read with interest Bruce C. Taylor‘s article on the PC8300, since I have been quite deeply involved with this machine. I would like to clarify some of the points brought up by Mr. Taylor.
The 50/60 Hz. signal diode serves exactly the same function as pin 22 of the ZX81/TS1000 ULA. The video frame rate has nothing to do with the power-line frequency; instead, it is determined by the that unique blend of hardware and software that constitutes the ZX display system. In the PC8300, the 50/60 Hz. diode goes to an input port. Each time through the display loop, the software checks whether this port is high or low, adjusting the MARGIN system variable accordingly.
It should be noted that the machine (and the ZX81, for that matter) runs about 50% faster, overall, in SLOW mode, if it is in the 50 Hz. mode. This is because the system has more time between frames to work on your program. My ROM improvement (more about that later) allows MARGIN to be changed by the user, and always defaults on power-up at 60 Hz. regardless of whether the diode is connected or not.
There is most certainly a clock component on the PC8300 board. It is exactly the same as on a ZX81, a 6.5 mHz. ceramic element just to the left of the ULA, in front of the modulator. This behaves electrically just like a crystal; the only significant difference is that the frequency stability and precision is less than that of a crystal. For most jobs, however, the variance is negligible.
There is also most certainly a Z80A on the board. This is the large chip in the centre. Mr. Taylor may have been confused by the fact that some manufacturers of the Z80A give it their own part number. The designation 780C is particularly common. There is absolutely no difference between such chips and Z80A’s marked as such.
Regarding place of origin, it does say “Made in Hong Kong.” However, the manual is written in the Chinese dialect of the mainland. Draw your own conclusions.
There is nothing strange about the fact that the 1 REM location is 793 bytes higher on the PC8300, than it is on the ZX81 family. There is also nothing mystical about memory allocation. The only difference is the location of the display file. On the ZX81, it rides above the BASIC program. It therefore moves about as BASIC lines are added and deleted. On the PC8300, however, the display file is always at a fixed location BELOW the program area. What do you get when you multiply 24 lines by 33 bytes per line and add 1 for end-of-file marker? That’s right, 793.
The PC8300 will successfully load ZX81 programs that are entirely in BASIC. It does this by looking at the VERS variable, adjusting how it perceives the incoming data as required. However, because of the way the display file location was modified, it will NOT load any BASIC variables associated with the Sinclair program. So if your program is, for instance, a mailing-list, you can load the program but not your data.
Worse, the different location of the first program line means that machine-code won’t run unless it was written to be position-independent, and you adjust all USR calls accordingly. Even worse, no ROM calls are allowed since the ROM routines were completely scrambled, presumably to help prevent copyright hassles. For all practical purposes, one can consider that it is completely incompatible with ZX81 machine-code.
There are also some relatively minor, though potentially troublesome changes in the system variables. You have to be aware of these if you intend to write machine-code for this computer.
It is not possible to use a straight Timex or Sinclair ROM with the PC8300. Rather, it isn’t practical. The reason is that the hardware of the display system is sufficiently different to cause the display to be “wonky,” for lack of a better word.
I have developed a Timex-compatible ROM which runs all known low-res Timex programs, including machine-code. The only programs that won’t run, are high-res programs and SOME “banner” programs.
The other hardware-dependent factor is the character set. These are NOT housed in the top 512 bytes of the ROM, as on the Sinclair. Rather, they are contained within the custom chip, and are the reason that high-res won’t work no matter what we do. There is no point, even, in trying to revector the I register; actually a blessing, since it is now available to the programmer. For instance, IM2 (interrupt mode 2) is theoretically usable with this machine. On the down side, some of the Sinclair punctuation (: ? and the pound sign) still remain game characters, and the grey graphics are right triangles and a “race car”.
Otherwise, the PC8300 behaves just like a TS1000 with the new ROM. Even the keywords were reverted to their original key locations. Keywords are, of course, entered with a single key-stroke.
To make up for the few remaining shortcomings of my Timex-compatible ROM, it sports a few added features, some of which are not available either on the ZX81 or the stock PC8300. A new BEEP keyword turns beeping keys on or off. The REM command is now used to turn the blinking cursor on or off, in addition to its use as a REMark statement. A BASIC single-stepper (“debugger”) is included. The machine can be set to make an audible noise when loading or saving a program.
Hardware-wise, there is nothing “different” about the electrical characteristics of the edge-connector lines. The problem is that some of them are missing. That’s right, the edge traces go absolutely nowhere. Most of these (WAIT*, BUSRQ*, BUSAK*, HALT*, NMI*, etc.) are not commonly used by external peripherals. At least one, however, is relatively vital; this is M1*. If this line is brought out, the PC8300 will work with Timex/Sinclair-compatible 64K RAMpacks. Incidentally, no modification is needed to run machine-code in the 32-48K region. In this respect, it is like the TS1500.
Even without the M1* or other lines connected, the ‘8300 works with most ordinary Timex peripherals, such as the 2050 modem, 16K RAM, 2040 printer, many “big-printer” interfaces, and so on. One notable exception would be the Oliger Video Upgrade, again because the ROM does not contain the character patterns. Other devices that would not work include anything with an EPROM that overlays the ROM (e.g. the Memotech parallel interface), or contains ROM calls (e.g. the A&J Stringy-Floppy).
In my (admittedly biased) opinion, the PC8300 is virtually useless, unless its ROM is changed to make its claim of “Timex compatibility” at least 90% justifiable.
Regards, Fred Nachbaur