I began programming when I was in school, and I loved electronics and computers, however unfortunately, at that time, those subjects were not available.
The only subject that was remotely close was Physics because the syllabus contained Operational Amplifiers. Reluctantly I studied it, however, the rest of it such as Newton’s Laws, bored the Hell out of me. Even worse, I had an awful Physics teacher at Carshalton College who provided such a poor quality education that only one person out of a class of 20 ever passed!
The ZX81 came out when I was in school. I remember looking at the advertisements, thinking I would like to have one of those, however, unfortunately, it was very expensive. I did not have Daddy Warbucks to buy it for me, so I got a Saturday job washing cars for a local garage and saved every penny I had until I had enough money to buy the computer. I of course bought the kit version, which was even better.
I treated the ZX81 more like a development system because there were many interfacing projects published in the weekly electronics magazines. I had already begun to try a few, by building the circuits and writing the code for it.
In 1993, I found an old 286 PC being disposed of at a local auction called Rosan Auctions on London Road. They would often throw things away in the backyard skip if it did not sell. However, this was ideal for me, as I was able to repair it and use it. There was also a large box full of software disks for the computer. One of the disks was a C compiler!
I liked C because it was a language I had played with at King's College University. I had a liking for it and thought it was a far more elegant language compared to Pascal and Basic.
The compiler also allowed one to embed assembly language in-line, which meant I could prototype functions in assembly language, and call them from C.
I experimented with writing interrupt driven graphics functions in assembly language. I experimented with simple things such as, loading register AX with a value, register BX with a value and calling interrupt function 10h to plot a pixel on the screen. This led to writing graphics primitives in assembly and calling them from C. I had a function for a line, square, and circle.
I realised that BIOS service routines were too slow, so I decided to write directly into video memory. This meant having to learn about stacks and using the special function registers. This led to C++, prototyping and Object Oriented Programming (OOP).
I have always been good at picking things up from a book. I managed to learn a lot on my own from books and did not need anybody showing me anything. After studying at Croydon College, I concluded that the education system has much corruption, and a poor quality educator could do great harm to your education and aspirations.