kernel: removed unnecessary duplication of BOOT_VAR

git-svn-id: svn://kolibrios.org@3732 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2013-06-29 08:26:56 +00:00
parent 976e2d52bf
commit f03da1efd4
6 changed files with 215 additions and 222 deletions

View File

@ -101,17 +101,17 @@ pci_api_drv:
pci_fn_0: pci_fn_0:
; PCI function 0: get pci version (AH.AL) ; PCI function 0: get pci version (AH.AL)
movzx eax, word [BOOT_VAR+0x9022] movzx eax, word [BOOT_VARS+0x9022]
ret ret
pci_fn_1: pci_fn_1:
; PCI function 1: get last bus in AL ; PCI function 1: get last bus in AL
mov al, [BOOT_VAR+0x9021] mov al, [BOOT_VARS+0x9021]
ret ret
pci_fn_2: pci_fn_2:
; PCI function 2: get pci access mechanism ; PCI function 2: get pci access mechanism
mov al, [BOOT_VAR+0x9020] mov al, [BOOT_VARS+0x9020]
ret ret
pci_service_not_supported: pci_service_not_supported:
@ -156,7 +156,7 @@ align 4
pci_read_reg: pci_read_reg:
push ebx esi push ebx esi
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use? cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
je pci_read_reg_2 je pci_read_reg_2
; mechanism 1 ; mechanism 1
@ -287,7 +287,7 @@ align 4
pci_write_reg: pci_write_reg:
push esi ebx push esi ebx
cmp byte [BOOT_VAR+0x9020], 2;what mechanism will we use? cmp byte [BOOT_VARS+0x9020], 2;what mechanism will we use?
je pci_write_reg_2 je pci_write_reg_2
; mechanism 1 ; mechanism 1
@ -570,9 +570,9 @@ sys_pcibios:
cmp ebp, 1 ; PCI_FUNCTION_ID cmp ebp, 1 ; PCI_FUNCTION_ID
jnz .not_PCI_BIOS_PRESENT jnz .not_PCI_BIOS_PRESENT
mov edx, 'PCI ' mov edx, 'PCI '
mov al, [BOOT_VAR + 0x9020] mov al, [BOOT_VARS + 0x9020]
mov bx, [BOOT_VAR + 0x9022] mov bx, [BOOT_VARS + 0x9022]
mov cl, [BOOT_VAR + 0x9021] mov cl, [BOOT_VARS + 0x9021]
xor ah, ah xor ah, ah
jmp .return_abcd jmp .return_abcd
@ -715,7 +715,7 @@ end virtual
.next_func: .next_func:
inc dword [.devfn] inc dword [.devfn]
mov ah, [.bus] mov ah, [.bus]
cmp ah, [BOOT_VAR+0x9021] cmp ah, [BOOT_VARS+0x9021]
jbe .loop jbe .loop
.nomemory: .nomemory:
leave leave

View File

@ -192,8 +192,12 @@ TASK_BASE equ (OS_BASE+0x0003010)
TASK_DATA equ (OS_BASE+0x0003020) TASK_DATA equ (OS_BASE+0x0003020)
TASK_EVENT equ (OS_BASE+0x0003020) TASK_EVENT equ (OS_BASE+0x0003020)
CDDataBuf equ (OS_BASE+0x0007000) CDDataBuf equ (OS_BASE+0x0005000)
FLOPPY_BUFF equ (OS_BASE+0x0008000) ;18*512
;unused 0x6000 - 0x8fff
BOOT_VARS equ (OS_BASE) ;0x9000
idts equ (OS_BASE+0x000B100) idts equ (OS_BASE+0x000B100)
WIN_STACK equ (OS_BASE+0x000C000) WIN_STACK equ (OS_BASE+0x000C000)
WIN_POS equ (OS_BASE+0x000C400) WIN_POS equ (OS_BASE+0x000C400)
@ -222,33 +226,13 @@ SLOT_BASE equ (OS_BASE+0x0080000)
VGABasePtr equ (OS_BASE+0x00A0000) VGABasePtr equ (OS_BASE+0x00A0000)
;RAMDISK equ (OS_BASE+0x0100000)
;RAMDISK_FAT equ (OS_BASE+0x0280000)
;FLOPPY_FAT equ (OS_BASE+0x0282000)
;CLEAN_ZONE equ 0x284000
;IDE_DMA equ 0x284000
CLEAN_ZONE equ (_CLEAN_ZONE-OS_BASE) CLEAN_ZONE equ (_CLEAN_ZONE-OS_BASE)
IDE_DMA equ (_IDE_DMA-OS_BASE) IDE_DMA equ (_IDE_DMA-OS_BASE)
;BgrAuxTable equ (OS_BASE+0x0298000)
; unused? ; unused?
SB16Buffer equ (OS_BASE+0x02A0000) SB16Buffer equ (OS_BASE+0x02A0000)
SB16_Status equ (OS_BASE+0x02B0000) SB16_Status equ (OS_BASE+0x02B0000)
;BUTTON_INFO equ (OS_BASE+0x02B3FEE)
;BPSLine_calc_area equ (OS_BASE+0x02C4000)
;d_width_calc_area equ (OS_BASE+0x02CA000)
;RESERVED_PORTS equ (OS_BASE+0x02D0000)
;BOOT_VAR equ (OS_BASE+0x02E0000)
;draw_data equ (OS_BASE+0x0320000)
;sys_pgmap equ (OS_BASE+0x0324000)
UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000) UPPER_KERNEL_PAGES equ (OS_BASE+0x0400000)
virtual at (OS_BASE+0x05FFF80) virtual at (OS_BASE+0x05FFF80)

View File

@ -358,7 +358,7 @@ proc init_LFB
cmp dword [LFBAddress], -1 cmp dword [LFBAddress], -1
jne @f jne @f
mov [BOOT_VAR+BOOT_MTRR], byte 2 mov [BOOT_VARS+BOOT_MTRR], byte 2
; max VGA=640*480*4=1228800 bytes ; max VGA=640*480*4=1228800 bytes
; + 32*640*4=81920 bytes for mouse pointer ; + 32*640*4=81920 bytes for mouse pointer
stdcall alloc_pages, ((1228800+81920)/4096) stdcall alloc_pages, ((1228800+81920)/4096)
@ -378,7 +378,7 @@ proc init_LFB
@@: @@:
test [SCR_MODE], word 0100000000000000b test [SCR_MODE], word 0100000000000000b
jnz @f jnz @f
mov [BOOT_VAR+BOOT_MTRR], byte 2 mov [BOOT_VARS+BOOT_MTRR], byte 2
ret ret
@@: @@:
call init_mtrr call init_mtrr
@ -1361,7 +1361,7 @@ endp
align 4 align 4
proc init_mtrr proc init_mtrr
cmp [BOOT_VAR+BOOT_MTRR], byte 2 cmp [BOOT_VARS+BOOT_MTRR], byte 2
je .exit je .exit
bt [cpu_caps], CAPS_MTRR bt [cpu_caps], CAPS_MTRR

View File

