' GOSUB.BS1 ' This program is a guessing game that generates a random number in a ' subroutine called Pick_A_Number. It is written to stop after three ' guesses. To see a common bug associated with GOSUB, delete or comment ' out the line beginning with END after the FOR-NEXT loop. This means ' that after the loop is finished, the program will wander into the ' Pick_A_Number subroutine. When the RETURN at the end executes, the ' program will go back to the beginning of the program. This will cause ' the program to execute endlessly. Make sure that your programs can't ' accidentally execute subroutines! ' {$STAMP BS1} ' {$PBASIC 1.0} SYMBOL rounds = B2 ' number of reps SYMBOL numGen = W0 ' random number holder SYMBOL myNum = B3 ' random number, 1-10 Setup: numGen = 11500 ' initialize random "seed" Main: FOR rounds = 1 TO 10 DEBUG CLS, "Pick a number from 1 to 10", CR GOSUB Pick_A_Number PAUSE 2000 ' dramatic pause DEBUG "My number was: ", #myNum ' show the number PAUSE 1000 ' another pause. NEXT DEBUG CLS, "Done" END ' end program ' Random-number subroutine. A subroutine is just a piece of code with ' the RETURN instruction at the end. Always make sure your program enters ' subroutines with a GOSUB. If you don't, the RETURN won't have the ' correct address, and your program will have a bug! Pick_A_Number: RANDOM numGen ' stir up the bits of NumGen. DEBUG numGen, CR myNum = numGen / 6550 MIN 1 ' scale to fit 1-10 range. RETURN ' go back to 1st instruction
NOTE: The example below is written for the BS2 and will run on any of the BS2-family modules. Modify the $STAMP directive (as required) before downloading to the BS2e, BS2sx, BS2p, BS2pe, or BS2px.
' GOSUB.BS2 ' This program is a guessing game that generates a random number in a ' subroutine called Pick_A_Number. It is written to stop after three ' guesses. To see a common bug associated with GOSUB, delete or comment ' out the line beginning with END after the FOR-NEXT loop. This means ' that after the loop is finished, the program will wander into the ' Pick_A_Number subroutine. When the RETURN at the end executes, the ' program will go back to the beginning of the program. This will cause ' the program to execute endlessly. Make sure that your programs can't ' accidentally execute subroutines! ' {$STAMP BS2} ' {$PBASIC 2.5} rounds VAR Byte ' number of reps numGen VAR Word ' random number holder myNum VAR Byte ' random number, 1-10 Setup: numGen = 11500 ' initialize random "seed" Main: FOR rounds = 1 TO 10 DEBUG CLS, "Pick a number from 1 to 10", CR GOSUB Pick_A_Number PAUSE 2000 ' dramatic pause DEBUG "My number was: ", DEC myNum ' show the number PAUSE 1000 ' another pause. NEXT DEBUG CLS, "Done" END ' end program ' Random-number subroutine. A subroutine is just a piece of code with ' the RETURN instruction at the end. Always make sure your program enters ' subroutines with a GOSUB. If you don't, the RETURN won't have the ' correct address, and your program will have a bug! Pick_A_Number: RANDOM numGen ' stir up the bits of NumGen. DEBUG DEC ? numGen myNum = numGen / 6550 MIN 1 ' scale to fit 1-10 range. RETURN ' go back to 1st instruction ' after GOSUB that got us here
BASIC Stamp Help Version 2.5.4
Copyright © Parallax Inc.
8/8/2012