Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4772 → Rev 4771

/kernel/trunk/kernel.asm
699,12 → 699,10
call PIT_init
 
; Register ramdisk file system
cmp [boot_dev+OS_BASE+0x10000], 1
je @f
mov esi, boot_initramdisk
call boot_log
call ramdisk_init
 
call register_ramdisk
;--------------------------------------
@@:
mov esi, boot_initapic
call boot_log
; Try to Initialize APIC
789,6 → 787,19
;-----------------------------------------------------------------------------
include 'detect/init_ata.inc'
;-----------------------------------------------------------------------------
mov esi, boot_init_sys
call boot_log
call Parser_params
 
if ~ defined extended_primary_loader
; ramdisk image should be loaded by extended primary loader if it exists
; READ RAMDISK IMAGE FROM HD
 
;!!!!!!!!!!!!!!!!!!!!!!!
include 'boot/rdload.inc'
;!!!!!!!!!!!!!!!!!!!!!!!
end if
 
if 0
mov ax, [OS_BASE+0x10000+bx_from_load]
cmp ax, 'r1'; if using not ram disk, then load librares and parameters {SPraid.simba}
/kernel/trunk/detect/init_ata.inc
140,10 → 140,6
cache_ide10 IDE_CACHE
cache_ide11 IDE_CACHE
;--------------------------------------
IDE_device_1 rd 2
IDE_device_2 rd 2
IDE_device_3 rd 2
;--------------------------------------
endg
;-----------------------------------------------------------------------------
; START of initialisation IDE ATA code
299,53 → 295,15
.check_DRIVE_DATA:
mov al, 0
mov ah, [ebx+DRIVE_DATA+1]
test ah, 10100000b ; check for ATAPI devices
test ah, 10100000b
jz @f
;--------------------------------------
.ch1_pio_set_ATAPI:
 
DEBUGF 1, "K : IDE CH1 PIO, because ATAPI drive present\n"
jmp .ch1_pio_set_for_all
;--------------------------------------
.ch1_pio_set_no_devices:
DEBUGF 1, "K : IDE CH1 PIO because no devices\n"
jmp .ch1_pio_set_for_all
;-------------------------------------
.ch1_pio_set:
DEBUGF 1, "K : IDE CH1 PIO because device not support UDMA\n"
;-------------------------------------
.ch1_pio_set_for_all:
mov [ecx+IDE_DATA.dma_hdd_channel_1], al
mov [ecx+IDE_DATA.dma_hdd_channel_1], byte 0
 
jmp .ch2_check
;--------------------------------------
@@:
xor ebx, ebx
call calculate_IDE_device_values_storage
 
test ah, 1010000b
jz .ch1_pio_set_no_devices
 
test ah, 1000000b
jz @f
 
cmp [ebx+IDE_DEVICE.UDMA_possible_modes], al
je .ch1_pio_set
 
cmp [ebx+IDE_DEVICE.UDMA_set_mode], al
je .ch1_pio_set
;--------------------------------------
@@:
test ah, 10000b
jz @f
 
add ebx, 2
 
cmp [ebx+IDE_DEVICE.UDMA_possible_modes], al
je .ch1_pio_set
 
cmp [ebx+IDE_DEVICE.UDMA_set_mode], al
je .ch1_pio_set
;--------------------------------------
@@:
mov dx, [ecx+IDE_DATA.BAR1_val] ;0x3F4
add dx, 2 ;0x3F6
out dx, al
353,53 → 311,15
mov [ecx+IDE_DATA.dma_hdd_channel_1], byte 1
;--------------------------------------
.ch2_check:
test ah, 1010b ; check for ATAPI devices
test ah, 1010b
jz @f
;--------------------------------------
.ch2_pio_set_ATAPI:
 
DEBUGF 1, "K : IDE CH2 PIO, because ATAPI drive present\n"
jmp .ch2_pio_set_for_all
;--------------------------------------
.ch2_pio_set_no_devices:
DEBUGF 1, "K : IDE CH2 PIO because no devices\n"
jmp .ch2_pio_set_for_all
;--------------------------------------
.ch2_pio_set:
DEBUGF 1, "K : IDE CH2 PIO because device not support UDMA\n"
;--------------------------------------
.ch2_pio_set_for_all:
mov [ecx+IDE_DATA.dma_hdd_channel_2], al
mov [ecx+IDE_DATA.dma_hdd_channel_2], byte 0
 
jmp .end_set_interrupts
;--------------------------------------
@@:
mov ebx, 4
call calculate_IDE_device_values_storage
 
test ah, 101b
jz .ch2_pio_set_no_devices
 
test ah, 100b
jz @f
 
cmp [ebx+IDE_DEVICE.UDMA_possible_modes], al
je .ch2_pio_set
 
cmp [ebx+IDE_DEVICE.UDMA_set_mode], al
je .ch2_pio_set
;--------------------------------------
@@:
test ah, 1b
jz @f
 
add ebx, 2
 
cmp [ebx+IDE_DEVICE.UDMA_possible_modes], al
je .ch2_pio_set
 
cmp [ebx+IDE_DEVICE.UDMA_set_mode], al
je .ch2_pio_set
;--------------------------------------
@@:
mov dx, [ecx+IDE_DATA.BAR3_val] ;0x374
add dx, 2 ;0x376
out dx, al
430,16 → 350,6
call boot_log
include 'sear_par.inc'
;-----------------------------------------------------------------------------
mov esi, boot_init_sys
call boot_log
call Parser_params
 
