Как запустить бейсик в радио 86рк
Перейти к содержимому

Как запустить бейсик в радио 86рк

  • автор:

Радио-86РК/Радио 03-91/Программа БЕЙСИК-ПОИСК

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

Автор: Ю. СОЛНЦЕВ

Не так уж редко в практике встречается ситуация, когда после долгого и кропотливого набора программы она «отказывается» работать. На поиск причин иногда уходит не меньше времени, чем на набор… Программа «Бейсик — Поиск» предназначена для тех, кто работает с языком Бейсик и сталкивается с описанной ситуацией.

Толчком к ее созданию послужил общеизвестный факт: среди любителей имеют хождение самые разнообразные версии интерпретаторов этого языка, в том числе и несовместимые друг с другом версии одного и того же интерпретатора. В распоряжении у автора имеется, по крайней мере, четыре версии интерпретатора «Бейсик МИКРОН», не имеющие никакого отношения ни к версии, опубликованной в журнале «Радио», ни к ее авторам. А сколько их еще пущено неизвестными «доброжелателями» гулять по стране? (Ведь авторские права на программные продукты практически никак не защищены…). Часто программы не работают на «чужой» версии интерпретатора, даже если он корректен. Известны, например, варианты МИКРОНа, в одной из которых длительность паузы задается в секундах, а в другой — в миллисекундах, по разному задается высота тона звукового сигнала и т. д. Чтобы заставить программу работать, необходимо в ее тексте отыскать «критичные» строчки и внести исправления. Аналогичная задача возникает и при адаптации программы, переносе с одной машины на другую, исправлении текстовых сообщений, когда необходимо редактирование текста программы, а визуальный поиск нужного фрагмента затруднен. Во всех этих случаях автор пользуется написанной несколько лет назад программой «Бейсик — Поиск».

Что же умеет эта программа? Она предназначена для поиска в тексте программы фрагментов текста (до 32 символов длиной) и ключевых слов Бейсика. Номера строк, в которых содержится искомый фрагмент или ключевое слово, выводятся на экран в десятиричном виде. Остается только записать их и затем отредактировать нужные строки обычным способом. Таким образом, наиболее утомительная и длительная процедура визуального поиска автоматизируется. Нелишне упомянуть, что ошибки и пропуски при таком поиске исключаются, тогда как при визуальном требуется не один раз «пройтись» по тексту.

Программа «Бейсик — Поиск» написана на АССЕМБЛЕРе и располагается в области ОЗУ начиная с адреса 6000Н. Собственно программа заканчивается в ячейке с адресом 625ЕН, а с 625FH по 6285Н расположен текстовый буфер и служебные ячейки. Это следует учитывать при размещении программы ПЗУ.

Коды программы «Бейсик — Поиск» приведены в таблице 1, а поблочные контрольные суммы — в табл.2. Программа ориентирована на компьютер «РАДИО-86РК» с объемом ОЗУ 32Кб и интерпретатор «Бейсик МИКРОН». Состоит она из нескольких блоков. В начале производятся очистка ОЗУ и ввод исходной информации. Затем, если осуществляется поиск текстового фрагмента, идет побайтное сравнение текста программы (начиная с адреса 2200Н) с содержимым текстового буфера. При их полном совпадении на экран выводится номер строки, содержащий искомый фрагмент текста, и поиск продолжается до конца текста программы. Очевидно, что чем длиннее искомый фрагмент, тем дольше идет сравнение и тем продолжительнее поиск, поэтому для ускорения процесса рекомендуется ограничивать размер фрагмента минимально необходимой величиной, не добиваясь, например, законченности слова или фразы.

Таблица. 2 6000-60FF 4C3E 6100-61FF 08BE 6200-6285 EBC0 6000-6285 8FBC

