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

User Tag List

Страница 2 из 9 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 85

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

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

    По умолчанию

    Не вдаваясь в подробности, могу предположить, что в int 10h как раз все в порядке. Глючат-то отечественные программы, а иностранный Нортон работает нормально. А как советский программист обычно выводит символы, через BIOS, что ли? Да фигушки. Готов поспорить, и товарищ Евгений Рошаль, и Волков, оба баловались прямой записью в видеопамять. А раз так, смотреть надо код обработчика NMI.
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  2. #12
    Master Аватар для Quest
    Регистрация
    10.12.2012
    Адрес
    г. Петрозаводск
    Сообщений
    607
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Сначала смазал все ноги безотмывочным американским флюсом, потом отпаивал поочередно с помощью оловоотсасывателя, который посоветовал DrPass в соседней теме про ремонт. Конечно, не все прошло идеально гладко, некоторые ноги которые идут к большим дорожкам пришлось несколько раз припаивать-отсасывать, еще помогала оплетка для удаления припоя. Вообщем глаза боятся а руки делают -) Дороги не оторвал, оторвал только одну ногу на старом проце. Перввую ногу, которая как раз на толстую дорожку шла. Но и ее припаял потом аккуратно обратно к процу. Так что все обошлось без серьезных последствий.
    А что за флюс, если не секрет ? У меня ФТС водосмываемый . Можно ссылку на тему или название оловоотсасывателя ? Тоже хочу попробовать проц на панельку поставить.
    Можно наверное и феном отпаять ?
    Последний раз редактировалось Quest; 20.10.2013 в 23:37.
    Scorpion ZS-256, ZX Spectrum +3, ZX-Evolution & NeoGS, Поиск-1, Scorpion ZS 1024 Turbo+

  3. #13
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,929
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DrPass Посмотреть сообщение
    Не вдаваясь в подробности, могу предположить, что в int 10h как раз все в порядке. Глючат-то отечественные программы, а иностранный Нортон работает нормально. А как советский программист обычно выводит символы, через BIOS, что ли? Да фигушки. Готов поспорить, и товарищ Евгений Рошаль, и Волков, оба баловались прямой записью в видеопамять. А раз так, смотреть надо код обработчика NMI.
    Верно и не верно одновременно. Прямую запись в память я проверял - все ок. Так же проверил основные функции int 10h - тоже ок. Тут вот какая хитрость как мне кажется - по-идее когда мы вызываем int 10h обработчик если что-то двигает на экране (например скролит его вверх) должен заблокировать NMI и вызов обычных прерываний. Потому что я могу установить в таймере (08h или 1ch) обработчик, дергающий постоянно int 10h. Поэтому когда предыдущий вызов int 10h скролит экран вверх а у меня срабатывает по таймеру вызов int 10h, то он не должен сработать а должен дождаться отработки первого int 10h. Усугубляется все тем, что в обработчике int 10h есть рекурсивный вызов его же (некоторых функций), поэтому без цистерны спирта тут не разберешься.

    Я покажу позже видео с шариком - простенький резидент, который садится на 1Ch (таймер) и выводит отскакивающий от углов экрана шарик (букву 'o'). Там юзается в основном ah=2 (установить курсор в заданные координаты), ah=3 (получить координаты курсора), ah=9 (печать символа), ah=8 (чтение символа по координатам). В общем все. Так вот, допустим у нас приглашение доса 'C:\>" посередине экрана. Запускаем эту прогу и все хорошо - шарик летает, все надписи на экране есть. Далее, вводим команду DIR, в каталоге много файлов, и начинается прокрутка экрана вверх, шарик все бегает и начинаются глюки.

    Как мне кажется, происходит вызов int 10h, когда еще работает другой int 10h, возможно по какой-то причине NEC не блокирует NMI. Или 8088 из-за тормознутости не успевает вызвать пересекающийся int 10, а NEC из-за того, что быстрее - успевает. Либо же стоит строго запретить вызов прерываний в обработчике int 10h (CLI), но тогда возникает проблема с рекурсией в самом обработчике и надо нафиг все переписать с нуля ваще :\

    Цитата Сообщение от Quest Посмотреть сообщение
    А что за флюс, если не секрет ? У меня ФТС водосмываемый . Можно ссылку на тему или название оловоотсасывателя ? Тоже хочу попробовать проц на панельку поставить.
    Можно наверное и феном отпаять ?
    Флюс - AMTECH RMA-223-LF . Ссылка на тему: http://zx-pk.ru/showthread.php?t=15079 , там где-то предпоследние - последние страницы. Феном КРАЙНЕ НЕ РЕКОМЕНДУЮ! Ибо советские микросхемы насколько я знаю очень боятся перегрева. Раньше, когда отцы микросхемы паяли, я знаю юзали специальные теплоотводы, чтоб не дай бог не нагреть ее больше ~40 градусов. Отпаять-то возможно проц и отпаяется, но сколько погибнет микрух в его окружении - сие есть тайна.
    Последний раз редактировалось Tronix; 21.10.2013 в 00:18.

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

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Верно и не верно одновременно. Прямую запись в память я проверял - все ок. Так же проверил основные функции int 10h - тоже ок. Тут вот какая хитрость как мне кажется - по-идее когда мы вызываем int 10h обработчик если что-то двигает на экране (например скролит его вверх) должен заблокировать NMI и вызов обычных прерываний.
    Ну а как он может NMI заблокировать, если у этого аппарата на нем работа int 10h и построена? Он же из int 10h пишет в регистры CGA, и тут же вылетает в обработчик NMI для мимуляции работы видеоконтроллера.
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

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

    По умолчанию

    Короче вынос мозга полнейший. int 10h ничего сначало не запрещает, а даже наоборот - разрешает обычные прерывания (STI). Далее идет проверка на функции, и если они простые - типа определить координаты курсора и активную страницу - инфа передается в регистры и происходит нормальный выход из обработчика. А вот если нужно что-то нарисовать на экране, например символ - начинается полный треш и угар. Символ рисуется в памяти, из-за чего происходит вызов NMI, обработчик NMI в свою очередь смотрит что случилось и если кто-то работает с видео памятью вызывает функции int 10h для корректной обработки, затем возвращает управление в int 10h, int 10h в свою очередь возвращает управление в программу.

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

    По умолчанию

    Да, DrPass оказался прав. Все дело в прямом выводе в видеопамять.

    ---------- Post added at 13:43 ---------- Previous post was at 12:23 ----------

    rep stosw - когда заполняю b800 одним символом - рисуется каждый первый. Каждый второй не рисуется. Потом, если переключить на 1 активную страницу и потом снова на нулевую - все символы отрисовываются нормально (то есть в памяти они по факту есть).

    Смарю NMISER.ASM. IN AX,TRAP_A - пытается получить в AX адрес (смещение?) записавшегося байта. Далее там некоторые перетрубации с получением символа из памяти и его аттрибута, сравнение - текущая ли активная страница, вычисление смещения в выходном буфере и отрисовка символа.

    Заремил сравнение текущая ли страница или нет (потому что если не текущая - выход из обработчика), конкретно указал что рисуем всегда символ 'O' цветом 7. Результат - все то же самое, вижу только нечетные 'O', четных на экране не вижу.
    Кстати интересный момент - эмулятор SovietPC не честно работает. Он игнорит обработчик NMI и рисует изображение своими какими-то процедурами внутренними (возможно берет символы сразу с B800).

    Отсюда вывод - либо на четных символах NMI вообще не вызывается, либо вызывается, но в AX получает рандом вместо корректного смещения. Особенность работы NEC V20 с командами stosb/stosw?

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

  8. #17
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,804
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может такая особенность
    "- V20 will resume 'rep' with instructions with segment override prefixes following interrupts, 8088 won't."
    как то сказывается?
    А вообще очень интересная тема.

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Может такая особенность
    "- V20 will resume 'rep' with instructions with segment override prefixes following interrupts, 8088 won't."
    как то сказывается?
    А вообще очень интересная тема.
    Да не, как я понимаю смысл в том, что оригинальный 8088 не может корректно работать с командами типа REP DS: STOSW, то есть когда вместо ожидаемого ES ему суют DS. А NEC V20 напротив - может.

    Почему то либо NMI не вызывается после очередной записи в память, либо вызывается, но в порту 28h сидит неверный адрес записываемого байта. Отлаживать очень не удобно, нельзя пикнуть (ибо 61h порты), нельзя что-то вывести на экран (потому что произойдет рекурсия), нельзя писать в файл (потому что неведомо - загрузился дос или нет). И пост карту не всунешь в этот долбаный совьет-иса слот

    ---------- Post added at 16:17 ---------- Previous post was at 15:46 ----------

    Может ли NEC при lodsw писать в память сразу 4 байта, если видит, что CX > 4 ?
    Последний раз редактировалось Tronix; 21.10.2013 в 15:48.

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

    По умолчанию

    Не срабатывает "ловушка" адреса - порт 28h (TRAP_A). Простые тесты:

    Код:
    mov ax, 0B800h
    mov es,ax
    mov di,0
    mov al,'O'       ; буква O
    mov ah,7        ; белым по черному
    mov cx,1        ; один раз
    rep stosw
    
    in ax,28h
    call PrintHexAX
    В итоге в AX у нас 8000h . Че такое '8' я хз, но следующие 3 байта явно смещение, по которому произошла запись. Здесь все ок, все работает как ожидалось.

    Код:
    mov ax, 0B800h
    mov es,ax
    mov di,0
    mov al,'O'       ; буква O
    mov ah,7        ; белым по черному
    mov cx,2        ; два раза
    rep stosw
    
    in ax,28h
    call PrintHexAX
    Что в AX? Правильно - тот же 8000h, хотя очень бы хотелось видеть там 8002h по логике, потому что второй символ у нас записался в B800:0002.
    Ну и в довершение:

    Код:
    mov ax, 0B800h
    mov es,ax
    mov di,0
    mov al,'O'       ; буква O
    mov ah,7        ; белым по черному
    mov cx,3        ; три раза
    rep stosw
    
    in ax,28h
    call PrintHexAX
    В AX у нас 8004h как и должно быть.

    Из этого следует, что глюка в аппаратной реализации защелки адреса. Тут уж я умываю руки. В качестве великого костыля конечно можно при вызове NMI рендерить не один символ, а два сразу - текущий и соседний, но во-первых это дополнительное место нужно, во-вторых исходников 91 года биоса нет, а 89 года BIOS уж очень какой-то неказистый.

  11. #20
    Master Аватар для Quest
    Регистрация
    10.12.2012
    Адрес
    г. Петрозаводск
    Сообщений
    607
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    исходников 91 года биоса нет
    где-то они должны-же быть...
    Scorpion ZS-256, ZX Spectrum +3, ZX-Evolution & NeoGS, Поиск-1, Scorpion ZS 1024 Turbo+

Страница 2 из 9 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Ваши права

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