Subversion Repositories Kolibri OS

Rev

Rev 1687 | Rev 1928 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1687 Rev 1859
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2
;;                                                              ;;
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
7
 
8
$Revision: 1687 $
8
$Revision: 1859 $
9
 
9
 
10
; Old style system call converter
10
; Old style system call converter
11
align 16
11
align 16
12
cross_order:
12
cross_order:
13
	; load all registers in crossed order
13
	; load all registers in crossed order
14
	mov	eax, ebx
14
	mov	eax, ebx
15
	mov	ebx, ecx
15
	mov	ebx, ecx
16
	mov	ecx, edx
16
	mov	ecx, edx
17
	mov	edx, esi
17
	mov	edx, esi
18
	mov	esi, edi
18
	mov	esi, edi
19
	movzx	edi, byte[esp+28 + 4]
19
	movzx	edi, byte[esp+28 + 4]
20
	sub	edi, 53			; all zeroes before
20
	sub	edi, 53 		; all zeroes before
21
	call	dword [servetable+edi*4]
21
	call	dword [servetable+edi*4]
22
	ret
22
	ret
23
 
23
 
24
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25
;;                                                            ;;
25
;;                                                            ;;
26
;;                   SYSTEM CALL ENTRY                        ;;
26
;;                   SYSTEM CALL ENTRY                        ;;
27
;;                                                            ;;
27
;;                                                            ;;
28
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
28
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
 
29
 
30
align 16
30
align 16
31
i40:
31
i40:
32
	pushad
32
	pushad
33
	cld
33
	cld
34
	and   eax, 0x07F
34
	and   eax, 0x07F
35
	call	dword [servetable2 + eax * 4]
35
	call	dword [servetable2 + eax * 4]
36
	popad
36
	popad
37
	iretd
37
	iretd
38
 
38
 
39
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
39
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
40
;;                                                            ;;
40
;;                                                            ;;
41
;;               SYSCALL ENTRY   --    NEW  !!!               ;;
41
;;               SYSCALL ENTRY   --    NEW  !!!               ;;
42
;;                                                            ;;
42
;;                                                            ;;
43
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
43
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44
 
44
 
45
align 32
45
align 32
46
syscall_entry:
46
syscall_entry:
47
;        sti
-
 
48
	push ecx
47
	push  ecx
-
 
48
;        sti
49
	and   eax, 3
49
;        and   eax, 3
50
	call	dword [servetable3 + eax * 4]
50
;        call    dword [servetable3 + eax * 4]
-
 
51
 
-
 
52
	mov edi, [esp+4]
-
 
53
	mov ecx, [esp+8]
-
 
54
	mov edx, [esp+12]
-
 
55
	mov ebx, [esp+16]
-
 
56
	and al, 1
-
 
57
	jz .hline
-
 
58
	mov eax, [esp+20]
-
 
59
	sti
-
 
60
	call vline
-
 
61
	jmp .done
-
 
62
.hline:
-
 
63
	mov eax, [esp+20]
-
 
64
	sti
-
 
65
	call hline
-
 
66
.done:
-
 
67
 
-
 
68
 
51
	pop	ecx
69
	pop	ecx
52
	sysret
70
	sysret
53
 
71
 
54
iglobal
72
iglobal
55
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
73
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
56
  ;; SYSTEM FUNCTIONS TABLE ;;
74
  ;; SYSTEM FUNCTIONS TABLE ;;
57
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
58
 
76
 
59
  align 4
77
  align 4
60
  servetable:
78
  servetable:
61
      dd socket 		 ; 53-Socket interface
79
      dd socket 		 ; 53-Socket interface
62
      dd 0
80
      dd 0
63
      dd 0
81
      dd 0
64
      dd 0
82
      dd 0
65
      dd 0
83
      dd 0
66
      dd file_system		 ; 58-Common file system interface
84
      dd file_system		 ; 58-Common file system interface
67
      dd 0
85
      dd 0
68
      dd 0
86
      dd 0
69
      dd 0
87
      dd 0
70
      dd 0		 	 ; 62-PCI functions
88
      dd 0			 ; 62-PCI functions
71
      dd sys_msg_board		 ; 63-System message board
89
      dd sys_msg_board		 ; 63-System message board
72
 
90
 
73
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
91
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
74
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
92
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
75
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
93
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
76
  align 4
94
  align 4
77
  servetable2:
95
  servetable2:
78
 
96
 
79
      dd syscall_draw_window	 ; 0-DrawWindow
97
      dd syscall_draw_window	 ; 0-DrawWindow
80
      dd syscall_setpixel	 ; 1-SetPixel
98
      dd syscall_setpixel	 ; 1-SetPixel
81
      dd sys_getkey		 ; 2-GetKey
99
      dd sys_getkey		 ; 2-GetKey
82
      dd sys_clock		 ; 3-GetTime
100
      dd sys_clock		 ; 3-GetTime
83
      dd syscall_writetext	 ; 4-WriteText
101
      dd syscall_writetext	 ; 4-WriteText
84
      dd delay_hs		 ; 5-DelayHs
102
      dd delay_hs		 ; 5-DelayHs
85
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
103
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
86
      dd syscall_putimage	 ; 7-PutImage
104
      dd syscall_putimage	 ; 7-PutImage
87
      dd syscall_button 	 ; 8-DefineButton
105
      dd syscall_button 	 ; 8-DefineButton
88
      dd sys_cpuusage		 ; 9-GetProcessInfo
106
      dd sys_cpuusage		 ; 9-GetProcessInfo
89
      dd sys_waitforevent	 ; 10-WaitForEvent
107
      dd sys_waitforevent	 ; 10-WaitForEvent
90
      dd sys_getevent		 ; 11-CheckForEvent
108
      dd sys_getevent		 ; 11-CheckForEvent
91
      dd sys_redrawstat 	 ; 12-BeginDraw and EndDraw
109
      dd sys_redrawstat 	 ; 12-BeginDraw and EndDraw
92
      dd syscall_drawrect	 ; 13-DrawRect
110
      dd syscall_drawrect	 ; 13-DrawRect
93
      dd syscall_getscreensize	 ; 14-GetScreenSize
111
      dd syscall_getscreensize	 ; 14-GetScreenSize
94
      dd sys_background 	 ; 15-bgr
112
      dd sys_background 	 ; 15-bgr
95
      dd sys_cachetodiskette	 ; 16-FlushFloppyCache
113
      dd sys_cachetodiskette	 ; 16-FlushFloppyCache
96
      dd sys_getbutton		 ; 17-GetButton
114
      dd sys_getbutton		 ; 17-GetButton
97
      dd sys_system		 ; 18-System Services
115
      dd sys_system		 ; 18-System Services
98
      dd paleholder		 ; 19-reserved
116
      dd paleholder		 ; 19-reserved
99
      dd sys_midi		 ; 20-ResetMidi and OutputMidi
117
      dd sys_midi		 ; 20-ResetMidi and OutputMidi
100
      dd sys_setup		 ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
118
      dd sys_setup		 ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
101
      dd sys_settime		 ; 22-setting date,time,clock and alarm-clock
119
      dd sys_settime		 ; 22-setting date,time,clock and alarm-clock
102
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
120
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
103
      dd undefined_syscall	; syscall_cdaudio	 ; 24-PlayCdTrack,StopCd and GetCdPlaylist
121
      dd undefined_syscall	; syscall_cdaudio        ; 24-PlayCdTrack,StopCd and GetCdPlaylist
104
      dd undefined_syscall	 ; 25-reserved
122
      dd undefined_syscall	 ; 25-reserved
105
      dd sys_getsetup		 ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
123
      dd sys_getsetup		 ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
106
      dd undefined_syscall	 ; 27-reserved
124
      dd undefined_syscall	 ; 27-reserved
107
      dd undefined_syscall	 ; 28-reserved
125
      dd undefined_syscall	 ; 28-reserved
108
      dd sys_date		 ; 29-GetDate
126
      dd sys_date		 ; 29-GetDate
109
      dd sys_current_directory	 ; 30-Get/SetCurrentDirectory
127
      dd sys_current_directory	 ; 30-Get/SetCurrentDirectory
110
      dd undefined_syscall	 ; 31-reserved
128
      dd undefined_syscall	 ; 31-reserved
111
      dd undefined_syscall	 ; 32-reserved
129
      dd undefined_syscall	 ; 32-reserved
112
      dd undefined_syscall	 ; 33-reserved
130
      dd undefined_syscall	 ; 33-reserved
113
      dd undefined_syscall	 ; 34-reserved
131
      dd undefined_syscall	 ; 34-reserved
114
      dd syscall_getpixel	 ; 35-GetPixel
132
      dd syscall_getpixel	 ; 35-GetPixel
115
      dd syscall_getarea	 ; 36-GetArea
133
      dd syscall_getarea	 ; 36-GetArea
116
      dd readmousepos		 ; 37-GetMousePosition_ScreenRelative,.
134
      dd readmousepos		 ; 37-GetMousePosition_ScreenRelative,.
117
      dd syscall_drawline	 ; 38-DrawLine
135
      dd syscall_drawline	 ; 38-DrawLine
118
      dd sys_getbackground	 ; 39-GetBackgroundSize,ReadBgrData,.
136
      dd sys_getbackground	 ; 39-GetBackgroundSize,ReadBgrData,.
119
      dd set_app_param		 ; 40-WantEvents
