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

User Tag List

Страница 23 из 82 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя
Показано с 221 по 230 из 811

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

  1. #221

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    При старте загрузчик сканирует память на чтение с адреса 0 до 170000 с шагом 4000. Очевидно, он хочет упереться в регистры и определить таким образом вершину памяти?
    Именно так - до упора в пустоту или в ПЗУ.

    ---------- Post added at 22:04 ---------- Previous post was at 22:01 ----------

    Цитата Сообщение от Alex_K Посмотреть сообщение
    надо уяснить, что в 1801ВМ2 в стек кладутся не PC и PSW, а CPC и CPSW.
    Единственный не вполне понятный момент - какие значения будут в CPSW и CPC после выполнения команды RTI, устанавливающей биты 7 и 8 в PSW ..

  2. #222

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Единственный не вполне понятный момент - какие значения будут в CPSW и CPC после выполнения команды RTI, устанавливающей биты 7 и 8 в PSW ..
    Из моего описания 1801ВМ2, алгоритм команды RTI:
    ------------------------------------------------------------
    Алгоритм: PC := (SP)+; IF (PC>=160000(8)) THEN PSW[8:0] := (SP)+ ELSE PSW[7:0] := (SP)+
    Описание: Новые содержимые PC и PSW загружаются из стека. Если новое значение PC больше или равно 160000(8), то из стека загружается и 8-й разряд PSW (H/U), в ином случае он остается неизменным. Данная особенность даёт возможность возвратиться из режима USER в режим HALT, если прерывание USER было вызвано из режима HALT. Если при загрузке нового PSW устанавливается бит T в PSW, то отладочное прерывание будет вызвано до исполнения первой команды нового процесса. Если перед исполнением RTI был установлен T-бит, а при загрузке нового PSW он очищается, то в этом случае всё равно будет вызвано отладочное прерывание, но в стеке сохранится уже новое PSW без установленного бита T. Если во время первой выборки из стека происходит зависание, то второй выборки не происходит и процессор прерывается (т.е. указатель стека SP увеличивается на 2, а не на 4). Загрузка новых значений PC и PSW происходит из того же адресного пространства, из которого выполняется команда RTI. Если возврат происходит из режима USER или режима HALT с разрешёнными прерываниями в режим HALT с запрещёнными прерываниями, то после загрузки нового значения PC изменяется и CPC, т.к. в данный момент ещё регистры копий разблокированы, а CPSW остаётся неизменным, т.к. новое значение PSW блокирует изменение копий, т.е. в данном случае значение CPC равно новому значению PC, а CPSW равно значению PSW до исполнения команды RTI.
    Признаки: N, Z, V, C – загружаются из стека.
    ---------------------------------------------------------------------

  3. #223

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Интересно, в 1806 тоже в цикле записи байта выдается цикл R-M-W как и у 1801? Или уже без глюка, обычный цикл W?

    Если так, то использование 1801ВМ2 в ПК11 может привести к неоднозначным последствиям.

  4. #224

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Интересно, в 1806 тоже в цикле записи байта выдается цикл R-M-W как и у 1801? Или уже без глюка, обычный цикл W?
    Ответ ЗДЕСЬ.

  5. #225

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Ответ ЗДЕСЬ.
    Значит глюк остался) Это радует)

    ---------- Post added at 02:18 ---------- Previous post was at 01:45 ----------

    Пока что совершенно не понятно, откуда берется вектор для векторного прерывания VIRQ на ПК-11.

    А, кажется нашел)

  6. #226

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Да уж... с этими векторными прерываниями фантастика)

    Код:
    	  3.2. Векторные прерывания
    
         В	ПЭВМ  отсутствуют   векторные	прерывания.   Однако   они
    необходимы для правильной эмуляции  "стандартных  устройств",  без
    которых   не   может   обойтись   ДОС.	  Поэтому    предусмотрены
    соответствующие   аппаратно-программные   средства,    позволяющие
    эмулировать  векторные	прерывания.   ВПО   содержит   специальную
    таблицу-список, в которой хранится  информация	о  всех  векторных
    прерываниях,  "выставленных"  эмуляторами.   Эмулятор	выставляет
    "запрос на прерывание" специальным запросом ВПО -  SETINT.  Снятие
    запроса на прерывание выполняется запросом RESINT.
         Эмуляция векторных прерываний происходит  только  для  одного
    процесса. Этот	единственный  процесс  должен  содержать  в  слове
    P.MASK своего дескриптора установленный в 1 разряда в соответствии
    смаской  V.VRQ.  Этим  единственным  процессом	является   процесс
    дисковой ОС.
    Действительно, у одного из процессов, процесса ОС установлен флаг M.VRQ. И в один прекрасный момент, при загрузке системы USER-процесс загрузчика обращается к регистру 177130 (работа с диском) с установленным младшим битом (т.е. хочет ответ от дисковой системы получить посредством прерывания). Дисковый процесс считывает данные и просит у ВПО SETINT. В этом SETINT в таблице векторов ВПО (которая находится по адресу 100146, устанавливаются какие-то значения, причем, не очень похожие на реальные вектора). Вот тут-то начинается самое интересное. Системой сбрасывается бит VIRQ регистра PPIC (что означает разрешение векторных прерываний), и по идее процессор в USER режиме должен на это прерывание перейти. Все хорошо, только откуда брать вектор - совершенно не понятно. Может быть есть какой-то хитрый аппаратный контроллер, который вынет этот вектор из той таблицы в ОЗУ по адресу 100146 и подаст на шину?
    Последний раз редактировалось Titus; 10.01.2015 в 04:19.

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

  8. #227

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Я так понял, что ни у кого идей нет, как получает USER-процесс этот вектор прерываний)

    У меня пока два рабочих варианта:
    1) Ядро HALT-процесса видит, что для процесса установлен флаг VIRQ и эмулирует векторное прерывание программно, используя таблицу векторов, которая лежит в его ОЗУ.
    Доводы против этой теории:
    Нигде (пока что) не нашел кода, который обращается к этой таблице, нет кода в ядре, который опрашивает флаг VIRQ.
    2) Существует хардварный контроллер VIRQ прерываний, который в качестве таблицы векторов лазает в специальную часть ОЗУ HALT-процесса, извлекая оттуда вектор.
    Доводы против этой теории:
    Таблица векторов в ОЗУ HALT-процесса лежит не по ровному адресу (100146), не имеет информации о векторах в стандартном виде.

  9. #228

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    У меня пока два рабочих варианта:
    Это уже не написание эмулятора, а реверс-инженеринг самой идеи ;-)
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  10. #229

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Это уже не написание эмулятора, а реверс-инженеринг самой идеи ;-)
    А без этого никак, ибо некоторые хардварные особенности остаются в тени, и только реверс логики работы системного ПО позволяет понять, как они работают)

  11. #230

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Нашел странную привязку некой HALT-подпрограммы ВПО к вектору, находящемуся по адресу 60. В нем записаны два числа 1414, 10104. Первое число указывает на нашу подпрограмму. Что бы мог значить вектор с адресом 60 в HALT-режиме? Когда на него процессор может передать управление?

    Причем, при попадании в эту подпрограмму в памяти по адресу R0 дожен быть адрес векторного прерывания VIRQ, a в R1 тоже какие-то данные.

    ---------- Post added at 20:59 ---------- Previous post was at 19:12 ----------

    Все, перерыв весь код, и поняв, что обработчика VIRQ в нем НЕТУ, а так же еще раз внимательно прочитав фразу про VIRQ - 'аппаратно-программные средства', и так же поняв, что эмулировать программно несколько одновременных векторных запросов у ВПО никак бы не получилось, утвердился в мысли, что контроллер VIRQ аппаратный)
    Последний раз редактировалось Titus; 10.01.2015 в 18:15.

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

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

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

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

Ваши права

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