===============================================================================
Date:         SUN, 10 MAR 91 14:05:11 JST
From:         Hirofumi Fujii <KEIBUN@JPNKEKVM>
Subject:      Re: NEC PC9801 Kermit v3.10
To:           Joe Doupnik <JRD@usu>
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 <device/file>

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 <JRD@usu.bitnet>
Subject: Re: NEC PC9801 Kermit v3.10
To: KEIBUN@JPNKEKVM.BITNET
Message-id: <A8FF77F4541702B44F@cc.usu.edu>
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
===============================================================================
