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

User Tag List

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 79

Тема: Эмуляция вычтехники на МПК К1801 в MAME/MESS

  1. #11
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прогоню позже, пока рано -- в T11 нет понятия bus error, и чтобы его добавить корректно, придется немного перетряхнуть код.

  2. #12
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,642
    Благодарностей: 2782
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    в T11 нет понятия bus error, и чтобы его добавить корректно, придется немного перетряхнуть код.
    Мне показалось удобным добавлять Trap_4 в код при помощи исключений :

    Код:
    	if( !abRAM[addr] )
    	{
    		wBadAddr = addr;
    		nBadAccessType = 4;
    		throw(0);
    	}
    Тогда бросать исключения можно в любом месте и на любом уровне вложенности вызовов подпрограмм, а обрабатывать - только на самом верхнем уровне.

  3. #13
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я так и собираюсь сделать. Похоже, для этого придется залезть и в ядро mame -- https://github.com/mamedev/mame/blob...mumem.cpp#L715

  4. #14
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Конвертор в абсолютный формат bin2load (https://github.com/jguillaumes/retroutils via http://ancientbits.blogspot.ru/2012/...nes-pdp11.html) оказался весьма полезен -- конвертировал им загрузочный сектор виртуальных дисков HD:, стало чуть удобнее грузить тесты.

  5. #15
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код перетряхнул и результат довольно ужасен, но стал проходить тест памяти 791323.


    Тест FIS 791403 проваливается схоже с VKAC, и результаты TSTVM2 намекают, где именно (команда DIV).





    Попутно выяснил, что диск TSTSYS.DSK довольно странный -- rt11 5.3 считает его битым, и PUTR портит файлы при записи на него.

  6. Этот пользователь поблагодарил shattered за это полезное сообщение:
    Panther (23.06.2016)

  7. #16
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Более аккуратно отслеживаю CPC, CPSW и тест FIS (VKAC) почти работает:



    Аналогичному тесту 791403 это помогло меньше. Листинга от него нет, но скорее всего, это вариант того же VKAC.

  8. Этот пользователь поблагодарил shattered за это полезное сообщение:
    nzeemin (24.06.2016)

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

  10. #17
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    2,068
    Благодарностей: 974
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shattered Посмотреть сообщение
    Более аккуратно отслеживаю CPC, CPSW и тест FIS (VKAC) почти работает:
    Аналогичному тесту 791403 это помогло меньше. Листинга от него нет, но скорее всего, это вариант того же VKAC.
    С CPC и CPSW есть тонкие моменты. Они изменяются только когда в PSW сброшен бит 7 или 8. Это можно посмотреть в исходниках UKNCBTL.
    Код:
    void SetPSW(WORD word){
      m_psw = word & 0777;
      if ((m_psw & 0600) != 0600) m_savepsw = m_psw;
    }
    
    void SetLPSW(BYTE byte)
    {
      m_psw = (m_psw & 0xFF00) | (WORD)byte;
      if ((m_psw & 0600) != 0600) m_savepsw = m_psw;
    }
    
    void SetReg(int regno, WORD word)
    {
      m_R[regno] = word;
      if ((regno == 7) && ((m_psw & 0600)!=0600))    m_savepc = word;
    }
    
    void SetLReg(int regno, BYTE byte)
    {
     m_R[regno] = (m_R[regno] & 0xFF00) | (WORD)byte;
     if ((regno == 7) && ((m_psw & 0600)!=0600))    m_savepc = m_R[7];
    }
    
    void        SetPC(WORD word)
    { 
     m_R[7] = word;
     if ((m_psw & 0600) != 0600) m_savepc = word;
    }
    При этом CPSW меняется только при изменении младшего байта PSW. Целиком PSW меняется только в таких случаях -прерывания режима HALT (двойное зависание, сигнал/команда HALT, прерывание ошибки шины в HALT-режиме, включение питания, команда FIS, ошибка получения адреса вектора прерывания), команды STEP и RUN, команды RTI и RTT при возврате в адрес больший 0160000. В остальных случаях изменяется только младший байт.
    Есть еще один тонкий момент. В эмуляторе UKNCBTL также не шел эмулятор FIS, пока в команде не была вставлена небольшая затычка (отмечена красным):
    Код:
    void CProcessor::ExecuteMTPS ()  // MTPS - move to PS{
        WORD ea;
        BYTE dst;
    
    
        if(m_methdest)
        {
            ea = GetByteAddr(m_methdest,m_regdest);
            if (m_RPLYrq) return;
            dst = GetByte(ea);
            if (m_RPLYrq) return;
        }
        else
            dst = GetLReg(m_regdest);
        
        SetLPSW((GetLPSW() & 0x10) | (dst & 0xEF));
        SetPC(GetPC());
        m_internalTick=MTPS_TIMING[m_methdest];
    }
    А иначе в эмуляторе FIS происходило прерывание, но т.к. в стек в 1801ВМ2 кладутся CPC и CPSW, то соответственно без этого клался в стек адрес за командой FIS, а надо адрес за MTPS.

  11. Этот пользователь поблагодарил Alex_K за это полезное сообщение:
    shattered (25.06.2016)

  12. #18
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Заново переписываю обработку прерываний и все такое, результат 791403 временно стал похож на VKAC (проваливаются тесты на bus error внутри команд FIS), зато сломалось многое другое Буду думать.

    Где-то на этом форуме упоминалась прошивка КЦГД с тестами -- есть у кого такая?

  13. #19
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Начал делать qbus (пока не очень настоящий -- только чтобы работал RESET); стал проходить тест терминала и тест VKAH. Других хороших новостей пока нет



    Промежуточный результат -- что думает RT-11 5.3 про этот эмулятор:

    Последний раз редактировалось shattered; 02.07.2016 в 00:00.

  14. Эти 2 пользователя(ей) поблагодарили shattered за это полезное сообщение:
    nzeemin (04.07.2016), Panther (01.07.2016)

  15. #20
    Veteran
    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,157
    Благодарностей: 426
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Заработала эмуляция КЦГД (см. соседнюю тему) с прошивкой 181 + попутно стал проходить тест скорости:


  16. Эти 2 пользователя(ей) поблагодарили shattered за это полезное сообщение:
    nzeemin (04.07.2016), Panther (05.07.2016)

Страница 2 из 8 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Пожелания и планы по эмулятору MESS
    от shattered в разделе Эмуляторы отечественных компьютеров
    Ответов: 57
    Последнее: 02.08.2017, 22:14
  2. Free ROM distribution with MAME
    от micko в разделе Эмуляторы отечественных компьютеров
    Ответов: 1
    Последнее: 10.03.2016, 13:07
  3. Эмуляция AY/YM
    от mungo в разделе Эмуляторы
    Ответов: 18
    Последнее: 22.03.2013, 06:14
  4. Dumping project & MESS bug tracker
    от shattered в разделе Разное
    Ответов: 17
    Последнее: 16.09.2012, 15:44

Ваши права

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