For Retro Computing Enthusiasts
,

Commodore 64 Video Update

By Tom R. Halfhill — originally published in Volume 1 – Issue 1 – June, 1983

There are some ongoing upgrades that are improving the Commodore 64’s video quality, and another recent change which is causing problems with some commercial software.

One of the facts of life in personal computing is that new and improved models are constantly coming along. Technology is advancing faster than you can say “state-of-the-art.”

Not only is this true of personal computers in general, but also of specific models of personal computers. Many modifications are made between the time a new personal computer is first rigged up on “breadboards,” then assembled as a working prototype, then moved into full production, and then dropped from production a few years later when it becomes obsolete. Sometimes entirely new features are added. But usually the changes involve fixing bugs, correcting quirks, and making small improvements. Often the modifications are made quietly, and few outsiders are aware of them.

Both the VIC-20 and Commodore 64 have been undergoing such subtle changes since their introductions. For example, late-model VIC-20s are being shipped with new keyboards. All the same keys are there, and the keys still perform the same functions, but the new VIC keyboard is identical to the one found on the Commodore 64. The keyboard is sculpted into a “dish” shape, like IBM Selectric typewriters, so that keys on the lower rows are tilted slightly toward the top of the keyboard. Older VIC keyboards are “stepped,” arranged like flat terraces on a hillside. Also, the new keyboard has pebble-surfaced keycaps to reduce glare. The keyboard upgrade was made a few months ago without fanfare – and went unnoticed by most people.

Problems With Sparkle And Sprites

Numerous other changes have been made to the VIC-20 and Commodore 64, mostly to improve their video quality. Early models of both computers were troubled by TV interference problems, although they passed all applicable Federal Communications Commission regulations. This interference, called RF (radio frequency) interference, is caused by the stray emissions from computer circuitry. The amount of RF that escapes a computer and interferes with nearby TV sets depends upon the computer’s circuit design, internal shielding, and the arrangement of its TV/monitor cable. Also, some TVs are more susceptible to interference than others. RF interference usually shows up on a TV as overall fuzziness, or as “herringbone patterns” (rows of wavy lines, sort of like a weather map).

Recently purchased VICs and 64s show markedly improved video quality over earlier models. Peeking inside their cases reveals that both computers now come with extra metal shielding. Also, their video circuitry has been redesigned to reduce interference.

64s in particular have been extensively modified, mostly because early production models suffered from various video problems, not just RF interference. One of these problems is sometimes called “sparkle.” This shows up as flickering points of light on screen characters while a program is running. To test for this, fill up the screen with characters, perhaps by LISTing a long BASIC program. Then, in direct mode (i.e., without using a line number), type FOR X=1 TO 10000:NEXT and press RETURN. This puts the computer in a running program loop. Watch the characters on the screen for flickering points of light. Early 64s nearly fill the screen with sparkle; on newer models, it is barely noticeable.

Sparkle is more than an annoyance; some users have reported that it interferes with sprites, the programmable animated objects that are one of the 64’s advanced features. Special memory locations in the 64 detect collisions between sprites and other screen objects, and the sparkle has been blamed for registering collisions when none have occurred.

If you have an early 64 that suffers from serious sparkle or RF interference, there are some possible repairs. However, not all the remedies are sanctioned by Commodore. Some of these repairs involve soldering capacitors and resistors between various pins within the computer, and should be attempted only by qualified personnel. Check with Commodore or your local service dealer if you are having video problems.

The Story Behind Blank Screens

In an attempt to improve the video on early Commodore 64s, Commodore began modifying the chip that produces the computer’s TV output. This chip is called the 6566 Video Interface Chip, or sometimes, the VIC II chip (the VIC I is the VIC-20 computer’s video chip).

These modifications started soon after the 64 entered production in August/September 1982. Although the computer is not yet a year old, the VIC II chip reportedly is already in its eighth revision.

As noted, these revisions have dramatically improved the video quality on late-model 64s. However, one of the latest revisions to the computer inadvertently made recent 64s incompatible with some existing commercial software. If you loaded a commercial program into a new 64 recently and were surprised by a blank screen, you’re probably a victim of this mix-up.

To fully comprehend what happened, let’s look briefly at how the 64 displays information on the TV screen. It might seem like heavy going for those of you who are not programmers (or don’t want to be), but the concepts are essentially easy to understand.

Picture the screen as a “window” looking onto a section of memory within the computer. This section of memory is called screen memory, and any number placed in these memory locations shows up on the TV as a character. “Screen memory” is just like regular memory, except that whatever is stored there will also appear on the screen. It is set aside to “hold” the image. The 64’s screen memory consists of 1000 such locations, because in text mode the computer displays 25 horizontal rows of 40 characters (25 x 40 = 1000). In a standard 64, screen memory starts at location 1024 and ends at 2023 (1000 locations, inclusive).

For example, let’s say we want to make a tiny white ball character appear in the middle of the screen. We could do this with the PRINT statement in BASIC, but it’s also possible to do it another way: by inserting the proper number directly into screen memory. Screen memory starts at the upper left corner at location 1024, so the middle of the screen would be about 1524. First, clear the screen by holding down the SHIFT key and pressing the CLR/HOME key. To make the ball appear, put the character code number for a ball at location 1524 by typing POKE 1524,81. Press RETURN. Presto! A tiny white ball appears.

What’s that, you say? The ball did not appear? If you’re still staring at a blank screen, you’ve got one of the newer 64s with a revised VIC II chip. If the white ball did appear, you have an older 64 with a previous VIC II chip.

And if this little exercise sounds familiar, it’s because the same exercise is found on page 64 of your Commodore 64 User’s Guide. If you tried that exercise when you first brought home your computer and didn’t see the white ball, rest assured that your Commodore 64 is not broken. The chip revision has made this part of the manual incorrect.

It also made some commercial programs obsolete – those programs which printed characters on the screen by putting numbers directly into screen memory. The result is the same: a blank screen.

The Invisible Characters

Actually, the screen isn’t truly “blank.” The ball character is there, but it’s invisible, because it’s the same color as the background. Here’s why:

Most computers use similar types of screen memory to create their video displays. However, the 64 (and, incidentally, the VIC-20) also use another section of memory for the screen – color memory or color RAM (Random Access Memory). The 64 has 1000 locations of color memory, one for each screen memory location. Color memory starts at location 55296 and ends at 56295.

Now, this is important: the number stored in color memory determines the color of the character in screen memory.

The older 64s automatically filled all 1000 color memory locations with 1’s when the screen was cleared (1 is the color code for white). So, any character placed in screen memory automatically showed up as white.

But the newer 64s do not fill the color memory with white. Instead, they fill color memory with whatever color code happens to be in the background color register. Normally, this is 6, the color code for dark blue. That means any character placed in screen memory also will show up as dark blue – so it won’t show up at all. It will blend into the background.

Conclusion: any program that creates screen displays on new 64s by putting numbers into screen memory, without also putting a contrasting color number into color memory, will wind up with a “blank” screen.

(To prove that the ball is really on the screen in the above example, repeat the exercise on a new 64 with one additional instruction, POKE 55796,1. Press RETURN. The ball will now appear as white against the dark blue background, because we put the color code for white into the corresponding location in color memory. PRINT statements in BASIC work the same on both old and new 64s, because they automatically take care of such details.)

One of the commercial programs affected by the revision was WordPro 3 +/64, the word processor by Professional Software, Inc. As soon as Professional Software became aware of the problem, it immediately revised WordPro and allowed previous buyers to exchange their disks for new ones. Luckily, WordPro had just been released for the 64, so not many original copies were sold. (The revised WordPro still works on earlier 64s, too.)

When Commodore learned of the compatibility problem, it sent letters explaining the revision to all the outside software companies developing programs for the 64. If you have some software which seems to suffer from this problem, contact the producer for a revised version.

In some cases, the problem can be fixed by typing FOR X=1 TO 1000:POKE 55295+X,1: NEXT and pressing RETURN before loading or running the program. This fills the color memory with 1’s for white.

This revision is a perfect example of how a seemingly minor change in a computer can have widespread consequences. In this case, the revision actually was made to a part of the 64 known as the kernal. The kernal is mostly of interest to machine language programmers. It’s basically a set of entry points into the 64’s BASIC language and operating system (the built-in program that performs a computer’s routine housekeeping chores).

Companion disk Companion Disk (.d64)

Enjoyed this? It’s what we do every month.

The revived COMPUTE!’s Gazette brings the spirit of the golden era to today’s retro scene — Commodore, Atari, Amiga, and more, in full-color print and digital every month.