http://litwr2.atspace.eu/bk11.html
Поддерживаются (некоторые слова из бейсика БК0011):
^ \ * + - ( ) = < > <= >= =< => <> ><
? ABS AND ASC AT BIN$ BLOAD BSAVE CHR$ CLEAR CLS CSRLIN DATA DEC DEF DIM ELSE END EOF EQV FILES FIND FN FOR GET# GOSUB GOTO HEX$ IF IMP INKEY$ INP INPUT INSTR LEN LET LOCATE MID$ MOD MONIT NEXT NOT ON OR OUT PEEK POKE POS PRINT READ REM RESTORE RETURN SGN SPC STEP STR$ STRING$ SYSTEM TAB THEN TO UINT$ UPPER$ USR VAL VARPTR XOR
Не поддерживаются:
BEEP CINT COLOR KEY OCT$
CIRCLE DRAW PAINT POINT PRESET PSET
/ ATN CDBL COS EXP INT FIX LOG PI RND SIN SQR TAN CSNG
. AUTO CALL CLOAD CONT CSAVE DELETE LIST LLIST LOAD LPOS MERGE NEW RENUM RUN SAVE STOP TROFF TRON
SCREEN
Новые возможности:
+ Имена переменных могут быть любой длины.
+ Можно использовать ':' для разделения операторов. Длина строки не ограничена.
+ Новый оператор GET# позволяет получать данные из файла символ за символом, т.е. GET#a$ вводит один знак или пусто в a$ из открытого для чтения файла. Это файловый эквивалент INKEY$.
+ Новая функция DEC переводит 16-ю строку в целое, т.e., dec("a0A")=2570.
+ INSTR можно использовать с двумя аргументами, т.е., instr("abcdef", "cd") = instr(1, "abcdef", "cd").
+ Новая функция UPPER$ переводит маленькую латинскую букву в большую.
+ Новая функция UINT$ перевоит в беззнаковое целое в виде строки, т.е. UINT$(-1) gives "65535".
Неподдерживаемые или поддерживаемые ограничено возможности бейсика БК:
- Поддерживаются только целые (в диапазоне -32768..32767) и строковые (длиной до 255 знаков) типы.
- DIM нужно использовать с любым массивом (даже меньшим 10) и его числовой аргумент должен быть целой константой. Поддерживаются только массивы с одной размерностью. После DIM можно описывать только одну переменную-массив. Виртуальные массивы не поддерживаются (это верно и для VARPTR).
- Только некоторые ошибки синтаксиса обнаруживаются.
Особые замечания:
* Размер генерируемых исполнимых файлов до 32256 байт. 16384 дополнительных байт используются для строк и машинного кода. Программа стартует с адреса 512. Код использует вызовы АнДОС, которые эмулируют ПЗУ БК0010. Код не использует вызовы ПЗУ БК0011.
* Память по адресам 532-565 свободна для любого использования. Память выше адреса 16384 может переключаться, поэтому она имеет ограничения для прямого использования для машинных кодов и данных.
* Прерывания клавиатуры используются для автоповтора нажатия клавиши. Это меняет стандартную схему работы с кириллицей -- используйте AP2.
* Необходимо ставить пробелы между склеивающимися лексемами, например, 'if a<3 goto 10' требует пробелов между 'if' и 'a', а также между 'goto' и '10'.
* Страницы памяти 2, 3 и 6 используются для программ и данных. Страница 0 -- это буфер ввода-вывода. Страница 4 содержит AnDOS. Другие страницы свободны для любого использования.
* CLEAR требует в точности двух аргументов, но 1-й игнорируется, т.к. вся свободная память используется для строк. CLEAR вызывает сначала уборщик мусора. Второй аргумент устанавливает верхнюю границу памяти для бейсика. Начальное значение этой границы -- 49152.
* INPUT работает нестандартно, если использует несколько переменных для ввода. Например, 'INPUT A,B' требует ввести значения для А и затем нажатия клавиши Ввод, затем ввeсти значения для B и нажатия на Ввод.
* CSRLIN и POS игнорируют аргументы.
* FRE показывает размер всей свободной памяти. Уборщик мусора вызывается только если у аргумента строковый тип. Поэтому в случае целого или отсутствующего аргумента показанный результат может быть меньше действительного.
* FIND должен использовать какой-нибудь файловый шаблон MS-DOS. Так FIND "*.TXT" покажет все файлы с расширением TXT, а FIND "?." покажет файлы с именами, состоящими из одного знака и без расширения. Шаблоны чувствительны к регистру знаков.
* BLOAD всегдa требует 3-х аргументов, например, BLOAD "MC",,32768 или BLOAD "MC.BIN",R,47*1024.
* BLOAD и BSAVE не работают с файлом более 16 KБ.
* USRn(X) вызов кладет X в R5 и затем использует CALL. Поэтому вернуться из такой ассемблерной функции можно по инструкции RETURN. Результат следует помещать в R5.
* SYSTEM и MONIT работают как END.
* FILES идентична FIND.
* \-операция может правильно делить -32768, но игнорирует деление на 0 и переполнение.
* %-суффикс для целых переменных необязателен.
* Служебные слова нужно писать полностью, без сокращений.
Общая информация:
@ Используйте PEEK(208) and -256 для проверки состояния файла после попытки открытия. Значение должно быть 0, если операция прошла успешно.
@ Будьте осторожны с PEEK и POKE -- они игнорируют младший (четность) бит.
@ Компилятор распространяется по лицензии GNU General Public License, версии 2 или, по вашему усмотрению, более поздней версии. Эта лицензия доступна через сеть по адресу <http://www.gnu.org/copyleft/gpl.html>. GPL устроена так, что позволяет вам менять содержимое пакета и распространять его по другой схеме до тех пор, пока вы не лишаете такой свободы других.
@ Это свободный, быстрый и сделанный как попало компилятор, созданный преимущественно для компиляции программы Notepad-BK. Это не Visual Studio...




Ответить с цитированием