"ДЕБЮТ ПРОГРАММЫ"
Продолжая разговор о повседневных задачах, начатый в одной из номеров "ZX РЕВЮ", следует поподробнее остановиться вот на чем. Несмотря на то, что Ваши программы различаются в зависимости от конкретной задачи, практически во всех программах встречается повторяющиеся моменты. Это может быть введение русского шрифта, титульная заставка с фамилией автора (Вашей), блок кодов "ON ERROR GO TO" с механизмом его инициирования, который описан в предыдущей статье (см. ZX РЕВЮ 5 6 за 1992 г. стр. 113), какое то стандартное начало программы. Неплохо также предусмотреть элементарный сервис для себя, в частности упрощение сохранения программы на ленте в процессе написания и отладки. То есть речь идет о "дебюте" программы. Наверное, у многих програмистов есть свой "дебют" или стандартное начало своих программ, а также одинаковые приемы, используемые практически во всех или в большинстве своих программ.
Предлагаю вниманию начинающих достаточно универсальный "дебют" программы. Я сам уже долгое время пользуюсь этим "дебютом" при разработке своих программ и оказывается, что при составлении новой программы требуется минимум переделок. Новую программу я всегда начинаю с загрузки "дебюта", затем набиваю остальные строки программы, не отвлекаясь на "второстепенные" задачи по формированию символьного набора и т.п.
Итак, сначала текст заготовки программы, назовем ее "PROG", затем комментарии.
0 REM (машинные коды)
1 GO TO 100
2 RANDOMIZE 2: GO SUB 10:CLEAR 49999: LOAD "prog"СООЕ 50000,1000 3 GO SUB 8: PRINT . . . (вывод на экран заставки)
4 GO SUB 20: GO TO 0
5 GO SUB 9: SAVE "PROG"LINE 2: SAVE "prog"CODE 50000,1000
6 VERIFY "PROG": VERIFY "prog" CODE: PRINT INK 9; TAB 20; "О.К." : BEEP 0.5,32: GO TO 5 7 POKE 23675,208: POKE 23676,95: RETURN : REM UDG
8 POKE 23606,208: POKE 23607,91: RETURN : REM RUS
9 POKE 23606,0: POKE 23607,60: RETURN : REM LAT
10 POKE 24746, PEEK 23670: POKE 24749,PEEK 23671: RANDOMIZE USR 24696: RETURN :REM ON ERROR GO TO
20 PRINT #0; TAB 5;"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ": PAUSE 0: INPUT; 22 IF INKEY$="q" THEM GO TO 9999
24 RETURN
100 RANDOMIZE 3: GO SUB 10: GO SUB 7: GO SUB 8: BORDER 1: PAPER 0: INK 6: BRIGHT 0: CLS 1000 PAUSE 50: GO SUB 20
1010 PRINT AT 12, 10;"ЗВУК 1":RANDOMIZE USR 24769
102O PAUSE 50: GO SUB 20 1030 PRINT AT 12,10;"ЗВУК 2":RANDOMIZE USR 24801 9999 BORDER 7: PAPER 7: INK 0: BRIGHT 0: INVERSE 0
В нулевой строке программы расположены блоки кодов, необходимые для ее работы. О формировании нулевой строки мы подробно поговорим позже. А сейчас о том, что
же это за блоки кодов.
1. Символьный набор расположен с адреса 23760. Длина 768 байт (по адрес 24537). Системная переменная CHARS при этом равна: 23760 256=23504. Символьный набор может быть любым, по вашему вкусу. Я использую русско латинский символьный набор в кодах ASCII КОИ 7 "НС". Подробно об этом в статье о русификации программы "МАСТЕРФАЙЛ 09" в ZX РЕВЮ 1 2 за этот год, стр. 31. Там же программа по формированию такого символьного набора.
- BETA BASIC
- ГЛАВА 1. ВВЕДЕНИЕ
- ГЛАВА 2. РЕДАКТИРОВАНИЕ
- Курсор текущей строки
- Команда LIST FORMAT
- Команда CSIZE
- Команды JOIN <номера строк> и SPLIT.
- Управляющий код "новая строка".
- ГЛАВА 3. ПРОЦЕДУРЫ
- Передача параметров списком
- ГЛАВА 4. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- ГЛАВА 5. ОБРАБОТКА ДАННЫХ
- ГЛАВА 6. ГРАФИКА
- ЗАЩИТА ПРОГРАММ
- ЧАСТЬ 1
- ГЛАВА 1. Исключение возможности остановки программ.
- 1.1. Общие рекомендации.
- 1.6. Метод защиты, используемый в программе FIST III.
- 2.3. Использование управляющих кодов.
- 40 ЛУЧШИХ ПРОЦЕДУР
- РАЗДЕЛ А
- 1. ВВЕДЕНИЕ
- Общие сведения о Бейсике и машинных кодах
- 2. ВНУТРЕННЯЯ СТРУКТУРА ZX SPECTRUM
- Карта памяти
- Атрибуты
- Буфер принтера
- Область программ на BASICe
- 5.Подпрограммы сдвига.
- 5.1Сдвиг атрибутов влево.
- 5.5 Сдвиг влево на один символ.
- МАСТЕРФАЙЛ 09 полная русификация.
- ВСТУПЛЕНИЕ.
- 3. Перевод программы на русский язык.
- POKES
- POKES
- NETHER EARTH
- HEAD OVER HEELS
- BETA BASIC
- РАЗДЕЛ 2. КОМАНДЫ
- 1. ALTER <атрибуты> ТО атрибуты
- 2. ALTER <ссылка> ТО ссылка
- 7. CLS <номер окна>
- 8. CONTROL CODES (управляющие коды)
- 12. DEF KEY односимвольная строка; строка
- ЗАЩИТА ПРОГРАММ
- ПРОГРАММА ДЛЯ СНЯТИЯ ЗАЩИТ
- Глава 3. Методы защиты от MERGE
- 40 ЛУЧШИХ ПРОЦЕДУР
- 5.8 Сдвиг вниз на один символ.
- 5.12 Сдвиг вниз на один пиксел.
- 6.ДИСПЛЕЙНЫЕ ПРОГРАММЫ
- 6.1 Слияние картинок
- 6.2. Инвертирование экрана.
- 6.6 Изменение атрибута.
- 6.9 Построение шаблонов.
- Текстовые сообщения программы MF 09 и их перевод
- ЗАКЛЮЧЕНИЕ.
- 0. Torneo
- SNOOKER
- Правила игры.
- FORUM
- Версия 1.
- Версия 2.
- Версия 3
- Перелеты к двойным звездам и невидимым звездам.
- Тайные возможности компьютера.
- СПЕКТРУМ В ШКОЛЕ
- BETA BASIC
- 22. EXIT IF <условие>
- 23. FILL x,y
- 28. KEYIN строковая переменная
- 29. KEYWORDS число.
- ЗАЩИТА ПРОГРАММ
- Глава 4. Прочие приемы защиты.
- 4.1Запуск программ в кодах.
- Глава 1. Введение
- Общие рекомендации.
- Глава 2. Блокировка автозапуска.
- Введение.
- 2.1 Загрузка Бейсика через блок кодов.
- 40 ЛУЧШИХ ПРОЦЕДУР
- 7.ПРОЦЕДУРЫ ОБРАБОТКИ ПРОГРАММ.
- 7.1Удаление блока программы.
- 7.4 Создание REM строк
- 8.ИНСТРУМЕНТАЛЬНЫЕ ПРОГРАММЫ
- 8.1Определение размера свободной памяти.
- ВОЗВРАЩАЯСЬ К НАПЕЧАТАННОМУ
- КАНАЛЫ И ПОТОКИ
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- ОБРАБОТКА ОШИБОК В БЕЙСИКЕ
- ПРЕДОТВРАЩЕНИЕ ОСТАНОВКИ БЕЙСИК ПРОГРАММЫ
- 1. Блок кодов "ON ERROR GO TO"
- FORUM
- Полезные советы.
- Письмо читателя.
- Проблемы совместимости.
- Уровень II.
- Выполнение миссии.
- Сводка боевых команд
- SHERLOCK
- Понедельник, 8:00
- НАШ КОНКУРС
- Наши предложения.
- Наши условия:
- BETA BASIC
- 34. LIST FORMAT число.
- 42. ON ERROR номер строки
- 46. POP <числовая переменная>
- 47. PROC имя <параметр><,параметр><,параметр>...
- 2.2.2Изменение хэдера для блокировки автозапуска.
- 40 ЛУЧШИХ ПРОЦЕДУР
- 8.5 Составление списка переменных.
- 8.7 Поиск и замещение строки.
- Формат данных в "Спектруме"
- Числовая переменная с именем из одной буквы.
- Числовая переменная с именем более чем из одной буквы.
- Числовой массив.
- ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- ЭЛЕМЕНТАРНАЯ ГРАФИКА В МАШИННЫХ КОДАХ
- Управляющие символы.
- Другие приемы управления позицией и цветом печати.
- Организация экранной памяти.
- Файл атрибутов.
- Эмуляция команд БЕЙСИКа из машинного кода.
- Скроллинг экрана.
- СЛУЧАЙНАЯ ГРАФИКА
- СЛУЧАЙНАЯ ГРАФИКА
- КРИБЕДЖ
- КРИБЕДЖ
- Программа
- Комментарий
- BETA BASIC
- 53. SAVE <строка TO строка;> устройство;> имя
- 56. SPLIT (не ключевое слово).
- 57. TRACE номер строки
- РАЗДЕЛ 3. ФУНКЦИИ
- ЗАЩИТА ПРОГРАММ
- 3.2Работа со встроенными машинными кодами.
- Глава 4. Изучение блоков в машинных кодах.
- 4.1 Введение.
- 4.2.2. Новые возможности программы "RENEGADE".
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- "ДЕБЮТ ПРОГРАММЫ"
- УНИВЕРСАЛЬНОЕ МЕНЮ
- Программа "PRIM"
- Маленькие Хитрости
- Маленькие хитрости
- ОШИБКИ ПЗУ
- 1. Ограничение по использованию регистровой пары IY.
- 2. Особенности регистровой пары H'L' (альтернативной).
- BETA BASIC
- 6. DPEEK (адрес).
- 7. EOF (номер потока).
- 12. ITEM ()
- 13. LENGTH (n, "имя массива")
- 21. SHIFT$ (число, строка)
- 24. TIME$ ()
- 25. USING$ (строка, число)
- 26. XOR (число, число)
- ПРИЛОЖЕНИЕ 1
- ПРИЛОЖЕНИЕ 2.
- ПРИЛОЖЕНИЕ 3
- Коды ошибок.
- ЗАЩИТА ПРОГРАММ
- 1.2 Смещение системной переменной PROG.
- 1.4 Новые POKES.
- Том 4. Методы защиты программ от копирования.
- Введение.
- ОШИБКИ ПЗУ
- 8. Ошибка CLOSE#.
- 9. Ошибка CHR$ 9.
- 13. Ошибка SCREEN$.
- Ошибки в редакторе
- 14. Ошибка Scroll?.
- 18 Ошибка проверки синтаксиса.
- Ошибки калькулятора
- 19. Ошибка MOD_DIV.
- 20.Ошибка E_TO_FP.
- ПРОФЕССИОНАЛЬНЫЙ ПОДХОД
- Блок кодов, воспроизводящий звук.
- Ввод параметров при помощи оператора INPUT.
- КАК ЭТО ДЕЛАЕТСЯ!
- RANARAMA
- Предварительные исследования.
- 1. Дизайн экрана.
- 2. Раскладка оперативной памяти.
- 3. Упаковка данных.
- THE DARK WHEEL
- ГЛАВА 3.
- ГЛАВА 4