The digital beginning

2009-10-25 at 19:58 | Posted in Computer path | Leave a comment
Tags: , , , , ,

When I was 6 or 7 years old something happened that changed my life forever. I was alone at the lunch room of my house watching TV and a brief documentary about computers was broadcasted. It explained how binary numbers worked and barely anything more, but I knew instantly that was something I wanted to know better. I took notes on a small notebook and for days I fantasized about what a computer could do and how in the world could be programmed. I didn’t know then but eventually I’ll be able to have my own computer!. Fast forward a couple of years and technology was already giving me the opportunity to realize my dream. The campaign for ‘Buy a computer for the family’ began and approximately 1 year later I got an Amstrad CPC 464 with a Z80 at 4Mhz and 64 Kbytes of memory, it used regular music tapes as data storage and came with a fairly good handful of games. It also had a very safe green monitor. This computer is still working perfectly and from time to time I take it out and play some old games loaded from music tapes with my wife María. My first program wrote my name indefinitely on the screen. With no training available I began teaching myself reading books and it was very hard. With time the ways of the bits became, little by little, unfolded before my eyes and I knew it was a life long attraction. In  those good old times loading a game was a game in itself, it could last about 10 minutes and at any moment a read error could arise forcing you to readjust the header height and restart from the very beginning the game loading. At first I programmed in Basic then I learnt Z80 Assembler with a very good book from Rodnay Zacks. I lacked an assembler so I programmed directly in hexadecimal machine code, of course I was very relieved when an assembler finally turn my way. As time passed I began to have more fun cracking the games than playing them, some of the protections where impressive and smart, one on them lasted until the very end but got finally broken. Simplifying it was a piece of code that started with a loop that unencrypted all the rest of the code (that was apparently garbage until that moment). That action made appear a new loop just consecutive to the first and when execution got there, a new loop was reveled. Each loop was different, all the loops used the R register that changed value upon instruction execution, so you couldn’t just trace over the loops because the execution of the tracer instructions changed R value and corrupted everything. It did some more dirty tricks, a really beautiful protection. Some of my favourite games where Elite, Manic Miner, Nebulus and Ghost & Goblins. I had much fun coding a 3D editor, some games, 3D fractal generators, 2D sprite editors, some artificial intelligence routines, the classic Game of Life, a Basic totally translated to Spanish and many more things.

This was an eye opener for me, I learnt what a height field was, and using the second swapping RAM bank this real-time movie was possible on my old 8 bit computer:

Having more fun with the ‘big’ second bank of memory of 64 K bytes:

The Amstrad CPC had a video chip that could be persuaded to do a kind of thing similar to scroll, the good thing is that it was an instant operation. In this program that feature is used in combination with very simple trigonometry to animate a kind of spiralling cross:


My father took me to a science museum and I liked a pair of rounded square gears so spent some time deducing the right proportions between radius, sides and separation and then tested it on the 8 bit computer:

Leave a Comment »

RSS feed for comments on this post. TrackBack URI

Leave a Reply

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

WordPress.com Logo

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

Facebook photo

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

Connecting to %s

Blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: