IPB

Здравствуйте, гость ( Вход | Регистрация )

> эмулятор БК-0011М, нужна помощь
kazamul
сообщение 6.2.2026, 11:34
Сообщение #1


Пользователь
**

Группа: Участники
Сообщений: 16
Регистрация: 22.6.2016
Пользователь №: 34 773



Помню, что в свое время было много отличных эмуляторов под Windows.
У меня Mac, поэтому запустить их нет возможности.
Появилось время, решил написать свой эмулятор на Java.
БК-0010 эмулируется нормально, а с БК-0011М пока проблемы.
Если кто-то сможет глянуть и подсказать, что не так — буду очень признателен.
Могу при необходимости выложить весь код на GitHub.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
SuperMax
сообщение 6.2.2026, 23:16
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 373
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



надо более детальное описание
но основное на что надо смотреть - на сколько корректно эмулируются регистры внешних устройств - тут есть отличия от БК-0010


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kazamul
сообщение 7.2.2026, 7:43
Сообщение #3


Пользователь
**

Группа: Участники
Сообщений: 16
Регистрация: 22.6.2016
Пользователь №: 34 773



Цитата(SuperMax @ 6.2.2026, 11:16) *

надо более детальное описание
но основное на что надо смотреть - на сколько корректно эмулируются регистры внешних устройств - тут есть отличия от БК-0010

да вроде как корректно - я по крайней мере ничего не нашел
вот что мне удалось понять

1. Ядро цикла ожидания (Idle Loop)

Этот участок кода — «сердце» простоя. Процессор разрешает прерывания, ждет одну инструкцию и снова запрещает их, чтобы проверить флаги.

Код
PC=0147600: MTPS #00    ; Разрешить прерывания (Priority 0). Здесь может сработать таймер или клавиатура.
PC=0147604: NOP         ; Пустая операция. Дает "окно" для срабатывания прерывания.
PC=0147606: MTPS #0340  ; Запретить прерывания (Priority 7). Начало критической секции.
PC=0147612: BR 0147574  ; Переход на проверку диспетчера.


2. Вызов диспетчера задач (Polling)

Система прыгает в подпрограмму, чтобы узнать: «Есть ли работа?»

Код
PC=0147572: JSR R7, 0147410 ; Вызов подпрограммы проверки очереди задач.
...
PC=0147412: MOV #041714, R5 ; R5 указывает на структуру данных (очередь задач или буфер).
PC=0147416: TST (R5)+       ; Проверка: есть ли задачи в очереди?
PC=0147420: BEQ 0147456     ; Если 0 (пусто), идем проверять системные флаги.


3. Проверка системных флагов
Здесь проверяется конкретный бит в системной переменной (вероятно, статус клавиатуры или запрос на переключение задач).

Код
PC=0147454: BIT #040000, 040454; Проверка бита 14 в ячейке 040454.
                               ; В БК-0011М это часто связано с флагами консоли или драйверов.
PC=0147462: BEQ 0147544        ; Если бит не установлен (событий нет), уходим на выход.


4. Возврат с неудачей (Nothing to do)
Так как задач нет и флаги чисты, подпрограмма возвращает управление с установленным флагом переноса (CARRY), сигнализируя: «Работы нет».

Код
PC=0147544: SEC     ; Set Carry (Установить флаг C).
PC=0147546: RTS R7  ; Возврат из подпрограммы.


5. Переключение контекста (Overlay/Paging)

БК-0011М имеет страничную организацию памяти. Код по адресу 0142xxx — это системный код (скорее всего, в ПЗУ или скрытой странице ОЗУ), который управляет переключением страниц.

Видно активное взаимодействие с регистром управления памятью:

Код
PC=0142536: MOV @#0114, @#0177716; Восстановление страницы памяти (запись в регистр управления страницами 177716).
...
PC=0142400: MOV #054002, @#0177716; Включение системной страницы памяти (054002 — управляющее слово).


Что происходит в блоке 0142xxx:
  1. Сохранение регистров: MOV R0...R5, -(R6) — все регистры сохраняются в стек.
  2. Переключение страницы: Система подменяет кусок памяти, чтобы выполнить код ядра или драйвера.
  3. Выполнение системного вызова: JSR R7, @0160 (вектор EMT/Trap).
  4. Восстановление: Так как диспетчер вернул SEC (работы нет), система восстанавливает старую страницу памяти (MOV @#0114, @#0177716), восстанавливает регистры из стека и делает RTT (Return From Trap).


Итог
холостой ход (Idle Loop) БК-0011М.
  1. Процессор открывает прерывания (NOP).
  2. Если прерываний нет, он вызывает тяжелую процедуру диспетчера.
  3. Диспетчер сохраняет контекст, переключает страницы памяти (177716), проверяет ячейки 041714 и 040454.
  4. Ничего не находит.
  5. Восстанавливает контекст и страницу памяти.
  6. Возвращается к пункту 1.

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
kazamul   эмулятор БК-0011М   6.2.2026, 11:34
kazamul   в принципе проблема вот в чем - я загружаю конфигу...   6.2.2026, 11:57
SuperMax   надо более детальное описание но основное на что н...   6.2.2026, 23:16
kazamul   надо более детальное описание но основное на что ...   7.2.2026, 7:43
kazamul   надо более детальное описание но основное на что ...   7.2.2026, 7:44
kazamul   могу подтвердить что 041714 это кольцевой буффер к...   8.2.2026, 7:27
kazamul   у меня есть подозрение что я не правильно делаю сб...   9.2.2026, 10:02
SuperMax   у меня есть подозрение что я не правильно делаю с...   9.2.2026, 10:22
kazamul   спасибо ссылка на 11 а не на 11М   11.2.2026, 7:33
SuperMax   спасибо ссылка на 11 а не на 11М 11М в той же т...   11.2.2026, 15:04
kazamul   ну что - небольшое обновление - уже почти все рабо...   22.2.2026, 11:33
SuperMax   ну что - небольшое обновление - уже почти все раб...   23.2.2026, 12:44
kazamul   супер! могу предоставить поддомен на [url=htt...   24.2.2026, 10:34
kazamul   диск вроде тоже починил - andos и mkdos грузятся н...   25.2.2026, 11:24
SuperMax   диск вроде тоже починил - andos и mkdos грузятся ...   25.2.2026, 22:26
kazamul   а тогда такой вопрос - что в БК11М происходит когд...   28.2.2026, 14:18
SuperMax   а тогда такой вопрос - что в БК11М происходит ког...   28.2.2026, 23:42
kazamul   важный момент - обычная RT11 на БКшке не пойдет -...   1.3.2026, 8:14
kazamul   важный момент - обычная RT11 на БКшке не пойдет -...   1.3.2026, 9:40
kazamul   CSI dos так-же не работает - вообще не понимаю что...   8.3.2026, 9:36
SuperMax   трейс бы дабы посмотреть что выполняется и где па...   9.3.2026, 13:02


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 1.4.2026, 23:48