3 ms·
Why do I remember that every C64 BASIC keyword was a 2-byte integer? A typing shortcut was to enter the first letter, followed by a "shifted" high-bit characte
by jklowden 1y ago
Why do I remember that every C64 BASIC keyword was a 2-byte integer? A typing shortcut was to enter the first letter, followed by a "shifted" high-bit character. Every keyword was represented that way.
Variables were also 2-bytes, but ASCII. The user could enter a longer name, but only the first two characters were significant.
- masswerk 1y agoYes, variable names are 2 bytes, in their stored memory location in RAM. As these must be 7-bit ASCII bytes, the sign-bits and their distribution over these two bytes is used to encode the type. And all simple variables take 7 bytes of memory in total, regardless, whether the remaining 5 bytes are actually needed to store the data or not. sign-bits type (payload) 0 0 ... floating point number (1 byte exponent, 4 bytes mantissa) 1 1 ... integer (2 bytes) 0 1 ... string (1 byte length, 2-bytes pointer to location) 1 0 ... FN function (2 bytes pointer to BASIC, 2 bytes pointer to parameter variable) In a program (the BASIC text), though, variables names are stored in full and in plain ASCII, at whatever length of characters.
- LocalH 1y agoNot every keyword could be abbreviated with only two characters. The linked article actually discusses this mechanism. Once tokenized, the keywords only took up a single byte.