Цитата Сообщение от ivagor Посмотреть сообщение
ПК-6128Ц позволил поставить рекорд по количеству цифр Пи для 8-битных ретрокомпьютеров - 8928!
Англичане на своей бибисишке с 32 КБ ОЗУ смогли высчитать 16200 цифр за примерно 7.4 часов. Но Мачин уважаемого blackmirror'a пока в 4 раза быстрее на 1000 знаков. Однако Вектор они обогнали во всём как абсолютно, так и относительно. Особенно хорошо они всё оформили, прямо хоть в энциклопедию!
Коды уважаемого ivagor'a спровоцировали моё желание улучшить свой порт для компьютеров на базе 8080. В результате получился код более чем на целый процент быстрее, чем у уважаемого ivagor'a, - сам этому удивился, так как часть его кодотрюков до сих пор не понял. Не понял, в частности, что он cделал с делением уважаемого blackmirror'a - сам его просто закопипастил.
Итак, на 3000 цифр версия 61 кода уважаемого ivagor'a требует 2278 секунд, а версия 6 кода litwr'a - 2254. Запускал не исходную программу уважаемого ivagor'a, а её модификацию под СР/М или Монитор. Этот модифицированный код прикрепляется. Из-за плохого знания клинописи на 8080 перевел также её на более привычный язык Z80.
Таким образом, исходный код для bare metal от уважаемого ivagor'a по прежнему абсолютный Вектор-чемпион по затвору Вагона-Рабиновича, но это не из-за превосходного качества кодов, а из-за выбранной системы, точнее отказа от любой операционной системы. За bare metal процедуру печати мелких циферок ускорение всего-то менее полпроцента на 3000 знаков, а вот кастомный мини-обработчик прерываний даёт заметный прирост в более 6%.
Сам хотел сделать такой обработчик, но монитор не делает скроллинга без стандартного тормозного обработчика. А делать bare metal с нормальным шрифтом пока не готов, не считаю себя ещё истинным вектористом. Но если делать, то цифр должно бы получиться чуть больше (на несколько десятков), чем у уважаемого ivagor'a.
К сожалению, так и не понял, как использовать деление уважаемого blackmirror'a для отрицательных делителей, поэтому использовал код, который возможно хуже, чем у уважаемого ivagor'a, но этот код задействуется только при числе цифр большем 4680, что не входит в таблицу результатов. Однако, буду признателен за подсказки. Стараюсь собирать в проекте только лучшие коды.
pi-8080-6.zip