Поиск ключевых слов интерпретатора Бейсик проходит несколько сложнее. Это связано с тем, что в памяти компьютера ключевые слова хранятся в закодированном виде. Поэтому прежде всего нужно определить код ключевого слова, а затем уже отыскать этот код в тексте программы. Таблица ключевых слов расположена начиная с адреса 609ЕН по адрес 61В1Н. Для сокращения объема таблицы каждое ключевое слово представлено в ней тремя символами. При вводе слова для поиска можно набрать его полностью, а можно ограничиться первыми тремя буквами (если слово содержит больше трех букв). Исключением является ключевое слово INP, у которого первые три буквы такие же, как и у ключевого слова INPUT. Конечно, ключевое слово INP (чтение из порта) можно было бы вообще исключить, так как в интерпретаторах Бейсика для «Радио-86РК» оно не используется однако для универсальности программы «Бейсик — Поиск» оно сохранено в таблице и может быть найдено в тексте программы. Необходимо только помнить, что при поиске этого слова нужно вводить только первые две буквы, то есть вместо INP нужно набрать IN. Остальные ключевые слова набираются обычным способом.

У читателя может возникнуть необходимость расположить программу «Бейсик — Поиск» в другой области ОЗУ. Удобнее всего это сделать в соответствии с рекомендациями по перемещению программ в машинных кодах Процедура перемещения была подробно описана ранее, а требующаяся для этого таблица коррекции ВITMAP приведена в табл. 3. Она занимает область ОЗУ с адреса 300Н по адрес 351Н, контрольная сумма самой таблицы BITMAP=7А73Н.

Таблица 3. 0300 20 80 48 00 42 00 10 80 80 01 21 04 II 10 84 0C 0310 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0С 0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0С 0330 00 00 00 00 00 00 08 04 90 44 21 08 22 10 44 9C 0340 91 12 01 20 20 82 II 00 40 08 10 00 00 00 00 0С 0350 00 00

Программу «Бейсик — Поиск» можно использовать и для работы с другими интерпретаторами Бейсик, однако, если кодировка ключевых слов не совпадает с, то может понадобиться корректировка таблицы соответствия. В разных версиях интерпретаторов Бейсик могут быть разные адреса начала текста программы (в «МИКРОНе» это 2200Н), при необходимости новое значение следует записать в ячейки 61С5Н и 61С6Н, при этом в первую ячейку записывается значение младшего байта, увеличенное на единицу, а во вторую — значение старшего байта адреса. Но в любом случае маркировка конца строки, номера строки и конца текста должна быть такой же, как и в Бейсик «МИКРОН».

Как работать с программой «Бейсик — Поиск»?

Прежде всего нужно загрузить интерпретатор Бейсик «МИКРОН» и анализируемую программу. Затем загружают и запускают директивой G6000 программу «Бейсик — Поиск». На экран будет выведено приглашение ввести слово для поиска:

SEARCH>

Теперь можно набрать фрагмент текста или ключевое слово, например:

SEARCH> СЛЕДУЮЩИЙ ХОД или: SEARCH> PAUSE

При наборе фрагмента текста он не обязательно должен быть законченным или осмысленным, может быть и такой:

SEARCH> С ЮЩИЙ Х Д АШ

На этом этапе пока неважно, что будем искать — текст или ключевое слово, главное, набрать его без ошибок. Если же ошибка допущена, нажмите клавишу ЗАБОЙ; ввод прекратится, и на экране вновь появится приглашение:

SEARCH>

По окончании набора нажмите клавишу «ВК» (если набирался длинный текстовый фрагмент и превышен объем буфера (32 символа), программа перейдет в режим поиска автоматически). Фрагмент для поиска окажется «закрыт» угловыми скобками:

SEARCH> ^PAUSE^

Далее на экран выводится запрос:

TEXT (Y/N)?

При поиске текстового фрагмента необходимо ответить Y, а при поиске ключевого слова — N.

Например, если после набора слова PRINT на запрос TEXT (Y/N)? ответить Y, то произойдет поиск слова PRINT среди сообщений анализируемой программы, взятых в кавычки и хранящихся в ОЗУ в виде кодов ASCII. Если же ответить N, то произойдет поиск оператора PRINT.

Как только в тексте программы встретится искомое ключевое слово или текст, на экран будет выведен номер строки и так далее до конца текста. По окончании поиска (независимо, успешного или нет) программа вернется в исходное состояние и на экране вновь появится сообщение:

SEARCH>

