• Tidak ada hasil yang ditemukan

M EM BUAT SI STEM OPERASI SEN D I R

Biasanya, saat kom put er dihidupkan akan m encoba m e- load 512- byt e sect or pert am a ( Cylinder 0, Head 0, Sect or 1) dari disk drive, m isal A: ke lokasi m em ori 0 0 0 0 h:7 C0 0 h dan m em berikan kont rolnya. Jika gagal BI OS m encoba m enggunakan MBR dari hard drive prim er. Dalam bagian ini akan m encoba m engcover boot ing dari sebuah floppy drive,dengan prinsip yang sam a dapat j uga dilakukan di harddisk. Tet api m enggunakan floppy drive m em iliki beberapa keunt ungan:

• OS kit a t et ap ut uh ( windows, dos, linux, unix, be- os...) .

• udah dan am an m em odifikasi boot record padaf floppy

disk.

cont oh floppy disk boot program :

; directive utk membuat BOOT file: #make_boot#

; Boot record di-loaded di 0000:7C00,

; informasikan compiler utk membuat permintaan yang benar: ORG 7C00h

PUSH CS ; yakinkan DS=CS POP DS

; load alamat message ke dalam register SI : LEA SI, msg

; teletype id fungsi: MOV AH, 0Eh print: MOV AL, [SI] CMP AL, 0 JZ done

INT 10h ; cetak dg teletype. INC SI

JMP print ; tunggu utk 'any key': done: MOV AH, 0 INT 16h

56 ; simpan nilai magic di 0040h:0072h:

; 0000h - cold boot. ; 1234h - warm boot. MOV AX, 0040h MOV DS, AX

MOV w.[0072h], 0000h ; cold boot. JMP 0FFFFh:0000h ; reboot!

new_line EQU 13, 10

msg DB 'Hello ini Boot Program saya yang pertama!' DB new_line, 'Tekan sembarang tombol utk reboot', 0

t ulis cont oh diat as pada edit or em u8086 dan t ekan e m ula t e.

Em ulat or secara ot om at is akan m e- load file .bin ke

0 0 0 0 h:7 C0 0 h ( ini digunakan sebagai suplem en file .binf ut k m enget ahui dim ana akan di load) . Kit a dapat m enj alankan sepert i program biasa, at au dapat m enggunakan m enu v ir t u a l dr ive unt uk m enulis: w r it e 5 1 2 byt e s di 7 c0 0 h k e boot se ct or dari virt ual floppy drive ( file "FLOPPY_ 0" file di c: \ em u8086) . Set elah program dit ulis ke virt ual floppy drive, kit a dapat m em ilih boot fr om floppy dari m enu v ir t ua l dr ive . File

.bin unt uk boot records t erbat as pada 512 byt es ( ukuran

sekt or) . Jika OS baru kit a berukuran lebih dari nilai t ersebut , kit a perlu m enggunakan suat u boot program unt uk m e- load dat a dari sect or lainnya ( sepert i m icro- os_loader.asm ) . Cont oh OS kecil dapat di t em ukan di c: \ em u8086\ exam ples. Unt uk m em buat perluasan OS kit a ( lebih dari 512 byt es) , kit a dapat t am bahkan sect or pada floppy disk. I ni direkom endasikan unt uk m enggunakan file ".bin" unt uk t uj uan ini ( unt uk m em buat file ".bin" pilih "BI N Te m pla t e" dari m enu "File" - > "N e w" ) . Unt uk m enulis file ".bin" ke virt ual floppy, pilih " W r it e .bin file t o floppy..." dari m enu " V ir t u a l dr ive " em ulat or, kit a harus m enulisnya dim anapun di boot sekt or ( Cylinder: 0, Head: 0, Sect or: 1) .

57 kit a dapat m enggunakan ut ilit y ini unt uk m enulis file .bin ke virt ual floppy disk ( "FLOPPY_ 0" file) , dapat j uga m enu "w r it e 5 1 2 by t e s a t 7 c0 0 h t o boot se ct or" . bagaim anapun j uga, kit a perlu ingat bahwa file .bin yang didisain unt uk m enj adi boot record harus selalu di t ulis ke cylinder: 0, head: 0, sect or: 1

Boot Sect or Locat ion: Cylinder: 0

Head: 0 Sector: 1

Unt uk m enulis file .bin kef loopy disk sebenarnya gunakan writ ebin.asm , lalu kom pilasikan ke file .com dan j alankan dari com m and prom pt .

- Unt uk m enulis t ipe boot record : w r it e bin loa de r .bin ;

- unt uk m enulis t ipe m odul kernel : w r it e bin k e r n e l.bin / k.

param et er / k m engat akan pada program unt uk

m enulis file pada sect or ke dua sebagai gant i yang pert am a .Hal t ersebut bukan m enj adi m asalah dalam rangka m enulis file ke floppy drive, t et api yang m enj adi m asalah dim ana kit a akan m enuliskannya . Ca t a t a n : boot record ini t idak kom pit abel dengan MS- DOS/ Window s, j uga Linux at au Unix , OS t idak m engij inkan kit a m em baca at au m enulis file dalam disket hingga kit a akan m e- reform at nya ,Jadi yakinkan bahwa disket yang kit a gunakan t idak berisi dat a yang pent ing. Bagaim anapun j uga kit a dapat m enulis dan m em baca apa saj a dari dank e disk m enggunakan

58 int errupt unt uk m engakses disk secara low level , bahkan m ungkin m em prot eksi inform asi yang bernilai dari orang lain at au j ika seseorang m endapat kan disket m ungkin dia akan berpikir bahwa disket t ersebut kosong dan akan m em form at nya, karena pilihan default nya ada di windows operat ing syst em

St rukt ur floppy drive dan disket t e yang ideal:

Unt uk disket 1 4 4 0 k b :

• floppy disk m em punyai 2 side , dan ada 2 head (0 ..1) , head drive bergerak keat as perm ukaan dari disket unt uk t iap sisi.

• Tiap sisi m em iliki 80 cylinders ( di nom ori 0 ..7 9) . • t iap cylinder m em iliki 18 sect ors (1 ..1 8) .

• t iap sect or m em iliki 5 1 2 byt es.

• Tot al ukuran floppy disk adalah : 2 x 80 x 18 x 512 =

1 ,4 7 4 ,5 6 0 byt es.

Cat at an: disket t he MS- DOS ( window s) yang t erform at m em iliki free space sedikit berkurang ( sekit ar 16,896 byt es) karena OS

59 perlu m enem pat kan st rukt ur nam a file dan direkt ori ( sering disebut FAT at au file syst em allocat ion t able) . Sem akin banyak nam a file sem aki berkurang ruang yang kosong .Yang paling efisien unt uk m enyim pan file adalah m enuliskan secara langsung dengan m enggunakan file syst em , dan unt uk beberapa kasus hal ini m erupakan yang paling reliable , j ika kit a dapat m enggunakannya. Unt uk m em baca sect or dari floppy drive gunakan I N T 1 3 h / AH = 0 2 h.

60 BAGI AN 1 2

PEN GEN D ALI AN D EVI CE EX TERN AL

Dokumen terkait