We were talking in the chat and decided our best option may just be to have the compiler ignore any commands concerning palettes and allow the user to use the whole RGB grid at once (attribute it to "hardware improvements.")
Anyway, work is coming along great. I just added PNLTYPE and PNLSTR (ezpz) and BTRIG won't take more than 20 seconds.
That doesn't seem like a true fix, but I guess if you're only interested in porting it'll do.
So this will be much harder than I anticipated. There are two reasons I say this:
1) The massive amount of commands/functions I have to go through and reprogram.
2) Optional arguments
I won't stop going, of course. I'll just need people with the modem working to import PTC programs and test them for me as I go. So, I suppose I'm requesting beta testers? I'd prefer experienced PTC users for this. Don't tell me your email; I'll send you a message via the site if you're accepted (and to send you keys).
On optional arguments, in my PTC interpreter first off I had space removal, and I had "gluing" characters that would always remove spaces to the side of them, so if I had something like
visible 0,1,0,1 + 1 - 1, 0, 1 ,0
it would convert that to
visible 0,1,0,1+1-1,0,1,0
(Because I had defined , + and - and "gluing" characters) so the interpreter wouldn't get confused. The problem was when I had a -2 it would "glue" the - to the command too, like
visible 0,1,0,1 + 1 - 1,0, 1 ,0
to
visible-1,1,0,1+1-1,0,1,0
So to fix that I had checks such as "isFunc" that would return either 0 or 1 depending on if the sent string was a function or not (as defined by checking to see if it's in an array), so that would protect things from unnecessarily gluing.
visible -1,1,0,1+1-1,0,1,0
What my program did was everything separated by spaces (post space removal) was it's own element in a string array, going by this optional arguments were not a problem, because it was
SBARR[0] == visible
SBARR[1] == -1,1,0,1+1-1,0,1,0
And it could detect when the end of string came because it knew exactly how long the given string is. I had a function called "getCommadContent(string variable to pass the string "0,1,3,434,8" and the value 3)" and it would return the string "434". If you sent "getCommadContent("0,1,3,434,8", 89 )" it would return the string "", so the interpreter knew there was no argument in the 89th comma place.
Sorry if that sounds a little complicated.