Поиск фрагментов текста или ключевых слов можно продолжить или, нажав Е4, выйти в МОНИТОР.

Номера строк нужно записать вручную или, если есть такая возможность, распечатать на принтере (режим CTPL P). Далее, запустив интерпретатор Бейсик, проводят редактирование обычным способом.

Ю. СОЛНЦЕВ, г. Москва

Радио-86РК/Радио 01-88/Бейсик Сервис

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

Автор: В. НАУГАДОВ

Радиолюбители, использующие на своих персональных компьютерах интерпретатор языка БЕЙСИК, описанный в [1], наверняка отметили такое его достоинство, как довольно широкий набор выполняемых функций при относительно небольшом объеме занимаемой памяти. К сожалению, интерпретатору свойствен и серьезный недостаток — отсутствие встроенных средств редактирования и обработки программных текстов, что приводит к довольно большим затратам времени при отладке и модификации программ. Так, например, для исправления или добавления в текст строки всего одного символа необходимо набирать всю программную строку заново, а новый набор, как известно, можно повлечь да собой и новые ошибки. В целом же, работа по вводу и отладке программ с данным интерпретатором оказывается довольно утомительной.

Программа «БЕЙСИК-СЕРВИС» (далее ПРОГРАММА), предлагаемая вниманию радиолюбителей, разработана специально для интерпретатора [1] с целью обеспечения возможности быстрого редактирования и изменения текстов программ при отладке. ПРОГРАММА, кроме того, позволяет пользователю реализовать возможность автоматической нумерации строк программы при первоначальном вводе текста и ускоренный ввод с клавиатуры наиболее часто используемых ключевых слов БЕЙСИКА. Это существенно увеличивает производительность труда разработчика при работе с интерпретатором, снижает утомляемость при отладке и значительно ускоряет выход полностью завершенных программ.

Объем памяти, занимаемый ПРОГРАММОЙ — 0,75 Кбайт, а располагается она в адресном пространстве, непосредственно примыкающем к интерпретатору. Такое решение позволяет загружать ПРОГРАММУ с магнитофона одновременно с загрузкой интерпретатора, считая последнюю его составной частью. Область хранения программ на БЕЙСИКЕ в этом случае сдвигается и начинается с адреса 1D00H. Радиолюбителям, имеющим компьютер с объемом оперативной памяти 16 Кбайт, полезно хранить на магнитной ленте обе версии интерпретатора — прежнюю и с программой «БЕЙСИК-СЕРВИС». Поскольку в прежней версии область хранения программ на БЕЙСИКЕ на 0.5 Кбайт больше, то при нехватке оперативной памяти ее можно использовать для работы с полностью отлаженными программами.

Машинные коды программы «БЕЙСИК-СЕРВИС» для компьютера «РАДИО-86РК» приведены в табл.1. Следует иметь в виду, что ПРОГРАММА предназначена только для транслятора [1] с учетом изменений и дополнений, опубликованных в [2] и табл.2 и 3 данной статьи. ПРОГРАММА полностью сохраняет предложенные в [2] функции клавиш F1 — F4, однако в тех случаях, когда нажатие этих клавиш нарушает нормальную работу ПРОГРАММЫ, их действие блокируется программно.

КОДЫ ПРОГРАММЫ " БЕЙСИК СЕРВИС " ДЛЯ КОМПЬЮТЕРА " РАДИО-96РК " 1A00 11 88 00 FE 32 C8 1E 8В FE 46 C8 1E 8E FE 4E C8 1A10 1E 92 FE 44 C8 1E 96 FE 49 C8 1E 9В FE 31 C8 1E 1A20 9E FE 51 C8 1E A2 FE 43 C8 1E A5 FE 4A C8 1E B5 1A30 FE 47 C8 1E BA FE 52 C8 1E C0 FE 3В C8 1E C3 FE 1A40 33 C8 1E CC FE 50 C8 1E D0 FE 4C C8 1E D4 FE 59 1A50 C8 1E D8 FE 20 C8 1E DD FE 34 C8 1E E8 FE 4В C8 1A60 1E ED FE 40 C8 1E F2 FE 4F C8 1E FA FE 42 C8 11 1A70 00 01 FE 5A C8 1E 06 FE 54 C8 1E 0D FE 53 C8 1E 1A80 16 FE 36 C8 1E 21 FE 35 C8 1E 24 FE 37 C8 1E 27 1A90 FE 55 C8 1E 33 FE 38 C8 1E 36 FE 57 C8 1E 3C FE 1AA0 39 C8 1E 4В FE 58 C8 1E 56 FE 56 C8 1E 5C FE 48 1AB0 C8 1E 60 FE 5В C8 1E 65 FE 5D C8 1E 6В FE 4D C8 1AC0 D1 C3 88 04 79 FE 03 DA 67 19 CD 03 F8 FE 45 CA 1AD0 72 1В FE 41 CA 2C 1В FE 20 DA 5C 19 CD 00 1A CD 1AE0 E8 1A D2 D8 1C C3 85 04 78 FE 48 D0 1A 4F E6 7F 1AF0 77 23 04 DF 13 В9 CA E8 1A C9 2A 27 02 EВ 21 0A 1B00 00 19 22 27 02 C9 2A 27 02 CD 65 14 21 CF 01 06 1B10 01 11 53 02 1A FE 00 CA 25 1В 77 23 78 CD 51 1В 1B20 04 13 C3 14 1B 3E 20 77 23 04 DF C9 E1 21 58 1В 1B30 22 0E 03 2E 3E 22 95 04 21 F8 1C CD 18 F8 CD DC 1B40 07 C3 5C 1В 2E 7D 22 95 04 2A 1В 02 F9 C5 FD 02 1B50 3C 32 27 00 22 29 02 C9 E1 CD FA 1A CD 06 1В CD 1B60 85 04 D7 F5 CD 61 06 EВ 22 27 02 EВ CA 58 1B C3 1B70 1A 03 21 EE 1C CD 18 F8 21 93 1В 22 0E 03 3E 01 1B80 32 BD 04 CD 80 04 C0 55 1C 3E C9 32 D7 07 3E B8 1B90 32 C9 04 2A 39 00 EВ CD 85 03 C5 E1 F7 C1 78 В1 1BA0 CA E4 1B C5 CD DC 07 F7 E3 CD 09 1B E1 78 FE 48 1EB0 7E 23 D2 ЗA 1C В7 CA ЗA 1C F2 D9 1В D6 7F 4F E5 1ВC0 11 88 00 D5 1A 13 В7 F2 C4 1В 0D E1 C2 C3 1В EВ 1BD0 2A 29 02 CD E8 1A C3 AC 1В E5 2A 29 02 77 23 04 1BE0 DF C3 AC 1B 3E 36 32 D7 07 3C 32 C9 04 3E 20 32 1BF0 BD 04 21 80 04 22 0E 03 C3 44 1B FE 18 CA E0 1C 1C00 3A 0E 03 FE 80 CA C4 1A D2 11 1C CD 03 F8 C3 DC 1C10 1A 79 F6 02 FE 03 CA 60 1C CD 03 F8 FE 01 CA 85 1C20 04 FE 03 CA C7 1C FE 0D CA 4F 1C FE 0A CA 33 1C 1C30 C3 DC 1A CD 55 1C EВ CЗ 4F 1C CD 55 1C CD 03 F8 1C40 FE 0D CA 9В 1B E1 2A 29 02 CD 88 04 2A 29 02 36 1C50 00 21 CE 01 C9 21 CF 01 CD 61 06 EВ 22 39 00 C9 1C60 ЗA 27 00 B8 DA D8 1C 5F 79 FE 01 CA 74 1C 7В FE 1C70 47 D2 D8 1C 50 43 2A 29 02 2В 7E F5 7A B8 CA 86 1C80 1C 2В 05 C3 7A 1C 79 FE 01 CA A1 1C FE 03 C2 96 1C90 1C 3E 20 C3 99 1C 0E FF 14 77 23 04 DF 1C C3 A3 1CA0 1C F1 1D 7В B8 DA B0 1C F1 77 23 04 DF C3 A3 1C 1CB0 3D CD 51 1В AF 77 23 04 DF 05 2В 3E 08 DF 7A B8 1CC0 C2 В9 1C 81 D2 85 04 CD 03 F8 4F FE 20 D2 60 1C 1CD0 FE 1B CA 19 1C C3 88 04 05 3E 07 DF 04 C3 85 04 1CE0 ЗA 27 00 B8 79 D2 В1 04 3E 20 4F C3 B0 04 0D 0A 1CF0 45 44 49 54 2A 0D 0A 00 0D 0A 41 55 54 4F 2A 00 Таблица 2 0490 D7 07 FE 0A CA 7D 04 FE 1F CA E4 1B FE 7F CA 95 04A0 19 4F 78 FE 48 00 00 D2 D8 1C 79 FE 20 DA FB 1В 04B0 71 23 DF 04 C3 85 04 C2 C4 0D F1 F5 FE 20 DA CD 04C0 04 ЗA 27 00 00 00 00 00 00 37 DC 50 1B F1 C5 4F 1995 05 CA 80 04 2В 3E 08 DF CЗ EE 19 19EE ЗA BD 19F0 04 FE 01 CA 88 04 3E 20 23 04 DF 3E 08 C3 76 04
АДРЕС КОД АДРЕС КОД
0227Н 0AH 0244H 1DH
0476Н 2BH 0246H 1DH
0477Н 2BH 0248H 1DH
0478Н 05H 024AН 1DH
0479Н 05H 024CH 1DH
047AН F2H 1745H 1DH
047ВН B1H
047СН B4H
047DH CCH
04DCH 05H
АДРЕС БЛОКА КОНТРОЛЬНАЯ СУММ
0000H — 19FFH BDEDH
1А00Н — 1CFFH B02DH
0000H — 1CFFH 421AH

