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