public bufpnt, buff, chrcnt, init, ofilsz, lnout public gofil, outbuf, ptchr, gtchr, gtnfil, getfil, filbuf public encode, decode, nulref, nulr, decbuf, errpack, rptq public origr, rptct, rptval, clrfln, cxmsg, biterr, intmsg public rtpos, erpos, rppos, stpos, nppos, rprpos, nrtpos, sppos public kbpos, perpos, frpos, prtasz, prtscr, prtfn, fmtdsp public diskio, locfil, strlen, strcat, strcpy, fparse, pktsize public shosta, begtim, endtim, fsta ; statistics procedures include ccsdef.h getdate equ 2ah ; DOS get current date rptmin equ 3 ; At least 3 of same char in a row ; equates for screen positioning ;scrser equ 0009H ; place for server state display line ;scrfln equ 0116H ; Place for file name ;scrkb equ 0216H ; Place for percent transferred ;scrper equ 0316H ; Place for Kbytes transferred ;scrst equ 0416H ; Place for status ;scrnp equ 0616H ; Place for number of packets ;scrsz equ 0716h ; packet size ;scrnrt equ 0816H ; Place for number of retries ;screrr equ 0916H ; Place for error msgs. ;scrhi equ 0a16H ; Err when 8th bit is on ;scrfr equ 0a16H ; Rename file ;scrint equ 0a16H ; Acknowledge interrupt ;scrsp equ 0D00H ; Place for send packet ;scrrp equ 0F00H ; Place for receive packet ;scrrpr equ 0b00H ; Prompt when Kermit ends (does cr/lf) datas segment public 'datas' extrn data:byte, flags:byte, trans:byte, pack:byte, hierr:byte extrn filtst:byte, tloghnd:word, dosnum:byte extrn isccdos:byte ; Jun 1990 scrser dw 0209H ; place for server state display line scrfln dw 0316H ; Place for file name scrkb dw 0416H ; Place for percent transferred scrper dw 0516H ; Place for Kbytes transferred scrst dw 0616H ; Place for status scrnp dw 0816H ; Place for number of packets scrsz dw 0916h ; packet size scrnrt dw 0a16H ; Place for number of retries screrr dw 0b16H ; Place for error msgs. scrhi dw 0c16H ; Err when 8th bit is on scrfr dw 0c16H ; Rename file scrint dw 0c16H ; Acknowledge interrupt scrsp dw 0D00H ; Place for send packet scrrp dw 0F00H ; Place for receive packet scrrpr dw 1700H ; Prompt when Kermit ends (does cr/lf) outlin db 15 dup (' ') verdef db cr,lf,lf db cr,lf,' File name:' db cr,lf,' Kbytes transfered:' db cr,lf db cr,lf db cr,lf db cr,lf,' Number of packets:' db cr,lf,' Packet length:' db cr,lf,' Number of retries:' db cr,lf,' Last error:' db cr,lf,' Last message:' db cr,lf,'$' cscrser dw 0009H ; place for server state display line cscrfln dw 0116H ; Place for file name cscrkb dw 0216H ; Place for percent transferred cscrper dw 0316H ; Place for Kbytes transferred cscrst dw 0416H ; Place for status cscrnp dw 0616H ; Place for number of packets cscrsz dw 0716h ; packet size cscrnrt dw 0816H ; Place for number of retries cscrerr dw 0916H ; Place for error msgs. cscrhi dw 0a16H ; Err when 8th bit is on cscrfr dw 0a16H ; Rename file cscrint dw 0a16H ; Acknowledge interrupt cscrsp dw 0D00H ; Place for send packet cscrrp dw 0F00H ; Place for receive packet cscrrpr dw 0b00H ; Prompt when Kermit ends (does cr/lf) coutlin db cr,lf,' 文 件 名 :' db cr,lf,' 已传送的字节数(Kb):' db cr,lf db cr,lf db cr,lf db cr,lf,' 已传送的包数:' db cr,lf,' 包长:' db cr,lf,' 重发次数:' db cr,lf,' 最近一次错误:' db cr,lf,' 最近一次传送内容:' db '$' ermes4 db '?Unable to make unique name$' cermes4 db '?不能建立不同名字$' ermes9 db '?Printer not ready$' cermes9 db '? 打印机没有准备好$' erms10 db '?Unable to store all data$' cerms10 db '?不能存储所有数据$' erms11 db '?Disk full$' cerms11 db '?磁盘已满$' erms12 db '?Unable to create file $' cerms12 db '? 不能建立新文件 $' erms13 db '?Error writing file$' cerms13 db '? 写文件错误$' infms1 db 'Server mode: type Control-C to exit',cr,lf,'$' cinfms1 db ' 服 务 器 方 式 : 打入 Ctrl-C 退出',cr,lf,'$' infms5 db 'Renaming file to $' cinfms5 db '文件名改为 $' infms7 db 'File interrupt$' cinfms7 db '文件中断',cr,lf,'$' infms8 db 'File group interrupt',cr,lf,'$' cinfms8 db '文件组中断$' infms9 db 'User ',5eh,' interrupt',cr,lf,'$' cinfms9 db '用户 ',5eh,' 中断$' hibit db 'File contains 8-bit data',cr,lf,'$' chibit db '文件包含最高位数据$' asmsg db ' as $' casmsg db ' 作为 $' crlf db cr,lf,'$' printer db 'PRN',0 ; DOS special chars allowed in filenames spchar2 db '$', 26h, 23h, 40h, 21h, 25h, 27H, '(', ')', '-', 7bh, 7dh db 5fh, 5eh, 7eh, 60h spc2len equ $-spchar2 rptval db 0 ; Repeated character rptct db 1 ; Number of times it's repeated rptq db drpt ; Repeat prefix origr db drpt ; Original repeat prefix chrcnt dw 0 ; Number of chars in the file buffer outpnt dw 0 ; Position in packet bufpnt dw 0 ; Position in file buffer ofilsz dw 0 ; Double word original file size (in bytes.) dw 0 tfilsz dw 0 ; Bytes transferred dw 0 oldper dw 0 ; old percentage oldkbt dw 0 ; old KB transferred wrpmsg db 0 ; non-zero if we wrote percent message fmtdsp db 0 ; non-zero if formatted display in use ; Statistics data storage area fsta statinfo <> ; for last operation values ssta statinfo <> ; for session values sflag dw 0 ; flag for send (1) or receive (0) ; 80h = begtim started lastmsg db cr,lf,cr,lf,' Totals for the last transfer ($' clastmsg db cr,lf,cr,lf,'最近一次传送的包的总数 ($' sessmsg db cr,lf,cr,lf,' Totals since Kermit was started ($' csessmsg db cr,lf,cr,lf,'启动 Kermit 后传送包的总数 ($' pinmsg db ' sec)' db cr,lf,' Serial port characters received $' cpinmsg db ' 秒)' db cr,lf,' 串行口已接收的字符数 $' poutmsg db cr,lf,' Serial port characters sent $' cpoutmsg db cr,lf,' 串行口已发送的字符数 $' finmsg db cr,lf,' File characters received $' cfinmsg db cr,lf,' 已接收的文件字符数 $' foutmsg db cr,lf,' File characters sent $' cfoutmsg db cr,lf,' 已发送的文件字符数 $' pkimsg db cr,lf,' Packets received $' cpkimsg db cr,lf,' 已接收的数据包数 $' pkomsg db cr,lf,' Packets sent $' cpkomsg db cr,lf,' 已发送的数据包数 $' nakimsg db cr,lf,' NAKs received $' cnakimsg db cr,lf,' 已接收的 NAK 包数 $' nakomsg db cr,lf,' NAKs sent $' cnakomsg db cr,lf,' 已发送的 NAK 包数 $' baudmsg db cr,lf,' Effective baud rate $' cbaudmsg db cr,lf,' 有效波特率 $' sndmsg db 'Sent ',0 rcvmsg db 'Recv ',0 date db '00:00:00 00 Jan 1980',0 datelen equ $-date-1 atmsg db cr,lf,' at ' atlen equ $-atmsg fasmsg db ' as ' faslen equ $-fasmsg cfasmsg db '作为' cfaslen equ $-cfasmsg ; not used, Jun 1990 fsucmsg db ', completed, bytes: ',0 cfsucmsg db ', 结束 , 字节数 : ',0 fbadmsg db ', failed, bytes: ',0 cfbadmsg db ', 失败 , 字节数 : ',0 fintmsg db ', interrupted, bytes: ',0 cfintmsg db ', 中断, 字节数: ',0 months db 'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP' DB 'OCT','NOV','DEC' ;cmonth db '一月','二月','三月','四月','五月','六月','七月','八月','九月' ; DB '十月','十一月','十二月' tens dd 1,10,100,1000,10000,100000,1000000,10000000,100000000 dd 1000000000 tenslen equ ($-tens) / 4 ; number of double words in array tens ; end statistics data area onek dw 1024 onehun dw 100 sixty dw 60 ten dw 10 denom dw 0 permsg db cr,' Percent transferred:$' cpermsg db cr,' 传送百分比:$' cxzhlp db '^X cancels file, ^Z cancels batch' db ', ^E quits protocol' db ', ^C quits' db ', Return retries' db '$' ccxzhlp db ' ^X 取消文件, ^Z 取消批文件' db ', ^E 退出规程' db ', ^C 停止通信' db ', <回车> 重发 ' db '$' erword db cr,lf,'Error $' cerword db cr,lf,' 出错 $' rtword db cr,lf,'Retry $' crtword db cr,lf,'重发 $' cxzser db cr,lf,'Type Control X to cancel file, Control Z to cancel batch,' db cr,lf,' Control E to quit protocol, Control C to quit abruptly,' db cr,lf,' or Return to retry',cr,lf,'$' ccxzser db cr,lf,' 键入 Ctrl-X 取消文件 , Ctrl-Z 取消批文件 , ' db cr,lf,' Ctrl-E 退出规程 , Ctrl-C 立即停止通信 , ' db cr,lf,' 或 <回车> 重发 ',cr,lf,'$' templp db 65 dup (?) ; temp for local path part templf db 14 dup (?) ; temp for local filename part temprp db 65 dup (?) ; temp for remote path part temprf db 14 dup (?) ; temp for remote filename part locfil db 65 dup (?) ; local filename for receive and get rdbuf db 65 dup (?) ; temp work buffer diskio filest <> ; ditto, for ordinary file transfers buff db buffsz dup (?) ; Use as our Disk Transfer Area filbuf equ this byte ; make filbuf and decbuf the same address decbuf db maxpack+10 dup (?) ; For decoding incoming data (+guard) unum dw ? ; unique filename generation number havdot db ? ; dot-found status in verify prepksz dw 0 ; previous packet size toscreen db 'Screen',0 ; for transaction logging ctoscreen db ' 屏幕 ',0 datas ends