Rabu, 29 Juni 2016

Pertemuan 11

contoh20.cpp:
 #include <dos.h>
 #include <stdlib.h>
 #include "screen.cpp"

 #define MOUSE_INT 0x33

 UCHAR detectMouse(UCHAR *btn);
 void showMouse(void);
 void hideMouse(void);

 int main (void)
 {
 Screen *layar = new Screen();
 UCHAR state, btn;

 layar->setMode(0x03);
 layar->setCursorPos(4, 14); 


 state = detectMouse(&btn);

 if (state)
 {
 layar->writeString("Mouse siap digunakan.");
 layar->setCursorPos(6, 14);
 layar->writeString("Pointer mouse ditampilkan.");

 showMouse(); delay(7000);

 layar->setCursorPos(6, 14);
 layar->writeString("Pointer mouse disembunyikan.");
 hideMouse();
 }
 else
 {
 layar->writeString("Mouse tidak siap.");
 }

 delay(5000);
 delete layar; return EXIT_SUCCESS;
 }



Program contoh20.cpp menambahkan satu fungsi baru, yaitu fungsi hideMouse 58

untuk menyembunyikan pointer mouse. Alur program contoh20.cpp adalah sebagai berikut:
1. Deteksi mouse, jika mouse tidak siap digunakan maka pesan bahwa mouse tidak siap digunakan ditampilkan. Kemudian program berhenti secara otomatis setelah jeda lima detik.
2. Jika mouse terdeteksi, maka pointer mouse akan ditampilkan. Setelah jeda selama tujuh detik pointer mouse akan disembunyikan. Setelah itu program berhenti secara otomatis setelah jeda lima detik.

B. Mengaktifkan dan Menonaktifkan Driver Mouse
Mouse dan driver-nya yang telah terinstal dengan benar dapat diaktifkan dan dinonaktifkan. Jika suatu driver mouse dinonaktifkan maka pointernya tidak bisa digerakan dan koordinatnya tidak akan berubah, walaupun mouse digerak-gerakan. Untuk mengaktifkan driver mouse digunakan interupsi 33 heksadesimal servis 20 heksadesimal. Sedangkan untuk menonaktifkan driver mouse dapat digunakan interupsi 33 heksadesimal servis 1f heksadesimal. Berikut ini adalah prosedur untuk mengaktifkan dan menonaktifkan mouse:
Mengaktifkan driver mouse:
 Register AH harus bernilai 0.
 Register AL harus bernilai 20 heksadesimal.
 Laksanakan interupsi 33 heksadesimal.
Menonaktifkan driver mouse:
 Register AH harus bernilai 0.
 Register AL harus bernilai 1f heksadesimal.
 Laksanakan interupsi 33 heksadesimal.
Setelah interupsi 33 heksadesimal servis 1f heksadesimal dijalankan:
 Jika interupsi berhasil dilaksanakan maka register AX bernilai 001f heksadesimal.
 Jika interupsi gagal dilaksanakan maka register AX bernilai ffff heksadesimal.
Untuk mempraktekkan prosedur mengaktifkan dan menonaktifkan mouse, pelajari kode program project contoh21.ide berikut ini. Simpan kode programnya pada direktori yang sama dengan file screen.cpp.

contoh21.
 #include <dos.h>
 #include <stdlib.h>
 #include "screen.cpp"

 #define MOUSE_INT 0x33

 UCHAR detectMouse(UCHAR *btn);
 void showMouse(void);
 void enableMouse(void);
 UCHAR disableMouse(void);

 int main (void)
 {
 Screen *layar = new Screen();
 UCHAR state, btn;

 layar->setMode(0x03);
 layar->setCursorPos(4, 14); 59


 state = detectMouse(&btn);

 if (state)
 {
 layar->writeString("Mouse siap digunakan.");
 layar->setCursorPos(6, 14);
 layar->writeString("Driver mouse dinonaktifkan.");

 showMouse(); disableMouse();
 delay(7000);

 layar->setCursorPos(6, 14);
 layar->writeString("Driver mouse diaktifkan kembali.");

 enableMouse();
 }




Pada program contoh21.cpp diatas, fungsi enableMouse digunakan untuk mengaktifkan driver mouse dan fungsi disableMouse digunakan untuk menonaktifkan driver mouse. Perbedaan fungsi enableMouse dengan fungsi disableMouse yang telah dibuat adalah fungsi disableMouse mengembalikan nilai unsigned character yang menunjukan apakah interupsi berhasil dilakukan atau gagal, sedangkan fungsi enableMouse tidak mengembalikan nilai apapun.

Tidak ada komentar:

Posting Komentar