June 26, 2022

Some reasons why the Commodore 64 has felt out of fashion

 

In the 1980s the Commodore 64 was the most sold home computer. It wasn't sold 1 million times or 5 million times but more than 15 million machines were produced by the Commodore company. The C64 was an affordable computer, and many games were created first for this machine. It has revolutionized a decade and even today, the C64 stands for the personal computer in general.
To get a better understanding why the machine has felt out of fashion we have to describe the context in which the C64 was published. The development was driven by technically possibilities. At the beginning of the 1980, the microchip was available namely Intel based CPUs and of course the 6510 CPU from MOS technology. Also it was the first time, that low cost DRAM chips were produced in mass amount, so it was from an engineering perspective logical consequence to combine these ingredients into a single product. The C64 was a basically a combination of 64 kb RAM, a cheap 8bit CPU and external devices like printerss and floppy drives.
After the hardware was available it was from a programming perspective also a logical idea to create for this machine lots of applications and of course games. It was a self reinforcing circle. The huge amount of sold C64 made the computer interesting for games publishing houses and the huge of games, made the product interesting for more consumers to buy the hardware.
Even if the situation was amazing there were some cons available. First problem with the 6510 CPU is, that it has only a low amount of registers. This makes it hard to program the CPU with high level programming languages especially C. The only programming language which runs fast on the 8bit CPU is Assembly language and Forth. The problem with Assembly language is, that it is hard to write longer programs which exceed 50 kb and more. Larger applications which are written in the C language have a size of 500 kb and more. The C64 CPU and the small amount of RAM prevents such software can be executed.
Another problem with the device was, that it was controlled by a single company. Commodore has invented build the CPU, the specification, the ROM chips and it was impossible for third person companies to built their own C64 clone.
And perhaps this explain why the IBM PC has become a success. First thing was, that third party companies were allowed to create the hardware and secondly, the CPU wasn't fixed but different sort of CPU with many registers were used in these machines. This combination allows C programmers to create more complex applications which has resulted intodays bloatware software which can be created easily from scratch.
Hardware oriented programming
For today's programmers it is some sort of mystery how exactly software was created for the Commodore 64. First problem was that the amount of RAM was low, and secondly the programmers in the 1980s were thinking differently from today's software engineers. The perspective of the 1980s can be summarized with a CPU oriented approach. The idea was, that it is hard to built and maintain the hardware of a computer. The most important part is the CPU, the RAM chip and the cycles which are scheduled on the main board. That means in each second the C64 was running with 1 million cycles and during each cycle the next assembly instruction is executed.
The only possible cause of errors – at least in the understanding of the 1980s engineers – was that something with the hardware is wrong. For example, that one of the transistors in the CPU has a malfunction or that something with the electric current on the mainboard is wrong. The consequence is that the engineer has to open the machine, and search for the error with a measurement instrument. In contrast, software was seen as not important or in the worst case, the software was seen as an error. For example bad written program will slow down the cpu or will waste the RAM of the computer.
The main purpose of the 1980s programmers on the Commodore 64 was to write efficient software in a sense that it will occupy only little amount of RAM and use a small amount of assembly instructions. The interesting situation is, that this hardware oriented habit isn't the only one which is available but from today's perspective it is something which has slowed down the development.
Perhaps it makes sense to describe the opposite perspective towards the same problem. In a software oriented perspective, the computer hardware is perceived as something which is there and which has unlimited amount of resources. For example a computer has 3 million pixels on the screen, and 2 GB of RAM and now the question is how to program the computer so that it will do something useful. A typical challenge is to program an object oriented programming language, a graphical user interface or to create a large database applications. What the post-C64 programmers doesn't like to do is to understand the hardware. They simply doesn't care about the CPU nor the transistors in the CPU.
The interesting situation is, that both perspective are working the opposite. It is possible to focus either on the hardware or on the software but never fulfill both requirements together. In the 1980s the focus was only on the hardware because at this time computer hardware was the bottleneck. Software defined requirements for example a graphical user interface with lots of colors were ignored in this area. It was described as not needed and in the worst case, a GUI was seen as something which will slowdown the computer.