[Linux] Re: off topic

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Baris Metin (baris@gelecek.com.tr)
Date: Mon 19 Aug 2002 - 19:02:06 EEST


Content-Type: text/plain; charset=iso-8859-9
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Mon, Aug 19, 2002 at 01:46:25PM -0000 , Halil Demirezen :
> Selam konularla alakali deil ama,
>=20
> linux daki bootstrap kodunu inceledim ve bir kac tane daha kod inceledeim=
 farkli=20
> os larin bootstraplerini. anladigim kadariylar...
>=20
[SNIP]=20
> boylece belirtigimiz sayida sector floppy veya hdiskten 3000h segment li =
adrese=20
> atiliyor. diskten sector okuma veya jmp etme konusunda bir sorum yok fak=
at
> bootstrap kodu icindeki bir offset degerli msg i ekrana bios interruplari=
 ile yazdiramiyorum.

Selamlar,

Murat'in dedigi gibi int10 isini gorecektir. Nasm ile calisirken
ugrastigim bir kodu ekte gonderiyorum. Bol bol comment var icinde zaten
anlatmaya gerek yok.

iyi calismalar,
--=20
Baris Metin
GELECEK A.S.

-- Attached file included as plaintext by Ecartis --

; Baris Metin
; ------------------------------------------------------
; Bootsector 512 byte olmali.
; Son iki byte'da 0xAA55 degerleri bulunmali...

[BITS 16] ; Bios 16-bit real mode'da baslasin.
[ORG 0] ; Data offset = 0
                ; daha sonra registerlari 0x7c00'a kaydiracagiz.

jmp basla ; basla'ya atla ve islemleri gerceklestir.

; Kullanilan veriler
; ------------------
        bootdrv db 0 ; baslangic aygitimiz.
        bootmsg db 'Baris Metin boot sector',13,10,0

        rebootmsg db 'Bilgisayari bastan baslatmak icin. Bir Tusa basin...',13,10,0

        biseybisey db 'Buradan sonra istedigini yapabilirsin. Boot sector bitti. Mesela gidip biryerden bir cekirdek yukle ve ona jmp et.',13,10,0

; Kullanilacak fonksyonlarimiz...
;*******************************************
                    
        message: ; ds:si 'yi ekrana yaz.
                lodsb ; ds:si 'deki byte 'i al'ye aktar.
                or al,al ; karakter 0 ise son demektir
                jz done
                mov ah,0eh ; karakteri ekrana yaz.
                mov bx,0007 ; attribute
                int 0x10 ; BIOS'u cagir.
                jmp message ; jmp ile tekrar message'i cagirarak diger karaktere gec.
        done:
                ret
; ********************************************************************
        getkey:
                mov ah, 0 ; bir tusa basilmasini bekle.
                int 016h
                ret

; ********************************************************************
        reboot:
                mov si, rebootmsg ; rebootmsg'yi ekrana yaz.
                call message
                call getkey ; bir tusa basilmasini bekleyen fonk.'u cagir.

                db 0EAh ; makina dili: FFFF:0000 (reboot)'a atla.

                dw 0000h
                dw 0FFFFh
                ; reboot yapidigi icin bu fonk.'da "ret" gerekmiyor.
                

; Boot islemi icin ana gorev burada yapiliyor.
; ********************************************
basla:
        mov ax,0x7c0 ; BIOS ilk olarak bizi 0x7c00'a atiyor.
        mov ds,ax ; bu yuzden yum datamiza 0x7c0'a atiyoruz.

        mov [bootdrv], dl ; dl hangi surucu (device) dan boot ettigimizi tutuyor.
                          ; bu bilgiyi ondan aliyoruz.

        cli ; bir stack olusturacagiz interruptlari temizle...
        mov ax,0x9000 ; stack icin tipik bir yermis burasi.
        mov ss,ax
        mov sp,0xffff ; Tum segmenti kullanalim.
        sti ; interruptlari yerine koy.
        
        ; Protected mode'da islemci interruptlari disable edecektir aslinda.
        
        mov si,bootmsg ; baslangic mesajini yazdir.
        call message

        mov si,biseybisey ; buradan sonra istedigimizi yapabiliriz.
                         ; Kernel'i yuklemek ve ona jump etmek gibi.
        call message
        call getkey
        call reboot

        times 510-($-$$) db 0 ;510 byte'i 0 (sifir)'lar ile doldur
        dw 0xAA55 ; ve son iki byte'a magic degerleri koy.
                                ; bios 511 (55) ve 512. (AA) byte'larda bu magic
                                       ; degerleri arar.

-- Attached file included as plaintext by Ecartis --

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
Comment: Baris Metin - http://metin.org

iD8DBQE9YRZ+9d0Ui5CybXkRAgamAKCO2jPDpEVQu7KfZzGLK+sXj9FygwCglzte
lta981BSyAVMcoMoPaeWxqQ=
=TUX6
-----END PGP SIGNATURE-----

-----------------------------------------------------------------------
Liste üyeliğiniz ile ilgili her türlü işlem için
http://liste.linux.org.tr adresindeki web arayüzünü kullanabilirsiniz.

Listeden çıkmak için: 'linux-request@linux.org.tr' adresine,
"Konu" kısmında "unsubscribe" yazan bir e-posta gönderiniz.
-----------------------------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.