# $Id: user.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name	user
id	2
length	540

1   pascal MessageBox(word ptr ptr word) MessageBox
#2 OLDEXITWINDOWS
#3 ENABLEOEMLAYER
#4 DISABLEOEMLAYER
5   pascal InitApp(word) USER_InitApp
6   pascal PostQuitMessage(word) PostQuitMessage
7   pascal ExitWindows(long word) ExitWindows
10  pascal SetTimer(word word word segptr) SetTimer
11  pascal SetSystemTimer(word word word segptr) SetSystemTimer
12  pascal KillTimer(word word) KillTimer
13  pascal GetTickCount() GetTickCount
14  pascal GetTimerResolution() GetTimerResolution
15  pascal GetCurrentTime() GetTickCount
16  pascal ClipCursor(ptr) ClipCursor
17  pascal GetCursorPos(ptr) GetCursorPos
18  pascal SetCapture(word) SetCapture
19  pascal ReleaseCapture() ReleaseCapture
20  pascal SetDoubleClickTime(word) SetDoubleClickTime
21  pascal GetDoubleClickTime() GetDoubleClickTime
22  pascal SetFocus(word) SetFocus
23  pascal GetFocus() GetFocus
24  pascal RemoveProp(word ptr) RemoveProp
25  pascal GetProp(word ptr) GetProp
26  pascal SetProp(word ptr word) SetProp
27  pascal EnumProps(word ptr) EnumProps
28  pascal ClientToScreen(word ptr) ClientToScreen
29  pascal ScreenToClient(word ptr) ScreenToClient
30  pascal WindowFromPoint(long) WindowFromPoint
31  pascal IsIconic(word) IsIconic
32  pascal GetWindowRect(word ptr) GetWindowRect
33  pascal GetClientRect(word ptr) GetClientRect
34  pascal EnableWindow(word word) EnableWindow
35  pascal IsWindowEnabled(word) IsWindowEnabled
36  pascal GetWindowText(word segptr word) WIN16_GetWindowText
37  pascal SetWindowText(word segptr) WIN16_SetWindowText
38  pascal GetWindowTextLength(word) GetWindowTextLength
39  pascal BeginPaint(word ptr) BeginPaint
40  pascal EndPaint(word ptr) EndPaint
41  pascal CreateWindow(ptr ptr long s_word s_word s_word s_word
	                word word word segptr) CreateWindow
42  pascal ShowWindow(word word) ShowWindow
43  pascal CloseWindow(word) CloseWindow
44  pascal OpenIcon(word) OpenIcon
45  pascal BringWindowToTop(word) BringWindowToTop
46  pascal GetParent(word) GetParent
47  pascal IsWindow(word) IsWindow
48  pascal IsChild(word word) IsChild
49  pascal IsWindowVisible(word) IsWindowVisible
50  pascal FindWindow(ptr ptr) FindWindow
#51 BEAR51
52  pascal AnyPopup() AnyPopup
53  pascal DestroyWindow(word) DestroyWindow
54  pascal EnumWindows(ptr long) EnumWindows
55  pascal EnumChildWindows(word ptr long) EnumChildWindows
56  pascal MoveWindow(word word word word word word) MoveWindow
57  pascal RegisterClass(ptr) RegisterClass
58  pascal GetClassName(word ptr word) GetClassName
59  pascal SetActiveWindow(word) SetActiveWindow
60  pascal GetActiveWindow() GetActiveWindow
61  pascal ScrollWindow(word s_word s_word ptr ptr) ScrollWindow
62  pascal SetScrollPos(word word s_word word) SetScrollPos
63  pascal GetScrollPos(word word) GetScrollPos
64  pascal SetScrollRange(word word s_word s_word word) SetScrollRange
65  pascal GetScrollRange(word word ptr ptr) GetScrollRange
66  pascal GetDC(word) GetDC
67  pascal GetWindowDC(word) GetWindowDC
68  pascal ReleaseDC(word word) ReleaseDC
69  pascal SetCursor(word) SetCursor
70  pascal SetCursorPos(word word) SetCursorPos
71  pascal ShowCursor(word) ShowCursor
72  pascal SetRect(ptr s_word s_word s_word s_word) SetRect
73  pascal SetRectEmpty(ptr) SetRectEmpty
74  pascal CopyRect(ptr ptr) CopyRect
75  pascal IsRectEmpty(ptr) IsRectEmpty
76  pascal PtInRect(ptr long) PtInRect
77  pascal OffsetRect(ptr s_word s_word) OffsetRect
78  pascal InflateRect(ptr s_word s_word) InflateRect
79  pascal IntersectRect(ptr ptr ptr) IntersectRect
80  pascal UnionRect(ptr ptr ptr) UnionRect
81  pascal FillRect(word ptr word) FillRect
82  pascal InvertRect(word ptr) InvertRect
83  pascal FrameRect(word ptr word) FrameRect
84  pascal DrawIcon(word s_word s_word word) DrawIcon
85  pascal DrawText(word ptr s_word ptr word) DrawText
87  pascal16 DialogBox(word segptr word segptr) DialogBox
88  pascal EndDialog(word s_word) EndDialog
89  pascal16 CreateDialog(word segptr word segptr) CreateDialog
90  pascal IsDialogMessage(word ptr) IsDialogMessage
91  pascal GetDlgItem(word word) GetDlgItem
92  pascal SetDlgItemText(word word segptr) SetDlgItemText
93  pascal GetDlgItemText(word word segptr word) GetDlgItemText
94  pascal SetDlgItemInt(word word word word) SetDlgItemInt
95  pascal GetDlgItemInt(word word ptr word) GetDlgItemInt
96  pascal CheckRadioButton(word word word word) CheckRadioButton
97  pascal CheckDlgButton(word word word) CheckDlgButton
98  pascal IsDlgButtonChecked(word word) IsDlgButtonChecked
99  pascal DlgDirSelect(word ptr word) DlgDirSelect
100 pascal DlgDirList(word ptr word word word) DlgDirList
101 pascal SendDlgItemMessage(word word word word long) SendDlgItemMessage
102 pascal AdjustWindowRect(ptr long word) AdjustWindowRect
103 pascal MapDialogRect(word ptr) MapDialogRect
104 pascal MessageBeep(word) MessageBeep
105 pascal FlashWindow(word word) FlashWindow
106 pascal GetKeyState(word) GetKeyState
107 pascal DefWindowProc(word word word long) DefWindowProc
108 pascal GetMessage(segptr word word word) GetMessage
109 pascal PeekMessage(ptr word word word word) PeekMessage
110 pascal PostMessage(word word word long) PostMessage
111 pascal SendMessage(word word word long) SendMessage
112 pascal WaitMessage() WaitMessage
113 pascal TranslateMessage(ptr) TranslateMessage
114 pascal DispatchMessage(ptr) DispatchMessage
#115 REPLYMESSAGE
#116 POSTAPPMESSAGE
118 pascal RegisterWindowMessage(ptr) RegisterWindowMessage
119 pascal GetMessagePos() GetMessagePos
120 pascal GetMessageTime() GetMessageTime
121 pascal SetWindowsHook(s_word segptr) SetWindowsHook
122 pascal CallWindowProc(segptr word word word long) CallWindowProc
123 pascal CallMsgFilter(segptr s_word) CallMsgFilter
124 pascal UpdateWindow(word) UpdateWindow
125 pascal InvalidateRect(word ptr word) InvalidateRect
126 pascal InvalidateRgn(word word word) InvalidateRgn
127 pascal ValidateRect(word ptr) ValidateRect
128 pascal ValidateRgn(word word) ValidateRgn
129 pascal GetClassWord(word s_word) GetClassWord
130 pascal SetClassWord(word s_word word) SetClassWord
131 pascal GetClassLong(word s_word) GetClassLong
132 pascal SetClassLong(word s_word long) SetClassLong
133 pascal GetWindowWord(word s_word) GetWindowWord
134 pascal SetWindowWord(word s_word word) SetWindowWord
135 pascal GetWindowLong(word s_word) GetWindowLong
136 pascal SetWindowLong(word s_word long) SetWindowLong
137 pascal OpenClipboard(word) OpenClipboard
138 pascal CloseClipboard() CloseClipboard
139 pascal EmptyClipboard() EmptyClipboard
140 pascal GetClipboardOwner() GetClipboardOwner
141 pascal SetClipboardData(word word) SetClipboardData
142 pascal GetClipboardData(word) GetClipboardData
143 pascal CountClipboardFormats() CountClipboardFormats
144 pascal EnumClipboardFormats(word) EnumClipboardFormats
145 pascal RegisterClipboardFormat(ptr) RegisterClipboardFormat
146 pascal GetClipboardFormatName(word ptr s_word) GetClipboardFormatName
147 pascal SetClipboardViewer(word) SetClipboardViewer
148 pascal GetClipboardViewer() GetClipboardViewer
149 pascal ChangeClipboardChain(word ptr) ChangeClipboardChain
150 pascal LoadMenu(word segptr) LoadMenu
151 pascal CreateMenu() CreateMenu
152 pascal DestroyMenu(word) DestroyMenu
153 pascal ChangeMenu(word word ptr word word) ChangeMenu
154 pascal CheckMenuItem(word word word) CheckMenuItem
155 pascal EnableMenuItem(word word word) EnableMenuItem
156 pascal GetSystemMenu(word word) GetSystemMenu
157 pascal GetMenu(word) GetMenu
158 pascal SetMenu(word word) SetMenu
159 pascal GetSubMenu(word word) GetSubMenu
160 pascal DrawMenuBar(word) DrawMenuBar
161 pascal GetMenuString(word word ptr s_word word) GetMenuString
162 pascal HiliteMenuItem(word word word word) HiliteMenuItem
163 pascal CreateCaret(word word word word) CreateCaret
164 pascal DestroyCaret() DestroyCaret
165 pascal SetCaretPos(word word) SetCaretPos
166 pascal HideCaret(word) HideCaret
167 pascal ShowCaret(word) ShowCaret
168 pascal SetCaretBlinkTime(word) SetCaretBlinkTime
169 pascal GetCaretBlinkTime() GetCaretBlinkTime
170 pascal ArrangeIconicWindows(word) ArrangeIconicWindows
171 pascal WinHelp(word ptr word long) WinHelp
#172 SWITCHTOTHISWINDOW
173 pascal16 LoadCursor(word segptr) LoadCursor
174 pascal16 LoadIcon(word segptr) LoadIcon
175 pascal16 LoadBitmap(word segptr) LoadBitmap
176 pascal16 LoadString(word word ptr s_word) LoadString
177 pascal16 LoadAccelerators(word segptr) LoadAccelerators
178 pascal TranslateAccelerator(word word ptr) TranslateAccelerator
179 pascal GetSystemMetrics(word) GetSystemMetrics
180 pascal GetSysColor(word) GetSysColor
181 pascal SetSysColors(word ptr ptr) SetSysColors
182 pascal KillSystemTimer(word word) KillSystemTimer
183 pascal GetCaretPos(ptr) GetCaretPos
#184 QUERYSENDMESSAGE
185 pascal GrayString(word word ptr ptr word word word word word) GrayString
186 pascal SwapMouseButton(word) SwapMouseButton
187 pascal EndMenu() EndMenu
188 pascal SetSysModalWindow(word) SetSysModalWindow
189 pascal GetSysModalWindow() GetSysModalWindow
190 pascal GetUpdateRect(word ptr word) GetUpdateRect
191 pascal ChildWindowFromPoint(word long) ChildWindowFromPoint
192 pascal16 InSendMessage() InSendMessage
193 pascal IsClipboardFormatAvailable(word) IsClipboardFormatAvailable
194 pascal DlgDirSelectComboBox(word ptr word) DlgDirSelectComboBox
195 pascal DlgDirListComboBox(word segptr word word word) DlgDirListComboBox
196 pascal TabbedTextOut(word s_word s_word ptr s_word s_word ptr s_word)
           TabbedTextOut
197 pascal GetTabbedTextExtent(word ptr word word ptr) GetTabbedTextExtent
198 pascal CascadeChildWindows(word word) CascadeChildWindows
199 pascal TileChildWindows(word word) TileChildWindows
200 pascal OpenComm(ptr word word) OpenComm
201 pascal SetCommState(ptr) SetCommState
202 pascal GetCommState(word ptr) GetCommState
203 pascal GetCommError(word ptr) GetCommError
204 pascal ReadComm(word ptr word) ReadComm
205 pascal WriteComm(word ptr word) WriteComm
206 pascal TransmitCommChar(word byte) TransmitCommChar 
207 pascal CloseComm(word) CloseComm
208 pascal SetCommEventMask(word word) SetCommEventMask
209 pascal GetCommEventMask(word word) GetCommEventMask
210 pascal SetCommBreak(word) SetCommBreak
211 pascal ClearCommBreak(word) ClearCommBreak
212 pascal UngetCommChar(word byte) UngetCommChar
213 pascal BuildCommDCB(ptr ptr) BuildCommDCB
214 pascal EscapeCommFunction(word word) EscapeCommFunction
215 pascal FlushComm(word word) FlushComm
#216 USERSEEUSERDO
217 pascal LookupMenuHandle(word s_word) LookupMenuHandle
218 pascal16 DialogBoxIndirect(word word word segptr) DialogBoxIndirect
219 pascal16 CreateDialogIndirect(word ptr word segptr) CreateDialogIndirect
220 pascal LoadMenuIndirect(ptr) LoadMenuIndirect
221 pascal ScrollDC(word s_word s_word ptr ptr word ptr) ScrollDC
222 pascal16 GetKeyboardState(ptr) GetKeyboardState
#223 SETKEYBOARDSTATE
224 pascal16 GetWindowTask(word) GetWindowTask
225 pascal EnumTaskWindows(word segptr long) EnumTaskWindows
#226 LOCKINPUT
227 pascal GetNextDlgGroupItem(word word word) GetNextDlgGroupItem
228 pascal GetNextDlgTabItem(word word word) GetNextDlgTabItem
229 pascal GetTopWindow(word) GetTopWindow
230 pascal GetNextWindow(word word) GetNextWindow
#231 GETSYSTEMDEBUGSTATE
232 pascal SetWindowPos(word word word word word word word) SetWindowPos
233 pascal SetParent(word word) SetParent
234 pascal UnhookWindowsHook(s_word segptr) UnhookWindowsHook
235 pascal DefHookProc(s_word word long ptr) DefHookProc
236 pascal GetCapture() GetCapture
237 pascal GetUpdateRgn(word word word) GetUpdateRgn
238 pascal ExcludeUpdateRgn(word word) ExcludeUpdateRgn
239 pascal16 DialogBoxParam(word segptr word segptr long) DialogBoxParam
240 pascal16 DialogBoxIndirectParam(word word word segptr long)
             DialogBoxIndirectParam
241 pascal16 CreateDialogParam(word segptr word segptr long) CreateDialogParam
242 pascal16 CreateDialogIndirectParam(word ptr word segptr long)
             CreateDialogIndirectParam
243 pascal GetDialogBaseUnits() GetDialogBaseUnits
244 pascal EqualRect(ptr ptr) EqualRect
#245 ENABLECOMMNOTIFICATION
#246 EXITWINDOWSEXEC
247 pascal GetCursor() GetCursor
248 pascal GetOpenClipboardWindow() GetOpenClipboardWindow
249 pascal GetAsyncKeyState(word) GetAsyncKeyState
250 pascal GetMenuState(word word word) GetMenuState
251 pascal SendDriverMessage(word word long long) SendDriverMessage
252 pascal OpenDriver(ptr ptr long) OpenDriver
253 pascal CloseDriver(word word long) CloseDriver
254 pascal GetDriverModuleHandle(word) GetDriverModuleHandle
255 pascal DefDriverProc(long word word long long) DefDriverProc
256 pascal GetDriverInfo(word ptr) GetDriverInfo
257 pascal GetNextDriver(word long) GetNextDriver
258 pascal MapWindowPoints(word word ptr word) MapWindowPoints
259 pascal16 BeginDeferWindowPos(s_word) BeginDeferWindowPos
260 pascal16 DeferWindowPos(word word word s_word s_word s_word s_word word)
             DeferWindowPos
