Subversion Repositories Kolibri OS

Rev

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

Rev 8985 Rev 8986
Line 75... Line 75...
75
format binary as "mnt"
75
format binary as "mnt"
Line 76... Line 76...
76
 
76
 
77
include 'macros.inc'
77
include 'macros.inc'
Line 78... Line 78...
78
include 'struct.inc'
78
include 'struct.inc'
Line 79... Line 79...
79
 
79
 
80
$Revision: 8962 $
80
$Revision: 8986 $
Line 1355... Line 1355...
1355
        pop     eax
1355
        pop     eax
1356
        ret
1356
        ret
Line 1357... Line 1357...
1357
 
1357
 
1358
align 4
1358
align 4
1359
;input  eax=43,bl-byte of output, ecx - number of port
1359
;input  eax=43,bl-byte of output, ecx - number of port
Line 1360... Line 1360...
1360
sys_outport:
1360
syscall_outport:
1361
 
1361
 
Line 1362... Line 1362...
1362
        mov     edi, ecx   ; separate flag for read / write
1362
        mov     edi, ecx   ; separate flag for read / write
Line 1412... Line 1412...
1412
        and     eax, 0xff
1412
        and     eax, 0xff
1413
        and     [esp+32], dword 0
1413
        and     [esp+32], dword 0
1414
        mov     [esp+20], eax
1414
        mov     [esp+20], eax
1415
        ret
1415
        ret
Line 1416... Line 1416...
1416
 
1416
 
1417
display_number:
1417
syscall_putnumber:
1418
; add check pointers
1418
; add check pointers
1419
        test    bl, bl
1419
        test    bl, bl
1420
        jz      @f
1420
        jz      @f
1421
        stdcall is_region_userspace, ecx, 1
1421
        stdcall is_region_userspace, ecx, 1
Line 1622... Line 1622...
1622
iglobal
1622
iglobal
1623
midi_base dw 0
1623
midi_base dw 0
1624
endg
1624
endg
1625
;-----------------------------------------------------------------------------
1625
;-----------------------------------------------------------------------------
1626
align 4
1626
align 4
1627
sys_setup:
1627
syscall_setup:
1628
;  1 = roland mpu midi base , base io address
1628
;  1 = roland mpu midi base , base io address
1629
;  2 = keyboard   1, base kaybap 2, shift keymap, 9 country 1eng 2fi 3ger 4rus
1629
;  2 = keyboard   1, base kaybap 2, shift keymap, 9 country 1eng 2fi 3ger 4rus
1630
;  3 = not used
1630
;  3 = not used
1631
;  4 = not used
1631
;  4 = not used
1632
;  5 = system language, 1eng 2fi 3ger 4rus
1632
;  5 = system language, 1eng 2fi 3ger 4rus
Line 1729... Line 1729...
1729
.error:
1729
.error:
1730
        or      [esp+32], dword -1
1730
        or      [esp+32], dword -1
1731
        ret
1731
        ret
1732
;-----------------------------------------------------------------------------
1732
;-----------------------------------------------------------------------------
1733
align 4
1733
align 4
1734
sys_getsetup:
1734
syscall_getsetup:
1735
;  1 = roland mpu midi base , base io address
1735
;  1 = roland mpu midi base , base io address
1736
;  2 = keyboard   1, base kaybap 2, shift keymap, 9 country 1eng 2fi 3ger 4rus
1736
;  2 = keyboard   1, base kaybap 2, shift keymap, 9 country 1eng 2fi 3ger 4rus
1737
;  3 = not used
1737
;  3 = not used
1738
;  4 = not used
1738
;  4 = not used
1739
;  5 = system language, 1eng 2fi 3ger 4rus
1739
;  5 = system language, 1eng 2fi 3ger 4rus
Line 1865... Line 1865...
1865
;-----------------------------------------------------------------------------
1865
;-----------------------------------------------------------------------------
1866
get_timer_ticks:
1866
get_timer_ticks:
1867
        mov     eax, [timer_ticks]
1867
        mov     eax, [timer_ticks]
1868
        ret
1868
        ret
1869
;-----------------------------------------------------------------------------
1869
;-----------------------------------------------------------------------------
1870
readmousepos:
1870
syscall_get_mouse_pos:
1871
; eax=0 screen relative
1871
; eax=0 screen relative
1872
; eax=1 window relative
1872
; eax=1 window relative
1873
; eax=2 buttons pressed
1873
; eax=2 buttons pressed
1874
; eax=3 buttons pressed ext
1874
; eax=3 buttons pressed ext
1875
; eax=4 load cursor
1875
; eax=4 load cursor
Line 2019... Line 2019...
2019
 
2019
 
Line 2020... Line 2020...
2020
 
2020
 
2021
 
2021
 
2022
align 4
2022
align 4
2023
 
2023
 
2024
sys_midi:
2024
syscall_midi:
2025
        cmp     [mididp], 0
2025
        cmp     [mididp], 0
Line 2077... Line 2077...
2077
;include 'detect/dev_hdcd.inc'
2077
;include 'detect/dev_hdcd.inc'
2078
;include 'detect/sear_par.inc'
2078
;include 'detect/sear_par.inc'
2079
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2079
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2080
        ret
2080
        ret
Line 2081... Line 2081...
2081
 
2081
 
2082
sys_end:
2082
syscall_end:
2083
;--------------------------------------
2083
;--------------------------------------
2084
        cmp     [_display.select_cursor], 0
2084
        cmp     [_display.select_cursor], 0
2085
        je      @f
2085
        je      @f
2086
; restore default cursor before killing
2086
; restore default cursor before killing
Line 2172... Line 2172...
2172
 
2172
 
2173
        dd      sysfn_zmodif            ; 25 = get/set window z modifier  ;Fantomer
2173
        dd      sysfn_zmodif            ; 25 = get/set window z modifier  ;Fantomer
2174
sysfn_num = ($ - sys_system_table)/4
2174
sysfn_num = ($ - sys_system_table)/4
2175
endg
2175
endg
2176
;------------------------------------------------------------------------------
2176
;------------------------------------------------------------------------------
2177
sys_system:
2177
syscall_system:
2178
        dec     ebx
2178
        dec     ebx
2179
        cmp     ebx, sysfn_num
2179
        cmp     ebx, sysfn_num
2180
        jae     @f
2180
        jae     @f
2181
        jmp     dword [sys_system_table + ebx*4]
2181
        jmp     dword [sys_system_table + ebx*4]
Line 2301... Line 2301...
2301
        shl     edi, 5
2301
        shl     edi, 5
2302
        add     edi, window_data
2302
        add     edi, window_data
2303
        movzx   esi, word [WIN_STACK + ecx * 2]
2303
        movzx   esi, word [WIN_STACK + ecx * 2]
2304
        lea     esi, [WIN_POS + esi * 2]
2304
        lea     esi, [WIN_POS + esi * 2]
2305
        call    window._.window_deactivate
2305
        call    window._.window_deactivate
2306
        call    syscall_display_settings.calculateScreen
2306
        call    syscall_window_styles.calculateScreen
2307
        call    syscall_display_settings.redrawScreen
2307
        call    syscall_window_styles.redrawScreen
2308
.nowindowdeactivate:
2308
.nowindowdeactivate:
2309
        ret
2309
        ret
2310
;------------------------------------------------------------------------------
2310
;------------------------------------------------------------------------------
2311
sysfn_activate:         ; 18.3 = ACTIVATE WINDOW
2311
sysfn_activate:         ; 18.3 = ACTIVATE WINDOW
2312
        cmp     ecx, 2
2312
        cmp     ecx, 2
Line 2670... Line 2670...
2670
.rev    dd __REV__
2670
.rev    dd __REV__
2671
version_end:
2671
version_end:
2672
endg
2672
endg
2673
;------------------------------------------------------------------------------
2673
;------------------------------------------------------------------------------
2674
align 4
2674
align 4
2675
sys_cachetodiskette:
2675
syscall_cachetodiskette:
2676
        cmp     ebx, 1
2676
        cmp     ebx, 1
2677
        jb      .no_floppy_save
2677
        jb      .no_floppy_save
2678
        cmp     ebx, 2
2678
        cmp     ebx, 2
2679
        ja      .no_floppy_save
2679
        ja      .no_floppy_save
2680
        call    save_image
2680
        call    save_image
Line 2690... Line 2690...
2690
bgrlockpid dd 0
2690
bgrlockpid dd 0
2691
bgrlock db 0
2691
bgrlock db 0
2692
endg
2692
endg
2693
;------------------------------------------------------------------------------
2693
;------------------------------------------------------------------------------
2694
align 4
2694
align 4
2695
sys_background:
2695
syscall_background:
2696
        cmp     ebx, 1                     ; BACKGROUND SIZE
2696
        cmp     ebx, 1                     ; BACKGROUND SIZE
2697
        jnz     nosb1
2697
        jnz     nosb1
2698
        test    ecx, ecx
2698
        test    ecx, ecx
2699
        jz      sbgrr
2699
        jz      sbgrr
Line 3043... Line 3043...
3043
        inc     [REDRAW_BACKGROUND]
3043
        inc     [REDRAW_BACKGROUND]
3044
        call    wakeup_osloop
3044
        call    wakeup_osloop
3045
        ret
3045
        ret
3046
;------------------------------------------------------------------------------
3046
;------------------------------------------------------------------------------
3047
align 4
3047
align 4
3048
sys_getbackground:
3048
syscall_getbackground:
3049
;    cmp   eax,1                                  ; SIZE
3049
;    cmp   eax,1                                  ; SIZE
3050
        dec     ebx
3050
        dec     ebx
3051
        jnz     nogb1
3051
        jnz     nogb1
3052
        mov     eax, [BgrDataWidth]
3052
        mov     eax, [BgrDataWidth]
3053
        shl     eax, 16
3053
        shl     eax, 16
Line 3098... Line 3098...
3098
nogb4:
3098
nogb4:
3099
        mov     [esp+32], eax
3099
        mov     [esp+32], eax
3100
        ret
3100
        ret
3101
;------------------------------------------------------------------------------
3101
;------------------------------------------------------------------------------
3102
align 4
3102
align 4
3103
sys_getkey:
3103
syscall_getkey:
3104
        mov     [esp + 32], dword 1
3104
        mov     [esp + 32], dword 1
3105
        ; test main buffer
3105
        ; test main buffer
3106
        mov     ebx, [current_slot_idx]                          ; TOP OF WINDOW STACK
3106
        mov     ebx, [current_slot_idx]                          ; TOP OF WINDOW STACK
3107
        movzx   ecx, word [WIN_STACK + ebx * 2]
3107
        movzx   ecx, word [WIN_STACK + ebx * 2]
3108
        mov     edx, [thread_count]
3108
        mov     edx, [thread_count]
Line 3155... Line 3155...
3155
        and     dword [ecx + 4], 0
3155
        and     dword [ecx + 4], 0
3156
        and     dword [ecx], 0
3156
        and     dword [ecx], 0
3157
        jmp     .ret_eax
3157
        jmp     .ret_eax
3158
;------------------------------------------------------------------------------
3158
;------------------------------------------------------------------------------
3159
align 4
3159
align 4
3160
sys_getbutton:
3160
syscall_getbutton:
3161
        mov     ebx, [current_slot_idx]                         ; TOP OF WINDOW STACK
3161
        mov     ebx, [current_slot_idx]                         ; TOP OF WINDOW STACK
3162
        mov     [esp + 32], dword 1
3162
        mov     [esp + 32], dword 1
3163
        movzx   ecx, word [WIN_STACK + ebx * 2]
3163
        movzx   ecx, word [WIN_STACK + ebx * 2]
3164
        mov     edx, [thread_count] ; less than 256 processes
3164
        mov     edx, [thread_count] ; less than 256 processes
3165
        cmp     ecx, edx
3165
        cmp     ecx, edx
Line 3175... Line 3175...
3175
align 4
3175
align 4
3176
.exit:
3176
.exit:
3177
        ret
3177
        ret
3178
;------------------------------------------------------------------------------
3178
;------------------------------------------------------------------------------
3179
align 4
3179
align 4
3180
sys_cpuusage:
3180
syscall_thread_info:
Line 3181... Line 3181...
3181
 
3181
 
3182
;  RETURN:
3182
;  RETURN:
3183
;
3183
;
3184
;  +00 dword     process cpu usage
3184
;  +00 dword     process cpu usage
Line 3285... Line 3285...
3285
.addr_error:    ; if given memory address is illegal
3285
.addr_error:    ; if given memory address is illegal
3286
        mov     dword [esp+32], -1
3286
        mov     dword [esp+32], -1
3287
        ret   
3287
        ret   
Line 3288... Line 3288...
3288
 
3288
 
3289
align 4
3289
align 4
3290
sys_clock:
3290
syscall_clock:
3291
        cli
3291
        cli
3292
  ; Mikhail Lisovin  xx Jan 2005
3292
  ; Mikhail Lisovin  xx Jan 2005
3293
  @@:
3293
  @@:
3294
        mov     al, 10
3294
        mov     al, 10
Line 3323... Line 3323...
3323
        ret
3323
        ret
Line 3324... Line 3324...
3324
 
3324
 
Line 3325... Line 3325...
3325
 
3325
 
Line 3326... Line 3326...
3326
align 4
3326
align 4
3327
 
3327
 
3328
sys_date:
3328
syscall_date:
3329
 
3329
 
Line 3358... Line 3358...
3358
        ret
3358
        ret
Line 3359... Line 3359...
3359
 
3359
 
Line 3360... Line 3360...
3360
 
3360
 
3361
; redraw status
3361
; redraw status
3362
 
3362
 
3363
sys_redrawstat:
3363
syscall_redrawstat:
3364
        cmp     ebx, 1
3364
        cmp     ebx, 1
3365
        jne     no_widgets_away
3365
        jne     no_widgets_away
Line 3774... Line 3774...
3774
 
3774
 
3775
        pushad
3775
        pushad
Line 3776... Line 3776...
3776
        push    eax
3776
        push    eax
3777
 
3777
 
Line 3778... Line 3778...
3778
;;;         mov   ebx,2
3778
;;;         mov   ebx,2
3779
;;;         call  delay_hs
3779
;;;         call  sys_delay_hs
3780
 
3780
 
3781
         ;mov   ecx,0               ; redraw flags for apps
3781
         ;mov   ecx,0               ; redraw flags for apps
Line 4046... Line 4046...
4046
.done:
4046
.done:
4047
        popad
4047
        popad
4048
        ret
4048
        ret
4049
;-----------------------------------------------------------------------------
4049
;-----------------------------------------------------------------------------
4050
align 4
4050
align 4
4051
set_app_param:
4051
syscall_set_eventmask:
4052
        mov     edi, [TASK_BASE]
4052
        mov     edi, [TASK_BASE]
4053
        mov     eax, ebx
4053
        mov     eax, ebx
4054
        xchg    eax, [edi + TASKDATA.event_mask] ; set new event mask
4054
        xchg    eax, [edi + TASKDATA.event_mask] ; set new event mask
4055
        mov     [esp+32], eax                    ; return old mask value
4055
        mov     [esp+32], eax                    ; return old mask value
4056
        ret
4056
        ret
4057
;-----------------------------------------------------------------------------
4057
;-----------------------------------------------------------------------------
Line 4058... Line 4058...
4058
 
4058
 
4059
; this is for syscall
4059
; this is for syscall
4060
proc delay_hs_unprotected
4060
proc syscall_delay_hs_unprotected
4061
        call    unprotect_from_terminate
4061
        call    unprotect_from_terminate
4062
        call    delay_hs
4062
        call    sys_delay_hs
4063
        call    protect_from_terminate
4063
        call    protect_from_terminate
4064
        ret
4064
        ret
Line 4065... Line 4065...
4065
endp
4065
endp
4066
 
4066
 
4067
if 1
4067
if 1
4068
align 4
4068
align 4
Line 4069... Line 4069...
4069
delay_hs:     ; delay in 1/100 secs
4069
sys_delay_hs:     ; delay in 1/100 secs
4070
; ebx = delay time
4070
; ebx = delay time
4071
 
4071
 
Line 4091... Line 4091...
4091
        ret
4091
        ret
Line 4092... Line 4092...
4092
 
4092
 
Line 4093... Line 4093...
4093
else
4093
else
4094
 
4094
 
4095
align 4
4095
align 4
4096
delay_hs:     ; delay in 1/100 secs
4096
sys_delay_hs:     ; delay in 1/100 secs
4097
; ebx = delay time
4097
; ebx = delay time
Line 4098... Line 4098...
4098
        push    ecx
4098
        push    ecx
Line 4435... Line 4435...
4435
        pop     ebp esi ebp
4435
        pop     ebp esi ebp
4436
        ret
4436
        ret
4437
;        jmp     [draw_pointer]
4437
;        jmp     [draw_pointer]
4438
;-----------------------------------------------------------------------------
4438
;-----------------------------------------------------------------------------
4439
align 4
4439
align 4
4440
sys_putimage_palette:
4440
syscall_putimage_palette:
4441
; ebx = pointer to image
4441
; ebx = pointer to image
4442
; ecx = [xsize]*65536 + [ysize]
4442
; ecx = [xsize]*65536 + [ysize]
4443
; edx = [xstart]*65536 + [ystart]
4443
; edx = [xstart]*65536 + [ystart]
4444
; esi = number of bits per pixel, must be 8, 24 or 32
4444
; esi = number of bits per pixel, must be 8, 24 or 32
4445
; edi = pointer to palette
4445
; edi = pointer to palette
Line 4840... Line 4840...
4840
   @@:
4840
   @@:
4841
        cmp     [esi], byte 0
4841
        cmp     [esi], byte 0
4842
        je      @f
4842
        je      @f
4843
        mov     ebx, 1
4843
        mov     ebx, 1
4844
        movzx   ecx, byte [esi]
4844
        movzx   ecx, byte [esi]
4845
        call    sys_msg_board
4845
        call    syscall_msg_board
4846
        inc     esi
4846
        inc     esi
4847
        jmp     @b
4847
        jmp     @b
4848
   @@:
4848
   @@:
4849
        popad
4849
        popad
4850
        ret
4850
        ret
Line 4882... Line 4882...
4882
        sbb     al, 69h
4882
        sbb     al, 69h
4883
        das
4883
        das
4884
        mov     cl, al
4884
        mov     cl, al
4885
        xor     ebx, ebx
4885
        xor     ebx, ebx
4886
        inc     ebx
4886
        inc     ebx
4887
        call    sys_msg_board
4887
        call    syscall_msg_board
4888
        pop     eax
4888
        pop     eax
4889
        pop     ecx
4889
        pop     ecx
4890
        loop    @b
4890
        loop    @b
4891
        popad
4891
        popad
4892
        ret
4892
        ret
Line 4900... Line 4900...
4900
 
4900
 
4901
iglobal
4901
iglobal
4902
msg_board_pos   dd  42*6*65536+10 ; for printing debug output on the screen
4902
msg_board_pos   dd  42*6*65536+10 ; for printing debug output on the screen
Line 4903... Line 4903...
4903
endg
4903
endg
4904
 
4904
 
4905
sys_msg_board:
4905
syscall_msg_board:
4906
; ebx=1 -> write, cl = byte to write
4906
; ebx=1 -> write, cl = byte to write
4907
; ebx=2 -> read, ecx=0 -> no data, ecx=1 -> data in al
4907
; ebx=2 -> read, ecx=0 -> no data, ecx=1 -> data in al
4908
        push    eax ebx
4908
        push    eax ebx
Line 4998... Line 4998...
4998
;; out eax                                                         ;;
4998
;; out eax                                                         ;;
4999
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4999
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5000
iglobal
5000
iglobal
5001
align 4
5001
align 4
5002
f66call:
5002
f66call:
5003
           dd sys_process_def.1   ; 1 = set keyboard mode
5003
           dd syscall_process_def.1   ; 1 = set keyboard mode
5004
           dd sys_process_def.2   ; 2 = get keyboard mode
5004
           dd syscall_process_def.2   ; 2 = get keyboard mode
5005
           dd sys_process_def.3   ; 3 = get keyboard ctrl, alt, shift
5005
           dd syscall_process_def.3   ; 3 = get keyboard ctrl, alt, shift
5006
           dd sys_process_def.4   ; 4 = set system-wide hotkey
5006
           dd syscall_process_def.4   ; 4 = set system-wide hotkey
5007
           dd sys_process_def.5   ; 5 = delete installed hotkey
5007
           dd syscall_process_def.5   ; 5 = delete installed hotkey
5008
           dd sys_process_def.6   ; 6 = disable input, work only hotkeys
5008
           dd syscall_process_def.6   ; 6 = disable input, work only hotkeys
5009
           dd sys_process_def.7   ; 7 = enable input, opposition to f.66.6
5009
           dd syscall_process_def.7   ; 7 = enable input, opposition to f.66.6
5010
endg
5010
endg
5011
;-----------------------------------------------------------------------------
5011
;-----------------------------------------------------------------------------
5012
align 4
5012
align 4
5013
sys_process_def:
5013
syscall_process_def:
5014
        dec     ebx
5014
        dec     ebx
5015
        cmp     ebx, 7
5015
        cmp     ebx, 7
5016
        jae     .not_support    ;if >=8 then or eax,-1
5016
        jae     .not_support    ;if >=8 then or eax,-1
Line 5017... Line 5017...
5017
 
5017
 
Line 5148... Line 5148...
5148
;; out eax                                                         ;;
5148
;; out eax                                                         ;;
5149
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5149
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5150
iglobal
5150
iglobal
5151
align 4
5151
align 4
5152
f61call:
5152
f61call:
5153
           dd sys_gs.1   ; resolution
5153
           dd syscall_dga.1   ; resolution
5154
           dd sys_gs.2   ; bits per pixel
5154
           dd syscall_dga.2   ; bits per pixel
5155
           dd sys_gs.3   ; bytes per scanline
5155
           dd syscall_dga.3   ; bytes per scanline
5156
endg
5156
endg
Line 5157... Line 5157...
5157
 
5157
 
Line 5158... Line 5158...
5158
 
5158
 
5159
align 4
5159
align 4
5160
 
5160
 
5161
sys_gs:                         ; direct screen access
5161
syscall_dga:                         ; direct screen access
5162
        dec     ebx
5162
        dec     ebx
5163
        cmp     ebx, 2
5163
        cmp     ebx, 2
Line 5689... Line 5689...
5689
apm_entry       dp      0
5689
apm_entry       dp      0
5690
apm_vf          dd      0
5690
apm_vf          dd      0
5691
endg
5691
endg
Line 5692... Line 5692...
5692
 
5692
 
5693
align 4
5693
align 4
5694
sys_apm:
5694
syscall_apm:
5695
        xor     eax, eax
5695
        xor     eax, eax
5696
        cmp     word [apm_vf], ax       ; Check APM BIOS enable
5696
        cmp     word [apm_vf], ax       ; Check APM BIOS enable
5697
        jne     @f
5697
        jne     @f
5698
        inc     eax
5698
        inc     eax
Line 5741... Line 5741...
5741
        or      [esp + 44], al
5741
        or      [esp + 44], al
5742
        ret
5742
        ret
5743
; -----------------------------------------
5743
; -----------------------------------------
Line 5744... Line 5744...
5744
 
5744
 
5745
align 4
5745
align 4
5746
undefined_syscall:                      ; Undefined system call
5746
syscall_undefined:                      ; Undefined system call
5747
        mov     [esp + 32], dword -1
5747
        mov     [esp + 32], dword -1
Line 5748... Line 5748...
5748
        ret
5748
        ret
5749
 
5749