Rev 419 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 419 | Rev 420 | ||
---|---|---|---|
Line 17... | Line 17... | ||
17 | include "const.inc" |
17 | include "const.inc" |
18 | max_processes equ 255 |
18 | max_processes equ 255 |
19 | tss_step equ (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4 |
19 | tss_step equ (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4 |
Line 20... | Line 20... | ||
20 | 20 | ||
21 | 21 | ||
22 | os_data equ os_data_l-gdts ; GDTs |
22 | os_stack equ os_data_l-gdts ; GDTs |
23 | os_code equ os_code_l-gdts |
23 | os_code equ os_code_l-gdts |
24 | graph_data equ 3+graph_data_l-gdts |
24 | graph_data equ 3+graph_data_l-gdts |
25 | tss0 equ tss0_l-gdts |
25 | tss0 equ tss0_l-gdts |
Line 149... | Line 149... | ||
149 | use32 |
149 | use32 |
150 | org $+0x10000 |
150 | org $+0x10000 |
Line 151... | Line 151... | ||
151 | 151 | ||
152 | align 4 |
152 | align 4 |
153 | B32: |
153 | B32: |
154 | mov ax,os_data ; Selector for os |
154 | mov ax,os_stack ; Selector for os |
155 | mov ds,ax |
155 | mov ds,ax |
156 | mov es,ax |
156 | mov es,ax |
157 | mov fs,ax |
157 | mov fs,ax |
158 | mov gs,ax |
158 | mov gs,ax |
Line 212... | Line 212... | ||
212 | 212 | ||
Line 213... | Line 213... | ||
213 | org OS_BASE+$ |
213 | org OS_BASE+$ |
214 | 214 | ||
215 | align 4 |
215 | align 4 |
216 | high_code: |
- | |
217 | mov ax,os_data |
- | |
218 | mov ds,ax |
- | |
219 | mov es,ax |
216 | high_code: |
220 | mov fs,ax |
217 | mov ax,os_stack |
221 | mov gs,ax |
218 | mov bx,app_data |
Line -... | Line 219... | ||
- | 219 | mov ss,ax |
|
- | 220 | add esp, OS_BASE |
|
- | 221 | ||
- | 222 | mov ds,bx |
|
- | 223 | mov es,bx |
|
222 | mov ss,ax |
224 | mov fs,bx |
223 | add esp, OS_BASE |
225 | mov gs,bx |
224 | 226 | ||
Line 225... | Line 227... | ||
225 | mov dword [sys_pgdir], 0 |
227 | mov dword [sys_pgdir], 0 |
Line 367... | Line 369... | ||
367 | .noSYSCALL: |
369 | .noSYSCALL: |
368 | ; ----------------------------------------- |
370 | ; ----------------------------------------- |
Line 369... | Line 371... | ||
369 | 371 | ||
370 | call init_kernel_heap |
372 | call init_kernel_heap |
371 | stdcall kernel_alloc, 0x2000 |
373 | stdcall kernel_alloc, 0x2000 |
- | 374 | mov [os_stack_seg], eax |
|
- | 375 | ||
Line 372... | Line 376... | ||
372 | mov [os_stack], eax |
376 | lea esp, [eax+RING0_STACK_SIZE] |
373 | 377 | ||
Line 374... | Line 378... | ||
374 | mov [LFBSize], 0x800000 |
378 | mov [LFBSize], 0x800000 |
Line 550... | Line 554... | ||
550 | 554 | ||
Line 551... | Line 555... | ||
551 | ; name for OS/IDLE process |
555 | ; name for OS/IDLE process |
552 | 556 | ||
553 | mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
557 | mov dword [SLOT_BASE+256+APPDATA.app_name], dword 'OS/I' |
554 | mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
558 | mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE ' |
555 | mov edi, [os_stack] |
559 | mov edi, [os_stack_seg] |
556 | mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
560 | mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi |
Line 557... | Line 561... | ||
557 | add edi, 0x2000-512 |
561 | add edi, 0x2000-512 |
Line 581... | Line 585... | ||
581 | mov ecx, (tss_step)/4 |
585 | mov ecx, (tss_step)/4 |
582 | xor eax, eax |
586 | xor eax, eax |
583 | cld |
587 | cld |
584 | rep stosd |
588 | rep stosd |
Line 585... | Line 589... | ||
585 | 589 | ||
586 | mov edi,tss_data+tss_step |
590 | mov edi,tss_data |
587 | mov [edi+TSS._ss0], os_data |
591 | mov [edi+TSS._ss0], os_stack |
588 | mov eax,cr3 |
592 | mov eax,cr3 |
589 | mov [edi+TSS._cr3],eax |
593 | mov [edi+TSS._cr3],eax |
590 | mov [edi+TSS._eip],osloop |
594 | mov [edi+TSS._eip],osloop |
591 | mov [edi+TSS._eflags],dword 0x11202 ; sti and resume |
595 | mov [edi+TSS._eflags],dword 0x1202 ; sti and resume |
592 | mov eax, [os_stack] |
596 | mov eax, [os_stack_seg] |
593 | add eax, 0x2000-512 |
597 | add eax, 0x2000-512 |
594 | mov [edi+TSS._esp], eax |
598 | mov [edi+TSS._esp], eax |
595 | mov [edi+TSS._cs],os_code |
599 | mov [edi+TSS._cs],os_code |
596 | mov [edi+TSS._ss],os_data |
600 | mov [edi+TSS._ss],os_stack ;os_stack |
597 | mov [edi+TSS._ds],os_data |
601 | mov [edi+TSS._ds],app_data ;os_data |
598 | mov [edi+TSS._es],os_data |
602 | mov [edi+TSS._es],app_data ;os_data |
599 | mov [edi+TSS._fs],os_data |
603 | mov [edi+TSS._fs],app_data ;os_data |
Line 600... | Line 604... | ||
600 | mov [edi+TSS._gs],os_data |
604 | mov [edi+TSS._gs],app_data ;os_data |
601 | 605 | ||
Line 602... | Line 606... | ||
602 | mov ax,tss0 |
606 | mov ax,tss0 |
Line 741... | Line 745... | ||
741 | 745 | ||
Line 742... | Line 746... | ||
742 | stdcall attach_int_handler, dword 1, irq1 |
746 | stdcall attach_int_handler, dword 1, irq1 |
743 | 747 | ||
744 | ; mov [dma_hdd],1 |
748 | ; mov [dma_hdd],1 |
Line 745... | Line 749... | ||
745 | cmp [IDEContrRegsBaseAddr], 0 |
749 | cmp [IDEContrRegsBaseAddr], 0 |
Line 746... | Line 750... | ||
746 | setnz [dma_hdd] |
750 | ; setnz [dma_hdd] |
- | 751 | ||
- | 752 | stdcall init_uart_service, DRV_ENTRY |
|
- | 753 | ||
- | 754 | sti |
|
747 | 755 | call change_task |
|
Line 748... | Line 756... | ||
748 | stdcall init_uart_service, DRV_ENTRY |
756 | |
Line 749... | Line 757... | ||
749 | 757 | jmp osloop |