if ~ defined extended_primary_loader
; ramdisk image should be loaded by extended primary loader if it exists
; READ RAMDISK IMAGE FROM HD
include '../boot/rdload.inc'
end if
;-----------------------------------------------------------------------------
mov ecx, IDE_controller_1
mov [IDE_controller_pointer], ecx
call Init_IDE_ATA_controller_2
/kernel/trunk/detect/dev_hdcd.inc
65,9 → 65,9
FindHDD_1:
DEBUGF 1, "K : Channel %d ",[ChannelNumber]:2
DEBUGF 1, "Disk %d\n",[DiskNumber]:1
push ebx ecx
push ebx
call ReadHDD_ID
pop ecx ebx
pop ebx
cmp [DevErrorCode], 0
jne .FindCD
 
81,15 → 81,15
jmp .Print_Device_Name
;--------------------------------------
.FindCD:
push ebx ecx
push ebx
call DeviceReset
pop ecx ebx
pop ebx
cmp [DevErrorCode], 0
jne .end
 
push ebx ecx
push ebx
call ReadCD_ID
pop ecx ebx
pop ebx
cmp [DevErrorCode], 0
jne .end
 
98,22 → 98,10
.Print_Device_Name:
pushad
pushfd
 
xor ebx, ebx
mov bx, [ChannelNumber]
dec ebx
shl ebx, 1
add bl, [DiskNumber]
shl ebx, 1
 
call calculate_IDE_device_values_storage
;--------------------------------------
.copy_dev_name:
mov esi, Sector512+27*2
mov edi, dev_name
mov ecx, 20
cld
;--------------------------------------
@@:
lodsw
xchg ah, al
124,12 → 112,12
 
xor eax, eax
mov ax, [Sector512+64*2]
DEBUGF 1, "K : PIO possible modes %x\n", al
DEBUGF 1, "K : PIO mode possible modes %x\n", al
 
mov ax, [Sector512+51*2]
mov al, ah
call convert_Sector512_value
DEBUGF 1, "K : PIO set mode %x\n", ah
DEBUGF 1, "K : PIO mode set mode %x\n", ah
 
mov ax, [Sector512+63*2]
DEBUGF 1, "K : Multiword DMA possible modes %x\n", al
141,14 → 129,10
mov ax, [Sector512+88*2]
DEBUGF 1, "K : Ultra DMA possible modes %x\n", al
 
mov [ebx+IDE_DEVICE.UDMA_possible_modes], al
 
mov al, ah
call convert_Sector512_value
DEBUGF 1, "K : Ultra DMA set mode %x\n", ah
 
mov [ebx+IDE_DEVICE.UDMA_set_mode], ah
 
popfd
popad
ret
157,30 → 141,9
DEBUGF 1, "K : Device not found\n"
ret
;-----------------------------------------------------------------------------
calculate_IDE_device_values_storage:
cmp ecx, IDE_controller_1
jne @f
 
add ebx, IDE_device_1
jmp .exit
;--------------------------------------
@@:
cmp ecx, IDE_controller_2
jne @f
 
add ebx, IDE_device_2
jmp .exit
;--------------------------------------
@@:
add ebx, IDE_device_3
;--------------------------------------
.exit:
ret
;-----------------------------------------------------------------------------
convert_Sector512_value:
mov ecx, 8
xor ah, ah
;--------------------------------------
@@:
test al, 1b
jnz .end
190,7 → 153,6
loop @b
 
xor ah, ah
;--------------------------------------
.end:
ret
;-----------------------------------------------------------------------------
/kernel/trunk/kernel32.inc
178,11 → 178,6
appl_search_start dd ?
ends
 
struct IDE_DEVICE
UDMA_possible_modes db ?
UDMA_set_mode db ?
ends
 
; Core functions
include "core/sync.inc" ; macros for synhronization objects
include "core/sys32.inc" ; process management
/kernel/trunk/boot/rdload.inc
9,10 → 9,10
 
 
read_ramdisk:
; READ RAMDISK IMAGE FROM HD (only for IDE0, IDE1, IDE2, IDE3)
; READ RAMDISK IMAGE FROM HD
 
cmp [boot_dev+OS_BASE+0x10000], 1
jne no_sys_on_hd.1
jne no_sys_on_hd
 
xor ebp, ebp
.hd_loop:
69,19 → 69,9
jb .hd_loop
jmp no_sys_on_hd
.yes:
DEBUGF 1, "K : RD found: %s\n", read_image_fsinfo.name
pop edi esi eax
jmp yes_sys_on_hd
 
call register_ramdisk
jmp yes_sys_on_hd
;-----------------------------------------------------------------------------
; Register ramdisk file system
register_ramdisk:
mov esi, boot_initramdisk
call boot_log
call ramdisk_init
ret
;-----------------------------------------------------------------------------
iglobal
align 4
read_image_fsinfo:
89,7 → 79,7
dq 0 ; offset: zero
dd 1474560 ; size
dd RAMDISK ; buffer
.name db '/hd'
db '/hd'
.name_digit db '0'
db '/'
.partition:
109,8 → 99,6
ret
 
no_sys_on_hd:
DEBUGF 1, "K : RD not found\n"
.1:
; test_to_format_ram_disk (need if not using ram disk)
cmp [boot_dev+OS_BASE+0x10000], 3
jne not_format_ram_disk