!RosettaCode: Ethiopian Multiplication ! True BASIC v6.007 PROGRAM EthiopianMultiplication DECLARE DEF FNdouble DECLARE DEF FNhalve DECLARE DEF FNeven LET x = 17 LET y = 34 DO IF FNeven(x) = 0 THEN LET p = p + y PRINT x,y ELSE PRINT x," ---" END IF LET x = FNhalve(x) LET y = FNdouble(y) LOOP UNTIL x = 0 PRINT " ", " ===" PRINT " ", p GET KEY done DEF FNdouble(A) = A * 2 DEF FNhalve(A) = INT(A / 2) DEF FNeven(A) = MOD(A+1,2) END