User Tag List

Страница 16 из 49 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя
Показано с 151 по 160 из 485

Тема: FPGA-реплика ЭВМ ДВК-3 и платы МС1201

  1. #151

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    713
    Поблагодарили
    595 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Стандартно, по адресу 0 - NOP, по адресу 2 - BR 36, по адресу 36 - BR 40 (если использовать стандартные макросы)
    Дальше обычно делается похоже - по адресу 40 - JMP на точку входа загрузчика, но переход может отличаться адресам. В примере ниже - JMP @#574. Обычно так же - первая команда загрузчика - установить SP
    Код:
          5		000040'				. = RKBOOT+40		;PUT THE JUMP BOOT INTO SYSCOM AREA
          6	000040	000137 	000574 		BOOT1:	JMP	@#BOOT-RKBOOT	;START THE BOOTSTRAP
          7
         29
         30		000574'				. = RKBOOT+574
         31	000574	012706 	010000 		BOOT:	MOV	#10000,SP	;SET STACK POINTER
         32	000600	013746 				MOV	@(PC)+,-(SP)	;GET THE RK UNIT NUMBER
         33	000602	177412 			BOTCSR:	 .WORD	RKDA
    - - - Добавлено - - -

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В стандартном драйвере там нули, т.е. будет перезапуск первичного загрузчика.
    Не всегда. Есть драйвера, у которых 102,2. На даже этот вариант потребует установленного указателя стека

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

  3. #152

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Не всегда. Есть драйвера, у которых 102,2. На даже этот вариант потребует установленного указателя стека
    Я писал про стандартный драйвер. А так да, есть. Но эти значения уже устанавливали в DESS-е. А вот стандартный драйвер MZ для УКНЦ в ячейках 0100 и 0102 содержит 0102 и 2, т.к. в УКНЦ сетевой таймер по умолчанию включён.

    - - - Добавлено - - -

    Цитата Сообщение от Vslav Посмотреть сообщение
    А можно листинг загрузчика выложить? Первые несколько команд?
    Код:
    000000 000240 NOP
    000002 000415 BR 000036
    
    000036 000400 BR 000040
    000040 000167 JMP 000430
    000042 000364
    
    000430 012706 MOV #10000,SP
    000432 010000

    Этот пользователь поблагодарил Alex_K за это полезное сообщение:

    Vslav(04.02.2021)

  4. #153

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Сигнал RESET по идее должен сбросить и внутренний триггер сетевого таймера в процессоре.
    В M2 не совсем так, триггер который детектирует фронт EVNT - он внешний по отношению к MCP-1600, обычный TM2. И сбрасывается выделенным сигналом CLR_EVNT, который генерируется микропрограммно. После сброса CLR_EVNT генерируется, а по команде G - нет. И сам MCP-1600 уже реагирует на уровень с выхода TM2 - есть высокий - переходим на обработку таймера.

    - - - Добавлено - - -

    Ну что, я вас поздравляю, похоже, мы нашли багу в MicROM от DEC .
    Инструкция si в обработчике cmd_g устанавливает флажок I5, что соответствует разрешению прерываний внутри MCP-1600.
    Этот флажок поступает на матрицу PLM, и если он активен и есть запрос прерывания, то вместо обработки инструкции микропрограмма аппаратно (матрица выдает нужный LC) перебрасывается на обработчик. Итого - в слове PSW PDP-11 флажок-то может быть любой, но если I5 установлен - то оно идет на прерывание. Если фронт от таймера уже был, то и запрос активен. И пока загрузка PSW командой PDP-11 не произойдет и I5 при ее обработке не сбросится - прерывания по факту будут разрешены. Невзирая на PSW PDP-11 . При нормальном старте, не из ODT этой инструкции si нет и все работает. А M4 - то отдельно надо смотреть.

    Update: а это, кстати, может быть и не ошибка, а законный и документированный старт из ODT с разрешенными прерываниями.
    Последний раз редактировалось Vslav; 04.02.2021 в 00:42.

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

    Alex_K(04.02.2021), forth32(04.02.2021), Hunta(04.02.2021)

  5. #154

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    После сброса CLR_EVNT генерируется, а по команде G - нет.
    А вот это уже недоработка. Да и после запуска по команде G на ДВК в PSW ложится 0340.

  6. #155

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А вот это уже недоработка. Да и после запуска по команде G на ДВК в PSW ложится 0340.
    Не, я вижу что все законно в cmd_g:
    Код:
    	sw	RPSWL,RPSWL	;
    	lcf	NZVC,RPSWL	;
    Вот команда SW - она вычитает 16-битную пару, тут сама из себя. То есть PSW=0. Это у меня комментарий дебильный и ошибочный "disable interrupts". А изначально люди намерено поставили в обработчике "G" PSW=0 и разрешили прерывания. Ну мы можем добавить сброс запроса таймера по INIT, но это не совсем в тему, оно же будет сбрасываться при нормальном исполнении инструкции RESET - и будем терять прерывания от таймера. Вот в обрабочик cmd_g можно сброс запроса таймера и добавить. Но будет ненулевая вероятность что после сброса и до запрета прерываний инструкцией PDP-11 все-таки таймер прилетит, то есть - сброс в cmd_g - не гарантия.

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    Ситуация изменилась. Теперь процессор влетает в двойной таймаут шины ровно 1 раз
    Возможно после сброса была генерация одного фронта, и оно залипло на детекторе фронта (сделанного согласно оригинального М2) внутри lsi_wb:
    Код:
    //
    // Periodic timer interrupt edge detector
    //
    always @(posedge vm_clk_p)
    begin
       evnt_ed <= vm_evnt;
       if (mc_clr_evnt | vm_dclo)
          evnt_rq <= 1'b0;
       else
          if (vm_evnt & ~evnt_ed)
             evnt_rq <= 1'b1;
    end
    А щелкнули переключателем выключения таймера когда? Уже после выпадения в ODT?
    Последний раз редактировалось Vslav; 04.02.2021 в 00:53.

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

    forth32(04.02.2021), hobot(04.02.2021)

  7. #156

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Возможно после сброса была генерация одного фронта, и оно залипло на детекторе фронта (сделанного согласно оригинального М2) внутри lsi_wb:
    Все оказалось именно так. У меня же после старта схемы таймер по умолчанию включен, поскольку
    Код:
    initial timer_on=1;
    А потом, уже при работающем ODT, я его отключил кнопкой. Но триггер успел захватить запрос прерывания. Пересобрал сейчас схему с timer_on=0 - все, проблема ушла, загрузчик запускается сразу.
    Где-то в книжках по электронике-60 мне встречалась фраза, что машину желательно запускать с отключенным таймером, а включать его уже после загрузки ОС. Теперь стало понятно, откуда оно растет. Видимо, зря я повесил выключатель таймера на кнопку - надо было его на переключатель сажать, как в оригинале. Но переключатели на плате - они мелкие и неудобные, кнопкой пользоваться приятнее.

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

    hobot(04.02.2021), Vslav(04.02.2021)

  8. #157

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

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    Но переключатели на плате - они мелкие и неудобные, кнопкой пользоваться приятнее.
    А сделать кнопку и переключатель одновременно? Если выключатель выключен - кнопка не работает, прерываний от таймера нет. А если переключатель включен, то разрешение прерываний управляется кнопкой.

    - - - Добавлено - - -

    Цитата Сообщение от forth32 Посмотреть сообщение
    .
    Где-то в книжках по электронике-60 мне встречалась фраза, что машину желательно запускать с отключенным таймером, а включать его уже после загрузки ОС.
    Станочники грузятся, в-основном, с перфоленты, у команды "L" такой проблемы нет. Возможно поэтому факт разрешенных прерываний по "G" малоизвестен.

  9. #158

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    А сделать кнопку и переключатель одновременно?
    Можно и так, но только ситуацию это не спасет. При включении платы переключатель должен быть обязательно выключен, чтобы процессор не защелкнул прерывание. Соответственно, чтобы в RT-11 заработали часы, переключатель надо будет включить. Смысл кнопки пропадает полностью.
    Правильнее было бы сделать так, чтобы переключатель в момент включения платы задавал начальное состояние таймера:
    Код:
    initial timer_on=sw[4];
    Только работать так не будет, к сожалению.

    Я даже не знаю, стоит ли включать плату электроники-60 в проект. Функционально она ничем не лучше МС1201.02, даже хуже, а на ДВКшной плате проблем с таймером нет.

  10. #159

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    713
    Поблагодарили
    595 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В семействе PDP-11 (как и среди наших машин) есть представители, у которых таймер есть, а регистра управления таймеров нет. Насколько я в курсе, у всех у них есть на типа передней панели кнопка-триггер - разрешить прерывания от таймера. Нажал - разрешил, ещё раз нажал - запретил. После включения питания или сброса с передней панели - состояние кнопки сбрасывается в - запретить прерывания от таймера.

    М2 драли, насколько я знаю, один в один с платы DEC - LSI-11. Пару раз видел на eBay, но увы.. в коллекции только LSI-11/2, хотя вроде по функционалу они один в один, просто LSI-11 - полная плата (или двойная), LSI-11/2 - полуплата (или одинарная). Так что если делать Э60 в проекте (а с моей точки зрения - надо включать все) - то по функционалу должно быть - как мамка говорила

  11. #160

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    После включения питания или сброса с передней панели - состояние кнопки сбрасывается в - запретить прерывания от таймера.
    Ну я вот поначалу так и сделал, почитав немного дековскую документацию. Раз уж нет в системе полноценного KW11L... Но потом меня достало включать таймер каждый раз после нажатия сброса. А в процессе отладки схемы сброс нажимается регулярно. Поэтому я и сделал таймер включенным по умолчанию. На ДВК это не мешает.
    Цитата Сообщение от Hunta Посмотреть сообщение
    а с моей точки зрения - надо включать все
    Тут я с тобой полностью согласен. Уж коли у нас есть отличные процессорные ядра, то они должны работать в проектах, а не пылиться в исходном репозитории. Видимо, я для ДВК оставлю таймер включенным, а для Э60 - сделаю отключение по сбросу.

    Этот пользователь поблагодарил forth32 за это полезное сообщение:

    Hunta(04.02.2021)

Страница 16 из 49 ПерваяПервая ... 121314151617181920 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Реплика контроллера НГМД ДВК MY4
    от anasana в разделе ДВК, УКНЦ
    Ответов: 47
    Последнее: 30.06.2023, 19:07
  2. Реплика всего семейства ДВК
    от Daniil Chislov 86 в разделе ДВК, УКНЦ
    Ответов: 21
    Последнее: 13.11.2019, 16:36
  3. Ответов: 6
    Последнее: 30.07.2018, 09:04
  4. Аукцион плат ДВК МС1201.02, НМЛ СМ5300.01 и др.
    от OS в разделе Барахолка (архив)
    Ответов: 45
    Последнее: 19.11.2011, 14:02
  5. Реплика КМД ДВК (MY)
    от KALDYH в разделе ДВК, УКНЦ
    Ответов: 19
    Последнее: 12.11.2009, 15:43

Ваши права

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