1 Pertemuan 4 Menggambar titik Matakuliah: T0074 / Grafika Komputer Tahun: 2005 Versi: Versi 1 / Revisi 0
2 Learning Outcomes Pada akhir pertemuan ini, diharapkan Mahasiswa akan mampu : Menghasilkan program grafik dengan IBM PC dalam grafik komputer.
3 Outline Materi Materi 1 : inisialisasi fungsi grafik Materi 2 : set modus video Materi 3 : fungsi primitive Materi 4 : Block Diagram CGA/VGA/SVGA
4 Pokok Bahasan(4) : Menggambar titik Oleh : Djunaidy Santoso M.Kom.
5 Pokok Bahasan(4) : Menggambar titik
6 ROM BIOS (ide mata kuliah Pemrograman C, # 020) Konsep : ROM BIOS adalah kumpulan program-rutin yang tersimpan secara permanen di dalam mesin. ROM BIOS terdiri dari program-rutin seperti : Penentuan modus video Pengaturan tampilan kursor Baca / tulis karakter pengelolaan disk drive, serial port, keyboard, printer Pemakaian interrupt Interrupt adalah kelompok program-rutin yang ada di dalam ROM BIOS untuk mengakses ROM BIOS. Contoh : Nomor Interrupt 10 adalah program-interrupt-rutin untuk mengatur video. Format pada Turbo C : int86 (intno, &inreg, &outreg) intnointeger nomor interrupt inregunion REGS nilai register yang dikirim ke ROM BIOS outregunion REGS nilai register yang dikembalikan oleh ROM BIOS
7 MENGGAMBAR TITIK PADA LAYAR Beberapa submodul berikut ini dapat Anda terapkan langsung di dalam program Anda. Turbo Pascal 6.0 Procedure SetMode(mode : byte):assembler; Asm mov ah, 0 mov al, Mode int 10h end; Procedure PutPixel (x,y : word; Color : byte):assembler; Asm mov ah, 0ch mov al, Color mov bh, 0 mov cx, x mov dx, y int 10h end;
8 Function GetPixel (x,y : word):word; Var Clr : Word; Begin Asm mov ah, 0dh mov bh, 0 mov cx, x mov dx, y int 10h and ax, 0ffh mov Clr, ax end; GetPixel :=Clr end;
9 Turbo Pascal 5.X. Microsoft Quick Pascal Harus ada : uses Dos; pada awal program Procedure SetMode(Mode : byte); Var r : register; Begin r, ah := 0; r, al := Mode; intr($10, r) end; Procedure PutPixel(x,y : word; Color : byte); Var r : registers; Begin with r do begin ah :=$0c; al := Color; bh := 0; cx := x; dx := y; end; intr($10, r) end;
10 Turbo C Harus ada : #include pada awal program setmode(int mode) { union REGS r; r,h,sh := 0; r,h,al := mode; int86 ( 0x10, &r, &r); } putpixel(int x, y, color) { union REGS r; r,h,ah := $0c; r,h,al := Color; r,h,bh := 0; r,x,cx := x; r,x,dx := y; int86(0x10, &r, &r); } int getpixel (int x, y) { union REGS r; r,h,ah:= 0x0d; r,h,bh:= 0; r,x,cx:= x; r,x,dx:=y; int86 (0x10, &r, &r); return (ax & 0xff); }
11 Function GetPixel (x,y : word) : word; var r : register; Begin with r do begin ah :=%0d; bh :=0; cx := x; dx := y; intr($10, r); GetPixel := ax and $ff end
12 Akses Memory Langsung Turbo Pascal, Microsoft Quick Pascal const xRes = {kolom maksimum} yRes = {baris maksimum} Var HighRes : boolean; Procedure PutPixel (x,y : word; Color : byte); ConstSegment = $A000; var Offset, Page : word; Begin if highRes then begin Offset := y* x; Page := y div 64; Port[$3CD] := Page or 64 end elseOffset := y*320 + x; mem[Segment : Offset] := Color End;
13 Turbo C #define XRES.../*kolom maksimum*/ #define YRES.../*baris maksimum*/ #defune Segment 0xa000 int highres; putpixel( unsigned int x, y, color) {unsigned int Offset Page; if ( !((x =XRES) or (y>=YRES)))) {if(highres) {Offset = y* x; Page = y/64; outport (0x3cd,Page | 64); } else Offset = y * x; pokeb (Segment, Offset, Color ); }
14 ROM BIOS VIDEO SERVICES Telah kita pelajari penggunaan ROM BIOS dan akses memori langsung. Berikut ini akan kita pelajari bagaimana memanfaatkan ROM BIOS berdasarkan spesifikasi yang diberikan. Fasilitas dari ROM BIOS disebut video service. Semuanya ini dipanggil melalui interrupt 16 (10h). Terdapat 16 video service untuk semua jenis video (CGA, EGA, VGA) dan 7 video service khusus untuk EGA dan VGA. Contoh spesifikasi : ROM BIOS Video Service 00h Service 0 (00h) : Set Video Mode INPUT TO BIOSOUTPUT FROM BIOS AH = 00hno data returned AL = Video Mode CONTOH : lihat modul SetMode yang lalu
15 CLOSING Mahasiswa mampu menghasilkan program grafik dengan IBM PC dalam grafika komputer.