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

User Tag List

Страница 24 из 183 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя
Показано с 231 по 240 из 1821

Тема: Эмулятор ДВК

  1. #231
    Guru Аватар для MiX
    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,065
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    62 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Patron, А может-ли эмулятор работать с реальными дисководами?

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

    По умолчанию

    Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_19.12.13_00-19

    Изменения:

    1. Внесены изменения, описанные ЗДЕСЬ.

    2. Добавлена возможность управления встроенным дизассемблером, для чего:

    2.1. В объект 1801VM1 добавлены:

    2.1.1. Состояние DisAsm, которое включает/выключает встроенный дизассемблер.
    2.1.2. Состояние StepMode, которое включает/выключает режим пошагового выполнения команд. При включении StepMode - всегда включается DisAsm. При выключении DisAsm - всегда выключается StepMode.
    2.1.3. Текстовый порт DisAsm, в который выводится листинг дизассемблирования исполняемых команд.
    2.1.4. Параметры DisAsmBottomAddr и DisAsmTopAddr, позволяющие задать нижнюю и верхнюю границы окна дизассемблирования.
    2.1.5. Скрытый параметр MaxLoopCommandsToHide ( значение по умолчанию 24 ), управляющий "сжатием" листинга циклов. В пошаговом режиме сжатие листинга циклов отключается.


    3. В модуль CPU_module добавлен объект CPUCSR, создающий на шине отладочный порт по адресу, задаваемому параметром CPUCSR_Address ( значение по умолчанию 0177724 ). Бит 00 этого порта управляет состоянием DisAsm, а бит 01 - управляет состоянием StepMode подключенного к шине процессора.

    4. В комплект поставки включён файл конфигурации DisAsm.cfg, выводящий листинг дизассемблирования в отдельное окно.

    5. В образ HDSYS.DSK добавлены файлы CPUCSR.MAC и CPUCSR.SAV, содержащие пример взаимодействия отлаживаемой программы с отладочным портом. Для отключения дизассемблирования тела обработчика EMT - в файле конфигурации DisAsm.cfg нужно изменить параметр DisAsmTopAddr c 0177776 на ( например ) 040000.
    Последний раз редактировалось Patron; 19.12.2013 в 15:45.

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

    По умолчанию

    Изменение эмулируемой конфигурации.

    Использование встроенного дизассемблера.
    ---------------------------------------------------------------

    Файл конфигурации DisAsm.cfg содержит пример использования дизассемблера, встроенного в эмулятор процессора. Для отображения листинга дизассемблирования создаётся дополнительная консоль DisAsm, которая находится в отдельном окне:

    Скрытый текст

    Код:
    [objects]
    
    DisAsm	 = Ядро:Console
    
    
    [links]
    CPU [DisAsm]   > DisAsm
    
    
    [DisAsm.ini]
    TabTitle=""
    SeparateWindow_X0_px=0
    SeparateWindow_Y0_px=0
    SeparateWindow_DX_px=800
    SeparateWindow_DY_px=600
    InitialStateOf[SeparateWindow]=1
    SaveChangesFor[SeparateWindow]=1
    InitialStateOf[ControlBar]=0
    SaveChangesFor[ControlBar]=1
    InitialStateOf[StatusBar]=1
    SaveChangesFor[StatusBar]=1
    DumpMode=1
    PrinterMode=0
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=1


    [свернуть]

    На полосе окна DisAsm находятся виджеты кнопок, подключенных к состояниям объектов CPU и bus:

    Скрытый текст

    Код:
    [objects]
    
    DisAsm_Button    = Ядро:SB_StatePushButton
    StepMode_Button  = Ядро:SB_StatePushButton
    Step_Button      = Ядро:SB_StateFlashButton
    DisAsmLog_Button = Ядро:SB_StateFlashButton
    CLS_Button       = Ядро:SB_StatePushButton
    
    
    [links]
    
    DisAsm + ( DisAsm_Button + CPU ) | ( StepMode_Button + CPU ) | ( Step_Button + bus )
    DisAsm + ( DisAsmLog_Button + DisAsm ) | ( CLS_Button + DisAsm )
    
    
    [DisAsm_Button.ini]
    SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
    TextFieldWidth_Px=0
    TextFieldText=
    ButtonPushMode   = 2
    IsInverted       = 0
    ButtonON_Text    = "DisAsm"
    ButtonOFF_Text   = "DisAsm"
    ButtonWidth      = 70
    ButtonHeight     = 18
    ButtonFontSize   = 12
    ButtonFontWeight = 600
    StateName        = "DisAsm"
    
    
    
    
    [StepMode_Button.ini]
    SB_Part_Data=nPosition[2] | nPriority[0] | bHidden[0]
    TextFieldWidth_Px=0
    TextFieldText=
    ButtonPushMode   = 2
    IsInverted       = 0
    ButtonON_Text    = "Step Mode"
    ButtonOFF_Text   = "Step Mode"
    ButtonWidth      = 90
    ButtonHeight     = 18
    ButtonFontSize   = 12
    ButtonFontWeight = 600
    StateName        = "StepMode"
    
    
    
    [Step_Button.ini]
    SB_Part_Data=nPosition[3] | nPriority[0] | bHidden[0]
    TextFieldWidth_Px=0
    TextFieldText=
    ButtonPushMode   = 2
    IsInverted       = 0
    ButtonON_Text    = "Step"
    ButtonOFF_Text   = " "
    StateName        = Pause
    ButtonWidth      = 60
    ButtonHeight     = 18
    ButtonFontSize   = 12
    ButtonFontWeight = 600
    
    PushedButton_Text_X_Offset_Px = 0
    PushedButton_Text_Y_Offset_Px = 3
    PoppedButton_Text_X_Offset_Px = 0
    PoppedButton_Text_Y_Offset_Px = 3
    ButtonON_TextColor   = 0,0,0
    ButtonOFF_TextColor  = 0,0,0
    ButtonON_Background  = 210,210,110
    ButtonOFF_Background = 1,0,0
    Is_PoppedButton_Border_ButtonLike = 0
    Is_PushedButton_Border_ButtonLike = 0
    DoCenterAlignButtonText = 1
    LightsOFF_StateName=Power
    
    
    
    
    [DisAsmLog_Button.ini]
    SB_Part_Data=nPosition[4] | nPriority[0] | bHidden[0]
    TextFieldWidth_Px=0
    TextFieldText=
    ButtonPushMode   = 2
    IsInverted       = 0
    ButtonON_Text    = "Log"
    ButtonOFF_Text   = "Log"
    StateName        = Log
    ButtonWidth      = 60
    ButtonHeight     = 18
    ButtonFontSize   = 17
    ButtonFontWeight = 600
    
    PushedButton_Text_X_Offset_Px = 0
    PushedButton_Text_Y_Offset_Px = 1
    PoppedButton_Text_X_Offset_Px = 0
    PoppedButton_Text_Y_Offset_Px = 0
    ButtonON_TextColor   = 0,0,0
    ButtonOFF_TextColor  = 0,0,0
    ButtonON_Background  = 160,205,160
    ButtonOFF_Background = 1,0,0
    Is_PoppedButton_Border_ButtonLike = 1
    Is_PushedButton_Border_ButtonLike = 1
    DoCenterAlignButtonText = 1
    LightsOFF_StateName=Power
    
    
    
    
    [CLS_Button.ini]
    SB_Part_Data=nPosition[5] | nPriority[0] | bHidden[0]
    TextFieldWidth_Px=0
    TextFieldText=
    ButtonPushMode   = 1
    IsInverted       = 0
    ButtonON_Text    = "Clear"
    ButtonOFF_Text   = "Clear"
    ButtonWidth      = 60
    ButtonHeight     = 18
    ButtonFontSize   = 12
    ButtonFontWeight = 600
    StateName        = "ClearScreen"
    [свернуть]

    В пошаговом режиме эмуляция ставится на паузу после выполнения процессором каждой следующей команды. Кнопка [ Шаг ] - это просто иначе оформленная кнопка [ Пауза ], поэтому она активируется не только в пошаговом режиме процессора, но и при любой постановке эмуляции на паузу:




    Слева в листинге дизассемблера указаны значения PC и PSW, потом мнемоника команды и в поле комментариев - содержимое операндов до выполнения команды.


    При нажатии кнопки [ Лог ] - листинг начинает писаться в файл DisAsm.log, при этом в листнг попадают только те строки, которые были выведены на консоль когда кнопка [ Лог ] уже была нажата. Чтобы сохранить строки, выведенные на консоль до этого - их можно скопировать в буфер обмена, нажав клавишу <PrintScreen> ( при этом копируются все строки от верхней, видимой на экране, до последней, выведенной на консоль, поэтому, чтобы скопировать в буфер обмена весь текстовый буфер консоли - нужно сначала промотать содержимое экрана до самого верха при помощи полосы прокрутки или колеса мыши ).


    В данной конфигурации на шине присутствует отладочный порт, создаваемый объектом CPUCSR:

    Код:
    [objects]
    
    CPUCSR   = CPU_module:CPUCSR
    
    
    [links]
    
    bus & CPU | CpuBoard | TerminalPort | PrinterPort 
    bus & Booter | TerminalPort2 | MX | HD | CPUCSR
    
    
    [CPUCSR.ini]
    CPUCSR_Address = 0177724

    Пример взаимодействия отлаживаемой программы с отладочным портом эмулятора находится на системном диске в файлах CPUCSR.SAV и CPUCSR.MAC:

    Код:
    ;
    ;	Тест отладочного регистра эмулятора процессора ( 0177724 ).
    ;
    ;
    ;       Бит 01 включает/выключает дизассемблер 
    ;	       ( при выключении - выключает и пошаговый режим ).
    ;
    ;       Бит 02 включает/выключает пошаговый режим 
    ;	       ( при включении - включает и дизассемблер   ).
    ;
    ;
    	.MCall	.Exit
    
    START:
    
    	Mov	#2, @#177724	; Включает дизассемблер в пошаговом режиме.
    
    	Mov	#100., R0
    	Mov	#10.,  R1
    	Mov	#4,    R2
    	Clr	R3
    
    	BiC	#2, @#177724	; Выключает пошаговый режим.
    
    1$:
    	Inc	R3
    	SOB	R0, 1$
    
    	BiS	#2, @#177724	; Включает пошаговый режим.
    
    	Inc	R1
    	EMT 341
    	Inc	R2
    	Inc	R3
    
    	Mov	#0, @#177724	; Выключает дизассемблер.
    
    ;================================
    
    	Dec	R1
    	Dec	R2
    	Dec	R3
    
    ;================================
    
    	Mov	#1, @#177724	; Включает дизассемблер в потоковом режиме.
    
    	Mov	#12., R0
    2$:
    	Dec	R0
    	BEq	3$
    	Cmp	R0, #5
    	BLE	2$
    	SOB	R0, 2$
    3$:
    
    ;================================
    
    22$:
    	Inc	R1
    	Inc	R2
    	Inc	R3
    	Inc	PC
    	Br	22$
    
    ;================================
    
    	Mov	#0, @#177724	; Выключает дизассемблер.
    
    	.Exit
    
    .End	START
    ;

    Запуск CPUCSR.SAV осуществляется в окне терминала, по команде:
    Код:
    .R CPUCSR

    Чтобы в листинг не включался текст системного обработчика команды EMT - в файле конфигурации DisAsm.cfg нужно изменить верхнюю границу окна дизассемблирования:

    Код:
    [CPU.ini]
    CPU_Frequency_KHz      = 5300
    CPU_SpeedLimit_KIPS    =True
    
    DisAsmBottomAddr       = 0
    DisAsmTopAddr          = 040000
    ;; DisAsmTopAddr          = 0177776
    InitialStateOf[DisAsm]=0
    SaveChangesFor[DisAsm]=1
    InitialStateOf[StepMode]=0
    SaveChangesFor[StepMode]=1
    Последний раз редактировалось Patron; 19.12.2013 в 15:57.

  4. #234
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    Post вопрос по системному разделу

    Цитата Сообщение от Patron Посмотреть сообщение
    Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_19.12.13_00-19
    Код:
       CPUCSR.MAC     3  19-Dec-2013  1597
    CPUCSR.SAV     2  19-Dec-2013  1600    < UNUSED >   143               1602
     51 Files, 1588 Blocks
     143 Free blocks
    
    .CPUCSR
    
    ?MON-F-Trap to 4 001006
    
    .
    Что это за штука, которая ТРАПиться? )
    И ещё кажется что-то обновилось в SYS файлах на системном
    разделе? Нет?

    Есть ли планы полноценного WEB-ресурса посвящённого
    эмулятору или об этом пока рано говорить?

    И конечно огромная благодарность за развитие и поддержку лучшего в мире эмулятора ДВК! )
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

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

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    Что это за штука, которая ТРАПиться?
    Отладочный регистр есть на шине только тогда, когда в конфиге создан и подключен к шине объект CPUCSR. Это делается только в конфиге DisAsm.cfg. Если загрузить конфиг DisAsm.cfg и запустить там CPUCSR.SAV - обращения по адресу 0177724 пройдут успешно. Во всех остальных случаях - будет Trap_To_04.

  6. #236
    Guru Аватар для MiX
    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,065
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    62 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Patron, Что-то тест не проходит. Запускаю эмулятор в конфиге DisAsm, нажимаю сброс 2 раза, набираю T0 ,enter. Тест доходит до набора "1 2 3 4 j c u k" и когда я набираю j после 1234 он пишет 000404 , @J?,@160556
    Последний раз редактировалось MiX; 23.12.2013 в 15:24.

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

    По умолчанию

    Цитата Сообщение от MiX Посмотреть сообщение
    Что-то тест не проходит. Запускаю эмулятор в конфиге DisAsm, нажимаю сброс 2 раза, набираю T0 ,enter. Тест доходит до набора "1 2 3 4 j c u k" и когда я набираю j после 1234 он пишет 000404 , @J?,@160556
    Это из-за того, что встроенные тесты ДВК не дружат с прерыванием таймера. Если выключить таймер до набора T0 - всё проходит.

    ---------- Post added at 14:44 ---------- Previous post was at 14:41 ----------

    До сих пор никто так и не понял - что именно там портится при включённом таймере. Можно записать листинг прохождения встроенного теста при включённом таймере, сравнить с листингом при выключенном таймере и попробовать найти причину вылета.

  8. #238
    Guru Аватар для MiX
    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,065
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    62 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если выключить таймер до набора T0 - всё проходит.
    У меня с выключенным таймером доходит до 6 теста и пишет дефект 71 ,0020466 ,@ ?

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

    По умолчанию

    Цитата Сообщение от MiX Посмотреть сообщение
    У меня с выключенным таймером доходит до 6 теста и пишет дефект 71 ,0020466 ,@ ?
    Это потому что по адресу 177170 пока не эмулируется контроллер RX для дисков DX/DY.

  10. #240
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Раньше вроде бы проскакивал\определял? Или это норм?

    Код:
    Адрес   Модуль  Длина
    ------  ------  -------
    167426  HD         117.
    160000  IOPAGE    1931.
    156220  RMON       440.
    153550  EM         660.
    147230  SL        1128.
    137226  USR       2049.
    001000  ..BG..   24139.
    
    .SYS
    
    RT-11SJ  V05.04 G
    .TTINQ
    c?TTINQ-W-Unknown terminal type
    
    .Z
    !UCL-E-Bad command or file name
    .
    
    .
    
    .TTINQ
    c?TTINQ-W-Unknown terminal type
    И терминал в [hold] автоматом уходит! )



    Код:
    	BCC	50$			;IF CC WE GOT AN ANSWER
    20$:	.PRINT	#EFAIL			;IF CS INQUIRE FAILED
    	BISB	#WARN$,@#$USRRB		;SET EXIT STATUS
    30$:	CALL	TTVIS			;VISUALIZE ANSWERBACK STRING
    	BCS	40$			;IF CS NO ANSWER RECEIVED
    	.PRINT	#TTANS			;PRINT ANSWER STRING
    	.PRINT	#BUFF			;
    40$:	.EXIT				;EXIT
    
    50$:	MOV	#IDTAB,R3		;POINT TO TERMINAL ID TABLE
    	MOV	#IDSIZ,R2		;SET TABLE SIZE
    60$:	CMP	R1,(R3)+		;FOUND TERMINAL ID?
    	BEQ	70$			;YES
    	TST	(R3)+			;SKIP TERMINAL NAME ADDRESS
    	DEC	R2			;MORE IDS AVAILABLE?
    	BNE	60$			;YES, GO FOR NEXT
    	BR	20$			;NO, TERMINAL TYPE UNKNOWN
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

Страница 24 из 183 ПерваяПервая ... 202122232425262728 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

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