
Сообщение от
vladtru
Спасибо за ссылку. Получается, что скорость выполнения регистровых команд в UKNCBTL в точности совпадает со скоростью на реальном ПК, а вот команды, работающие с памятью, выполняются немного быстрее – в тесте команда сложения регистр-память выполняется на 14% быстрее, но в реальных программах, очевидно, разница в скорости выполнения на эмуляторе и реальном ПК не должна превышать примерно 10% (а может, и 5%, учитывая, что регистровые команды явно должны преобладать в реальных программах). В любом случае, скорость UKNCBTL, похоже, довольно близка к оригиналу.
Вы здесь предполагаете, что скорость реальной УКНЦ это константа. Но насколько я понимаю, были более быстрые и более медленные экземпляры машины, и разброс мог быть в десятки процентов. Но даже если привязывать скорость к реальному экземпляру, то проблема в том, что длительность выполнения команды не выражается целым числом тактов, как ни парадоксально это звучит. Это происходит из-за задержек на шине, которые не постоянны. В итоге тест может дать что команда выполняется в среднем за 2,333 такта, но я же не могу такую задержку забить в эмуляторе процессора -- приходится округлять до 2. Задержки вносятся другими устройствами на шине, это в частности схема формирования видео, которая приоритетна по доступу к памяти и постоянно читает память. Поэтому для более точного тактирования нужна более глубокая эмуляция.
---------- Post added at 09:41 ---------- Previous post was at 09:29 ----------

Сообщение от
vladtru
Если нам нужно просто скопировать в видеопамять какой-то, скажем, 4-цветный фрагмент типа части фона размером 16х16 точек (на практике, увы, по указанным вами причинам (чтобы упростить программирование, задействуя только ЦП) многие игры для УКНЦ были именно 4-цветными), то никакой особой разницы по скорости между БК и УКНЦ нет: что на БК мы копируем 16х4=64 байта (в каждом байте видеопамяти 4 точки по 2 бита на каждую), что на УКНЦ копируем 2 (число плоскостей)х16х2(16 точек=2 байта в ширину)=64 байта, просто расположены они в разных областях (плоскостях) памяти. Откуда вы взяли 2-3-кратное отставание УКНЦ?
Lode Runner на БК: https://github.com/nzeemin/uknc-lode...loderunner.lst
Порт на УКНЦ: https://github.com/nzeemin/uknc-lode...aster/MAIN.MAC
В порте на УКНЦ реализована работа с 4-цветными спрайтами -- т.е. совпадает с оригиналом, выставлен режим экрана 320x288.
На БК:
Код:
; Приступаем к рисованию спрайта; R1 = адрес спрайта в 10 слов -- 8x10 цветных пикселей
005322 MOV #000012, R2 ; Повторить для 10. строк
005326 MOV (R1)+, (R3) ; записываем 8 цветных пикселей в растр
005330 ADD #000100, R3 ; плюс 64. -- переход к следующей строке растра
005334 SOB R2, 005326 ; продолжаем цикл по строкам
На УКНЦ:
Код:
Z05322: MOV #000012, R2 ; Повторить для 10. строк
Z05326: MOV R3, @#176640
MOV (R1)+, @#176642 ; записываем 8 цветных пикселей в растр
ADD #80., R3 ; плюс 80. -- переход к следующей строке растра
SOB R2, Z05326 ; продолжаем цикл по строкам
Как видите, вместо одной команде в этом цикле выполняются две. Такты я не считал, но очевидно, будет несколько дольше. Для 8-ми цветных спрайтов нужно уже использовать ПП, поскольку ЦП не может работать с 3-м планом памяти.
---------- Post added at 09:55 ---------- Previous post was at 09:41 ----------

Сообщение от
vladtru
в статье написано, что в 1987 году стоимость Корвета была в 2,6 раза больше УКНЦ – это что же, получается 1600х2,6=4160 рублей??? Как-то очень странно, если, конечно, речь идёт о «голом» Корвете – без дисководов и монитора).
В условиях, когда техника была в дефиците и в магазине просто так её было не купить, абсолютные цены не так уж и интересны.
Высокая стоимость Корвета объясняется низкой степенью интеграции. У разработчиков УКНЦ была возможность собрать бОльшую часть схемы в матричные К1801ВП1, Корвет же делало другое министертсво, такой возможности не было в принципе.