Тогда при чем сдесь CAS? Это ты хочешь ИР1 оставить?Ну ее на...
Вид для печати
Это если менять с минимальной доработкой. Если ее убрать, то будет еще проще.
Судя по тому, что существует ZX Spectrum на ATMega (+ внешнее ОЗУ) и не только ZX Spectrum, то можно и весь РК86 туда засунуть.
У РК86 процессор попроще, скорость поменьше.
kovdry, в схеме, которую ты поместил в #1 ошибка.Ты на CS статики завел А15, но это половина дела.А15 надо совместить со схемой начального запуска.При сбросе у тебя получится, что на ШД одновременно подключено ОЗУ и ПЗУ.
:v2_dizzy_facepalm:Действительно, глюк. Хорошо что обнаружилось на этапе проектирования и микросхемка не спалилась.
---------- Post added at 16:05 ---------- Previous post was at 16:01 ----------
Большое спасибо Vladimir_S, что заметил, я со всеми этими преготовлениями детально схему не анализировал.
Вот для этого, народ, я и выложил схему на обсуждение.
Теперь буду думать как этот глюк устранить минимальными затратами.
Это просто.Незадейстованную 6 ногу ТМ2 и А15 или через 2ИЛИ или с тем же успехом через ИСКЛЮЧАЮЩЕЕ ИЛИ.
---------- Post added at 17:09 ---------- Previous post was at 17:08 ----------
Тем более, что один элемент ЛП5 освободился.
---------- Post added at 17:10 ---------- Previous post was at 17:09 ----------
А инверсию делать будешь?
2И то как раз все и кончились:v2_dizzy_facepalm:
А ИСКЛЮЧАЮЩЕЕ ИЛИ тут не совсем катит...
хотя, вариант с ИСКЛЮЧАЮЩИМ ИЛИ надо проанализировать
Посмотрел как это реализовано в аналогичном клоне с ОЗУ UM61512
http://i049.radikal.ru/1206/eb/746a1d6386f7.gif
Там стоит вентель ИСКЛЮЧАЮЩЕЕ ИЛИ инверсного выхода триггера начального старта 6 DD13 и линии А15. Если начальный триггер сброшен, то адреса ОЗУ отображаются не на нижних, а на верхних 32 кб адресного пространства. Это устраняет конфликт с ПЗУ. Конфликта с УВВ в старших адресах так же не возникает, поскольку дешифратор адреса заблокирован и ни одно УВВ при сброшенном начальном триггере не выбирается. Вроде все хорошо.
Непонятно только что будет если сигнал сброса поступит в момент когда процессор выполняет цикл шины с УВВ на чтение? Но думаю ничего серьезного. Логически: безразлично чем закончится этот цикл, поскольку наступает состояние сброса, физически: даже если будет конфликт по выходам, длится он будет не долго и возникает редко. Так что вероятность сбоя при таком включени очень близка к нулю.
Значит ставлю запасной вентель ИСКЛЮЧАЮЩЕЕ ИЛИ !
Хотя не изящно как то получилось, но не ставить же для этого лишнюю ЛЛ-ку?
Тут я выяснил, что не только не внимательно составляю схемы, но так же плохо читаю чужие.:v2_dizzy_wall:
Впредь постараюсь быть повнимательнее, а то при монтаже могут быть потери среди уважаемых советских жуков.:eek_std:
Еще раз спасибо тебе, Vladimir_S!
Так эту схему рисовал я.
---------- Post added at 12:29 ---------- Previous post was at 12:25 ----------
А по моему наоборот, пока на 6 ноге ТМ2 стоит 1, на выходе ЛП5 инверсное значение А15. Когда на 6 ноге ТМ2 установится 0 выход ЛП5 будет повторять А15.Что и требуется.
---------- Post added at 12:45 ---------- Previous post was at 12:29 ----------
1 на CS ОЗУ переводит выходы ОЗУ в высокоимпедансное состояние.Проще говоря - отключает.
Перезалил схему в первом посте
http://zx.pk.ru/showpost.php?p=525935&postcount=1
Самая подробная документация на i8275 есть на английском языке.
Это фирменный даташит www.jbox.dk/rc702/intel-8275.pdf
Есть попроще описание на русском языке. Это журнал "Микропроцессорные средства и системы" №3 за 1985г. на стр. 51 есть статья: Принципы организации и работы дисплеев на основе БИС КР580ВГ75 Д.И. Панфилов и др.
Думаю, что информации из этих источников вполне достаточно.
Если вы HardWareMan, хорошо владеете языком моделирования оборудования для CPLD, можете вполне нарисовать программную модель.
Основная проблема тут в тестировани.
Как вы собираетесь тестировать модель?
Программ использующих возможности ВГ75 почти нет. Моя будет первой.
Хрен знает чем тестировать.
Предположим, что созданную модель вы запихнете в CPLD клон РК. Но РК не использует всех возможностей ВГ75.
На мой взгляд CPLD модель i8275 нужно создавать не применяясь к реализации ее в каком нибудь конкретном компьютере, а применяясь к ее оригинальной схемотехнике. Как описано в даташите, два буфера на 80 байт, два 16 байтных стека и т.д. И реализовывать ввесь функционал, даже тот, который никогда не использовался, вплоть до светового пера.
Потом создать модель какого нибудь компьютера, например РК, включить туда модель ВГ75. Потом дорабатывать модель РК с тем, чтобы проверять незадействованные функции ВГ75.
А кто спорит то? Просто сказано было правильно: не отключает ОЗУ на совсем, а переводит в верхние адреса. И если ПДП внезапно захочет прочесть из 8000-FFFF то он прочтет именно ОЗУ. Но для ВМ80 это не важно, ибо чтение из этой области автоматически отключает схему начального пуска.
А никак. Я не собираюсь собирать РКшку, поэтому мне не нужна ВГ75. Но я мог бы это сделать кому-то, если была бы такая просьба. Почитал датащит наискосок. Только 4 управляющих атрибута отрабатываются внутри микросхемы - это конец_строки, конец_кадра и их пара с остановкой ПДП. Остальные атрибуты требуют логической схемы между знакогенератором и сдвиговым регистром, которой я не наблюдаю у РКшки (ну кроме гашения и инверсии, последняя не реализована в новой схеме). А теперь скажите мне, зачем делать все возможности ВГ75, если они не используются? Достаточно только гибкости экранной области (за счет ПДП), управляющие коды разрыва строки/кадра и пары атрибутов гашения/инверсии.
Тогда уж создавать ее отдельным чипом и подключать, скажем, к МК.
Что за чушь?У ОЗУ старший адрес А14.И 1 на /CS именно отключает ОЗУ, а никуда не переводит.И какой может быть ПДП если такое состояние длится пока процессор не считает первые 3 байта.Как только процессор перейдет на реальный адрес монитора ТМ2 устанавливается в 1 т.е. на 6 ноге 0.Ну не мне тебе объяснять.ОЗУ ни при каких условиях не может залезть в адрес старше 7FFFH.
Если вы не будете правильно обрабатывать атрибуты, то программы, которые их используют не будут работать. Собьется синхронизация и экран будет мельтешить.
Еще очень нужная возможность ВГ75, это определение конца кадра. Внутри ВГ75 находится триггер, который устанавливатся в при рисовании нового кадра и сбрасывается при чтении.
И еще надо учитывать возможности ВТ57. Там два канала. Если в начале кадра настроить каждый канал на свою область памяти, то верхняя часть и нижняя часть экрана будет отображать разные области памяти.
Можно задать размер видеопамяти равный двум строкам, тогда на экране каждая пара строк будет дублироваться. Я думал таким образом сделать демку, где весь экран будет в попиксельно двигающихся надписях.
А можно установить размер видеопамяти в два раза больше, чем требуется. Тогда получится режим аналогичный Спектрумовскому Гигаскрину. Т.е. 32 цвета. И без какой либо программной поддержки.
vinxru, когда от тебя демку на РК-86 ждать? :)
Если запустить с адреса 100h, то рисует заставку, потом виснет. Знакогенератор явно не подходит. Может это не для 86РК? Хотя ВГ75 ищет по адресу 0C000h, как у 86РК.
Либо действительно, при считывании на один бит сместилось, вместо пробела - @.
Точно, один бит потерялся. Вот что видно, если сместить верхнюю строку на 1 бит:
Неизвестно, что было оригиналом, а что доработкой. Но вот в этой версии есть поддержка цвета, а в предыдущей версии запись по адресу 0A000h забита другим адресом 7FFFh.
Ошибка чтения (смещение на один бит) началась по адресу 0DA9h (адрес в файле). Вот данные с адреса 0DA8h:
твой вариант: 0E D5 5E 1C 7C 10 65
этот вариант: 0E DA AF 0E 3E 08 32
Тоже читается с ошибкой, но работает.
kovdry, посмотрите, вот интересный проект: http://www.nedopc.org/forum/viewtopi...er=asc&start=0
(начиная с сообщения 4)
Жалко, что автор забросил идею, но можно было бы с ним связаться и попросить исходники.
Это эмулятор рк на авр, и он даже работает.
Вот ещё один подобный проект: http://zx-pk.ru/showthread.php?t=16746
Действительно...
Извиняюсь.
Вложил битый файл.
Это знаменитый Boulder Dash.
На эмуляторе Emu80/SDL, когда героя прибивают ввесь экран моргает,
а в реале нет.
Очевидно, что эта игрулина изменяет параметры ВГ75, потому что псевдографика становится графикой (исчезают строки подчеркивания).
b2m, в вашем эмуляторе на FPGA тоже происходит такой эффект, или экран отображается подругому?
У меня есть еще любопытная программа: игровой интегратор от фирмы Sirius. С ним идут 5 игр: Higway, Snake atack, Snamus, Mister Jaws и Music code. Только она защищена от копирования и существует только в виде wav файла с оригинальной кассеты. Взламать руки не доходят. Так вот там параметры экрана тоже серьезно изменяются. Если кому охота повозится, могу выложить. Только там размер 34Мб (32кГц, 16бит моно).
Во вложении исправленный Boulder Dash
У меня в эмуляторе тоже моргает, т.к. инверсия реализована. В FPGA тоже.
Ещё не смотрел, но должно быть также, как в эмуляторе.
У меня есть аналогичный сборник для Микроши. С ним связана интересная история. На реале оно работало, а в эмуляторе - нет. После долгих разбирательств выяснилось, что оно считает контрольную сумму по адресам, где нет вообще ничего. Т.е. там должно было возвращаться слово состояния процессора (не путать с psw), а у меня было FF.
Kakos_nonos, спасибо за ссылки!
Конечно я уже просматривал эти ссылки перед тем, как приступить к проектированию.
Есть еще две интересные иностранные ссылочки:
1. Немец, который склепал CP/M-80 на ATMega88 http://www.mikrocontroller.net/articles/AVR_CP/M
Тут наверняка используется эмуляция команд i8080 или Z80. Когда буду эмулировать процессор обязательно изучу исходники это проекта.
2. вывод текстового терминала на телевизор http://www.batsocks.co.uk/products/Other/TellyMate.htm
Вывод происходит посредством SPI интерфейса
Защиту снять проблематично, т.к. там используется своя процедура чтения с магнитофона.