Радио-86РК/Радио 08-88/Бейсик МИКРОН

Материал из Emuverse
Версия от 16:22, 27 ноября 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/RK86/Bas_Micron/BasMicrn.php)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: В. БАРЧУКОВ, Е. ФАДЕЕВ

Источник: http://retro.h1.ru/RK86/Bas_Micron/BasMicrn.php

Как и опубликованные ранее пакеты программ ASSM. «МИКРОН» и DIS. «МИКРОН», BASIC «МИКРОН» разработан для персонального компьютера «Радио-86РК» с объемом ОЗУ 16 или 32К. Читатели журнала уже знакомы с БЕЙСИКОМ и, вероятно, имеют некоторый опыт создания программ на нем. Тем же, чей опыт еще невелик, мы рекомендуем предварительно ознакомиться с циклом статей "БЕЙСИК для «МИКРО-80» и "БЕЙСИК для «РАДИО-86РК», в которых опубликовано достаточно подробное описание основных операторов и правил работы с языком.

Предлагаемый вниманию читателей интерпретатор BASIC «МИКРОН» совместим с обоими опубликованными версиями БЕЙСИКа по директивам, операторам и функциям, однако работа некоторых из них изменена. Интерпретатор имеет встроенный редактор, позволяющий редактировать строки, и ряд дополнительных директив, операторов и функций, предоставляющих пользователю более широкие возможности при разработке программ.

BASIC «МИКРОН» занимает в ОЗУ компьютера 8К байт с адреса 0 по 1FFFH. Интерпретатор может быть размещен в ПЗУ в той же области, что не нарушит его работоспособности.

После запуска (по директиве G0) на экран выводится сообщение BASIC «МИКРОН» и запрос NEW?, на который при отсутствии в ОЗУ программы пользователя нужно ответить нажатием клавиши «Y» или любой другой клавиши, если в ОЗУ находится какая-либо программа. Следует иметь в виду, что при первоначальном запуске необходимо всегда отвечать «Y». Если ошибочно была нажата другая клавиша, вновь вводят директиву NEW. При несоблюдении этих требований возможно нарушение работы интерпретатора.

После проведенных операций БЕЙСИК выходит в непосредственный режим, о чем сообщает оператору выводом сообщения «ЖДУ:».

В этом режиме вводят строки программы, директивы или операторы для их непосредственного исполнения. Ввод осуществляется с клавиатуры, причем вводимую информацию можно сразу редактировать, вставляя пропущенные или удаляя ошибочно введенные символы.

Для вставки курсор подводят к символу, перед которым предполагается вставка, и вводят пропущенный символ. Удаление символа происходит при нажатии клавиши «F2» после установки курсора под этим символом. Ввод заканчивается нажатием клавиши «ВК». Нажатие клавиши «F4» приводит к отмене вводимой информации.

Максимальная длина строки — 128 символов. При достижении этого значения ввод информации блокируется.

Для более оперативного набора программ в BASIC «МИКРОН» предусмотрена возможность ввода служебных слов последовательным нажатием клавиши «АР2» и клавиши, соответствующей этому служебному слову.

Таблица соответствия символьных клавиш служебным Словам приведена на развороте цветной вкладки. Там же приведены таблицы директив операторов и функций BASIC «МИКРОН» с кратким описанием их работы.

Теперь несколько слов об отличиях работы некоторых директив, операторов и функций интерпретатора.

Прежде всего, остановимся на изменениях и дополнениях, связанных с выводом информации на экран дисплея. Он осуществляется оператором «PRINT», причем числа или значения числовых переменных выводятся с дополнительными пробелами до и после числа, а символы или значения символьных переменных — без них. Приведем пример, иллюстрирующий сказанное выше:

ПРИМЕР 1

    ЖДУ:
    PRINT 10;5,10;5<ВК>
    . 0...5.......105 
    ЖДУ:

