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

User Tag List

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

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

  1. #11
    Moderator Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    3,708
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    410
    Поблагодарили
    333 сообщений
    Mentioned
    37 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

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

    Oleg N. Cher (29.11.2021)

  3. #12
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,330
    Спасибо Благодарностей отдано 
    1,317
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    68 сообщений
    Mentioned
    0 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

  4. #13
    Activist Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    290
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  5. #14
    Member
    Регистрация
    27.01.2020
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    60
    Спасибо Благодарностей отдано 
    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
    Ну как то так

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

    Oleg N. Cher (30.11.2021)

  7. #15
    Member
    Регистрация
    18.01.2021
    Адрес
    п. Новый Ургал
    Сообщений
    108
    Спасибо Благодарностей отдано 
    24
    Спасибо Благодарностей получено 
    57
    Поблагодарили
    23 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    Не сбивай людей с толку
    Монитор 11М вообще ставит стек на 44000. В своей 7 странице. А пользовательский стек он ставит, как и принято, на 1000.
    Инфа из телеграм-канала "БК0010/11М World":
    Раз
    Два
    Блог проекта "The Goonies для БК11М"
    БК-0011М, БК-0011М-01, SMK-512, AZ

  8. #16
    Activist Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    290
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    55 сообщений
    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 или что-то около того

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

  10. #17
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,330
    Спасибо Благодарностей отдано 
    1,317
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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


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

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

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

    Test_v0.3.zip

  11. #18
    Activist
    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    431
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    74 сообщений
    Mentioned
    7 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М.

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

    Oleg N. Cher (30.11.2021)

  13. #19
    Activist Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    290
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  14. #20
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,330
    Спасибо Благодарностей отдано 
    1,317
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну смотрите. Мне надо тогда выкладывать среду разработки, включая все скрипты сборки библиотек и прочего. Оно всё сырое и даже пока не закоммичено в Pdp11Dev. Кроме того, опыт показывает, что в этом разбираться никто не будет.

    Так что тут дело далеко не в Обероне, а в тонкостях его трансляции в Си и увязки с утилитами GNU.

    Что касаемо запуска монитора из-под Васика - так это эмуль так делает.

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

    Цитата Сообщение от gid Посмотреть сообщение
    В своей программе, самым первым делом писать команду mov #1000,SP.
    Я, знаете, чего не пойму? Как происходит загрузка кода с адреса 01000, если стек стоит на 02000. Ведь тут-то должно всё закрэшиться. Но хорошо. Допустим, монитор использует свой собственный стек, но когда он запускает пользовательскую программу после её загрузки, то он переключается на стек 02000 и делает, к примеру, JSR PC, 01000 - соответственно, слово по адресу 02000-2 будет испорчено адресом возврата. Ведь куда-то мы возвращаемся, когда делаем RST PC. Так что mov #1000,SP тут не поможет. Пока только предполагаю и удивляюсь, что Вы так уверенно это советуете.

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

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

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

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

Похожие темы

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

Ваши права

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