Subversion Repositories Kolibri OS

Rev

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

Rev 417 Rev 419
Line 225... Line 225...
225
           mov dword [sys_pgdir], 0
225
           mov dword [sys_pgdir], 0
226
           mov dword [sys_pgdir+4], 0
226
           mov dword [sys_pgdir+4], 0
227
           mov dword [sys_pgdir+8], 0
227
           mov dword [sys_pgdir+8], 0
Line 228... Line 228...
228
 
228
 
229
           mov eax, cr3
229
           mov eax, cr3
Line 230... Line 230...
230
           mov cr3, eax
230
           mov cr3, eax           ; flush TLB
231
 
231
 
232
; SAVE REAL MODE VARIABLES
232
; SAVE REAL MODE VARIABLES
233
        mov     ax, [BOOT_VAR + 0x9031]
233
        mov     ax, [BOOT_VAR + 0x9031]
-
 
234
        mov     [IDEContrRegsBaseAddr], ax
-
 
235
; --------------- APM ---------------------
234
        mov     [IDEContrRegsBaseAddr], ax
236
 
-
 
237
; init selectors
-
 
238
    mov ebx,    [BOOT_VAR+0x9040]              ; offset of APM entry point
-
 
239
    movzx eax, word [BOOT_VAR+0x9050] ; real-mode segment base address of
-
 
240
                                      ; protected-mode 32-bit code segment
-
 
241
    movzx ecx, word [BOOT_VAR+0x9052] ; real-mode segment base address of
-
 
242
                                      ; protected-mode 16-bit code segment
-
 
243
    movzx edx, word [BOOT_VAR+0x9054] ; real-mode segment base address of
-
 
244
                                      ; protected-mode 16-bit data segment
-
 
245
 
-
 
246
    shl    eax, 4
-
 
247
    mov    [dword apm_code_32 + 2], ax
-
 
248
    shr    eax, 16
-
 
249
    mov    [dword apm_code_32 + 4], al
-
 
250
 
-
 
251
    shl    ecx, 4
-
 
252
    mov    [dword apm_code_16 + 2], cx
-
 
253
    shr    ecx, 16
-
 
254
    mov    [dword apm_code_16 + 4], cl
-
 
255
 
-
 
256
    shl    edx, 4
-
 
257
    mov    [dword apm_data_16 + 2], dx
-
 
258
    shr    edx, 16
235
; --------------- APM ---------------------
259
    mov    [dword apm_data_16 + 4], dl
236
;    mov    eax, [BOOT_VAR + 0x9040]    ; entry point
260
 
Line 237... Line 261...
237
;    mov    dword[apm_entry], eax
261
    mov    dword[apm_entry], ebx
238
;    mov    word [apm_entry + 4], apm_code_32 - gdts
262
    mov    word [apm_entry + 4], apm_code_32 - gdts
239
 
263
 
240
    mov    eax, [BOOT_VAR + 0x9044]    ; version & flags
264
    mov    eax, [BOOT_VAR + 0x9044]    ; version & flags
Line 1709... Line 1733...
1709
           ret
1733
           ret
1710
msset:
1734
msset:
1711
           ret
1735
           ret
Line 1712... Line 1736...
1712
 
1736
 
1713
app_load_cursor:
1737
app_load_cursor:
1714
           add ebx, new_app_base
1738
      ;     add ebx, new_app_base
1715
           cmp ebx, new_app_base
1739
           cmp ebx, OS_BASE
1716
           jb msset
1740
           jae msset
1717
           stdcall load_cursor, ebx, ecx
1741
           stdcall load_cursor, ebx, ecx
1718
           mov [esp+36], eax
1742
           mov [esp+36], eax
Line 1719... Line 1743...
1719
           ret
1743
           ret
Line 3940... Line 3964...
3940
 
3964
 
Line 3941... Line 3965...
3941
syscall_putimage:                       ; PutImage
3965
syscall_putimage:                       ; PutImage
3942
 
3966
 
3943
     mov   edx,ecx
3967
     mov   edx,ecx
Line 3944... Line 3968...
3944
     mov   ecx,ebx
3968
     mov   ecx,ebx
3945
        lea     ebx, [eax+std_application_base_address]
3969
     mov   ebx, eax
3946
 
3970
 
3947
sys_putimage:
3971
sys_putimage:
Line 3982... Line 4006...
3982
        dec     [mouse_pause]
4006
        dec     [mouse_pause]
3983
        pop     ebp esi ebp
4007
        pop     ebp esi ebp
3984
        jmp     [draw_pointer]
4008
        jmp     [draw_pointer]
Line 3985... Line 4009...
3985
 
