К вопросу о том как работать с большими числами - как известно в
Robby результат математических операций всегда сохраняется в 16-битном регистре L, однако, в соответствии с поздней спецификацией, старшая часть результата (старшее 16-битное слово) идёт в регистр H - соответственно по содержимому регистра H можно судить о том, было переполнение или нет - например, если мы будем последовательно возводить в квадрат числа и выводить в лог значения числа, регистра H и регистра L:
под спойлером печать значений от 170 до 365 с квадратом разделённым на 2 слова как это считается в
Rgrid:
square 365^2=133225=0x20869 и 0x0869 это 2153 (т.е. H=2 и L=2153)
P.S. Одна из неприятных особенностей такого подхода состоит в том, что для того, чтобы убедиться, что у нас в L действительно получилось отрицательное число, то нужно проверить знак регистра H - если там -1, то значит ответ действительно отрицательный и находится в пределах от -32768...-1, а если там 0, то было переполнение и результат является положительным в пределах от 32767 до 65535...