Довідник програміста на персональному комп’ютері фірми IBM
Written on 27 Серпня 2006 . Posted in Assembler
ЗМІСТ
3.2.7 Створення макровизначень для окремих кнопок.
Макровизначення - це рядок символів, який буде виводитися при натисканні однієї клавіші. Макровизначення можуть бути запрограмовані в інтерпретаторі Бейсика або на рівні операційної системи для зменшення друкування. Оскільки рядок може утримувати керуючі коди, такі як символ повернення каретки (8) (ASCII 13), то одне макровизначення може виконувати цілий набір команд. Для прискорення розробки програм, наприклад, можна написати макровизначення, що містить всі необхідні команди, щоб відтранслювати і скомпонувати певну програму. Макровизначення, що забезпечуються Бейсіком, працюють як у Бейсиківських програмах, так і на командному рівні Бейсіка. Нап- ример, якщо Ви запрограмували клавішу, щоб при її натисканні виводилося слово "Орангутан", то при натисканні цієї клавіші функція INPUT отримає весь цей рядок, а цикл, що включає INKEY$, після- Вательно отримає дев'ять символів. З іншого боку, макровизначення, створені на рівні операційної системи, завжди працюють на командному рівні DOS, але всередині програм вони будуть працювати тільки якщо програма для введення з клавіатури використовує функції DOS. Оскільки більшість комерційних програмних продуктів використовують переривання BIOS 16H, то для цих програм макровизначення не будуть працювати. Звичайно, засоби для створення макрооп- розподілів можуть бути вставлені в процедури введення з клавіатури. Наприклад, щоб дозволити користувачеві програми створити макрооп- розподіл для F1, запросивши рядок і помістивши її в MACRO1$,треба на Бейсику написати щось на кшталт:
1000 '''процедура введення розширеного коду, C - 2-й байт коду 1010 IF C=59 THEN LOCATE X,Y: PRINT MACRO1$
Високий рівень.
Бейсик має вбудований механізм створення макровизначень, але він дозволяє програмувати лише 10 функціональних клавіш, а рядки повинні бути не довшими за 15 символів. Бейсик розглядає функціональні клавіші, як програмовані клавіші. Оператор KEY надає макровизначення даної клавіші. Рядок KEY 5,"END" приводить до того, що функціональна клавіша #5 буде посилати слово END у поточну позицію курсору на екрані. Символи складові рядок можуть вводитися як рядки симво- лов, як ASCII коди (використовуючи CHR$) або як комбінація того і іншого. Команди KEY 5, "A" і KEY 5, CHR $ (65) еквівалентні. Для того, щоб рядок відразу виконувалася треба додати в кінці рядка символ повернення каретки (ASCII 13). Команда FILES, що виводить каталог диска, виконується після того, як Ви привласните це значення F1 командою KEY 1,"FILES"+CHR$(13). Бейсик надає десяти функціональним клавішам поширені ні оператори Бейсіка. Ви можете скасувати макровизначення для цієї клавіші, надавши їй порожній рядок, наприклад, команда KEY 1,"" призведе до того, що при натисканні F1 нічого вводитися не буде. Перші шість символів кожного рядка автоматично виводяться в нижній частині екрана інтерпретатором Бейсіка. Ви можете керувати наявністю цього висновку, використовуючи команди KEY ON і KEY OFF. Для того, щоб вивести на екран повні визначення клавіш, введіть те команду KEY LIST. Ось кілька прикладів:
KEY 1, "ERASE"; тепер F1 виводить "ERASE" KEY 10,"LIST"+CHR$(13); тепер F10 видає лістинг KEY 7,""; тепер F7 нічого невидає KEY OFF; пригнічує виведення внизу екрана KEY ON; включає виведення внизу екрана KEY LIST; видає список значень 10 клавіш
Для створення макровизначень інших клавіш у Бейсику, Ви повинні використовувати засоби MS DOS, описані в [3.2.6]. Середній рівень.
У MS DOS макровизначення створюються за допомогою методу перепрограмування клавіш, описаного в [3.2.6]. Єдина відмінність у тому, що клавіші зіставляється цілий рядок символів. Рядок може бути введена у вигляді символів, укладених у лапки, або у виді кодів або комбінації того і іншого. Ось кілька прикладів: