[Перевод] BBGDOS — аналог MS-DOS для NES

BBGDOS была разработана китайской компанией BBG (также известной как BBK или BuBuGao) примерно в 1997 году.

BBGDOS — это 8-битная ОС для процессора 6502. Например, UM6561. BBGDOS очень похожа на MSDOS 3.1 или 3.2. В ней есть команды dir, cd, format, diskcopy, ver, type, copy, del, md, rd, exit, date, time, cls, rem и другие. BBGDOS работает с файлами на дискетах. Папки и файлы могут быть переданы ПК. BBGDOS загружается с дискет из сектора 0, а format /s можно использовать для создания системной дискеты. Есть два фамиклона от BBG, которые поддерживают флоппи-диски. Первый — BBG Floopy 1, второй — BBG 98.

BBG Floopy 1 имеет слот для игрового картриджа (так что вы можете играть в традиционные 8-битные игры для NES). Игры из файлов *.nes можно позже легко преобразовать в файлы игрового формата *.GAM и запустить из командной строки.

6d1d397fa22a379c525d013efc6311aa.jpg

С правой стороны установлен дисковод. Без картриджа с игрой BBG загружается с дискет.

f8cf498367f697721b23c62f5e8e6fc9.jpg

BBG Floppy 1 имеет 512 Кб ОЗУ и 32 Кб видеопамяти.

f79509e8b6bb4a5f5d09e71c42556eea.jpg

В случае с BBG98 слот для картриджей удален, и для любой загрузки используются дискеты или встроенное ПЗУ (ROM объемом 2 Мб, который содержит некоторые часто используемые утилиты и файлы). При загрузке с внутреннего ПЗУ вы получите приглашение DOS вида C:\> (на самом деле будет загружена BBG-Win, Windows-подобная графическая операционная система).

80b322f138719974c145a51922a43d4d.jpg

BBG98 предлагает более богатые спецификации. Изначальный объем ОЗУ 1024 Кб, графической памяти — 256 Кб. Память можно увеличить с помощью планки SIMM на 30-контактов.

e1cc3092bd400a630c8825ff42ca69d1.jpg72ff25d2c525172a2924f7adc9eccca7.jpg

В основном программное обеспечение и утилиты, написанные для BBG-Floppy 1 и BBG98, совместимы между собой. Тем не менее, учитывая, что BBG98 поддерживает до 8 МБ ОЗУ (с помощью emm386.cmd, чтобы использовать дополнительную память), некоторые программы, написанные специально для BBG98, могут быть несовместимы с BBG Floppy 1.

Большая часть программного обеспечения, написанного для обоих фамиклонов, по-прежнему использует Ассемблер для 6502, который выглядит как-то так.

4d3e6e40f317323772a4c991a115ce21.jpg

BASIC (первая версия, каждый оператор должен сопровождаться номером строки).

d2e1f6a9ce6b0350c9a5c3bd8fbbd3b8.jpg

BBG-BASIC первого поколения не является языком структурированного программирования из-за обязательного номера строки. А имена строковых переменных должны заканчиваться знаком доллара, иначе они будут рассматриваться как числовые значения.

10 s$ = "Hello from BBG-Basic"
20 print s$

Существует 3 версии BBG-BASIC: 1.0, 2.0 и 2.1. Версия 2.1 содержит интерактивную справочную систему, которая называется help.cmd. Он имеет много расширенных ключевых слов и функций, таких как def fn, которая похожа на лямбда-функцию (см. пример кода ниже). Call для вызова подпрограммы и т. д. inkey позволяет проверять, нажата ли клавиша. Circle рисует круг или эллипс, а dot — пиксель.

10 def fn fc(x)=10*x*x+5*x-2
20 print fn fc(5)
30 end

BBG File Manager — удобная утилита для просмотра списка всех файлов и папок на диске с помощью графического интерфейса. Вы можете перемещаться по файлам и папкам, запускать такие операции, как копирование, перемещение, удаление.

c6611c34222da5727aa2908079d9bbed.jpgf69848f6bd7c0208e902ea2ca938684e.jpg

Ассемблер 6502 может работать непосредственно на 8-битной BBGDOS, что очень круто. Вы можете разрабатывать программное обеспечение без покупки дорогого ПК.

b7b9cf9d5de9898a4b9a9a46068065b4.jpg

На момент выхода приставки дискета вместе с руководством по разработке (на китайском языке по программированию 6502 на BBGDOS) стоила 98 юаней, что для большинства семей считалось весьма недешево.

Можно заметить много общего между вызовами функций BBGDOS (в ассемблере 6502 нет концепции прерываний) и прерываниями MS-DOS. Например, 0-функция и прерывание для BBGDOS и MSDOS соответственно вернут в командную строку ОС.

4d6a1efc68b56d09b0acdd60c596faa1.jpg

Без наличия int в MS-DOS BBGDOS будет использовать jsr для вызова подфункции. А rts используется для возврата к коду основной функции.

Например, следующий код на Ассемблере (приведен в руководстве по разработке) рисует прямоугольник на экране в точках (0, 8) и (40, 80).

ba7a44f3fd4915570b6e40ce11bea22b.jpg

Фамиклоны от BBG не имеют встроенной батареи для CMOS, поэтому каждый раз по ходу загрузки системы дата и время устанавливаются на 12:00 14 сентября 1996 года.

b6cc7a63ac42429beafe568db35bf732.jpg

С помощью команды bbgcdos вы можете запустить BBGCDOS, китайскую версию BBGDOS.

f9c893ceab8d0b918517de79c5aed98d.jpg072e4e9e3f4f47d68933bfc34f6399a4.jpg

8-битный debug.cmd похож на debug.exe на ПК), но только для BBGDOS, что упрощает отладку на BBG.

cd7c65320bfe71ff364b365f2b7c53d1.jpg

Утилита для рисования. Аналог Paint (brush.cmd).

acb014e5e879b95703248f99f4c88045.jpg

dir выглядит вполне профессионально и поддерживает параметры командной строки, такие как /P, /W и /L.

8d8aa8af01976e81302604e6f96be4dd.jpg

edit.cmd — plain text-редактор для BBG:

4ab9f72debbeb37d6c238e1927b38f59.jpg

Местный аналог Excel — поразительная штука для восьмибитки.

25eff1a98c99a3be3fbeb9265ec88f92.jpgd26cd4c3c7d78fa7774b7aa59cc63877.jpg

LOGO (аналог Turtle) — это хорошо известный и полезный язык программирования для детей.

582ee41d00ec2ccc02549ac5ddee54fd.jpg

ver и vol (конечно, это только вершина айсберга, ведь есть много других команд DOS).

9151d126038bbcb6a1c50f8163658377.jpg

Еще одна полезная программа для обработки текстов — WPS (Word Processing System). Поддерживает редактирование текстов с форматированием. Файлы программы совместимы с аналогами на ПК.

caf8809f910230b62a784ec3f9ae91f2.jpg

BBG98 и BBG Floppy 1 могут использовать параллельный кабель (известный как DB25) для подключения к ПК. На ПК вы запускаете pcservr.exe, а на BBGDOS — pclink.cmd. Диск на компьютере монтируется как виртуальный C: (или D: на BBG98). Можно удаленно работать с файлами на ПК при помощи BBGDOS.

97dda8bfaa96de176c35d4c2a6dd6a92.jpg

pclink.cmd выглядит так:

f05bdfe3f57b4403d6aa91959c45cc17.jpg

Необычно видеть приглашение C:\> на фамиклоне, не так ли?

BBGDOS выпускался в нескольких версиях.  Это 0.9, 1.0, 2.0, 2.1 и 3.0. В BBGDOS есть четыре типа исполняемых файлов. Первый из которых представляет собой обычный текстовой файл *.BAT, в котором перечислены команды, которые следует выполнять построчно. При запуске BBGDOS будет искать CONFIG.SYS для конфигурирования системы. Например, DEVICE=SB486.kbd, SHELL=COMMAND.CMD и т. д., и будет искать AUTOEXEC.BAT для выполнения команд, перечисленных в файле.

Второй тип — *.CMD, аналогичный *.COM в MS-DOS. Первые два байта *.CMD указывают адрес для выполнения, и все (код и данные) содержится в одном файле (но не более 40 Кб = $FFFA — $6100).

Третий тип — *.EXC, аналогичный тому, что мы имеем сегодня (*.EXE на ПК). Он позволяет использовать разные секции и обычно предназначен для больших программ. Сигнатура для *.EXE на ПК — MZ, однако в BBGDOS подпись для *.EXC — MY.

Последний тип — *.GAM. Файлы *.GAM — это игры для NES (8 бит). Используются файлы *.nes, аналогичные применяемым в эмуляторах. Существует утилита NES2GAM, которая была создана для преобразования форматов *.NES в формат *.GAM. Однако, когда файл GAM запускается из командной строки BBGDDOS для возврата в BBGDOS необходимо перезагрузить приставку.

Существует утилита gamshell.cmd, и, если вы поместите строку shell=gamshell.cmd в config.sys, при загрузке BBGDOS утилита найдет все файлы GAM и отобразит их в меню. И вы сможете начать играть в 8-битные игры для NES так же, как вставляете любой игровой картридж.

Меню с играми выглядит примерно так. Названия игр на китайском перечислены в два столбца.

4fc5a966e48811ab44aa28645f8cfd0a.jpg

А файлы на дискете с играми выглядят так:

bfbe5e66a4cb203926975805546799d9.jpg

© Habrahabr.ru