Thursday, 15 November 2012

Old computers are not that junk as you might think

It happens that I have a quite different perspective about old computers. I like to stretch my feeling of what are the true capabilities of a very old computer. It's not nostalgia, it's not being fanatic, it's just a feeling that I love. That of seeing an old computer that people consider extremely slow, do really cool stuff on the screen.

And yet again, I have a much better appreciation of what old hardware can do than most people. Not just as a programmer but as a user of retro PCs too. There is that bias, where people observe what their current PCs can do and how performance consuming it is already, that makes them extrapolate that hardware from even 3-5 years ago would be extremely boring and you wouldn't be able to do much with it.

Well, the problem is that most software doesn't exactly represent well what the true power of older machines is. If you try to run the latest software in PCs of 5 years ago then yes, everything will struggle to a halt. And maybe the web is becoming more consuming with it's heavy loaded websites full of javascript and adds that it could really be a drag to try surfing the net with a Pentium 3 or 4. I don't know, I haven't tried this one. But the fact is that you can always find software written during that time when Pentium 3 was common and discover that you could really do lot's of cool stuff at that time.

An example about how extrapolating would make you think a 386 is a fucking calculator is this. So, I have my ultra new dual core PC and I bought a new graphics card. I install it and then there is the moment where I want to uninstall my old drivers and reinstall the latest ones. During that limbo time when there are no drivers install, maximizing or scrolling a single window, you see the very slow redraw of the window in realtime. Why I'd say? Many people would say it's the 2d gfx acceleration that makes it possible which are not there with no drivers. It could be. But so slow? I remember at times with my 486 and a crappy S3 Virge that redrawing was fast enough. One would say I was then with 800*600 and 16bit color while now 1920*1080 with 32bit color and he wouldn't be entirely wrong. But the message is that: A dual core AthlonXP without hardware acceleration draws windows slowly, so what would a 486 with an S3 Virge do if we extrapolated? Maybe they were still living in DOS? GUI in 486? No fucking way!!!

Or what would they think about the idea of a windows like OS running on an Amstrad CPC 8bit computer? Not even with bullets as we say in Greece :). Like maybe waiting 10 minutes for a window to redraw? Yet, those are the true stretched capabilities of what a CPC can do: SymbOS video (I know it's using CPC T-rex with Z80 at 24Mhz, but I couldn't easily find a good plain CPC SymbOS video showing enough features, though I have witnessed it myself and it's not much slower). Now, extrapolate to the opposite direction. If a CPC can do that, imagine what could a 286 do!

I know I know, a CPC has 16kb videoram while 286 has 64kb in plain VGA 13h mode and as the systems improve they add better resolutions and color depth which need faster gfx cards and CPUs, etc, etc. Maybe that's a good argument for the negative extrapolation, like yes the CPC had only a Z80 at 4Mhz but didn't need to output 8MBs of video memory during each frame as my 1920*1080*32bpp screen needs. And neither accelerated functions on the graphics card.

Sometimes I like to extrapolate in the positive way with my own projects. I have coded enough demos on Gamepark devices with ARM7 processor at 100 or 200Mhz or even the latest Caanoo at 533Mhz (my unit can overclock at 800Mhz). Of course, I know that Mhz is not everything and memory bandwidth or small cache can bring those things down a lot, but the point is that I can't help but admire those Acorn Archimedes demos I have watched again and again in an emulator (especially those from the group Xperience) where there is either an ARM2 at 8-12Mhz (old models) or later ARM3 at 33-40Mhz and yet you can see good 3d or 2d effects in resolutions similar to the Gamepark handhelds (ok, but their color depth is 8bit and not 16bit like the one I used). I know how hard it is because I tried to write some pixel per pixel effects on the GBA with ARM at 16.8Mhz where the resolution is ever lower (240*160) yet it took effort to even run a simple 2d effect in something like 25fps. I believe many GBA coders might optimize their routines with ARM assembly and I know that the XPerience group did that too. Now, my gamepark demos were pure C and I never felt like needing to optimize with assembly at the time I was writting my demos because the frame rate was already high enough at least for most of my effects, but I would love one day to try some ARM assembly (which I've heard is quite fun) and see what those beasts could do if their powers were harnessed!

Yes, I think of these devices as beasts. I think that even the old GP32 with ARM at 100Mhz (which I overclocked at 156Mhz most) could easilly be like a very fast 486 or early Pentium, excluding the FPU of course. Those monsters have a higher ratio of cycles per opcode (they said the ARM2 at 8Mhz is has 4 times more MIPS than 68000 at the same Mhz and I have witnessed it in some videos) than older x86 revisions or Z80 for example. Yet check the other fact: My smartphone is a slow one. Yet it has an ARM7 at 600Mhz similar to my Caanoo. But Android is a crawl (cause it's based on Java?) and unresponsive here. I have seen faster phones that can handle it, some with dual core processors. But it's a beast, I know that an ARM7 at 600Mhz is a beast because I consider even the GP32 with the 100Mhz ARM as a beast. And I've watched plenty of archimedes demos and tried RiscOS on a 33Mhz (emulated) computer. If I would extropolate from my latest smartphone running Android backwards I would feel like my current phone is a big piece of junk (which I do feel, judging by the unresponsiveness) but I know it isn't. I can appreciate what is in there and what would be really possible.

And then I'd like to just add to this conversation the counter-effect of false retro memories. Sometimes we remember our old computers as faster than they really are. Maybe because we were used to those speeds then and after coming back from the future it feels different. I was transferring some ZIP or ARJ archives of old games to my 386 (disc by disc, ugh) and then I decided to decrunch some of them. My initial reaction was: "What? I never remember decrunching being so long on my old PC! Was it really that slow?". Either I had false memories or being used today to instant decrunching times (even with larger archives) it felt so odd.

But it doesn't change how I feel with old computers. I don't look at them like pieces of junk that are as fast as pocket calculators. My friends look at me coding for old computers and wonder "A 386? What can you do with it? If I had only this I would be bored to death.". Hell, they even feel like this about a Pentium 4. But few years ago we used to work on these machines and we thought a Pentium 4 was like paradise, you could run the latest games, surf the web, watch movies, etc. The other thing here is that I don't see computers as media devices. I see them as things to experiment with, to program, to make them do whatever I like them to do. I feel the essence of code and creativity. Slow processors and primitive graphics don't bother me. I am so much happy even with the oldest thing I can program.

Some people might see random ugly pixels on a CPC and miss their HD media players and modern 3D, but I get enjoyment from deciding how to makes those pixels blink on the little CPC screen. And I discover that with some clever optimization those little 4Mhz can do a lot lot cool stuff! And If I am already so positively pleased with the feeling I have about the performance and creative possibilities I can harness from CPC, imagine how much more this is extrapolated for my 386 or the beasts we carry with us today. It feels so great, like I would never get bored of computers in the way I see them even if production of better computers would get into a halt. There are still a lot to explore even in computer communities where you think they have done everything and there is nothing more to see (just check the C64 scene, every year you see something that makes you think that this is the end, they have exploited the machine to it's full potential and yet you see new more impossible things few months later).

Creative use of computers makes this feeling possible. I could never enjoy a computer so much just from the mindset of a consumer.

p.s. I got into writing this post after being inspired by a twitter message about how angry the author was with people underutilising the CPU and then saying "let's do it in GPU, CPU is crap". Come on people, CPUs are huge beasts already! (well, I know GPUs are much greater beasts, though not as multi-purpose)