User Tag List

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

Тема: Управление эмулятором из zx-программы

Комбинированный просмотр

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

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    строка - нормально. а может, действительно, сделать так, чтобы эмулируемая машина не имела возможности узнать, что сработал TRAP? все нужные функции (даже гипотетические) не требуют возврата данных: скорость, режимы постобработки изображения/звука, раскладка стерео для AY

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

  3. #2

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну почему же, скороть текущую как раз можно сделать чтобы узнавать. Например - узнал, сохранил, выставил новую (большую) сделал дела, врубил прежнюю. Другое дело что для этой фичи еще опцию можно добавить - типа не реагировать. А прикольно например: аудиоплеер, который читает скорость эмуляции, подгоняет скорость аудио, чтобы оно шло как с обычной скоростью хе-хе.

    По идее через трапы много чего можно сделать. Попросить подрубить оборудование. Включить нужную модель. Да хоть движок графический 3D реализовать.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  4. #3

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    По идее через трапы много чего можно сделать. Попросить подрубить оборудование. Включить нужную модель
    модель - некорректно. по хорошему, после смены модели (т.е. пзу и портов памяти) нужен reset. трап, вызывающий reset, бесполезен. если только не модель, а времянки (нафига это кодерам)
    Цитата Сообщение от Vladimir Kladov
    Да хоть движок графический 3D реализовать
    и под этот движок будет ровно 1 игра, написанная автором эмулятора ;-)
    Цитата Сообщение от Vladimir Kladov
    скороть текущую как раз можно сделать чтобы узнавать. Например - узнал, сохранил, выставил новую (большую) сделал дела, врубил прежнюю
    очень сомневаюсь, что будут пользоваться значениями, отличными от normal/max. интерактивную прогу или демо немного ускорить нет смысла (если есть, юзер сам это сделает в настройках эмуля. а принудительно не надо), на реалах будет тормозить. проще тогда писать полноценную писишную версию
    Цитата Сообщение от Spectre
    другое дело созранить IX, вызвать трап, подсчитать CRC полученной строки, сравнить с нужным, восстановить IX. Это уже байт на 50 потянет
    чуть поменьше -
    Код:
      call nn
      db 'emulator traps'
    nn: pop ix
      dw #FFED
    так и знал, что кодеры накинутся считать байты

  5. #4

    Регистрация
    23.03.2005
    Адрес
    г. Чернигов, Украина
    Сообщений
    477
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну а чем не катит как в унреале было ? Правильно : можно дизасмить и тп. тоже сомневаюсь в необходимости скоростей нормал и макс... ну мож еще турбо 200% ???

    так же поддержу независимость от эмуля. просто функции. чего авторам эмулейне сделать стандарт, так сказать. номеров функций в 1 байте мнооого вот их поделить, одинакоавые поддержать, разные поделить и все дела...

    короче Spectre - давай как оно конкретно будет... я всеми конечностями ЗА!

    offt: SPECTRE!!! - как там QC 311B c sprView ???
    Последний раз редактировалось Знахарь; 07.03.2006 в 17:24.

  6. #5

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сразу скажу: по-хорошему это или не по-хорошему, но я нарочно делал так, чтобы модель можно было менять на ходу и по возможности при этом не делать ресета. По крайней мере если ишра уже работает - нафига ей ПЗУ. А по ОЗУ многие ОЗУ и так сходятся. "Смена модели" в этом случае - это просто переход к другой дешифрации портов, другому мультиколору, таймингу, звуку. Мне вообще здорово помогало при отладке мультиколора, когда я еще не знал под какую колору та или иная дема заточена. Правдя в этом случае я тайминг сенял, моделей как таковых у меня тогда и не было. Ресет пусть юзер делает, если хочет.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #6

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    и мне абсолютно по барабану поймет или не поймет конкретный дизассемблер эту инструкцию (мой-то поймет, он умный :) ). Мне важнее, что с префиксом ED - я просто перехожу по таблице jump-ов в эмуляторе, если траповский, то он начинает там чего-то делать, а если не траповский, то и делать ничего не надо. С какой стати я должен добавлять такты ПЦ на анализ дополнительных условий в обычной команде. Она должна сделать то, что ей полагается - за минимальное число тактов, и бежать дальше. Это только кажется, что у эмулятора море времени на эмуляцию кадра (70000 тактов - подумаешь делов-то). А если включен какой-нибудь режим графики типа HQM или Blur motion? А если эмулятор запущен на медленном ПЦ - до 200МГц? Я согласен только на префиксы ED (другие неиспользуемые команды тоже подошли бы, но их не так много, эквивалентных NOP'у). Собственно, я уже и сделал, осталось только добавить, что по IX лежит "та строка". А код правда, чего вы начинаете байты-то считать. Зато уже 99.999999% что никакие ксорки не сломаются. Насчет CRC я не понял. Какое еще CRC? Вот интерфейс, который я реализовал, дословно:

    PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FF:POP IX
    RRCA:JR NC,@1;если нет перехода, то есть поддержка speed-control, HL='EW'

    PUSH IX:LD A,1:LD IX,strap:DEFB $ED,$FE:POP IX
    ;HL=текущая скорость

    HL=new_speed
    PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FE:POP IX
    ;установлена новая скорость

    strap: DEFB 'Emulator traps';финальный байт или флаг не нужен в строке

    (Не, ну можно оптимизировать, это я так, для ясности написал по-простому. Уже проглядывается, что это один и тот же код, и его самомодификацией можно переиспользовать, чтобы 3 раза не дублировать).

    Еще одна потенциальная возможность: плагин сделать, который будет дополнительные трапы обрабатывать. Передавать этому плагину адреса блоков памяти и регистров процессора, и пусть с ними делает чего хочет. Возможное применение: трап-заглушка будущей какой-либо фукнциональности, которую проще реализовать на первых порах пока прога отлаживается не кодом в спеке, а кодом в ПЦ. Или трап-заглушка обращения к некоторому внешнему оборудованию, которое еще не готово к реальному подключению к спеку (но есть шанс проэмулировать его на ПЦ или просто обатиться к нему на ПЦ), а протестировать хочется, и софт делать надо (и возможно) одновременно или "до того как".
    Последний раз редактировалось Vladimir Kladov; 07.03.2006 в 21:56.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  8. #7

    Регистрация
    26.01.2005
    Адрес
    Минск
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Вот интерфейс, который я реализовал, дословно:

    PUSH IX:LD A,0:LD IX,strapEFB $ED,$FF:POP IX
    RRCA:JR NC,@1;если нет перехода, то есть поддержка speed-control, HL='EW'

    PUSH IX:LD A,1:LD IX,strapEFB $ED,$FE:POP IX
    ;HL=текущая скорость

    HL=new_speed
    PUSH IX:LD A,0:LD IX,strapEFB $ED,$FE:POP IX
    ;установлена новая скорость

    strap: DEFB 'Emulator traps';финальный байт или флаг не нужен в строке
    Ну если так удобнее авторам эмуляторов, то делайте так. Я, как писал в первом сообщении, поддержу любой стандарт. Только один вопрос: обязательно ли проводить проверку наличия трапов (мне было бы удобнее не проводить) перед началом работы с ними?

    Осталось определится с нужными операциями и их номерами. Мой вариант такой:

    Memory model: PENTAGON, SCORPION, KAY, PROFI, ATM450, ATM710
    Memory size: 0 = 0Кб, 255 = 4096Кб (то есть каждая единичка соответствует 16Кб)
    CMOS type: none, DALLAS, 512Bu1
    CMOS size: 0..32Кб (с шагом 1Кб)

    EFF7mask
    SMUC features

    RESET to: BASIC,DOS,MENU,SYS,CACHE,...

    Keyboard Layout
    Mouse type: NONE/KEMPSTON/AY/emulate kempston joystick on mouse
    Mouse Scale
    Swap mouse buttons

    Frame ; t-states in frame
    Paper ; t-states before paper
    Line ; t-states in line
    int ; int freq
    intlen ; int length in t-states
    EvenM1 ; align M1 cycle to even T-state (for scorpion)
    4TBorder ; update border every 4T states (for scorpion)
    FloatBus ; unstable data bus, unstable data bus in TR-DOS mode

    AtmPalette

    VSync
    Full Screen
    Border size

    [...]

    Короче практически весь конфиг US нужно сюда переписать. Выкинуть только возможность сменить частоту экрана, диск и прочие системные фичи, то есть то что должен менять только сам пользователь.

  9. #8

    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectre
    Короче практически весь конфиг US нужно сюда переписать
    да вы чего, люди! что кроме макс. скорости будет реально использоваться в программах? ага, ты лучше пользователя знаешь, что ему просто необходим FullScr, и что с vsync у него хватает производительности и не глючит видеокарта
    Цитата Сообщение от Spectre
    Только один вопрос: обязательно ли проводить проверку наличия трапов
    никто не заставляет. включай скорость сразу, без проверок на то, что получилось (а если не получилось, кому жаловаться?) разве что реализовать идею с флажком, когда трап #EDFF требует строку в IX и отдаёт версию эмуля, ставит флажок. а последующие вызовы #EDFE уже не требуют использования IX (если флажок установлен)

  10. #9

    Регистрация
    26.01.2005
    Адрес
    Минск
    Сообщений
    294
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    строка - нормально.
    Строка - это дико. Одно дело впихнуть STS'кой в код программы 5 байт, включающих турбо, совсем другое дело созранить IX, вызвать трап, подсчитать CRC полученной строки, сравнить с нужным, восстановить IX. Это уже байт на 50 потянет. А значит по памяти их не вспомнишь, да и место выискать придется.

    Тем более еще раз повторюсь: не надо ED и прочие префиксы, если я этот код захочу дизассемблировать, поймет ли его дизассемблер? Плюс в разных ассемблерах разные обозначения недокументированных команд.

    Цитата Сообщение от SMT
    а может, действительно, сделать так, чтобы эмулируемая машина не имела возможности узнать, что сработал TRAP? все нужные функции (даже гипотетические) не требуют возврата данных: скорость, режимы постобработки изображения/звука, раскладка стерео для AY
    Вот, все ближе и ближе к спектрумским программистам.

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

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

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

Похожие темы

  1. Ответов: 9
    Последнее: 10.11.2024, 08:26
  2. Замена дисковода эмулятором диска
    от pbogdan в разделе Внешние накопители
    Ответов: 643
    Последнее: 15.02.2018, 15:45
  3. Ответов: 0
    Последнее: 16.02.2006, 11:21
  4. Программы для модемов
    от p@lex в разделе Софт
    Ответов: 21
    Последнее: 11.02.2006, 21:36

Ваши права

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