; READ RAMDISK IMAGE FROM HD

        cmp   [boot_dev],1
        jne   no_sys_on_hd

        test  [0x40001],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 [0x40002]
        cmp   [fat32part],eax
        jle     position_1_1
  position_2:
        test  [0x40001],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 [0x40003]
        cmp   eax,[fat32part]
        jle     position_2_1
  position_3:
        test  [0x40001],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 [0x40004]
        cmp   eax,[fat32part]
        jle     position_3_1
  position_4:
        test  [0x40001],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 [0x40005]
        cmp   eax,[fat32part]
        jle     position_4_1
        jmp   yes_sys_on_hd

  search_and_read_image:
;        mov   [0xfe10],dword 0    ; entries in hd cache
        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
        mov   ebx, 1474560/512
        mov   ecx, 0x100000
        mov   esi, 0
        mov   edi, 12
        call  file_read
        ret    

image_retrieved  db 0      
counter_of_partitions db 0
no_sys_on_hd:
yes_sys_on_hd:
