I enjoyed the video. For the Commodore 64, I have two Basic favorites. The one that comes with the computer and the recently released Vision Basic. As a compiler is faster than Blitz and allows greater flexibility with graphics and inline assembly language programming.
I had a pirated copy of Blitz back in the 80s, but beyond using it on BASIC programs, I never knew how to use it. I knew it had various options and other things you could do with it, but since I never had a manual for it, all I could do was run it on a BASIC program and hope it worked. If I recall correctly, I used it on a few simple conversion programs I made. Like one to convert Printshop graphics from Commodore to non-Commodore printer formats by doubling all the pixels horizontally. Or my program to convert a copy of Championship Lode Runner into a data disk for use with the original game (so you could use the built-in cheats). I seem to recall having some other BASIC compiler as well, but I forget what it was called. Then there was one published by Compute!'s Gazette. It only worked on a subset of BASIC commands, but produced really fast results. I think it converted the commands directly to ML, which is probably why it only allowed the use of certain commands.
Conversion programs are a great use case :-). For both, Basic and Basic compilers. I also made a video about micro compilers. That‘s probably close to the one from Computer Gazette you mentioned. Thanks for your input!
21:17 If these multiple-NEXTS-with-one-FOR-constructs don't work in Blitz! 128, then it has a bug in its FOR-NEXT-GOSUB-stack handling. We are used to think of FOR-NEXT as real loops in Commodore BASIC (like in modern languages), but that's actually not what they are. They are independent commands only connected by a stack and if used properly, they function like a loop "by accident".
You‘re probably right about that being a bug. I wasn‘t able to re-produce this with Reblitz, it might really be limited to the c128 and maybe even nested constructs Thanks for that input!
I am familiar with this program and used it a lot in my younger years. I never understood how it worked, I assumed it turned a basic program into machine language but later found out that wasn't the case which really sparked my curiosity.
@@the8bittheory I was only about 10 at the time so really just experimental programs for learning basic and trying to see what I could get the computer to do. I was mostly interested in data manipulation and encryption, or hiding data on disks and retrieving it through basic using 1541/71 controller commands.
I always understood that Commodore BASIC was already tokenized upon entry. Does Blitz just have a different tokenization that includes more than just the keywords or something like a p-code?
That‘s sad news. To my knowledge, Mark Sibly worked on Blitz Basic for Amiga and ST. The Blitz Basic discussed here was developed by Peter Schwartz and Bob Skyles
But you‘re very interested in the topic anyways, right? Game programming is probably the most attractive field in programming, but also the most complex one.
so why not compile to assembler, directly, from basic. no interpreter required. way too complex "compiler solution". so you already have the code and jump tables, why not compile to c64 assembler directly. even the unoptimized assembler code translation is way faster. this was totally non required speed up software, you are smart. also modules/libraries work if you...
There‘s other compilers that do directly compile to assembler, so you can do that - at least for the c64. But on the c128 options are really limited. Thanks for your input!
like vision basic but that seems to lack some parenthesis functionality, of basic, so not full basic compatibility, I dont care of the extra if the basic is not working@@the8bittheory
I enjoyed the video. For the Commodore 64, I have two Basic favorites. The one that comes with the computer and the recently released Vision Basic. As a compiler is faster than Blitz and allows greater flexibility with graphics and inline assembly language programming.
Glad you liked the video. I also enjoy Vision Basic a lot. I need to find some time working on something serious with it :-)
I had a pirated copy of Blitz back in the 80s, but beyond using it on BASIC programs, I never knew how to use it. I knew it had various options and other things you could do with it, but since I never had a manual for it, all I could do was run it on a BASIC program and hope it worked.
If I recall correctly, I used it on a few simple conversion programs I made. Like one to convert Printshop graphics from Commodore to non-Commodore printer formats by doubling all the pixels horizontally. Or my program to convert a copy of Championship Lode Runner into a data disk for use with the original game (so you could use the built-in cheats).
I seem to recall having some other BASIC compiler as well, but I forget what it was called.
Then there was one published by Compute!'s Gazette. It only worked on a subset of BASIC commands, but produced really fast results. I think it converted the commands directly to ML, which is probably why it only allowed the use of certain commands.
Conversion programs are a great use case :-). For both, Basic and Basic compilers.
I also made a video about micro compilers. That‘s probably close to the one from Computer Gazette you mentioned.
Thanks for your input!
21:17 If these multiple-NEXTS-with-one-FOR-constructs don't work in Blitz! 128, then it has a bug in its FOR-NEXT-GOSUB-stack handling. We are used to think of FOR-NEXT as real loops in Commodore BASIC (like in modern languages), but that's actually not what they are. They are independent commands only connected by a stack and if used properly, they function like a loop "by accident".
You‘re probably right about that being a bug. I wasn‘t able to re-produce this with Reblitz, it might really be limited to the c128 and maybe even nested constructs
Thanks for that input!
Happy and healthy new year! Very interesting video, you got a new subscriber! Thank you very much!
Happy New Year! Thanks for the great feedback and welcome on board :-)
I am familiar with this program and used it a lot in my younger years. I never understood how it worked, I assumed it turned a basic program into machine language but later found out that wasn't the case which really sparked my curiosity.
Really nice. What programs did you work on back then?
@@the8bittheory I was only about 10 at the time so really just experimental programs for learning basic and trying to see what I could get the computer to do. I was mostly interested in data manipulation and encryption, or hiding data on disks and retrieving it through basic using 1541/71 controller commands.
At the age of 10, that's pretty impressive
@@the8bittheory I had a LOT of time on my hands. Too bad I never figured out assembly. I could have done so much more
It's never too late. And 6502 assembly lang isn't too hard to grasp
Outstanding video, thanks for your hard work.
Glad you like it. Thanks for the great feedback!
I always understood that Commodore BASIC was already tokenized upon entry. Does Blitz just have a different tokenization that includes more than just the keywords or something like a p-code?
Right, Basic keywords are tokenized. Variable names and values are not, though.
Thanks for your input!
Is this related to "Blitz BASIC Compiler for the Commodore 128 by Skyles Electrical Works" that I used in 1985?
Yes it is
RIP Mark Sibly, creator of BlitzBasic
That‘s sad news.
To my knowledge, Mark Sibly worked on Blitz Basic for Amiga and ST.
The Blitz Basic discussed here was developed by Peter Schwartz and Bob Skyles
So did you report this bug to the VICE team? If not, it will obviously not be fixed...
Not yet, I still have to check with daily builds. But you‘re right, I need to do that. Thanks for bringing this up!
Programming was always a mystery to me.
Tbh, i still dont know how C64 games were programmed.
But you‘re very interested in the topic anyways, right? Game programming is probably the most attractive field in programming, but also the most complex one.
Nooooo this optimization of BASIC seems like something you would find in JavaScript
$A = "Hello" + ""
Ha, right :-D
so why not compile to assembler, directly, from basic. no interpreter required. way too complex "compiler solution". so you already have the code and jump tables, why not compile to c64 assembler directly. even the unoptimized assembler code translation is way faster. this was totally non required speed up software, you are smart. also modules/libraries work if you...
There‘s other compilers that do directly compile to assembler, so you can do that - at least for the c64. But on the c128 options are really limited.
Thanks for your input!
like vision basic but that seems to lack some parenthesis functionality, of basic, so not full basic compatibility, I dont care of the extra if the basic is not working@@the8bittheory
but if so and common, why would blitz even exist, are they all paid@@the8bittheory
You might want to take a look at MOSpeed.
www.c64-wiki.com/wiki/MOSpeed
how about c/c++ to c64/128 asm/executable?@@the8bittheory