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

User Tag List

Показано с 1 по 9 из 9

Тема: Что за ботва с портом 7FFD

  1. #1
    Junior
    Регистрация
    11.04.2012
    Адрес
    г. Санкт-Петербург
    Сообщений
    22
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Решил поупражняться в работе с этим портом. написал следующую програмулину которая пишет в него нуль. по идее она должна делать абсолютно ничего потому как 0 устанавливает все страницы как они установлены по умолчанию (при включении компа). Однако комп после выполнения перезагружается


    DI
    PUSH AF
    PUSH BC
    LD BC,#7FFD
    LD A,0
    OUT (C),A
    POP BC
    POP AF
    EI
    RET

    ---------- Post added at 18:17 ---------- Previous post was at 18:17 ----------

    Да, поскольку 128к спектрума у меня пока нету, тестировал на двух разных эмуляторах

    ---------- Post added at 18:19 ---------- Previous post was at 18:17 ----------

    А вот тестовая программка на бесике, если кому влом ассемблер запускать

    ---------- Post added at 18:19 ---------- Previous post was at 18:19 ----------

    Код:
    poke 30000,243
    poke 30001,245
    poke 30002,197
    poke 30003,1
    poke 30004,253
    poke 30005,127
    poke 30006,62
    poke 30007,0
    poke 30008,237
    poke 30009,121
    poke 30010,193
    poke 30011,241
    poke 30012,251
    poke 30013,201
    randomize usr 30000
    Последний раз редактировалось Tim; 18.04.2012 в 16:46.
    Ленинград-2 48к

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

  3. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    2,679
    Благодарностей: 2035
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как мне кажется, нужно еще продублировать значение порта в системной переменной #5B5C..
    Когда есть, но не знаеш где - это все равно, что нету.

  4. Этот пользователь поблагодарил null_device за это полезное сообщение:
    Tim (18.04.2012)

  5. #3
    Master
    Регистрация
    25.04.2009
    Адрес
    Днепропетровск
    Сообщений
    752
    Благодарностей: 130
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ога, и не забыть clear 49151

  6. #4
    Junior
    Регистрация
    11.04.2012
    Адрес
    г. Санкт-Петербург
    Сообщений
    22
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Как мне кажется, нужно еще продублировать значение порта в системной переменной #5B5C..
    Ага все верно. Я посмотрел переменную #5B5C и оказалось что она при старте в режиме basic-128 равна #10. Что ОЧЕНЬ СТРАННО ибо судя по всем описаниям что я нашел для этого порта бит 4 должен быть равен 1 если выбрано ПЗУ с бейсиком-48, и 0 для basic-128

    Кто нибудь может прояснить?
    Ленинград-2 48к

  7. #5
    Guru
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,083
    Благодарностей: 923
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    для этой переменной делается or #10, чтобы включать пзу 48к. этой переменной можно только страницы переключать и, возможно, экран. а пзу из бейсика переключать смысла нет.

  8. #6
    Junior
    Регистрация
    11.04.2012
    Адрес
    г. Санкт-Петербург
    Сообщений
    22
    Благодарностей: 3
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    у меня такое подозрение что при старте в режиме basic128 этот бит равен нулю, а при запуске программы на бейсике он ставится в единицу (и соответственно ПЗУ переключается на basic48). После завершения программы бит ставится в ноль и ПЗУ переключается обратно на basic128
    Ленинград-2 48к

  9. #7
    Guru Аватар для VNN_KCS
    Регистрация
    11.10.2007
    Адрес
    Донецкая обл. г.Енакиево
    Сообщений
    2,316
    Благодарностей: 755
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Лично я, при переключении страниц, использую значения #10 - #17.Причём #12 и #15 не юзаю. Это основная, до 49152, намять. А когда включаю 2-й экран 128-го Спека, то #18 - #1f. В переменной значение никогда не сохраняю. Хотя может и нужно при работе из бейсика. Не пробовал.
    Последний раз редактировалось VNN_KCS; 18.04.2012 в 19:44.
    Pentevo - рулез

  10. #8
    Veteran Аватар для Vadim
    Регистрация
    24.07.2008
    Адрес
    Курган
    Сообщений
    1,693
    Благодарностей: 356
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tim Посмотреть сообщение
    Однако комп после выполнения перезагружается
    Внимательнее почитайте описание битов порта. Если запускаете из бейсик-128, то как указывали выше, надо задать значение в переменной BANKM. Да и стек надо убрать из верхних адресов. На спектрум-128 проблем не будет, а вот на +3 даже задание переменной дело не решит.

    Скрытый текст

    Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
    ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
    ZX Evolution Rev B.
    Color 48 + Beta Disk Interface +FDD+YM2149F
    Орель-08БК
    Pentagon-48 (недоссобранный кем-то)
    Pentagon-128 (полуубитый)
    Кворум-128 (в ремонте)
    Магик-05 (в ремонте)
    Robotron 1715
    Корвет ПК8020 и ПК8010
    Amstrad CPC 464
    Amstrad CPC 6128
    [свернуть]

  11. #9
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,720
    Благодарностей: 947
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tim Посмотреть сообщение
    у меня такое подозрение что при старте в режиме basic128 этот бит равен нулю, а при запуске программы на бейсике он ставится в единицу (и соответственно ПЗУ переключается на basic48). После завершения программы бит ставится в ноль и ПЗУ переключается обратно на basic128
    Правильное предположение. Функция USR, которая запускает программу, живет в калькуляторе BASIC48, она же оставляет на стеке адрес возврата в ПЗУ BASIC48 для сохранения результата на стек калькулятора. Так что при входе в подпрограмму пользователя установлен BASIC48, он же должен быть возвращен (если программа щелкает ПЗУ) при выходе, то есть, в BANK_M и в #7ffd должен жить #10.

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

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

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

Похожие темы

  1. Про бит 3 порта 7FFD (экраны ZX128)
    от IanPo в разделе Программирование
    Ответов: 8
    Последнее: 31.03.2011, 19:55
  2. #7FFD в унреале?
    от lvd в разделе Эмуляторы
    Ответов: 20
    Последнее: 28.03.2005, 19:34

Ваши права

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