There's a bug lurking in the VAL() function of most early implementations of Microsoft BASIC that has the power to corrupt your program. We demonstrate it on the Commodore 64 and VIC20, but it's present on many other 6502based machines, as well as Z80 and even 6809 computers as discovered by many helpful people on the internets. We then attempt to explain why the bug happens: it's the result of a kind of nasty hack using Microsoft BASIC's evaluation routine combined with the particular edge case when an overflow error occurs.
The VIC20 Quick Reference Handbook by Jeff Daniels: https://jeffdaniels.itch.io/vic20qu...
Tool Kit: BASIC https://archive.org/details/Compute_s...
Allen Huffman's blog: https://subethasoftware.com/2023/08/1...
All the XTweets:
/ 1692238191720600008
/ 1692313328209559923
/ 1693074790855102861
/ 1692300818815283262
/ 1692368840569851958
Closing song lyrics "Call An Awesome Superhero" by Robin's son, aged 5.
To support 8Bit Show And Tell:
Become a patron: / 8bitshowandtell
Onetime donation: https://paypal.me/8BitShowAndTell
2nd channel: / @8bitshowandtell247
Index:
0:00 A bit about VAL()
2:31 + Addition or Concatenation?
4:42 10 A=VAL("1E39"):REM SHOW BUG
7:53 The VIC20: VAL(TI$)
11:45 Tool Kit: BASIC Explanation
13:40 About the Overflow Error? 39 digits
15:14 VAL() needs a nullterminated string
18:30 Machine Language Monitor time
22:22 Thanks to my patrons and XTwitter pals!