Membuat Sistem Operasi dengan Fasilitas Keyboard

16
TUGAS BESAR SISTEM OPERASI MEMBANGUN KEYBOARD DIDALAM SISTEM OPERASI YUNO DENGAN DUKUNGAN PENGERJAAN DARI LINUX MINT Anggota Kelompok : 2017

Transcript of Membuat Sistem Operasi dengan Fasilitas Keyboard

Page 1: Membuat Sistem Operasi dengan Fasilitas Keyboard

TUGAS BESAR SISTEM OPERASI

MEMBANGUN KEYBOARD DIDALAM SISTEM OPERASI YUNO

DENGAN DUKUNGAN PENGERJAAN DARI LINUX MINT

Anggota Kelompok :

2017

Page 2: Membuat Sistem Operasi dengan Fasilitas Keyboard

ii

Page 3: Membuat Sistem Operasi dengan Fasilitas Keyboard

Sistem Operasi YUNO

Dalam tugas besar mata kuliah Sistem Operasi, kelompok kami akan

membuat sistem operasi yang diberi nama YUNO. YUNO adalah sebuah sistem

operasi sederhana yang memiliki fasilitas berupa keyboard. Dalam perancangan

keyboard dalam sistem operasi ini diperlukan beberapa metode seperti case, loop,

buffstr dan lain sebagainya. Selain itu, pada tampilan, tipe, dan sistem yang

digunakan dalam perancangan keyboard juga harus didefinisikan didalam file

keyboard. Dalam pengerjaan sistem operasi YUNO, Anda membutuhkan Linux

Mint dan menggunakan bahasa Assembly. Setelah itu, buat sebuah nama folder

sistem operasi bernama YUNO di bagian desktop agar pengguna lebih mudah untuk

mengakses foldernya selama pengerjaan sistem operasi ini.

Selanjutnya, Anda perlu membuat file baru dengan nama build.sh,

kernel.asm, linker.ld dan setup.sh. Sebelumnya, di bagian setup.sh diperlukan

beberapa instalasi alat seperti qemu, virtualbox, gcc dan sebagainya. Hal ini

ditunjukan pada gambar dibawah ini :

Kemudian, buat beberapa folder dengan format nama sebagai berikut :

Page 4: Membuat Sistem Operasi dengan Fasilitas Keyboard

Di bagian file kernel.asm, berikan beberapa command sebagai berikut :

Arti dari ‘bits 32’ sendiri adalah sistem operasi yang akan dibuat dengan 32

bit, align-nya sama dengan 32 bit yaitu 4 bit. Define double ‘dd’ dengan address

0x1BADB002 yang juga merupakan bootloader diarahkan untuk mengenal sistem

operasi ini sebagai operasi multi-boot. Untuk command ‘global start’ ditujukan

sebagai fungsi yang dapat mengakses linker.ld. ‘extern kmain’ sebagai fungsi yang

akan berada didalam kernel.c.

Sebelum memulai eksekusi maka perlu diberikan command ‘start’.

Selanjutnya, ‘cli’ ditujukan untuk membersihkan interupsi dimana interupsi ini

sendiri memliki beberapa terms yang didukung oleh sistem operasi YUNO untuk

melakukan beberapa pengerjaan seperti menulis di tampilan YUNO. Tetapi karena

sistem operasi ini dirancang dengan 32 bit maka service ini tidak dapat digunakan

dalam waktu lama sehingga pembersihan interupsi perlu dilakukan. Untuk ‘call

kmain’ ditujukan didalam kernel.c sebagai fungsi yang mengirimkan prosesor

untuk melanjutkan ekesekusi dari fungsi kmain dan ‘hlt’ memberhentikan kinerja

CPU dari alamat yang diberikan. Kernel juga dibagi menjadi dua bagian, bagian

pertama adalah entry point yang harus didalam alamat yang spesifik di suatu

memori dan entry point tersebut di eksekusi ke kernel.asm dan kernel.c.

Selanjutnya, buat beberapa file baru didalam folder include, diantaranya

keyboard.h, sistem.h, string,h, tampilan.h dan tipe.h.

Berikut ini adalah command dari file tipe.h :

Page 5: Membuat Sistem Operasi dengan Fasilitas Keyboard

Int8 adalah integer dari 8 bit yang berperan sebagai char samping. Unsigned

