1 Отредактировано garnizon (27-03-2023 02:10)

Тема: Отличия Бейсиков

Мы знаем что Агат-бейсик ведет свою родословною от Apple-бейсик, но имеет кучку изменений. И вот эта "кучка" нигде толком не запечатлена. Хоть вот списком кратким.
Речь о бейсиках от НИИВК. Сириус, bio и master не в счет.

- бейсик-60  (Фг. 00003-01)

- бейсик-67  (Фг. 00012-01)

- бейсик-икп (Фг. 00035-01)

На эти мысли навел абзац и статьи Кривцова:

Реализация Бейсика появилась на «Агате» в 1982 г. и предназначалась в первую очередь для разработки тестового обеспечения производства ПЭВМ и ее приемки. Для решения этих задач в реализации Applesoft ПЭВМ "Apple II+", взятой за основу, были заменены блоки текстового и графического вывода, добавлены средства ассемблирования и отладки программ на машинном языке, В интересах мнемоничности ассемблерного текста введены идентификация имен переменных по неограниченному количеству символов и шестнадцатеричные константы. В течение 1983-1984 гг. принципиальных изменений в версию не вносилось, и с началом серийного производства ПЭВМ она получила широкое распространение. Сейчас Бейсик-60 (объем файла, содержащего интерпретатор этой версии,- 60 секторов) продолжает поставляться. Некоторые программы (в том числе «Шахматы», «Шашки» и ряд других игр) содержат ссылки на адреса интерпретатора и не могут работать с другими версиями. В 1985 г. при подготовке к передаче в Государственный фонд алгоритмов и программ версия была переработана с учетом замечаний, выявленных при эксплуатации машин опытной партии, и, естественно, в соответствии с аппетитами разработчиков. Был заменен блок редактирования программы (появилась возможность контекстного поиска и замены участков программы по директиве LIST), введен блок хранения данных на внешнем запоминающем устройстве (директивы STORE, RECALL, CHAIN), серьезно переработана документация. Результат этих усовершенствований называется СП «Бейсик» Фг. 00012-01, имеет объем 67 секторов, передан в ГосФАП [2] и поставляется в виде комплекта документации и записанного диска Таллинским научно-учебным центром (туда с гарантийным письмом можно обратиться по адресу: 200026, Таллин, бульвар Кадака, 165, директору ТНУЦ В. И. Коваленко). Следующая версия будет содержать средства обмена по локальной сети, работать со строчными и прописными буквами, поддерживать накопитель на гибких дисках повышенной емкости и поступит на тиражирование в 1988 г. Соответствие основных точек входа интерпретаторов Бейсика-60 и Бейсика-67 предполагается опубликовать в ближайших номерах ИНФО; для программ, не содержащих кодовых обращений к интерпретатору, версии полностью совместимы. В составе программного обеспечения 36-часового курса переподготовки по информатике распространена версия Бейсика-60 с «быстрым» ДОСом, разработанная перспективной московской фирмой ALV SOFTWARE (АLександр Голов & Vасилий Березутский недавно окончили школы и работают в компьютерном центре ЛЭМЗ и НИИ ШОТСО).


Давайте попробуем собрать весь список? можно начать с RIBBON=x, на эпл точно такой нет, ведь текст у него ч/б.

2

Re: Отличия Бейсиков

И описание этой "кучки", возможно, поможет адаптации программ от одного Бейсика к другому.

3

Re: Отличия Бейсиков

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

ribbon= и ещё куча операций - это всё, что в первом сообщении называется  "были заменены блоки текстового и графического вывод". Включая поддержку спрайтов.

К ассемблеру я бы ещё добавил возможность использования HEX-констант в теле программы (в Apple-бейсике этого нет).
Причем вроде бы есть какая-то тонкость с ними, вроде того, что в ИКП-бейсике их можно также использовать в операторе READ, а в Basic-60 ещё было нельзя (только в выражениях).

4

Re: Отличия Бейсиков

Интересно, а как вообще проводилась доработка бейсика, ведь наврятли в распоряжении отечественных программистов был исходный код applebasic'а.

5 Отредактировано Voldemar0 (29-03-2023 12:26)

Re: Отличия Бейсиков

Судя по тому, что мы видим и слышим: дизассемблировали, но не слишком основательно.

Т.е. дизассемблированные варианты у нас есть в коллекции, но они как бы не выглядят так, что можно прямо в любое место что-то вставить или удалить и всё гарантированно соберётся в работоспособный код. Есть вероятность, что у нас какие-то не последние версии в исходниках. Комментариев развесистых там нет. Описания архитектуры нет. Как-то так выглядит:

          STX X1
          LDX SHPTR
          LDY SHPTR+1
L3297     RTS
L3298     JMP AYINTF
DODRAW    JSR L3259
          JMP DRAW
DOXDRAW   JSR L3259
          JMP XDRAW
L32A7     JSR GETBYT
          STX $DF
          TXA
          JSR L32BF
          LDA #$2C
          JSR SYNCHR
          JSR GETBYT
          TXA
          JSR L32BF
          LDX $DF
          RTS
L32BF     PHA
          LDA L32DC
          CMP $D2

Т.е. тут есть и слегка осмысленные имена (GETBYT - взять байт. Но откуда ?) и явно "цифровые" Lxxx метки и совсем уж неуместные константы ($D2, $DF хотя в начале файла есть символические объявление части ячеек zeropage).

Глубоко вникали в тему Кривцов (или кто делал первый basic-60?), за ними исторически шла ALV (Голов и компания - это ALV Basic), потом снова Кривцов (когда пилился ИКП-Бейсик), потом, видимо, Илья Волков (Biobasic) и за ним Серков (Master Basic).
Плюс были несколько небольших форков, вроде эстонского бейсика (форк от b-60), были со всякими встроенными плюшками (автонабор ключевых слов, перенумераторы строк...) - это тоже, в основном, от b-60. И несколько вариантов ИКП-бейсика с немного перетасованными регионами памяти, с немного по разному работающими строковыми переменными (возможно, это всё версии от Кривцова).

Не так давно (в этом веке) было сообщение (где-то в теме про ошибку функции VAL, кажись), что Серков и тот не владел темой на 100% - т.е. он копал бейсик, но не весь: лазил только в интересующие его темы, не пытаясь в целом всё прошерстить.

Тяжелая это штука, всё таки.
Когда я в 90-е пытался докопаться до RWTS 140ки и получить полностью понятный переносимый компилируемый код, то на разбор автоматически дизассемблированного листинга у меня ушло несколько недель. А кода там было - где-то 4 кб всего, а не 15, как в бейсике. Да и алгоритмы в RWTS попроще (чем какая нибудь арифметика с плавающей точкой).

На полный разбор DOS меня вовсе не хватило, хотя я пытался это сделать. Но эту задачу хорошо решили авторы книги "Под яблоней DOS", которая нам уже несколько раз встречалась в коллекциях.

6 Отредактировано Voldemar0 (29-03-2023 13:01)

Re: Отличия Бейсиков

Я почему сказал во втором сообщении, что попытка описать различия - работа большая: есть куча версий, а есть куча отличий в разных местах. И полагаю: больше всего отличий где-то "под капотом". Но нет номеров версий, указанных где-то в телах интерпретаторов.

Например, в чём существенная разница между ИКП-Бейсиком и Basic-60: basic-60 был быстрым решением для семёрки. По программной архитектуре памяти семёрка ещё как-то похожа на apple, девятка же ушла совсем в сторону. Пилить некий basic-60 под девятку было бы совсем не логично. Введение расширений для файловой системы 840к уже достаточно существенно ломало эпловскую ДОС и, вероятно, Кривцов, понимая это, выбил время или рессурсы для того, чтобы всё таки получить какой-то исходник бейсика и дос, который можно будет патчить не по бинарнику, а как-то более-менее с использованием компилятора ассемблера. Это позволило ему сделать главное: 1) Он перетасовал используемые блоки памяти так, чтобы освободить больше непрерывного места под бейсик-переменные и бейсик-программы и 2) Он получил некий код, который относительно легко мог быть скомпилирован как на семёрку так и на девятку. Ну или расчитывал его получить (я так до сих пор и не знаю, общая кодовая база у семёрочного и девяточного ИКП-бейсика или нет?)

Это отличие между b-60 и икп-басик фундаментальное (вынос тела ДОС из региона 9600.bffff куда-то в d000.ffff), хотя и не слишком заметное для небольших школьных программ. Так вот важно оно или нет для составления списка ?

Потому что если ограничиться, например, только отличиями в синтаксисе языка, то там разница есть, но не большая.

Некоторые фичи есть, связанные с расширением знакогенератора. Из-за этих фич проги с b-60 могут не работать с икп-бейсиком и наоборот. Причем в описании транслятора это никак не отражено. Что возвращает функция ASC ? Код символа. А угадайте - какой он будет в данном случае: ASC("A")  ? Или попробуйте в b-60 вывести линстинг проги, которая в строковых константах использует строчные буквы.
Будет сюрприз :)

Нужно ли перечислять ошибки, если они исправлены в каких-то версиях ? Это же тоже отличия.