User Tag List

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

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

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

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

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

    По умолчанию

    Если делаять, то мне такой интерфейс не нравится. Зачем замедлять даже одну команду (LD HL,(xxxx)), добавляя проверку адреса там или еще каких-то условий, когда в ZX есть куча не использованных команд. Как например сделан SLT Trap для подгрузки уровней: ED FB .

    Точно так же лучше сделать ED FF - проверка наличия поддержки набора функций, меняет значение A. Т.е. если ничего не делается, и ничего не поддерживается, то ничего эта команда и не меняет. Если есть поддержка расширений (управление эмулятором), то XOR A: DB $ED, $FF - и в A - набор до 8 флажков. Пусть допустим бит 0 - поддержка управлением скоростью. И тогда LD HL,xxxx : ED FE - меняет скорость. Значения xx например такие:
    0 - пауза, 10 - 10%, 50 - 50%, 100 - 100%, 255 - 255%, 65000 - 65000%, 65535 - full throttle.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

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

  3. #2

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

    По умолчанию

    фигня всё это, потому что надо унифицировать интерфейс для всех эмуляторов, что вряд ли возможно из-за различий в фичах, которые авторы эмулей захотят включать через API (EDFF, кстати был раньше в unreal)

  4. #3

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

    По умолчанию

    Цитата Сообщение от SMT
    фигня всё это, потому что надо унифицировать интерфейс для всех эмуляторов, что вряд ли возможно из-за различий в фичах, которые авторы эмулей захотят включать через API (EDFF, кстати был раньше в unreal)
    Абсолютно верно. Я думаю надо что-то в таком роде:

    Функции 0..#3f - общие для всех эмулей, типа управления скоростью, растактовки, модели памяти, etc

    Функции #40..#4f - специфические фичи US

    Функции #50..#5f - специфические фичи EMUZWIN

    и т.д.

    Что-бы было с чего начать, давайтe сделаем функцию №0, управление скоростью эмулятора, где 0..250 - скорость Z80 в процентах от "стандартной", 255 - максимально возможная.

  5. #4

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

    По умолчанию

    Давайте ED 00 - ED 3F не трогать, а (или наоборот ED C0 - ED FF, но там уже все равно SLT Trap, он вроде как стандарт де-факто)? Тем более что в каком-то древнем эмуле ED 00 - ED 3F они были под завязку. Вообще надо задействовать меньше поменьше "трапов". Номер функции можно передавать например в A, доп. параметры если надо в DC, DE, HL, так же и на выходе если надо что-то получать. Тогда в этом смысле ED FF - проверка наличия фичи, а ED FE - функции (номер в A - можно и те же номера сохранить, и еще запас будет). Так пойдет?

    Тогда A=0 - управление скоростью, A=1 - "чтение" скорости в HL (можно было бы за 1 раз сделать, в HL - возвращать предыдущую, но если этого вдруг делать не нужно, лучше эмулятор не дергать, или надо тогда выделять какое-то значение - "оставить скорость" неизменной).

    Насчет 254 максимум - маловато будет. Я сегодня как раз гонял RZX-ы, у меня почти все на 1500%, некоторые на 3000%, а отдельные на 5000% бегают. Почему бы и не задавать тогда в HL. Лет через 10 65000% будет нормуль.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  6. #5

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

    По умолчанию

    Думаю чего не хватает: это определения типа эмуля. Пусть в той же ED FF в HL возвращает две буквы: H='U', L='S', если SMT поддержит и в моем H='E', L='W'. А уже в A - набор флажков по группам поддержанных операций.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #6

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

    По умолчанию

    Наконец-ТО!!! Давно пора!!!

  8. #7

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

    По умолчанию

    надо использовать минимум трэпов (то есть один, например, #EDFF) и перепровериться 100 раз (например, у меня раньше были 6-байтная сигнатура 'unreal' в регистрах bc,de,hl), чтобы какой-нить супер-тест недокументированных команд случайно не напоролся на трэп. с другой стороны, кодеры скажут, что неудобно пользоваться очень длинными процедурами обращения в api. сейчас я подумал о таком варианте - сделать 1 функцию, которая проверяет кучу условий (во избежание случайного срабатывания), возвращает тип и версию эмулятора и устанавливает флажок, который позволяет обращаться к EDFF с облегченными параметрами (без перепроверок). флажок сбрасывается при reset или загрузке нового снепшота

    Цитата Сообщение от Spectre
    Функции #40..#4f - специфические фичи US
    Функции #50..#5f - специфические фичи EMUZWIN
    один человек хочет, чтобы в его редакторе можно было авто-включить функцию text64, причём в регистрах указать адрес и другие параметры фонта. а потом эта функция появиться в другом эмуле, ес-но, с другим кодом включения. вот будет радости детектить тип эмуля и включать режим по-разному ;-)

  9. #8

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

    По умолчанию

    Сдались вам эти ED nn команды. Мне больше нравится последовательность которая состоит из документированных команд (чтобы с ассемблерами и отладчиками проблем не было), но с околонулевой вероятностью встречается в реальном коде.

    Смысл детектировать эмулятор я вообще не вижу. Да и что должна сделать программа если она хочет включить режим пентагона, но ей это не удается? Ничего!

    Поэтому достаточно включить что-то, а если не включилось виноват пользователь, который запретил это в эмуляторе или использует неправильную версию. Я как-то сомневаюсь что даже чтение текущих значенеий понадобится.

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

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

Эту тему просматривают: 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

Ваши права

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