Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by desertfish

  1. Version 7.4.1 has been released  https://github.com/irmen/prog8/releases/tag/v7.4.1

    Documentation as always here  https://prog8.readthedocs.io


    Even more improvements in generated code efficiency, resulting in smaller code that runs faster.

    • improved code generation.
    • optimizer is now smarter about accesses to memory mapped IO that shouldn't be optimized away
    • performance improvements in the compiler itself, updated to Kotlin 1.6
    • fixed some illegal instructions in the conv module on c64 target
    • other bugfixes
    • documentation improvements
    • Like 3
  2. Here's a 24 bit division routine from codebase64 that is an extended version of their 16 bit division routine (which I use in prog8), so I expect you can extend it once again to 32 bits.

    It looks smaller than your code, but I didn't measure.


    Also here's another person with a different looking 32 bits division routine but arguing that it is useful for small code sizes   https://atariage.com/forums/topic/237463-looking-for-32-bit-division-routines/?tab=comments#comment-3240032

    I haven't tried both of them but perhaps they're of some use to you


    but if it's always division by 60, perhaps you can cheat a bit?   Start with division by 64 (which is a simple shift) and maybe this is precise enough already? otherwise perhaps there's a way to adjust the result somewhat to make it more precise, I don't know

  3. While I was boasting about the reduced code size of the compiled Petaxian game, I now discovered that a bug has crept in in 7.3 that now makes the sound glitch out on the C64 build of Petaxian. I will investigate and fix this soon, hopefully.

    Weirdly enough the game still works fine with sound on the X16 build.


    update: found the bug and fixed it for 7.4, there was a new optimizer added that was too aggressive in removing double-stores

    • Like 1
  4. Version 7.3 has just been released https://github.com/irmen/prog8/releases/tag/v7.3

    Docs are here as always https://prog8.readthedocs.io/

    More improvements in generated code efficiency, resulting in smaller code that runs faster. (see the post above this one for an indication of savings you might see)
    Also added a few small new quality of life features.

    • fixed operator not priority: it is now higher prio than and/or/xor !
    • fixed division of signed bytes by 2
    • added new cos and sin builtin functions cosr8 sinr8 cosr16 sinr16, and also their unsigned valued siblings. These make it easier to deal with arcs of degrees 0-359 rather than 0-255 of the existing trig functions.
    • added signed versions of the cx16 virtual registers: r0s - r15s including the L and H byte variants of them.
    • less temporary variables generated and used
    • more optimizations to expression evaluations
    • compiler no longer uses cx16 R15 virtual register as tempvar
    • unit tests now use KoTest as test framework.
    • Like 1
  5. For comparison

    Petaxian compiled with prog8 7.0: 19639 bytes
    Petaxian compiled with prog8 7.2: 19405 bytes

    234 bytes of overhead removed

    update: Petaxian compiled with prog8 7.3: 19258 bytes
                   another 147 bytes of overhead removed by producing more efficient code

    • Like 2
  6. Version 7.2 of the Prog8 compiler has just been released https://github.com/irmen/prog8/releases/tag/v7.2

    Documentation is here https://prog8.readthedocs.io


    This is mainly a version with performance optimizations.
    Various parts of the code generator now create faster code, and sometimes also smaller code.
    Depending on your source code, you can observe pretty significant gains in resulting program size (tens to hundreds of bytes smaller).

    Other fixes:

    • PETSCII block drawing character mapping was updated to now correctly separate certain box line characters
    • Fixed type casting errors related to certain const propagation
    • str is now allowed as a parameter type in subroutines (it is passed by reference/address)
    • compiler no longer crashes when an input file doesn't exist
    • gradle builds now automatically run installDist task after build
    • updated to Kotlin 1.5.31


    • Like 3
  7. I picked up Elvira Mistress of the Dark,  Elvira Jaws of Cerberus, and Graveyard Keeper 😆   on GoG  for just a few bucks

    I played both elvira games back in the days on my Amiga, I wonder how they hold up today....

    As for non-gaming software (which was the original question):  as I said above I keep forgetting Steam also sells those. But I also never pay attention to them.
    (I have very few applications that I ever purchased personally. I mostly use free and/or open-source things. Even my development environment of choice -IntelliJ IDEA suite- is on a free license from them, very nice)

    • Like 1
  8. Version 7.1 of the Prog8 compiler has just been released https://github.com/irmen/prog8/releases/tag/version7.1

    Documentation is here https://prog8.readthedocs.io

    Here's a list of the changes:

    - removed %target directive because it was too confusing for what little it did. Just use -target command line option.
    - non-asmsub subroutines can no longer be inlined because the way this worked was not reliable
    - internal code refactoring to improve testability and reliability
    - several error/warning message improvements
    - added support for secondary alternative emulator to launch, with '-emu2' option (box16 in case of commanderX16)
    - fixes for various issues related to different output path
    - %asmbinary path related assembler bug fixed
    - float[] array initializer bug fixed
    - fixed some assembler bugs in swapping values with swap()
    - fixed bug in palette.set_color
    - fixed bug in optimizer that sometimes removed subroutines that were referenced, causing assembler crash
    - some other miscellaneous bugfixes and improvements.


  9. after a long wait, Prog8 7.1 (beta version) has just been released.


    Most of the changes this time are internal to improve code quality and testability.
    But several important bugfixes and enhancements have also been made.
    One thing to mention now is that the ``%target`` directive has been removed, the compilation target is set on the command line options.

    A full list of changes will be published on the 7.1 final release. In the meantime, here is the changes list since 7.0 https://github.com/irmen/prog8/compare/v7.0...master

    • Like 4
  • Create New...

Important Information

Please review our Terms of Use