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 так же, как вставляете любой игровой картридж.
Меню с играми выглядит примерно так. Названия игр на китайском перечислены в два столбца.
А файлы на дискете с играми выглядят так:
Комментарии (22)
sappience
01.08.2022 15:52+4в ассемблере 6502 нет концепции прерываний
Вообще-то есть https://en.wikipedia.org/wiki/Interrupts_in_65xx_processors
Но надобности в програмных прерываниях было немного. Их и в 8086/8088 было немного. Просто команда короче, и регистр флагов состояния в стеке автоматом сохранялся.
Любопытно, в этой приставке точно 6502 был, а не какое-нибудь его развитие? Потому что мегабайт памяти с возможностью расширения, четверть мегабайта видеопамяти (да сколько ж времени такой медленный процессор просто экран закрашивает?), формат исполняемых файлов напоминающий EXE и 6502 (в котором адресуется 64КБ и никаких сегментных регистров нет) этот как-то странно и чертовски неудобно. Переключать странички, оптимизировать расположение подпрограмм так, чтоб межстраничные переходы минимизировать. Ну, вы понимаете.serenitatis82 Автор
01.08.2022 18:29По этой части я переводил как есть, поскольку сам в матчасти здесь плаваю. Есть общие представления что и как, но детали иногда темный лес. Для меня здесь скорее интересна ОС и сама железка.
nipper
01.08.2022 16:45Интересно, а образы дисков с этой ДОС сейчас найти можно? У меня сходу не получилось или это я искал плохо.
axe_chita
01.08.2022 19:32+1Интересная, недописишная дичь. ;) Надо маякнуть об этом на форуме nedoPC.org
masyaman
02.08.2022 02:26Интересно какая совместимость с играми. Там же в картриджах куча всего разного бывало, вплоть до оперативной памяти, которая сохраняла состояние при выключении питания за счет батарейки. На 97 год могли сделать большинство известных мапперов памяти, но сделали ли?
Судя по скриншоту, размеры .gam файлов в районе 60кб при стандортном размере игры без маппера 40 или 24 кб. Если там условно загрузчик и сама игра, то странно, что у файлов размеры отличаются. Поскольку другой информации нет, то есть вероятность, что никаких сложных игр не поддерживается.
Интересно как с адресацией памяти разрулили? Сделали какой-то маппер или всё-таки там не совсем 6502?
И видеоподсистема как устроена? Тайловый задник + спрайты как в nes или есть ещё нормальный графический режим? 256кб видеопамяти намекают, что должно быть что-то, чего нет в nes.
serenitatis82 Автор
02.08.2022 10:40В теории там вполне может быть нормальная совместимость. Если там стоит обычный 6502, то он вполне может поддерживать все что поддерживает обычная NES (скорее тут уместна Famicom). Для большего может стоять какой-то кастомный контроллер или ПЛИС, которая реализует расширенные возможности.
Вот тут мне кажется явно есть какой-то сокет. И он явно не для 6502. Так что моя теория вполне может быть реальной.
masyaman
02.08.2022 19:14+1Проблема с поддержкой игр не в процессоре, он-то как раз скорее всего стандартный. Проблема в картриджах и в том, что они аппаратно разные.
Упрощённо, в картридже адресуется 32кб rom памяти и 8кб видео rom памяти, отсюда 40кб на игру. Для того, чтобы обойти это ограничение используются мапперы. Это такие дополнительные микросхемы внутри картриджа, которые переключают банки памяти, делая доступными разные участки памяти по одним и тем же адресам. Проблема в том, что мапперов много и они работают по-разному.
aik
А зачем оно было надо? В реальной жизни использовалось или просто «приколись как я могу»?
serenitatis82 Автор
Если звезды зажигают...
aik
Звёзды и по приколу зажигают. Другое дело — когда оно идёт в серию.
Javian
Дедушка с бабушкой делали подарок не только поиграть, "но и учиться компьютеру", как им продавец советовал.
aik
А оно продавалось?
Я помню сюбор, но, вроде бы, там никакого доса не было — просто картридж с «обучающими» программами прилагался.
А вот про денди с досом не слышал. Потому и интересно было бы знать, были ли они в реальном использовании или просто по приколу сделали.
Javian
Google по "BBG-DOS (Famicom Clone)" показывает, что
aik
Только всё на одного человека выводит. По крайней мере, в англоязычном интернете. Возможно, в Китае есть коммьюнити, но про него ничего не известно.
Astus
Причём когда я добрался до полноценного ПК с Basic'ом — приятно осознавал себя не новичком, благодаря Сюбору.
kalina87
на самом деле бейсик там был даж довольно расширенный для 8-биток, были движения спрайтов с анимацией, просто китайцы, писавшие доку, вырезали описание команды PLAY, которая позволяла играть в 4 канала музло параллельно исполнению программы, а ещё команды CALL, позволявшей вызывать подпрограммы на машинных кодах (хотя всякие хардварные фишки можно получить, дёргая порты через PEEK POKE в бейсике)
ernestocruz
сюбор который видел я - имитировал рабочий стол виндовс. Собственно только для запуска трех встроенных программ подключалась мышь. Больше ни для чего не использовалась, вроде.
ipswitch
Бейсик был. И рисовалка.
Нигде не могу найти сейчас, но точно видел рекламу клона Сюбора с дисководом и возможностью копировать игры.