Subversion Repositories Kolibri OS

Rev

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

Rev 665 Rev 671
Line 3... Line 3...
3
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
-
 
8
$Revision: 671 $
-
 
9
 
-
 
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
-
 
19
	mov	edi, [esp+28 + 4]
-
 
20
	and	edi,0xff
-
 
21
	call	dword [servetable+edi*4]
Line 8... Line 22...
8
$Revision: 665 $
22
	ret
9
 
23
 
10
 
24
 
11
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
12
;;                                                            ;;
26
;;                                                            ;;
Line -... Line 27...
-
 
27
;;                   SYSTEM CALL ENTRY                        ;;
13
;;                   SYSTEM CALL ENTRY                        ;;
28
;;                                                            ;;
14
;;                                                            ;;
29
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
16
 
-
 
17
align 16
30
 
18
i40:
31
 
19
; diamond, 27.03.2007: handler does not require disabled interrupts
-
 
20
;                      so interrupts remain enabled when calling int 0x40
-
 
21
      pushad
-
 
22
      cld
-
 
23
 
-
 
24
 ;     mov   ax, word app_data
-
 
25
 ;     mov   ds, ax
-
 
26
 ;     mov   es, ax
-
 
27
 
-
 
28
      ; load all registers in crossed order
-
 
29
        mov     eax, ebx
-
 
30
        mov     ebx, ecx
-
 
31
        mov     ecx, edx
-
 
32
        mov     edx, esi
-
 
33
        mov     esi, edi
-
 
34
        mov     edi, [esp+28]
-
 
35
 
32
align 16
36
      ; enable interupts  -  a task switch or an IRQ _CAN_ interrupt i40 handler
33
i40:
37
;      sti
-
 
38
      push  eax
-
 
39
      and   edi,0xff
34
	pushad
40
      call  dword [servetable+edi*4]
35
	cld
41
      pop   eax
-
 
42
 
-
 
43
      popad
36
	and	eax, 0xff
44
      iretd
37
	call	dword [servetable2 + eax * 4]
45
 
38
	popad
46
 
39
	iretd
47
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 59... Line 52...
59
	mov	ebp, [ebp]		; ebp - original ebp
52
	mov	ebp, [ebp]		; ebp - original ebp
60
	;------------------
53
	;------------------
61
	pushad
54
	pushad
62
	cld
55
	cld
Line 63... Line -...
63
 
-
 
64
        mov     eax, ebx
-
 
65
        mov     ebx, ecx
-
 
66
        mov     ecx, edx
-
 
67
        mov     edx, esi
-
 
68
        mov     esi, edi
-
 
69
        mov     edi, [esp + 28]
-
 
70
 
-
 
71
	push	eax
56
 
72
	and	edi, 0xff
57
	and	eax, 0xff
73
	call	dword [servetable + edi * 4]
-
 
Line 74... Line 58...
74
	pop	eax
58
	call	dword [servetable2 + eax * 4]
75
 
59
 
76
	popad
60
	popad
77
	;------------------
61
	;------------------
Line 97... Line 81...
97
        lea     ecx, [esp+4]
81
        lea     ecx, [esp+4]
98
        xchg    ecx, [ss:tss._esp0]
82
        xchg    ecx, [ss:tss._esp0]
99
        sti
83
        sti
100
        push    ecx
84
        push    ecx
101
        mov     ecx, [ecx]
85
        mov     ecx, [ecx]
102
 
-
 
103
  ;      mov     [ss:sysenter_stack - 4], eax
-
 
104
  ;      mov     eax, [ss:CURRENT_TASK]
-
 
105
  ;      shl     eax, 8
-
 
106
  ;      mov     eax, [ss:SLOT_BASE + eax + APPDATA.pl0_stack]
-
 
107
  ;      lea     esp, [eax + RING0_STACK_SIZE]           ; configure ESP
-
 
108
  ;      mov     eax, [ss:sysenter_stack - 4]            ; eax - original eax, from app
-
 
109
 
-
 
110
	;------------------
86
	;------------------
111
	pushad
87
	pushad
112
	cld
88
	cld
Line 113... Line -...
113
 
-
 
114
  ;      mov     ax, word app_data
-
 
115
  ;      mov     ds, ax
-
 
116
  ;      mov     es, ax
-
 
117
 
-
 
118
        mov     eax, ebx
-
 
119
        mov     ebx, ecx
-
 
120
        mov     ecx, edx
-
 
121
        mov     edx, esi
-
 
122
        mov     esi, edi
-
 
123
        mov     edi, [esp + 28]
-
 
124
 
-
 
125
	push	eax
89
 
126
	and	edi, 0xff
90
	and	eax, 0xff
127
	call	dword [servetable + edi * 4]
-
 
Line 128... Line 91...
128
	pop	eax
91
	call	dword [servetable2 + eax * 4]
129
 
92
 
130
	popad
-
 
131
	;------------------
93
	popad
132
 
94
	;------------------
133
        mov     ecx, [ss:esp+4]
95
        mov     ecx, [ss:esp+4]
134
        pop     esp
96
        pop     esp
135
	sysret
97
	sysret
Line 141... Line 103...
141
  align 4
103
  align 4
142
  servetable:
104
  servetable:
Line 143... Line 105...
143
 
105
 
144
      dd sys_drawwindow          ; 0-DrawWindow
106
      dd sys_drawwindow          ; 0-DrawWindow
145
      dd syscall_setpixel        ; 1-SetPixel
107
      dd syscall_setpixel        ; 1-SetPixel
146
      dd sys_getkey              ; 2-GetKey
108
      dd 0
147
      dd sys_clock               ; 3-GetTime
109
      dd 0
148
      dd syscall_writetext       ; 4-WriteText
110
      dd syscall_writetext       ; 4-WriteText
149
      dd delay_hs                ; 5-DelayHs
111
      dd delay_hs                ; 5-DelayHs
150
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
112
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
151
      dd syscall_putimage        ; 7-PutImage
113
      dd 0
152
      dd sys_button              ; 8-DefineButton
114
      dd sys_button              ; 8-DefineButton
153
      dd sys_cpuusage            ; 9-GetProcessInfo
115
      dd sys_cpuusage            ; 9-GetProcessInfo
154
      dd sys_waitforevent        ; 10-WaitForEvent
116
      dd 0
155
      dd sys_getevent            ; 11-CheckForEvent
117
      dd 0
156
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
118
      dd 0
157
      dd syscall_drawrect        ; 13-DrawRect
119
      dd 0
158
      dd syscall_getscreensize   ; 14-GetScreenSize
120
      dd 0
159
      dd sys_background          ; 15-bgr
121
      dd sys_background          ; 15-bgr
160
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
122
      dd 0
161
      dd sys_getbutton           ; 17-GetButton
123
      dd 0
162
      dd sys_system              ; 18-System Services
124
      dd sys_system              ; 18-System Services
163
      dd paleholder;undefined_syscall       ; 19-reserved
125
      dd 0
164
      dd sys_midi                ; 20-ResetMidi and OutputMidi
126
      dd sys_midi                ; 20-ResetMidi and OutputMidi
165
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
127
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
166
      dd sys_settime             ; 22-setting date,time,clock and alarm-clock
128
      dd sys_settime             ; 22-setting date,time,clock and alarm-clock
167
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
129
      dd 0
168
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
130
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
169
      dd sys_sb16                ; 25-SetSb16
131
      dd sys_sb16                ; 25-SetSb16
170
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
132
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
171
      dd undefined_syscall       ; 27-reserved
133
      dd 0
172
      dd sys_sb16II              ; 28-SetSb16
134
      dd sys_sb16II              ; 28-SetSb16
173
      dd sys_date                ; 29-GetDate
135
      dd 0
174
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
136
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
175
      dd undefined_syscall       ; 31-reserved
137
      dd 0
176
      dd syscall_delramdiskfile  ; 32-DelRamdiskFile
138
      dd syscall_delramdiskfile  ; 32-DelRamdiskFile
177
      dd syscall_writeramdiskfile; 33-WriteRamdiskFile
139
      dd syscall_writeramdiskfile; 33-WriteRamdiskFile
178
      dd undefined_syscall       ; 34-reserved
140
      dd 0
179
      dd syscall_getpixel        ; 35-GetPixel
141
      dd 0
180
      dd syscall_readstring      ; 36-ReadString (not yet ready)
142
      dd 0
181
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
143
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
182
      dd syscall_drawline        ; 38-DrawLine
144
      dd syscall_drawline        ; 38-DrawLine
183
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
145
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
184
      dd set_app_param           ; 40-WantEvents
146
      dd 0
185
      dd syscall_getirqowner     ; 41-GetIrqOwner
147
      dd syscall_getirqowner     ; 41-GetIrqOwner
186
      dd get_irq_data            ; 42-ReadIrqData
148
      dd get_irq_data            ; 42-ReadIrqData
187
      dd sys_outport             ; 43-SendDeviceData
149
      dd sys_outport             ; 43-SendDeviceData
188
      dd sys_programirq          ; 44-ProgramIrqs
150
      dd sys_programirq          ; 44-ProgramIrqs
Line 193... Line 155...
193
      dd sys_apm                 ; 49-Advanced Power Management (APM)
155
      dd sys_apm                 ; 49-Advanced Power Management (APM)
194
      dd random_shaped_window    ; 50-Window shape & scale
156
      dd random_shaped_window    ; 50-Window shape & scale
195
      dd syscall_threads         ; 51-Threads
157
      dd syscall_threads         ; 51-Threads
196
      dd stack_driver_stat       ; 52-Stack driver status
158
      dd stack_driver_stat       ; 52-Stack driver status
197
      dd socket                  ; 53-Socket interface
159
      dd socket                  ; 53-Socket interface
198
      dd user_events             ; 54-User events
160
      dd 0
199
      dd sound_interface         ; 55-Sound interface
161
      dd sound_interface         ; 55-Sound interface
200
      dd undefined_syscall       ; 56-reserved
162
      dd 0
201
      dd sys_pcibios             ; 57-reserved
163
      dd sys_pcibios             ; 57-PCI BIOS32
202
      dd file_system             ; 58-Common file system interface
164
      dd file_system             ; 58-Common file system interface
203
      dd undefined_syscall       ; 59-reserved
165
      dd 0
204
      dd sys_IPC                 ; 60-Inter Process Communication
166
      dd sys_IPC                 ; 60-Inter Process Communication
205
      dd sys_gs                  ; 61-Direct graphics access
167
      dd sys_gs                  ; 61-Direct graphics access
206
      dd sys_pci                 ; 62-PCI functions
168
      dd sys_pci                 ; 62-PCI functions
207
      dd sys_msg_board           ; 63-System message board
169
      dd sys_msg_board           ; 63-System message board
208
      dd sys_resize_app_memory   ; 64-Resize application memory usage
170
      dd sys_resize_app_memory   ; 64-Resize application memory usage
Line 213... Line 175...
213
      dd sys_debug_services      ; 69-Debug
175
      dd sys_debug_services      ; 69-Debug
214
      dd file_system_lfn         ; 70-Common file system interface, version 2
176
      dd file_system_lfn         ; 70-Common file system interface, version 2
215
      dd syscall_windowsettings  ; 71-Window settings
177
      dd syscall_windowsettings  ; 71-Window settings
216
      dd sys_sendwindowmsg       ; 72-Send window message
178
      dd sys_sendwindowmsg       ; 72-Send window message
Line -... Line 179...
-
 
179
 
217
 
180
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
181
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
-
 
182
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
183
  align 4
Line -... Line 184...
-
 
184
  servetable2:
-
 
185
 
-
 
186
      dd cross_order             ; 0-DrawWindow
-
 
187
      dd cross_order             ; 1-SetPixel
-
 
188
      dd sys_getkey              ; 2-GetKey
-
 
189
      dd sys_clock               ; 3-GetTime
-
 
190
      dd cross_order             ; 4-WriteText
-
 
191
      dd cross_order             ; 5-DelayHs
-
 
192
      dd cross_order             ; 6-OpenRamdiskFile
-
 
193
      dd syscall_putimage        ; 7-PutImage
-
 
194
      dd cross_order             ; 8-DefineButton
-
 
195
      dd cross_order             ; 9-GetProcessInfo
-
 
196
      dd sys_waitforevent        ; 10-WaitForEvent
-
 
197
      dd sys_getevent            ; 11-CheckForEvent
-
 
198
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
-
 
199
      dd syscall_drawrect        ; 13-DrawRect
-
 
200
      dd syscall_getscreensize   ; 14-GetScreenSize
-
 
201
      dd cross_order             ; 15-bgr
-
 
202
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
-
 
203
      dd sys_getbutton           ; 17-GetButton
-
 
204
      dd cross_order             ; 18-System Services
-
 
205
      dd paleholder              ; 19-reserved
-
 
206
      dd cross_order             ; 20-ResetMidi and OutputMidi
-
 
207
      dd cross_order             ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
-
 
208
      dd cross_order             ; 22-setting date,time,clock and alarm-clock
-
 
209
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
-
 
210
      dd cross_order             ; 24-PlayCdTrack,StopCd and GetCdPlaylist
-
 
211
      dd cross_order             ; 25-SetSb16
-
 
212
      dd cross_order             ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
-
 
213
      dd undefined_syscall       ; 27-reserved
-
 
214
      dd cross_order             ; 28-SetSb16
-
 
215
      dd sys_date                ; 29-GetDate
-
 
216
      dd cross_order             ; 30-Get/SetCurrentDirectory
-
 
217
      dd undefined_syscall       ; 31-reserved
-
 
218
      dd cross_order             ; 32-DelRamdiskFile
-
 
219
      dd cross_order             ; 33-WriteRamdiskFile
-
 
220
      dd undefined_syscall       ; 34-reserved
-
 
221
      dd syscall_getpixel        ; 35-GetPixel
-
 
222
      dd undefined_syscall       ; 36-reserved
-
 
223
      dd cross_order             ; 37-GetMousePosition_ScreenRelative,.
-
 
224
      dd cross_order             ; 38-DrawLine
-
 
225
      dd cross_order             ; 39-GetBackgroundSize,ReadBgrData,.
-
 
226
      dd set_app_param           ; 40-WantEvents
-
 
227
      dd cross_order             ; 41-GetIrqOwner
-
 
228
      dd cross_order             ; 42-ReadIrqData
-
 
229
      dd cross_order             ; 43-SendDeviceData
-
 
230
      dd cross_order             ; 44-ProgramIrqs
-
 
231
      dd cross_order             ; 45-ReserveIrq and FreeIrq
-
 
232
      dd cross_order             ; 46-ReservePortArea and FreePortArea
-
 
233
      dd cross_order             ; 47-WriteNum
-
 
234
      dd cross_order             ; 48-SetRedrawType and SetButtonType
-
 
235
      dd cross_order             ; 49-Advanced Power Management (APM)
-
 
236
      dd cross_order             ; 50-Window shape & scale
-
 
237
      dd cross_order             ; 51-Threads
-
 
238
      dd cross_order             ; 52-Stack driver status
-
 
239
      dd cross_order             ; 53-Socket interface
-
 
240
      dd undefined_syscall       ; 54-reserved
-
 
241
      dd cross_order             ; 55-Sound interface
-
 
242
      dd undefined_syscall       ; 56-reserved
-
 
243
      dd cross_order             ; 57-PCI BIOS32
-
 
244
      dd cross_order             ; 58-Common file system interface
-
 
245
      dd undefined_syscall       ; 59-reserved
-
 
246
      dd cross_order             ; 60-Inter Process Communication
-
 
247
      dd cross_order             ; 61-Direct graphics access
-
 
248
      dd cross_order             ; 62-PCI functions
-
 
249
      dd cross_order             ; 63-System message board
-
 
250
      dd cross_order             ; 64-Resize application memory usage
-
 
251
      dd cross_order             ; 65-PutImagePalette
-
 
252
      dd cross_order             ; 66-Process definitions - keyboard
-
 
253
      dd cross_order             ; 67-Window move or resize
-
 
254
      dd cross_order             ; 68-Some internal services
-
 
255
      dd cross_order             ; 69-Debug
-
 
256
      dd cross_order             ; 70-Common file system interface, version 2
-
 
257
      dd cross_order             ; 71-Window settings
218
  times 255 - ( ($-servetable) /4 )  dd undefined_syscall
258
      dd cross_order             ; 72-Send window message
-
 
259
	times 255 - ( ($-servetable2) /4 )  dd undefined_syscall
219
 
260
      dd sys_end                 ; -1-end application