[an error occurred while processing this directive]
─SRP 5 ─PL70 ─TM0 ─HM2 ─DH//-|P-// ─LM5 │..................................................................< |||/ Нестандартные ключевые слова языка Бейсик BBC/||| Эта глава содержит детальное описание нестандартных слов, которые Бейсик "понимает". Такие слова называются "ключевыми". Из-за ограниченного объема руководства, некоторые операторы, описанные в других главах, здесь опущены. Каждое описание состоит из нескольких частей: |||/КЛЮЧЕВОЕ СЛОВО/||| /Назначение/ Описание действия слова. Этот раздел предназначен для изучающих Бейсик. /Примеры/ Этот раздел содержит несколько примеров использования слова (но не законченные программы). |||/Описание/||| В этом разделе слово описывается на нормальном компьютерном жаргоне. |||/Синтаксис/||| Следующие символы используются для описания синтаксиса ключевых слов: {} обозначает возможность повторения содержимого скобок ноль или больше раз. [] обозначает возможность использования содержимого скобок. | обозначает альтернативы, одна из которых должна быть использована. <num-const> обозначает численную константу, такую как "4.5" или "127" <num-var> обозначает численную переменную, такую как "X" или "length" <numeric> обозначает или <num-const> или <num-var>, или комбинацию их в выражении, например: "4*X+6" <string-const> обозначает символьную строку заключенную в кавычки, например "GAVINMOUNT" <string-var> обозначает символьную переменную, такую как A¤ или NAME¤ <string> обозначает или <string-const> или <string-var>, или выражение, такое как A¤+"WOMBAT" <testable condition> обозначает что-нибудь, принимающее значение TRUE (истинно) или FASLE (ложно) <statement> обознчает любой оператор Бейсика, например, PRINT или GOSUB или PROC. <variable name> обозначает последовательность букв или цифр, которая соответствует правилам составления имен переменных. ─PE |||/ ABS/||| абслоютное значение /Назначение/ Эта функция преобразовывет отрицательные числа в эквивалентные положительные, остабляя положительные числа без изменений. Например абсолютное значение -9.75 есть 9.75, а абсолютное значение 4.56 ест 4.56. Функция ABS часто используется при вычеслении разницы между двумя значениями если Вы не знаете, которе из них больше другого. Так (K-L) будте положительным, если K больше чем L, и будет отрицательным, если L больше K. Например, если K=9 и L=12, то (K-L) будет равно -3. Однако значение ABS(K-L) будет всегда положительным. В нашем примере ABS(K-L) будет равно 3. /Примеры/ 205 error=ABS(DIFFERENCE) 100 DIFF=ABS(X20-X1) PRINT ABS(temp%-50) |||/Описание/||| Функция возвращает абсолютное значение своего аргумента. |||/Синтаксис/||| <num-var>=ABS (<numeric>) ---------------------------------------------------------- |||/ ACS/||| арккосинус /Назначение/ Для вычисления угла по значеню его косинуса. Значение угла возвращается в радианах. Для преобразования радиан в градусы используйте функцию DEG. /Примеры/ 10 X=ACS(Y) 1205 angle=DEG (ACS(0.5678)) 330 OUT=ACS(.234) PRINT ACS (0.5) |||/Описание/||| Функция возвращает арккосинус от аргумента. Результат представляется в радианах. |||/Синтаксис/||| <num-var>=ACS(<numeric>) ----------------------------------------------------------- |||/ ADVAL/||| преобразование аналогового значения в цифровое /Назначение/ Аналоговый сигнал может принимать любые значения, включая дробные. В это заключается его принципиальное отличие от цифрового сигнала, который может принимать только дискретные (фиксированные) значения. Вес воды в емкости - это аналоговое значение, а количество судов в порту - дискретное. Имеется два аналоговых входа в Агате, которые позволяют преобразовывать аналоговое значение подключенного на вход сопротивления в дискретное значение. Как правило в качестве аналоговых устройств используются игровые пульты или джойстики. Цифра в скобках после слова ADVAL указывает номер опрашиваемого входа (1 или 2). ADVAL(0) позволяет определять состояние кнопок на пультах. Для этого надо выделить два младших бита возвращаемого значения X=ADVAL(0) AND 3 после чего полученные значения будут иметь следющую интерпретацию: Х=0 ни одна из кнопок не нажата Х=1 нажата 1-я кнопка Х=2 нажата 2-я кнопка Х=3 нажаты обе кнопки /Примеры/ 980 X=ADVAL(2) 125 TEMP=ADVAL(X) INTENSITY=ADVAL(1) |||/Синтаксис/||| <num-var>=ADVAL(<numeric>) |||/Описание/||| Функция, возвращающая значение аналогового входа. Имеется два аналоговых входа дискретизируемых на 256 уровней. Однако возвращаемое значение принимает значения от 0 до 65535 (т.е. умноженное на 16). ----------------------------------------------------------- |||/ AND/||| /Назначение/ AND может быть использована как логический оператор, или как "по-битный" оператор. Как логический оператор AND используется для определения выполнени нескольких событий. Например IF X=9 AND Y=0 THEN PRINT "HELLO" Логический AND часто используется как часть конструкции IF...AND...THEN... Побитный AND сравнивает первый бит одного числа с первым битом другого числа. Есле оба бита равны единице, первый бит возвращаемого значения так же устанавливается в еденицу. Эта операция повторяется для всех 32-х битов. Например результат 14 AND 7 равен 6, это хорошо видно из бинарного представления операции 14 0000 0000 0000 0000 0000 0000 0000 1110 7 0000 0000 0000 0000 0000 0000 0000 0111 6 0000 0000 0000 0000 0000 0000 0000 0110 /Примеры/ 300 IF length>9 AND wt>9 THEN PRINT "YES" 100 IF X=2 AND cost>5 AND J=12 THEN PRINT "NO!!" В последнем примере NO!! напечтается только при выполнении всех трех условий. |||/Описание/||| Операция логического "И". |||/Синтаксис/||| <num-var>=<numeric> AND <numeric> <testable condition>=<testable condition> AND <testable condition> ---------------------------------------------------------- |||/ ASC/||| Американский Стандартный Код (ASCII) /Назначение/ Имеется два широко используемых метода представления символов (элементов типа А, Б, 5, ?, и т.д.). Для большинства это просто символы! Так мы можем сказать, что D¤="H" означает "поместить букву H в область памяти, помеченную D¤". Компьютер не может поместить в память просто символ, так как он оперирует только с байтами (т.е. с числами от 0 до 255). Вместо символа он помещает число соответстующее сохраняемому символу ( символу H соответствует число 72). Каждый символ имеет уникальное соответствующее только иму значение, называемое ASCII кодом. Иногда бывает нужно определить, какое значение соответствует конкретному символу. Вы можете псмотреть требуемое значение в конце этой книги или Вы можете сказать компьютеру PRINT ASC("H") Функция ASC возвращает код первого символа в строке аргумента. Так PRINT (ASC("Good") возвращает 71, ASCII код символа "G". Обратный процесс преобразования кода в символ выполняется функцией CHR¤. /Примеры/ 25 X=ASC ("Today") 650 value5=ASC(A¤) |||/Описание/||| Функция возвращает ASCII код первого сивола строки аргумента. Если строка пустая, возвращается значение -1. |||/Синтаксис/||| <num-var>=ASC(<string>) ---------------------------------------------------------- |||/ ASN/||| арксинус /Назначение/ Вычисление угла по синусу. Значение возвращается в радианах, однако его можно перевести в градусы с помощью функции DEG. 1 радиан приблизительно равен 57 7градусам. Математики часто предпочитают работать с радианами. /Примеры/ 340 J=ASN(0.3456) 30 angle=DEG(ASN(.7654)) PRINT ASN(.5) |||/Описание/||| Функция возвращает арксинус от аргумента. Резльтат представляется в радианах. |||/Синтаксис/||| <num-var>=ASN(<numeric>) ---------------------------------------------------------- |||/ ATN/||| арктангенс /Назначение/ Вычисление угла по тангенсу. Значение возвращается в радианах, однако его можно перевести в градусы с помощью функции DEG. /Примеры/ 1250 X=ATN(Y) 240 value=DEG(ATN(2.31)) |||/Описание/||| Функция возвращает арктангенс от аргумента. Результат представляется в радианах ---------------------------------------------------------- |||/ AUTO/||| автоматический /Назначение/ При вводе программы на Бейсике в память компьютера первая строка как правило имеет номер 10, вторая - номер 20 и т.д. Чтобы не вводить номера строк в ручную используется команда AUTO, которая нумерует строки автоматически. По умолчанию AUTO присваивает первой строке номер 10, следующим 20, 30, 40 и т.д. Команда AUTO 455 присвоит первой строке номер 455, затем 465, 475, 485 и т.д. Другой параметр позволяет пользователю задавть шаг нумерации, который по умолчанию равен 10. Таким образом команда AUTO 465,2 будет нумеровать строки 465, 467, 469, 471 и т.д. Максимальный размер шага равен 255. Для прекравщения автоматического ввода пользователь должен нажать клавишу РЕД. Режим автоматического ввода прерывается, если компьютер пытается сгенерировать строку с номером больше 32767. /Примеры/ AUTO AUTO 220 AUTO 105,5 |||/Синтаксис/||| AUTO[<num-const>[,<num-const>]] |||/Описание/||| AUTO - это команда, позволяющая пользователю вводить строки программы не нумеруя их. Так как AUTO - команда, она не может использоваться в составной строке. Режим AUTO прерывается при нажатии клавиши РЕД или при достижении строки превышающей 32767. AUTO может иметь два параметра. Первый параметр указывает номер первой строки, а второй параметр указывает шаг нумерации строк. ---------------------------------------------------------- |||/ BGET#/||| взять байт из файла /Назначение/ Числа и слова могут быть записаны на дискетте. Функция BGET# позволяет считывать одиночные символы или числа в память компьютера с дискетты или по локальной сети. Перед использованием этого оператора необходимо открыть файл с помощью оператора OPENIN, в противном случае будет выдано сообщение об ошибке. Когда файл открыт оператором OPENIN для обращения к файлу выделяется уникальный номер. Этот номер используется во всех последующих операциях с открытым файлом, например прич чтении или при записи в новый файл. /Примеры/ 6000 character=BGET# (channel) 340 next_letter%=BGET#C |||/Описание/||| Функция, берущая байт из открытого ранее файла. Аргумент функции является номером открытого файла. |||/Синтаксис/||| <num-var>=BGET#<num-var> ----------------------------------------------------------- |||/ BPUT#/||| поместить байт в файл /Назначение/ Для сохранения байта на дискетте. Число, помещаемое в файл должно иметь значение от 0 до 255. Если вы попытаетесь поместить в файл число, превышающее 255, из него будет вычитаться значение 256 до тех пор, пока разность не станет меньше 256. Полученный результат будет помещен в файл. (Этот оператор предназначен толко бля сохранения байтов - небольших чисел. Для больших и отрицательных чисел используйте оператор PRINT#.) Также, как и дл BGET# файл должен быть педварительно открыт, но оператором OPENOUT. /Примеры/ 30 BPUT# channel,number 700 BPUT#N,32 450 BPUT# STAFF_FILE,A/256 |||/Описание/||| Оператор, который помещает байт в файл. Аргумет является номером файл. Файл необходимо предварительно открыть. |||/Синтаксис/||| BPUT#<num-var>, <numeric> ---------------------------------------------------------- |||/ CALL/||| передача управления машинной подпрограмме /Назначение/ Этот оператор приказывает компьютеру выполнить фрагмент машинного кода, который пользователь предварительно поместил в память. Прежде чем воспользоваться этим мощным средством, Вы должны хорошо разобраться в принципах работы компьютера и программировании на ассемблере, так как некорректное использоваие этого оператора может не только уничтожить Вашу программу, но и "завесить" компьютер. К сожалению, из-за ограниченного размера данного руководства здесь не приводится подробное описание на ассемблере. Однако в 14-й главе приведена информация по программированию на ассемблере специфичная для этой версии Бейсика. Для изучения ассемблера рекомендуется изучить соответствующую документацию ПЭВМ АГАТ; описание "Диалоговый Отладочный Комплекс (ДОК) программной системы "Школьница" для ПЭВМ "АГАТ"" (автор В.А.Цикоза); книгу "Язык Ассемблера для персонального компьютера ЭПЛ" (автор У.Морер), а также другую литературу по программированию процессора 6502. /Примеры/ 50 rotate=&0270 60 CALL rotate,J,K,L 200 CALL 1234,A¤,M,J¤ |||/Описание/||| Оператор обращения к машинной подпрограмме. Число параметров переменно, и может быть равно нулю. Прараметры являются переменными, и могут быть изменены в процессе выполнения подпрограммы. Адреса параметров передаются в Блоке Параметров начинающегося с &600. При входе в подпрограмму регистрам процессора A, X, Y, присваиваются значения младших значащих байт переменных A%, X% и Y%. Флаг переноса устанавливается в ссответствии с состоянием младшего значащего бита переменной C%. Перед вызовом подпрограммы компьютер создает Блок Параметров, содержащий следующие данные: Количество параметров - 1 байт адрес 1-го параметра - 2 байта тип 1-го параметра - 1 байт адрес 2-го параметра - 2 байта тип 2-го параметра - 1 байт .................... - ....... адрес N-го параметра - 2 байта тип N-го параметра - 1 байт |||/Типы параметров/||| 0- 8 бит байт (например ?X) 4- 32 бит целая переменная (например !X или X%) 5- 40 бит число с плавающей запятой (например V) 128- Строка с заданным адресом (например ¤X-оканчивающаяся &0D) 129- Символьная переменная (например A¤) В случае символьной переменной адрес параметра содержит адрес Информационного Блока Строки, который содержит стартовый адрес, количество выделенных байт и текущую длину строки. |||/Синтаксис/||| CALL <numeric>,{,<num-var>|<string-var>} -----------------------------------------------------------[an error occurred while processing this directive]