Subversion Repositories Kolibri OS

Rev

Rev 1505 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
593 mikedld 8
$Revision: 1952 $
9
 
10
 
1 ha 11
; READ RAMDISK IMAGE FROM HD
12
 
1952 art_zh 13
	cmp   [boot_dev+OS_BASE+0x10000],1
14
;	jne   no_sys_on_hd
1 ha 15
 
1952 art_zh 16
	test  [DRIVE_DATA+1],byte 0x40
17
	jz    position_2
18
	mov   [hdbase],0x1f0
19
	mov   [hdid],0x0
20
	mov   [hdpos],1
21
	mov   [fat32part], 0
1 ha 22
  position_1_1:
1952 art_zh 23
	inc   [fat32part]
24
	call  search_and_read_image
25
	cmp   [image_retrieved],1
26
	je    yes_sys_on_hd
27
	movzx eax,byte [DRIVE_DATA+2]
28
	cmp   [fat32part],eax
29
	jle	position_1_1
1 ha 30
  position_2:
1952 art_zh 31
	test  [DRIVE_DATA+1],byte 0x10
32
	jz    position_3
33
	mov   [hdbase],0x1f0
34
	mov   [hdid],0x10
35
	mov   [hdpos],2
36
	mov   [fat32part],0
1 ha 37
  position_2_1:
1952 art_zh 38
	inc   [fat32part]
39
	call  search_and_read_image
40
	cmp   [image_retrieved],1
41
	je    yes_sys_on_hd
42
	movzx eax,byte [DRIVE_DATA+3]
43
	cmp   eax,[fat32part]
44
	jle	position_2_1
1 ha 45
  position_3:
1952 art_zh 46
	test  [DRIVE_DATA+1],byte 0x4
47
	jz    position_4
48
	mov   [hdbase],0x170
49
	mov   [hdid],0x0
50
	mov   [hdpos],3
51
	mov   [fat32part],0
1 ha 52
  position_3_1:
1952 art_zh 53
	inc   [fat32part]
54
	call  search_and_read_image
55
	cmp   [image_retrieved],1
56
	je    yes_sys_on_hd
57
	movzx eax,byte [DRIVE_DATA+4]
58
	cmp   eax,[fat32part]
59
	jle	position_3_1
1 ha 60
  position_4:
1952 art_zh 61
	test  [DRIVE_DATA+1],byte 0x1
62
	jz    no_sys_on_hd
63
	mov   [hdbase],0x170
64
	mov   [hdid],0x10
65
	mov   [hdpos],4
66
	mov   [fat32part],0
1 ha 67
  position_4_1:
1952 art_zh 68
	inc   [fat32part]
69
	call  search_and_read_image
70
	cmp   [image_retrieved],1
71
	je    yes_sys_on_hd
72
	movzx eax,byte [DRIVE_DATA+5]
73
	cmp   eax,[fat32part]
74
	jle	position_4_1
75
	jmp   yes_sys_on_hd
1 ha 76
 
77
  search_and_read_image:
1952 art_zh 78
	call  set_FAT32_variables
79
	mov   edx, bootpath
80
	call  read_image
81
	test  eax, eax
82
	jz   image_present
83
	mov   edx, bootpath2
84
	call  read_image
85
	test  eax, eax
86
	jz   image_present
87
	ret
1 ha 88
    image_present:
1952 art_zh 89
	mov   [image_retrieved],1
90
	ret
1 ha 91
 
92
read_image:
1952 art_zh 93
	mov   eax, hdsysimage+OS_BASE+0x10000
94
	mov   ebx, 1474560/512
95
	mov   ecx, RAMDISK
96
	mov   esi, 0
97
	mov   edi, 12
98
	call  file_read
99
	ret
1 ha 100
 
381 serge 101
image_retrieved  db 0
1 ha 102
counter_of_partitions db 0
103
no_sys_on_hd:
1952 art_zh 104
	; test_to_format_ram_disk (need if not using ram disk)
105
	cmp   [boot_dev+OS_BASE+0x10000],3
106
	jne not_format_ram_disk
107
	; format_ram_disk
108
	mov edi, RAMDISK
109
	mov ecx, 0x1080
110
	xor eax,eax
111
@@:
545 spraid 112
		stosd
1952 art_zh 113
	loop @b
545 spraid 114
 
1952 art_zh 115
	mov ecx, 0x58F7F
116
	mov eax,0xF6F6F6F6
117
@@:
545 spraid 118
		stosd
1952 art_zh 119
	loop @b
120
 
121
	mov [RAMDISK+0x200],dword 0xFFFFF0		; fat table
122
	mov [RAMDISK+0x4200],dword 0xFFFFF0
123
 
545 spraid 124
not_format_ram_disk:
1 ha 125
yes_sys_on_hd: