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)


  1. aik
    01.08.2022 13:11

    А зачем оно было надо? В реальной жизни использовалось или просто «приколись как я могу»?


    1. serenitatis82 Автор
      01.08.2022 13:14
      +5

      Если звезды зажигают...


      1. aik
        01.08.2022 15:56

        Звёзды и по приколу зажигают. Другое дело — когда оно идёт в серию.


    1. Javian
      01.08.2022 15:45

      Дедушка с бабушкой делали подарок не только поиграть, "но и учиться компьютеру", как им продавец советовал.


      1. aik
        01.08.2022 15:55
        +2

        А оно продавалось?

        Я помню сюбор, но, вроде бы, там никакого доса не было — просто картридж с «обучающими» программами прилагался.
        image

        А вот про денди с досом не слышал. Потому и интересно было бы знать, были ли они в реальном использовании или просто по приколу сделали.


        1. Javian
          01.08.2022 20:16

          Google по "BBG-DOS (Famicom Clone)" показывает, что

          I have tons of software that can run on BBGDOS and of course the most useful thing is the development manual that you can write 8-bit 6502 assembly directly on BBGDOS!


          1. aik
            01.08.2022 23:27

            Только всё на одного человека выводит. По крайней мере, в англоязычном интернете. Возможно, в Китае есть коммьюнити, но про него ничего не известно.


        1. Astus
          02.08.2022 01:30
          +4

          И такая приставка действительно помогала 'учиться компьютеру'
          Доса не было, но с такой, если мне память не изменяет, поставлялась обрезанная версия вполне себе Basic'a, плюс прилагалась инструкция-книжечка, где довольно подробно описывались базовые понятия. Я даже на такой «программки» писал, и в целом залипал и экспериментировал. Было реально интересно, и мама была рада, что не только игры эти ваши, но и «программирование».
          Причём когда я добрался до полноценного ПК с Basic'ом — приятно осознавал себя не новичком, благодаря Сюбору.


          1. kalina87
            02.08.2022 12:03
            +3

            на самом деле бейсик там был даж довольно расширенный для 8-биток, были движения спрайтов с анимацией, просто китайцы, писавшие доку, вырезали описание команды PLAY, которая позволяла играть в 4 канала музло параллельно исполнению программы, а ещё команды CALL, позволявшей вызывать подпрограммы на машинных кодах (хотя всякие хардварные фишки можно получить, дёргая порты через PEEK POKE в бейсике)


        1. ernestocruz
          02.08.2022 10:18
          +1

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


        1. ipswitch
          03.08.2022 13:34

          Бейсик был. И рисовалка.

          Нигде не могу найти сейчас, но точно видел рекламу клона Сюбора с дисководом и возможностью копировать игры.


  1. sappience
    01.08.2022 15:52
    +4

    в ассемблере 6502 нет концепции прерываний

    Вообще-то есть https://en.wikipedia.org/wiki/Interrupts_in_65xx_processors
    Но надобности в програмных прерываниях было немного. Их и в 8086/8088 было немного. Просто команда короче, и регистр флагов состояния в стеке автоматом сохранялся.

    Любопытно, в этой приставке точно 6502 был, а не какое-нибудь его развитие? Потому что мегабайт памяти с возможностью расширения, четверть мегабайта видеопамяти (да сколько ж времени такой медленный процессор просто экран закрашивает?), формат исполняемых файлов напоминающий EXE и 6502 (в котором адресуется 64КБ и никаких сегментных регистров нет) этот как-то странно и чертовски неудобно. Переключать странички, оптимизировать расположение подпрограмм так, чтоб межстраничные переходы минимизировать. Ну, вы понимаете.


    1. serenitatis82 Автор
      01.08.2022 18:29

      По этой части я переводил как есть, поскольку сам в матчасти здесь плаваю. Есть общие представления что и как, но детали иногда темный лес. Для меня здесь скорее интересна ОС и сама железка.


  1. nipper
    01.08.2022 16:45

    Интересно, а образы дисков с этой ДОС сейчас найти можно? У меня сходу не получилось или это я искал плохо.


    1. aik
      01.08.2022 16:51

      Автор оригинала пишет, что в природе есть эмулятор, но он денег стоит.


      1. nipper
        01.08.2022 18:09
        +1

        У меня сама железка есть, но досталась она мне безо всего, я до этой статьи не знал про клон доса — думал что дисковод там для игр или сейвов. Теперь стало интересно.


        1. serenitatis82 Автор
          01.08.2022 18:19

          Написал в личку вам


  1. axe_chita
    01.08.2022 19:32
    +1

    Интересная, недописишная дичь. ;) Надо маякнуть об этом на форуме nedoPC.org


  1. masyaman
    02.08.2022 02:26

    Интересно какая совместимость с играми. Там же в картриджах куча всего разного бывало, вплоть до оперативной памяти, которая сохраняла состояние при выключении питания за счет батарейки. На 97 год могли сделать большинство известных мапперов памяти, но сделали ли?

    Судя по скриншоту, размеры .gam файлов в районе 60кб при стандортном размере игры без маппера 40 или 24 кб. Если там условно загрузчик и сама игра, то странно, что у файлов размеры отличаются. Поскольку другой информации нет, то есть вероятность, что никаких сложных игр не поддерживается.

    Интересно как с адресацией памяти разрулили? Сделали какой-то маппер или всё-таки там не совсем 6502?

    И видеоподсистема как устроена? Тайловый задник + спрайты как в nes или есть ещё нормальный графический режим? 256кб видеопамяти намекают, что должно быть что-то, чего нет в nes.


    1. serenitatis82 Автор
      02.08.2022 10:40

      В теории там вполне может быть нормальная совместимость. Если там стоит обычный 6502, то он вполне может поддерживать все что поддерживает обычная NES (скорее тут уместна Famicom). Для большего может стоять какой-то кастомный контроллер или ПЛИС, которая реализует расширенные возможности.

      Вот тут мне кажется явно есть какой-то сокет. И он явно не для 6502. Так что моя теория вполне может быть реальной.


      1. serenitatis82 Автор
        02.08.2022 16:35

        Ан, нет. Это как раз и есть клон 6502 от UMC

        http://водолей-нск.рф/price/dendy/?parts&d=UM6561


      1. masyaman
        02.08.2022 19:14
        +1

        Проблема с поддержкой игр не в процессоре, он-то как раз скорее всего стандартный. Проблема в картриджах и в том, что они аппаратно разные.

        Упрощённо, в картридже адресуется 32кб rom памяти и 8кб видео rom памяти, отсюда 40кб на игру. Для того, чтобы обойти это ограничение используются мапперы. Это такие дополнительные микросхемы внутри картриджа, которые переключают банки памяти, делая доступными разные участки памяти по одним и тем же адресам. Проблема в том, что мапперов много и они работают по-разному.