X-Git-Url: http://git.osdn.net/view?p=chnosproject%2FCHNOSProject.git;a=blobdiff_plain;f=CHNOSProject%2Fchnos%2Ftolset_chn_000%2Fchnos_010%2Fchnos%2Fchnipl.nas;fp=CHNOSProject%2Fchnos%2Ftolset_chn_000%2Fchnos_010%2Fchnos%2Fchnipl.nas;h=0000000000000000000000000000000000000000;hp=3496759db2a0c35c0ff60191d22d4e0b973d6d6a;hb=b5024d774f4b8266155880a767a76408903ed886;hpb=e7d5093d765f166cb92f5ed6e5e5d19173aebf5d diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/chnipl.nas b/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/chnipl.nas deleted file mode 100644 index 3496759..0000000 --- a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/chnipl.nas +++ /dev/null @@ -1,185 +0,0 @@ - -[INSTRSET "i486p"] - -; BOOT_INFO_ADDR -CYLS equ 0x0ff0 - - org 0x7c00 ; ‚±‚̃vƒƒOƒ‰ƒ€‚ª‚Ç‚±‚ɓǂݍž‚Ü‚ê‚é‚Ì‚© - -; ˆÈ‰º‚Í•W€“I‚Èfat12ƒtƒH[ƒ}ƒbƒgƒtƒƒbƒs[ƒfƒBƒXƒN‚Ì‚½‚ß‚Ì‹Lq - - jmp entry - db 0x90 - db "chnos " ; ƒu[ƒgƒZƒNƒ^‚Ì–¼‘O‚ðŽ©—R‚ɏ‘‚¢‚Ä‚æ‚¢i8ƒoƒCƒgj - dw 512 ; 1ƒZƒNƒ^‚Ì‘å‚«‚³i512‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - db 1 ; ƒNƒ‰ƒXƒ^‚Ì‘å‚«‚³i1ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dw 1 ; fat‚ª‚Ç‚±‚©‚çŽn‚Ü‚é‚©i•’Ê‚Í1ƒZƒNƒ^–Ú‚©‚ç‚É‚·‚éj - db 2 ; fat‚̌”i2‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dw 224 ; ƒ‹[ƒgƒfƒBƒŒƒNƒgƒŠ—̈æ‚Ì‘å‚«‚³i•’Ê‚Í224ƒGƒ“ƒgƒŠ‚É‚·‚éj - dw 2880 ; ‚±‚̃hƒ‰ƒCƒu‚Ì‘å‚«‚³i2880ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - db 0xf0 ; ƒƒfƒBƒA‚̃^ƒCƒvi0xf0‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dw 9 ; fat—̈æ‚Ì’·‚³i9ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dw 18 ; 1ƒgƒ‰ƒbƒN‚É‚¢‚­‚‚̃ZƒNƒ^‚ª‚ ‚é‚©i18‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dw 2 ; ƒwƒbƒh‚̐”i2‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - dd 0 ; ƒp[ƒeƒBƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‚È‚¢‚Ì‚Å‚±‚±‚Í•K‚¸0 - dd 2880 ; ‚±‚̃hƒ‰ƒCƒu‘å‚«‚³‚ð‚à‚¤ˆê“x‘‚­ - db 0, 0, 0x29 ; ‚æ‚­‚í‚©‚ç‚È‚¢‚¯‚Ç‚±‚Ì’l‚É‚µ‚Ä‚¨‚­‚Æ‚¢‚¢‚炵‚¢ - dd 0xffffffff ; ‚½‚Ô‚ñƒ{ƒŠƒ…[ƒ€ƒVƒŠƒAƒ‹”ԍ† - db "chnosboot " ; ƒfƒBƒXƒN‚Ì–¼‘Oi11ƒoƒCƒgj - db "fat12 " ; ƒtƒH[ƒ}ƒbƒg‚Ì–¼‘Oi8ƒoƒCƒgj - resb 18 ; ‚Æ‚è‚ ‚¦‚¸18ƒoƒCƒg‚ ‚¯‚Ä‚¨‚­ - -; ƒvƒƒOƒ‰ƒ€–{‘Ì - -entry: - mov ax, 0 ; ƒŒƒWƒXƒ^‰Šú‰» - mov ss, ax - mov sp, 0x7c00 - mov ds, ax - -; ƒfƒBƒXƒN‚ð“Ç‚Þ - - mov ax, 0x0820 - mov es, ax - mov ch, 0 ; ƒVƒŠƒ“ƒ_0 - mov dh, 0 ; ƒwƒbƒh0 - mov cl, 2 ; ƒZƒNƒ^2 - mov bx, 18*2-1 ; “ǂݍž‚Ý‚½‚¢‡ŒvƒZƒNƒ^” (2006.12.23 ƒoƒOC³) - call readfast ; ‚‘¬“ǂݍž‚Ý - - mov bx, 4312+0x8200+2 -fatloop: - add bx, -2 - cmp word [bx], 0 - jz fatloop - mov ax, bx - add ax, -0x8200-5+54+53 - mov bl, 54 - div bl ; al = ax / bl - - cmp al, 0 - jnz fatskip1 - mov al, 1 -fatskip1: - cmp al, 33 - jbe fatskip2 - mov al, 33 -fatskip2: - mov [CYLS], al ; ipl‚ª‚Ç‚±‚Ü‚Å“Ç‚ñ‚¾‚Ì‚©‚ðƒƒ‚ - add al, -1 - jz fatskip3 - mov ah, 0 - imul bx, ax, 18*2 - - mov ax, 0x0c80 - mov es, ax - mov ch, 1 ; ƒVƒŠƒ“ƒ_1 - mov dh, 0 ; ƒwƒbƒh0 - mov cl, 1 ; ƒZƒNƒ^1 - call readfast ; ‚‘¬“ǂݍž‚Ý -fatskip3: - -; “ǂݏI‚í‚Á‚½‚Ì‚Åharibote.sys‚ðŽÀs‚¾I - - jmp 0xc200 - - -error: - mov ax, 0 - mov es, ax - mov si, msg -putloop: - mov al, [si] - add si, 1 ; si‚É1‚ð‘«‚· - cmp al, 0 - je fin - mov ah, 0x0e ; ˆê•¶Žš•\Ž¦ƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ - mov bx, 15 ; ƒJƒ‰[ƒR[ƒh - int 0x10 ; ƒrƒfƒIbiosŒÄ‚яo‚µ - jmp putloop -fin: - hlt ; ‰½‚©‚ ‚é‚Ü‚Åcpu‚ð’âŽ~‚³‚¹‚é - jmp fin ; –³ŒÀƒ‹[ƒv - -msg: db 0x0a, 0x0a ; ‰üs‚ð2‚ - db "chnipl load error" - db 0x0a ; ‰üs - db 0 - -readfast: ; al‚ðŽg‚Á‚Ä‚Å‚«‚邾‚¯‚܂Ƃ߂ēǂݏo‚· - ; es:“ǂݍž‚ݔԒn, ch:ƒVƒŠƒ“ƒ_, dh:ƒwƒbƒh, cl:ƒZƒNƒ^, bx:“ǂݍž‚݃ZƒNƒ^” - - mov ax, es ; < es‚©‚çal‚̍őå’l‚ðŒvŽZ > - shl ax, 3 ; ax‚ð32‚ÅŠ„‚Á‚āA‚»‚ÌŒ‹‰Ê‚ðah‚É“ü‚ꂽ‚±‚Æ‚É‚È‚é ishl‚͍¶ƒVƒtƒg–½—߁j - and ah, 0x7f ; ah‚Íah‚ð128‚ÅŠ„‚Á‚½—]‚èi512*128=64kj - mov al, 128 ; al = 128 - ah; ˆê”Ô‹ß‚¢64kb‹«ŠE‚܂ōő剽ƒZƒNƒ^“ü‚é‚© - sub al, ah - - mov ah, bl ; < bx‚©‚çal‚̍őå’l‚ðah‚ÉŒvŽZ > - cmp bh, 0 ; if (bh != 0) { ah = 18; } - je .skip1 - mov ah, 18 -.skip1: - cmp al, ah ; if (al > ah) { al = ah; } - jbe .skip2 - mov al, ah -.skip2: - - mov ah, 19 ; < cl‚©‚çal‚̍őå’l‚ðah‚ÉŒvŽZ > - sub ah, cl ; ah = 19 - cl; - cmp al, ah ; if (al > ah) { al = ah; } - jbe .skip3 - mov al, ah -.skip3: - - push bx - mov si, 0 ; Ž¸”s‰ñ”‚𐔂¦‚郌ƒWƒXƒ^ -retry: - mov ah, 0x02 ; ah=0x02 : ƒfƒBƒXƒN“ǂݍž‚Ý - mov bx, 0 - mov dl, 0x00 ; aƒhƒ‰ƒCƒu - push es - push dx - push cx - push ax - int 0x13 ; ƒfƒBƒXƒNbiosŒÄ‚яo‚µ - jnc next ; ƒGƒ‰[‚ª‚¨‚«‚È‚¯‚ê‚Înext‚Ö - add si, 1 ; si‚É1‚ð‘«‚· - cmp si, 5 ; si‚Æ5‚ð”äŠr - jae error ; si >= 5 ‚¾‚Á‚½‚çerror‚Ö - mov ah, 0x00 - mov dl, 0x00 ; aƒhƒ‰ƒCƒu - int 0x13 ; ƒhƒ‰ƒCƒu‚̃ŠƒZƒbƒg - pop ax - pop cx - pop dx - pop es - jmp retry -next: - pop ax - pop cx - pop dx - pop bx ; es‚Ì“à—e‚ðbx‚Ŏ󂯎æ‚é - shr bx, 5 ; bx‚ð16ƒoƒCƒg’PˆÊ‚©‚ç512ƒoƒCƒg’PˆÊ‚Ö - mov ah, 0 - add bx, ax ; bx += al; - shl bx, 5 ; bx‚ð512ƒoƒCƒg’PˆÊ‚©‚ç16ƒoƒCƒg’PˆÊ‚Ö - mov es, bx ; ‚±‚ê‚Å es += al * 0x20; ‚É‚È‚é - pop bx - sub bx, ax - jz .ret - add cl, al ; cl‚Éal‚ð‘«‚· - cmp cl, 18 ; cl‚Æ18‚ð”äŠr - jbe readfast ; cl <= 18 ‚¾‚Á‚½‚çreadfast‚Ö - mov cl, 1 - add dh, 1 - cmp dh, 2 - jb readfast ; dh < 2 ‚¾‚Á‚½‚çreadfast‚Ö - mov dh, 0 - add ch, 1 - jmp readfast -.ret: - ret - - resb 0x7dfe-$ ; 0x7dfe‚Ü‚Å‚ð0x00‚Å–„‚ß‚é–½—ß - db 0x55, 0xaa