Subversion Repositories Kolibri OS

Rev

Rev 431 | Rev 545 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. $Revision: 465 $
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;;                                                              ;;
  4. ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
  5. ;; Distributed under terms of the GNU General Public License    ;;
  6. ;;                                                              ;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8.  
  9. ; READ RAMDISK IMAGE FROM HD
  10.  
  11.         cmp   [boot_dev+OS_BASE+0x10000],1
  12.         jne   no_sys_on_hd
  13.  
  14.         test  [DRIVE_DATA+1],byte 0x40
  15.         jz    position_2
  16.         mov   [hdbase],0x1f0
  17.         mov   [hdid],0x0
  18.         mov   [hdpos],1
  19.         mov   [fat32part],0
  20.   position_1_1:
  21.         inc   [fat32part]
  22.         call  search_and_read_image
  23.         cmp   [image_retrieved],1
  24.         je    yes_sys_on_hd
  25.         movzx eax,byte [DRIVE_DATA+2]
  26.         cmp   [fat32part],eax
  27.         jle     position_1_1
  28.   position_2:
  29.         test  [DRIVE_DATA+1],byte 0x10
  30.         jz    position_3
  31.         mov   [hdbase],0x1f0
  32.         mov   [hdid],0x10
  33.         mov   [hdpos],2
  34.         mov   [fat32part],0
  35.   position_2_1:
  36.         inc   [fat32part]
  37.         call  search_and_read_image
  38.         cmp   [image_retrieved],1
  39.         je    yes_sys_on_hd
  40.         movzx eax,byte [DRIVE_DATA+3]
  41.         cmp   eax,[fat32part]
  42.         jle     position_2_1
  43.   position_3:
  44.         test  [DRIVE_DATA+1],byte 0x4
  45.         jz    position_4
  46.         mov   [hdbase],0x170
  47.         mov   [hdid],0x0
  48.         mov   [hdpos],3
  49.         mov   [fat32part],0
  50.   position_3_1:
  51.         inc   [fat32part]
  52.         call  search_and_read_image
  53.         cmp   [image_retrieved],1
  54.         je    yes_sys_on_hd
  55.         movzx eax,byte [DRIVE_DATA+4]
  56.         cmp   eax,[fat32part]
  57.         jle     position_3_1
  58.   position_4:
  59.         test  [DRIVE_DATA+1],byte 0x1
  60.         jz    no_sys_on_hd
  61.         mov   [hdbase],0x170
  62.         mov   [hdid],0x10
  63.         mov   [hdpos],4
  64.         mov   [fat32part],0
  65.   position_4_1:
  66.         inc   [fat32part]
  67.         call  search_and_read_image
  68.         cmp   [image_retrieved],1
  69.         je    yes_sys_on_hd
  70.         movzx eax,byte [DRIVE_DATA+5]
  71.         cmp   eax,[fat32part]
  72.         jle     position_4_1
  73.         jmp   yes_sys_on_hd
  74.  
  75.   search_and_read_image:
  76.         call  set_FAT32_variables
  77.         mov   edx, bootpath
  78.         call  read_image
  79.         test  eax, eax
  80.         jz   image_present
  81.         mov   edx, bootpath2
  82.         call  read_image
  83.         test  eax, eax
  84.         jz   image_present
  85.         ret
  86.     image_present:
  87.         mov   [image_retrieved],1
  88.         ret
  89.  
  90. read_image:
  91.         mov   eax, hdsysimage+OS_BASE+0x10000
  92.         mov   ebx, 1474560/512
  93.         mov   ecx, RAMDISK
  94.         mov   esi, 0
  95.         mov   edi, 12
  96.         call  file_read
  97.         ret
  98.  
  99. image_retrieved  db 0
  100. counter_of_partitions db 0
  101. no_sys_on_hd:
  102. yes_sys_on_hd:
  103.