uxn-notebook/99_bottles.tal
2024-07-13 14:54:50 +02:00

48 lines
870 B
Tal

%EMIT { #18 DEO }
%NL { #0a EMIT }
|0100
#63 #ff STZ ( set num to 99 )
@l
beer-count print-num ( print num )
;bottles-of-beer print
;on-the-wall print
NL
beer-count print-num
;bottles-of-beer print
NL
;take-one-down print
NL
NL
beer-count #01 SUB #ff STZ
beer-count #00 EQU ?{ l }
;end print
BRK
@beer-count #ff LDZ JMP2r
@bottles-of-beer "bottles_of_beer 00
@on-the-wall "on_the_wall 00
@take-one-down "take_one_down,_pass_it_around 00
@end "no_more_bottles_of_beer 00
@print ( str* -: )
LDAk DUP #5f NEQ
?{ POP #20 }
EMIT
INC2 LDAk ?print
#20 EMIT
POP2 JMP2r
@print-num ( two digit int -: )
DUP
#0a DIV ( 25 02 )
SWP DUP ( 02 25 25 )
#0a DIV ( 02 25 02 )
#0a MUL ( 02 25 20 )
SUB ( 02 05 )
#30 ADD SWP #30 ADD
DUP LIT "0 EQU ?/is_zero
&not_zero EMIT EMIT !/rest
&is_zero POP EMIT
&rest
#20 EMIT ( print space )
JMP2r