User Tag List

Показано с 1 по 10 из 63

Тема: Специалист: Вопросы программирования

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Зачем нужен сигнал НП?
    Сигнал НП это аббревиатура от слов "Начальный Пуск". Этот сигнал нужен потому, что КР580 начинает прогон по сбросу с адреса 0, где ОЗУ. А ПЗУ находится по адресу C000. Назначение этого сигнала такое же как у сигнала НП в РК86 и ОРИОНЕ. Чтобы по сбросу во всём адресном пространстве стояло ПЗУ.

    Только в РК86 это сделано умнее. Там используется триггер. По сбросу он взводится, формируя НП, а по первой же записи куда-либо (сигналом /WR процессора) сбрасывается и открывается ОЗУ в области с адреса 0 и до RAMTOP. Потому первой командой в ПЗУ в этих компьютерах стоит JMP в область ПЗУ.

    В СПЕЦИАЛИСТЕ ради экономии деталей, в качестве сигнала НП используется разряд PC4 порта клавиатуры. По сбросу ВВ55 все порты программируются на ввод, отчего PC4=НП=1. А при программирования портов PC4...PC7 на вывод на разряде PC4 сразу оказывается 0, что и приводит к открытию ОЗУ.

    В любом случае при перепрограммировании ППА всегда надо программировать PC4...PC7 на вывод. В противном случае произойдёт улёт, т.к если запрограммировать на ввод, то НП=1 и ОЗУ исчезает. Это удобно использовать для защиты программ от взлома, причём делая JMP или CALL на команду в ПЗУ LD (PPA+3),A и желательно командой JP (HL) или ещё хитрее.

    В 1990 году товарищи Медведков и Иванов при расширении цвета с 4-х цветов до 8-ми, с целью освободить разряд PC4 для целей цвета, решили, что прерывания для КР580 это непозволительная роскошь. Они избавили PC4 от функции НП, отдав этот разряд для цвета, а в качестве НП использовали выход INTE процессора КР580. Из-за этого стало невозможно использовать программы от РК86 и ОРИОНА, где звук выдаётся по EI/DI, а также прерывания и возникли сложности при установке Z80, т.к у него не оказалось выхода INTE.

    Отчего при Z80 для начального пуска пришлось использовать два вентиля из 155 ЛА3 или половинку триггера 155 ТМ2. Из двух TTL-вентилей делается RS-триггер. На один вход заводится сигнал /RESET, на другой /WR процессора. Эту же переделку разумно делать и при КР580, чтобы освободить INTE для РК-шного звука, прерываний и возможности с его помощью переключать архитектуру, - например, банки ОЗУ.

    Т.к команды EI/DI - быстрые 4-х тактовые, это здорово ускоряет, давая при КР580 ВМ80 возможности процессора КР580 ВМ1, у которого для этих же целей изобретён префикс, ровно на одну команду включающий вторую банку ОЗУ, что даёт 64 кб для программ и 64 кб для данных.

    Цитата Сообщение от Titus Посмотреть сообщение
    как поведет себя ВВ55? Произойдет нагрузка выхода на выход? Например, на выходе KB2 - '0', на выходе KB3 - '1', а при нажатии одновременно двух клавиш S3 и S4, эти выходы обьединятся и ППА выгорит в хлам.
    Такое в СПЕЦИАЛИСТЕ можно сделать только во вредительских целях. Во все разряды как по вертикали, так и по горизонтали выдаётся только 0, точнее программно туда вообще ничего не выдаётся. Нули на выходах порта возникают сами по себе, когда данный порт программируется на вывод. И уж тем более единицы в порты клавиатуры никогда не выдаются, т.к это не требуется. Единственные единицы которые могут возникать на линиях матрицы возникают за счёт высокомных резисторов привязки и коротить их клавишами можно сколько угодно.

    В клавиатуре СПЕЦИАЛИСТА гораздо более грамотный алгоритм, чем классический алгоритм с диодами использованный в РК86 и ОРИОНЕ. Тут не производится сканирование матрицы по одному разряду, так называемым "бегущим нулём".

    Сначала по вертикали выводятся все нули и читается байт по горизонтали, затем ППА перепрограммируется, ноль возникает по горизонтали а считывается байт по вертикали. А затем табличным методом высчитывается код нажатой клавиши. Это примерно в 10 раз быстрее, чем алгоритм РК86.

    Потому вместо диодов и нужны привязки разрядов ППА резисторами (я ставил 20 ком). Никаких конфликтов в ППА не возникает и в играх программно обнаруживаются двойные нажатия (но п/п-ммы ПЗУ C377 и C81B это не поддерживают).
    Последний раз редактировалось barsik; 20.02.2018 в 08:12.

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

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

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

Похожие темы

  1. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  2. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50
  3. Языки программирования
    от BlackWolf в разделе Программирование
    Ответов: 188
    Последнее: 26.04.2009, 15:34
  4. Техника программирования процедурных сопроцессоров
    от andrews в разделе Программирование
    Ответов: 4
    Последнее: 29.12.2006, 20:10

Ваши права

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