I have a new project that is hurting my brain (conceptually.) In playing around with different ideas, or seeing what sticks to the wall, or tickles my brain, or whatever, I have come to a few conclusions.
First, it is so incredibly easy to do things with the Do-more. The biggest issue I have is looking for the instruction that surely must be there because everything else has been. (Unless I overlooked it, there is no instruction to SWAP two memory locations without switching bytes or words around.)
Second, bubble sorting 30,000 Signed Double Integers in a Do-more may take a few days if the values start as random numbers (nice function that RANDREAL()*10,000 or whatever for getting test values quickly. I had to "build" one once in a 260 and it wasn't fun.)
Third, I was surprised to find that MAPIO, INIT and MATH all ran faster than MOVE and much faster than MEMCOPY when doing the shuffle in a random 1000 cell bubble sort. No optimizations, all 1000*999 loops "swapping" Q-memory (just another D table) with a third temp holding cell. The first three take 2 min 32 secs, MOVE is 2 min 59 secs and MEMCOPY takes 3 Min 34 secs. Two runs for each with fresh random numbers. Sorting was done in a task with 100 uS time slice (more didn't seem to matter, nothing else is happening anyway.) Some optimizing has it to 1 Min 30 secs using MAPIO for full random values, quicker if partially sorted.
The MAPIO is the cleanest since I don't need to see the values as this is happening. That's the only thing I don't like about MAPIO for its intended purpose, the not having monitor values. But since I have 3 arrays to sort based on the contents of one array, I can do all of it with a single MAPIO, including an extra check value to stop sorting values that are already done. That's 10 discrete moves in one instruction, in order.
And no, I don't think I will pursue the 30K array option. It was just a test, it was only a test.
Nice job Host!
Now to stop tickling my brain by throwing it against the wall...