Basic CP/M-80 от Orion Soft 1996 г. Орион-128,  основы программирования, уроки языка

Как научиться владеть языком Basic V2.0 в Орион-128 и Орион-ПРО.

Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128

01.04.2023 обновление информации

Е:01.11.96 (С) 1996г. Орионсофт

БЕЙСИК  страница 8

Образы диска являются загрузочными работают под CP/M-80 V3.61,  V3.62, V3.63 и выше

Скачать образ диска для Готека в формате *.hfe

Скачать образ в формате *.odi

Это описание BAS8.TXT скачать

Начинается с кавычки, то принимаются все символы до следующих кавычек.

Последовательных наборов данных.

Инстукция LINE INPUT# для последовательного ввода набора данных считывает любые символы в коде ASCII из какого-либо набора данных таким же образом, с помощью инструкции LINE INRUT (смотри пункт 13.2.)
Последовательности символов вводились с клавиатуры.
Формат: LINE INPUT# <номер набора данных>, <переменная типа символьной строки>
При открытии какого-либо набора данных инструкцией OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа.
Соответственно для соответствующего набора данных указывается <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой.

Начиная с текущей курсора все символы до символа возврата каретки "CR" присваиваются переменным типа символьной константы. Сам символ возврата карктки "CR" не присваивается.

Пример: 10 OPEN "1",2,"пример"
20 LINE INPUT# 2,
30 PRINT
40 END
RUN

15.7. Инструкции PRINT# и PRINT# USING для вывода в последовательный набор данных с форматированием и без форматирования.

С помощью инструкции PRINT# и PRINT# USING можно осуществить вывод информации в какой-либо последовательный набор данных с форматированием и без форматирования.
Формат: PRINT# <номер набора данных>,/USING <указание формата>;/
<список выражений для вывода>=<выражение>/;<выражение>/...
Или
<список выражений для вывода>=<выражение>/,<выражение>/...
Или
<список выражений для вывода>=<выражение>/<выражение>/...

При открытии наборов данных с помощью инструкции OPEN (смотри пункт 15.4.) Каждый открытый набор данных получает логический номер набора данных, по которому к нему можно обращаться с помощью инструкции доступа.
Соответственно указывается для соответствующего набора данных <номер набора данных>. <Номер набора данных> может быть целым выражением, целой переменной или целой константой.
Какое-либо выражение из списка выражений для вывода может быть выражением из символьных строк, числовым выражением, константой типа символьной строки или числовой константой.
Записываемые в наборы данных данные не сжимаются, а в виде последовательностей символов пересылаются во внешнюю память. Чтобы отдельные данные можно было снова безошибочно считать с помощью инструкции INPUT, необходимо дополнительно вставить соответствующие разделительные символы.
Для форматированного вывода в какой-либо последовательный набор данных также относится все сказанное относительно указания формата в пункте 13.4.

Указание:
Для неформатированного вывода рекомендуется разделять элементы вывода точкой с запятой. Если же используется запятая, то требуется ненужная область памяти для вставленных пробелов. Если какая-либо символьная строка сама содержит запятые, ведущие пробелы или управляющие символы перевода строки, символьную строку безусловно следует заключать в кавычки.

Пример: 10 A%=5: B%=7
20 OPEN "O",I,"TEST.TXT"
30 PRINT# I,A%;B%;2.73;-2
40 A$="MUELLER"
50 B$="MEYER"
60 PRINT# I,A$,B$
70 PRINT# I;I;CHR$(34);A$;CHR$(34);CHR$(34);B$
CHR$(34)
80 CLOSE# I
90 OPEN "I",I,"TEST.TXT"
100 INPUT#I,A%,B%,C%,D%,A$,B$,C$
RUN
5 7 2.73 -2 MULLERMEYER MULLER MEYER
OK

15.8. Инструкция WRITE# для вывода в последовательный набор данных