Действие операторов форматирования «;» и ", " с оператором «PRINT» соответствует принятым в БЕЙСИКЕ и предполагает вывод последующей информации, начиная соответственно со следующей позиции или с позиции, кратной 14. В BASIC «МИКРОН» совместно с оператором «PRINT» можно использовать оператор принудительного перевода строки «'» (АПОСТРОФ), действие которого аналогично наличию в строке дополнительного оператора «PRINT» без параметров. На следующие две строки программы интерпретатор отреагирует идентично

ПРИМЕР 2 
    10 PRINT ' ' ' ' "ПРОВЕРКА" 
    20 PRINT:PRINT:PRINT:PRINT "ПРОВЕРКА"

Оператор форматирования TAB(N) выводит информацию, начиная с позиции «N» в текущей строке, причем символы в позициях с номерами меньше «N» не стираются («N» лежит в диапазоне от 0 до 63).

Для вывода информации в определенном месте экрана совместно с оператором «PRINT» можно использовать оператор AT X, Y, где Х — номер позиции в строке, а Y — номер строки экрана (максимальное значение Х равно 63, Y — 24).

ПРИМЕР 3
    ЖДУ:
    PRNT AT 10,10;"A";AT 20,20;"B";AT 30,8;10<BK>

В результате выполнения этой строки символ «А» будет выведен в позицию с координатами Х=10, Y=10, символ «В»- в позицию с Х=20, Y=20, а число 10 — в позицию с Х=30, Y=8.

Нередко возникает необходимость перевода десятичного числа в шестнадцатеричное. Для этой цели в интерпретаторе предусмотрен оператор «@», который также используется совместно с оператором «PRINT» и позволяет выводить на экран число или результат вычисления какого-либо выражения в шестнадцатеричном виде при условии, что это число не превышает 65535 (FFFFH). Если число дробное, то в шестнадцатеричном виде будет представлена только его целая часть.

ПРИМЕР 4 
    жду:
    PRINT @100;@(4000+96) <BK>
    ЖДУ:

Следует отметить, что в BASIC «МИКРОН» все числа, начиная от 8000Н до FFFFH, представляются отрицательными.

ПРИМЕР 5
    ЖДУ:
    PRINT &7FFF,&8000,&FFFF<BK>
    32767........-32768. ......-1
    ЖДУ:

При выводе числа учитывается его длина, и если она больше, чем число оставшихся позиций в строке, то число будет выведено с начала следующей строки, что исключает возможность вывода одной части числа на одной строке, а его продолжения на следующей. Вывод большого количества чисел с применением оператора форматирования ", ", приводит к размещению их на экране в четыре столбика.

Для вывода информации на принтер в BASIC «МИКРОН» предусмотрен оператор «LPRINT», действие которого аналогично действию оператора «PRINT» со всеми работающими совместно с ним операторами (кроме, конечно, операторов AT X, Y и CUR X, Y). Информация при использовании оператора «LPRINT» одновременно отображается и на экране дисплея. Совмещение интерпретатора с программой, обслуживающей принтер, заключается в занесении в ячейки 0385Н, 0386Н адреса старта этой программы. Первоначально в этих ячейках записан адрес 0F80FH.

Вывод текста программы на экран дисплея производится директивой «LIST N1, N2». Параметры N1 и N2 необязательны и могут отсутствовать, например:

  • LIST N1, N2 -вывод части текста программы от строки с номером N1 до строки N2 включительно;
  • LIST N1, от строки с номером N1 до конца программы;
  • LIST, N2 — с начала программы до N2;
  • LIST вывод всего текста программы.

Текст программы может быть выведен и на принтер, если воспользоваться директивой «LLIST», параметры которой аналогичны параметрам директивы «LIST», Если требуется прекратить вывод текста программы, нажимают клавиши «УС» и «С» или клавишу «F4».

BASIC «МИКРОН» имеет существенные отличия в директивах обслуживания магнитофона. Для записи программ на магнитную ленту используется директива «CSAVE», за которой в кавычках следует указать имя программы. Впрочем, имя может и отсутствовать, но кавычки обязательны.

НАПРИМЕР:
    CSAVE "программа 1" - запись программы с именем программа 1;
    CSAVE " " - запись программы без имени (с "ПУСТЫМ" именем).

После того, как нажатием клавиши «ВК» будет завершен ввод этой директивы, начнется запись программы. Формат записи следующий. Сначала записываются «РАКОРД» длительностью около 3 с и имя программы, затем следует РАКОРД с вдвое меньшей частотой и длительностью около 5 с, за которым выводится текст самой программы. Для увеличения достоверности операций записи/чтения производится подсчет контрольных сумм.

Чтение программ с магнитной ленты происходит по директиве «CLOAD», при которой в кавычках может быть указано имя.

НАПРИМЕР:

  • CLOAD «ПРОГ 1» <ВК> — загрузка с магнитофона программы с именем «ПРОГ 1». Имена других программ, встретившихся на ленте, будут выводиться на экран, но сами программы не будут загружаться в память компьютера:
  • CLOAD " " [ВК] — загрузка с ленты первой встретившейся программы;
  • CLOAD [ВК] — загрузка программ, записанных с помощью ранее опубликованных версий БЕЙСИКА для компьютеров «МИКРО-80» и «РАДИО-86РК».

Если при загрузке программы выявлена ошибка, то на экран будет выведено сообщение «НЕСООТВ. ДАННЫХ».

Качество записи программы на магнитную ленту можно проверить, воспользовавшись директивою «VERIFY», аналогичной по синтаксису директиве «CLOAD». При проверке качества записи происходит сравнение программы, находящейся в ОЗУ компьютера, с записью на магнитной ленте.

С помощью директивы «MERGE» (синтаксис аналогичен «CLOAD») можно объединить программу, находящуюся в ОЗУ, с программой, загружаемой с магнитной ленты. При этом следует иметь в виду, что номера строк подгружаемой программы должны быть больше максимального номера строки программы, находящейся в ОЗУ.

Если длина загружаемой программы окажется больше размера свободной области в ОЗУ, то будет выведено сообщение «МАЛО ОЗУ».

В BASIC «МИКРОН» имеется отличие от ранее опубликованных версий при работе с данными, определяемыми оператором «DATA» или вводимыми с клавиатуры оператором «INPUT».

Считывание данных с помощью оператора «READ» может осуществляться в любой последовательности, для чего в операторе «RESTORE» предусмотрен параметр, который определяет номер строки, на которую настраивается указатель при работе оператора «READ». При отсутствии у оператора «RESTORE» параметра указатель настраивается на самый первый блок данных, определенных оператором «DATA».

ПРИМЕР 6
    10 BESTORE 80 
    20 READ A,8,С 
    30 PRINT А,В,С 
    40 RESTORE 70 
    50 READ А,В,С 
    60 PRINT А,В,С 
    70 DATA 10,20,30 
    80 DATA 1,2,3

После запуска этой программы на экран последовательно будут выведены числа 1, 2 и 3, а на следующей строке −10, 20 и 30.

Ввод данных с клавиатуры осуществляется оператором «INPUT», который может быть определен только в программе и имеет следующий основной формат записи

100 INPUT "ЖДУ ВВОДА";А,В,С...

При выполнении этой строки на экран сначала будут выведены сообщение «ЖДУ ВВОДА» и знак вопроса. Компьютер будет ожидать ввода данных. В случае его успешного завершения обозначенным переменным будут присвоены соответствующие значения. При вводе данных с помощью оператора «INPUT» сообщение в кавычках и они сами могут отсутствовать а переменные могут быть как числовыми, так вольными. Особенностью интерпретатора является то, что при желании можно отменить вывод значения запроса при ожидании ввода данных. Для этого, в операторе «INPUT» после сообщения в кавычках надо поставить ", «, вместо обычно применяемой при этом точки с запятой. Если все переменные, определяемые оператором „INPUT“, числовые, то вводимые данные могут быть числами, так и результатами каких-либо арифметических выражений. Это позволяет очень просто организовать „калькуляторный режим“, не требующий, каждый раз ввода оператора „PRINT“ при каких-либо расчетах.

ПРИМЕР 8
    10 INPUT "введите число;", х: PRINT х: GOTO 10
    RUN
    ВВЕДИТЕ ЧИСЛО:2*2<ВК>=4
    ЖДУ:
    ВВЕДИТЕ ЧИСЛО:?А<ВК>=10 
    ВВЕДИТЕ ЧИСЛО:2^13<BK>8192
    ВВЕДИТЕ ЧИСЛО<F4> 
    ЖДУ:

Если первая или все переменные, описываемые оператором „INPUT“, символьные, то выполнение арифметических Операций при вводе данных блокируется.

Если 1 первая переменная числовая, а остальные символьные, то арифметические операции разрешены, но при вводе символьных данных возможны курьезные ситуации.

ПРИМЕР 9 
    10 INPUT A,A$
    20 PRINT A,A$
    ЖДУ:
    RUN
    ? 5*7, STEPANOW<BK>
    35 $ANOW
    ЖДУ:

Об этом следует помнить при написании программ с использованием оператора „INPUT“. В отличие от ранее опубликованных версий БЕЙСИКa выход из режима ввода данных по нажатию виши „ВК“ при не полностью введенных данных блокирован, в этом случае при нажатии „ВК“ выводится вопросительный знак, под которым располагается курсор и ожидается ввод недостающих данных. Однако, если нажать клавишу „F4“ (УС и С), то интерпретатор перейдет в непосредственный режим. Если в процессе ввода будут введены лишние данные, они интерпретатором игнорируются. Вce служебные слова в BASIC „МИКРОН“ (операторы, директивы и т. д.) должны быть написаны слитно, то есть в них не должно быть пробелов. Ранее опубликованные версии БЕЙСИКа, анализируя вводную строку, сами удаляли лишние, по мнению интерпретатора, пробелы. Это приводило к различным курьезам: так, после ввода строки 10 FORI=NOТО X, которая не содержит синтаксических ошибок, при запуске программы интерпретатор обнаруживал ошибку. Просмотрев эту строку по директиве „LIST“, можно было обнаружить слияние имени переменной NO с первой буквой служебного слова „ТО“, что приводило к ошибке, так как интерпретатор воспринимал строку в следующей редакции: 10 FOR 1=NOT O X. В BASIC „МИКРОН“ эта ситуация исключена. Здесь следует отметить, что имена переменных могут содержать любое число символов, но их идентификация производится только по первым двум символам.

Большим преимуществом BASIC „МИКРОН“ является наличие набора директив, позволяющих упростить процесс ввода и редактирования текста программы. Рассмотрим их работу.

Директива „AUTO“ имеет два необязательных параметра, определяющих начальный номер строки и шаг увеличения номеров строк, и позволяет осуществить автоматическую нумерацию вводимых строк программы.

По умолчанию каждый из параметров равен 10. Для выхода из режима „AUTO“ нужно нажать клавишу „F4“ (УС + С).

ПРИМЕР 10
    AUTO 10,10 
    AUTO 5,5 
    AUTO 10,5

Директивой „EDIT N“ можно вызвать для редактирования строку программы с номером N. После ввода этой директивы на экран выводится текст строки, и интерпретатор ожидает ввода. Редактирование производится так же, как и при вводе строки: вставкой или удалением символов. Все изменения текста при редактировании немедленно отображаются на экране. Выход из режима происходит при нажатии клавиши „ВК“, причем текущее положение курсора в этот момент не имеет значения. Нажатием клавиши „F4“ можно отменить режим редактирования, и в программе останется старая строка.

Директива „DELETE N1, N2“ удаляет фрагмент программы, с номерами строк от N1 до N2 включительно.

Директива „RENUM N1, N2“ служит для перенумерации строк программы. При этом N1 определяет номер строки, с которой будет начинаться программа, а N2 — шаг приращения строк. По умолчанию каждый из параметров равен 10.

В описываемом интерпретаторе имеются операторы, позволяющие упростить процесс разработки программ. Так, оператор „HOME“ (без параметров) очищает экран и устанавливает курсор в левый верхний угол.

Оператор „PAUSE Т“ определяет задержку выполнения программы на Т секунд. Диапазон возможных изменений Т от 0.0015 до 65 с. Задавать Т меньше 0.0015 с не следует, так как величина задержки будет неопределенной. Особо следует выделить случай, когда Т=0: дойдя до строки с этим оператором, интерпретатор остановит выполнение программы и возобновит его только после нажатия любой клавиши.

Для формирования звуков различной высоты и длительности служит оператор „ВЕЕР Т, N“, где Т-длительность формируемого звука, а N — высота тона. Диапазон изменений Т такой же, как и в операторе „PAUSE“, а N может принимать значения от −24 до 24. N, равное 0, соответствует НОТЕ „ДО“ первой октавы, N, равное 1,-»ДО ДИЕЗ" первой октавы, равное 12-"ДО" второй октавы, равное минус 12-"ДО" малой октавы и т. д. Звуковой сигнал выдается через порт магнитофона. Из-за особенностей схемотехнического решения компьютера «РАДИО-86РК» звуковой сигнал имеет не очень чистый звук, но достаточно различимый по высоте.

Интерпретатор позволяет вводить и выводить числа в шестнадцатеричной форме. Такие числа предваряются символами «&» для шестнадцатеричного ввода и «@» для шестнадцатеричного вывода. Например, &10=16, &FF= 255 и т. д. Следует иметь в виду, что после знака «&», как шестнадцатеричное число определяются четыре последних символа, являющихся шестнадцатеричными цифрами (цифры от 0 до 9 и буквы А, В, С, D, Е, F). Любой другой символ воспринимается, как признак конца шестнадцатеричного числа.

ПРИМЕР 11.
    &65600=&5600&10.5
    ДВА ЧИСЛА 10H И 0.5 
    &10+5=21

При написании «динамических» программ, и особенно игровых, часто возникает необходимость определения кода нажатой клавиши без остановки выполнения программы. В BASIC «МИКРОН» для этого введен оператор «INKEY$». Он возвращает символ, соответствующий нажатой клавише, или признак «ПУСТОЙ СТРОКИ», если ни одна из клавиш не нажата.

Например, если ввести и запустить следующую программу:


ПРИМЕР 12 
    10 PRINT INKEY$;: ВЕЕР 0.2, 020 GOTO 10

то при ее работе на экран выводятся символы, соответствующие нажимаемым клавишам и подается звуковой сигнал. Если ни одна из клавиш не нажата, выдается только звуковой сигнал. Следует иметь в виду, что «ПУСТАЯ СТРОКА» описывается двумя кавычками, между которыми ничего не набирают.

ПРИМЕР 13 
    30 IF THEN GOTO 30

Таким образом, строка программы следующего примера указывает интерпретатору на необходимость остановиться и ожидать нажатия любой клавиши. При написании программ не следует использовать оператор «ASC» совместно с оператором «INKEY$», если по ходу выполнения программы «INKEY$» может принимать значение «ПУСТАЯ СТРОКА».

Для определения символа, расположенного на экране в какой-либо позиции, предназначен оператор «SCREEN$ (X,Y)». Он возвращает символ, имеющий на экране координаты X, Y.

В BASIC «МИКРОН» введены дополнительные арифметические и тригонометрические операторы, ускоряющие разработку и сокращающие текст программ.

К ним относятся:

  • LG(X) — десятичный логарифм числа «X»,
  • ASN (X) — арксинус числа «X».
  • ACS (X) — арккосинус числа «X»,
  • РI — число «ПИ» (3.14159).

При написании программ на БЕЙСИКе, содержащих фрагменты, написанные в машинных кодах, может возникнуть необходимость обмена данными между АССЕМБЛЕРНЫМИ И БЕЙСИК0ВЫМИ частями программы. Для этих целей в интерпретаторе предусмотрен оператор «ADDR(X)». Он возвращает число, которое является адресом ячейки памяти, начиная с которой хранится переменная «X». Два байта в памяти, расположенные перед ячейкой, адрес которой определяется оператором «ADDR(X)», хранят коды первых ДВУХ Символов в имени переменной. Переменная может быть как числовой, так и символьной. Под числовые переменные отводится в ОЗУ 6 байт. Значения переменных хранятся в логарифмическом виде (по основанию 2), причем последний старший байт — характеристика, а три младших — мантисса переменной. Старший бит третьего байта знаковый. Для отрицательных чисел он равен единице. С помощью следующей простой программы можно посмотреть, как представляются различные числа в БЕИСИКе.

ПРИМЕР 14
    10 INPUT "ЧИСЛО"; X: PPINT "ЕГО ПРЕДСTABЛЕНИЕ: "; 
    20 PRINT @PEEK (ADDR (X)+3);: REM ВЫВОД ЧЕТВЁРТОГО БАЙТА (СТАРШЕГО) 
    30 PRINT @PEEK (ADDR (X)+2);:RЕM ВЫВОД ТРЕТЬЕГО БАЙТА 
    40 PRINT @PEEK(ADDR(X)+1);;REM ВЫВОД ВТОРОГО БАЙТА 
    50 PRINT @PEEK (APDR (X)): RЕМ ВЫВОД ПЕРВОГО БАЙТА (МЛАВШЕГО) 
    60 GOTO 10 
    RUN

После запуска этой программы и ввода какого-либо числа на экран будет выводиться его представление в БЕЙСИКе в виде четырех шестнадцатеричных чисел.

ПРИМЕР 15 
    ЧИСЛО? 1 ЕГО ПРЕДСТАВЛЕНИЕ: 81 00 00 00 
    ЧИСЛО? -1 ЕГО ПРЕДСТАВЛЕНИЕ: 81 80 00 00
    ЧИСЛО? <ВК>
    ЖДУ:

Хранение символьных переменных в BASIC «МИКРОН» отличается от хранения числовых. В первой ячейке памяти хранится длина символьной переменной, вторая не используется, а в третьей и четвертой размещены соответственно младший и старший байты адреса начала последовательности символов этой переменной в специально отведенном буфере символьных переменных.

ПРИМЕР 16
    10 INPUT "СТРОКА$
    20 HI=PEEK (AВDR (X$)+3): REM СТАРШ. БАЙТ АДРЕСА СИМВ. ПЕРЕМ. 
    30 LO=PEEK (ADDR (X$)+2): REM МЛАДШ. БАЙТ АДРЕСА СИМВ. ПЕРЕМ. 
    40 L=PEEK (ADDR (X$)): REM ДЛИНА СИМВ. ПЕРЕН. 
    50 PRINT "АДРЕС В БУФЕРЕ:"@(HI*256+LO);"H" 
    60 PRINT СТРОКА ИЗ БУФЕРА:";
    70 FOR I=0 ТО L-1: PRINT CHR$(PEEK (HI*256+LO+I)): NEXT: REM РАСПЕЧ. 
    80 PRINT ": GOTO 10:REM ПРОПУСТИТЬ СТРОКУ И ПОВТОР. ВВОД

При работе с символьными переменными (особенно при использовании оператора «+») следует иметь в виду, что размер буфера символьной переменных должен быть, как минимум, в два раза больше общего предполагаемого числа символов всех символьных переменных. Так, например, если предполагается, что в результате работы программы общее число символов всех символьных переменных будет равно 200, то необходимо установить размер этого буфера в 400 или более ячеек памяти, воспользовавшись директивой CLEAR400.

Несколько слов об сообщениях об ошибках. Они выводятся на экран названием ошибки с указанием номера строки, в которой она допущена. Строка, а которой обнаружена синтаксическая ошибка, выводится на экран для редактирования.

При необходимости прервать работу программы и выйти в непосредственный режим нажимают клавиши «F4» или УС и С. Возобновить работу программы в этом случае по директиве «CONT» нельзя. Если использовать для выхода в непосредственный режим нажатие клавиш УС -"Е", то директивой «CONT» можно продолжить работу программы.

Коды BASIC «МИКРОН», приведенные в табл.1, предназначены для 32-килобайтной версии компьютера «РАДИО-86РК». Для 16-килобайтной версии необходимо изменить содержимое ячеек памяти в соответствии с табл. 2. Поблочные контрольные суммы приведены в табл. 3.

Таблица 2.

АДРЕС 16K 32к
0002 35 75
190E 3F 7F
1925 36 76
1933 36 76
1CC4 36 76
1CCA 40 80

Таблица 3.

ОБЛАСТЬ ОЗУ КOHTP СУММ ОБЛАСТЬ ОЗУ КОНТР СУММ
0000-00FF A85E 1000-10FF З8B8
0100-01FF С163 1100-11FF АЕ06
0200-02FF 61B6 1200-12FF 9СЕ6
0300-03FF 5D10 1300-13FF 8C27
0400-04FF 2ВС9 1400-14FF F492
0500-05FF 175В 1500-15FF СA43
0600-06FF С956 1600-16FF 2EAE
0700-07FF 5991 1700-11FF 7В19
0800-08FF АА4А 1800-18FF 3C25
0900-09FF 1В65 1900-19FF 7499
0A00-0AFF E7F6 1A00-1AFF 0665
0B00-0BFF C941 1B00-1BFF AA4E
0C00-0CFF 37E5 1C00-1CEF 11AA
0D00-0DFF D336 1D00-1DFF E3F5
0E00-0EFF 49E7 1E00-1EFF 784B
0F00-0FFF DС59 1F00-1FFF 422С
0000-1FFF 55С1    

Распределение памяти после запуска БЕЙСИКа по директиве «G0» МОНИТОРа для обеих версий следующее:

0000H - 1FFFH Basic “Micron”
2000H - 21FFH Служебная область
2200H - 75С0H Текст программы бейсике
73С0H - 75FFH Буфер (Символьные переменные 150 байт)

Как видно из рисунка, для работы интерпретатора используется вся оперативная память компьютера. Директивой «HIMEM N» можно сместить вниз верхнюю границу используемой БЕЙСИКОм оперативной памяти. N может принимать значения от 2400Н до стека. В освободившейся части ОЗУ может быть размещена программа в машинных.

0000H - 1FFFH Basic “Micron”
2000H - 21FFH Служебная область
2200H - 25С0H Текст программы бейсике
25C0H - 2FFFH Буфер (Символьные переменные 150 байт)
3000H - 75FFH Свободная область памяти

В качестве примера на рис. 2 приведено распределение памяти после выполнения директивы НIМЕМ &3000.

Как и в ранее опубликованных версиях, нажатием клавиши «СТР» можно выйти в МОНИТОР. Вновь запущенный после этого БЕЙСИК директивой G0 МОНИТОРа не сохраняет изменения распределения памяти, проведенные директивами CLEAR и НIМЕМ. Если их необходимо сохранить, то запуск БЕЙСИКа следует производить с адреса 0F1Н (директива МОНИТОРа GF1). Следует иметь в виду, что при запуске БЕЙСИКа с адреса 0 область ОЗУ от 7500Н до 75PFH будет испорчена. Поэтому располагать программы в машинных кодах в этой области не рекомендуется.

И последнее замечание. Тем радиолюбителям, у которых нет принтера, мы рекомендуем в ячейку памяти 0384Н, 0385Н, 0386Н занести коды 00 для исключения каких-либо недоразумений.

В. БАРЧУКОВ, Е. ФАДЕЕВ, г. Москва