Hash :
acf5213f
Author :
Date :
2006-10-14T20:31:53
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
\ Test case of a branch going over too large a range
\ Body generated by the "Verbal Bottles of Beer" script,
\ (Argument of 1 is enough to do it.)
fcode-version1 \ Eight-bit offsets.
headers
: too-large-case ( n -- )
." Let's give it a large back-reference too."
begin ." We've just begun"
." 1 0 do " cr 1 0 do
dup ." if " cr
if
dup ." case"
case
0 of ." Just a short case" cr endof
." default. The Big One!" cr
fload TooLargeBranch_off08_body.fth
endcase
." then"
then
." Loop back and forward" cr loop
." And here we are!"
exit
." Well, we needed some way out!"
again ." Back to the fuchsia."
;
\ Let's make a small jump, just to see what normal looks like
: control-example
." Here's the beguine"
begin
dup ." if "
if
dup ." case"
case
0 of ." Short case" cr endof
." No default." cr
endcase
." then"
then
." Way out"
exit
." Jump back"
again ." Never do this"
;
\ Let's make a do-loop that straddles the limit
\ (I.e., the "outer" branch is just too large,
\ but the "inner" branch just fits.)
: straddle-loop
." 1 0 do" cr 1 0 do
." Take it down and pass it around..." cr
." How dry I am! How dry I am!" cr
." No body knows" cr
." How ... Dry I ... Aaaammm." cr
." Loop." cr loop
." Here we go!" cr
;
fcode-end