Indeed, you must wonder what a technical post is doing in a context that privileges music and literature (especially poetry). The truth is twofold: first, this is not a technical post, and second, my point of view and descriptive approach goes far beyond mere “mechanical” aspects to try both to make sense of a passion that was irresistibly fascinating and to revive, albeit in a limited way, the emotions aroused by the esoteric art of computer programming.
When it all began
Well before IBM-compatible computers, assembled by buying the components they liked best spread like wildfire. The landscape of so-called “personal computers” (i.e., machines not intended for large corporations or institutions) was dominated by a few manufacturers: Sinclair, Amstrad, Atari, Apple, and, most importantly, Commodore. While the first three had developed more or less exciting but limited computers, Apple had focused more on the corporate sector, and its prices were not affordable for most. Moreover, the developer community (i.e., the so-called software houses) Sinclair, Amstrad, and Atari boasted only a tiny number of good examples.
I mean, I knew friends who had the Sinclair ZX80 or the Amstrad CPC 464, and I remember well how much difficulty they had in getting fun video games or application programs with high (for those years) usability. Also joining the panorama of information producers was the glorious Olivetti, which, on the outskirts of Turin, began researching and producing a few personal computers with remarkable features. However, its fate was also sealed: few programmers, poor international distribution, and the adoption of infrequent standards made life hellish for many users.
I remember an elementary school friend who, after buying an Olivetti (strictly from an official dealer), learned a few programming elements but expended much more emotional energy in going almost daily to the dealer to ask if the games he ordered had arrived.
As you can imagine, the answer was almost always negative. The few cassettes (yes, the storage format was based on (audio)cassettes he owned would scan an infinite amount of time before showing some monochrome screen that crowned the effort of waiting. However, satisfaction was low, mainly because of the spotty spread of the real star of personal computing in those years.
The queen of personal computers
Commodore had brought to market models that were not cheap but extraordinarily revolutionary. The PET, Vic-20, Commodore 16, and the first undisputed king of personal computers, the Commodore 64, took no time to route the competition, relegating their products to “computers for losers”! From now on, when speaking of Commodore, I will often refer indistinctly to both the Commodore 64 and its successor to the throne, the (also one should speak in the feminine) celebrated, lavish, and successful Amiga! But for now, let’s proceed slowly.
My first computer experience was actually on a Commodore 64, with an output port to connect it to the TV (monitors were uncommon and very expensive), an external cassette recorder (called Datassette), and a two-button joystick. After turning on, one would wait a few moments, only to see a shaky (due to the noisy connection to the TV) of a two-tone blue screen appear. The Commodore 64 was alive, and its heart was beating nonstop. The reported information, moreover, appeared like magical revelations: the computer was equipped with as much as 64 KB of RAM, about 32 of which were available for use (the others, unless special techniques were used, were occupied by the embryonic BASIC-interface operating system). To give a simple ratio, a smartphone from a couple of years ago comfortably mounted 6 GB of RAM or about 6,000,000,000 bytes. The Commodore 64 mounted 64,000. Consequently, it had about 98,000 times less memory!
In search of the lost springs
Of course, we are in a world with no global networks, no cell phones, and very few computer stores that, given the investment required, were centering their stock and had very few products available. The only magazine really in step was ZZap!64 (known only as ZZap in Italy), and I remember that the only newsstand where it was available (in a town of about 40,000 people) was a cubbyhole in the historic center of town, consisting of 90 percent paper and the rest air and humans-a paradise. For reasons of privacy, I will not mention the name. However, the owner has been gone for a couple of decades), but I remember entering that print paradise with extraordinary excitement. A very narrow hallway, on the left, shelves crammed with all sorts of publications; on the right, a long counter covered with newspapers and magazines. Behind it, in a kind of impenetrable burrow, the manager, seated on his tiny throne and always ready to entertain patrons.
Given my young age and the fact that this place was not in my neighborhood, it prevented me from visiting often. I used to go there generally on Sunday afternoons (it was always open), when, with the whole family, we would visit our paternal grandparents, who lived in a huge house not far from the old town’s main square. The route alone was likened to a whirlwind of expectations, permanently riveted by the bit of money an elementary school kid might have in his pocket. The road was all uphill, but I ran relentlessly and arrived in front of the entrance, always sweating and a little panting. Then, exploration would begin. The manager did not ask for anything. We were limited to greetings. And I, for my part, had no desire at all to consume that “intercourse” in a few focused questions that would make my heart burn or sink into utter disappointment.
I explored, scrolled through magazines, flipped them, and then shyly looked at the price. I would set aside a few, then periodically reevaluate the budget and spending and reluctantly adjust. There were also many magazines at that newsstand with game tapes (often not strictly legal, as “piracy” was a widespread and, in my unquestionable opinion, fundamental practice), and I still remember, as I scrolled through the tiny lists of titles to look for something that caught my attention.
If they are roses, you will know by the thorns!
However, as many will know, the magnetic tape media of the time were highly unreliable. Copies could contain errors due to interference, and each personal recorder’s accuracy changed slightly with use. The reading head tended to misalign, and there were no methods of automatic control of what, in the jargon, was called azimuth. The result was that, after a long wait (loading times often exceeded 5-7 minutes), the screen would fill with strange signs and colors and remain frozen. In most cases, there was nothing to do but give up that game/program and skip to the next one. Since the head was fixed and the tape ran at a constant speed, the recorder carried a counter, and when a cassette contained several games, the starting point of each was usually indicated. Therefore, one had to first rewind the cassette, then reset the counter, and then advance it until it reached the indicated point (in jerks because the”Rewind” and”Fast-Forward” did not allow refined control).
The anticipation, the expectations, and the appearance of the first screens, poor with few colors and pixels as big as smartphone icons, were an emotional succession worthy of a musical composition of the complexity of a Sonata form. Believe me. I am not writing heresies or exaggerations: the process, as it unfolded, shaped psychological time into a sequence of moments, each with its characteristics, constantly oscillating between tension and relaxation, like a “rocking” between tonic and dominant in music. The appearance of a corrected screen gave the relief of a perfect cadence, while a monochrome screen, as the tape continued to run, seemed akin to a deception cadence, with the reprise of a theme rekindling the tension. Each gesture was uncertain, sometimes destined for success, but often a harbinger of the unexpected. The magic was not hidden in the almost artificial perfection of high-end smartphones nor in the “wonders” of artificial intelligence. It brooded under the ashes, hid itself, and, crucially, spoke an occult language that had to be learned.
Come estas Amiga? Sinuous as a model, hard as granite!
However, the most significant revolution came a few years later when we began to hear about a beautiful Commodore computer with the strange Spanish-sounding name “Amiga 500.” Far more prominent than the Commodore 64, it also had what is known in the trade as a numeric keypad and, more importantly, a 3.5″ floppy disk drive that replaced the much less spacious, fast, and reliable 5.25″ floppies of the Commodore 64 (subject, of course, to purchase of the external drive). The Amiga mounted an innovative processor for the time, the Motorola 68000, which operated at 16 bits (as opposed to the Commodore 64, which mounted the 8-bit 6502). It had “as much as” 512 KB of memory, expandable to 1 MB by buying a card the size of a postcard. It was also based on a very advanced architecture with dedicated coprocessors (with names that still echo in my head: Copper, Blitter, etc.) to process “high quality” 32-color graphics, make objects move quickly on the screen (the so-called sprites o bobs – the last one meant “Blitter objects” and, just to be comprehensive, “Blitter” meant “Block Image Transferrer“) and produce high-quality music.
What to say? Dream. Bar-like games (so-called “coin-op” games), supersonic speed, and a multitasking operating system (other than MS-DOS) with a graphical user interface called“Workbench,” complete with icons, drawers, and functions similar to those of modern operating systems.
But as I explained in this site’s “About Me” section, my interest had always been in programming. Even as a fourth-grader, I kept asking myself, “How do you make games?” It was a nagging question not answered in the Commodore 64 manual. BASIC (i.e., Beginner’s All-purpose Symbolic Instruction Code) was explained in broad strokes, which is practical for small management programs but inadequate for handling graphics, making characters move, etc. When I was finally able to purchase an Amiga 500, reading trade magazines, I began to hear about a language that to call esoteric is an understatement: Assembly. For the uninitiated, I can summarize the concept by saying that while BASIC was based on high-level instructions (such as “if A, then repeat B 10 times”), Assembly was the microprocessor language, with which one directly commanded the hardware, asking it to move data into memory, activate a coprocessor command (remember Copper, Blitter, etc.?) and so on.
Assembly: we understand the incomprehensible
Thanks to the Amiga Storage site, I can show a screenshot that says it all. Bizarre commands such as “MOVE.L” or “BNQ” contained the arcane mystery that concealed the art of video game programming. But like any knowledge that holds wonders, the price to be paid for initiation is sometimes prohibitive.
First of all, just mentioning the word “Assembly” (or its not-so-correct variant “Assembler”) in a computer store provoked dumbfounded stares and religious silences. Also, as you can imagine, the circulation of technical books (in Italian since I did not speak English at the time) was deficient. The advertisements on the revivals offered the only salvation. Many stores in large cities often published their price lists, and sometimes there were also programming books (the glorious Jackson publishing house is still in my heart). So, making stringent long-distance phone calls to avoid excessive costs in the bill, I began to order a few volumes.
Of course, I didn’t start with high-level languages like C (which I only learned later), but aimed straight at the most significant hurdle: Assembly of the 68000 processor). My first book, unfortunately lost during some moving, became a source of joy and sorrow. I began reading it in the summer and took it with me during a short stay at a seaside resort. I remember reading under the beach umbrella while my peers played with rackets or ran on the shoreline. While the others relaxed, I subjected myself, with masochistic eagerness, to unspeakable torment.
The book was clear, but it assumed a lot of technical knowledge I did not have and assumed that the reader already had a fair amount of experience. I continued the reading with tenacity, repeating certain concepts in my mind. As I bathed, almost annoyed by an inappropriate pleasure in my mind, I went over the most enigmatic sentences, searching for the key to the arcane mystery of data registers, address registers, direct and indirect assignments, and so on.
Of course, as soon as I had a chance, I got the necessary software, an “assembler,” and began writing my first programs. If an interpreted programming language such as Python requires only one line of code to print the fateful words“Hello World!“, the assembly requires about 20. One had to “point” to the string in memory, set up another pointer to the base of the operating system libraries, enter the number of characters to be written to the screen, and finally make a jump to a system sub-routine (or function) that would do the “dirty work” of printing the characters to the screen.
Draconian punishments on the way to initiation
Even though it was a simple and somewhat insulting operation, making mistakes was so easy. All it would take was an oversight, a misunderstanding of a concept, or any other trivial reason to unleash the wrath of the occult gods appointed to preside over access to such a noble and highly confidential art. All the bold and combative “low-level programming heroes” knew well how frustrating the punishments inflicted by the system could be. I am talking about the dreaded and always lurking“Guru Meditation.”
You are sorely mistaken if you think a gross error would be pointed out with a polite message. What was happening was much more chilling. It must first be premised that booting the system and the assembler, despite working with floppy disks and not cassette tapes, required at least a few minutes and perhaps more. After completing the procedure and being ready to write and test your own little Assembly program, your wrists generally began to shake; you closed your eyes and boldly selected the”Run” function from the assembler menu.
The system’s brutality was worthy of tribal trials to rise to the warrior rank. A trivial mistake, a harmless misdirection, turned into a demonic trial. The screen would freeze for a couple of seconds. The two LEDs above the keyboard in the upper right corner would start flashing alternately, just like a drum roll. Finally, the system would go into crash and reboot, showing, after at least twenty seconds, a black screen in which a blood-red message flashed: Guru Meditation!
After all, that terrible reality was nothing more than a harmless message informing the programmer at what memory address an error had occurred that had compromised the system’s operation. However, to call it harmless was certainly as inaccurate as possible. Not only did it leave the poor programmer with the unknown of his error, but it also required him to restart everything from the beginning, at no small expense of time. If one had no cognizance of what had triggered such ire, one stood motionless, staring at the program, scanning each line like the verses of a prayer, in the (often vain) hope of suddenly seeing the light. Unfortunately, it was much more likely to return to seeing the LED lights flashing rather than the radiant beauty of the“Hello World!” message appearing on the screen.
I do not intend to go on too long in this description. Still, it is suitable for inexperienced and younger readers to know how hard it was to gain dominion over even a fraction of this arcane knowledge. I still remember when, after scaling the first peaks, undaunted, I began to explore the deeper system programming that involved the coprocessors (to which the Amiga designers had given sweet female names, such as Paula or Denise-thanks to Wikipedia, I was able to show the innuendo chips responsible for the Amiga’s main functions). The first time I succeeded in coloring the screen entirely black and making a white dot appear in the middle, my heart throbbed like a galloping horse as my breath darted between the pacing of a sob and an infant’s cry.
Other than XBox or Playstation! I, an indomitable aspirant for the most profound initiatory knowledge, had finally arrived at the threshold of the occult temple, ready to begin a new exploration. That little white dot was a far greater gift than a state-of-the-art console, capable of moving hundreds of objects in vivid movie-like scenery. What would I do to be able to communicate all the emotion released by such a small element? That’s why, without some qualms, I quietly talk about art. Indeed, the domain of knowledge was not limited to knowing the nearest electronics store but required the most profound dedication, a seraphic patience worthy of a mature Franciscan, and, above all, the use of the time that boys of my age, generally devoted to playing soccer or riding dirt bikes in the dirt fields of the suburbs.
I think I have written far too much, but my task was not to tell a bedtime story but to convey to the reader how extraordinary this journey into the meanders of such obscure knowledge was. How hard work was required to climb even one step and, more importantly, how immense was the joy of a small success. That is why, when this is now a legacy buried by mountains of increasingly “friendly” technology, I can shout out loud that that was the art of programming! Not a pastime or a game, but a noble art, capable of opening the mind and transporting today to heaven and tomorrow to hell in an uncontrollable and addictive process whose power far exceeded that of the albeit pleasant trivial entertainment.