СОДЕРЖАНИЕ
Об этой книге............................................ 4
1. Элементарная графика на БЕЙСИКе.......................... 7
1.1. Введение............................................ 7
1.2. Раскладка экрана.................................... 9
1.2.1. Раскладка алфавитно-цифрового экрана............ 9
1.2.2. Раскладка экрана в графике высокого разрешения.. 13
1.2.3. Раскладка экрана цветовых атрибутов............. 14
1.2.4. Основные проблемы при работе с графикой......... 17
1.3. Команды Бейсика, связанные с графикой............... 19
1.3.1. Команды управления цветом и режимами печати..... 19
1.3.2. Команды печати графических примитивов........... 30
1.3.3. Команды для сканирования экрана................. 33
1.4 Графика пользователя................................ 38
1.4.1. Работа с графикой пользователя.................. 38
1.4.2. Создание банков символов графики пользователя... 41
2. Элементарная графика в машинных кодах.................... 46
2.1 Понятие о каналах и потоках......................... 47
2.2 Печать на экран из машинного кода................... 51
2.2.1. Печать чисел.................................... 51
2.2.2. Печать символьных строк......................... 53
2,2.3. Полезные советы................................. 55
2.3. Использование управляющих кодов..................... 56
2.4. Другие приемы управления печатью.................... 61
2.5. Организация экранной памяти......................... 63
2.6. Управление цветом бордюра........................... 72
2.7. Дополнительные возможности 128-килобайтных машин.... 73
2.8. Эмуляция команд БЕЙСИКа из машинного кода........... 78
2.8.1. Очистка экрана.................................. 78
2.8.2. Скроллинг....................................... 79
2.8.3. Временная задержка.............................. 80
2.8.4. Изображение точек............................... 81
2.8.5. Рисование линий................................. 82
2.8.6. Рисование дуги.................................. 82
2.8.7. Рисование окружностей........................... 83
2.8.8. Сканирование экрана............................. 83
2.9. Методика рассчета адресов в экранной области по
заданным координатам................................ 86
2.9.1. Расчет адреса в дисплейном файле (координаты
заданы в знакоместах)........................... 86
2.9.2. Расчет адреса в файле атрибутов................. 89
2.9.3. Расчет адреса в дисплейном файле (координаты
заданы в пикселах).............................. 92
2.10 Универсальная программа сканирования экрана........ 98
3. Практикум по графике в машинных кодах ...................107
3.1 Стандартный формат функции пользователя...........109
3.2. Очистка заданного окна экрана.....................112
3.3. Окрашивание заданного окна цветом INK.............116
3.4. Окрашивание заданного окна цветом PAPER...........121
3.5. Масштабное увеличение текста. Печать по
горизонтали.......................................126
3.6. Масштабное увеличение текста. Печать по
вертикали.........................................137
3.7. Печать точек на экране............................145
3.8. Рисование линий...................................152
3.9. Изображение прямоугольников.......................165
3.10. Изображение треугольников.........................170
3.11. Закрашивание области..............................173
3.12. Наложение изображений.............................184
3.13. Увеличение изображения............................188
3.14. Компрессия экрана.................................201
3.15. Декомпрессия экрана...............................206
Заключение........................................208
ОБ ЭТОЙ КНИГЕ
Бытовые персональные компьютеры типа "ZX-Spectrum" (систе-
ма Sinclair) - являются одними из самых популярнейших в нашей
стране и это не случайно. Долгое время они были и самыми
популярными в мире. Не в последнюю очередь это связано с их
графическими возможностями. Достигнутые сравнительно простыми
техническими средствами, эти возможности таковы, что во многих
случаях вполне способны удовлетворить насущные потребности
серьезного пользователя и, несмотря на наличие определенных
ограничений, они отличаются сравнительной простотой доступа,
что нередко делает этот скромный бытовой компьютер достойной
альтернативой более дорогим, но и более сложным ПЭВМ.
Компьютерная графика - это та сфера программного обеспече-
ния, которая требует повышенного быстродействия от компьютера и
его операционной системы, а также наличия значительных ресурсов
оперативной памяти. Надо сказать, что встроенный БЕЙСИК, с ко-
торым работает Ваш компьютер - далеко не лучшая среда с этих
двух точек зрения и самые значительные достижения в области
графики на "Спектруме", конечно, реализуются не в БЕЙСИКе, а
программированием в машинном коде процессора Z-80, который яв-
ляется сердцем Вашего компьютера.
В то же время, мы прекрасно понимаем, что программирование
в машинном коде еще не стало общедоступным, особенно для тех,
кто недавно приобрел компьютер и делает первые шаги самообразо-
вания. Эта книга поможет Вам продвинуться вперед. Мы учитываем
определенную психологическую сложность немедленного перехода
всех на работу в машинном коде и придали этой книге специальную
структуру, которая позволит удовлетворить как тех, кто имеет
глубокий опыт работы с компьютером, так и тех, для кого эта
книга - первое знакомство с машиной.
Особый раздел составляют конкретные инструментальные про-
граммные средства, приведенные в третьей части книги. Они
явятся, с одной стороны, практикумом для тех, кто самостоятель-
но изучает материал, а с другой - дадут будущему пользователю
необходимый набор программных инструментов, с помощью которых
он сможет строить и оттачивать свои программы.
Как и все материалы "ИНФОРКОМа", эта книга сделана в ка-
честве учебного пособия для самообразования. В этом смысле она
является законченным и самообеспеченным изданием. Но мы продол-
жаем работу над вопросами компьютерной графики и в развитие
темы в ближайшие месяцы выпускаем последующие тома серии:
т.2 - "Прикладная графика". В нем рассмотрены вопросы
конкретного применения графики для деловых, обучающих, научных,
игровых и прочих программ. Рассмотрена растровая, векторная,
блочная, трехмерная, теневая графика и пр.
т.3 - "Динамическая графика" - рассмотрены вопросы анима-
ции графических изображений. Основная направленность - на соз-
дание обучающих и игровых программ.
т.4. - "Дизайн Ваших программ" - квинтэссенция того, к
чему читатель шел, работая над первыми томами серии.
Таким образом, предложенная Вашему вниманию "Элементарная
графика" является не только и не столько самостоятельным учеб-
ным пособием, но также и методологической базой для последующих
изданий. Мы рассчитываем на то, что те, кому понравится эта
книга, приобретут и последующие тома.
Облегчить работу с данной книгой Вам поможет наше другое
издание "Персональный компьютер ZX-SPECTRUM. Программирование в
машинных кодах". Два года назад оно выпускалось в трех томах и
десятки тысяч любителей этого компьютера уже смогли с его помо-
щью приобщиться к профессиональной работе с компьютером. Сейчас
мы подготовили, выпустили и рассылаем заказчикам новое расши-
ренное и дополненное издание, содержащее все три части в одном
томе (271 стр.).
Часть 1 - "Первые шаги в машинных кодах".
Часть 2 - "Практикум по программированию в машинных кодах".
Часть 3 - "Справочник по программированию в машинных кодах".
Мы ждем Ваши отзывы и пожелания, а также заявки от органи-
заций, способных наладить печать и распространение в своих ре-
гионах наших изданий по оригинал-макету (поставляется на диске-
тах MS DOS для IBM-совместимых ПЭВМ). С предложениями обра-
щаться по адресу:
121019, Москва, Г-19, а/я 16, "ИНФОРКОМ".
Postscriptum
~~~~~~~~~~~~~~
г=================¬ Время от времени в нашей книге Вам бу-
¦ ------ --- ¦ дут попадаться такие марки R.I. Это наш
¦ - - - ¦ сигнал RARE INFORMATION - РЕДКАЯ ИНФОРМА-
¦ ------ - ¦ ЦИЯ. Вам знакомо ощущение: "Где-то я это
¦ - - - --- - ¦ видел, но не помню где"? - так вот, когда
L=================- Вы впоследствии будете листать эту книгу
в поисках чего-то очень нужного, эта марка Вам поможет.
г=================¬
¦ ---- --- ¦
¦ - - - ¦ S.I. - SYSTEM INFORMATION - СИСТЕМНАЯ
¦ -- - ¦ ИНФОРМАЦИЯ - чисто справочная информация
¦ -- - ¦ по системе. Более чем вероятно, что обра-
¦ - - - ¦ щаться к ней Вы будете еще не раз и не
¦ ---- - --- - ¦ два.
L=================-
I. ЭЛЕМЕНТАРНАЯ ГРАФИКА НА БЕЙСИКЕ
1.1. ВВЕДЕНИЕ
Возможно, что Вы сейчас сидите перед экраном своего
монитора (телевизора) и пытаетесь найти ответ на вопрос - как
же так происходит, что компьютер способен создавать на экране
удивительные многоцветные изображения, с которыми мы нередко
сталкиваемся в игровых программах и что необходимо знать для
того, чтобы сделать это самому?
Ответ, как это ни парадоксально, на самом деле прост. Вы
ведь видите, что изображение на экране состоит из элементарных
точек, а значит имеет какую-то структуру и, очевидно знаете,
что компьютер имеет оперативную память, состоящую из десятков
тысяч ячеек. Поэтому нужно только знать, как связана структура
того экрана, который Вы видите перед собой, с ячейками опера-
тивной памяти и научиться управлять изображением, засылая в эти
ячейки те или иные числа или подавая те или иные команды. Изу-
чением этих вопросов мы и займемся на страницах данной книги,
но сначала остановимся на некоторых особенностях "Синклер"-
совместимых компьютеров.
Характерной особенностью этих машин является то, что экран
одновременно является и символьным и графическим. Вы можете
одновременно на экране и напечатать что-то оператором PRINT и
нарисовать что-то, например оператором PLOT.
Сравните PRINT "." и PLOT 10,150. И в том и в другом
случае на экране появится точка, но в первом случае будет
напечатан символ "точка", образ которого возьмется из ПЗУ, а во
втором случае точка будет нарисована согласно Вашей команде
PLOT. Вы, должно быть, не удивитесь, что обе точки спокойно
уживаются вместе на одном экране, но на самом деле это могут
делать далеко не все компьютеры. В большинстве машин нельзя
одновременно воспроизводить на экране и символьную и графичес-
кую информацию. Для них существуют совершенно разные режимы
работы. Чтобы напечатать символы должен быть включен "символь-
ный" экран, а чтобы нарисовать что-либо, даже простую точку,
должен быть включен графический экран и вместе на одном экране
они не уживаются. Конечно, программисты обходят эти проблемы
и в графических режимах символы тоже изображаются, но, грубо
говоря, они не "печатаются", а "рисуются" специально созданной
для этой цели программой (так называемым драйвером экрана).
Итак, Ваш компьютер может одновременно работать и в сим-
вольном режиме и в графическом. Это колоссальное удобство,
которое мгновенно было оценено производителями программного
обеспечения и компьютер, первоначально предназначавшийся для
обучения школьников основам программирования, в кратчайшие
сроки был оснащен изобилием всевозможнейших программ и превзо-
шел самые смелые ожидания своих разработчиков. Фирмы, выпуска-
ющие программное обеспечение конечно были заинтересованы в
работе под самый популярный компьютер. Покупатели, в свою оче-
редь, были заинтересованы в приобретении наиболее обеспеченной
программами машины, что и делало ее популярной. Так родился
кумулятивный эффект и в значительной степени он связан с
особенностями экрана компьютера.
Вы, очевидно, знаете, что в один ряд на экране помещаются
32 символа и таких рядов может быть до 22-х. Это означает, что
экран имеет разрешение 32 X 22 символа. В то же время, Вы знае-
те, что экран имеет 256 точек по горизонтали и 172 точки по
вертикали, то есть при работе с графикой его разрешающая спо-
собность 256 X 172. Такую работу иногда называют работой с гра-
фикой высокого разрешения или еще короче "высокой графикой" в
отличие от символьной графики.
А теперь, прежде чем двигаться вперед, давайте рассмотрим
раскладку экрана компьютера и одновременно договоримся о терми-
нологии, чтобы далее на страницах этой и последующих книг упот-
реблять единые термины.