@ -327,36 +327,36 @@ diff16 "end of .data segment",0,$
align 16 align 16
cur_saved_data: cur_saved_data:
rb 4096 rb 4096
fpu_data: fpu_data:
rb 512 rb 512
mem_block_list rd 64*2 mem_block_list rd 64*2
mem_used_list rd 64*2 mem_used_list rd 64*2
mem_hash_cnt rd 64 mem_hash_cnt rd 64
cpu_freq rq 1 cpu_freq rq 1
heap_mutex MUTEX heap_mutex MUTEX
heap_size rd 1 heap_size rd 1
heap_free rd 1 heap_free rd 1
heap_blocks rd 1 heap_blocks rd 1
free_blocks rd 1 free_blocks rd 1
mem_block_mask rd 2 mem_block_mask rd 2
next_memblock rd 1 next_memblock rd 1
mst MEM_STATE mst MEM_STATE
page_start rd 1 page_start rd 1
page_end rd 1 page_end rd 1
sys_page_map rd 1 sys_page_map rd 1
os_stack_seg rd 1 os_stack_seg rd 1
srv.fd rd 1 srv.fd rd 1
srv.bk rd 1 srv.bk rd 1
align 16 align 16
@ -382,6 +382,7 @@ end if
REDRAW_BACKGROUND rb 4 REDRAW_BACKGROUND rb 4
align 4
draw_data: rb 16*256 draw_data: rb 16*256
BPSLine_calc_area rd 1440 BPSLine_calc_area rd 1440
d_width_calc_area rd 1140 d_width_calc_area rd 1140
@ -402,6 +403,7 @@ MOUSE_COLOR_MEM rd 1
BTN_DOWN: rb 4 BTN_DOWN: rb 4
align 4
def_cursor rd 1 def_cursor rd 1
def_cursor_clock rd 1 def_cursor_clock rd 1
current_cursor rd 1 current_cursor rd 1
@ -416,138 +418,142 @@ cur.bottom rd 1
cur.w rd 1 cur.w rd 1
cur.h rd 1 cur.h rd 1
ipc_tmp rd 1 ipc_tmp rd 1
ipc_pdir rd 1 ipc_pdir rd 1
ipc_ptab rd 1 ipc_ptab rd 1
proc_mem_map rd 1 proc_mem_map rd 1
proc_mem_pdir rd 1 proc_mem_pdir rd 1
proc_mem_tab rd 1 proc_mem_tab rd 1
tmp_task_pdir rd 1 tmp_task_pdir rd 1
tmp_task_ptab rd 1 tmp_task_ptab rd 1
default_io_map rd 1 default_io_map rd 1
LFBSize rd 1 LFBSize rd 1
current_slot rd 1 current_slot rd 1
; status ; status
hd1_status rd 1 ; 0 - free : other - pid hd1_status rd 1 ; 0 - free : other - pid
application_table_owner rd 1 ; 0 - free : other - pid application_table_owner rd 1 ; 0 - free : other - pid
application_table_mutex MUTEX application_table_mutex MUTEX
; device addresses ; device addresses
mididp rd 1 mididp rd 1
midisp rd 1 midisp rd 1
cdbase rd 1 cdbase rd 1
cdid rd 1 cdid rd 1
hdbase rd 1 ; for boot 0x1f0 hdbase rd 1 ; for boot 0x1f0
hdid rd 1 hdid rd 1
hdpos rd 1 ; for boot 0x1 hdpos rd 1 ; for boot 0x1
label known_part dword label known_part dword
fat32part rd 1 ; for boot 0x1 fat32part rd 1 ; for boot 0x1
cdpos rd 1 cdpos rd 1
;CPUID information ;CPUID information
cpu_vendor rd 3 cpu_vendor rd 3
cpu_sign rd 1 cpu_sign rd 1
cpu_info rd 1 cpu_info rd 1
cpu_caps rd 4 cpu_caps rd 4
pg_data PG_DATA pg_data PG_DATA
heap_test rd 1 heap_test rd 1
buttontype rd 1 buttontype rd 1
windowtypechanged rd 1 windowtypechanged rd 1
hd_entries rd 1 ;unused ? 0xfe10 hd_entries rd 1 ;unused ? 0xfe10
mouse_active rd 1 mouse_active rd 1
mouse_pause rd 1 mouse_pause rd 1
redrawmouse_unconditional rd 1 redrawmouse_unconditional rd 1
img_background rd 1 img_background rd 1
mem_BACKGROUND rd 1 mem_BACKGROUND rd 1
static_background_data rd 1 static_background_data rd 1
BgrDrawMode rd 1 BgrDrawMode rd 1
BgrDataWidth rd 1 BgrDataWidth rd 1
BgrDataHeight rd 1 BgrDataHeight rd 1
skin_data rd 1 skin_data rd 1
cache_ide0: cache_ide0:
cache_ide0_pointer rd 1 cache_ide0_pointer rd 1
cache_ide0_size rd 1 ; not use cache_ide0_size rd 1 ; not use
cache_ide0_data_pointer rd 1 cache_ide0_data_pointer rd 1
cache_ide0_system_data_size rd 1 ; not use cache_ide0_system_data_size rd 1 ; not use
cache_ide0_appl_data_size rd 1 ; not use cache_ide0_appl_data_size rd 1 ; not use
cache_ide0_system_data rd 1 cache_ide0_system_data rd 1
cache_ide0_appl_data rd 1 cache_ide0_appl_data rd 1
cache_ide0_system_sad_size rd 1 cache_ide0_system_sad_size rd 1
cache_ide0_appl_sad_size rd 1 cache_ide0_appl_sad_size rd 1
cache_ide0_search_start rd 1 cache_ide0_search_start rd 1
cache_ide0_appl_search_start rd 1 cache_ide0_appl_search_start rd 1
cache_ide1: cache_ide1:
cache_ide1_pointer rd 1 cache_ide1_pointer rd 1
cache_ide1_size rd 1 ; not use cache_ide1_size rd 1 ; not use
cache_ide1_data_pointer rd 1 cache_ide1_data_pointer rd 1
cache_ide1_system_data_size rd 1 ; not use cache_ide1_system_data_size rd 1 ; not use
cache_ide1_appl_data_size rd 1 ; not use cache_ide1_appl_data_size rd 1 ; not use
cache_ide1_system_data rd 1 cache_ide1_system_data rd 1
cache_ide1_appl_data rd 1 cache_ide1_appl_data rd 1
cache_ide1_system_sad_size rd 1 cache_ide1_system_sad_size rd 1
cache_ide1_appl_sad_size rd 1 cache_ide1_appl_sad_size rd 1
cache_ide1_search_start rd 1 cache_ide1_search_start rd 1
cache_ide1_appl_search_start rd 1 cache_ide1_appl_search_start rd 1
cache_ide2: cache_ide2:
cache_ide2_pointer rd 1 cache_ide2_pointer rd 1
cache_ide2_size rd 1 ; not use cache_ide2_size rd 1 ; not use
cache_ide2_data_pointer rd 1 cache_ide2_data_pointer rd 1
cache_ide2_system_data_size rd 1 ; not use cache_ide2_system_data_size rd 1 ; not use
cache_ide2_appl_data_size rd 1 ; not use cache_ide2_appl_data_size rd 1 ; not use
cache_ide2_system_data rd 1 cache_ide2_system_data rd 1
cache_ide2_appl_data rd 1 cache_ide2_appl_data rd 1
cache_ide2_system_sad_size rd 1 cache_ide2_system_sad_size rd 1
cache_ide2_appl_sad_size rd 1 cache_ide2_appl_sad_size rd 1
cache_ide2_search_start rd 1 cache_ide2_search_start rd 1
cache_ide2_appl_search_start rd 1 cache_ide2_appl_search_start rd 1
cache_ide3: cache_ide3:
cache_ide3_pointer rd 1 cache_ide3_pointer rd 1
cache_ide3_size rd 1 ; not use cache_ide3_size rd 1 ; not use
cache_ide3_data_pointer rd 1 cache_ide3_data_pointer rd 1
cache_ide3_system_data_size rd 1 ; not use cache_ide3_system_data_size rd 1 ; not use
cache_ide3_appl_data_size rd 1 ; not use cache_ide3_appl_data_size rd 1 ; not use
cache_ide3_system_data rd 1 cache_ide3_system_data rd 1
cache_ide3_appl_data rd 1 cache_ide3_appl_data rd 1
cache_ide3_system_sad_size rd 1 cache_ide3_system_sad_size rd 1
cache_ide3_appl_sad_size rd 1 cache_ide3_appl_sad_size rd 1
cache_ide3_search_start rd 1 cache_ide3_search_start rd 1
cache_ide3_appl_search_start rd 1 cache_ide3_appl_search_start rd 1
debug_step_pointer rd 1 debug_step_pointer rd 1
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled lba_read_enabled rd 1 ; 0 = disabled , 1 = enabled
pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled pci_access_enabled rd 1 ; 0 = disabled , 1 = enabled
timer_ticks_enable rb 1 ; for cd driver
hdd_appl_data rb 1 ; 0 = system cache, 1 - application cache
cd_appl_data rb 1 ; 0 = system cache, 1 - application cache
timer_ticks_enable rb 1 ; for cd driver
align 4
NumBiosDisks rd 1
BiosDisksData rb 200h
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
BiosDiskPartitions rd 80h
NumBiosDisks rd 1
BiosDisksData rb 200h
BiosDiskCaches rb 80h*(cache_ide1-cache_ide0)
BiosDiskPartitions rd 80h
align 16 align 16
DRIVE_DATA: rb DRIVE_DATA_SIZE DRIVE_DATA: rb DRIVE_DATA_SIZE
IncludeUGlobals IncludeUGlobals
@ -559,16 +565,17 @@ end if
org (OS_BASE+0x0100000) org (OS_BASE+0x0100000)
RAMDISK: rb 2880*512 RAMDISK: rb 2880*512
RAMDISK_FAT: rb 2856*2 RAMDISK_FAT: rb 2856*2
FLOPPY_FAT: rb 2856*2 FLOPPY_FAT: rb 2856*2
_CLEAN_ZONE: _CLEAN_ZONE:
align 4096 align 4096
_IDE_DMA rb 16*512 _IDE_DMA rb 16*512
BgrAuxTable rb 32768 BgrAuxTable rb 32768
BUTTON_INFO rb 64*1024 BUTTON_INFO rb 64*1024
RESERVED_PORTS: rb 64*1024 RESERVED_PORTS: rb 64*1024
BOOT_VAR: rb 64*1024 FLOPPY_BUFF: rb 18*512 ;one track
sys_pgmap: rb 1024*1024/8
sys_pgmap: rb 1024*1024/8

