commodore_128A Commodore 128 computer

I’m taking a break from the series “Drawing The Line”, which will continue for a little while at least, but posts about other subjects will also be made. I plan to try and draw lines from ANY points on the screen to ANY other points on the screen, but there’s no way of knowing how long this may take me to work out.

Now it’s time for a post about the Commodore 128 or C128 for short, especially as I’ve recently bought one! In this article I always type MONITOR in capitals, because it’s a Commodore BASIC V7 command. Some other words also appear in capitals for emphasis.

The Commodore 128, as well as almost every other computer of the time has graphics commands which can draw quite complicated pictures. Of course, you could draw graphics in a graphics editor or paint program, but first of all you had to buy one of these programs, and secondly, various people didn’t want to just draw graphics like this, but to calculate where the graphics would appear, as well as to produce animation. Each graphics screen on the Commodore 64 would normally take up 8K, although it could be compressed slightly, so depending on how much of the 64K could actually be used, you wouldn’t be able to produce much animation like that. Level 9 graphic adventures had the graphics drawn as the player entered each location. This seemed to be the same on all 8 bit computers they were released for. There was no way all those graphics could have fitted into amounts of RAM such as 48K or even 64K otherwise.

Unfortunately, there was a lot of brainwashing going on at the time. This brainwashing said something like “Computers?! You don’t want or need to program them! All you should do is use them to play and copy games!” I don’t know where this brainwashing came from. Atari started off with arcade machines and games consoles, but were keen to bring out computers and encouraged people to PROGRAM them. As I mentioned some time ago, there was INPUT magazine. This was a publication made up of 52 issues, which built up into a programming course. Various programs in this course weren’t listed for the Commodore 64, or only in versions under Simons’ BASIC, which cost £50. I think this was more money than I ever had at any one time in 1984. In the near future, I hope to post versions of some of these programs translated into Commodore BASIC V7.

I posted previously that no one should have to learn Assembly Language to program a computer. On the Commodore 128 you don’t HAVE to learn Assembly Language to program it, but the built in MONITOR, which includes an Assembler and Disassembler is there to offer everyone an introduction to 6502/6510/8502 Assembly Language. All three variations on this are basically the same type of Assembly Language, although the 6510 may have a few more instructions than the 6502 and the 8502 may have a few more instructions than the 6510.

With the Commodore 128, here is a machine that deals with everything lacking in the Commodore 64. To sum up, it has Commodore BASIC V7, instead of Commodore BASIC V2. This interpreter, which is 27K long instead of just 9K, includes lots of commands for colour, graphics, sound, and structured programming! As if that wasn’t enough, Commodore even included a built in MONITOR (4K?) which allows people to input programs in 6502/6510/8502 Assembly Language!! This facility had already been available on all but the earliest PET computers, but wasn’t included with the Commodore 64 or the earlier VIC-20. This makes Jack Tramiel guilty as Hell on TWO counts! Not only did the Commodore 64 have no BASIC commands for colour, graphics, or sound, BUT no Machine Code MONITOR to fall back on either! I’m surprised he didn’t get the electric chair or a lethal injection for the number of lives this has affected. Murderers often only kill one person, though, so fewer people are affected than have been by the lack of a reasonable BASIC and MONITOR on the Commodore 64. I recently found out that the reason Commodore disk drives are so slow is for the simple reason that they aren’t true disk drives, but serial devices! That makes a third crime he’s committed. If these acts were all legally recognised as crimes, then that means he could’ve got LIFE imprisonment at least. Bill Herd was the hero who led the engineering team behind the C128, continuing from his earlier success on the Commodore 16 and Plus 4, but bad marketing techniques by Commodore turned the C16 and C Plus 4 into failures, while the C128 was only a moderate success. Commodore marketing also led to the downfall of the Amiga.

The Commodore 128 isn’t all that different from the Commodore 64, it’s the built in software or firmware that makes it different, like with the android “brothers” Data and Lore in Star Trek: The Next Generation , as well as KITT and KARR in the classic series of Knight Rider . What these examples make clear is that two devices can use similar, compatible hardware, but be very different due to the software or firmware they contain. The Commodore 64 is like Lore and KARR, being the flawed or evil prototype. However, the Commodore 128 BASIC V7 and built in MONITOR make its Commodore 64 compatible hardware of VIC-II and SID chips accessible and easy to program. It does have at least 128K (upgradeable to 512K or even 1Mb), as well as the higher resolution 80 column VDC video chip approaching 16 bit graphics quality, but unless Machine Code programs use the extra RAM or the VDC, then they should run on the C64 as well. I’ve recently read that when programming in Assembly Language on the C128, most things are the same as on the C64. I’ve even managed to type some Assembly Language programs into the C128 MONITOR, then SAVE them to cassette and LOAD them in C64 mode. They usually run, but the reason any of them don’t run in C64 mode may be to do with what address they’re assembled at. You must also end your programs with RTS (Return To Subroutine) instead of BRK (BReaK) if you want to call them from BASIC, otherwise they won’t work in BASIC V2 or in C128 mode unless run from the MONITOR or an Assembler. The whole experience is quite schizophrenic, with me often thinking what computer or what kind of computer it is. All this and I haven’t even tried the CP/M side of it yet!


I think Jack Tramiel deserved a good PEEK and POKE AND 32 OR 8! People often read or heard the phrase “You really need to learn Machine Code!”, and software houses bragging about their programs being written in 100% Machine Code, but this usually actually meant Assembly Language. People’s usual usual response to being told they had to learn Machine Code was something like a nod, the response “Right” and a false smile. I was thinking something like “OMG, how could I ever do that and how long would it take?!” You could write a program in Assembly Language, then look up all the hexadecimal numbers which represented the opcodes, and write them, as well as your data, down as Machine Code. This is called “assembling by hand”, but is very tedious. The decision about whether or not to buy an Assembler, which one, for how much money, or to buy another book about BASIC V2, or another game, meant that only a small minority of C64 owners had an Assembler, but 100% of C128 owners had one at their disposal. This situation is mirrored nowadays by most people not having any programming language installed on their Windows PCs or Macs, because no programming language was supplied with them and isn’t featured in the manuals.

I think that the Commodore 128 was something like a “Super Commodore”, a bit like the concept of a “Super Spectrum”. Various Commodore users, such as members of ICPUG (Independent Commodore Products User Group) wanted a Commodore computer with a modern BASIC instead of an antique BASIC, an 80 column display and which could run the operating system CP/M. Sinclair Spectrum users also wanted a more powerful, but similar machine to the Spectrum. Sinclair made a drastic departure with their QL, based round a 68008 CPU instead of a Z80, allegedly only 8 colours instead of the Spectrum’s 16, and aimed at the business market instead of home users, but its SuperBASIC language was totally brilliant! It was in a similar vein to BBC BASIC or COMAL. Amstrad with their CPC range (called Schneider in Germany, as well as mentions in the ROM of Solavox and other names for use in various countries), Elan with their Enterprise, and MGT with their Sam Coupé, stepped in to fill this demand, but only Amstrad was successful, while the others were too little, and/or too late. The Commodore 128 was the ultimate Commodore computer, using an extended version of the earlier Super Expander 64 BASIC or Commodore BASIC 3.5 called Commodore BASIC V7, continuing with the Commodore “Kernal” ROM, the VIC-II video chip, and the SID music synthesizer chip. All Commodore 64 peripherals were supposed to be compatible with the C128.

After the Commodore 128, the company didn’t take their own design of computers any further, but built PCs, as well as buying the rights to the Amiga. This was like a “Super Atari” computer, a progression of the Atari 8 bit, both partly designed by Jay Miner, but based round the 68000 CPU instead of the older 6502, 6510, or 8502 CPU. I don’t think the 68000 family of CPUs bears any real similarity to the 6502, 6510, or 8502 CPUs. I know that they were originally based on the Motorola 6800, but then Motorola took a different path with their 6809, which is the ancestor of the 68000 series chips. IMHO the 68000 series of chips has more in common with the Z80 CPU, because the Z80 has several 8 bit registers called B, C, D, E, H, and L, which can also double up to become the 16 bit registers BC, DE, and HL, while the 68000 has a lot more registers, and can work on bytes or words (i.e. 2 bytes=1 word), but the 68000 family of CPUs can also work on long words (32 bits or 4 bytes) as well.

Commodore BASIC V7 on the C128, as it says on startup, is still based on the BASIC Commodore bought from Microsoft back in 1977. However, over the years numerous extensions were added to this by Commodore themselves, creating their own unique commands, so they didn’t have to pay Microsoft any more money until they bought a Microsoft BASIC for the Amiga in 1985 or 1986 after Jack Tramiel had left. It also seems that most or even all Commodore BASIC 3.5 programs as on the Commodore 16 and Commodore Plus 4 will RUN under Commodore BASIC V7, which makes a mockery of the Commodore statement to ICPUG that BASIC V2 was chosen as the built in Commodore 64 BASIC to cater for the large user base which still used BASIC V2. Of course, on the C128 you can only use 16 colours instead of about 121 (COLOR is followed by 3 parameters in BASIC 3.5 instead of 2 in BASIC 7), and any sound effects or music in Commodore BASIC 3.5 may have to be rewritten. Any claims of generating more than 16 colours are probably due to stipple effects.

Commodore BASIC V7 was the culmination of a series of upgrades to Commodore BASIC V2, which had begun with the VIC Super Expander cartridge, continued with the Super Expander 64 cartridge, and a further upgrade was even built in to the Commodore 16 and Commodore Plus 4 computers called Commodore BASIC 3.5. This doesn’t use the same commands as Simons’ BASIC, which is quite different. Unfortunately, the Commodore 64 still carried on being sold with only Commodore BASIC V2 on board for its roughly 12 year period in production, which as I said previously, ENDED 17 years after Jack Tramiel originally bought Microsoft BASIC for the 6502 processor! Sinclair, who were forced out of their North American joint venture with Timex by Jack Tramiel’s price war, upgraded the Spectrum ROM on their 128K models, by dropping their quirky BASIC keyword entry system with 128K BASIC, while retaining it in 48K BASIC, as well as a simple loader and 128K BASIC support for a new sound chip. Some Commodore 64 computers and/or disk drives were later bundled with the software GEOS to try and make up for Commodore BASIC V2. GEOS is designed to look and feel quite like the early Apple MacIntosh OS, but this seems to have been allowed on the C64 and C128, although Apple sued Digital Research over their GEM software for PCs, forcing them to change its look and feel, but this didn’t affect the continued use of the pre court case version of GEM on the Atari ST, which they didn’t feel was a threat to their mainly business market. Amazingly enough, I’ve just found out that GEOS switched out (i.e. turned off) the Commodore 64 BASIC ROM, as well as the Kernal ROM. This means it was almost like turning it into a totally different computer, or fixing it! Of course, it all depends on the price of disk drives in those days, possibly bundled with the C64, whether or not this was an option for most people. I may write some more about GEOS after reading up on it. The first disk drive I owned came built in to my Amstrad CPC664, which made disk drives cheaper and more accessible, but the Commodore 64 disk drives cost about the same as or more than the Commodore 64 itself. I’ve recently searched through early issues of Your 64 magazine to check up on this and found that the cheapest 1541 disk drive advertised in 1984 was £195.95. I haven’t found anyone who was selling them cheaper in the magazines Commodore Horizons, or Your Commodore either. I remember that the Commodore 64 was usually selling at the recommended retail price of £199. I haven’t got any exchange rates for 1984, so I don’t know what this price was in any other currency, but I have found ads in 1984 issues of the US magazine Compute!, offering the Commodore 64 itself for $199. Alternatively, you could buy a nice Acorn Electron with advanced BBC BASIC with its inline Assembler for the same price as the Commodore 64, of £199.

Here’s a list of just some of the amazing Commodore BASIC V7 commands which the Commodore 128 had built in to avoid C64 style stress, high blood pressure, and nervous breakdowns. Some of these commands had already been supplied with the Commodore 16 and Commodore Plus 4, though.

BOX [colour source],X1 Y1,[X2,Y2], [angle],[paint]

CIRCLE [colour source],X, Y,Xradius,Yradius,[start angle[,[end angle],rotation, increment (can draw circles, elipses, octagons, diamonds, or triangles!)

COLLISION type, line number (checks for SPRITE collisions)

COLOR source, colour

DRAW colour source,x1, y1 TO x2, y2

ENVELOPE number, attack, decay, sustain, release, waveform, pulse width

GRAPHIC screen mode, clear or not, split screen option

HELP (display program line and section containing error)

HEX$(number) – using this command preceded by PRINT converts decimal memory locations into hexadecimal, as used in Assemblers!

KEY function key number, string

MOVSPR number, X, Y (positions or moves sprite)

PAINT , X, Y, [mode]

PLAY “musical string”

SCALE on or off, Xmax, Ymax (rescales graphics commands output, reducing the size of any graphics drawn in size, by specifying maximum screen cartesian coordinates, which are larger than the default coordinates. This command could simulate the BBC or Acorn Electron screen coordinates, or produce simple resizing effects, like when I was drooling over a Sinclair QL rescaling concentric circles at the computer club)

SOUND voice, frequency, duration, [step direction],[minimum frequency],[step size],[waveform],[pulse width]

SPRDEF (calls up built in sprite designer)

SPRITE number, on=1 off=0

TEMPO number (for music)

The command PLAY makes playing musical notes quite easy. I posted some time ago that I found it impossible to play more than one note at a time using the crappy Commodore BASIC V2 on the C64. Here’s how to play a chord in Commodore BASIC V7 –

PLAY “V1 C V2 E V3 G”

You can easily put this into a program to play a sequence of chords. Here’s how.

10 PLAY “V1 C V2 E V3 G”
20 PLAY “V1 D V2 $G V3 A”
30 PLAY “V1 C V2 E V3 G”
40 SLEEP 2
50 GOTO 10

Try doing THAT in Commodore BASIC V2! I’m looking forward to it, TMR.

Commodore, as well as various other people, wrote manuals and books about the C128 and the facilities it had built in or came with it, such as Commodore BASIC V7 and its MONITOR, because everyone who bought a C128 had those facilities. In comparison, not much was ever written about the early Super Expander upgrades to Commodore BASIC V2, not much was written about any later version of Commodore BASIC until the Commodore 16 and Commodore Plus 4 came out, because they weren’t supplied with the computers and not that many people realised they needed them. I remember reading instructions in the Commodore 64 Programmer’s Reference Guide about using the 64MON cartridge, wondering how much it cost and what alternatives there were.

As for me actually doing any Machine Code programming on the Commodore 64, it was limited to reading the Machine Code series in Your 64 magazine, and typing in various listings from a few magazines, some of which didn’t even work. Although Assembly language on any particular computer is standard, each Assembler has its own commands and directives, so that makes it more difficult to explain how to program in Assembly Language, unless everyone has access to the same Assembler, such as one built in to or supplied with the computer.

Using the Commodore 128 MONITOR recently, I soon managed to type in and modify one 6502 Assembly Language listing and then even worked out how to reproduce the game loader screen effect of cycling through various colours very fast, creating multicolour ripples. I’ve also managed to learn how to stay in the monitor and run programs from inside it, by using BRK, instead of using RTS and having to return to BASIC and run them. In spite of this, the MONITOR is limited in that it doesn’t use labels. By this I mean text such as LOOP: followed by an instruction later such as JMP LOOP, meaning jump to the address labelled as LOOP. Instead of this you’d have to type JMP $1802 for example if your loop which you wanted to jump back to was at address $1802. I think the MONITOR requires having to look up or remember memory locations, similar to using Commodore BASIC V2 POKEs, but at least the addresses are in hexadecimal with 4 digits including the letters A-F, which I think is easier than 5 digit decimal numbers. It was quite easy for me to generate a game loader type screen by using the memory locations 53280 (border colour) and 53281 (screen background colour), then I got a lot of satisfaction in “taking over” the computer, sometimes disabling the RUN STOP/RESTORE keys’ effect, making it lock up, sometimes causing a RESET, and often having to press the RESET button myself. I soon found out how to call $FFE1 to check for the RUN STOP key, though. Each time the C128 locked up or crashed, my program was left intact in RAM, in spite of warnings in Commodore 128 manuals that my program would be wiped out by pressing RESET. This may be due to an upgrade ROM fitted to my Commodore 128, but I can’t be sure. I’ve also found, as suspected, that at least simple Assembly Language/Machine Code programs written for various earlier Commodore computers can also be typed in and RUN from this MONITOR because they use the same Commodore “Kernal” OS routines, such as CHROUT at $FFD2 which prints a character to the screen, although I’ve used the location $1800 to begin these programs at or the ORG, as it’s called in more sophisticated Assemblers! I’ve managed to print a vertically scrolling message “I WAS HERE!” which continues until I break out of the program by pressing RUN STOP and RESTORE! The program uses the X register to create a loop to read in the message, but I haven’t yet worked out how to create another loop to print this message a certain number of times, so the only ways out are to press RUN STOP and RESTORE or the RESET button. I can hardly believe it. It’s yet another crime by Jack Tramiel that he failed to include a MONITOR in the Commodore 64! I wonder how much money that saved him per Commodore 64 sold?! The BBC Micro and Acorn Electron even had an Assembler built in to their BBC BASIC, which allowed programmers to mix lines of Assembly Language with BASIC!

I think that’s enough about the Commodore 128 for the moment. This will be continued very very soon. Look forward to that.

Posted October 25, 2013 by C64hater in Uncategorized


Subscribe to comments with RSS.

  1. Really I see near zero similarity between Motorola 68000 and Z80. 68k is very very orthogonal and very free for register use, where Z80 is very far from that as you have registers you must use for specific tasks (accumulator, counter in some complex operations…).

    About 6502 there is other way to see it: as a special RISC CPU with 256 registers -page zero memory- wich can be used as pairs for 16 bit addressing. It is an interesting point of view: you don’t think in A,XR,YR but in 256 registers, being the operations on A,XR, etc as internal micro operations.

    About Motorola 6809, IMHO the best classic 8 bit CPU (althought it arrived late and was more expensive), I think it was developed not before M68k but in parallel. I.e. 68k is not a descendent of M8609 as this is impossible as they were developed in parallel by differents teams.

    • I’m afraid that’s too technical for me and for MOST people! All I meant by my comparison is that the Z80 and 68000 have lots of registers, but the 6502/6510/8502 have very few registers.

      • As important as knowing number of registers is the possible uses for those registers. And that is the question: with a very orthogonal design, like in Motorola 68000, you can use all its 8 data registers for any use (all 8 data register are equally capable), while on other CPUs for example you can only make an addtion or some logical operations in only one or some specific registers.

        For example in 6502 and in Z80 CPUs you have an special register or pair named accumulator because some operations can only be done in that register, while on a M68000 there isn´t an accumulator, or an accumulator named register, because all those operations can be in any of the 8 data registers.

  2. I’m sorry to say this because I’m a fellow 8-bit fan but this article is extremely biased, opinionated and on occasion downright ignorant.

    Nowadays there’s no excuse not to check some basic facts about, for instance, pricing. No, the Electron was not competitive vs the C64. It was one year later to the party and could only match the price of the substantially superior C64. No contest between these two.

    Its competition was the Spectrum 48K.

    Also, Tramiel did excellently by not screwing with the Commodore 64 and its compatibility. This is why it’s the most successful system ever.

    If you wanted a better BASIC and a MONITOR this is what you did back in the day: get The Final Cartridge III. It did that and then some.

    I had both the C64 and later the C128. In retrospect the C128 is not nearly as well designed and engineered as the C64. They got a lot more wrong with it, all things considered. Still, I love the thing. And yeah the improved BASIC v7 and the MONITOR were awesome. But several design decisions are very questionable and it could have done much better. Obviously it’s a lot easier to judge in hindsight and one has to applaud their bravery.

    • I’m afraid that all I really care about is what computers were available when I went shopping for one in 1984, not how long they’d been on the market at that time. The Acorn Electron was available at the time for about the same price as the Commodore 64. The Electron had the excellent BBC BASIC with various commands for colour, graphics, and sound, but the Commodore 64 didn’t have any equivalent commands, so users were denied access to these facilities for their own programs, unless they bought Simon’s BASIC, or another extended BASIC, which meant there would be no market for their programs. BASIC type in listings from readers were published in various computer magazines at the time and BASIC programs could even be sold on cassette. The message from various places was to learn to program things in BASIC first, but “You really need to learn Machine Code”, which I was told wasn’t for beginners.

      The Electron was an excellent computer for learning BASIC programming, as well as programming in other languages available from Acornsoft. Programming is one of the main uses of a computer, not just playing games! According to , the Electron had 5 graphics display modes out of its total of 7 display modes. Some of these took up 10K, while others took 20K, out of a total 32K RAM. These are massive amounts of memory compared with the Sinclair ZX81, which had lots of games available, although they were all in black and white character graphics. There were lots of games available for the Electron. It seemed like a large percentage, or even most Electron games were by Acornsoft, but other companies, including Audiogenic, Bug Byte, English Software, Romik, and Tynesoft, certainly produced games for it. It was capable of running the kind of games which appeared on the VIC-20, which was widely quoted as being expandable only to 16K, with various games available for that amount of RAM! Unfortunately, lots of software houses only produced games for the Spectrum, and the Commodore 64, then later they added the Amstrad CPC to these two formats, but not the BBC Micro or Acorn Electron. To see the quality of some Electron games, please visit . They seem about the same quality as C64 or Spectrum games.

      There were at least THREE different versions of the Commodore 64 during its lifetime, hence the term Commodore 64C. The differences were enough to prevent the CP/M cartridge from working on all but early Commodore 64s made in 1982. The SID chip and the default screen colour RAM settings were changed. I think the “Kernal” ROM was also slightly changed.

      It says quite clearly here that even the first version of The Final Cartridge didn’t come out until mid 1985. As for The Final Cartridge III, that didn’t come out until 1987! As you should know from reading my other articles in this blog, I was sick to death of my Commodore 64 by the end of 1984, so nothing to do with the C64 which came out after that date was relevant to me. I had had enough!

      The Commodore 128 is an amazing piece of engineering, giving users 3 computers in one, including C64 compatibility. Unfortunately, it may have arrived on the market too late for Commodore, although the Amstrad CPC6128 was released at about the same time and was more of a success.

      • Very good answer.

        About Amstrad CPC: really they sold only about 3 millions (including all CPC: 464, 664 and 6128), while Commodore sold about about 4 mullions C128. So Commodore 128 was more successful than all CPC.

        PD: My 1st real computer was a C128 and I love it.

  3. I’ve just checked that those sales figures are right. What I really meant is that there was a lot of software available for the CPC6128, although I’m not sure how much of it needed over 64K RAM in order to run, like the C64 mode of the C128, although occasionally users had to run a program to disable the disk drive to free up RAM for some cassette based software. In any case, it wasn’t necessary to put the CPC6128 into a different mode to run it. There was also a lot of CP/M Plus software, supplied on 3 inch disks which required either a CPC6128, PCW, or an upgraded CPC664 with CP/M Plus to run. Of course, CP/M Plus software was also available on the Commodore 128, but on 5.25 inch disks and I don’t think it was as widely available. I got some CP/M PD software, which a PD library had specially copied onto 3 inch disks for me, but AFAIK it only required CP/M 2.2.

  4. You are wrong about Speccy colors as you think it has 16 colors (“…only 8 colours instead of the Spectrum’s 16”).

    Really Speccy has only 15 colos, not 16. Spectrum has 8 colos with 2 intensities (bright or normal), and as black is equal in bright or normal, you don´t get 16 colors but only 15.

    Even, as bright is set for entire 8×8 cell, you have more limitings colors: all cell, with its 2 colors, are brigt or normal, i.e., you can´t combine in the same cell a brigt color with a normal color. In contrast, in Commodore 64 you can have any color of 16 colors for the same 8×8 cell (of course, I think in standard bitmap mode, because this is more like the only Speccy mode).

    When I was child I hated Spectrum, but from a lot of time I love it: for me Speccy (yes I can name it in this lovely way) and 64 are the better 8 bit computers in the word. Both have its faults, but to be the best computer you must not only count hardware/machine but also the live the system have had, the software, books, magazines, how much they have been pusedh to the limits, the real incredible software (with the limiting hard), and by all that, Speccy and 64, or 64 and Speccy, are the best 8 bit computers in the world. And when I say Speccy or 64 I count 128 KB Spectrum and 128 “Commodore 64”, as the C128 is the expanded and corrected C64.

Leave a Reply to c64hater Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: