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 | @@: |