/kernel/trunk/boot/bootcode.inc |
---|
93,6 → 93,14 |
mov [variable_to_set], al |
} |
clear_status_field: |
mov si, space_msg |
mov byte [si+80], 0 |
_setcursor 16,0 |
call printplain |
_setcursor 16,0 |
ret |
boot_read_floppy: |
push si |
xor si, si |
276,7 → 284,6 |
cld |
push 0 |
pop es |
; \begin{diamond}[02.12.2005] |
; if bootloader sets ax = 'KL', then ds:si points to loader block |
cmp ax, 'KL' |
jnz @f |
284,8 → 291,6 |
mov word [cs:cfgmanager.loader_block+2], ds |
mov word [es:BOOT_LO.kernel_restart], kernel_restart_bootblock |
@@: |
; \end{diamond}[02.12.2005] |
; if bootloader sets cx = 'HA' and dx = 'RD', then bx contains identifier of source disk |
; (see comment to BOOT_LO.sys_disk and loader_doc.txt) |
mov word [es:BOOT_LO.sys_disk], 'r1' ; default value: /rd/1 |
420,7 → 425,6 |
loopz @b |
in al, 0x60 |
;;;/diamond today 5.02.2008 |
; set keyboard typematic rate & delay |
mov al, 0xf3 |
out 0x60, al |
494,7 → 498,6 |
call calc_vmodes_table |
call check_first_parm ;check and enable cursor_pos |
; \begin{diamond}[30.11.2005] |
cfgmanager: |
; settings: |
; a) preboot_graph = graphical mode |
937,14 → 940,24 |
.cont: |
push cs |
pop ds |
mov si, space_msg |
mov byte [si+80], 0 |
_setcursor 16,0 |
call printplain |
_setcursor 16,0 |
push es |
les bx, [.loader_block] |
cmp byte [es:bx+7], 0 ; get write error flag |
pop es |
jz .load |
call clear_status_field |
mov si, write_err_msg |
call print |
.wait_any_key: |
xor ax, ax |
int 16h |
test ax, ax |
jz .wait_any_key |
.load: |
call clear_status_field |
end if |
; \end{diamond}[02.12.2005] |
; ASK GRAPHICS MODE |
999,30 → 1012,31 |
mov si, diskload |
call print |
xor ax, ax ; reset drive |
xor dx, dx |
xor dx, dx ; 1st floppy disk (0) |
int 0x13 |
; do we boot from CD-ROM? |
mov ah, 41h |
mov bx, 55AAh |
xor dx, dx |
mov ah, 41h ; check extended mode |
mov bx, 55AAh ; test 2 bytes to check that this function is supported |
xor dx, dx ; 1st floppy disk (0) |
int 0x13 |
jc .nocd |
jc .nocd ; extended mode not supported |
cmp bx, 0AA55h |
jnz .nocd |
mov ah, 48h |
jnz .nocd ; extended mode not supported |
mov ah, 48h ; extended read drive parameters |
push ds |
push es |
pop ds |
mov si, 0xa000 |
mov word [si], 30 |
mov word [si], 30 ; size of result buffer |
int 0x13 |
pop ds |
jc .nocd |
jc .nocd ; error getting parameters |
push ds |
lds si, [es:si+26] |
test byte [ds:si+10], 40h |
lds si, [es:si+26] ; pointer to Enhanced Disk Drive (EDD) configuration parameters |
test byte [ds:si+10], 40h ; check ATAPI device |
pop ds |
jz .nocd |
; yes - read all floppy by 18 sectors |
; TODO: !!!! read only first sector and set variables !!!!! |
/kernel/trunk/boot/booten.inc |
---|
94,6 → 94,7 |
db " Do you want to record them for the future boots?",13,10,186 |
db " Answer 'yes' only if your booting device is writable. [y/n]: ",0 |
loader_block_error db "Bootloader data invalid, I cannot continue. Stopped.",0 |
write_err_msg db "Recording the configuration has failed. Press any key to resume booting...",0 |
end if |
_st latin1 '║ ┌───────────────────────────────┬─┐',13,10,0 |
/kernel/trunk/boot/bootet.inc |
---|
91,6 → 91,7 |
if ~ defined extended_primary_loader |
save_quest latin1 "Jäta meelde praegused seaded? [y/n]: ",0 |
loader_block_error latin1 "Alglaaduri andmed vigased, ei saa jätkata. Peatatud.",0 |
write_err_msg latin1 "Salvestamine ebaõnnestus. Käivitamise jätkamiseks vajutage suvalist klahvi...",0 |
end if |
_st latin1 '║ ┌───────────────────────────────┬─┐',13,10,0 |
/kernel/trunk/boot/bootge.inc |
---|
91,6 → 91,7 |
if ~ defined extended_primary_loader |
save_quest db "Aktuelle Einstellungen speichern? [y/n]: ",0 |
loader_block_error db "Bootloader Daten ungueltig, Kann nicht fortfahren. Angehalten.",0 |
write_err_msg db "Schreiben fehlgeschlagen. Zum Booten eine beliebige Taste drucken...",0 |
end if |
_st latin1 '║ ┌───────────────────────────────┬─┐',13,10,0 |
/kernel/trunk/boot/bootru.inc |
---|
92,6 → 92,7 |
cp866 "║ Хотите записать их для будущих загрузок? Отвечайте да, только",13,10 |
cp866 "║ если ваше загрузочное устройство доступно для записи. [y/n]: ",0 |
loader_block_error cp866 "Ошибка в данных начального загрузчика, продолжение невозможно.",0 |
write_err_msg cp866 "Неудалось записать. Нажмите любую клавишу, для продолжения загрузки...",0 |
end if |
_st cp866 '║ ┌───────────────────────────────┬─┐ ',13,10,0 |
/kernel/trunk/boot/bootsp.inc |
---|
93,6 → 93,7 |
if ~ defined extended_primary_loader |
save_quest cp850 "¿Recordar configuración actual? [s/n]: ",0 |
loader_block_error cp850 "Bootloader inválido, no puedo continuar. Detenido.",0 |
write_err_msg cp850 "La grabación ha fallado. Presione cualquier tecla para continuar...",0 |
end if |
_st cp850 '║ ┌───────────────────────────────┬─┐',13,10,0 |
/kernel/trunk/bootloader/boot_fat12.asm |
---|
129,9 → 129,7 |
found_kernel_file: |
mov bp, [si+01ah] ; first cluster of kernel file |
; <diamond> |
mov [cluster1st+boot_program], bp ; starting cluster of kernel file |
; <\diamond> |
; reading first FAT table |
mov ax, word [BPB_RsvdSecCnt+boot_program] ; begin first FAT abs sector number |
184,12 → 182,10 |
jmp loop_obtains_kernel_data |
execute_kernel: |
; <diamond> |
mov ax, 'KL' |
push 0 |
pop ds |
mov si, loader_block+boot_program |
; </diamond> |
push word seg_read_kernel |
push word 0 |
retf ; jmp far 1000:0000 |
233,13 → 229,20 |
mov bp, 20 ; try 20 times |
newread: |
dec bp |
jnz .next |
cmp ah, 02h ; if read sectors |
jz file_error_message |
mov byte[write_err+boot_program], 1 ; if write sectors |
jmp .ret |
.next: |
push ax bx cx dx |
int 13h |
pop dx cx bx ax |
jc newread |
.ret: |
pop bp |
retn |
;------------------------------------------ |
; convert abs. sector number (AX) to BIOS T:H:S |
; sector number = (abs.sector%BPB_SecPerTrk)+1 |
279,7 → 282,6 |
RootDirSecs dw ? |
data_start dw ? |
; <diamond> |
write1st: |
push cs |
pop ds |
293,11 → 295,11 |
retf |
cluster1st dw ? |
loader_block: |
db 1 |
dw 0 |
dw write1st+boot_program |
dw 0 |
; <\diamond> |
db 1 ; +0 |
dw 0 ; +1 |
dw write1st+boot_program ; +3 |
dw 0 ; +5 |
write_err: db 0 ; +7 |
times 0x1fe-$ db 00h |