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

User Tag List

Страница 39 из 271 ПерваяПервая ... 353637383940414243 ... ПоследняяПоследняя
Показано с 381 по 390 из 2702

Тема: Цифровая археология: 1801 и все-все-все

  1. #381
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    То в оригинальной PDP-11 не может, а в собственной разработке "по мотивам" да еще переданной из НЦ - можно ожидать все что угодно. Придется подсмотреть на реальном 1801ВМ1 сколько там циклов выборки команды после mtps.
    В собственной разработке тоже не может так как и в ней MTPS выполняет ту же функцию: записывает байт, что собственно и не позволяет поменять режим.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  2. #382
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Придется подсмотреть на реальном 1801ВМ1 сколько там циклов выборки команды после mtps.
    Учитывая, что команда MTPS R0 в реале выполняется на 12 тактов дольше, чем команда MFPS R0 - похоже, что и в реале читает дважды.

    Причина может быть связана с использованием микрокода SCC, который извлекает биты PSW из буфера кода команды.

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Модель показывает что инструкция mtps вызывает повторное считывание кода следующей за ней инструкции, то есть новое заполнение регистра инструкций.
    Интересно, а что будет, если эту следующую инструкцию невозможно считать, т.е. при чтении не будет ответа RPLY. Возникнет прерывание по TRAP4 или нет?

  4. #384
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    В собственной разработке тоже не может так как и в ней MTPS выполняет ту же функцию: записывает байт, что собственно и не позволяет поменять режим.
    Пультовый режим все равно организован своеобразно, вполне могли быть начальные варианты когда признак пульта размещался в битах psw[5] или psw[6].

    Цитата Сообщение от Patron Посмотреть сообщение
    Причина может быть связана с использованием микрокода SCC, который извлекает биты PSW из буфера кода команды.
    В АЛУ имеется копия регистра инструкций, извлечение нужных полей из опкода выполняется мгновенно в блоке генератора констант. Флаг Т тоже очищается с использованием константы. Вот фрагмент выполнямой последовательности микрокода для clr R0 mtps R0

    Код:
    # plr(173777507057)->(176), op(10,   y  ), x(17), y(17))
    # X=R0 (000000)
    # Y=000000 (const)
    # Read  @ 000206, 106400 ; завершение чтения регистра опкода
    # R0=000000       ; окончание clr R0, назначение приемника
    # mj(1, 04, 176), ir(106400)
    # plm(014733122470)
    # 
    # plr(014733122470)->(057), op(01,  x+y ), x(01), y(03))
    # X=R7 (000210) ; странный запуск чтения @PC, вместо PC результат попадает в R12
    # Y=000002 (const)
    # mj(1, 04, 057), ir(106400)
    # QBUS=tplm(1), plrt(4),    word read
    # ADR=000210
    # plm(172630146035)
    # R12=000212       
    # 
    # plr(172630146035)->(110), op(02,  x&~y), x(17), y(13))
    # X=R0 (000000)
    # Y=000020 (const)
    # mj(1, 04, 110), ir(106400)
    # plm(106674746035)
    # DAT=000000 (byte) ; новый PSW со сброшенным T
    # R12=000000 (byte)
    # 
    # plr(106674746035)->(111), op(16,  x&y ), x(10), y(13))
    # Read  @ 000210, 005001
    # X=PSW (000344)
    # Y=000020 (const)
    # mj(1, 04, 111), ir(106400)
    # plm(100176542075)
    # PSW=000000 (byte) ; непонятки
    # 
    # plr(100176542075)->(156), op(12,  x|y ), x(10), y(00))
    # Y=DAT (000400) 
    # X=PSW (000000)
    # mj(1, 04, 156), ir(106400)
    # plm(010737123467)
    # PSW=000000 (byte) ; записали сохраненный в DAT PSW
    # 
    # plr(010737123467)->(176), op(01,  x+y ), x(01), y(03))
    # X=R7 (000210) ; чтение кода инструкции (PC)+
    # Y=000002 (const)
    # QBUS=tplm(4), plrt(4),    word read
    # ADR=000210
    # R7=000212       
    # Read  @ 000210, 005001
    # mj(1, 00, 176), ir(005001)
    # plm(010737122431)
    При этом 791401 тест mtps проходит нормально. Но надо все равно проверить на реальном ВМ1, вполне может быть что у меня где-то ошибка.

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Интересно, а что будет, если эту следующую инструкцию невозможно считать, т.е. при чтении не будет ответа RPLY. Возникнет прерывание по TRAP4 или нет?
    После того как оперблок запросил у секвенсера Qbus транзакцию, она может закончится только двумя способами - успешное завершение по RPLY или наступление тайм-аута, при котором всегда безусловно фиксируется запрос на исключение и асинхронно абортируется микрокод - он принудительно переходит на микроадрес 176 - анализ прерываний и начало декодирования новой команды. То есть, на каком бы этапе выполнения команды не возник тайм-аут - исключение обязательно будет - триггер запроса установлен, и может быть сброшен только отработкой 4-го вектора.
    Последний раз редактировалось Vslav; 30.01.2015 в 02:00.

  5. #385
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    281
    Поблагодарили
    227 сообщений
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Пультовый режим все равно организован своеобразно, вполне могли быть начальные варианты когда признак пульта размещался в битах psw[5] или psw[6].
    Ну я отвечал на вопрос не наследство ли это от PDP-11 где возможна смена режима USER/KERNEL - я ответил что режим не может смениться после использования команды MTPS так как для этого требуется поменять два старших бита PSW. Именно поэтому на всех машинах с MMU PSW всегда есть в IOPAGE. А вот команд MTPS/MFPS может и не быть. Про пультовый режим я ничего не говорил

    Использование битов 5 и 6 не по назначению может сделать процессор несовместимым со всеми операционными системами которые когда либо были для PDP-11 (включая советские), а также нарушает совместимость с тем же 1801ВМ3 к примеру.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  6. #386
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сохранение состояния при входе в прерывание/исключение починилось - это был тот особый случай когда регистр данных записывался напрямую с шины Х, минуя АЛУ, инструкция iot нормально заработала, тест 791401 теперь проходит полностью.
    Приступаем к тесту 791404 - тест прерываний и исключений, нет ли где-нибудь листинга и описания на этот тест?

  7. #387
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Явное лишнее чтение происходит только при выполнении команд типа MTPS Rx, что добавляет к продолжительности команды кучу тактов.

    При нахождении аргумента MTPS в памяти ситуация иная. Например - команда MTPS #0 выполняется всего на 6 тактов дольше, чем команда TST #0, поэтому лишнего чтения там может и не быть.

    ---------- Post added at 12:12 ---------- Previous post was at 11:54 ----------

    Цитата Сообщение от Vslav Посмотреть сообщение
    791404 - тест прерываний и исключений, нет ли где-нибудь листинга и описания на этот тест?
    Лог успешного прогона теста 791404 на процессоре 1801ВМ1 выглядит так:

    791404.log

    там и без описания вполне понятно, что и как проверяется.

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Приступаем к тесту 791404 - тест прерываний и исключений, нет ли где-нибудь листинга и описания на этот тест?
    Так в той же самой книге, начиная со страницы 95 (или 45 в WinDjView).

  9. #389
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Картинки снятые с реального ВМ1 при помощи логического анализатора.

    Последовательность: mov #340, R0 / mtps R0:


    Последовательность clr R0 / mtps @R0:


    Как видно из картинок - mtps R0 реально читает код следующей инструкции дважды. mtps @R0 читает слово из памяти, код следующей инструкции читается один раз. Вот такая особенность, это не ошибка модели. Выполняемое действие над PSW (присваивается только младший байт):
    Код:
    low byte PSW = (PSW & T_bit) | (new & ~T_BIT);
    То есть, как положено по документации, значение бита Т - сохраняется.

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Так в той же самой книге, начиная со страницы 95 (или 45 в WinDjView).
    Действительно, слона-то я и не приметил

    Update: там на картинках RPLY с левого места мониторился (совпадает с DIN), но для иллюстрации обсуждаемого вопроса это неважно.
    Последний раз редактировалось Vslav; 30.01.2015 в 21:47.

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

    По умолчанию

    Как там, дело подвигается к началу реверса ВМ2?
    Ведь, по мотивам ВМ1 и имея ТО на ВМ2 это наверняка проще сделать?

Страница 39 из 271 ПерваяПервая ... 353637383940414243 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 28.06.2014, 17:50
  2. Микросхемы МПК 580,1801,1810 и другие...
    от Alex_Vac в разделе Барахолка (архив)
    Ответов: 44
    Последнее: 07.04.2012, 08:03
  3. ЦИФРОВАЯ МУЗЫКА НА ZX
    от AAA в разделе Музыка
    Ответов: 98
    Последнее: 18.09.2011, 22:33
  4. Учебный стенд УМПК-1801
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 12.05.2010, 16:52
  5. Цифровая музыка от Вадима Ермеева
    от zxmike в разделе Музыка
    Ответов: 2
    Последнее: 06.08.2007, 23:13

Метки этой темы

Ваши права

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