' LOOKDOWN.BS1
' This program uses LOOKDOWN followed by LOOKUP to map the numbers:
' 0, 10, 50, 64, 71 and 98 to 35, 40, 58, 62, 79, and 83, respectively.
' All other numbers are mapped to 255.
' {$STAMP BS1}
' {$PBASIC 1.0}
SYMBOL num = W0 ' holds current number
SYMBOL result = W1 ' holds mapped result
Main:
FOR num = 0 TO 100
result = 255 ' default value for no match
LOOKDOWN num, (0, 10, 50, 64, 71, 98), result
LOOKUP result, (35, 40, 58, 62, 79, 83), result
DEBUG "Num = ", #num, "Result = ", #result, CR
PAUSE 100
NEXT
END
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.
' LOOKDOWN.BS2
' This program uses LOOKDOWN to determine the number of decimal digits in
' a number. Since LOOKDOWN uses a zero-indexed table, the output will be
' the number of digits minus one, so this gets corrected in the following
' line. Note that zero is considered a valid number and has one digit.
' {$STAMP BS2}
' {$PBASIC 2.5}
aNum VAR Word ' random number
stpSz VAR Word ' FOR-NEXT step size
numDig VAR Nib ' digits in aNum
Setup:
stpSz = 2
Main:
FOR aNum = 0 TO 15000 STEP stpSz
LOOKDOWN aNum, <[0, 10, 100, 1000, 10000, 65535], numDig
' right-justify output
DEBUG "aNum = ", REP " "\(5-numDig), DEC aNum, TAB,
"Digits = ", DEC numDig, CR
PAUSE 250
LOOKDOWN aNum, <[0, 10, 100, 1000, 10000, 65535], stpSz
LOOKUP stpSz, [2, 2, 5, 25, 250, 500, 1000], stpSz
NEXT
END
BASIC Stamp Help Version 2.5.4
Copyright © Parallax Inc.
8/8/2012