Color BASIC - это реализация Microsoft BASIC, которая включена в ПЗУ цветных компьютеров Tandy / Radio Shack TRS-80, произведенных между 1980 и 1991 годами. BASIC (Универсальный символьный код инструкций для начинающих) - это язык высокого уровня с простым синтаксисом, который позволяет новичкам писать простые программы. Color BASIC интерпретируется , то есть декодируется при запуске. Интерпретируемый BASIC легко редактировать и отлаживать, но выполнение значительно медленнее, чем для программ, написанных на языке ассемблера или типичных компилируемых языках того времени (таких как Паскаль , скомпилированный BASIC илиC ).
Разработано | Билл Гейтс [1] |
---|---|
Разработчик | Microsoft |
Впервые появился | 1980 |
Стабильный выпуск | Color BASIC 1.3 (1982) Extended Color BASIC («ECB») (1984) Disk Extended Color BASIC («DECB») (1984) |
Платформа | Цветной компьютер TRS-80 |
Задний план
Ядром Color BASIC был Microsoft BASIC-69, который Тэнди лицензировал у Microsoft. Color BASIC 1.0 был выпущен вместе с оригинальным 4k TRS-80 Color Computer в 1980 году. Он находится в 8k байтах ПЗУ и отвечает за все «хозяйственные» обязанности в системе. Это включает в себя инициализацию оборудования, управление памятью, обработку прерываний и т. Д. Как и в большинстве реализаций BASIC, каждая строка кода начинается с номера строки и состоит из одного или нескольких операторов с переменными и операторами. 16k памяти требуется для следующего уровня BASIC, Extended Color BASIC. ("ECB") Extended BASIC требуется для контроллера гибких дисков, который затем дает вам Disk Extended Color BASIC. («DECB») Эмуляторы цветных компьютеров, на которых запущен этот интерпретатор, и другие доступны для современных компьютеров, для некоторых из которых требуется файл «моментального снимка» физической машины. [2]
Переменные
Color BASIC понимает один тип числовых переменных и строковых переменных. Имена переменных в Color BASIC имеют первые два значимых символа. Первым символом имени переменной должна быть буква. Вторая может быть буквой или цифрой. Строковые переменные обозначаются добавлением знака доллара ($) после имени переменной.
Примеры
A = 5 A $ = "ЭТО СТРОКА" K7 = 10 BB $ = "ПРИВЕТ!" ZZ = 1,54
Числовые переменные имеют только один тип - двоичную реализацию с плавающей запятой. Каждая числовая переменная использует 5 байтов памяти и может находиться в диапазоне от -1E + 38 до 1E + 37.
В отличие от большинства реализаций Microsoft BASIC, Color BASIC требует, чтобы пользователь зарезервировал место для строковых переменных с помощью оператора CLEAR.
Также поддерживаются многомерные массивы с числовыми и строковыми переменными. В случае массива адрес элемента заключен в круглые скобки:
A ( 1 ) = 1 A $ ( 1 ) = "КНИГИ"
Несколько размеров разделяются запятыми.
A ( 1 , 3 ) = 4 A $ ( 2 , 2 ) = "XYZ123"
Операторы и символы
Color BASIC предоставляет несколько операторов как для математических, так и, в меньшей степени, для строковых операций.
- + может использоваться для объединения строк или для математического сложения
- - используется для вычитания
- * используется для умножения
- / используется для деления
Круглые скобки () используются для отмены математического порядка работы
- И используется для логических операций 'и'
- ИЛИ используется для логических операций 'или'
- НЕ используется для логических операций "не"
Для тестирования используются следующие операторы:
- = равно
- > больше чем
- <меньше чем
- > = больше или равно (также => допустимо)
- <= меньше или равно (также = <допустимо)
- <> не равно (также допускается> <)
Другие символы, используемые в BASIC:
- "" указывает, что строковые данные являются константой (статической)
- : разделяет несколько команд в одной строке программы
- Точка с запятой, встречающаяся в функции PRINT, приведет к тому, что вывод останется в той же строке.
- Запятая, встречающаяся в функции ПЕЧАТЬ, будет переходить к следующему столбцу.
Ключ
num указывает, что требуется числовое выражение. Это может быть фиксированное число, переменная или другая операция или функция, возвращающая числовое количество.
str указывает, что требуется строковое выражение. Это может быть статическое строковое значение (в кавычках), строковая переменная или другая функция или выражение, возвращающее строку символов.
номер устройства указывает на устройство. По умолчанию предполагается устройство 0 (экран и клавиатура). В Color BASIC программисту доступны устройство №1 (кассета) и №2 (принтер).
Режим редактирования
Если вы допустили ошибку при вводе строки, вы можете либо повторно ввести ее с нуля (или УДАЛИТЬ) .., либо отредактировать. В режиме EDIT вы получаете повторную печать строки и вторую копию, которую вы вводите пробелом через символы. Вы не можете использовать клавиши со стрелками. Backspace перемещает вас влево, но фактически не стирает его в буфере. «i» переводит вас в режим вставки. нажатие возврата выводит вас из этого состояния. 'c' изменяет один символ, 'd' удаляет один символ. 'x' переводит вас в конец строки, позволяя продлить ее. 'l' перерисовывает линию.
Функции
ABS(num)
- возвращает абсолютное значение из NUM
ASC(str)
- возвращает ASCII- код первого символа в str
CHR$(num)
- возвращает одиночный строковый символ с номером кода ASCII
EOF(device number)
- возвращает 0, если в файле есть данные, или -1, если в конце файла
INKEY$
- возвращает символ, если была нажата клавиша на клавиатуре, или null, если ничего не нажималось
INT(num)
- возвращает целую часть NUM
INSTR(startpos,search str,target str)
- ищет первую строку в целевой строке. startpos не является обязательным.
JOYSTK(num)
- возвращает положение оси джойстика (0-3) со значением от 0 до 63
LEFT$(str,num)
- возвращает первое ("левое") число символов строки str
LEN(str)
- возвращает длину (в символах) строки str
MEM
- возвращает доступную свободную память в байтах
MID$(str,start num,length num)
- возвращает подстроку строки str, начинающуюся с позиции start num и длину num символов. Также можно переназначить, добавив = "newvalue"
PEEK(num)
- возвращает значение ячейки памяти NUM (0-65535)
POINT(x num,y num)
- возвращает цвет точки полуграфики в позиции x numm (0-63) и y num (0-31)
RIGHT$(str,position num)
- возвращает конечную ("правую") часть строки str, начинающуюся с позиции символа num
RND(number)
- возвращает случайное число (целое) от 1 до num
SGN(num)
- возвращает знак числа num , 1, если положительное, -1, если отрицательное, 0, если 0
SIN(num)
- возвращает синус NUM в радианах
STR$(num)
- возвращает строку числа num
USR(num)
- вызывает подпрограмму на машинном языке, адрес которой хранится в ячейках памяти 275 и 276. num передается подпрограмме, а возвращаемое значение присваивается, когда подпрограмма выполнена
Команды
AUDIO [ON|OFF]
- Подключает или отключает аудиокассету от звука телевизора
CLEAR variable space[,highest memory location]
- резервирует память для строковых переменных и, необязательно, программы на машинном языке
CLOAD ["name"]
- загружает программу BASIC с кассеты. Если имя не указано, загружается следующая программа.
CLOADM ["name"]
- загружает программу на машинном языке с кассеты. Если имя не указано, загружается следующая программа.
CLOSE [device number]
- закрывает устройство (в Color BASIC это может быть только # -1, кассета)
CLS(num)
- очищает экран. Можно указать необязательный номер цвета (0-8).
CONT
- продолжает программу после нажатия кнопки BREAK или STOP
CSAVE ["name"]
- сохраняет программу BASIC на кассету с дополнительным именем
DATA var,var,var...
- сохраняет данные в программе BASIC для извлечения с помощью команды READ
DIM variable(dimension[,dimension 2,...]
- измеряет массив и резервирует для него место в памяти
END
- указывает на конец программы BASIC
EXEC
- [ адрес памяти ] выполняет программу на машинном языке по адресу памяти . Если не указан, используется адрес выполнения программы, загруженной с ленты.
INPUT [device number] [{prompt text};] variable [,variable 2, variable n]
- Ожидает ввода от номера устройства . Если не указано, предполагается устройство 0 (клавиатура). Необязательный запрос может быть напечатан на экране для оператора ввода.
LIST [starting line] - [ending line]
- перечисляет строки вашей программы. Либо начало, либо конец могут быть опущены, или, если оба опущены, будет перечислена вся программа
LLIST [starting line] - [ending line]
- работает как LIST, но выводит на принтер
MOTOR [ON|OFF]
- включает или выключает мотор кассеты
NEW
- стирает содержимое памяти (программу и переменную)
ON {num} GOSUB line 1, line 2, ... line n
- оценивает выражение num и вызывает перечисленную подпрограмму num
ON (num) GOTO line 1, line 2, ... line n
- вычисляет выражение num и переходит к номеру строки в списке
OPEN "[I|O]",device number[,"filename"]
- открывает устройство для связи
POKE memory address, data
- записывает данные (0-255) в адрес памяти (0-65535)
PRINT device number,expression
- печатает данные на указанное устройство. Если опущено, предполагается # 0 (экран).
PRINT @{screen position} expression
- работает как PRINT, но печатает в указанном месте (0-511)
READ variable[,variable,...]
- читает следующую переменную из программы BASIC, встроенной с операторами DATA
RENUM num
- перенумеровывает каждую строку программы на число, кратное числу
RESET(x,y)
- устанавливает пиксель полуграфика в местоположении x (0-63) и y (0-31) в черный цвет
RESTORE
- сбрасывает указатель READ обратно на первый оператор DATA
RETURN
- возвращается из подпрограммы
RUN num
- запускает программу BASIC, необязательно, на указанном номере строки
SET(x,y,color)
- устанавливает пиксель полуграфика в местоположении x (0-63) y (0-31) в цвет (0-8)
SKIPF ["filename"]
- пропускает BASIC программы на ленте, пока не будет найдено указанное имя программы
SOUND tone,duration
- звучит тон с частотой (1-255) и продолжительностью (1-255)
STOP
- заставляет программу перестать выполняться
TAB(column)
- вкладки в указанный столбец (используется с PRINT)
VAL(str)
- возвращает числовое значение строки, содержащей число в строковой форме
Поток управления
GOSUB {line number}
- вызывает подпрограмму по указанному номеру строки
GOTO {line number}
- переходит к указанному номеру строки программы
IF {test} THEN {command(s)} [ELSE {command(s)}]
- выполняет условную проверку. Если проверка верна, ТО выполняются команды, в противном случае (ИНАЧЕ) выполняются другие команды. Если не указано ELSE и проверка ложна, будет запущена следующая строка программы.
ДЛЯ {число} = {число} ДО {число} [ШАГ {число} ]...ДАЛЕЕ (число)
- создает цикл, в котором числовая переменная (num) проходит от начального числа до конечного числа с приращениями числа (STEP). Если шаг опущен, предполагается, что 1
Сообщения об ошибках
/0
- деление на ноль
AO
- указанный файл уже открыт
BS
- плохой индекс. нижний индекс вне диапазона DIM
CN
- не может продолжить (см. команду CONT)
DD
- попытка изменить размер массива
DN
- неверный номер устройства
DS
- ошибка прямого оператора (в программе нет номеров строк)
FC
- недопустимый вызов функции: функция содержит значение, выходящее за пределы допустимого диапазона
FD
- неверные данные файла: попытка прочитать число в строковое значение и т. д.
FM
- плохой файловый режим, попытка ВВОДА данных в файл, открытый для ВЫВОДА, и т. д.
ID
- незаконный прямой: указанная команда может быть запущена только в программе
IE
- ввод после конца файла. См. EOF
IO
- ошибка ввода / вывода
LS
- длинная строка: строки могут содержать не более 255 символов
NF
- СЛЕДУЮЩИЙ без FOR
NO
- файл не открыт
OD
- out of data: попытка чтения за пределами последних ДАННЫХ в программе
OM
- недостаточно памяти
OS
- вне строкового пространства: см. ОЧИСТИТЬ
OV
- переполнение: число вне допустимого диапазона
RG
- ВОЗВРАТ без GOSUB
SN
- синтаксическая ошибка
ST
- строковая операция слишком сложная
TM
- несоответствие типа (A $ = 3, A = "CAT")
UL
- попытка GOTO или GOSUB на несуществующую строку
Документированные подпрограммы ПЗУ
В Color BASIC ROM есть несколько подпрограмм для программ на машинном языке, которые доступны для программирования общего назначения.
POLCAT
- адрес [$ A000]: опрашивает клавиатуру для символа
CHROUT
- адрес [$ A002]: выводит символ на экран или устройство
CSRDON
- адрес [$ A004]: запускает кассету и готовится к чтению
BLKIN
- адрес [$ A006]: читает блок с кассеты
BLKOUT
- адрес [$ A008]: записывает блок в кассету
JOYIN
- адрес [$ A00A]: считывает значения джойстика
Рекомендации
- ^ 80-США. Интервью Билла Гейтса из Microsoft , 80-США - Том IV, номер 3 (1981-05) (80-Northwest Publishing) (США), стр. 8. Совсем недавно он завершил работу над цветным компьютером Radio Shack. Больше всего ему нравится написанный им пакет Extended Color Basic.
- ^ MESS
- Заметки
- Начало работы с Color BASIC , 1980, Tandy Corporation. Публикация № 8749266
- Цветная компьютерная дисковая система (Tandy) , 1981, Tandy Corporation. Публикация № 8749470-BCo
- Начало работы с Extended Color BASIC , 1984, Tandy Corporation. Публикация № 811013700A
- Color Computer 3 Exended Basic (Tandy) , 1986, Tandy Corporation. Публикация № 81101910A