А где Вы посмотрели схему КР-04 ? Не поделитесь ли ссылкой ?Цитата:
Сообщение от freddy
Видел только фотографию печатной платы КР-04, а его схемы не нашёл. Схема интересует, чтобы узнать как ставить в РК86 системный контроллер ВК28.
А где Вы посмотрели схему КР-04 ? Не поделитесь ли ссылкой ?Цитата:
Сообщение от freddy
Видел только фотографию печатной платы КР-04, а его схемы не нашёл. Схема интересует, чтобы узнать как ставить в РК86 системный контроллер ВК28.
Сегодня листал 74 серию и нашел там сист. контролер для I8080.
Электроника КР-04 схема
- - - Добавлено - - -
freddy, а можно ВТ57 так подключить, чтобы при чтении из области видеопамяти совместно с процессором он получал "черный снег" для ВГ75 и захват шины получался бы фиктивный? Т.е. сделать как в CGA или если хотите в ЮТ-88. Или это проще без ВТ57 сделать? Собрать его урезанный эмулятор на рассыпухе. Атмегу пока не рассматриваем чисто из спортивных соображений :)
А его можно как то не по букварю поставить?
Не сыпьте соль на раны :) У мня есть несколько мыслей, но они пока еще не оформились. "Целый процессор" тратить не интересно, поэтому пока меня почему то потянуло в сторону микропрограммного автомата (читай - FSM) на пзушке и регистре.
Насчет этого не стоит беспокоиться. Его не возможно как то по-другому включить
Вы смотрели схему графического режима, которую я выкладывал выше. Я ее и раньше сюда выкладывал, только никто не замечает, что Там же все реализовано. Используется отложенная запись со стороны процессора и штатная работа ВГ75. Половина CCLK отдана ВГ75 на выбор символа, а вот в течении другой половины шина памяти отдана вот тому цифровому автоматику, который выставляет адрес и пишет данные из буфера ( 3 регистра ИР82 (три, Карл), на схеме их нет, они были изображены в схеме видеокарты) в видеопамять.
В итоге никто не мешает друг дгугу. И черного снега не выпадает :) Так вот в случае ВТ57 я бы на Вашем месте подумал о ее торможении в момент записи со стороны процессора. Опять же чтобы не было черного снега :)
- - - Добавлено - - -
Тормозить ее можно, тормоз типо 8080 еще не скоро сможет очередной байт послать, ВТ57 наверстает упущенное :)
- - - Добавлено - - -
ну или... чтоб огород не городить, заведите видеобуфер на удвоенной частоте, половину отдайте ВТ57.
Да, как бы не так. Я в начале 90-х столкнулся с тем, что в РК86 КР580 плохо турбируется. А имея опыт, установки ВК28 в СПЕЦИАЛИСТ, где это помогло разогнать КР580 до 3.75 МГЦ, решил и в РК86 поставить ВК28.Цитата:
Сообщение от freddy
Сделал акуратную платку переходник. На крошечной платке установил ВК28 и КР580, а снизу припаял штырьки отломанные от дохлых 27256, чтобы вся конструкция втыкалась в панельку КР580 вместо него. И бац... резко обломился.
РК86 не обычный компьютер, здесь обычные мерки не годятся. Сколько ни бился, так и не заработало, хотя когда втыкаешь эту же платку в СПЕЦИАЛИСТ, всё работает без проблем. Эту платку КР580+ВК28 имею до сих пор (могу сфотографировать), но как заставить её работать на РК86, не знаю. Некоторые люди уже установили ВК28 на РК86, но подло скрывают эту ценную информацию от народа.
Xrust, смотрите даташит Intel на i8257, особое внимание обратите на сигнал HLDA и у Вас появится улыбка :)
Все оказывается проще :)
- - - Добавлено - - -
Смысл такой: процессор произвел запись в буферные регистры. От его сигнала $WR$ тормозится ВТ57, заканчивая текущий цикл. Как затормозится, переключаем шины видеобуфера к буферным регистрам и в этом же такте производим запись. В следующем такте отдаем шину назад ВТ57 и в этом же такте ее растормаживаем. Усе! Радуемся!
Решил я попробовать разжевать написанное выше. Вот зарисовал.
Вложение 61210
Это для тех кому количество корпусов не имеет значения. Схемка немного упрощена, на ней всего лишь показано формирование сигнала записи в видеобуфер. В чем же она упрощена будет потом. А сейчас опишу процесс. И так, проц решил записать. Не важно как, в материнке будет сформирован сигнал записи в видеокарту ~VB_WR (из каких-то адресов и самого WR). Адрес и данные защелкнулись в U22-U24. Триггер U16A сработает по заднему фронту. Таким образом, кроме запоминания сигнала записи, избавились от проблемы с его шириной. На входе D U16B появится 1. Однако, предположим что в этот момент ВТ57 во всю пересылает байты в BURST режиме ВГ75-м. Записи не произойдет так как триггер U16B будет удерживаться сигналом захвата шины ~BSEN Поэтому мы с выхода ~Q U16A начинаем тормозить ВТ57. Как только она тормознет, отпустит шину и запись 1 в триггер U16B произойдет. Сформируется сигнал записи в видеобуфер ~MW. При этом неактивный сигнал занятости внутренней шины, включит выходы U22-U24 и все получится. Синхронно с CCLK сигнал ~MW через U17A сбросит U16А, который отпустит ВТ57. Она сново захватит шину и продолжит...
Схемка упрощена. Тута показано только формирование записи в видеобуфер. А еще нужно писать в ВГ75 и ВТ57. Ну хотя бы писать. При этом они на внутренней шине и нужно для них дешифратор адресав внутренней шины для записи в регистры. Вот это сами дорисуйте. А то слишком легко все получается :)
Вот этот вариант наверное самый красивый с точки зрения олдфила: проц компа (на плате VGA никакого проца не ставим) только пишет в буфер на плате видеокарты (читать видео-буфер ему не надо т.к. запись дублируется и в собственном ОЗУ компа т.к. плата в адресном пространстве, при надобности можно оттуда прочитать), ВТ57 и две ВГ75 (256 символов + цвет) выводят этот буфер на VGA. Все остальное (переключаемые фонты, множественные экранные плоскости и т.п.) легко каждый сделает по вкусу, т.к. для такого варианта всё это дополнительное может быть сделано сугубо аппаратно.
Выкладываю инициализацию видеогенератора, чтобы могли переделать под любой проц. После выполнения этой последовательности, появится картинка и курсор, нужно срочно стартовать DMA.
Скрытый текст
Код HTML:vg75_ini: clr r16
rcall vg75_cmd
ldi r16,79
rcall vg75_dat
ldi r16,0b10011000
rcall vg75_dat
ldi r16,0x0F
rcall vg75_dat
ldi r16,0b00011001
rcall vg75_dat
cli
ldi r16,0b00101111
rcall vg75_cmd
cbi PORTA,vg75_cs ;Wait screen start
sbi PORTA,vg75_a0
out DDRC,zero
cbi PORTA,vg75_rd
nop
nop
nop
nop
sbi PORTA,vg75_rd
vg75_ini1: nop
nop
nop
cbi PORTA,vg75_rd
nop
nop
nop
nop
in r16,PINC
sbi PORTA,vg75_rd
sbrs r16,5
rjmp vg75_ini1
sbi PORTA,vg75_cs
cbi PORTA,vg75_a0
ldi r16,0xFF
out DDRC,r16
sei
ret
[свернуть]
Там есть ожидание конца экрана, требующее операции чтения из ВГ75. Если DMA стартовать сразу же после команды инициализации ВГ75, то можно не ждать, так как ВГ-шка начинает всегда сначала. И обойтись только записью.
А почему нельзя запустить ПДП перед инитом ВГшки? Я где-то, что-то прощелкал и недопонимаю?
Надо все ж разгрести стол будет и собрать макет, живьем понюхать.
freddy, я правильно понял, что представленная на предыдущей странице схема рассчитана на то, что запись в видеопамять из регистра должна успеть произойти между циклами записи процессора? Если же процессор будет слишком быстрый или запись будет производиться, например, контроллером ПДП материнки, то информация просто пропадет. По идее, такую ситуацию можно избежать, если предусмотреть торможение процессора или другого устройства, пока видеокарта не будет готова принять очередную порцию данных, верно?
Xrust, Какой процессор будет? И сколько МГц?
Только если процессор тормозить Wait'ом придется схему отложенной записи переделать. ТМ-ка то сейчас по заднему фронту срабатывает, когда для процессора поезд уже ушел. Хотя затянется следующая операция, а она не может же быть записью в видео буфер. Или может? Но все равно как-то некрасиво.
Для чтения опять же нужно передний фронт уже ~VB_RD вылавливать. Вопрос, только, зачем текстовый экран может понадобиться читать? Но для красоты можно сделать. Подозреваю, что для этого дела АП10 (646) должна хорошо зайти в качестве буфера данных.
freddy, предполагается, что процессор можно поставить практически любой, по вкусу, начиная от кр580вм80а@2.8МГц :)
Хмм... А чем черевато если на clk U16:A подать инвертированный сигнал записи(чтения), HLDA завести на WAIT проца, а вместо регистров U22...24 поставить буфера для изоляции шин?
И возможно мультиплексоры/буферные эл-ты для разгребстись с CS/RD/WR'ами...
Xrust, Под любой процессор нужно предусмотреть сигнал готовности READY с выхода триггера U16A. Если под тот с которого "начиная", тогда ничего не надо.
- - - Добавлено - - -
TomaTLAB Зачем вы так упорото пытаетесь тормозить процессор? Он и так пишет очень медленно по сравнению с CCLK.
Приведите пример пересылки одной области памяти в другую и посчитайте такты.
Может тогда я смогу помочь чем то.
Да, я пока не пытаюсь :) Просто рассматриваю разные варианты, пока чисто умозрительно. Можно конечно, для себя "на бумажке", но когда пишешь на форуме - глядишь кто мыслю умную подкинет, да и сам когда перечитываешь иногда видишь, что глупость сморозил :)
Вот у тов. Xrust'а, насколько я понимаю, проект в той же примерно стадии мозгового переваривания. Мне диапазон процессоров видится от ВМ80А до Z84C0020 как супер-мега-турбо вариант :)
Ясно. Вот пример вывода сообщения с адресом [HL] в экранный буфер с адреса [DE], конец сообщения обозначен как обычно 0.
rep: mov A,M
cpi 0
rz
stax D
inx H
inx D
jmp rep
Итого имеем 7+7+5(если не 0)+7+5+5+10=46тактов на один байт.
Отложенная запись сработает в самом худшем случае на 5-том такте CCLK после записи в видеокарту. К стати, кто знает почему не позже 5 такта, подскажите?
Итого, если процессор будет работать на CCLK (~3,2Мгц), то в худшем случае видеокарта работает быстрее в 10 раз, в лучшем в 20-30раз.
Z80@20Мгц выглядит тормозом.
Подкидываю. Учите кунг-фу, т.е. ассемблер, потом в жизни легче станет.
И еще одна. Видеокарта - это не для новичков, хоть тема и находится в разделе для начинающих.
На цикл ПДП 4 такта - отсюда ноги?
Ассемблер я знаю 51-й, AVR и 8080, Z80 поверхностно, правда лет 10 на асме не писал, кроме мелких процедур (прерывания обычно) для МК. Вот сейчас со скрипом вспоминаю :)
Если у ВГ-шки интервал между burst'ами установлен в 0 она так и будет DRQ держать активным пока все не выгребет?
freddy, Зачем лишний байт убивать?
Верно. Если запись со стороны процессора придет в момент начала цикла, то на 5-м такте гарантировано произойдет отложенная запись. Это худший случай.
А еще будут случаи, когда ВТ57 вобще не активен, тогда на 1-м такте и будет запись :)
Vladimir_S, Это был пример для наглядности.
Мне вот интересно, схема то видео карты когда будет? Мне бы хотелось такое подключить на Профик, ВГ 75 текствый экран крутой, здорово. 19 страниц обсуждения и всё схем нет.
Vadim, Вам на блюдечке? :) Базовых схем уже вагон и маленькая тележка. Выбирайте, компонуйте, обвязывайте под свою любимую платформу.
Мое мнение, конечно, но тема как раз развивается так как надо, т.е. без конкретных привязок к архитектуре даже самой видеокарты.
Объем и распределение памяти, диапазоны адресов в платформе, количество цветов и фломастеров - все можно выбрать на свой вкус :)
Vadim, Я сейчас занят видеотерминалом на 2xВГ75. Пока только печатка готова. Как закончу, то видеокарту буду делать уже на базе нового видеогенератора. Так как, вариант без интеллекта на борту сможет с таким видеогенератором лучше работать. И, действительно, здесь не будет привязки к конкретной архитектуре.
Да ладно? Все просто, времени вот мало. В этой ветке родился вполне качественный, рабочий видеотерминал. Это уже не плохо для ВГ75.
Новый будет еще и с скоростным портом... В общем тема движется понемногу.
- - - Добавлено - - -
К стати видеокарту можете сами построить какую надо. Видеогенератор здесь нарисован, кусок интерфейса тоже. Можете сами дорисовать остальное, я специально оставил поле для творчества
И это правильно!:v2_thumb: А то как готовое, так критиков понабежит, успевай отмахиваться :)
У меня теперь вопрос по ВТ57 назрел. У нее же счетчики тупые? Если начальный адрес указать под самой верхушкой и размер блока для автозагрузки будет больше чем остаток до верхушки - начнет с нулевого адреса грести? То есть можно циклический аппаратный ролик по всем 64к сделать?
Я когда-то занимался схемотехникой, но сейчас времени нет. Даже готовую плату спаять и то время надо искать. Это раз. Потом отладка, нужно что бы всё было как говорится "на мази", что бы у нас была макетка, где мы быстро схему собрали, и отладили. Задержки распространения и прочее ведь вносят свою нехорошую лепту. Сколько есть клонов 8-и бит машин, чаще спектрум совместимых, которые работают плохо. Почему? Потому что плохо схема сделана. Без учета задержек, без компенсаций. При 3,5Мгц оно вроде как то ещё работает, а повышаем частоту до 7-8 или 10-12 Мгц и всё, вся схема разъехалась, глючит и тупит. Конечно к данной теме это мало относится, но всё же. Меня конкретно интересует схема на ВГ75 с отображением видеобуфера на ОЗУ. Так, как это сделано на ПЦ. Ставим карту в комп. У нас есть поты определенные, к которым подключены регистры. Когда нам надо, подключили ОЗУ карты в адресное пространство Z80. Сделали запись или перемещение, отключили. На такой карте можно будет организовать видеовывод в системе CP/M и писать под него демки. Выход на VGA при этом очень и очень замечателен. (конфликт с ОЗУ компа разрешается маппером, давно уж я продумал простую логическую схему на 4 окна, когда мы задаем для каждого окна в 16К его режим. Один байт хранит режимы для всех 4-х окон. По 2 бита на окно, 4 состояния 0 - маппинг как без схемы маппера, 1 - подключаем ОЗУ, 2 - подключаем ПЗУ, 3 - ничего не подлюкчаем вообще - как раз для ОЗУ/ПЗУ внешних устройств - красиво и просто.)
Они вроде еще и короткие, не более 16к, если я правильно вашу мысль понял.
- - - Добавлено - - -
Vadim, я примерно так для себя задачу и сформулировал. Спроектировать универсальную систему для CP/M с возможностью установки любого совместимого процессора. Для этого и разрабатываю сейчас универсальную видеокарту, которая сможет текстовые режимы 80x25 и простую графику низкого разрешения. При чем выводить все это она должна на VGA.
В CP/M вобще не предусмотрено наличие видеокарты. Ему нужен видеотерминал, так он уже есть.
Можно. У нас будет режим работы с автозагрузкой канала 2. Поэтому перепрограммированием начального адреса в канале 3 можно получить аппаратный вертикальный скроллинг.
Так прикрутите DMA к видеогенератору на 2хВГ75. Будет Вам и VGA и 8 цветов фона и 8 цветов символа и 80х25 и 256 буковок красивых 8х16.
DMA прикручивается в стандартном включении, как в букваре Intel. Подойдет как ВТ57, так и ВТ37.
Видеокарту я решил пока не разводить. У меня все консольное, что Debian, что Free BSD, что CP/M и, даже, мой модем US Robotics Courier, все хотят видеотерминал VT100. Вот и все, на memory mapped style было забито за ненадобностью. Зато будет высокоскоростной порт, на нем будет командный процессор и клавиатура, так же как и RS232, только без физического RS232. В качестве умной видеокарты в самый раз :)
А для текста и этого много. Если я не ошибаюсь, там не счетчики короткие, а регистр (счетчик) размера блока 14 бит. (У 37-го 16?)
Адресный счетчик по идее должен быть 16 бит, и если его не остановить или не перезагрузить, то он так и будет по кругу гонять.
В даташите нихрена не видно, но на 16 больше похоже чем на 14 :) и вообще я только какой то куцый на 7 листочков смог найти.
freddy, ну и что, что не предусмотрено? Драйвер можно написать. Есть же даже графическая библиотека для cp/m. Правда я сомневаюсь, что ей кто-то реально пользовался.
Я представляю себе примерно "прелести" cp/m, поэтому и хочу, чтобы возможностей было больше, чем дает голая система.
TomaTLAB, а какже тогда "по всем 64к"?
freddy
1. Ага, только сперва поужинаю :)
2. Эмулировать работу терминала, что же еще?
Я неудачно выразился, быть может. У нас текстовое окно для отображения всего 2000 байт (4000 с цветом).
А размер блока ПДП может быть 16к, оно столько за раз не надо - спейсаффекты будут :) И вот это самое окно мы можем гонять вперед-назад по всем 64к.
Если кратно 80 (160) - будет построчный скролл.
Только когда оно промеж страниц маппера приедет, будет процессору работы - этим самым маппером щелкать, если приспичит в рандомные области экрана писать.