Страница ностальгии по БК-0010

Пиктограмма эмулятора, автор Вячеслав Диконов


По традиции считается, что на этой странице размещена всякая информация о ещё не совсем покойном популярном советском и слегка постсоветском бытовом микрокомпьютере БК-0010, известном и за пределами хСССР. БК-0011, при всех своих преимуществах перед БК-0010, всё же не был так же широко распространён, и лично у меня его не было. (УКНЦ - вообще отдельная песня.)


Здесь лежат образы различных прошивок контроллеров FDD и FDD/HDD, как широко известные, так и не очень.

Копия рабочего каталога эмулятора БК-0010/11М для UNIX/Linux находится в стадии приведения в божеский вид. Помощь приветствуется. В версии от 2005.08.26 сделана первая попытка перенести звук под SDL. Качество звука несколько ухудшилось, но зато код компилируется и работает под CygWin. Работающим только под Линуксом пока предлагаю брать предыдущую версию.

Для компиляции нового эмулятора нужно установить не только библиотеки SDL, но и среду разработки (SDL-devel).

Целью является не полировка эмуляции игр (также см. некоторые образы дисков с демонстрационными программами и играми), а реализация стека TCP/IP и запуск HTTP-сервера:
в идеале - на реальной машине, подключенной к компьютеру, доступному извне,

в идеале - по телеграфному каналу (это требует минимума работы с паяльником: RS-232 удовлетворяется сигналами с TTL-уровнями, а входные диоды телеграфного канала не портятся от сигналов от RS-232),
чуть хуже - по параллельному порту (для переключения направления передачи данных потребуются некоторые логические элементы),
ещё чуть хуже - с помощью блока ИРПС (который, строго говоря, не входит в комплект поставки БК-0010(-01), а только в комплект поставки БК-0010Ш), переделанного из токовой петли в RS-232 или ТТЛ-уровни;
не столь интересно - на эмуляторе, с той же градацией предпочтительности способа "подключения".

Стоит, наверное, заметить, что, в отличие от остальных программ, позволяющих запускать программы для БК-0010, мой эмулятор не пользуется практически никакой информацией о системном мониторе - не перехватывает никакие адреса или EMT, а все команды процессора исполняются как положено (разве что при чтении с "магнитофона" запрошенный файл всегда оказывается первым), и поэтому является именно эмулятором, а не симулятором, как остальные.

В соответствии с этим принципом я хочу реализовать дисковый контроллер путём прямой эмуляции, а не перехватом команд, так что любая программа, обращающаяся к портам напрямую, будет работать. (Ноябрь 2006: уже почти.)


Новости

2005, 25 июня:Эмулятор почти работает под Windows XP/Cygwin.

2004, 17 ноября:Реализован AY-3-8910.

2003, 24 октября:Исправлена ошибка, связанная с байтовым обращением к регистру страниц.

2003, 8 октября:Размер образа дискеты определяется динамически.

2003, 6 октября:Введена возможность задания некоторых параметров конфигурации в файле ~/.bkrc.

2003, 2 октября:Чересстрочная развёртка и переключение буферов и палитр на ходу в принципе работают, но точное соответствие интервала времени после таймера и номера отображающейся в этот момент телевизионной строки пока не найдено.

2003, 29 сентября: Первая реализация имитации чересстрочной развёртки.

2003, 28 сентября: Таймер и палитры появились, но быстрое переключение палитр пока не работает.

2003, 25 сентября: Выложена первая версия эмулятора с поддержкой рудиментарного режима БК-0011 (пока без таймера и без палитр)

2003, 14 сентября: Под давлением общественности и для ускорения работы эмулятора я принял решение поступиться этим принципом и начал реализацию поддержки работы с диском путём перехвата команд в дисковом биосе. Работа с магнитофоном тоже будет ускорена таким же способом.

Для продолжения работы над эмулятором, переносом TCP/IP, и просто так разыскиваются:

Если у Вас есть что прислать мне, пожалуйста, напишите мне(не забыв удалить q и x). Спасибо.


На этой странице не будет описания системы команд БК-0010 (LSI-11), потому что оно доступно на многих других страницах. Здесь будут находиться описания специфических для БК-0010 или редкоиспользуемых деталей системы.

Одна из таких редкоиспользуемых деталей - команда MARK.

Другая - нетривиальное использование команды JSR в качестве сопрограммного перехода.

А вот одна специфическая для БК-0010 деталь системы (в данном случае не системы команд, а системы программирования): реализация датчиков случайных чисел в Фокале и вильнюсском бейсике. В Фокале достаточно написать программу, аналогичную бейсиковской

10 CLS
20 FOR I=0 TO 1000
30 PSET (RND(1)*512, RND(1)*240)
40 NEXT
чтобы увидеть регулярные волнистые линии. В бейсике же эта программа ставит точки с виду совершенно хаотически. Но запустите такую программу:
10 CLS
20 FOR I%=0% TO 32766%
30 PSET (RND(1)*256%, RND(1)*240%), RND(1)*3%+1%
40 NEXT
и насладитесь узором , возникающим из-за того, что выбранный алгоритм на самом деле - случайный процесс второго порядка (каждое число зависит только от двух предыдущих).


Полезные ссылки:
© Leonid A. Broukhis, 2003