View File

@ -15,7 +15,7 @@ MEM_UC equ 0 ;uncached memory
align 4 align 4
proc mem_test proc mem_test
; if we have BIOS with fn E820, skip the test ; if we have BIOS with fn E820, skip the test
cmp dword [BOOT_VAR-OS_BASE + 0x9100], 0 cmp dword [BOOT_VARS-OS_BASE + 0x9100], 0
jnz .ret jnz .ret
mov eax, cr0 mov eax, cr0
@ -35,12 +35,12 @@ proc mem_test
and eax, not (CR0_CD+CR0_NW) ;enable caching and eax, not (CR0_CD+CR0_NW) ;enable caching
mov cr0, eax mov cr0, eax
inc dword [BOOT_VAR-OS_BASE + 0x9100] inc dword [BOOT_VARS-OS_BASE + 0x9100]
xor eax, eax xor eax, eax
mov [BOOT_VAR-OS_BASE + 0x9104], eax mov [BOOT_VARS-OS_BASE + 0x9104], eax
mov [BOOT_VAR-OS_BASE + 0x9108], eax mov [BOOT_VARS-OS_BASE + 0x9108], eax
mov [BOOT_VAR-OS_BASE + 0x910C], edi mov [BOOT_VARS-OS_BASE + 0x910C], edi
mov [BOOT_VAR-OS_BASE + 0x9110], eax mov [BOOT_VARS-OS_BASE + 0x9110], eax
.ret: .ret:
ret ret
endp endp
@ -48,7 +48,7 @@ endp
align 4 align 4
proc init_mem proc init_mem
; calculate maximum allocatable address and number of allocatable pages ; calculate maximum allocatable address and number of allocatable pages
mov edi, BOOT_VAR-OS_BASE + 0x9104 mov edi, BOOT_VARS-OS_BASE + 0x9104
mov ecx, [edi-4] mov ecx, [edi-4]
xor esi, esi; esi will hold total amount of memory xor esi, esi; esi will hold total amount of memory
xor edx, edx; edx will hold maximum allocatable address xor edx, edx; edx will hold maximum allocatable address
@ -195,7 +195,7 @@ proc init_page_map
rep stosd rep stosd
; scan through memory map and mark free areas as available ; scan through memory map and mark free areas as available
mov ebx, BOOT_VAR-OS_BASE + 0x9104 mov ebx, BOOT_VARS-OS_BASE + 0x9104
mov edx, [ebx-4] mov edx, [ebx-4]
.scanmap: .scanmap:
cmp [ebx+16], byte 1 cmp [ebx+16], byte 1
@ -453,6 +453,9 @@ acpi_dev_data rd 1
acpi_dev_size rd 1 acpi_dev_size rd 1
acpi_rsdt_base rd 1 acpi_rsdt_base rd 1
acpi_fadt_base rd 1
acpi_dsdt_base rd 1
acpi_dsdt_size rd 1
acpi_madt_base rd 1 acpi_madt_base rd 1
acpi_ioapic_base rd 1 acpi_ioapic_base rd 1
@ -464,6 +467,7 @@ ACPI_HI_RSDP_WINDOW_START equ 0x000E0000
ACPI_HI_RSDP_WINDOW_END equ 0x00100000 ACPI_HI_RSDP_WINDOW_END equ 0x00100000
ACPI_RSDP_CHECKSUM_LENGTH equ 20 ACPI_RSDP_CHECKSUM_LENGTH equ 20
ACPI_MADT_SIGN equ 0x43495041 ACPI_MADT_SIGN equ 0x43495041
ACPI_FADT_SIGN equ 0x50434146
acpi_locate: acpi_locate:
@ -535,9 +539,22 @@ check_acpi:
jz .done jz .done
mov ecx, [eax+16] mov ecx, [eax+16]
mov edx, ACPI_MADT_SIGN mov edx, 0x50434146
mov [acpi_rsdt_base-OS_BASE], ecx mov [acpi_rsdt_base-OS_BASE], ecx
call rsdt_find call rsdt_find
mov [acpi_fadt_base-OS_BASE], eax
test eax, eax
jz @f
mov eax, [eax+40]
mov [acpi_dsdt_base-OS_BASE], eax
mov eax, [eax+4]
mov [acpi_dsdt_size-OS_BASE], eax
@@:
mov edx, ACPI_MADT_SIGN
mov ecx, [acpi_rsdt_base-OS_BASE]
call rsdt_find
test eax, eax test eax, eax
jz .done jz .done

View File

@ -265,12 +265,11 @@ B32:
; SAVE & CLEAR 0-0xffff ; SAVE & CLEAR 0-0xffff
xor esi, esi
mov edi, (BOOT_VAR-OS_BASE)
mov ecx, 0x10000 / 4
rep movsd
mov edi, 0x1000 mov edi, 0x1000
mov ecx, 0xf000 / 4 mov ecx, 0x8000 / 4
rep stosd
mov edi, 0xa000
mov ecx, 0x6000 / 4
rep stosd rep stosd
call test_cpu call test_cpu
@ -359,13 +358,13 @@ high_code:
; SAVE REAL MODE VARIABLES ; SAVE REAL MODE VARIABLES
xor eax, eax xor eax, eax
mov ax, [BOOT_VAR + BOOT_IDE_PI_16] mov ax, [BOOT_VARS + BOOT_IDE_PI_16]
mov [IDEContrProgrammingInterface], ax mov [IDEContrProgrammingInterface], ax
mov ax, [BOOT_VAR + BOOT_IDE_BASE_ADDR] mov ax, [BOOT_VARS + BOOT_IDE_BASE_ADDR]
mov [IDEContrRegsBaseAddr], ax mov [IDEContrRegsBaseAddr], ax
mov ax, [BOOT_VAR + BOOT_IDE_BAR0_16] mov ax, [BOOT_VARS + BOOT_IDE_BAR0_16]
mov [IDE_BAR0_val], ax mov [IDE_BAR0_val], ax
cmp ax, 0 cmp ax, 0
je @f je @f
cmp ax, 1 cmp ax, 1
@ -375,9 +374,9 @@ high_code:
mov [hd_address_table], eax mov [hd_address_table], eax
mov [hd_address_table+8], eax mov [hd_address_table+8], eax
@@: @@:
mov ax, [BOOT_VAR + BOOT_IDE_BAR1_16] mov ax, [BOOT_VARS + BOOT_IDE_BAR1_16]
mov [IDE_BAR1_val], ax mov [IDE_BAR1_val], ax
mov ax, [BOOT_VAR + BOOT_IDE_BAR2_16] mov ax, [BOOT_VARS + BOOT_IDE_BAR2_16]
mov [IDE_BAR2_val], ax mov [IDE_BAR2_val], ax
cmp ax, 0 cmp ax, 0
@ -389,18 +388,18 @@ high_code:
mov [hd_address_table+16], eax mov [hd_address_table+16], eax
mov [hd_address_table+24], eax mov [hd_address_table+24], eax
@@: @@:
mov ax, [BOOT_VAR + BOOT_IDE_BAR3_16] mov ax, [BOOT_VARS + BOOT_IDE_BAR3_16]
mov [IDE_BAR3_val], ax mov [IDE_BAR3_val], ax
; --------------- APM --------------------- ; --------------- APM ---------------------
; init selectors ; init selectors
mov ebx, [BOOT_VAR+BOOT_APM_ENTRY] ; offset of APM entry point mov ebx, [BOOT_VARS+BOOT_APM_ENTRY] ; offset of APM entry point
movzx eax, word [BOOT_VAR+BOOT_APM_CODE_32] ; real-mode segment base address of movzx eax, word [BOOT_VARS+BOOT_APM_CODE_32] ; real-mode segment base address of
; protected-mode 32-bit code segment ; protected-mode 32-bit code segment
movzx ecx, word [BOOT_VAR+BOOT_APM_CODE_16]; real-mode segment base address of movzx ecx, word [BOOT_VARS+BOOT_APM_CODE_16]; real-mode segment base address of
; protected-mode 16-bit code segment ; protected-mode 16-bit code segment
movzx edx, word [BOOT_VAR+BOOT_APM_DATA_16]; real-mode segment base address of movzx edx, word [BOOT_VARS+BOOT_APM_DATA_16]; real-mode segment base address of
; protected-mode 16-bit data segment ; protected-mode 16-bit data segment
shl eax, 4 shl eax, 4
@ -421,28 +420,28 @@ high_code:
mov dword[apm_entry], ebx mov dword[apm_entry], ebx
mov word [apm_entry + 4], apm_code_32 - gdts mov word [apm_entry + 4], apm_code_32 - gdts
mov eax, [BOOT_VAR + BOOT_APM_VERSION] ; version & flags mov eax, [BOOT_VARS + BOOT_APM_VERSION] ; version & flags
mov [apm_vf], eax mov [apm_vf], eax
; ----------------------------------------- ; -----------------------------------------
mov al, [BOOT_VAR+BOOT_DMA] ; DMA access mov al, [BOOT_VARS+BOOT_DMA] ; DMA access
mov [allow_dma_access], al mov [allow_dma_access], al
movzx eax, byte [BOOT_VAR+BOOT_BPP] ; bpp movzx eax, byte [BOOT_VARS+BOOT_BPP] ; bpp
mov [_display.bpp], eax mov [_display.bpp], eax
mov [_display.vrefresh], 60 mov [_display.vrefresh], 60
movzx eax, word [BOOT_VAR+BOOT_X_RES]; X max movzx eax, word [BOOT_VARS+BOOT_X_RES]; X max
mov [_display.width], eax mov [_display.width], eax
mov [display_width_standard], eax mov [display_width_standard], eax
dec eax dec eax
mov [Screen_Max_X], eax mov [Screen_Max_X], eax
mov [screen_workarea.right], eax mov [screen_workarea.right], eax
movzx eax, word [BOOT_VAR+BOOT_Y_RES]; Y max movzx eax, word [BOOT_VARS+BOOT_Y_RES]; Y max
mov [_display.height], eax mov [_display.height], eax
mov [display_height_standard], eax mov [display_height_standard], eax
dec eax dec eax
mov [Screen_Max_Y], eax mov [Screen_Max_Y], eax
mov [screen_workarea.bottom], eax mov [screen_workarea.bottom], eax
movzx eax, word [BOOT_VAR+BOOT_VESA_MODE] ; screen mode movzx eax, word [BOOT_VARS+BOOT_VESA_MODE] ; screen mode
mov dword [SCR_MODE], eax mov dword [SCR_MODE], eax
; mov eax, [BOOT_VAR+0x9014] ; Vesa 1.2 bnk sw add ; mov eax, [BOOT_VAR+0x9014] ; Vesa 1.2 bnk sw add
; mov [BANK_SWITCH], eax ; mov [BANK_SWITCH], eax
@ -451,7 +450,7 @@ high_code:
je @f je @f
cmp [SCR_MODE], word 0x12 ; VGA 640x480 cmp [SCR_MODE], word 0x12 ; VGA 640x480
je @f je @f
movzx eax, word[BOOT_VAR+BOOT_PITCH] ; for other modes movzx eax, word[BOOT_VARS+BOOT_PITCH] ; for other modes
@@: @@:
mov [_display.pitch], eax mov [_display.pitch], eax
mov eax, [_display.width] mov eax, [_display.width]
@ -464,7 +463,7 @@ high_code:
; equal to [_display.width] * [ScreenBPP] / 8 ; equal to [_display.width] * [ScreenBPP] / 8
call calculate_fast_getting_offset_for_LFB call calculate_fast_getting_offset_for_LFB
mov esi, BOOT_VAR+0x9080 mov esi, BOOT_VARS+0x9080
movzx ecx, byte [esi-1] movzx ecx, byte [esi-1]
mov [NumBiosDisks], ecx mov [NumBiosDisks], ecx
mov edi, BiosDisksData mov edi, BiosDisksData
@ -472,7 +471,7 @@ high_code:
; GRAPHICS ADDRESSES ; GRAPHICS ADDRESSES
mov eax, [BOOT_VAR+BOOT_LFB] mov eax, [BOOT_VARS+BOOT_LFB]
mov [LFBAddress], eax mov [LFBAddress], eax
cmp [SCR_MODE], word 0100000000000000b cmp [SCR_MODE], word 0100000000000000b
@ -917,22 +916,8 @@ end if
; LOAD FIRST APPLICATION ; LOAD FIRST APPLICATION
cli cli
; cmp byte [BOOT_VAR+0x9030],1
; jne no_load_vrr_m
; mov ebp, vrr_m
; call fs_execute_from_sysdir
;
;; cmp eax,2 ; if vrr_m app found (PID=2)
; sub eax,2
; jz first_app_found
;
;no_load_vrr_m:
mov ebp, firstapp mov ebp, firstapp
call fs_execute_from_sysdir call fs_execute_from_sysdir
; cmp eax,2 ; continue if a process has been loaded
test eax, eax test eax, eax
jns first_app_found jns first_app_found
@ -1066,17 +1051,17 @@ end if
cmp [IDEContrRegsBaseAddr], 0 cmp [IDEContrRegsBaseAddr], 0
setnz [dma_hdd] setnz [dma_hdd]
cmp [dma_hdd], 0 cmp [dma_hdd], 0
je .print_pio je .print_pio
.print_dma: .print_dma:
DEBUGF 1, "K : IDE DMA mode\n" DEBUGF 1, "K : IDE DMA mode\n"
jmp .continue jmp .continue
.print_pio: .print_pio:
DEBUGF 1, "K : IDE PIO mode\n" DEBUGF 1, "K : IDE PIO mode\n"
.continue: .continue:
mov [timer_ticks_enable], 1 ; for cd driver mov [timer_ticks_enable], 1 ; for cd driver
sti sti
@ -1284,10 +1269,10 @@ set_variables:
loop .fl60 loop .fl60
push eax push eax
mov ax, [BOOT_VAR+BOOT_Y_RES] mov ax, [BOOT_VARS+BOOT_Y_RES]
shr ax, 1 shr ax, 1
shl eax, 16 shl eax, 16
mov ax, [BOOT_VAR+BOOT_X_RES] mov ax, [BOOT_VARS+BOOT_X_RES]
shr ax, 1 shr ax, 1
mov [MOUSE_X], eax mov [MOUSE_X], eax
call wakeup_osloop call wakeup_osloop
@ -1683,7 +1668,7 @@ endg
cmp ecx, 1 cmp ecx, 1
jnz noprmahd jnz noprmahd
mov eax, [hd_address_table] mov eax, [hd_address_table]
mov [hdbase], eax ;0x1f0 mov [hdbase], eax ;0x1f0
and dword [hdid], 0x0 and dword [hdid], 0x0
mov dword [hdpos], ecx mov dword [hdpos], ecx
@ -2174,7 +2159,7 @@ sysfn_shutdown: ; 18.9 = system shutdown
jl exit_for_anyone jl exit_for_anyone
cmp ecx, 4 cmp ecx, 4
jg exit_for_anyone jg exit_for_anyone
mov [BOOT_VAR+0x9030], cl mov [BOOT_VARS+0x9030], cl
mov eax, [TASK_COUNT] mov eax, [TASK_COUNT]
mov [SYS_SHUTDOWN], al mov [SYS_SHUTDOWN], al
@ -5628,7 +5613,7 @@ undefined_syscall: ; Undefined system call
align 4 align 4
system_shutdown: ; shut down the system system_shutdown: ; shut down the system
cmp byte [BOOT_VAR+0x9030], 1 cmp byte [BOOT_VARS+0x9030], 1
jne @F jne @F
ret ret
@@: @@:
@ -5653,11 +5638,11 @@ if ~ defined extended_primary_loader
rep movsb rep movsb
end if end if
mov esi, BOOT_VAR ; restore 0x0 - 0xffff ; mov esi, BOOT_VAR ; restore 0x0 - 0xffff
mov edi, OS_BASE ; mov edi, OS_BASE
mov ecx, 0x10000/4 ; mov ecx, 0x10000/4
cld ; cld
rep movsd ; rep movsd
call restorefatchain call restorefatchain