:) гы-гы . Получилось таки как я сразу и сказал - нужон триггер ТМ2 :)
Кстати - если делается гашение на триггере то у нас будет один свободный элемент - сразу под эту доработку.
Вид для печати
:) гы-гы . Получилось таки как я сразу и сказал - нужон триггер ТМ2 :)
Кстати - если делается гашение на триггере то у нас будет один свободный элемент - сразу под эту доработку.
Ну да, поставить тм2 - один элемент на инт, другой на привязку к черному.
Высвобождается один элемент лн1.
zst
Вот что получается:
Инт:
http://s40.radikal.ru/i089/1109/b4/8acc5455c312.jpg
H6- берется с 6 ноги DD34.
КС- берется с 6 ноги DD40
INT- идет на 16 ногу проца(предварительно отрезав от 12 ноги DD1).
На рабочей плате можно не отрезать 12 ногу DD1, а отпаиваем цепочку C2-D1-R3 и берем INT- с 8 ноги ТМ2 и кидаем на 13 вывод DD1.
Привязка к черному:
http://s013.radikal.ru/i322/1109/c8/6bf938a7f181.jpg
Согласен с вашей схемой формирования INT. Прикидывал почти такую же:
http://s46.radikal.ru/i114/1109/73/5114069ea1b7t.jpg
Но сначала попробовал на RC цепочке. Кстати, так можно убрать все RC цепочки из Ленинграда.
Например, чтобы убрать проблему с символом (с) - конденсатор 2.2 nF на 4-D10 - можно:
- Подать сигнал TI вместо /TI на 9-D35 (IR16).
- Сигнал 10-D35 вместо 2-D11 подать на вход триггера TM2.
- На вход С триггера подать сигнал /TI.
- C выхода триггера подать на 2-D11.
Чтобы настроить ровно 224 такта Z80 в строке (конденсатор 560 pF на 6-D14):
- C выхода 6-D14 подать сигнал на вход R триггера TM2, а не на 11-D4.
- На вход D триггера подать +5V.
- На вход С триггера подать сигнал H2.
- С выхода триггера подать на 11-D4.
То есть, большинство проблем с аналоговыми цепочками решается с помощью нескольких триггеров TM2.
Получится компьютер, не требующий наладки с помощью подбора конденсаторов.
---------- Post added at 21:13 ---------- Previous post was at 20:52 ----------
А какие проблемы решает привязка к черному ? Я подключаю через VGA&PAL, поэтому про эту проблему не знаю.
Подозреваю, что двигается экран во время загрузки с магнитофона при подключении через черно-белый видеосигнал. И возможно в черно-белом виде есть проблема яркого черного цвета.
Если убираем WAIT, то тогда высвобождается один элемент ЛН1 и один элемент ТМ2, его и можно задействовать под настройку 224 тактов, а проблемму с символом (с) можно решить заменой ир9 на 2 ир16. И добавить всего одну тм2 под инт и привязку к черному. Тогда ничего лишнего не будет.
---------- Post added at 22:28 ---------- Previous post was at 22:18 ----------
При использовании VGA&PAL проблеммы не возникает, а проблемма возникает, когда подключаешься в черно-белом через видео или по RGB.
Как раз во время загрузки с магнитофона экран становится нормальным :)
В общем когда на бордюре идет динамика, то все становится нормальным, а когда статика, то экран становится очень и очень темным и цвета практически не различимы.
Вот тут я уже писал про это:
http://zx.pk.ru/showpost.php?p=407558&postcount=103
У меня нет скарта, да это и все равно, у кого скарты, тоже эта же проблемма.
Просто Ч/Б я подключаю к композитному видеовходу телевизора.
А RGB на видеопроц, где должен был быть телетекст.
Так же без разницы что в качестве синхоимпульсов используется SYNC или черно-белый видеосигнал.
В общем это проблемма ленина1 и 2, на других клонах я ее не встречал.
Кстати я забыл, я платку VGA PAL к ленину не подключал, я ее подключал к каю, но на каях нет этой проблеммы. Ленин я цеплял через VGA PAL только к монитору LG F700P, там все нормально было, надо будет к телевизору подключить и проверить.
Не понял вопроса ?
не только в ленинграде - встречал такое в "Робик"е проверить можно на картинках загрузки игры Myke и помоему Ye Are Kung Fu или както похоже игрушка называлась.
Было и еще несколько игрушек где это хорошо видно - но я уже запамятовал в каких именно.
---------- Post added at 20:12 ---------- Previous post was at 20:11 ----------
Помоему еще это было видно на картинках от ULTIMATE игрушек. всяких там PSSST и Робин фром зе вуд.
Чтото у меня с этим не получается, после переделки вечный сброс или завис при сбросе.
Если просто отрезать WAIT от 24 ноги и подтянуть эту ногу на +5, то все нормально, вернее внешне все нормально, а прогрммы с магнитофона не загружаются нормально.
А если отрезать 6 ногу с резистором от /RAS и подать на нее /H0 то фигвам.
Уточните /RAS менять на /H0 только для 6 ноги проца, а на 4-ые ноги памяти и 9 ногу ЛП5 /RAS оставить ?
Или полностью отрезать этот сигнал от 9 ноги D2(TM2) и подключить к инверсному H0 ?
Уточняю:
Меняем только источник тактовых импульсов на Z80. Вместо /RAS подаем /H0 (его надо сделать с помощью инвертора). На другие микросхемы сигнал /RAS идет как и шел.
Н0 - это выход 3-D3 (Я брал с 1-D13). Этот сигнал надо подать на вход инвертора ЛН1. С выхода ЛН1 подать на 6-D20 (CLK Z80). Убедиться, что 6-D20 подтянут к +5V резистором 470 R.
В общем почитал я про отрезание сигнала WAIT :(
Нашел вот такую доработку на ЛА3:Цитата:
Hо потом оказалось, что такое проходит не у всех. Вследствии было установлено, что без WAIT'а комп становится более критичен к качеству ОЗУ.
http://i081.radikal.ru/1109/19/22be998e48dd.jpg
Сейчас попробую сделать.
А так - поплыть могут все времянки помоему. Wait логически более правильный сигнал для задержек, чем изменение фазы клока или пропуск клоков.
Собрал я эту доработку, все заработало.
Тарелка в DARKSTAR перестала дергаться.
В общем или ну ее нафиг отрезание вайта,
либо вместо рушек ставить быстрый импорт,
либо лепить доработку на ЛА3.
P.S. Эту доработку нашел тут.
Там в файлике LEN2PENT.TXT наглядно про вайт описано.
---------- Post added at 20:59 ---------- Previous post was at 20:20 ----------
А можно поточней ?
- Подать сигнал TI вместо /TI на 9-D35 (IR16).
- Сигнал 10-D35 вместо 2-D11 подать на вход триггера TM2. На какой вход ?
- На вход С триггера подать сигнал /TI.
- C выхода триггера подать на 2-D11. С какого выхода, обычного или инверсного ?
Итого вход С описан, уточните по остальным трем ?
Далее:
- C выхода 6-D14 подать сигнал на вход R триггера TM2, а не на 11-D4.
- На вход D триггера подать +5V.
- На вход С триггера подать сигнал H2.
- С выхода триггера подать на 11-D4. С какого выхода, обычного или инверсного ?
А что подавать на вход S ?
Сигнал 10-D35 вместо 2-D11 подать на вход D триггера TM2.
C прямого выхода триггера подать на 2-D11.Цитата:
На вход С триггера подать сигнал /TI.
C выхода триггера подать на 2-D11. С какого выхода, обычного или инверсного ?
C прямого выхода триггера подать на 11-D4.Цитата:
Итого вход С описан, уточните по остальным трем ?
Далее:
C выхода 6-D14 подать сигнал на вход R триггера TM2, а не на 11-D4.
На вход D триггера подать +5V.
На вход С триггера подать сигнал H2.
С выхода триггера подать на 11-D4. С какого выхода, обычного или инверсного ?
+5V.Цитата:
А что подавать на вход S ?
По второй переделке все понятно, а по первой опять не все указали:
- Подать сигнал TI вместо /TI на 9-D35 (IR16).
- Сигнал 10-D35 вместо 2-D11 подать на вход D триггера TM2.
- На вход С триггера подать сигнал /TI.
- С прямого выхода триггера подать на 2-D11.
А на R и S ?
zst, спасибо, теперь все понятно.
Нашел тут схемку порта FF:
http://s003.radikal.ru/i204/1109/fe/528df9ae232f.jpg
Насколько я понял DR0-DR7 брать с выходов ру5 ?
Если да, то вообще удобно получается, налепить сверху ир22 и входа все соединить,
а выхода можно чип резисторами соединить и незаметненько получится.
Останется два элемента лл1 добавить.
/IORQ, /RD, /int, D0-D7 тоже понятно.
Остаются два: BORDER и /WR_ATTR
В ленине есть только /BORDER
Получается его надо инвертировать ?
И где взять /WR_ATTR ?
Лучше взять схему, которую мы разработали для KAY-2010 (http://zx.pk.ru/showpost.php?p=302523&postcount=244), ведь он произошел от Ленинграда.
Дешифатор портов #FF, КEMPSTON JOYSTICK и клавиатуры:
http://s51.radikal.ru/i133/1007/e3/40340d025fe4t.jpg
Название сигналов как в оригинальной схеме (http://zx.clan.su/forum/11-71-1).
Распределение входов-выходов регистра ИР23 сделано как на ИР22 оригинальной схемы, чтобы можно было напаять вторым этажом.
Cоответствие названий для KAY-1024 и Ленинграда:
IORD1/ -- /IORD
H2 -- H2
BRD -- /BORDER
*A0 -- A0
*A5 -- A5
15 выв DD36, 37 -- 15 выв D37, 38
*D7...*D0 -- D7...D0
Но эта схема не привязана к инт.
Насколько я понял там должно быть при чтении из порта FF совпадение трех сигналов, как на схеме которую я привел выше.
Там инт нужен, причем правильный, который мы получили с помощью тм2.
Да и резисторов на выходах ир23 я не вижу. Нехорошо без них.
Помоему не совсем понимаете смысл порта FF.
Что это за порт?
Если вернуться к истокам - это ВООБЩЕ НЕ ПОРТ!
просто примененная в оригинальном спеке схемотехника - связывала оба ряда памяти( медленную и быструю - первая это 16К начиная с 16384 а вторая это 32К начиная с 32768 до конца памяти).
К быстрой памяти был доступ на запись был по первому требованию. а вот к медленной - только когда выводился бордюр.
Если теперь перейти к нашим баранам - при чтении из существующих портов - читалось значение порта. а при чтении не существующего порта - на шину через эти резисторы подмешивался сигнал из видеопамяти. посему во время вывода бордюра шина была скорее всего в 0 . а вот при выводе экрана - из регистра читалось значение атрибутов.
при этом - это не было привязано ни к бордеру ни к инту! это текущее значение атрибутов.
синхронизацию сделать просто: вывести картинку и зная цвет нужного нам знакоместа - запустить чтение несуществующего порта. как только из него пришел байт с нужным нам цветом - обрываем наш цикл и делаем все остальное.
принцип такой же как и ожидание HALT.
P.S. именно поэтому и зависает игра на машине не оборудованной портом FF - просто она всегда получаетна шине данных либо FF( если у клона шина данных подтянута через 8 резисторов к +5В как например в нашем Ленинград-1) либо будет принимать наводки и читать всякую срань - если компьютер не имеет подтяжки данных к +5( помоему такое есть на пентагон 48).
Соответственно - так как она не дождется нужного ей значения - она никогда не выйдет из цикла ожидания и не приступит к продолжению.
Ну насколько я знаю это как то так:
http://s004.radikal.ru/i207/1109/31/df039685e762.jpg
Вот и получается, запись в регистр идет по сигналу /WR_ATTR и гасится сигналом BORDER.
Далее как в фирменном спектруме через резисторы идет на шину данных.
Ну и три сигнала /IORQ, /RD, /INT - когда хоть один из них активен,
выходы ир23 переходят в Z состояние и нефиг мусору в виде атрибутов делать на шине данных.
Все по науке :)
И в чем я не понял смысл ?
в том что выдается все - независимо от инта или чего бы то нибыло!
самый простой порт ФФ если вы не в курсе - народ реализовывал тупо посадив сигналы через 8 резисторов с выхода атрибутного регистра ир23 на шину данных. номинал резисторов если не ошибаюсь был 470 ом и все работало( Обязательным условием для такого случая было отсутствие подтяжки шины данных к +5В). а то как реализовывали остальные - да кто во что гаразд был. если использовать буфер с третим состоянием для подтянутой шины то чтобы получить фф из порта в ненужное время - туда подмешивался BORDER ( полярность оного зависила от конкретной реализации логики выборки). Реализаций порта FF было ну штук 8 минимум. и все - РАЗНЫЕ.
И да - я абсолютно не увидел противоречий моих слов с вашим сканом - я сказал абсолютно тоже самое. И опять така кстати - в вашем тексте ну НЕТ никаких слов что сюда надо подмешивать INT. вот про вопрос - почему нет INT в схеме порта - я вам и ответил что он НЕ НУЖЕН а вот если вы считаете обратное - то не понимаете принцип работы ФФ порта - я вам принцип и разьяснил! Что я сделал не так?
А зачем тогда /IORQ, /RD ? Причем они также присутствуют в схеме zxt.
Как работает "фирменный" порт ФФ я знаю. А оно нам надо в полной мере ?
Давайте тупо 1 вывод ир23 посадим на землю или тупо на ир22 резисторов одних налепим, нафига лишние провода.
Да для того чтобы во время этих сигналов шина данных не была замусорена, т.к. там могут быть более полезные данные.
Цель ФФ(глюк возведенный в ранг фичи) - это атрибуты, а во время инта никаких атрибутов там впринципе не должно быть(см. положение инта в кадре).
Вот и я о том же, когда приходит инт, никаких атрибутов на шине данных уже не может быть в принципе.
И получается еще как привязано к инту. Вернее инт должен быть правильным и в правильном месте.
Еще раз прочитайте что сами и написали и вдумайтесь:
Сигналами BORDER и /WR_ATTR мы гарантируем что в регистр(ир23) попадут ТОЛЬКО атрибуты, а сигналами /IORQ, /RD, /INT мы гарантируем что на шине данных во время появления хоть одного из этих сигналов шина данных не будет замусорена, т.к. она нужна для более важных дел.
А вот зачем на схеме zst A0 и A5 ?
P.S. zst я кстати понял почему у меня на ленинграде-2, а теперь и на ленинграде-1 во время работы тест-пзу, что Вы мне зашивали, после каждого удачно пройденного теста небыло мельтешения на бордюре.
Если инт не правильный то бордюр мельтишит(как бы черно белая рябь бежит), а если инт правильный то бордюр замирает.
Как и для любого другого порта чтение происходит когда /IORQ и /RD равны 0.
А во время INT с шины данных будет считываться #FF, так как INT происходит во время BORDER-а, поэтому порт #FF не открывается.Цитата:
Как работает "фирменный" порт ФФ я знаю. А оно нам надо в полной мере ?
Давайте тупо 1 вывод ир23 посадим на землю или тупо на ир22 резисторов одних налепим, нафига лишние провода.
Да для того чтобы во время этих сигналов шина данных не была замусорена, т.к. там могут быть более полезные данные.
Цель ФФ(глюк возведенный в ранг фичи) - это атрибуты, а во время инта никаких атрибутов там впринципе не должно быть(см. положение инта в кадре).
Вот и я о том же, когда приходит инт, никаких атрибутов на шине данных уже не может быть в принципе.
Это уже обсуждалось с этого поста и ниже (http://zx.pk.ru/showpost.php?p=305833&postcount=343)
По приведенной вами схеме регистр выдаст данные только тогда, когда все три сигнала равны 0, а такой комбинации, наверно, не бывает. Да и если ее довести до рабочего состояния - зачем нагружать шину данных лишними резисторами, если можно открывать порт #FF только в момент чтения из незанятого порта.Цитата:
И получается еще как привязано к инту. Вернее инт должен быть правильным и в правильном месте.
Еще раз прочитайте что сами и написали и вдумайтесь:
Сигналами BORDER и /WR_ATTR мы гарантируем что в регистр(ир23) попадут ТОЛЬКО атрибуты, а сигналами /IORQ, /RD, /INT мы гарантируем что на шине данных во время появления хоть одного из этих сигналов шина данных не будет замусорена, т.к. она нужна для более важных дел.
Кстати сейчас в Ленинграде при чтении из порта #FF читается состояние кемпстон джойстика. Поэтому та схема не будет работать без доработок.
A0 - это адрес клавиатуры, A5 - это адрес кемпстон-джойстика. Если один из этих адресов равен 0, то открываются мультиплексоры клавиатуры и кемпстона. Если оба равны 1, то открывается порт #FF в моменты, когда нет BORDER-а. Сигнал BORDER перед использованием надо задержать на время отображения одного байта, так как только через это время в мультиплексоры КП13 и регистр порта #FF запишутся действительные данные атрибутов. Это делается с помощью триггера ТМ2.Цитата:
А вот зачем на схеме zst A0 и A5 ?
Рисунок на BORDER-е может быть разным в одной и той же программе также и при разном количестве тактов в строке или разном количестве строк в кадре. А в Ленинградах нельзя быть уверенным, что у них одинаковая развертка на разных компьютерах. Для проверки этого, надеюсь, напишут программу для тестирования развертки (http://www.zx.pk.ru/showpost.php?p=415722&postcount=59).Цитата:
P.S. zst я кстати понял почему у меня на ленинграде-2, а теперь и на ленинграде-1 во время работы тест-пзу, что Вы мне зашивали, после каждого удачно пройденного теста небыло мельтешения на бордюре.
Если инт не правильный то бордюр мельтишит(как бы черно белая рябь бежит), а если инт правильный то бордюр замирает.
Если параметры неправильные, экран будет отличаться или мелькать.
ZST - может чтобы не обрубать все остальные порты напалмом - вместо ЛА3 элемента применить ЛА2 и немного изменить формирование сигнала Keyboard и Kempston?
просто тогда оно станет отзываться тупо только на адрес FF. Единственно если цеплять ТРДОС придется брать IORD после него.
Тогда резисторы уж 1000 пудов будут не нужны ибо читать будет строго из одного порта.
Чего то мы уже из Ленинграда делаем KAY-2010 или PENTAGON-128...
А надо бы остановиться на:
Z80 3.5 МГц
RAM 48К
Звук- BEEPER
Загрузка с магнитофона
Порт #FF
Механическая клавиатура
Черно-белый видеовыход и SCART
KEMPSTON JOYSTICK
Правильный INT
Настройка работы без конденсаторов
Без дисковода
Без ZX-BUS
:) не делаем :)
Просто на случай если кто-то будет цеплять периферию типа АУгрика или еще чего нибудь - с текущей версией схемы - он будет иметь гемор в виде задавливания любых сигналов с любых портов кроме ФФ, 254 и 31го что приведет к перегреву ИР и возможному подлому бёрну с ее стороны :)
Как проверить правильность работы порта FF ?
Не то что он вообще есть и как то работает, а именно правильно работает ?
Возможно игры: Arkanoid, Sprite, Cobra (http://www.zxdesign.info/keyboardtest.shtml)
В игре RENEGADE после смерти игра не должна зависать.
Попробуйте программу Floatspy (http://ramsoft.bbk.org.omegahg.com/f...ml#FLOATINGBUS).
С помощью ее тестировали "Harlequin" (http://www.zxdesign.info/interruptTest.shtml).
Нужно скачать TAP версию программы FloatSpy и запустить. Программа записывает в верхние знакоместа экрана атрибуты с кодами от 64 до 95. Потом пытается считать их из порта #FF. Количество тактов от INT до отображения левого верхнего знакоместа должно быть 14347, как в оригинальном клоне.
Кнопками Q, A и другими (показаны на экране) можно настроить параметры измерения. Программа отображает байт атрибутов, который читается при настроенном временном интервале.
В общем когда тест загрузился, то тест показывает:
ULA TYPE: 48K
IM2 T_OFS: 29 t-states
IN() TIME: 14347 t-states
IN() BYTE: 255
I/O PORT: 255
А дальше что с этим делать ?
Подключал ФФ так:
ир23 посадил на ир22, питание и входа соединил напрямую, а выхода через резистор 1к.
Сигнал Н2 через инвертор подал на 11 вывод ир23.
/IORD и /BORDER подал на входы лл1, а с выхода лл1 на 1 вывод ир23.
порты клавы и джойстика доработал по вашей схеме(ла3+лн1+лл1).
Можно так - почти так, как надо. Сигнал /BORDER надо бы задержать триггером, чтобы не было ложного считывания в начале строки атрибутов посл левого бордера. Для начала надо найти положение первого и остальный байтов атрибутов в верхней строке. Учтите, там 8 раз должны считываться одни последовательности, так как атрибут общий на 8 строк пикселов.
Тут было много доработок. Уточните:
Какой у вас Ленинград: 1,2 или 3 ?
Положение и длина INT на TM2?
Вид экрана в играх DARK STAR и AQUAPLAN как у меня ?
Есть уверенность в параметрах развертки - в строке 224 цикла, 312 строк в кадре (лучше измерить частоту мультиметром или чем-то еще) ?
Чистый Ленинград-1.
кварц на ровно на 14.
Входа на D4 распаяны так: 15, 1, 9 на землю, а 10 на +5.
Из доработок, только инт на тм2 по схеме выше и привязка к черному на тм2, также по схеме выше.
Ну и фф с доработкой порта клавиатуры и джойстика я тоже уже в предыдущем сообщении описал.
AQUAPLAN также, бордюрная линия чуть выше экранной.
DARK STAR - тарелка мерцает, т.к. вайт вернул назат.
---------- Post added 19.09.2011 at 00:01 ---------- Previous post was 18.09.2011 at 23:38 ----------
В общем от 11000 до 20000 пролистал, кроме 95 и 15 ничего не нашел.