Posted by Gregory Ross at 03/18/2001 9:25 AM EST
Engineer on team #330, Beach Bots, from Hope Chapel Academy and NASA/JPL.
In Reply to: Re: Ahh! Program trick confusing!
Posted by Travis Hoffman on 03/18/2001 9:00 AM EST:
Thank you for catching that.
Greg
: : OK... wait. I've just read that entire segment dedicated to the extended programming trick that involves multiple programs.. but i'm confused. Do you add subroutines before or after the "RUN" command line in your programs? For example, i'll give you the following..
: It depends on your definition of "subroutine". All subroutines within a particular program called with the GOSUB instruction from the program body must be placed AFTER the RUN statement in that program:
: 'Program 1 body
: pump = on
: GOSUB Pumptimer
: RUN 2
: 'Pumptimer subroutine
: Pumptimer:
: 'pumptimer code
: RETURN
: If, by "subroutine", you are instead referring to a smaller piece of your original unmodified program body that you placed in one of the subprograms of the new method, then this code should go BEFORE the RUN statement, just like any other regular code:
: Original Program:
: :Initialization Code
: MainLoop:
: :SERIN
: :LIGHT CODE
:

RIVE CODE
: :LIFT CODE
: :SEROUT
: GOTO MainLoop
: *************************************
: New Method:
:

rogram 0
: :Initialization Code
: :RUN Program 1
: :------------
:

rogram 1
: :SERIN
: :LIGHT CODE
: :RUN Program 2
: :------------
:

rogram 2
:

RIVE CODE
: :LIFT CODE
: :SEROUT
: :RUN PROGRAM 1 'Equivalent to GOTO MainLoop
: :------------
: You can see how program execution flows in exactly the same manner as the original program. The only difference is you have boatloads more program space to work with
: Also, shouldn't PROGRAM 0 be your first program? I could be wrong, but I thought it had to be. Program 0 is where you modify the Basic Stamp directive to include the names of programs 1-7. I have my initialize code in program 0. I then loop back to program 1 at the end of my highest-numbered program.
: Travis
: : Program 1:
: : Initialization
: : SERIN command
: : light subroutine
: : RUN Program 2:
: : -----
: : Program 2:
: : Initialization
: : Major subroutines
: : RUN Program 3:
: : -----
: : Program 3:
: : Initialization
: : minor subroutine
: : SEROUT command
: : RUN Program 1:
: : -----
: : Is that right, or did I really screw something up?
: : -Gui Cavalcanti
: : 422 (Mech Tech)