OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [newlib/] [libc/] [sys/] [rdos/] [rdos.S] - Diff between revs 148 and 158

Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
/*#######################################################################
/*#######################################################################
# RDOS operating system
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
# Copyright (C) 1988-2006, Leif Ekblad
#
#
# This library is free software; you can redistribute it and/or modify
# 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
# 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
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# (at your option) any later version.
#
#
# This library is distributed in the hope that it will be useful,
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
# GNU Lesser General Public License for more details.
#
#
# You should have received a copy of the GNU Lesser General Public
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# The author of this program may be contacted at leif@rdos.net
# The author of this program may be contacted at leif@rdos.net
#
#
# rdos.S
# rdos.S
# GCC based interface to RDOS kernel
# GCC based interface to RDOS kernel
#
#
##########################################################################*/
##########################################################################*/
#include "user.def"
#include "user.def"
    .macro UserGate nr
    .macro UserGate nr
    .byte 0x9A
    .byte 0x9A
    .long \nr
    .long \nr
    .word 2
    .word 2
    .endm
    .endm
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSwapShort
#   Name       : RdosSwapShort
#
#
#   Purpose....: Byte reverse a short int
#   Purpose....: Byte reverse a short int
#
#
#   Returns....: Result
#   Returns....: Result
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSwapShort
    .global RdosSwapShort
RdosSwapShort:
RdosSwapShort:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        xchgb %ah,%al
        xchgb %ah,%al
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSwapLong
#   Name       : RdosSwapLong
#
#
#   Purpose....: Byte reverse a long int
#   Purpose....: Byte reverse a long int
#
#
#   Returns....: Result
#   Returns....: Result
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSwapLong
    .global RdosSwapLong
RdosSwapLong:
RdosSwapLong:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        xchgb %ah,%al
        xchgb %ah,%al
        roll $16,%eax
        roll $16,%eax
        xchgb %ah,%al
        xchgb %ah,%al
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : LocalToNetworkLong
#   Name       : LocalToNetworkLong
#
#
#   Purpose....: Convert a local long to network format
#   Purpose....: Convert a local long to network format
#
#
#   Returns....: Network format
#   Returns....: Network format
#
#
##########################################################################*/
##########################################################################*/
    .global LocalToNetworkLong
    .global LocalToNetworkLong
LocalToNetworkLong:
LocalToNetworkLong:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        xchgb %ah,%al
        xchgb %ah,%al
        roll $16,%eax
        roll $16,%eax
        xchgb %ah,%al
        xchgb %ah,%al
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : NetworkToLocalLong
#   Name       : NetworkToLocalLong
#
#
#   Purpose....: Convert a network long to local format
#   Purpose....: Convert a network long to local format
#
#
#   Returns....: Local format
#   Returns....: Local format
#
#
##########################################################################*/
##########################################################################*/
    .global NetworkToLocalLong
    .global NetworkToLocalLong
NetworkToLocalLong:
NetworkToLocalLong:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        xchgb %ah,%al
        xchgb %ah,%al
        roll $16,%eax
        roll $16,%eax
        xchgb %ah,%al
        xchgb %ah,%al
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetThreadHandle
#   Name       : RdosGetThreadHandle
#
#
#   Purpose....: Get current thread handle
#   Purpose....: Get current thread handle
#
#
#   Returns....: Thread ID
#   Returns....: Thread ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetThreadHandle
    .global RdosGetThreadHandle
RdosGetThreadHandle:
RdosGetThreadHandle:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_thread_nr
        UserGate get_thread_nr
        movzx %ax,%eax
        movzx %ax,%eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetThreadState
#   Name       : RdosGetThreadState
#
#
#   Purpose....: Get thread state
#   Purpose....: Get thread state
#
#
#   Parameters.: Thread #
#   Parameters.: Thread #
#                State buffer
#                State buffer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetThreadState
    .global RdosGetThreadState
RdosGetThreadState:
RdosGetThreadState:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        push %edi
        push %edi
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        UserGate get_thread_state_nr
        UserGate get_thread_state_nr
        jc rgtsFail
        jc rgtsFail
    movl $1,%eax
    movl $1,%eax
    jmp rgtsDone
    jmp rgtsDone
rgtsFail:
rgtsFail:
    xorl %eax,%eax
    xorl %eax,%eax
rgtsDone:
rgtsDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSuspendThread
#   Name       : RdosSuspendThread
#
#
#   Purpose....: Suspend thread
#   Purpose....: Suspend thread
#
#
#   Parameters.: Thread #
#   Parameters.: Thread #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSuspendThread
    .global RdosSuspendThread
RdosSuspendThread:
RdosSuspendThread:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate suspend_thread_nr
        UserGate suspend_thread_nr
        jc rsfFail
        jc rsfFail
    movl $1,%eax
    movl $1,%eax
    jmp rsfDone
    jmp rsfDone
rsfFail:
rsfFail:
    xorl %eax,%eax
    xorl %eax,%eax
rsfDone:
rsfDone:
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosExec
#   Name       : RdosExec
#
#
#   Purpose....: Execute a program
#   Purpose....: Execute a program
#
#
#   Parameters.: Program
#   Parameters.: Program
#                Commandline
#                Commandline
#
#
##########################################################################*/
##########################################################################*/
    .global RdosExec
    .global RdosExec
RdosExec:
RdosExec:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate load_exe_nr
        UserGate load_exe_nr
        UserGate get_exit_code_nr
        UserGate get_exit_code_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSpawn
#   Name       : RdosSpawn
#
#
#   Purpose....: Create new process and run a program
#   Purpose....: Create new process and run a program
#
#
#   Parameters.: Program
#   Parameters.: Program
#                Commandline
#                Commandline
#                StartDir
#                StartDir
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSpawn
    .global RdosSpawn
RdosSpawn:
RdosSpawn:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %fs
        pushl %fs
        pushl %ebx
        pushl %ebx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
    movw %ds,%dx
    movw %ds,%dx
    movw %dx,%fs
    movw %dx,%fs
    xorl %edx,%edx
    xorl %edx,%edx
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        UserGate spawn_exe_nr
        UserGate spawn_exe_nr
        jc rsFail
        jc rsFail
    movzx %dx,%eax
    movzx %dx,%eax
    jmp rsDone
    jmp rsDone
rsFail:
rsFail:
    xorl %eax,%eax
    xorl %eax,%eax
rsDone:
rsDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ebx
        popl %ebx
        popw %fs
        popw %fs
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCpuReset
#   Name       : RdosCpuReset
#
#
#   Purpose....: Cpu reset
#   Purpose....: Cpu reset
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCpuReset
    .global RdosCpuReset
RdosCpuReset:
RdosCpuReset:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate cpu_reset_nr
        UserGate cpu_reset_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetVersion
#   Name       : RdosGetVersion
#
#
#   Purpose....: Get RDOS version
#   Purpose....: Get RDOS version
#
#
#   Parameters.: &major
#   Parameters.: &major
#                &minor
#                &minor
#                &release
#                &release
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetVersion
    .global RdosGetVersion
RdosGetVersion:
RdosGetVersion:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        UserGate get_version_nr
        UserGate get_version_nr
    movzx %dx,%edx
    movzx %dx,%edx
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl %edx,(%edi)
        movl %edx,(%edi)
    movzx %ax,%eax
    movzx %ax,%eax
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
    movzx %cx,%eax
    movzx %cx,%eax
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAllocateMem
#   Name       : RdosAllocateMem
#
#
#   Purpose....: Allocate memory
#   Purpose....: Allocate memory
#
#
#   Parameters.: Bytes to allocate
#   Parameters.: Bytes to allocate
#
#
#   Returns....: Memory pointer
#   Returns....: Memory pointer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAllocateMem
    .global RdosAllocateMem
RdosAllocateMem:
RdosAllocateMem:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate allocate_app_mem_nr
        UserGate allocate_app_mem_nr
        movl %edx,%eax
        movl %edx,%eax
        popl %edx
        popl %edx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFreeMem
#   Name       : RdosFreeMem
#
#
#   Purpose....: Free memory
#   Purpose....: Free memory
#
#
#   Parameters.: Memory pointer
#   Parameters.: Memory pointer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFreeMem
    .global RdosFreeMem
RdosFreeMem:
RdosFreeMem:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        UserGate free_app_mem_nr
        UserGate free_app_mem_nr
        popl %edx
        popl %edx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAppDebug
#   Name       : RdosAppDebug
#
#
#   Purpose....: App debug
#   Purpose....: App debug
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAppDebug
    .global RdosAppDebug
RdosAppDebug:
RdosAppDebug:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate app_debug_nr
        UserGate app_debug_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWaitMilli
#   Name       : RdosWaitMilli
#
#
#   Purpose....: Wait a number of milliseconds
#   Purpose....: Wait a number of milliseconds
#
#
#   Parameters.: Milliseconds to wait
#   Parameters.: Milliseconds to wait
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWaitMilli
    .global RdosWaitMilli
RdosWaitMilli:
RdosWaitMilli:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate wait_milli_nr
        UserGate wait_milli_nr
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateSection
#   Name       : RdosCreateSection
#
#
#   Purpose....: Create section
#   Purpose....: Create section
#
#
#   Returns....: Section handle
#   Returns....: Section handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateSection
    .global RdosCreateSection
RdosCreateSection:
RdosCreateSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate create_user_section_nr
        UserGate create_user_section_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDeleteSection
#   Name       : RdosDeleteSection
#
#
#   Purpose....: Delete section
#   Purpose....: Delete section
#
#
#   Parameters.: Section handle
#   Parameters.: Section handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDeleteSection
    .global RdosDeleteSection
RdosDeleteSection:
RdosDeleteSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate delete_user_section_nr
        UserGate delete_user_section_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosEnterSection
#   Name       : RdosEnterSection
#
#
#   Purpose....: Enter section
#   Purpose....: Enter section
#
#
#   Parameters.: Section handle
#   Parameters.: Section handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosEnterSection
    .global RdosEnterSection
RdosEnterSection:
RdosEnterSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate enter_user_section_nr
        UserGate enter_user_section_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosLeaveSection
#   Name       : RdosLeaveSection
#
#
#   Purpose....: Leave section
#   Purpose....: Leave section
#
#
#   Parameters.: Section handle
#   Parameters.: Section handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosLeaveSection
    .global RdosLeaveSection
RdosLeaveSection:
RdosLeaveSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate leave_user_section_nr
        UserGate leave_user_section_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateWait
#   Name       : RdosCreateWait
#
#
#   Purpose....: Create wait object
#   Purpose....: Create wait object
#
#
#   Returns....: Wait handle
#   Returns....: Wait handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateWait
    .global RdosCreateWait
RdosCreateWait:
RdosCreateWait:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate create_wait_nr
        UserGate create_wait_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseWait
#   Name       : RdosCloseWait
#
#
#   Purpose....: Close wait
#   Purpose....: Close wait
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseWait
    .global RdosCloseWait
RdosCloseWait:
RdosCloseWait:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_wait_nr
        UserGate close_wait_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCheckWait
#   Name       : RdosCheckWait
#
#
#   Purpose....: Check wait state
#   Purpose....: Check wait state
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#
#
#   Returns....: Signalled ID or 0
#   Returns....: Signalled ID or 0
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCheckWait
    .global RdosCheckWait
RdosCheckWait:
RdosCheckWait:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate is_wait_idle_nr
        UserGate is_wait_idle_nr
    movl %ecx,%eax
    movl %ecx,%eax
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWaitForever
#   Name       : RdosWaitForever
#
#
#   Purpose....: Wait forever
#   Purpose....: Wait forever
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#
#
#   Returns....: Signalled ID or 0
#   Returns....: Signalled ID or 0
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWaitForever
    .global RdosWaitForever
RdosWaitForever:
RdosWaitForever:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate wait_no_timeout_nr
        UserGate wait_no_timeout_nr
        jc rwfFail
        jc rwfFail
    movl %ecx,%eax
    movl %ecx,%eax
    jmp rwfDone
    jmp rwfDone
rwfFail:
rwfFail:
    xorl %eax,%eax
    xorl %eax,%eax
rwfDone:
rwfDone:
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWaitTimeout
#   Name       : RdosWaitTimeout
#
#
#   Purpose....: Wait with timeout
#   Purpose....: Wait with timeout
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Timeout in ms
#                Timeout in ms
#
#
#   Returns....: Signalled ID or 0
#   Returns....: Signalled ID or 0
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWaitTimeout
    .global RdosWaitTimeout
RdosWaitTimeout:
RdosWaitTimeout:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movl $1193,%edx
        movl $1193,%edx
        mull %edx
        mull %edx
        pushl %edx
        pushl %edx
        pushl %eax
        pushl %eax
    UserGate get_system_time_nr
    UserGate get_system_time_nr
    popl %ebx
    popl %ebx
    addl %ebx,%eax
    addl %ebx,%eax
    popl %ebx
    popl %ebx
    adcl %ebx,%edx
    adcl %ebx,%edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate wait_timeout_nr
        UserGate wait_timeout_nr
        jc rwtFail
        jc rwtFail
    movl %ecx,%eax
    movl %ecx,%eax
    jmp rwtDone
    jmp rwtDone
rwtFail:
rwtFail:
    xorl %eax,%eax
    xorl %eax,%eax
rwtDone:
rwtDone:
    popl %edx
    popl %edx
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosStopWait
#   Name       : RdosStopWait
#
#
#   Purpose....: Stop wait
#   Purpose....: Stop wait
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosStopWait
    .global RdosStopWait
RdosStopWait:
RdosStopWait:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate stop_wait_nr
        UserGate stop_wait_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosRemoveWait
#   Name       : RdosRemoveWait
#
#
#   Purpose....: Remove wait object from wait handle
#   Purpose....: Remove wait object from wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosRemoveWait
    .global RdosRemoveWait
RdosRemoveWait:
RdosRemoveWait:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate remove_wait_nr
        UserGate remove_wait_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateSignal
#   Name       : RdosCreateSignal
#
#
#   Purpose....: Create signal object
#   Purpose....: Create signal object
#
#
#   Returns....: Signal handle
#   Returns....: Signal handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateSignal
    .global RdosCreateSignal
RdosCreateSignal:
RdosCreateSignal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate create_signal_nr
        UserGate create_signal_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosResetSignal
#   Name       : RdosResetSignal
#
#
#   Purpose....: Reset signal
#   Purpose....: Reset signal
#
#
#   Parameters.: Signal handle
#   Parameters.: Signal handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosResetSignal
    .global RdosResetSignal
RdosResetSignal:
RdosResetSignal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate reset_signal_nr
        UserGate reset_signal_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosIsSignalled
#   Name       : RdosIsSignalled
#
#
#   Purpose....: Check if signalled
#   Purpose....: Check if signalled
#
#
#   Parameters.: Signal handle
#   Parameters.: Signal handle
#
#
#   Returns....: TRUE if signalled
#   Returns....: TRUE if signalled
#
#
##########################################################################*/
##########################################################################*/
    .global RdosIsSignalled
    .global RdosIsSignalled
RdosIsSignalled:
RdosIsSignalled:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate is_signalled_nr
        UserGate is_signalled_nr
        jc risdFree
        jc risdFree
    movl $1,%eax
    movl $1,%eax
    jmp risdDone
    jmp risdDone
risdFree:
risdFree:
    xorl %eax,%eax
    xorl %eax,%eax
risdDone:
risdDone:
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetSignal
#   Name       : RdosSetSignal
#
#
#   Purpose....: Set signal
#   Purpose....: Set signal
#
#
#   Parameters.: Signal handle
#   Parameters.: Signal handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetSignal
    .global RdosSetSignal
RdosSetSignal:
RdosSetSignal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate set_signal_nr
        UserGate set_signal_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFreeSignal
#   Name       : RdosFreeSignal
#
#
#   Purpose....: Free signal handle
#   Purpose....: Free signal handle
#
#
#   Parameters.: Signal handle
#   Parameters.: Signal handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFreeSignal
    .global RdosFreeSignal
RdosFreeSignal:
RdosFreeSignal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate free_signal_nr
        UserGate free_signal_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForSignal
#   Name       : RdosAddWaitForSignal
#
#
#   Purpose....: Add signal object to wait handle
#   Purpose....: Add signal object to wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Signal handle
#                Signal handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForSignal
    .global RdosAddWaitForSignal
RdosAddWaitForSignal:
RdosAddWaitForSignal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate add_wait_for_signal_nr
        UserGate add_wait_for_signal_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForKeyboard
#   Name       : RdosAddWaitForKeyboard
#
#
#   Purpose....: Add keyboard to wait handle
#   Purpose....: Add keyboard to wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForKeyboard
    .global RdosAddWaitForKeyboard
RdosAddWaitForKeyboard:
RdosAddWaitForKeyboard:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate add_wait_for_keyboard_nr
        UserGate add_wait_for_keyboard_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForMouse
#   Name       : RdosAddWaitForMouse
#
#
#   Purpose....: Add mouse to wait handle
#   Purpose....: Add mouse to wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForMouse
    .global RdosAddWaitForMouse
RdosAddWaitForMouse:
RdosAddWaitForMouse:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate add_wait_for_mouse_nr
        UserGate add_wait_for_mouse_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForCom
#   Name       : RdosAddWaitForCom
#
#
#   Purpose....: Add com object to wait handle
#   Purpose....: Add com object to wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Com handle
#                Com handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForCom
    .global RdosAddWaitForCom
RdosAddWaitForCom:
RdosAddWaitForCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate add_wait_for_com_nr
        UserGate add_wait_for_com_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForAdc
#   Name       : RdosAddWaitForAdc
#
#
#   Purpose....: Add ADC object to wait handle
#   Purpose....: Add ADC object to wait handle
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Adc handle
#                Adc handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForAdc
    .global RdosAddWaitForAdc
RdosAddWaitForAdc:
RdosAddWaitForAdc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate add_wait_for_adc_nr
        UserGate add_wait_for_adc_nr
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetTextMode
#   Name       : RdosSetTextMode
#
#
#   Purpose....: Set text mode
#   Purpose....: Set text mode
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetTextMode
    .global RdosSetTextMode
RdosSetTextMode:
RdosSetTextMode:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movw $3,%ax
        movw $3,%ax
    UserGate set_video_mode_nr
    UserGate set_video_mode_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetVideoMode
#   Name       : RdosSetVideoMode
#
#
#   Purpose....: Set video mode
#   Purpose....: Set video mode
#
#
#   Parameters.: &xres
#   Parameters.: &xres
#                &yres
#                &yres
#                &linesize
#                &linesize
#                &LFB
#                &LFB
#
#
#   Returns....: Bitmap handle
#   Returns....: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetVideoMode
    .global RdosSetVideoMode
RdosSetVideoMode:
RdosSetVideoMode:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movw (%edi),%ax
        movw (%edi),%ax
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movw (%edi),%cx
        movw (%edi),%cx
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movw (%edi),%dx
        movw (%edi),%dx
        UserGate get_video_mode_nr
        UserGate get_video_mode_nr
        jc set_video_fail
        jc set_video_fail
    UserGate set_video_mode_nr
    UserGate set_video_mode_nr
    jc set_video_fail
    jc set_video_fail
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%edi)
        movl %ecx,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%edi)
        movl %edx,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movzx %si,%esi
        movzx %si,%esi
        movl %esi,(%edi)
        movl %esi,(%edi)
        popl %edi
        popl %edi
        movl 24(%ebp),%eax
        movl 24(%ebp),%eax
        movl %edi,(%eax)
        movl %edi,(%eax)
        movzx %bx,%eax
        movzx %bx,%eax
        jmp set_video_done
        jmp set_video_done
set_video_fail:
set_video_fail:
        xorl %eax,%eax
        xorl %eax,%eax
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 24(%ebp),%edi
        movl 24(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
set_video_done:
set_video_done:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetClipRect
#   Name       : RdosSetClipRect
#
#
#   Purpose....: Set clip rectangle
#   Purpose....: Set clip rectangle
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                xmin, xmax, ymin, ymax
#                xmin, xmax, ymin, ymax
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetClipRect
    .global RdosSetClipRect
RdosSetClipRect:
RdosSetClipRect:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movw 20(%ebp),%si
        movw 20(%ebp),%si
        movw 24(%ebp),%di
        movw 24(%ebp),%di
        UserGate set_clip_rect_nr
        UserGate set_clip_rect_nr
    popl %edi
    popl %edi
    popl %esi
    popl %esi
    popl %edx
    popl %edx
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosClearClipRect
#   Name       : RdosClearClipRect
#
#
#   Purpose....: Clear clip rectangle
#   Purpose....: Clear clip rectangle
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosClearClipRect
    .global RdosClearClipRect
RdosClearClipRect:
RdosClearClipRect:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate clear_clip_rect_nr
        UserGate clear_clip_rect_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetDrawColor
#   Name       : RdosSetDrawColor
#
#
#   Purpose....: Set draw color
#   Purpose....: Set draw color
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                Color
#                Color
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetDrawColor
    .global RdosSetDrawColor
RdosSetDrawColor:
RdosSetDrawColor:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate set_drawcolor_nr
        UserGate set_drawcolor_nr
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetLGOP
#   Name       : RdosSetLGOP
#
#
#   Purpose....: Set draw color
#   Purpose....: Set draw color
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                LGOP
#                LGOP
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetLGOP
    .global RdosSetLGOP
RdosSetLGOP:
RdosSetLGOP:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        UserGate set_lgop_nr
        UserGate set_lgop_nr
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetHollowStyle
#   Name       : RdosSetHollowStyle
#
#
#   Purpose....: Set hollow fill style
#   Purpose....: Set hollow fill style
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetHollowStyle
    .global RdosSetHollowStyle
RdosSetHollowStyle:
RdosSetHollowStyle:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate set_hollow_style_nr
        UserGate set_hollow_style_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFilledStyle
#   Name       : RdosSetFilledStyle
#
#
#   Purpose....: Set filled fill style
#   Purpose....: Set filled fill style
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFilledStyle
    .global RdosSetFilledStyle
RdosSetFilledStyle:
RdosSetFilledStyle:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate set_filled_style_nr
        UserGate set_filled_style_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenFont
#   Name       : RdosOpenFont
#
#
#   Purpose....: Open a font
#   Purpose....: Open a font
#
#
#   Parameters.: height
#   Parameters.: height
#
#
#   Returns....: Font handle
#   Returns....: Font handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenFont
    .global RdosOpenFont
RdosOpenFont:
RdosOpenFont:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        UserGate open_font_nr
        UserGate open_font_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseFont
#   Name       : RdosCloseFont
#
#
#   Purpose....: Close font handle
#   Purpose....: Close font handle
#
#
#   Parameters.: Font handle
#   Parameters.: Font handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseFont
    .global RdosCloseFont
RdosCloseFont:
RdosCloseFont:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_font_nr
        UserGate close_font_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetStringMetrics
#   Name       : RdosGetStringMetrics
#
#
#   Purpose....: Get string metrics for text using font
#   Purpose....: Get string metrics for text using font
#
#
#   Parameters.: Font handle
#   Parameters.: Font handle
#                String
#                String
#                &width
#                &width
#                &height
#                &height
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetStringMetrics
    .global RdosGetStringMetrics
RdosGetStringMetrics:
RdosGetStringMetrics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate get_string_metrics_nr
        UserGate get_string_metrics_nr
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%edi)
        movl %ecx,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%edi)
        movl %edx,(%edi)
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFont
#   Name       : RdosSetFont
#
#
#   Purpose....: Set font
#   Purpose....: Set font
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                Font handle
#                Font handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFont
    .global RdosSetFont
RdosSetFont:
RdosSetFont:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        UserGate set_font_nr
        UserGate set_font_nr
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetPixel
#   Name       : RdosGetPixel
#
#
#   Purpose....: Get pixel
#   Purpose....: Get pixel
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x, y
#                x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetPixel
    .global RdosGetPixel
RdosGetPixel:
RdosGetPixel:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        UserGate get_pixel_nr
        UserGate get_pixel_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetPixel
#   Name       : RdosSetPixel
#
#
#   Purpose....: Set pixel
#   Purpose....: Set pixel
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x, y
#                x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetPixel
    .global RdosSetPixel
RdosSetPixel:
RdosSetPixel:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        UserGate set_pixel_nr
        UserGate set_pixel_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosBlit
#   Name       : RdosBlit
#
#
#   Purpose....: Blit
#   Purpose....: Blit
#
#
#   Parameters.: SrcHandle
#   Parameters.: SrcHandle
#                DestHandle
#                DestHandle
#                width, height
#                width, height
#                SrcX, SrcY
#                SrcX, SrcY
#                DestX, DestY
#                DestX, DestY
#
#
##########################################################################*/
##########################################################################*/
    .global RdosBlit
    .global RdosBlit
RdosBlit:
RdosBlit:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
;
;
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        movw 12(%ebp),%bx
        movw 12(%ebp),%bx
        movw 16(%ebp),%cx
        movw 16(%ebp),%cx
        movw 20(%ebp),%dx
        movw 20(%ebp),%dx
        movw 28(%ebp),%si
        movw 28(%ebp),%si
        shll $16,%esi
        shll $16,%esi
        movw 24(%ebp),%si
        movw 24(%ebp),%si
        movw 36(%ebp),%di
        movw 36(%ebp),%di
        shll $16,%edi
        shll $16,%edi
        movw 32(%ebp),%di
        movw 32(%ebp),%di
        UserGate blit_nr
        UserGate blit_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDrawMask
#   Name       : RdosDrawMask
#
#
#   Purpose....: Draw mask
#   Purpose....: Draw mask
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                mask
#                mask
#                RowSize
#                RowSize
#                width, height
#                width, height
#                SrcX, SrcY
#                SrcX, SrcY
#                DestX, DestY
#                DestX, DestY
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDrawMask
    .global RdosDrawMask
RdosDrawMask:
RdosDrawMask:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
;
;
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movw 16(%ebp),%ax
        movw 16(%ebp),%ax
        movw 24(%ebp),%si
        movw 24(%ebp),%si
        shll $16,%esi
        shll $16,%esi
        movw 20(%ebp),%si
        movw 20(%ebp),%si
        movw 32(%ebp),%cx
        movw 32(%ebp),%cx
        shll $16,%ecx
        shll $16,%ecx
        movw 28(%ebp),%cx
        movw 28(%ebp),%cx
        movw 40(%ebp),%dx
        movw 40(%ebp),%dx
        shll $16,%edx
        shll $16,%edx
        movw 36(%ebp),%dx
        movw 36(%ebp),%dx
        UserGate draw_mask_nr
        UserGate draw_mask_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDrawLine
#   Name       : RdosDrawLine
#
#
#   Purpose....: Draw a line
#   Purpose....: Draw a line
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x1, y1
#                x1, y1
#                x2, y2
#                x2, y2
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDrawLine
    .global RdosDrawLine
RdosDrawLine:
RdosDrawLine:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
;
;
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movw 20(%ebp),%si
        movw 20(%ebp),%si
        movw 24(%ebp),%di
        movw 24(%ebp),%di
        UserGate draw_line_nr
        UserGate draw_line_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDrawString
#   Name       : RdosDrawString
#
#
#   Purpose....: Draw a string
#   Purpose....: Draw a string
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x, y
#                x, y
#                string
#                string
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDrawString
    .global RdosDrawString
RdosDrawString:
RdosDrawString:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
;
;
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        UserGate draw_string_nr
        UserGate draw_string_nr
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDrawRect
#   Name       : RdosDrawRect
#
#
#   Purpose....: Draw a rect
#   Purpose....: Draw a rect
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x, y
#                x, y
#                width, height
#                width, height
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDrawRect
    .global RdosDrawRect
RdosDrawRect:
RdosDrawRect:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movw 20(%ebp),%si
        movw 20(%ebp),%si
        movw 24(%ebp),%di
        movw 24(%ebp),%di
        UserGate draw_rect_nr
        UserGate draw_rect_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDrawEllipse
#   Name       : RdosDrawEllipse
#
#
#   Purpose....: Draw an ellipse
#   Purpose....: Draw an ellipse
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                x, y
#                x, y
#                width, height
#                width, height
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDrawEllipse
    .global RdosDrawEllipse
RdosDrawEllipse:
RdosDrawEllipse:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movw 20(%ebp),%si
        movw 20(%ebp),%si
        movw 24(%ebp),%di
        movw 24(%ebp),%di
        UserGate draw_ellipse_nr
        UserGate draw_ellipse_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateBitmap
#   Name       : RdosCreateBitmap
#
#
#   Purpose....: Create a bitmap
#   Purpose....: Create a bitmap
#
#
#   Parameters.: BitsPerPixel
#   Parameters.: BitsPerPixel
#                width, height
#                width, height
#
#
#   Returns....: Bitmap handle
#   Returns....: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateBitmap
    .global RdosCreateBitmap
RdosCreateBitmap:
RdosCreateBitmap:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        UserGate create_bitmap_nr
        UserGate create_bitmap_nr
        movzx %bx,%eax
        movzx %bx,%eax
;
;
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDuplicateBitmapHandle
#   Name       : RdosDuplicateBitmapHandle
#
#
#   Purpose....: Duplicate bitmap handle for use in another thread / object
#   Purpose....: Duplicate bitmap handle for use in another thread / object
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#
#
#   Returns....: Bitmap handle
#   Returns....: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDuplicateBitmapHandle
    .global RdosDuplicateBitmapHandle
RdosDuplicateBitmapHandle:
RdosDuplicateBitmapHandle:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate dup_bitmap_handle_nr
        UserGate dup_bitmap_handle_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseBitmap
#   Name       : RdosCloseBitmap
#
#
#   Purpose....: Close bitmap handle
#   Purpose....: Close bitmap handle
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseBitmap
    .global RdosCloseBitmap
RdosCloseBitmap:
RdosCloseBitmap:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_bitmap_nr
        UserGate close_bitmap_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateStringBitmap
#   Name       : RdosCreateStringBitmap
#
#
#   Purpose....: Create bitmap from string & font
#   Purpose....: Create bitmap from string & font
#
#
#   Parameters.: Font
#   Parameters.: Font
#                string
#                string
#
#
#   Returns....: Bitmap handle
#   Returns....: Bitmap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateStringBitmap
    .global RdosCreateStringBitmap
RdosCreateStringBitmap:
RdosCreateStringBitmap:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate create_string_bitmap_nr
        UserGate create_string_bitmap_nr
        movzx %bx,%eax
        movzx %bx,%eax
;
;
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetBitmapInfo
#   Name       : RdosGetBitmapInfo
#
#
#   Purpose....: Get info about bitmap
#   Purpose....: Get info about bitmap
#
#
#   Parameters.: Bitmap handle
#   Parameters.: Bitmap handle
#                &BitsPerPixel
#                &BitsPerPixel
#                &width, &height
#                &width, &height
#                &linesize
#                &linesize
#                &LFB
#                &LFB
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetBitmapInfo
    .global RdosGetBitmapInfo
RdosGetBitmapInfo:
RdosGetBitmapInfo:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_bitmap_info_nr
        UserGate get_bitmap_info_nr
        jc gbiFail
        jc gbiFail
        pushl %edi
        pushl %edi
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movzx %al,%eax
        movzx %al,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%edi)
        movl %ecx,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%edi)
        movl %edx,(%edi)
        movl 24(%ebp),%edi
        movl 24(%ebp),%edi
        movzx %si,%esi
        movzx %si,%esi
        movl %esi,(%edi)
        movl %esi,(%edi)
        popl %edi
        popl %edi
        movl 28(%ebp),%eax
        movl 28(%ebp),%eax
        movl %edi,(%eax)
        movl %edi,(%eax)
        jmp gbiDone
        jmp gbiDone
gbiFail:
gbiFail:
        xorl %eax,%eax
        xorl %eax,%eax
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 24(%ebp),%edi
        movl 24(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 28(%ebp),%edi
        movl 28(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
gbiDone:
gbiDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateSprite
#   Name       : RdosCreateSprite
#
#
#   Purpose....: Create a sprite
#   Purpose....: Create a sprite
#
#
#   Parameters.: dest
#   Parameters.: dest
#                bitmap
#                bitmap
#                mask
#                mask
#                LGOP
#                LGOP
#
#
#   Returns....: Sprite handle
#   Returns....: Sprite handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateSprite
    .global RdosCreateSprite
RdosCreateSprite:
RdosCreateSprite:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movw 20(%ebp),%ax
        movw 20(%ebp),%ax
        UserGate create_sprite_nr
        UserGate create_sprite_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseSprite
#   Name       : RdosCloseSprite
#
#
#   Purpose....: Close sprite handle
#   Purpose....: Close sprite handle
#
#
#   Parameters.: Sprite handle
#   Parameters.: Sprite handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseSprite
    .global RdosCloseSprite
RdosCloseSprite:
RdosCloseSprite:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_sprite_nr
        UserGate close_sprite_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosShowSprite
#   Name       : RdosShowSprite
#
#
#   Purpose....: Show sprite
#   Purpose....: Show sprite
#
#
#   Parameters.: Sprite handle
#   Parameters.: Sprite handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosShowSprite
    .global RdosShowSprite
RdosShowSprite:
RdosShowSprite:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate show_sprite_nr
        UserGate show_sprite_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosHideSprite
#   Name       : RdosHideSprite
#
#
#   Purpose....: Hide sprite
#   Purpose....: Hide sprite
#
#
#   Parameters.: Sprite handle
#   Parameters.: Sprite handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosHideSprite
    .global RdosHideSprite
RdosHideSprite:
RdosHideSprite:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate hide_sprite_nr
        UserGate hide_sprite_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosMoveSprite
#   Name       : RdosMoveSprite
#
#
#   Purpose....: Move sprite
#   Purpose....: Move sprite
#
#
#   Parameters.: Sprite handle
#   Parameters.: Sprite handle
#                x, y
#                x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosMoveSprite
    .global RdosMoveSprite
RdosMoveSprite:
RdosMoveSprite:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        UserGate move_sprite_nr
        UserGate move_sprite_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetForeColor
#   Name       : RdosSetForeColor
#
#
#   Purpose....: Set text-mode fore color
#   Purpose....: Set text-mode fore color
#
#
#   Parameters.: palette index
#   Parameters.: palette index
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetForeColor
    .global RdosSetForeColor
RdosSetForeColor:
RdosSetForeColor:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate set_forecolor_nr
        UserGate set_forecolor_nr
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetBackColor
#   Name       : RdosSetBackColor
#
#
#   Purpose....: Set text-mode back color
#   Purpose....: Set text-mode back color
#
#
#   Parameters.: palette index
#   Parameters.: palette index
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetBackColor
    .global RdosSetBackColor
RdosSetBackColor:
RdosSetBackColor:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate set_backcolor_nr
        UserGate set_backcolor_nr
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetSysTime
#   Name       : RdosGetSysTime
#
#
#   Purpose....: Get system time
#   Purpose....: Get system time
#
#
#   Parameters.: &year, &month, &day
#   Parameters.: &year, &month, &day
#                &hour, &min, &sec, &ms
#                &hour, &min, &sec, &ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetSysTime
    .global RdosGetSysTime
RdosGetSysTime:
RdosGetSysTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        UserGate get_system_time_nr
        UserGate get_system_time_nr
        pushl %eax
        pushl %eax
        UserGate binary_to_time_nr
        UserGate binary_to_time_nr
        pushl %edx
        pushl %edx
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movzx %ch,%edx
        movzx %ch,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movzx %cl,%edx
        movzx %cl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 20(%ebp),%esi
        movl 20(%ebp),%esi
        movzx %bh,%edx
        movzx %bh,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 24(%ebp),%esi
        movl 24(%ebp),%esi
        movzx %bl,%edx
        movzx %bl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 28(%ebp),%esi
        movl 28(%ebp),%esi
        movzx %ah,%edx
        movzx %ah,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        popl %edx
        popl %edx
        UserGate time_to_binary_nr
        UserGate time_to_binary_nr
        movl %eax,%ebx
        movl %eax,%ebx
        popl %eax
        popl %eax
        subl %ebx,%eax
        subl %ebx,%eax
        xorl %edx,%edx
        xorl %edx,%edx
        movl $1192,%ebx
        movl $1192,%ebx
        divl %ebx
        divl %ebx
        movl 32(%ebp),%esi
        movl 32(%ebp),%esi
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%esi)
        movl %eax,(%esi)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetTime
#   Name       : RdosGetTime
#
#
#   Purpose....: Get time
#   Purpose....: Get time
#
#
#   Parameters.: &year, &month, &day
#   Parameters.: &year, &month, &day
#                &hour, &min, &sec, &ms
#                &hour, &min, &sec, &ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetTime
    .global RdosGetTime
RdosGetTime:
RdosGetTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        UserGate get_time_nr
        UserGate get_time_nr
        pushl %eax
        pushl %eax
        UserGate binary_to_time_nr
        UserGate binary_to_time_nr
        pushl %edx
        pushl %edx
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movzx %ch,%edx
        movzx %ch,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movzx %cl,%edx
        movzx %cl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 20(%ebp),%esi
        movl 20(%ebp),%esi
        movzx %bh,%edx
        movzx %bh,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 24(%ebp),%esi
        movl 24(%ebp),%esi
        movzx %bl,%edx
        movzx %bl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 28(%ebp),%esi
        movl 28(%ebp),%esi
        movzx %ah,%edx
        movzx %ah,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        popl %edx
        popl %edx
        UserGate time_to_binary_nr
        UserGate time_to_binary_nr
        movl %eax,%ebx
        movl %eax,%ebx
        popl %eax
        popl %eax
        subl %ebx,%eax
        subl %ebx,%eax
        xorl %edx,%edx
        xorl %edx,%edx
        movl $1192,%ebx
        movl $1192,%ebx
        divl %ebx
        divl %ebx
        movl 32(%ebp),%esi
        movl 32(%ebp),%esi
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%esi)
        movl %eax,(%esi)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetTime
#   Name       : RdosSetTime
#
#
#   Purpose....: Set time
#   Purpose....: Set time
#
#
#   Parameters.: year, month, day
#   Parameters.: year, month, day
#                hour, min, sec, ms
#                hour, min, sec, ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetTime
    .global RdosSetTime
RdosSetTime:
RdosSetTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movw 8(%ebp),%dx
        movw 8(%ebp),%dx
        movb 12(%ebp),%ch
        movb 12(%ebp),%ch
        movb 16(%ebp),%cl
        movb 16(%ebp),%cl
        movb 20(%ebp),%bh
        movb 20(%ebp),%bh
        movb 24(%ebp),%bl
        movb 24(%ebp),%bl
        movb 28(%ebp),%ah
        movb 28(%ebp),%ah
        UserGate time_to_binary_nr
        UserGate time_to_binary_nr
    movl %edx,%edi
    movl %edx,%edi
    movl %eax,%esi
    movl %eax,%esi
        movl 32(%ebp),%eax
        movl 32(%ebp),%eax
    movl $1192,%edx
    movl $1192,%edx
    mull %edx
    mull %edx
    addl %eax,%esi
    addl %eax,%esi
    adcl $0,%edi
    adcl $0,%edi
        UserGate get_system_time_nr
        UserGate get_system_time_nr
    subl %eax,%esi
    subl %eax,%esi
    sbbl %edx,%edi
    sbbl %edx,%edi
    movl %esi,%eax
    movl %esi,%eax
    movl %edi,%edx
    movl %edi,%edx
    UserGate update_time_nr
    UserGate update_time_nr
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosTicsToRecord
#   Name       : RdosTicsToRecord
#
#
#   Purpose....: Convert tics to record format
#   Purpose....: Convert tics to record format
#
#
#   Parameters.: MSB, LSB
#   Parameters.: MSB, LSB
#                &year, &month, &day
#                &year, &month, &day
#                &hour, &min, &sec, &ms
#                &hour, &min, &sec, &ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosTicsToRecord
    .global RdosTicsToRecord
RdosTicsToRecord:
RdosTicsToRecord:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        addl $596,%eax
        addl $596,%eax
        adcl $0,%edx
        adcl $0,%edx
        UserGate binary_to_time_nr
        UserGate binary_to_time_nr
        pushl %edx
        pushl %edx
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 20(%ebp),%esi
        movl 20(%ebp),%esi
        movzx %ch,%edx
        movzx %ch,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 24(%ebp),%esi
        movl 24(%ebp),%esi
        movzx %cl,%edx
        movzx %cl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 28(%ebp),%esi
        movl 28(%ebp),%esi
        movzx %bh,%edx
        movzx %bh,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 32(%ebp),%esi
        movl 32(%ebp),%esi
        movzx %bl,%edx
        movzx %bl,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 36(%ebp),%esi
        movl 36(%ebp),%esi
        movzx %ah,%edx
        movzx %ah,%edx
        movl %edx,(%esi)
        movl %edx,(%esi)
        popl %edx
        popl %edx
        UserGate time_to_binary_nr
        UserGate time_to_binary_nr
        movl %eax,%ebx
        movl %eax,%ebx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        subl %edx,%eax
        subl %edx,%eax
        xorl %edx,%edx
        xorl %edx,%edx
        movl $1192,%ebx
        movl $1192,%ebx
        divl %ebx
        divl %ebx
        movl 40(%ebp),%esi
        movl 40(%ebp),%esi
        cmpw %ax,1000
        cmpw %ax,1000
        jne rttrSaveMs
        jne rttrSaveMs
        decw %ax
        decw %ax
rttrSaveMs:
rttrSaveMs:
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%esi)
        movl %eax,(%esi)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosRecordToTics
#   Name       : RdosRecordToTics
#
#
#   Purpose....: Convert from record format to tics
#   Purpose....: Convert from record format to tics
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                year, month, day
#                year, month, day
#                hour, min, sec, ms
#                hour, min, sec, ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosRecordToTics
    .global RdosRecordToTics
RdosRecordToTics:
RdosRecordToTics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movl 40(%ebp),%eax
        movl 40(%ebp),%eax
        movl $1192,%edx
        movl $1192,%edx
        mull %edx
        mull %edx
        pushl %eax
        pushl %eax
        movw 16(%ebp),%dx
        movw 16(%ebp),%dx
        movb 20(%ebp),%ch
        movb 20(%ebp),%ch
        movb 24(%ebp),%cl
        movb 24(%ebp),%cl
        movb 28(%ebp),%bh
        movb 28(%ebp),%bh
        movb 32(%ebp),%bl
        movb 32(%ebp),%bl
        movb 36(%ebp),%ah
        movb 36(%ebp),%ah
        UserGate time_to_binary_nr
        UserGate time_to_binary_nr
        popl %ebx
        popl %ebx
        addl %ebx,%eax
        addl %ebx,%eax
        adcl $0,%edx
        adcl $0,%edx
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl %eax,(%esi)
        movl %eax,(%esi)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDecodeMsbTics
#   Name       : RdosDecodeMsbTics
#
#
#   Purpose....: Decode MSB tics
#   Purpose....: Decode MSB tics
#
#
#   Parameters.: MSB
#   Parameters.: MSB
#                &day, &hour
#                &day, &hour
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDecodeMsbTics
    .global RdosDecodeMsbTics
RdosDecodeMsbTics:
RdosDecodeMsbTics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        xorl %edx,%edx
        xorl %edx,%edx
        movl $24,%ecx
        movl $24,%ecx
        divl %ecx
        divl %ecx
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        movl %eax,(%ebx)
        movl %eax,(%ebx)
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDecodeLsbTics
#   Name       : RdosDecodeLsbTics
#
#
#   Purpose....: Decode LSB tics
#   Purpose....: Decode LSB tics
#
#
#   Parameters.: LSB
#   Parameters.: LSB
#                &min, &sec, &ms, &us
#                &min, &sec, &ms, &us
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDecodeLsbTics
    .global RdosDecodeLsbTics
RdosDecodeLsbTics:
RdosDecodeLsbTics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movl $60,%edx
        movl $60,%edx
        mull %edx
        mull %edx
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl $60,%edx
        movl $60,%edx
        mull %edx
        mull %edx
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl $1000,%edx
        movl $1000,%edx
        mull %edx
        mull %edx
        movl 20(%ebp),%ebx
        movl 20(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl $1000,%edx
        movl $1000,%edx
        mull %edx
        mull %edx
        movl 24(%ebp),%ebx
        movl 24(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDayOfWeek
#   Name       : RdosDayOfWeek
#
#
#   Purpose....: Get day of week
#   Purpose....: Get day of week
#
#
#   Parameters.: year, month, day
#   Parameters.: year, month, day
#
#
#   Returns....: day of week
#   Returns....: day of week
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDayOfWeek
    .global RdosDayOfWeek
RdosDayOfWeek:
RdosDayOfWeek:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movb 12(%ebp),%ch
        movb 12(%ebp),%ch
        movb 16(%ebp),%cl
        movb 16(%ebp),%cl
    xorw %bx,%bx
    xorw %bx,%bx
    xorb %ah,%ah
    xorb %ah,%ah
        UserGate adjust_time_nr
        UserGate adjust_time_nr
        pushw %dx
        pushw %dx
        movl $365,%eax
        movl $365,%eax
        imulw %dx
        imulw %dx
        pushw %dx
        pushw %dx
        pushw %ax
        pushw %ax
        popl %ebx
        popl %ebx
        popw %dx
        popw %dx
        UserGate passed_days_nr
        UserGate passed_days_nr
        decw %dx
        decw %dx
        shrw $2,%dx
        shrw $2,%dx
        incw %dx
        incw %dx
        addw %dx,%ax
        addw %dx,%ax
        addl %ebx,%eax
        addl %ebx,%eax
    xorl %edx,%edx
    xorl %edx,%edx
    addl $5,%eax
    addl $5,%eax
    movl $7,%ebx
    movl $7,%ebx
    divl %ebx
    divl %ebx
    movzx %dl,%eax
    movzx %dl,%eax
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetTics
#   Name       : RdosGetTics
#
#
#   Purpose....: Get system tics
#   Purpose....: Get system tics
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetTics
    .global RdosGetTics
RdosGetTics:
RdosGetTics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        UserGate get_time_nr
        UserGate get_time_nr
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movl %edx,(%esi)
        movl %edx,(%esi)
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl %eax,(%esi)
        movl %eax,(%esi)
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddTics
#   Name       : RdosAddTics
#
#
#   Purpose....: Add tics to binary time
#   Purpose....: Add tics to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                tics
#                tics
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddTics
    .global RdosAddTics
RdosAddTics:
RdosAddTics:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        addl %eax,(%ebx)
        addl %eax,(%ebx)
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adcl $0,(%ebx)
        adcl $0,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddMilli
#   Name       : RdosAddMilli
#
#
#   Purpose....: Add milliseconds to binary time
#   Purpose....: Add milliseconds to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                milli
#                milli
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddMilli
    .global RdosAddMilli
RdosAddMilli:
RdosAddMilli:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl $1193,%edx
        movl $1193,%edx
        mull %edx
        mull %edx
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        addl %eax,(%ebx)
        addl %eax,(%ebx)
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adcl %edx,(%ebx)
        adcl %edx,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddSec
#   Name       : RdosAddSec
#
#
#   Purpose....: Add milliseconds to binary time
#   Purpose....: Add milliseconds to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                sec
#                sec
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddSec
    .global RdosAddSec
RdosAddSec:
RdosAddSec:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl $1193000,%edx
        movl $1193000,%edx
        mull %edx
        mull %edx
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        addl %eax,(%ebx)
        addl %eax,(%ebx)
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adcl %edx,(%ebx)
        adcl %edx,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddMin
#   Name       : RdosAddMin
#
#
#   Purpose....: Add minutes to binary time
#   Purpose....: Add minutes to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                min
#                min
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddMin
    .global RdosAddMin
RdosAddMin:
RdosAddMin:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl $71582760,%edx
        movl $71582760,%edx
        mull %edx
        mull %edx
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        addl %eax,(%ebx)
        addl %eax,(%ebx)
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adcl %edx,(%ebx)
        adcl %edx,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddHour
#   Name       : RdosAddHour
#
#
#   Purpose....: Add hour to binary time
#   Purpose....: Add hour to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                hour
#                hour
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddHour
    .global RdosAddHour
RdosAddHour:
RdosAddHour:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adc %eax,(%ebx)
        adc %eax,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddDay
#   Name       : RdosAddDay
#
#
#   Purpose....: Add days to binary time
#   Purpose....: Add days to binary time
#
#
#   Parameters.: &MSB, &LSB
#   Parameters.: &MSB, &LSB
#                days
#                days
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddDay
    .global RdosAddDay
RdosAddDay:
RdosAddDay:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        movl $24,%edx
        movl $24,%edx
        mull %edx
        mull %edx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        adc %eax,(%ebx)
        adc %eax,(%ebx)
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSyncTime
#   Name       : RdosSyncTime
#
#
#   Purpose....: Synchronize time with NTP
#   Purpose....: Synchronize time with NTP
#
#
#   Parameters.: IP
#   Parameters.: IP
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSyncTime
    .global RdosSyncTime
RdosSyncTime:
RdosSyncTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushal
        pushal
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        UserGate sync_time_nr
        UserGate sync_time_nr
        jc RdosSyncTimeFail
        jc RdosSyncTimeFail
        movl $1,%eax
        movl $1,%eax
        jmp RdosSyncTimeDone
        jmp RdosSyncTimeDone
RdosSyncTimeFail:
RdosSyncTimeFail:
        xorl %eax,%eax
        xorl %eax,%eax
RdosSyncTimeDone:
RdosSyncTimeDone:
        popal
        popal
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenCom
#   Name       : RdosOpenCom
#
#
#   Purpose....: Open com-port
#   Purpose....: Open com-port
#
#
#   Parameters.: ID
#   Parameters.: ID
#                baudrate
#                baudrate
#                parity
#                parity
#                data bits
#                data bits
#                stop bits
#                stop bits
#                SendBufferSize
#                SendBufferSize
#                RecBufferSize
#                RecBufferSize
#
#
#    Returns...: Com handle
#    Returns...: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenCom
    .global RdosOpenCom
RdosOpenCom:
RdosOpenCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movb 20(%ebp),%ah
        movb 20(%ebp),%ah
        movb 24(%ebp),%bl
        movb 24(%ebp),%bl
        movb 16(%ebp),%bh
        movb 16(%ebp),%bh
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        movw 28(%ebp),%si
        movw 28(%ebp),%si
        movw 32(%ebp),%di
        movw 32(%ebp),%di
        UserGate open_com_nr
        UserGate open_com_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseCom
#   Name       : RdosCloseCom
#
#
#   Purpose....: Close com-port
#   Purpose....: Close com-port
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseCom
    .global RdosCloseCom
RdosCloseCom:
RdosCloseCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_com_nr
        UserGate close_com_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFlushCom
#   Name       : RdosFlushCom
#
#
#   Purpose....: Flush com-port
#   Purpose....: Flush com-port
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFlushCom
    .global RdosFlushCom
RdosFlushCom:
RdosFlushCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate flush_com_nr
        UserGate flush_com_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadCom
#   Name       : RdosReadCom
#
#
#   Purpose....: Read com-port
#   Purpose....: Read com-port
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
#   Returns....: Character
#   Returns....: Character
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadCom
    .global RdosReadCom
RdosReadCom:
RdosReadCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate read_com_nr
        UserGate read_com_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteCom
#   Name       : RdosWriteCom
#
#
#   Purpose....: Write com-port
#   Purpose....: Write com-port
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#                char
#                char
#
#
#   Returns....: 0 for success
#   Returns....: 0 for success
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteCom
    .global RdosWriteCom
RdosWriteCom:
RdosWriteCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movb 12(%ebp),%al
        movb 12(%ebp),%al
        UserGate write_com_nr
        UserGate write_com_nr
        movzx %al,%eax
        movzx %al,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWaitForSendCompletedCom
#   Name       : RdosWaitForSendCompletedCom
#
#
#   Purpose....: Wait until send buffer is empty
#   Purpose....: Wait until send buffer is empty
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWaitForSendCompletedCom
    .global RdosWaitForSendCompletedCom
RdosWaitForSendCompletedCom:
RdosWaitForSendCompletedCom:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate wait_for_send_completed_com_nr
        UserGate wait_for_send_completed_com_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosEnableCts
#   Name       : RdosEnableCts
#
#
#   Purpose....: Enable CTS signal
#   Purpose....: Enable CTS signal
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosEnableCts
    .global RdosEnableCts
RdosEnableCts:
RdosEnableCts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate enable_cts_nr
        UserGate enable_cts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDisableCts
#   Name       : RdosDisableCts
#
#
#   Purpose....: Disable CTS signal
#   Purpose....: Disable CTS signal
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDisableCts
    .global RdosDisableCts
RdosDisableCts:
RdosDisableCts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate disable_cts_nr
        UserGate disable_cts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosEnableAutoRts
#   Name       : RdosEnableAutoRts
#
#
#   Purpose....: Enable auto RTS signal generation for RS485
#   Purpose....: Enable auto RTS signal generation for RS485
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosEnableAutoRts
    .global RdosEnableAutoRts
RdosEnableAutoRts:
RdosEnableAutoRts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate enable_auto_rts_nr
        UserGate enable_auto_rts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDisableAutoRts
#   Name       : RdosDisableAutoRts
#
#
#   Purpose....: Disable auto RTS signal generation for RS485
#   Purpose....: Disable auto RTS signal generation for RS485
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDisableAutoRts
    .global RdosDisableAutoRts
RdosDisableAutoRts:
RdosDisableAutoRts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate disable_auto_rts_nr
        UserGate disable_auto_rts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetDtr
#   Name       : RdosSetDtr
#
#
#   Purpose....: Set DTR active
#   Purpose....: Set DTR active
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetDtr
    .global RdosSetDtr
RdosSetDtr:
RdosSetDtr:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate set_dtr_nr
        UserGate set_dtr_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosResetDtr
#   Name       : RdosResetDtr
#
#
#   Purpose....: Set DTR inactive
#   Purpose....: Set DTR inactive
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosResetDtr
    .global RdosResetDtr
RdosResetDtr:
RdosResetDtr:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate reset_dtr_nr
        UserGate reset_dtr_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetRts
#   Name       : RdosSetRts
#
#
#   Purpose....: Set RTS active
#   Purpose....: Set RTS active
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetRts
    .global RdosSetRts
RdosSetRts:
RdosSetRts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate set_rts_nr
        UserGate set_rts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosResetRts
#   Name       : RdosResetRts
#
#
#   Purpose....: Set RTS inactive
#   Purpose....: Set RTS inactive
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosResetRts
    .global RdosResetRts
RdosResetRts:
RdosResetRts:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate reset_rts_nr
        UserGate reset_rts_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetReceiveBufferSpace
#   Name       : RdosGetReceiveBufferSpace
#
#
#   Purpose....: Get receive buffer free space
#   Purpose....: Get receive buffer free space
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
#   Returns....: Free bytes
#   Returns....: Free bytes
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetReceiveBufferSpace
    .global RdosGetReceiveBufferSpace
RdosGetReceiveBufferSpace:
RdosGetReceiveBufferSpace:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_com_receive_space_nr
        UserGate get_com_receive_space_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetSendBufferSpace
#   Name       : RdosGetSendBufferSpace
#
#
#   Purpose....: Get send buffer free space
#   Purpose....: Get send buffer free space
#
#
#   Parameters.: Com handle
#   Parameters.: Com handle
#
#
#   Returns....: Free bytes
#   Returns....: Free bytes
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetSendBufferSpace
    .global RdosGetSendBufferSpace
RdosGetSendBufferSpace:
RdosGetSendBufferSpace:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_com_send_space_nr
        UserGate get_com_send_space_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenFile
#   Name       : RdosOpenFile
#
#
#   Purpose....: Open file
#   Purpose....: Open file
#
#
#   Parameters.: Filename
#   Parameters.: Filename
#                Access
#                Access
#
#
#    Returns...: File handle
#    Returns...: File handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenFile
    .global RdosOpenFile
RdosOpenFile:
RdosOpenFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movb 12(%ebp),%cl
        movb 12(%ebp),%cl
        UserGate open_file_nr
        UserGate open_file_nr
        jc OpenFileFailed
        jc OpenFileFailed
        movzx %bx,%eax
        movzx %bx,%eax
        jmp OpenFileDone
        jmp OpenFileDone
OpenFileFailed:
OpenFileFailed:
        xorl %eax,%eax
        xorl %eax,%eax
OpenFileDone:
OpenFileDone:
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateFile
#   Name       : RdosCreateFile
#
#
#   Purpose....: Create file
#   Purpose....: Create file
#
#
#   Parameters.: Filename
#   Parameters.: Filename
#                Attribute
#                Attribute
#
#
#    Returns...: File handle
#    Returns...: File handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateFile
    .global RdosCreateFile
RdosCreateFile:
RdosCreateFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        UserGate create_file_nr
        UserGate create_file_nr
        jc CreateFileFailed
        jc CreateFileFailed
        movzx %bx,%eax
        movzx %bx,%eax
        jmp CreateFileDone
        jmp CreateFileDone
CreateFileFailed:
CreateFileFailed:
        xorl %eax,%eax
        xorl %eax,%eax
CreateFileDone:
CreateFileDone:
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseFile
#   Name       : RdosCloseFile
#
#
#   Purpose....: Close file
#   Purpose....: Close file
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseFile
    .global RdosCloseFile
RdosCloseFile:
RdosCloseFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_file_nr
        UserGate close_file_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosIsDevice
#   Name       : RdosIsDevice
#
#
#   Purpose....: Check if file is device
#   Purpose....: Check if file is device
#
#
#   Parameters.: TRUE if device
#   Parameters.: TRUE if device
#
#
##########################################################################*/
##########################################################################*/
    .global RdosIsDevice
    .global RdosIsDevice
RdosIsDevice:
RdosIsDevice:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_ioctl_data_nr
        UserGate get_ioctl_data_nr
        testw $0x8000,%dx
        testw $0x8000,%dx
        jz ridFail
        jz ridFail
        movl $1,%eax
        movl $1,%eax
        jmp ridDone
        jmp ridDone
ridFail:
ridFail:
        xorl %eax,%eax
        xorl %eax,%eax
ridDone:
ridDone:
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDuplFile
#   Name       : RdosDuplFile
#
#
#   Purpose....: Duplicate file handle
#   Purpose....: Duplicate file handle
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#
#
#   Returns....: File handle
#   Returns....: File handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDuplFile
    .global RdosDuplFile
RdosDuplFile:
RdosDuplFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate dupl_file_nr
        UserGate dupl_file_nr
        jc DuplFileFailed
        jc DuplFileFailed
        movzx %bx,%eax
        movzx %bx,%eax
        jmp DuplFileDone
        jmp DuplFileDone
DuplFileFailed:
DuplFileFailed:
        xorl %eax,%eax
        xorl %eax,%eax
DuplFileDone:
DuplFileDone:
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFileSize
#   Name       : RdosGetFileSize
#
#
#   Purpose....: Get file size
#   Purpose....: Get file size
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#
#
#   Returns....: Size
#   Returns....: Size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFileSize
    .global RdosGetFileSize
RdosGetFileSize:
RdosGetFileSize:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_file_size_nr
        UserGate get_file_size_nr
        jnc GetFileSizeDone
        jnc GetFileSizeDone
GetFileSizeFail:
GetFileSizeFail:
        xorl %eax,%eax
        xorl %eax,%eax
GetFileSizeDone:
GetFileSizeDone:
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFileSize
#   Name       : RdosSetFileSize
#
#
#   Purpose....: Set file size
#   Purpose....: Set file size
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                Size
#                Size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFileSize
    .global RdosSetFileSize
RdosSetFileSize:
RdosSetFileSize:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate set_file_size_nr
        UserGate set_file_size_nr
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFilePos
#   Name       : RdosGetFilePos
#
#
#   Purpose....: Get file position
#   Purpose....: Get file position
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#
#
#   Returns....: Position
#   Returns....: Position
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFilePos
    .global RdosGetFilePos
RdosGetFilePos:
RdosGetFilePos:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_file_pos_nr
        UserGate get_file_pos_nr
        jnc GetFilePosDone
        jnc GetFilePosDone
GetFilePosFail:
GetFilePosFail:
        xorl %eax,%eax
        xorl %eax,%eax
GetFilePosDone:
GetFilePosDone:
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFilePos
#   Name       : RdosSetFilePos
#
#
#   Purpose....: Set file position
#   Purpose....: Set file position
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                Position
#                Position
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFilePos
    .global RdosSetFilePos
RdosSetFilePos:
RdosSetFilePos:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate set_file_pos_nr
        UserGate set_file_pos_nr
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFileTime
#   Name       : RdosGetFileTime
#
#
#   Purpose....: Get file time & date
#   Purpose....: Get file time & date
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                &MSB, &LSB
#                &MSB, &LSB
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFileTime
    .global RdosGetFileTime
RdosGetFileTime:
RdosGetFileTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_file_time_nr
        UserGate get_file_time_nr
        jc GetFileTimeDone
        jc GetFileTimeDone
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl %edx,(%edi)
        movl %edx,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
GetFileTimeDone:
GetFileTimeDone:
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFileTime
#   Name       : RdosSetFileTime
#
#
#   Purpose....: Set file time & date
#   Purpose....: Set file time & date
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                MSB, LSB
#                MSB, LSB
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFileTime
    .global RdosSetFileTime
RdosSetFileTime:
RdosSetFileTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        UserGate set_file_time_nr
        UserGate set_file_time_nr
        popl %edx
        popl %edx
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadFile
#   Name       : RdosReadFile
#
#
#   Purpose....: Read from file
#   Purpose....: Read from file
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                buffer
#                buffer
#                count
#                count
#
#
#   Returns....: Read count
#   Returns....: Read count
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadFile
    .global RdosReadFile
RdosReadFile:
RdosReadFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate read_file_nr
        UserGate read_file_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteFile
#   Name       : RdosWriteFile
#
#
#   Purpose....: Write to file
#   Purpose....: Write to file
#
#
#   Parameters.: File handle
#   Parameters.: File handle
#                buffer
#                buffer
#                count
#                count
#
#
#   Returns....: Written count
#   Returns....: Written count
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteFile
    .global RdosWriteFile
RdosWriteFile:
RdosWriteFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate write_file_nr
        UserGate write_file_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateMapping
#   Name       : RdosCreateMapping
#
#
#   Purpose....: Create file mapping
#   Purpose....: Create file mapping
#
#
#   Parameters.: Size
#   Parameters.: Size
#
#
#    Returns...: Filemap handle
#    Returns...: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateMapping
    .global RdosCreateMapping
RdosCreateMapping:
RdosCreateMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate create_mapping_nr
        UserGate create_mapping_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateNamedMapping
#   Name       : RdosCreateNamedMapping
#
#
#   Purpose....: Create named file mapping
#   Purpose....: Create named file mapping
#
#
#   Parameters.: Name
#   Parameters.: Name
#                Size
#                Size
#
#
#    Returns...: Filemap handle
#    Returns...: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateNamedMapping
    .global RdosCreateNamedMapping
RdosCreateNamedMapping:
RdosCreateNamedMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate create_named_mapping_nr
        UserGate create_named_mapping_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateNamedFileMapping
#   Name       : RdosCreateNamedFileMapping
#
#
#   Purpose....: Create file named file mapping
#   Purpose....: Create file named file mapping
#
#
#   Parameters.: Name
#   Parameters.: Name
#                Size
#                Size
#                File handle
#                File handle
#
#
#    Returns...: Filemap handle
#    Returns...: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateNamedFileMapping
    .global RdosCreateNamedFileMapping
RdosCreateNamedFileMapping:
RdosCreateNamedFileMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movw 16(%ebp),%bx
        movw 16(%ebp),%bx
        UserGate create_named_file_mapping_nr
        UserGate create_named_file_mapping_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenNamedMapping
#   Name       : RdosOpenNamedMapping
#
#
#   Purpose....: Open named file mapping
#   Purpose....: Open named file mapping
#
#
#   Parameters.: Name
#   Parameters.: Name
#
#
#    Returns...: Filemap handle
#    Returns...: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenNamedMapping
    .global RdosOpenNamedMapping
RdosOpenNamedMapping:
RdosOpenNamedMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate open_named_mapping_nr
        UserGate open_named_mapping_nr
        movzx %bx,%eax
        movzx %bx,%eax
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSyncMapping
#   Name       : RdosSyncMapping
#
#
#   Purpose....: Sync file mapping
#   Purpose....: Sync file mapping
#
#
#   Parameters.: Filemap handle
#   Parameters.: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSyncMapping
    .global RdosSyncMapping
RdosSyncMapping:
RdosSyncMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate sync_mapping_nr
        UserGate sync_mapping_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseMapping
#   Name       : RdosCloseMapping
#
#
#   Purpose....: Close file mapping
#   Purpose....: Close file mapping
#
#
#   Parameters.: Filemap handle
#   Parameters.: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseMapping
    .global RdosCloseMapping
RdosCloseMapping:
RdosCloseMapping:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_mapping_nr
        UserGate close_mapping_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosMapView
#   Name       : RdosMapView
#
#
#   Purpose....: Map view of file into memory
#   Purpose....: Map view of file into memory
#
#
#   Parameters.: Filemap handle
#   Parameters.: Filemap handle
#                Offset
#                Offset
#                Address
#                Address
#                Size
#                Size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosMapView
    .global RdosMapView
RdosMapView:
RdosMapView:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl 20(%ebp),%ecx
        movl 20(%ebp),%ecx
        UserGate map_view_nr
        UserGate map_view_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosUnmapView
#   Name       : RdosUnmapView
#
#
#   Purpose....: Unmap view of file
#   Purpose....: Unmap view of file
#
#
#   Parameters.: Filemap handle
#   Parameters.: Filemap handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosUnmapView
    .global RdosUnmapView
RdosUnmapView:
RdosUnmapView:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate unmap_view_nr
        UserGate unmap_view_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetCurDrive
#   Name       : RdosSetCurDrive
#
#
#   Purpose....: Set current drive
#   Purpose....: Set current drive
#
#
#   Parameters.: Drive
#   Parameters.: Drive
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetCurDrive
    .global RdosSetCurDrive
RdosSetCurDrive:
RdosSetCurDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate set_cur_drive_nr
        UserGate set_cur_drive_nr
        jc rscdrFail
        jc rscdrFail
    movl $1,%eax
    movl $1,%eax
    jmp rscdrDone
    jmp rscdrDone
rscdrFail:
rscdrFail:
    xorl %eax,%eax
    xorl %eax,%eax
rscdrDone:
rscdrDone:
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetCurDrive
#   Name       : RdosGetCurDrive
#
#
#   Purpose....: Get current drive
#   Purpose....: Get current drive
#
#
#   Returns....: Drive
#   Returns....: Drive
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetCurDrive
    .global RdosGetCurDrive
RdosGetCurDrive:
RdosGetCurDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
    xorl %eax,%eax
    xorl %eax,%eax
        UserGate get_cur_drive_nr
        UserGate get_cur_drive_nr
        movzx %al,%eax
        movzx %al,%eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetCurDir
#   Name       : RdosSetCurDir
#
#
#   Purpose....: Set current directory
#   Purpose....: Set current directory
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetCurDir
    .global RdosSetCurDir
RdosSetCurDir:
RdosSetCurDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate set_cur_dir_nr
        UserGate set_cur_dir_nr
        jc rscdFail
        jc rscdFail
    movl $1,%eax
    movl $1,%eax
    jmp rscdDone
    jmp rscdDone
rscdFail:
rscdFail:
    xorl %eax,%eax
    xorl %eax,%eax
rscdDone:
rscdDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetCurDir
#   Name       : RdosGetCurDir
#
#
#   Purpose....: Get current directory
#   Purpose....: Get current directory
#
#
#   Parameters.: Drive
#   Parameters.: Drive
#                Pathname
#                Pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetCurDir
    .global RdosGetCurDir
RdosGetCurDir:
RdosGetCurDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate get_cur_dir_nr
        UserGate get_cur_dir_nr
        jc rgcdFail
        jc rgcdFail
    movl $1,%eax
    movl $1,%eax
    jmp rgcdDone
    jmp rgcdDone
rgcdFail:
rgcdFail:
    xorl %eax,%eax
    xorl %eax,%eax
rgcdDone:
rgcdDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosMakeDir
#   Name       : RdosMakeDir
#
#
#   Purpose....: Create directory
#   Purpose....: Create directory
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosMakeDir
    .global RdosMakeDir
RdosMakeDir:
RdosMakeDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate make_dir_nr
        UserGate make_dir_nr
        jc mdFail
        jc mdFail
    movl $1,%eax
    movl $1,%eax
    jmp mdDone
    jmp mdDone
mdFail:
mdFail:
    xorl %eax,%eax
    xorl %eax,%eax
mdDone:
mdDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosRemoveDir
#   Name       : RdosRemoveDir
#
#
#   Purpose....: Remove directory
#   Purpose....: Remove directory
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosRemoveDir
    .global RdosRemoveDir
RdosRemoveDir:
RdosRemoveDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate remove_dir_nr
        UserGate remove_dir_nr
        jc rdFail
        jc rdFail
    movl $1,%eax
    movl $1,%eax
    jmp rdDone
    jmp rdDone
rdFail:
rdFail:
    xorl %eax,%eax
    xorl %eax,%eax
rdDone:
rdDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosRenameFile
#   Name       : RdosRenameFile
#
#
#   Purpose....: Rename file
#   Purpose....: Rename file
#
#
#   Parameters.: ToName
#   Parameters.: ToName
#                FromName
#                FromName
#
#
##########################################################################*/
##########################################################################*/
    .global RdosRenameFile
    .global RdosRenameFile
RdosRenameFile:
RdosRenameFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        UserGate rename_file_nr
        UserGate rename_file_nr
        jc rfFail
        jc rfFail
    mov $1,%eax
    mov $1,%eax
    jmp rfDone
    jmp rfDone
rfFail:
rfFail:
    xorl %eax,%eax
    xorl %eax,%eax
rfDone:
rfDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDeleteFile
#   Name       : RdosDeleteFile
#
#
#   Purpose....: Delete file
#   Purpose....: Delete file
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDeleteFile
    .global RdosDeleteFile
RdosDeleteFile:
RdosDeleteFile:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate delete_file_nr
        UserGate delete_file_nr
        jc dfFail
        jc dfFail
    mov $1,%eax
    mov $1,%eax
    jmp dfDone
    jmp dfDone
dfFail:
dfFail:
    xorl %eax,%eax
    xorl %eax,%eax
dfDone:
dfDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFileAttribute
#   Name       : RdosGetFileAttribute
#
#
#   Purpose....: Get file attribute
#   Purpose....: Get file attribute
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#                &Attrib
#                &Attrib
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFileAttribute
    .global RdosGetFileAttribute
RdosGetFileAttribute:
RdosGetFileAttribute:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate get_file_attribute_nr
        UserGate get_file_attribute_nr
        jc gfaFail
        jc gfaFail
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
    movzx %cx,%ecx
    movzx %cx,%ecx
        movl %ecx,(%edi)
        movl %ecx,(%edi)
    movl $1,%eax
    movl $1,%eax
    jmp gfaDone
    jmp gfaDone
gfaFail:
gfaFail:
    xorl %eax,%eax
    xorl %eax,%eax
gfaDone:
gfaDone:
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFileAttribute
#   Name       : RdosSetFileAttribute
#
#
#   Purpose....: Set file attribute
#   Purpose....: Set file attribute
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#                Attrib
#                Attrib
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFileAttribute
    .global RdosSetFileAttribute
RdosSetFileAttribute:
RdosSetFileAttribute:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movw 12(%ebp),%cx
        movw 12(%ebp),%cx
        UserGate set_file_attribute_nr
        UserGate set_file_attribute_nr
        jc sfaFail
        jc sfaFail
    movl $1,%eax
    movl $1,%eax
    jmp sfaDone
    jmp sfaDone
sfaFail:
sfaFail:
    xorl %eax,%eax
    xorl %eax,%eax
sfaDone:
sfaDone:
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenDir
#   Name       : RdosOpenDir
#
#
#   Purpose....: Open directory
#   Purpose....: Open directory
#
#
#   Parameters.: Pathname
#   Parameters.: Pathname
#
#
#   Returns....: Dir handle
#   Returns....: Dir handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenDir
    .global RdosOpenDir
RdosOpenDir:
RdosOpenDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate open_dir_nr
        UserGate open_dir_nr
        jc odFail
        jc odFail
    movzx %bx,%eax
    movzx %bx,%eax
    jmp odDone
    jmp odDone
odFail:
odFail:
    xorl %eax,%eax
    xorl %eax,%eax
odDone:
odDone:
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseDir
#   Name       : RdosCloseDir
#
#
#   Purpose....: Close directory
#   Purpose....: Close directory
#
#
#   Parameters.: Dir handle
#   Parameters.: Dir handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseDir
    .global RdosCloseDir
RdosCloseDir:
RdosCloseDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_dir_nr
        UserGate close_dir_nr
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadDir
#   Name       : RdosReadDir
#
#
#   Purpose....: Read directory entry
#   Purpose....: Read directory entry
#
#
#   Parameters.: Dir handle
#   Parameters.: Dir handle
#                Entry #
#                Entry #
#                MaxNameSize
#                MaxNameSize
#                Name buffer
#                Name buffer
#                &FileSize
#                &FileSize
#                &Attribute
#                &Attribute
#                &Msb time
#                &Msb time
#                &Lsb time
#                &Lsb time
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadDir
    .global RdosReadDir
RdosReadDir:
RdosReadDir:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%dx
        movw 12(%ebp),%dx
        movw 16(%ebp),%cx
        movw 16(%ebp),%cx
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        UserGate read_dir_nr
        UserGate read_dir_nr
        jc rdiFail
        jc rdiFail
        movl 24(%ebp),%edi
        movl 24(%ebp),%edi
        movl %ecx,(%edi)
        movl %ecx,(%edi)
        movl 28(%ebp),%edi
        movl 28(%ebp),%edi
    movzx %bx,%ebx
    movzx %bx,%ebx
        movl %ebx,(%edi)
        movl %ebx,(%edi)
        movl 32(%ebp),%edi
        movl 32(%ebp),%edi
        movl %edx,(%edi)
        movl %edx,(%edi)
        movl 36(%ebp),%edi
        movl 36(%ebp),%edi
        movl %eax,(%edi)
        movl %eax,(%edi)
    movl $1,%eax
    movl $1,%eax
    jmp rdiDone
    jmp rdiDone
rdiFail:
rdiFail:
    xorl %eax,%eax
    xorl %eax,%eax
rdiDone:
rdiDone:
    popl %edi
    popl %edi
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetFocus
#   Name       : RdosSetFocus
#
#
#   Purpose....: Set input focus
#   Purpose....: Set input focus
#
#
#   Parameters.: Focus handle
#   Parameters.: Focus handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetFocus
    .global RdosSetFocus
RdosSetFocus:
RdosSetFocus:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate set_focus_nr
        UserGate set_focus_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFocus
#   Name       : RdosGetFocus
#
#
#   Purpose....: Get input focus
#   Purpose....: Get input focus
#
#
#   Returns....: Focus handle
#   Returns....: Focus handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFocus
    .global RdosGetFocus
RdosGetFocus:
RdosGetFocus:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_focus_nr
        UserGate get_focus_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosClearKeyboard
#   Name       : RdosClearKeyboard
#
#
#   Purpose....: Clear keyboard buffer
#   Purpose....: Clear keyboard buffer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosClearKeyboard
    .global RdosClearKeyboard
RdosClearKeyboard:
RdosClearKeyboard:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate flush_keyboard_nr
        UserGate flush_keyboard_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPollKeyboard
#   Name       : RdosPollKeyboard
#
#
#   Purpose....: Poll keyboard buffer
#   Purpose....: Poll keyboard buffer
#
#
#   Returns....: TRUE if non-empty
#   Returns....: TRUE if non-empty
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPollKeyboard
    .global RdosPollKeyboard
RdosPollKeyboard:
RdosPollKeyboard:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate poll_keyboard_nr
        UserGate poll_keyboard_nr
        jc rpkEmpty
        jc rpkEmpty
        mov $1,%eax
        mov $1,%eax
        jmp rpkDone
        jmp rpkDone
rpkEmpty:
rpkEmpty:
        xorl %eax,%eax
        xorl %eax,%eax
rpkDone:
rpkDone:
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadKeyboard
#   Name       : RdosReadKeyboard
#
#
#   Purpose....: Read keyboard buffer
#   Purpose....: Read keyboard buffer
#
#
#   Returns....: Scan code
#   Returns....: Scan code
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadKeyboard
    .global RdosReadKeyboard
RdosReadKeyboard:
RdosReadKeyboard:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate read_keyboard_nr
        UserGate read_keyboard_nr
        movzx %ax,%eax
        movzx %ax,%eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetKeyboardState
#   Name       : RdosGetKeyboardState
#
#
#   Purpose....: Get keyboard buffer
#   Purpose....: Get keyboard buffer
#
#
#   Returns....: Keyboard state
#   Returns....: Keyboard state
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetKeyboardState
    .global RdosGetKeyboardState
RdosGetKeyboardState:
RdosGetKeyboardState:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_keyboard_state_nr
        UserGate get_keyboard_state_nr
        movzx %ax,%eax
        movzx %ax,%eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPutKeyboard
#   Name       : RdosPutKeyboard
#
#
#   Purpose....: Put scancode in keyboard buffer
#   Purpose....: Put scancode in keyboard buffer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPutKeyboard
    .global RdosPutKeyboard
RdosPutKeyboard:
RdosPutKeyboard:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
    pushl %edx
    pushl %edx
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        movb 16(%ebp),%dh
        movb 16(%ebp),%dh
        UserGate put_keyboard_code_nr
        UserGate put_keyboard_code_nr
    popl %edx
    popl %edx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPeekKeyEvent
#   Name       : RdosPeekKeyEvent
#
#
#   Purpose....: Peek keyboard event
#   Purpose....: Peek keyboard event
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPeekKeyEvent
    .global RdosPeekKeyEvent
RdosPeekKeyEvent:
RdosPeekKeyEvent:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        UserGate peek_key_event_nr
        UserGate peek_key_event_nr
        jc rpeFail
        jc rpeFail
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movzx %cx,%eax
        movzx %cx,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movzx %dl,%eax
        movzx %dl,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movzx %dh,%eax
        movzx %dh,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl $1,%eax
        movl $1,%eax
        jmp rpeDone
        jmp rpeDone
rpeFail:
rpeFail:
        xorl %eax,%eax
        xorl %eax,%eax
rpeDone:
rpeDone:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadKeyEvent
#   Name       : RdosReadKeyEvent
#
#
#   Purpose....: Read keyboard event
#   Purpose....: Read keyboard event
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadKeyEvent
    .global RdosReadKeyEvent
RdosReadKeyEvent:
RdosReadKeyEvent:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        UserGate read_key_event_nr
        UserGate read_key_event_nr
        jc rkeFail
        jc rkeFail
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movzx %ax,%eax
        movzx %ax,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movzx %cx,%eax
        movzx %cx,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movzx %dl,%eax
        movzx %dl,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movzx %dh,%eax
        movzx %dh,%eax
        movl %eax,(%edi)
        movl %eax,(%edi)
        movl $1,%eax
        movl $1,%eax
        jmp rkeDone
        jmp rkeDone
rkeFail:
rkeFail:
        xorl %eax,%eax
        xorl %eax,%eax
rkeDone:
rkeDone:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosHideMouse
#   Name       : RdosHideMouse
#
#
#   Purpose....: Hide mouse cursor
#   Purpose....: Hide mouse cursor
#
#
##########################################################################*/
##########################################################################*/
    .global RdosHideMouse
    .global RdosHideMouse
RdosHideMouse:
RdosHideMouse:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate hide_mouse_nr
        UserGate hide_mouse_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosShowMouse
#   Name       : RdosShowMouse
#
#
#   Purpose....: Show mouse cursor
#   Purpose....: Show mouse cursor
#
#
##########################################################################*/
##########################################################################*/
    .global RdosShowMouse
    .global RdosShowMouse
RdosShowMouse:
RdosShowMouse:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate show_mouse_nr
        UserGate show_mouse_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetMousePosition
#   Name       : RdosGetMousePosition
#
#
#   Purpose....: Get mouse position
#   Purpose....: Get mouse position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetMousePosition
    .global RdosGetMousePosition
RdosGetMousePosition:
RdosGetMousePosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_mouse_position_nr
        UserGate get_mouse_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetMousePosition
#   Name       : RdosSetMousePosition
#
#
#   Purpose....: Set mouse position
#   Purpose....: Set mouse position
#
#
#   Parameters.: x, y
#   Parameters.: x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetMousePosition
    .global RdosSetMousePosition
RdosSetMousePosition:
RdosSetMousePosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%cx
        movw 8(%ebp),%cx
        movw 12(%ebp),%dx
        movw 12(%ebp),%dx
        UserGate set_mouse_position_nr
        UserGate set_mouse_position_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetMouseWindow
#   Name       : RdosSetMouseWindow
#
#
#   Purpose....: Set mouse window
#   Purpose....: Set mouse window
#
#
#   Parameters.: start x, start y
#   Parameters.: start x, start y
#                end x, end y
#                end x, end y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetMouseWindow
    .global RdosSetMouseWindow
RdosSetMouseWindow:
RdosSetMouseWindow:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %eax
        pushl %eax
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%ax
        movw 8(%ebp),%ax
        movw 12(%ebp),%bx
        movw 12(%ebp),%bx
        movw 16(%ebp),%cx
        movw 16(%ebp),%cx
        movw 20(%ebp),%dx
        movw 20(%ebp),%dx
        UserGate set_mouse_window_nr
        UserGate set_mouse_window_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
        popl %eax
        popl %eax
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetMouseMickey
#   Name       : RdosSetMouseMickey
#
#
#   Purpose....: Set mouse mickey
#   Purpose....: Set mouse mickey
#
#
#   Parameters.: x, y
#   Parameters.: x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetMouseMickey
    .global RdosSetMouseMickey
RdosSetMouseMickey:
RdosSetMouseMickey:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%cx
        movw 8(%ebp),%cx
        movw 12(%ebp),%dx
        movw 12(%ebp),%dx
        UserGate set_mouse_mickey_nr
        UserGate set_mouse_mickey_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetCursorPosition
#   Name       : RdosGetCursorPosition
#
#
#   Purpose....: Get cursor position
#   Purpose....: Get cursor position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetCursorPosition
    .global RdosGetCursorPosition
RdosGetCursorPosition:
RdosGetCursorPosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_cursor_position_nr
        UserGate get_cursor_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetCursorPosition
#   Name       : RdosSetCursorPosition
#
#
#   Purpose....: Set cursor position
#   Purpose....: Set cursor position
#
#
#   Parameters.: x, y
#   Parameters.: x, y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetCursorPosition
    .global RdosSetCursorPosition
RdosSetCursorPosition:
RdosSetCursorPosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movw 8(%ebp),%cx
        movw 8(%ebp),%cx
        movw 12(%ebp),%dx
        movw 12(%ebp),%dx
        UserGate set_cursor_position_nr
        UserGate set_cursor_position_nr
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetLeftButton
#   Name       : RdosGetLeftButton
#
#
#   Purpose....: Check if left button is pressed
#   Purpose....: Check if left button is pressed
#
#
#   Returns....: TRUE if pressed
#   Returns....: TRUE if pressed
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetLeftButton
    .global RdosGetLeftButton
RdosGetLeftButton:
RdosGetLeftButton:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_left_button_nr
        UserGate get_left_button_nr
        jc get_left_rel
        jc get_left_rel
        mov $1,%eax
        mov $1,%eax
        jmp get_left_done
        jmp get_left_done
get_left_rel:
get_left_rel:
        xorl %eax,%eax
        xorl %eax,%eax
get_left_done:
get_left_done:
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRightButton
#   Name       : RdosGetRightButton
#
#
#   Purpose....: Check if right button is pressed
#   Purpose....: Check if right button is pressed
#
#
#   Returns....: TRUE if pressed
#   Returns....: TRUE if pressed
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRightButton
    .global RdosGetRightButton
RdosGetRightButton:
RdosGetRightButton:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_right_button_nr
        UserGate get_right_button_nr
        jc get_right_rel
        jc get_right_rel
        mov $1,%eax
        mov $1,%eax
        jmp get_right_done
        jmp get_right_done
get_right_rel:
get_right_rel:
        xorl %eax,%eax
        xorl %eax,%eax
get_right_done:
get_right_done:
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetLeftButtonPressPosition
#   Name       : RdosGetLeftButtonPressPosition
#
#
#   Purpose....: Get left button press position
#   Purpose....: Get left button press position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetLeftButtonPressPosition
    .global RdosGetLeftButtonPressPosition
RdosGetLeftButtonPressPosition:
RdosGetLeftButtonPressPosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_left_button_press_position_nr
        UserGate get_left_button_press_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRightButtonPressPosition
#   Name       : RdosGetRightButtonPressPosition
#
#
#   Purpose....: Get right button press position
#   Purpose....: Get right button press position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRightButtonPressPosition
    .global RdosGetRightButtonPressPosition
RdosGetRightButtonPressPosition:
RdosGetRightButtonPressPosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_right_button_press_position_nr
        UserGate get_right_button_press_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetLeftButtonReleasePosition
#   Name       : RdosGetLeftButtonReleasePosition
#
#
#   Purpose....: Get left button release position
#   Purpose....: Get left button release position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetLeftButtonReleasePosition
    .global RdosGetLeftButtonReleasePosition
RdosGetLeftButtonReleasePosition:
RdosGetLeftButtonReleasePosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_left_button_release_position_nr
        UserGate get_left_button_release_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRightButtonReleasePosition
#   Name       : RdosGetRightButtonReleasePosition
#
#
#   Purpose....: Get right button release position
#   Purpose....: Get right button release position
#
#
#   Parameters.: &x, &y
#   Parameters.: &x, &y
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRightButtonReleasePosition
    .global RdosGetRightButtonReleasePosition
RdosGetRightButtonReleasePosition:
RdosGetRightButtonReleasePosition:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        UserGate get_right_button_release_position_nr
        UserGate get_right_button_release_position_nr
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%eax)
        movl %ecx,(%eax)
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        movzx %dx,%edx
        movzx %dx,%edx
        movl %edx,(%eax)
        movl %edx,(%eax)
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadLine
#   Name       : RdosReadLine
#
#
#   Purpose....: Read a line from keyboard
#   Purpose....: Read a line from keyboard
#
#
#   Parameters.: Buffer
#   Parameters.: Buffer
#                Size
#                Size
#
#
#   Returns....: Read count
#   Returns....: Read count
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadLine
    .global RdosReadLine
RdosReadLine:
RdosReadLine:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate read_con_nr
        UserGate read_con_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteChar
#   Name       : RdosWriteChar
#
#
#   Purpose....: Write a character to screen
#   Purpose....: Write a character to screen
#
#
#   Parameters.: Char
#   Parameters.: Char
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteChar
    .global RdosWriteChar
RdosWriteChar:
RdosWriteChar:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate write_char_nr
        UserGate write_char_nr
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteSizeString
#   Name       : RdosWriteSizeString
#
#
#   Purpose....: Write a fixed number of characters to screen
#   Purpose....: Write a fixed number of characters to screen
#
#
#   Parameters.: String
#   Parameters.: String
#                Count
#                Count
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteSizeString
    .global RdosWriteSizeString
RdosWriteSizeString:
RdosWriteSizeString:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate write_size_string_nr
        UserGate write_size_string_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteString
#   Name       : RdosWriteString
#
#
#   Purpose....: Write a string to screen
#   Purpose....: Write a string to screen
#
#
#   Parameters.: String
#   Parameters.: String
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteString
    .global RdosWriteString
RdosWriteString:
RdosWriteString:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate write_asciiz_nr
        UserGate write_asciiz_nr
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosNameToIp
#   Name       : RdosNameToIp
#
#
#   Purpose....: Convert host name to IP address
#   Purpose....: Convert host name to IP address
#
#
#   Parameters.: Name
#   Parameters.: Name
#
#
#   Returns....: IP
#   Returns....: IP
#
#
##########################################################################*/
##########################################################################*/
    .global RdosNameToIp
    .global RdosNameToIp
RdosNameToIp:
RdosNameToIp:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate name_to_ip_nr
        UserGate name_to_ip_nr
        jc rntiFail
        jc rntiFail
        movl %edx,%eax
        movl %edx,%eax
        jmp rntiDone
        jmp rntiDone
rntiFail:
rntiFail:
        xorl %eax,%eax
        xorl %eax,%eax
rntiDone:
rntiDone:
        popl %edi
        popl %edi
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetIp
#   Name       : RdosGetIp
#
#
#   Purpose....: Get my IP
#   Purpose....: Get my IP
#
#
#   Returns....: IP
#   Returns....: IP
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetIp
    .global RdosGetIp
RdosGetIp:
RdosGetIp:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate get_ip_address_nr
        UserGate get_ip_address_nr
        movl %edx,%eax
        movl %edx,%eax
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosIpToName
#   Name       : RdosIpToName
#
#
#   Purpose....: Convert IP address to host name
#   Purpose....: Convert IP address to host name
#
#
#   Parameters.: IP
#   Parameters.: IP
#                Name
#                Name
#                Size
#                Size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosIpToName
    .global RdosIpToName
RdosIpToName:
RdosIpToName:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
;
;
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate ip_to_name_nr
        UserGate ip_to_name_nr
        jnc ritnDone
        jnc ritnDone
ritnFail:
ritnFail:
        xorl %eax,%eax
        xorl %eax,%eax
ritnDone:
ritnDone:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        leave
        leave
        ret
        ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPing
#   Name       : RdosPing
#
#
#   Purpose....: Ping node
#   Purpose....: Ping node
#
#
#   Parameters.: IP
#   Parameters.: IP
#                Timeout
#                Timeout
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPing
    .global RdosPing
RdosPing:
RdosPing:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
;
;
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate ping_nr
        UserGate ping_nr
        jc ping_failed
        jc ping_failed
        movl $1,%eax
        movl $1,%eax
        jmp ping_done
        jmp ping_done
ping_failed:
ping_failed:
        xorl %eax,%eax
        xorl %eax,%eax
ping_done:
ping_done:
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenTcpConnection
#   Name       : RdosOpenTcpConnection
#
#
#   Purpose....: Open an active connection over TCP
#   Purpose....: Open an active connection over TCP
#
#
#   Parameters.: RemoteIp
#   Parameters.: RemoteIp
#                LocalPort
#                LocalPort
#                RemotePort
#                RemotePort
#                Timeout in ms
#                Timeout in ms
#                BufferSize
#                BufferSize
#
#
#   Returns....: Conn handle
#   Returns....: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenTcpConnection
    .global RdosOpenTcpConnection
RdosOpenTcpConnection:
RdosOpenTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movw 12(%ebp),%si
        movw 12(%ebp),%si
        movw 16(%ebp),%di
        movw 16(%ebp),%di
        movl 20(%ebp),%eax
        movl 20(%ebp),%eax
        movl 24(%ebp),%ecx
        movl 24(%ebp),%ecx
        UserGate open_tcp_connection_nr
        UserGate open_tcp_connection_nr
        mov $0,%eax
        mov $0,%eax
        jc rotcDone
        jc rotcDone
        movl %ebx,%eax
        movl %ebx,%eax
rotcDone:
rotcDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateTcpListen
#   Name       : RdosCreateTcpListen
#
#
#   Purpose....: Create listen handle
#   Purpose....: Create listen handle
#
#
#   Parameters.: Port
#   Parameters.: Port
#                MaxConnections
#                MaxConnections
#                BufferSize
#                BufferSize
#
#
#   Returns....: Listen handle
#   Returns....: Listen handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateTcpListen
    .global RdosCreateTcpListen
RdosCreateTcpListen:
RdosCreateTcpListen:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        movw 8(%ebp),%si
        movw 8(%ebp),%si
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate create_tcp_listen_nr
        UserGate create_tcp_listen_nr
        movzx %bx,%eax
        movzx %bx,%eax
        jnc ctlDone
        jnc ctlDone
    xorl %eax,%eax
    xorl %eax,%eax
ctlDone:
ctlDone:
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetTcpListen
#   Name       : RdosGetTcpListen
#
#
#   Purpose....: Get connection from listen
#   Purpose....: Get connection from listen
#
#
#   Parameters.: Listen handle
#   Parameters.: Listen handle
#
#
#   Returns....: Conn handle
#   Returns....: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetTcpListen
    .global RdosGetTcpListen
RdosGetTcpListen:
RdosGetTcpListen:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_tcp_listen_nr
        UserGate get_tcp_listen_nr
        movzx %ax,%eax
        movzx %ax,%eax
        jnc gtlDone
        jnc gtlDone
    xorl %eax,%eax
    xorl %eax,%eax
gtlDone:
gtlDone:
    popl %ebx
    popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseTcpListen
#   Name       : RdosCloseTcpListen
#
#
#   Purpose....: Close TCP listen
#   Purpose....: Close TCP listen
#
#
#   Parameters.: Listen handle
#   Parameters.: Listen handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseTcpListen
    .global RdosCloseTcpListen
RdosCloseTcpListen:
RdosCloseTcpListen:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_tcp_listen_nr
        UserGate close_tcp_listen_nr
    popl %ebx
    popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForTcpListen
#   Name       : RdosAddWaitForTcpListen
#
#
#   Purpose....: Add wait object to tcp listen
#   Purpose....: Add wait object to tcp listen
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Listen handle
#                Listen handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForTcpListen
    .global RdosAddWaitForTcpListen
RdosAddWaitForTcpListen:
RdosAddWaitForTcpListen:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate add_wait_for_tcp_listen_nr
        UserGate add_wait_for_tcp_listen_nr
        movl $1,%eax
        movl $1,%eax
        jnc awftlDone
        jnc awftlDone
        xorl %eax,%eax
        xorl %eax,%eax
awftlDone:
awftlDone:
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWaitForTcpConnection
#   Name       : RdosWaitForTcpConnection
#
#
#   Purpose....: Wait for Tcp connection to be established
#   Purpose....: Wait for Tcp connection to be established
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#                Timeout ms
#                Timeout ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWaitForTcpConnection
    .global RdosWaitForTcpConnection
RdosWaitForTcpConnection:
RdosWaitForTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%eax
        movl 12(%ebp),%eax
        UserGate wait_for_tcp_connection_nr
        UserGate wait_for_tcp_connection_nr
        movl $1,%eax
        movl $1,%eax
        jnc wftcDone
        jnc wftcDone
        xorl %eax,%eax
        xorl %eax,%eax
wftcDone:
wftcDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddWaitForTcpConnection
#   Name       : RdosAddWaitForTcpConnection
#
#
#   Purpose....: Add wait object to tcp connection
#   Purpose....: Add wait object to tcp connection
#
#
#   Parameters.: Wait handle
#   Parameters.: Wait handle
#                Conn handle
#                Conn handle
#                ID
#                ID
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddWaitForTcpConnection
    .global RdosAddWaitForTcpConnection
RdosAddWaitForTcpConnection:
RdosAddWaitForTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movw 12(%ebp),%ax
        movw 12(%ebp),%ax
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate add_wait_for_tcp_connection_nr
        UserGate add_wait_for_tcp_connection_nr
        movl $1,%eax
        movl $1,%eax
        jnc awftcDone
        jnc awftcDone
        xorl %eax,%eax
        xorl %eax,%eax
awftcDone:
awftcDone:
    popl %ecx
    popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseTcpConnection
#   Name       : RdosCloseTcpConnection
#
#
#   Purpose....: Close Tcp connection
#   Purpose....: Close Tcp connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseTcpConnection
    .global RdosCloseTcpConnection
RdosCloseTcpConnection:
RdosCloseTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate close_tcp_connection_nr
        UserGate close_tcp_connection_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDeleteTcpConnection
#   Name       : RdosDeleteTcpConnection
#
#
#   Purpose....: Delete Tcp connection
#   Purpose....: Delete Tcp connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDeleteTcpConnection
    .global RdosDeleteTcpConnection
RdosDeleteTcpConnection:
RdosDeleteTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate delete_tcp_connection_nr
        UserGate delete_tcp_connection_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAbortTcpConnection
#   Name       : RdosAbortTcpConnection
#
#
#   Purpose....: Abort Tcp connection
#   Purpose....: Abort Tcp connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAbortTcpConnection
    .global RdosAbortTcpConnection
RdosAbortTcpConnection:
RdosAbortTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate abort_tcp_connection_nr
        UserGate abort_tcp_connection_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPushTcpConnection
#   Name       : RdosPushTcpConnection
#
#
#   Purpose....: Push Tcp connection
#   Purpose....: Push Tcp connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPushTcpConnection
    .global RdosPushTcpConnection
RdosPushTcpConnection:
RdosPushTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate push_tcp_connection_nr
        UserGate push_tcp_connection_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosPollTcpConnection
#   Name       : RdosPollTcpConnection
#
#
#   Purpose....: Poll Tcp connection
#   Purpose....: Poll Tcp connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
#   Returns....: Available bytes in receive buffer
#   Returns....: Available bytes in receive buffer
#
#
##########################################################################*/
##########################################################################*/
    .global RdosPollTcpConnection
    .global RdosPollTcpConnection
RdosPollTcpConnection:
RdosPollTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate poll_tcp_connection_nr
        UserGate poll_tcp_connection_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosIsTcpConnectionClosed
#   Name       : RdosIsTcpConnectionClosed
#
#
#   Purpose....: Check if connection is closed
#   Purpose....: Check if connection is closed
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
#   Returns....: TRUE if closed
#   Returns....: TRUE if closed
#
#
##########################################################################*/
##########################################################################*/
    .global RdosIsTcpConnectionClosed
    .global RdosIsTcpConnectionClosed
RdosIsTcpConnectionClosed:
RdosIsTcpConnectionClosed:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate is_tcp_connection_closed_nr
        UserGate is_tcp_connection_closed_nr
        jc rptcClosed
        jc rptcClosed
        xorl %eax,%eax
        xorl %eax,%eax
        jmp rptcDone
        jmp rptcDone
rptcClosed:
rptcClosed:
        movl $1,%eax
        movl $1,%eax
rptcDone:
rptcDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRemoteTcpConnectionIp
#   Name       : RdosGetRemoteTcpConnectionIp
#
#
#   Purpose....: Get remote IP
#   Purpose....: Get remote IP
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
#   Returns....: IP
#   Returns....: IP
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRemoteTcpConnectionIp
    .global RdosGetRemoteTcpConnectionIp
RdosGetRemoteTcpConnectionIp:
RdosGetRemoteTcpConnectionIp:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_remote_tcp_connection_ip_nr
        UserGate get_remote_tcp_connection_ip_nr
        jnc grtciDone
        jnc grtciDone
        movl $0xFFFFFFFF,%eax
        movl $0xFFFFFFFF,%eax
grtciDone:
grtciDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRemoteTcpConnectionPort
#   Name       : RdosGetRemoteTcpConnectionPort
#
#
#   Purpose....: Get remote port
#   Purpose....: Get remote port
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
#   Returns....: Port
#   Returns....: Port
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRemoteTcpConnectionPort
    .global RdosGetRemoteTcpConnectionPort
RdosGetRemoteTcpConnectionPort:
RdosGetRemoteTcpConnectionPort:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_remote_tcp_connection_port_nr
        UserGate get_remote_tcp_connection_port_nr
        jnc grtcpDone
        jnc grtcpDone
        movl $0,%eax
        movl $0,%eax
grtcpDone:
grtcpDone:
    movzx %ax,%eax
    movzx %ax,%eax
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetLocalTcpConnectionPort
#   Name       : RdosGetLocalTcpConnectionPort
#
#
#   Purpose....: Get local port
#   Purpose....: Get local port
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#
#
#   Returns....: Port
#   Returns....: Port
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetLocalTcpConnectionPort
    .global RdosGetLocalTcpConnectionPort
RdosGetLocalTcpConnectionPort:
RdosGetLocalTcpConnectionPort:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        UserGate get_local_tcp_connection_port_nr
        UserGate get_local_tcp_connection_port_nr
        jnc gltcpDone
        jnc gltcpDone
        movl $0,%eax
        movl $0,%eax
gltcpDone:
gltcpDone:
    movzx %ax,%eax
    movzx %ax,%eax
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadTcpConnection
#   Name       : RdosReadTcpConnection
#
#
#   Purpose....: Read data from connection
#   Purpose....: Read data from connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#                Buffer
#                Buffer
#                Size
#                Size
#
#
#   Returns....: Read bytes
#   Returns....: Read bytes
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadTcpConnection
    .global RdosReadTcpConnection
RdosReadTcpConnection:
RdosReadTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate read_tcp_connection_nr
        UserGate read_tcp_connection_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteTcpConnection
#   Name       : RdosWriteTcpConnection
#
#
#   Purpose....: Write data fto connection
#   Purpose....: Write data fto connection
#
#
#   Parameters.: Conn handle
#   Parameters.: Conn handle
#                Buffer
#                Buffer
#                Size
#                Size
#
#
#   Returns....: Written bytes
#   Returns....: Written bytes
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteTcpConnection
    .global RdosWriteTcpConnection
RdosWriteTcpConnection:
RdosWriteTcpConnection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        UserGate write_tcp_connection_nr
        UserGate write_tcp_connection_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetLocalMailslot
#   Name       : RdosGetLocalMailslot
#
#
#   Purpose....: Get local mailslot from name
#   Purpose....: Get local mailslot from name
#
#
#   Parameters.: Name
#   Parameters.: Name
#
#
#   Returns....: Mailslot handle
#   Returns....: Mailslot handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetLocalMailslot
    .global RdosGetLocalMailslot
RdosGetLocalMailslot:
RdosGetLocalMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate get_local_mailslot_nr
        UserGate get_local_mailslot_nr
        jc rglmFail
        jc rglmFail
        movzx %bx,%eax
        movzx %bx,%eax
        jmp rglmDone
        jmp rglmDone
rglmFail:
rglmFail:
        xorl %eax,%eax
        xorl %eax,%eax
rglmDone:
rglmDone:
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRemoteMailslot
#   Name       : RdosGetRemoteMailslot
#
#
#   Purpose....: Get remote mailslot from name
#   Purpose....: Get remote mailslot from name
#
#
#   Parameters.: IP
#   Parameters.: IP
#                Name
#                Name
#
#
#   Returns....: Mailslot handle
#   Returns....: Mailslot handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRemoteMailslot
    .global RdosGetRemoteMailslot
RdosGetRemoteMailslot:
RdosGetRemoteMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edx
        movl 8(%ebp),%edx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate get_remote_mailslot_nr
        UserGate get_remote_mailslot_nr
        jc rgrmFail
        jc rgrmFail
        movzx %bx,%eax
        movzx %bx,%eax
        jmp rgrmDone
        jmp rgrmDone
rgrmFail:
rgrmFail:
        xorl %eax,%eax
        xorl %eax,%eax
rgrmDone:
rgrmDone:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFreeMailslot
#   Name       : RdosFreeMailslot
#
#
#   Purpose....: Free mailslot
#   Purpose....: Free mailslot
#
#
#   Parameters.: Mailslot handle
#   Parameters.: Mailslot handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFreeMailslot
    .global RdosFreeMailslot
RdosFreeMailslot:
RdosFreeMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate free_mailslot_nr
        UserGate free_mailslot_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSendMailslot
#   Name       : RdosSendMailslot
#
#
#   Purpose....: Send mailslot
#   Purpose....: Send mailslot
#
#
#   Parameters.: Mailslot handle
#   Parameters.: Mailslot handle
#                                Msg
#                                Msg
#                                Size
#                                Size
#                                ReplyBuf
#                                ReplyBuf
#                                MaxReplySize
#                                MaxReplySize
#
#
#   Returns....: Size of reply
#   Returns....: Size of reply
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSendMailslot
    .global RdosSendMailslot
RdosSendMailslot:
RdosSendMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movw 8(%ebp),%bx
        movw 8(%ebp),%bx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        movl 24(%ebp),%eax
        movl 24(%ebp),%eax
        UserGate send_mailslot_nr
        UserGate send_mailslot_nr
        jc smFail
        jc smFail
        movl %ecx,%eax
        movl %ecx,%eax
        jmp smDone
        jmp smDone
smFail:
smFail:
        movl $0xFFFFFFFF,%eax
        movl $0xFFFFFFFF,%eax
smDone:
smDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDefineMailslot
#   Name       : RdosDefineMailslot
#
#
#   Purpose....: Define mailslot
#   Purpose....: Define mailslot
#
#
#   Parameters.: Name
#   Parameters.: Name
#                Max msg size
#                Max msg size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDefineMailslot
    .global RdosDefineMailslot
RdosDefineMailslot:
RdosDefineMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate define_mailslot_nr
        UserGate define_mailslot_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReceiveMailslot
#   Name       : RdosReceiveMailslot
#
#
#   Purpose....: Receive from mailslot
#   Purpose....: Receive from mailslot
#
#
#   Parameters.: Msg buffer
#   Parameters.: Msg buffer
#
#
#   Returns....: Msg size
#   Returns....: Msg size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReceiveMailslot
    .global RdosReceiveMailslot
RdosReceiveMailslot:
RdosReceiveMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        UserGate receive_mailslot_nr
        UserGate receive_mailslot_nr
        movl %ecx,%eax
        movl %ecx,%eax
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReplyMailslot
#   Name       : RdosReplyMailslot
#
#
#   Purpose....: Reply to mailslot
#   Purpose....: Reply to mailslot
#
#
#   Parameters.: Msg buffer
#   Parameters.: Msg buffer
#                Msg size
#                Msg size
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReplyMailslot
    .global RdosReplyMailslot
RdosReplyMailslot:
RdosReplyMailslot:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%edi
        movl 8(%ebp),%edi
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        UserGate reply_mailslot_nr
        UserGate reply_mailslot_nr
        popl %edi
        popl %edi
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetIdeDisc
#   Name       : RdosGetIdeDisc
#
#
#   Purpose....: Get IDE disc
#   Purpose....: Get IDE disc
#
#
#   Parameters.: Unit #
#   Parameters.: Unit #
#
#
#   Returns....: Disc #
#   Returns....: Disc #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetIdeDisc
    .global RdosGetIdeDisc
RdosGetIdeDisc:
RdosGetIdeDisc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movb 8(%ebp),%bl
        movb 8(%ebp),%bl
        UserGate get_ide_disc_nr
        UserGate get_ide_disc_nr
        jc get_ide_disc_fail
        jc get_ide_disc_fail
    movzx %al,%eax
    movzx %al,%eax
        jmp get_ide_disc_done
        jmp get_ide_disc_done
get_ide_disc_fail:
get_ide_disc_fail:
        movl $0xFFFFFFFF,%eax
        movl $0xFFFFFFFF,%eax
get_ide_disc_done:
get_ide_disc_done:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetFloppyDisc
#   Name       : RdosGetFloppyDisc
#
#
#   Purpose....: Get floppy disc
#   Purpose....: Get floppy disc
#
#
#   Parameters.: Unit #
#   Parameters.: Unit #
#
#
#   Returns....: Disc #
#   Returns....: Disc #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetFloppyDisc
    .global RdosGetFloppyDisc
RdosGetFloppyDisc:
RdosGetFloppyDisc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movb 8(%ebp),%bl
        movb 8(%ebp),%bl
        UserGate get_floppy_disc_nr
        UserGate get_floppy_disc_nr
        jc get_floppy_disc_fail
        jc get_floppy_disc_fail
    movzx %al,%eax
    movzx %al,%eax
        jmp get_floppy_disc_done
        jmp get_floppy_disc_done
get_floppy_disc_fail:
get_floppy_disc_fail:
        movl $0xFFFFFFFF,%eax
        movl $0xFFFFFFFF,%eax
get_floppy_disc_done:
get_floppy_disc_done:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetDiscInfo
#   Name       : RdosGetDiscInfo
#
#
#   Purpose....: Get disc info
#   Purpose....: Get disc info
#
#
#   Parameters.: Disc #
#   Parameters.: Disc #
#                                Bytes / sector
#                                Bytes / sector
#                                Total sectors
#                                Total sectors
#                                BIOS sectors / cyl
#                                BIOS sectors / cyl
#                                BIOS heads
#                                BIOS heads
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetDiscInfo
    .global RdosGetDiscInfo
RdosGetDiscInfo:
RdosGetDiscInfo:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate get_disc_info_nr
        UserGate get_disc_info_nr
        jc get_disc_info_fail
        jc get_disc_info_fail
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%ebx)
        movl %ecx,(%ebx)
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl 20(%ebp),%ebx
        movl 20(%ebp),%ebx
        movzx %si,%esi
        movzx %si,%esi
        movl %esi,(%ebx)
        movl %esi,(%ebx)
        movl 24(%ebp),%ebx
        movl 24(%ebp),%ebx
        movzx %di,%edi
        movzx %di,%edi
        movl %edi,(%ebx)
        movl %edi,(%ebx)
        movl $1,%eax
        movl $1,%eax
        jmp get_disc_info_done
        jmp get_disc_info_done
