148 lines
7.5 KiB
HTML
148 lines
7.5 KiB
HTML
|
<?xml version="1.0" encoding="utf-8"?>
|
|||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|||
|
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="6" MadCap:lastHeight="94" MadCap:lastWidth="853" MadCap:disableMasterStylesheet="true" MadCap:tocPath="" MadCap:InPreviewMode="false" MadCap:PreloadImages="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" lang="en-us" xml:lang="en-us" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="Default.xml" MadCap:SearchType="Stem">
|
|||
|
<head><title>GOSUB Examples</title>
|
|||
|
<link href="../../SkinSupport/MadCap.css" rel="stylesheet" />
|
|||
|
<link href="../../Resources/Stylesheets/BSE_Help.css" rel="stylesheet" />
|
|||
|
<script src="../../SkinSupport/MadCapAll.js" type="text/javascript">
|
|||
|
</script>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<h1>GOSUB Examples</h1>
|
|||
|
<div class="ImagePlusCaption">
|
|||
|
<div class="Col2">
|
|||
|
<p>
|
|||
|
<img src="../../graphics/pgm_icon1.gif" border="0" alt="BS1 icon" title="BS1 icon" />
|
|||
|
<img src="../../graphics/pgm_icon2.gif" border="0" alt="BS2 icon" title="BS2 icon" />
|
|||
|
<img src="../../graphics/pgm_icon2e.gif" border="0" alt="BS2e icon" title="BS2e icon" />
|
|||
|
<img src="../../graphics/pgm_icon2sx.gif" border="0" alt="BS2sx icon" title="BS2sx icon" />
|
|||
|
<img src="../../graphics/pgm_icon2p.gif" border="0" alt="BS2p icon" title="BS2p icon" />
|
|||
|
<img src="../../graphics/pgm_icon2pe.gif" border="0" alt="BS2pe icon" title="BS2pe icon" />
|
|||
|
<img src="../../graphics/pgm_icon2px.gif" border="0" alt="BS2px icon" title="BS2px icon" />
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
<p style="text-align: right;">Syntax: <a href="../Commands/GOSUB.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">GOSUB</a></p>
|
|||
|
<p> </p>
|
|||
|
</div>
|
|||
|
<p class="clear"> </p>
|
|||
|
<p class="PlainText"> </p><pre class="BScode" xml:space="preserve">' 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
|
|||
|
</pre>
|
|||
|
<p class="PlainText"> <![CDATA[ ]]></p>
|
|||
|
<p>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.</p><pre class="BScode" xml:space="preserve">' 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
|
|||
|
</pre>
|
|||
|
<div class="Col2">
|
|||
|
<div class="MasterFoot">
|
|||
|
<p MadCap:conditions="BSEconditions.BSEWebHelp (Primary)-INCLUDE"><a href="../../HomeTopics/HomePage.htm">Go to Welcome page</a>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="Col2">
|
|||
|
<div class="MasterFoot">
|
|||
|
<p style="text-align: right;"><span class="ContactInfoProjectName">BASIC Stamp Help</span> <![CDATA[ ]]><span class="ContactInfoVersion#">Version 2.5.4</span> <![CDATA[ ]]></p>
|
|||
|
<p style="text-align: right;">Copyright © <span class="ContactInfoCompanyName">Parallax Inc.</span></p>
|
|||
|
<p style="text-align: right;"><span class="SystemShortDate">8/8/2012</span>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<script type="text/javascript">/* <![CDATA[ */
|
|||
|
|
|||
|
var _gaq = _gaq || [];
|
|||
|
_gaq.push(['_setAccount', 'UA-285614-1']);
|
|||
|
_gaq.push(['_trackPageview']);
|
|||
|
|
|||
|
(function() {
|
|||
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|||
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|||
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|||
|
})();
|
|||
|
|
|||
|
/* ]]> */</script>
|
|||
|
<script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js">
|
|||
|
</script>
|
|||
|
</body>
|
|||
|
</html>
|