Важная информация

User Tag List

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 21 по 30 из 63

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

  1. #21
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,846
    Спасибо Благодарностей отдано 
    83
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    166 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    выравняв расположение этого фонта ровно по блоку, что дает младший байт равным 00
    Не совсем так. Адрес фонта поделён на 8, чтобы не было переноса в команде ADD L, адрес фонта должен быть кратным 800h.

    - - - Добавлено - - -

    Учитывая, что перед этим из кода символа вычитается 20h, можно фонт подвинуть вперёд максимум на 100h байт. Вышесказанное верно, если мы хотим использовать весь диапазон символов 20-FF.

  2. #22
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Вопрос к специалистам по Специалисту)

    Зачем нужен сигнал НП?

    - - - Добавлено - - -

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

  3. #23
    Banned
    Регистрация
    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.

  4. #24
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

    - - - Добавлено - - -

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

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Поточнее - по каким адресам при начальном сбросе маппится ПЗУ и сколько раз?
    Я об этом не думал, т.к это не важно и зависит от конкретной реализации области ПЗУ C000...F7FF. По сбросу ПЗУ C000 стоит на адресе 0, благодаря чему выполняется самая первая команда JMP C003. Далее командой на адресе C003 устанавливается стек и следующими двумя командами программируется ППА. Т.о после исполнения 4-той команды в ПЗУ после сброса, ОЗУ появляется в адресном пространстве процессора и не исчезает до выключения компьютера. Использовать сигнал НП, чтобы включать ПЗУ с нуля можно только, если НП формируется программно, т.е или битом PC4 или выводом INTE процессора КР580.

    Цитата Сообщение от Titus Посмотреть сообщение
    то этот самый ВВ55, что логично, сгорит? Такое бывало?
    Вряд-ли ВВ55 сгорит. Они довольно надёжные. Я имел дело с полусотней 8-ми разрядок с ППА. Дохли КР580 и ВГ93, а Z80 и ВВ55 никогда. Они также как КМОП серии и 1533 допускают коротыш на землю или +5В. А вот подача на ВВ55 напряжений -5В или +12В, возможно, убъёт их.
    Последний раз редактировалось barsik; 20.02.2018 в 08:38.

  6. #26
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Сначала по вертикали выводятся все нули и читается байт по горизонтали, затем ППА перепрограммируется, ноль возникает по горизонтали а считывается байт по вертикали. А затем табличным методом высчитывается код нажатой клавиши. Это примерно в 10 раз быстрее, чем алгоритм РК86.
    Глупости. Такой алгоритм применяется для обнаружения факта нажатия (RAMFOS, например, настраивает PA и PCl на вывод и читает PB). И он действительно просто молниеносный:
    Код:
    LDA PPA_B
    ORI 03H
    CPI 0FFh
    Флаг Z укажет, что ничего не нажато. Шифт опрашивается отдельно, поэтому тут он маскируется. А потом, PA и PCl настраиваются на ввод, а PB на вывод и начинается бегущий 0 по PB, чтение слова из PA и PCl и побитный сдвиг. Поэтому в таблице сканкодов у них 6 строк по 12 символов (округлено до 16). Штатный загрузчик делает похожим методом. Как делает опрос MON_RSYS я не знаю - не разбирал, но, возможно, более оптимально.

  7. #27
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Глупости. Такой алгоритм применяется для обнаружения факта нажатия (RAMFOS, например, настраивает PA и PCl на вывод и читает PB). И он действительно просто молниеносный:
    А что на счет замыкания выход на выход ВВ55? Каков будет результат при каких значениях, и не сгорит ли ВВ55? И какие бывают ВВ55? КМОП? ТТЛ?

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

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Цитата Сообщение от barsik
    Тут не производится сканирование матрицы по одному разряду, так называемым "бегущим нулём".
    Глупости.
    Вы опять сильно опозорились.

    Вы даже не знаете, что такое сканирование бегущим нулём. Видимо не дизассемблировали ПЗУ РК86. Вы путаете сканирование бегущим нулём с обычным сдвигом аккумулятора CPU. В РК86 при опросе матрицы бегущий 0 выдаётся в порт А восемь раз (если ничего не нажато), т.е в порт А последовательно выводятся двоичные числа:

    11111110
    11111101
    11111011
    11110111
    11101111
    11011111
    10111111
    01111111

    и каждый раз выполняется чтение из порта B. В программах СПЕЦИАЛИСТА нет такой процедуры и она просто невозможна т.к нет диодов и потому при выдаче 1 в порты ППА будет, как указал Titus, конфликт сигналов на выходах ППА.

    И что Вы отрицаете, что опрос клавиатуры в СПЕЦИАЛИСТЕ намного быстрее, чем в РК86, даже учитывая, что у него больше клавиш (как бы две матрицы, по порту А и по порту C, что усложняет опрос)?

    А других мыслей в комментируемой Вами моей цитате, в которых можно было бы усомниться, нет. Получается, что Вы полный некомпетэ и как всегда пытаетесь придраться хоть к чему-то в моих постах, даже тогда, когда не разбираетесь в теме.
    Последний раз редактировалось barsik; 20.02.2018 в 17:42.

  9. #29
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это что сейчас было? А? Злость Барсика торжествует?

    Барсик, уважаемый, я в прошлом писал собственный эмулятор и видел со стороны железа, как работает каждый из имеющихся у меня загрузчиков для Специалиста.

    Что же касается в сравнении скорости выполнения п/п ввода символа на РКшке и Специалисте я ничего утверждать не буду, т.к. у меня не было РКшки. Да и РКшка сама по себе работает медленнее на 15% только по тактам, а с учетом ПДП и еще больше.

    Цитата Сообщение от Titus Посмотреть сообщение
    А что на счет замыкания выход на выход ВВ55? Каков будет результат при каких значениях, и не сгорит ли ВВ55? И какие бывают ВВ55? КМОП? ТТЛ?
    8255 бывает нМОП (как 8080) так и КМОП (82с55). ВВ55 вроде как только нМОП, ИК55 я не знаю, но их бага не позволяет использовать в том же Орионе. Касаемо замыканий - да, теоретически может. Более того, теоретически можно нажать весь ряд, а это сумма 13 сопротивлений, соединённых параллельно. А минимальное сопротивление вычисляется по допустимому току ножки. Но я бы не стал ставить ниже 1к/ножку. Таким образом, нужно не менее 1к*13 = 13к. В Экспрессе стоят 10к. Это не отменяет КЗ на КМОП версии ППА, ну на в нМОП версию ВВ55 мы вроде не смотрели.

  10. #30
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,550
    Спасибо Благодарностей отдано 
    1,213
    Спасибо Благодарностей получено 
    1,748
    Поблагодарили
    680 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    По порядку:
    Какая бага у ИК55?
    Теоретически может что? Сгореть? Но на практике не встречалось?
    Чем выходные каскады КМОП отличаются от нМОП (по силе открытия ключей на ноль, и на плюс питания)?
    Или перефразирую так. Какое сопротивление открытого ключа на ноль и на плюс для КМОП и для нМОП?

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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