Edit: And PandaBAS will run a lot faster on this than it does on Pandora - quad core with hardfp? Oh my.
D.
So SpecBAS/PandaBAS is highly parallel BASIC implementation with a lot of floating point argument passing?
I wouldn't say
highly parallel. In order to mimic the original hardware, SpecBAS runs with two threads (minimum) - one for the display which updates at 50fps and one which runs the interpreter. On the Pandora (and the original Pi) the display takes, during normal operation, about 2% of CPU time to get the job done - depending on how many windows are open, of course. Add sprites and it doesn't take long before it's eating significant amounts of CPU time which in turn on a single core machine is subtracted from time available for the interpreter to do its job.
I've minimised the impact somewhat with previous discussions with you, with new subdivided rectangles, dirty flagging of regions etc and it's smooth enough at the moment. As I said, as sprites have to be displayed every frame, they slow things down a lot when you get a large number of them. The interpreter also performs lots of optimisations on the BASIC code - caching values/expression results, expression re-ordering, merging of common "opcodes" into specialist code etc.
There's also sound and music which also run in their own threads.
As for floating point passing, I don't do any in my code but the compiler (FPC) does for things like maths and trig etc. There's nothing I can do about that. As a result, the Pi clocked lower than my Pandora runs PandaBAS much, much faster - sometimes up to 50% faster depending on what the user's doing in the BASIC code.
I don't claim to be a competent coder, and I'm sure that I could have done things better than I did... But I've enjoyed coding it and love playing with the result. It's fast enough on the Pandora that all the old tasks I used to do on the Spectrum 48k are way faster than I ever dreamed they could be, but more speed is well.... better.
D.