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

User Tag List

Страница 5 из 9 ПерваяПервая 123456789 ПоследняяПоследняя
Показано с 41 по 50 из 85

Тема: [Поиск 1] Процессор NEC V20

  1. #41
    Veteran Аватар для piroxilin
    Регистрация
    24.05.2009
    Адрес
    Москва
    Сообщений
    1,098
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Tronix, Могу дать погонять китайский 16канальный Saleae.
    16 каналов будут на 16мгц сэмплиться.
    Всёравно пока без дела лежит.
    Забирать на м.калужской, как обычно
    С уважением, Дмитрий.

  2. #42
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от piroxilin Посмотреть сообщение
    Tronix, Могу дать погонять китайский 16канальный Saleae.
    Спасибо, но наверное пока не нужно. У меня на работе тоже есть 16-ти канальник, какой-то злой, на ПЛИС, очень большие мегагерцы может снифать. Если что его возьму....

    Просуммирую мысли, в кратце, чтобы самому не забыть:

    У Поиска есть две области видео-памяти по 16Kb каждая, отображаться на экране может одна из них. В графическом режиме отображается B800h, в текстовом - отображается BC000h, содержащая графическое представление текстовых символов из B800h. Происходит это в моем понимании примерно так: когда установлен текстовый режим, при записи символа в видео-память B800h срабатывают ловушки адреса (регистры-защелки), которые запоминают, по какому адресу произошла запись. Дальше вызывается обработчик NMI, который в свою очередь читает из портов 28h и 29h значение адреса (из регистров-защелок), по которому произошла запись, и отрисовывает символ в видимой графической области BC000. Сам код символа записывается в B8000h.

    За отслеживание, что запись происходит в видео-память отвечает РТ4 (с небольшой помощью РТ5?), при удачной дешифрации формирующая сигнал /CRTIOM. Дальше этот сигнал вместе с некоторыми другими запускает мультивибратор, который дает длинный импульс NMI (не менее пяти тактов, наверное).



    По сигналу NMI происходит защелкивания текущего адреса в регистры-защелки:



    Ну и дальше проц должен уйти на обработчик NMI, который прочтет из портов 28h,29h адрес куда писался байт и отрисует его графическое представление в отображаемый экран BC000h. Дешифрует порты РТ5, формируя сигнал /TRAPSEL, который потом разделяется на 28h (TRAPL),29h (TRAPH) и 2ah (TRAPDAT) с помощью ИД7.

    Так вот, когда идет запись двух байт (mov cx,2; rep stosw), первый байт - есть сигнал /CRTIOM, затем длинный NMI и затем уже /TRAPSEL, TRAPL и TRAPH. А вот второй байт - нет сигнала /CRTIOM, соответственно нет и всего остального. Такое ощущение, что "проскакивает" он.

  3. #43
    Moderator
    Регистрация
    23.01.2011
    Адрес
    Донецк
    Сообщений
    793
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я щас глянул даташит на NEC v20, увидел интересный момент. У него скважность CLK по спецификации равна двум. А на Поиске-то она равна трем. Учитывая, что переключение шин процессора происходит скорее всего по фронту сигнала, это действительно может вызывать подобную хрень.
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  4. #44
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    похоже что /trapsel на v20 кривой изза другого поведения /inta? либо изза другого состояния на шине в момент формирования /trapsel

  5. #45
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не доходит дело до /TRAPSEL. Это я неправильно смотрел. Сначала должен сформироваться сигнал /CRTIOM, чтобы вызвать NMI и по этому же сигналу (NMI) защелкнуть текущий адрес на шине адреса в ИР23. А /TRAPSEL уже потом, его процедура обработки NMI формирует для доступа к портам 28,29h, из которых она узнает по какому адресу произошла запись. Так дело до NMI не доходит, так как нет /CRTIOM

    А /CRTIOM дешифруется просто с шины адреса... Неужели на шине адреса не выставляется адрес по какому происходит запись в память? Но этого же не может быть, иначе бы вообще ничего не работало. Да и потом, физически, запись в B800h происходит, то есть байты там появляются (в памяти). Значит все-таки проц работает нормально, и адреса выставляет нужные на шину. Только если РТ4 не успевает сработать из-за короткого CLK?

    Есть другая безумная идея - сделать свой дешифратор на мелкой ПЛИС для сигнала /CRTIOM и сравнить с текущим дешифратором. Если у меня сигнал будет формироваться, а у Поиска нет - то скорее всего дело в РТ4(и РТ5?). С другой стороны, как же работают остальные сигналы /PROMSEL (доступ к ПЗУ) и /RAMSEL (доступ к RAM)... Не понимаю.
    Последний раз редактировалось Tronix; 03.11.2015 в 08:00.

  6. #46
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хммм... Уставшим взглядом после работы посмотрел опять на схему дешифратора и увидел, что кроме адресов и DT/R по входу еще присутствует сигнал /NMIDIS.

    Формирование сигнала немаскируемого прерывания произво-
    дится при записи данных в буфер дисплея B8000Н - BBFFFН
    только при наличии сигнала разрешения NMIDISABLE (потенциал
    низкого уровня на выводе 1 микросхемы D42).
    Рулится програмно, через 68h порт бит 3...

    Код:
           ----------------------------------------------------
                     Порт ввода-вывода 68Н
           ----T-------------------T---------------------------
            N  ¦Наименование       ¦ Назначение
           бита¦сигнала управления ¦
           ----+-------------------+---------------------------
            0  ¦  R (Red)          ¦
           ----+-------------------+Цвет изображения и фона
            1  ¦  G (Green)        ¦
           ----+-------------------+
            2  ¦  B (Blue)         ¦
           ----+-------------------+---------------------------
            3  ¦ NMI DISABLE       ¦Запрет/разрешение формиро-
               ¦                   ¦вания немаскируемого
               ¦                   ¦прерывания
           ----+-------------------+---------------------------
            4  ¦ PALETTE           ¦Цветовой выбор (палитра)
           ----+-------------------+---------------------------
    
                                   - 32 -
            5  ¦ I (INTENS)        ¦Интенсивность изображения
               ¦                   ¦и фона
           ----+-------------------+---------------------------
            6  ¦ DISPLAY BANK      ¦0/1 страница видеопамяти
           ----+-------------------+---------------------------
            7  ¦ HIRES             ¦Графика высокого/среднего
               ¦                   ¦       разрешения
    Вот его бы интересно взглянуть. Пока что-то не найду на схеме...

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

  8. #47
    Member
    Регистрация
    06.01.2010
    Адрес
    Москва
    Сообщений
    180
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Хммм... Уставшим взглядом после работы посмотрел опять на схему дешифратора и увидел, что кроме адресов и DT/R по входу еще присутствует сигнал /NMIDIS.



    Рулится програмно, через 68h порт бит 3...

    Код:
           ----------------------------------------------------
                     Порт ввода-вывода 68Н
           ----T-------------------T---------------------------
            N  ¦Наименование       ¦ Назначение
           бита¦сигнала управления ¦
           ----+-------------------+---------------------------
            0  ¦  R (Red)          ¦
           ----+-------------------+Цвет изображения и фона
            1  ¦  G (Green)        ¦
           ----+-------------------+
            2  ¦  B (Blue)         ¦
           ----+-------------------+---------------------------
            3  ¦ NMI DISABLE       ¦Запрет/разрешение формиро-
               ¦                   ¦вания немаскируемого
               ¦                   ¦прерывания
           ----+-------------------+---------------------------
            4  ¦ PALETTE           ¦Цветовой выбор (палитра)
           ----+-------------------+---------------------------
    
                                   - 32 -
            5  ¦ I (INTENS)        ¦Интенсивность изображения
               ¦                   ¦и фона
           ----+-------------------+---------------------------
            6  ¦ DISPLAY BANK      ¦0/1 страница видеопамяти
           ----+-------------------+---------------------------
            7  ¦ HIRES             ¦Графика высокого/среднего
               ¦                   ¦       разрешения
    Вот его бы интересно взглянуть. Пока что-то не найду на схеме...
    D72.1 вв55
    БК 0010-01, МК-85М 16к, МК-90, МС-0511, МС-0530, Дельта С, Электроника КР-02, Поиск 1 (128kB->512kB->1MB), ПК8000 Сура

  9. #48
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообщем, пока форум лежал, решил проконсультироваться тут: http://www.nedopc.org/forum/viewtopic.php?f=87&t=11189 . В итоге, были проведены ряды экспериментов: я записывал по кругу цифру "1" (mov cx,1; rep stosw) на экран и два раза цифру "2" (mov cx,2; rep stosw). В самом обработчике NMI вывожу содержимое из регистров-защелок (in ax,28h), затем значение по этому адресу в памяти символа и его аттрибута (CHR: ) и значение по этому адресу плюс два (CHR+2). Поведение на 8088 предсказуемо:



    А вот V20:



    Выяснилось, что при операции прямой записи в память типа MOV CX,2; REP STOSW попадая в NMI для обработки первого символа в памяти уже находится и второй символ!

    Такие дела... В итоге взял исходники BIOS 89 года, которые есть везде, и попробовал сделать следующее - при в ходе в NMI взять из стека адрес CS:IP предшествующей команды и сравнить ее на наличие префикса REP (0xF3). Если есть - значит мы попали в NMI в разрыве между REP xxxx, и значит нужно рендерить сразу два символа - текущий и по адресу текущий+2. Но пришлось сделать две проверки - когда CX=2 и rep stosw, то я получаю в NMI уже опкод команды, следующей за rep stpsw. Поэтому для такого случая приходится проверять es:[bx-2]. С другой стороны, когда CX=1 и rep stosw, я здесь зря отрисую два символа. Когда CX=3, должно сработать первое условие es:[bx].

    Скомпилил и тут же словил первый баг - не правильно распознавался объем RAM. Вместо 480Кб дос рапортовала о 306Кб вроде, и CheckIt не запускался, ругаясь на нехватку памяти. Переписал процедуру определения RAM. Скомпилял. Запустил VC - работает как надо. Запустил тесты в CheckIt - ну.... снизилась видео-скорость конечно... 430 bios speed и 822 direct speed. Ну и вообще, биос 89-ого года из сорцов - уж очень ранний, что-ли. Багов много - не правильно настроена клава. Клавиша ESC - это F1, F2 - это F1, нельзя нажать Ctrl+L, потому что Ctrl - это вроде бы Alt и тд. Странно отрисовываются инверсные цвета, не так как в биосе 91-ого года (когда фон белый а сам символ черный). Не полностью работают CGA-порты, особенно на чтение, поэтому Принц Персии не запускается и ругается на отсутствие видеоадаптера. И это только на первый взгляд. Ах да, я еще выпилил полностью работу с кассетой, а то мне места не хватало. Но на всякий случай выложу здесь, в прикрепленном файле с исходниками.

    А так можно попробовать подменять NMI из-под доса резидентом...
    Последний раз редактировалось Tronix; 14.11.2015 в 19:36.

  10. #49
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    79
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    впилил дезассемблированную обработку сканирования клавиш из биоса 91-ого года. Теперь клавиши начали соответствовать своей раскладке на клавиатуре (ESC - это ESC, F1 - это F1 и тд), начали срабатывать комбинации Ctrl + буква, начал включаться синий фон при нажатии правого Ctrl (переключение на русский). Однако само переключение не происходит, символы по прежнему печатаются английские, и не выключается синий фон повторным нажатием на правый Ctrl. Видимо что-то еще там не того, наверное еще и int9 надо менять... Но все равно, уже гораздо лучше, по сравнению с самым первым вариантом.

    Итого, уже пофикшено:
    1) Правильное определение количества набортной памяти. По умолчанию сильно занижал, например на реальных 480Кб дос рапортовала о ~306Kb. Не стал разбираться, а переписал функцию. Сделал вывод на экран количества памяти (места много, так как выкинул кассетные функции).
    2) Нормальный вывод символов, с инверсными аттрибутами. Volkov Commander стал выглядеть так-же, как и на биос 91-ой версии
    3) Частично заработала клавиатура. Описано выше. Изменен SCANINT2.ASM. Старый сохранен как SCANINT2.A__

    Что еще надо сделать:
    1) Клавиатура - описано выше (русские символы, убирание синего фона при повторном нажатии пр. Ctrl)
    2) Впилить более корректную обработку CGA портов в NMI, в том числе вроде в 91-ой версии есть возможность читать значения из CGA портов, а не только их туда писать. Добится запуска принца персии.
    3) Посмотреть что с курсором - он не убирается, когда его выключают, хотя вроде бы функции такие в 89 биосе есть.
    4) Посмотреть что с переключением видео-страниц. При тестировании видеостраниц в Checkit происходит не пойми что.
    5) Шрифт - взять из 91-ой версии, потому что мне он больше нравится. Различаются начертанием кодов >127
    6) Ну и по мелочи, оптимизация, приведение кода в человеческий вид...

    Вот такие планы...

  11. #50
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, Tronix!

    Самому очень хочется заняться BIOSом, да времени катастрофически не хватает.
    А нет ли у Вас в планах - знакогенератором заняться?
    Привести к привычному виду символы псевдографики?

Страница 5 из 9 ПерваяПервая 123456789 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Процессор NEC V30 D70116HCZ - что за зверь?
    от dimich в разделе Для начинающих
    Ответов: 11
    Последнее: 07.07.2017, 10:56
  2. Ответов: 13
    Последнее: 25.11.2016, 11:52
  3. 8088 mother Juko SuperTurbo XT (Nec v20)
    от palsw в разделе Зарубежные компьютеры
    Ответов: 65
    Последнее: 14.06.2016, 12:33
  4. NEC D27128D
    от breeze в разделе Память
    Ответов: 4
    Последнее: 22.02.2010, 13:38

Ваши права

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