|
Basic CP/M-80 от
Orion Soft 1996 г. Орион-128,
основы программирования, уроки языка
Как научиться владеть языком
Basic V2.0 в Орион-128 и Орион-ПРО.
01.04.2023
обновление информации
Е:01.11.96 (С) 1996г. Орионсофт
БЕЙСИК страница 6
Образы диска являются загрузочными работают под
CP/M-80 V3.61,
V3.62, V3.63
и выше
Скачать образ
диска для Готека в формате *.hfe
Скачать образ в
формате *.odi
Это описание
BAS6.TXT скачать
.
50 CHAIN "набор данных I", 20
.
.
Примечание:
При работе с Бейсик-компилятором всем полям, указанным в инструкции
COMMON, предварительно должна быть задана размерность в инструкции DIM
(смотри пункт 9.1.). Для Бейсик-компилятора формат инструкции COMMON был
расширен следующим образом:
формат: COMMON //<имя>///<идентификатор переменной>//, <идентификатор
переменной>/...
При этом с помощью имени можно задать идентификатор какой-либо
стандартной программы в машинном коде (максимально 6 символов).
Благодаря этому при вызове какой-либо такого рода стандартной программы
с помощью инструкции CALL (смотри пункт 12.2.) Не требуется задавать
передаваемые параметры.
При работе с бейсик-компилятором перед какой-либо инструкцией COMMON
могут стоять только следующие инструкции описания:
COMMON
DIM
OPTION BASE
REM
DEFDBL, DEFSNG, DEFINT, DEFSTR
%INCLUDE
(можно использовать только для бейсик-компилятора.)
С помощью инструкции INCLUDE Ббейсик-компилятор может указать в
какой-либо исходной программе какие исходные программные блоки следует
считать из внешней памяти. Эти дополнительные строки программы
вставляются вместо инструкции %INCLUDE.
Формат: %INCLUDE <допустимый идентификатор набора данных> <допустимый
идентификатор набора данных> представляет собой какой-либо допустимый в
операционной системе идентификатор набора данных. Он задается в виде
константы символьного типа, причем только имя данной инструкции его не
обязательно заключать в кавычки. Тип набора данных автоматически
принимается равным ".BAS".
С помощью инструкции %INCLUDE можно вставлять только Бейсик-исходные
программы (хранящиеся в коде ASCII). Они не могут содержать в свою
очередь другие инструкции %INCLUDE.
Внимание!!! Обязанность пользователя следить за тем, чтобы
вставленная программа не вызывала конфликтных ситуаций с переменными,
используемыми в других частях программы. Также следует обратить внимание
на то, чтобы не было инструкций GOTO или GOSUB, приводящщих к
несуществующим строкам. Номера строк вставленной программы должны быть
упорядочены в
соответствующей последовательности и первый номер строки должен быть
больше номера строки инструкции %INCLUDE. Максимальный номер строки
вставленной программы должен быть меньше номера строки, стоящей в
вызывающей программе после инструкции %INCLUDE. Ограничения не действуют
если программа компилируется с опцией /с.
Инструкция %INCLUDE должна быть последней инструкцией в какой-либо
строке.
13. Инструкции для ввода и вывода на экран или печать, в канал
ввода-вывода или для адресов памяти в языке Бейсик.
13.1. Инструкция INPUT для заполнения переменных в процессе выполнения
программы
Инструкция INPUT позволяет присваивать переменным в процессе выполнения
программы определенные значения в виде выражений.
Формат: INPUT /;//"<последовательность символов>";/<переменная>/,
<переменная>/...
Или
INPUT /;//"<последовательность символов>",/<переменная>/,
<переменная>/...
Указанная <последовательность символов> выдается для запроса на ввод
на экран. Если последовательность символов на задана, то в качестве
запроса на ввод используется только знак вопроса "?". Если после
параметра <последовательность символов> используется ";",то в качестве
запроса на ввод постоянно индицируется "?". Можно отменить выдачу знака
вопроса, если вместо точки с запятой после параметра <последовательность
символов> поставить запятую (формат 2).
Ввод значений происходит в том порядке <переменных>, как они
приведены в инструкции INPUT. Значения отделяются друг от друга запятой.
Входные последовательности завершают клавишей "ВК". Количество введенных
значений должно соответствовать количеству переменных. Если какая-либо
входная последовательность завершается клавишей "ВК" когда еще не всем
переменным были присвоены значения, то происходит новый запрос на ввод.
Если введено значений больше, чем имеется переменных, то лишние значения
игнорируются. Если вводятся недопустимые символы, то весь ввод
отменяется и выдается новый запрос на ввод.
В качестве переменной можно использовать любые числовые переменные,
переменные типа символьной строки или переменные поля. Введенные данные
должны соответствовать соответствующим типам переменных. При вводе для
переменных типа символьной строки следует учитывать, что запятая
считается при обработке разделителем. Если в входной строке символов
требуется запятая, то входную строку символов следует заключить в
кавычки "" "". Точно также следует использоватькавычки, если в
начале и в конце строки символов имеются значащие пробелы.
Пример: 10 INPUT "ввод A,B,C"; A%,B%,C%
Примечание.
Если ввод завершают клавишей "ВК", то одновременно курсор
устанавливается в начало следующей строки экрана. Этот переход на новую
строку можно устранить, если непосредственно после ключевого слова INPUT
поставить точку с запятой.
13.2. Инструкция LINE INPUT для ввода любых последовательностей строк в
процессе выполнения программы
инструкция LINE INPUT принимает символ, введенный пользователем с
клавиатуры, и присваивает его в качестве символьной строки какой-либо
заданной переменной типа символьной строки.
Формат: LINE INPUT /;//"<последовательность символов>";/
<переменная типа символьной строки>
или
LINE INPUT /;//"<последовательность символов>",/
<переменная типа символьной строки>
Заданная <последовательность символов> выводится на экран в ответ на
запрос на ввод. Если последовательность символов не задана, то в
качестве запроса на ввод используется только знак вопроса "?". Если
после параметра <последовательность символов> используется ";", то
постоянно в качестве запроса на ввод идицируется "?". Вывод знака
вопроса можно отменить, если вместо точки с запятой после параметра
<последовательность символов> поставить запятую (формат 2).
Переменная типа символьной строки принимает вводимую
последовательность символов. Принимаются все символы, включая кавычки,
запятую и пробелы. Ввод завершают клавишей "ВК". Можно вводить
максимально 254 символа.
Пример: 10 LINE INPUT;"ввод переменных V";V
Примечание:
Если ввод завершают клавишей "ВК", то одновременно курсор
устанавливается в начало следующей строки экрана. Этот переход на новую
строку можно отменить, если непосредственно после ключевого слова INPUT
поставить точку с запятой.
13.3. Инструкция PRINT для бесформатного вывода информации на экран
С помощью инструкции PRINT можно выполнить бесформатный вывод
информации на экран.
Формат: PRINT /<список выражений для вывода>/;//
или
? /<Список выражений для вывода>/;//
<список выражений для вывода>=<выражение>
/,<выражение>/...
Или
<список выражений для вывода>=<выражение>
/;<выражение>/...
Или
<список выражений для вывода>=<выражение>
/<выражение>/...
<Выражение> может быть любым числовым выражением или выражением из
символьных строк, числовой переменной или переменной типа символьной
строки
или числовой константой или константой типа символьной строки. Выражения
можно отделять друг от друга с помощью ",", ";" или " ", при этом данные
разделители можно использовать совместно. При разделении элементов
списка
запятой происходит вывод следующего элемента списка со смещением на 14
колонок вправо. При разделении элементов списка точкой с запятой или с
помощью " " происходит последовательный вывод. Последнему элементу
списка
при каком-либо числовом значении отводится одна позиция.
Каждая инструкция PRINT начинает вывод с новой строки в том случае,
если после последнего элемента списка не следует точка с запятой или
запятая. В данном случчае вывод продолжается с соответствующего
интервала в
той же строке. Если инструкция PRINT задана без параметров, то она
выполняет
переход к следующей строке (вывод пустой строки). Если происходит
превышение
формата строки, то автоматически выполняется переход на новую строку и
продолжение печати.
При выводе чисел с одинарной точностью на печать выдаются 6 цифр. Если
для вещественных чисел с одинарной точностью количество действительных
больше 6, то происходит представление в полулогарифмическом виде
(например,
10^(-6) как 0.000001, Но 10^(-7) как 1е-7). Для вещественных чисел с
двойной
точностью для представления чисел используются 16 цифр. Числа, для
которых
требуется больше 16 цифр, также представляются в полулогарифмическом
виде с
помощью экспоненты.
Вместо ключевого слова "PRINT" можно использоватьтакже знак вопроса
"?".
Примеры: 10 B%=4
20 PRINT B%,B%+4
30 PRINT B%*(-4),B%^4;
40 PRINT B%-4
RUN
4 8 -16 256 0
OK
10 FOR I%=I TO 5
20 I%=I%+5
30 K%=K%+10
40 ? I%;K%
50 NEXT
RUN
5 10 10 20 15 30 20 40 25 50
OK
10 B%=3
20 PRINT "B равно"; B%
30 PRINT "B*B равно" B%*B%"и";
40 PRINT "B+B павно" B%+B%
RUN
б равно 3
B*B равно 9 и B+B равно 6
ОК
13.4. Инструкция PRINT USING для форматированного вывода на экран
Инструкция PRINT USING позволяет явно и точно контролировать формат
вывода данных. Можно распечатать константы или значение переменных
каждого
типа.
Формат: PRINT USING <указание формата>;<список выражений для вывода>/;/
<список выражений для вывода>=<выражение>/;<выражение>/...
Выражение может быть любым числовым выражением или выражением из
символьных строк, какой-либо числовой переменной или переменной типа
символьной константы или константой типа символьной строки. Элементы
списка
отделяют друг от друга точкой с запятой.
Указание формата может быть переменной типа символьной строки или
заключенной в " " константой типа символьной строки. Ниже приведены
символы
формата и их функции:
-----------I-------------------I---------------------------------------------
Символ I Вывод I Примечание
-----------I-------------------I---------------------------------------------
I Первый символ вы- I Символ выбирается из значения выражения из
! I ражения из сим- I символьных строк, начиная слева.
I вольных строк. I
-----------I-------------------I----------------------------------------------
I Цифра или пробел I Вывод цифры или пробела, если в данном или
= I или знак минус I следующем месте стоит ведущий нуль. Отрица-
I I тельный знак получается для отрицательных
I I чисел.
-----------I-------------------I---------------------------------------------
I Десятичная точка I Вывод десятичной точки, если выводимое чис-
. I или пробел I ло является десятичным числом, иначе вывод
I I пробелом
-----------I-------------------I---------------------------------------------
I Знак числа + или -I Перед каждым числом устанавливается знак
+ I I числа. Знак числа может быть установлен
I I также после числа.
-----------I-------------------I---------------------------------------------
I Знак - или пробел I Распечатывается отрицательный знак числа,
- I I для положительных чисел устанавливается
I I пробел. Знак числа может быть установлен
I I также после числа.
-----------I-------------------I---------------------------------------------
I I Вывод * вместо ведущих нулей перед первой
** I * I цифрой или перед знаком числа. Оба символа
I I * определяют две позиции в формате.
-----------I-------------------I---------------------------------------------
I I Запятая слева от десятичной точки указывает
, I , I на то, что все три позиции запятой для от-
I I деленя тысяч должны быть заполнены. В
I I формате описывается одна позиция.
-----------I-------------------I---------------------------------------------
I I Вместо S ставится плюс или минус. DD
^^^^ I ESDD I представляют собой две цифры. Данный формат
I I вызывает вывод числа в экспоненциальном
I I представлении.
-----------I-------------------I---------------------------------------------
___ I I Знак подчеркивания действует таким образом,
Знак под- I Литерал I что следующий непосредственно за ним символ
черкивания I I распечатывается без изменения как символ и
I I не интерпретируется как управляющий символ.
-----------I-------------------I---------------------------------------------
I I Описывается поле для вывода символьной
& I Значение символь- I строки переменной длины, т.Е. Символьная
I символьной строки I строка выводится в своем первоначальном
I I виде.
-----------I-------------------I---------------------------------------------
/<N I Значение символь- I Выводятся N+2 символов, т.Е. Для косой чер-
пробелов I ной строки I ты также резервируется одна позиция печати.
I I если зарезервированное поле длиннее задан-
I I ного значения символьной строки, то оно
I I размещается в поле слева, а справа поле за-
I I полняется пробелами.
-----------I-------------------I---------------------------------------------
I I Непосредственно слева от выводимого числа
$$ I $ I выводится символ $. Резервируются все пози-
I I ции печати в формате. Отрицательные числа
I I можно распечатывать только в том случае,
Символ I Ввод I примечание
-----------I-------------------I----------------------------------------------
I I Если знак минус выводится справа от числа.
-----------I-------------------I----------------------------------------------
I I Ведущие пустые позиции заполняются символом
**$ I I $, а непосредственно перед числом выводится
I I символ . В формате описываются три пози-
I I ции вывода.
-----------I-------------------I----------------------------------------------
В указании формата помимо любых других символов могут содержаться
заданные символы. Они используются для резервирования места. Эти
управляющие
символы выбираются из строки формата и исследуются. Если управляющие
символы
требуют какое-либо значение символьной строки или какое-либо числовое
значение, то из списка выражений для вывода выбирается очередное
выводимое
значение и проверяется его допустимость. Если выражение и спецификация
печати не соответствуют друг другу, то программа прерывается с выдачей
сообщения об ошибке, поскольку для выражения требуется одна символьная
строка, а для символьной строки другое числовое значение. Если значение
числового выражения больше чем можно выдать с данным форматом, то число
выводится без форматирования. Если впереди стоит символ %, то вывод
происходит на следующей строке. Выполнение программы продолжается. При
выводе чисел с плавающей точкой с помощью спецификации формата INTEGER
происходит округление до следующего целого числа. Каждое выражение
выводится
согласно соответствующей спецификации в описании формата. Выполняется
каждая
функция печати в списке, если она встречается.
После обработки символьной строки формата и замены символов
резервирования места соответствующими значениями происходит вывод
измененной
таким образом символьной строки формата.
При этом все символы в выводе формата, не являющиеся управляющими
символами в смысле приведенной выше таблицы, распечатываются без
изменений,
если "список выражений для вывода" после печати модефицированной
символьной
строки формата еще не исчерпан, то снова начинается дальнейшее
форматированное редактирование печати с построением следующей
модифицированной символьной строки формата, при этом учитывается
следующие
элементы вывода. Редактирование печати модефицированной символьной
строки
формата происходит до тех пор, пока не будет исчерпан список элементов
вывода. В отдельных случаях могут быть использованы не все позиции в
конце
символьной строки формата.
10 PRINT USING "##.##";.89
(1) 20 PRINT USING "###.##";987.678
30 PRINT USING "##.##"; 10,3.3,66.777,.24
40 PRINT USING "+##.##"; -58.19,.9,45.6
50 PRINT USING "##.##-"; -58.19,.9,45.6
60 PRINT USING "**##.#"; 12.39,-.9
70 PRINT USING "####,.##"; 3421.5
80 PRINT USING "#,###.##"; 4321.5
90 PRINT USING "##.##^^^^"; 345.67
100 PRINT USING ".####^^^^"; 777777
110 PRINT USING "+.##^^^^"; 321
120 PRINT USING "##.##_K_M__H"; 15.97
130 PRINT USING "##.##"; 123.45
140 PRINT USING ".##"; .997
150 A$="PROGRAMM" (2)
160 B$="EDV" (3)
170 C$="ANLAGE" (4)
(1) - примеры; (2) - программа; (3) - система обработки данных на базе
эвм;
(4) - установка
180 PRINT USING "1";A$;B$;C$
190 PRINT USING "ZAHL ###.## WURDE IN FORMAT
_#_#_#_._#_# GEDRUCKT";23.45 (1)
RUN
0.89
987.68
10.00 3.30 66.78 0.24
-58.19 +0.90 +45.60
58.19- 0.90 45.60
*12.4 *-0.9
4,321.50
4,321.50
3.46E+02
.7778E+06
+.32E+03
15.97KM/H
%1233.45
%1.00
PEA (2)
ZAHL 23.45 WURDE IM FORMAT ###.## GEDRUCKT
OK
(1) - число ###.## Было распечатано в формате _#_#_#_._#_#;
23.45; (2) - Число 23.45 Было распечатано в формате ###.##
13.5. Инструкция LPRINT и LPRINT USING для вывода на печать с
форматированием и без форматирования
Инструкции LPRINT и LPRINT USING реализуют инструкции PRINT и PRINT
USING (смотри пункт 13.3. и пункт 13.4.) Для какого-либо устройства
печати.
Формат: LPRINT /<список выражений для вывода>//;/
LPRINT USING <указание формата>;<список выражений для вывода>/;/
<список выражений для вывода>=<выражение>/;/<выражение>/...
<Выражение> может быть любым числовым выражением или выражением из
символьных строк, какой-либо числовой переменной или переменной типа
символьной строки или числовой константой или константой типа символьной
строки. Отдельные элементы списка отделяются друг от друга точкой с
запятой.
Количество символов для одной строки печати ограничено до 132 и может
быть произвольно установлено с помощью инструкции WIDTH LPRINT (смотри
пункт
13.7.).
13.6. Инструкция WRITE для вывода на экран
С помощью инструкции WRITE можно выдавать на экран числовые значения и
значения символьных строк. Вывод происходит без интервалов. В качестве
разделителя используется запятая. Значения символьных строк заключаются
в
кавычки " ".
Формат: WRITE /<список выражений для вывода>/
<список выражений для вывода>=<выражение>/;<выражение>/...
<Выражение> может быть любым числовым выражением или выражением из
символьных строк, какой-либо числовой переменной или переменной типа
символьной строки или числовой константой типа символьной строки.
Отдельные
элементы списка отделяются друг от друга запятой. Если параметры на
заданы,
то инструкция WRITE вызывает переход на следующую строку.
Пример: 10 м%=20: N%=40: Z$="STRING"
20 WRITE M%,N%,Z$
30 PRINT M%,N%,Z$
RUN
20,40,"STRING"
20 40 STRING
OK
13.7. Инструкция WIDTH для установки длины строки вывода
С помощью инструкции WIDTH задают количество символов в строке вывода
на экран или устройство печати.
Формат: WIDTH /LPRINT/ <длина>
<длина> может быть целочисленным выражением, целой переменной или целой
константой. Она может принимать значения между 15 и 255 включительно.
Стандартно установлено значение 80 (экран) или 132 (устройство печати).
Это
значение определяет количество символов , которое может быть об'единено
в
одну строку. При достижении длины строки в конце автоматически
вставляется
символ возврата каретки "CR". Вывод следующих символов происходит на
следующей строке.
Если задана опция LPRINT, то установка длины строки относится к
устройству печати, в противном случае к экрану.
Пример: 40 PRINT "1...5...10...15...20...25...30"
RUN
1...5...10...15...20...25...30
OK
10 WRITE 20
40 PRINT "1...5...10...15...20...25...30"
RUN
1...5...15...20
...25...30
OK
13.8. Инструкция OUT для физического вывода какого-либо значения в канал
вывода.
Инструкция ОUТ обеспечивает непосредственную запись в выходной порт.
Формат: OUT<PORT-адрес>,<число>
Параметры <PORT-адрес> и <число> представляют собой целочисленные
выражения,
целые переменные или целые константы, которые могут принимать значения
между
0 и 255 включительно.
Указание:
Данная инструкция является инверсной инструкцией по отношению к
инструкции INр (смотри пункт 14.3.).
Пример: 100 оUT 3,80
13.9. Инструкция POKE для записи заданного байта по заданному адресу
Инструкция POKE пересылает один байт по какому-либо адресу, лежащему
между 0 и 65535.
Формат: POKE <адрес>,<значение>
Параметры можно задавать как в десятичном так и в шестнадцатеричном
виде.
<Адрес> может быть какой-либо числовой переменной или числовой
константой целого типа.
<Значение> может быть каким-либо числовым выражением, числовой
переменной или числовой константой целого типа и принимать значения
между 0
и 255.
Указание:
Данная инструкция является инверсной инструкцией по отношению к
инструкции PEEK (смотри пункт 14.4.).
Пример: 10 A%=PEEK(&H8000)
20 PRINT HEX$(A%)
30 POKE &H8000,&H20A
40 A5=PEEK(&H8000)
50 PRINT HEX$(A%)
60 END
80 POKE 32768,42
RUN
24
2A
OK
В следующем примере стандартная программа в машинном коде из
программного набора данных в оперативную память, при дальнейшем
выполнении
программы ее можно вызвать с помощью CALL (смотри пункт 12.2.) Или USR
(смотри пункт 12.4.).
.
.
.
100 READ ADR%
110 READ DAT%
120 IF DAT%=0 THEN 160
130 POKE ADR%, DAT%
140 ADR%=ADR%+1
150 GOTO 110
160 .
.
.
.
1000 DATA 35720,34,120,79,250,00,00,00,36,73
1010 DATA 220,37,33,-1
Следует обратить внимание на то, что в данном примере область с 35720
зарезервирована инструкцией CLEAR (смотри пункт 5.4.).
13.10. Инструкция WAIT для синхронизации с внешними устройствами
Инструкция WAIT позволяет синхронизировать связные процессы при работе
с внешними устройствами.
Формат: WAIT <адрес порта>,<AND-маска>/,<XOR-маска>/
Алгоритм ожидания работает следующим образом:
Значение, лежащее по адресу порта, связывается с значением XOR-маски
логической операцией исключающее или. Результат связывается с значением
AND-
маски логической операцией И. Если результат отличается от нуля, то
Бейсик-
программа продолжает выполняться. Если XOR-маска не задана, то
стандартно
используется значение нуль.
<Адрес порта>,<AND-маска> и <XOR-маска> должны быть целыми переменными
и целыми константами. Целые значения должны лежать между 0 и 255
включительно.
Пример: 100 WAIT 17,7,1
при этом выполняется следующий алгоритм:
проверяется канал с адресом 17. На данном канале имеется, например, 6.
(XOR 1) AND 7=0
Результат не равен нулю; таким образом, программа продолжает
выполняться.
Если, например, теперь в канале будет значение 1, то получим:
(1 XOR 1) AND 7=0
Результат равен нулю; инструкция WAIT выполняется снова.
13.11. Инструкция SWAP для обмена значеничми двух любых переменных
одинакового типа
С помощью инструкции SWAP можно выполнить обмензначениями между двумя
переменными одинакового типа.
Формат: SWAP <переменная - 1>,<переменная - 2>.
В качестве переменных можно использовать целые переменные, вещественные
переменные одинарной и двойной точности и переменные типа символьной
строки.
Пример: 10 A$="A1"
20 A2$="*"
30 A3$="A2"
40 A4$="=A3"
50 PRINT A1$;A2$;A3$;A4$
60 SWAP A1$,A3$
70 PRINT A1$;A2$;A3$;A4$
RUN
A1*A2=A3
A2*A1=A3
OK
Продолжение дальше....
Осваиваем микрокомпьютер интересная книга в 2-х томах по
программированию на бэйсике от А до Я
Осваиваем микрокомпьютер К-1 Б.Р.Смит 1989 скачать часть 1-я
Осваиваем микрокомпьютер К-1 Б.Р.Смит 1989 скачать часть 2-я
Программирование
микропроцессорных комплектов i8080, 580вм80, z80, i8085, 1810, 1824
Орион-128
описание команд микропроцессора к580вм80 (Орион-Софт)
Язык Ассемблера для Ориона
Язык Си для Ориона
Язык Паскаль для Ориона
Язык Форт для Ориона
Купить платы, наборы микросхем на Орион-128, КР565РУ5В,
КР565ру7В, к565ру5г AU, к565ру7г Au
в позолоте, куплю микросхемы
Полезные и интересные статьи
На предыдущую страницу
На главную страницу На следующую
страницу
|
|