Цитата Сообщение от 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, Корвет же делало другое министертсво, такой возможности не было в принципе.