Такая идея. Когда для вещественных вычислений не так важно быстродействие, как объём занимаемой памяти, можно разработать модуль ZXRomCalc, который предоставит доступ к подпрограммам
вещественного калькулятора Спектрума (RST #28) вместо более быстрой, но менее точной и менее компактной реализации вещественных вычислений SDCC. Выглядеть это может, например, так:
Код: "OBERON"
MODULE TestCalc;
IMPORT Calc := ZXRomCalc;
VAR
result: INTEGER;
BEGIN
Calc.IntToStack(24); (* Положить на стек калькулятора число 24. *)
Calc.Run; (* Запуск калькулятора (RST #28). *)
Calc.PiDiv2; (* Ложим на стек число Пи/2 (#A3). *)
Calc.Mult (* Умножим 24 на Пи/2 (#04). *)
Calc.Done; (* Закончили работать с калькулятором (#38). *)
result := Calc.StackToInt(); (* Выводим округленный результат в целую переменную result. *)
END TestCalc.
Этот пример будет занимать чуть более десятка байт, а вещественная арифметика SDCC — не один килобайт. Интересно было бы конечно поэкспериментировать на Z80 с вещественной арифметикой пониженной точности, возможно, она была бы полезной.
Реализовывать такой модуль в ближайшем будущем не собираюсь за ненадобностью, но пусть идея идёт в массы.