libc/newlib/libc/sys/rdos/rdos.S

7529 lines
131 KiB
ArmAsm

/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# rdos.S
# GCC based interface to RDOS kernel
#
##########################################################################*/
#include "user.def"
.macro UserGate nr
.byte 0x9A
.long \nr
.word 2
.endm
/*##########################################################################
#
# Name : RdosSwapShort
#
# Purpose....: Byte reverse a short int
#
# Returns....: Result
#
##########################################################################*/
.global RdosSwapShort
RdosSwapShort:
pushl %ebp
movl %esp,%ebp
movw 8(%ebp),%ax
xchgb %ah,%al
leave
ret
/*##########################################################################
#
# Name : RdosSwapLong
#
# Purpose....: Byte reverse a long int
#
# Returns....: Result
#
##########################################################################*/
.global RdosSwapLong
RdosSwapLong:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
xchgb %ah,%al
roll $16,%eax
xchgb %ah,%al
leave
ret
/*##########################################################################
#
# Name : LocalToNetworkLong
#
# Purpose....: Convert a local long to network format
#
# Returns....: Network format
#
##########################################################################*/
.global LocalToNetworkLong
LocalToNetworkLong:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
xchgb %ah,%al
roll $16,%eax
xchgb %ah,%al
leave
ret
/*##########################################################################
#
# Name : NetworkToLocalLong
#
# Purpose....: Convert a network long to local format
#
# Returns....: Local format
#
##########################################################################*/
.global NetworkToLocalLong
NetworkToLocalLong:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
xchgb %ah,%al
roll $16,%eax
xchgb %ah,%al
leave
ret
/*##########################################################################
#
# Name : RdosGetThreadHandle
#
# Purpose....: Get current thread handle
#
# Returns....: Thread ID
#
##########################################################################*/
.global RdosGetThreadHandle
RdosGetThreadHandle:
pushl %ebp
movl %esp,%ebp
UserGate get_thread_nr
movzx %ax,%eax
leave
ret
/*##########################################################################
#
# Name : RdosGetThreadState
#
# Purpose....: Get thread state
#
# Parameters.: Thread #
# State buffer
#
##########################################################################*/
.global RdosGetThreadState
RdosGetThreadState:
pushl %ebp
movl %esp,%ebp
push %edi
movl 8(%ebp),%eax
movl 12(%ebp),%edx
UserGate get_thread_state_nr
jc rgtsFail
movl $1,%eax
jmp rgtsDone
rgtsFail:
xorl %eax,%eax
rgtsDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosSuspendThread
#
# Purpose....: Suspend thread
#
# Parameters.: Thread #
#
##########################################################################*/
.global RdosSuspendThread
RdosSuspendThread:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
UserGate suspend_thread_nr
jc rsfFail
movl $1,%eax
jmp rsfDone
rsfFail:
xorl %eax,%eax
rsfDone:
leave
ret
/*##########################################################################
#
# Name : RdosExec
#
# Purpose....: Execute a program
#
# Parameters.: Program
# Commandline
#
##########################################################################*/
.global RdosExec
RdosExec:
pushl %ebp
movl %esp,%ebp
pushl %esi
pushl %edi
movl 8(%ebp),%esi
movl 12(%ebp),%edi
UserGate load_exe_nr
UserGate get_exit_code_nr
popl %edi
popl %esi
leave
ret
/*##########################################################################
#
# Name : RdosSpawn
#
# Purpose....: Create new process and run a program
#
# Parameters.: Program
# Commandline
# StartDir
#
##########################################################################*/
.global RdosSpawn
RdosSpawn:
pushl %ebp
movl %esp,%ebp
pushl %fs
pushl %ebx
pushl %edx
pushl %esi
pushl %edi
movw %ds,%dx
movw %dx,%fs
xorl %edx,%edx
movl 8(%ebp),%esi
movl 12(%ebp),%edi
movl 16(%ebp),%ebx
UserGate spawn_exe_nr
jc rsFail
movzx %dx,%eax
jmp rsDone
rsFail:
xorl %eax,%eax
rsDone:
popl %edi
popl %esi
popl %edx
popl %ebx
popw %fs
leave
ret
/*##########################################################################
#
# Name : RdosCpuReset
#
# Purpose....: Cpu reset
#
##########################################################################*/
.global RdosCpuReset
RdosCpuReset:
pushl %ebp
movl %esp,%ebp
UserGate cpu_reset_nr
leave
ret
/*##########################################################################
#
# Name : RdosGetVersion
#
# Purpose....: Get RDOS version
#
# Parameters.: &major
# &minor
# &release
#
##########################################################################*/
.global RdosGetVersion
RdosGetVersion:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ecx
pushl %edx
pushl %edi
UserGate get_version_nr
movzx %dx,%edx
movl 8(%ebp),%edi
movl %edx,(%edi)
movzx %ax,%eax
movl 12(%ebp),%edi
movl %eax,(%edi)
movzx %cx,%eax
movl 16(%ebp),%edi
movl %eax,(%edi)
popl %edi
popl %edx
popl %ecx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosAllocateMem
#
# Purpose....: Allocate memory
#
# Parameters.: Bytes to allocate
#
# Returns....: Memory pointer
#
##########################################################################*/
.global RdosAllocateMem
RdosAllocateMem:
pushl %ebp
movl %esp,%ebp
pushl %edx
movl 8(%ebp),%eax
UserGate allocate_app_mem_nr
movl %edx,%eax
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosFreeMem
#
# Purpose....: Free memory
#
# Parameters.: Memory pointer
#
##########################################################################*/
.global RdosFreeMem
RdosFreeMem:
pushl %ebp
movl %esp,%ebp
pushl %edx
movl 8(%ebp),%edx
UserGate free_app_mem_nr
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosAppDebug
#
# Purpose....: App debug
#
##########################################################################*/
.global RdosAppDebug
RdosAppDebug:
pushl %ebp
movl %esp,%ebp
UserGate app_debug_nr
leave
ret
/*##########################################################################
#
# Name : RdosWaitMilli
#
# Purpose....: Wait a number of milliseconds
#
# Parameters.: Milliseconds to wait
#
##########################################################################*/
.global RdosWaitMilli
RdosWaitMilli:
pushl %ebp
movl %esp,%ebp
pushl %eax
movl 8(%ebp),%eax
UserGate wait_milli_nr
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosCreateSection
#
# Purpose....: Create section
#
# Returns....: Section handle
#
##########################################################################*/
.global RdosCreateSection
RdosCreateSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate create_user_section_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDeleteSection
#
# Purpose....: Delete section
#
# Parameters.: Section handle
#
##########################################################################*/
.global RdosDeleteSection
RdosDeleteSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate delete_user_section_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosEnterSection
#
# Purpose....: Enter section
#
# Parameters.: Section handle
#
##########################################################################*/
.global RdosEnterSection
RdosEnterSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate enter_user_section_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosLeaveSection
#
# Purpose....: Leave section
#
# Parameters.: Section handle
#
##########################################################################*/
.global RdosLeaveSection
RdosLeaveSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate leave_user_section_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateWait
#
# Purpose....: Create wait object
#
# Returns....: Wait handle
#
##########################################################################*/
.global RdosCreateWait
RdosCreateWait:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate create_wait_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseWait
#
# Purpose....: Close wait
#
# Parameters.: Wait handle
#
##########################################################################*/
.global RdosCloseWait
RdosCloseWait:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_wait_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCheckWait
#
# Purpose....: Check wait state
#
# Parameters.: Wait handle
#
# Returns....: Signalled ID or 0
#
##########################################################################*/
.global RdosCheckWait
RdosCheckWait:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
UserGate is_wait_idle_nr
movl %ecx,%eax
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWaitForever
#
# Purpose....: Wait forever
#
# Parameters.: Wait handle
#
# Returns....: Signalled ID or 0
#
##########################################################################*/
.global RdosWaitForever
RdosWaitForever:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
UserGate wait_no_timeout_nr
jc rwfFail
movl %ecx,%eax
jmp rwfDone
rwfFail:
xorl %eax,%eax
rwfDone:
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWaitTimeout
#
# Purpose....: Wait with timeout
#
# Parameters.: Wait handle
# Timeout in ms
#
# Returns....: Signalled ID or 0
#
##########################################################################*/
.global RdosWaitTimeout
RdosWaitTimeout:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movl 12(%ebp),%eax
movl $1193,%edx
mull %edx
pushl %edx
pushl %eax
UserGate get_system_time_nr
popl %ebx
addl %ebx,%eax
popl %ebx
adcl %ebx,%edx
movw 8(%ebp),%bx
UserGate wait_timeout_nr
jc rwtFail
movl %ecx,%eax
jmp rwtDone
rwtFail:
xorl %eax,%eax
rwtDone:
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosStopWait
#
# Purpose....: Stop wait
#
# Parameters.: Wait handle
#
##########################################################################*/
.global RdosStopWait
RdosStopWait:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate stop_wait_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosRemoveWait
#
# Purpose....: Remove wait object from wait handle
#
# Parameters.: Wait handle
# ID
#
##########################################################################*/
.global RdosRemoveWait
RdosRemoveWait:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movl 12(%ebp),%ecx
UserGate remove_wait_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateSignal
#
# Purpose....: Create signal object
#
# Returns....: Signal handle
#
##########################################################################*/
.global RdosCreateSignal
RdosCreateSignal:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate create_signal_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosResetSignal
#
# Purpose....: Reset signal
#
# Parameters.: Signal handle
#
##########################################################################*/
.global RdosResetSignal
RdosResetSignal:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate reset_signal_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosIsSignalled
#
# Purpose....: Check if signalled
#
# Parameters.: Signal handle
#
# Returns....: TRUE if signalled
#
##########################################################################*/
.global RdosIsSignalled
RdosIsSignalled:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate is_signalled_nr
jc risdFree
movl $1,%eax
jmp risdDone
risdFree:
xorl %eax,%eax
risdDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetSignal
#
# Purpose....: Set signal
#
# Parameters.: Signal handle
#
##########################################################################*/
.global RdosSetSignal
RdosSetSignal:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate set_signal_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosFreeSignal
#
# Purpose....: Free signal handle
#
# Parameters.: Signal handle
#
##########################################################################*/
.global RdosFreeSignal
RdosFreeSignal:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate free_signal_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForSignal
#
# Purpose....: Add signal object to wait handle
#
# Parameters.: Wait handle
# Signal handle
# ID
#
##########################################################################*/
.global RdosAddWaitForSignal
RdosAddWaitForSignal:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate add_wait_for_signal_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForKeyboard
#
# Purpose....: Add keyboard to wait handle
#
# Parameters.: Wait handle
# ID
#
##########################################################################*/
.global RdosAddWaitForKeyboard
RdosAddWaitForKeyboard:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movl 12(%ebp),%ecx
UserGate add_wait_for_keyboard_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForMouse
#
# Purpose....: Add mouse to wait handle
#
# Parameters.: Wait handle
# ID
#
##########################################################################*/
.global RdosAddWaitForMouse
RdosAddWaitForMouse:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movl 12(%ebp),%ecx
UserGate add_wait_for_mouse_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForCom
#
# Purpose....: Add com object to wait handle
#
# Parameters.: Wait handle
# Com handle
# ID
#
##########################################################################*/
.global RdosAddWaitForCom
RdosAddWaitForCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate add_wait_for_com_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForAdc
#
# Purpose....: Add ADC object to wait handle
#
# Parameters.: Wait handle
# Adc handle
# ID
#
##########################################################################*/
.global RdosAddWaitForAdc
RdosAddWaitForAdc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate add_wait_for_adc_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetTextMode
#
# Purpose....: Set text mode
#
##########################################################################*/
.global RdosSetTextMode
RdosSetTextMode:
pushl %ebp
movl %esp,%ebp
movw $3,%ax
UserGate set_video_mode_nr
leave
ret
/*##########################################################################
#
# Name : RdosSetVideoMode
#
# Purpose....: Set video mode
#
# Parameters.: &xres
# &yres
# &linesize
# &LFB
#
# Returns....: Bitmap handle
#
##########################################################################*/
.global RdosSetVideoMode
RdosSetVideoMode:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movl 8(%ebp),%edi
movw (%edi),%ax
movl 12(%ebp),%edi
movw (%edi),%cx
movl 16(%ebp),%edi
movw (%edi),%dx
UserGate get_video_mode_nr
jc set_video_fail
UserGate set_video_mode_nr
jc set_video_fail
pushl %edi
movl 8(%ebp),%edi
movzx %ax,%eax
movl %eax,(%edi)
movl 12(%ebp),%edi
movzx %cx,%ecx
movl %ecx,(%edi)
movl 16(%ebp),%edi
movzx %dx,%edx
movl %edx,(%edi)
movl 20(%ebp),%edi
movzx %si,%esi
movl %esi,(%edi)
popl %edi
movl 24(%ebp),%eax
movl %edi,(%eax)
movzx %bx,%eax
jmp set_video_done
set_video_fail:
xorl %eax,%eax
movl 8(%ebp),%edi
movl %eax,(%edi)
movl 12(%ebp),%edi
movl %eax,(%edi)
movl 16(%ebp),%edi
movl %eax,(%edi)
movl 20(%ebp),%edi
movl %eax,(%edi)
movl 24(%ebp),%edi
movl %eax,(%edi)
set_video_done:
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetClipRect
#
# Purpose....: Set clip rectangle
#
# Parameters.: Bitmap handle
# xmin, xmax, ymin, ymax
#
##########################################################################*/
.global RdosSetClipRect
RdosSetClipRect:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movw 20(%ebp),%si
movw 24(%ebp),%di
UserGate set_clip_rect_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosClearClipRect
#
# Purpose....: Clear clip rectangle
#
# Parameters.: Bitmap handle
#
##########################################################################*/
.global RdosClearClipRect
RdosClearClipRect:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate clear_clip_rect_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetDrawColor
#
# Purpose....: Set draw color
#
# Parameters.: Bitmap handle
# Color
#
##########################################################################*/
.global RdosSetDrawColor
RdosSetDrawColor:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
movw 8(%ebp),%bx
movl 12(%ebp),%eax
UserGate set_drawcolor_nr
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosSetLGOP
#
# Purpose....: Set draw color
#
# Parameters.: Bitmap handle
# LGOP
#
##########################################################################*/
.global RdosSetLGOP
RdosSetLGOP:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
UserGate set_lgop_nr
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosSetHollowStyle
#
# Purpose....: Set hollow fill style
#
# Parameters.: Bitmap handle
#
##########################################################################*/
.global RdosSetHollowStyle
RdosSetHollowStyle:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate set_hollow_style_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFilledStyle
#
# Purpose....: Set filled fill style
#
# Parameters.: Bitmap handle
#
##########################################################################*/
.global RdosSetFilledStyle
RdosSetFilledStyle:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate set_filled_style_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosOpenFont
#
# Purpose....: Open a font
#
# Parameters.: height
#
# Returns....: Font handle
#
##########################################################################*/
.global RdosOpenFont
RdosOpenFont:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%ax
UserGate open_font_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseFont
#
# Purpose....: Close font handle
#
# Parameters.: Font handle
#
##########################################################################*/
.global RdosCloseFont
RdosCloseFont:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_font_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetStringMetrics
#
# Purpose....: Get string metrics for text using font
#
# Parameters.: Font handle
# String
# &width
# &height
#
##########################################################################*/
.global RdosGetStringMetrics
RdosGetStringMetrics:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
UserGate get_string_metrics_nr
movl 16(%ebp),%edi
movzx %cx,%ecx
movl %ecx,(%edi)
movl 20(%ebp),%edi
movzx %dx,%edx
movl %edx,(%edi)
popl %edi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFont
#
# Purpose....: Set font
#
# Parameters.: Bitmap handle
# Font handle
#
##########################################################################*/
.global RdosSetFont
RdosSetFont:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
UserGate set_font_nr
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosGetPixel
#
# Purpose....: Get pixel
#
# Parameters.: Bitmap handle
# x, y
#
##########################################################################*/
.global RdosGetPixel
RdosGetPixel:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
UserGate get_pixel_nr
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetPixel
#
# Purpose....: Set pixel
#
# Parameters.: Bitmap handle
# x, y
#
##########################################################################*/
.global RdosSetPixel
RdosSetPixel:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
UserGate set_pixel_nr
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosBlit
#
# Purpose....: Blit
#
# Parameters.: SrcHandle
# DestHandle
# width, height
# SrcX, SrcY
# DestX, DestY
#
##########################################################################*/
.global RdosBlit
RdosBlit:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
;
movw 8(%ebp),%ax
movw 12(%ebp),%bx
movw 16(%ebp),%cx
movw 20(%ebp),%dx
movw 28(%ebp),%si
shll $16,%esi
movw 24(%ebp),%si
movw 36(%ebp),%di
shll $16,%edi
movw 32(%ebp),%di
UserGate blit_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosDrawMask
#
# Purpose....: Draw mask
#
# Parameters.: Bitmap handle
# mask
# RowSize
# width, height
# SrcX, SrcY
# DestX, DestY
#
##########################################################################*/
.global RdosDrawMask
RdosDrawMask:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
;
movw 8(%ebp),%bx
movl 12(%ebp),%edi
movw 16(%ebp),%ax
movw 24(%ebp),%si
shll $16,%esi
movw 20(%ebp),%si
movw 32(%ebp),%cx
shll $16,%ecx
movw 28(%ebp),%cx
movw 40(%ebp),%dx
shll $16,%edx
movw 36(%ebp),%dx
UserGate draw_mask_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosDrawLine
#
# Purpose....: Draw a line
#
# Parameters.: Bitmap handle
# x1, y1
# x2, y2
#
##########################################################################*/
.global RdosDrawLine
RdosDrawLine:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
;
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movw 20(%ebp),%si
movw 24(%ebp),%di
UserGate draw_line_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDrawString
#
# Purpose....: Draw a string
#
# Parameters.: Bitmap handle
# x, y
# string
#
##########################################################################*/
.global RdosDrawString
RdosDrawString:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %edi
;
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movl 20(%ebp),%edi
UserGate draw_string_nr
popl %edi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDrawRect
#
# Purpose....: Draw a rect
#
# Parameters.: Bitmap handle
# x, y
# width, height
#
##########################################################################*/
.global RdosDrawRect
RdosDrawRect:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movw 20(%ebp),%si
movw 24(%ebp),%di
UserGate draw_rect_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDrawEllipse
#
# Purpose....: Draw an ellipse
#
# Parameters.: Bitmap handle
# x, y
# width, height
#
##########################################################################*/
.global RdosDrawEllipse
RdosDrawEllipse:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movw 20(%ebp),%si
movw 24(%ebp),%di
UserGate draw_ellipse_nr
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateBitmap
#
# Purpose....: Create a bitmap
#
# Parameters.: BitsPerPixel
# width, height
#
# Returns....: Bitmap handle
#
##########################################################################*/
.global RdosCreateBitmap
RdosCreateBitmap:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%ax
movw 12(%ebp),%cx
movw 16(%ebp),%dx
UserGate create_bitmap_nr
movzx %bx,%eax
;
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDuplicateBitmapHandle
#
# Purpose....: Duplicate bitmap handle for use in another thread / object
#
# Parameters.: Bitmap handle
#
# Returns....: Bitmap handle
#
##########################################################################*/
.global RdosDuplicateBitmapHandle
RdosDuplicateBitmapHandle:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate dup_bitmap_handle_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseBitmap
#
# Purpose....: Close bitmap handle
#
# Parameters.: Bitmap handle
#
##########################################################################*/
.global RdosCloseBitmap
RdosCloseBitmap:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_bitmap_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateStringBitmap
#
# Purpose....: Create bitmap from string & font
#
# Parameters.: Font
# string
#
# Returns....: Bitmap handle
#
##########################################################################*/
.global RdosCreateStringBitmap
RdosCreateStringBitmap:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
UserGate create_string_bitmap_nr
movzx %bx,%eax
;
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetBitmapInfo
#
# Purpose....: Get info about bitmap
#
# Parameters.: Bitmap handle
# &BitsPerPixel
# &width, &height
# &linesize
# &LFB
#
##########################################################################*/
.global RdosGetBitmapInfo
RdosGetBitmapInfo:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movw 8(%ebp),%bx
UserGate get_bitmap_info_nr
jc gbiFail
pushl %edi
movl 12(%ebp),%edi
movzx %al,%eax
movl %eax,(%edi)
movl 16(%ebp),%edi
movzx %cx,%ecx
movl %ecx,(%edi)
movl 20(%ebp),%edi
movzx %dx,%edx
movl %edx,(%edi)
movl 24(%ebp),%edi
movzx %si,%esi
movl %esi,(%edi)
popl %edi
movl 28(%ebp),%eax
movl %edi,(%eax)
jmp gbiDone
gbiFail:
xorl %eax,%eax
movl 12(%ebp),%edi
movl %eax,(%edi)
movl 16(%ebp),%edi
movl %eax,(%edi)
movl 20(%ebp),%edi
movl %eax,(%edi)
movl 24(%ebp),%edi
movl %eax,(%edi)
movl 28(%ebp),%edi
movl %eax,(%edi)
gbiDone:
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosCreateSprite
#
# Purpose....: Create a sprite
#
# Parameters.: dest
# bitmap
# mask
# LGOP
#
# Returns....: Sprite handle
#
##########################################################################*/
.global RdosCreateSprite
RdosCreateSprite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
movw 20(%ebp),%ax
UserGate create_sprite_nr
movzx %bx,%eax
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseSprite
#
# Purpose....: Close sprite handle
#
# Parameters.: Sprite handle
#
##########################################################################*/
.global RdosCloseSprite
RdosCloseSprite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_sprite_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosShowSprite
#
# Purpose....: Show sprite
#
# Parameters.: Sprite handle
#
##########################################################################*/
.global RdosShowSprite
RdosShowSprite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate show_sprite_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosHideSprite
#
# Purpose....: Hide sprite
#
# Parameters.: Sprite handle
#
##########################################################################*/
.global RdosHideSprite
RdosHideSprite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate hide_sprite_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosMoveSprite
#
# Purpose....: Move sprite
#
# Parameters.: Sprite handle
# x, y
#
##########################################################################*/
.global RdosMoveSprite
RdosMoveSprite:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%bx
movw 12(%ebp),%cx
movw 16(%ebp),%dx
UserGate move_sprite_nr
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetForeColor
#
# Purpose....: Set text-mode fore color
#
# Parameters.: palette index
#
##########################################################################*/
.global RdosSetForeColor
RdosSetForeColor:
pushl %ebp
movl %esp,%ebp
pushl %eax
movb 8(%ebp),%al
UserGate set_forecolor_nr
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosSetBackColor
#
# Purpose....: Set text-mode back color
#
# Parameters.: palette index
#
##########################################################################*/
.global RdosSetBackColor
RdosSetBackColor:
pushl %ebp
movl %esp,%ebp
pushl %eax
movb 8(%ebp),%al
UserGate set_backcolor_nr
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosGetSysTime
#
# Purpose....: Get system time
#
# Parameters.: &year, &month, &day
# &hour, &min, &sec, &ms
#
##########################################################################*/
.global RdosGetSysTime
RdosGetSysTime:
pushl %ebp
movl %esp,%ebp
pushal
UserGate get_system_time_nr
pushl %eax
UserGate binary_to_time_nr
pushl %edx
movl 8(%ebp),%esi
movzx %dx,%edx
movl %edx,(%esi)
movl 12(%ebp),%esi
movzx %ch,%edx
movl %edx,(%esi)
movl 16(%ebp),%esi
movzx %cl,%edx
movl %edx,(%esi)
movl 20(%ebp),%esi
movzx %bh,%edx
movl %edx,(%esi)
movl 24(%ebp),%esi
movzx %bl,%edx
movl %edx,(%esi)
movl 28(%ebp),%esi
movzx %ah,%edx
movl %edx,(%esi)
popl %edx
UserGate time_to_binary_nr
movl %eax,%ebx
popl %eax
subl %ebx,%eax
xorl %edx,%edx
movl $1192,%ebx
divl %ebx
movl 32(%ebp),%esi
movzx %ax,%eax
movl %eax,(%esi)
popal
leave
ret
/*##########################################################################
#
# Name : RdosGetTime
#
# Purpose....: Get time
#
# Parameters.: &year, &month, &day
# &hour, &min, &sec, &ms
#
##########################################################################*/
.global RdosGetTime
RdosGetTime:
pushl %ebp
movl %esp,%ebp
pushal
UserGate get_time_nr
pushl %eax
UserGate binary_to_time_nr
pushl %edx
movl 8(%ebp),%esi
movzx %dx,%edx
movl %edx,(%esi)
movl 12(%ebp),%esi
movzx %ch,%edx
movl %edx,(%esi)
movl 16(%ebp),%esi
movzx %cl,%edx
movl %edx,(%esi)
movl 20(%ebp),%esi
movzx %bh,%edx
movl %edx,(%esi)
movl 24(%ebp),%esi
movzx %bl,%edx
movl %edx,(%esi)
movl 28(%ebp),%esi
movzx %ah,%edx
movl %edx,(%esi)
popl %edx
UserGate time_to_binary_nr
movl %eax,%ebx
popl %eax
subl %ebx,%eax
xorl %edx,%edx
movl $1192,%ebx
divl %ebx
movl 32(%ebp),%esi
movzx %ax,%eax
movl %eax,(%esi)
popal
leave
ret
/*##########################################################################
#
# Name : RdosSetTime
#
# Purpose....: Set time
#
# Parameters.: year, month, day
# hour, min, sec, ms
#
##########################################################################*/
.global RdosSetTime
RdosSetTime:
pushl %ebp
movl %esp,%ebp
pushal
movw 8(%ebp),%dx
movb 12(%ebp),%ch
movb 16(%ebp),%cl
movb 20(%ebp),%bh
movb 24(%ebp),%bl
movb 28(%ebp),%ah
UserGate time_to_binary_nr
movl %edx,%edi
movl %eax,%esi
movl 32(%ebp),%eax
movl $1192,%edx
mull %edx
addl %eax,%esi
adcl $0,%edi
UserGate get_system_time_nr
subl %eax,%esi
sbbl %edx,%edi
movl %esi,%eax
movl %edi,%edx
UserGate update_time_nr
popal
leave
ret
/*##########################################################################
#
# Name : RdosTicsToRecord
#
# Purpose....: Convert tics to record format
#
# Parameters.: MSB, LSB
# &year, &month, &day
# &hour, &min, &sec, &ms
#
##########################################################################*/
.global RdosTicsToRecord
RdosTicsToRecord:
pushl %ebp
movl %esp,%ebp
pushal
movl 8(%ebp),%edx
movl 12(%ebp),%eax
addl $596,%eax
adcl $0,%edx
UserGate binary_to_time_nr
pushl %edx
movl 16(%ebp),%esi
movzx %dx,%edx
movl %edx,(%esi)
movl 20(%ebp),%esi
movzx %ch,%edx
movl %edx,(%esi)
movl 24(%ebp),%esi
movzx %cl,%edx
movl %edx,(%esi)
movl 28(%ebp),%esi
movzx %bh,%edx
movl %edx,(%esi)
movl 32(%ebp),%esi
movzx %bl,%edx
movl %edx,(%esi)
movl 36(%ebp),%esi
movzx %ah,%edx
movl %edx,(%esi)
popl %edx
UserGate time_to_binary_nr
movl %eax,%ebx
movl 12(%ebp),%eax
subl %edx,%eax
xorl %edx,%edx
movl $1192,%ebx
divl %ebx
movl 40(%ebp),%esi
cmpw %ax,1000
jne rttrSaveMs
decw %ax
rttrSaveMs:
movzx %ax,%eax
movl %eax,(%esi)
popal
leave
ret
/*##########################################################################
#
# Name : RdosRecordToTics
#
# Purpose....: Convert from record format to tics
#
# Parameters.: &MSB, &LSB
# year, month, day
# hour, min, sec, ms
#
##########################################################################*/
.global RdosRecordToTics
RdosRecordToTics:
pushl %ebp
movl %esp,%ebp
pushal
movl 40(%ebp),%eax
movl $1192,%edx
mull %edx
pushl %eax
movw 16(%ebp),%dx
movb 20(%ebp),%ch
movb 24(%ebp),%cl
movb 28(%ebp),%bh
movb 32(%ebp),%bl
movb 36(%ebp),%ah
UserGate time_to_binary_nr
popl %ebx
addl %ebx,%eax
adcl $0,%edx
movl 8(%ebp),%esi
movl %edx,(%esi)
movl 12(%ebp),%esi
movl %eax,(%esi)
popal
leave
ret
/*##########################################################################
#
# Name : RdosDecodeMsbTics
#
# Purpose....: Decode MSB tics
#
# Parameters.: MSB
# &day, &hour
#
##########################################################################*/
.global RdosDecodeMsbTics
RdosDecodeMsbTics:
pushl %ebp
movl %esp,%ebp
pushal
movl 8(%ebp),%eax
xorl %edx,%edx
movl $24,%ecx
divl %ecx
movl 12(%ebp),%ebx
movl %eax,(%ebx)
movl 16(%ebp),%ebx
movl %edx,(%ebx)
popal
leave
ret
/*##########################################################################
#
# Name : RdosDecodeLsbTics
#
# Purpose....: Decode LSB tics
#
# Parameters.: LSB
# &min, &sec, &ms, &us
#
##########################################################################*/
.global RdosDecodeLsbTics
RdosDecodeLsbTics:
pushl %ebp
movl %esp,%ebp
pushal
movl 8(%ebp),%eax
movl $60,%edx
mull %edx
movl 12(%ebp),%ebx
movl %edx,(%ebx)
movl $60,%edx
mull %edx
movl 16(%ebp),%ebx
movl %edx,(%ebx)
movl $1000,%edx
mull %edx
movl 20(%ebp),%ebx
movl %edx,(%ebx)
movl $1000,%edx
mull %edx
movl 24(%ebp),%ebx
movl %edx,(%ebx)
popal
leave
ret
/*##########################################################################
#
# Name : RdosDayOfWeek
#
# Purpose....: Get day of week
#
# Parameters.: year, month, day
#
# Returns....: day of week
#
##########################################################################*/
.global RdosDayOfWeek
RdosDayOfWeek:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movl 8(%ebp),%edx
movb 12(%ebp),%ch
movb 16(%ebp),%cl
xorw %bx,%bx
xorb %ah,%ah
UserGate adjust_time_nr
pushw %dx
movl $365,%eax
imulw %dx
pushw %dx
pushw %ax
popl %ebx
popw %dx
UserGate passed_days_nr
decw %dx
shrw $2,%dx
incw %dx
addw %dx,%ax
addl %ebx,%eax
xorl %edx,%edx
addl $5,%eax
movl $7,%ebx
divl %ebx
movzx %dl,%eax
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetTics
#
# Purpose....: Get system tics
#
# Parameters.: &MSB, &LSB
#
##########################################################################*/
.global RdosGetTics
RdosGetTics:
pushl %ebp
movl %esp,%ebp
pushl %edx
pushl %esi
UserGate get_time_nr
movl 8(%ebp),%esi
movl %edx,(%esi)
movl 12(%ebp),%esi
movl %eax,(%esi)
popl %esi
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosAddTics
#
# Purpose....: Add tics to binary time
#
# Parameters.: &MSB, &LSB
# tics
#
##########################################################################*/
.global RdosAddTics
RdosAddTics:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl 12(%ebp),%ebx
addl %eax,(%ebx)
movl 8(%ebp),%ebx
adcl $0,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddMilli
#
# Purpose....: Add milliseconds to binary time
#
# Parameters.: &MSB, &LSB
# milli
#
##########################################################################*/
.global RdosAddMilli
RdosAddMilli:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl $1193,%edx
mull %edx
movl 12(%ebp),%ebx
addl %eax,(%ebx)
movl 8(%ebp),%ebx
adcl %edx,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddSec
#
# Purpose....: Add milliseconds to binary time
#
# Parameters.: &MSB, &LSB
# sec
#
##########################################################################*/
.global RdosAddSec
RdosAddSec:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl $1193000,%edx
mull %edx
movl 12(%ebp),%ebx
addl %eax,(%ebx)
movl 8(%ebp),%ebx
adcl %edx,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddMin
#
# Purpose....: Add minutes to binary time
#
# Parameters.: &MSB, &LSB
# min
#
##########################################################################*/
.global RdosAddMin
RdosAddMin:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl $71582760,%edx
mull %edx
movl 12(%ebp),%ebx
addl %eax,(%ebx)
movl 8(%ebp),%ebx
adcl %edx,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddHour
#
# Purpose....: Add hour to binary time
#
# Parameters.: &MSB, &LSB
# hour
#
##########################################################################*/
.global RdosAddHour
RdosAddHour:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl 8(%ebp),%ebx
adc %eax,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddDay
#
# Purpose....: Add days to binary time
#
# Parameters.: &MSB, &LSB
# days
#
##########################################################################*/
.global RdosAddDay
RdosAddDay:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 16(%ebp),%eax
movl $24,%edx
mull %edx
movl 8(%ebp),%ebx
adc %eax,(%ebx)
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSyncTime
#
# Purpose....: Synchronize time with NTP
#
# Parameters.: IP
#
##########################################################################*/
.global RdosSyncTime
RdosSyncTime:
pushl %ebp
movl %esp,%ebp
pushal
movl 8(%ebp),%edx
UserGate sync_time_nr
jc RdosSyncTimeFail
movl $1,%eax
jmp RdosSyncTimeDone
RdosSyncTimeFail:
xorl %eax,%eax
RdosSyncTimeDone:
popal
leave
ret
/*##########################################################################
#
# Name : RdosOpenCom
#
# Purpose....: Open com-port
#
# Parameters.: ID
# baudrate
# parity
# data bits
# stop bits
# SendBufferSize
# RecBufferSize
#
# Returns...: Com handle
#
##########################################################################*/
.global RdosOpenCom
RdosOpenCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movb 8(%ebp),%al
movb 20(%ebp),%ah
movb 24(%ebp),%bl
movb 16(%ebp),%bh
movl 12(%ebp),%ecx
movw 28(%ebp),%si
movw 32(%ebp),%di
UserGate open_com_nr
movzx %bx,%eax
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseCom
#
# Purpose....: Close com-port
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosCloseCom
RdosCloseCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_com_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosFlushCom
#
# Purpose....: Flush com-port
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosFlushCom
RdosFlushCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate flush_com_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadCom
#
# Purpose....: Read com-port
#
# Parameters.: Com handle
#
# Returns....: Character
#
##########################################################################*/
.global RdosReadCom
RdosReadCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate read_com_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWriteCom
#
# Purpose....: Write com-port
#
# Parameters.: Com handle
# char
#
# Returns....: 0 for success
#
##########################################################################*/
.global RdosWriteCom
RdosWriteCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
movb 12(%ebp),%al
UserGate write_com_nr
movzx %al,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWaitForSendCompletedCom
#
# Purpose....: Wait until send buffer is empty
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosWaitForSendCompletedCom
RdosWaitForSendCompletedCom:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate wait_for_send_completed_com_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosEnableCts
#
# Purpose....: Enable CTS signal
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosEnableCts
RdosEnableCts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate enable_cts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDisableCts
#
# Purpose....: Disable CTS signal
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosDisableCts
RdosDisableCts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate disable_cts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosEnableAutoRts
#
# Purpose....: Enable auto RTS signal generation for RS485
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosEnableAutoRts
RdosEnableAutoRts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate enable_auto_rts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDisableAutoRts
#
# Purpose....: Disable auto RTS signal generation for RS485
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosDisableAutoRts
RdosDisableAutoRts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate disable_auto_rts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetDtr
#
# Purpose....: Set DTR active
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosSetDtr
RdosSetDtr:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate set_dtr_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosResetDtr
#
# Purpose....: Set DTR inactive
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosResetDtr
RdosResetDtr:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate reset_dtr_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetRts
#
# Purpose....: Set RTS active
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosSetRts
RdosSetRts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate set_rts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosResetRts
#
# Purpose....: Set RTS inactive
#
# Parameters.: Com handle
#
##########################################################################*/
.global RdosResetRts
RdosResetRts:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate reset_rts_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetReceiveBufferSpace
#
# Purpose....: Get receive buffer free space
#
# Parameters.: Com handle
#
# Returns....: Free bytes
#
##########################################################################*/
.global RdosGetReceiveBufferSpace
RdosGetReceiveBufferSpace:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_com_receive_space_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetSendBufferSpace
#
# Purpose....: Get send buffer free space
#
# Parameters.: Com handle
#
# Returns....: Free bytes
#
##########################################################################*/
.global RdosGetSendBufferSpace
RdosGetSendBufferSpace:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_com_send_space_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosOpenFile
#
# Purpose....: Open file
#
# Parameters.: Filename
# Access
#
# Returns...: File handle
#
##########################################################################*/
.global RdosOpenFile
RdosOpenFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movb 12(%ebp),%cl
UserGate open_file_nr
jc OpenFileFailed
movzx %bx,%eax
jmp OpenFileDone
OpenFileFailed:
xorl %eax,%eax
OpenFileDone:
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateFile
#
# Purpose....: Create file
#
# Parameters.: Filename
# Attribute
#
# Returns...: File handle
#
##########################################################################*/
.global RdosCreateFile
RdosCreateFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movw 12(%ebp),%cx
UserGate create_file_nr
jc CreateFileFailed
movzx %bx,%eax
jmp CreateFileDone
CreateFileFailed:
xorl %eax,%eax
CreateFileDone:
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseFile
#
# Purpose....: Close file
#
# Parameters.: File handle
#
##########################################################################*/
.global RdosCloseFile
RdosCloseFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_file_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosIsDevice
#
# Purpose....: Check if file is device
#
# Parameters.: TRUE if device
#
##########################################################################*/
.global RdosIsDevice
RdosIsDevice:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_ioctl_data_nr
testw $0x8000,%dx
jz ridFail
movl $1,%eax
jmp ridDone
ridFail:
xorl %eax,%eax
ridDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDuplFile
#
# Purpose....: Duplicate file handle
#
# Parameters.: File handle
#
# Returns....: File handle
#
##########################################################################*/
.global RdosDuplFile
RdosDuplFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate dupl_file_nr
jc DuplFileFailed
movzx %bx,%eax
jmp DuplFileDone
DuplFileFailed:
xorl %eax,%eax
DuplFileDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetFileSize
#
# Purpose....: Get file size
#
# Parameters.: File handle
#
# Returns....: Size
#
##########################################################################*/
.global RdosGetFileSize
RdosGetFileSize:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_file_size_nr
jnc GetFileSizeDone
GetFileSizeFail:
xorl %eax,%eax
GetFileSizeDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFileSize
#
# Purpose....: Set file size
#
# Parameters.: File handle
# Size
#
##########################################################################*/
.global RdosSetFileSize
RdosSetFileSize:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
movw 8(%ebp),%bx
movl 12(%ebp),%eax
UserGate set_file_size_nr
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosGetFilePos
#
# Purpose....: Get file position
#
# Parameters.: File handle
#
# Returns....: Position
#
##########################################################################*/
.global RdosGetFilePos
RdosGetFilePos:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_file_pos_nr
jnc GetFilePosDone
GetFilePosFail:
xorl %eax,%eax
GetFilePosDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFilePos
#
# Purpose....: Set file position
#
# Parameters.: File handle
# Position
#
##########################################################################*/
.global RdosSetFilePos
RdosSetFilePos:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
movw 8(%ebp),%bx
movl 12(%ebp),%eax
UserGate set_file_pos_nr
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosGetFileTime
#
# Purpose....: Get file time & date
#
# Parameters.: File handle
# &MSB, &LSB
#
##########################################################################*/
.global RdosGetFileTime
RdosGetFileTime:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movw 8(%ebp),%bx
UserGate get_file_time_nr
jc GetFileTimeDone
movl 12(%ebp),%edi
movl %edx,(%edi)
movl 16(%ebp),%edi
movl %eax,(%edi)
GetFileTimeDone:
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFileTime
#
# Purpose....: Set file time & date
#
# Parameters.: File handle
# MSB, LSB
#
##########################################################################*/
.global RdosSetFileTime
RdosSetFileTime:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
pushl %edx
movw 8(%ebp),%bx
movl 12(%ebp),%edx
movl 16(%ebp),%eax
UserGate set_file_time_nr
popl %edx
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosReadFile
#
# Purpose....: Read from file
#
# Parameters.: File handle
# buffer
# count
#
# Returns....: Read count
#
##########################################################################*/
.global RdosReadFile
RdosReadFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
movl 16(%ebp),%ecx
UserGate read_file_nr
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWriteFile
#
# Purpose....: Write to file
#
# Parameters.: File handle
# buffer
# count
#
# Returns....: Written count
#
##########################################################################*/
.global RdosWriteFile
RdosWriteFile:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
movl 16(%ebp),%ecx
UserGate write_file_nr
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateMapping
#
# Purpose....: Create file mapping
#
# Parameters.: Size
#
# Returns...: Filemap handle
#
##########################################################################*/
.global RdosCreateMapping
RdosCreateMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%eax
UserGate create_mapping_nr
movzx %bx,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateNamedMapping
#
# Purpose....: Create named file mapping
#
# Parameters.: Name
# Size
#
# Returns...: Filemap handle
#
##########################################################################*/
.global RdosCreateNamedMapping
RdosCreateNamedMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%eax
UserGate create_named_mapping_nr
movzx %bx,%eax
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateNamedFileMapping
#
# Purpose....: Create file named file mapping
#
# Parameters.: Name
# Size
# File handle
#
# Returns...: Filemap handle
#
##########################################################################*/
.global RdosCreateNamedFileMapping
RdosCreateNamedFileMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%eax
movw 16(%ebp),%bx
UserGate create_named_file_mapping_nr
movzx %bx,%eax
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosOpenNamedMapping
#
# Purpose....: Open named file mapping
#
# Parameters.: Name
#
# Returns...: Filemap handle
#
##########################################################################*/
.global RdosOpenNamedMapping
RdosOpenNamedMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%edi
UserGate open_named_mapping_nr
movzx %bx,%eax
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSyncMapping
#
# Purpose....: Sync file mapping
#
# Parameters.: Filemap handle
#
##########################################################################*/
.global RdosSyncMapping
RdosSyncMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate sync_mapping_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseMapping
#
# Purpose....: Close file mapping
#
# Parameters.: Filemap handle
#
##########################################################################*/
.global RdosCloseMapping
RdosCloseMapping:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_mapping_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosMapView
#
# Purpose....: Map view of file into memory
#
# Parameters.: Filemap handle
# Offset
# Address
# Size
#
##########################################################################*/
.global RdosMapView
RdosMapView:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%eax
movl 16(%ebp),%edi
movl 20(%ebp),%ecx
UserGate map_view_nr
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosUnmapView
#
# Purpose....: Unmap view of file
#
# Parameters.: Filemap handle
#
##########################################################################*/
.global RdosUnmapView
RdosUnmapView:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate unmap_view_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetCurDrive
#
# Purpose....: Set current drive
#
# Parameters.: Drive
#
##########################################################################*/
.global RdosSetCurDrive
RdosSetCurDrive:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%al
UserGate set_cur_drive_nr
jc rscdrFail
movl $1,%eax
jmp rscdrDone
rscdrFail:
xorl %eax,%eax
rscdrDone:
leave
ret
/*##########################################################################
#
# Name : RdosGetCurDrive
#
# Purpose....: Get current drive
#
# Returns....: Drive
#
##########################################################################*/
.global RdosGetCurDrive
RdosGetCurDrive:
pushl %ebp
movl %esp,%ebp
xorl %eax,%eax
UserGate get_cur_drive_nr
movzx %al,%eax
leave
ret
/*##########################################################################
#
# Name : RdosSetCurDir
#
# Purpose....: Set current directory
#
# Parameters.: Pathname
#
##########################################################################*/
.global RdosSetCurDir
RdosSetCurDir:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate set_cur_dir_nr
jc rscdFail
movl $1,%eax
jmp rscdDone
rscdFail:
xorl %eax,%eax
rscdDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosGetCurDir
#
# Purpose....: Get current directory
#
# Parameters.: Drive
# Pathname
#
##########################################################################*/
.global RdosGetCurDir
RdosGetCurDir:
pushl %ebp
movl %esp,%ebp
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%edi
UserGate get_cur_dir_nr
jc rgcdFail
movl $1,%eax
jmp rgcdDone
rgcdFail:
xorl %eax,%eax
rgcdDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosMakeDir
#
# Purpose....: Create directory
#
# Parameters.: Pathname
#
##########################################################################*/
.global RdosMakeDir
RdosMakeDir:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate make_dir_nr
jc mdFail
movl $1,%eax
jmp mdDone
mdFail:
xorl %eax,%eax
mdDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosRemoveDir
#
# Purpose....: Remove directory
#
# Parameters.: Pathname
#
##########################################################################*/
.global RdosRemoveDir
RdosRemoveDir:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate remove_dir_nr
jc rdFail
movl $1,%eax
jmp rdDone
rdFail:
xorl %eax,%eax
rdDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosRenameFile
#
# Purpose....: Rename file
#
# Parameters.: ToName
# FromName
#
##########################################################################*/
.global RdosRenameFile
RdosRenameFile:
pushl %ebp
movl %esp,%ebp
pushl %esi
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%esi
UserGate rename_file_nr
jc rfFail
mov $1,%eax
jmp rfDone
rfFail:
xorl %eax,%eax
rfDone:
popl %edi
popl %esi
leave
ret
/*##########################################################################
#
# Name : RdosDeleteFile
#
# Purpose....: Delete file
#
# Parameters.: Pathname
#
##########################################################################*/
.global RdosDeleteFile
RdosDeleteFile:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate delete_file_nr
jc dfFail
mov $1,%eax
jmp dfDone
dfFail:
xorl %eax,%eax
dfDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosGetFileAttribute
#
# Purpose....: Get file attribute
#
# Parameters.: Pathname
# &Attrib
#
##########################################################################*/
.global RdosGetFileAttribute
RdosGetFileAttribute:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
UserGate get_file_attribute_nr
jc gfaFail
movl 12(%ebp),%edi
movzx %cx,%ecx
movl %ecx,(%edi)
movl $1,%eax
jmp gfaDone
gfaFail:
xorl %eax,%eax
gfaDone:
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosSetFileAttribute
#
# Purpose....: Set file attribute
#
# Parameters.: Pathname
# Attrib
#
##########################################################################*/
.global RdosSetFileAttribute
RdosSetFileAttribute:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movw 12(%ebp),%cx
UserGate set_file_attribute_nr
jc sfaFail
movl $1,%eax
jmp sfaDone
sfaFail:
xorl %eax,%eax
sfaDone:
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosOpenDir
#
# Purpose....: Open directory
#
# Parameters.: Pathname
#
# Returns....: Dir handle
#
##########################################################################*/
.global RdosOpenDir
RdosOpenDir:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%edi
UserGate open_dir_nr
jc odFail
movzx %bx,%eax
jmp odDone
odFail:
xorl %eax,%eax
odDone:
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseDir
#
# Purpose....: Close directory
#
# Parameters.: Dir handle
#
##########################################################################*/
.global RdosCloseDir
RdosCloseDir:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_dir_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadDir
#
# Purpose....: Read directory entry
#
# Parameters.: Dir handle
# Entry #
# MaxNameSize
# Name buffer
# &FileSize
# &Attribute
# &Msb time
# &Lsb time
#
##########################################################################*/
.global RdosReadDir
RdosReadDir:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movw 12(%ebp),%dx
movw 16(%ebp),%cx
movl 20(%ebp),%edi
UserGate read_dir_nr
jc rdiFail
movl 24(%ebp),%edi
movl %ecx,(%edi)
movl 28(%ebp),%edi
movzx %bx,%ebx
movl %ebx,(%edi)
movl 32(%ebp),%edi
movl %edx,(%edi)
movl 36(%ebp),%edi
movl %eax,(%edi)
movl $1,%eax
jmp rdiDone
rdiFail:
xorl %eax,%eax
rdiDone:
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetFocus
#
# Purpose....: Set input focus
#
# Parameters.: Focus handle
#
##########################################################################*/
.global RdosSetFocus
RdosSetFocus:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
UserGate set_focus_nr
leave
ret
/*##########################################################################
#
# Name : RdosGetFocus
#
# Purpose....: Get input focus
#
# Returns....: Focus handle
#
##########################################################################*/
.global RdosGetFocus
RdosGetFocus:
pushl %ebp
movl %esp,%ebp
UserGate get_focus_nr
leave
ret
/*##########################################################################
#
# Name : RdosClearKeyboard
#
# Purpose....: Clear keyboard buffer
#
##########################################################################*/
.global RdosClearKeyboard
RdosClearKeyboard:
pushl %ebp
movl %esp,%ebp
UserGate flush_keyboard_nr
leave
ret
/*##########################################################################
#
# Name : RdosPollKeyboard
#
# Purpose....: Poll keyboard buffer
#
# Returns....: TRUE if non-empty
#
##########################################################################*/
.global RdosPollKeyboard
RdosPollKeyboard:
pushl %ebp
movl %esp,%ebp
UserGate poll_keyboard_nr
jc rpkEmpty
mov $1,%eax
jmp rpkDone
rpkEmpty:
xorl %eax,%eax
rpkDone:
leave
ret
/*##########################################################################
#
# Name : RdosReadKeyboard
#
# Purpose....: Read keyboard buffer
#
# Returns....: Scan code
#
##########################################################################*/
.global RdosReadKeyboard
RdosReadKeyboard:
pushl %ebp
movl %esp,%ebp
UserGate read_keyboard_nr
movzx %ax,%eax
leave
ret
/*##########################################################################
#
# Name : RdosGetKeyboardState
#
# Purpose....: Get keyboard buffer
#
# Returns....: Keyboard state
#
##########################################################################*/
.global RdosGetKeyboardState
RdosGetKeyboardState:
pushl %ebp
movl %esp,%ebp
UserGate get_keyboard_state_nr
movzx %ax,%eax
leave
ret
/*##########################################################################
#
# Name : RdosPutKeyboard
#
# Purpose....: Put scancode in keyboard buffer
#
##########################################################################*/
.global RdosPutKeyboard
RdosPutKeyboard:
pushl %ebp
movl %esp,%ebp
pushl %edx
movw 8(%ebp),%ax
movb 12(%ebp),%dl
movb 16(%ebp),%dh
UserGate put_keyboard_code_nr
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosPeekKeyEvent
#
# Purpose....: Peek keyboard event
#
##########################################################################*/
.global RdosPeekKeyEvent
RdosPeekKeyEvent:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
UserGate peek_key_event_nr
jc rpeFail
movl 8(%ebp),%edi
movzx %ax,%eax
movl %eax,(%edi)
movl 12(%ebp),%edi
movzx %cx,%eax
movl %eax,(%edi)
movl 16(%ebp),%edi
movzx %dl,%eax
movl %eax,(%edi)
movl 20(%ebp),%edi
movzx %dh,%eax
movl %eax,(%edi)
movl $1,%eax
jmp rpeDone
rpeFail:
xorl %eax,%eax
rpeDone:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosReadKeyEvent
#
# Purpose....: Read keyboard event
#
##########################################################################*/
.global RdosReadKeyEvent
RdosReadKeyEvent:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
UserGate read_key_event_nr
jc rkeFail
movl 8(%ebp),%edi
movzx %ax,%eax
movl %eax,(%edi)
movl 12(%ebp),%edi
movzx %cx,%eax
movl %eax,(%edi)
movl 16(%ebp),%edi
movzx %dl,%eax
movl %eax,(%edi)
movl 20(%ebp),%edi
movzx %dh,%eax
movl %eax,(%edi)
movl $1,%eax
jmp rkeDone
rkeFail:
xorl %eax,%eax
rkeDone:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosHideMouse
#
# Purpose....: Hide mouse cursor
#
##########################################################################*/
.global RdosHideMouse
RdosHideMouse:
pushl %ebp
movl %esp,%ebp
UserGate hide_mouse_nr
leave
ret
/*##########################################################################
#
# Name : RdosShowMouse
#
# Purpose....: Show mouse cursor
#
##########################################################################*/
.global RdosShowMouse
RdosShowMouse:
pushl %ebp
movl %esp,%ebp
UserGate show_mouse_nr
leave
ret
/*##########################################################################
#
# Name : RdosGetMousePosition
#
# Purpose....: Get mouse position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetMousePosition
RdosGetMousePosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_mouse_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosSetMousePosition
#
# Purpose....: Set mouse position
#
# Parameters.: x, y
#
##########################################################################*/
.global RdosSetMousePosition
RdosSetMousePosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
movw 8(%ebp),%cx
movw 12(%ebp),%dx
UserGate set_mouse_position_nr
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosSetMouseWindow
#
# Purpose....: Set mouse window
#
# Parameters.: start x, start y
# end x, end y
#
##########################################################################*/
.global RdosSetMouseWindow
RdosSetMouseWindow:
pushl %ebp
movl %esp,%ebp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
movw 8(%ebp),%ax
movw 12(%ebp),%bx
movw 16(%ebp),%cx
movw 20(%ebp),%dx
UserGate set_mouse_window_nr
popl %edx
popl %ecx
popl %ebx
popl %eax
leave
ret
/*##########################################################################
#
# Name : RdosSetMouseMickey
#
# Purpose....: Set mouse mickey
#
# Parameters.: x, y
#
##########################################################################*/
.global RdosSetMouseMickey
RdosSetMouseMickey:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
movw 8(%ebp),%cx
movw 12(%ebp),%dx
UserGate set_mouse_mickey_nr
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetCursorPosition
#
# Purpose....: Get cursor position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetCursorPosition
RdosGetCursorPosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_cursor_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosSetCursorPosition
#
# Purpose....: Set cursor position
#
# Parameters.: x, y
#
##########################################################################*/
.global RdosSetCursorPosition
RdosSetCursorPosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
movw 8(%ebp),%cx
movw 12(%ebp),%dx
UserGate set_cursor_position_nr
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetLeftButton
#
# Purpose....: Check if left button is pressed
#
# Returns....: TRUE if pressed
#
##########################################################################*/
.global RdosGetLeftButton
RdosGetLeftButton:
pushl %ebp
movl %esp,%ebp
UserGate get_left_button_nr
jc get_left_rel
mov $1,%eax
jmp get_left_done
get_left_rel:
xorl %eax,%eax
get_left_done:
leave
ret
/*##########################################################################
#
# Name : RdosGetRightButton
#
# Purpose....: Check if right button is pressed
#
# Returns....: TRUE if pressed
#
##########################################################################*/
.global RdosGetRightButton
RdosGetRightButton:
pushl %ebp
movl %esp,%ebp
UserGate get_right_button_nr
jc get_right_rel
mov $1,%eax
jmp get_right_done
get_right_rel:
xorl %eax,%eax
get_right_done:
leave
ret
/*##########################################################################
#
# Name : RdosGetLeftButtonPressPosition
#
# Purpose....: Get left button press position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetLeftButtonPressPosition
RdosGetLeftButtonPressPosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_left_button_press_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetRightButtonPressPosition
#
# Purpose....: Get right button press position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetRightButtonPressPosition
RdosGetRightButtonPressPosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_right_button_press_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetLeftButtonReleasePosition
#
# Purpose....: Get left button release position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetLeftButtonReleasePosition
RdosGetLeftButtonReleasePosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_left_button_release_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetRightButtonReleasePosition
#
# Purpose....: Get right button release position
#
# Parameters.: &x, &y
#
##########################################################################*/
.global RdosGetRightButtonReleasePosition
RdosGetRightButtonReleasePosition:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
UserGate get_right_button_release_position_nr
movl 8(%ebp),%eax
movzx %cx,%ecx
movl %ecx,(%eax)
movl 12(%ebp),%eax
movzx %dx,%edx
movl %edx,(%eax)
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosReadLine
#
# Purpose....: Read a line from keyboard
#
# Parameters.: Buffer
# Size
#
# Returns....: Read count
#
##########################################################################*/
.global RdosReadLine
RdosReadLine:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%ecx
UserGate read_con_nr
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosWriteChar
#
# Purpose....: Write a character to screen
#
# Parameters.: Char
#
##########################################################################*/
.global RdosWriteChar
RdosWriteChar:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%al
UserGate write_char_nr
leave
ret
/*##########################################################################
#
# Name : RdosWriteSizeString
#
# Purpose....: Write a fixed number of characters to screen
#
# Parameters.: String
# Count
#
##########################################################################*/
.global RdosWriteSizeString
RdosWriteSizeString:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%ecx
UserGate write_size_string_nr
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosWriteString
#
# Purpose....: Write a string to screen
#
# Parameters.: String
#
##########################################################################*/
.global RdosWriteString
RdosWriteString:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate write_asciiz_nr
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosNameToIp
#
# Purpose....: Convert host name to IP address
#
# Parameters.: Name
#
# Returns....: IP
#
##########################################################################*/
.global RdosNameToIp
RdosNameToIp:
pushl %ebp
movl %esp,%ebp
pushl %edi
movl 8(%ebp),%edi
UserGate name_to_ip_nr
jc rntiFail
movl %edx,%eax
jmp rntiDone
rntiFail:
xorl %eax,%eax
rntiDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosGetIp
#
# Purpose....: Get my IP
#
# Returns....: IP
#
##########################################################################*/
.global RdosGetIp
RdosGetIp:
pushl %ebp
movl %esp,%ebp
UserGate get_ip_address_nr
movl %edx,%eax
leave
ret
/*##########################################################################
#
# Name : RdosIpToName
#
# Purpose....: Convert IP address to host name
#
# Parameters.: IP
# Name
# Size
#
##########################################################################*/
.global RdosIpToName
RdosIpToName:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
;
movl 8(%ebp),%edx
movl 12(%ebp),%edi
movl 16(%ebp),%ecx
UserGate ip_to_name_nr
jnc ritnDone
ritnFail:
xorl %eax,%eax
ritnDone:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosPing
#
# Purpose....: Ping node
#
# Parameters.: IP
# Timeout
#
##########################################################################*/
.global RdosPing
RdosPing:
pushl %ebp
movl %esp,%ebp
pushl %edx
;
movl 8(%ebp),%edx
movl 12(%ebp),%eax
UserGate ping_nr
jc ping_failed
movl $1,%eax
jmp ping_done
ping_failed:
xorl %eax,%eax
ping_done:
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosOpenTcpConnection
#
# Purpose....: Open an active connection over TCP
#
# Parameters.: RemoteIp
# LocalPort
# RemotePort
# Timeout in ms
# BufferSize
#
# Returns....: Conn handle
#
##########################################################################*/
.global RdosOpenTcpConnection
RdosOpenTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%edx
movw 12(%ebp),%si
movw 16(%ebp),%di
movl 20(%ebp),%eax
movl 24(%ebp),%ecx
UserGate open_tcp_connection_nr
mov $0,%eax
jc rotcDone
movl %ebx,%eax
rotcDone:
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateTcpListen
#
# Purpose....: Create listen handle
#
# Parameters.: Port
# MaxConnections
# BufferSize
#
# Returns....: Listen handle
#
##########################################################################*/
.global RdosCreateTcpListen
RdosCreateTcpListen:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
movw 8(%ebp),%si
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate create_tcp_listen_nr
movzx %bx,%eax
jnc ctlDone
xorl %eax,%eax
ctlDone:
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetTcpListen
#
# Purpose....: Get connection from listen
#
# Parameters.: Listen handle
#
# Returns....: Conn handle
#
##########################################################################*/
.global RdosGetTcpListen
RdosGetTcpListen:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_tcp_listen_nr
movzx %ax,%eax
jnc gtlDone
xorl %eax,%eax
gtlDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseTcpListen
#
# Purpose....: Close TCP listen
#
# Parameters.: Listen handle
#
##########################################################################*/
.global RdosCloseTcpListen
RdosCloseTcpListen:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_tcp_listen_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForTcpListen
#
# Purpose....: Add wait object to tcp listen
#
# Parameters.: Wait handle
# Listen handle
# ID
#
##########################################################################*/
.global RdosAddWaitForTcpListen
RdosAddWaitForTcpListen:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate add_wait_for_tcp_listen_nr
movl $1,%eax
jnc awftlDone
xorl %eax,%eax
awftlDone:
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWaitForTcpConnection
#
# Purpose....: Wait for Tcp connection to be established
#
# Parameters.: Conn handle
# Timeout ms
#
##########################################################################*/
.global RdosWaitForTcpConnection
RdosWaitForTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
movl 12(%ebp),%eax
UserGate wait_for_tcp_connection_nr
movl $1,%eax
jnc wftcDone
xorl %eax,%eax
wftcDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddWaitForTcpConnection
#
# Purpose....: Add wait object to tcp connection
#
# Parameters.: Wait handle
# Conn handle
# ID
#
##########################################################################*/
.global RdosAddWaitForTcpConnection
RdosAddWaitForTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movw 8(%ebp),%bx
movw 12(%ebp),%ax
movl 16(%ebp),%ecx
UserGate add_wait_for_tcp_connection_nr
movl $1,%eax
jnc awftcDone
xorl %eax,%eax
awftcDone:
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseTcpConnection
#
# Purpose....: Close Tcp connection
#
# Parameters.: Conn handle
#
##########################################################################*/
.global RdosCloseTcpConnection
RdosCloseTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate close_tcp_connection_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDeleteTcpConnection
#
# Purpose....: Delete Tcp connection
#
# Parameters.: Conn handle
#
##########################################################################*/
.global RdosDeleteTcpConnection
RdosDeleteTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate delete_tcp_connection_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAbortTcpConnection
#
# Purpose....: Abort Tcp connection
#
# Parameters.: Conn handle
#
##########################################################################*/
.global RdosAbortTcpConnection
RdosAbortTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate abort_tcp_connection_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosPushTcpConnection
#
# Purpose....: Push Tcp connection
#
# Parameters.: Conn handle
#
##########################################################################*/
.global RdosPushTcpConnection
RdosPushTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate push_tcp_connection_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosPollTcpConnection
#
# Purpose....: Poll Tcp connection
#
# Parameters.: Conn handle
#
# Returns....: Available bytes in receive buffer
#
##########################################################################*/
.global RdosPollTcpConnection
RdosPollTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate poll_tcp_connection_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosIsTcpConnectionClosed
#
# Purpose....: Check if connection is closed
#
# Parameters.: Conn handle
#
# Returns....: TRUE if closed
#
##########################################################################*/
.global RdosIsTcpConnectionClosed
RdosIsTcpConnectionClosed:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate is_tcp_connection_closed_nr
jc rptcClosed
xorl %eax,%eax
jmp rptcDone
rptcClosed:
movl $1,%eax
rptcDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetRemoteTcpConnectionIp
#
# Purpose....: Get remote IP
#
# Parameters.: Conn handle
#
# Returns....: IP
#
##########################################################################*/
.global RdosGetRemoteTcpConnectionIp
RdosGetRemoteTcpConnectionIp:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_remote_tcp_connection_ip_nr
jnc grtciDone
movl $0xFFFFFFFF,%eax
grtciDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetRemoteTcpConnectionPort
#
# Purpose....: Get remote port
#
# Parameters.: Conn handle
#
# Returns....: Port
#
##########################################################################*/
.global RdosGetRemoteTcpConnectionPort
RdosGetRemoteTcpConnectionPort:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_remote_tcp_connection_port_nr
jnc grtcpDone
movl $0,%eax
grtcpDone:
movzx %ax,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetLocalTcpConnectionPort
#
# Purpose....: Get local port
#
# Parameters.: Conn handle
#
# Returns....: Port
#
##########################################################################*/
.global RdosGetLocalTcpConnectionPort
RdosGetLocalTcpConnectionPort:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movw 8(%ebp),%bx
UserGate get_local_tcp_connection_port_nr
jnc gltcpDone
movl $0,%eax
gltcpDone:
movzx %ax,%eax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadTcpConnection
#
# Purpose....: Read data from connection
#
# Parameters.: Conn handle
# Buffer
# Size
#
# Returns....: Read bytes
#
##########################################################################*/
.global RdosReadTcpConnection
RdosReadTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
movl 16(%ebp),%ecx
UserGate read_tcp_connection_nr
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWriteTcpConnection
#
# Purpose....: Write data fto connection
#
# Parameters.: Conn handle
# Buffer
# Size
#
# Returns....: Written bytes
#
##########################################################################*/
.global RdosWriteTcpConnection
RdosWriteTcpConnection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%edi
movl 16(%ebp),%ecx
UserGate write_tcp_connection_nr
popl %edi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetLocalMailslot
#
# Purpose....: Get local mailslot from name
#
# Parameters.: Name
#
# Returns....: Mailslot handle
#
##########################################################################*/
.global RdosGetLocalMailslot
RdosGetLocalMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%edi
UserGate get_local_mailslot_nr
jc rglmFail
movzx %bx,%eax
jmp rglmDone
rglmFail:
xorl %eax,%eax
rglmDone:
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetRemoteMailslot
#
# Purpose....: Get remote mailslot from name
#
# Parameters.: IP
# Name
#
# Returns....: Mailslot handle
#
##########################################################################*/
.global RdosGetRemoteMailslot
RdosGetRemoteMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edx
pushl %edi
movl 8(%ebp),%edx
movl 12(%ebp),%edi
UserGate get_remote_mailslot_nr
jc rgrmFail
movzx %bx,%eax
jmp rgrmDone
rgrmFail:
xorl %eax,%eax
rgrmDone:
popl %edi
popl %edx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosFreeMailslot
#
# Purpose....: Free mailslot
#
# Parameters.: Mailslot handle
#
##########################################################################*/
.global RdosFreeMailslot
RdosFreeMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate free_mailslot_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSendMailslot
#
# Purpose....: Send mailslot
#
# Parameters.: Mailslot handle
# Msg
# Size
# ReplyBuf
# MaxReplySize
#
# Returns....: Size of reply
#
##########################################################################*/
.global RdosSendMailslot
RdosSendMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movw 8(%ebp),%bx
movl 12(%ebp),%esi
movl 16(%ebp),%ecx
movl 20(%ebp),%edi
movl 24(%ebp),%eax
UserGate send_mailslot_nr
jc smFail
movl %ecx,%eax
jmp smDone
smFail:
movl $0xFFFFFFFF,%eax
smDone:
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDefineMailslot
#
# Purpose....: Define mailslot
#
# Parameters.: Name
# Max msg size
#
##########################################################################*/
.global RdosDefineMailslot
RdosDefineMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%ecx
UserGate define_mailslot_nr
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosReceiveMailslot
#
# Purpose....: Receive from mailslot
#
# Parameters.: Msg buffer
#
# Returns....: Msg size
#
##########################################################################*/
.global RdosReceiveMailslot
RdosReceiveMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
UserGate receive_mailslot_nr
movl %ecx,%eax
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosReplyMailslot
#
# Purpose....: Reply to mailslot
#
# Parameters.: Msg buffer
# Msg size
#
##########################################################################*/
.global RdosReplyMailslot
RdosReplyMailslot:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edi
movl 8(%ebp),%edi
movl 12(%ebp),%ecx
UserGate reply_mailslot_nr
popl %edi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetIdeDisc
#
# Purpose....: Get IDE disc
#
# Parameters.: Unit #
#
# Returns....: Disc #
#
##########################################################################*/
.global RdosGetIdeDisc
RdosGetIdeDisc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movb 8(%ebp),%bl
UserGate get_ide_disc_nr
jc get_ide_disc_fail
movzx %al,%eax
jmp get_ide_disc_done
get_ide_disc_fail:
movl $0xFFFFFFFF,%eax
get_ide_disc_done:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetFloppyDisc
#
# Purpose....: Get floppy disc
#
# Parameters.: Unit #
#
# Returns....: Disc #
#
##########################################################################*/
.global RdosGetFloppyDisc
RdosGetFloppyDisc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movb 8(%ebp),%bl
UserGate get_floppy_disc_nr
jc get_floppy_disc_fail
movzx %al,%eax
jmp get_floppy_disc_done
get_floppy_disc_fail:
movl $0xFFFFFFFF,%eax
get_floppy_disc_done:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetDiscInfo
#
# Purpose....: Get disc info
#
# Parameters.: Disc #
# Bytes / sector
# Total sectors
# BIOS sectors / cyl
# BIOS heads
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosGetDiscInfo
RdosGetDiscInfo:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movb 8(%ebp),%al
UserGate get_disc_info_nr
jc get_disc_info_fail
movl 12(%ebp),%ebx
movzx %cx,%ecx
movl %ecx,(%ebx)
movl 16(%ebp),%ebx
movl %edx,(%ebx)
movl 20(%ebp),%ebx
movzx %si,%esi
movl %esi,(%ebx)
movl 24(%ebp),%ebx
movzx %di,%edi
movl %edi,(%ebx)
movl $1,%eax
jmp get_disc_info_done
get_disc_info_fail:
xorl %eax,%eax
get_disc_info_done:
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetDiscInfo
#
# Purpose....: Set disc info
#
# Parameters.: Disc #
# Bytes / sector
# Total sectors
# BIOS sectors / cyl
# BIOS heads
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosSetDiscInfo
RdosSetDiscInfo:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
pushl %esi
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%ecx
movl 16(%ebp),%edx
movl 20(%ebp),%esi
movl 24(%ebp),%edi
UserGate set_disc_info_nr
jc set_disc_info_fail
movl $1,%eax
jmp set_disc_info_done
set_disc_info_fail:
xorl %eax,%eax
set_disc_info_done:
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadDisc
#
# Purpose....: Read from disc
#
# Parameters.: Disc #
# Sector #
# Buffer
# Size
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosReadDisc
RdosReadDisc:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%edx
movl 16(%ebp),%edi
movl 20(%ebp),%ecx
UserGate read_disc_nr
jc read_disc_fail
movl $1,%eax
jmp read_disc_done
read_disc_fail:
xorl %eax,%eax
read_disc_done:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosWriteDisc
#
# Purpose....: Write to disc
#
# Parameters.: Disc #
# Sector #
# Buffer
# Size
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosWriteDisc
RdosWriteDisc:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%edx
movl 16(%ebp),%edi
movl 20(%ebp),%ecx
UserGate write_disc_nr
jc write_disc_fail
movl $1,%eax
jmp write_disc_done
write_disc_fail:
xorl %eax,%eax
write_disc_done:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosAllocateFixedDrive
#
# Purpose....: Allocate fixed drive
#
# Parameters.: Drive #
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosAllocateFixedDrive
RdosAllocateFixedDrive:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%al
UserGate allocate_fixed_drive_nr
jc allocate_fixed_drive_fail
movl $1,%eax
jmp allocate_fixed_drive_done
allocate_fixed_drive_fail:
xorl %eax,%eax
allocate_fixed_drive_done:
leave
ret
/*##########################################################################
#
# Name : RdosAllocateStaticDrive
#
# Purpose....: Allocate static drive
#
# Returns....: Drive #
#
##########################################################################*/
.global RdosAllocateStaticDrive
RdosAllocateStaticDrive:
pushl %ebp
movl %esp,%ebp
UserGate allocate_static_drive_nr
jc allocate_static_drive_fail
movzx %al,%eax
jmp allocate_static_drive_done
allocate_static_drive_fail:
xorl %eax,%eax
allocate_static_drive_done:
leave
ret
/*##########################################################################
#
# Name : RdosAllocateDynamicDrive
#
# Purpose....: Allocate dynamic drive
#
# Returns....: Drive #
#
##########################################################################*/
.global RdosAllocateDynamicDrive
RdosAllocateDynamicDrive:
pushl %ebp
movl %esp,%ebp
UserGate allocate_dynamic_drive_nr
jc allocate_dynamic_drive_fail
movzx %al,%eax
jmp allocate_dynamic_drive_done
allocate_dynamic_drive_fail:
xorl %eax,%eax
allocate_dynamic_drive_done:
leave
ret
/*##########################################################################
#
# Name : RdosGetRdfsInfo
#
# Purpose....: Get rdfs info
#
# Parameters.: Crypt tab
# Key tab
# Extent size tab
#
##########################################################################*/
.global RdosGetRdfsInfo
RdosGetRdfsInfo:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%esi
movl 12(%ebp),%edi
movl 16(%ebp),%ebx
UserGate get_rdfs_info_nr
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetDriveInfo
#
# Purpose....: Get drive info
#
# Parameters.: Drive #
# Free units
# Bytes per unit
# Total units
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosGetDriveInfo
RdosGetDriveInfo:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movb 8(%ebp),%al
UserGate get_drive_info_nr
jc get_drive_info_fail
movl 12(%ebp),%ebx
movl %eax,(%ebx)
movl 16(%ebp),%ebx
movzx %cx,%ecx
movl %ecx,(%ebx)
movl 20(%ebp),%ebx
movl %edx,(%ebx)
movl $1,%eax
jmp get_drive_info_done
get_drive_info_fail:
xorl %eax,%eax
get_drive_info_done:
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDemandLoadDrive
#
# Purpose....: Demand load drive
#
# Parameters.: Drive #
#
##########################################################################*/
.global RdosDemandLoadDrive
RdosDemandLoadDrive:
pushl %ebp
movl %esp,%ebp
movb 8(%ebp),%al
UserGate demand_load_drive_nr
leave
ret
/*##########################################################################
#
# Name : RdosGetDriveDiscParam
#
# Purpose....: Get drive disc parameters
#
# Parameters.: Drive #
# Disc #
# Start sector
# Total sectors
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosGetDriveDiscParam
RdosGetDriveDiscParam:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %edx
movb 8(%ebp),%al
UserGate get_drive_disc_param_nr
jc get_drive_disc_param_fail
movl 12(%ebp),%ebx
movzx %al,%eax
movl %eax,(%ebx)
movl 16(%ebp),%ebx
movl %edx,(%ebx)
movl 20(%ebp),%ebx
movl %ecx,(%ebx)
movl $1,%eax
jmp get_drive_disc_param_done
get_drive_disc_param_fail:
xorl %eax,%eax
get_drive_disc_param_done:
popl %edx
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosFormatDrive
#
# Purpose....: Format drive
#
# Parameters.: Disc #
# Start sector
# Sectors
# FS name
#
# Returns....: Drive #
#
##########################################################################*/
.global RdosFormatDrive
RdosFormatDrive:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %edx
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%edx
movl 16(%ebp),%ecx
movl 20(%ebp),%edi
UserGate format_drive_nr
jc rfdFail
movzx %al,%eax
jmp rfdDone
rfdFail:
xorl %eax,%eax
rfdDone:
popl %edi
popl %edx
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosGetExeName
#
# Purpose....: Get name of executable file
#
# Returns....: Exe pathname
#
##########################################################################*/
.global RdosGetExeName
RdosGetExeName:
pushl %ebp
movl %esp,%ebp
pushl %edi
UserGate get_exe_name_nr
jc rgenFail
movl %edi,%eax
jmp rgenDone
rgenFail:
xorl %eax,%eax
rgenDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosOpenAdc
#
# Purpose....: Open handle to ADC channel
#
# Parameters.: Channel #
#
# Returns....: Adc handle
#
##########################################################################*/
.global RdosOpenAdc
RdosOpenAdc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%eax
UserGate open_adc_nr
movw %bx,%ax
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseAdc
#
# Purpose....: Close ADC handle
#
# Parameters.: Adc handle
#
##########################################################################*/
.global RdosCloseAdc
RdosCloseAdc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate close_adc_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDefineAdcTime
#
# Purpose....: Define time of next conversion
#
# Parameters.: Adc handle
# MSB time
# LSB time
#
##########################################################################*/
.global RdosDefineAdcTime
RdosDefineAdcTime:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edx
movl 8(%ebp),%ebx
movl 12(%ebp),%edx
movl 16(%ebp),%eax
UserGate define_adc_time_nr
popl %edx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadAdc
#
# Purpose....: Read ADC
#
# Parameters.: Adc handle
#
# Returns....: Value
#
##########################################################################*/
.global RdosReadAdc
RdosReadAdc:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate read_adc_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadSerialLines
#
# Purpose....: Read serial lines
#
# Parameters.: Device
# &Value
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosReadSerialLines
RdosReadSerialLines:
pushl %ebp
movl %esp,%ebp
pushl %edx
pushl %esi
movb 8(%ebp),%dh
UserGate read_serial_lines_nr
jc rdsFail
movzx %al,%eax
movl 12(%ebp),%esi
movl %eax,(%esi)
movl $1,%eax
jmp rdsDone
rdsFail:
xorl %eax,%eax
rdsDone:
popl %esi
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosToggleSerialLine
#
# Purpose....: Toggle serial line
#
# Parameters.: Device
# Line
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosToggleSerialLine
RdosToggleSerialLine:
pushl %ebp
movl %esp,%ebp
pushl %edx
movb 8(%ebp),%dh
movb 12(%ebp),%dl
UserGate toggle_serial_line_nr
jc rtsFail
movl $1,%eax
jmp rtsDone
rtsFail:
xorl %eax,%eax
rtsDone:
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosReadSerialVal
#
# Purpose....: Read serial value
#
# Parameters.: Device
# Line
# &Val
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosReadSerialVal
RdosReadSerialVal:
pushl %ebp
movl %esp,%ebp
pushl %edx
pushl %esi
movb 8(%ebp),%dh
movb 12(%ebp),%dl
UserGate read_serial_val_nr
pushfw
shll $8,%eax
movl 16(%ebp),%esi
movl %eax,(%esi)
popfw
jc rdvFail
movl $1,%eax
jmp rdvDone
rdvFail:
xorl %eax,%eax
rdvDone:
popl %esi
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosWriteSerialVal
#
# Purpose....: Write serial value
#
# Parameters.: Device
# Line
# Val
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosWriteSerialVal
RdosWriteSerialVal:
pushl %ebp
movl %esp,%ebp
pushl %edx
movb 8(%ebp),%dh
movb 12(%ebp),%dl
movl 16(%ebp),%eax
sarl $8,%eax
UserGate write_serial_val_nr
jc rwvFail
movl $1,%eax
jmp rwvDone
rwvFail:
xorl %eax,%eax
rwvDone:
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosReadSerialRaw
#
# Purpose....: Read serial raw value
#
# Parameters.: Device
# Line
# &Val
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosReadSerialRaw
RdosReadSerialRaw:
pushl %ebp
movl %esp,%ebp
pushl %edx
pushl %esi
movb 8(%ebp),%dh
movb 12(%ebp),%dl
UserGate read_serial_val_nr
pushfw
movl 16(%ebp),%esi
movl %eax,(%esi)
popfw
jc rdrFail
movl $1,%eax
jmp rdrDone
rdrFail:
xorl %eax,%eax
rdrDone:
popl %esi
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosWriteSerialRaw
#
# Purpose....: Write serial raw value
#
# Parameters.: Device
# Line
# Val
#
# Returns....: TRUE if ok
#
##########################################################################*/
.global RdosWriteSerialRaw
RdosWriteSerialRaw:
pushl %ebp
movl %esp,%ebp
pushl %edx
movb 8(%ebp),%dh
movb 12(%ebp),%dl
movl 16(%ebp),%eax
UserGate write_serial_val_nr
jc rwrFail
movl $1,%eax
jmp rwrDone
rwrFail:
xorl %eax,%eax
rwrDone:
popl %edx
leave
ret
/*##########################################################################
#
# Name : RdosOpenSysEnv
#
# Purpose....: Open system environment
#
# Returns....: Env handle
#
##########################################################################*/
.global RdosOpenSysEnv
RdosOpenSysEnv:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate open_sys_env_nr
jc oseFail
movzx %bx,%eax
jmp oseDone
oseFail:
xorl %eax,%eax
oseDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosOpenProcessEnv
#
# Purpose....: Open process environment
#
# Returns....: Env handle
#
##########################################################################*/
.global RdosOpenProcessEnv
RdosOpenProcessEnv:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate open_proc_env_nr
jc opeFail
movzx %bx,%eax
jmp opeDone
opeFail:
xorl %eax,%eax
opeDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseEnv
#
# Purpose....: Close environment
#
# Parameters.: Env handle
#
##########################################################################*/
.global RdosCloseEnv
RdosCloseEnv:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate close_env_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosAddEnvVar
#
# Purpose....: Add environment variable
#
# Parameters.: Env handle
# var
# data
#
##########################################################################*/
.global RdosAddEnvVar
RdosAddEnvVar:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
movl 16(%ebp),%edi
UserGate add_env_var_nr
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDeleteEnvVar
#
# Purpose....: Delete environment variable
#
# Parameters.: Env handle
# var
#
##########################################################################*/
.global RdosDeleteEnvVar
RdosDeleteEnvVar:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
UserGate delete_env_var_nr
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosFindEnvVar
#
# Purpose....: Find environment variable
#
# Parameters.: Env handle
# var
# data
#
##########################################################################*/
.global RdosFindEnvVar
RdosFindEnvVar:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
movl 16(%ebp),%edi
UserGate find_env_var_nr
jc fevFail
movl $1,%eax
jmp fevDone
fevFail:
xorl %eax,%eax
fevDone:
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGetEnvData
#
# Purpose....: Get raw environment data
#
# Parameters.: Env handle
# data
#
##########################################################################*/
.global RdosGetEnvData
RdosGetEnvData:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%edi
UserGate get_env_data_nr
jnc gedDone
xorw %ax,%ax
stosw
gedDone:
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosSetEnvData
#
# Purpose....: Set raw environment data
#
# Parameters.: Env handle
# data
#
##########################################################################*/
.global RdosSetEnvData
RdosSetEnvData:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%edi
UserGate set_env_data_nr
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosOpenSysIni
#
# Purpose....: Open system ini-file
#
# Returns....: Ini handle
#
##########################################################################*/
.global RdosOpenSysIni
RdosOpenSysIni:
pushl %ebp
movl %esp,%ebp
pushl %ebx
UserGate open_sys_ini_nr
jc osiFail
movzx %bx,%eax
jmp osiDone
osiFail:
xorl %eax,%eax
osiDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCloseIni
#
# Purpose....: Close ini-file
#
# Parameters.: Ini handle
#
##########################################################################*/
.global RdosCloseIni
RdosCloseIni:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate close_ini_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosGotoIniSection
#
# Purpose....: Goto ini section
#
# Parameters.: Ini handle
# SectionName
#
##########################################################################*/
.global RdosGotoIniSection
RdosGotoIniSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%edi
UserGate goto_ini_section_nr
jc gisFail
movl $1,%eax
jmp gisDone
gisFail:
xorl %eax,%eax
gisDone:
popl %edi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosRemoveIniSection
#
# Purpose....: Remove current ini section
#
# Parameters.: Ini handle
#
##########################################################################*/
.global RdosRemoveIniSection
RdosRemoveIniSection:
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
UserGate remove_ini_section_nr
jc risFail
movl $1,%eax
jmp risDone
risFail:
xorl %eax,%eax
risDone:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosReadIni
#
# Purpose....: Read ini var in current section
#
# Parameters.: Ini handle
# VarName
# Data
# MaxSize
#
##########################################################################*/
.global RdosReadIni
RdosReadIni:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
pushl %esi
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
movl 16(%ebp),%edi
movl 20(%ebp),%ecx
UserGate read_ini_nr
jc riFail
movl $1,%eax
jmp riDone
riFail:
xorl %eax,%eax
riDone:
popl %edi
popl %esi
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosWriteIni
#
# Purpose....: Write ini var in current section
#
# Parameters.: Ini handle
# VarName
# Data
#
##########################################################################*/
.global RdosWriteIni
RdosWriteIni:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
pushl %edi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
movl 16(%ebp),%edi
UserGate write_ini_nr
jc wiFail
movl $1,%eax
jmp wiDone
wiFail:
xorl %eax,%eax
wiDone:
popl %edi
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosDeleteIni
#
# Purpose....: Delete ini var in current section
#
# Parameters.: Ini handle
# VarName
#
##########################################################################*/
.global RdosDeleteIni
RdosDeleteIni:
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %esi
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
UserGate delete_ini_nr
jc diFail
movl $1,%eax
jmp diDone
diFail:
xorl %eax,%eax
diDone:
popl %esi
popl %ebx
leave
ret
/*##########################################################################
#
# Name : RdosCreateFileDrive
#
# Purpose....: Create a new file-drive
#
# Parameters.: Drive
# Size
# FS name
# Filename
#
##########################################################################*/
.global RdosCreateFileDrive
RdosCreateFileDrive:
pushl %ebp
movl %esp,%ebp
pushl %ecx
pushl %esi
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%ecx
movl 16(%ebp),%esi
movl 20(%ebp),%edi
UserGate create_file_drive_nr
jnc cfdOk
xorl %eax,%eax
jmp cfdDone
cfdOk:
movl $1,%eax
cfdDone:
popl %edi
popl %esi
popl %ecx
leave
ret
/*##########################################################################
#
# Name : RdosOpenFileDrive
#
# Purpose....: Open a new file-drive
#
# Parameters.: Drive
# Filename
#
##########################################################################*/
.global RdosOpenFileDrive
RdosOpenFileDrive:
pushl %ebp
movl %esp,%ebp
pushl %edi
movb 8(%ebp),%al
movl 12(%ebp),%edi
UserGate open_file_drive_nr
jnc ofdOk
xorl %eax,%eax
jmp ofdDone
ofdOk:
movl $1,%eax
ofdDone:
popl %edi
leave
ret
/*##########################################################################
#
# Name : RdosEnableStatusLed
#
# Purpose....: Enable status LED
#
##########################################################################*/
.global RdosEnableStatusLed
RdosEnableStatusLed:
pushl %ebp
movl %esp,%ebp
UserGate enable_status_led_nr
leave
ret
/*##########################################################################
#
# Name : RdosDisableStatusLed
#
# Purpose....: Disable status LED
#
##########################################################################*/
.global RdosDisableStatusLed
RdosDisableStatusLed:
pushl %ebp
movl %esp,%ebp
UserGate disable_status_led_nr
leave
ret
/*##########################################################################
#
# Name : RdosStartWatchdog
#
# Purpose....: Start watchdog
#
# Parameters.: Timeout, ms
#
##########################################################################*/
.global RdosStartWatchdog
RdosStartWatchdog:
pushl %ebp
movl %esp,%ebp
;
movl 8(%ebp),%eax
UserGate start_watchdog_nr
;
leave
ret
/*##########################################################################
#
# Name : RdosKickWatchdog
#
# Purpose....: Kick watchdog
#
##########################################################################*/
.global RdosKickWatchdog
RdosKickWatchdog:
pushl %ebp
movl %esp,%ebp
UserGate kick_watchdog_nr
leave
ret