get_disc_info_fail:
get_disc_info_fail:
        xorl %eax,%eax
        xorl %eax,%eax
get_disc_info_done:
get_disc_info_done:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetDiscInfo
#   Name       : RdosSetDiscInfo
#
#
#   Purpose....: Set disc info
#   Purpose....: Set disc info
#
#
#   Parameters.: Disc #
#   Parameters.: Disc #
#                                Bytes / sector
#                                Bytes / sector
#                                Total sectors
#                                Total sectors
#                                BIOS sectors / cyl
#                                BIOS sectors / cyl
#                                BIOS heads
#                                BIOS heads
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetDiscInfo
    .global RdosSetDiscInfo
RdosSetDiscInfo:
RdosSetDiscInfo:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        movl 16(%ebp),%edx
        movl 16(%ebp),%edx
        movl 20(%ebp),%esi
        movl 20(%ebp),%esi
        movl 24(%ebp),%edi
        movl 24(%ebp),%edi
        UserGate set_disc_info_nr
        UserGate set_disc_info_nr
        jc set_disc_info_fail
        jc set_disc_info_fail
        movl $1,%eax
        movl $1,%eax
        jmp set_disc_info_done
        jmp set_disc_info_done
set_disc_info_fail:
set_disc_info_fail:
        xorl %eax,%eax
        xorl %eax,%eax