С помощью инструкции WRITE# можно записывать в какой-либо набор данных
информацию таким образом, что ее можно затем непосредственно считывать с
помощью инструкции INPUT#.
Формат: WRITE# <имя набора данных>, <список выражений для вывода>
<список выражений для вывода>=<выражение>/,<выражение>/...
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
набора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно указывается <номер набора данных> для
соответствующего набора данных. <Номер набора данных> может быть целым
выражением, целой переменной или целой константой.
Встречающиеся в <списке выражений для вывода> элементы могут быть
любыми числовыми выражениями или выражениями из символьных строк, числовыми
переменными или переменными типа символьной строки или числовыми константами
или константами типа символьной строки. Отдельные элементы отделяются
запятыми.
Вводимые данные автоматически оканчиваются запятой. Символьные строки
автоматически заключаются в кавычки " ".

Пример: 10 S$="информация"
20 C%=1237
30 OPEN "O", I,"BEISPIEL"
40 WRITE# I,S$,C%
50 CLOSE
60 OPEN "I",#2,"BEISPIEL"
70 INPUT# 2,S$,C%
80 PRINT S$,C%
90 END
RUN
информация 1237
ОК

15.9. Инструкция GET для пересылки какой-либо записи набора данных прямого
доступа в область буфера.

С помощью инструкции GET пересылают очередную запись из внешней памяти
в область буфера.
Формат: GET /#/<номер набора данных>/,<номер записи>/
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
набора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно для соответствующего набора данных указывается
<номер набора данных>. <Номер набора данных> может быть целым выражением,
целой переменной или целой константой.
С помощью параметра номера записи можно задать какой-либо
номер записи. Он может лежать между 1 и 32767 включительно. Если этот
параметр не задан, то считывается последовательная очередная запись.
<Номер записи> может быть целым выражением, целой переменной или целой
константой.

Пример: 10 GET I
70 GET 5,30


15.10. Инструкция PUT для пересылки какой-либо записи из области
буфера в набор данных прямого доступа.

С помощью инструкции PUT пересылают содержимое области буфера на
внешнюю память.
Формат: PUT /#/ <номер набора данных>/,<номер записи>/
При открытии какого-либо набора данных с помощью инструкции ОPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
выбора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно для соответствующего набора данных указывается
<номер набора данных>. <Номер набора данных> может быть целым выражением,
целой переменной или целой константой.
С помощью параметра номер записи можно задать какой-либо номер записи.
Он может лежать между 1 и 32767 включительно.Если этот параметр не задан, то
область буфера записывается в набор данных в качестве записи, следующей за
последним номером записи.

Пример: 10 OPEN "R",1,"ADRESSE.TXT",79
20 OPEN "O",2,"ADRESSE.$$$"
30 FIELD 1,20 AS NAME$, 15 AS VNAME$, 20 AS
STRASSE$, 4 AS POSTLZ$, 20 AS ORT$
40 INPUT "SATZNUMMER"; SATZ% 1)
50 IF SATZ% < 1 THEN 230
60 INPUT "SCHREIBEN (1) ODER LESEN (2)": S% 8)
70 ON S% GOTO 80, 200
80 INPUT "FAMILIENNAME"; SNAME$. 2)
90 INPUT "VORNAME"; SVNAME$ 3)
100 INPUT "STRASSE"; SSTRASSE$ 4)
110 INPUT "POSTLEITZAHL"; SPOSTLZ$ 5)
120 INPUT "ORT"; SORT$ 6)
130 LSET NAME$=SNAME$
140 LSET VNAME$=SVNAME$
150 LSET STRASSE$=SSTRASSE$
160 LSET POSTLZ$=SPOSTLZ$
170 LSET ORT$=SORT$
180 PUT 1,SATZ%
190 GOTO 40
200 GET 1,SATZ%
210 PRINT#2,NAME$,",",VNAME$,",",POSTLZ$,",",
ORT$,",",STRASSE$,","
220 GOTO 40
230 CLOSE
240 END
250 REM AN STELLE VON ZEILE 210 KANN AUCH
EINFACHER DIE FOLGENDE ZEILE ATEHEN: 7)
260 WRITE# 2,NAME$,VNAME$,POSTLZ$,ORT$,STRASSE$

1)- номер записи; 2)- фамилия; 3)- имя; 4)-улица; 5)- почтовый индекс;
6)- место; 7)- вместо строки 210 могут стоять просто следующие строки; 8)-
запись или чтение(2).

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

15.11. Инструкция FIELD для структурирования записей данных в каком-либо
наборе данных текстов при прямом доступе.

