A. Membaca Karakter pada Posisi Kursor
Pada sub bab sebelumnya sudah dipelajari
bagaimana cara menampilkan karakter dan string pada posisi kursor tertentu di
layar. Pada sub bab ini akan dipelajari cara mengetahui nilai karakter dan
warna karakter yang sudah tercetak dilayar. Seperti telah kita ketahui
sebelumnya bahwa layar monitor pada mode teks normal terdiri dari suatu baris
dan kolom. Dengan mengarahkan kursor pada baris dan kolom tertentu, dapat kita
ketahui karakter/huruf yang tercetak dan warna dari karakter/huruf tersebut.
Nomor interupsi yang digunakan untuk mengetahui karakter dan
warna karakter pada posisi tertentu adalah interupsi 10 heksadesimal servis 8
heksadesimal. Berikut ini adalah prosedur untuk menjalankan interupsi tersebut:
: Register AH harus bernilai 8 heksadesimal.
: Register BH berisi nomor halaman tampilan, halaman pertama
nilainya 0.
Setelah interupsi dijalankan maka register AH akan berisi nilai
warna dari karakter dan register AL akan berisi karakter/huruf yang
ditampilkan. Berikut ini adalah contoh sederhana untuk membaca karakter pada
posisi tertentu dilayar. Untuk menyederhanakan kode program, contoh berikut
akan menggunakan fungsi standar gotoxy, textcolor, textbackground, cprintf dan
int86. Simpan contoh program berikut ini dengan nama project contoh08.ide dan
file kode program contoh08.cpp.
Contoh 08.cpp:
#include
<conio.h>
#include
<dos.h>
#include
<stdio.h>
#include
<stdlib.h>
#define
VIDEO_INT 0x10 // Nomor interupsi video
#define
UCHAR unsigned char // Tipe data UCHAR
UCHAR
getCharAttr(UCHAR *attr);
int
main(void)
{
UCHAR huruf,
warna;
clrscr(); //
Bersihkan layar
gotoxy(10,
5); textcolor(25); // Warna karakter biru
textbackground(10);
// Warna dasar karakter hijau
cprintf("
DODY FAIZAL "); // Cetak string
gotoxy(13,
5); // Pindah posisi kursor
huruf =
getCharAttr(&warna); // Baca nilai karakter
// dan
atributnya
gotoxy(1,
7);
printf("Karakter
pada baris 5 kolom 13: %c\n", huruf);
printf("Warna\\atribut
dari karakter : %#x\n", warna);
getch();
return
EXIT_SUCCESS;
}
UCHAR
getCharAttr(UCHAR *attr) // Fungsi untuk membaca
{ //
karakter dan atributnya
union REGS
in, out; // pada posisi kursor
in.h.ah =
0x08; // AH = 8 heksadesimal
in.h.bh =
0x00; // BH = 0, halaman layar
int86(VIDEO_INT,
&in, &out); // Lakukan interupsi
*attr =
out.h.ah; // Salin nilai AH di attr
return
out.h.al; // Kembalikan nilai AL
}
Pada program diatas, fungsi yang dibuat untuk
membaca karakter dan warna atributnya adalah fungsi getCharAttr. Fungsi ini
mengirimkan parameter dengan tipe data unsigned character secara acuan. Setelah
fungsi tersebut dijalankan, parameter attr berisi nilai warna atribut dari
karakter sedangkan fungsi getCharAttr sendiri mengembalikan nilai karakter yang
dibaca.

0 komentar:
Posting Komentar