omercury, у нас, очевидно, разное понимание слова "массив".
Я считаю регистр одномерным, а память 2-мерным массивами, неважно как они об'явлены.
А что считаете массивом вы?
Вид для печати
omercury, у нас, очевидно, разное понимание слова "массив".
Я считаю регистр одномерным, а память 2-мерным массивами, неважно как они об'явлены.
А что считаете массивом вы?
Застрял на работе с памятью...
Без буфера нужно как-то аккуратно делать /OE для памяти...
Т.к. память читает процессор и видеоконтроллер, а еще шд должна быть свободна от памяти во время работы портов, получатеся такая схема.
/OE будет LOW когда
1) A14=1 или A15=1, /MREQ=0, /RD=0 читает процессор
2) A14=1 или A15=1, DC1 (1.75MHz) = 0 читает видеоконтроллер, вот тут нужно ли еще /RAS учитывать?
3) /IORQ=0, /M1=0 отключаем память
пока что такое не работает...
Тест 128к пока что не грузится...
Вот что имею на данном этапе
http://savepic.net/9598797.jpg
Еще непонятно откуда берутся эти вертикальные полосы.. то ли это монитор не понимает ЧБ, то ли бордер глючит...
Мне кажется вы не правы.
Процессор может читать любую область памяти и писать в любую область памяти, кроме ПЗУ.
Приоритетным должен быть видеоконтроллер.
Он должен задерживать работу процессора в то время, когда сам читает память.
А поскольку шина одна (я правильно понял?) то обращение к портам тоже останавливает процессор.
В некоторых наших старых клонах процессор придерживают через сигнал WAIT\ процессора.
Оригинальный 128+ тормозится остановкой тактовой частоты процессора.
В современных клонах, с быстрой памятью, доступ просто разделён во времени. Память успевает обслужить и видео и процессор.
Ладно, дальше сам буду разбираться, зайду сюда как всё сделаю, можете дальше обсуждать свой SV
Суть прозрачного доступа примерно в следующем
Видеогенератор читает данные в 2 раза быстрее чем ему нужно, но один из доступов его может выбить процессор, поэтому видеочасть в буфер сохраняет то что получилось прочитать.
Оба цикла процессор забрать не может, ему нужна память не чаще чем 1 такт из 3 смежных тактов
Этого я и боялся...
А как в такой ситуации обойтись без MD0..7 (а то жалко 8 пинов то...)?
Если я поставлю буфер на ШД и выведу его выводы прямо на регистр атрибутов и сдвиговый регистр, это поможет?
Если да, то как его лучше подключить? когда давать OE памяти чтобы не было конфликта с буфером? с буфером понятно, у него (~3.5 & 1.75)
PS: на /OE памяти я подаю assign RAM_OEn = (~(A14 | A15) | (RDn | MREQn)) & DC1n;
Или всё же не получится без буферов???
Буфер активируется в момент WRBUF = DC0 & ~DC1, по спаду этого сигнала данные защёлкиваются (по схеме Ленинграда)
(там фактическое чтение процессором данных, если не ошибаюсь, на такт запаздывает.
:)
А как данные для видюхи внутрь заводить?
EPM7160STC100 ;)
Можно конечно всю эту бороду с видеоформитователем вместе с буфером в какую-нибудь мелконогую EPM3064ATC44 загнать, а с неё вывод уже непосредственно на ШД.
Поставил буферы... чёт весь мозг сломал, нифига не работает...
Подключил вот так
http://savepic.ru/13402373.png
На экране всё мельтешит...