С помощью инструкции FIELD устанавливают структуру записи для наборов
данных текстов с прямым доступом.
Формат: FIELD/#/<номер набора данных>,<длина поля> AS
<идентификатор символьной строки>/,<длина поля>
AS <идентификатор символьной строки>/...
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
набора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно указывается номер набора данных для набора данных,
открытого как набор данных прямого доступа. <Номер набора данных> может быть
целым выражением, целой переменной или целой константой.
Инструкция FIELD структурирует область буфера. Буфер всегда содержит
одну запись данных. Байты области буфера имеют сквозную нумерацию, начиная с
единицы. Параметру длина поля присваивается, начиная с единицы по порядку
заданное количество байтов соответствующего идентификатора символьной
строки. За счет этого можно логически адресовать данный участок буфера с
помощью идентификатора соответствующей символьной строки.
С помощью инструкции LSET или RSET (смотри пункт 15.12.) Можно
располагать эти переменные слева или справа с распечатками текстов. Особенно
удобно выполнять с помощью этих инструкций преобразование типов между
числовыми переменными и переменными типа символьной строки, которые однако
позволяют не изменять внутренний вид представления и, таким образом,
обеспечивают эффективное хранение числовых выражений и переменных типа
символьной строки (смотри также пункты 16.4. И 16.5.). Введенные в
инструкции FIELD идентификаторы символьных строк можно использовать только
вместе с инструкциями LSET, RSET, PUT и GET.

Пример: 10 OPEN "R" ,5,"DIREKT.DAT",40
20 FIELD 5 , I AS F$,20 AS ND$, 19 AS VD$

Примечание:
Перед непосредственной записью или считыванием данных должна быть
указана инструкция FIELD. Если описаны несколько полей, то следует обратить
внимание на то, чтобы сумма всех длин полей не превышала заданную в
инструкции OPEN-R длину записи.

15.12. Инструкции LSET и RSET для левоустановленной или правоустановленной
записи символьных строк (в какую-либо запись данных набора данных
текстов с прямым доступом).

С помощью инструкций LSET и RSET можно добавить значения выражений из
символьных строк к левоустановленным или правоустановленным текстам.
Формат: LSET <переменная>=<выражение>
RSET <переменная>=<выражение>
Параметр <переменная> может быть об'явленным с помощью FIELD (смотри
пункт 15.11.) Идентификатором символьной строки или обычной переменной типа
символьной строки.
<Выражение> может быть выражением из символьных строк, переменной типа
символьной строки или константой типа символьной строки.
Данную инструкцию особенно эффективно использовать для обработки
буферов наборов данных при работе с наборами данных текстов с прямым
доступом.
Пример: 10 D$=SPACE$(20)
20 E$="символьная строка"
30 RSET D$=E$
40 D$="%"+D$+"%"
50 PRINT D
RUN
% символьная строка%
ок

Примечание:
Если <выражение> короче размера области памяти, подготовленной с
помощью переменной типа символьной строки, то свободные позиции заполняются
пробелами. Если наоборот, размер области меньше значения <выражение>, то
<выражение> усекается справа. Это относится как к инструкции LSET так и к
инструкции RSET.

15.13. Инструкция CLOSE для закрытия открытых с помощью OPEN наборов данных.

С помощью инструкции CLOSE текущее содержимое буфера какого-либо набора
данных пересылается во внешнюю память , затем содержимое буфера стирается и
соответствующий набор данных отмечается в каталоге наборов данных как
недоступный.
Формат: CLOSE //#/<номер набора данных>/,/#/<номер набора данных>/.../
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает номер набора
данных, по которому к нему можно обращаться с помощью инструкции доступа.
Соответственно следует задать <номер набора данных> в инструкции CLOSE для
закрываемых наборов данных. Если никакой номер набора данных не задан, то
происходит закрытие всех открытых к моменту вызова инструкции CLOSE наборов
данных. <Номер набора данных> может быть целым выражением, целой переменной
или целой константой.
(Смотри пункт
Пример: 10 CLOSE 1,3,4
80 CLOSE

Примечание:
С помощью инструкции END и команды NEW, RESET и SYSTEM также
можно закрыть все открытые наборы данных, это не относится к инструкции
STOP.

16. Функции для обеспечения работы с наборами данных на языке Бейсик.

16.1. Функция EOF.

Функция EOF указывает, имеет ли место условие конца набора данных для
какого-либо набора данных.
Формат: /<INTEGER-переменная>=/ EOF(<номер набора данных)
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
набора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно следует задать номер набора данных для
соответствующего набора данных.
<Номер набора данных> может быть целым выражением, целой переменной или
целой константой.
Функция принимает значение 1, если имеет место условие конца набора
данных, в противном случае она принимает значение нуль.
Функция имеет тип "INTEGER".

Пример: 300 WHILLE NOT EOF(1)
.
.
.
400 WEND

16.2. Функция LOF.

Функция LOF указывает количество записей в последнем считанном или
записанном на внешнюю память блоке.
Формат: /<INTEGER-переменная>=/ LOF(<номер набора данных>)
При открытии какого-либо набора данных с помощью инструкцииOPEN (смотри
пункт 15.4.) Каждый открытый набор данных получает логический номер набора
данных, по которому к нему можно обращаться с помощью инструкции доступа.
Соответственно можно задать номер набора данных для соответствующего набора
данных. <Номер набора данных> может быть целым выражением, целой переменной
или целой константой.
Наборы данных могут состоять максимально из 16 блоков. Каждый блок
имеет максимально 128 записей по 128 байт каждая. Если набор данных состоит
только из одного блока, то функция LOF указывает непосредственно длину
набора данных.
Функция имеет тип "INTEGER".

Пример: 70 PRINT LOF(2)

16.3. Функция LOC.

Функция LOC возвращает номер записи, к которой был прроизведен
последний доступ при работе с каким-либо набором данных прямого доступа. При
работе с последовательными наборами данных данное значение указывает
одновременно количество записей, к которым был произведен доступ.
Формат: /<INTEGER-переменная>=/ LOC (<номер набора данных>)
При открытии какого-либо набора данных с помощью инструкции OPEN
(смотри пункт 15.4.) Каждый открытый набор данных получает логический номер
набора данных, по которому к нему можно обращаться с помощью инструкции
доступа. Соответственно следует указать <номер набора данных> для
соответствующего набора данных. Если <номер набора данных> относится к
набору данных с прямым доступом, то функция LOC возвращает номер записи, к
которой был произведен последний доступ.

Пример: 70 PRINT LOC(2)


Функции MKI$, MKS$ и MKD$ запоминают целочисленные значения, значения с
одинарной точностью или значения с двойной точностью как "числовые"
символьные строки той же длины.
Формат: /<идентификатор символьной строки>=/
MKI$(<целочисленное выражение>)
/<идентификатор символьной строки>=/
MKS$(<числовое выражение одинарной точности>)
/<идентификатор символьной строки>=/
MKD$(<числовое выражение двойной точности>)
Идентификатор символьной строки должен быть описан в какой-либо
инструкции FIELD (смотри пункт 15.11.).
Для функции требуется записать числовые значения в упакованном формате
как символьные строки в какой-либо набор данных прямого доступа. При этом
MKI$ формирует символьную строку длиной 2, MKS$ символьную строку длиной 4,
а MKD$ символьную строку длиной 8. Переписанные в таком виде числовые
значения можно переписать с помощью инструкции LSET или RSET в какой-либо
буфер данных.

Пример: 120 RSET ALTER$=MKI$(ALTER%)

16.5. Функция CVI, CVS и CVD

Функции преобразуют "числовые" символьные строки длиной 2 байта, 4
байта и 8 байт в числовые значения соответственно типа INTEGER или REAL
одинарной точности или REAL двойной точности.
Формат: /<INTEGER-переменная>=/
CVI(<"числовая" символьная строка длиной 2 байта)
/INTEGER-переменная=/
CVS(<"числовая" символьная строка длиной 4 байта>)
/<INTEGER-переменная>=/
CVD(<"числовая" символьная строка длиной 8 байт>)
Идентификаторы символьных строк должны быть введены с помощью какой-
либо инструкции FIELD (смотри пункт 15.11.).
Функции имеют тип "INTEGER" или "REAL одинарной точности" или REAL

 

 

Продолжение дальше....

 

Осваиваем микрокомпьютер интересная книга в 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 в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу