By Ron Jeffries
The Commodore 64 is a lot of computer for the money. For only $595, it comes with 64K of RAM memory, excellent graphics, a three-voice sound synthesizer, Microsoft Basic, a 6510 microprocessor, a built-in RF modulator to connect with a television, and a typewriter-style keyboard.
Although not a true “open design” such as the Apple II or IBM PC, the 64 has several easy-to-use input/output interfaces built in. There is even a cartridge slot that will allow a Z80 microprocessor or game cartridge to be added to the system.
Commodore has announced that the popular CP/M operating system will be available when the Z80 cartridge is released in early 1983. A single 5.25″ floppy disk (Model 1541) is available for an additional $399.
Not A 40-Column Vic
The 64 is packaged in a plastic case that looks exactly like the VIC-20, except that it is brown instead of white. But don’t let that fool you: the 64 is not a 40-column VIC. The two computers share only two features: the plastic case, and the same version of Pet Basic.
VIC programs that don’t use any of the special VIC graphics or sound and that do not rely on the 22-column screen will run on the 64. Unfortunately, those constraints severely limit the number of VIC programs that will work on the 64.
The 64 uses a 6510 microprocessor. The 6510 is exactly like a 6502 (which is used by the Pet, VIC, Apple, and Atari) except that the first two bytes of page zero have been “stolen.” These two memory locations are used for an on-chip 8-bit input/output port by the 6510. The 64 uses this port to control its memory map, which makes it unusually flexible.
For example, when a game cartridge is plugged in. the 64 automatically acts just like the Commodore Max Machine game console. This means that the 64 is an inexpensive development system for programmers who want to write Max games.
The first thing that impressed me when I unpacked the 64 was the excellent keyboard. Several people who have wandered by my office have tried the keyboard, and their comments have all been quite positive.
As is true of most computer keyboards, some keys are not placed where they would be on a standard typewriter. If you are a touch typist, be sure to type for a few minutes on the 64 keyboard before you decide to buy it. The placement of keys on the 64 probably won’t bother you.
The keyboard of the 64 is sculptured, which means that the tops of the keys are slightly concave when viewed from the end of the keyboard. (Some keyboards look like a staircase when viewed from that angle.) Most typists seem to prefer the sculptured design, which is what IBM uses for their popular Selectric typewriter.
The 64 keys also have a matte, non-glare surface that is attractive. The “feel” of the keyboard is above average, although for my taste it is a little softer than ideal. There is no audible click when a key is pressed, a feature I have come to appreciate on machines such as the Atari 800.
As a point of reference, the IBM Selectric keyboard is the best I have ever used. My favorite personal computer keyboard is the IBM PC. It has a sharp, “clicky” feel that works very well for me. I rate the 64 keyboard about 7 on a scale of 1 to 10, with the IBM PC rating a 9, and the Selectric getting a perfect 10. Obviously, the $600 64 does very well in comparison with the much more expensive IBM PC.
The 64 keyboard has a somewhat high profile. The home row of keys is 70mm above the desk surface. (The 64 looks higher that it is. For example, the fairly sleek Atari 800 has a 77mm high home row.) A low profile keyboard such as the IBM PC places the home row of keys approximately 30mm above the desk top. Research in human factors has shown that low profile keyboard design reduces fatigue in users’ fingers and
Commodore decided to use a slightly modified VIC plastic case for the 64, even though that meant having a high-profile keyboard. On the other hand, by using existing plastic tooling, they were able to get the 64 to market several months sooner than if they had designed a new case. (They probably also saved $20,000 to $50,000 in development costs.)
The graphics capabilities of the 64 are exciting. Commodore-64 graphics are more powerful than those of the Atari, IBM PC. Apple. Tl 99/4A. or Radio Shack Color Computer. (The 64 also has far stronger graphics than its cheaper cousin, the VIC-20.)
The most important feature is its dedicated hardware support for rapidly displaying eight detailed objects anywhere on the screen. Each of these objects (Commodore calls them sprites) can be 24 pixels wide and 21 pixels high, or about the same as a block of 3 x 3 characters.
After a sprite is designed, and the dot-by-dot pattern for the display (called a bitmap) is stored somewhere in memory. the sprite can be moved around on the screen very quickly and easily. All the programmer has to do is POKE the horizontal and vertical location into the appropriate registers of the dedicated graphics processor called the “Video Interface Chip,” or VIC. The VIC chip directly supports eight sprites at one time. (In machine language it is possible to “re-use” sprites, and thus have more than eight of them on the screen at once.)
Sprites Are Versatile
Each sprite has a priority. This allows one sprite to appear to pass in front of another sprite, so that three-dimensional effects are possible. The video chip also keeps track of collisions between sprites, and between sprites and the foreground. This can be very useful when writing sophisticated game programs.
Each sprite can be enlarged to be twice as wide, or twice as tall, or both. However, when a sprite is enlarged, there is effectively half as much resolution, since the same bitmap of 24 by 21 pixels is used. (The pixels making up the sprite are enlarged.)
For some reason, the characters on the 64 appear to be “smeared” on the display. This effect is least visible when there is reduced contrast between the character color and the background. I suspect that is why Commodore decided to have the 64 display light blue characters on a dark blue background when it is first turned on. However, this combination of foreground and background colors does not provide as much contrast between text and the background as other popular systems.
Many combinations of text and background colors produce an unreadable display. The background color (as well as the border color) can be changed with two POKE commands. After some experimentation, I have found that blue text on a white background looks pretty good, although it does exhibit some of the character smearing. I trust that Commodore plans to improve the quality of the display.
The 64 produces sound using the 6581 Sound Interface Device (SID). This special chip is a music synthesizer and sound effects generator. It provides three voices that can be controlled by the user. For each voice, you can control pitch over a nine-octave range. The waveform can be a triangle wave, sawtooth, variable pulse, or noise. (You can create great sound effects for games with the noise waveform. For example, it is easy to produce explosions, shuffling feet, or ocean waves.) For each voice, you can also control volume, and there is a master volume control.
For each of the three voices, you can control what are called envelope generators. The way a note or sound effect sounds when it is produced is the result of many different things. Naming the envelope of a given sound is a shorthand way of describing four of the important parameters that control how it sounds.
There are four parameters that describe an envelope: attack, decay, sustain, and release, or ADSR for short. With the 64, the attack rate can be varied from two milliseconds to eight seconds. Both the decay and release rate can range from six milliseconds to 24 seconds, and the sustain level can range from zero to peak volume.
After spending quite a bit of time using a sound editor that makes it easy to build new sounds and then experiment with changing them, I am very impressed with what the SID can do. Frankly, 1 can’t remember the last time that I have had this much fun (at least with a computer). When I start playing with 64 sound generation there just doesn’t seem to be a good place to stop. Many 64s will be purchased solely because of the SID synthesizer.
Given the excellent sound and graphics capabilities of the 64, it is too bad that Commodore did not choose to support the new hardware at a high level in Basic. All of the sound and graphics are controlled with POKE statements that change magic memory locations. POKEs are inconvenient for experienced programmers, and completely mystifying to novice users.
Microsoft has extended Basic to support graphics and sound on other machines such as the IBM PC. So why was the 64 released with version 2 of the same old Pet Basic, which does not support the new hardware features?
I think that Commodore decided that the 64 would sell very well without an enhanced Basic. After all, the 64 is priced relatively low for the features. (Using the existing Pet Basic is another way that development costs were minimized.)
Will there ever be an enhanced 64 Basic? I think it is unlikely. My guess is that a better version of Basic will be one of the features of the $995 P-500. The new computer will have the same color graphics and sound as the 64, and will also have 128K of RAM, a 10-key numeric pad, true programmable function keys, and a faster microprocessor.
The 1541 Disk Drive
In addition to supporting the standard Commodore cassette tape format for storing programs and data, the 64 can also be used with the VIC-1541 disk drive. (The original VIC-1540 drive requires a new ROM in order to work with the 64.)
The 1541 uses a 5.25” drive that stores approximately 170,000 bytes. The drive is a single-sided unit that uses Commodore’s unique disk format, and is packaged attractively, although the case is white (like the VIC-20) which doesn’t match the tan color of the C64.
The disk format used by the 1541 is compatible with the standard Commodore 4040 disk drives that have been used for several years with the Pet and CBM models. This means that disks can be transferred among the 64, the Pet. And the VIC-20.
In the case of data files, no changes should be needed when interchanging files. Pet programs can be transferred to the 64 easily. Many Pet programs work on the 64 after minimal editing. Programs that POKE screen locations must be changed, since the screen has moved.
Changing the CB2 sound of the Pet to use the SID chip isn’t difficult, if you use this formula:
10 HS = 2^(1/12)
20 SID = INT(.5 + 14*HS (LOG(255/BC2) / (LOG (HS))
Where SID is the value to POKE into location 54273, and CB2 is the value that was POKEd into location 59464 on the Pet. Naturally, you have to have the other SID parameters set up correctly for the 64 sound to work.
Commodore plans to release what they call a Pet emulator for the 64, that will do much of the dirty work for you. I think that converting a Pet program to the 64 is a better approach, since there is no runtime overhead, and you can take advantage of unique 64 features such as color, user-programmable characters, sprites, and of course multiple-voice sound.
How to Transfer C64 Programs to the PET
Taking 64 Basic programs to the Pet is somewhat complicated. After LOADing the 64 program into the Pet from disk or cassette, use the PET monitor as follows:
At this point, the monitor will display the contents of the 6502 registers. We can ignore them, and type the M command to display a portion of the PET memory:
.M 0400 0407
The command shows the contents of the seven bytes that begin at location 0400 hex. We will ignore the values that it displays, and type the following in their place:
.: 0400 00 01 08 0000 00 00 00
After pressing RETURN, exit from the monitor with the “X” command:
Now, in Basic, type a zero and press RETURN. What we have done is play a trick, using the machine language monitor. We created a fake line zero in the monitor, and then deleted it in Basic. If your program already has a line zero, it will not be deleted, since Basic will only delete the first line zero that it encounters, which will be our fake line.
“Smart Peripheral” Problems
The disk operating system for the 1541 resides in ROMs that are in the 1541, rather than in the 64. The advantage of this approach is that the DOS doesn’t consume any RAM in the computer, since it has its own RAM on the disk controller.
Commodore takes great pride in the fact that their system has what they call “smart” peripherals. What this means is that each disk unit or printer has its own microprocessor, and can accept commands from the “main” computer, such as the 64.
Unfortunately, there is a fly in this intelligent peripheral ointment. Basically, the disk is a very independent device. The 64 sends it a command, the disk attempts to perform the requested action, and then sets an error code. Note that I said “sets an error code,” not “tells the computer whether things worked or not.”
The problem with the Commodore approach is that the user program (or the user, in the case of commands from the keyboard) is responsible for discovering that an error has occurred. When something doesn’t work, the 64 does not print an error message on the screen.
The result of all this is that Commodore disk systems such as the 1541 are not among the easiest to use when compared with other personal computer systems. Evidently, there are many consumers who either don’t know the difference, or don’t care, because Commodore disk systems seem to sell very well.
Limited Disk Speed
The 1541 disk transfers data slower than several other personal computer disk systems. For a simple benchmark, I used a program that writes 10,000 bytes to the disk. (To keep the interpretive overhead down, the program uses a FOR loop that goes from 1 to 500. Each time through the loop a string of 20 bytes is written to the disk.) The 64 with the 1541 disk took 34.8 seconds to write 10,000 bytes. The standard Pet 4040 took 17.5 seconds, and the Atari 800 took 28 seconds with “read-after-write” disabled.
Atari is the only personal computer that automatically reads each sector after it is written. However, this Atari “feature” can be disabled by typing POKE 1913,80. With read-after-write enabled, the Atari 810 disk took 46 seconds for the benchmark. The IBM PC with IBM DOS took 11.4 seconds to write the 10,000 bytes.
I ran each disk test several times and averaged the results. Also, the old data file was scratched by using a keyboard command rather than in the benchmark program. To my surprise, I found that scratching a file from the disk takes quite a while.
Furthermore, the amount of time taken to scratch a file depends on the location of a file on the disk in several popular disk operating systems. For example, with the 1541 disk, a scratch command can take a noticeable amount of time.
Since most consumers don’t bother to time the performance of their disk drives, the important question about the 1541 may be “Is it fast enough for the average user?” The answer is a qualified “yes.” If you mainly use the disk for program storage, any disk is much faster than a cassette tape recorder. But if you plan to use the 64 for disk-intensive data management, you should do some serious benchmarking before making a purchase decision. At $399, the 1541 is one of the least expensive disk units available for personal computers.
The Commodore 64 is an excellent value. For $595 you get powerful graphics, a complete sound synthesizer, and a versatile computer with 64K of memory. At the moment, 1 think it is the “best buy” in the $600 personal computer price range. Now if you’ll excuse me, I need to get back and tune-up my 64 snare drum sound effect…
Acknowledgements: Glen Fisher of The Code Works provided numerous clarifications of the technical details of the 64. David Rosenwald of Commodore was most helpful in providing hardware and software.
First published in Creative Computing magazine, January 1983