137
      dd set_app_param		 ; 40-WantEvents
120
      dd syscall_getirqowner	 ; 41-GetIrqOwner
138
      dd syscall_getirqowner	 ; 41-GetIrqOwner
121
      dd get_irq_data		 ; 42-ReadIrqData
139
      dd get_irq_data		 ; 42-ReadIrqData
122
      dd sys_outport		 ; 43-SendDeviceData
140
      dd sys_outport		 ; 43-SendDeviceData
123
      dd sys_programirq 	 ; 44-ProgramIrqs
141
      dd sys_programirq 	 ; 44-ProgramIrqs
124
      dd reserve_free_irq	 ; 45-ReserveIrq and FreeIrq
142
      dd reserve_free_irq	 ; 45-ReserveIrq and FreeIrq
125
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
143
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
126
      dd display_number 	 ; 47-WriteNum
144
      dd display_number 	 ; 47-WriteNum
127
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
145
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
128
      dd sys_apm		 ; 49-Advanced Power Management (APM)
146
      dd sys_apm		 ; 49-Advanced Power Management (APM)
129
      dd syscall_set_window_shape ; 50-Window shape & scale
147
      dd syscall_set_window_shape ; 50-Window shape & scale
130
      dd syscall_threads	 ; 51-Threads
148
      dd syscall_threads	 ; 51-Threads
131
      dd stack_driver_stat	 ; 52-Stack driver status
149
      dd stack_driver_stat	 ; 52-Stack driver status
132
      dd cross_order		 ; 53-Socket interface
150
      dd cross_order		 ; 53-Socket interface
133
      dd undefined_syscall	 ; 54-reserved
151
      dd undefined_syscall	 ; 54-reserved
134
      dd sound_interface	 ; 55-Sound interface
152
      dd sound_interface	 ; 55-Sound interface
135
      dd undefined_syscall	 ; 56-reserved
153
      dd undefined_syscall	 ; 56-reserved
136
      dd sys_pcibios		 ; 57-PCI BIOS32
154
      dd sys_pcibios		 ; 57-PCI BIOS32
137
      dd cross_order		 ; 58-Common file system interface
155
      dd cross_order		 ; 58-Common file system interface
138
      dd undefined_syscall	 ; 59-reserved
156
      dd undefined_syscall	 ; 59-reserved
139
      dd sys_IPC		 ; 60-Inter Process Communication
157
      dd sys_IPC		 ; 60-Inter Process Communication
140
      dd sys_gs 		 ; 61-Direct graphics access
158
      dd sys_gs 		 ; 61-Direct graphics access
141
      dd pci_api		 ; 62-PCI functions
159
      dd pci_api		 ; 62-PCI functions
142
      dd cross_order		 ; 63-System message board
160
      dd cross_order		 ; 63-System message board
143
      dd sys_resize_app_memory	 ; 64-Resize application memory usage
161
      dd sys_resize_app_memory	 ; 64-Resize application memory usage
144
      dd sys_putimage_palette	 ; 65-PutImagePalette
162
      dd sys_putimage_palette	 ; 65-PutImagePalette
145
      dd sys_process_def	 ; 66-Process definitions - keyboard
163
      dd sys_process_def	 ; 66-Process definitions - keyboard
146
      dd syscall_move_window	 ; 67-Window move or resize
164
      dd syscall_move_window	 ; 67-Window move or resize
147
      dd f68			 ; 68-Some internal services
165
      dd f68			 ; 68-Some internal services
148
      dd sys_debug_services	 ; 69-Debug
166
      dd sys_debug_services	 ; 69-Debug
149
      dd file_system_lfn	 ; 70-Common file system interface, version 2
167
      dd file_system_lfn	 ; 70-Common file system interface, version 2
150
      dd syscall_window_settings ; 71-Window settings
168
      dd syscall_window_settings ; 71-Window settings
151
      dd sys_sendwindowmsg	 ; 72-Send window message
169
      dd sys_sendwindowmsg	 ; 72-Send window message
152
	times 127 - ( ($-servetable2) /4 )  dd undefined_syscall
170
	times 127 - ( ($-servetable2) /4 )  dd undefined_syscall
153
      dd sys_end		 ; -1-end application
171
      dd sys_end		 ; -1-end application
154
 
172
 
155
align 4
173
align 4
156
servetable3:	; Kolibri-A special service
174
servetable3:	; Kolibri-A special service
157
 
175
 
158
	dd	paleholder	 ; 0
176
	dd	hline	    ; 0
159
	dd	paleholder	 ; 1
177
	dd	vline	    ; 1
160
	dd	paleholder	 ; 2
178
	dd	paleholder	 ; 2
161
	dd	sys_end ; last
179
	dd	sys_end ; last
162
 
180
 
163
endg
181
endg