Rabu, 29 Juni 2016

Pertemuan 24

A.    Membatasi Posisi Horizontal dan Vertikal Mouse

Letak koordinat pointer mouse dapat dibatasi sehingga posisi vertikal dan horizontal pointer mouse tidak bisa melewati area tertentu pada layar yang sudah dibatasi. Untuk membatasi posisi horizontal pointer mouse dapat digunakan interupsi 33 heksadesimal servis 7, sedangkan untuk membatasi posisi vertikal pointer mouse digunakan interupsi 33 heksadesimal servis 8. Berikut ini adalah prosedur untuk membatasi koordinat pointer mouse.
Membatasi posisi horizontal pointer mouse:
 Register AH harus bernilai 0.
 Register AL harus bernilai 7 heksadesimal.
 Register CX menentukan batas minimal posisi horizontal pointer mouse.
 Register DX menentukan batas maksimal posisi horizontal pointer mouse.

Pertemuan 13

A.    Memindahkan Koordinat Pointer Mouse  

Koordinat pointer mouse dapat dipindahkan tanpa harus menggerak-gerakkan mouse secara manual. Untuk memindahkan posisi koordinat pointer mouse dapat digunakan interupsi 33 heksadesimal servis 4. Berikut ini adalah prosedur yang harus dilakukan untuk memindahkan pointer menggunakan interupsi 33 heksadesimal servis 4.
 Register AH harus bernilai 0.
 Register AL harus bernilai 4 heksadesimal.
 Register CX menentukan posisi baris pointer mouse.
 Register DX menentukan posisi kolom pointer mouse.
 Lakukan interupsi 33 heksadesimal.

Pertemuan 12

A.    Mengetahui Koordinat Pointer Mouse

Seperti halnya kursor keyboard yang ditampilkan di layar monitor, pointer mouse pun menempati koordinat tertentu di layar. Untuk mengetahui letak atau posisi koordinat pointer mouse dilayar dapat digunakan interupsi 33 heksadesimal servis 3. Berikut ini adalah prosedur untuk mengetahui koordinat pointer mouse.
 Register AH harus bernilai 0.
 Register AL harus bernilai 3 heksadesimal.
 Lakukan interupsi 33 heksadesimal.
