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 VIC-20, but it's present on many other 6502-based 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 VIC-20 Quick Reference Handbook by Jeff Daniels: jeffdaniels.itch.io/vic-20-qu...
Tool Kit: BASIC archive.org/details/Compute_s...
Allen Huffman's blog: subethasoftware.com/2023/08/1...
All the X-Tweets:
/ 1692238191720600008
/ 1692313328209559923
/ 1693074790855102861
/ 1692300818815283262
/ 1692368840569851958
Closing song lyrics "Call An Awesome Superhero" by Robin's son, aged 5.
To support 8-Bit Show And Tell:
Become a patron: / 8bitshowandtell
One-time donation: paypal.me/8BitShowAndTell
2nd channel: / @8-bitshowandtell247
Index:
0:00 A bit about VAL()
2:31 + Addition or Concatenation?
4:42 10 A=VAL("1E39"):REM SHOW BUG
7:53 The VIC-20: VAL(TI$)
11:45 Tool Kit: BASIC Explanation
13:40 About the Overflow Error? 39 digits
15:14 VAL() needs a null-terminated string
18:30 Machine Language Monitor time
22:22 Thanks to my patrons and X-Twitter pals!
3 авг 2024