Subversion Repositories Kolibri OS

Rev

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

Rev 3287 Rev 3296
Line 67... Line 67...
67
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
67
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 68... Line 68...
68
 
68
 
69
include 'macros.inc'
69
include 'macros.inc'
Line 70... Line 70...
70
include 'struct.inc'
70
include 'struct.inc'
Line 71... Line 71...
71
 
71
 
Line 72... Line 72...
72
$Revision: 3287 $
72
$Revision: 3296 $
Line 610... Line 610...
610
        mov     [BgrDataWidth], eax
610
        mov     [BgrDataWidth], eax
611
        mov     [BgrDataHeight], eax
611
        mov     [BgrDataHeight], eax
612
        mov     [mem_BACKGROUND], 4
612
        mov     [mem_BACKGROUND], 4
613
        mov     [img_background], static_background_data
613
        mov     [img_background], static_background_data
Line -... Line 614...
-
 
614
 
-
 
615
; SET UP OS TASK
-
 
616
 
-
 
617
        mov     esi, boot_setostask
-
 
618
        call    boot_log
-
 
619
 
-
 
620
        xor     eax, eax
-
 
621
        mov     dword [SLOT_BASE+APPDATA.fpu_state], fpu_data
-
 
622
        mov     dword [SLOT_BASE+APPDATA.exc_handler], eax
-
 
623
        mov     dword [SLOT_BASE+APPDATA.except_mask], eax
-
 
624
 
-
 
625
        ; name for OS/IDLE process
-
 
626
 
-
 
627
        mov     dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I'
-
 
628
        mov     dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
-
 
629
        mov     edi, [os_stack_seg]
-
 
630
        mov     dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
-
 
631
        add     edi, 0x2000-512
-
 
632
        mov     dword [SLOT_BASE+256+APPDATA.fpu_state], edi
-
 
633
        mov     dword [SLOT_BASE+256+APPDATA.saved_esp0], edi; just for case
-
 
634
        mov     dword [SLOT_BASE+256+APPDATA.terminate_protection], 80000001h
-
 
635
 
-
 
636
        mov     esi, fpu_data
-
 
637
        mov     ecx, 512/4
-
 
638
        cld
-
 
639
        rep movsd
-
 
640
 
-
 
641
        mov     dword [SLOT_BASE+256+APPDATA.exc_handler], eax
-
 
642
        mov     dword [SLOT_BASE+256+APPDATA.except_mask], eax
-
 
643
 
-
 
644
        mov     ebx, SLOT_BASE+256+APP_OBJ_OFFSET
-
 
645
        mov     dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
-
 
646
        mov     dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
-
 
647
 
-
 
648
        mov     dword [SLOT_BASE+256+APPDATA.cur_dir], sysdir_path
-
 
649
        mov     dword [SLOT_BASE+256+APPDATA.tls_base], eax
-
 
650
 
-
 
651
        ; task list
-
 
652
        mov     dword [TASK_DATA+TASKDATA.mem_start], eax; process base address
-
 
653
        inc     eax
-
 
654
        mov     dword [CURRENT_TASK], eax
-
 
655
        mov     dword [TASK_COUNT], eax
-
 
656
        mov     [current_slot], SLOT_BASE+256
-
 
657
        mov     [TASK_BASE], dword TASK_DATA
-
 
658
        mov     byte[TASK_DATA+TASKDATA.wnd_number], al ; on screen number
-
 
659
        mov     dword [TASK_DATA+TASKDATA.pid], eax     ; process id number
614
 
660
 
Line 615... Line 661...
615
        mov     [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
661
        mov     [SLOT_BASE + 256 + APPDATA.dir_table], sys_pgdir - OS_BASE
616
 
662
 
617
        stdcall kernel_alloc, 0x10000/8
663
        stdcall kernel_alloc, 0x10000/8
Line 750... Line 796...
750
;        mov     esi, boot_devices
796
;        mov     esi, boot_devices
751
;        call    boot_log
797
;        call    boot_log
Line 752... Line 798...
752
 
798
 
Line 753... Line -...
753
        mov     [pci_access_enabled], 1
-
 
754
 
799
        mov     [pci_access_enabled], 1
Line 755... Line 800...
755
 
800
 
756
; SET PRELIMINARY WINDOW STACK AND POSITIONS
801
; SET PRELIMINARY WINDOW STACK AND POSITIONS
757
 
802
 
Line 770... Line 815...
770
 
815
 
771
        mov     esi, boot_resirqports
816
        mov     esi, boot_resirqports
772
        call    boot_log
817
        call    boot_log
Line 773... Line -...
773
        call    reserve_irqs_ports
-
 
774
 
-
 
775
; SET UP OS TASK
-
 
776
 
-
 
777
        mov     esi, boot_setostask
-
 
778
        call    boot_log
-
 
779
 
-
 
780
        xor     eax, eax
-
 
781
        mov     dword [SLOT_BASE+APPDATA.fpu_state], fpu_data
-
 
782
        mov     dword [SLOT_BASE+APPDATA.exc_handler], eax
-
 
783
        mov     dword [SLOT_BASE+APPDATA.except_mask], eax
-
 
784
 
-
 
785
        ; name for OS/IDLE process
-
 
786
 
-
 
787
        mov     dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I'
-
 
788
        mov     dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
-
 
789
        mov     edi, [os_stack_seg]
-
 
790
        mov     dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
-
 
791
        add     edi, 0x2000-512
-
 
792
        mov     dword [SLOT_BASE+256+APPDATA.fpu_state], edi
-
 
793
        mov     dword [SLOT_BASE+256+APPDATA.saved_esp0], edi; just for case
-
 
794
        ; [SLOT_BASE+256+APPDATA.io_map] was set earlier
-
 
795
 
-
 
796
        mov     esi, fpu_data
-
 
797
        mov     ecx, 512/4
-
 
798
        cld
-
 
799
        rep movsd
-
 
800
 
-
 
801
        mov     dword [SLOT_BASE+256+APPDATA.exc_handler], eax
-
 
802
        mov     dword [SLOT_BASE+256+APPDATA.except_mask], eax
-
 
803
 
-
 
804
        mov     ebx, SLOT_BASE+256+APP_OBJ_OFFSET
-
 
805
        mov     dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
-
 
806
        mov     dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
-
 
807
 
-
 
808
        mov     dword [SLOT_BASE+256+APPDATA.cur_dir], sysdir_path
-
 
809
        mov     dword [SLOT_BASE+256+APPDATA.tls_base], eax
-
 
810
 
-
 
811
        ; task list
-
 
812
        mov     dword [TASK_DATA+TASKDATA.mem_start], eax; process base address
-
 
813
        inc     eax
-
 
814
        mov     dword [CURRENT_TASK], eax
-
 
815
        mov     dword [TASK_COUNT], eax
-
 
816
        mov     [current_slot], SLOT_BASE+256
-
 
817
        mov     [TASK_BASE], dword TASK_DATA
-
 
818
        mov     byte[TASK_DATA+TASKDATA.wnd_number], al ; on screen number
-
 
819
        mov     dword [TASK_DATA+TASKDATA.pid], eax     ; process id number
818
        call    reserve_irqs_ports
820
 
819
 
821
        call    init_display
820
        call    init_display
822
        mov     eax, [def_cursor]
821
        mov     eax, [def_cursor]
Line 929... Line 928...
929
 
928
 
930
        mov     ebp, firstapp
929
        mov     ebp, firstapp
Line 931... Line 930...
931
        call    fs_execute_from_sysdir
930
        call    fs_execute_from_sysdir
932
 
931
 
933
;        cmp   eax,2                  ; continue if a process has been loaded
932
;        cmp   eax,2                  ; continue if a process has been loaded
Line 934... Line 933...
934
        sub     eax, 2
933
        test    eax, eax
935
        jz      first_app_found
934
        jns     first_app_found
Line 936... Line 935...
936
 
935
 
Line 2108... Line 2107...
2108
        shl     ecx, 5
2107
        shl     ecx, 5
2109
        mov     edx, [ecx+CURRENT_TASK+TASKDATA.pid]
2108
        mov     edx, [ecx+CURRENT_TASK+TASKDATA.pid]
2110
        add     ecx, CURRENT_TASK+TASKDATA.state
2109
        add     ecx, CURRENT_TASK+TASKDATA.state
2111
        cmp     byte [ecx], 9
2110
        cmp     byte [ecx], 9
2112
        jz      noprocessterminate
2111
        jz      noprocessterminate
-
 
2112
        push    ecx edx
-
 
2113
        lea     edx, [(ecx-(CURRENT_TASK and 1FFFFFFFh)-TASKDATA.state)*8+SLOT_BASE]
-
 
2114
        call    request_terminate
-
 
2115
        pop     edx ecx
-
 
2116
        test    eax, eax
-
 
2117
        jz      noprocessterminate
2113
;--------------------------------------
2118
;--------------------------------------
2114
        cmp     [_display.select_cursor], 0
2119
        cmp     [_display.select_cursor], 0
2115
        je      .restore_end
2120
        je      .restore_end
2116
; restore default cursor before killing
2121
; restore default cursor before killing
2117
        pusha
2122
        pusha
Line 3487... Line 3492...
3487
        mov     edx, OS_BASE+0x3040
3492
        mov     edx, OS_BASE+0x3040
3488
        jecxz   @f
3493
        jecxz   @f
3489
;--------------------------------------
3494
;--------------------------------------
3490
align 4
3495
align 4
3491
markz:
3496
markz:
-
 
3497
        push    ecx edx
-
 
3498
        lea     edx, [(edx-(TASK_DATA and 1FFFFFFFh))*8+SLOT_BASE]
-
 
3499
        call    request_terminate
-
 
3500
        pop     edx ecx
-
 
3501
        test    eax, eax
-
 
3502
        jz      @f
3492
        mov     [edx+TASKDATA.state], byte 3
3503
        mov     [edx+TASKDATA.state], byte 3
-
 
3504
@@:
3493
        add     edx, 0x20
3505
        add     edx, 0x20
3494
        loop    markz
3506
        loop    markz
3495
;--------------------------------------
3507
;--------------------------------------
3496
align 4
3508
align 4
3497
@@:
3509
@@: