User Tag List

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 21 по 30 из 63

Тема: Режим совместимости БК-0011М с БК-0010

  1. #21

    Регистрация
    27.01.2020
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    61
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    А если БЕЗ МСТД?
    Инфа только что (с эмулятора, но какая разница?):

    https://pic.maxiol.com/?v=1638259227...start.png&dp=2

    1000, как и должно быть.

    - - - Добавлено - - -



    При 11М с воткнутым СМК оно скажет, что это десятка. СМК подменяет адрес начального пуска, сто раз обсуждалось уже. Там будет не 300, а 370 или что-то около того
    СМК на это значения не влияет хоть на 11м хоть на 10ку. Для проверки на наличие СМК используются другие ячейки, если мне память не изменяет то это адрес 167776 и дольжно быть значения 177605.

  2. #22

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,714
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    2. подредактировать файл скрипта загрузки .bin файла bk11m_load.bkscript, просто добавить туда одну строку:
    Код:
    |#MO
    |#|0|1L|2
    R6/1000
    G
    Вот это решение на первый взгляд помогло, поясню его сам для себя: L загружает код с 01000, монитор на своём стеке, соответственно, он внесёт 01000 в SP _до_ того, как переключится на стек 02000 от Васика. Да, так работает.

    Кстати, спасибо за хороший эмуль и за автозапуск .bin - для разработки это полезная штука. А мало какие эмули БК так умеют.

  3. #23

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ну смотрите. Мне надо тогда выкладывать среду разработки, включая все скрипты сборки библиотек и прочего. Оно всё сырое и даже пока не закоммичено в Pdp11Dev. Кроме того, опыт показывает, что в этом разбираться никто не будет.
    Были запрошены исходники. Только исходники. Никто не просил среду разработки.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Что касаемо запуска монитора из-под Васика - так это эмуль так делает.
    Это пользователь так делает. Если при старте машины зажать пробел, то никакого бейсика не будет, и загрузки с дисков тоже не будет, будет принудительный выход в Монитор. Ну почему никто не читает документацию?

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Допустим, монитор использует свой собственный стек, но когда он запускает пользовательскую программу после её загрузки, то он переключается на стек 02000 и делает, к примеру, JSR PC, 01000 - соответственно, слово по адресу 02000-2 будет испорчено адресом возврата.
    Если стек на 2000 -- то так и будет. Но при холодном запуске он должен быть на 1000. Если эмулятор при холодном запуске зачем-то ставит его на 2000 -- то это ошибка в эмуляторе.

  4. #24

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    610
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Как происходит загрузка кода с адреса 01000, если стек стоит на 02000.
    В БОС БК11 есть как бы "Kernel mode" это монитор, в котором свой стек, своё окружение, и во время загрузки программы стек находится в 7-й странице, которая подключена в окно 0, а программа пользователя работает в как бы "User mode", параметры и окружение которого можно менять в мониторе.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Так что mov #1000,SP тут не поможет.
    Точно, не поможет. Тут я ошибся. Заглянул в код ПЗУ и уточнил момент, как делается передача управления программе по команде "G".
    Там сперва инициализируются регистры, в том числе устанавливается стек, затем в стек помещается PSW режима пользователя, и адрес перехода, т.е. портится код программы, а потом делается команда RTT. Так что да, лишь первые два пункта верны.
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Пока только предполагаю и удивляюсь, что Вы так уверенно это советуете.
    Поточу что я часто советую не подумавши, а потом начинаю думать и проверять, чего я там насоветовал. Ибо на проверки иногда уходит много времени, а глупость ляпнуть - быстро и просто.

    Этот пользователь поблагодарил gid за это полезное сообщение:

    Oleg N. Cher(30.11.2021)

  5. #25

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,714
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, на самом деле даже mov #1000,SP способно минимизировать потери при порче программы. Можно было бы даже предусмотреть "пустое пространство" в несколько слов ниже адреса 02000, но наверное всё-таки это проблема вызывающей стороны, а не самой проги.

    Sandro, пока в распространении исходников нет необходимости. Я же сказал, что там идёт работа только с экранной памятью и никаких системных вызовов. К тому же, не каждый кинется разбирать чужие исходники. Если Вам интересно взглянуть чего я там такого ваяю - то в этом нет никакого секрета, всё будет доступно.

    Тэкс. Эта проблема решена. Дальше нужен будет опрос клавиатуры, тоже универсальным способом (для всех моделей БК). Желательно без установок векторов. Я старый спектрумист, там векторов нет, я не понимаю как ими пользоваться)

  6. #26

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    610
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    но наверное всё-таки это проблема вызывающей стороны
    Это проблема именно эмулятора, и не надо подстраиваться под него. Не то, что стек ставится на 2000, его бейсик так устанавливает, а то, что при загрузке бин файла скриптом сперва запускается бейсик. Потому что движок скрипта эмулирует передачу символов через прерывание, а холодный старт, о котором говорит Sandro, это когда нажать пробел нужно, чтобы не попадать в бейсик, отлавливается по флагу нажатия на клавишу в 177716, эту фичу скрипт не умеет. Потому и вся эта котовасия и заварилась.

  7. #27

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Дальше нужен будет опрос клавиатуры, тоже универсальным способом (для всех моделей БК). Желательно без установок векторов. Я старый спектрумист, там векторов нет, я не понимаю как ими пользоваться)
    На БК опрос клавиатуры ещё проще, чем на Спектруме, если разобраться =) Не нужно кучу портов опрашивать и соответствие клавишам делать. Достаточно прочитать код клавиши, чем-то напоминает спектрумовское чтение ячейки 23560. Минус один: одновременно только одна кнопка, аналогично проверке через 23560.

    Этот пользователь поблагодарил reddie за это полезное сообщение:

    Oleg N. Cher(30.11.2021)

  8. #28

    Регистрация
    18.01.2021
    Адрес
    п. Новый Ургал
    Сообщений
    145
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Тэкс. Эта проблема решена. Дальше нужен будет опрос клавиатуры, тоже универсальным способом (для всех моделей БК). Желательно без установок векторов. Я старый спектрумист, там векторов нет, я не понимаю как ими пользоваться)
    Читать регистры, это будет работать везде

    В регистре 177660 бит 7 (восьмеричное 200) сигнализирует о том, что в регистре 177662 появился код нажатой клавиши.
    Регистр 177662 содержит код нажатой клавиши. После чтения из него сбратывается бит 7 в регистре 177662
    Еще можно узнать о нажатии клавиши по биту 6 в регистре 177716 (1-отжата, 0- нажата)
    Блог проекта "The Goonies для БК11М"
    БК-0011М, БК-0011М-01, SMK-512, AZ

    Этот пользователь поблагодарил grf за это полезное сообщение:

    Oleg N. Cher(30.11.2021)

  9. #29

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,714
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Отлично. Спасибо за ценную инфу. И, насколько я понял, в БК нельзя опрашивать несколько клавиш, нажатых одновременно?

    Что будем делать с кнопкой Сбр, вернее, с кнопкой Стоп? Как обычно она срабатывает в играх?

    Теперь в свете вышесказанного про правильный детект модели БК. Нужна надёжная установка палитры на БК11 и 11М, но подпрограмма не должна делать ничего деструктивного на БК10. Пока код такой:

    Код:
    void PALETTE (int n)
    {
      asm("\
            CMPB @$0177717, $0200   \n\
            BEQ  BK0010             \n\
            MOV  %0, R0             \n\
            BIC  $0177760, R0       \n\
            SWAB R0                 \n\
            BIS  $040000, R0        \n\
            MOV  R0, @$0177662      \n\
    BK0010:"
          ::"g"(n)
      );
    }
    Зачем вообще детектить здесь модель? Экспериментально было выяснено, что засылка в регистр 177662 на БК10 приводит к сбою.

  10. #30

    Регистрация
    18.01.2021
    Адрес
    п. Новый Ургал
    Сообщений
    145
    Спасибо Благодарностей отдано 
    30
    Спасибо Благодарностей получено 
    66
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Отлично. Спасибо за ценную инфу. И, насколько я понял, в БК нельзя опрашивать несколько клавиш, нажатых одновременно?
    Стандартными средствами - нет.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Что будем делать с кнопкой Сбр, вернее, с кнопкой Стоп? Как обычно она срабатывает в играх?
    Обычно она или заблокирована или вызывает рестарт игры. Если надо заблокировать - можно просто прописать вектор 4 на команду RTI

    mov #stop,@#4
    ...
    stop: rti

    В БК11 и 11М есть специальная блокировка клавиши СТОП:

    mov #10000,@#177716


    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Теперь в свете вышесказанного про правильный детект модели БК. Нужна надёжная установка палитры на БК11 и 11М, но подпрограмма не должна делать ничего деструктивного на БК10. Пока код такой:

    Код:
    void PALETTE (int n)
    {
      asm("\
            CMPB @$0177717, $0200   \n\
            BEQ  BK0010             \n\
            MOV  %0, R0             \n\
            BIC  $0177760, R0       \n\
            SWAB R0                 \n\
            BIS  $040000, R0        \n\
            MOV  R0, @$0177662      \n\
    BK0010:"
          ::"g"(n)
      );
    }
    Зачем вообще детектить здесь модель? Экспериментально было выяснено, что засылка в регистр 177662 на БК10 приводит к сбою.
    Ну затем и детектить, что по записи в этом регистре переключение палитр на 11 и 11М.

    mov #40000,@#177662 ;включение палитры БК0010
    Блог проекта "The Goonies для БК11М"
    БК-0011М, БК-0011М-01, SMK-512, AZ

Страница 3 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 248
    Последнее: 21.12.2025, 14:34
  2. Отличия БК-0011М от БК-0010(01)?
    от nzeemin в разделе БК-0010/0011
    Ответов: 22
    Последнее: 30.03.2021, 18:47
  3. Ответов: 0
    Последнее: 24.01.2010, 21:46
  4. О совместимости клонов с играми
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 1
    Последнее: 13.03.2008, 18:26

Ваши права

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