Menyelami Dasar Sistem Operasi: Memahami Mekanisme BIOS Teletype dan Komunikasi Register x86

Catatan Belajar oleh : Reza Ervani bin Asmanu

Dalam perjalanan membangun sebuah sistem operasi dari titik nol, salah satu pencapaian paling fundamental adalah kemampuan untuk menampilkan karakter ke layar. Pada arsitektur x86, proses ini melibatkan interaksi langsung antara perangkat lunak (melalui bahasa Assembly) dengan Firmware atau BIOS (Basic Input/Output System).

Artikel ini akan mengupas tuntas mekanisme komunikasi tersebut, khususnya melalui fungsi Teletype, serta peran krusial register AH dan AL dalam arsitektur prosesor.

Fondasi Komunikasi: Register AH dan AL

Sebelum sebuah karakter dapat muncul di monitor, CPU harus memberikan instruksi yang sangat spesifik kepada BIOS. Dalam arsitektur x86 16-bit, kita menggunakan register AX yang terbagi menjadi dua bagian: AH (High byte) dan AL (Low byte).

Memahami kedua bagian ini adalah kunci utama dalam pemrograman tingkat rendah:

  1. Register AH (Service Number): Berfungsi sebagai penentu “Layanan” atau “Fungsi” apa yang ingin kita minta dari BIOS. Ibarat sebuah menu di restoran, AH adalah nomor menu yang kita tunjuk.
  2. Register AL (Parameter/Data): Berfungsi sebagai pembawa data atau detail dari layanan tersebut. Jika kita memilih menu “Cetak Teks” di AH, maka AL akan berisi “Huruf apa yang ingin dicetak”.

Mekanisme Interrupt 0x10 dan Teletype Output

Layanan video pada BIOS dikelola melalui Interrupt 0x10 (INT 10h). Salah satu fungsi yang paling populer bagi pengembang sistem operasi pemula adalah fungsi 0x0E, yang dikenal sebagai Teletype Output.

Keunggulan fungsi ini adalah kemampuannya untuk mencetak karakter dan secara otomatis menggeser kursor ke posisi berikutnya, bahkan menangani baris baru (newline) secara cerdas.

Daftar Fungsi Utama INT 10h (Register AH)

Selain Teletype, terdapat berbagai fungsi lain yang dapat digunakan untuk mengontrol tampilan layar:

Register AHNama FungsiDeskripsi
0x00Set Video ModeMengatur resolusi layar atau beralih ke mode grafis.
0x01Set Cursor ShapeMengubah bentuk kursor (misal: kotak atau garis).
0x02Set Cursor PosMemindahkan kursor ke koordinat baris/kolom tertentu.
0x06Scroll UpMenghapus area layar atau menggulung teks ke atas.
0x0ETeletype OutputMencetak karakter dan memajukan kursor secara otomatis.
0x13Write StringMencetak satu blok kalimat sekaligus ke layar.

Mengenal Mode Video (Register AL)

Saat kita menginisialisasi layar menggunakan fungsi AH = 0x00, kita harus menentukan mode video melalui register AL. Hal ini menentukan bagaimana informasi visual ditampilkan kepada pengguna.

AL (Mode)TipeResolusiWarnaKeterangan
0x03Teks80 x 2516Standar industri untuk konsol sistem operasi.
0x12Grafis640 x 48016Mode VGA standar untuk antarmuka grafis (GUI).
0x13Grafis320 x 200256Mode legendaris yang sering digunakan untuk game klasik.

Implementasi Praktis: Membersihkan Layar

Sebelum menampilkan pesan selamat datang pada sistem operasi yang kita bangun, sebaiknya kita memastikan layar dalam keadaan bersih. Berikut adalah cuplikan kode Assembly untuk melakukan Clear Screen menggunakan fungsi 0x06:

Cuplikan kode

clear_screen:
    mov ah, 0x06    ; Instruksi untuk Scroll Up/Clear
    mov al, 0       ; AL = 0 berarti menghapus seluruh layar
    mov bh, 0x07    ; Warna atribut (abu-abu di atas hitam)
    mov cx, 0       ; Koordinat pojok kiri atas (0,0)
    mov dx, 0x184F  ; Koordinat pojok kanan bawah (Baris 24, Kolom 79)
    int 0x10        ; Panggil layanan BIOS
    ret


Signifikansi bagi Pengembang Sistem Operasi

Memahami fungsi BIOS ini sangat krusial karena beberapa alasan:

  • Inisialisasi Standar: Fungsi 0x00 memastikan layar berada pada mode teks 80×25 yang konsisten sebelum kernel mulai bekerja.
  • Presisi Visual: Fungsi 0x02 memungkinkan pengembang untuk meletakkan teks tepat di tengah layar (center alignment) untuk estetika profesional.
  • Transisi Mode: Perlu diingat bahwa layanan BIOS ini hanya tersedia di Real Mode (16-bit). Ketika sistem berpindah ke Protected Mode (seperti pada kernel Linux atau XV6), akses ke BIOS akan terputus, dan pengembang harus menulis langsung ke memori fisik VGA di alamat 0xB8000.

Kesimpulan

Interaksi dengan BIOS melalui register AH dan AL adalah jembatan pertama yang harus dilalui oleh setiap arsitek sistem operasi. Meskipun terlihat sederhana, penguasaan atas interupsi video ini memberikan kontrol penuh atas apa yang dilihat pengguna pertama kali saat komputer menyala.