set_disc_info_done:
set_disc_info_done:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadDisc
#   Name       : RdosReadDisc
#
#
#   Purpose....: Read from disc
#   Purpose....: Read from disc
#
#
#   Parameters.: Disc #
#   Parameters.: Disc #
#                                Sector #
#                                Sector #
#                                Buffer
#                                Buffer
#                                Size
#                                Size
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadDisc
    .global RdosReadDisc
RdosReadDisc:
RdosReadDisc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl 20(%ebp),%ecx
        movl 20(%ebp),%ecx
        UserGate read_disc_nr
        UserGate read_disc_nr
        jc read_disc_fail
        jc read_disc_fail
        movl $1,%eax
        movl $1,%eax
        jmp read_disc_done
        jmp read_disc_done
read_disc_fail:
read_disc_fail:
        xorl %eax,%eax
        xorl %eax,%eax
read_disc_done:
read_disc_done:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteDisc
#   Name       : RdosWriteDisc
#
#
#   Purpose....: Write to disc
#   Purpose....: Write to disc
#
#
#   Parameters.: Disc #
#   Parameters.: Disc #
#                                Sector #
#                                Sector #
#                                Buffer
#                                Buffer
#                                Size
#                                Size
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteDisc
    .global RdosWriteDisc
RdosWriteDisc:
RdosWriteDisc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl 20(%ebp),%ecx
        movl 20(%ebp),%ecx
        UserGate write_disc_nr
        UserGate write_disc_nr
        jc write_disc_fail
        jc write_disc_fail
        movl $1,%eax
        movl $1,%eax
        jmp write_disc_done
        jmp write_disc_done
write_disc_fail:
write_disc_fail:
        xorl %eax,%eax
        xorl %eax,%eax
write_disc_done:
write_disc_done:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAllocateFixedDrive
#   Name       : RdosAllocateFixedDrive
#
#
#   Purpose....: Allocate fixed drive
#   Purpose....: Allocate fixed drive
#
#
#   Parameters.: Drive #
#   Parameters.: Drive #
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAllocateFixedDrive
    .global RdosAllocateFixedDrive
RdosAllocateFixedDrive:
RdosAllocateFixedDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate allocate_fixed_drive_nr
        UserGate allocate_fixed_drive_nr
        jc allocate_fixed_drive_fail
        jc allocate_fixed_drive_fail
        movl $1,%eax
        movl $1,%eax
        jmp allocate_fixed_drive_done
        jmp allocate_fixed_drive_done
allocate_fixed_drive_fail:
allocate_fixed_drive_fail:
        xorl %eax,%eax
        xorl %eax,%eax
allocate_fixed_drive_done:
allocate_fixed_drive_done:
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAllocateStaticDrive
#   Name       : RdosAllocateStaticDrive
#
#
#   Purpose....: Allocate static drive
#   Purpose....: Allocate static drive
#
#
#   Returns....: Drive #
#   Returns....: Drive #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAllocateStaticDrive
    .global RdosAllocateStaticDrive
RdosAllocateStaticDrive:
RdosAllocateStaticDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate allocate_static_drive_nr
        UserGate allocate_static_drive_nr
        jc allocate_static_drive_fail
        jc allocate_static_drive_fail
    movzx %al,%eax
    movzx %al,%eax
        jmp allocate_static_drive_done
        jmp allocate_static_drive_done
allocate_static_drive_fail:
allocate_static_drive_fail:
        xorl %eax,%eax
        xorl %eax,%eax
allocate_static_drive_done:
allocate_static_drive_done:
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAllocateDynamicDrive
#   Name       : RdosAllocateDynamicDrive
#
#
#   Purpose....: Allocate dynamic drive
#   Purpose....: Allocate dynamic drive
#
#
#   Returns....: Drive #
#   Returns....: Drive #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAllocateDynamicDrive
    .global RdosAllocateDynamicDrive
RdosAllocateDynamicDrive:
RdosAllocateDynamicDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate allocate_dynamic_drive_nr
        UserGate allocate_dynamic_drive_nr
        jc allocate_dynamic_drive_fail
        jc allocate_dynamic_drive_fail
    movzx %al,%eax
    movzx %al,%eax
        jmp allocate_dynamic_drive_done
        jmp allocate_dynamic_drive_done
allocate_dynamic_drive_fail:
allocate_dynamic_drive_fail:
        xorl %eax,%eax
        xorl %eax,%eax
allocate_dynamic_drive_done:
allocate_dynamic_drive_done:
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetRdfsInfo
#   Name       : RdosGetRdfsInfo
#
#
#   Purpose....: Get rdfs info
#   Purpose....: Get rdfs info
#
#
#   Parameters.: Crypt tab
#   Parameters.: Crypt tab
#                Key tab
#                Key tab
#                Extent size tab
#                Extent size tab
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetRdfsInfo
    .global RdosGetRdfsInfo
RdosGetRdfsInfo:
RdosGetRdfsInfo:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%esi
        movl 8(%ebp),%esi
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        UserGate get_rdfs_info_nr
        UserGate get_rdfs_info_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetDriveInfo
#   Name       : RdosGetDriveInfo
#
#
#   Purpose....: Get drive info
#   Purpose....: Get drive info
#
#
#   Parameters.: Drive #
#   Parameters.: Drive #
#                Free units
#                Free units
#                Bytes per unit
#                Bytes per unit
#                Total units
#                Total units
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetDriveInfo
    .global RdosGetDriveInfo
