Ще раз про програмуючих на QuickBASIC, Світ ПК, Видавництво «Відкриті системи»
ANSI.SYS: що це таке? Команди ANSI.SYS Доступ до ANSI.SYS з комунікаційної програми Використання драйвера ANSI.SYS Робота з портами COM3 та COM4 у QuickBASIC Як знайти The Basic Network Синтаксис та коротке
ANSI.SYS: що це таке?
Драйвер ANSI.SYS - програма, що значно розширює можливості введення з клавіатури та виведення на екран. ANSI.SYS постійно переглядає інформацію, що виводиться на екран, і вишукує у ній спеціальні коди, які є командами драйвера. Він розпізнає команди, а потім видаляє їх, так що на екрані дисплея ці коди команд не з'являються. ANSI.SYS виконує різні функції. Але використовуючи його в комунікаційних програмах, ви можете уявити собі ANSI.SYS як драйвер, який, інтерпретуючи спеціальні послідовності символів, які називають ANSI- або ESC-послідовностями, може очищати весь екран або частину його, поміщати курсор у задану позицію, змінювати колір шрифту та фону, виводити на екран дані.
Команди драйвера ANSI ідентифікуються спеціальним кодом: у першому байті знаходиться число 1BH, на Бейсику записується як CHR$(27), зване символом ESC (далі), а другий байт - 5BH (ліва квадратна дужка), на Бейсику - CHR$(91) . За цими байтами йдуть параметри команди, а насамкінець власне самі команди. Параметри команди - це числа (у формі ASCII-символів, інтерпретованих як десяткові цифри), або рядки ASCII-символів, укладені в лапки, наприклад: "рядок параметрів". Якщо в команді кілька параметрів, вони поділяються точкою з комою. Власне, код команди, що завершує команду драйвера ANSI, це завжди один символ алфавіту.
Команди ANSI.SYS
Коли до драйвера надходить якась із команд перетворення введення зклавіатури, то він переглядає її та замінює символ, отриманий в результаті натискання на одну з клавіш, на інший символ або навіть цілий ланцюжок символів.
Обидва типи цих команд передаються драйверу ANSI тим самим шляхом - у потоці символів, що виводяться на екран дисплея.
У комунікаційних програмах найчастіше застосовуються 13 ANSI-команд, що позначаються символами: Звертайте увагу на регістр літер! "A" не еквівалентно "a" (див. врізання "Синтаксис і короткий опис деяких ANSI-команд").
Доступ до ANSI.SYS з комунікаційної програми
Для доступу до ANSI.SYS необхідно відкрити консоль як файл. (Історично сформований термін "консоль" у цьому випадку позначає те місце, куди в даний момент відбувається виведення інформації. Відкрити консоль як файл - призначити виведення даних у файл. - Прим. ред.) Це забезпечить доступ до драйвера ANSI.SYS, виклик якого повинен бути розміщений у вашому файлі CONFIG.SYS. Відкриття консолі легко здійснюється у QuickBASIC. Вам необхідно ввести наступну команду:
де filenum – номер файлу. Наприклад, якщо потрібно відкрити консоль як файл під номером 2, введіть команду:
Отже, все, що ви писатимете у файл номер 2, буде оброблятися не QuickBASIC, а ANSI.SYS.
Використання драйвера ANSI.SYS
Отже, ми збираємося керувати екраном лише за допомогою ANSI.SYS. Труднощі в тому, що драйвер ANSI.SYS та інтерпретатор мови QuickBASIC нічого "не знають" один про одного. Якщо ви бажаєте використовувати ANSI.SYS для роботи з екранними функціями, не використовуйте конструкції типу LOCATE, PRINT, CLS, COLOR. Замість них застосовуйте еквівалентні команди та надсилайте їх через ANSI.SYS, вводячи:
де filenum - номер файлу, який ви раніше відкрили, аANSIcommand - спеціальна команда ANSI, що включає будь-які необхідні параметри.
Інший важливий момент - збереження кількох загальних ANSI-символів та команд у рядкових змінних типу SHARED. (SHARED означає, що оголошені таким чином змінні можна буде використовувати у всіх підпрограмах.)
Це полегшить програмування та збільшить швидкість виконання. Робиться це так:
Наведемо деякі приклади. Приймемо відкриту консоль за файл номер 2. Припустимо, що потрібно змінити колір шрифту на світло-синій на чорному тлі перед друком будь-якого тексту. Ви можете скористатися оператором COLOR 11, 0. Але те саме може зробити сам ANSI.SYS. Для цього вам потрібно запровадити наступну команду:
де 0 – відключає всі атрибути; 1 – встановлює жирний шрифт; 36 - встановлює синій колір шрифту; 40 - встановлює чорне тло; m – встановлює графічне уявлення.
Допустимо, ви хочете очистити екран і повернути курсор. Для цього можна використовувати оператор CLS, але скористаємося конструкцією:
Припустимо, ви редагуєте поле та хочете імітувати примусове повернення на один символ. Можна було б скористатися послідовністю команд QuickBASIC:
Замінимо їх аналогічними, але для драйвера ANSI:
Слід зазначити, що наведена вище програма працює лише з кольоровими моніторами.
Робота з портами COM3 та COM4 у QuickBASIC
У наведеному вихідному тексті використовуються звернення до комунікаційних портів COM1 та COM2. Як відомо, QuickBASIC може працювати лише з ними. А що ж робити, якщо модем підключено до порту COM3 чи COM4?
У лістингу 2 дано вихідний текст програми, що виконує послідовність дій:
3. Використовуємо оператори OPEN COMx.
Аналогічні функції виконує проста програма, наведена у лістингу 3.
Таким чином, залежно від того, чи ви хочете більше можливостей і готові пожертвувати для цього додатковим місцем, або звикли задовольнятися малим, можете вибрати між програмами, наведеними на лістингах 2 або 3.
Як знайти The Basic Network
Синтаксис та короткий опис деяких ANSI-команд
[row;colH - команда переміщає курсор у позицію, визначену параметрами row (ряд), col (колонка). Спочатку кожен параметр дорівнює одиниці. Жоден із них не повертає поточне положення курсору.
[#A - команда пересуває курсор вгору число рядків, визначене параметром #. Спочатку його значення дорівнює одиниці. Команда ігнорується, якщо курсор знаходиться у верхньому ряду.
[#B - команда пересуває курсор вниз число рядків, визначене параметром #. Спочатку його значення дорівнює одиниці. Команда ігнорується, якщо курсор знаходиться у нижньому ряду.
[#C - команда переміщає курсор на число рядків, визначене параметром #. Спочатку його значення дорівнює одиниці. Команда ігнорується, якщо курсор знаходиться у крайній правій колонці.
[#D - команда переміщає курсор на число рядків, визначене параметром #. Спочатку його значення дорівнює одиниці. Команда ігнорується, якщо курсор знаходиться в лівій колонці.
[row;colR – команда позиції курсору; генерується командою стану пристрою. Параметр ряду містить номер поточного рядка та стовпчика, на якому знаходиться курсор.
[6n – команда, що викликає команду стану позиції курсору.
[row;colf - команда горизонтальної та вертикальної позицій; працює так само, як і команда позиціонування курсору.
[s - команда зберігає поточніпараметри позиції курсору, тобто. номери колонки та ряду; використовується з командою відновлення позиції курсору.
[u – команда відновлює заздалегідь збережені параметри позиції.
[2J – команда очищає екран і повертає курсор у вихідну позицію.
[K – команда очищає вміст рядка від поточної позиції курсору до кінця рядка.
[#;. ;#m - команда встановлює графічне уявлення та змінює колір екрану відповідно до вказаних параметрів #. Нижче наведено можливі значення параметрів # та опис кожного з них: