=============================================================================== Date: SUN, 10 MAR 91 14:05:11 JST From: Hirofumi Fujii Subject: Re: NEC PC9801 Kermit v3.10 To: Joe Doupnik In-Reply-To: Your message of Sat, 9 Mar 91 16:14 MDT Dear Joe, > One thing needing checking is the rewriting of the Connect mode >status line if the printing device is not ready. Printing is now done >with procedures in MSSTER.ASM so that the command SET PRINTER Oh, I have not tested printing functions ! I'll check it. Thank you. >will operate. Another area to check carefully is DFKEY in MSUP98B.ASM because >that file required significant changes. Macros TERMINALR/S etc should now >work if you can insert the detection code in the terminal emulator. Yes, I know that the MSUP98.ASM must be rewritten. There are many missing functions. --- I found more serious problems. In the case of sliding windows, many timeouts occur. I checked the routines and found the following problem. In MSSCOM.ASM, you set 1 sec wait time (timeval) before calling 'inchr'. And in 'inchr', timeout is determined by using MS-DOS 'time of day' function call as follows; : if( min_now < min_timeout ) return( EARLY ); if( min_now > min_timeout ) return( LATE ); if( sec_now < sec_timeout ) return( EARLY ); if( sec_now > sec_timeout ) return( LATE ); if( hundredth_now < hundredth_timeout ) return( EARLY ); return( LATE ); However, the time-of-day clock of NEC-PC9801 does not have hundredths of second, i.e., always zero. Therefore, in the case of NEC-PC9801 and timeval is 1 sec, it returns LATE when 'sec' of the time-of-day clock is changed, i.e., in worst case, it returns LATE (timeout) immediately. I have tried to avoid this problem within MS?P98.ASM, but I could not find any good solution. One easy way to avoid this problem is to change the above algorithm like if( hundredth_now <= hundredth_timeout ) return( EARLY ); ^ | i.e., in MSSCOM.ASM inchr4: mov ah,gettim ; compare present tod versus timeout tod int dos ; get the time of day sub ch,rptim ; hours difference, ch = (now - timeout) je inchr4b ; e = same, check mmss.s jl inchr4d ; l = we are early cmp ch,12 ; hours difference, large or small? jge inchr4d ; ge = we are early jl inchr4c ; l = we are late, say timeout inchr4b:cmp cl,rptim+1 ; minutes, hours match jb inchr4d ; b = we are early ja inchr4c ; a = we are late cmp dh,rptim+2 ; seconds, hours and minutes match jb inchr4d ; b = we are early ja inchr4c ; a = we are late cmp dl,rptim+3 ; hundredths of seconds, hhmmss match jbe inchr4d ; be = we are early ^ ^ | | In this case, timeout occures 1/100 sec after setting value if time-of-day clock have hundredths of sec. How do you think ? Hirofumi Fujii 09-March-1991 -------------------------- keibun@jpnkekvm (BITNET) =============================================================================== Date: Mon, 11 Mar 91 08:07 MDT From: Joe Doupnik Subject: Re: NEC PC9801 Kermit v3.10 To: KEIBUN@JPNKEKVM.BITNET Message-id: X-Envelope-to: KEIBUN@JPNKEKVM.BITNET X-VMS-To: IN%"KEIBUN@JPNKEKVM.BITNET" X-VMS-Cc: JRD Hirofumi, Time of day: Yes, I see the problem. And your solution is fine. My problem is the v3,10 code is frozen now (AT&T has a copy ready for dsitribution with Unix). That means for the NEC v3.10 Kermit you will need to include a replacement for file msscom.asm with the changed timeout algorithm. I will modify the algorithm in the release after this to accomodate the NEC difficulty. So, we will have a new file, MSCP98.ASM (looks about right), to replace MSSCOM.ASM. Thanks for the information, Joe D. =============================================================================== 05-April-1991 - Found bug in MSXP98.ASM . 'flowoff' and 'flowon' were not set, and no flowcontrol was applied for sending characters to the host. - Added 'pcwtst' in MSZP98.ASM to adjust the counter for 'pcwait'. the value 'pcwcnt' is set by using interval timer BIOS. - SENDBR and SENDBL are now drop the DTR almost correct interval, i.e., 275 msec and 1.8 sec respectively. - OUTCHR waits for XON for about 15 sec in 4 msec interval when XOFF received (as in IBM-PC version). -> KEK v1.21 05-APR-1991 ===============================================================================