#include "screen.cpp"
#define KEY_INT 0x16 /* Nomor interupsi keyboard */
#define KEY_F1 0x3b /* Kode scan tombol F1 */
#define KEY_F2 0x3C /* Kode scan tombol F2 */
#define KEY_F3 0x3d /* Kode scan tombol F3 */
#define KEY_F4 0x3e /* Kode scan tombol F4 */
#define TRUE 1
UCHAR getSpecialKey(void);
int main(void)
{
Screen *layar = new Screen();
UCHAR tombol;
layar->setMode(0x03);
layar->setCursorPos(5, 9);
layar->writeString("Tekan F1, F2, F3");
layar->setCursorPos(6, 9);
layar->writeString("Tekan F4 untuk berhenti");
layar->setCursorPos(8, 9);
while (TRUE)
{
tombol = getSpecialKey(); // Periksa tombol yang ditekan
layar->setCursorPos(8, 9);
switch (tombol)
{
case KEY_F1 :
layar->writeString("Tombol F1 ditekan");
break;
case KEY_F2 :
layar->writeString("Tombol F2 ditekan");
break;
case KEY_F3 :
layar->writeString("Tombol F3 ditekan");
break;
case KEY_F4 :
delete layar;
return EXIT_SUCCESS;
default :
layar->writeString("Tombol lain ");
break;
}
}
}
UCHAR getSpecialKey(void)
{
UCHAR key;
asm mov ah, 0x00; /* Register AH = 0 */
asm int KEY_INT; /* Lakukan interupsi 16 heksadesimal */
asm mov key, ah; /* Salin nilai di AH ke variabel key */
return key;
}
Gambarnya Sebagai Berikut :
Penjelasannya :
Pada kode program contoh12.cpp fungsi getSpecialKey adalah fungsi yang digunakan untuk mendeteksi penekanan tombol-tombol khusus. Perhatikanlah pada baris kelima sampai baris kedelapan, karena setiap tombol khusus memiliki kode tersendiri maka pada baris kelima sampai kedelapan dideklarasikan konstanta untuk tombol F1 sampai F4. Kode scan untuk tombol F1 adalah 3b heksadesimal, F2 adalah 3c heksadesimal, dan seterusnya. Bandingkanlah kode program contoh11.cpp dengan kode program contoh12.cpp pada fungsi getKey dan getSpecialKey. Pada fungsi getKey nilai yang dijadikan sebagai nilai
kembali fungsi (return value) adalah nilai yang tersimpan di register AL, sedangkan pada fungsi getSpecialKey nilai yang dikembalikan adalah nilai yang tersimpan di register AL.
0 komentar:
Posting Komentar