4009
 
3986
syscall_putimage_palette:
4010
syscall_putimage_palette:
3987
        lea     edi, [esi+std_application_base_address]
4011
        mov     edi, esi
3988
        mov     esi, edx
4012
        mov     esi, edx
3989
        mov     edx, ecx
4013
        mov     edx, ecx
3990
        mov     ecx, ebx
4014
        mov     ecx, ebx
3991
        lea     ebx, [eax+std_application_base_address]
4015
        mov     ebx, eax
3992
sys_putimage_palette:
4016
sys_putimage_palette:
3993
; ebx = pointer to image
4017
; ebx = pointer to image
3994
; ecx = [xsize]*65536 + [ysize]
4018
; ecx = [xsize]*65536 + [ysize]
3995
; edx = [xstart]*65536 + [ystart]
4019
; edx = [xstart]*65536 + [ystart]
Line 4838... Line 4862...
4838
    jne    @f
4862
    jne    @f
4839
    or    [esp + 56], byte 1    ; error
4863
    or    [esp + 56], byte 1    ; error
4840
    mov    [esp + 36], dword 8    ; 32-bit protected-mode interface not supported
4864
    mov    [esp + 36], dword 8    ; 32-bit protected-mode interface not supported
4841
    ret
4865
    ret
Line -... Line 4866...
-
 
4866
 
4842
 
4867
@@:
4843
@@:    xchg    eax, ecx
4868
    xchg    eax, ecx
Line 4844... Line 4869...
4844
    xchg    ebx, ecx
4869
    xchg    ebx, ecx
4845
 
4870
 
4846
    cmp    al, 3
4871
    cmp    al, 3
Line 4850... Line 4875...
4850
    mov    [esp + 36], eax
4875
    mov    [esp + 36], eax
4851
    shr    eax, 16
4876
    shr    eax, 16
4852
    mov    [esp + 32], eax
4877
    mov    [esp + 32], eax
4853
    ret
4878
    ret
Line -... Line 4879...
-
 
4879
 
-
 
4880
@@:
-
 
4881
 
-
 
4882
    mov esi, [master_tab+(OS_BASE shr 20)]
-
 
4883
    xchg [master_tab], esi
-
 
4884
    push esi
-
 
4885
    mov edi, cr3
-
 
4886
    mov cr3, edi                 ;flush TLB
4854
 
4887
 
-
 
4888
    call    pword [apm_entry]    ; call APM BIOS
-
 
4889
 
-
 
4890
    xchg eax, [esp]
-
 
4891
    mov [master_tab], eax
-
 
4892
    mov eax, cr3
-
 
4893
    mov cr3, eax
-
 
4894
    pop eax
4855
@@:    call    pword [apm_entry]    ; call APM BIOS
4895
 
4856
    mov    [esp + 8 ], edi
4896
    mov    [esp + 8 ], edi
4857
    mov    [esp + 12], esi
4897
    mov    [esp + 12], esi
4858
    mov    [esp + 24], ebx
4898
    mov    [esp + 24], ebx
4859
    mov    [esp + 28], edx
4899
    mov    [esp + 28], edx
4860
    mov    [esp + 32], ecx
4900
    mov    [esp + 32], ecx
4861
    mov    [esp + 36], eax
4901
    mov    [esp + 36], eax
4862
    setc    al
4902
    setc    al
4863
    and    [esp + 56], byte 0xfe
4903
    and    [esp + 56], byte 0xfe
-
 
4904
    or    [esp + 56], al
-
 
4905
 
4864
    or    [esp + 56], al
4906
 
4865
    ret
4907
    ret
Line 4866... Line 4908...
4866
; -----------------------------------------
4908
; -----------------------------------------
Line 4878... Line 4920...
4878
           cmp byte [BOOT_VAR+0x9030], 1
4920
           cmp byte [BOOT_VAR+0x9030], 1
4879
           jne @F
4921
           jne @F
4880
           ret
4922
           ret
4881
@@:
4923
@@:
4882
           call stop_all_services
4924
           call stop_all_services
4883
 
-
 
4884
     push eax
-
 
4885
     push edx
-
 
4886
     mov edx, 0x400   ;bocsh
-
 
4887
     mov al,0xff      ;bocsh
-
 
4888
     out dx, al       ;bocsh
-
 
4889
     pop edx
-
 
4890
     pop eax
-
 
4891
 
-
 
4892
           push 3                ; stop playing cd
4925
           push 3                ; stop playing cd
4893
           pop  eax
4926
           pop  eax
4894
           call sys_cd_audio
4927
           call sys_cd_audio
Line 4895... Line 4928...
4895
 
4928