RdosGetDriveInfo:
RdosGetDriveInfo:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate get_drive_info_nr
        UserGate get_drive_info_nr
        jc get_drive_info_fail
        jc get_drive_info_fail
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        movl %eax,(%ebx)
        movl %eax,(%ebx)
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        movzx %cx,%ecx
        movzx %cx,%ecx
        movl %ecx,(%ebx)
        movl %ecx,(%ebx)
        movl 20(%ebp),%ebx
        movl 20(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl $1,%eax
        movl $1,%eax
        jmp get_drive_info_done
        jmp get_drive_info_done
get_drive_info_fail:
get_drive_info_fail:
        xorl %eax,%eax
        xorl %eax,%eax
get_drive_info_done:
get_drive_info_done:
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDemandLoadDrive
#   Name       : RdosDemandLoadDrive
#
#
#   Purpose....: Demand load drive
#   Purpose....: Demand load drive
#
#
#   Parameters.: Drive #
#   Parameters.: Drive #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDemandLoadDrive
    .global RdosDemandLoadDrive
RdosDemandLoadDrive:
RdosDemandLoadDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate demand_load_drive_nr
        UserGate demand_load_drive_nr
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetDriveDiscParam
#   Name       : RdosGetDriveDiscParam
#
#
#   Purpose....: Get drive disc parameters
#   Purpose....: Get drive disc parameters
#
#
#   Parameters.: Drive #
#   Parameters.: Drive #
#                Disc #
#                Disc #
#                Start sector
#                Start sector
#                Total sectors
#                Total sectors
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetDriveDiscParam
    .global RdosGetDriveDiscParam
RdosGetDriveDiscParam:
RdosGetDriveDiscParam:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        UserGate get_drive_disc_param_nr
        UserGate get_drive_disc_param_nr
        jc get_drive_disc_param_fail
        jc get_drive_disc_param_fail
        movl 12(%ebp),%ebx
        movl 12(%ebp),%ebx
        movzx %al,%eax
        movzx %al,%eax
        movl %eax,(%ebx)
        movl %eax,(%ebx)
        movl 16(%ebp),%ebx
        movl 16(%ebp),%ebx
        movl %edx,(%ebx)
        movl %edx,(%ebx)
        movl 20(%ebp),%ebx
        movl 20(%ebp),%ebx
        movl %ecx,(%ebx)
        movl %ecx,(%ebx)
        movl $1,%eax
        movl $1,%eax
        jmp get_drive_disc_param_done
        jmp get_drive_disc_param_done
get_drive_disc_param_fail:
get_drive_disc_param_fail:
        xorl %eax,%eax
        xorl %eax,%eax
get_drive_disc_param_done:
get_drive_disc_param_done:
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFormatDrive
#   Name       : RdosFormatDrive
#
#
#   Purpose....: Format drive
#   Purpose....: Format drive
#
#
#   Parameters.: Disc #
#   Parameters.: Disc #
#                Start sector
#                Start sector
#                Sectors
#                Sectors
#                FS name
#                FS name
#
#
#   Returns....: Drive #
#   Returns....: Drive #
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFormatDrive
    .global RdosFormatDrive
RdosFormatDrive:
RdosFormatDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %edx
        pushl %edx
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        movl 16(%ebp),%ecx
        movl 16(%ebp),%ecx
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        UserGate format_drive_nr
        UserGate format_drive_nr
        jc rfdFail
        jc rfdFail
    movzx %al,%eax
    movzx %al,%eax
    jmp rfdDone
    jmp rfdDone
rfdFail:
rfdFail:
    xorl %eax,%eax
    xorl %eax,%eax
rfdDone:
rfdDone:
        popl %edi
        popl %edi
        popl %edx
        popl %edx
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetExeName
#   Name       : RdosGetExeName
#
#
#   Purpose....: Get name of executable file
#   Purpose....: Get name of executable file
#
#
#   Returns....: Exe pathname
#   Returns....: Exe pathname
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetExeName
    .global RdosGetExeName
RdosGetExeName:
RdosGetExeName:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        UserGate get_exe_name_nr
        UserGate get_exe_name_nr
        jc rgenFail
        jc rgenFail
    movl %edi,%eax
    movl %edi,%eax
    jmp rgenDone
    jmp rgenDone
rgenFail:
rgenFail:
    xorl %eax,%eax
    xorl %eax,%eax
rgenDone:
rgenDone:
        popl %edi
        popl %edi
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenAdc
#   Name       : RdosOpenAdc
#
#
#   Purpose....: Open handle to ADC channel
#   Purpose....: Open handle to ADC channel
#
#
#   Parameters.: Channel #
#   Parameters.: Channel #
#
#
#   Returns....: Adc handle
#   Returns....: Adc handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenAdc
    .global RdosOpenAdc
RdosOpenAdc:
RdosOpenAdc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate open_adc_nr
        UserGate open_adc_nr
        movw %bx,%ax
        movw %bx,%ax
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseAdc
#   Name       : RdosCloseAdc
#
#
#   Purpose....: Close ADC handle
#   Purpose....: Close ADC handle
#
#
#   Parameters.: Adc handle
#   Parameters.: Adc handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseAdc
    .global RdosCloseAdc
RdosCloseAdc:
RdosCloseAdc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate close_adc_nr
        UserGate close_adc_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDefineAdcTime
#   Name       : RdosDefineAdcTime
#
#
#   Purpose....: Define time of next conversion
#   Purpose....: Define time of next conversion
#
#
#   Parameters.: Adc handle
#   Parameters.: Adc handle
#                MSB time
#                MSB time
#                LSB time
#                LSB time
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDefineAdcTime
    .global RdosDefineAdcTime
RdosDefineAdcTime:
RdosDefineAdcTime:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edx
        pushl %edx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%edx
        movl 12(%ebp),%edx
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        UserGate define_adc_time_nr
        UserGate define_adc_time_nr
    popl %edx
    popl %edx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadAdc
#   Name       : RdosReadAdc
#
#
#   Purpose....: Read ADC
#   Purpose....: Read ADC
#
#
#   Parameters.: Adc handle
#   Parameters.: Adc handle
#
#
#   Returns....: Value
#   Returns....: Value
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadAdc
    .global RdosReadAdc
RdosReadAdc:
RdosReadAdc:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate read_adc_nr
        UserGate read_adc_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadSerialLines
#   Name       : RdosReadSerialLines
#
#
#   Purpose....: Read serial lines
#   Purpose....: Read serial lines
#
#
#   Parameters.: Device
#   Parameters.: Device
#                &Value
#                &Value
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadSerialLines
    .global RdosReadSerialLines
RdosReadSerialLines:
RdosReadSerialLines:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        UserGate read_serial_lines_nr
        UserGate read_serial_lines_nr
        jc rdsFail
        jc rdsFail
        movzx %al,%eax
        movzx %al,%eax
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl %eax,(%esi)
        movl %eax,(%esi)
        movl $1,%eax
        movl $1,%eax
        jmp rdsDone
        jmp rdsDone
rdsFail:
rdsFail:
        xorl %eax,%eax
        xorl %eax,%eax
rdsDone:
rdsDone:
        popl %esi
        popl %esi
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosToggleSerialLine
#   Name       : RdosToggleSerialLine
#
#
#   Purpose....: Toggle serial line
#   Purpose....: Toggle serial line
#
#
#   Parameters.: Device
#   Parameters.: Device
#                Line
#                Line
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosToggleSerialLine
    .global RdosToggleSerialLine
RdosToggleSerialLine:
RdosToggleSerialLine:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        UserGate toggle_serial_line_nr
        UserGate toggle_serial_line_nr
        jc rtsFail
        jc rtsFail
        movl $1,%eax
        movl $1,%eax
        jmp rtsDone
        jmp rtsDone
rtsFail:
rtsFail:
        xorl %eax,%eax
        xorl %eax,%eax
rtsDone:
rtsDone:
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadSerialVal
#   Name       : RdosReadSerialVal
#
#
#   Purpose....: Read serial value
#   Purpose....: Read serial value
#
#
#   Parameters.: Device
#   Parameters.: Device
#                Line
#                Line
#                &Val
#                &Val
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadSerialVal
    .global RdosReadSerialVal
RdosReadSerialVal:
RdosReadSerialVal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        UserGate read_serial_val_nr
        UserGate read_serial_val_nr
    pushfw
    pushfw
        shll $8,%eax
        shll $8,%eax
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movl %eax,(%esi)
        movl %eax,(%esi)
    popfw
    popfw
        jc rdvFail
        jc rdvFail
        movl $1,%eax
        movl $1,%eax
        jmp rdvDone
        jmp rdvDone
rdvFail:
rdvFail:
        xorl %eax,%eax
        xorl %eax,%eax
rdvDone:
rdvDone:
        popl %esi
        popl %esi
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteSerialVal
#   Name       : RdosWriteSerialVal
#
#
#   Purpose....: Write serial value
#   Purpose....: Write serial value
#
#
#   Parameters.: Device
#   Parameters.: Device
#                Line
#                Line
#                Val
#                Val
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteSerialVal
    .global RdosWriteSerialVal
RdosWriteSerialVal:
RdosWriteSerialVal:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        sarl $8,%eax
        sarl $8,%eax
        UserGate write_serial_val_nr
        UserGate write_serial_val_nr
        jc rwvFail
        jc rwvFail
        movl $1,%eax
        movl $1,%eax
        jmp rwvDone
        jmp rwvDone
rwvFail:
rwvFail:
        xorl %eax,%eax
        xorl %eax,%eax
rwvDone:
rwvDone:
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadSerialRaw
#   Name       : RdosReadSerialRaw
#
#
#   Purpose....: Read serial raw value
#   Purpose....: Read serial raw value
#
#
#   Parameters.: Device
#   Parameters.: Device
#                Line
#                Line
#                &Val
#                &Val
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadSerialRaw
    .global RdosReadSerialRaw
RdosReadSerialRaw:
RdosReadSerialRaw:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        pushl %esi
        pushl %esi
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        UserGate read_serial_val_nr
        UserGate read_serial_val_nr
    pushfw
    pushfw
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movl %eax,(%esi)
        movl %eax,(%esi)
    popfw
    popfw
        jc rdrFail
        jc rdrFail
        movl $1,%eax
        movl $1,%eax
        jmp rdrDone
        jmp rdrDone
rdrFail:
rdrFail:
        xorl %eax,%eax
        xorl %eax,%eax
rdrDone:
rdrDone:
        popl %esi
        popl %esi
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteSerialRaw
#   Name       : RdosWriteSerialRaw
#
#
#   Purpose....: Write serial raw value
#   Purpose....: Write serial raw value
#
#
#   Parameters.: Device
#   Parameters.: Device
#                Line
#                Line
#                Val
#                Val
#
#
#   Returns....: TRUE if ok
#   Returns....: TRUE if ok
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteSerialRaw
    .global RdosWriteSerialRaw
RdosWriteSerialRaw:
RdosWriteSerialRaw:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edx
        pushl %edx
        movb 8(%ebp),%dh
        movb 8(%ebp),%dh
        movb 12(%ebp),%dl
        movb 12(%ebp),%dl
        movl 16(%ebp),%eax
        movl 16(%ebp),%eax
        UserGate write_serial_val_nr
        UserGate write_serial_val_nr
        jc rwrFail
        jc rwrFail
        movl $1,%eax
        movl $1,%eax
        jmp rwrDone
        jmp rwrDone
rwrFail:
rwrFail:
        xorl %eax,%eax
        xorl %eax,%eax
rwrDone:
rwrDone:
        popl %edx
        popl %edx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenSysEnv
#   Name       : RdosOpenSysEnv
#
#
#   Purpose....: Open system environment
#   Purpose....: Open system environment
#
#
#   Returns....: Env handle
#   Returns....: Env handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenSysEnv
    .global RdosOpenSysEnv
RdosOpenSysEnv:
RdosOpenSysEnv:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate open_sys_env_nr
        UserGate open_sys_env_nr
        jc oseFail
        jc oseFail
        movzx %bx,%eax
        movzx %bx,%eax
        jmp oseDone
        jmp oseDone
oseFail:
oseFail:
        xorl %eax,%eax
        xorl %eax,%eax
oseDone:
oseDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenProcessEnv
#   Name       : RdosOpenProcessEnv
#
#
#   Purpose....: Open process environment
#   Purpose....: Open process environment
#
#
#   Returns....: Env handle
#   Returns....: Env handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenProcessEnv
    .global RdosOpenProcessEnv
RdosOpenProcessEnv:
RdosOpenProcessEnv:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate open_proc_env_nr
        UserGate open_proc_env_nr
        jc opeFail
        jc opeFail
        movzx %bx,%eax
        movzx %bx,%eax
        jmp opeDone
        jmp opeDone
opeFail:
opeFail:
        xorl %eax,%eax
        xorl %eax,%eax
opeDone:
opeDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseEnv
#   Name       : RdosCloseEnv
#
#
#   Purpose....: Close environment
#   Purpose....: Close environment
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseEnv
    .global RdosCloseEnv
RdosCloseEnv:
RdosCloseEnv:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate close_env_nr
        UserGate close_env_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosAddEnvVar
#   Name       : RdosAddEnvVar
#
#
#   Purpose....: Add environment variable
#   Purpose....: Add environment variable
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#                var
#                var
#                data
#                data
#
#
##########################################################################*/
##########################################################################*/
    .global RdosAddEnvVar
    .global RdosAddEnvVar
RdosAddEnvVar:
RdosAddEnvVar:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        UserGate add_env_var_nr
        UserGate add_env_var_nr
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDeleteEnvVar
#   Name       : RdosDeleteEnvVar
#
#
#   Purpose....: Delete environment variable
#   Purpose....: Delete environment variable
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#                var
#                var
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDeleteEnvVar
    .global RdosDeleteEnvVar
RdosDeleteEnvVar:
RdosDeleteEnvVar:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        UserGate delete_env_var_nr
        UserGate delete_env_var_nr
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosFindEnvVar
#   Name       : RdosFindEnvVar
#
#
#   Purpose....: Find environment variable
#   Purpose....: Find environment variable
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#                var
#                var
#                data
#                data
#
#
##########################################################################*/
##########################################################################*/
    .global RdosFindEnvVar
    .global RdosFindEnvVar
RdosFindEnvVar:
RdosFindEnvVar:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        UserGate find_env_var_nr
        UserGate find_env_var_nr
        jc fevFail
        jc fevFail
        movl $1,%eax
        movl $1,%eax
        jmp fevDone
        jmp fevDone
fevFail:
fevFail:
        xorl %eax,%eax
        xorl %eax,%eax
fevDone:
fevDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGetEnvData
#   Name       : RdosGetEnvData
#
#
#   Purpose....: Get raw environment data
#   Purpose....: Get raw environment data
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#                data
#                data
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGetEnvData
    .global RdosGetEnvData
RdosGetEnvData:
RdosGetEnvData:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate get_env_data_nr
        UserGate get_env_data_nr
        jnc gedDone
        jnc gedDone
        xorw %ax,%ax
        xorw %ax,%ax
        stosw
        stosw
gedDone:
gedDone:
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosSetEnvData
#   Name       : RdosSetEnvData
#
#
#   Purpose....: Set raw environment data
#   Purpose....: Set raw environment data
#
#
#   Parameters.: Env handle
#   Parameters.: Env handle
#                data
#                data
#
#
##########################################################################*/
##########################################################################*/
    .global RdosSetEnvData
    .global RdosSetEnvData
RdosSetEnvData:
RdosSetEnvData:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate set_env_data_nr
        UserGate set_env_data_nr
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenSysIni
#   Name       : RdosOpenSysIni
#
#
#   Purpose....: Open system ini-file
#   Purpose....: Open system ini-file
#
#
#   Returns....: Ini handle
#   Returns....: Ini handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenSysIni
    .global RdosOpenSysIni
RdosOpenSysIni:
RdosOpenSysIni:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        UserGate open_sys_ini_nr
        UserGate open_sys_ini_nr
        jc osiFail
        jc osiFail
        movzx %bx,%eax
        movzx %bx,%eax
        jmp osiDone
        jmp osiDone
osiFail:
osiFail:
        xorl %eax,%eax
        xorl %eax,%eax
osiDone:
osiDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCloseIni
#   Name       : RdosCloseIni
#
#
#   Purpose....: Close ini-file
#   Purpose....: Close ini-file
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCloseIni
    .global RdosCloseIni
RdosCloseIni:
RdosCloseIni:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate close_ini_nr
        UserGate close_ini_nr
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosGotoIniSection
#   Name       : RdosGotoIniSection
#
#
#   Purpose....: Goto ini section
#   Purpose....: Goto ini section
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#                SectionName
#                SectionName
#
#
##########################################################################*/
##########################################################################*/
    .global RdosGotoIniSection
    .global RdosGotoIniSection
RdosGotoIniSection:
RdosGotoIniSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate goto_ini_section_nr
        UserGate goto_ini_section_nr
        jc gisFail
        jc gisFail
        movl $1,%eax
        movl $1,%eax
        jmp gisDone
        jmp gisDone
gisFail:
gisFail:
        xorl %eax,%eax
        xorl %eax,%eax
gisDone:
gisDone:
        popl %edi
        popl %edi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosRemoveIniSection
#   Name       : RdosRemoveIniSection
#
#
#   Purpose....: Remove current ini section
#   Purpose....: Remove current ini section
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#
#
##########################################################################*/
##########################################################################*/
    .global RdosRemoveIniSection
    .global RdosRemoveIniSection
RdosRemoveIniSection:
RdosRemoveIniSection:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        UserGate remove_ini_section_nr
        UserGate remove_ini_section_nr
        jc risFail
        jc risFail
        movl $1,%eax
        movl $1,%eax
        jmp risDone
        jmp risDone
risFail:
risFail:
        xorl %eax,%eax
        xorl %eax,%eax
risDone:
risDone:
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosReadIni
#   Name       : RdosReadIni
#
#
#   Purpose....: Read ini var in current section
#   Purpose....: Read ini var in current section
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#                VarName
#                VarName
#                Data
#                Data
#                MaxSize
#                MaxSize
#
#
##########################################################################*/
##########################################################################*/
    .global RdosReadIni
    .global RdosReadIni
RdosReadIni:
RdosReadIni:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %ecx
        pushl %ecx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        movl 20(%ebp),%ecx
        movl 20(%ebp),%ecx
        UserGate read_ini_nr
        UserGate read_ini_nr
        jc riFail
        jc riFail
        movl $1,%eax
        movl $1,%eax
        jmp riDone
        jmp riDone
riFail:
riFail:
        xorl %eax,%eax
        xorl %eax,%eax
riDone:
riDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ecx
        popl %ecx
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosWriteIni
#   Name       : RdosWriteIni
#
#
#   Purpose....: Write ini var in current section
#   Purpose....: Write ini var in current section
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#                VarName
#                VarName
#                Data
#                Data
#
#
##########################################################################*/
##########################################################################*/
    .global RdosWriteIni
    .global RdosWriteIni
RdosWriteIni:
RdosWriteIni:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        movl 16(%ebp),%edi
        movl 16(%ebp),%edi
        UserGate write_ini_nr
        UserGate write_ini_nr
        jc wiFail
        jc wiFail
        movl $1,%eax
        movl $1,%eax
        jmp wiDone
        jmp wiDone
wiFail:
wiFail:
        xorl %eax,%eax
        xorl %eax,%eax
wiDone:
wiDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDeleteIni
#   Name       : RdosDeleteIni
#
#
#   Purpose....: Delete ini var in current section
#   Purpose....: Delete ini var in current section
#
#
#   Parameters.: Ini handle
#   Parameters.: Ini handle
#                VarName
#                VarName
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDeleteIni
    .global RdosDeleteIni
RdosDeleteIni:
RdosDeleteIni:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ebx
        pushl %ebx
        pushl %esi
        pushl %esi
        movl 8(%ebp),%ebx
        movl 8(%ebp),%ebx
        movl 12(%ebp),%esi
        movl 12(%ebp),%esi
        UserGate delete_ini_nr
        UserGate delete_ini_nr
        jc diFail
        jc diFail
        movl $1,%eax
        movl $1,%eax
        jmp diDone
        jmp diDone
diFail:
diFail:
        xorl %eax,%eax
        xorl %eax,%eax
diDone:
diDone:
        popl %esi
        popl %esi
        popl %ebx
        popl %ebx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosCreateFileDrive
#   Name       : RdosCreateFileDrive
#
#
#   Purpose....: Create a new file-drive
#   Purpose....: Create a new file-drive
#
#
#   Parameters.: Drive
#   Parameters.: Drive
#                Size
#                Size
#                FS name
#                FS name
#                Filename
#                Filename
#
#
##########################################################################*/
##########################################################################*/
    .global RdosCreateFileDrive
    .global RdosCreateFileDrive
RdosCreateFileDrive:
RdosCreateFileDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %ecx
        pushl %ecx
        pushl %esi
        pushl %esi
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%ecx
        movl 12(%ebp),%ecx
        movl 16(%ebp),%esi
        movl 16(%ebp),%esi
        movl 20(%ebp),%edi
        movl 20(%ebp),%edi
        UserGate create_file_drive_nr
        UserGate create_file_drive_nr
        jnc cfdOk
        jnc cfdOk
    xorl %eax,%eax
    xorl %eax,%eax
    jmp cfdDone
    jmp cfdDone
cfdOk:
cfdOk:
        movl $1,%eax
        movl $1,%eax
cfdDone:
cfdDone:
        popl %edi
        popl %edi
        popl %esi
        popl %esi
        popl %ecx
        popl %ecx
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosOpenFileDrive
#   Name       : RdosOpenFileDrive
#
#
#   Purpose....: Open a new file-drive
#   Purpose....: Open a new file-drive
#
#
#   Parameters.: Drive
#   Parameters.: Drive
#                Filename
#                Filename
#
#
##########################################################################*/
##########################################################################*/
    .global RdosOpenFileDrive
    .global RdosOpenFileDrive
RdosOpenFileDrive:
RdosOpenFileDrive:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        pushl %edi
        pushl %edi
        movb 8(%ebp),%al
        movb 8(%ebp),%al
        movl 12(%ebp),%edi
        movl 12(%ebp),%edi
        UserGate open_file_drive_nr
        UserGate open_file_drive_nr
        jnc ofdOk
        jnc ofdOk
        xorl %eax,%eax
        xorl %eax,%eax
        jmp ofdDone
        jmp ofdDone
ofdOk:
ofdOk:
        movl $1,%eax
        movl $1,%eax
ofdDone:
ofdDone:
        popl %edi
        popl %edi
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosEnableStatusLed
#   Name       : RdosEnableStatusLed
#
#
#   Purpose....: Enable status LED
#   Purpose....: Enable status LED
#
#
##########################################################################*/
##########################################################################*/
    .global RdosEnableStatusLed
    .global RdosEnableStatusLed
RdosEnableStatusLed:
RdosEnableStatusLed:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate enable_status_led_nr
        UserGate enable_status_led_nr
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosDisableStatusLed
#   Name       : RdosDisableStatusLed
#
#
#   Purpose....: Disable status LED
#   Purpose....: Disable status LED
#
#
##########################################################################*/
##########################################################################*/
    .global RdosDisableStatusLed
    .global RdosDisableStatusLed
RdosDisableStatusLed:
RdosDisableStatusLed:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate disable_status_led_nr
        UserGate disable_status_led_nr
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosStartWatchdog
#   Name       : RdosStartWatchdog
#
#
#   Purpose....: Start watchdog
#   Purpose....: Start watchdog
#
#
#   Parameters.: Timeout, ms
#   Parameters.: Timeout, ms
#
#
##########################################################################*/
##########################################################################*/
    .global RdosStartWatchdog
    .global RdosStartWatchdog
RdosStartWatchdog:
RdosStartWatchdog:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
;
;
        movl 8(%ebp),%eax
        movl 8(%ebp),%eax
        UserGate start_watchdog_nr
        UserGate start_watchdog_nr
;
;
    leave
    leave
    ret
    ret
/*##########################################################################
/*##########################################################################
#
#
#   Name       : RdosKickWatchdog
#   Name       : RdosKickWatchdog
#
#
#   Purpose....: Kick watchdog
#   Purpose....: Kick watchdog
#
#
##########################################################################*/
##########################################################################*/
    .global RdosKickWatchdog
    .global RdosKickWatchdog
RdosKickWatchdog:
RdosKickWatchdog:
        pushl %ebp
        pushl %ebp
        movl %esp,%ebp
        movl %esp,%ebp
        UserGate kick_watchdog_nr
        UserGate kick_watchdog_nr
    leave
    leave
    ret
    ret
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.