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

User Tag List

Страница 28 из 82 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя
Показано с 271 по 280 из 811

Тема: Документация на ПК 11/16

  1. #271
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    398 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Нет, тормозов нет)
    Когда какой-либо процесс дает запрос на VIRQ, вызывается подпрограмма ВПО, которая добавляет этот запрос в специальную табличку (это делается программно).
    Далее, как только в USER-процессе будут разрешены прерывания, аппаратный контроллер VIRQ сразу даст прерывания и подсунет вектор, который он вычислит из этой таблички. Затем он уберет вектор из таблички и сдвинет очередь. Если в табличке остались запросы на прерывания по другим векторам, то при следующем разрешении прерываний, этот контроллер выдаст прерывание по следующему вектору из таблички, который был в очереди. И т.д.
    Так вектор из этой таблички берет какой-то аппаратный контроллер? Да ещё анализирует её и двигает?

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

  3. #272
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,549
    Спасибо Благодарностей отдано 
    1,211
    Спасибо Благодарностей получено 
    1,742
    Поблагодарили
    679 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Нашел некоторые несоответствия описания видеоконтроллера с тем, что есть на самом деле.

    1) Самый первый отрезок в строке тоже должен отображаться по принципу 'бордюр, затем сам отрезок'. Возможно, бордюр у него будет нестандартным, однако бордюр должен быть.

    2) Для режима 2 цвета и 4 цвета, палитра используется иначе, чем описано. В описании сказано, что для двухцветного режима цвета находятся в 14 и 15 цвете палитры, а для четырехцветного в 12, 13, 14 и 15 цветах.

    На самом деле для двухцветного режима цвет-0 должен находиться в цветах палитры 7, 11, 13 и 14, а цвет-1 в 15-м цвете.
    Для четырехцветного режима цвет-0 находится в 3 и 12 цвете палитры, цвет-1 в 7 и 13, цвет-2 в 11 и 14, цвет-3 в 15-м цвете палитры.

    Расшифровывая подобную особенность, становится понятно, с чем это связано:
    Во всех режимах (1, 2 или 4 цвета), видеоконтроллер оперирует тетрадами (4-битными блоками), информацию в которых для 1 и 2 цветных режимах он не сдвигает, чтобы получить нужные биты, а маскирует ненужные биты, накладывая по 'OR' маску 1110, 1101, 1011 и 0111 для выбора бита в двухцветном режиме, и маску 1100 и 0011 для выбора пары бит для 2-х цветного режима. Получившиееся тетрада и есть номер цвета в палитре.

    Отсюда выходит интересная потенциальная возможность раскраски пикселей разными цветами в 1 и 2-цветных режимах, в зависимости от позиции пикселя на экране. Не знаю, использовал ли кто-нибудь эту особенность, но она есть.

    ---------- Post added at 19:01 ---------- Previous post was at 18:57 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Так вектор из этой таблички берет какой-то аппаратный контроллер? Да ещё анализирует её и двигает?
    Да. В табличке очередь, где каждый элемент указывает на следующий и предыдущий. Как только в очереди появляется один или несколько запросов, контроллер извлекает самый последний поступивший, вычисляет вектор, а очередь сдвигает. Если в очереди ничего не осталось, он сбрасывает флаг VIRQ' (это байт в ОЗУ, по которому ориентируется ядро, выставлять ли VIRQ при переключении управления на очередной процесс).

  4. #273
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    398 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Да. В табличке очередь, где каждый элемент указывает на следующий и предыдущий. Как только в очереди появляется один или несколько запросов, контроллер извлекает самый последний поступивший, вычисляет вектор, а очередь сдвигает. Если в очереди ничего не осталось, он сбрасывает флаг VIRQ' (это байт в ОЗУ, по которому ориентируется ядро, выставлять ли VIRQ при переключении управления на очередной процесс).
    Да вы что? Представляете как это схемотехнически надо реализовать? Вот на КМД ДВК (MY) для ПДП используются аж три 1801ВП1. А тут ещё анализировать и двигать надо. Да, в Неоне стоят 1804ВУ1, но они используются в видеоконтроллере. А ведь есть подпрограмма обработки VIRQ в ПЗУ. Не знаю, почему вы её не увидели.

  5. #274
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,549
    Спасибо Благодарностей отдано 
    1,211
    Спасибо Благодарностей получено 
    1,742
    Поблагодарили
    679 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А ведь есть подпрограмма обработки VIRQ в ПЗУ. Не знаю, почему вы её не увидели.
    Я не увидел) Если нашли, киньте адресочек)

  6. #275
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    398 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я не увидел) Если нашли, киньте адресочек)
    Скину с объяснением работы. Ответная просьба - текущую версию Emustudio Союз-Неон ПК11/16 побаловаться можно, несмотря на недоделки?

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ответная просьба - текущую версию Emustudio Союз-Неон ПК11/16 побаловаться можно, несмотря на недоделки?
    Еще немножко надо пошлифовать, ибо миллионы строк отладочных сообщений и всяких варнингов по записи в несуществующие регистры лезут в окно. Подчищу и выложу.

    ---------- Post added at 19:49 ---------- Previous post was at 19:49 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Скину с объяснением работы.
    Можно даже без обьяснения сперва, просто адрес.

  8. #277
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    398 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Можно даже без обьяснения сперва, просто адрес.
    Без объяснения сложно понять суть. Я ещё конечно не дошёл до обработки векторов ВПО с помощью запросов, но это в принципе и не важно. Важно то, что при появлении запросов в таблице, ВПО сбрасывает в регистре PPIC (161034) бит 3, в результате чего на процессор 1806ВМ2 подаётся сигнал запроса на прерывание VIRQ. Как только по приоритету процессора обработка VIRQ будет разрешена, то вектор текущего прерываемого процесса положится в стек (то есть PC и PSW), ну и далее процессор выставит сигнал IAKO для чтения вектора с шины. А вот далее начинается самое интересное. На самом деле передать вектор некому, процессор прощелкает 64 такта, ничего не получит, да и прервётся по фатальному исключению неполучения вектора прерывания. Его адрес обработки равен SEL274, ну а в нашем случае просто 0274, т.к. SEL=0. В ячейках 0274 и 0276 ПЗУ содержаться соответственно значения 01446 и 0600. Ну теперь собственно и подпрограмма:
    Код:
    1446$:	MOV	R5,@#100052
    	MOV	R0,@#100040
    	MOV	@#100146,R5
    	MOV	(R5)+,R0
    	CMP	@R5,R0
    	BNE	1512$
    	BIC	#10,@#100036
    	BIS	#10,@#161034
    	CMP	#100150,R5
    	BEQ	1536$
    1512$:	MOV	R0,@(R5)+
    	MOV	-(R5),2(R0)
    	CLR	-(R5)
    	SUB	#100072,R5
    	MFUS
    	WCPC
    	MFUS
    	WCPS
    1536$:	MOV	@#100040,R0
    	MOV	@#100052,R5
    	STEP
    Ну как я ранее писал, вектор прерванного процесса находится уже в стеке. Поэтому остается осмотреть нашу таблицу с прерываниями, если она закончилась, то установить бит 3 в PPIC, тем самым прекратив требовать VIRQ. Ну и если что есть, то записать содержимое нового вектора в CPC и CPSW и запустить с помощью STEP новый процесс.
    Эта же подпрограмма обрабатывает и DOUBLE BUS ERROR, единственно, что в новом PSW стоит 0601, т.е. установлен бит C, но нигде его обработки не идет. Весьма вероятно, что в Союз-Неон нету TRAP4.

  9. Эти 2 пользователя(ей) поблагодарили Alex_K за это полезное сообщение:

    nzeemin (02.01.2023), yu.zxpk (09.09.2020)

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А вот далее начинается самое интересное. На самом деле передать вектор некому, процессор прощелкает 64 такта, ничего не получит, да и прервётся по фатальному исключению неполучения вектора прерывания.
    Вот что значит знать нюансы этих процессоров)
    А я уж придумал аппаратный контроллер, который, кстати, исправно работает)))

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

    Но вообще, не понятно, как я мог проглядеть эту подпрограмму. Просто на самом видном месте лежит, и сразу видно, что обрабатывает таблицу векторов. Да уж.

  11. #279
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    345
    Спасибо Благодарностей получено 
    606
    Поблагодарили
    398 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вот что значит знать нюансы этих процессоров)
    А я уж придумал аппаратный контроллер, который, кстати, исправно работает)))

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

    Но вообще, не понятно, как я мог проглядеть эту подпрограмму. Просто на самом видном месте лежит, и сразу видно, что обрабатывает таблицу векторов. Да уж.
    Теперь осталось убрать из EmuStudio супер-пупер навороченный аппаратный контроллер, сделать обработку отсутствия АВП и посмотреть как всё будет работать.
    А вот и тормознутость - во-первых пустое ожидание 64 тактов, во-вторых прерывание в HALT, ну и третье - программная обработка очереди. Все это занимает довольно продолжительное время, по сравнению с аппаратной реализацией. Плюс только в том, что прерывания происходят не очень часто. Ну а минус в том, если бы Com-порт был со скоростью 57600, то его запросы на прерывания в реальном времени уже было бы обработать нереально, на 9600 ещё наверно справиться можно.

  12. #280
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,549
    Спасибо Благодарностей отдано 
    1,211
    Спасибо Благодарностей получено 
    1,742
    Поблагодарили
    679 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Весьма вероятно, что в Союз-Неон нету TRAP4.
    А разве TRAP4 и TRAP10 - это не внутренние дела процессора?

    ---------- Post added at 20:53 ---------- Previous post was at 20:50 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А вот и тормознутость - во-первых пустое ожидание 64 тактов, во-вторых прерывание в HALT, ну и третье - программная обработка очереди. Все это занимает довольно продолжительное время, по сравнению с аппаратной реализацией. Плюс только в том, что прерывания происходят не очень часто.
    Даже в этом случае не очень тормознуто. Обработка очереди тоже весьма быстрая. Да и прерывания в системе используются только в основном от системного таймера, а это 50Hz, да ответы от HDD/FDD, да почти и все.

Страница 28 из 82 ПерваяПервая ... 242526272829303132 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Документация по Z280
    от spensor в разделе Несортированное железо
    Ответов: 39
    Последнее: 08.04.2014, 00:52
  2. Тех. документация на старые ЭВМ и книги
    от AL.EX в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 15.08.2010, 17:33
  3. Ленинград-2: документация
    от dicebox в разделе Ленинград
    Ответов: 13
    Последнее: 14.04.2009, 23:33
  4. Документация к Dendy
    от UberAlice в разделе Nintendo
    Ответов: 9
    Последнее: 19.03.2008, 14:02
  5. Программная документация.
    от fk0 в разделе Программирование
    Ответов: 7
    Последнее: 19.01.2006, 16:53

Ваши права

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