ZX Format
#05
11 декабря 1996 |
|
Программистам - Basic для чайников - часть 5.
Basic для чайников - 5. music by DNK (C) Д.Рудовский ________________________________ Этой статьей я открываю новый большой раздел в этом курсе. в этом разделе речь пойдет о прог- раммах называемых расширениями языка Basic. Но на деле это практически самостоятельные язы- ки программирования. Каждое рас- ширение (в дальнейшем язык.) имеет свои особенности, которые специализируют его в определен- ной сфере применения. При описа- нии языка я буду указывать наи- более удобное приложение языка. Внимание!!! Все языки не работа- ют в 128 режиме, перед загрузкой не забудьте перейти в 48 режим. Ввиду большого объема информации сегодняшнюю статью я посвящю Be- ta-Basic'у. BETA-BASIC. Внимание!!! Во время своей рабо- ты ВВ использует альтернативный режим прерываний, из-за чего не- возможен прямой выход в TR-DOS. Перед работой прочитайте раздел РАБОТА С TR-DOS. Введение. Beta-Basic (в дальнейшем ВВ) является наверно самым мощным среди расширений. Он предлагает широчайшие возможности в редак- тировании и программировании на бейсике. Он является практически полным аналогом GW-BASIC на IBM-совместимых машинах. Учиты- вая, что программа написанная на бейсике не должна занимать больше 20К (иначе либо переходи- те на IBM, или на ассемблер), поэтому я буду описывать ВВ 3.0, который сам занимает 20К. Итак, сначала некоторые пояс- нения по поводу набора программы в ВВ: В зависимости от установ- ленного режима, который устанав- ливается командой KEYWORDS опе- раторы вводятся либо как в обыч- ном бейсике (токенами), где опе- раторы ВВ вводятся из режима курсора G, либо вводятся по сим- волам, как в Basic128. Кроме то- го есть возможность варьировать вывод программы на экран. Под- робнее об этом в описании опера- тора KEYWORDS. Изменена процедура оператора FOR - NEXT, в результате чего, она работает существенно быстрее с целыми числами до 65535 и не тормозит при больших номерах строк. Дополнен также оператор PRINT, о чем вы можете прочитать в разделе ВВОД-ВЫВОД. Начало работы. После того как вы загрузили ВВ загрузчик самоликвидируется, из него остается только нулевая строка. Пытаться удалить ее не стоит, в ней хранится информация необходимая для работы ВВ, поэ- тому же, перенося свою программу в среду ВВ загружать ее надо не по LOAD, а по MERGE. Так как программа записанная из среды ВВ уже имеет в себе нулевую строку, то нет необходимости использо- вать MERGE. Редактор. Теперь пора подробно рассмот- реть изменения и дополнения к встроенному редактору бей- сик-программ. # Команда NEW стирает программу, но оставляет нулевую строку, по- этому, если вам надо сбросить ВВ, либо нажмите RESET, либо дайте команду RANDOMIZE USR 0. Изменилось действие команды LIST, появились новые команды: EDIT, RENUM и KEYWORDS. Ну, а теперь все по порядку: LIST [n,TO m] - Вывод текста бейсик-программы (далее - лис- тинг) со строки n до строки m включительно. Пример: LIST 100 - листинг с 100 строки до конца; LIST 100 TO ---""---""---""--- ; LIST TO 100 - листинг до 100'й строки; LIST 10 TO 100 - вывод строк с 10 по 100 включительно. LIST FORMAT n - Установка форма- та вывода листинга. n - номер режима. 0 - Стандартный вывод листинга. 1 - Строки выводятся по одному оператору в экранной строке и отступом в операторах FOR, GO SUB, DEF FN и DEF PROC на 1 сим- вол. При этом режиме во время ввода при нажатии ":" следует автоматический сдвиг и символ ":" не печатается. 2 - Аналогичен формату 1, но отступ берется 2 символа. 3 - Стандартный вывод листинга, но номера строк не выводятся. 4 - Аналогичен формату 1, но без вывода номеров строк. 5 - Аналогичен формату 2, ----""----""----""----""---- LIST DATA | Вывод переменных LIST VAL | программы и их LIST VAL$ | значений в алфа- витном порядке. DATA - всех пе- ременных; VAL - числовых пере- менных, массивов и переменных цикла; VAL$ - вывод строковых переменных и массивов. Для пере- менных цикла дается дополни- тельно STEP n - шаг изменения и LN n - номер строки из которой происходит возврат в голову цик- ла. LIST DEF KEY - вывод списка клавиш определенных пользовате- лем. LIST PROC name - Вывод листинга процедуры с именем name. LIST REF - Выдача номеров поме- ченных строк. Пример: 10 FOR N=0 TO 10: PRINT N 20 NEXT N Команда LIST REF N даст: 10 10 20 EDIT n - Вызов на редактирование строки n. Аналогично LIST n и <CS+1>. RENUM[#] [n TO m LINE k STEP l] - Эта команда выполняет мно- жество фукций: переименовывает, копирует, пере- мещает. При этом изменяются все ссылки на перенумеровываемые строки. Назначение параметров: # - указывает на то, что блок должен быть скопирован, а не пе- ремещен; n - номер строки с которой начи- нает работать команда, по умол- чанию - 1; m - номер строки на которой за- канчивает работать команда, по умолчанию - 9999; k - новый номер который будет присвоен строке n, по умолчанию - 10; l - шаг, с которым будет идти перенумеровка строк, по умолча- нию - 10. Примеры: '&RENUM - Перенумеровывает всю программу присваивая первой строке номер 10 с шагом 10; RENUM 100 - перенумеровывает 100 строку присваивая ей номер 10; RENUM 100 TO - перенумеровывает программу начиная с 100 строки, которой присваивается номер 10 с шагом 10; RENUM TO 100 - перенумеровывает- ся программа до 100 строки, при этом первой строке присваивается номер 10 и перенумеровка идет с шагом 10; RENUM LINE 1000 - перенумеровы- вается вся программа с шагом 10, при этом первой строке присваи- вается номер 1000; RENUM STEP 1 - вся программа пе- ренумеровывается с шагом 1, при этом перовй строке присваивается номер 10. NB. Команда использует в ка- честве буфера экран, поэтому во время ее работы на экране появ- ляется грязь. В случае если ко- манде попадается инструкция типа GO TO ln*100 команда не исправ- ляет ее, а выдает сообщение: Fa- iled at n:m, где n - номер стро- ки, а m - номер оператора в строке. KEYWORDS n - Установка режима ввода программы с клавиатуры, n - режим. 0 - В режиме курсора G вводится UDG. 1 - В режиме курсора G вво- дятся команды ВВ. Режимы 0 и 1 не влияют на установку остальных режимов. 2 - Все ключевые слова вводятся одним нажатием клавиши, причем команды ВВ вводятся через режим G. 3 - Аналогичен режиму 2, но поз- воляет вводить команды и по бук- вам NB. Для перехода от курсора К, к курсору L нажать пробел. 4 - Все команды вводятся по сим- волам. NB. Команда не токенизируется в случае, если перед ней стоит буква или "_". Работа с TR-DOS. Встроенные в ВВ часы использу- ют 2 режим прерываний, что при- водит к конфликту ВВ с TR-DOS при обращении к ней, поэтому пе- ред тем как выйти в TR-DOS вве- дите команду RANDOMIZE USR 63237 для всстановления 1 режима пре- рываний, а по окончании работы установите 2 второй режим преры- ваний командой RANDOMIZE USR 61369. Так как работать с диском обычно приходится довольно час- то, то рекомендую вставить в программу следующий фрагмент: 9998 RANDOMIZE USR 63237: RANDO- MIZE USR 15616 9999 RANDOMIZE USR 61369 Для работы с диском дайте ко- манду GO TO 9998. При возврате в бейсик все будет восстановлено. Если же вы не планируете рабо- тать с часами ВВ, то рекомендую сразу отключить их RANDOMIZE USR 63237 и вы будете избавлены от вышеописанных неприятностей. Вывод на экран. В ВВ существенно расширены возможности стандартного бейсика по выводу на экран. Кроме расши- рения возможностей команд PRINT и PLOT введена команда WINDOW, а также целый спектр команд рабо- тающих с графическим экраном. Рссмотрим все по порядку: PRINT: USING "формат" - так на- зываемый форматированный вывод, где "формат" - символьная стро- ка, в соответствии с которой идет вывод чисел на экран. CSIZE n,m - установка расмера символа ( в пикселях) по гори- зонтали и вертикали. Примеры: PRINT USING "####.##%";989.275 - Результатом будет: 989.28% PRINT USING "0000.000";989.2751 - Результат: 0989.275 PRINT CSIZE 16,16;"HELLO" - вы- ведет на экран слово "HELLO" размером 2*2 знакоместа. Команду CSIZE можно использовать и отдельно от PRINT и тогда она задаст общий режим вывода на эк- ран. PLOT x,y;a$ - Вывод строки a$ на экран с точностью до пикселя. x и y расчитываются как обычной команде PLOT. '&WINDOW n,x,y,len,hgt - Определе- ние окна. n - номер окна 1-127;x,y - координаты левого верхнего угла окна как в PLOT; len,hgt - длина и высота окна в пикселях. После определения окна его можно сделать текущим, дав команду: WINDOW n - где n - номер окна (окно должно быть определено пе- ред этим.). Основной экран счи- тается 0 окном. Каждому окну соответствуют свои параметры, такие как: позиция печати, размер символов, INVER- SE, BRIGHT, INK, PAPER. Для очистки окна нужно дать команду: CLS n - где n - номер окна. Для уничтожения окна необходимо дать команду: ERASE WINDOW n. GET a$,x,y,len,hgt,type - Данная функция сохраняет экранную об- ласть с координатами x,y и раз- мерами len,hgt в переменной a$.(все задается в пикселях.) Параметр type указывает, как сохранять изображение: 0 - без атрибутов; 1 - с атрибутами. OVER n - эта команда бейсика до- полнена режимом 2: наложение изображения на экран без инвер- сии. Продолжение следует.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября