Maestro code for astromech build

I am running my maestros (I love them!) in my astromech build. I keep getting a stack error 0x0100 code …what am I doing wrong here?

### Sequence subroutines: ###

# A:  Leia "only hope"
sub A_Leia_only_hope

  #Set the speed of all 24 servo channels to 10:
  24 begin dup while
  dup 1 minus 10 swap speed 
  1 minus
  repeat

  16000 3968 3968 3968 3968 3968 3968 
  8000 4736 3968 8000 3968 3968 
  6016 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # All closed
  19000 4032 7936 frame_0_4 # Open LCD panel
  4000 3968 3968 frame_0_4 # All closed

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  quit
  return

# B:  Mando
sub B_Mando

  #Set the speed of all 24 servo channels to 10:
  24 begin dup while
  dup 1 minus 10 swap speed 
  1 minus
  repeat

  1500 3968 3968 3968 3968 3968 3968 
  8000 4736 0 0 0 0 
  0 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Start -  All closed
  6000 8000 7872 7168 7808 8000 5120 
  7552 frame_0..3_5..7 # All lower open
  5500 3968 3968 3968 3968 3968 8000 
  4736 3968 8000 3968 3968 6016 frame_0..3_5..12 # All closed
  6000 8000 7872 7168 7808 8000 5120 
  7552 0 0 0 0 0 frame_0..3_5..12 # All lower open - 2
  5500 3968 3968 3968 3968 3968 8000 
  4736 3968 8000 3968 3968 6016 frame_0..3_5..12 # All closed - 2
  6000 8000 7872 7168 7808 8000 5120 
  7552 0 0 0 0 0 frame_0..3_5..12 # All lower open - 3
  5500 4032 3968 3968 3968 3968 8000 
  4736 3968 8000 3968 3968 6016 frame_0..3_5..12 # All lower closed - 3
  6000 8000 7872 7168 7789 8000 5120 
  7552 0 0 0 0 0 frame_0..3_5..12 # All lower open - 4
  5390 4544 4416 3968 3968 3968 8000 
  4928 3968 8000 3968 3904 6080 
  5800 frame_0..3_5..12_16 # All lower closed - 4

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  100 7168 6848 0 frame_8_11_16 # Outside upper open
  200 3968 5184 6848 3904 frame_8..11 # Switch
  200 3968 3968 4736 8000 3968 3968 
  6016 frame_0_1_7_9..12 # End - All closed

  quit 
  return

# C:  Short circuit
sub C_Short_circuit

  100 4032 3968 3968 3968 3968 3968 
  8000 8000 3968 8000 3968 3968 
  6016 4245 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Frame 0
  200 7168 7808 frame_2_3 # Frame 1
  200 8000 5874 3968 3968 8000 6532 
  4736 frame_0..3_5..7 # Frame 2
  200 5958 7872 7296 7808 5925 5120 
  7552 6080 0 frame_0..3_5..7_12_13 # Frame 3
  100 4032 3968 3968 3968 3968 8000 
  4736 6016 frame_0..3_5..7_12 # Frame 4
  100 8000 frame_0 # Frame 5
  100 7936 frame_1 # Frame 6
  100 7168 frame_2 # Frame 7
  100 7808 frame_3 # Frame 8
  100 7872 4928 6080 frame_1_7_12 # Frame 9
  100 8000 frame_5 # Frame 10
  100 5120 frame_6 # Frame 11
  100 7552 frame_7 # Frame 12
  100 4544 frame_0 # Frame 13
  100 4416 frame_1 # Frame 14
  100 3968 frame_2 # Frame 15
  100 3968 frame_3 # Frame 16
  100 4032 3968 8000 6016 frame_0_1_7_12 # Frame 17
  100 3968 frame_5 # Frame 18
  100 8000 4736 frame_6_7 # Frame 19
  200 8000 5913 7121 5888 6003 5120 
  6336 6080 frame_0..3_5..7_12 # Frame 20
  2000 4032 3968 3968 3968 3968 8000 
  4736 6016 frame_0..3_5..7_12 # Frame 21
  12000 4544 4416 4928 7070 4834 6288 
  7906 frame_0_1_7_9..12 # Frame 22
  100 8000 3968 3968 6080 frame_9..12 # Frame 23

  quit
  return

# D:  Fire Extinguisher
sub D_Fire_Extinguisher

  5000 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 3968 
  6080 4245 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Start - all closed
  4000 7552 0 frame_7_13 # FE panel open
  500 4928 frame_7 # FE panel close

  quit
  return

# E:  Light Saber
sub E_Light_Saber

  11000 4544 4416 3968 3968 3968 3968 
  8000 4928 7168 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Open launch panel
  500 3968 frame_8 # Close launch panel

  quit
  return

# F:  Light saber - reload
sub F_Light_saber__reload

  500 4544 4416 3968 3968 3968 3968 
  8000 4928 7168 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Open panel

  quit
  return

# G:  Light saber - ready position
sub G_Light_saber__ready_position

  3000 4544 4416 3968 3968 3968 3968 
  8000 4928 7168 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Wait for launcher to retract
  500 3968 frame_8 # Close launch panel

  quit
  return

# H:  Cantina
sub H_Cantina

  1200 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Start position
  500 7983 frame_0 # Frame 1
  500 7872 frame_1 # Frame 2
  500 7296 frame_2 # Frame 3
  500 8000 frame_3 # Frame 4
  500 8000 frame_5 # Frame 5
  500 4224 4051 frame_6_10 # Frame 9
  500 7552 3968 frame_7_10 # Frame 6
  500 7168 4051 frame_8_10 # Start opening upper
  500 5184 frame_9 # Frame 12
  500 6848 frame_10 # Frame 13
  500 6848 frame_11 # Frame 14
  500 8000 frame_12 # Frame 15
  500 4544 frame_0 # Frame 16
  500 4416 frame_1 # Frame 17
  500 3968 frame_2 # Frame 18
  500 3968 frame_3 # Frame 19
  500 3968 frame_5 # Frame 20
  500 8000 frame_6 # Frame 21
  500 4928 frame_7 # Frame 22
  500 3968 frame_8 # Frame 23
  500 8000 frame_9 # Frame 24
  500 3968 frame_10 # Frame 25
  500 3968 frame_11 # Frame 32
  500 6080 frame_12 # All closed
  500 8000 7296 8000 7552 7168 6848 
  8000 frame_0_2_5_7_8_11_12 # Frame 27
  500 4544 3968 3968 4928 3968 3968 
  6080 frame_0_2_5_7_8_11_12 # all closed
  500 7872 8000 4224 5184 6848 frame_1_3_6_9_10 # Frame 26
  30500 4416 3968 8000 8000 3968 frame_1_3_6_9_10 # all closed - wait for 2nd stanza

  quit
  return

# I:  Scream
sub I_Scream

  #Set the speed of all 24 servo channels to 10:
  24 begin dup while
  dup 1 minus 20 swap speed 
  1 minus
  repeat

  500 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Frame 0
  4000 8000 7872 7296 8000 8000 4224 
  7552 8000 frame_0..3_5..7_12 # All lower open
  500 4544 4416 3968 3968 3968 8000 
  4928 6080 frame_0..3_5..7_12 # All closed

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  quit
  return

# J:  Default (all closed)
sub J_Default_all_closed

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  500 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Frame 0

  quit
  return

# K:  Deploy ARDS
sub K_Deploy_ARDS

  #Set the speed of all 24 servo channels to 10:
  24 begin dup while
  dup 1 minus 20 swap speed 
  1 minus
  repeat

  2000 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 3968 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Build up smoke
  4000 6848 frame_11 # Open panel

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  quit
  return

