%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 ¬_zero EMIT EMIT !/rest &is_zero POP EMIT &rest #20 EMIT ( print space ) JMP2r