Вы прямо ATM Turbo описали Только там вместо джойстика мышь, а вместо прерывания в конце экрана - две экранных области.
Вы прямо ATM Turbo описали Только там вместо джойстика мышь, а вместо прерывания в конце экрана - две экранных области.
Когда я делал свой Специалист на дискретах, я плотно изучил временные эпюры как ВМ80 так и Z80. Я из тех, кто хочет сделать грамотно и без костылей и ненавижу тормозить процессор без крайней необходимости. Скажу, что у обоих процессоров просто куча времени, когда можно спи... :3 украсть память, не нарушая процесс исполнения команды, причем у ВМ80 этого времени больше: он требует данные только по одному перепаду Ф2, а у Z80 по обоим (так уж сделали: М1 по одному и R/W по другому). Заметьте, что по Спец собран и работает, т.е., все выкладки, которые я реализовал в нем после изучения процессоров, верны. Так что это можно применить в этом вашем Спектруме.
Я Вас понимаю... Но Вам проще. У вас только пиксели, без цвета.. Вам достаточно одного такта.
Но я могу понять и конструктора Спектрума. Всё делалось на УЛА с весьма ограниченными ресурсами. Спектруму надо 2 такта - пикселы и цвет. Фифо там вроде нет. Значет, нужен максимально простой автомат - один такт - защёлкивается пиксель, второй такт - цвет.
Вы думаете, почему экран сделан так специфично, что сначала идёт первая строка, потом 8-я и т.п.? А соседние строки разнесены на 256 байт. Только что бы на 1 строку смещаться инкрементом старшего байтика? Это тоже, но есть одно "железное" но. Всё байта знакоместа лежат в одной строке RАМ. Причём в одной же строке лежат не только пикселы одного знакоместа, но и их атрибут. Цикл обращения к видеопамяти специфичен - сначала падает RAS, с защёлкиванием строки, а потом 2 раза CAS защёлкивает адреса столбцов пикселей и атрибутов, причём отсчёлкивается так, что бы данные появлялись как раз в конце такта. Потом уже освобождается RAS.
Я не думаю, что если бы Вам надо было читать 2 байта подряд - Вы бы мягко въехали в процессор. А если не подряд - то это надо фифо и более сложный автомат. Для которого у разработчиков Спека врядли бы было место на УЛА.
ПС. Насчёт цвета погорячился - Ваш клон цветной, как я увидел опосля. Но я не думаю, что у Вас идут 2 чтения поподряд, и без фифо, так что основной посыл поста - в силе.
Последний раз редактировалось predatoralpha; 22.01.2012 в 02:58.
Синклер хотел ставить самую дешевую память
Но чередовать строки именно таким образом вовсе необязательно. Подойдет любая раскладка при единственном условии равенства любых семи битов адреса растрового байта и соответствующего атрибутного (в том числе похожая на раскладку Специалиста, растр и атрибуты в одном столбце).
Прихожу без разрешения, сею смерть и разрушение...
нет, не сводится, любая значит любая (при единственном условии для быстрого чтения)
из условия должно быть понятно, что потребоваться может и перепутывание
быструю раскладку в духе специалиста иначе и не сделать
Прихожу без разрешения, сею смерть и разрушение...
2 Lethargeek
Останемся каждый при своём мнении. Байт и атрибут должны лежать в одной строке. Остальное - ньюансы.
Меня больше интересует, как Вы в своём специалисте это решили. Самая критическая операция от процессора Z80 - вычитка первого кода операции, которая занимает 2 такта. Остальные чтения/записи берут 3 такта, и в них вклиниться легко.
У Вас сколько тактов берёт вычитка байта и атрибута видеопамяти? Вы их поподряд читаете, или можно и прервать? А доступ к памяти для процессора сколько тактов берёт?
---------- Post added at 13:26 ---------- Previous post was at 13:21 ----------
А память с каким временем доступа применяется? Те же 150 наносекунд что и в оригинале или более быстрая?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)