Инструменты пользователя

Инструменты сайта


msx:vbc:vbc

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:vbc:vbc [2021-09-04 04:15]
brawaga Put misplaced WHILE description on where it looks proper.
msx:vbc:vbc [2023-08-01 13:02] (текущий)
GreyWolf [Ссылки]
Строка 1: Строка 1:
-[====== VBC — MSX–совместимый компилятор BASIC (памяти Егора Вознесенского) ======+====== VBC — MSX–совместимый компилятор BASIC ====== 
 + 
 +Автор: Егор Вознесенский
  
 FIXME FIXME
Строка 32: Строка 34:
 Входной язык представляет собой несколько расширенную версию [[msx:​basic:​]],​ состоящую из ядра и расширенную следующими функциями:​ Входной язык представляет собой несколько расширенную версию [[msx:​basic:​]],​ состоящую из ядра и расширенную следующими функциями:​
   * оператор цикла ''​WHILE … WEND''​ (эквивалентен таковому в IBM–бейсике (BASICA, %%GW-BASIC%%).   * оператор цикла ''​WHILE … WEND''​ (эквивалентен таковому в IBM–бейсике (BASICA, %%GW-BASIC%%).
-  * средства поддержки раздельной компиляции (''​[[#​PROCEDURE]]'',​ расширение оператора ''​[[msx:​basic_programming_guide:​07#​call|CALL]]'',​ совместимость с MSX-C.+  * средства поддержки раздельной компиляции (''​[[#​PROCEDURE]]'',​ расширение оператора ''​[[msx:​basic_dialogue_programming_language:​007#​call|CALL]]'',​ совместимость с MSX-C.
   * опция управления компилятором ''​[[#​PRAGMA]]''​.   * опция управления компилятором ''​[[#​PRAGMA]]''​.
  
Строка 83: Строка 85:
 Компилятор соответствует [[msx:​basic:​]],​ с учётом пп. [[#​n211|1.1]] и [[#​n213|1.3]] и включает в себя: Компилятор соответствует [[msx:​basic:​]],​ с учётом пп. [[#​n211|1.1]] и [[#​n213|1.3]] и включает в себя:
   * математические возможности — полностью;​   * математические возможности — полностью;​
-  * работу с памятью — всё, кроме ''​[[msx:​basic_programming_guide:​01#​erase|ERASE]]'';​+  * работу с памятью — всё, кроме ''​[[msx:​basic_dialogue_programming_language:​001#​erase|ERASE]]'';​
   * графику — полностью [[#​note1|*)]];​   * графику — полностью [[#​note1|*)]];​
   * музыкальные возможности — согласно спецификации PSG [[#​note1|*)]];​   * музыкальные возможности — согласно спецификации PSG [[#​note1|*)]];​
Строка 89: Строка 91:
   * ввод–вывод — полностью,​ с исключениями согласно [[#n213|п. 1.3]];   * ввод–вывод — полностью,​ с исключениями согласно [[#n213|п. 1.3]];
   * управляющие операторы:​ все, добавлен цикл ''​[[#​while|WHILE]]'',​   * управляющие операторы:​ все, добавлен цикл ''​[[#​while|WHILE]]'',​
-  * исключение:​ не определён результат ''​[[msx:​basic_programming_guide:​08#​resume|RESUME]]''​ без параметров;​+  * исключение:​ не определён результат ''​[[msx:​basic_dialogue_programming_language:​008#​resume|RESUME]]''​ без параметров;​
   ​   ​
 Соответствие MSX-2 стандарту:​ Соответствие MSX-2 стандарту:​
Строка 95: Строка 97:
   * системные функции: ​   * системные функции: ​
     * ''​COPY SCREEN''​     * ''​COPY SCREEN''​
-    * ''​[[msx:​basic_programming_guide:07#​gettime|GET TIME]]''​ +    * ''​[[msx:​basic_dialogue_programming_language:007#​gettime|GET TIME]]''​ 
-    * ''​[[msx:​basic_programming_guide:07#​settime|SET TIME]]''​ +    * ''​[[msx:​basic_dialogue_programming_language:007#​settime|SET TIME]]''​ 
-    * ''​[[msx:​basic_programming_guide:07#​getdate|GET DATE]]''​ +    * ''​[[msx:​basic_dialogue_programming_language:007#​getdate|GET DATE]]''​ 
-    * ''​[[msx:​basic_programming_guide:07#​setdate|SET DATE]]''​ +    * ''​[[msx:​basic_dialogue_programming_language:007#​setdate|SET DATE]]''​ 
-    * ''​[[msx:​basic_programming_guide:07#​setbeep|SET BEEP]]''​ +    * ''​[[msx:​basic_dialogue_programming_language:007#​setbeep|SET BEEP]]''​ 
-    * ''​[[msx:​basic_programming_guide:​07#​setadjust|SET ADJUST]]''​+    * ''​[[msx:​basic_dialogue_programming_language:​007#​setadjust|SET ADJUST]]''​
     * ''​PUT KANJI''​     * ''​PUT KANJI''​
   * функции работы с палитрой.   * функции работы с палитрой.
Строка 110: Строка 112:
  
 {{anchor:​note1}} {{anchor:​note1}}
-__//​Примечание://​__ *) — звёздочкой отмечены полностью совместимые с MSX-стандартом разделы,​ в которых имеется,​ однако,​ одно исключение:​ в макроязыке операторов ''​[[msx:​basic_programming_guide:05#​draw|DRAW]]''​ и ''​[[msx:​basic_programming_guide:​06#​play|PLAY]]''​ не определён параметр X (смотри руководство по [[msx:​basic:​]]),​ что обусловлено особенностями работы откомпилированной программы с памятью.+__//​Примечание://​__ *) — звёздочкой отмечены полностью совместимые с MSX-стандартом разделы,​ в которых имеется,​ однако,​ одно исключение:​ в макроязыке операторов ''​[[msx:​basic_dialogue_programming_language:005#​draw|DRAW]]''​ и ''​[[msx:​basic_dialogue_programming_language:​006#​play|PLAY]]''​ не определён параметр X (смотри руководство по [[msx:​basic:​]]),​ что обусловлено особенностями работы откомпилированной программы с памятью.
  
 Функции,​ соответствующие более позднему MSX-стандарту,​ могут быть реализованы на машине более раннего стандарта при условии наличия необходимых аппаратных средств и (или) BIOS. Функции,​ соответствующие более позднему MSX-стандарту,​ могут быть реализованы на машине более раннего стандарта при условии наличия необходимых аппаратных средств и (или) BIOS.
 Например ''​SET SCROLL''​ можно выполнять на всех компьютерах с [[msx:​yamaha_v9938:​yamaha_v9938|V9938]],​ но при этом скроллинг будет только по вертикали. Например ''​SET SCROLL''​ можно выполнять на всех компьютерах с [[msx:​yamaha_v9938:​yamaha_v9938|V9938]],​ но при этом скроллинг будет только по вертикали.
  
-Часть операторов (например ''​[[msx:​basic_programming_guide:07#​setpassword|SET PASSWORD]]''​ или ''​[[msx:​basic_programming_guide:​05#​servideo|SET VIDEO]]''​),​ не реализованы или как не имеющие смысла в откомпилированной программе или как редко употребляемые. Их, при необходимости,​ можно эмулировать соответствующими комбинациями OUT'​ов.+Часть операторов (например ''​[[msx:​basic_dialogue_programming_language:007#​setpassword|SET PASSWORD]]''​ или ''​[[msx:​basic_dialogue_programming_language:​005#​servideo|SET VIDEO]]''​),​ не реализованы или как не имеющие смысла в откомпилированной программе или как редко употребляемые. Их, при необходимости,​ можно эмулировать соответствующими комбинациями OUT'​ов.
  
 {{anchor:​n213}} {{anchor:​n213}}
Строка 122: Строка 124:
 Отходы от стандартов обусловлены оптимизацией получаемого кода и невозможностью реализации части функций в модели компилируемой программы. Эти отходы перечислены ниже: Отходы от стандартов обусловлены оптимизацией получаемого кода и невозможностью реализации части функций в модели компилируемой программы. Эти отходы перечислены ниже:
   * Все функции ввода/​вывода а также внешние функции получают и возвращают параметры только целого типа, например номер записи в операторах GET / PUT должен быть 1…65535;   * Все функции ввода/​вывода а также внешние функции получают и возвращают параметры только целого типа, например номер записи в операторах GET / PUT должен быть 1…65535;
-  * Память под массивы и переменные выделяется 1 раз при компиляции,​ поэтому оператор ''​[[msx:​basic_programming_guide:​01#​erase|ERASE]]''​ не определён,​ ''​[[#​clear|CLEAR]]''​ очищает только строки и файлы и при объявлении массивов для указания размерностей следует использовать ТОЛЬКО константы.+  * Память под массивы и переменные выделяется 1 раз при компиляции,​ поэтому оператор ''​[[msx:​basic_dialogue_programming_language:​001#​erase|ERASE]]''​ не определён,​ ''​[[#​clear|CLEAR]]''​ очищает только строки и файлы и при объявлении массивов для указания размерностей следует использовать ТОЛЬКО константы.
   * Массивы могут быть одномерные или двумерные — это досадное недоразумение,​ которое легко обойти,​ проэмулировав массив большей размерности.   * Массивы могут быть одномерные или двумерные — это досадное недоразумение,​ которое легко обойти,​ проэмулировав массив большей размерности.
   * Типы переменных жёстко связаны с именами. Нельзя,​ например использовать в одной программе A и A$, а также массив с именем,​ совпадающим с именем простой переменной. Подробнее об этом в [[#​n23|главе 3]].   * Типы переменных жёстко связаны с именами. Нельзя,​ например использовать в одной программе A и A$, а также массив с именем,​ совпадающим с именем простой переменной. Подробнее об этом в [[#​n23|главе 3]].
Строка 254: Строка 256:
 === 3.2.3 Функции === === 3.2.3 Функции ===
  
-В математических выражениях можно употреблять функции,​ [[msx:basic_programming_guide:​201#​functions|определённые в MSX]], причём их действие стандартно,​ поэтому здесь будут полно описаны лишь три функции,​ которые можно+В математических выражениях можно употреблять функции,​ [[msx:basic_dialogue_programming_language:​201#​functions|определённые в MSX]], причём их действие стандартно,​ поэтому здесь будут полно описаны лишь три функции,​ которые можно
 употребить не только в соответствии со стандартом. употребить не только в соответствии со стандартом.
  
Строка 401: Строка 403:
 |функция ''​POINT(X,​Y)''​|возвращает цвет точки| |функция ''​POINT(X,​Y)''​|возвращает цвет точки|
  
-Все эти операторы полностью совместимы с MSX, и подробнее об особенностях их применения и значении параметров можно узнать в любом руководстве по [[msx:​basic:​]],​ например,​ [[msx:basic_programming_guide:​05|здесь]]+Все эти операторы полностью совместимы с MSX, и подробнее об особенностях их применения и значении параметров можно узнать в любом руководстве по [[msx:​basic:​]],​ например,​ [[msx:basic_prograbasic_dialogue_programming_languagemming_guide:​005|здесь]]
  
 Логические операции те же, что и в [[msx:​basic:#​v2x|MSX BASIC 2.x]] (для [[msx:​msx_2|]]):​ ''​PSET'',​ ''​PRESET'',​ ''​AND'',​ ''​OR'',​ ''​XOR''​ с и без префикса ''​Т''​. Они имеют смысл и действие только в экранных режимах [[msx:​msx_2|]] ''​SCREEN 5…8''​. Логические операции те же, что и в [[msx:​basic:#​v2x|MSX BASIC 2.x]] (для [[msx:​msx_2|]]):​ ''​PSET'',​ ''​PRESET'',​ ''​AND'',​ ''​OR'',​ ''​XOR''​ с и без префикса ''​Т''​. Они имеют смысл и действие только в экранных режимах [[msx:​msx_2|]] ''​SCREEN 5…8''​.
Строка 409: Строка 411:
  
 Полностью соответствуют MSX-спецификации;​ ниже приведен список операторов,​ которые контролируют спрайты. Подробные сведения об их использовании можно получить из литературы по Полностью соответствуют MSX-спецификации;​ ниже приведен список операторов,​ которые контролируют спрайты. Подробные сведения об их использовании можно получить из литературы по
-[[msx:​msx_1|]] и [[msx:​msx_2|]],​ например [[msx:basic_programming_guide:05#​sprites|здесь]] и [[msx:basic_programming_guide:​11#​sprites|здесь]].+[[msx:​msx_1|]] и [[msx:​msx_2|]],​ например [[msx:basic_dialogue_programming_language:005#​sprites|здесь]] и [[msx:basic_dialogue_programming_language:​011#​sprites|здесь]].
  
 <​code>​SPRITE$ ( N ) = <​строка></​code>​ <​code>​SPRITE$ ( N ) = <​строка></​code>​
Строка 465: Строка 467:
 FIXME FIXME
  
-''​SCREEN''​ — устанавливает экранный режим и другие параметры системы. Имеют смысл все его параметры,​ все они полностью стандартны,​ поподробнее [[msx:basic_programming_guide:​05#​screen|здесь]].+''​SCREEN''​ — устанавливает экранный режим и другие параметры системы. Имеют смысл все его параметры,​ все они полностью стандартны,​ поподробнее [[msx:basic_dialogue_programming_language:​005#​screen|здесь]].
  
  
Строка 522: Строка 524:
 <​code>​ОN SPRITE GOSUB</​code>​ происходит прерывание при обнаружении наложения спрайтов <​code>​ОN SPRITE GOSUB</​code>​ происходит прерывание при обнаружении наложения спрайтов
 <​code>​ОN STOP GOSUB</​code>​ вызывает прерывание по нажатию <​key>​CTRL+STOP</​key>​. \\ При этом остановки программы не происходит. ''​STOP OFF''​ вообще отключает возможность остановки программы <​key>​CTRL+STOP</​key>,​ ''​STOP ON''​ разрешает её, но и прерывание тоже (если оно было установлено ранее.) <​code>​ОN STOP GOSUB</​code>​ вызывает прерывание по нажатию <​key>​CTRL+STOP</​key>​. \\ При этом остановки программы не происходит. ''​STOP OFF''​ вообще отключает возможность остановки программы <​key>​CTRL+STOP</​key>,​ ''​STOP ON''​ разрешает её, но и прерывание тоже (если оно было установлено ранее.)
-<​code>​ON ERROR GOTO</​code>​ определяет программу обработки ошибок,​ возврат из этой программы осуществляется оператором ''​[[msx:​basic_programming_guide:​08#​resume|RESUME]]''​+<​code>​ON ERROR GOTO</​code>​ определяет программу обработки ошибок,​ возврат из этой программы осуществляется оператором ''​[[msx:​basic_dialogue_programming_language:​008#​resume|RESUME]]''​
  
 {{anchor:​advanced_programmers_guide}} {{anchor:​advanced_programmers_guide}}
Строка 834: Строка 836:
  
 [[msxorg>/​forum/​msx-на-русском/​софт/​недооцененные-возможности-msx-basic?​page=2| [[msxorg>/​forum/​msx-на-русском/​софт/​недооцененные-возможности-msx-basic?​page=2|
-Недооцененные возможности MSX Basic ]]+Недооцененные возможности MSX Basic]]
  
 [[https://​web.archive.org/​web/​19990427054551/​http://​www.glasnet.ru/​%7Emsxegor/​sws.html|SOLiD homepage: MSX Warez Stock]] [[https://​web.archive.org/​web/​19990427054551/​http://​www.glasnet.ru/​%7Emsxegor/​sws.html|SOLiD homepage: MSX Warez Stock]]
  
-{{tag>​Programming MSX BASIC}}+[[http://​web.archive.org/​web/​20020225161257/​http://​195.178.221.229/​msx/​warez/​index.htm|Novatec Archive - categories]] 
 + 
 + 
 +{{tag>​Programming MSX BASIC voznesensky_e_g}}
msx/vbc/vbc.1630718158.txt.gz · Последние изменения: 2021-09-04 04:15 — brawaga