Введение

ASIC — это компилятор и интегрированная среда разработки для подмножества языка программирования BASIC. Он был выпущен для MS DOS и совместимых систем как shareware. Написанный Дэйвом Висти из 80/20 Software, ASIC был одним из немногих BASIC-компиляторов, которые можно было легально скачать с BBS. ASIC позволяет компилировать программы в исполняемые файлы EXE или COM. COM-файл для программы "Hello, world!" имеет размер 360 байт и поддерживает арифметику с плавающей точкой. Эти ограничения и породили шутливый девиз: "ASIC: Почти BASIC!"

Особенности

ASIC значительно беднее по своим возможностям по сравнению с современными BASIC. Функции ASIC подобраны таким образом, чтобы программу можно было легко и напрямую компилировать в машинный код. Таким образом, многие языковые конструкции ASIC эквивалентны конструкциям языка ассемблера.

Элементы программы

Ни идентификаторы, ни ключевые слова не зависят от регистра. Любые операторы DIM, если они присутствуют, должны располагаться перед всеми остальными операторами, за исключением операторов REM или пустых строк. Все операторы DATA должны быть помещены в начало программы, перед всеми другими типами операторов, за исключением операторов DIM, REM или пустых строк.

Выражения

ASIC не имеет оператора возведения в степень ^. ASIC не имеет логических операторов (AND, OR, NOT и т. д.).

Массивы

Размер массива, указанный в операторе DIM, должен быть целочисленной константой. Один оператор DIM позволяет объявить только один массив.

Вход и выход

Аргументы PRINT должны быть литералами или переменными. PRINT не допускает использование составных выражений в качестве аргументов, а также не допускает использование строк, объединенных с помощью ; или +. Если команда PRINT заканчивается символом ; или ,, то следующая команда PRINT продолжит вывод с позиции, в которой остановилась предыдущая, как если бы ее аргумент был добавлен к аргументу текущей команды PRINT. Оператор PRINT выводит целые числа шириной в шесть символов. Они выравниваются по правому краю (без завершающих пробелов). LOCATE строка, столбец – перемещает текстовый курсор в позицию (столбец, строка), где 0 ≤ столбец и 0 ≤ строка. Позиция (0, 0) – верхний левый угол.

Графика

PSET (строка, столбец), цвет Включает пиксель заданного цвета в позиции (столбец, строка), где 0 ≤ столбец и 0 ≤ строка. Положение (0, 0) – верхний левый угол.

Структуры управления

Булево условие может представлять собой только сравнение чисел или строк, но не сравнение составных выражений. Литерал не может быть левым операндом в операции сравнения (например, допустимо X = 2, но недопустимо 2 = X).

Периодическая

В FOR после TO может следовать только числовое литеральное значение или переменная, но не составное выражение. Оператор STEP отсутствует в ASIC.

Разветвление

В операторе GOTO метка должна быть за которой следует двоеточие.

Подпрограммы

В операторе GOSUB после метки обязательно должен стоять двоеточие.