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

User Tag List

Страница 7 из 7 ПерваяПервая ... 34567
Показано с 61 по 62 из 62

Тема: VZX - исходники.

  1. #61
    Member Аватар для ARTi
    Регистрация
    06.05.2006
    Адрес
    Санкт-Петербург
    Сообщений
    127
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Расскажу-ка я про директиву Add Device, чтобы убрать все неясности. Итак, рассмотрим на примере:
    Код:
    Add Device = port 0x7FFD, mask 0x8003, spaces std+bdi, prio 1, write 128k MMU
    port - тут все понятно, указывается "официальный" номер порта портовой функции/устройства. Указан порт 07FFDh, стандартный порт для задания конфигурации памяти 128k;
    mask - и тут все ясно, установленные биты в маске указывают, что при неполной дешифрации именно их надо брать во внимание. В данном случае дешифрация идет по линиям A15,A1,A0;
    space - указывает, в каком пространстве в/в порт будет доступен. Всего пространства пока 2 (других не знаю) - Standart и BetaDisk. В предыдущих версиях указывалось числовое значение (1 и 2 соотв.), теперь будет ключевое слово (несколько вариантов написания, см. inifile.asm). В примере выше использована разновидность spaces, описанная ниже;
    spaces - то же самое, что и space, но через "+" можно указать одновременно несколько пространств в/в, в которых порт будет виден. Системный порт 07FFDh должен быть виден как в обычном пространстве, так и в бетадисковом, отсюда и пишем Stadart+Betadisk (в примере написано std+bdi, напоминаю, для каждого ключевого слова имеется несколько вариантов написаний);
    prio - приоритет. Это черновое решение (другого логичного не придумал) следующего момента. Иногда маски могут быть такими, что определенный номер порта затронет не одну порт.функцию, а несколько - именно так ведь и было задумано в оригинальном ZX Spectrum. Ну и вот, во избежание проблем, я где-то видел фразы, что "выбор такого-то устройства блокирует остальные". Т.е., положим, есть 3 устройства - X, Y и Z. Дешифрацией предусмотрено, что могут быть доступны 3 этих устройства одновременно, однако из-за особенностей схемы или просто по смыслу, к примеру, при записи в X запись в Y и Z блокируется. Таким образом, т.к. в эмуляторе такая запись по-любому эмулируется последовательно, я сделал приоритеты. 0 приоритет максимальный, 255 - минимальный (вряд ли такое значение когда-нибудь пригодится). Т.е. для X надо сделать приоритет равным 0, для других - значением выше. Если нужно, чтобы доступ шел ко всем устройствам, значения приоритетов должны следовать один за другим (0,1,2) или быть равными (0,0,0 или 0,0,1 или 0,1,1). Если же нужно, чтобы устройство блокировало доступ к другим устройствам с более низким приоритетом, цепочку приоритетов необходимо "разорвать" (0,2,3 или 0,2,2). Вернемся к этому ниже на других примерах.
    write 128k MMU - указание портовой функции, сначала идет тип доступа (read/write), затем непосредственно функция (несколько вариантов написания). Доступ перепутать не получится - он жестко привязан к функции и введен для удобочитаемости, к тому же есть порты, смысл которых одинаков как для чтения, так и записи (регистры ВГ93, к примеру).

    С этим примером вроде разобрались. Хочу остановиться на паре других по поводу приоритетов:
    Код:
    Add Device = port 0x00FF, mask 0x0000, space std, prio 9, read bus state
    //Add Device = port 0x00FE, mask 0x0000, space std, prio 9, write ULA
    Тут указаны странные маски и приоритеты, значения которых гораздо выше всех остальных устройств в списке (по крайней мере в прилагаемых конфигах в архиве). Смысл следующий: так как маска = 0, порт будет выбираться всегда, по любому номеру, а номер лишь указан для наглядности. Однако цепочка приоритетов с любым другим устройством всегда разорвана - именно поэтому число выбрано заведомо большое. Так что смысл такой записи таков: если есть другие устройства - доступ идет только к ним, а если устройств нет, тогда доступ идет к указанному в строке.
    Таким образом имитируется понятие "несуществующий порт". На оригинальном Spectrum это порт 0FFh, который на самом деле любой, не принадлежащий другим устройствам, и это чтение состояния шины, о чем написано в первой строке. На моем первом реале при записи в несуществующий порт запись велась в 0FEh, что и означает вторая (закомментированная) строка.
    Насколько я помню, с несуществующими портами также можно строить цепочки, т.е. в конкретном примере можно добавить какое-нибудь устройство с приоритетом 10.

    В последней версии добавилась возможность вешать портовые функции не только на обычные порты, но и на порты AY (Port A и Port B). Рассмотрим примеры:
    Код:
    Add Device = AY0 port A, read ZS combo state
    Add Device = AY0 port B, write ULA
    Забегая вперед, скажу, что вторая строчка добавлена лишь для демонстрации. Итак, тут в общем-то все ясно:
    AY0 port B - указывается, на какой AY (напоминаю, их у меня 4, так что если надо, чтобы правило распространялось на все сразу, надо писать 4 строчки - по одной на каждую) на каком порту (Port A или Port B) "висит" портовая функция. Номер AY указывается от 0 до 3.
    write ULA - портовая функция.
    Это было по второй строчке. По первой, думаю, уже все ясно.
    port, mask, space(s) запрещены к использованию в строках такого типа. Насчет prio не помню, но по смыслу его тоже тут не должно быть.

    Последнее, все параметры можно указывать в любом порядке. Теперь вроде все рассказал
    Последний раз редактировалось ARTi; 07.09.2011 в 20:28.
    Существование Интернета, бесспорно, спорно без порно (c)

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

  3. #62
    Member Аватар для ARTi
    Регистрация
    06.05.2006
    Адрес
    Санкт-Петербург
    Сообщений
    127
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, совсем забыл! VZX.CFG от предыдущей версии крайне желательно удалить!!!
    Существование Интернета, бесспорно, спорно без порно (c)

Страница 7 из 7 ПерваяПервая ... 34567

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

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

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

Похожие темы

  1. Исходники AY плейера.
    от Yaroslav в разделе Программирование
    Ответов: 2
    Последнее: 20.09.2006, 18:10
  2. Ищу исходники AY музыки
    от Black1980 в разделе Музыка
    Ответов: 26
    Последнее: 16.03.2006, 13:29
  3. Нужны исходники
    от newart в разделе Программирование
    Ответов: 19
    Последнее: 08.02.2006, 15:51
  4. Исходники демы Rage от X-Trade
    от jerri в разделе Программирование
    Ответов: 4
    Последнее: 26.10.2005, 11:14

Метки этой темы

Ваши права

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