This intro is great, and the lighting is really, really nice.
But TBH I do not like accelerated intros/demos, because the most difficult part of the code, i.e. 3D graphics pipeline is implemented outside the demo, in a GPU driver. Many years ago, in a DOS, coders have to implement rasterization, clipping & lighting and fit everything in a 64kB. Watch for example Stash by TBL (http://www.pouet.net/prod.php?which=3), Jizz by TBL (http://www.pouet.net/prod.php?which=2), Photon by Purple (http://www.pouet.net/prod.php?which=502).
Well the error message is confusing (it's trying to cast from an integer (type 70) to a procedure (type 76)), but it's correct to fail to compile. But yeah I'm not sure that my logic there is altogether correct. I re-wrote it a few times as I found new cases that weren't correctly handled. Specifically, I'm not sure whether the type of the identifier should guide the parsing. It's similar to the "x*y" ambiguity in parsing C (multiplication or declaration of pointer variable y).
But TBH I do not like accelerated intros/demos, because the most difficult part of the code, i.e. 3D graphics pipeline is implemented outside the demo, in a GPU driver. Many years ago, in a DOS, coders have to implement rasterization, clipping & lighting and fit everything in a 64kB. Watch for example Stash by TBL (http://www.pouet.net/prod.php?which=3), Jizz by TBL (http://www.pouet.net/prod.php?which=2), Photon by Purple (http://www.pouet.net/prod.php?which=502).