Hallo Besucher, der Thread wurde 1,6k mal aufgerufen und enthält 5 Antworten

letzter Beitrag von Schachmeister1973 am

MEGA65 Spreadsheet Demo ("MEGCEL65")

  • Hi!


    I recently came to know about the MEGA65 and the work of the MEGA-Team and the community and how far this project has come, impressed me immediately.

    So I bought a Nexys Board to shorten the time until the MEGA65 will be available.

    I tested the capabilities of Basic 10 and when I came across the underline text mode, I started to program a simple text based spreadsheet programm.

    In the end it has become quite beautiful and comprehensive with a scrollable 50x50 cell table, formula calculations and basic bar graphs done with Sprites.

    Maybe it can also help other MEGA65 Beginners, how arrays, string processing, sprites, file handling or memory blitting can be done quite easily with Basic 10.

    So, whoever is interested, feel free to use the code. The D81 contains the program itself and 3 more files that are used for displaying the inline help only.


    I only tested it with my Nexys Board, I don´t even have a emulator, so I´m not sure, how it behaves on other platforms.


    Matthias


    MEGCEL.zip

  • I only tested it with my Nexys Board, I don´t even have a emulator, so I´m not sure, how it behaves on other platforms.

    I have tested it with xmega65 emulator. It works fine! :thumbup:


    It's a nice piece of software. One small point I would mention: To re-calculate the cells I would find it better, if a single keypress would do it. At the moment you have to press F5 and then 4, or do I miss an option?


    I like your program! Great work! :thumbup:

  • Thanks, Snoopy, for your feedback and for testing it on the emulator :)


    You´re right, a single keypress would be better and I will add this with the next revision. At the moment, there is a (little quicker) option to press F5 a second time instead of changing to the 4 key.


    There is something I don´t have a clear explanation for: ?( After starting the program, directly after entering the first letter, there seems to be a little (~100 ms) delay before the letter appears on the screen - this occurs only for the first letter or the first time I press Return. It somehow seems like caching, but the delay seems too long for such few instructions to be executed.


    Did you notice this on the emulator as well?

  • Schachmeister1973 : Thanks for the hint! Double F5 works well for recalculating. :thumbup:

    There is something I don´t have a clear explanation for: ?( After starting the program, directly after entering the first letter, there seems to be a little (~100 ms) delay before the letter appears on the screen - this occurs only for the first letter or the first time I press Return. It somehow seems like caching, but the delay seems too long for such few instructions to be executed.


    Did you notice this on the emulator as well?

    Yes, it's also in xmega65 emulator with ROM 911210. After the very first keypress there is a short delay before the char is display in the bottom white line. After the first keypress all works without a delay.


    Do you have a "once only" routine at the first run?

  • I just took a look into your sourcecode.


    If I let the main loop take a very first run with a fake keypress (k=64) with adding this line:


    205 K=64: GOTO 220


    then the delay at the first real keypress is gone.


    So it has to do something in the main loop (line 200-500) at the very first run.

  • Thanks for testing again. So, it has nothing to do with the Nexys Board. This is a bit weird, because in the program loop there is nothing that is executed in the first run only. All initialization is done before.


    So, one explanation could be, that the CPU does some caching in the first run - but the delay is far too long for 40Mhz for that few lines of code, so to be honest, i do not assume that this is really the case.


    I guess, the easiest solution is to simulate a keypress at startup as you did it, so there is no delay for the user. :)