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

User Tag List

Страница 64 из 112 ПерваяПервая ... 606162636465666768 ... ПоследняяПоследняя
Показано с 631 по 640 из 1114

Тема: Эмулятор УКНЦ - UKNCBTL

  1. #631
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Сейчас оптимизаторы достигли такой крутизны, что при включённой глобальной оптимизации - вызов целого вороха вложенных функций может скомпилироваться в одну-две ассемблерных команды вообще без всяких вызовов подпрограмм.
    Удивительно, почему тогда программы пухнут год от года.

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

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

    По умолчанию

    Если загрузчик TU58 использует сигнал BREAK, то он не начнёт нормально работать до тех пор, пока в нужные места эмулятора не будут вставлены вызовы SetCommBreak и ClearCommBreak.

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

    По умолчанию

    Эксперимент по запуску эмулятора TU58 с "Эмулятором ДВК" показал, что эмуляция сигнала BREAK для работы с эмулятором TU58 через com0com не обязательна.

    После запуска - TU58.exe предлагает нажать клавишу [Esc] и пропустить ожидание сигнала BREAK. После чего начинает обрабатывать пакеты в заданном порту, позволяя результативно выполнить в эмуляторе ДВК команды DIR DD: и BOOT DD:

    ---------- Post added at 16:05 ---------- Previous post was at 14:48 ----------

    Выяснилось, что эксперимент по работе с эмулятором TU58 без сигнала BREAK был не вполне корректным - оказывается, и эмулятор последовательного порта в "Эмуляторе ДВК", и адаптер COM-порта в модульном API поддерживают передачу сигнала BREAK. В описании com0com тоже указано, что передача сигнала BREAK не просто поддерживается, а многократно улучшалась.

    Однако, эмулятор TU58 начал нормально работать только после отключения ожидания сигнала BREAK нажатием клавиши [Esc].

    Так что пока вся эта история с сигналом BREAK выглядит довольно непонятно.

  5. #634
    Master
    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    как бы вот, после нажатия ESC
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	TU58.jpg 
Просмотров:	425 
Размер:	45.0 Кб 
ID:	39598  

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

    По умолчанию

    Цитата Сообщение от Vamos Посмотреть сообщение
    как бы вот, после нажатия ESC
    Когда я отключил в эмуляторе ДВК посылку сигнала BREAK - стало так же, поэтому без посылки BREAK TU58.exe работать не будет.

    Посылку BREAK добавить нетрудно - когда программа устанавливает бит 00 в статусе передатчика - нужно вызвать SetCommBreak( hComPort ) ( и ещё можно сделать Sleep(15) - тогда Windows успевает отреагировать до сброса этого бита эмулятором ), а когда программа обнуляет установленный бит 00 - нужно вызвать ClearCommBreak( hComPort ) ( здесь Sleep уже не нужен ).

    ---------- Post added at 20:45 ---------- Previous post was at 19:45 ----------

    Хотя, если внимательнее присмотреться к сообщениям TU58.exe:
    Код:
    command 2 count 800 block 2
    получается, что эмулятор опознал и выполнил команду чтения вторичного загрузчика.

    Поэтому, ситуация с сигналом BREAK в данном конкретном случае не вполне ясна - если TU58.exe и без сигнала BREAK передал загрузчик, то на чём всё потом остановилось..

    Однако, когда я отключил BREAK в эмуляторе ДВК и дал DIR DD: - эффект был нулевой, а с посылкой BREAK - всё работало как надо.

    ---------- Post added at 20:49 ---------- Previous post was at 20:45 ----------

    Возможно, в последнем случае дело было не в самом сигнале BREAK, а в том, что при подаче BREAK эмулятор делал Sleep(15) - вот TU58.exe и успевал ответить до отвала драйвера DD.SYS по таймауту.

    Сейчас проверю эту гипотезу..

    ---------- Post added at 20:59 ---------- Previous post was at 20:49 ----------

    ДА! TU58.exe нормально работает без BREAK !!!

    Если вместо сигнала BREAK просто делать Sleep(15) - TU58.exe без проблем обслуживает любые запросы драйвера DD.SYS

    Только что загрузил RT-11 c DD: с отключенной посылкой BREAK.

  7. #636
    Master
    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    то на чём всё потом остановилось..
    вот на этом

    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	TU58_2.JPG 
