Rev 8985 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2288 | clevermous | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
||
5363 | yogev_ezra | 3 | ;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;; |
2288 | clevermous | 4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
||
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
7 | |||
8 | $Revision: 8986 $ |
||
9 | |||
10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
11 | ;; ;; |
||
12 | ;; SYSENTER ENTRY ;; |
||
13 | ;; ;; |
||
14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
15 | |||
16 | align 32 |
||
17 | sysenter_entry: |
||
8052 | rgimad | 18 | ; Setting up the stack |
2288 | clevermous | 19 | mov esp, [ss:tss._esp0] |
20 | sti |
||
21 | push ebp ; save app esp + 4 |
||
22 | mov ebp, [ebp] ; ebp - original ebp |
||
23 | ;------------------ |
||
24 | pushad |
||
25 | cld |
||
26 | |||
3303 | clevermous | 27 | call protect_from_terminate |
28 | |||
29 | movzx eax, byte [esp+28] |
||
3304 | clevermous | 30 | mov edx, dword [esp+20] |
2288 | clevermous | 31 | call dword [servetable2 + eax * 4] |
32 | |||
3303 | clevermous | 33 | call unprotect_from_terminate |
2288 | clevermous | 34 | popad |
35 | ;------------------ |
||
8052 | rgimad | 36 | xchg ecx, [ss:esp] ; in the stack top - app ecx, ecx - app esp + 4 |
2288 | clevermous | 37 | sub ecx, 4 |
38 | xchg edx, [ecx] ; edx - return point, & save original edx |
||
39 | push edx |
||
40 | mov edx, [ss:esp + 4] |
||
41 | mov [ecx + 4], edx ; save original ecx |
||
42 | pop edx |
||
43 | sysexit |
||
44 | |||
45 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
46 | ;; ;; |
||
47 | ;; SYSTEM CALL ENTRY ;; |
||
48 | ;; ;; |
||
49 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
50 | |||
51 | align 16 |
||
52 | i40: |
||
53 | pushad |
||
54 | cld |
||
3303 | clevermous | 55 | call protect_from_terminate |
56 | movzx eax, byte [esp+28] |
||
3304 | clevermous | 57 | mov edx, dword [esp+20] |
2288 | clevermous | 58 | call dword [servetable2 + eax * 4] |
3303 | clevermous | 59 | call unprotect_from_terminate |
2288 | clevermous | 60 | popad |
61 | iretd |
||
62 | |||
63 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
64 | ;; ;; |
||
65 | ;; SYSCALL ENTRY ;; |
||
66 | ;; ;; |
||
67 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
68 | align 32 |
||
69 | syscall_entry: |
||
70 | ; cli syscall clear IF |
||
71 | xchg esp, [ss:tss._esp0] |
||
72 | push ecx |
||
73 | lea ecx, [esp+4] |
||
74 | xchg ecx, [ss:tss._esp0] |
||
75 | sti |
||
76 | push ecx |
||
77 | mov ecx, [ecx] |
||
78 | ;------------------ |
||
79 | pushad |
||
80 | cld |
||
3303 | clevermous | 81 | call protect_from_terminate |
2288 | clevermous | 82 | |
3303 | clevermous | 83 | movzx eax, byte [esp+28] |
3304 | clevermous | 84 | mov edx, dword [esp+20] |
2288 | clevermous | 85 | call dword [servetable2 + eax * 4] |
86 | |||
3303 | clevermous | 87 | call unprotect_from_terminate |
2288 | clevermous | 88 | popad |
89 | ;------------------ |
||
90 | mov ecx, [ss:esp+4] |
||
91 | pop esp |
||
92 | sysret |
||
93 | |||
94 | iglobal |
||
95 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
96 | ;; SYSTEM FUNCTIONS TABLE ;; |
||
97 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
98 | align 4 |
||
99 | servetable2: |
||
100 | |||
8986 | turbocat | 101 | dd syscall_draw_window ; 0 - define and draw the window; |
102 | dd syscall_setpixel ; 1 - put pixel in the window; |
||
103 | dd syscall_getkey ; 2 - get the code of the pressed key; |
||
104 | dd syscall_clock ; 3 - get system time; |
||
105 | dd syscall_writetext ; 4 - draw text string; |
||
106 | dd syscall_delay_hs_unprotected ; 5 - delay; |
||
107 | dd syscall_undefined ; 6 - system call undefined; |
||
108 | dd syscall_putimage ; 7 - draw image in the window; |
||
109 | dd syscall_button ; 8 - define/delete the button; |
||
110 | dd syscall_thread_info ; 9 - information on execution thread; |
||
111 | dd syscall_waitforevent ; 10 - wait for event; |
||
112 | dd syscall_checkforevent ; 11 - check for event, no wait; |
||
113 | dd syscall_redrawstat ; 12 - begin/end window redraw; |
||
114 | dd syscall_drawrect ; 13 - draw a rectangle in the window; |
||
115 | dd syscall_getscreensize ; 14 - get screen size; |
||
116 | dd syscall_background ; 15 - working with the background; |
||
117 | dd syscall_cachetodiskette ; 16 - save ramdisk on a floppy; |
||
118 | dd syscall_getbutton ; 17 - get the identifier of the pressed button; |
||
119 | dd syscall_system ; 18 - system services; |
||
120 | dd syscall_undefined ; 19 - system call undefined; |
||
121 | dd syscall_midi ; 20 - reset MIDI and output MIDI; |
||
122 | dd syscall_setup ; 21 - setting system parameters; |
||
123 | dd syscall_settime ; 22 - setting date, time, clock and alarm-clock; |
||
124 | dd syscall_wait_event_timeout ; 23 - wait for event with timeout; |
||
125 | dd syscall_cdaudio ; 24 - work with a CD player; |
||
126 | dd syscall_putarea_backgr ; 25 - put area to background; |
||
127 | dd syscall_getsetup ; 26 - get system parameters; |
||
128 | dd syscall_undefined ; 27 - system call undefined; |
||
129 | dd syscall_undefined ; 28 - system call undefined; |
||
130 | dd syscall_date ; 29 - get date; |
||
131 | dd syscall_current_directory ; 30 - get/set current directory; |
||
132 | dd syscall_undefined ; 31 - system call undefined; |
||
133 | dd syscall_undefined ; 32 - system call undefined; |
||
134 | dd syscall_undefined ; 33 - system call undefined; |
||
135 | dd syscall_getpixel_WinMap ; 34 - find out who the screen point belongs to; |
||
136 | dd syscall_getpixel ; 35 - read the color of the pixel on the screen; |
||
137 | dd syscall_getarea ; 36 - read the screen area; |
||
138 | dd syscall_get_mouse_pos ; 37 - work with the mouse; |
||
139 | dd syscall_drawline ; 38 - draw a line; |
||
140 | dd syscall_getbackground ; 39 - get background info; |
||
141 | dd syscall_set_eventmask ; 40 - set event mask; |
||
142 | dd syscall_undefined ; 41 - system call undefined; |
||
143 | dd syscall_undefined ; 42 - system call undefined; |
||
144 | dd syscall_outport ; 43 - input / output to the port; |
||
145 | dd syscall_undefined ; 44 - system call undefined; |
||
146 | dd syscall_undefined ; 45 - system call undefined; |
||
147 | dd syscall_reserveportarea ; 46 - reserve port area and free port area; |
||
148 | dd syscall_putnumber ; 47 - print a number to the window; |
||
149 | dd syscall_window_styles ; 48 - window display styles; |
||
150 | dd syscall_apm ; 49 - Advanced Power Management (APM); |
||
151 | dd syscall_set_window_shape ; 50 - window shape & scale; |
||
152 | dd syscall_threads ; 51 - threads; |
||
153 | dd syscall_undefined ; 52 - system call undefined; |
||
154 | dd syscall_undefined ; 53 - system call undefined; |
||
155 | dd syscall_clipboard ; 54 - working with the clipboard; |
||
156 | dd syscall_sound_interface ; 55 - sound interface; |
||
157 | dd syscall_undefined ; 56 - system call undefined; |
||
158 | dd syscall_pcibios ; 57 - PCI BIOS32; |
||
159 | dd syscall_undefined ; 58 - system call undefined; |
||
160 | dd syscall_undefined ; 59 - system call undefined; |
||
161 | dd syscall_IPC ; 60 - Inter Process Communication(IPC); |
||
162 | dd syscall_dga ; 61 - direct graphics access; |
||
163 | dd syscall_pci_api ; 62 - PCI functions; |
||
164 | dd syscall_msg_board ; 63 - system message board; |
||
165 | dd syscall_resize_app_memory ; 64 - resize application memory usage; |
||
166 | dd syscall_putimage_palette ; 65 - display an image with a palette in the window; |
||
167 | dd syscall_process_def ; 66 - process definitions - keyboard; |
||
168 | dd syscall_move_window ; 67 - window move or resize; |
||
169 | dd syscall_some_intrenal_services ; 68 - some internal services; |
||
170 | dd syscall_debug_services ; 69 - debug services; |
||
171 | dd syscall_file_system_lfn ; 70 - file system interface; |
||
172 | dd syscall_window_settings ; 71 - window settings; |
||
173 | dd syscall_send_window_msg ; 72 - send window message; |
||
174 | dd syscall_blit_32 ; 73 - graphic blitter; |
||
175 | dd syscall_network ; 74 - work with network devices; |
||
176 | dd syscall_socket ; 75 - work with network sockets; |
||
177 | dd syscall_protocols ; 76 - network options and statistics; |
||
178 | dd syscall_posix_subsystem ; 77 - POSIX subsystem; |
||
179 | dd syscall_undefined ; 78 - system call undefined; |
||
180 | dd syscall_undefined ; 79 - system call undefined; |
||
181 | dd syscall_fs_diff_encodings ; 80 - file system interface for different encodings; |
||
6079 | serge | 182 | |
8986 | turbocat | 183 | times 255 - ( ($-servetable2) /4 ) dd syscall_undefined |
184 | dd syscall_end ; -1-end application |
||
2288 | clevermous | 185 | |
186 | endg |