Program
untuk memilih mode video 01 heksadesimal (16 warna, 25 baris dan 40 kolom)
kemudian mengembalikannya menjadi mode video normal menggunakan fungsi int86.
Berikut
adalah kode programnya;
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define VIDEO_INT 0x10 // Nomor interupsi 10h
#define UCHAR unsigned char
void setMode(UCHAR mode); // Deklarasi fungsi untuk
// mengubah mode video
int main(void)
{
printf("Tekan ENTER untuk mengubah mode...\n");
getch();
setMode(0x01); // Ubah mode video
printf("Mode 01 heksadesimal.\n"); // Informasi
printf("Tekan ENTER kembali ke mode normal...");
getch();
setMode(0x03); // Kembali ke mode normal
printf("Mode normal\n");
getch();
return EXIT_SUCCESS;
}
void setMode(UCHAR mode)
{
union REGS in, out; // Deklarasi variabel
in.h.ah = 0x00; // Register AH = 0
in.h.al = mode; // Register AL = mode
int86(VIDEO_INT, &in, &out); // Jalankan interupsi
return;
}
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define VIDEO_INT 0x10 // Nomor interupsi 10h
#define UCHAR unsigned char
void setMode(UCHAR mode); // Deklarasi fungsi untuk
// mengubah mode video
int main(void)
{
printf("Tekan ENTER untuk mengubah mode...\n");
getch();
setMode(0x01); // Ubah mode video
printf("Mode 01 heksadesimal.\n"); // Informasi
printf("Tekan ENTER kembali ke mode normal...");
getch();
setMode(0x03); // Kembali ke mode normal
printf("Mode normal\n");
getch();
return EXIT_SUCCESS;
}
void setMode(UCHAR mode)
{
union REGS in, out; // Deklarasi variabel
in.h.ah = 0x00; // Register AH = 0
in.h.al = mode; // Register AL = mode
int86(VIDEO_INT, &in, &out); // Jalankan interupsi
return;
}
Dan hasil
outputnya adalah
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. Berikut ini adalah contoh
yang sama seperti pada contoh03.cpp, namun bit ke-7 pada register AL akan diset
menjadi 1 dan menggunakan teknik inline assembly. Simpan project berikut dengan
nama contoh04.ide dan nama file kode program contoh04.cpp.
Kode
program;
Dan hasil
outputnya adalah;
Kedua contoh program sebelumnya
digunakan untuk mengubah mode video. Bagaimana jika kita tidak mengetahui mode
video yang sedang digunakan? Jawabnya adalah dengan menjalankan interupsi 10
heksadesimal servis 0f heksadesimal. Setelah interupsi ini dijalankan register
AH berisi banyaknya kolom, register AL berisi nomor mode video yang digunakan
dan register BH berisi nomor halaman tampilan yang digunakan.
0 komentar:
Posting Komentar