User Tag List

Показано с 1 по 10 из 336

Тема: Эмулятор Союз-Неон ПК-11/16 - EmuStudio

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,054
    Спасибо Благодарностей отдано 
    1,144
    Спасибо Благодарностей получено 
    1,480
    Поблагодарили
    528 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Titus, пытаюсь дописать свой эмулятор Союз-Неона до хоть какого-то рабочего состояния. Сравниваю с твоим.

    Вот такой вопрос - это бага эмулятора или так и задумано? Проверял на EmuStudio 0.15n.
    Запускаем эмулятор, на проверке памяти выходим в отладчик - F8.

    Доходим до 001000 (0x0200) в режиме USER:
    Код:
    r200
    HALT MMU: 000, 000, 000, 000, 002, 004, 000, 000
    USER MMU: 006, 008, 00A, 00C, 002, 004, 000, 000
    SNDC2R = 36458
    PPIC = IH-0
    PPIB = HI10
    PIC_IRQM = --5-----
    PICMR    = 76543210
    
     R0=8202  R4=0000  PSW =0000     0200  15DF 0003 F86A  MOV   #$0003,(#$F86A)
     R1=0000  R5=0000  PSW'=0000     0206  00A0            NOP
     R2=0000  SP=0000  PC' =0200     0208  15C2 040E       MOV   #$040E,R2
     R3=0000  PC=0200  Ctr=047188    020C  11C6            MOV   PC,SP
     Flags = U--------  CPU (Main)   020E  09DF 0402       JSR   (#$0402)
    Дальше как видим обращение к эмулируемому регистру -- как мы знаем, на NOP будет прерывание.

    Делаем шаг:
    Код:
    m0
    HALT MMU: 000, 000, 000, 000, 002, 004, 000, 000
    USER MMU: 006, 008, 00A, 00C, 002, 004, 000, 000
    SNDC2R = 36467
    PPIC = IH-0
    PPIB = HI10
    PIC_IRQM = --5-----
    PICMR    = 76543210
    
     R0=8202  R4=0000  PSW =0180     0368  11BF 7CA2       MOV   SP,@($800E)
     R1=0000  R5=0000  PSW'=0000     036C  17C6 800E       MOV   (#$800E),SP
     R2=0000  SP=0000  PC' =0200     0370  1166            PUSH  R5
     R3=0000  PC=0368  Ctr=047152    0372  1126            PUSH  R4
     Flags = HP-------  CPU (Main)   0374  10E6            PUSH  R3
    Странно, что мы сразу провалились в прерывание, не дойдя до NOP.

    Теперь пропустим всё прерывание:
    Код:
    r200
    HALT MMU: 000, 000, 000, 000, 002, 004, 000, 000
    USER MMU: 006, 008, 00A, 00C, 002, 004, 000, 000
    SNDC2R = 320
    PPIC = IH-0
    PPIB = H-10
    PIC_IRQM = --------
    PICMR    = 76543210
    
     R0=8202  R4=0000  PSW =0000     0200  15DF 0003 F86A  MOV   #$0003,(#$F86A)
     R1=0000  R5=0000  PSW'=0000     0206  00A0            NOP
     R2=0000  SP=0000  PC' =0200     0208  15C2 040E       MOV   #$040E,R2
     R3=0000  PC=0200  Ctr=045404    020C  11C6            MOV   PC,SP
     Flags = U--------  CPU (Main)   020E  09DF 0402       JSR   (#$0402)
    Мы опять на адресе 0200.
    Делаем два шага:
    Код:
    m0
    HALT MMU: F86, 000, 000, 000, 002, 004, 000, 000
    USER MMU: 006, 008, 00A, 00C, 002, 004, 000, 000
    SNDC2R = 334
    PPIC = IH-0
    PPIB = H--0
    PIC_IRQM = --------
    PICMR    = 76543210
    
     R0=8202  R4=0000  PSW =0000     0206  00A0            NOP
     R1=0000  R5=0000  PSW'=0000     0208  15C2 040E       MOV   #$040E,R2
     R2=0000  SP=0000  PC' =0200     020C  11C6            MOV   PC,SP
     R3=0000  PC=0206  Ctr=045350    020E  09DF 0402       JSR   (#$0402)
     Flags = U--------  CPU (Main)   0212  0A00            CLR   R0
    
    
    m0
    HALT MMU: F86, 000, 000, 000, 002, 004, 000, 000
    USER MMU: 006, 008, 00A, 00C, 002, 004, 000, 000
    SNDC2R = 343
    PPIC = IH-0
    PPIB = H--0
    PIC_IRQM = --------
    PICMR    = 76543210
    
     R0=8202  R4=0000  PSW =0180     0368  11BF 7CA2       MOV   SP,@($800E)
     R1=0000  R5=0000  PSW'=0000     036C  17C6 800E       MOV   (#$800E),SP
     R2=0000  SP=0000  PC' =0206     0370  1166            PUSH  R5
     R3=0000  PC=0368  Ctr=045314    0372  1126            PUSH  R4
     Flags = HP-------  CPU (Main)   0374  10E6            PUSH  R3
    Теперь мы упали в прерывание на NOP, причём в PPIB по-другому выставлены EF0/EF1.

    Это точно правильное поведение, что на одну запись в эмулируемый регистр мы отрабатываем прерывание дважды?

    Возможно, первое прерывание здесь связано с выставленным INT5 в PIC, но там же маска его запрещает, нет?

    @Alex_K, если радиальный сигнал HALT установлен до перехода в режим USER, то при переходе в USER сразу отрабатывает прерывание HALT, или сначала успевает отработать одна команда и только затем отрабатывает прерывание HALT?

    Тут же ещё всё сложнее. Переход в режим USER тут выполняется командой STEP, после которой не происходит обработки прерываний до выполнения следующей команды. Тогда выглядит так, что Titus это не учитывает.
    Последний раз редактировалось nzeemin; 25.12.2022 в 17:55.

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

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

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

Похожие темы

  1. EmuStudio-ZX
    от Titus в разделе Эмуляторы
    Ответов: 731
    Последнее: 02.01.2026, 00:34
  2. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1199
    Последнее: 29.12.2025, 05:26
  3. Эмулятор ТИА-МЦ-1 EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 107
    Последнее: 20.09.2024, 21:03
  4. Эмулятор МС-0515 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 143
    Последнее: 09.02.2023, 10:44
  5. ПК-11 'Союз-Неон'
    от Keeper в разделе ДВК, УКНЦ
    Ответов: 12
    Последнее: 16.10.2013, 05:07

Ваши права

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