Microsoft раскрывает код легендарного BASIC 6502, с которого началась эпоха Гейтса

Microsoft в своем блоге объявила об открытии исходного кода своей первой версии BASIC для MOS 6502, который 48 лет существовал лишь в виде музейных экспонатов и неофициальных копий. Теперь он опубликован под свободной лицензией и доступен на GitHub для изучения.

Microsoft BASIC появился в 1975 году, как самый первый продукт компании для Altair 8800 на базе Intel 8080. Код написали основатели "мелкомягких" Билл Гейтс и Пол Аллен.

Всего через год Билл Гейтс и Рик Вейланд перенесли BASIC на микропроцессор MOS 6502. В 1977 году Commodore выкупила лицензию за 25 000 долларов и встроила его в свои системы PET, VIC-20 и Commodore 64. Последние два были раскуплены миллионными тиражами и способствовали массовому распространению домашних ПК.

В открытый доступ выложена версия 1.1 (1978 года), где учтены доработки, предложенные инженером Commodore Джоном Фигансом и самим Биллом Гейтсом.

В устройствах Commodore PET этот вариант был известен как BASIC V2. Код содержит 6 955 строк на ассемблере. Именно он опубликован на GitHub под лицензией MIT, позволяющей модифицировать и перепродавать его без ограничений.

@wilelf
05.09.2025 08:25 UTC
Первоисточник

Комментарии

@PerroSalchicha
05.09.2025 03:45 UTC
+2

В устройствах Commodore PET этот вариант был известен как BASIC V2. Код содержит 6 955 строк на ассемблере. Именно он опубликован на GitHub

...
REALIO=4
...
IFE	REALIO-4,<DT"APPLE BASIC V1.1">
...

А вообще, любопытная штука, в том плане, что в одном ассемблерном исходнике прошиты условия для того, чтобы он работал на пяти разных физических машинах и на одном эмуляторе.

@wilelf
05.09.2025 03:46 UTC
+2

А ещё там полный набор операторов BASIC, поддержка массивов, работа со строками, арифметика с плавающей запятой, ввод-вывод и многое другое.

05.09.2025 04:02 UTC
+7

А ещё там полный набор операторов BASIC

Ну, в исходниках интерпретатора BASIC это хотя бы не сюрприз :)

@vadimr
05.09.2025 04:50 UTC
+13

Трюк, применённый в макросах SKIP1 и SKIP2, в своё время произвёл на меня очень глубокое впечатление. Это коды двухбайтовой и трёхбайтовой команд соответственно, которые предназначены для того, чтобы проигнорировать следующие за ними однобайтовую или двухбайтовую команду, которая в таком случае становится адресной частью некой фиктивной инструкции. Это позволяет сэкономить 1 байт по сравнению с использованием команды перехода.

Вообще-то этот код Бейсика (дизассемблированный) в то время программисты учили чуть ли не наизусть, так как он был прошит в ПЗУ и его части можно было использовать в своих программах, экономя память. Памяти было в 8-разрядных компьютерах очень мало, а код коммерческого качества можно было писать только на ассемблере.

У меня до сих пор лежат распечатки дизассемблера этого кода, исписанные моими примечаниями.

@achekalin
05.09.2025 05:44 UTC
+2

Тогда Майкрософт (в лице очень конкретных персоналий) умел писать код, причем не брезговал его не только продавать, но и - улучшать!

А что опубликовали - молодцы! Лучше поздно (потому что желающие, как правильно было замечено, уже изучили его вдоль и поперёк), но хотя бы официально открыли, так что его спокойно в образовательных целях можно использовать.

Иногда задумываюсь, во что бы превратился ит-ланшафт сегодня, умудрить тогдашние инженеры в крохотные килобайты ПЗУ запихнуть какой-нибудь Пайтон. Или, наоборот, останься мы все тогда на Форте, который шёл в одну из версий БК-0010 )

05.09.2025 06:28 UTC
+2

Ландшафт остался бы примерно таким же. Компаниям нужен готовый продукт, как можно быстрее и, как можно дешевле. Так что, в конечном итоге, появились бы языки аналогичные Pascal, Python, Java etc...

05.09.2025 06:34 UTC
0

Форт на БК встречал только в виде подключаемого картриджа.

@Neusser
05.09.2025 06:22 UTC
+12

Дата коммитов -- 27 июля 1978.

The source code includes detailed revision history showing active development:

  • July 27, 1978: Fixed critical bugs in FOR loop variable handling and statement parsing

  • July 1, 1978: Memory optimization and garbage collection improvements

  • March 9, 1978: Enhanced string function capabilities

  • February 25, 1978: Input flag corrections and numeric precision improvements

  • February 11, 1978: Reserved word parsing enhancements

  • January 24, 1978: User-defined function improvements

@iliasam
05.09.2025 06:51 UTC
+2

Странно, что Altair BASIC на Github не выложили, официально выложен в виде PDF: https://images.gatesnotes.com/12514eb8-7b51-008e-41a9-512542cf683b/34d561c8-cf5c-4e69-af47-3782ea11482e/Original-Microsoft-Source-Code.pdf

@tormozedison
05.09.2025 19:49 UTC
+2

Тоже удивлён. GW-BASIC ранний для x86 выложили, теперь и Бейсик для 6502 выложили, а с Altair Basic - тянут и тянут.