User Tag List

Страница 73 из 81 ПерваяПервая ... 697071727374757677 ... ПоследняяПоследняя
Показано с 721 по 730 из 810

Тема: ZX Spectrum: аппаратная реализация на восьми микросхемах

  1. #721

    Регистрация
    25.11.2007
    Адрес
    Симферополь
    Сообщений
    2,164
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну в Радио имелось ввиду скорее всего другое - интерпретатор бэйсика( родной РОМ короче говоря) использует только ИМ1 а в игрушках очень часто юзают ИМ2 потому как на него вешают например обработку клавиатуры или проигрывание музыки на сопроцессоре. Тоесть любые переодические операции для которых не нужно максимальное быстродействие и не занимающие много тактов.

    у ИМ2 адрес таблицы векторов грузится в регистр I .
    если на пальцах - при прерывании читается вектор прерывания с шины данных ( у большинства наших клонов там будет FF) младший бит вектора обнуляется автоматически( тоесть всегда равен нулю). и адрес куда прыгнуть обработчику чтобы взять вектор вычисляется Addr= (Register I * 256) + Vector from DATA bus. Вектор всегда только четное число.
    Начиная с (Register I * 256) идет таблица из 128и двухбайных адресов обработчика.
    чаще всего вся область забита или одним и тем же адресом или вообще используется только последний вектор. эти 2 байта кущего вектора - грузятся в регистр PC. или как он там на спеке назывался. и управление переходит по этому адресу.
    Выход из обработчика прерывания стандартный - RETI.

    Цитата из книжки :"Для перехода в режим ISR в режиме 2 требуется 19 тактовых периодов: 7 периодов для ввода 8ми разрядного вектора от прерывающего устройства,следующие 6 - для сохранения на стеке текущего состояния PC (адреса возврата) и еще 6 - для считывания стартового адреса ISR."
    Последний раз редактировалось balu_dark; 02.12.2011 в 20:06.
    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
    Специалист (пока готовлюсь к восстановлению).
    Это все мое!
    Родное!
    Все люблю на свете я! Это родина моя!

  2. #721
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #722

    Регистрация
    27.02.2006
    Адрес
    MOSCOW
    Сообщений
    158
    Спасибо Благодарностей отдано 
    174
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию IM2

    IM2 (IMM2 неправильно, СЭР)

    Картинка по Z-80


    Может пригодиться ВАМ Lisitsin

    ---------- Post added at 20:39 ---------- Previous post was at 20:20 ----------

    2.Картинка по Z-80 IM2

    3.Картинка по Z-80 IM2

    И ещё по IM2 картинки

  4. #723

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Персональная благодарность
    balu_dark, !!!
    Есть только один вопросец: какие биты регистра I идут в ход при обработке imm1? Насколько я понимаю, только 7? То есть старший равен 0? Спасибо !!!

  5. #724

    Регистрация
    27.02.2006
    Адрес
    MOSCOW
    Сообщений
    158
    Спасибо Благодарностей отдано 
    174
    Спасибо Благодарностей получено 
    10
    Поблагодарили
    10 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И ещё... Младший байт читается с ШД (шина данных) , а старший из регистра I
    Младший байт всегда (8 резисторов подтягивающих ШД к +5 вольт) должен читаться 255 #FF %11111111
    Это всё вцелом составляет вектор прерывания

    ---------- Post added at 20:49 ---------- Previous post was at 20:47 ----------

    При IM 1 адрес физически фиксирован в самом Z-80 и независимо от I состовляет 56
    #38 (IM0 тоже, как и IM1 режим)

  6. #725

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Персональная благодарность
    balu_dark, !!!
    Есть только один вопросец: какие биты регистра I идут в ход при обработке imm1? Насколько я понимаю, только 7? То есть старший равен 0? Спасибо !!!
    Прошу прощения, разобрался. Перепутал регистр I с регистром R.

    ---------- Post added at 21:21 ---------- Previous post was at 19:58 ----------

    Сделал, но что-то не работает. ELITE при старте, не нарисовав крутящийся корабль, уходит в безвозвратный сбой, R-TYPE виснет в заставке. ROBOCOP зависает при загрузке с чёрным экраном.
    Последний раз редактировалось Lisitsin; 02.12.2011 в 22:24.

  7. #726

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вот как собствнно дклаю обработку прерывания: (вложение)
    Вложения Вложения

  8. #727

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    а если все же не на играх отлаживать, а на чем нить попроще, постабильнее?
    в приложении маленький тест, под 48 режим как раз, и как раз IM2 точно использует. Что показывает?
    На середине загрузки даёт серый экран и при пробеле корректно отдаётся бейсику )))

  9. #728

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    На середине загрузки даёт серый экран и при пробеле корректно отдаётся бейсику )))
    Так вроде говорят младший в ноль аппаратно сбрасывается для корректного прочтения двухбайтного адреса. Типа из нулевого адреса младший байт вектора читается, а из первого - старший, я так понял ...

  10. #729

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от balu_dark Посмотреть сообщение
    младший бит вектора обнуляется автоматически( тоесть всегда равен нулю).
    Цитата Сообщение от balu_dark Посмотреть сообщение
    Вектор всегда только четное число.
    откуда дровишки? это нифига не так. первый раз прочитал, удивился, почти поверил. никакой бит не обнуляется. если в регистре I число #BB, а на шине #FF, то адрес возьмется из #BBFF и #BC00. и именно поэтому правильная табличка - 257 байт длиной.

    ---------- Post added at 01:13 ---------- Previous post was at 01:12 ----------

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Так вроде говорят младший в ноль аппаратно сбрасывается
    врут

  11. #730

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,296
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,461
    Поблагодарили
    950 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    с шины данных корректно должно прочитаться #FF. в тесте команда типаа
    Код:
    	 	LD A,#3B
    	 	LD I,A
    	 	IM 2
    вот и посчитай, куда будет указывать вектор в программе, и где - у тебя.
    в 48ом ПЗУ #FF по адресу #3BFF и #3C00.

Страница 73 из 81 ПерваяПервая ... 697071727374757677 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. реализация JavaScript-a на ZX-Spectrum-48k
    от bigral в разделе Программирование
    Ответов: 4
    Последнее: 10.01.2010, 12:02
  2. Аппаратная эмуляция GS/TFM/AY
    от Black_Cat в разделе Эмуляторы
    Ответов: 34
    Последнее: 03.05.2008, 23:34

Ваши права

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