Ох уж этот Forth

Note from 2018: Универ давно закончил, а от этой дичи до сих оторопь берет 😱

ВСТУП ДО ВИКОРИСТАННЯ СИСТЕМИ "АСТРОФОРТ"

1. Форт-система "Астрофорт", створена колишнім Інститутом теоретичної астрофізики АН СРСР, входила до складу програмного забезпечення автоматизованого робочого місця експериментатора "Іскра 1031".

2. На відміну від перфострічкових Форт-систем система "Астрофорт" має віртуальну пам'ять на дисках та відповідні засоби для роботи з віртуальною пам'яттю.

3. Щоб ЗАПУСТИТИ СИСТЕМУ треба [cut]засобами MS DOS, NORTON COMMANDER, або іншої програми-оболонки знайти на диску ( D:) каталог FORTH (можливо інший) і виконати запуск файлу FORTH.COM. Роздивитись заголовок системи майже неможливо через велику швидкодію ПЕОМ IBM PC і побачити, що запуск завершено, можна після появи на екрані дисплею запрошення до діалогу у вигляді слова "ok"  червоного кольору. Червоний колір є колір повідомлень системи, блакитний колір є колір повідомлень оператора (користувача). БУДЬ-ЯКІ ПОВІДОМЛЕННЯ ОПЕРАТОРА МОЖНА ВІДРЕДАГУВАТИ БЕЗПОСЕРЕДНЬО НА ЕКРАНІ І БАГАТОРАЗОВО ВИКОРИСТАТИ.

4. Для виходу з Форт-системи виконайте команду BYE або натисніть <Esc>. Після натиснення <Esc> Форт-система вимагатиме підтвердити намір (Yes/No). Щоб вийти, натисніть <Y>. Після виходу знову запустіть Форт-систему. Призначення клавіш та їх комбінацій пояснене у двохсторінковому довіднику, який виведе на екран натиснення <F1>. Ознайомтесь з текстом довідника.

5. Віртуальна пам'ять Форт-системи організована у вигляді низки пронумерованих, починаючи з нуля, блоків-екранів розміром 1 Кбайт, що перебувають у складі активного у даний момент екранного файлу.(Екранного, бо то є сукупність екранів-блоків). Після запуску Форт-системи у якості активного встановлено файл з ім'ям FORTH.SCR. Якщо такого файлу немає у поточному каталозі, Форт-система сповістить про це. Під час роботи з системою у якості активного можна призначити будь-який файл, що є на диску. У системі передбачена деяка кількість дій з блоками-екранами та файлами з використанням засобів операційної системи MS-DOS. Ознайомтесь із змістом поточного екранного файлу. Для цього можна скористатись відповідними словниковими статтями. Команда :

1 20 INDEX  <Enter>

виведе для перегляду заголовки (перші рядки) екранів з 1-го до 20-го включно. Команда :

1 LIST      <Enter>

виведе для перегляду екран 1. Для перегляду іншого екрану треба лише змінити номер екрану на інший у тому ж рядку на екрані дисплею та  натиснути <Enter>. Команда :

1 EDIT     <Enter>

виведе для редагування екран 1. Для перегляду або редагування іншого екрану треба лише натискати PgDn або PgUp. Вихід з програми редагування - <Esc>.

6. Бригада, що виконує лабораторні роботи має створити на диску D (або С) каталог з назвою, що містить номер групи та номер бригади, у такий спосіб - GRАП59_1. Перші дві літери - cкорочена назва теми роботи. У каталог треба перенести Форт-систему та всі супутні файли. Програмні наробки  під  час  виконання роботи треба накопичувати у файлі в  цьому  каталозі. Файл можна створити у такій послідовності: виконати 1 EDIT, натисиути <F9>, вибрати у допоміжному меню рядок CREATE, натиснути <Enter>, ввести ім'я файлу краще без розширення, бо за замовчуванням система додасть розширення SCR і робитиме так  завжди  під  час роботи з файлом. Щоб впевнитись у наявності файла, треба вибрати у допоміжному меню рядок DIR і натиснути <Enter> або виконати рядок DIR, працюючи у діалозі з Форт-системою.

6.1. Виведіть назву поточного каталогу виконанням рядка:

4 .DIR   (якщо на диску A: то 1 .DIR)

Нагадаймо, що назва кореневого каталогу - ".." . Якщо файл вважаєте непотрібним, то видаліть його за допомогою рядка:

DEL NAME DIR            ( тут NAME - ім'я файлу)

Ім'я поточного ДИСКОВОДУ можна вивести за допомогою слова .DRV   . Вивести зміст поточного КАТАЛОГУ можна за допомогою слова DIR . Ім'я поточного АКТИВНОГО ФАЙЛУ можна вивести за допомогою

тексту   DECIMAL 92 .FCB або HEX 5C C TYPE DECIMAL.

7. Робота з віртуальною пам'яттю системи "Астрофорт".

7.1. Зробіть ваш робочий файл активним за допомогою рядка:

USING NAME                   (NAME - ім'я файлу)

Уникнути набору на клавыатуры слова USING можна натискуванням комбінації клавіш <Alt-U>.

7.2. Скористайтеся редактором Форт-системи для створення тексту  у  екранях  віртуалььної пам'яті. У екрані  0, який не використовують для зберігання текстів програм, бо його не можна завантажити (інтерпретувати текст), розмістіть довільний текст (наприклад, дату, склад бригади, номер групи та назву лабораторної  роботи і таке ін.). Для цього увійдіть у режим редагування за допомогою рядка:

0 EDIT        (тут 0 є номер екрану, що маємо редагувати)

Після виконання цього рядка ви працюєте з екранним редактором Форт-системи. Для виходу з редактору натисніть <Esc>. Замість набору слова ЕDIT та натискування <Enter> можна натискувати лише комбінацію клавіш <Alt-E>. Про інші скорочені команди можна довідатись, натискаючи <F1> двічи. Перший рядок треба резервувати для заголовка екрану. Натискування клавіші <F2> підготує перший рядок для розташування заголовку тобто запише у рядок дужки (ознаку коментаря для інтерпретатора системи) та дату у формі мм/дд/рр, де мм - поточний місяць, дд - день, рр - рік. Вводити текст заголовка треба, залишивши після відкритої дужки принаймні один пропуск. Переглянути заголовки екранів файлу можна за допомогою команди  n m INDEX , де n - номер першого, m - номер останнього екранів.

Записування тексту екрану на диск у активний файл відбувається під час виходу з редактору або під час переходу до іншого екрану (натисканням <Esc>, <Page Up>, <Page Down>). Але !! гарантоване збереження тексту екранів після редагування краще досягти операцією USING NAME , де NAME - ім'я файлу.

8. Виконайте наступну спробу приготування програми у екрані номер 2. Наберіть у екрані наступний текст:

.( УРА !) 500 300 BEEP      ( це викличе звуковий сигнал)

: TXT 5 0 DO ." ЕКРАН # 2 ПРАЦЮЇ" CR LOOP ; ( це 5 раз )

TXT CR FORGET TXT .( ЧИ БАЧИТЕ РЕЗУЛЬТАТ ?)  ( надрукує текст)

та після виходу з редактору інтерпретуйте текст екрану щляхом його завантаження. Виконайте команду 2 LOAD . Замість набору слова LOAD та натискування <Enter> можна натискувати комбінацію <Alt-L>.

9. Розташуйте у третьому екрані текст:

.( ТРЕТІЙ ЕКРАН ІНТЕРПРЕТОВАНО)   SIREN

А у четвертий екран текст:

.( ЧЕТВЕРТИЙ ЕКРАН ІНТЕРПРЕТОВАНО)  ALARM

Після виходу з редактору завантажте 3-й та 4-й екрани. Перевірте МОЖЛИВІСТЬ ЗАВАНТАЖЕННЯ ГРУПИ ЕКРАНІВ за допомогою  текста  у  одному екрані. Для цього розташуйте у першому екрані текст:

2 LOAD 4 LOAD 3 LOAD 2 LOAD

та завантажте перший екран. З'ясуйте - чи все було завантажено? Перевірте МОЖЛИВІСТЬ ЗАВАНТАЖЕННЯ НИЗКИ ЕКРАНІВ шляхом завантаження першого з низки. Для цього у кінець тексту другогота третього екранів додайте слово "-->" та завантажте екран 2.

10. Під час використання редактору у верхньому рядку екрану дисплею розташоване меню, де для вибору альтернатив послуговують функціональні клавіші <F1>...<F10>. Дія клавіш <F1> (Help) та <F2> (Date) була розглянута вище. Клавіші <F3> (Push-in), <F4> (Push-del), <F5> (Pop-in) та <F6> (Sprd-pop) використовують зметою перенести чи скопіювати будь-яку кількість рядків екрану в будь-яке місце іншого екрану поточного активного або будь-якого іншого екранного файлу. Натискування клавіші <F3> копіює вказані курсором рядки у спеціальний стек-буфер з показом першого рядка буферу на екрані дисплею. Послідовні натискування клавіші переміщують курсор вниз. Натискування клавіші <F5> переносить один рядок з верхівки стеку-буферу в місце екрану, вказане курсором. Клавіша <F4> діє аналогічно <F3>, але не копіює, а переносить рядки у буфер. На звільнене місце пересуваються рядки нижньої частини екрану. Клавіша <F6> діє аналогічно <F5>, але не накладає рядки на існуючі, а розсовує їх донизу.

11. Скористайтесь клавішами <F3>, <F5> і перенесіть текст з рядків 3 та 4 екрану 2 у рядки 2 та 3 екрану 6.

12. Клавіша <F7> (Find) виконує контекстний пошук екрану у файлі. Перейдіть до редагування першого екрану, натисніть <F7>, введіть текст для пошуку, наприклад, 3 LOAD і після натискання <Enter> буде знайдено перший екран, де є текст 3 LOAD. Після кожного натискання буде знайдено інший екран з більшим номером, зрозуміло, якщо такий існує. Клавіша <F8> (Replace) забезпечує не тільки контекстний пошук, але й заміну знайденого фрагменту тексту на заданий. Клавіша <F10> (Restore) дозволить відновити вміст екрану, який був до редагування, якщо записування на диск ще не відбулося. Клавіша <F9> (Menu) виводить на екран додаткове меню команд, у якому за допомогою клавіш із стрілками можна вибрати команду з переліку, поданого нижче :
  - Edit   - перейти до редагування іншого екрану,
  - Using  - встановити новий активний екранний файл,
  - Spread - зсув екранів на один екран у бік збільшення номерів, починаючи з поточного, з очищенням поточного,
  - Comprs - видалення поточного екрану із зсувом екранів з боку більших номерів,
  - Move   - перенесення групи екранів поточного файлу на інше місце у тому ж файлі,
  - Copy   - копіювання деяких або всіх екранів поточного екранного файлу у поточний або у інший екранний файл,
  - First  - перехід до редагування першого екрану поточного файлу,
  - Last   - перехід до редагування останнього екрану поточного файлу,
  - Print  - друкування вмісту поточного екрану на принтері,
  - Dir    - вивід змісту поточного каталогу,
  - Ch Drv - зміна поточного дисководу,
  - Index  - вивід заголовків екранів поточного файлу,
  - Create - створення нового екранного файлу у поточному каталозі,
  - Delete - видалення екранного файлу з поточного каталогу,
  - Forth  - перехід у тимчасовий екземпляр Форт-системи без виходу з редактору. Для виходу з цієї Форт-системи треба натиснути <Esc> або виконати BYE,
  - Ms DOS - тимчасовий вихід у DOS із зберіганням стану Форт системи. Для повернення у Форт-систему треба виконати команду EXIT.
 
Національний технічний університет  "ХПІ"
Кафедра обчислювальної техніки та програмування
МЕТОДИЧНІ ВКАЗІВКИ ДО ЛАБОРАТОРНО° РОБОТИ
з дисципліни "Периферійні пристрої ЕОМ"

Тема роботи :

ГРАФІЧНІ РЕЖИМИ ВІДЕОАДАПТЕРУ EGA

Підготував проф. Червонний С.Й.

МЕТА РОБОТИ: Вивчення графічних режимів роботи дисплею. Експерименти з обладнанням пропонується проводити з використанням середовища Форт-системи “Астрофорт”, з якою студенти мають бути знайомі після роботи з розділом  “Вступ до використання системи “Астрофорт”” або після роботи з навчально-довідковою програмою “Форт-система “Астрофорт””.

  1. ВСТУП.

1.1. Графічний дисплей та особливості його  складових частин

Сучасний графічний дисплей ПЕОМ за конструкцією розділено на адаптер та монітор. Адаптер підключено до системного інтерфейсу ПЕОМ, він має у складі ОЗП - відеопам’ять, багато регістрів. Адаптер виробляє сигнали для монітору. Монітор підключено до адаптеру, він має у складі кінескоп, засоби для розгортання променю, засоби для керування яскравістю та кольором зображення

Рис.1

Адаптер EGA ( Enchanced Graphics Adapter - удосконалений графічний адаптер ) може бути підключений до ПЕОМ IBM PC, IBM PC XT, IBM PC AT або до інших ПЕОМ, сумісних з переліченимми. Перед підключенням адаптеру EGA замість CGA треба було реконфігурувати систему шляхом зміни стану деяких перемикачів на основній  платі ПЕОМ. Настроювання адаптеру на відповідний монітор також проводили за допомогою перемикачів, але на платі адаптеру. На платі адаптеру EGA ( Рис.2 ) розташовані:

Рис.2

Якість дисплею залежить від багатьох факторів, таких, як тип інтерфейсу монітора з адаптером, частота розгортання рядків та кадрів монітору, параметри точкового растру на екрані, кількість кольорів. За типом інтерфейсу розрізняють монітори таких видів: композитний, цифровий RGB-монітор, цифровий ECD-монітор та ECD HiRes-монітор, аналоговий кольоровий монітор та інші. Композитний монітор - це означає, що з адаптеру у монітор по двійці проводів передають один композитний сигнал, що у композиції (у суміші) містить синхроімпульси кадрової та рядкової розгортки променю ЕПТ та відеосигнал, подібний до того, що використовують у телебаченні. У спрощених ПЕОМ, у яких у якості моніторів використовують стандартні телевізори (стандарти PAL чи SECAM), композитний сигнал, сформований у адаптері, подають до відеовходу телевізора або модульований композитний сигнал подають до радіовходу (антенний вхід). У останньому випадку погіршується розподільна здатність дисплею через існуючий спосіб передачи кольорових складових у сигналі. Композитний монітор - монітор аналогового типу і кількість різних відтінків кольору обмежує тільки адаптер.

Цифровий RGB монітор відрізняється тим, що по окремих проводах він одержує з адаптеру дворівневі сигнали для керування яскравістю, червоною, синьою та зеленою складовими кольору, а також сигнали синхронізації розгортання променю. Такий спосіб передачі кольорових складових дає можливість одержати на екрані 8 кольорових відтінків.

Цифровий ECD(Enhanced Color Display)-монітор має кількість проводів для передачі кольорових складових вдвічи більшу, ніж RGB-монітор. Це дозволяє передати чотири градації яскравості для кожного кольору або 4 * 4 * 4 = 64 кольорових відтінка. Обмеження, які пов’язані з обсягом відеопам’яті, привели до використання  підмножини  цих  відтінків. Така  підмножина  має назву “палітра”. Ї можливість формувати та вибирати палітру.

Цифровий ECD HiRes (High Resolution - висока розподільна здатність)-монітор при таких же можливостях у кольорі, що є у ECD-моніторі, може працювати у режимі з підвищеною розподільною здатністю 800 х 600 точок, що зовсім близько до телевізійного стандарту. Аналогові RGB-монітори, як і цифрові, мають три сигнальні проводи для керування кольором. Яскравість кожної кольорової складової визначена аналоговим сигналом, тому кількість відтінків необмежена. Але, оскільки аналоговий сигнал вироблено шляхом цифро-аналогового перетворення з обмеженою кількістю двійкових розрядів, кількість відтінків відома. Так для відеоадаптера VGA палітра у 256 кольорів може бути вибрана з 262144 відтінків. Електронний промінь проходить поверхню екрану у напрямкузліва направо та зверху вниз. Під час зворотного руху промінь вимикають в межах прямокутної робочої області (250 х 200 мм*мм). Область зовні робочої звуть рамкою. Кольором рамки також можна керувати. Частота розгортання вздовж рядка та частота виводу точок на екран визначають горизонтальний параметр точкового растру. Шаг тріад RGB люмінофорів менше, ніж шаг розташування тих точок на екрані, які складають зображення та мають назву - пікселів (pixel = picture element = елемент картини). Горизонтальний шаг та вертикальний шаг є різні. Якщо це не враховувати, то коло стане еліпсом. Для більшості режимів горизонтальний шаг до вертикального відноситься, як 5 до 6. Вертикальний параметр точкового растру є  кількість рядків у кадрі. При підвищенні кількості рядків можливе зниження частоти кадрів, що призводить до появи мигтіння зображення. Мигтіння менше помітне з використанням черезрядкової розгортки, тобто, у першому напівкадрі виводять усі парні рядки, у другому - усі непарні. Це має відбиток на організації відеопам’яті.

Сучасні графічні адаптери дисплеїв це баготофункціональні пристрої. Вони можуть бути поєднані з моніторами різних типів ( див. табл. 1 ). До деяких адаптерів можна підключити два монітори.

Табл. 1

Відеоадаптери можуть працювати у декількох режимах, що забезпечує можливість виконання у нових ПЕОМ програм, розроблених до появи нових відеоадаптерів. Перелік режимів роботи відеоадаптеру EGA, частково VGA та SVGA поданий у табл. 2.

Табл. 2

Режими 0-7 є спільні для всіх типів відеоадаптерів ПЕОМ, сумісних з IBM PC. Відеоадаптери EGA, VGA та SVGA додатково мають режими з кращими можливостями.

1.2. Обмін інформацією ПЕОМ з відеоадаптером

Звертання до адаптеру дисплею можливе, як і до багатьох інших пристроїв, шляхом безпосереднього обміну з регістрами через порти вводу-виводу та з відеопам’яттю, шляхом використання засобів BIOS (Base Input Output System - Базова система вводу-виводу), шляхом використання засобів алгоритмічних мов високого рівня. Підвищення рівня супроводжується деякими обмеженнями доступу. Не всі дії, виконані з обміном через порти, доступні через засоби алгоритмічних мов високого рівня або навіть через засоби BIOS. Використання засобів BIOS здійснюється за наступною схемою. У регістри процесору завантажують потрібні константи та виконують програмне переривання з номером 10h. Під час обробки переривання виконується потрібна функція.

  1. ЕКСПЕРИМЕНТИ З ВІДЕОАДАПТЕРОМ EGA.

Для експериментального вивчення деяких можливостей відеоадаптеру EGA потрібна ПЕОМ з завантаженою Форт-системою “Астрофорт”, яка є розвиненим середовищем для виконання експериментів.

Кінцевою метою експериментів є з’ясування алгоритмів виконання деяких функцій відеоадаптеру.

Завдання 1. Створення звітного файлу та програмних засобів для встановлення режимів адаптеру

Для створення звітного файлу, де потрібно буде накопичувати всі наробки, увійдіть у діалог з Форт-системою, визвіть редактор (тобто, виконайте 0 EDIT або 0 Alt-E ), перейдіть у допоміжне меню редактору (тобто, натисніть F9), виберіть позицію “Create” y меню, натисніть Enter і введіть ім’я майбутнього звітного файлу, беручи до уваги, що розширення до імені файлу система додасть сама. Зробіть ваш файл активним (тобто, виберіть у меню позицію “Using” та введіть ім’я звітного файлу). Тепер скористайтеся редактором і запишіть у екран 0 ваше прізвище, дату та інші потрібні ідентифікатори. Натисніть Esc. На цьому створення звітного файлу завершено. Виконайте словникову статтю DIR , щоб пабачити, чи є на диску створений файл.

Приготуйте програмні засоби для встановлення режимів відеоадаптеру. Відповідні словникові статті мають допомогти встановити будь-який режим роботи відеоадаптеру, хоча для найпростішого експерименту потрібна можливість встановлення хоча б двох режимів. Чому ? Якщо встановити графічний режим, то можливість діалогу з Форт-системою буде втрачена. Тому, будь-який експеримент з графічними режимами доцільно будувати із встановлення графічного режиму, із спостерігання результатів експерименту, із повернення до буквено-цифрового режиму.

Без останнього може стати необхідним перезапуск ПЕОМ та Форт-системи. Перенесіть текст програми (стор.    ) у екран 1 звітного файлу. Ввід  тексту  за  допомогою програми редактора Форт-системи є трудомістка операція. Скоротити витрати часу можна, якщо виключити коментарі. Але, якщо  окрім  Форт-системи ви маєте  можливість  скористатися  програмою-оболонкою  і читаєте текст цього посібника у окремому вікні екрану дисплею, то  перенесення тексту полягатиме у автоматичному копіюванні. Для  перенесення тексту з вікна тексту посібніка у звітний файл перейдіть у синє вікно (натисніть клавішу “<-“ або “->”), призначте звітний файл активним файлом Форт-системи (за допомогою USING),  виконайте статтю CPW ( або натисніть ) і дійте у діалозі, як того вимагатиме програма копіювання. Програма вимагатиме підтвердити ім'я файлу, у який буде спрямовано текст вікна, та ввести номер екрану у тому файлі.

( У екран 1. RGM та 80S -для встановлення режимів адаптеру,)

( для RGM на стеку - номер режиму  N ->                    )

HEX CODE RGM ( Початок Форт-асемблерного визначення RGM.)

AX POP ( Дія: номер режиму перенесено з стеку у регістр AX )

AX, # 1F AND ( Дія: старші розряди номеру скинуті до нуля, )

( аби запобігти появі некоректого номеру.     )

( Це рядок для змін або доповнень до програми )

10 INT ( Дія: звернення до програмного переривання 10h.    )

NEXT, ( Дія: повернення керування інтерпретатору Форт-системи)

END-CODE ( Ознака завершення Форт-асемблерного визначення. )

80S 2 RGM ; ( Стаття 80S для встановлення режиму 2, тобто)

( буквено-цифрового режиму. Стан стеку не змінює.          )

.( RGM та 80S - ЗАВАНТАЖЕНІ) CR DECIMAL

Програма копіювання закінчує роботу тим, що входить до програми редагування щойно скопійованого екрану. Видаліть з екрану 1 зайві рядки, бо їх наявність може зупинити компіляцію тексту.

Завантажте екран 1  (тобто, виконайте 1 LOAD)  та проведіть тестування словникових статтей. Під час тестування доведеться за відсутністю наробок спостерігати темний екран. У графічному режимі 4 виконаємо словникову статтю WAIT, що очікує натискання будь-якої клавіші, і тому час пребування у графічному режимі залежить від експериментатора.Виконайте у діалозі рядок:

4 RGM WAIT 80S

Повернення у Форт-систему (поява “ok”) свідчитеме про вдале завершення експерименту. Тестові тексти завжди розміщуйте у одному рядку і не натискуйте , доки не наберете у рядку слово 80S для виходу з графічного режиму, інакше є загроза час того перезавантаження ПЕОМ та Форт-системи.

Під час виконання RGM та 80S відбувається ОЧИЩЕННЯ відеопам’яті. На випадок, коли це небажано, існує можливість встановлювати режим БЕЗ ОЧИЩЕННЯ відеопам’яті. Проведіть модифікацію словникових статтей RGM та 80S з метою створення статтей RGM1 та 80SS , що не змінюватимуть стану відеопам’яті (без очищення).

Перенесіть текст екрану 1 звітового файлу у екран 2 звітового файл (скористайтесь у режимі редактору клавішами та ). Потім у тексті екрану 2 зробіть такі зміни:

замініть імена словникових статтей на RGM1 та 80SS, не порушуючи синтаксису коментарів (наявність обох дужок та пропуск після першої); у рядку перед командою переривання 10 INT розтащуйте фрагмент тексту

AL, # 80 OR

Цей фрагмент встановить у регістрі AL, де задають номер режиму, одиницю у сьомому розряді, що й призведе до модифікації команди. Після коригування завантажте екран 2 звітного файлу та проведіть тестування за допомогою такого ж рядка, як і під час тестування попередніх статтей. Вдале завершення можна констатувати у разі повернення до попереднього стану екрану після строкатої картини у графічному режимі. ЗВІДКИ СТРОКАТА КАРТИНА ?

Пояснення таке: очищена відеопам’ять для буквено-цифрового режиму не є очищеною для графічного режиму. Це тому, що чистий екран у буквено-цифровому режимі потребує у відеопам’яті сукупність байтів ASCII-кодів пропусків та байтів атрибутів, що визначають кольори фону та знаку.

Завдання 2. Побудова зображення звертанням до відеопам’яті

Найпростіше будувати зображення у режимах, у яких використовують у якості відеопам’яті тільки виділену частину ОЗП ПЕОМ. Це можливо у режимах, сумісних з тими, які підтримує відеоадаптер CGA. Наприклад, у режимі 4 відеопам’ять обсягом 16 Кб розташована у ОЗП у сегменті з адресою B8OOh. Режим 4 ( табл. 1-2 ) має екран 320х200 точок, 4 кольори, 2 палітри. Перший напівкадр, що складається з рядків з парними номерами відображується з відеопам’яті із зсувом від 0000 до 1FFFh, другий напівкадр (непарні номери рядкїв)  із зсувом від 2000h до 3FFFh. Кожен байт несе інформацію для чотирьох послідовно розташованих у рядку точок.

На  кожну  точку  припадає 2 біти, що дозволяє записати один з 4-х варіянтів дворозрядних кодових комбінацій, тобто, призначити точці один з чотирьох кольорів. Оскільки у Форт-системі є засоби для записування у ОЗП в будь-який сегмент байтів та слів (2 байти), скористаймося для експерименту цими засобами. Перенесіть у екран 3 звітного файлу наступний текст, завантажте екран та натискуйте багаторазово до кінця експерименту.

( У екран 3.) 4 RGM 2 BASE !  ( Режим 4 та двійкова система.  )

101010101010101 HEX B800  0  !L ( На екран   8 блакитних точок)

WAIT HEX 5A55 B800 DECIMAL   80  !L ( нижче ще  8 точок)

WAIT HEX AA55 B800 DECIMAL  160  !L ( нижче ще  8 точок)

WAIT HEX AA5A B800 DECIMAL  240  !L ( нижче ще  8 точок)

( Далі 4 рядки другого напівкадру)

WAIT HEX 5655 B800 DECIMAL 8192    0 + !L ( 1 малинова серед 8)

WAIT HEX 6A55 B800 DECIMAL 8192   80 +  !L ( нижче ще  8 точок)

WAIT HEX AA56 B800 DECIMAL 8192  160 +  !L ( нижче ще  8 точок)

WAIT HEX AA6A B800 DECIMAL 8192  240 +  !L ( нижче ще  8 точок)

WAIT HEX   FF B800 DECIMAL        400 C!L ( 4 білих точки    )

WAIT HEX   C3 B800 DECIMAL 8192 400 + C!L ( нижче ще 2  точки)

WAIT HEX   C3 B800 DECIMAL        480 C!L ( нижче ще 2  точки)

WAIT HEX   C3 B800 DECIMAL 8192 480 + C!L ( нижче ще 2  точки)

WAIT HEX   FF B800 DECIMAL        560 C!L ( нижче ще 4  точки)

WAIT 80S  .( Кінець експерименту)

З’ясуйте спосіб кодування та відредагуйте екран 3 так, щоб від двокольорового прямокутника залишився лише контур ( або інша частина за завданням викладача). ЯКЩО ПІД ЧАС СПРОБ ВИНИКНУТЬ СИНТАКСИЧНІ ПОРУШЕННЯ І СИСТЕМА НАМАГАТИМЕТЬСЯ ВИДАТИ ВАМ ТЕКСТОВЕ ПОВІДОМЛЕННЯ, ТА НЕ ЗМОЖЕ, ПЕРЕБУВАЮЧИ У ГРАФІЧНОМУ РЕЖИМІ, ВИХІД У ДІАЛОГ ТАКИЙ: БАГАТОРАЗОВО НАТИСНІТЬ ), НАТИСНІТЬ ТА , ПОТІМ НАБЕРІТЬ СЛОВО 80S, НЕЗВАЖАЮЧИ НА ТЕ, ЩО ЛІТЕР НЕ ВИДНО, ТА НАТИСНІТЬ . Поява "ok" свідчитиме про відновлення нормального діалогу з Форт-системою.

Зауважимо, що звертання до відеопам’яті у 16-кольорових режимах відеоадаптеру EGA досить складне, але забезпечує більшу швидкість обміну, ніж інші способи обміну.

Завдання 3. Створення засобів для виводу точок на екран з використанням BIOS

Підготуйте словникові статті для записування точок (пікcелів) на екрані (PXWR) та для виводу кольорової лінії обрамлювання робочого поля екрану (OBR).

Перенесіть  наступний  текст у екран 4  звітного  файлу та завантажте екран.

( У екран 4. PXWR, OBR та OBR16 )

( PXWR, cловникова стаття для записування пікселу або точки)

( Стек: C X Y ->  C-номер кольору, X,Y - координати пікселу.)

( Діапазон X та Y для режиму 4: X= 0 - 319, Y= 0 - 199     )

HEX CODE PXWR DX POP CX POP AX POP ( Перенесення параметрів)

( C,X,Y  із стеку на регістри    DX, CX, AX                )

AH, # C MOV ( Встановлення операції записування пікселу    )

BH, # 0 MOV ( Встановлення номеру сторінки відеопам’яті “0”)

10 INT NEXT, END-CODE ( Звернення до підпрограми BIOS, кінець)

DECIMAL ( OBR,обрамовування. На стеку - номер режиму,колір  )

OB 3 PICK RGM DUP 0 DO 2 PICK 2 PICK 1 - I PXWR 2 PICK 0 I

PXWR LOOP OVER 0 DO 2 PICK I 0 PXWR 2 PICK I 2 PICK 1 - PXWR

LOOP 2DROP DROP WAIT 80S ;

OBR 320 200 OB ; : OBR16 640 350 OB ;

.( PXWR,OBR,OBR16 - ЗАВАНТАЖЕНІ) CR

Тестування словникової статті PXWR проведіть за допомогою рядка

DECIMAL 4 RGM 3 160 100 PXWR WAIT 80S

Має з’явитися яскрава біла точка посередині екрану. Щоб запобігти появі помилок під час набору  довгих  тесто вих рядків, можна скопіювати текст з рядком у екран звітового файлу, який не буде використовуватися (наприклад, з номером 30), видалити зайвий текст і тоді для проведення експерименту треба лише завантажити екран 30. Перевірте можливість проведення експерименту саме у такий спосіб.

Тестування словникової статті OBR допоможе з’ясувати стандартну таблицю кодування кольорів у режимах 4 та 13. Рядок 4 3 OBR виведе рамку  з кольором  номер 3 у режимі 4.  Змінюючи номери кольору та режиму, з’ясуйте кольори і запишіть назви кольорів для обох режимів у екрані 5 звітного файлу у формі таблиці. Ваші результати можуть не співпадати з даними табл. 1-4. Наступний рядок продемонструє, яку частину екрану у режимі 16 з параметрами растру 640х350 обрамовує слово OBR, яке розраховане для режимів з номерами 4 та 13.

16 14 OBR

Проведіть експерименти також з режимами 6 та 14, які згідно табл. 1-2  мають параметри точкового растру 640х200.

Завдання 4. Встановлення кольору фону та палітри

Підготуйте у екрані 6 звітного файлу текст словникової статті для встановлення кольору фону і палітри. Така функція для режиму 4 потребує у регістрі AH число Bh (код функції), у регістрі BH - номер палітри, у регістрі BL - номер кольору фону. Словникова стаття FONPAL встановлює колір фону та/або варіант палітри.

( У екран 6. FONPAL - встановлення фону та палітри)

HEX CODE FONPAL AH, # B MOV BX POP

10 INT NEXT, END-CODE DECIMAL

.( FONPAL - ЗАВАНТАЖЕНО)  CR

Тестування словникової статті FONPAL проведіть за допомогою тексту поданого нижче. У тексті запрограмовано вивід на екран строкатої картини, потім без зміни картини натисненням встановлюються різні комбінації палітр та кольорів фону. Трирозрядні шістнадцяткові числа, що передують FONPAL, числом у старшому розряді забезпечують встановлення палітри, номер якої і відповідає значенню числа.  Два інші  розряди  забезпечують встановлення кольору фону, номер якого міститься саме у цих роз-рядах. Завантажте наступний текст та без поспіху декілька разів натисніть .

HEX

4 RGM1 WAIT 100 FONPAL WAIT 101 FONPAL WAIT 005 FONPAL WAIT 80S

DECIMAL

Завдання 5. Відображення функції двох змінних

Якщо колір точок вважати значенням третьої координати, то можливе відображення функції двох змінних С=f(X,Y). Кольорова картина дає змогу вивчати особливості функцій. Неважко одержати зображення поверхні в лініях рівня, що використовують у картографії. Перенесіть у екрани 7 та 8 звітного файлу поданий нижче текст демонстраційної програми та завантажте екран 7. Математичні вирази для обчислення С (номеру кольору) виводяться на екран перед показом картини. У одному з виразів є помилка і картина не відповідає виразу. Визначить, який з виразів C1,…C4 є помилковий та занесіть ліву частину виразу у ті коментарні  дужки,  що розташовані у кінці тексту екрану 8. Для пуску програми завантажуйте тільки екран 7.

( У екран 7. Графічний режим 13, 320X200, 16 кольорів.       )

( Словникова стаття для фарбування екрану пікселами з чергу- )

( ванням кольорів ) DECIMAL

POLE 320 0 DO 200 0 DO I 15 MOD 1 + J I PXWR LOOP LOOP ;

POLE1 320 0 DO 200 0 DO I J - ABS 2 /   J I PXWR LOOP LOOP ;

POLE2 320 0 DO 200 0 DO I J + 5 / 16 MOD J I PXWR LOOP LOOP ;

POLE3 320 0 DO 200 0 DO I J + 15 /       J I PXWR LOOP LOOP ;

POLE4 320 0 DO 200 0 DO I J * 515 /      J I PXWR LOOP LOOP ;

POLE5 320 0 DO 200 0 DO I I J * *  15000 /

16 MOD 1 +  J I   PXWR LOOP LOOP ;

POLE6 320 0 DO 200 0 DO I I * J J * + 550 / 16 MOD J I PXWR

LOOP LOOP ;

POLE7 320 0 DO 200 0 DO I 100 - DUP * J 160 - DUP * + 500 /

16 MOD J I PXWR LOOP LOOP ;

POLE8 320 0 DO 200 0 DO I 100 - DUP * J 160 - DUP * + 100 /

16 MOD J I PXWR LOOP LOOP ;  –> ( продовження у екр.8)

( У екран 8. Продовження програми. ) : UU CR

.” ПОСЛЯ НАТИСКАННЯ КЛАВІШІ БУДЕ ВИВЕДЕНА КОЛЬОРОВА КАРТИНА” CR

.” НОМЕР КОЛЬОРУ ВІДПОВІДАЇ ВИРАЗУ: “ ;

80S UU .( C1= ABS[X-Y]/2         ) 300 500 BEEP KEY DROP

13 RGM POLE1   400 500 BEEP KEY DROP

80S UU .( C2= [[X*Y]/15]MOD4  ) 700 500 BEEP KEY DROP

13 RGM POLE3   800 500 BEEP KEY DROP

80S UU .( C3=[[X2+Y2]/550]MOD16 ) 1100 500 BEEP KEY DROP

13 RGM POLE6  1200 500 BEEP KEY DROP

80S UU .( C4=[[X*2+Y**2]/500]MOD16 ) 1100 500 BEEP KEY DROP

13 RGM POLE5  1000 500 BEEP KEY DROP 80S

CR .( КІНЕЦЬ ДЕМОНСТРАЦІ°) FORGET POLE         (        )

Завдання 6. Створення засобів для побудови кіл

Двовимірний простір площини екрану є анізотропний, бо горизонтальний та вертикальний шаги є різні. Але для режимів 4,13,16 відеоадаптеру відношення шагів горизонтального до вертикального є однакове і дорівнює 5/6. Для того, щоб запобігти викривленням, потрібне відповідне коригування координат точок. З’ясуємо характер викривлень та можливість їх усунення на прикладі такої фігури, як коло. Поданий нижче текст здійснює побудову кола за методом оцінної функції. Під час побудови кола кожен можливий  крок на прямокутній сітці точок оцінюють на наближення до рівняння (X-XC)2 + (Y-YC)2 = R**2 (Тут ** - знак піднесення до степеня). Здійснюють крок, який дає найменьше відхилення. Перенесіть текст у екран 9 звітного файлу та завантажте його.

( У екран 9. Словникова стаття OKR1 для побудови кола.       )

( Стек: C XC YC R -> ; С-колір, XC,YX-коорд. центру, R-радіус)

OKPR1   2DUP 7 PICK + SWAP 8 PICK + SWAP 9 PICK 0 SWAP

2OVER PXWR     DROP 2DROP ; : ITER1 BEGIN 3 PICK 2 PICK +

DUP * >R 0 OVER +  ( 6 * 5 / ) DUP * R> +

5 PICK - ABS >R 0 2 PICK +

DUP * >R 2 PICK OVER + ( 6 * 5 / ) DUP * R> +

5 PICK - ABS R> < IF 2 PICK + OKPR1  ELSE SWAP 3 PICK + SWAP

OKPR1    THEN 2DUP *   0 = IF EXIT THEN AGAIN ;

OKR1 4 0 DO I 0 = IF DUP DUP * SWAP NEGATE 1 SWAP 1 SWAP

0 THEN       I 1 = IF >R >R NEGATE R> R> THEN

I 2 = IF >R >R >R NEGATE R> R> R> THEN

I 3 = IF >R >R NEGATE R> R> THEN

ITER1 LOOP 2DROP 2DROP DROP 2DROP DROP  ;

.( OKR1 - ЗАВАНТАЖЕНО) CR

Тестування словникової статті проведіть за допомогою рядка

DECIMAL 13 RGM 5 100 100 80 OKR1 WAIT 80S

Виконання рядка має відобразити на екрані коло з радіусом 80 точок, з центром у точці (100,100). Але коло виглядатиме, як еліпс. Скоригуємо текст статті OKR1  з метою  усунення  викривлень. Перенесіть текст статті OKR1 з екрану 9 у екран 10 та змініть назви статтей OKR1 на OKR, ITER1 на ITER, OKPR1 на OKPR, не залишаючи жодного входження без зміни. Фрагменти “( 6 * 5 / )”, яких у тексті два, залиште без дужок. Завантажте екран 10 та проведіть тестування OKR за допомогою рядка

DECIMAL 13 RGM 9 100 100 80 OKR1 WAIT 14 100 100 80 OKR WAIT 80S

На екран буде виведено коло до коригування та коло після коригування, яке буде іншого кольору.

Проведіть експерименти та з’ясуйте, як реагує відеоадаптер на вихід кола за межі точкового растру у режимах 13 та 16. Чи однакова реакція на вихід за горизонтальні та за вертікальні (а також за обидві) межі ? Результати спостережень запишіть у екран 11 звітного файлу.

Завдання 7. Створення засобів для зображення кругів

Підготуйте словникову статтю для зображення кругів шляхом побудови концентричних кіл із зростаючим радіусом. Перенесіть наступний текст у екран 12 звітного файлу та завантажте екран.

( У екран 12.Словникові статті LKJ,LKJ3 для побудови кругів )

( На стеку C XC YC RMAX RMIN ->  ; С-колір, XC,YC-коорд.центру)

( RMAX,RMIN-радіуси максимальний та мінімальний               )

DECIMAL

LKJ DO 2 PICK 2 PICK 2 PICK I OKR I 10 / FONPAL I 8 / 80 *

50 BEEP LOOP DROP ;

LKJ3 DO 2 PICK 2 PICK 2 PICK I OKR1 LOOP DROP ;

.( LKJ та LKJ3 - ЗАВАНТАЖЕНІ) CR

Тестування словникових статтей проведіть за допомогою тексту

DECIMAL

13 RGM 5 160 100 40 1 LKJ3 WAIT 8 160 100 90 40 LKJ WAIT 80S

Після першого натискування під час побудови кругу стаття LKJ подає звуковий супровід разом із змінами фону та палітри. Виконайте цей же текст, але без початкового фрагменту 13 RGM , тобто у буквено-цифровому режимі. Ви зможете спостерігати наслідки помилки, коли не встановлено графічний режим, а програма побудови зображення виконується. Підготуйте словникову статтю LKJ1 для побудови кругу шляхом перебору точок прямокутної області та встановленням кольору точок в залежності від істиності предикату належності точок кругу.

Перенесіть наступний текст у екран 13 звітового файлу та завантажте екран.

( У екран 13. LKJ1 - словникова стаття для побудови кругів. )

( Стек: C XC YC RMAX RMIN  ->  ; як і раніше )

LKJ1   OVER DUP * OVER DUP * 5 PICK 4 PICK 2DUP -

R + R> 6 PICK 6 PICK 2DUP - >R + R>

DO 2DUP DO

I 8 PICK - ABS DUP *

J ( 6 * 5 / ) 8 PICK - ABS DUP * +

4 PICK OVER > >R

3 PICK OVER < >R DROP R> R> AND

IF 8 PICK I J PXWR THEN LOOP LOOP

2DROP 2DROP 2DROP 2DROP DROP ;

.( LKJ1 - ЗАВАНТАЖЕНО) CR

Тестування словникової статті проведіть за допомогою тексту

DECIMAL

13 RGM 5 160 100 40 1 LKJ1 WAIT 8 160 100 90 40 LKJ1 WAIT 80S

Порівняйте швидкість побудови круга за допомогою статті LKJ3 та за допомогою статті LKJ1, шляхом проведення відповідних експериментів. Результат запишіть у екран 14  звітного файлу. Виконайте демонстраційну програму побудови кругів. Для цього перенесіть наступний текст у екран 15 звітного файлу та завантажте екран.

( У екран 15. Демонстрація побудови кругів    )

DECIMAL  ( Використано LKJ)

13 RGM  7 160 100 150 1   LKJ   6  110 50 40 38 LKJ

6  210 50 40 38 LKJ  6 130 120 15 1 LKJ 6 160 115 20 1 LKJ

6 190 120 15 1 LKJ 12 160 145 7 1 LKJ 12 153 148 9 1 LKJ

12 167 148 9 1 LKJ 12 146 148 6 1 LKJ 12 174 148 6 1 LKJ

12 138 148 2 1 LKJ 12 182 148 2 1 LKJ

0 110 70 20 1 LKJ 0 210 70 20 1 LKJ WAIT 80S

( Використані LKJ1 та LKJ3)

DECIMAL 13 RGM

4 110 100 30 1 LKJ1 6 150 50 45 5 LKJ3 7 180 120 79 4 LKJ1

10 150 180 65 1 LKJ 12  80 100 45 5 LKJ 8 150  80 25 1 LKJ3

14 10 100 95 5 LKJ1 WAIT 80S

З метою можливого у подальшому відновлення словника Форт-системи, яке знадобиться після перезавантаження ПЕОМ, треба підготувати у екрані 16 наступний текст.

( Завантажувальний екран 16  для ЗАВАНТАЖЕННЯ 1 )

DECIMAL

1 LOAD 2 LOAD 4 LOAD 6 LOAD 9 LOAD 10 LOAD 12 LOAD 13 LOAD

7 cba!

.( ЗАВАНТАЖЕННЯ 1 ЗАВЕРШЕНЕ) 12 cba! CR

Після пуску Форт-системи треба виконати 16 LOAD . Це відновить у словнику всі словникові статті, що з’явились під час виконання експериментів 1.3.1.-1.3.7 . Це потрібно робити, бо згадані словникові статті використовуються у наступних експериментах.

Завдання 8. Створення засобів для виводу точок на екран з модифікацією кольору (а не заміною)

Підготуйте словникову статтю з іменем PXWR1, що відрізняється від статті PXWR тим, що під час її виконання відбувається не записування  коду   кольору у відеопам’ять, а модифікація того коду  , що був у пам’яті, шляхом підсумовування розрядами (XOR) того коду , що був у відеопам’яті, та того, що задано . Засобами BIOS можлива саме така модифікація кольору, а звертанням до регістрів відеоадаптеру крім такої можливі інші логічні операції над двійковими кодами номерів кольору. Перенесіть текст екрану 4 звітного файлу у екран 17 та відредагуйте текст, а саме:

AL, # 80 OR

За допомогою цієї команди старший розряд регістру AL набуває значення “1”, що забезпечує інший режим звертання до відеопам’яті. Для зсуву рядків униз натисніть +. Після редагування завантажте екран 17. Під час тестування PXWR1  треба впевнитися, що дворазове звертання до пікселу з одним номером кольору відновлює початковий колір. Текст тесту перенесіть у екран 18 потім завантажте екран та натискуйте .

( У екран 18. Тестування словникової статті PXWR1 )

DECIMAL

LLL 15 0 DO 300 0 DO I 19 / I 10 + 40 J + PXWR LOOP LOOP ;

LNN 50 0 DO 120 0 DO 14 I 120 + 100 J + PXWR1 LOOP LOOP ;

LNN1 60 0 DO 90 0 DO 12 I 180 +  90 J + PXWR1 LOOP LOOP ;

LNN2 80 0 DO 60 0 DO 11 I 150 +  80 J + PXWR1 LOOP LOOP ;

LNN3 45 0 DO 160 0 DO 13 I 100 + 120 J + PXWR1 LOOP LOOP ;

13 RGM LLL

LNN WAIT LNN1 WAIT LNN2 WAIT LNN3 WAIT LNN2 WAIT

LNN1 WAIT LNN WAIT LNN3 LLL 80S FORGET LNN .( ЗАВЕРШЕНО)

( На жовтий прямокутник накладено червоний, далі на обидва    )

( накладено блакитний, а на всі пурпурний, потім повторюванням)

( накладень повертаємо попереднє забарвлення. У верхній части-)

( ні екрану - прямокутник з усіма кольорами станд. палітри.   )

Завдання 9. Спостереження за побудовою кругів з модифікацією кольору

Використання модифікації кольору дозволяє виявити факт неодноразового виводу пікселу, що іноді потрібно при налагодженні програм. Разом з тим це гарантує появу нових візерунків, як це можна бачити з наступної демонстраційної програми. Перенесіть наступний текст у екрани 19 та 20 звітного файлу та завантажте екран 19.

( У екран 19.Коло з модифікацією кольору.Cтек: C XC YC R ->)

OKPR2 2DUP 7 PICK + SWAP 8 PICK + SWAP 9 PICK 0 SWAP

2OVER PXWR1    DROP 2DROP ; : ITER2 BEGIN 3 PICK 2 PICK +

DUP * >R 0 OVER +    6 * 5 /   DUP * R> + 5 PICK - ABS >R

0 2 PICK + DUP * >R 2 PICK OVER +   6 * 5 /   DUP * R> +

5 PICK - ABS R> < IF 2 PICK + OKPR2 ELSE SWAP 3 PICK + SWAP

OKPR2 THEN 2DUP *   0 = IF EXIT THEN AGAIN ;

OKR2 4 0 DO I 0 = IF DUP DUP * SWAP NEGATE 1 SWAP 1 SWAP

0 THEN       I 1 = IF >R >R NEGATE R> R> THEN

I 2 = IF >R >R >R NEGATE R> R> R> THEN

I 3 = IF >R >R NEGATE R> R> THEN [ DECIMAL ]

ITER2 LOOP 2DROP 2DROP DROP 2DROP DROP ; ( Круг з кіл LKJ2)

LKJ2 DO 2 PICK 2 PICK 2 PICK I OKR2 I 10 / FONPAL LOOP

DROP ;  –>

( У екран 20. Круг з модифікацією кольору LKJ4.)

LKJ4   OVER DUP * OVER DUP * 5 PICK 4 PICK 2DUP -

R + R> 6 PICK 6 PICK 2DUP - >R + R> DO 2DUP DO

I 8 PICK - ABS DUP * J ( 6 * 5 / ) 8 PICK - ABS DUP * +

4 PICK OVER > >R 3 PICK OVER < >R DROP R> R> AND IF 8 PICK

I J PXWR1 THEN LOOP LOOP 2DROP 2DROP 2DROP 2DROP DROP ;

( Демонстрація побудови кругів з модифікацією кольору)

DECIMAL 13 RGM      2 100 100  50 OKR1

4 110 100 30 1 LKJ2 6 150 50 45 5 LKJ2 7 180 120 79 4 LKJ2

10 150 180 65 1 LKJ2 12  80 100 45 5 LKJ2 8 150  80 25 1 LKJ2

14 10 100 95 5 LKJ2 WAIT 80S

DECIMAL 13 RGM  5 100 110 80 0 LKJ4 5 150 110 80 0 LKJ4

4 110 100 30 1 LKJ4 6 150 50 45 5 LKJ4 7 180 120 79 4 LKJ4

10 150 180 65 1 LKJ4 12  80 100 45 5 LKJ4 8 150  80 25 1 LKJ4

14 10 100 95 5 LKJ4 WAIT 80S  .( ЗАВЕРШЕНО) FORGET OKPR2

Завдання 10. Створення засобів для зміни окремих кольорів палітри

Номер кольору (0-15 для режимів 13, 14 та 16) є номер регістру палітри, у якому зберігається код кольору. Код кольору це шестирозрядне двійкове число, розряди якого визначають наявність червоної (R), зеленої (G) та синьої (B) складових кольору відповідної інтенсивності згідно табл. 3. Перенесіть у екран 21 звітного файлу наступний текст словникової статті USTC для записування нових кодів кольору у регістри палітри та завантажте екран 21.

( У екран 21. Cловн. стаття USTC для зміни кольору палітри)

( Стек: N ->    N - у молодшому байті номер регістру палітри,)

( у старшому байті - код кольору)

HEX CODE USTC BX POP AX, # 1000 MOV 10 INT NEXT, END-CODE

DECIMAL  .( USTC - ЗАВАНТАЖЕНО) CR

Табл. 3

Проведіть випробування словникової статті USTC. Замініть зелений колір стандартної палітри (регістр 2) на яскраво-червоний, відсутній у  стандартній  палітрі (код кольору 24h),  а  синій (регістр 1) на фіолетовий, також відсутній у стандартній палітрі (код кольору 0Dh). Для цього перенесіть наступний текст у екран 22 звітного  файлу завантажте екран 22 та спостерігайте за зміною кольорів палітри після натискань .

( У екран 22. Тестування словникової статті USTC )

DECIMAL

LLL1 91 0 DO 500 0 DO I 31 / I 60 + 120 J + PXWR LOOP LOOP ;

CLEARSCREEN 16 RGM 80S

16 RGM1 LLL1 WAIT HEX 2402 USTC WAIT 0D01 USTC WAIT 80S DECIMAL

FORGET LLL1

Якщо повторити тестування, то можна переконатися, що встановлення графічного режиму 16 відновлює стандартну палітру. Коди кольорів стандартної 16-кольорової палітри відеоадаптеру EGA наведені у таблиці 4. Користуючись таблицею 4,  коригуйте текст екрану 22 так, щоб встановити блакитний колір фону (номер регістру палітри 0). Доведіть, або спростуйте тезу про те, що НАКЛАДАННЯ КОЛЬОРІВ СТАНДАРТНО° ПАЛІТРИ (при накладанні за допомогою PXWR1 код нового кольору є результат підсумовування розрядами попереднього та заданого кодів кольорів) НЕ ВИВОДИТЬ КОЛІР З МНОЖИНИ КОЛЬОРІВ СТАНДАРТНО° ПАЛІТРИ. Підстави для висновків розмістіть у екрані 22 звітного файлу у формі коментарів, які б не заважали завантаженню екрану.

Табл. 4

Завдання 11. Перегляд всіх кольорів дисплею

Встановлюючи всі можливі коди кольорів, можна переглянути можливі кольори дисплею, але водночас на екрані можуть перебувати тільки 16 з 64-ох. Наступна програма кожного разу після натискання змінить один з кольрів палітри, беручи код кольору з лічильника, що лічить натискання від 0 до 63. Зауважимо, що подібний перегляд кольорів чітко діє лише у режимі 16. Регістр палітри з номером 0 встановлює колір фону на екрані, тому прямокутник з фоновим кольором не виділено, а під час експерименту відбувається також зміна кольору фону. Перенесіть наступний текст у екран 23 звітного файлу та завантажте екран.

( У екран 23. Перегляд кольорів дисплею)

DECIMAL

LLL1 91 0 DO 500 0 DO I 31 / I 60 + 120 J + PXWR LOOP LOOP ;

L-L 4 0 DO 16 0 DO 15 31 I * 65 + J 8 * 215 +

15 0 DO 2 PICK 2 PICK  I + 2 PICK PXWR LOOP DROP DROP DROP

J 16 * I + 256 * I + USTC WAIT LOOP LOOP ;

16 RGM LLL1 L-L 80S  FORGET LLL1

( Натисканням у регістри палітри надсилаємо черговий)

( код кольору та під кольоровим прямокутником, де можливо   )

( змінено колір, ставимо курсор-позначку. Ї можливість спів-)

( ставлення кольору та коду кольору.                        )

Для заданого викладачем коду кольору, користуючись таблицями 3, 4 та законами змішування світла різних кольорів, спробуйте визначити колір, що відповідає коду. Доведіть правоту завантаженням екрану 23 та демонстрацією відповідного кольору викладачу.

Завдання 12. Створення засобів записування зображень у різні сторінки відеопам’яті та засобів призначення активної сторінки

Процес формування зображень на екрані не завжди бажано показувати користувачеві, тому використовують можливість формування зображення у одній сторінці відеопам’яті під час перегляду іншої. Мінімально потрібні 2 сторінки, але при наявності зайвої пам’яті їх не заважає мати більше, про що свідчать дані таблиці 2. У графічних режимах є можливість “перегортання” сторінок, а у текстових режимах, є також можливість переміщення початку сторінки у відеопам’яті.

Поданий нижче текст містить визначення для словникових статтей PXWR2, SPG та 8STR. Перша на відміну від PXWR та PXWR1 потребує на стеку ще й номер сторінки відеопам’яті. Друга потребує на стеку номер сторінки, яку бажаємо бачити на екрані. За замовчанням у якості активної встановлюється сторінка з номером 0. Перенесіть поданий нижче текст у екрани 24, 25, 26 звітного файлу та завантажте екрани 24 та 25. Після тривалого формування зображення натисканням можна перегортати сторінки періодично. Для виходу - . Для повторення перегортання треба у діалозі виконати 13 RGM 8STR 80S.

( У екран 24. PXWR2,SPG та 8STR для записування точок у різні)

( сторінки, для призначення активної сторінки та перегортання)

( PXWR2 Стек: N C X Y ->   N-номер сторінки, C-номер кольору,)

( X,Y-координати точки. )

HEX CODE PXWR2  DX POP CX POP AX POP BX POP ( перенесення    )

( N,C,X,Y  із стеку на регістри BX DX CX AX                  )

AH, # C MOV ( встановлення операції “записування” точки      )

BH, BL  MOV ( встановлення номеру сторінки                   )

10  INT NEXT, END-CODE  ( звернення до BIOS та завершення    )

( SPG для призначення активної сторінки. Стек: N-номер стор. )

CODE SPG AX POP AH, # 5 MOV 10 INT NEXT, END-CODE DECIMAL

( 8STR для поріодичного перегляду 8 сторінок з виходом .)

8STR 0 BEGIN DUP SPG 1 + 8 MOD KEY 27 = IF DROP EXIT THEN

AGAIN ; .( PXWR2, SPG, 8STR - ЗАВАНТАЖЕНІ) CR

( У екран 25. Засоби для формування зображень у 8 сторінках.)

POLE 320 0 DO 200 0 DO 2 I 15 MOD 1 + J I PXWR2 LOOP LOOP ;

POLE4 320 0 DO 200 0 DO 1 I J * 515 / J I PXWR2 LOOP LOOP ;

POLE5 320 0 DO 200 0 DO 3 I I J * *  15000 /

16 MOD 1 +  J I   PXWR2 LOOP LOOP ;

POLE6 320 0 DO 200 0 DO 7 I I * J J * + 550 / 16 MOD J I

PXWR2 LOOP LOOP ;

POLE7 320 0 DO 200 0 DO 4 I 100 - DUP * J 160 - DUP * + 500

/ 16 MOD J I PXWR2 LOOP LOOP ;

POLE8 320 0 DO 200 0 DO 5 I 100 - DUP * J 160 - DUP * + 100 /

16 MOD J I PXWR2 LOOP LOOP ;

POLE9 200 0 DO 320 0 DO 6 J 150 > IF 9 ELSE 10 THEN I J

PXWR2 LOOP LOOP ;

POLE10 200 0 DO 320 0 DO  0 J 100 > IF 14 ELSE 11 THEN I J

PXWR2 LOOP LOOP ;                                       –>

( У екран 26. Експеримент з перегортанням сторінок. Після фор-)

( мування зображення кожної сторінки подається звуковий сигнал)

( та кольоровий круг на екрані, після завершення формування - )

( більш протяжний сигнал. Далі натисканням перегортає-)

( мо сторінки. Вихід - )

DECIMAL : LLL 40 15 0 LKJ1 ; 13 RGM POLE 1 30 LLL ALARM POLE4 2

60 LLL ALARM POLE5 3 90 LLL ALARM POLE6 4 120 LLL ALARM POLE7 5

150 LLL POLE8 6 180 LLL ALARM POLE9 7 210 LLL SIREN 8 240 LLL

SIREN 8STR 9 270 LLL WAIT 2 80S  DECIMAL

На завершення роботи створіть завантажувальний екран 27 з поданим нижче текстом, що забезпечить завантаження всіх напрацювань. Це зробить доступним для демонстрації будь-який експеримент з проведених під час виконання роботи.

( Завантажувальний екран 27  для ЗАВАНТАЖЕННЯ 2 )

DECIMAL

16 LOAD 19 LOAD 21 LOAD 24 LOAD

7 cba!

.( ЗАВАНТАЖЕННЯ 2 ЗАВЕРШЕНЕ) 12 cba! CR

Перевірте можливість завантаження за допомогою екрану 27. Для цього багаторазово виконайте рядок FORGET RGM, поки система повідомить, що RGM відсутня і  вже  нічого “забувати”. Цим відбулося видалення з пам’яті всіх напрацювань. Потім завантажте екран 27 та доведіть можливість демонстрації будь-якого експерименту з тих, що були приготовані. Ваш звітній файл та готовність продемонструвати експеріменти може бути підтвердженням виконання роботи з практичного вивчення графічних режимів відеоадаптеру.

3. ДОВІДКОВІ ВІДОМОСТІ ПРО СТВОРЕНІ СЛОВНИКОВІ СТАТТІ.

Табл. 5 Табл. 5 - часть 2 Табл. 5 - часть 3

СПИСОК ЛІТЕРАТУРИ

  1. Жутаев М.B., Видеоадаптеры и видеомониторы EGA, VGA и

SuperVGA. Справочное пособие.-М.: АО “Звёзды и С”, 1992.

  1. Григорьев В.Л., Видеосистемы ПК фирмы IBM.-М: Радио и

связь, 1993.- 192 c.: ил.

  1. Джордейн Р. Справочник программиста персональных компью-

теров типа IBM PC, XT и AT: Пер. с англ./Предисл. Н. В. Гайско-

го. -М.: Финансы и статистика, 1992.- 544 c.: ил.

  1. Башков Е.А., Аппаратное и програмное обеспечение зарубеж-

ных микроЭВМ: Учебное пособие.-К.: Выща шк., 1990.-207 с.: ил.

  1. МЕСТО РАБОЧЕЕ АВТОМАТИЗИРОВАННОЕ ЭКСПЕРИМЕНТАТОРА

“ИСКРА 1031”  Система программирования “АСТРОФОРТ”. Руководство

пользователя., Описание языка “Форт”. Глоссарий системы “Астро-

ФОРТ”. Фирменные материалы.

  1. Практика прграмування мовою Форт: Навчальний посібник /

C.Й.Червонний. - К.: НМК ВО, 1991.- 68 c.

  1. Коваль М.Д. Апаратне та програмне забезпечення персональ-

них комп’ютерів: Навч. посібник. - К., 1993. - 120.

  1. Коссак О.М., Маньковський С.Л. Англо-українсько-російсь-

кий словник з інформатики та обчислювальної техніки - Львів:

Світ. 1991. - 488 c.

  1. Коссак О.М. Англо-український словник з інформатики та

обчислювальної техніки /Лінгв. ред. О.Р. Микитюк. - Львів: СП

“БаК”, 1995. - 304 с.

────────────────────────────────────────────────────────────────

К І Н Е Ц Ь     М Е Т О Д И Ч Н И Х     В К А З І В О К