[HN Gopher] Commodore 64 BASIC and KERNAL on Atari 8-bit hardware ___________________________________________________________________ Commodore 64 BASIC and KERNAL on Atari 8-bit hardware Author : TMWNN Score : 63 points Date : 2021-08-12 17:35 UTC (5 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | ecpottinger wrote: | If I remember right, Atari Basic had 4 byte floats and Commodore | Basic has 4 byte floats. The extra precision mattered for some | programs, but the small size made the Atari Basic faster. | jhallenworld wrote: | Atari had 6 byte floats, BCD. Commodore had 5 bytes, binary. | tenebrisalietum wrote: | CBM had 5 byte floats I think you meant--edit: maybe it was 6. | 5 byte mantissa and 1 byte exponent?? | | CBM BASIC was a Microsoft product and I think more or less what | all the Microsoft BASICs did was convert everything to floats | internally--even when not really needed. For example the index | in a FOR I=1 to 10 was dealt with internally (and slowly) as a | float--including the operation to increment it by 1 or the STEP | value. | | If Atari BASIC didn't do that it would have made things faster | in many situations. Apple's Integer BASIC was faster because it | didn't support floats at all, if you could deal with the almost | C-style strings IIRC. | jhallenworld wrote: | I always thought it would be cool if the line numbers were | floating point. You could always insert a line between any | existing ones then. | nl wrote: | This is why everyone use 10, 20 etc. | | I think I remember there was a Renumber command that would | reset any inserted numbers too? | guyzero wrote: | There were BASIC extensions you could get that added | renumber. The C128 had renumber as a builtin. | adrianmonk wrote: | I'm pretty sure Netflix queues used to work this way. For | the DVD-by-mail service, I think. | | Basically, the web page had a text field next to each | movie, and you could type in numbers, then submit a form, | and it would reorder your queue. | | The obvious thing to do was swap "1" and "2" to flip the | order of the top two items. But you could just set the | second one to "0.5" and leave the first at "1". When you | submitted the form, it would renumber them all with | integers. | bonzini wrote: | Integer variables were written I%. I%=I%+1 was certainly | faster than I=I+1, but I am not sure if that extended to FOR | loops. | masswerk wrote: | The implementation issue with integers in Commodore BASIC 2 | was that they were still stored in a 5 byte format, while | actually using just the first two bytes. Meaning, unlike | with other implementations of MS BASIC, they occupied 7 | bytes in memory (with two leading bytes for the | identifier), just like floating point variables, and there | was no improvement on memory usage with integers. | ataylor284_ wrote: | CBM had 5 byte floats, but when they were copied into the | floating point "registers", they were expanded into a 6 or 7 | byte representation for speed. It was 8 bits of exponent, 1 | bit sign, and 31 bits of mantissa (with one extra implicit | bit since the leading bit is always 1). | | It's true there was very little performance gain to using | BASIC integer variables, since they'd be converted to floats | internally almost always. The one real advantage of integers | is that a DIMed array of ints was more compact than an array | of floats. | intricatedetail wrote: | I remember Atari basic was quite superior, so probably that's why | there was no port. Awesome work! | ataylor284_ wrote: | It's unfortunate that Commodore shipped BASIC 2.0 on the 64. | They already had shipped PETs with the much superior BASIC 4.0 | years earlier. It was likely a cost saving measure: they had a | more favorable licensing deal with MS on BASIC 2.0 and it fit | on fewer ROM chips. Too late the C128 came with BASIC 7.0 which | was actually quite good (for an 8-bit BASIC anyway). | tenebrisalietum wrote: | Didn't it do something weird with strings where you had to | periodically LIST and reload your program to prevent crashes? | jhallenworld wrote: | Yeah, famous bugs. Atari BASIC source is fully documented in | this book: | | https://archive.org/details/ataribooks-the-atari-basic- | sourc... | | See appendix B, memmove() was broken. | fw4h5 wrote: | Fuck masks. Fuck vaccine passports. | | Fuck anyone that supports this totalitarian bullshit. | TMWNN wrote: | Source: | https://www.reddit.com/r/c64/comments/p24fo8/i_modified_the_... | sys_64738 wrote: | Blasphemy. ___________________________________________________________________ (page generated 2021-08-12 23:00 UTC)