Na fali uniesienia bardzo dobrą pozycją dema Back To Old Scholl na SV podsyłam kod liczący pierwiastki kwadratowe. Funkcja jest w formie makra, dzięki czemu można ją dopasować do swojego kodu i zaoszczędzić na BSR/JSR :P Parametry makra wyglądają następująco: rejestr z liczbą do spierwiastkowania, rejestr z wynikiem, rejestr pomocniczy1, rejestr pomocniczy2, rejestr adresowy z tablicą pomocniczą. Wygląda skomplikowanie, ale tak nie jest. Przykład wywołania:
sqrt_on_tabs d0,d1,d2,d3,a6, gdzie w d0 liczba do spierwiastkowania, a w d1 wynik. Zresztą zamieszczony przykład jest wart więcej, niż 1000 słów.
Wadą (niewielką) przygotowanego rozwiązania jest brak zaokrągleń do najbliższej liczby całkowitej (zaoszczędziłem jedno dzielenie), czyli pierwiastek z 25 będzie równy 5, ale pierwiastek z 35 wyniesie również 5 i dopiero pierwiastek z 36 da w wyniku 6 :) Z praktycznego punktu widzenia nie ma to absolutnie żadnego znaczenia - wszystkie lightsource w BTOSie są liczone tą metodą.
Zaletą jest oczywiście szybkość - do 65535 funkcja obywa się zupełnie bez dzielenia.