Наръчник на програмиста на персонален компютър IBM
Написано на 27 август 2006 г. Публикувано в Асемблер
СЪДЪРЖАНИЕ
3.2.7 Създаване на макро дефиниции за отделни ключове.
Макрото е низ от знаци, които се показват при натискане на един клавиш. Макросите могат да бъдат програмирани в интерпретатора BASIC или на ниво операционна система, за да се намали въвеждането. Тъй като ред може да съдържа контролни кодове като връщане на каретка (ASCII 13), една дефиниция на макрос може да изпълни цял набор от команди. За да ускорите разработването на програма, например, можете да напишете макрос, съдържащ всички необходими команди за компилиране и свързване на конкретна програма. Макросите, предоставени от BASIC, работят както в Basic програми, така и на командно ниво на BASIC. Например, ако сте програмирали клавиш да отпечата думата "Orangutan", когато натиснете този клавиш, функцията INPUT ще получи целия ред, а цикълът, който включва INKEY$, ще получи девет знака последователно. От друга страна, макросите, създадени на ниво операционна система, винаги работят на командно ниво на DOS, но вътре в програми те ще работят само ако програмата използва DOS функции за въвеждане от клавиатурата. Тъй като повечето комерсиални софтуерни продукти използват BIOS 16H прекъсване, дефинициите на макроси няма да работят за тези програми. Разбира се, средствата за създаване на макро- дефиниции могат да бъдат вмъкнати в рутинните процедури за въвеждане от клавиатурата. Например, за да позволите на потребител на програма да създаде макро- дефиниция за F1, като поиска низ и го постави в MACRO1$,необходимо е в BASIC да напишете нещо като:
1000 '''Разширена процедура за въвеждане на код, в C - 2-ри байт от кода 1010 IF C=59 THEN LOCATE X,Y: PRINT MACRO1$
Високо ниво.
Basic има вграден механизъм за създаване на макроси, но той ви позволява да програмирате само 10 функционални клавиша и редовете не трябва да са по-дълги от 15 знака. BASIC третира функционалните клавиши като програмируеми клавиши. Операторът KEY присвоява макрос на даден клавиш. Низът KEY 5,"END" кара функционален клавиш #5 да изпрати думата END до текущата позиция на курсора на екрана. Знаците, които съставят низа, могат да бъдат въведени като низове от знаци, като ASCII кодове (използвайки CHR$) или като комбинация от двете. Командите KEY 5,"A" и KEY 5,CHR$(65) са еквивалентни. Към , за да може редът да се изпълни незабавно, трябва да добавите знак за връщане на каретка (ASCII 13) в края на реда . Командата FILES, която показва директорията на диска, се изпълнява, след като присвоите тази стойност на F1 с командата KEY 1,"FILES"+CHR$(13). BASIC присвоява общи оператори Basic на десет функционални клавиша. Можете да замените дефиницията на макрос за този клавиш, като му присвоите празен низ, например командата KEY 1,"" няма да доведе до въвеждане на нищо при натискане на F1 . Първите шест знака от всеки ред се извеждат автоматично- в долната част на екрана от BASIC интерпретатора. Можете да контролирате този изход, като използвате командите KEY ON и KEY OFF. За да покажете пълни дефиниции на ключовете, въведете командата KEY LIST. Ето няколко примера:
КЛЮЧ 1,"ИЗТРИВАНЕ"; сега F1 извежда "ERASE" KEY 10,"LIST"+CHR$(13) ; сега F10 списък КЛЮЧ 7,"" ; сега F7 е нищовръща КЛЮЧ ИЗКЛЮЧЕН ; потискане на изхода в долната част на екрана КЛЮЧ ON ; включва изход в долната част на екрана СПИСЪК КЛЮЧОВЕ ; дава списък от 10 ключови стойности
За да създадете макроси за други ключове в BASIC, трябва да използвате инструментите на MS DOS, описани в [3.2.6]. Средно ниво.
В MS DOS дефинициите на макроси се създават с помощта на метода за препрограмиране на ключове, описан в [3.2.6]. Единствената разлика е , че цял низ от знаци е съпоставен с ключ. Низът може да бъде въведен като знаци, оградени в кавички, или като кодове, или комбинация от двете. Ето няколко примера: