The Musical PC8300

The PC8300 is a Hong Kong “clone” of the TS-1000, also known as the “IQ8300” or as “Your Computer”. This article is about making music on one, but the info may also be halpful with “your own computer” (no capitals) if your unit is capable of music and you have never tried programming any.

Toward this goal, I do not intend to do a full-blown “review” of the PC8300; extensive articles on it were done years ago, including by our own Don Lambert. But if you are not familiar with it, a basic understanding of this interesting computer may helpful. The PC8300 can use the same peripherals (e.g. RAM expander, printer, and tape drive) as the ZX/TS systems, is able to read ZX/TS tapes, and (having a BASIC which is essentially a superset of ZX/TS BASIC) can run SOME of the same programs. However, the design has a number of changes, some of which seem to have been implimented only for the purpose of avoiding copyright infringment charges, such as differences in memory management (which rule out sharing either machine language programs or BASIC programs which rely on saved variables), a different tape save structure (it can read ZX/TS tapes, but a ZX/TS cannot read its tapes), and perhaps most irritating of all, loss of certain keyboard characters like the question mark and the colon key. The keys are not replaced by anything useful (like the apostrophe the ZX/TS lacks), but instead by fanciful graphic characters like a PAC-MAN ghost, a space invader, and a racing car. For this reason, running a program that asks a question ends up printing a sentence with a ghost at the end, which can be disconcerting.

Still, certain changes appear to be genuine improvements. The ivory and green case has a keyboard that is bigger, with soft-rubber “chicklet” keys not unlike the later TS-1500. The unit has an extra port for a composite video monitor (and produces a rock-steady light-on-dark picture when used with one), as well as a port for connecting a joystick. The system handles BASIC keywords typed in letter-by-letter, in addition to having a few functions (like PRINT) which can still be punched in with the “one-touch” keyword method if preferred. (I find letter-by-letter a LOT easier.) Finally (and most relevant here), the unit has a built-in speaker with sound capabilities ranging from a “random tone with every keypress” (more than a little distracting at first, but at least you know your keypress was good) through some touted music capabilities supported directly by BASIC.

When I recently acquired one of the units, I started scouting around for programs which would support the unique capabilities of the machine. In this, I hit a brick wall. The early attention to the PC8300 seems to have focused on making it more TS-1000 compatible; and indeed, a replacement ROM was even developed for this purpose. Little effort seems to have been put into designing software specifically for the PC8300, although users may have modified a few ZX/TS programs to run on it. So I decided to give custom programming a shot; and, out of the many possibilities (a joystick-controlled program, perhaps? Or a game using those funny graphic characters?), I decided on typing in some music.

cartoon of a conductor with a baton
cartoon of a conductor with a baton

I wondered at first if the sound capabilities of the PC8300 might be similar to the later TS-2068; but, a glance at the manuals dispelled that notion. The 2068 supports eight-octave three-voice music, with control over the waveform envelope, volume and other factors. The PC8300 supports three octave, one voice music, period. So symphonies were out! An additional quirk: the PC8300 manual, like that of the 2068, shows support of “sharps” as well as “natural” notes, but not “flats”. This seems to be a factor of having a programmer and not a musician write the manual, since “A sharp” appears to be what most of us know as “B flat”. In any event, The 2068, like a regular piano keyboard, has no E♯/F♭, or B♯/C♭. The PC8300 does show these keys (E♯ and B♯); whether they could be useful for anything other than irritation of more sensitive ears, I have no idea.

The only advantage of a much less powerful music system is that the commands to run it may be easier too. A command to play an A note on a 2068 might look like– 10 SOUND 0,124;1,0;8,13;7,62 –followed by yet another command to determine the note duration (like– 20 PAUSE 60). The command to play an A note in the middle octave of a PC8300 might look like– 10 MUSIC “A16” –with the “16” representing the duration of the note. MUCH easier! For the high octave, a “>” follows the note (e.g., “E>16”), and for the low octave, a “<” preceeds the note (“<E16”). Sharps are represented by the same note in reverse video.

Not being a heavy-duty music person, I started my project by heading to the library and getting a book or two of music, mostly simple old tunes and Christmas carols. I chose to start with “Blow the Man Down”, that old sea chantey that Hollywood long associated (along with “16 Men on a Dead Man’s Chest”) with sea pirates. This turned out to be a fairly good choice: not complicated, very repetitive (with seven identical verses and refrains, meaning less programming), and only a few “sharps”.

If you have no extensive musical knowledge (and I certainly do not), there’s a phrase you’ll need to remember: “Every Good Boy Does Fine”. You see, the musical scale runs from A through G and then back to A; on the treble clef on the top staff (the only ones you will be utilizing for a simple tune, not the chords on the bass clef below), the bottom-most line is E, with the next line G, then B, then D, and at the very top, F. Hence, “Every Good Boy Does Fine” (E-G-B-D-F) helps you identify the notes intersected by the lines. Obviously, a note nestled between the E line and the G line is F; the note nestled below the E line is D; a note just below that– depicted with a line through it– is C; and so forth.

But aside from the notes (and the words, since many older, simpler songs may have lots of verses you may never have heard), the important thing the sheet music tells you is the DURATION of the notes. The musical notation runs like:

𝅝 = Whole note
𝅗𝅥 = Half note
♩ = Quarter note
♪ = Eighth note
𝅘𝅥𝅯 = Sixteenth note
𝅘𝅥𝅰 = Thirty-second note

If a dot follows the note, the note duration is increased by 50%. So for instance a dotted half-note would actually be a three-quarter note, if there were such a thing).

To account for the differing note lengths, I assigned a whole note the value of “64”, and adjusted all other note values accordingly. Thus a dotted whole note was a “96”; a half-note “32”; a quarter note “16”; and so forth down to a thirty-second note, “2”. I could as easily have assigned the whole note “32” and adjusted all the other values accordingly; that would have worked just as well, unless I happened to run into a dotted thirty-second note (which would have made it “1.5”; I have no idea if decimal fractions work or not). But the “64” scale served my needs. Once the notes are programmed, you can insert a “TEMPO” command to pick up the pace; I ended up using TEMPO 5.

Before leaving the sheet music, note that the easiest songs to translate are those that contain no sharp symbols (which looks like “♯”) or flat symbols (which look like “♭”) to the right of the “𝄞” sign. I will not get into “key signatures”, so suffice it to say that a song without such symbols (i.e., in the key of C Major) has no sharps or flats to make things difficult in translation. Music done in different keys will work (and my “Blow the Man Down” falls in that category), but you may not be given clear notice in the sheet music that a particular note is supposed to be a “sharp” or a “flat”. My only advice here is that, if a note sounds a bit off, try the “sharp” keys immediately above it and below it. The same note would then be consistently sharp through the rest of the song.

Originally, I intended to have the words displayed on the screen while the tune was running. Unfortunately, I found the screen blanks while playing! Worse, the screen would try to flash back on between lines– not long enough to be readable, but long enough for the flash to be annoying. I solved this by putting the words on screen for a while before each verse started, and then putting the unit in FAST mode during the song (which seemed to have no effect on the speed of the tune) to prevent the screen flashing back on in the middle. In programming the brief wait between the end of the verse and the beginning of the chorus, I found that I could have the words (“Hey, ho, blow the man down”) flashed on the screen by using a PAUSE command, or not displayed using a delay loop, my option.

I fitted all the music and 2 verses of words into the on-board 2K memory; I probably could have fitted in at least one more verse with tighter programming. I saved that program, then produced an expanded version using a 16K RAMpack, which had plenty of room for all seven verses!

If anyone with some PC8300-specific programs would like to swap for a copy of my little offering, I can be reached at [address omitted].