С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Помоему не совсем понимаете смысл порта FF.
Что это за порт?
Если вернуться к истокам - это ВООБЩЕ НЕ ПОРТ!
просто примененная в оригинальном спеке схемотехника - связывала оба ряда памяти( медленную и быструю - первая это 16К начиная с 16384 а вторая это 32К начиная с 32768 до конца памяти).
К быстрой памяти был доступ на запись был по первому требованию. а вот к медленной - только когда выводился бордюр.
Если теперь перейти к нашим баранам - при чтении из существующих портов - читалось значение порта. а при чтении не существующего порта - на шину через эти резисторы подмешивался сигнал из видеопамяти. посему во время вывода бордюра шина была скорее всего в 0 . а вот при выводе экрана - из регистра читалось значение атрибутов.
при этом - это не было привязано ни к бордеру ни к инту! это текущее значение атрибутов.
синхронизацию сделать просто: вывести картинку и зная цвет нужного нам знакоместа - запустить чтение несуществующего порта. как только из него пришел байт с нужным нам цветом - обрываем наш цикл и делаем все остальное.
принцип такой же как и ожидание HALT.
P.S. именно поэтому и зависает игра на машине не оборудованной портом FF - просто она всегда получаетна шине данных либо FF( если у клона шина данных подтянута через 8 резисторов к +5В как например в нашем Ленинград-1) либо будет принимать наводки и читать всякую срань - если компьютер не имеет подтяжки данных к +5( помоему такое есть на пентагон 48).
Соответственно - так как она не дождется нужного ей значения - она никогда не выйдет из цикла ожидания и не приступит к продолжению.
Последний раз редактировалось balu_dark; 16.09.2011 в 01:02.
Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
ZX Evo 4Mb- в строю.
Speccy2010 v1
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
Ну насколько я знаю это как то так:
Вот и получается, запись в регистр идет по сигналу /WR_ATTR и гасится сигналом BORDER.
Далее как в фирменном спектруме через резисторы идет на шину данных.
Ну и три сигнала /IORQ, /RD, /INT - когда хоть один из них активен,
выходы ир23 переходят в Z состояние и нефиг мусору в виде атрибутов делать на шине данных.
Все по науке
И в чем я не понял смысл ?
Последний раз редактировалось _Ratibor_; 16.09.2011 в 02:12.
в том что выдается все - независимо от инта или чего бы то нибыло!
самый простой порт ФФ если вы не в курсе - народ реализовывал тупо посадив сигналы через 8 резисторов с выхода атрибутного регистра ир23 на шину данных. номинал резисторов если не ошибаюсь был 470 ом и все работало( Обязательным условием для такого случая было отсутствие подтяжки шины данных к +5В). а то как реализовывали остальные - да кто во что гаразд был. если использовать буфер с третим состоянием для подтянутой шины то чтобы получить фф из порта в ненужное время - туда подмешивался BORDER ( полярность оного зависила от конкретной реализации логики выборки). Реализаций порта FF было ну штук 8 минимум. и все - РАЗНЫЕ.
И да - я абсолютно не увидел противоречий моих слов с вашим сканом - я сказал абсолютно тоже самое. И опять така кстати - в вашем тексте ну НЕТ никаких слов что сюда надо подмешивать INT. вот про вопрос - почему нет INT в схеме порта - я вам и ответил что он НЕ НУЖЕН а вот если вы считаете обратное - то не понимаете принцип работы ФФ порта - я вам принцип и разьяснил! Что я сделал не так?
Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
ZX Evo 4Mb- в строю.
Speccy2010 v1
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
А зачем тогда /IORQ, /RD ? Причем они также присутствуют в схеме zxt.
Как работает "фирменный" порт ФФ я знаю. А оно нам надо в полной мере ?
Давайте тупо 1 вывод ир23 посадим на землю или тупо на ир22 резисторов одних налепим, нафига лишние провода.
Да для того чтобы во время этих сигналов шина данных не была замусорена, т.к. там могут быть более полезные данные.
Цель ФФ(глюк возведенный в ранг фичи) - это атрибуты, а во время инта никаких атрибутов там впринципе не должно быть(см. положение инта в кадре).
Вот и я о том же, когда приходит инт, никаких атрибутов на шине данных уже не может быть в принципе.
И получается еще как привязано к инту. Вернее инт должен быть правильным и в правильном месте.
Еще раз прочитайте что сами и написали и вдумайтесь:
Сигналами BORDER и /WR_ATTR мы гарантируем что в регистр(ир23) попадут ТОЛЬКО атрибуты, а сигналами /IORQ, /RD, /INT мы гарантируем что на шине данных во время появления хоть одного из этих сигналов шина данных не будет замусорена, т.к. она нужна для более важных дел.
А вот зачем на схеме zst A0 и A5 ?
P.S. zst я кстати понял почему у меня на ленинграде-2, а теперь и на ленинграде-1 во время работы тест-пзу, что Вы мне зашивали, после каждого удачно пройденного теста небыло мельтешения на бордюре.
Если инт не правильный то бордюр мельтишит(как бы черно белая рябь бежит), а если инт правильный то бордюр замирает.
Последний раз редактировалось _Ratibor_; 16.09.2011 в 10:01.
Как и для любого другого порта чтение происходит когда /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 во время работы тест-пзу, что Вы мне зашивали, после каждого удачно пройденного теста небыло мельтешения на бордюре.
Если инт не правильный то бордюр мельтишит(как бы черно белая рябь бежит), а если инт правильный то бордюр замирает.
Если параметры неправильные, экран будет отличаться или мелькать.
Последний раз редактировалось zx-kit; 16.09.2011 в 12:12.
"L-256"
ZST - может чтобы не обрубать все остальные порты напалмом - вместо ЛА3 элемента применить ЛА2 и немного изменить формирование сигнала Keyboard и Kempston?
просто тогда оно станет отзываться тупо только на адрес FF. Единственно если цеплять ТРДОС придется брать IORD после него.
Тогда резисторы уж 1000 пудов будут не нужны ибо читать будет строго из одного порта.
Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
ZX Evo 4Mb- в строю.
Speccy2010 v1
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
Чего то мы уже из Ленинграда делаем KAY-2010 или PENTAGON-128...
А надо бы остановиться на:
Z80 3.5 МГц
RAM 48К
Звук- BEEPER
Загрузка с магнитофона
Порт #FF
Механическая клавиатура
Черно-белый видеовыход и SCART
KEMPSTON JOYSTICK
Правильный INT
Настройка работы без конденсаторов
Без дисковода
Без ZX-BUS
"L-256"
не делаем
Просто на случай если кто-то будет цеплять периферию типа АУгрика или еще чего нибудь - с текущей версией схемы - он будет иметь гемор в виде задавливания любых сигналов с любых портов кроме ФФ, 254 и 31го что приведет к перегреву ИР и возможному подлому бёрну с ее стороны
Amiga 1200+Blizzard 1260 72 Mb+Mtek 68030,Compozit 128, Leningrad 2,
Atari STE 1040,ZX Spectrum +2,Pentagon 48, Speccy2007 - 2 , ATAS 256k.
ZX Evo 4Mb- в строю.
Speccy2010 v1
Специалист (пока готовлюсь к восстановлению).
Это все мое!
Родное!
Все люблю на свете я! Это родина моя!
Как проверить правильность работы порта FF ?
Не то что он вообще есть и как то работает, а именно правильно работает ?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)