retroforth/example/99Bottles.forth
crc a4e28b79d2 merge in some minor updates to the examples
FossilOrigin-Name: bde547c22b155870b9a00e14bc73feb6c165df9c78ab1b51e31f42a8bd1304d9
2018-05-10 15:39:28 +00:00

35 lines
578 B
Forth

# 99 Bottles
Display the text for the *99 Bottles of Beer* song.
~~~
[ dup n:put sp 'bottles s:put ]
[ '1_bottle s:put ]
[ 'no_more_bottles s:put ]
'bottles d:create
, , ,
:display-bottles
dup #2 n:min bottles + fetch call ;
:display-beer
display-bottles '_of_beer s:put ;
:display-wall
display-beer '_on_the_wall s:put ;
:display-take
'Take_one_down,_pass_it_around s:put ;
:display-verse
display-wall nl display-beer nl
n:dec display-take nl display-wall nl ;
:?dup
dup 0; ;
:verses
[ nl display-verse dup n:-zero? ] while drop ;
#99 verses
~~~