Setelah interupsi dilaksanakan:
 Register CX menunjukkan posisi horizontal pointer mouse (sumbu X).
 Register DX menunjukkan posisi vertikal pointer mouse (sumbu Y).
 Register BX menunjukkan tombol mouse yang ditekan. Jika nilai register BX sama dengan 1

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)
 {

Pertemuan 10

A.    Interupsi DOS untuk Mendeteksi, Mengaktifkan dan Menonaktifkan Mouse

Disk Operating System (DOS) baik pada mode real maupun mode terproteksi (DPMI) menyediakan sebuah software interrupt khusus untuk mengaktifkan dan menonaktifkan mouse (tetikus), yaitu interupsi 33 heksadesimal. Interupsi 33 heksadesimal menyediakan servis untuk mendeteksi mouse, menampilkan atau menyembunyikan posisi kursor, mengetahui posisi kursor mouse, mengetahui status penekanan tombol mouse, mengetahui jenis mouse, mengaktifkan dan menonaktifkan driver mouse, membatasi koordinat mouse dan lain-lain.

Pertemuan 9

A.    Konversi Nilai String Menjadi Numerik atau Sebaliknya

Semua nilai yang dimasukan melalui keyboard pada dasarnya adalah karakter atau rangkaian karakter (string). Nilai numerik yang dimasukan menggunakan fungsi standar scanf, cscanf, fscanf, gets dan cin pada dasarnya adalah nilai string yang telah mengalami proses konversi dari string menjadi bilangan bulat integer atau bilangan real (floating point dan double). Agar kita bisa menggunakan fungsi getString yang telah kita buat untuk memasukan data numerik, maka string yang dimasukan melalui fungsi getString harus dikonversi menjadi numerik. Begitu juga sebaliknya, untuk menampilkan data numerik menggunakan fungsi anggota writeString dari class Screen, maka data tersebut harus dikonversi menjadi representasi stringnya. Berikut ini adalah fungsi-fungsi konversi yang dapat kita gunakan.

Pertemuan 8

A.    Mengetahui Status Tombol On/Off

Pada keyboard ada tombol-tombol yang memiliki dua keadaan (on atau off) seperti Caps Lock, Num Lock, Scroll Lock, serta tombol yang memiliki status tekan (pressed/ditekan atau release/dilepas) seperti Alt, Ctrl, Ins, dan Shift. BIOS pada PC menyediakan interupsi 16 heksadesimal servis 2 untuk mengetahui status tombol-tombol tersebut. Berikut ini adalah prosedur untuk menjalankan interupsi 16 heksadesimal servis 2. 

 Register AH harus bernilai 2 heksadesimal.
 Jalankan interupsi 16 heksadesimal.

Pertemuan 7

A.    Memasukan String Menggunakan Keyboard

Setelah memahami cara memasukan satu karakter melalui keyboard, maka pada sub bab ini akan dipelajari cara memasukan string menggunakan keyboard. Fungsi getKey dan getSpecialKey langsung mengembalikan nilai dari tombol yang ditekan tanpa menunggu penekanan tombol ENTER dan tidak menggeser posisi kursor ke sebelah kanan. Pada fungsi untuk memasukan rangkaian karakter berikut ini akan digunakan pustaka class screen.cpp untuk mengetahui letak kursor, memindahkan posisi kursor dan mencetak karakter.
Beberapa hal lain yang harus diperhatikan pada fungsi untuk memasukan string adalah sebagai berikut:
1. Tombol-tombol khusus seperti Esc, F1 s.d F12, Fn, CTRL, ALT, Page Up, Page Down, tombol tanda panah, Home, End, Ins, Del dan Break tidak dapat ditampilkan dan tidak dapat digunakan.
2. Tombol backspace akan menghapus satu karakter disebelah kiri, jika karakter pertama sudah terhapus maka tombol tidak berfungsi.

Kamis, 23 Juni 2016

pertemuan 6

A.    Interupsi BIOS untuk Input Melalui Keyboard

Keyboard atau papan ketik merupakan alat input utama pada sebuah PC. Umumnya seseorang yang sedang mempelajari bahasa pemrograman C/C++ akan memanfaatkan fungsi-fungsi standar seperti scanf, getch, getchar, getche, gets dan cin untuk bisa melakukan input melalui keyboard, maka pada bab ini akan dipelajari bagaimana fungsi-fungsi tersebut bekerja.
BIOS menyediakan sebuah nomor interupsi khusus yang digunakan untuk melakukan input melalui keyboard, yaitu interupsi 16 heksadesimal. Operasi-operasi pada keyboard dapat ditentukan melalui nomor service yang disimpan pada register AH.

Pertemuan 5

A. Membuat Class untuk Operasi Layar pada Modus Teks

Setelah memahami cara menggunakan fungsi int86 atau teknik inline assembly untuk melakukan operasi pada layar monitor, maka kita dapat membuat sebuah class tersendiri untuk melakukan operasi pada layar monitor. Class yang akan kita buat akan mengenkapsulasi fungsi-fungsi setMode, getMode, writeChar, writeString, setCursorPos, getCursorPos dan getCharAttr. Namun, agar class yang dibuat dalam proses eksekusi program (runtime) bekerja lebih optimal maka semua fungsi anggota (method) yang pada pembahasan sebelumnya dibuat menggunakan fungsi standar int86, kali ini akan ditulis ulang menggunakan teknik inline assembly.

pertemuan 4

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.

pertemuan 3

A.    Menampilkan Karakter dan Memindahkan Posisi Kursor

Program contoh01.cpp dan dan contoh02.cpp pada bab 1 merupakan contoh program untuk menampilkan karakter/huruf pada layar monitor. Pada sub bab ini akan dibahas cara menampilkan karakter menggunakan interupsi 10 heksadesimal servis 09 heksadesimal secara lebih mendalam. Untuk lebih jelasnya, berikut ini adalah prosedur untuk menjalankan interupsi 10 heksadesimal servis 09 heksadesimal:
Register AH berisi nilai 9 heksadesimal.
 Register AL berisi kode ASCII dari huruf/karakter yang akan dicetak.
 Register BH berisi halaman layar, halaman pertama nilainya 0.
 Register BL berisi nilai warna huruf/karakter (warna asal adalah 7).
 Register CH dan CL menentukan banyaknya karakter pada AL akan dicetak.

pertemuan 2

A.    Interupsi BIOS untuk Operasi Layar pada Modus Teks

Untuk melakukan operasi-operasi pada layar seperti memilih mode video, menampilkan karakter dan lain-lain, BIOS telah menyediakan nomor interupsi khusus, yaitu interupsi 10 heksadesimal. Operasi-operasi yang akan dilakukan sebelum menjalankan interupsi ini ditentukan oleh nilai yang disimpan dalam register AH.

B.     Memilih Mode Video

Mode video adalah cara layar monitor menampilkan output, apakah output yang ditampilkan dalam bentuk matriks-matriks teks atau dalam bentuk picture element (pixel). Pada sub bab ini akan dibahas cara menggunakan mode video teks. Mode teks sendiri memiliki beberapa mode lain yang dapat dipilih, normalnya mode yang digunakan pada layar monitor masa kini adalah mode teks 25 baris 80 kolom dan mampu menampilkan 16 warna yang berbeda.
Sebagai contoh, berikut ini adalah hanya sebagian program untuk memilih mode video 01 heksadesimal (16 warna, 25 baris dan 40 kolom) kemudian mengembalikannya menjadi mode video normal menggunakan fungsi int86. Simpan project berikut ini dengan nama contoh03.ide dan nama file kode program contoh03.cpp.

Rabu, 22 Juni 2016

pertemuan 1

A.    Pembuatan Project dan Kode Program

Untuk bisa membuat program menggunakan fungsi int86(...) dan teknik inline assembly, maka kode program C++ yang akan dibuat harus merupakan bagian dari sebuah project file, tidak bisa hanya sebuah file kode sumber saja.

1.  Klik menu File pada menu bar, kemudian pilih dan klik menu New dan pilih menu Project, maka akan muncul jendela New Target
2.   Klik tombol Browse untuk menentukan nama file dan lokasi penyimpanan project.
3. Ketikan nama project pada textbox File name dan klik tombol Open. Textbox Project Path and Name pada jendela New Target akan berisi nama direktori dimana project disimpan dan Target Name akan berisi nama project.
4.  Pada listbox Target Type pilihlah Application (.exe).
5. Pada combo box Platform pilihlah DOS (Standard).
6. Pada combo box Target Model pilihlah Small.
7. Berilah tanda cek pada check box Class Library.
8.Pada radio button Math Support pilihlah sesuai dengan kondisi.
9. Kosongkan semua check box pada pilihan Libraries.
10.Klik tombol OK untuk mulai membuat program. Borland C++ 5.02 akan menampilkan Project Window.