Маленькие Хитрости
Признаться по совести, нам очень понравилась идея создания универсального программного "дебюта", предложенная автором предыдущей статьи. Конечно, "универсального" не в том смысле, что он должен быть один на всех и всех устраивать, а в том смысле, что каждый, кто программирует на "Спектруме", сможет сделать для себя собственную домашнюю заготовку и "подшивать" ее всякий раз, когда ему придет в голову написать какую нибудь программу.
Идея "дебюта" это не только программистская идея, ее ценность идет гораздо дальше. Из мемуаров известно, с каким трудом многие творческие личности берут себя по утрам за шиворот и тянут к письменному столу работать, а ноги упирается. Куда приятнее: подошел к столу, нажал пару кнопок и готово дело, дебют уже сделан, можно с чистой совестью отправляться обедать, а потом и вовсе отдыхать.
Многие писатели практикуют даже такой прием: отходя ко сну, они бросают своих героев на самом интересном месте, обрывая фразу на полуслове. А на следующий день спокойно с утра добьют своих героев, похоронят, если получится, и таким жизнерадостным дебютом начинают новый день в самой работоспособном настроении.
Вот и мы прочитали статью уважаемого автора и захотелось "плодотворную дебютную идею" (как говаривал высокочтимый нами Остап Ибрагимович) как то развить и упрочить. Захотелось и свой вклад в большое дело внести. Попробовали и так и этак, ничего в голову не идет надо все таки программировать, а без этого ну просто никуда.
И тут нас осенило: ну зачем нам программировать!? Ведь в компьютере уже есть куча программ в ПЗУ. Может быть ими и воспользуемся? Зачем велосипед изобретать?
Взялись за дело. Все ПЗУ прошарили, все обыскали, пачку бумаги испачкали но нет там ничего такого, чтоб компьютер сам за нас программу написал. Эх, лучше было бы это время на "ЭЛИТУ" потратить. И вдруг...
Самое интересное всегда происходит неожиданно. Вдруг по адресу 196ЕН (6510 десятиричное) мы нашли процедуру, которая выдает адрес начала любой БЕЙСИК строки в оперативной памяти, особенно если вы предварительно зашлете номер этой строки в регистровую пару HL процессора. После того, как процедура отработает, она оставит искомый адрес в той же регистровой nape HL.
НУ вот, решили мы, половина дела сделана. Адрес начала любой строки компьютер найдет сам, осталось только, чтобы он сам и строку туда записал. Но не тут то было ничего для этого в ПЗУ нет. Тут что то Клайв Синклер недодумал, за что только его лордом сделали?
Но мы не отчаялись и нашли еще одну интересную процедуру, которая начинается с адреса 19Е5Н (6629 DEC). Эта процедура способна уничтожить все, что находится в БЕЙСИК программе между адресом, который установлен в регистровой паре DE, и адресом, который установлен в регистровой паре HL. В общем, шикарный метод для стирания программ. Не совсем то, что мы искали, но хоть что то. Уж если не попрограммируем, зато хоть постираем от души, благо все делается автоматически.
Аведь если честно, то какое же программирование без хорошего стирания? Вы когда нибудь хоть строчку написали, чтобы ее потом не стирать? Вот то то же! Всякое правильное программирование всегда начинается со стирания того, что ранее было запрограммировано неправильно.
Ауж объединить эти две процедуры в одну программу в машинных кодах дело нехитрое. Вот и получилась такая миленькая программа, размером всего в 19 байтов, которая хотите верьте, хотите нет, а сэкономит массу времени любому, кто хоть когда нибудь написал что то длиннее, чем тридцать строк.
Можете теперь ее встроить в свой собственный "дебют", если хотите, можете держать
ееотдельно. Делайте с ней, что хотите, храните в любых адресах, можете встроить в БЕЙСИК строку, воспользовавшись приемом, которым поделился автор предыдущей статьи.
- 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