User Tag List

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 63

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

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

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

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

    По умолчанию

    Цитата Сообщение от grf Посмотреть сообщение
    Инфа из телеграм-канала "БК0010/11М World":
    Раз
    Два
    А если БЕЗ МСТД?
    Инфа только что (с эмулятора, но какая разница?):

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

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

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

    Цитата Сообщение от Maxvel Посмотреть сообщение
    Для проверки 11 или 10 нужно CMPB #300,@#177716
    Ну и я бы сделал вот так
    При 11М с воткнутым СМК оно скажет, что это десятка. СМК подменяет адрес начального пуска, сто раз обсуждалось уже. Там будет не 300, а 370 или что-то около того

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

  3. #2

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

    По умолчанию

    Если кто-то желает мне помочь кодом, то добро пожаловать.
    Резюмируем задачу. Чтобы пользоваться EMT'ами - нам нужно точно знать какая у нас машинка.

    Итак, нужен код для:

    1. Инициализации (установка экрана в 040000 на БК-0011/11М, запрет векторов, установка нужных страниц. На БК-0010 ничего не делать). Кстати, если при запрещённых векторах можно каким-то образом опрашивать клаву, то это отлично.

    2. Запрет кнопки Сбр (насколько я понимаю - это хороший тон, чтобы её нажатие не приводило к аварийному выходу, а вызывало интеллигентный холодный рестарт программы (или хотя бы корректный выход туда, откуда вызывали - в монитор или в ОС). Что-то там ещё про запрет рулонного скроллинга и другие подготовительные операции. Это то, в чём мне разобраться без вашей помощи очень тяжело.

    3. Адреса 01000..037777 освободим для пользовательской программы, держа в уме её рабочесть на всех моделях БК.

    4. Выход в вызывающую среду. Стек трогать не будем, пусть остаётся ниже 01000 там, где его установила вызывающая прога. Если мы что-то повредили, из-за чего монитор будет некорректно работать, восстановить.

    Можно ли пользоваться EMT'ами? Конечно, никаких препятствий для этого нет, кроме того, что вызовы EMT на всех моделях БК различны. Поэтому предлагаю если пользоваться ими, то делать это надёжно, с точным знанием на какой модели мы сейчас работаем.

    5. Ну и надёжный способ определения какая у нас модель БК. Если на 11 (без М) можно забить, то давайте забьём. Я вообще узнал про столь кардинальные различия между 11 и 11М с большим удивлением - раньше думал, что они совместимы.

    С векторами, насколько я понял, можно организовать фоновый буферизованный опрос клавы? Я ещё думаю, понадобится ли он мне, но, скорее всего, нет. Так что если можно без векторов, обойдёмся без них.

    Чтобы с чего-то начать, наводящий вопрос: что делает mov #16000,@#177716 ?

    Кстати, решение этой задачки в коде позволит нам иметь заготовку для программирования под БК-0010, 0011 и 11М на Си (GCC) и Обероне. Всё, что нам удастся сделать, будет выложено на гитхабе для общего доступа.

  4. #3

    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,246
    Спасибо Благодарностей отдано 
    498
    Спасибо Благодарностей получено 
    557
    Поблагодарили
    436 сообщений
    Mentioned
    42 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    различия между 11 и 11М
    Различия железа косметические - набор ПЗУ от 11М пойдет и на БК11 без "М". Кроме номера экрана и бита запрета кнопки Стоп - грамотные господа, уточните пожалуйста.
    *
    Почему так вышло ?
    Потому как 11 без "М" делалась как расширение БК0010, с его ЕМТ16 и др. наследством. Но нормального сбыта не получила, т.к. тогда ( 1988 - 1989 г. ) еще небыло "эффективных менеджеров" ( по Русски - барыг ), которые бы окучили бы каждые "Радиотовары", хотя бы в Москве.
    А потом, с моим приходом в 1988 г. в ОКБ Э., вдруг внезапно руководство поняло, что БК0010 - отстой, надо равняться на ДВК и в частности КЦГД/КСМ с его ESC последовательностями, и нормализовать таки клаву по образцу и подобию УКНЦ ( МС7008 ) - чем и пришлось заниматься, или скорее помогать процессу.

    Как отличать 10/11 - по чтению РНП, 100ххх - 10, 140ххх - 11, хххххх - загадочная хрень ( ДВК ? ).
    Как отличить 11 от 11М - по к/с ПЗУ на 140000 адресе, или его фрагменту.
    Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения MMTEMA@MAIL.RU

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

    Oleg N. Cher(29.11.2021)

  5. #4

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

    По умолчанию

    С вот таким инициализатором работает БК10 и 11, а 11М всё равно вылетает. Что здесь неправильно? В монитор не выхожу (вообще никуда не выхожу, зацикливаю прогу в конце).

    Код:
    void Basic_Init (void)
    {
      asm("\
            CMPB  @$0177717, $0200    \n\
            BEQ   L0010               \n\
            MTPS  $0340               \n\
            MOV   $016000, @$0177716  \n\
    L0010:"
      );
    } // Basic_Init
    P.S. Да, CMPB @#177717, #200 это конечно плохой способ проверить наличие 11М (срабатывает и для 11), но пока вчерновую проверяю хотя бы на наличие БК10. Здесь в теме уже было сказано много полезного теоретического материала, но я очень с трудом понимаю как это реализовать в коде. Даже непонятно как работает команда MTPS #340 (пока предположу, что она запрещает все прерывания). Но тогда почему прога подвисает и не выполняется до конца на БК11М?

    Test_v0.2.zip

  6. #5

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

    По умолчанию

    Вообще-то в таких случаях принято прикладывать исходники. Никто не будет возиться с дизассемблированием, чтобы понять, что это такое.

    А так -- у меня в эмуляторе оно работает. Что в режиме 0010, что 11М показывает червового туза и зацикливается.

    Да, MTPS #340 запрещает прерывания. Для опроса клавиатуры прерывания не обязательны.

  7. #6

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

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    Вообще-то в таких случаях принято прикладывать исходники. Никто не будет возиться с дизассемблированием, чтобы понять, что это такое.
    Я бы приложил и это вообще не проблема, но в них вряд ли кто-то разберётся. И вряд ли кто-то захочет. К тому же, исходники частично на Обероне. И юзают библиотеки. В общем, там сложновасто.

    Но что я счёл нужным дать - то дал. Процедуру инициализации. Вот она-то самая ключевая. Остальной код просто работает с экраном, не вызывая никаких EMT и не юзая ячеек-регистров.

    Цитата Сообщение от Sandro Посмотреть сообщение
    Что в режиме 0010, что 11М показывает червового туза и зацикливается.
    В эмуле GID'а в режиме "БК-0011М + МСТД" баг выглядит так:


    Иногда не рисуется масть, только голая рамка карты.

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

    Но ведь не глюк эмуля это?

    Test_v0.3.zip

  8. #7

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

    По умолчанию

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

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

    PS: И не надо думать, что Оберон -- это тайна за семью печатями. Я, например, его знаю. Просто не использую. Все мои задачи гораздо лучше решаются на других языках.

  9. #8

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

    По умолчанию

    Для проверки 11 или 10 нужно CMPB #300,@#177716
    Ну и я бы сделал вот так

    Код:
    Программа инициализации и распознания БК
    		MOV		#1000,SP					;Устанавливаем границу стека
    		MOV 	@#4,-(SP)					;Заносим содержимое вектора 4 она нам понадобится
    		RES									;Блокируем клавиатуру - можно и по другому через регистр 177660		
    		CMPB	#300,@#177717				;Проверяем какая машина 10 или 11х
    		BNE 	        BK10						;Если 10 то переходим к 10ке
    		MOV 	#16000,@#177716				;Устанавливаем страници 5:7
    		MOV 	#40000,@#177662				;Включаем палитру БК0010
    		CMP 	        @#140454,#140502			;Проверяем а вдруг не БК11м
    		BEQ		BK11M						;Если 11м то идем туда
    		BR		BK11						;Ну а если не 11м то тогда точно 11 идем туда
    BK10:	MOV 	#EXIT,@#4					;А вот и понадобился 4 вектор и он тут нам очень поможет
    		MOV		@#100000,@#100000			;Ну а теперь попытаемся чего нибудь записать если ПЗУ то нас выкенит по 4ому вектору и будет ясно что 10ка
    		BK		SMK							;Запись в этот адрес все таки удалась значит это СМК64/512 и он отключил ПЗУ 10ки и с этим что то нужно делать
    EXIT:	MOV		(SP)+,@#4                                        ;Возвращаем 4 вектор на место как и было 
    		JMP		@#START                                          ;Запуск основного тела программы
    bk11M:	...
    		...									;Здесь все то что не обходимо сделать для 11м и затем перейти на метку EXIT для востановления вектора 4
    		...
    		EXIT
    BK11	...
    		...									;То же самое что и чуть выше
    		...
    		EXIT
    SMK:	...
    		...									;Тут мы выполняем действия связаные с СМК64/512 если все таки мы сюда попали.
    		...
    		EXIT
    		.END
    Ну как то так

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

    Oleg N. Cher(30.11.2021)

  10. #9

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но ведь не глюк эмуля это?
    Не глюк. Фича.
    Мне никогда не приходило в голову загружать программы из монитора БК11М и я даже не обращал на это внимание никогда. Но действительно в конфигурации БК11М стек инициализируется числом 2000, не зависимо, есть блок МСТД или нету. ЕСЛИ выйти из бейсика в монитор.
    Но если как Sandro, не дать запуститься бейсику, то стек будет инициализирован числом 01000.
    Команда запуска G в стек ничего не помещает, т.е. на начале программы по адресу 1000, значение SP==02000. Это можно увидеть просто поставив в эмуляторе точку останова.
    Поэтому проблема решается тремя способами:
    1. загружать .bin файл вручную, как сделал я, но перед запуском вручную же инициализировать стек нужным числом.
    2. подредактировать файл скрипта загрузки .bin файла bk11m_load.bkscript, просто добавить туда одну строку:
    Код:
    |#MO
    |#|0|1L|2
    R6/1000
    G
    3. В своей программе, самым первым делом писать команду mov #1000,SP.

    Кстати, тест 02 и тест 03 вполне работают на БК11М.

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

    Oleg N. Cher(30.11.2021)

  11. #10

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,716
    Спасибо Благодарностей получено 
    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 - для разработки это полезная штука. А мало какие эмули БК так умеют.

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 250
    Последнее: 22.12.2025, 12:40
  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

Ваши права

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