;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; ;; Distributed under terms of the GNU General Public License ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $Revision$ ; READ RAMDISK IMAGE FROM HD cmp [boot_dev+OS_BASE+0x10000],1 jne no_sys_on_hd test [DRIVE_DATA+1],byte 0x40 jz position_2 mov [hdbase],0x1f0 mov [hdid],0x0 mov [hdpos],1 mov [fat32part],0 position_1_1: inc [fat32part] call search_and_read_image cmp [image_retrieved],1 je yes_sys_on_hd movzx eax,byte [DRIVE_DATA+2] cmp [fat32part],eax jle position_1_1 position_2: test [DRIVE_DATA+1],byte 0x10 jz position_3 mov [hdbase],0x1f0 mov [hdid],0x10 mov [hdpos],2 mov [fat32part],0 position_2_1: inc [fat32part] call search_and_read_image cmp [image_retrieved],1 je yes_sys_on_hd movzx eax,byte [DRIVE_DATA+3] cmp eax,[fat32part] jle position_2_1 position_3: test [DRIVE_DATA+1],byte 0x4 jz position_4 mov [hdbase],0x170 mov [hdid],0x0 mov [hdpos],3 mov [fat32part],0 position_3_1: inc [fat32part] call search_and_read_image cmp [image_retrieved],1 je yes_sys_on_hd movzx eax,byte [DRIVE_DATA+4] cmp eax,[fat32part] jle position_3_1 position_4: test [DRIVE_DATA+1],byte 0x1 jz no_sys_on_hd mov [hdbase],0x170 mov [hdid],0x10 mov [hdpos],4 mov [fat32part],0 position_4_1: inc [fat32part] call search_and_read_image cmp [image_retrieved],1 je yes_sys_on_hd movzx eax,byte [DRIVE_DATA+5] cmp eax,[fat32part] jle position_4_1 jmp yes_sys_on_hd search_and_read_image: call set_FAT32_variables mov edx, bootpath call read_image test eax, eax jz image_present mov edx, bootpath2 call read_image test eax, eax jz image_present ret image_present: mov [image_retrieved],1 ret read_image: mov eax, hdsysimage+OS_BASE+0x10000 mov ebx, 1474560/512 mov ecx, RAMDISK mov esi, 0 mov edi, 12 call file_read ret image_retrieved db 0 counter_of_partitions db 0 no_sys_on_hd: ; test_to_format_ram_disk (need if not using ram disk) cmp [boot_dev+OS_BASE+0x10000],3 jne not_format_ram_disk ; format_ram_disk mov edi, RAMDISK mov ecx, 0x1080 xor eax,eax @@: stosd loop @b mov ecx, 0x58F7F mov eax,0xF6F6F6F6 @@: stosd loop @b mov [RAMDISK+0x200],dword 0xFFFFF0 ; fat table mov [RAMDISK+0x4200],dword 0xFFFFF0 not_format_ram_disk: yes_sys_on_hd: