Subversion Repositories Kolibri OS

Rev

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