Правильность набора кодов ПРОГРАММЫ и произведенных в трансляторе изменений проверяют по контрольным суммам, приведенным в табл.3. Для компьютера «МИКРО-80» в исходной версии транслятора производят изменения только согласно табл.2. левой части — табл.3, а также табл.6 , учитывающих особенности клавиатуры «МИКРО-80» (отсутствие подпрограмм обслуживания функциональных клавиш и некоторые другие отличия). Более подробные сведения по ПРОГРАММЕ для «МИКРО-80» будут приведены ниже.

Для удобства работы с ПРОГРАММОЙ и интерпретатором в целом, а также унификации по управлению с РЕДАКТОРОМ-АССЕМБЛЕРОМ, опубликованным в [3], изменены функции, приданные ранее в трансляторе некоторым управляющим клавишам. Так, например, клавиша ® (курсор вперед) используется впредь по своему прямому назначению. Клавиша «ПС» (перевод строки) удаляет весь текст строки. Функция выхода в МОНИТОР передана сочетанию клавши «УС»+ «Е». Клавиша «СТР» позволяет быстро отменить любую назначенную ранее директиву и прямо выйти в непосредственный режим работы интерпретатора. Такое распределение управляющих клавиш обеспечивает более быструю запоминаемость их функций и снижает вероятность ошибочных нажатий.

Описание ПРОГРАММЫ и правила обращения

Программа «БЕЙСИК-СЕРВИС» состоит из трех объединенных сервисных программ, условно названных: НУМЕРАТОР, ОПЕРАТОР и РЕДАКТОР. Краткие сведения о выполняемых ими функциях, а также основные правила обращения к сервисным программам изложены в краткой форме в табл.4.

НАЗВАНИЕ сервисной ПРОГРАММЫ ВЫПОЛНЯЕМАЯ ФУНКЦИЯ ВИД ОПЕРАЦИИ ДИРЕКТИВА
(НАЖИМАЕМЫЕ КЛАВИШИ)
НУМЕРАТОР АВТОМАТИЧЕСКАЯ НУМЕРАЦИЯ СТРОК ПРОГРАММЫ при ПЕРВОНАЧАЛЬНОМ BBOДE вызов НУМЕРАТОРА «AP2» + «A»
НАБОР СТРОКИ ЗАНОВО «ПС»
ВЫХОД ИЗ НУМЕРАТОРА «СТР»
ОПЕРАТОР УСКОРЕННЫЙ BBOД КЛЮЧЕВЫХ СЛОВ БЕЙСИКА ВВОД СЛОВА «АР2» + СИМВОЛЬНАЯ КЛАВИША В СООТВЕТСТВИИ С ТАБЛИЦЕЙ 4
ВЫЗОВ ПРОГРАММЫ НА РЕДАКЦИЮ «AP2»+«Е»

Программа НУМЕРАТОР автоматически нумерует строки вводимой с клавиатуры программы, исключая, таким образом, ошибки программиста, связанные с пропуском номера строки. Шаг нумерации строк общепринятый (10). Вызывается НУМЕРАТОР последовательным нажатием клавиш «АР2»+«А». На экране дисплея при этом появляются сообщение «AUTO» и очередной рабочий номер строки. При первом вызове НУМЕРАТОРА нумерация строк программы начнется с номера 10. Во всех других случаях, то есть если уже с помощью НУМЕРАТОРА проводилась работа по набору текста, выдается номер строки, на которой набор был прекращен. Допускается неоднократно выходить из НУМЕРАТОРА и снова входить в него, сохраняя последовательность нумерации.

При работе с НУМЕРАТОРОМ следует запомнить следующее правило: нумерация строк ведется всегда относительно последнего высвеченного на экране номера. Поэтому, если возникнет необходимость автоматической нумерации строк программы с какого-либо другого номера, не совпадающего с выданным на дисплей, следует, сдвинув курсор назад, изменить номер строки на требуемый. После набора текста и нажатия на клавишу «ВК» вся дальнейшая нумерация строк пойдет от этого набранного номера. Таким образом, можно получить последовательность номеров не только 10, 20, 30 …. но, например, 5, 15, 25 … и т. п. При необходимости начать набор строки заново, нажимают на клавишу «ПС». Текст строки в этом случае в память не заносится, а номер строки не изменяется. В режиме автоматической нумерации строк можно пользоваться одновременно услугами описываемой ниже программы ОПЕРАТОР. Простой перебор номеров строк нажатием только на клавишу «ВК», без набора текста, увеличивает номер строки на шаг при каждом нажатии на клавишу «ВК» без каких-либо изменений в имеющейся в памяти программе. Следует напомнить, что перед первым набором текста должна быть обязательно исполнена директива «NEW». Выходят из НУМЕРАТОРА нажатием на клавишу «СТР». На экране дисплея при этом появляется стрелка, свидетельствующая о выходе интерпретатора в непосредственный режим работы. Выход из НУМЕРАТОРА обязателен, в противном случае окажется невозможным просмотр введенной программы, а также ее запуск. Программа ОПЕРАТОР позволяет набирать текст ключевых слов БЕЙСИКА ускоренно. Так, например, оператор RETURN можно набрать, нажимая последовательно на клавиши «AP2» и «R», оператор INPUT — на клавиши «AP2» и «I». Всего в программе ОПЕРАТОР реализован быстрый ввод 38 наиболее часто используемых ключевых слов БЕЙСИКА. Соответствие вводимых ускоренно слов БЕЙСИКА символьным клавишам дано в табл.5

КЛАВИША HEX КОД ВВОДИМОЕ СЛОВО КЛАВИША HEX код ВВОДИМОЕ СЛОВО
@ 40 MLOAD U 35 USR
В 42 TAB( V 56 VAL
С 43 CUR H 57 RND
D 44 DATA X 58 PEEK
F 46 FOR Y 59 POKE
G 47 GOSUB Z 5A SPC(
H 48 CHR$ [ LEFT$
I 49 INPUT ] 5D RIGHT$
J 4A GOTO ПРОБЕЛ 20 PRINT
К CLEAR 1 31 DIM
L 4C LINE 2 32 CLS
M 4D MID$ 3 33 STOP
N 4E NEXT 4 34 DEF
O 4F MSAVE 5 35 INT
P 50 PLOT 6 36 AND
Q 31 READ 7 37 ABS
R 52 RETURN 8 38 SQR
S 53 STEP 9 39 EXP
T 54 THEN ; REM

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

Программа РЕДАКТОР позволяет программисту быстро вносить в текст программ на БЕЙСИКЕ любые изменения, связанные с модификацией программы и исправлением синтаксических ошибок при отладке. Программа РЕДАКТОР является строко-ориентированным текстовым редактором, то есть обрабатывает (считывает, изменяет) текст программы построчно. Вызывается РЕДАКТОР последовательным нажатием на клавиши «АР2»+«Е». На дисплей при этом выводится сообщение «EDIT». Далее набирают номер строки, с которой предполагается начать просмотр или редактирование текста, и нажимают на клавишу «ВК» (при редактировании программы с самого начала номер строки можно не набирать). Сразу же после ее нажатия на экране появляется текст вызываемой программной строки и можно приступить к ее редактированию. В том случае, если в текст выданной на дисплей строки никаких изменений вносить не требуется, нажимают только на клавишу «ВК». При этом после каждого очередного ее нажатия на экран выводится следующая строка текста, а РЕДАКТОР остается в режиме просмотра, в котором никаких изменений в программу не вносится. При нажатии на любую символьную клавишу или сдвиге курсора назад РЕДАКТОР входит в режим редактирования. Основные операции по редактированию текстов, предоставляемые РЕДАКТОРОМ, приведены в табл.4.

При необходимости добавления текста в строку набирают требуемый текст сразу после появления строки на экране. Чтобы исправить ошибку в строке, достаточно передвинуть курсор на местоположение ошибочного символа и заменить его. Кроме того, можно убрать ненужные символы или операторы либо вставить новые. При добавлении новых слов можно пользоваться «услугами» программы ОПЕРАТОР, однако если производится вставка, то необходимо сначала освободить место для слова, зарезервировав необходимое число пробелов клавишей «F4». Когда набор происходит только с клавиатуры, вставку можно сделать, включив режим раздвижки последовательным нажатием на клавиши «AP2»+«F4». При этом вся правая от курсора часть строки будет сдвигаться вправо одновременно с набором текста. Выходят из режима раздвижки сдвигом курсора в какую-либо сторону или последовательным нажатием на клавиши «AP2»+«F2». При вставке новых символов необходимо помнить об ограничении на число символов в строке. При переполнении буфера строки подается звуковой сигнал и дальнейший сдвиг вправо прекращается. Для того чтобы заранее знать об истинной длине строки, рекомендуется слово «PRINT» не заменять при наборе на «?», а формировать его с помощью ОПЕРАТОРА. Удалять отдельные символы в строке и целые слова можно установкой курсора под удаляемым символом и нажатием на клавишу «F2».

После проведения всех изменений в строке нажимают на клавишу «ВК» (курсор может оставаться в любом произвольном месте строки). Измененный текст строки заносится на свое место в память, а РЕДАКТОР производит повторное (контрольное) считывание на дисплей текста ранее отредактированной строки. Контрольное считывание производится из основной памяти программы. Это позволяет оценить правильность редактирования и в случае необходимости продолжить редактирование данной строки. Если текст строки в дальнейшей редакции не нуждается, нажимают на клавишу «ВК» и приступают к редактированию следующей строки программы. При необходимости удалить правую часть строки, помещают курсор под первым удаляемым символом и нажимают на клавиши «АР2»+«ВК». Удалить всю строку из программы можно, последовательно нажимая на клавиши «АР2»+ «ПС».

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

При работе с РЕДАКТОРОМ, а также и при первоначальном вводе текста с клавиатуры допустимо формировать вновь набираемые пробелы клавишей «→» (курсор вперед).

И в заключение — несколько слов о постановке программы «БЕЙСИК-СЕРВИС» в компьютер «МИКРО-80». Ввиду отсутствия на клавиатуре «Микро-80» клавиши «АР2», функции ее могут выполняться клавишей «\» (курсор в левый верхний угол) без каких-либо изменений в ПРОГРАММЕ. Клавиша «ПС» программно заменяется клавишей «↓» (курсор вниз). Функции клавиш «F2» и «F4» могут выполняться только при одновременном нажатии на клавиши «УС»+«А» и «УС»+«С». Ввиду того, что в «Микро-80» область адресов 1А00Н — 21FFH использована в качестве буфера экрана, для нормальной работы ПРОГРАММЫ произведено смещение на 0,75 Кбайт соответственно буфера экрана и области расположения программ на БЕЙСИКЕ. Изменения кодов транслятора и ПРОГРАММЫ, относящиеся только к «Микро-80», приведены в табл. 6.

АДРЕС КОД АДРЕС КОД
0493H 1AH 17B9H 1DH
049EH D2H 17C1H 25H
049FH 85H 1815H 1DH
04A0H 04H 1AC8H 85H
0244H 25H 1AC9H 04H
0246H 25H 1ADAH 85H
0248H 25H 1ADBH 04H
024AH 25H 1C2CH 1AH
024CH 25H
1745H 25H

В. НАУГАДОВ, г. Архангельск

Эмулятор Радио-86РК на Javascript

Когда деревья были большими, а проблемы просто громадными, существовал такой компьютер — Радио-86РК. Многие программисты на территории бывшего СССР начали свой путь с этой машины.

Но время шло, и РК плавно ушел в небытие. Но для особых фанатов существуют эмуляторы. А в современном мире Web 2.0 вообще модно, чтобы все работало прямо в браузере. А так как правильные браузеры типа Google Chrome предоставляют все возрастающую скорость JavaScript, то подобная мода весьма оправдана. А как результат, даже эмуляторы процессоров теперь можно запускать прямо в браузере (недавно на Хабре была тема про эмулятор Спектрума).

Я так вдохновился тем Спектрумовским эмулятором, что за пару дней перенес свой старый эмулятор РК на платформу JavaScript.

Итак, запустить старенький Радио-86РК можно прямо сейчас, не отходя от браузера — запустить эмулятор Радио-86РК

Кликнув на ссылку, сохраните файл «radio86.html» локально и затем откройте его браузером. На данный момент поддерживается только Google Chrome (тестировалось на версии 4.0211.7 и выше).

Эмулятор вместе с играми содержится в одном единственном файле, который вы скачали. Там нет ни апплетов, ни ActiveX — только чистый JavaScript, но с использованием возможностей HTML5, а именно тэга «canvas». Эмуляция происходит на уровне команд процессора Intel 8080.

Проект бы вдохновлен аналогичным проектом эмулятора Спектрума на JavaScript’е — JSSpeccy.

Исходники проекта лежат на Google Code — http://code.google.com/p/radio86/

Скриншот из классической игры Volcano, сделанный в этом эмуляторе.

Можно проиграться с масштабированием экрана РК и скоростью эмуляции. Также в эмулятор включена подборочка игр, которые можно запустить через селектор снизу.

Ностальгия по РК теперь доступна прямо в онлайне.

Update: Обновлена ссылка на эмулятор, так что теперь она открывается прямо в браузере без необходимости сохранять файл локально.

Update2: Эмулятор обновлен до версии 0.2. Изменения незначительные: в список программ для запуска добавлены некоторые системные программы (языки программирования, редакторы, отладчики и т.д.) и немного улучшен селектор для их запуска — теперь запуск происходит при нажатии кнопки «Run».

Update3: Эмулятор обновлен до версии 0.3. Теперь отрисовка экрана работает значительно быстрее и не так сильно загружает процессор.

Обновление от 14.10.2012

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

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

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

Как и опубликованные ранее пакеты программ 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

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

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

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

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

ПРИМЕР 5 ЖДУ: PRINT &7FFF,&8000,&FFFF 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^138192 ВВЕДИТЕ ЧИСЛО ЖДУ:

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

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

ПРИМЕР 9 10 INPUT A,A$ 20 PRINT A,A$ ЖДУ: RUN ? 5*7, STEPANOW 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.

АДРЕС 16K 32к
0002 35 75
190E 3F 7F
1925 36 76
1933 36 76
1CC4 36 76
1CCA 40 80
ОБЛАСТЬ ОЗУ К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 для исключения каких-либо недоразумений.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *