📄 rdos.s
字号:
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 %axrttrSaveMs: 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 RdosSyncTimeDoneRdosSyncTimeFail: xorl %eax,%eaxRdosSyncTimeDone: 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###########################################################################*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -