Sponsored By

Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.

How the BASIC programming language was a stepping stone in shaping my background as a programmer and wanna-be video game maker back in the early 90's.

Especially as a kid in Morocco, and how it all relates to where I am as an Indie some 20 years late

khalil arafan, Blogger

May 1, 2014

11 Min Read

Hello World ! 

Before anything else : please forgive my English language skills.

It is not my native language, I am way more fluent in Arabic and French, so I hope I can manage to convey all the ideas I want to express without too much confusion.

Also, as it is hopefully my first contribution ever to any industry related blog/first paper ever written even for myself where I synthesize my thoughts in some form about the field I love since I first played NES games more than 20 years ago now.

And being on Gamasutra, that is a lot to handle for a first post, but here it goes, hopefully it will be relevant somehow as my point of view as a Moroccan aspiring indie dev is adding at least some diversity of some sort I guess ?

The motivation for writing this, was always here, as I knew that at some point or another I will start to contribute to the awesome community that I have been learning from all those years, since I first discovered it in the early 2000's if I remember correctly, back in those computer science student years in France.

I always waited for the moment where I would have something relevant to say, as in finishing at least my first game before telling the facts behind it in a proper postmortem, but It couldn't be helped. The opportunity to share my love for the BASIC language since I saw the call for blogs to celebrate the 50th anniversary, couldn't be passed. As that programming language and the machine I learned it on shaped me forever.

sinclair zx spectrum

The beast.

(and I will try to only focus on that as much as possible, even if it is very hard to separate from the other aspects of the whole journey so far..)

I was born in 1980. In Morocco. I grew up in a small town, with a history of phosphates mining all over it : the giant plants on the way to school, the dust induced allergies I have for life but mostly an isolation sense that is somehow one of the most peaceful on Earth : the summer breeze sound in Eucalyptus trees is also an eternal part of me.

The only problem for the kid-me being in that place, at that time, once I saw an Atari plugged to a TV for the first time at a friend's house is that all of a sudden I needed badly all I could get my hands on in terms of games or console or computers. Or magazines related to it for that matter.

There were many specific phases there related to a platform or another ( first arcades, first game&watch handhelds : zelda, believe it or not :) mario vs donkey kong in a rollable-two-circles-pads fitting in the case : the local multiplayer flavor of that era, also owned by a friend, or other exotic ancestors of the virtual boy with a green fluo display with one racing game endlessly running, you name it..), but the focus of this article is on the machine that I could finally call mine, after my father ( Geology Engineer ) decided that he had enough of me begging for something I could play on at home ( I remember my selling point quite clearly : no more coins for arcades and neighbors home invasions to play, I could INFINITELY replay games at home, I had to sell it mostly to my mother, as she understood that obsession even less than my father..)

Being the old school scientist that he is, he finally offered me my first computer : I could not only play games, but also MAKE them by learning how to program.

My whole world changed since with that black rectangle with a rainbow logo and tons of grey buttons alongside red mystical scriptures in a foreign language, accompannied with a set of cables, and a cassette player : the Sinclair ZX Spectrum.

To be completely honest, it wasn't that mysterious, as I think I was already aware of it being the machine that the legendary David Perry himself started with. Or almost : the ZX81, a previous iteration of that same family line. I don't remember what exactly happened when, but I was having the privilege of a father travelling overseas for work,( just to be clear : what may come across as an underprivilege situation compared to a kid in the west ( and it was definitely ), was quite a privileged situation for a Moroccan kid at the same time, being from a middle class family, we weren't many with that chance of having some kind of console or computer at home, privilege is always relative.. ) so I could have some French magazines about videogames once in a while ( Player One and Nintendo Player beloved years..). It was already the SNES era in the western world at this point and I already had a NES at home If I am not remembering wrong  ( all of it is mostly a 20+ years of constant passion about all of it so figuring excatly what came first at this stage might be a little fuzzy..), but still : I remember vividly my 'frustration' of the need to be very good at maths to be a programmer in the video games industry, as I wasn't the most good at it (in fact I was, just not the first of my class :) ) as explained in an interview with one of my very first personal heroes in the industry : the first games he made on the ZX81, leading to him being in bed sleeping for a week after Aladdin release on the Sega Genesis and moving on to Shiny Entertainment back in time.

So there I was : a surprise from my dad that meant the world to me, and jumped right in the instructions book to learn the basics of BASIC on my own, on top of the language barrier : I was not an English speaker then but luckily the manual came in French ( in fact, I started learning English because I needed to finish Zelda on NES, but that is a whole other story that I will save for another post, Hint : meet the old man at the grave. ;) English was not teached in public schools in Morocco before high school as a third language.  )

zx spectrum+ user manual in French, with a game cassette that survived

The user maual in French alongside the one game that survived.

I learned how to put numbers before each program instruction, about variables, jumping points with the infamous GOTO instruction. The elegance of the design was the fact that pre recorded instructions shortcuts were all over the tiny keyboard made of soft rubber keys so after a while the ammount of typing was way less of an overhead, and the cassette player was there to record/load the programs.

the game booklet inside : starseed pilgrim ancestor ?

controls tutorial

The instructions manual and the story inside the cassette booklet : an early starseed pilgrim ? 

The day I managed to 'animate' a spider drawn in a black and white 8x8 grid ( special machine characters that definitely looked like a space invader) from one frame to another, on my own, fully understanding how it works armed with only mid-school math knowledge,  from what information I could find only on the manual : Achievement Unlocked !

machine characters page from the user manual, the space invader grid : 0 for absent, 1 for displayed

The grid based machine characters : 0 for no pixel, 1 for a displayed pixel.

All thanks to those pages of the manual I was extremely fascinated by, all listed programs being patiently typed in, observing the same result as in the pictures in the book, and messing around with variations to understand how it was all achieved : 

the program listing the spider animation descending along the thread then walking

The program making the spider descend along the thread then walk when reached the bottom of the screen

( kids, really, you don't even begin to imagine the luck of being able to start today with all the knowledge available out there..I was in a desert :p )

whole virtual worlds out there :)

Virtual worlds.

Also, I am not, by any measure, a good programmer today. My learning was long, slow, messy, and still. But as long as the learning never stops, and progress is made, however small it is, it is all that matters. I learned that the hard way.

What happened shortly after those first little victories, is that one night a cousin was not seeing the magic behind when I tried to explain what could be done with it, despite not being a console for games ( he was mocking with that fact, games were indeed less pretty than a SNES, sure, but not the point..), and messed with the PEEK and POKE for the first time the wrong way : the screen froze, and the beeping sound of the internal sound chip was not reassuring ( BEEP instruction is one I loved a lot ), and the cousin laughing the more I panicked.

Turns out, I did something very wrong there : the machine was burnt.

And my first programmer depression ever happened. I was super sad, upset at the cousin, myself, the world. 

And most of all : feeling like I disappointed the high hopes and generosity of my father who did all he could to support my early crazy dreams, especially that he was a salary man not making that much to afford another machine. Or even the one that just died to begin with.

The first try back at it was a local association for teenagers who wanted to learn artistic activities : painting, music..and programming.

There was no machine, only some books, a teacher and a blackboard. My first algorithmic exercises and executing programs inside your head.

My other encounter with the language was on x86 first PCs at my dad's office, where I had the permission to play some battle chess ( those glorious pixel art vintage animations on the chess board .. ) when he was not using it on the week ends when he had to work sometimes, and also write my first QBASIC program : a mini questionaire based on simple ifs and thens greeting the user depending on the entered name, and explaining to my dad why it did greet him with an output different from all the other names one could enter.

His smile at me at that moment is one of my fondest memories. 

Him being also the awesome and generous dad he is seeing his son not giving up on his passion, he bought a second hand ZX Spectrum ( the ZX SPECTRUM+ : more memory, more solid :) ) for me from a colleague who's son was not that much into computers a little more than a year later.

zx spectrum+ : more memory, solid keyboard

insides of the dead zx

The ZX Spectrum+ : more memory, a solid keyboard. And the dead Zx Spectrum. RIP. :'(

I was in high school at this stage and the Pentium100 was around the corner : the first family computer purchased in 1996 or so. On which it was my last encounter with the BASIC language, as I had more math background, I could manage to play and modify the game that came along with Microsoft DOS BASIC flavor : QBASIC. The game was called : Gorillas. And it naturally featured gorillas on top of buildings banana-bombing each other. You enter the angle and velocity of the shot, and you watch as it goes to the AI opponent or hit a building piece. ( real time terrain destruction, pretty awesome physics :) ). Here is a short gameplay footage of it I found on youtube : 

http://www.youtube.com/watch?v=sZsKbC_-vvw

A very early WORMS grenade throw parabolic mechanic..

I think Rami Ismail started there too, from what I heard him say in some interviews :)

Then it was DOOM and diablo era for me as a player ( Holy cow : 3D ! ), and the C language as I went abroad after high school a couple years after that to pursue the dream in France.

So that was my love letter to that language and that machine, as in my mind they were one and the same inseparable entity somehow. 

One that started a fire still burning vivdly since.

Especially when you think of the pocket sized processing horse power of the device that took its ancestors pictures just about now :)

Read more about:

Featured Blogs
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like