Reviewer: Bill Bennett

Magazine: Your Computer

Date: October 1984

Sweet sixteen and not a key pressed. Bill Bennett introduces himself to a Commodore debutante.

At first sight, the new Commodore 16 resembles the Commodore 64. It looks like last year’s model in this year’s colour scheme. Parked side by side on the test bench the two machines reveal some surface differences but under the bonnet there is a vast gulf between the two micros. The 64 has some wonderful hardware held back by a less than wonderful Basic, the 16 has an excellent Basic but is very much a cut-down micro.

There is no way that the 16 replaces the 64, but Vic-20 owners on tight budgets could easily be tempted to upgrade to the 16. Inside it has a fairly small circuit board that only measures 12in. by 5in. Screwed to this board is an elaborate heatsink which pays particular attention to draining the warmth from one large integrated circuit. The small board isn’t a result of some breakthrough in large scale integration because there are a great deal of discrete components.

The most noticeable comparison with the 64 is that the 16 has fewer RAM chips. There is only 16K of RAM, hence the name. Also noticeable by their absence at the Commodore 16 party, are Sid and Vic, the special chips which make the Commodore 64 what it is today. These chips handle the 64’s sound and graphics but appear to have been integrated a stage further on the 16.

Elsewhere on the circuit board is a cartridge socket which appears at the rear of the cased machine and is marked “Memory Expansion”. Although it will certainly perform that task I expect it will also be used for cartridge software. The socket is dissimilar to those on the Vic-20 and Commodore 64 but it is hardly surprising as none of the machines are, strictly speaking, software compatible.

Along from the cartridge socket is the TV output and next to that a monitor output which provides compatibility with the Commodore monitor. Beside this is the serial port which is a Din socket, just the same as that on the 64. I was pleased to discover that this allows you to use the 1541 disc drive and the MPS-801 printer so anyone already committed to Commodore equipment isn’t going to have to start building a system from scratch.

A different socket

The cassette port turns this last statement on its head as it is incompatible with both the 64 and Vic-20 and even the vintage Pet which could all use the same cassette drives. Unlike most other ranges of computer Commodore has always used dedicated cassette units called datasettes. Over the years the design may have changed but the interface remained the same. Now Commodore has used a different socket, a kind of miniature Din socket, which, no doubt, requires a different datasette.

Until recently, Commodore expected to sell datasettes to the majority of their U.K. computer customers, whereas in the U.S.A. far more users opted for the disc drives as a software loading and saving medium. But now U.K. owners are beginning to find the extra cash for a disc unit and the disc unit user base is growing rapidly. Commodore probably expects that purchasers of the two new machines will tend to buy discs rather than cassette units.

One unnecessary change has been the joystick ports. Previous Commodore micros used the same ports as the Atari range of computers. This may seem odd but it meant that users could buy any old joystick off the shelf. As nearly all joysticks on sale are Atari style this was an early example of the kind of standardising that doesn’t happen often enough. I find this change worrying because the old Commodore joysticks were certainly a weakness in the Commodore range. I found Commodore joysticks would sometimes disintegrate after only a few weeks use.

A computer’s keyboard is very important, especially if the user hopes to do something other than just play arcade games with a machine. Keyboards have always been a strong point of Commodore’s micros and here there is no exception.

Same keyboard as 64

Ostensibly, the 16 has the same keyboard as the 64. Each of the physical keys on the 64 is present here, exactly the same number of keys, identical positions and shapes. But the keys do not perform similar functions. Gone are the twin cursor keys that required shifting to move up or back across the screen. In their place are four keys each of which takes you in a different compass direction.

Gone also is the Restore key which came in very handy for returning sanity to a mispro-grammed Commodore 64. Its function is more or less replaced by a reset key on the 16’s right flank but its operation is different. Using the rest key will lose your program but not any high-resolution pictures.

Certain other keys have been moved about but the most obvious change is that function key seven is now labelled Help. This will almost certainly be made use of from within software packages but can also be useful when playing adventure games. On the whole I found this keyboard layout more difficult to use than that on the 64 but it may just be because of familiarity with the older version. However, I did find the cursor keys caused problems, as did the equals key which is tucked away in the bottom-right corner.

Scientists will be interested to learn that the Pi character is not merely a graphic. It actually contains the value of the famous transcendental number to computer accuracy.

When switched on the computer came up with the default colour set of blue border, white paper and black ink or foreground colour. I found this much easier to read than the blue on blue colours of the Commodore 64. However, it isn’t as good as the Spectrum because peculiar lines appear on the screen. These correspond to the character positions and no amount of messing with the controls would get rid of them. I tried a second TV and they were still there.

These lines disappeared when I changed the paper colour to black and the ink colour to white or, indeed, any other bright colour. As on the 64, there are 40 columns across the width of the screen, and 25 rows. The screen characters are all nice and chunky so there is hardly any risk of eyestrain especially as the picture was rock solid steady, unlike most 64s.

On power up, and whenever the reset button is used, a message is printed telling the user that he or she is using Commodore Basic V3.5 and that there are 12,277 bytes free. This seems a large amount of free memory in a computer that only as 16K of RAM but, unlike the 64, the Basic does not overlap the RAM but resides in ROM. Located somewhere around the 32K mark - hex 8000 - the Basic V3.5 is certainly something else and transforms what might have been a fairly dull micro into a rather exciting one.

Commodore Basic V3.5 is loosely based on the versions of Basic used on the last of the Commodore Pets. It has all the commands present on the Commodore 64, which had a notoriously poor Basic, together with certain other commands which will make graphics programmers very happy indeed. If anything, Basic V3.5 is more like MSX Basic and is by far the best Basic yet implemented by Commodore.

Good machine-code monitor

Not only is there a very powerful version of Basic but also a very good machine-code monitor. Unlike the BBC, you cannot mix lines of assembler with Basic; however creating your own machine-code subroutines and adding them to your Basic programs is simplicity itself. You can even disassemble the ROM. The computer will automatically go into monitor mode whenever an error is encountered in a machine-code program but it can also be entered from Basic by using the Monitor command.

The monitor allows you to enter hex codes directly and examine disassembled listings of the ROM and RAM. It also allows you to to load and save machine code to and from tape; it even allows you to examine the 6502 registers. This is a very welcome addition to any computer but isn’t as necessary as it would be on the 64 as the Basic is so good. On the 64, most users have no option but to use machine code, here it is a luxury.

Certain Basic commands are available from the function keys though I found that I hardly ever used them, preferring to type them out the old fashioned way. The only command I did use in this way, was Graphic which selects the graphic mode for the screen. There are five such modes - 0 is the default text mode,1 is very high resolution, 2 is the same but with a text window at the bottom, 3 and 4 are a lower resolution version of one and two.

Circles drawn quickly

Graphics mode zero, the text mode, makes no claims on the available RAM. It can be used by the Print command, or by Poking the area of memory mapped on to the text screen. As with the 64, a separate area of memory holds the colour map. The other graphics modes takes huge amounts of memory leaving only 2K or so free to Basic. This makes the machine similar in capacity to the Vic-20 though the graphics are better. I expect most users will purchase add-on memory cartridges as soon as their budgets allow.

Circles can be drawn very quickly using the Circle command, something that would take over a minute using Basic on the 64. There have to be three parameters after the circle command, specifying colour, and x and y screen positions. But a number of optional parameters can be added allowing the programmer to specify the radius, eccentricity, start and stop positions - in degrees - allowing arcs to be drawn and, finally, the amount that the whole circle or ellipse should be rotated from the horizontal. A further para-meter allows you to convert your circle into a polygon.

Other graphics commands include: Box which is similar to Circle; Locate which positions the graphics cursor; Draw which plots a point and Scrnclr which clears the current graphics screen. Also available to graphics programmers are: Scale, Color, GShape, SShape, and Paint which is one of the neatest “fill” commands I’ve seen on any computer.

A lot of the commands available on the 16 will bring a smile to the face of any programmer. Trap, Tron, Troff and Errs make writing and debugging programs much easier. Hexs and Dec convert numbers for working in machine code to hexadecimal and decimal respectively. The automatic line numbering can be switched on using Auto. Teachers and other fans of structured programming can take refuge in the Do-Loop construction as well as While and Until. There is also a full complement of disc commands which were sadly lacking on the 64.

The Commodore 16 is fully compatible with the MPS-801 printer - the program listing used in this article was produced using it. It also works perfectly well with the 1541 disc unit. Though Commodore 64 software will load, it will only run on the 16 if it contains no Peeks or Pokes.

Price fixed at £140

The price of the Commodore 16 has been fixed at £140 - that includes the cassette drive, a cassette introduction to Basic and some games. This pits it directly against the Sinclair Spectrum and the now discounted Atari 600XL. In this part of the market one feature counts more than anything else - software - and how much decent software can be produced to go with an unexpanded machine is anyone’s guess. I would not expect it to be great and what does arrive will only be of a moderate standard if the Vic-20 is anything to go by.

However, the cartridge software could be another story as could software for the expanded system which will be compatible with the excellent Commodore Plus 4. I expect there to be a great deal of software for the Plus 4 which should run on the 16.

The Basic is better than that of any other machine in its price range and thus it is an excellent beginner’s micro. Concerned parents will flock to buy the machine to ensure their kids don’t lose out on the micro boom. There are no great breakthroughs with this machine so the fainthearted can buy a 16 with the safe knowledge that it is tried and tested technology that they are getting. It also comes with a complete set of available add-ons that work with the 64.


Listing 1.

The Commodore 16 has a good range of graphics commands

200 COLOR 1,11
210 COLOR 0,1
220 COLOR 2,9
250 FOR X=1TO180 STEP 20
300 CIRCLE 1,80,100,60,10,0,0,X
350 NEXT X
360 CIRCLE 1,80,100,70,80
400 C=INT(RND(0)*4)
450 X=INT(RND(0)*100)-50
500 Y=INT(RND(0)*2*SQR(2500-(X*X)))+100-SQR(2500-(X*X))      
510 X=X+80
550 PRINT C,X,Y,1
600 FOR 1=1TO3
700 GOSUB 1000
710 FOR J=1TO0 STEP-1
720 IF C(I)=C(J) THEN GOSUB 1000
740 COLOR I,C(I)
750 NEXT I
800 GETA$:IF R$=""THEN GOTO 400
950 STOP
1000 C(I)=RND(0)*15+1:RETURN