User Tag List

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя
Показано с 51 по 60 из 75

Тема: Одна безумная идея ;-)

  1. #51

    Регистрация
    02.04.2012
    Адрес
    г. Москва
    Сообщений
    210
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    зачем: так все равно а и d линии подводить чтобы ром подменить, пусть делом занимается, че простаивать.

    по AY: на сколько я знаю, его можно запрограммироваь, например, играть один тон автоповтором. Если программирование не повторить, то возможны два варанта а) тона не будет где надо б) он останется от предыдущего состоянии и будет где ненадо.
    Если б) можно решить сбросом, то как решить а)

    И еще со 128К дебильная проблема. Регистр мэппинга памяти 0x7ffd не читабелен.
    Как узнать какая страница активна в данный момент? Не факт, что добрый программер положит знаечние по адресу 23388. В голову приходит тольвао два варианта:
    1) Мониторить шину и отслеживать out по этому порту и помнить его
    2) Тупой вариант - посчитать что-от вроде MD5 содержимого памяти, перебрать все банки и найти с таким же дайджестом. Проблеме в том, что это на на 100% работает, если два банка забиты нулями, то и дайджест совпадет.

    И еще этот тупой ЛОК бит. Что с ним делать, если он установлен???
    Последний раз редактировалось ArtemKuchin; 12.04.2012 в 01:18.
    ZX Spectrum 48K rubber keys issue 3 c-video out, Amiga 1200 (hdd), Amstrad CPC464 + scart video, Atari 130XE, Atari 520STFM, C64.

  2. #52
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    я полагал, что наиболее важно для этого romcs +mni, чтобы вообще свой блок подрубить. т.е выставляем romcs, отключая пзу и делаем нми, z80 переходит на 66 но уже в нашей памяти. к чему m1 и iorq?
    К тому, что вам следует раскурить доку по Z80. Любое прерывание происходит не сразу, а только в определенный машинный цикл, это раз, затем идут долгие телодвижения по сохранению текущего состояния и только потом происходит подтверждение прерывания. И если ты отключишь ПЗУ до подтверждения прерывания а прерываемая программа была в ПЗУ крах неизбежен. Подключать свое ПЗУ надо только в момент подтверждения, и согласно идеологии самого Z80, который не имеет вывода INTA в отличии от ВМ80, подтверждение любого прерывания есть чтение опкода из порта, т.е. M1+IORQ. Только наличие этого сигнала + изначальный сигнал NMI (на случай если произошел IRQ, который подтверждается точно так же).
    Последний раз редактировалось HardWareMan; 12.04.2012 в 07:19.

  3. #53

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    по AY: на сколько я знаю, его можно запрограммироваь, например, играть один тон автоповтором
    и сколько времени он играет один тон автоповором? Секунда, полторы максимум. Ничего страшного если при загрузке снапа этой секунды не будет.

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    И еще со 128К дебильная проблема. Регистр мэппинга памяти 0x7ffd не читабелен
    ты же вроде собирался снап 48к делать, дык зачем тебе #7FFD?

    ---------- Post added at 08:37 ---------- Previous post was at 08:21 ----------

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    и только потом происходит подтверждение прерывания
    нету в Z80 аппаратного подтверждения NMI, и переключать ПЗУ можно по NMI, единственно, что Magic в этом случае низзя юзать
    Последний раз редактировалось Black_Cat; 12.04.2012 в 08:57.

  4. #54
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    нету в Z80 аппаратного подтверждения NMI, и переключать ПЗУ можно по NMI, единственно, что Magic в этом случае низзя юзать
    А, да, комбо IORQ+M1 только для IRQ. Тем не менее, триггер NMI обрабатывается только в последнем машинном цикле текущей команды, поэтому, подключать свое ПЗУ нужно аккуратно, желательно к следующему первому машинному циклу.

  5. #55

    Регистрация
    02.04.2012
    Адрес
    г. Москва
    Сообщений
    210
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу NMI:
    Согласен, даташит "курил" поверхностно, однако:

    "Non-Maskable Interrupt (input, negative edge-triggered). NMI has a
    higher priority than INT. NMI is always recognized at the end of the current
    instruction, independent of the status of the interrupt enable flip-flop, and
    automatically forces the CPU to restart at location 0066H."

    Т.е. NMI самим процом всегда определяется в конце инструкции. Оно само о себе позаботилось. Конечно, до MNI надо переключить ПЗУ и при этом надо непопасть в середину выборки памяти процессором. Для поиски этого моменты можно использовать M1+ MREQ (указывает на получение инструкции их памяти), но это выглядит не очень надежно как-то. Может лучше на BUSA смотреть? Но точно не M1+IORQ. Конкретно в разделе по NMI сказано "The CPU response
    to a non-maskable interrupt is similar to a normal memory read operation." И далее прекрасная диаграма в которой IORQ вообще не упоминается.

    Из это диаграма, есть идея, что надо выставить NMI и ждать M1, как только M1, сменить ROMCS.

    Касательно 128: ну. ээ. аппетит приходит во время еды.

    О! Пока писал Hardwareman ответил.
    Последний раз редактировалось ArtemKuchin; 12.04.2012 в 10:29.
    ZX Spectrum 48K rubber keys issue 3 c-video out, Amiga 1200 (hdd), Amstrad CPC464 + scart video, Atari 130XE, Atari 520STFM, C64.

  6. #56

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    Из это диаграма, есть идея, что надо выставить NMI и ждать M1, как только M1
    так сразу снять NMI и ессно со снятием NMI переключить ПЗУ

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    Касательно 128: ну. ээ. аппетит приходит во время еды
    Какую однокристалку предполагаешь юзать? И ты не ответил:
    Цитата Сообщение от Black_Cat Посмотреть сообщение
    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    или в другие адреса как-то хитро тоже можно смапировать?
    низзя, а зачем тебе больше?

  7. #57

    Регистрация
    02.04.2012
    Адрес
    г. Москва
    Сообщений
    210
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    так сразу снять NMI и ессно со снятием NMI переключить ПЗУ

    Какую однокристалку предполагаешь юзать? И ты не ответил:

    NMI определяется в конце инструкции (из документации, что маразм, скорее всего речь идет о конце машинного цикла), определился он и перед следующей инструкцией идет переход на 66H. Вопрос: а когда деактивировать NMI? Ведь когда мы его устанавливали это могла быть середина другого цикла, а могла быть середина этого цикла, т.е. пересекли ли мы границу обработки NMI?. Можно деактивировать по подъему M1, что означает что новый машинный цикл уже идет и менять ПЗУ нельзя, так как могут быьт еще обращения к памяти в пределах этой инструкции. НО! Ведь не факт что мы попали перед низким уровнем на M1 при активации NMI, т.е. NMI могло быть просто не определено.

    Т.е. вопроса три:
    1) Когда подать NMI чтобы он точно был пойман
    2) Когда снять NMI, чтобы он УЖЕ был точно пойман в этот момент
    3) Когда сменить ROM чтобы не было каши в голове в проца

    И получается, тогда, что надо смотреть на M1, когда M1 - низкий можно подать NMI, тогда в конце этого цикла NMI будет точно пойман, Далее, как только мы видим еще раз опущение M1 (после подъема), это означает начало нового INSTRUCTION FETCH и будет совсем мало времени, чтобы сменить ROM и снять NMI, тогда все будет точно поймано и пройдет чисто. Там реально маленький зазор по времени совсем, полтакта где-то.

    Можно было бы просто блокировать процессор сигналом WAIT. Проблема с ними, что он не опрашивается не в начале или конце машинного цикла, в активен сразу (по крайне мере в доке нет ни слова о месте, когда ижет опрос этой линии). Т.е. выставив его мы можем просто приостановить выполнение текущей команды и сменим ROM получить кашу, так как выполнение ее продолжится и только потом сработает NMI.

    Можно попробовать через BUSREQ. Оно срабатывает в конце машинного цикла. Т.е. можно активировать BUSREQ, подождать BUSACK. Сменить культурно ROM, выдать NMI, деактивировать BUSREQ, подождать активации M1 и деактивировать NMI. Здесь все операции не требуют быстрой реакции. Я посмотрел, вроде ULA на линии BUSREQ/BUSACK у процеса не завязано никак, так что конфликта нет.


    Касательно МК - неважно, эта часть все равно будет на CPLD

    Касательно мэпинга памяти - это было просто больное любопытство. Ну не совсем, если можно было бы подменять память, то можно бы бы все манипуляции с памятью делать во внешней памяти, а потом мапировать. На сколько удобно или неудобно как раз и хотел решить, но коли нельзя и решать нечего.
    ZX Spectrum 48K rubber keys issue 3 c-video out, Amiga 1200 (hdd), Amstrad CPC464 + scart video, Atari 130XE, Atari 520STFM, C64.

  8. #58

    Регистрация
    18.04.2009
    Адрес
    Москва
    Сообщений
    1,656
    Спасибо Благодарностей отдано 
    208
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    16 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ArtemKuchin Посмотреть сообщение
    Касательно мэпинга памяти - это было просто больное любопытство. Ну не совсем, если можно было бы подменять память, то можно бы бы все манипуляции с памятью делать во внешней памяти, а потом мапировать. На сколько удобно или неудобно как раз и хотел решить, но коли нельзя и решать нечего.
    я могу ошибаться но вроде бы divide может мапировать память

  9. #59

    Регистрация
    02.04.2012
    Адрес
    г. Москва
    Сообщений
    210
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на 48К только RAM в адреса ПЗУ
    ZX Spectrum 48K rubber keys issue 3 c-video out, Amiga 1200 (hdd), Amstrad CPC464 + scart video, Atari 130XE, Atari 520STFM, C64.

  10. #60
    HardWareMan
    Гость

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    так сразу снять NMI и ессно со снятием NMI переключить ПЗУ
    Сигнал NMI детектится по спаду (1=>0), в то время как IRQ по уровню (=0). В описании сказано, что это сделано для того, чтобы процессор не зациклился в вызовах NMI. Так что снимать не обязательно, но является признаком хорошего тона, да.

Страница 6 из 8 ПерваяПервая ... 2345678 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Еще одна CP/M помойка
    от Error404 в разделе Оси
    Ответов: 2
    Последнее: 18.09.2007, 21:18
  2. Еще одна идея подключения винчестера
    от Zhizh в разделе Внешние накопители
    Ответов: 16
    Последнее: 05.12.2005, 11:00
  3. Ещё одна плата
    от CityAceE в разделе Несортированное железо
    Ответов: 6
    Последнее: 25.04.2005, 10:41
  4. Ответов: 44
    Последнее: 19.04.2005, 20:52
  5. Ещё одна идентиффикация спекка!
    от poison в разделе Несортированное железо
    Ответов: 10
    Последнее: 02.03.2005, 23:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •