Rev 5 | Rev 8 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5 | Rev 6 | ||
---|---|---|---|
Line 66... | Line 66... | ||
66 | 66 | ||
Line 67... | Line -... | ||
67 | gdte: |
- | |
68 | 67 | gdte: |
|
69 | 68 | ||
70 | 69 | ||
Line 71... | Line 70... | ||
71 | ; |
70 | |
72 | idtreg: |
71 | idtreg: |
Line 73... | Line -... | ||
73 | dw 8*0x41-1 |
- | |
Line 74... | Line -... | ||
74 | dd idts+8 |
- | |
75 | - | ||
76 | label idts at 0xB100-8 |
- | |
77 | ;idte = idts + 8 + 0x60 |
- | |
78 | - | ||
79 | ; ; old code below: |
- | |
80 | - | ||
81 | - | ||
82 | ;align 32 |
- | |
83 | - | ||
84 | ;idts: |
- | |
85 | ; dw idte-$-1 |
72 | dw 8*0x41-1 |
Line 86... | Line 73... | ||
86 | ; dd idts+8 |
73 | dd idts+8 |
87 | ; dw 0 |
74 | |
88 | 75 | label idts at 0xB100-8 |
|
Line 175... | Line 162... | ||
175 | mov esi,boot_sched_3_3 |
162 | mov esi,boot_sched_3_3 |
176 | call boot_log |
163 | call boot_log |
Line 177... | Line 164... | ||
177 | 164 | ||
178 | mov edi,0 |
165 | mov edi,0 |
179 | mov edx,tss0i |
166 | mov edx,tss0i |
180 | setidtl2: |
167 | @@: |
181 | mov [edi+idts+ 8 +0], word 0 |
168 | mov [edi+idts+ 8 +0], word 0 |
182 | mov [edi+idts+ 8 +2], dx |
169 | mov [edi+idts+ 8 +2], dx |
183 | mov [edi+idts+ 8 +4], word 10000101b*256 ; task gate DPL=0 |
- | |
184 | ; cmp edi,0x40*8 |
- | |
185 | ; jne no_sw_int |
- | |
186 | ; mov [edi+idts+ 8 +4], word 11100101b*256 ; task gate DPL=3 |
- | |
187 | ; no_sw_int: |
170 | mov [edi+idts+ 8 +4], word 10000101b*256 ; task gate DPL=0 |
188 | mov [edi+idts+ 8 +6], word 0 |
171 | mov [edi+idts+ 8 +6], word 0 |
189 | add edx,8 |
172 | add edx,8 |
Line 190... | Line 173... | ||
190 | add edi,8 |
173 | add edi,8 |
191 | 174 | ||
Line 192... | Line -... | ||
192 | cmp edi,8*0x40 ;0x60 |
- | |
193 | jbe setidtl2 ;jb |
- | |
194 | - | ||
195 | ; |
- | |
196 | ; THIS CODE WON'T WORK ;-( |
175 | cmp edi,8*0x40 |
197 | ; because each process's 0-level stack points to the same area |
- | |
198 | ; and if task switch occurs and another process is being interrupted |
- | |
199 | ; a stack overflow happens |
- | |
200 | ; The only way to solve that problem is to disable interrupts |
176 | jb @b |
201 | ; while 0x40-handler is working |
177 | |
202 | ; Then we have to make all entries in the IDT INTERRUPT gates, not TASK |
178 | ; Exceptions |
203 | ; mov edi, idts+8 |
179 | mov edi, idts+8 |
204 | ; mov esi, sys_int |
180 | mov esi, sys_int |
205 | ; mov ecx, 32 |
181 | mov ecx, 32 |
206 | ; @@: |
182 | @@: |
207 | ; mov eax, [esi] |
183 | mov eax, [esi] |
208 | ; mov [edi], ax ; lower part of offset |
184 | mov [edi], ax ; lower part of offset |
209 | ; mov [edi+2], word os_code ; segment selector |
185 | mov [edi+2], word os_code ; segment selector |
210 | ; shr eax, 16 |
186 | shr eax, 16 |
211 | ; mov [edi+4], word 10001110b shl 8 ; interrupt descriptor |
187 | mov [edi+4], word 10001110b shl 8 ; interrupt descriptor |
212 | ; mov [edi+6], ax |
188 | mov [edi+6], ax |
213 | ; add esi, 4 |
189 | add esi, 4 |
214 | ; add edi, 8 |
- | |
Line 215... | Line 190... | ||
215 | ; dec ecx |
190 | add edi, 8 |
Line 216... | Line 191... | ||
216 | ; jnz @b |
191 | dec ecx |
Line 228... | Line 203... | ||
228 | mov [edi + 6], word (i40 shr 16) |
203 | mov [edi + 6], word (i40 shr 16) |
Line 229... | Line 204... | ||
229 | 204 | ||
Line 230... | Line -... | ||
230 | ret |
- | |
231 | - | ||
232 | - | ||
233 | align 4 |
- | |
234 | i38: |
- | |
235 | ; load data selectors |
- | |
236 | pushfd |
- | |
237 | push ds es |
- | |
238 | push eax |
- | |
239 | mov ax, os_data |
- | |
240 | mov ds, ax |
- | |
241 | mov es, ax |
- | |
242 | pop eax |
- | |
243 | - | ||
244 | pushad |
- | |
245 | push edi |
- | |
246 | mov edi, eax |
- | |
247 | mov eax, ebx |
- | |
248 | mov ebx, ecx |
- | |
249 | mov ecx, edx |
- | |
250 | mov esi, [esp] |
- | |
251 | and edi, 0xFF |
- | |
252 | call dword [servetable+edi*4] |
- | |
253 | add esp, 4 |
- | |
254 | popad |
- | |
255 | pop es ds |
- | |
Line 256... | Line 205... | ||
256 | popfd |
205 | ret |
257 | iret |
206 | |
258 | 207 | ||
Line 309... | Line 258... | ||
309 | l.trap dw 0 |
258 | l.trap dw 0 |
310 | l.io dw 0 |
259 | l.io dw 0 |
311 | endg |
260 | endg |
Line 312... | Line 261... | ||
312 | 261 | ||
- | 262 | s0: |
|
- | 263 | mov ax, os_data |
|
313 | s0: |
264 | mov ds, ax |
Line 314... | Line 265... | ||
314 | cli |
265 | mov es, ax |
315 | 266 | ||
Line 316... | Line 267... | ||
316 | mov [error_interrupt],0x0 |
267 | mov [error_interrupt],0x0 |
Line 323... | Line 274... | ||
323 | 274 | ||
Line 324... | Line 275... | ||
324 | jmp change_task |
275 | jmp change_task |
- | 276 | ||
- | 277 | ||
325 | 278 | s1: |
|
Line 326... | Line 279... | ||
326 | 279 | mov ax, os_data |
|
327 | s1: |
280 | mov ds, ax |
Line 328... | Line 281... | ||
328 | cli |
281 | mov es, ax |
Line 336... | Line 289... | ||
336 | mov [edx+0xa],byte 4 |
289 | mov [edx+0xa],byte 4 |
Line 337... | Line 290... | ||
337 | 290 | ||
Line 338... | Line 291... | ||
338 | jmp change_task |
291 | jmp change_task |
- | 292 | ||
- | 293 | s2: |
|
339 | 294 | mov ax, os_data |
|
Line 340... | Line 295... | ||
340 | s2: |
295 | mov ds, ax |
341 | cli |
296 | mov es, ax |
Line 342... | Line 297... | ||
342 | 297 | ||
Line 349... | Line 304... | ||
349 | mov [edx+0xa],byte 4 |
304 | mov [edx+0xa],byte 4 |
Line 350... | Line 305... | ||
350 | 305 | ||
Line 351... | Line 306... | ||
351 | jmp change_task |
306 | jmp change_task |
- | 307 | ||
- | 308 | s3: |
|
352 | 309 | mov ax, os_data |
|
Line 353... | Line 310... | ||
353 | s3: |
310 | mov ds, ax |
354 | cli |
311 | mov es, ax |
Line 355... | Line 312... | ||
355 | 312 | ||
Line 362... | Line 319... | ||
362 | mov [edx+0xa],byte 4 |
319 | mov [edx+0xa],byte 4 |
Line 363... | Line 320... | ||
363 | 320 | ||
Line 364... | Line 321... | ||
364 | jmp change_task |
321 | jmp change_task |
- | 322 | ||
- | 323 | s4: |
|
365 | 324 | mov ax, os_data |
|
Line 366... | Line 325... | ||
366 | s4: |
325 | mov ds, ax |
367 | cli |
326 | mov es, ax |
Line 368... | Line 327... | ||
368 | 327 | ||
Line 375... | Line 334... | ||
375 | mov [edx+0xa],byte 4 |
334 | mov [edx+0xa],byte 4 |
Line 376... | Line 335... | ||
376 | 335 | ||
Line 377... | Line 336... | ||
377 | jmp change_task |
336 | jmp change_task |
- | 337 | ||
- | 338 | s5: |
|
378 | 339 | mov ax, os_data |
|
Line 379... | Line 340... | ||
379 | s5: |
340 | mov ds, ax |
380 | cli |
341 | mov es, ax |
Line 381... | Line 342... | ||
381 | 342 | ||
Line 388... | Line 349... | ||
388 | mov [edx+0xa],byte 4 |
349 | mov [edx+0xa],byte 4 |
Line 389... | Line 350... | ||
389 | 350 | ||
Line 390... | Line 351... | ||
390 | jmp change_task |
351 | jmp change_task |
- | 352 | ||
- | 353 | s6: |
|
391 | 354 | mov ax, os_data |
|
Line 392... | Line 355... | ||
392 | s6: |
355 | mov ds, ax |
393 | cli |
356 | mov es, ax |
Line 394... | Line 357... | ||
394 | 357 | ||
Line 407... | Line 370... | ||
407 | ;; FPU ERROR HANDLER ;; |
370 | ;; FPU ERROR HANDLER ;; |
408 | ;;;;;;;;;;;;;;;;;;;;;;; |
371 | ;;;;;;;;;;;;;;;;;;;;;;; |
Line 409... | Line 372... | ||
409 | 372 | ||
410 | align 4 |
373 | align 4 |
411 | s7: |
- | |
412 | ; |
374 | s7: |
413 | cli |
- | |
414 | ; |
- | |
415 | mov edi, 7*8 |
- | |
Line 416... | Line 375... | ||
416 | mov [edi+gdts+ tss0i +5], word 01010000b *256 +11101001b |
375 | clts |
417 | 376 | ||
418 | mov edi,[0x3000] |
- | |
Line -... | Line 377... | ||
- | 377 | push eax |
|
- | 378 | push ds es |
|
- | 379 | ||
Line 419... | Line -... | ||
419 | shl edi, 3 |
- | |
420 | mov [edi+gdts+ tss0 +5], word 01010000b *256 +11101001b |
380 | mov ax, os_data |
421 | 381 | mov ds, ax |
|
422 | 382 | mov es, ax |
|
423 | ; save a copy of current task's TSS to fpu_tss |
- | |
424 | mov esi,[0x3000] |
- | |
425 | imul esi,tss_step |
- | |
426 | add esi,tss_data |
383 | |
Line 427... | Line -... | ||
427 | mov edi,fpu_tss |
- | |
428 | mov ecx,120/4 |
384 | mov eax, [prev_user_of_fpu] |
429 | cld |
385 | shl eax, 8 |
430 | rep movsd |
386 | add eax, 0x80000 + 0x10 |
431 | - | ||
432 | ; get base address of our TSS and... |
387 | fsave [eax] |
433 | mov esi,[0x3000] |
- | |
434 | imul esi,tss_step |
388 | |
435 | add esi,tss_data |
389 | mov eax, [0x3000] |
436 | 390 | mov [prev_user_of_fpu], eax |
|
437 | ; ...init segments, stack, eip, flags |
391 | shl eax, 8 |
438 | mov word [esi+l.cs-tss_sceleton],int_code |
392 | add eax, 0x80000 |
439 | mov word [esi+l.ss-tss_sceleton],int_data |
- | |
440 | mov word [esi+l.ds-tss_sceleton],int_data |
- | |
441 | mov word [esi+l.es-tss_sceleton],int_data |
- | |
Line 442... | Line -... | ||
442 | mov word [esi+l.fs-tss_sceleton],int_data |
- | |
443 | mov word [esi+l.gs-tss_sceleton],int_data |
393 | cmp [eax + 0x7f], byte 0 |
444 | mov dword [esi+l.esp-tss_sceleton],fpu_stack+4*8 |
394 | je @f |
445 | mov dword [esi+l.eip-tss_sceleton],fpu_handler |
- | |
446 | mov dword [esi+l.eflags-tss_sceleton],0x11002 |
- | |
Line 447... | Line 395... | ||
447 | 395 | frstor [eax+0x10] |
|
- | 396 | @@: |
|
- | 397 | mov [eax + 0x7f], byte 1 |
|
- | 398 | ||
- | 399 | pop es ds |
|
Line 448... | Line -... | ||
448 | ; then execute this task |
- | |
Line 449... | Line 400... | ||
449 | mov ebx, [0x3000] |
400 | pop eax |
- | 401 | ||
- | 402 | iret |
|
- | 403 | ||
450 | shl ebx,3 |
404 | iglobal |
Line 451... | Line 405... | ||
451 | add ebx, tss0 ;t |
405 | prev_user_of_fpu dd 1 |
452 | mov [0xB004], bx |
406 | endg |
Line 453... | Line 407... | ||
453 | 407 | ||
Line 467... | Line 421... | ||
467 | mov [edx+0xa],byte 4 |
421 | mov [edx+0xa],byte 4 |
Line 468... | Line 422... | ||
468 | 422 | ||
Line 469... | Line 423... | ||
469 | jmp change_task |
423 | jmp change_task |
- | 424 | ||
- | 425 | s9: |
|
470 | 426 | mov ax, os_data |
|
Line 471... | Line 427... | ||
471 | s9: |
427 | mov ds, ax |
472 | cli |
428 | mov es, ax |
Line 473... | Line 429... | ||
473 | 429 | ||
Line 479... | Line 435... | ||
479 | mov edx,[0x3010] |
435 | mov edx,[0x3010] |
480 | mov [edx+0xa],byte 4 |
436 | mov [edx+0xa],byte 4 |
Line 481... | Line 437... | ||
481 | 437 | ||
Line -... | Line 438... | ||
- | 438 | jmp change_task |
|
482 | jmp change_task |
439 | |
- | 440 | ; Invalid TSS |
|
- | 441 | sa: |
|
- | 442 | add esp, 4 ; error code |
|
483 | 443 | mov ax, os_data |
|
Line 484... | Line 444... | ||
484 | sa: |
444 | mov ds, ax |
485 | cli |
445 | mov es, ax |
Line 486... | Line 446... | ||
486 | 446 | ||
Line 492... | Line 452... | ||
492 | mov edx,[0x3010] |
452 | mov edx,[0x3010] |
493 | mov [edx+0xa],byte 4 |
453 | mov [edx+0xa],byte 4 |
Line 494... | Line 454... | ||
494 | 454 | ||
Line -... | Line 455... | ||
- | 455 | jmp change_task |
|
495 | jmp change_task |
456 | |
- | 457 | ; Segment not present |
|
- | 458 | sb: |
|
- | 459 | add esp, 4 |
|
496 | 460 | mov ax, os_data |
|
Line 497... | Line 461... | ||
497 | sb: |
461 | mov ds, ax |
498 | cli |
462 | mov es, ax |
Line 499... | Line 463... | ||
499 | 463 | ||
Line 505... | Line 469... | ||
505 | mov edx,[0x3010] |
469 | mov edx,[0x3010] |
506 | mov [edx+0xa],byte 4 |
470 | mov [edx+0xa],byte 4 |
Line 507... | Line 471... | ||
507 | 471 | ||
Line -... | Line 472... | ||
- | 472 | jmp change_task |
|
508 | jmp change_task |
473 | |
- | 474 | ; Stack fault exception |
|
- | 475 | sc: |
|
- | 476 | add esp, 4 |
|
509 | 477 | mov ax, os_data |
|
Line 510... | Line 478... | ||
510 | sc: |
478 | mov ds, ax |
511 | cli |
479 | mov es, ax |
Line 512... | Line 480... | ||
512 | 480 | ||
Line 518... | Line 486... | ||
518 | mov edx,[0x3010] |
486 | mov edx,[0x3010] |
519 | mov [edx+0xa],byte 4 |
487 | mov [edx+0xa],byte 4 |
Line 520... | Line 488... | ||
520 | 488 | ||
Line -... | Line 489... | ||
- | 489 | jmp change_task |
|
521 | jmp change_task |
490 | |
- | 491 | ; General Protection Fault |
|
- | 492 | sd: |
|
- | 493 | add esp, 4 |
|
522 | 494 | mov ax, os_data |
|
Line 523... | Line 495... | ||
523 | sd: |
495 | mov ds, ax |
524 | cli |
496 | mov es, ax |
Line 525... | Line 497... | ||
525 | 497 | ||
Line 531... | Line 503... | ||
531 | mov edx,[0x3010] |
503 | mov edx,[0x3010] |
532 | mov [edx+0xa],byte 4 |
504 | mov [edx+0xa],byte 4 |
Line 533... | Line 505... | ||
533 | 505 | ||
Line -... | Line 506... | ||
- | 506 | jmp change_task |
|
534 | jmp change_task |
507 | |
- | 508 | ; Page-Fault Exception |
|
- | 509 | se: |
|
- | 510 | add esp, 4 |
|
535 | 511 | mov ax, os_data |
|
Line 536... | Line 512... | ||
536 | se: |
512 | mov ds, ax |
537 | cli |
513 | mov es, ax |
Line 538... | Line 514... | ||
538 | 514 | ||
Line 544... | Line 520... | ||
544 | mov edx,[0x3010] |
520 | mov edx,[0x3010] |
545 | mov [edx+0xa],byte 4 |
521 | mov [edx+0xa],byte 4 |
Line 546... | Line 522... | ||
546 | 522 | ||
Line -... | Line 523... | ||
- | 523 | jmp change_task |
|
547 | jmp change_task |
524 | |
- | 525 | ; ?? |
|
- | 526 | sf: |
|
548 | 527 | mov ax, os_data |
|
Line 549... | Line 528... | ||
549 | sf: |
528 | mov ds, ax |
550 | cli |
529 | mov es, ax |
Line 551... | Line 530... | ||
551 | 530 | ||
Line 557... | Line 536... | ||
557 | mov edx,[0x3010] |
536 | mov edx,[0x3010] |
558 | mov [edx+0xa],byte 4 |
537 | mov [edx+0xa],byte 4 |
Line 559... | Line 538... | ||
559 | 538 | ||
Line -... | Line 539... | ||
- | 539 | jmp change_task |
|
560 | jmp change_task |
540 | |
- | 541 | ; x87 FPU Floating-Point Error |
|
- | 542 | s10: |
|
561 | 543 | mov ax, os_data |
|
Line 562... | Line 544... | ||
562 | s10: |
544 | mov ds, ax |
563 | cli |
545 | mov es, ax |
Line 564... | Line 546... | ||
564 | 546 | ||
Line 570... | Line 552... | ||
570 | mov edx,[0x3010] |
552 | mov edx,[0x3010] |
571 | mov [edx+0xa],byte 4 |
553 | mov [edx+0xa],byte 4 |
Line 572... | Line 554... | ||
572 | 554 | ||
Line -... | Line 555... | ||
- | 555 | jmp change_task |
|
573 | jmp change_task |
556 | |
- | 557 | ; Alignment Check Exception |
|
- | 558 | s11: |
|
- | 559 | add esp, 4 |
|
574 | 560 | mov ax, os_data |
|
Line 575... | Line 561... | ||
575 | s11: |
561 | mov ds, ax |
576 | cli |
562 | mov es, ax |
Line 577... | Line 563... | ||
577 | 563 | ||
Line 583... | Line 569... | ||
583 | mov edx,[0x3010] |
569 | mov edx,[0x3010] |
584 | mov [edx+0xa],byte 4 |
570 | mov [edx+0xa],byte 4 |
Line 585... | Line 571... | ||
585 | 571 | ||
Line -... | Line 572... | ||
- | 572 | jmp change_task |
|
- | 573 | ||
- | 574 | ||
586 | jmp change_task |
575 | |
Line 587... | Line 576... | ||
587 | 576 | ||
Line 588... | Line 577... | ||
588 | writehex: |
577 | writehex: |
Line 677... | Line 666... | ||
677 | shl eax,7 |
666 | shl eax,7 |
678 | mov eax,[eax+0x298000+l.eip-tss_sceleton] |
667 | mov eax,[eax+0x298000+l.eip-tss_sceleton] |
679 | jmp .out_eip |
668 | jmp .out_eip |
Line 680... | Line -... | ||
680 | - | ||
Line 681... | Line -... | ||
681 | - | ||
682 | irq5: |
- | |
683 | - | ||
684 | call restore_caller |
- | |
685 | - | ||
Line 686... | Line -... | ||
686 | mov dx,word [sb16] |
- | |
687 | add dx,0xe |
- | |
688 | in al,dx |
- | |
689 | - | ||
690 | ; mov byte [SB16_Status],0 |
- | |
691 | - | ||
692 | mov [check_idle_semaphore],5 |
- | |
693 | 669 | ||
694 | mov al,0x20 |
- | |
695 | out 0x20,al |
- | |
696 | - | ||
697 | call return_to_caller |
- | |
698 | - | ||
699 | jmp irq5 |
- | |
700 | - | ||
701 | irqD: |
- | |
702 | - | ||
703 | call restore_caller |
- | |
704 | - | ||
705 | mov dx,0xf0 |
- | |
706 | mov al,0 |
- | |
707 | out dx,al |
- | |
708 | - | ||
709 | mov dx,0xa0 |
- | |
710 | mov al,0x20 |
- | |
711 | out dx,al |
- | |
712 | mov dx,0x20 |
- | |
713 | out dx,al |
- | |
714 | - | ||
715 | mov ds,cx |
- | |
716 | mov es,cx |
- | |
717 | mov fs,cx |
- | |
Line 718... | Line 670... | ||
718 | 670 | ||
Line 719... | Line 671... | ||
719 | call return_to_caller |
671 | |
Line 841... | Line 793... | ||
841 | 793 | ||
Line 842... | Line 794... | ||
842 | call return_to_caller |
794 | call return_to_caller |
Line 843... | Line 795... | ||
843 | 795 | ||
844 | jmp p_irq12 |
- | |
845 | 796 | jmp p_irq12 |
|
Line -... | Line 797... | ||
- | 797 | ||
846 | p_irq13: |
798 | irqD: |
- | 799 | call restore_caller |
|
- | 800 | ||
- | 801 | mov dx,0xf0 |
|
- | 802 | mov al,0 |
|
- | 803 | out dx,al |
|
- | 804 | ||
847 | 805 | mov dx,0xa0 |
|
Line 848... | Line 806... | ||
848 | call restore_caller |
806 | mov al,0x20 |
Line 849... | Line 807... | ||
849 | 807 | out dx,al |
|
- | 808 | mov dx,0x20 |
|
Line 850... | Line 809... | ||
850 | mov edi,13 |
809 | out dx,al |
Line 851... | Line 810... | ||
851 | call irqhandler |
810 | |
Line 975... | Line 934... | ||
975 | noa0: |
934 | noa0: |
Line 976... | Line 935... | ||
976 | 935 | ||
Line 977... | Line -... | ||
977 | ret |
- | |
978 | 936 | ret |
|
979 | 937 | ||
980 | ; this code should never get control! |
- | |
981 | ; applications can use only 0x40 interrupt |
938 | |
Line 982... | Line 939... | ||
982 | unknown_interrupt: |
939 | ; simply return control to interrupted process |
Line 1018... | Line 975... | ||
1018 | 975 | ||
Line 1019... | Line 976... | ||
1019 | pop eax |
976 | pop eax |
Line 1020... | Line -... | ||
1020 | - | ||
1021 | ret |
- | |
1022 | - | ||
1023 | uglobal |
- | |
1024 | old_code_0 dd 0x0 |
- | |
1025 | old_code_1 dd 0x0 |
- | |
1026 | - | ||
1027 | ; |
- | |
1028 | - | ||
1029 | new_code_0 dd 0x0 |
- | |
1030 | new_code_1 dd 0x0 |
- | |
1031 | - | ||
1032 | new_data_0 dd 0x0 |
- | |
1033 | new_data_1 dd 0x0 |
- | |
1034 | - | ||
Line 1035... | Line 977... | ||
1035 | new_pos dd 0x0 |
977 | |
1036 | new_amount dd 0x0 |
978 | ret |
1037 | endg |
979 | |
Line 1119... | Line 1061... | ||
1119 | 1061 | ||
1120 | start_application_hd: |
1062 | start_application_hd: |
Line 1121... | Line 1063... | ||
1121 | jmp new_start_application_hd |
1063 | jmp new_start_application_hd |
1122 | - | ||
1123 | uglobal |
1064 | |
1124 | ;threadstring dd 0x0 |
- | |
1125 | new_process_place dd 0x0 |
- | |
1126 | ;check_processes dd 0x0 |
1065 | uglobal |
1127 | ;dec3004 db 0x0 |
1066 | new_process_place dd 0x0 |
1128 | app_start dd 0x0 |
1067 | app_start dd 0x0 |
1129 | app_i_end dd 0x0 |
1068 | app_i_end dd 0x0 |
1130 | app_mem dd 0x0 |
1069 | app_mem dd 0x0 |
1131 | app_esp dd 0x0 |
1070 | app_esp dd 0x0 |
1132 | app_i_param dd 0x0 |
1071 | app_i_param dd 0x0 |
1133 | app_i_icon dd 0x0 |
- | |
1134 | app_mem_pos dd 0x0 |
- | |
1135 | ;thread_create dd 0x0 |
1072 | app_i_icon dd 0x0 |
1136 | ;gdt_place dd 0x0 |
1073 | app_mem_pos dd 0x0 |
1137 | appl_path dd 0x0 |
1074 | appl_path dd 0x0 |
Line 1138... | Line 1075... | ||
1138 | appl_path_size dd 0x0 |
1075 | appl_path_size dd 0x0 |
Line 1184... | Line 1121... | ||
1184 | call set_application_table_status |
1121 | call set_application_table_status |
Line 1185... | Line 1122... | ||
1185 | 1122 | ||
1186 | mov eax,esi |
1123 | mov eax,esi |
Line 1187... | Line -... | ||
1187 | call dispose_app_cr3_table |
- | |
1188 | - | ||
1189 | mov [first_gdt_search],0x2 ; start gdt search from beginning |
1124 | call dispose_app_cr3_table |
1190 | 1125 | ||
1191 | cmp [prev_user_of_fpu],esi ; if user fpu last -> fpu user = 1 |
1126 | cmp [prev_user_of_fpu],esi ; if user fpu last -> fpu user = 1 |
1192 | jne fpu_ok_1 |
1127 | jne fpu_ok_1 |
Line 1193... | Line 1128... | ||
1193 | mov [prev_user_of_fpu],1 |
1128 | mov [prev_user_of_fpu],1 |
1194 | fpu_ok_1: |
1129 | fpu_ok_1: |
Line 1195... | Line -... | ||
1195 | - | ||
1196 | mov [0xf400],byte 0 ; empty keyboard buffer |
- | |
1197 | mov [0xf500],byte 0 ; empty button buffer |
- | |
1198 | - | ||
1199 | ; mov ecx,esi ; clear memory reserv. |
- | |
1200 | ; shl ecx,3 |
- | |
1201 | ; mov [ecx+gdts+ app_code-3 +0],dword 0 |
- | |
1202 | ; mov [ecx+gdts+ app_code-3 +4],dword 0 |
- | |
1203 | ; mov [ecx+gdts+ app_data-3 +0],dword 0 |
- | |
1204 | ; mov [ecx+gdts+ app_data-3 +4],dword 0 |
- | |
1205 | - | ||
1206 | mov edi, esi |
- | |
Line 1207... | Line 1130... | ||
1207 | 1130 | ||
1208 | 1131 | mov [0xf400],byte 0 ; empty keyboard buffer |
|
1209 | mov [usedi40+eax],byte 0 |
1132 | mov [0xf500],byte 0 ; empty button buffer |
1210 | 1133 | ||
Line 1396... | Line 1319... | ||
1396 | 1319 | ||
Line 1397... | Line 1320... | ||
1397 | rmpr9: |
1320 | rmpr9: |
1398 | 1321 | ||
1399 | popa |
- | |
1400 | mov edi,esi ; do not run this process slot |
1322 | popa |
1401 | shl edi, 5 ;imul edi,0x20 |
1323 | mov edi,esi ; do not run this process slot |
1402 | ; add edi,0x3000 |
1324 | shl edi, 5 |
1403 | mov [edi+0x300A],byte 9 |
1325 | mov [edi+0x300A],byte 9 |
Line 1404... | Line 1326... | ||
1404 | ; call systest |
1326 | ; call systest |
Line 1441... | Line 1363... | ||
1441 | boot_sched_4 db 'Building syscall interrupt table',0 |
1363 | boot_sched_4 db 'Building syscall interrupt table',0 |
1442 | endg |
1364 | endg |
Line 1443... | Line 1365... | ||
1443 | 1365 | ||
1444 | - | ||
1445 | build_scheduler: |
- | |
1446 | ; { Ivan 06.03.2005 |
- | |
1447 | mov edi, usedi40 |
- | |
1448 | mov ecx, 256/4 |
- | |
1449 | xor eax, eax |
- | |
Line 1450... | Line 1366... | ||
1450 | rep stosd |
1366 | |
1451 | ; } Ivan 06.03.2005 |
1367 | build_scheduler: |
1452 | 1368 |