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 |