User Tag List

Страница 144 из 174 ПерваяПервая ... 140141142143144145146147148 ... ПоследняяПоследняя
Показано с 1,431 по 1,440 из 1740

Тема: Реверс-инжиниринг УКНЦ (1515ХМ1&2, 1801ВП1, 1801ВМ2)

  1. #1431

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Либо перед следующим выводом SP уже успевает уменьшится на 2 (итого на 4), а так как предыдущий вывод закончился неуспешно, то прерывание по TRAP4.
    Блок таймаута всю правду расскажет)

    А что там была за история со сбиванием счетчиков PC2 и PC1, когда после какой-то команды, следующие начинали извлекаться со смещением?

  2. #1432

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А что там была за история со сбиванием счетчиков PC2 и PC1, когда после какой-то команды, следующие начинали извлекаться со смещением?
    В двухадресных командах с адресацией источника @PC (17), если ожидание RPLY превышало 4 такта. Историю можно найти в теме про тестирование, также потом Vslav разбирался с этой проблемой.

  3. #1433

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В двухадресных командах с адресацией источника @PC (17), если ожидание RPLY превышало 4 такта. Историю можно найти в теме про тестирование, также потом Vslav разбирался с этой проблемой.
    Ссылки нет точной, чтобы все не перелопачивать?

  4. #1434

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Ссылки нет точной, чтобы все не перелопачивать?
    Так и я точно не помню, тоже надо перелопачивать, пока вот листаю тему про Цифровую археологию.

  5. #1435

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

    По умолчанию

    Как дойдет до разбора методов адресации, может и само все всплывет. Они же тоже целиком в микрокоде запрограммированы.

  6. #1436

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Так и я точно не помню, тоже надо перелопачивать, пока вот листаю тему про Цифровую археологию.
    Дошёл - читать отсюда.

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

    hobot(26.11.2020), Titus(26.11.2020)

  7. #1437

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

    По умолчанию ВМ2: Адресации однооперадных команд

    Непростые команды, использующие почти все возможные ухищирения, чтобы каждой командой сделать побольше.
    Тут у нас и кэш сбрасывается, а регистр BIR (буфер для слова инструкции) используется, как данные. И прочее.
    Плюс большая универсальность, т.к. одной микропрограммой обрабатывается множество вариантов адресаций и команд.


    INC(B), DEC(B), CLR(B), NEG(B), COM(B), ADC(B), SBC(B),
    ASR(B), ROR(B), ASL(B), ROL(B), TST(B), SWAB, SXT, MTPS, MFPS,
    JMP, JSR:

    Код:
    //======================================================================
    //			
    // 	   	       Oперации с одним операндом
    //		         расположенном в памяти
    //
    //  INC(B), DEC(B), CLR(B), NEG(B), COM(B), ADC(B), SBC(B),
    //  ASR(B), ROR(B), ASL(B), ROL(B), TST(B), SWAB, SXT, MTPS, MFPS
    //  JMP, JSR
    //
    //  step=1 для байтовых команд, если dd<>R6 и dd<>R7
    //  step=2 для всх остальных команд
    //
    //  Циклы шины IO_X001 для:
    //
    //  TST(B), MTPS:
    //  Read (IO_RD, IO_IN) - Инициировать цикл чтения шины в регистр BRD
    //
    //  CLR, SXT:
    //  Write (IO_WR) - Инициировать цикл записи BRD на шину 
    //
    //  CLRB, COM(B), INC(B), DEC(B), NEG(B), ADC(B), SBC(B), 
    //  ROR(B), ROL(B), ASR(B), ASL(B), SWAB, MFPS:
    //  R-M-W (IO_RD, IO_WR, IO_IN) - Инициировать цикл чтения шины в регистр BRD
    //				  с последующим циклом записи по готовности BRD 
    //
    //  JMP, JSR:
    //  нет цикла шины
    // 
    //======================================================================
    
    0x17:	if (Rn)		RA=Rn			IO_X001			// Инициировать цикл шины
    			Rn=Rn
    			GOTO 0x33					
    	
    	if (Rn)+ and (RI0=0)						// Если Rn<>R7		
    			RA=Rn			IO_X001			// Инициировать цикл шины
    			Rn=Rn+step
    			GOTO 0x33
    			
    	if (Rn)+ and (RI0=1) and (IX0=1)				// Если Rn=R7, и операция чтения слова (TST)
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			BRD=BIR			IO_X001			// Подготовить, но не начинать цикл шины
    			GOTO 0x33
    			
    	if (Rn)+ and (RI0=1) and (IX0=0)				// Если Rn=R7, и не операция чтения слова
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			RA=PC1-2		IO_X001			// Инициировать цикл шины
    			GOTO 0x33			
    			
    	if -(Rn)	Rn=Rn-step
    			RA=Rn			IO_X001			// Инициировать цикл шины		
    			GOTO 0x33
    	
    	if @-(Rn)	Rn=Rn-2			
    			RA=Rn			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			GOTO 0x22
    						
    	if @(Rn)+ and (RI0=0)						// Если Rn<>R7
    			Rn=Rn+2
    			RA=Rn			IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    			GOTO 0x22
    	
    	if @(Rn)+ and (RI0=1)						// Если Rn=R7
    			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    									// Фактически PC1=PC1+2
    			RA=BIR			IO_X001			// Инициировать цикл шины
    			GOTO 0x33
    			
    	if X(Rn)	PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    			RA=Rn+BIR		IO_X001			// Инициировать цикл шины
    			GOTO 0x33
    			
    	if @X(Rn)	PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    			RA=Rn+BIR		IO_RD, IO_IN		// Инициировать цикл чтения шины в регистр BRD
    		
    //----------------------------------------------------------------------   Прочитана ячейка с адресом операнда			
    0x22:			PC1=PC2			DISABLE_CACHE		// Запретить кэш и включить режим использования BIR как данных
    						WAIT_BRD		// Ожидание готовности чтения BRD
    			RA=BRD			IO_X001			// Инициировать цикл шины
    						ENABLE_CACHE		// Разрешить кэш
    	
    //----------------------------------------------------------------------   Операнд прочитан из памяти, если цикл шины Read или RMW			
    0x33:						WAIT_BRD		// Ожидание готовности чтения BRD
    	if (JMP/JSR) 							// Если команда JMP/JSR 		
    			ACC=RA			
    						ENABLE_CACHE		// Разрешить кэш
    			GOTO 0x18
    	else
    			ALU BRD						// Операции ALU из шага 0x37, в качестве операнда используется BRD
    									// Если используется цикл записи Write или RMW, то по записи в BRD, продолжается цикл записи
    						ENABLE_CACHE		// Разрешить кэш
    	if MTPS		GOTO 0x18					// Завершить команду MTPS особым способом
    						PLI_REQ			// Запросить проверку запросов на прерывание
    	if X(Rn) or @X(Rn) or (Rn=R7)					// Если использовали адресацию по R7, то
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    	else								// Иначе
    			GOTO 0x01					// Перейти на команду выборки следующей инструкции	
    		
    		
    //----------------------------------------------------------------------   Обработка JMP/JSR		
    0x18:	if (MTPS)				PI_STB RI=001		// Управление: нет запроса на прерывание (не имеет эффекта, т.к. следующая команда перезапишет RI)
    			GOTO 0x08					// Перейти на холостую команду и выборку следующей инструкции
    	if (JMP)							// Если JMP	
    			PC1=PC2=RA		PLI_REQ			// Запросить проверку запросов на прерывание
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    	else								// Иначе JSR
    			RA=R6=R6-2		IO_WR, IO_CMD		// Инициировать цикл записи BRD на шину
    			
    //----------------------------------------------------------------------   Обработка JSR		
    0x0E:			BRD=Rs						// Инициилизировать BRD и продолжить цикл записи
    //---------------------------------------------------------------------- 
    0x0C:			Rs=PC1					
    //---------------------------------------------------------------------- 
    0x09:			PC1=ACC			PLI_REQ			// Запросить проверку запросов на прерывание
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    			
    //----------------------------------------------------------------------   Завершение MTPS			
    0x08:			ACC=ACC			PLI_REQ			// Запросить проверку запросов на прерывание
    	if X(Rn) or @X(Rn) or (Rn=R7)					// Если использовали адресацию по R7, то
    			GOTO 0x21					// Перейти на команду выборки следующей некэшированной инструкции
    	else								// Иначе
    			GOTO 0x01					// Перейти на команду выборки следующей инструкции
    - - - Добавлено - - -

    Просьба специалиста по PDP @Alex_K проверить эти адресации.

    Также исправил на предыдущей странице микрокод для однооперандных регистровых инструкций. Добавил случай, когда Rn=R7.
    Последний раз редактировалось Titus; 29.11.2020 в 15:03.

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

    Alex_K(27.11.2020), hobot(27.11.2020)

  8. #1438

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    // step=1 для байтовых команд, и
    // step=2 для словных команд
    Для адресаций (Rn)+ и -(Rn), если используются регистры R6 и R7 (SP и PC), то step всегда должен быть равен двум, независимо от того, байтовая или словная команда.

  9. #1439

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Для адресаций (Rn)+ и -(Rn), если используются регистры R6 и R7 (SP и PC), то step всегда должен быть равен двум, независимо от того, байтовая или словная команда.
    Да, у меня это в заметках помечено, просто забыл сюда написать.

    Регистр Y18 равен 0x02, а не 0x01 (ALT_CNST=1), если
    1. Команда словная (DC_FB=0)
    2. Команда байтовая (DC_FB=1), и PL6=1, PL5=1 (регистр dd R6 или R7)

  10. #1440

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

    По умолчанию

    Может толком и не увидел, но при записи по адресу, равному текущему PC, предвыборка должна сбрасываться. Адрес проверяется полностью на все 16 разрядов. Потому существует глюк, если записывать в адрес PC+1, то предвыборка не сбрасывается и исполняется инструкция, которая была там до записи.

Страница 144 из 174 ПерваяПервая ... 140141142143144145146147148 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 32
    Последнее: 18.12.2024, 18:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  4. Куплю 1515ХМ1-6006, 1515ХМ1−6008
    от moxjemi в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 10.01.2012, 17:23
  5. 1801ВМ2 А и Б
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 03.05.2010, 11:51

Ваши права

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