No, you're not missing something. I forgot something about AMAL.
When animating an object, the Anim command doesn't wait for the last command to finish before continuing the program. This is because you'll probably also want to Move the object after setting up the animation. So what's happening here is that the second Anim command is preempting the first command before it has time to display the first images.
There are a few ways to fix this:
1. Insert several Pause commands after the first Anim command to pause the program long enough to see the first animation. This solution is ugly, but it works for stationary objects.
2. Use the AUtotest command to flag the end of the first animation like this:
A$="AUtotest (If R1=1 Direct Y)"
A$=A$+"Let R1=0; Anim 1,(1,5)(2,5)(3,5); Wait;"
A$=A$+"Y: Anim 0,(4,5)(5,5)"
Then insert the following command in the main loop to test for the end of the first animation:
If Chanan(1)=False and Amreg(1,1)=0 Then Amreg(1,1)=1
This will execute the first Anim command and Wait for R1 to be equal to 1 before moving on to the second Anim. R1 is set using the Amreg command. The AUtotest is executed at the start of each Vbl or by using the Wait command. This is a little less ugly than using a string of Pause commands.
You're right about the Amal On command also. I guess I'd try adding another flag to the AUtotest to restart the animation:
A$="AUtotest (If R1=1 Direct Y; If R2=2 Direct X)"
A$=A$+"X: Let R1=0; Let R2=0; Anim 1,(1,5)(2,5)(3,5); Wait;"
A$=A$+"Y: Anim 0,(4,5)(5,5)"
Then you just need to issue the Amreg(1,2)=1 command to restart the animation.