char uint8 adalah inside char dari 8 bit. Int16, int32, int64 adalah integer 16 bit, 32

bit dan 64 bit yang side short, dan unsigned int16,int32, dan int64 adalah inside

integer dari masing-masing bit. Sedangkan typedef char* adalah string pointer

Berikut ini adalah command dari file string.h :

Uint16 mengembalikan unsigned integer dari 16 bit dan menggambil ch.

String length atau strLength adalah kalkulasi banyaknya karakter yang diberikan

pengguna. While (ch[i++]) artinya I sama dengan 0 terjadi saat diakhir string.

Berikut ini adalah command dari file sistem.h :

Page 6: Membuat Sistem Operasi dengan Fasilitas Keyboard

System.h ada dua fungsi void diantaranya adalah void outportb yang

menggunakan uint8 bit didefiniskan didalam system, fungsi pertama adalah hasil

inport yang menggambil satu value dari tipe didalam integer 16 bit dan port address

dan mengembalikan value address itu kembali. Lalu, bagian volatile dilakukan

modifikasi dengan Assembly dan mengembalikannya yang terhubung ke port

spesifik yang diletakan disini. Fungsi void inportb sangat berperan penting di dalam

sistem.h karena fungsi ini dapat mengkontrol kursor apa yang dapat muncul

ditampilan dimana akan langsung ditulis ke dalam port dan void outportb bagian

volatile juga menulis ke port particular dan instruksi dengan Assembly.

Berikut ini adalah command dari file tampilan.h :

Ada beberapa fungsi yang didefinisikan di dalam tampilan.h diantaranya

void clearLine, void updateCursor, void clearScreen, void scrollUp, void

newLineCheck, void printch, dan void print. Void clearline digunakan untuk

memberikan pengaruh terhadap tampilan OS, dimana tampilan YUNO terdapat 85

kolom, 25 baris dan setiap box memiliki andil dalam mengatur karakter dan warna.

Void updateCursor adalah kursor menggunakan variable Y dan variable X sebagai

integer yang nilainya nol sebagai inisialisasi. Fungsi void ini untuk membuat

Page 7: Membuat Sistem Operasi dengan Fasilitas Keyboard

variable baru memanggil temp yang berarti unsigned sehingga variable ini akan

ambil kursor Y dikali lebar layar ditambah kursor x yang berarti fungsi ini akan

mengirimkan lokasi kursor OS ini dimana kursor ini harus melakukan port

spesifiknya (0x3D4,0x3D5) yang mengatur posisi dari kursor. Mode VGA YUNI

yang dipilih modenya juga adalah 85 x 25 x 16 color.

Void clearScreen untuk menghapus seluruh demonstrasi yang dilakukan

dengan menggunakan clearLine (clearLine 0 ke garis line pertama ke tinggi garis

layar -1). Void scroolUp untuk side uint 8 bit, membuat variable baru (vidmem)

yang mengambil value alamat layar (0xB8000). Vidmem[1] akan pindahkan

seluruh line keatas.

Page 8: Membuat Sistem Operasi dengan Fasilitas Keyboard

Void newLineCheck terjadi jika teks telah diakhir tampilan, lalu naik ke atas.

Setelah mencapai akhir tampilan layar, kata-kata tersebut akan naik keatas dengan

tidak otomatis. Sehingga diperlukan membuat fungsi lagi yaitu scrollup

Void printch adalah argument char yang akan diprint ke layar yang diberikan

beberapa kondisi. Kondisinya didefinisikan sebagai berikut :

Case 1 (0x08) untuk pindah balik ke kursor X dan akan dihapus jika bukan

case 0x09 tab button.

Case (‘\r’) adalah backslash yang start line at the beginning sehingga bisa

lihat cursor X bisa ambil 0

Case (‘\n’) adalah cursor X mengindikasi 0 sehingga bisa lompat ke kondisi

lainnya.

Default untuk print karakter dan menganti warna layar 0x30 menjadi biru

hitam dan bagian If cursor X akan naik ke atas garisnya secara otomatis jika

telah di bagian baris akhir di layar dan newLineC heck untuk memberikan

spasi kosong saat garis naik ke atas.

Page 9: Membuat Sistem Operasi dengan Fasilitas Keyboard

Void print untuk print argument tipe string yang disebut ch. Uint16 untuk

inisialisasi dan mengulang kata-kata yang diinstruksikan saat loop repeat.

Bagian command keyboard.h sebagai berikut :

Page 10: Membuat Sistem Operasi dengan Fasilitas Keyboard
Page 11: Membuat Sistem Operasi dengan Fasilitas Keyboard
Page 12: Membuat Sistem Operasi dengan Fasilitas Keyboard

Keyboard.h terhubung dengan tampilan.h, sistem.h, dan tipe.h. Fungsinya

hanya satu yaitu read string. Return ke string dan tidak ada parameter. If inport

adalah equal true dan eksekusi switch untuk 0x64 address dapat mengecek status

dari keyboard, mengetahui saat kunci ditekan dan 0x60 address untuk membaca

kode kunci itu. Dalam kode ini dirancang membaca kunci saat kuncinya

ditekan.Buffstr menjadi variabel memori yang menggunakan string sebagai buffer.

Sehingga, didalam casenya diperlukan definisi dalam setiap angka dan huruf

dengan menggunakan bilangan decimal seperti 1 untuk desimal 2 dan ENTER

unutk decimal 28.

Page 13: Membuat Sistem Operasi dengan Fasilitas Keyboard

Bagian command di file kernel.c sebagai berikut :

Didalam kernel.c, dirancang lebar tampilannya menjadi 85 sehingga ada

jarak. Command yang diizinkan terbatas, hanya ‘zee’, ‘fakultas ilmu komputer’ dan

‘kandang’ menggunakan enter untuk mengirim data. While itu adalah loop, loop

yang akan mengulang sendiri, dan membaca string dari keyboard. String-nya sama

dengen ‘zee’ yang nantinya akan mengeksekusi instruksi “Yak~ kamu telah ada di

zee”. strEql (string equal function) membandingkan dua string dan mengembalikan

satu jika stringnya sama atau nol. Jika mereka tidak memiliki jumlah karakter yang

sama dan sama ukuran karakternyo maka dibandingkan karakternya juga secara

individu.

Setelah menyelesaikan langkah diatas maka compile kernel.asm dan

kernel.c dengan menggunakan alat yang telah kita install tadi dengan command

sebagai berikut :

Page 14: Membuat Sistem Operasi dengan Fasilitas Keyboard

Gunakan command “nasm –f elf32 kernel.asm –o kasm.o” untuk

menambahkan kasm.o sebagai hasil compile-nya. “Gcc –m32 –c kernel.c –o kc.o”

untuk menambahkan kc.o sebagai hasil compile-nya.

0x100000 ini adalah address penyimpanan 100.000 hexadecimal yang

nantinya diguanakan memori tersedia untuk mengalokasikan sistem operasi ini ke

dalam alamat 0x100000 ini.

Gunakan “ld (linker) –m elf_i386 linker.ld –o kernel.bin kasm.o kc.o” untuk

menggabungkan dua input file (kasm.o dan kc.o) menjadi satu. Setelah itu, gunakan

“qemu-system-i386 –kernel kernel.bin” untuk mencetak karakter di tampilan.

Lalu, copy semua command sebelumnya ke dalam ‘build.sh’ dan atur

‘build.sh’ di menu pengaturan > permission > allow excuting file as a program

sehingga ‘build.sh’ bisa dieksekusi filenya menjadi program.

YUNO dapat menjalankan command di atas jika dibuat suatu file untuknya

maka diperlukan membuat file baru yuno > boot > grub > buat file baru bernama

grub.cfg = diseting kan agar dapat delink kesana agar dapat multiboot. Lalu, copy

‘kernel.bin’ ke dalam folder boot juga. Copy seluruh command ke build.sh.

Ffreestanding yang dimaksud dibawah ini adalah sebagai argument gcc yang

fungsinya prevent compiler dari penggunaan fungsi apapun yang didefinisikan oleh

sistem, kecuali definisi yang dibuat sendiri.

Page 15: Membuat Sistem Operasi dengan Fasilitas Keyboard

Akhir langkah :

Diakhir, sistem operasi YUNO dengan fasilitas keyboard dapat dibuat file

iso dengan cara memberikan command sebagai berikut :

Setelah file iso telah siap, jalankan sistem operasi tersebut dalam VirtualBox

Page 16: Membuat Sistem Operasi dengan Fasilitas Keyboard