Rev 846 | Rev 848 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 846 | Rev 847 | ||
---|---|---|---|
Line 53... | Line 53... | ||
53 | ;; |
53 | ;; |
54 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
54 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 55... | Line 55... | ||
55 | 55 | ||
Line 56... | Line 56... | ||
56 | include 'macros.inc' |
56 | include 'macros.inc' |
Line 57... | Line 57... | ||
57 | 57 | ||
Line 58... | Line 58... | ||
58 | $Revision: 846 $ |
58 | $Revision: 847 $ |
Line 103... | Line 103... | ||
103 | ;; - Pci32.inc PCI functions |
103 | ;; - Pci32.inc PCI functions |
104 | ;; |
104 | ;; |
105 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
105 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 106... | Line -... | ||
106 | - | ||
107 | - | ||
108 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
109 | ;; ;; |
- | |
110 | ;; 16 BIT ENTRY FROM BOOTSECTOR ;; |
- | |
111 | ;; ;; |
- | |
112 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
106 | |
113 | 107 | ||
114 | use16 |
- | |
115 | org 0x0 |
- | |
116 | jmp start_of_code |
- | |
117 | - | ||
118 | version db 'Kolibri OS version 0.7.1.0 ',13,10,13,10,0 |
- | |
119 | - | ||
120 | include "boot/bootstr.inc" ; language-independent boot messages |
- | |
121 | include "boot/preboot.inc" |
- | |
122 | - | ||
123 | if lang eq en |
- | |
124 | include "boot/booteng.inc" ; english system boot messages |
- | |
125 | else if lang eq ru |
- | |
126 | include "boot/bootru.inc" ; russian system boot messages |
- | |
127 | include "boot/ru.inc" ; Russian font |
- | |
128 | else if lang eq et |
- | |
129 | include "boot/bootet.inc" ; estonian system boot messages |
- | |
130 | include "boot/et.inc" ; Estonian font |
- | |
131 | else |
- | |
Line -... | Line 108... | ||
- | 108 | use32 |
|
- | 109 | org 0x100000 |
|
- | 110 | ||
132 | include "boot/bootge.inc" ; german system boot messages |
111 | mboot: |
- | 112 | dd 0x1BADB002 |
|
133 | end if |
113 | dd 0x00010003 |
134 | 114 | dd -(0x1BADB002 + 0x00010003) |
|
- | 115 | dd mboot |
|
- | 116 | dd 0x100000 |
|
Line 135... | Line -... | ||
135 | include "boot/bootcode.inc" ; 16 bit system boot code |
- | |
136 | include "bus/pci/pci16.inc" |
- | |
137 | include "detect/biosdisk.inc" |
- | |
138 | - | ||
139 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
Line -... | Line 117... | ||
- | 117 | dd __edata - OS_BASE |
|
- | 118 | dd LAST_PAGE |
|
- | 119 | dd __start |
|
Line -... | Line 120... | ||
- | 120 | ||
- | 121 | ||
- | 122 | align 16 |
|
- | 123 | __start: |
|
- | 124 | cld |
|
- | 125 | ||
- | 126 | mov esp, __os_stack-OS_BASE |
|
- | 127 | push 0 |
|
- | 128 | popf |
|
- | 129 | ||
- | 130 | cmp eax, 0x2BADB002 |
|
- | 131 | mov ecx, sz_invboot |
|
- | 132 | jne .fault |
|
140 | ;; ;; |
133 | |
- | 134 | bt dword [ebx], 3 |
|
Line 141... | Line 135... | ||
141 | ;; SWITCH TO 32 BIT PROTECTED MODE ;; |
135 | mov ecx, sz_nomods |
Line -... | Line 136... | ||
- | 136 | jnc .fault |
|
- | 137 | ||
- | 138 | bt dword [ebx], 6 |
|
142 | ;; ;; |
139 | mov ecx, sz_nommap |
- | 140 | jnc .fault |
|
Line -... | Line 141... | ||
- | 141 | ||
- | 142 | mov [_boot_mbi-OS_BASE], ebx |
|
- | 143 | ||
- | 144 | xor eax, eax |
|
143 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
145 | cpuid |
Line 144... | Line -... | ||
144 | - | ||
145 | - | ||
146 | ; CR0 Flags - Protected mode and Paging |
- | |
147 | - | ||
148 | mov ecx, CR0_PE |
- | |
149 | - | ||
150 | ; Enabling 32 bit protected mode |
- | |
151 | - | ||
152 | sidt [cs:old_ints_h] |
146 | cmp eax, 0 |
153 | - | ||
154 | cli ; disable all irqs |
- | |
155 | cld |
- | |
156 | mov al,255 ; mask all irqs |
- | |
157 | out 0xa1,al |
- | |
158 | out 0x21,al |
- | |
159 | l.5: in al, 0x64 ; Enable A20 |
- | |
160 | test al, 2 |
- | |
161 | jnz l.5 |
- | |
162 | mov al, 0xD1 |
- | |
163 | out 0x64, al |
- | |
Line 164... | Line 147... | ||
164 | l.6: in al, 0x64 |
147 | mov ecx, sz_nopse |
- | 148 | jbe .fault |
|
165 | test al, 2 |
149 | |
- | 150 | mov eax, 1 |
|
166 | jnz l.6 |
151 | cpuid |
167 | mov al, 0xDF |
152 | bt edx, 3 |
168 | out 0x60, al |
153 | mov ecx, sz_nopse |
169 | l.7: in al, 0x64 |
- | |
Line 170... | Line -... | ||
170 | test al, 2 |
- | |
171 | jnz l.7 |
154 | jnc .fault |
- | 155 | ||
- | 156 | ; ENABLE PAGING |
|
Line 172... | Line -... | ||
172 | mov al, 0xFF |
- | |
173 | out 0x64, al |
157 | |
174 | - | ||
175 | lgdt [cs:tmp_gdt] ; Load GDT |
- | |
176 | mov eax, cr0 ; protected mode |
- | |
177 | or eax, ecx |
- | |
178 | and eax, 10011111b *65536*256 + 0xffffff ; caching enabled |
- | |
179 | mov cr0, eax |
158 | mov ecx, 32 |
180 | jmp pword os_code:B32 ; jmp to enable 32 bit mode |
- | |
181 | - | ||
182 | align 8 |
- | |
183 | tmp_gdt: |
- | |
184 | - | ||
185 | dw 23 |
159 | mov edi, _sys_pdbr+(OS_BASE shr 20)-OS_BASE |
186 | dd tmp_gdt+0x10000 |
160 | mov eax, PG_LARGE+PG_SW |
Line -... | Line 161... | ||
- | 161 | @@: |
|
- | 162 | stosd |
|
- | 163 | add eax, 4*1024*1024 |
|
- | 164 | loop @B |
|
- | 165 | ||
- | 166 | mov dword [_sys_pdbr-OS_BASE], PG_LARGE+PG_SW |
|
- | 167 | mov dword [_sys_pdbr-OS_BASE+4], PG_LARGE+PG_SW+4*1024*1024 |
|
- | 168 | mov dword [_sys_pdbr-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE |
|
- | 169 | ||
- | 170 | mov ebx, cr4 |
|
- | 171 | or ebx, CR4_PSE |
|
- | 172 | and ebx, not CR4_PAE |
|
- | 173 | mov cr4, ebx |
|
- | 174 | ||
- | 175 | mov eax, _sys_pdbr-OS_BASE |
|
- | 176 | mov ebx, cr0 |
|
- | 177 | or ebx,CR0_PG+CR0_WP |
|
- | 178 | ||
- | 179 | mov cr3, eax |
|
- | 180 | mov cr0, ebx |
|
- | 181 | ||
- | 182 | mov ebx, [_boot_mbi] |
|
- | 183 | ||
- | 184 | mov edx, [ebx+20] |
|
- | 185 | mov esi, [ebx+24] |
|
- | 186 | mov ecx, LAST_PAGE |
|
- | 187 | test edx, edx |
|
- | 188 | jz .no_mods |
|
- | 189 | .scan_mod: |
|
187 | dw 0 |
190 | mov ecx, [esi+4] |
- | 191 | add esi, 16 |
|
- | 192 | dec edx |
|
- | 193 | jnz .scan_mod |
|
- | 194 | ||
- | 195 | .no_mods: |
|
- | 196 | add ecx, 4095 |
|
- | 197 | and ecx, not 4095 |
|
- | 198 | ||
- | 199 | lgdt [gdts] |
|
- | 200 | jmp pword os_code:high_code |
|
- | 201 | ||
- | 202 | ||
- | 203 | .fault: |
|
- | 204 | ; push ecx |
|
- | 205 | ; call _lcls |
|
- | 206 | ; call __bprintf |
|
- | 207 | _hlt: |
|
Line 188... | Line -... | ||
188 | - | ||
189 | dw 0xffff |
- | |
Line 190... | Line -... | ||
190 | dw 0x0000 |
- | |
191 | db 0x00 |
- | |
192 | dw 11011111b *256 +10011010b |
- | |
193 | db 0x00 |
- | |
194 | - | ||
195 | dw 0xffff |
- | |
196 | dw 0x0000 |
- | |
197 | db 0x00 |
- | |
198 | dw 11011111b *256 +10010010b |
- | |
Line 199... | Line 208... | ||
199 | db 0x00 |
208 | hlt |
Line 200... | Line 209... | ||
200 | 209 | jmp _hlt |
|
201 | include "data16.inc" |
210 | |
202 | 211 | sz_invboot db 'Invalid multiboot loader magic value',0x0A |
|
203 | use32 |
212 | db 'Halted',0 |
204 | org $+0x10000 |
213 | |
Line 205... | Line 214... | ||
205 | 214 | sz_nomods db 'No modules loaded',0x0A |
|
206 | align 4 |
215 | db 'Halted',0 |
207 | B32: |
216 | |
Line 208... | Line 217... | ||
208 | mov ax,os_stack ; Selector for os |
217 | sz_nommap db 'No memory table', 0x0A |
209 | mov ds,ax |
218 | db 'Halted',0 |
210 | mov es,ax |
219 | |
211 | mov fs,ax |
220 | sz_nopse db 'Page size extensions not supported',0x0A |
Line 212... | Line 221... | ||
212 | mov gs,ax |
221 | db 'Halted',0 |
Line 213... | Line 222... | ||
213 | mov ss,ax |
222 | |
214 | mov esp,0x3ec00 ; Set stack |
223 | |
215 | 224 | ||
216 | ; CLEAR 0x280000 - HEAP_BASE |
225 | ; CLEAR 0x280000 - HEAP_BASE |
217 | 226 | ||
218 | xor eax,eax |
227 | ; xor eax,eax |
219 | mov edi,0x280000 |
228 | ; mov edi,0x280000 |
Line 220... | Line 229... | ||
220 | mov ecx,(0x800000-0x280000) / 4 |
229 | ; mov ecx,(0x800000-0x280000) / 4 |
221 | cld |
230 | ; cld |
Line 222... | Line 231... | ||
222 | rep stosd |
231 | ; rep stosd |
Line 223... | Line 232... | ||
223 | 232 | ||
224 | mov edi,0x40000 |
233 | ; mov edi,0x40000 |
Line 225... | Line 234... | ||
225 | mov ecx,(0x90000-0x40000)/4 |
234 | ; mov ecx,(0x90000-0x40000)/4 |
Line 259... | Line 268... | ||
259 | mov ebx, cr4 |
268 | mov ebx, cr4 |
260 | or ebx, CR4_PSE |
269 | or ebx, CR4_PSE |
261 | and ebx, not CR4_PAE |
270 | and ebx, not CR4_PAE |
262 | mov cr4, ebx |
271 | mov cr4, ebx |
Line 263... | Line -... | ||
263 | - | ||
Line 264... | Line 272... | ||
264 | ; ENABLE PAGING |
272 | |
265 | 273 | ||
266 | mov eax, sys_pgdir-OS_BASE |
274 | mov eax, sys_pgdir-OS_BASE |
Line 275... | Line 283... | ||
275 | 283 | ||
276 | align 4 |
284 | align 4 |
277 | bios32_entry dd ? |
285 | bios32_entry dd ? |
Line 278... | Line 286... | ||
278 | tmp_page_tabs dd ? |
286 | tmp_page_tabs dd ? |
279 | 287 | ||
280 | use16 |
288 | ;use16 |
281 | org $-0x10000 |
289 | ;org $-0x10000 |
282 | include "boot/shutdown.inc" ; shutdown or restart |
290 | ;include "boot/shutdown.inc" ; shutdown or restart |
Line 283... | Line 291... | ||
283 | org $+0x10000 |
291 | ;org $+0x10000 |
284 | use32 |
292 | ;use32 |
285 | - | ||
Line 286... | Line 293... | ||
286 | __DEBUG__ fix 1 |
293 | |
Line 287... | Line 294... | ||
287 | __DEBUG_LEVEL__ fix 1 |
294 | __DEBUG__ fix 1 |
288 | include 'init.inc' |
295 | __DEBUG_LEVEL__ fix 1 |
Line 295... | Line 302... | ||
295 | 302 | ||
296 | 303 | ||
Line -... | Line 304... | ||
- | 304 | include 'printf.inc' |
|
- | 305 | include 'core/mm.asm' |
|
- | 306 | ||
- | 307 | include 'core/init.asm' |
|
- | 308 | ||
- | 309 | align 4 |
|
- | 310 | proc test_cpu |
|
- | 311 | locals |
|
- | 312 | cpu_type dd ? |
|
- | 313 | cpu_id dd ? |
|
- | 314 | cpu_Intel dd ? |
|
- | 315 | cpu_AMD dd ? |
|
- | 316 | endl |
|
- | 317 | ||
- | 318 | mov [cpu_type], 0 |
|
- | 319 | xor eax, eax |
|
- | 320 | mov [cpu_caps], eax |
|
- | 321 | mov [cpu_caps+4], eax |
|
- | 322 | ||
- | 323 | pushfd |
|
- | 324 | pop eax |
|
- | 325 | mov ecx, eax |
|
- | 326 | xor eax, 0x40000 |
|
- | 327 | push eax |
|
- | 328 | popfd |
|
- | 329 | pushfd |
|
- | 330 | pop eax |
|
- | 331 | xor eax, ecx |
|
- | 332 | mov [cpu_type], CPU_386 |
|
- | 333 | jz .end_cpuid |
|
- | 334 | push ecx |
|
- | 335 | popfd |
|
- | 336 | ||
- | 337 | mov [cpu_type], CPU_486 |
|
- | 338 | mov eax, ecx |
|
- | 339 | xor eax, 0x200000 |
|
- | 340 | push eax |
|
- | 341 | popfd |
|
- | 342 | pushfd |
|
- | 343 | pop eax |
|
- | 344 | xor eax, ecx |
|
- | 345 | je .end_cpuid |
|
- | 346 | mov [cpu_id], 1 |
|
- | 347 | ||
- | 348 | xor eax, eax |
|
- | 349 | cpuid |
|
- | 350 | ||
- | 351 | mov [cpu_vendor], ebx |
|
- | 352 | mov [cpu_vendor+4], edx |
|
- | 353 | mov [cpu_vendor+8], ecx |
|
- | 354 | cmp ebx, dword [intel_str] |
|
- | 355 | jne .check_AMD |
|
- | 356 | cmp edx, dword [intel_str+4] |
|
- | 357 | jne .check_AMD |
|
- | 358 | cmp ecx, dword [intel_str+8] |
|
- | 359 | jne .check_AMD |
|
- | 360 | mov [cpu_Intel], 1 |
|
- | 361 | cmp eax, 1 |
|
- | 362 | jl .end_cpuid |
|
- | 363 | mov eax, 1 |
|
- | 364 | cpuid |
|
- | 365 | mov [cpu_sign], eax |
|
- | 366 | mov [cpu_info], ebx |
|
- | 367 | mov [cpu_caps], edx |
|
- | 368 | mov [cpu_caps+4],ecx |
|
- | 369 | ||
- | 370 | shr eax, 8 |
|
- | 371 | and eax, 0x0f |
|
- | 372 | ret |
|
- | 373 | .end_cpuid: |
|
- | 374 | mov eax, [cpu_type] |
|
- | 375 | ret |
|
- | 376 | ||
- | 377 | .check_AMD: |
|
- | 378 | cmp ebx, dword [AMD_str] |
|
- | 379 | jne .unknown |
|
- | 380 | cmp edx, dword [AMD_str+4] |
|
- | 381 | jne .unknown |
|
- | 382 | cmp ecx, dword [AMD_str+8] |
|
- | 383 | jne .unknown |
|
- | 384 | mov [cpu_AMD], 1 |
|
- | 385 | cmp eax, 1 |
|
- | 386 | jl .unknown |
|
- | 387 | mov eax, 1 |
|
- | 388 | cpuid |
|
- | 389 | mov [cpu_sign], eax |
|
- | 390 | mov [cpu_info], ebx |
|
- | 391 | mov [cpu_caps], edx |
|
- | 392 | mov [cpu_caps+4],ecx |
|
- | 393 | shr eax, 8 |
|
- | 394 | and eax, 0x0f |
|
- | 395 | ret |
|
- | 396 | .unknown: |
|
- | 397 | mov eax, 1 |
|
- | 398 | cpuid |
|
- | 399 | mov [cpu_sign], eax |
|
- | 400 | mov [cpu_info], ebx |
|
- | 401 | mov [cpu_caps], edx |
|
- | 402 | mov [cpu_caps+4],ecx |
|
- | 403 | shr eax, 8 |
|
Line 297... | Line 404... | ||
297 | include 'printf.inc' |
404 | and eax, 0x0f |
298 | include 'core/mm.asm' |
405 | ret |
299 | 406 | endp |
|
300 | 407 | ||
301 | align 4 |
408 | align 4 |
302 | high_code: |
409 | high_code: |
Line 303... | Line 410... | ||
303 | mov ax,os_stack |
410 | mov ax,os_stack |
304 | mov bx,app_data |
411 | mov dx,app_data |
305 | mov ss,ax |
412 | mov ss,ax |
306 | add esp, OS_BASE |
413 | mov esp, __os_stack |
Line -... | Line 414... | ||
- | 414 | ||
307 | 415 | mov ds, dx |
|
Line 308... | Line 416... | ||
308 | mov ds,bx |
416 | mov es, dx |
309 | mov es,bx |
- | |
Line 310... | Line 417... | ||
310 | mov fs,bx |
417 | mov fs, dx |
- | 418 | mov gs, dx |
|
Line 311... | Line -... | ||
311 | mov gs,bx |
- | |
312 | - | ||
313 | mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE |
- | |
314 | - | ||
315 | bt [cpu_caps], CAPS_PGE |
- | |
316 | jnc @F |
- | |
317 | 419 | ||
Line 318... | Line 420... | ||
318 | or dword [sys_pgdir-OS_BASE+(OS_BASE shr 20)], PG_GLOBAL |
420 | push ecx |
319 | 421 | push ebx |
|
- | 422 | ||
- | 423 | ; mov dword [sys_pgdir-OS_BASE+(page_tabs shr 20)], sys_pgdir+PG_SW-OS_BASE |
|
- | 424 | ||
- | 425 | ; bt [cpu_caps], CAPS_PGE |
|
- | 426 | ; jnc @F |
|
Line -... | Line 427... | ||
- | 427 | ||
- | 428 | ; or dword [sys_pgdir-OS_BASE+(OS_BASE shr 20)], PG_GLOBAL |
|
Line 320... | Line 429... | ||
320 | mov ebx, cr4 |
429 | |
321 | or ebx, CR4_PGE |
430 | ; mov ebx, cr4 |
322 | mov cr4, ebx |
431 | ; or ebx, CR4_PGE |
Line 323... | Line -... | ||
323 | @@: |
- | |
324 | xor eax, eax |
- | |
325 | mov dword [sys_pgdir], eax |
- | |
326 | mov dword [sys_pgdir+4], eax |
432 | ; mov cr4, ebx |
327 | - | ||
328 | mov eax, cr3 |
- | |
329 | mov cr3, eax ; flush TLB |
- | |
330 | - | ||
331 | - | ||
332 | mov edx, 0x3fB |
- | |
333 | mov eax, 3 |
- | |
334 | out dx, al |
- | |
335 | 433 | @@: |
|
336 | ; MEMORY MODEL |
- | |
337 | - | ||
338 | mov ecx, 1280*1024 |
- | |
Line 339... | Line 434... | ||
339 | fastcall _balloc |
434 | ; xor eax, eax |
340 | mov [_display_data], eax |
435 | ; mov dword [sys_pgdir], eax |
341 | 436 | ; mov dword [sys_pgdir+4], eax |
|
342 | mov ecx, (unpack.LZMA_BASE_SIZE+(unpack.LZMA_LIT_SIZE shl \ |
437 | |
343 | (unpack.lc+unpack.lp)))*4 |
438 | ; mov eax, cr3 |
344 | fastcall _balloc |
439 | ; mov cr3, eax ; flush TLB |
345 | mov [unpack.p], eax |
440 | |
346 | 441 | mov edx, 0x3fB |
|
Line 368... | Line 463... | ||
368 | rep stosd ; access to 4096*8=65536 ports |
463 | rep stosd ; access to 4096*8=65536 ports |
Line 369... | Line 464... | ||
369 | 464 | ||
370 | mov ax,tss0 |
465 | mov ax,tss0 |
Line -... | Line 466... | ||
- | 466 | ltr ax |
|
- | 467 | ||
- | 468 | xchg bx, bx |
|
- | 469 | ||
- | 470 | mov ecx, 1280*1024 |
|
- | 471 | fastcall _balloc |
|
- | 472 | mov [_display_data], eax |
|
- | 473 | ||
- | 474 | mov ecx, (unpack.LZMA_BASE_SIZE+(unpack.LZMA_LIT_SIZE shl \ |
|
- | 475 | (unpack.lc+unpack.lp)))*4 |
|
- | 476 | fastcall _balloc |
|
- | 477 | mov [unpack.p], eax |
|
- | 478 | ||
371 | ltr ax |
479 | ; MEMORY MODEL |
Line 372... | Line 480... | ||
372 | 480 | ||
373 | call init_kernel_heap ; FIXME initialize heap after pager |
481 | call init_kernel_heap ; FIXME initialize heap after pager |
Line -... | Line 482... | ||
- | 482 | ||
- | 483 | call _init_mm |
|
- | 484 | mov [pg_data.pg_mutex], 0 |
|
374 | 485 | ||
375 | call _init_mm |
486 | hlt |
376 | mov [pg_data.pg_mutex], 0 |
487 | |
377 | 488 | ||
Line 627... | Line 738... | ||
627 | ;include 'boot/rdload.inc' |
738 | ;include 'boot/rdload.inc' |
628 | ;!!!!!!!!!!!!!!!!!!!!!!! |
739 | ;!!!!!!!!!!!!!!!!!!!!!!! |
629 | ; mov [dma_hdd],1 |
740 | ; mov [dma_hdd],1 |
630 | ; CALCULATE FAT CHAIN FOR RAMDISK |
741 | ; CALCULATE FAT CHAIN FOR RAMDISK |
Line 631... | Line -... | ||
631 | - | ||
632 | mov [_rd_base], OS_BASE+0x100000 |
- | |
633 | mov [_rd_fat], OS_BASE+0x100000 + 512 |
- | |
634 | mov [_rd_fat_end], OS_BASE+0x100000 + 512 + 4278 |
- | |
635 | mov [_rd_root], OS_BASE+0x100000 + 512*19 |
- | |
Line 636... | Line 742... | ||
636 | mov [_rd_root_end], OS_BASE+0x100000 + 512*33 |
742 | |
Line 637... | Line 743... | ||
637 | 743 | ||
638 | call calculatefatchain |
744 | call calculatefatchain |
639 | 745 | ||
640 | 746 | ||
641 | mov ax,[OS_BASE+0x10000+bx_from_load] |
747 | ; mov ax,[OS_BASE+0x10000+bx_from_load] |
642 | cmp ax,'r1' ; if using not ram disk, then load librares and parameters {SPraid.simba} |
748 | ; cmp ax,'r1' ; if using not ram disk, then load librares and parameters {SPraid.simba} |
643 | je no_lib_load |
749 | ; je no_lib_load |
644 | ; LOADING LIBRARES |
750 | ; LOADING LIBRARES |
Line 645... | Line 751... | ||
645 | stdcall dll.Load,@IMPORT ; loading librares for kernel (.obj files) |
751 | ; stdcall dll.Load,@IMPORT ; loading librares for kernel (.obj files) |
Line 646... | Line 752... | ||
646 | call load_file_parse_table ; prepare file parse table |
752 | ; call load_file_parse_table ; prepare file parse table |
647 | call set_kernel_conf ; configure devices and gui |
753 | ; call set_kernel_conf ; configure devices and gui |
Line 716... | Line 822... | ||
716 | 822 | ||
Line 717... | Line 823... | ||
717 | ; name for OS/IDLE process |
823 | ; name for OS/IDLE process |
718 | 824 | ||
719 | mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
825 | mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
720 | mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
826 | mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
721 | mov edi, [os_stack_seg] |
827 | mov edi, __os_stack-8192+512 |
722 | mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
828 | mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
723 | add edi, 0x2000-512 |
829 | add edi, 0x2000-512 |
724 | mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi |
830 | mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi |
Line 826... | Line 932... | ||
826 | stdcall map_page,tss._io_map_0,\ |
932 | stdcall map_page,tss._io_map_0,\ |
827 | (tss._io_map_0-OS_BASE), PG_MAP |
933 | (tss._io_map_0-OS_BASE), PG_MAP |
828 | stdcall map_page,tss._io_map_1,\ |
934 | stdcall map_page,tss._io_map_1,\ |
829 | (tss._io_map_1-OS_BASE), PG_MAP |
935 | (tss._io_map_1-OS_BASE), PG_MAP |
Line 830... | Line 936... | ||
830 | 936 | ||
831 | mov ax,[OS_BASE+0x10000+bx_from_load] |
937 | ; mov ax,[OS_BASE+0x10000+bx_from_load] |
832 | cmp ax,'r1' ; if not rused ram disk - load network configuration from files {SPraid.simba} |
938 | ; cmp ax,'r1' ; if not rused ram disk - load network configuration from files {SPraid.simba} |
833 | je no_st_network |
939 | ; je no_st_network |
834 | call set_network_conf |
940 | ; call set_network_conf |
Line 835... | Line 941... | ||
835 | no_st_network: |
941 | ; no_st_network: |
836 | 942 | ||
Line 837... | Line 943... | ||
837 | ; LOAD FIRST APPLICATION |
943 | ; LOAD FIRST APPLICATION |
Line 889... | Line 995... | ||
889 | call set_lights |
995 | call set_lights |
890 | ;// mike.dld ] |
996 | ;// mike.dld ] |
Line 891... | Line 997... | ||
891 | 997 | ||
Line 892... | Line 998... | ||
892 | ; START MULTITASKING |
998 | ; START MULTITASKING |
893 | 999 | ||
894 | if preboot_blogesc |
1000 | ;if preboot_blogesc |
895 | mov esi, boot_tasking |
1001 | ; mov esi, boot_tasking |
896 | call boot_log |
1002 | ; call boot_log |
897 | .bll1: in al, 0x60 ; wait for ESC key press |
1003 | ;.bll1: in al, 0x60 ; wait for ESC key press |
898 | cmp al, 129 |
1004 | ; cmp al, 129 |
Line 899... | Line 1005... | ||
899 | jne .bll1 |
1005 | ; jne .bll1 |
Line 900... | Line 1006... | ||
900 | end if |
1006 | ;end if |
Line 5161... | Line 5267... | ||
5161 | xor ebx,ebx |
5267 | xor ebx,ebx |
5162 | or ecx,-1 |
5268 | or ecx,-1 |
5163 | mov edx, OS_BASE+0x70000 |
5269 | mov edx, OS_BASE+0x70000 |
5164 | call fileread |
5270 | call fileread |
Line 5165... | Line 5271... | ||
5165 | 5271 | ||
5166 | mov esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0 |
5272 | ; mov esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0 |
5167 | mov edi,OS_BASE+0x40000 |
5273 | ; mov edi,OS_BASE+0x40000 |
5168 | mov ecx,1000 |
5274 | ; mov ecx,1000 |
Line 5169... | Line 5275... | ||
5169 | rep movsb |
5275 | ; rep movsb |
5170 | 5276 | ||
5171 | mov esi,OS_BASE+0x2F0000 ; restore 0x0 - 0xffff |
5277 | mov esi,OS_BASE+0x2F0000 ; restore 0x0 - 0xffff |
5172 | mov edi, OS_BASE |
5278 | mov edi, OS_BASE |
Line 5179... | Line 5285... | ||
5179 | mov al, 0xFF |
5285 | mov al, 0xFF |
5180 | out 0x21, al |
5286 | out 0x21, al |
5181 | out 0xA1, al |
5287 | out 0xA1, al |
Line 5182... | Line 5288... | ||
5182 | 5288 | ||
5183 | if 1 |
5289 | if 1 |
5184 | mov word [OS_BASE+0x467+0],pr_mode_exit |
5290 | ; mov word [OS_BASE+0x467+0],pr_mode_exit |
Line 5185... | Line 5291... | ||
5185 | mov word [OS_BASE+0x467+2],0x1000 |
5291 | ; mov word [OS_BASE+0x467+2],0x1000 |
5186 | 5292 | ||
5187 | mov al,0x0F |
5293 | mov al,0x0F |
5188 | out 0x70,al |
5294 | out 0x70,al |
Line 5314... | Line 5420... | ||
5314 | __REV__ = __REV |
5420 | __REV__ = __REV |
Line 5315... | Line 5421... | ||
5315 | 5421 | ||
5316 | uglobals_size = $ - endofcode |
5422 | uglobals_size = $ - endofcode |
Line -... | Line 5423... | ||
- | 5423 | diff16 "end of kernel code",0,$ |
|
- | 5424 | ||
- | 5425 | align 16 |
|
- | 5426 |