/kernel/trunk/boot/bootcode.inc |
---|
282,18 → 282,18 |
jnz @f |
mov word [cs:cfgmanager.loader_block], si |
mov word [cs:cfgmanager.loader_block+2], ds |
mov word [es:BOOT_KERNEL_RESTART], kernel_restart_bootblock |
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_BX_FROM_LOAD and loader_doc.txt) |
mov word [es:BOOT_BX_FROM_LOAD], 'r1' ; default value: /rd/1 |
; (see comment to BOOT_LO.bx_from_load and loader_doc.txt) |
mov word [es:BOOT_LO.bx_from_load], 'r1' ; default value: /rd/1 |
cmp cx, 'HA' |
jnz no_hd_load |
cmp dx, 'RD' |
jnz no_hd_load |
mov [es:BOOT_BX_FROM_LOAD], bx |
mov [es:BOOT_LO.bx_from_load], bx |
no_hd_load: |
; set up stack |
441,7 → 441,7 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
sti |
; --------------- APM --------------------- |
and word [es:BOOT_APM_VERSION], 0 ; ver = 0.0 (APM not found) |
and word [es:BOOT_LO.apm_version], 0 ; ver = 0.0 (APM not found) |
mov ax, 0x5300 |
xor bx, bx |
int 0x15 |
448,8 → 448,8 |
jc apm_end ; APM not found |
test cx, 2 |
jz apm_end ; APM 32-bit protected-mode interface not supported |
mov [es:BOOT_APM_VERSION], ax ; Save APM Version |
mov [es:BOOT_APM_FLAGS], cx ; Save APM flags |
mov [es:BOOT_LO.apm_version], ax ; Save APM Version |
mov [es:BOOT_LO.apm_flags], cx ; Save APM flags |
; Write APM ver ---- |
and ax, 0xf0f |
468,10 → 468,10 |
xor bx, bx |
int 0x15 |
mov [es:BOOT_APM_ENTRY], ebx |
mov [es:BOOT_APM_CODE_32], ax |
mov [es:BOOT_APM_CODE_16], cx |
mov [es:BOOT_APM_DATA_16], dx |
mov [es:BOOT_LO.apm_entry], ebx |
mov [es:BOOT_LO.apm_code_32], ax |
mov [es:BOOT_LO.apm_code_16], cx |
mov [es:BOOT_LO.apm_data_16], dx |
apm_end: |
_setcursor d80x25_top_num, 0 |
951,26 → 951,26 |
; GRAPHICS ACCELERATION |
; force yes |
mov [es:BOOT_MTRR], byte 1 |
mov [es:BOOT_LO.mtrr], byte 1 |
; DMA ACCESS TO HD |
mov al, [preboot_dma] |
mov [es:BOOT_DMA], al |
mov [es:BOOT_LO.dma], al |
; Set kernel DEBUG mode - if nonzero, duplicates debug output to the screen. |
mov al, [preboot_debug] |
mov [es:BOOT_DEBUG_PRINT], al ;// 0x901E |
mov [es:BOOT_LO.debug_print], al ;// 0x901E |
; Start the first app (right now it's LAUNCHER) after kernel is loaded? |
mov al, [preboot_launcher] |
mov [es:BOOT_LAUNCHER_START], al ;// 0x901D |
mov [es:BOOT_LO.launcher_start], al ;// 0x901D |
; BOOT DEVICE |
mov al, [preboot_device] |
dec al |
mov [es:BOOT_DEV], al |
mov [es:BOOT_LO.dev], al |
; GET MEMORY MAP |
include '../detect/biosmem.inc' |
977,7 → 977,7 |
; READ DISKETTE TO MEMORY |
cmp byte [es:BOOT_DEV], 0 |
cmp byte [es:BOOT_LO.dev], 0 |
jne no_sys_on_floppy |
mov si, diskload |
call print |
1304,7 → 1304,7 |
out dx, al |
if defined extended_primary_loader |
cmp [es:BOOT_DEV], 1 |
cmp [es:BOOT_LO.dev], 1 |
jne no_sys_from_primary |
; load kolibri.img using callback from primary loader |
and word [movedesc + 24 + 2], 0 |
1343,7 → 1343,7 |
xor ax, ax |
mov es, ax |
mov ax, [es:BOOT_VESA_MODE] ; vga & 320x200 |
mov ax, [es:BOOT_LO.vesa_mode] ; vga & 320x200 |
mov bx, ax |
cmp ax, 0x13 |
je setgr |
/kernel/trunk/boot/bootvesa.inc |
---|
731,9 → 731,9 |
mov bx, word [es:si+2] ; resolution Y |
mov word [es:BOOT_X_RES], ax ; resolution X |
mov word [es:BOOT_Y_RES], bx ; resolution Y |
mov word [es:BOOT_VESA_MODE], cx ; number of mode |
mov word [es:BOOT_LO.x_res], ax ; resolution X |
mov word [es:BOOT_LO.y_res], bx ; resolution Y |
mov word [es:BOOT_LO.vesa_mode], cx ; number of mode |
cmp cx, 0x12 |
je .mode0x12_0x13 |
752,11 → 752,11 |
int 0x10 |
; LFB |
mov eax, [es:mi.PhysBasePtr];di+0x28] |
mov [es:BOOT_LFB], eax |
mov [es:BOOT_LO.lfb], eax |
; ---- vbe voodoo |
BytesPerLine equ 0x10 |
mov ax, [es:di+BytesPerLine] |
mov [es:BOOT_PITCH], ax |
mov [es:BOOT_LO.pitch], ax |
; BPP |
cmp [es:mi.BitsPerPixel], 16 |
jne .l0 |
765,12 → 765,12 |
mov [es:mi.BitsPerPixel], 15 |
.l0: |
mov al, byte [es:di+0x19] |
mov [es:BOOT_BPP], al |
mov [es:BOOT_LO.bpp], al |
jmp .exit |
.mode0x12_0x13: |
mov byte [es:BOOT_BPP], 32 |
or dword [es:BOOT_LFB], 0xFFFFFFFF; 0x800000 |
mov byte [es:BOOT_LO.bpp], 32 |
or dword [es:BOOT_LO.lfb], 0xFFFFFFFF; 0x800000 |
; VESA 1.2 PM BANK SWITCH ADDRESS |
789,7 → 789,7 |
; add eax, ebx |
; push 0x0000 |
; pop es |
; mov [es:BOOT_BANK_SW], eax |
; mov [es:BOOT_LO.bank_sw], eax |
.exit: |
ret |
/kernel/trunk/boot/rdload.inc |
---|
11,7 → 11,7 |
read_ramdisk: |
; READ RAMDISK IMAGE FROM HD (only for IDE0, IDE1, IDE2, IDE3) |
cmp byte [BOOT_DEV+OS_BASE+0x10000], 1 |
cmp byte [BOOT.dev+0x10000], 1 |
jne no_sys_on_hd.1 |
xor ebp, ebp |
112,7 → 112,7 |
DEBUGF 1, "K : RD not found\n" |
.1: |
; test_to_format_ram_disk (need if not using ram disk) |
cmp byte [BOOT_DEV+OS_BASE+0x10000], 3 |
cmp byte [BOOT.dev+0x10000], 3 |
jne not_format_ram_disk |
; format_ram_disk |
mov edi, RAMDISK |
/kernel/trunk/boot/shutdown.inc |
---|
16,9 → 16,9 |
align 4 |
system_shutdown: ; shut down the system |
cmp byte [BOOT_VARS+BOOT_SHUTDOWN_TYPE], SYSTEM_SHUTDOWN |
cmp byte [BOOT.shutdown_type], SYSTEM_SHUTDOWN |
jb @F |
cmp byte [BOOT_VARS+BOOT_SHUTDOWN_TYPE], SYSTEM_RESTART |
cmp byte [BOOT.shutdown_type], SYSTEM_RESTART |
jbe .valid |
@@: |
ret |
62,7 → 62,7 |
cli |
call IRQ_mask_all |
mov eax, [OS_BASE + BOOT_SHUTDOWN_TYPE] |
mov eax, dword[BOOT.shutdown_type] |
cmp al, SYSTEM_RESTART |
jne @F |
91,7 → 91,7 |
mov eax, cr3 |
mov cr3, eax |
cmp byte [BOOT_SHUTDOWN_TYPE], SYSTEM_SHUTDOWN |
cmp byte [BOOT_LO.shutdown_type], SYSTEM_SHUTDOWN |
jne no_acpi_power_off |
; system_power_off |
179,7 → 179,7 |
restart_code_start: |
org 0x50000 |
cmp byte [BOOT_SHUTDOWN_TYPE], SYSTEM_RESTART |
cmp byte [BOOT_LO.shutdown_type], SYSTEM_RESTART |
jne @F |
mov esi, _CLEAN_ZONE-OS_BASE |
277,7 → 277,7 |
xor ax, ax |
mov ds, ax |
mov al, [BOOT_SHUTDOWN_TYPE] |
mov al, [BOOT_LO.shutdown_type] |
cmp al, SYSTEM_RESTART |
je .restart |
350,7 → 350,7 |
pop ds |
push 0 |
pop es |
mov si, [es:BOOT_KERNEL_RESTART] |
mov si, [es:BOOT_LO.kernel_restart] |
mov ax, 'KL' |
jmp 0x1000:0000 |
/kernel/trunk/boot/uefi4kos.asm |
---|
70,7 → 70,7 |
cmp [rdi + 8], rdx |
jnz .not_acpi20 |
mov rax, [rdi + 16] |
mov rdx, BOOT_ACPI_RSDP |
mov rdx, BOOT_LO.acpi_rsdp |
mov [rdx], eax |
;jmp $ |
jmp .all_tables_done |
157,18 → 157,18 |
mov rcx, [gop_info] |
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.HorizontalResolution] |
xor rdx, rdx |
mov word [rdx + BOOT_X_RES], ax |
mov word [rdx + BOOT_LO.x_res], ax |
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.VerticalResolution] |
mov word [rdx + BOOT_Y_RES], ax |
mov word [rdx + BOOT_LO.y_res], ax |
mov eax, [rcx + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION.PixelsPerScanLine] |
shl eax, 2 |
mov word [rdx + BOOT_PITCH], ax |
mov word [rdx + BOOT_LO.pitch], ax |
mov byte [rdx + BOOT_PCI_DATA + 0], 1 |
mov byte [rdx + BOOT_PCI_DATA + 1], 0 |
mov byte [rdx + BOOT_PCI_DATA + 2], 0x10 |
mov byte [rdx + BOOT_PCI_DATA + 3], 0x02 |
mov dword [rdx + BOOT_PCI_DATA + 4], 0xe3 |
mov byte [rdx + BOOT_LO.pci_data + 0], 1 |
mov byte [rdx + BOOT_LO.pci_data + 1], 0 |
mov byte [rdx + BOOT_LO.pci_data + 2], 0x10 |
mov byte [rdx + BOOT_LO.pci_data + 3], 0x02 |
mov dword [rdx + BOOT_LO.pci_data + 4], 0xe3 |
uefi_call_wrapper BootServices, GetMemoryMap, memory_map_size, memory_map, memory_map_key, descriptor_size, descriptor_ver |
175,9 → 175,9 |
cmp eax, EFI_SUCCESS |
jnz .error |
mov rdi, BOOT_MEMMAP_BLOCK_CNT |
mov rdi, BOOT_LO.memmap_block_cnt |
mov dword[rdi], 0 |
mov rdi, BOOT_MEMMAP_BLOCKS |
mov rdi, BOOT_LO.memmap_blocks |
mov rax, [memory_map_size] |
xor edx, edx |
mov rcx, [descriptor_size] |
215,24 → 215,24 |
rep movsq |
xor esi, esi |
mov byte[esi + BOOT_BPP], 32 |
mov word[esi + BOOT_VESA_MODE], 0 |
mov dword[esi + BOOT_BANK_SW], 0 |
mov byte[esi + BOOT_LO.bpp], 32 |
mov word[esi + BOOT_LO.vesa_mode], 0 |
mov dword[esi + BOOT_LO.bank_switch], 0 |
mov rdi, [fb_base] |
mov dword[esi + BOOT_LFB], edi |
mov byte[esi + BOOT_MTRR], 1 |
mov byte[esi + BOOT_LAUNCHER_START], 1 |
mov byte[esi + BOOT_DEBUG_PRINT], 1 |
mov byte[esi + BOOT_DMA], 0 |
; mov qword[esi + BOOT_PCI_DATA], 0 |
mov dword[esi + BOOT_APM_ENTRY], 0 |
mov word[esi + BOOT_APM_VERSION], 0 |
mov dword[esi + BOOT_APM_FLAGS], 0 |
mov word[esi + BOOT_APM_CODE_32], 0 |
mov word[esi + BOOT_APM_CODE_16], 0 |
mov word[esi + BOOT_APM_DATA_16], 0 |
mov byte[esi + BOOT_BIOS_HD_CNT], 0 |
mov word[esi + BOOT_BX_FROM_LOAD], 'r1' ; boot from /rd/1 |
mov dword[esi + BOOT_LO.lfb], edi |
mov byte[esi + BOOT_LO.mtrr], 1 |
mov byte[esi + BOOT_LO.launcher_start], 1 |
mov byte[esi + BOOT_LO.debug_print], 1 |
mov byte[esi + BOOT_LO.dma], 0 |
; mov qword[esi + BOOT_LO.pci_data], 0 |
mov dword[esi + BOOT_LO.apm_entry], 0 |
mov word[esi + BOOT_LO.apm_version], 0 |
mov dword[esi + BOOT_LO.apm_flags], 0 |
mov word[esi + BOOT_LO.apm_code_32], 0 |
mov word[esi + BOOT_LO.apm_code_16], 0 |
mov word[esi + BOOT_LO.apm_data_16], 0 |
mov byte[esi + BOOT_LO.bios_hd_cnt], 0 |
mov word[esi + BOOT_LO.bx_from_load], 'r1' ; boot from /rd/1 |
lgdt [cs:GDTR] |
341,7 → 341,7 |
.done: |
mov [rdi + e820entry.type], eax |
mov rax, BOOT_MEMMAP_BLOCK_CNT |
mov rax, BOOT_LO.memmap_block_cnt |
inc word[rax] |
pop rdi rsi rdx rcx rbx rax |