Просмотров:	381 
Размер:	73.8 Кб 
ID:	39601  

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

    По умолчанию

    Цитата Сообщение от Vamos Посмотреть сообщение
    вот на этом
    Т.е. загрузчик успешно прочитался, успешно запустился и довольно много чего читает.

    Есть уже отладочная печать в том месте, где бит переполнения устанавливается ?
    Из-за переполнения проблема или нет ?

  9. #638
    Master
    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Есть уже отладочная печать в том месте, где бит переполнения устанавливается ?
    У меня нет.

    Цитата Сообщение от Patron Посмотреть сообщение
    Из-за переполнения проблема или нет ?
    видимо нет. видимо BREAK


    Подскажите куда втыкать SetCommBreak, там где порт инициализируется или там где бит 00 обрабатывается.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	20130201184320718.jpg 
Просмотров:	357 
Размер:	13.0 Кб 
ID:	39602  

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

    По умолчанию

    Цитата Сообщение от Vamos Посмотреть сообщение
    куда втыкать SetCommBreak
    Вот сюда:
    Код:
    void CFirstMemoryController::SetPortByte(WORD address, BYTE byte)
    {
        WORD word = (address&1)?((WORD)byte) << 8:(WORD)byte;
        switch (address) {
            case 0176574:  // Стык С2: Регистр состояния передатчика
            case 0176575:
                if (((m_Port176574 & 0300) == 0200) && (word & 0100))
                    m_pProcessor->InterruptVIRQ(8, 0374);
                if (word & 01)
                {
                    if (!(m_Port176574 & 01))
                    { // BREAK
                        SetCommBreak( m_hEmulatorComPort );
                        Sleep(15);
                    }
                }
                else
                if (m_Port176574 & 01)
                    ClearCommBreak( m_hEmulatorComPort );
                m_Port176574 = (m_Port176574 & ~0105) | (word & 0105);
                break;
        }
    }
    
    void CFirstMemoryController::SetPortWord(WORD address, WORD word)
    {
        switch (address) {
            case 0176574:  // Стык С2: Регистр состояния передатчика
            case 0176575:
                if (((m_Port176574 & 0300) == 0200) && (word & 0100))
                    m_pProcessor->InterruptVIRQ(8, 0374);
                if (word & 01)
                {
                    if (!(m_Port176574 & 01))
                    { // BREAK
                        SetCommBreak( m_hEmulatorComPort );
                        Sleep(15);
                    }
                }
                else
                if( m_Port176574 & 01 )
                    ClearCommBreak( m_hEmulatorComPort );
                m_Port176574 = (m_Port176574 & ~0105) | (word & 0105);
                break;
        }
    }

  11. #640
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я вот думаю -- не проще ли сразу после SystemFrame() вызвать SetCommBreak(), а непосредственно перед SystemFrame() сделать ClearCommBreak().
    Если проблема действительно в паузе между фреймами, это может помочь.

    ---------- Post added at 17:10 ---------- Previous post was at 17:00 ----------

    Попробовал -- не помогает.
    Кроме того, я пробовал запускать загрузку по сети когда оба эмулятора работают на полной скорости (без звука) -- загрузка тоже падает с ошибкой.

Страница 64 из 112 ПерваяПервая ... 606162636465666768 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  2. Ответов: 231
    Последнее: 21.03.2022, 07:54
  3. Эмулятор УКНЦ на JavaScript
    от nzeemin в разделе Эмуляторы отечественных компьютеров
    Ответов: 4
    Последнее: 27.04.2021, 14:26
  4. УКНЦ и Gotec Flash Floppy эмулятор
    от Ynicky в разделе ДВК, УКНЦ
    Ответов: 10
    Последнее: 10.09.2019, 04:34
  5. Продам МС5310 блок дисководов к УКНЦ+КМД УКНЦ
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 19.03.2012, 11:27

Ваши права

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