- •Спектрум в школе
- •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
во вторых, Вам надо при заполнении таблицы сообщений сделать так, чтобы последний символ каждого сообщения имел включенный 7 ой бит, тем самым он будет служить маркером конца 1 го сообщения и компьютер всегда по номеру, заданному в аккумуляторе, найдет нужное Вам сообщение;
в таблице не может быть пустых строк.
На что надо обратить внимание!
Работая с графикой из машинного кода, Вам надо иметь в виду некоторые особенности, связанные с работой встроенного калькулятора. Дело в том, что он не вполне свободен от разнообразных ошибок и неточностей, а они могут доставить головную боль начинающему программисту. Совсем другое дело, когда он предупрежден.
Итак, во первых, если вам необходимо будет выдавать на экран символы блочной графики (коды с 80Н по 8FH) эти символы расположены на цифровом ряду клавиатуры, то коррумпируются (портятся) системные переменные, расположенные в адресах с 5С92Н (23698) по 5С99Н (23705).
Те, кто читал "Первые шаги в машинном коде", знают, что здесь хранятся две первые ячейки памяти встроенного калькулятора (из шести стандартных). Это ячейки M0 и M1. Почти во всех случаях вам эта порча безразлична, но если вы активно работаете с калькулятором и именно они Вам и нужны, то примите меры по сохранению их значений в другом месте, например на стеке или в других ячейках.
Во вторых, при печати чисел мы довольно активно пользовались процедурой ПЗУ PRINT_FP, которая распечатывает содержимое вершины стека калькулятора, а она во время своей работы "портит" все шесть ячеек памяти калькулятора, т.е. все содержимое системной переменной MEMBOT с адреса 5С92Н (23698) по адрес 5CAFH (23727). Опять же для Вас это почти всегда безразлично, за исключением тех редких случаев, когда вы оставили там на хранение данные без присмотра.
А вот третий случай довольно часто встречается у тех, кто много работает со встроенным калькулятором. Дело в том, что в таблице системных переменных есть переменная под названием MEM, она расположена в адресе 5С68Н (23656) и занимает 2 байта. В ней хранится адрес, по которому расположена память калькулятора, т.е. адрес системной переменной MEMBOT. Если Вам достаточно тех шести ячеек памяти, которые есть стандартно, то нет проблем. А если же Вам их мало, то Вы создаете их побольше, для чего меняете адрес MEMBOT и, естественно, указание на нее, содержащееся в MEM. Это нормальная, часто встречающаяся операция. Так вот, после такой замены процедура PRINT_FP правильно работать не сможет.
Управляющие символы.
Набор символов "Спектрума" включает в себя стандартные символы ASCII их коды с 20Н (32) по 7FH (127). Символы блочной графики, графики пользователя и токены ключевых слов БЕЙСИКа коды с 80Н (128) по FFH (255). Это оставляет вне поля нашего зрения символы с 0 по 1FH (31). Что же расположено там?
А здесь расположены так называемые управляющие символы, их еще называют управляющими кодами (символами их называть и не хочется, ведь их нельзя напечатать и увидеть). Хоть сами они на экране и не воспроизводятся, зато с их помощью можно управлять процессом печати тех символов, которые могут быть напечатаны.
Мы начнем с управляющего кода 16H. Он называется AT_CONTROL и определяет координаты позиции печати так же, как и оператор AT в БЕЙСИКе.
Задействуются управляющие коды, как и любые другие символы, путем выставления этого кода в аккумуляторе процессора и подачей команды RST 10H. Это означает, что они могут быть как бы "напечатаны" вместе с прочими символами и могут быть включены в длинные символьные строки.
БЕЙСИКовский оператор AT требует после себя указания двух параметров координат позиции печати по вертикали и горизонтали. Управляющий код AT требует то же самое. Оба параметра вводятся тем же способом вводом параметра в аккумулятор и выдачей команды RST 10H.
Приведенная распечатка показывает машиннокодовый аналог оператора БЕЙСИКа PRINT AT 5,1; .
|
|
DEMO АТ_5_4 |
3E16 |
LD A, 16H |
|
D7 |
RST 10H |
; PRINT AT ... |
3Е05 |
LD A,05 |
|
D7 |
RST 10H |
; 5...... |
3E04 |
LD A,04 |
|
D7 |
RST 10H |
; 4..... |
Не имеет никакого значения, сколько и каких машиннокодовых команд будет выдано между тремя вышеприведенными командами RST 10H. "Спектрум", если выдал управляющий код 10H, далее всегда будет помнить, что два ближайших числа, проходящих через RST 10H, являются параметрами управляющего кода AT_CONTROL.
Более часто этот управляющий код находит применение, когда речь идет не о печати в фиксированной позиции, а в позиции, заданной программными переменными. Ниже показан машиннокодовый аналог команды PRINT AT D, Е (здесь D и Е содержимое соответствующих регистров процессора.)
|
|
DEMO AT_D_E |
ЗЕ16 |
LD A,16H |
|
D7 |
RST 10H |
; PRINT AT ... |
7А |
LD A,D |
|
DT |
RST 10H |
; D, .... |
7B |
LD A,E |
|
D7 |
RST 10H |
; E. .... |
Следующий управляющий код, который мы рассмотрим это код 17Н. Он называется TAB_CONTROL код управления табуляцией. До некоторой степени он тоже аналогичен оператору БЕЙСИКа TAB и указывает на номер позиции печати в текущей строке.
За ним также следуют 2 параметра (это не ошибка именно 2 параметра, хотя БЕЙСИКовский опыт учит, что для позиции печати достаточно и одного). Дело в том, что первый параметр это младший байт координаты позиции печати, а второй параметр ее старший байт. Поскольку экран "Спектрума" имеет всего лишь 32 символа по ширине, сразу и не понятно, зачем еще нужен какой то старший байт? Но дело в том, что печать ведь может идти не только на экран. А если на принтер? Да, ZX принтер тоже имеет только 32 символа в строке, но ведь возможна печать и на широкий матричный принтер, через интерфейс. Внимательный читатель может спросить, где мы видели принтер, печатающий в строку более 255 символов, но это уже вопрос риторический. Неважно, есть он или нет, но возможность работы с ним в компьютере предусмотрена. Более того, понятие "печать", как способ выдачи информации, может предусматривать не только стандартные каналы типа экрана или принтера. Возможны ведь и пользовательские каналы типа файлов на диске или в оперативной памяти, в которых запись может иметь и десятки тысяч символов в строке.
Но мы имеем дело все же с экраном, поскольку речь идет о графике, и для печати на экране то, что находится в старшей байте, не имеет никакого значения.
Дело в том, что когда Вы задаете параметр TAB, компьютер берет из него остаток от деления на 32, а старший байт кратен 256 и, естественно, кратен 32, поэтому его содержимое влияние при печати на экран и не оказывает.
Нижеприведенная процедура показывает управляющий код TAB_CONTROL в действии. Первый параметр предполагается переменным и берется из регистра E. Выдавая второй параметр, мы обнулили его, использовав для этого обнуление аккумулятора через XOR A, но раз этот байт роли не играет, можно было XOR A и не давать, а отправить в этот параметр то, что было в аккумуляторе к этому моменту, неважно, что это было.
|
|
DEMO TAB_E |
3E17 |
LD A,17 |
|
D7 |
RST 10H |
; PRINT TAB... |
7В |
LD A,E |
|
D7 |
RST 10H |
; Е.... |
AF |
XOR A |
|
D7 |
RST 10H |
; 0 ... |
Код CHR 6 называется COMMA_CONTROL и выполняет то же, что и запятая оператора PRINT. Код подается точно так же, как и прочие, введением числа 6 в аккумулятор и выдачей его через RST 10H. В результате его действия в качестве позиции печати устанавливается 0 или 15, в зависимости от того, в какой половине экрана печаталось последнее знакоместо.
Код 0DH (13) аналогичен ENTER. Выдается так же и обеспечивает прекращение печати в текущей строке и переход в начало следующей.
Код 08 называется BACKSPACE_ CONTROL, он выполняет смещение позиции печати на одно знакоместо влево.
Команда процессора RST 10H довольно гибкая и имеет самое разнообразное действие. С ее помощью можно не только управлять позицией печати символов на экране, но и управлять цветами того, что Вы воспроизводите, т.е. выдавать коды цветовых атрибутов. Выполняется это точно также путем предварительной установки в аккумуляторе управлявшего кода и передачей его, а затем передачей параметра. Мы не будем подробно останавливаться на цветовых атрибутах и привели их в Таблице 1.
Таблица 1.
Управляющий код |
Параметры |
|
06 COMMA_CONWR |
|
|
08 BACKSPACE |
|
|
0D ENTER |
|
|
10 INK_CONTROL |
00 черный |
|
11 PAPER_CONTR |
01 |
синий |
|
02 |
красный |
|
03 пурпурн. |
|
|
04 зеленый |
|
|
05 голубой |
|
|
06 |
желтый |
|
07 белый |
|
|
08 |
транспарантный |
|
09 |
контрастный |
12 FLASH_CONTROL |
00 |
выключен |
13 BRIGHT_CONTR |
01 |
включен |
|
08 |
транспарантный |
14 INVERSE_CONTR |
00 выключен |
|
15 OVER_CONTROL |
01 включен |
|
16 AT_CONTROL |
Строка, столбец. |
|
17 TAB_CONTROL |
Младший байт, старший |
|
|
байт. |
|
|
|
|
Комментарии
Параметр 08 (транспарантный1) означает, что цвет печати не устанавливается, а берется тот, который уже есть в данной позиции печати. Параметр 09 (контрастный) устанавливает цвет INK или PAPER контрастным к уже существующему в данной позиции противоположному цвету.
См. выше.
При выдаче на экран старший байт может быть любым. Можете, например, использовать эту ячейку памяти для хранения какой либо однобайтной переменной.
Пример применения кодов управления цветовыми атрибутами показывает, как выполняется печать красной звездочки на желтом фоне. Обратите внимание на то, что установленные таким способом цветовые атрибуты остаются действующими до того, как
1 Transparent прозрачный (Прим. OCR)