261 pascal16 EndDeferWindowPos(word) EndDeferWindowPos
262 pascal GetWindow(word word) GetWindow
263 pascal GetMenuItemCount(word) GetMenuItemCount
264 pascal GetMenuItemID(word word) GetMenuItemID
#265 SHOWOWNEDPOPUPS
266 pascal SetMessageQueue(word) SetMessageQueue
267 pascal ShowScrollBar(word word word) ShowScrollBar
268 pascal GlobalAddAtom(ptr) GlobalAddAtom
269 pascal GlobalDeleteAtom(word) GlobalDeleteAtom
270 pascal GlobalFindAtom(ptr) GlobalFindAtom
271 pascal GlobalGetAtomName(word ptr s_word) GlobalGetAtomName
272 pascal IsZoomed(word) IsZoomed
#273 CONTROLPANELINFO
#274 GETNEXTQUEUEWINDOW
#275 REPAINTSCREEN
#276 LOCKMYTASK
277 pascal GetDlgCtrlID(word) GetDlgCtrlID
278 pascal GetDeskTopHwnd() GetDesktopWindow
#279 OLDSETDESKPATTERN
#280 SETSYSTEMMENU
281 pascal GetSysColorBrush(word) GetSysColorBrush
282 pascal SelectPalette(word word word) SelectPalette
283 pascal RealizePalette(word) RealizePalette
284 pascal16 GetFreeSystemResources(word) GetFreeSystemResources
#285 BEAR285
286 pascal GetDesktopWindow() GetDesktopWindow
287 pascal GetLastActivePopup(word) GetLastActivePopup
288 pascal GetMessageExtraInfo() GetMessageExtraInfo
#289 KEYB_EVENT
290 pascal RedrawWindow(word ptr word word) RedrawWindow
291 pascal SetWindowsHookEx(s_word segptr word word) SetWindowsHookEx
292 pascal UnhookWindowsHookEx(segptr) UnhookWindowsHookEx
293 pascal CallNextHookEx(segptr s_word word long) CallNextHookEx
#294 LOCKWINDOWUPDATE
#299 MOUSE_EVENT
#301 BOZOSLIVEHERE :-))
#306 BEAR306
308 pascal DefDlgProc(word word word long) DefDlgProc
#314 SIGNALPROC
319 pascal ScrollWindowEx(word s_word s_word ptr ptr word ptr word)
           ScrollWindowEx
#320 SYSERRORBOX
#321 SETEVENTHOOK
#322 WINOLDAPPHACKOMATIC
#323 GETMESSAGE2
324 pascal FillWindow(word word word word) FillWindow
325 pascal PaintRect(word word word word ptr) PaintRect
326 pascal16 GetControlBrush(word word word) GetControlBrush
331 pascal EnableHardwareInput(word) EnableHardwareInput
332 return UserYield 0 0
#333 ISUSERIDLE
334 pascal GetQueueStatus(word) GetQueueStatus
335 pascal GetInputState() GetInputState
#336 LOADCURSORICONHANDLER
#337 GETMOUSEEVENTPROC
#341 _FFFE_FARFRAME
#343 GETFILEPORTNAME
#356 LOADDIBCURSORHANDLER
#357 LOADDIBICONHANDLER
358 pascal IsMenu(word) IsMenu
359 pascal GetDCEx(word word long) GetDCEx
#362 DCHOOK
#368 COPYICON
#369 COPYCURSOR
370 pascal GetWindowPlacement(word ptr) GetWindowPlacement
371 pascal SetWindowPlacement(word ptr) SetWindowPlacement
#372 GETINTERNALICONHEADER
373 pascal SubtractRect(ptr ptr ptr) SubtractRect
#400 FINALUSERINIT
402 pascal GetPriorityClipboardFormat(word ptr s_word)
           GetPriorityClipboardFormat
403 pascal UnregisterClass(ptr word) UnregisterClass
404 pascal GetClassInfo(word ptr ptr) GetClassInfo
406 pascal CreateCursor(word word word word word ptr ptr) CreateCursor
407 pascal CreateIcon(word word word byte byte ptr ptr) CreateIcon
#408 CREATECURSORICONINDIRECT
410 pascal InsertMenu(word word word word ptr) InsertMenu
411 pascal AppendMenu(word word word ptr) AppendMenu
412 pascal RemoveMenu(word word word) RemoveMenu
413 pascal DeleteMenu(word word word) DeleteMenu
414 pascal ModifyMenu(word word word word ptr) ModifyMenu
415 pascal CreatePopupMenu() CreatePopupMenu
416 pascal TrackPopupMenu(word word word word word word ptr) TrackPopupMenu
417 pascal GetMenuCheckMarkDimensions() GetMenuCheckMarkDimensions
418 pascal SetMenuItemBitmaps(word word word word word) SetMenuItemBitmaps
420 pascal wsprintf() windows_wsprintf
# windows_wsprintf() handles arguments itself, as libc can't handle an
# 16-bit stack. DLLRelay() will pass 16-bit stack pointer as 1st arg.
421 pascal wvsprintf(ptr ptr ptr) wvsprintf
#422 DLGDIRSELECTEX
#423 DLGDIRSELECTCOMBOBOXEX
430 pascal16 lstrcmp(ptr ptr) lstrcmp
431 pascal AnsiUpper(segptr) WIN16_AnsiUpper
432 pascal AnsiLower(segptr) WIN16_AnsiLower
433 pascal16 IsCharAlpha(byte) IsCharAlpha
434 pascal16 IsCharAlphanumeric(byte) IsCharAlphanumeric
435 pascal16 IsCharUpper(byte) IsCharUpper
436 pascal16 IsCharLower(byte) IsCharLower
437 pascal16 AnsiUpperBuff(ptr word) AnsiUpperBuff
438 pascal16 AnsiLowerBuff(ptr word) AnsiLowerBuff
445 pascal DefFrameProc(word word word word long) DefFrameProc
447 pascal DefMDIChildProc(word word word long) DefMDIChildProc
451 pascal TranslateMDISysAccel(word ptr) TranslateMDISysAccel
452 pascal CreateWindowEx(long ptr ptr long s_word s_word s_word s_word
                          word word word segptr) CreateWindowEx
454 pascal AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx
#455 GETICONID
#456 LOADICONHANDLER
457 pascal DestroyIcon(word) DestroyIcon
458 pascal DestroyCursor(word) DestroyCursor
#459 DUMPICON
460 pascal GetInternalWindowPos(word ptr ptr) GetInternalWindowPos
461 pascal SetInternalWindowPos(word word ptr ptr) SetInternalWindowPos
#462 CALCCHILDSCROLL
#463 SCROLLCHILDREN
#464 DRAGOBJECT
#465 DRAGDETECT
466 pascal DrawFocusRect(word ptr) DrawFocusRect
#470 STRINGFUNC
471 pascal16 lstrcmpi(ptr ptr) lstrcmpi
472 pascal AnsiNext(segptr) AnsiNext
473 pascal AnsiPrev(segptr segptr) AnsiPrev
#480 GETUSERLOCALOBJTYPE
#481 HARDWARE_EVENT
482 pascal16 EnableScrollBar(word word word) EnableScrollBar
483 pascal SystemParametersInfo(word word ptr word) SystemParametersInfo
#484 __GP
#499 WNETERRORTEXT
#501 WNETOPENJOB
#502 WNETCLOSEJOB
#503 WNETABORTJOB
#504 WNETHOLDJOB
#505 WNETRELEASEJOB
#506 WNETCANCELJOB
#507 WNETSETJOBCOPIES
#508 WNETWATCHQUEUE
#509 WNETUNWATCHQUEUE
#510 WNETLOCKQUEUEDATA
#511 WNETUNLOCKQUEUEDATA
512 pascal16 WNetGetConnection(ptr ptr ptr) WNetGetConnection
513 pascal WNetGetCaps(word) WNetGetCaps
#514 WNETDEVICEMODE
#515 WNETBROWSEDIALOG
516 pascal WNetGetUser(ptr ptr ptr) WNetGetUser
517 pascal16 WNetAddConnection(ptr ptr ptr) WNetAddConnection
518 pascal16 WNetCancelConnection(ptr word) WNetCancelConnection
#519 WNETGETERROR
#520 WNETGETERRORTEXT
#521 WNETENABLE
#522 WNETDISABLE
#523 WNETRESTORECONNECTION
#524 WNETWRITEJOB
#525 WNETCONNECTDIALOG
#526 WNETDISCONNECTDIALOG
#527 WNETCONNECTIONDIALOG
#528 WNETVIEWQUEUEDIALOG
#529 WNETPROPERTYDIALOG
#530 WNETGETDIRECTORYTYPE
#531 WNETDIRECTORYNOTIFY
#532 WNETGETPROPERTYTEXT