# L:  Lower ARDS
sub L_Lower_ARDS

  #Set the speed of all 24 servo channels to 10:
  24 begin dup while
  dup 1 minus 20 swap speed 
  1 minus
  repeat

  4000 4544 4416 3968 3968 3968 3968 
  8000 4928 3968 8000 3968 6848 
  6080 0 0 0 0 0 
  0 0 0 0 0 0 frame_0..23 # Wait for retraction
  2000 3904 frame_11 # Close panel

  #Set the speed of all 24 servo channels to normal:
  24 begin dup while
  dup 1 minus 0 swap speed 
  1 minus
  repeat

  quit
  return

sub frame_0..23
  23 servo
  22 servo
  21 servo
  20 servo
  19 servo
  18 servo
  17 servo
  16 servo
  15 servo
  14 servo
  13 servo
  12 servo
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  4 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0_4
  4 servo
  0 servo
  delay
  return

sub frame_0..3_5..7
  7 servo
  6 servo
  5 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0..3_5..12
  12 servo
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0..3_5..12_16
  16 servo
  12 servo
  11 servo
  10 servo
  9 servo
  8 servo
  7 servo
  6 servo
  5 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_8_11_16
  16 servo
  11 servo
  8 servo
  delay
  return

sub frame_8..11
  11 servo
  10 servo
  9 servo
  8 servo
  delay
  return

sub frame_0_1_7_9..12
  12 servo
  11 servo
  10 servo
  9 servo
  7 servo
  1 servo
  0 servo
  delay
  return

sub frame_2_3
  3 servo
  2 servo
  delay
  return

sub frame_0..3_5..7_12_13
  13 servo
  12 servo
  7 servo
  6 servo
  5 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0..3_5..7_12
  12 servo
  7 servo
  6 servo
  5 servo
  3 servo
  2 servo
  1 servo
  0 servo
  delay
  return

sub frame_0
  0 servo
  delay
  return

sub frame_1
  1 servo
  delay
  return

sub frame_2
  2 servo
  delay
  return

sub frame_3
  3 servo
  delay
  return

sub frame_1_7_12
  12 servo
  7 servo
  1 servo
  delay
  return

sub frame_5
  5 servo
  delay
  return

sub frame_6
  6 servo
  delay
  return

sub frame_7
  7 servo
  delay
  return

sub frame_0_1_7_12
  12 servo
  7 servo
  1 servo
  0 servo
  delay
  return

sub frame_6_7
  7 servo
  6 servo
  delay
  return

sub frame_9..12
  12 servo
  11 servo
  10 servo
  9 servo
  delay
  return

sub frame_7_13
  13 servo
  7 servo
  delay
  return

sub frame_8
  8 servo
  delay
  return

sub frame_6_10
  10 servo
  6 servo
  delay
  return

sub frame_7_10
  10 servo
  7 servo
  delay
  return

sub frame_8_10
  10 servo
  8 servo
  delay
  return

sub frame_9
  9 servo
  delay
  return

sub frame_10
  10 servo
  delay
  return

sub frame_11
  11 servo
  delay
  return

sub frame_12
  12 servo
  delay
  return

sub frame_0_2_5_7_8_11_12
  12 servo
  11 servo
  8 servo
  7 servo
  5 servo
  2 servo
  0 servo
  delay
  return

sub frame_1_3_6_9_10
  10 servo
  9 servo
  6 servo
  3 servo
  1 servo
  delay
  return

Hello.

I moved your post to the Servo controllers and servos section of the forum since it is about the Maestro.

Error 0x0100 (i.e. error bit 8) indicates a “Script program counter error”, which occurs when the script’s program counter goes out of bounds (for example if you use the “Restart Script at Subroutine command” and the specified subroutine ends with a return command, since it has nowhere to return to).

I did not see any obvious places in your script that this would happen. Can you reliably reproduce it by calling a specific subroutine? Are you sure you are only calling subroutines 0-11 (all of your subroutines after that end in a return command and should only be called from within the script)?

If you still cannot track it down, could you post the simplest complete code to call the subroutines that demonstrates the problem?

Brandon

I will have to get back to you this weekend