●feel氏作成のブートローダ
「旧メンバー」だったfeel氏が、ブートローダを書かれました。さらに、ありがたくもそのコードを、KL-01として公開することを承諾してくださいました。
氏のご好意に感謝し、謹んで公開をさせていただきます。
氏のご好意に感謝し、謹んで公開をさせていただきます。
jmp short start llmsg db 'BootNext',0x0d,0x0a,0 ;リアルモード用文字列表示 print: mov ah,13h mov al,0 mov bx,7h mov cx,20h mov dx,0 int 10h ret bits 16 start: mov ax,cs mov ds,ax a20enable: mov al,0ch in al,64h test al,02h jnz a20enable mov al,0D1h out 64h,al mov al,0DFh out 60h,al mov bp,llmsg call print ;stop: ;jmp stop ;保護モード以降 changeprot: cli lgdt [gdtr] mov eax,cr0 or al,01h mov cr0,eax jmp next ;謎の多いgdtr gdtr: dw gdt_end - gdt - 1 dd gdt + 0x1000 gdt: ;ヌル dw 0 dw 0 db 0 db 0 db 0 db 0 ;コード gdt8: dw 0x0ffff dw 0 db 0 db 0x09a db 0x0ff db 0 ;データ gdt10: dw 0x0ffff dw 0 db 0 db 0x092 db 0x0ff db 0 ;テキストモード用vram gdt18: dw 3999 dw 0x8000 db 0x0b db 0x092 db 0 db 0 gdt_end [bits 32] next: db 0xea dw set_desc + 0x1000 dw 08h set_desc: mov ax,10h mov ds,ax mov es,ax mov ss,ax mov ax,18h mov gs,ax mov esp,1024*1024*8 chkbugs: jmp chkbugs times 512-($-$$) db 0