Subversion Repositories Kolibri OS

Rev

Rev 928 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
593 mikedld 8
$Revision: 2971 $
9
 
671 Ghost 10
; Old style system call converter
11
align 16
12
cross_order:
13
	; load all registers in crossed order
14
	mov	eax, ebx
15
	mov	ebx, ecx
16
	mov	ecx, edx
17
	mov	edx, esi
18
	mov	esi, edi
2971 Serge 19
        movzx   edi, byte[esp+28 + 4]
671 Ghost 20
	call	dword [servetable+edi*4]
21
	ret
593 mikedld 22
 
671 Ghost 23
 
1 ha 24
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25
;;                                                            ;;
375 Ghost 26
;;                     SYSENTER ENTRY                         ;;
27
;;                                                            ;;
28
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
 
30
align 32
31
sysenter_entry:
32
	; Настраиваем стек
742 Rus 33
	mov	esp, [ss:tss._esp0]
375 Ghost 34
	sti
477 Ghost 35
	push	ebp			; save app esp + 4
36
	mov	ebp, [ebp]		; ebp - original ebp
37
	;------------------
375 Ghost 38
	pushad
39
	cld
40
 
865 Ghost 41
	movzx	eax, al
671 Ghost 42
	call	dword [servetable2 + eax * 4]
375 Ghost 43
 
44
	popad
45
	;------------------
477 Ghost 46
	xchg	ecx, [ss:esp]		; в вершин стека - app ecx, ecx - app esp + 4
47
	sub	ecx, 4
48
	xchg	edx, [ecx]		; edx - return point, & save original edx
49
	push	edx
50
	mov	edx, [ss:esp + 4]
51
	mov	[ecx + 4], edx		; save original ecx
52
	pop	edx
375 Ghost 53
	sysexit
54
 
55
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
56
;;                                                            ;;
2971 Serge 57
;;                   SYSTEM CALL ENTRY                        ;;
58
;;                                                            ;;
59
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
60
 
61
align 16
62
i40:
63
        pushad
64
        cld
65
        movzx   eax, al
66
        call    dword [servetable2 + eax * 4]
67
        popad
68
        iretd
69
 
70
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
71
;;                                                            ;;
375 Ghost 72
;;                     SYSCALL ENTRY                          ;;
73
;;                                                            ;;
74
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75
align 32
76
syscall_entry:
412 serge 77
  ;     cli                 syscall clear IF
742 Rus 78
	xchg	esp, [ss:tss._esp0]
79
	push	ecx
80
	lea	ecx, [esp+4]
81
	xchg	ecx, [ss:tss._esp0]
82
	sti
83
	push	ecx
84
	mov	ecx, [ecx]
375 Ghost 85
	;------------------
86
	pushad
87
	cld
88
 
865 Ghost 89
	movzx	eax, al
671 Ghost 90
	call	dword [servetable2 + eax * 4]
375 Ghost 91
 
92
	popad
93
	;------------------
742 Rus 94
	mov	ecx, [ss:esp+4]
95
	pop	esp
465 serge 96
	sysret
1 ha 97
iglobal
98
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
99
  ;; SYSTEM FUNCTIONS TABLE ;;
100
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101
 
102
  align 4
103
  servetable:
104
 
671 Ghost 105
      dd 0
106
      dd 0
107
      dd 0
108
      dd 0
109
      dd 0
110
      dd 0
111
      dd 0
112
      dd 0
113
      dd 0
114
      dd 0
115
      dd 0
684 diamond 116
      dd 0
117
      dd 0
118
      dd 0
119
      dd 0
120
      dd 0
121
      dd 0
122
      dd 0
123
      dd 0
124
      dd 0
742 Rus 125
      dd sys_midi		 ; 20-ResetMidi and OutputMidi
126
      dd sys_setup		 ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
127
      dd sys_settime		 ; 22-setting date,time,clock and alarm-clock
671 Ghost 128
      dd 0
742 Rus 129
      dd syscall_cdaudio	 ; 24-PlayCdTrack,StopCd and GetCdPlaylist
802 serge 130
      dd 0                       ;
742 Rus 131
      dd sys_getsetup		 ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
671 Ghost 132
      dd 0
802 serge 133
      dd 0                       ;
671 Ghost 134
      dd 0
742 Rus 135
      dd sys_current_directory	 ; 30-Get/SetCurrentDirectory
671 Ghost 136
      dd 0
137
      dd 0
138
      dd 0
139
      dd 0
766 Rus 140
      dd 0
141
      dd 0
742 Rus 142
      dd readmousepos		 ; 37-GetMousePosition_ScreenRelative,.
752 Lrz 143
      dd 0			 ; 38-DrawLine
742 Rus 144
      dd sys_getbackground	 ; 39-GetBackgroundSize,ReadBgrData,.
671 Ghost 145
      dd 0
742 Rus 146
      dd 0
765 Rus 147
      dd 0
742 Rus 148
      dd sys_outport		 ; 43-SendDeviceData
765 Rus 149
      dd 0
150
      dd 0
1 ha 151
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
742 Rus 152
      dd display_number 	 ; 47-WriteNum
153
      dd display_settings	 ; 48-SetRedrawType and SetButtonType
154
      dd sys_apm		 ; 49-Advanced Power Management (APM)
155
      dd random_shaped_window	 ; 50-Window shape & scale
156
      dd syscall_threads	 ; 51-Threads
157
      dd stack_driver_stat	 ; 52-Stack driver status
158
      dd socket 		 ; 53-Socket interface
671 Ghost 159
      dd 0
742 Rus 160
      dd sound_interface	 ; 55-Sound interface
671 Ghost 161
      dd 0
742 Rus 162
      dd sys_pcibios		 ; 57-PCI BIOS32
163
      dd file_system		 ; 58-Common file system interface
671 Ghost 164
      dd 0
742 Rus 165
      dd sys_IPC		 ; 60-Inter Process Communication
166
      dd sys_gs 		 ; 61-Direct graphics access
167
      dd sys_pci		 ; 62-PCI functions
168
      dd sys_msg_board		 ; 63-System message board
169
      dd sys_resize_app_memory	 ; 64-Resize application memory usage
283 diamond 170
      dd syscall_putimage_palette; 65-PutImagePalette
742 Rus 171
      dd sys_process_def	 ; 66-Process definitions - keyboard
172
      dd sys_window_move	 ; 67-Window move or resize
173
      dd new_services		 ; 68-Some internal services
174
      dd sys_debug_services	 ; 69-Debug
175
      dd file_system_lfn	 ; 70-Common file system interface, version 2
114 mikedld 176
      dd syscall_windowsettings  ; 71-Window settings
742 Rus 177
      dd sys_sendwindowmsg	 ; 72-Send window message
1 ha 178
 
671 Ghost 179
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
180
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
181
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
182
  align 4
183
  servetable2:
1 ha 184
 
2971 Serge 185
      dd sys_drawwindow              ; 0-DrawWindow
186
      dd syscall_setpixel            ; 1-SetPixel
187
      dd sys_getkey                  ; 2-GetKey
188
      dd sys_clock                   ; 3-GetTime
189
      dd syscall_writetext           ; 4-WriteText
190
      dd delay_hs                    ; 5-DelayHs
191
      dd syscall_openramdiskfile     ; 6-OpenRamdiskFile
192
      dd syscall_putimage            ; 7-PutImage
193
      dd sys_button                  ; 8-DefineButton
194
      dd sys_cpuusage                ; 9-GetProcessInfo
195
      dd sys_waitforevent            ; 10-WaitForEvent
196
      dd sys_getevent                ; 11-CheckForEvent
197
      dd sys_redrawstat              ; 12-BeginDraw and EndDraw
198
      dd syscall_drawrect            ; 13-DrawRect
199
      dd syscall_getscreensize       ; 14-GetScreenSize
200
      dd sys_background              ; 15-bgr
201
      dd sys_cachetodiskette         ; 16-FlushFloppyCache
202
      dd sys_getbutton               ; 17-GetButton
203
      dd sys_system                  ; 18-System Services
204
      dd paleholder                  ; 19-reserved
205
      dd cross_order                 ; 20-ResetMidi and OutputMidi
206
      dd cross_order                 ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
207
      dd cross_order                 ; 22-setting date,time,clock and alarm-clock
208
      dd sys_wait_event_timeout      ; 23-TimeOutWaitForEvent
209
      dd cross_order                 ; 24-PlayCdTrack,StopCd and GetCdPlaylist
210
      dd undefined_syscall           ; 25-reserved
211
      dd cross_order                 ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
212
      dd undefined_syscall           ; 27-reserved
213
      dd undefined_syscall           ; 28-reserved
214
      dd sys_date                    ; 29-GetDate
215
      dd cross_order                 ; 30-Get/SetCurrentDirectory
216
      dd undefined_syscall           ; 31-reserved
217
      dd undefined_syscall           ; 32-reserved
218
      dd undefined_syscall           ; 33-reserved
219
      dd undefined_syscall           ; 34-reserved
220
      dd syscall_getpixel            ; 35-GetPixel
221
      dd undefined_syscall           ; 36-reserved
222
      dd cross_order                 ; 37-GetMousePosition_ScreenRelative,.
223
      dd syscall_drawline            ; 38-DrawLine
224
      dd cross_order                 ; 39-GetBackgroundSize,ReadBgrData,.
225
      dd set_app_param               ; 40-WantEvents
226
      dd syscall_getirqowner         ; 41-GetIrqOwner
227
      dd get_irq_data                ; 42-ReadIrqData
228
      dd cross_order                 ; 43-SendDeviceData
229
      dd sys_programirq              ; 44-ProgramIrqs
230
      dd reserve_free_irq            ; 45-ReserveIrq and FreeIrq
231
      dd cross_order                 ; 46-ReservePortArea and FreePortArea
232
      dd cross_order                 ; 47-WriteNum
233
      dd cross_order                 ; 48-SetRedrawType and SetButtonType
234
      dd cross_order                 ; 49-Advanced Power Management (APM)
235
      dd cross_order                 ; 50-Window shape & scale
236
      dd cross_order                 ; 51-Threads
237
      dd cross_order                 ; 52-Stack driver status
238
      dd cross_order                 ; 53-Socket interface
239
      dd undefined_syscall           ; 54-reserved
240
      dd cross_order                 ; 55-Sound interface
241
      dd undefined_syscall           ; 56-reserved
242
      dd cross_order                 ; 57-PCI BIOS32
243
      dd cross_order                 ; 58-Common file system interface
244
      dd undefined_syscall           ; 59-reserved
245
      dd cross_order                 ; 60-Inter Process Communication
246
      dd cross_order                 ; 61-Direct graphics access
247
      dd cross_order                 ; 62-PCI functions
248
      dd cross_order                 ; 63-System message board
249
      dd cross_order                 ; 64-Resize application memory usage
250
      dd cross_order                 ; 65-PutImagePalette
251
      dd cross_order                 ; 66-Process definitions - keyboard
252
      dd cross_order                 ; 67-Window move or resize
253
      dd cross_order                 ; 68-Some internal services
254
      dd cross_order                 ; 69-Debug
255
      dd cross_order                 ; 70-Common file system interface, version 2
256
      dd cross_order                 ; 71-Window settings
257
      dd cross_order                 ; 72-Send window message
258
      dd stb_create_window           ; 73-create window
259
      dd stb_show_window             ; 74-show window
260
      dd stb_get_event               ; 75-get event
261
      dd stb_def_window_proc
671 Ghost 262
	times 255 - ( ($-servetable2) /4 )  dd undefined_syscall
742 Rus 263
      dd sys_end		 ; -1-end application
802 serge 264
 
1 ha 265
endg