Subversion Repositories Kolibri OS

Rev

Rev 1065 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1065 Rev 1132
Line 57... Line 57...
57
		dd	?	; BS_VolID
57
                dd      ?       ; BS_VolID
58
;		rb	11	; BS_VolLab
58
;               rb      11      ; BS_VolLab
59
;		rb	5	; BS_FilSysType, first 5 bytes
59
;               rb      5       ; BS_FilSysType, first 5 bytes
60
read_sectors32	dw	?
60
read_sectors32  dw      ?
61
read_sectors2	dw	?
61
read_sectors2   dw      ?
62
err		dw	?
62
err_             dw      ?
63
noloader	dw	?
63
noloader        dw      ?
64
cachelimit	dw	?
64
cachelimit      dw      ?
65
fatcachehead	rw	2
65
fatcachehead    rw      2
66
fatcacheend	dw	?
66
fatcacheend     dw      ?
67
		rb	3	; BS_FilSysType, last 3 bytes
67
                rb      3       ; BS_FilSysType, last 3 bytes
Line 85... Line 85...
85
 
85
 
86
	push	eax cx		; save our position on disk
86
        push    eax cx          ; save our position on disk
87
; determine version of bootsector (LBA vs CHS)
87
; determine version of bootsector (LBA vs CHS)
88
	mov	[read_sectors2], chs_read_sectors2
88
        mov     [read_sectors2], chs_read_sectors2
89
	mov	bx, chs_err
89
        mov     bx, chs_err
90
	mov	[err], bx
90
        mov     [err_], bx
91
;	mov	[noloader], chs_noloader
91
;       mov     [noloader], chs_noloader
92
	cmp	byte [bx], 0xE8		; [chs_err] = 0xE8 for CHS version, 0x14 for LBA version
92
        cmp     byte [bx], 0xE8         ; [chs_err] = 0xE8 for CHS version, 0x14 for LBA version
93
	jz	@f
93
        jz      @f
94
	add	[read_sectors2], lba_read_sectors2 - chs_read_sectors2
94
        add     [read_sectors2], lba_read_sectors2 - chs_read_sectors2
95
	add	[err], lba_err - chs_err
95
        add     [err_], lba_err - chs_err
96
;	mov	[noloader], lba_noloader
96
;       mov     [noloader], lba_noloader
97
@@:
97
@@:
98
	xor	bx, bx
98
        xor     bx, bx
99
; determine size of cache for folders
99
; determine size of cache for folders
100
	int	12h		; ax = size of available base memory in Kb
100
        int     12h             ; ax = size of available base memory in Kb
101
	sub	ax, 92000h / 1024
101
        sub     ax, 92000h / 1024
102
	jae	@f
102
        jae     @f
103
nomem:
103
nomem:
104
	mov	si, nomem_str
104
        mov     si, nomem_str
105
	jmp	[err]
105
        jmp     [err_]
106
@@:
106
@@:
107
	shr	ax, 3
107
        shr     ax, 3
108
	mov	[cachelimit], ax	; size of cache - 1
108
        mov     [cachelimit], ax        ; size of cache - 1
109
	mov	es, bx
109
        mov     es, bx
Line 139... Line 139...
139
	inc	eax
139
        inc     eax
140
	inc	eax		; eax = first cluster of kordldr.f32
140
        inc     eax             ; eax = first cluster of kordldr.f32
141
	call	get_next_cluster
141
        call    get_next_cluster
142
	jc	@f
142
        jc      @f
143
;	jmp	[noloader]
143
;       jmp     [noloader]
144
	mov	ax, [err]
144
        mov     ax, [err_]
145
	sub	ax, 3
145
        sub     ax, 3
146
	jmp	ax
146
        jmp     ax
147
@@:
147
@@:
148
	dec	eax
148
        dec     eax
149
	dec	eax
149
        dec     eax
Line 171... Line 171...
171
	pop	ds
171
        pop     ds
172
; ...continue loading...
172
; ...continue loading...
173
	mov	di, secondary_loader_info
173
        mov     di, secondary_loader_info
174
	call	load_file
174
        call    load_file
175
	test	bx, bx
175
        test    bx, bx
176
	mov	bx, [err]
176
        mov     bx, [err_]
177
	jz	@f
177
        jz      @f
178
	mov	si, aKernelNotFound
178
        mov     si, aKernelNotFound
179
	jmp	bx
179
        jmp     bx
180
@@:
180
@@:
181
; for subsequent calls to callback function, hook error handler
181
; for subsequent calls to callback function, hook error handler