User Tag List

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 41 по 50 из 52

Тема: Extended Instructions Set (EIS): MUL, DIV, ASH, ASHC

  1. #41
    Master
    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    546
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    106 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    есть уже скомпилированный вариант теста
    У меня нет готового скомпилированного теста, я использую бинарники, взятые из этих образов FODOS_TMOS и немного попатченные, чтобы текст был в кои8, сразу русскими буквами, и вроде бы векторы и регистры терминала к одному виду приведены.
    Нужные нам тесты в обоих образах одинаковые, адрес загрузки файла - 0, адрес запуска - 0200 (или содержимое ячейки 024).
    Для вывода на экран используется терминал, у меня иногда возникает желание пропатчить тест, чтобы использовать обычный EMT 16, но немного полежу, и всё проходит. Тестирую я в очень бета версии эмулятора v4.1, где есть эмулятор ИРПС, поэтому всё, что выводится в консоль и так видно.
    Эти тесты крайне недружественны к пользователю, и чтобы понять, что это такое они выводят, нужно иметь под рукой листинг исходника теста, потому что выводится адрес возникновения ошибки и номер ошибки. По листингу находим адрес, где возникла ошибка, и выше смотрим, что эту ошибку породило. И исправляем. А в эмуляторе БК я ещё и косякии эмуляции EIS/FIS прям там же обнаруживал, пересобирал тесты и повторял цикл.
    Получить листинг из исходника теста на MACRO-11 можно с помощью этого Эмулятор RT-11
    Вот весь набор файлов, которые я использую tests.rar, там правда под моё БКТурбо, но разобраться можно.

  2. #42
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Драйвер обновлён.
    http://manwe.pdp-11.ru/Tools/EIS-driver-for-BK0010.zip
    Теперь после запуска в свежих версиях систем MKDOS и ANDOS расширенная арифметика постоянно доступна для программ пользователя.
    Раньше для использования расширенной арифметики каждая программа должна была вручную прописывать число 160016 по адресу 10. Сейчас такое требование осталось только на случай запуска программы из старых версий MKDOS и ANDOS, а также из других систем.
    manwe.pdp-11.ru

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


  4. #43
    Guru Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,001
    Спасибо Благодарностей отдано 
    1,073
    Спасибо Благодарностей получено 
    1,248
    Поблагодарили
    481 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Manwe, возможно в реализации EIS для БК стоит сделать детектирования процессора с буквой "Г", у которого реализована инструкция MUL - чтобы она выполнялась аппаратно, а не программно.
    Или она и так будет выполнена аппаратно, без изменений кода эмуляции EIS?
    Последний раз редактировалось nzeemin; 18.09.2020 в 12:15.

  5. #44
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от nzeemin Посмотреть сообщение
    Или она и так будет выполнена аппаратно, без изменений кода эмуляции EIS?
    Да, MUL будет выполняться аппаратно, я проверял - вставлял в БК 0011М процессор ВМ1Г. Аппаратная инструкция работает раз в 8 быстрей, чем эмуляция.
    manwe.pdp-11.ru

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

    hobot (18.09.2020), litwr (30.09.2020), nzeemin (18.09.2020), TheGWBV (18.09.2020), Копейкин (18.09.2020)

  7. #45
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновил драйвер.
    • Ускорено деление коротких чисел (если делимое укладывается в 16 бит).
    • Добавлены тесты в утилиту EIS-test.

    Ссылка прежняя: http://manwe.pdp-11.ru/Tools/EIS-driver-for-BK0010.zip либо аттач в первом сообщении темы.
    manwe.pdp-11.ru

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


  9. #46
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нашлось еще такое с микрофиш
    Код:
    ================================================================================
    Note 1.1                   MUL, DIV, ASH for Falcon(+)                    1 of 6
    JAWS::KAISER                                        144 lines  25-MAR-1985 09:13
    --------------------------------------------------------------------------------
          +---------------+					   +-----------------+
          | d i g i t a l |					   |  uNOTE # 001    |
          +---------------+					   +-----------------+
    
    
          +----------------------------------------------------+-----------------+
          | Title: MUL,DIV and ASH Instruction for the FALCON  | Date: 13-APR-84 |
          |			 and the FALCON-PLUS		   |		     |
          +----------------------------------------------------+-----------------+
          | Originator: Charlie Giorgetti			   | Page 1 of 4     |
          +----------------------------------------------------+-----------------+
    
    
          There  is no hardware support for the EIS, FIS, or FPP instruction sets.
          For FALCON SBC-11/21 applications that need the ability to  perform  the
          EIS  instructions MUL, DIV, and ASH, equivalent software routines can be
          substituted.  These callable routines  do	 not  do  any  form  of	 error
          checking.	  A  user should be aware that extensive use of these software
          routines	for  hardware  instructions  will  have	  impact   on	system
          performance.  These routines can be incorporated into an application and
          called as a subroutine.  The calling sequence for the subroutines can be
          set-up  in  a macro.  The following is a list of each of the subroutines
          and the macros that are used to set-up and call the software  MUL,  DIV,
          and ASH routines.
    
    
    									Page 2
    
    
    	The following macro and subroutine can be  used	 to  perform  the  MUL
          instruction in software:
    
    	       .MACRO  SMUL    A,B,HI,LO
    
    		MOV	A,-(SP)	    ; Push a multiplier onto the stack
    		MOV	B,-(SP)	    ; Push the other multiplier as well
    		JSR	PC,$MUL	    ; Call the MUL subroutine
    		MOV	(SP)+,HI    ; Get the most significant part of
    				      the result
    		MOV	(SP)+,LO    ; Get the least significant part of
    				      the result
    
    	       .ENDM
    
    	 $MUL:: MOV	R0,-(SP)    ; Save some work registers
    		MOV	R1,-(SP)
    		MOV	10(SP),R1   ; Obtain the value of A from the stack
    		MOV	#21,-(SP)   ; Initialize the shift counter
    		CLR	R0	    ; Initialize the high 16-bit accumulator
    	   10$: ROR	R0	    ; Perform multiplication
    		ROR	R1
    		BCC	20$
    		ADD	10(SP),R0
    		CLC
    	   20$: DEC	(SP)	    ; Bump the shift counter
    		BNE	10$	    ; Not done ?
    		TST	(SP)+	    ; Romove the counter from the stack
    		MOV	R1,10(SP)   ; Save the low 16-bit value on the stack
    		MOV	R0,6(SP)    ; Save the high 16-bit value on the stack
    		MOV	(SP)+,R1    ; Restore the work registers
    		MOV	(SP)+,R0
    		RTS	PC	    ; Return
    
    
    									Page 3
    
    
    	The following macro and subroutine can be  used	 to  perform  the  DIV
          instruction in software:
    
    		.MACRO	SDIV	DIVSOR,DIVHI,DIVLO,REM,QUO
    
    		MOV	DIVSOR,-(SP); Push the divisor onto the stack
    		MOV	DIVHI,-(SP) ; Push the upper 16-bits of the dividend
    		MOV	DIVLO,-(SP) ; Push the lower 16-bits of the dividend
    		JSR	PC,$DIV	    ; Call the DIV subroutine
    		MOV	(SP)+,REM   ; Get the remainder
    		MOV	(SP)+,QUO   ; Get the quotient
    
    		.ENDM
    
    	 $DIV:: MOV	R5,-(SP)    ; Get some work registers
    		MOV	R4,-(SP)
    		MOV	R3,-(SP)
    		MOV	R0,-(SP)
    		MOV	14.(SP),R3  ; Get the divisor from the stack
    		MOV	12.(SP),R4  ; Get the high 16-bits of the dividend
    		MOV	10.(SP),R5  ; as well as low 16-bits
    		CLR	R0	    ; Clear an accumulator
    		MOV	#32.,-(SP)  ; Shift counter
    	    1$: ASL	R5	    ; Perform the division
    		ROL	R4
    		ROL	R0
    		CMP	R0,R3
    		BLO	2$
    		SUB	R3,R0
    		INC	R5
    	    2$: DEC	(SP)
    		BNE	1$	    ; Not done ?
    		TST	(SP)+	    ; Remove the counter from the stack
    		MOV	R0,12.(SP)  ; Store the remainder on the stack
    		MOV	R5,14.(SP)  ; Store the quotient as well
    		MOV	(SP)+,R0    ; Restore the work registers
    		MOV	(SP)+,R3
    		MOV	(SP)+,R4
    		MOV	(SP)+,R5
    		MOV	(SP)+,(SP)  ; Update the return PC
    		RTS	PC	    ; Return
    
    
    									Page 4
    
    
    	The following macro and subroutine can be  used	 to  perform  the  ASH
          instruction in software:
    
    		.MACRO	SASH	COUNT,VAL
    
    		MOV	COUNT,-(SP) ; Push the shift count
    		MOV	VAL,-(SP)   ; Push what is to be shifted
    		JSR	PC,$ASH	    ; Call the ASH subroutine
    		MOV	(SP)+,VAL   ; Get the results of the shift
    
    		.ENDM
    
    	$SASH:: MOV	R0,-(SP)    ; Get a couple of work registers
    		MOV	R1,-(SP)
    		MOV	6(SP),R0    ; R0 = value to be shifted
    		MOV	8.(SP),R1   ; R1 = direction and shift count
    		BIC	#^C<77>,R1
    		BEQ	20$	    ; Get out if no shifting
    		CMP	R1,#31.	    ; What direction is the shift
    		BGT	10$	    ; go to the corection direction shift
    	    5$: ASL	R0
    		DEC	R1
    		BNE	5$
    		BR	20$
    	   10$: NEG	R1
    		BIC	#^C<77>,R1
    	   11$: ASR	R0
    		DEC	R1
    		BNE	11$
    	   20$: MOV	R0,8.(SP)   ; Store the shifted result on the stack
    		MOV	(SP)+,R1    ; Restore the work registers
    		MOV	(SP)+,R0
    		MOV	(SP)+,(SP)  ; Update the return PC
    		RTS	PC	    ; Return
    
       
    
       
    

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

  11. #47
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В регистре начального пуска выделен бит о наличии математического расширителя
    Предполагалось что-то вроде DEC KE11-A(B)??
    На БМК 1801? может оно все-таки есть???
    Сделаем заново???

    Энтузиаст изучающий Verilog мог бы такой KE11-a за вечер написать и отладить и потом в колодку для ПЗУ 24 ножки приделать

    Если есть желающие я помогу.

    Документация
    http://bitsavers.informatik.uni-stut...dArithElem.pdf

    Схема электрическая принципиальная KE11-В с прошивками ПЗУ. вряд ли нужна но всетаки
    http://wwcm.synology.me/pdf/KE11-B%2...20Drawings.pdf

    Эмуляция с исходниками написана в проектах simh и apout. гугулится
    В последнем потому что первые компиляторы Си генерировали код только для такого арифметического расширителя
    Последний раз редактировалось svinka; 12.12.2020 в 06:00.

  12. #48
    zx_
    Гость

    По умолчанию

    svinka, эт кааято странная хрень
    на четырех битных сдвиговых регистрах, мультиплексорах и проч логики

    математический сопроцессор на дискретной логике ?

  13. #49
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,002
    Спасибо Благодарностей отдано 
    287
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Цитата Сообщение от zx_ Посмотреть сообщение
    математический сопроцессор на дискретной логике ?
    Я бы не назвал это сопроцессором. Сделано именно как устройство, то есть проц об этом "сопроцессоре" ни сном ни духом, в отличии от, скажем, 1801ВМ4, сопроцессоре плавающей точки для F11 (ака 1811) или акселераторе плавающей точки (FPA) для J11 (даже не знаю, делали у нас что то такое для 1831)

    Для полноты коллекции я его под PDP2011 сделал, но толком так и не проверил - другими делами занят.
    Последний раз редактировалось Hunta; 13.12.2020 в 18:32.

  14. #50
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zx_ Посмотреть сообщение
    svinka, эт кааято странная хрень
    на четырех битных сдвиговых регистрах, мультиплексорах и проч логики

    математический сопроцессор на дискретной логике ?
    ага
    ведь в пройстейшем -)) самом медленном способе целочисленное умножение 16*16 бит (результат 32бит) это 16 сложений и 16 сдвигов


    тама на плате реализованы микропрограммные автоматы по некоторым операциям для ускорения вычислений. через регистры в пространстве ввода-вывода. Не расширяет систему команд.
    Последний раз редактировалось svinka; 13.12.2020 в 08:31.

Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 0
    Последнее: 29.08.2017, 14:06
  2. Sector II - Extended
    от Splinter в разделе Музыка
    Ответов: 7
    Последнее: 07.02.2014, 06:45
  3. EXTENDED MEMORY DETECTION
    от VELESOFT в разделе Память
    Ответов: 1
    Последнее: 04.04.2010, 22:50
  4. gfx extended :)
    от riskej в разделе Графика
    Ответов: 12
    Последнее: 06.08.2008, 17:58
  5. Fast 48x48 MUL | DIV
    от Sinus в разделе Программирование
    Ответов: 6
    Последнее: 05.07.2005, 17:00

Ваши права

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