[Перевод] 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 и запустить из командной строки.
С правой стороны установлен дисковод. Без картриджа с игрой BBG загружается с дискет.
BBG Floppy 1 имеет 512 Кб ОЗУ и 32 Кб видеопамяти.
В случае с BBG98 слот для картриджей удален, и для любой загрузки используются дискеты или встроенное ПЗУ (ROM объемом 2 Мб, который содержит некоторые часто используемые утилиты и файлы). При загрузке с внутреннего ПЗУ вы получите приглашение DOS вида C:\> (на самом деле будет загружена BBG-Win, Windows-подобная графическая операционная система).
BBG98 предлагает более богатые спецификации. Изначальный объем ОЗУ 1024 Кб, графической памяти — 256 Кб. Память можно увеличить с помощью планки SIMM на 30-контактов.
В основном программное обеспечение и утилиты, написанные для BBG-Floppy 1 и BBG98, совместимы между собой. Тем не менее, учитывая, что BBG98 поддерживает до 8 МБ ОЗУ (с помощью emm386.cmd, чтобы использовать дополнительную память), некоторые программы, написанные специально для BBG98, могут быть несовместимы с BBG Floppy 1.
Большая часть программного обеспечения, написанного для обоих фамиклонов, по-прежнему использует Ассемблер для 6502, который выглядит как-то так.
BASIC (первая версия, каждый оператор должен сопровождаться номером строки).
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 — удобная утилита для просмотра списка всех файлов и папок на диске с помощью графического интерфейса. Вы можете перемещаться по файлам и папкам, запускать такие операции, как копирование, перемещение, удаление.
Ассемблер 6502 может работать непосредственно на 8-битной BBGDOS, что очень круто. Вы можете разрабатывать программное обеспечение без покупки дорогого ПК.
На момент выхода приставки дискета вместе с руководством по разработке (на китайском языке по программированию 6502 на BBGDOS) стоила 98 юаней, что для большинства семей считалось весьма недешево.
Можно заметить много общего между вызовами функций BBGDOS (в ассемблере 6502 нет концепции прерываний) и прерываниями MS-DOS. Например, 0-функция и прерывание для BBGDOS и MSDOS соответственно вернут в командную строку ОС.
Без наличия int в MS-DOS BBGDOS будет использовать jsr для вызова подфункции. А rts используется для возврата к коду основной функции.
Например, следующий код на Ассемблере (приведен в руководстве по разработке) рисует прямоугольник на экране в точках (0, 8) и (40, 80).
Фамиклоны от BBG не имеют встроенной батареи для CMOS, поэтому каждый раз по ходу загрузки системы дата и время устанавливаются на 12:00 14 сентября 1996 года.
С помощью команды bbgcdos вы можете запустить BBGCDOS, китайскую версию BBGDOS.
8-битный debug.cmd похож на debug.exe на ПК), но только для BBGDOS, что упрощает отладку на BBG.
Утилита для рисования. Аналог Paint (brush.cmd).
dir выглядит вполне профессионально и поддерживает параметры командной строки, такие как /P, /W и /L.
edit.cmd — plain text-редактор для BBG:
Местный аналог Excel — поразительная штука для восьмибитки.
LOGO (аналог Turtle) — это хорошо известный и полезный язык программирования для детей.
ver и vol (конечно, это только вершина айсберга, ведь есть много других команд DOS).
Еще одна полезная программа для обработки текстов — WPS (Word Processing System). Поддерживает редактирование текстов с форматированием. Файлы программы совместимы с аналогами на ПК.
BBG98 и BBG Floppy 1 могут использовать параллельный кабель (известный как DB25) для подключения к ПК. На ПК вы запускаете pcservr.exe, а на BBGDOS — pclink.cmd. Диск на компьютере монтируется как виртуальный C: (или D: на BBG98). Можно удаленно работать с файлами на ПК при помощи BBGDOS.
pclink.cmd выглядит так:
Необычно видеть приглашение 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 так же, как вставляете любой игровой картридж.
Меню с играми выглядит примерно так. Названия игр на китайском перечислены в два столбца.
А файлы на дискете с играми выглядят так: