Minggu, 09 April 2017

Memilih Mode Video (Part. 1)

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. Tabel II.1 berikut menjelaskan beberapa mode video teks.



Prosedur untuk memilih mode video menggunakan interupsi 10 heksadesimal adalah sebagai berikut:
Register AH harus bernilai 0.
Register AL berisi nomor dari mode video yang akan digunakan.
Sebagai contoh, berikut ini adalah 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.

contoh03.cpp
1:  #include <conio.h>   
2:  #include <dos.h>   
3:  #include <stdio.h>    
4:  #include <stdlib.h>    
5:    
6:  #define VIDEO_INT 0x10 // Nomor interupsi 10h    
7:  #define UCHAR unsigned char   
8:    
9:  void setMode(UCHAR mode); // Deklarasi fungsi untuk    
10:                                 // mengubah mode video    
11:  int main(void)    
12:  {    
13:       printf("Tekan ENTER untuk mengubah mode...\n");    
14:    getch();    
15:    
16:       setMode(0x01); // Ubah mode video   
17:    printf("Mode 01 heksadesimal.\n"); // Informasi   
18:    printf("Tekan ENTER kembali ke mode normal...");    
19:    getch();    
20:         
21:    setMode(0x03); // Kembali ke mode normal    
22:    printf("Mode normal\n");    
23:    getch();    
24:         
25:    return EXIT_SUCCESS;    
26:  }    
27:  void setMode(UCHAR mode)    
28:  {    
29:    union REGS in, out; // Deklarasi variabel    
30:         
31:    in.h.ah = 0x00; // Register AH = 0    
32:    in.h.al = mode; // Register AL = mode    
33:         
34:    int86(VIDEO_INT, &in, &out); // Jalankan interupsi    
35:    return;    
36:  }   

Hasil:


Pada contoh diatas, setiap terjadi pergantian mode video akan selalu menimbulkan efek clear screen. Bagaimana cara menghilangkan efek clear screen ini? Jawabnya adalah dengan menset bit ke-7 pada register AL menjadi 1.

Tidak ada komentar:

Posting Komentar