- •Спектрум в школе
- •1. "LISTNAME"
- •2. "REMONT"
- •BETA BASIC
- •ГЛАВА 1. ВВЕДЕНИЕ
- •ГЛАВА 2. РЕДАКТИРОВАНИЕ
- •Курсор текущей строки
- •Команда EDIT <номер строки>
- •Переключение режимов курсора
- •Управление вводом ключевых слов
- •Проверка синтаксиса
- •Команда LIST FORMAT
- •Команда CSIZE
- •Команды JOIN <номера строк> и SPLIT.
- •Управляющий код "новая строка".
- •ГЛАВА 3. ПРОЦЕДУРЫ
- •Передача параметров в виде ссылки
- •Передача параметров списком
- •Рекурсия
- •Ошибки
- •ГЛАВА 4. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- •ГЛАВА 5. ОБРАБОТКА ДАННЫХ
- •ГЛАВА 6. ГРАФИКА
- •ГЛАВА 7. СЕРВИСНЫЕ И ОТЛАДОЧНЫЕ ВОЗМОЖНОСТИ
- •ЗАЩИТА ПРОГРАММ
- •ЧАСТЬ 1
- •ГЛАВА 1. Исключение возможности остановки программ.
- •1.1. Общие рекомендации.
- •1.2 Подпрограмма обработки сообщений с кодами D, H, L.
- •1.6. Метод защиты, используемый в программе FIST III.
- •2.1. Общие рекомендации.
- •2.3. Использование управляющих кодов.
- •40 ЛУЧШИХ ПРОЦЕДУР
- •РАЗДЕЛ А
- •1. ВВЕДЕНИЕ
- •Общие сведения о Бейсике и машинных кодах
- •2. ВНУТРЕННЯЯ СТРУКТУРА ZX SPECTRUM
- •Карта памяти
- •PEEK и POKE
- •Дисплейный файл
- •Атрибуты
- •Буфер принтера
- •Область программ на BASICe
- •Цифровой пятибайтный формат
- •Область переменных
- •Подпрограммы ПЗУ
- •3. МАШИННЫЙ ЯЗЫК Z80
- •Регистры Z80A
- •РАЗДЕЛ B
- •4. ВВЕДЕНИЕ
- •Загрузчик машинного кода
- •5. Подпрограммы сдвига.
- •5.1 Сдвиг атрибутов влево.
- •5.2 Сдвиг атрибутов вправо.
- •5.3 Сдвиг атрибутов вверх.
- •5.4 Сдвиг атрибутов вниз.
- •5.5 Сдвиг влево на один символ.
- •5.6 Сдвиг вправо на один символ.
- •5.7 Сдвиг вверх на один символ
- •МАСТЕРФАЙЛ 09 полная русификация.
- •ВСТУПЛЕНИЕ.
- •2. Использование дополнительного символьного набора.
- •3. Перевод программы на русский язык.
- •СОВЕТЫ ЭКСПЕРТОВ
- •STALINGRAD
- •Введение.
- •Управление игрой
- •Некоторые детали
- •Уровни сложности игры
- •Выгрузка файлов на ленту
- •Замечания
- •FLIGHT SIMULATION
- •Аспекты полета
- •Приборная панель
- •Управление самолетом
- •Навигация
- •STAR RAIDERS
- •Враги
- •Запуск игры
- •Экран
- •Управление
- •Энергия
- •THE TRAIN
- •Краткий сюжет
- •Настройка программы
- •Экран
- •Управление
- •Мост (BRIDGE)
- •Станция (STATION)
- •Развилка или перекресток (SWITCH)
- •DEATH WISH 3
- •FORUM
- •Проблемы ELITE
- •Итоги конкурса на лучший технологически развитый маршрут.
- •POKES
- •Вопросы совместимости.
- •Просьба о помощи.
- •И снова SHERLOCK.
- •СПЕКТРУМ В ШКОЛЕ
- •К УРОКУ ИСТОРИИ.
- •POKES
- •NETHER EARTH
- •HEAD OVER HEELS
- •INTO THE EAGLE'S NEST
- •URIDIUM
- •AMAUROTE
- •GAUNTLET
- •BETA BASIC
- •РАЗДЕЛ 2. КОМАНДЫ
- •1. ALTER <атрибуты> ТО атрибуты
- •2. ALTER <ссылка> ТО ссылка
- •3. AUTO <номер строки> <,шаг>
- •4. BREAK
- •5. CLEAR число.
- •6. CLOCK число или строка
- •7. CLS <номер окна>
- •8. CONTROL CODES (управляющие коды)
- •Коды управления экранными блоками.
- •9. COPY строка COPY массив
- •10. CSIZE ширина <, высота>
- •11. DEFAULT = устройство
- •12. DEF KEY односимвольная строка; строка
- •13. DEF PROC имя процедуры <параметр><,REF параметр>...
- •14. DELETE <номер строки> ТО <номер строки>.
- •15. DELETE имя массива <пределы>
- •ЗАЩИТА ПРОГРАММ
- •ПРОГРАММА ДЛЯ СНЯТИЯ ЗАЩИТ
- •Глава 3. Методы защиты от MERGE
- •40 ЛУЧШИХ ПРОЦЕДУР
- •5.8 Сдвиг вниз на один символ.
- •5.9 Сдвиг влево на один пиксел.
- •5.10 Сдвиг вправо на один пиксел.
- •5.11 Сдвиг вверх на один пиксел.
- •5.12 Сдвиг вниз на один пиксел.
- •6.ДИСПЛЕЙНЫЕ ПРОГРАММЫ
- •6.1 Слияние картинок
- •6.2. Инвертирование экрана.
- •6.3 Инвертирование символа вертикально.
- •6.4 Инвертирование символа горизонтально.
- •6.5 Вращение символа по часовой стрелке.
- •6.6 Изменение атрибута.
- •6.7 Смена атрибута.
- •6.8 Закрашивание контура.
- •6.9 Построение шаблонов.
- •6.10 Увеличение экрана и копирование.
- •Текстовые сообщения программы MF 09 и их перевод
- •ЗАКЛЮЧЕНИЕ.
- •СОВЕТЫ ЭКСПЕРТОВ
- •PROFESSIONAL TENNIS
- •1. Controles
- •2. Equipamiento
- •3. Entrenamiento
- •4. Caracteristicas
- •0. Torneo
- •SNOOKER
- •Правила игры.
- •Настройка программы.
- •Структура экрана.
- •Начало игры.
- •QUAZATRON
- •CAPTAIN FIZZ
- •Экран программы.
- •Полезные советы.
- •FORUM
- •Версия 1.
- •Версия 2.
- •Версия 3
- •Перелеты к двойным звездам и невидимым звездам.
- •Тайные возможности компьютера.
- •Советы и секреты.
- •СПЕКТРУМ В ШКОЛЕ
- •BETA BASIC
- •17. DPOKE адрес, число
- •18. DRAW ТО x,y <,угол>
- •18. EDIT <номер строки>
- •9. EDIT строковая переменная
- •20. ELSE <оператор>
- •21. END PROC
- •22. EXIT IF <условие>
- •23. FILL x,y
- •24. GET числовая переменная
- •25. GET строковая переменная, x,y <ширина, длинах><;тип>
- •26. JOIN <номер строки>
- •27. JOIN строковый массив или числовой массив.
- •28. KEYIN строковая переменная
- •29. KEYWORDS число.
- •30. LET переменная = число <, переменная = число>...
- •31. LIST <номер строки> TO <номер строки>
- •32. LIST DATA
- •33. LIST DEF KEY
- •ЗАЩИТА ПРОГРАММ
- •Глава 4. Прочие приемы защиты.
- •4.1 Запуск программ в кодах.
- •4.3 Ключевые слова Бейсика в "хэдере".
- •4.4 Мерцающий заголовок.
- •Глава 1. Введение
- •Общие рекомендации.
- •Структура фирменной программы.
- •Небольшая историческая справка.
- •Структура хэдера.
- •Глава 2. Блокировка автозапуска.
- •Введение.
- •2.1 Загрузка Бейсика через блок кодов.
- •40 ЛУЧШИХ ПРОЦЕДУР
- •7. ПРОЦЕДУРЫ ОБРАБОТКИ ПРОГРАММ.
- •7.1 Удаление блока программы.
- •7.2 Обмен токена.
- •7.3 Удаление REM строк
- •7.4 Создание REM строк
- •7.5 Сжатие программы.
- •8. ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММЫ
- •8.1 Определение размера свободной памяти.
- •8.5 Копирование данных в памяти.
- •ВОЗВРАЩАЯСЬ К НАПЕЧАТАННОМУ
- •КАНАЛЫ И ПОТОКИ
- •ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- •ОБРАБОТКА ОШИБОК В БЕЙСИКЕ
- •ПРЕДОТВРАЩЕНИЕ ОСТАНОВКИ БЕЙСИК ПРОГРАММЫ
- •1. Блок кодов "ON ERROR GO TO"
- •2. Программа "BEEPER"
- •FORUM
- •Адвентюрные игры.
- •Heavy on the Magic.
- •Полезные советы.
- •Советы и секреты.
- •Письмо читателя.
- •Проблемы совместимости.
- •Проблемы "ELITE".
- •СОВЕТЫ ЭКСПЕРТОВ
- •ACADEMY (TAU CETI II)
- •Работа с меню.
- •Просмотр/выбор клавиш.
- •Прием нового кадета.
- •Меню работы с лентой.
- •Рапорт о выполнении уровня.
- •Выбор скиммера.
- •Проектирование скиммеров.
- •Выбор миссии.
- •Уровень I.
- •Уровень II.
- •Уровень III.
- •Уровень IV.
- •Уровень V.
- •Полезные советы по сборке скиммеров.
- •Выполнение миссии.
- •Сводка боевых команд
- •SHERLOCK
- •Понедельник, 8:00
- •Вторник.
- •Среда.
- •НАШ КОНКУРС
- •Письмо читателя.
- •Наши предложения.
- •Наши условия:
- •BETA BASIC
- •34. LIST FORMAT число.
- •35. LIST PROC имя процедуры.
- •36. LIST REF.
- •37. LOCAL переменная <,переменная><,переменная>...
- •38. LOOP
- •39. MERGE
- •40. MOVE
- •42. ON ERROR номер строки
- •43. OVER 2.
- •44. PLOT X,Y <;строка>
- •45. POKE адрес, строка
- •46. POP <числовая переменная>
- •47. PROC имя <параметр><,параметр><,параметр>...
- •49. REF метка
- •50. REF имя переменной.
- •52. ROLL код направления <, число><; х, y; ширина, длина >
- •ЗАЩИТА ПРОГРАММ
- •2.2.2 Изменение хэдера для блокировки автозапуска.
- •3.1 Просмотр строк, защищенных управляющими кодами.
- •40 ЛУЧШИХ ПРОЦЕДУР
- •8.5 Составление списка переменных.
- •8.6 Поиск строки.
- •8.7 Поиск и замещение строки.
- •8.8 Поиск подстроки.
- •Формат данных в "Спектруме"
- •Числовая переменная с именем из одной буквы.
- •Числовая переменная с именем более чем из одной буквы.
- •Числовой массив.
- •Переменные цикла.
- •Символьная переменная.
- •Символьный массив.
- •ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- •ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- •Печать чисел.
- •Печать символьных строк.
- •Управляющие символы.
- •Другие приемы управления позицией и цветом печати.
- •Организация экранной памяти.
- •Файл атрибутов.
- •Изменение цвета бордюра.
- •Эмуляция команд БЕЙСИКа из машинного кода.
- •Скроллинг экрана.
- •PAUSE
- •Рисование точек.
- •Рисование прямых линий.
- •Рисование дуги.
- •Рисование окружности.
- •Проверка точки экрана.
- •Проверка атрибутов экрана.
- •Проверка содержимого заданного знакоместа.
- •СЛУЧАЙНАЯ ГРАФИКА
- •СЛУЧАЙНАЯ ГРАФИКА
- •Проблемы скорости работы.
- •Трансляция БЕЙСИКа в машинный код.
- •КРИБЕДЖ
- •КРИБЕДЖ
- •Игра.
- •Стратегия в крибедже.
- •Пример розыгрыша партии.
- •Программа
- •Комментарий
- •THE DARK WHEEL
- •ГЛАВА 1.
- •СПЕКТРУМ В ШКОЛЕ
- •BETA BASIC
- •53. SAVE <строка TO строка;> устройство;> имя
- •54. SCROLL код направления <,число> <;x,y; ширина, длина>
- •55. SORT
- •56. SPLIT (не ключевое слово).
- •57. TRACE номер строки
- •58. UNTIL условие.
- •59. USING, USING$
- •60. VERIFY <строка TO строка;> устройство;> имя
- •61. WHILE условие.
- •62. WINDOW номер окна <,x,y,w,l>
- •РАЗДЕЛ 3. ФУНКЦИИ
- •1. AND (число, число)
- •3. CHAR$ (число)
- •4. COSE (ЧИСЛО)
- •5. DEC (символьная строка)
- •ЗАЩИТА ПРОГРАММ
- •3.2 Работа со встроенными машинными кодами.
- •Глава 4. Изучение блоков в машинных кодах.
- •4.1 Введение.
- •4.2 Адаптация фирменных программ под индивидуальный вкус.
- •4.2.2. Новые возможности программы "RENEGADE".
- •Введение.
- •ГЛАВА 1.
- •ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- •"ДЕБЮТ ПРОГРАММЫ"
- •Блок кодов "REM FILL"
- •УНИВЕРСАЛЬНОЕ МЕНЮ
- •Программа "PRIM"
- •Маленькие Хитрости
- •ВЕКТОРНАЯ ГРАФИКА
- •Сокрытие невидимых линий контура
- •Алгоритм.
- •Маленькие хитрости
- •ОШИБКИ ПЗУ
- •1. Ограничение по использованию регистровой пары IY.
- •2. Особенности регистровой пары H'L' (альтернативной).
- •3. Особенности пользовательской функции FN.
- •4. Ошибка деления.
- •6. Ошибка оператора PLOT.
- •7. Ошибка первого экрана в компьютерах 128К.
- •Blinky's
- •СОВЕТЫ ЭКСПЕРТОВ
- •OPERATION HORMUZ
- •TOMAHAWK
- •SKY RANGER
- •TYPHOON
- •THE DARK WHEEL
- •ГЛАВА 2.
- •BETA BASIC
- •6. DPEEK (адрес).
- •7. EOF (номер потока).
- •8. FILLED ().
- •9. HEX$ (число).
- •11. INSTRING (старт, строка 1, строка 2).
- •12. ITEM ()
- •13. LENGTH (n, "имя массива")
- •15. MEMORY$ ()
- •16. MOD (число, число)
- •17. NUMBER (симв. строка)
- •18. OR (число, число)
- •19. RNDM (число)
- •20. SCRN$ (строка, столбец)
- •21. SHIFT$ (число, строка)
- •22. SINE (число)
- •23. STRING$ (число, строка)
- •24. TIME$ ()
- •25. USING$ (строка, число)
- •26. XOR (число, число)
- •ПРИЛОЖЕНИЕ 1
- •ПРИЛОЖЕНИЕ 2.
- •ПРИЛОЖЕНИЕ 3
- •Коды ошибок.
- •ЗАЩИТА ПРОГРАММ
- •1.2 Смещение системной переменной PROG.
- •1.3 Кодирование и декодирование блоков машинных кодов.
- •1.4 Новые POKES.
- •Том 4. Методы защиты программ от копирования.
- •Введение.
- •ОШИБКИ ПЗУ
- •8. Ошибка CLOSE#.
- •9. Ошибка CHR$ 9.
- •10. Ошибка CHR$ 8.
- •11. Ошибка STR$.
- •12. Ошибки кодов управления цветом.
- •13. Ошибка SCREEN$.
- •Ошибки в редакторе
- •14. Ошибка Scroll?.
- •15. Ошибка курсора текущей строки.
- •16 Ошибка ведущего пробела.
- •18 Ошибка проверки синтаксиса.
- •Ошибки калькулятора
- •19. Ошибка MOD_DIV.
- •20. Ошибка E_TO_FP.
- •21. Ошибка INKEY$#0.
- •ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- •Блок кодов, воспроизводящий звук.
- •Программа "SOUND"
- •Ввод параметров при помощи оператора INPUT.
- •КАК ЭТО ДЕЛАЕТСЯ!
- •RANARAMA
- •Техническое задание.
- •Предварительные исследования.
- •1. Дизайн экрана.
- •2. Раскладка оперативной памяти.
- •3. Упаковка данных.
- •4. Специальные алгоритмы.
- •5. Проверка концепции.
- •Дизайн программы.
- •Машинный код.
- •Звук и музыка.
- •Одноступенчатая модуляция.
- •Пилообразная модуляция
- •Треугольная модуляция
- •Двуступенчатая модуляция
- •Программа.
- •СОВЕТЫ ЭКСПЕРТОВ
- •FLYER FOX
- •COBRA FORCE
- •THUNDER BLADE
- •SANXION
- •AIR WOLF
- •1943 THE BATTLE OF MIDWAY
- •THE DARK WHEEL
- •ГЛАВА 3.
- •ГЛАВА 4
BETA BASIC
Начало см. стр. 3, 47, 91
34. LIST FORMAT число.
Эта команда использует сразу два ключевых слова БЕЙСИКа и предназначена для того, чтобы управлять форматом листинга Вашей программы, т.е. с ее помощью можно получить распечатку программы в удобном для восприятия виде.
Команда имеет несколько режимов, которые задаются параметром. Начальное состояние после загрузки Бета Бейсика LIST FORMAT 0.
LIST FORMAT 0.
Эта команда дает распечатку, похожую на ту, которую мы получаем в стандартном БЕЙСИКе, но есть незначительное отличие, заключающееся в том, что если строка программы длиннее, чем строка экрана, то перенос ее на вторую экранную строку выполняется со сдвигом. Таким образом, левые пять столбцов экрана содержат только номера программных строк и текст становится более разборчивым и удобочитаемым.
LIST FORMAT 1.
Распечатка по этой команде делается таким образом, что каждый оператор печатается с новой строки. Более того, некоторые из операторов (см. ниже) печатаются со смещением вправо на одну позицию, что позволяет распечатывать программу "лесенкой", так как это принято в языках, поддерживающих структурное программирование, например "ПАСКАЛЬ", "СИ" и др.
LIST FORMAT 2.
Действие то же, что и для LIST FORMAT 1, но автоматическое смешение для некоторых операторов выполняется не на одну, а на две позиции вправо.
LIST FORMAT 3.
Действие то же, что и для LIST FORMAT 0, но печать программы выполняется без номеров строк.
LIST FORMAT 4.
Действие то же, что и для LIST FORMAT 1, но печать программы выполняется без номеров строк.
LIST FORMAT 5.
Действие то же, что и для LIST FORMAT 2, но без номеров строк.
Для глаза приятнее воспринимать смещение "лесенкой" на две позиции, но поскольку у нас невелика ширина экранной строки всего 32 символа, то ее может оказаться недостаточным и поэтому введены режимы 1 и 4.
Появление в тексте программы следующих операторов вызывают автоматический сдвиг листинга:
DEF PROC, DO, FOR сдвигают все последующие операторы вправо на один или на два символа до тех пор, пока не встретятся соответствующие им END PROC, LOOP или NEXT.
Операторы IF, ON ERROR и ON сдвигают все прочие операторы своей программной строки вправо.
Операторы ELSE и EXIT IF отменяют сдвиг текущего оператора на одну или две позиции.
Если Вам захочется, чтобы оператор после ELSE или THEN печатался с новой строки, то Вы можете после них поставить двоеточие.
Пример действия команд LIST FORMAT 0 и LIST FORMAT 2 показан ниже.
100 DEF PROC primer
110 FOR n=1 TO 10: PRINT "primer": NEXT n
120 DO: PRINT a$: INPUT b$
130 PRINT "abc": LOOP
140 IF x=1 THEN: PRINT "yes": PAUSE 50: ELSE: PRINT "no" 150 END PROC
100 DEF PROC primer
110 FOR n=1 TO 10 PRINT "primer"
NEXT n 120 DO
PRINT a$ INPUT b$
130 PRINT "abc" LOOP
140 IF x=1 THEN PRINT "yes" PAUSE 50
ELSE
PRINT "no" 150 END PROC
Если Вы очень привыкли к стандартному БЕЙСИКУ, то первое впечатление будет, что второй листинг выглядит несколько странно, но немного практики и вы почувствуете, насколько он удобнее.
35. LIST PROC имя процедуры.
Команда позволяет распечатать не всю программу, а только процедуру, которую Вы задали именем, например LIST PROC box.
На практике эта команда очень часто используется в длинных программах. Тогда Вам не надо помнить, в каком месте программы расположена Ваша процедура.
Может быть, Вам захочется хранить имя процедуры в строковой переменной. Команда LIST PROC не сможет тогда ее обработать напрямую и требуется обходной прием:
10 INPUT a$: KEYIN "LIST PROC"+a$
Две системные переменные содержат номера первой и последней строк процедуры, заданной в LIST PROC. Их адреса 23635 и 57358, соответственно. Работа с ними иногда может быть очень полезной и ее удобно выполнять, используя функцию DPEEK.
36. LIST REF.
REF ключевое слово на клавише "SHIFT"+"7". См. также REF.
LIST REF дает список номеров помеченных строк. Меткой может быть имя переменной, число или набор символов. LIST REF тесно связана с командой REF и описана более подробно в соответствующем разделе, который желательно предварительно прочитать.
Если в некоей программной строке метка существует не один раз, то при печати списка этот номер строки появится многократно
Например:
10 FOR n=1 TO 10: PRINT n
20 NEXT n
Для такой программы команда LIST REF n даст следующий список:
10
10
20
Чтобы направить список на принтер, Вы можете использовать команду LLIST REF или:
LIST #(номер потока) REF метка
37. LOCAL переменная <,переменная><,переменная>...
Клавиша: "SHIFT" + "3"
См. также главу 3 "Процедуры" и раздел "DEF PROC".
Команда LOCAL позволяет создавать специальные переменные, которые существуют только внутри заданных процедур. (Параметры процедур автоматически имеют статус локальных и потому не нуждаются в объявлении их оператором LOCAL.) Использование команды LOCAL для создания локальных переменных в процедурах имеет то преимущество, что исключает образование помех, вызванных тем, что процедура может изменить содержимое какой либо переменной, относящейся к главной программе. Благодаря этой команде процедура может иметь переменные x и a$ и изменять их как угодно, не изменяя переменные x и a$ в главной программе.
Команда LOCAL может быть использована только в теле объявленной процедуры, иначе система выдаст сообщение об ошибке "Missing DEF PROC". Самое удобное для нее место после объявления процедуры, сразу за DEF PROC. Тогда при чтении распечатки сразу становится ясно, какие переменные в процедуре используются. По желанию Вы можете иметь в процедуре несколько команд LOCAL.
Если переменные, объявленные как LOCAL, до этого объявления в программе уже существовали, то они "прячутся". На самом деле они, конечно существуют в области программных переменных и команда CLEAR их не уничтожит, но с точки зрения процедуры их как бы нет. В процедуре теперь эти имена могут использоваться снова. В конце работы процедуры все переменные, объявленные как LOCAL, будут уничтожены и исходные значения (если они были спрятаны) будут восстановлены. Вот простой пример.
10 LET n=1
20 test: REM чтобы выйти из курсора "К" воспользуйтесь ведущим пробелом. 30 PRINT n
40 STOP
100 DEF PROC test
110 LOCAL n
120 LET n=999
130 PRINT n
140 END PROC
Запустите этот пример и убедитесь, что n в процедуре равно 999, а вне ее n равно 1. Если вы опустите строку 120, то n не будет существовать внутри процедур, а если Вы опустите строку 10, то n не будет существовать в главной программе.
Если наша процедура test будет внутри себя вызывать некую субпроцедуру (например из строки 125), то для нее переменная n со значением 999 будет глобальной, для этой субпроцедуры процедура test является как бы главной программой.
Все переменные, доступные в процедуре являются глобальными по отношению к процедурам, вызываемым из нее. Чтобы "спрятать" эти переменные в нижележащих процедурах. Вы можете и в них использовать оператор LOCAL или использовать их в списке параметров.
В отличие от многих прочих диалектов БЕЙСИКа, БЕТА БЕЙСИК поддерживает локальные массивы. Если, к примеру, в главной программе Вы используете а$, то в процедуре командой LOCAL а$ все строковые массивы а$ или переменные а$ будут локальными и не повлияют на переменные главной программы. Если Вы хотите числовой массив сделать локальным, то после его имени надо использовать круглые скобки. Например, LOCAL b(). Это "спрячет" любой существующий массив b(). После этого Вы можете в процедуре создать свой новый локальный массив b() того размера, который Вам нужен.
38. LOOP
или LOOP WHILE условие
или LOOP UNTIL условие клавиша: L
См. также DO, EXIT IF.
LOOP это нижняя граница цикла DO LOOP (см. DO). Команда LOOP, заданная сама
по себе вызывает возвращение исполнения программы к соответствующему оператору DO. LOOP может употребляться вместе с кодификаторами WHILE и UNTIL, которые
обеспечивают возврат в начало цикла по условию.
LOOP WHILE условие обеспечивает возврат назад, к вершине цикла только в том случае, если <условие> справедливо, в противном случае выполняются операторы и строки, стоящие за LOOP.
LOOP UNTIL условие имеет противоположное действие. Если указанное <условие> справедливо, возврат к вершине цикла не выполняется, а выполняется, когда оно ложно.
Если Вы используете в программе оператор LOOP без соответствующего DO, то получите сообщение об ошибке: T,"LOOP without DO".
39. MERGE
См. также DEFAULT = устройство. Эта команда имеет дополнительную возможность, которую использовать смогут только немногие владельцы микродрайва. Она позволяет загружать без автозапуска те программы, которые выполнены автостартующими. С ленты это можно делать и так.
40. MOVE
Эта команда тоже развивает возможности владельцев микродрайва. Она теперь позволяет перемещать не только блоки данных, но и программы, машинный код и массивы.
Чтобы перенести файл "test" с драйва 1 на драйв 2, делайте так: MOVE "m"; 1; "test" TO "m"; 2; "test"
Команда сработает, независимо от физической природы файла. Хоть MOVE и выглядит удобной командой, на практике большие файлы быстрее перемещаются через SAVE/LOAD.
41. ON
Клавиша: О
БЕТА БЕЙСИК обеспечивает две различные формы оператора ON.
Вы можете задать после ON список число или выражение, которое определит, к какой строке будет выполняться переход по оператору GO TO или GO SUB.
Это довольно традиционный оператор для различных диалектов БЕЙСИКа, хотя и довольно архаичный в эпоху широкого применения процедур.
Вторая форма позволяет не только избрать строку, но и оператор. Пример. Первая форма.
GO TO ON число, номер строки, номер строки, номер строки...
или
GO SUB ON число, номер строки, номер строки, номер строки...
(Более стандартной выглядела бы форма ON число GO TO строка…, но клавиатурная система "Спектрума" делает ее усложненной).
Обычно при программировании на "Спектруме" такой многопозиционный переключатель организуют так:
10 INPUT choice:
GO TO choice*100+100
Но с использованием ON это можно делать более гибко, т.к. номера строк перехода не должны быть числами одного заданного ряда.
10 INPUT choice:
GO TO ON choice: 90,135,60,40 20 PRINT "Enter 1 to 4": GO TO 10
В этом примере будет выполнен переход к строке 90, если choice равно 1, к строке 135, если choice равно 2, к строке 60, если choice равно 3 и т.д. Если choice не входит в диапазон от 1 до 4, то никакого перехода не делается, а выполняется следующей оператор или программная строка, а она предоставляет пользователю возможность повторить свой