I guess one of the most difficult platforms for demo programming (in terms of having to write things from scratch) was PC in the DOS/Win16 era. You could get into 320x200x8bit graphics mode quite easily (the so called Mode 13h) but beyond that you were on your own.
Best think about standard hardware was that, if somebody wrote something faster/better than you did then their code was demonstrably better - you couldn't blame it on drivers or anything else.
I had this situation with somebody called Darek Mihocka who wrote an accelerated text function for the ST. I beat his code, he then came up with something nearly twice as fast as mine! I went crazy wondering how he did it until the 'move.p' instruction came to me, I shit you not, whilst I was asleep.
Good times, and a great way to learn how to code and more importantly what really happens on the machine underlying it.
With only a little bit of investigation, or even participation, it quickly becomes entirely clear that compos divide entries by hardware, and people in the demoscene don't ask oldschool 64ks to measure up to PC 64ks.
I recommend having a look at the various compo blocks on pouet: https://www.youtube.com/user/RevisionParty