From: Vace Kundakci <VVVCU@CUVMB.columbia.edu>
To: Frank da Cruz <fdc@cunixc.cc.columbia.edu>
Subject: Something in my rdr

Dear VVVCU AT CUVMBA

Yesterday I tried to contact OBSchou@Loughborough.Multics
on JANET, for this was the address I found in the file
CPAAA TXT on KERMSRV AT CUVMBA. I wanted to report a bug
in CP/M kermit and to ask him a question about two source
files on KERMSRV. Would you please be so kind to forward
this message below to the one who is responsible for the
files CP???? ASM on KERMSRV AT CUVMBA. Thanks a lot.

While assembling a new KERMIT 4.09 for my good old CP/M 3
computer I found a bug in the system independent part of
the KERMIT source. The routine PAUSIT in the file
CPSUTL.ASM doesn't end with a ret. As a result of this the
program enters the routine GETFIL and falls trough it every
time PAUSIT is executed: the disk drive is activated.
This ends in an error when PAUSIT is executed after a
wildcard operation.
The bug is fixed by placing a ret instruction at the end of
the PAUSIT routine.

After creating a new CPSKER.HEX it appeared, that the file
CPSKER.HEX on KERMSRV AT CUVMA used the files CPSPK1.ASM
update 12 of 1-feb-88 and CPSPK2.ASM update 5 of 1-feb-88.
The file CPSPK1.ASM on KERMSRV AT CUVMA is update 11 of
28-jul-87, whereas CPSPK2.ASM is update 4 of 27-oct-87.
Would you please be so kind to get the two files updated
on KERMSRV ON CUVMA, so I can build an updated version of
my KERMIT without the bug in CPSUTL.ASM.

Thank you in advance!               Hans Petri

WINFPET AT HDETUD1 on EARN
/Vace
------

Date: Sun, 12 Mar 89 03:22:57 EST
From: Mark W. Eichin <eichin@athena.mit.edu>
Subject: Bug report, CP/M kermit (and other notes)
Keywords: CP/M Kermit

The latest kermit from ~ftp/kermit/a/cp[sx]*.asm has a minor (but
visible) bug. In cpspk2.asm, line 341 is

	mvi	a,'$'		; dollar terminate string
	call	prtstr

(these are after the label gofi7g.)

The problem is that the '$' has to be actually moved into the string
to terminate it. Adding the line

	stax	d

between the above two solves the problem.

The bug manifests itself when doing a "receive": as soon as the remote host
sends the filename, it gets displayed on the local screen, followed by
arbitrarily large amounts of garbage (whatever code followed the filename
buffer up to the first '$', which for me tended to be about 4-5 lines of
garbage...)

On a related note: I have successfully ported kermit to TurboDOS (a CP/M-like
operating system written by Software 2000) so that it uses the "T-functions",
a set of standard extensions to CP/M, particularly a set of generic serial
routines. I have only tested it on my personal system, a custom port of
TurboDOS to the Radio Shack Model 4P, but it is likely to work on any TurboDOS
system. Are you interested in adding this to your collection? Are there any
stylistic constraints you require on submitted code? (I would like to see it
included, if only because there have been "people working on" TurboDOS
versions, according to your list, for at least 4 years now.)

Also, I have patches to the Simtel20 PD2:<UNIX-C.CPM>XASM.SHAR[12], an 8080
assembler which runs under UNIX, which add a LINK command, that enables it to
assemble the entire CP/M Kermit release. I will be submitting them to the
Simtel20 people, but I can send them to you as well if you are interested.

Thanks for providing such a good *FREE* system!

				Mark Eichin
				<eichin@athena.mit.edu>


------------------------------

. From BPA
. Postmark:30-Aug-89:09:32:15
. To MAILER
. Expires:29-Sep-89:09:31:49
. Subject: bitnet%"fdccu@cuvma"
Re:  Problems with CP/M Kermit Version 4.09

Following is a list of problems and their solutions for CP/M Kermit
Version 4.09.  Bear in mind that the latest version of CPSPK1.ASM I have is
edit (4) and of CPSPK2.ASM is edit (11).

Problem:  When the terminal is in "quiet" mode, initiation of file-transfers
        causes lots of garbage to appear on the screen which is distracting
        and which raises havoc with voice output devices.
Diagnosis:  In the module CPXCOM.ASM, the routine "prtstr" has two flavors:
        one for machines which cannot display control-characters via BDOS
        function 9 and one which can display such characters via function 9.
        In this latter case, only register pair BC is saved around the BDOS
        call.  This is insufficient as BDOS also clobbers register pairs
        DE and HL during the call.  In "quiet" mode, at least one of these
        pairs is expected to remain constant.
Solution:  Save register pairs DE and HL around the function 9 BDOS call.

Problem:  When GETting a file, the initialization routine "init" is executed
        twice.  This doesn't harm anything and may not be noticeeable in
        print but is most annoying when using voice output as "init" types
        out the Kermit version and screen initialization strings and thus
        one hears them twice.
Solution:  In the module CPSPK1.ASM, move the label "read0a" down one line
        so that the common code for the "receive" and "get" commands starts
        just *after* the call to "init" is made in "receive" mode.

Problem:  With "auto-receive" set to "off", after a RECEIVE has completed,
        Kermit waits for Console input; then looks for more data to receive
        when there is none.
Diagnosis:  In the module CPSPK1.ASM, when the status of "auto-receive" is
        checked, the wrong label is branched to if "auto-receive" is OFF.
Solution:  Change the instruction "jz read5c" to "jz read5b".

Problem:  Files whose filenames are less then 8 characters in length have
        ASCII zeros ("0") appended to them.
Diagnosis:  In the module CPSPK2.ASM, after label "gofi7b", where the status
        of "file-warning" is checked, the code for the appending of "&"
        characters to filenames if the file already exists on disk has been
        commented out and new code putting numeric suffixes on filenames
        in this case has been substituted.  In the process, the code for
        checking for a file's existence has been accidentally commented out.
        Thus, if "file-warning" is "on", *every* file is assumed to have
        a duplicate and a numeric suffix is added to each filename.  In
        addition, no warning of this is given on-screen.
Solution:  (1) Uncomment the code which checks for the existence of each file.
        (2) Uncomment the code which prints the file-warning error message
        and put a "lxi d,fnbuf" instruction between the "stax d" shown in
        CPKERM.BWR and the call to "prtstr" so that routine can print the
        filename of any file whose existence has been detected.

Problem:  In the files CPXSY2.ASM and CPXSYS.ASM, various conditionals are
        ignored.
Diagnosis:  In many places, a semicolon is followed by a form-feed which is
        immediately followed by an "IF" conditional.  My copy of LASM in-
        terprets the "<FF>IF" as a comment.
Solution:  Make the "<FF>IF" into "<FF>;<CR>IF".

With these changes, Kermit-80 performs like a champ.
Following are file comparisons showing the changes noted above.

************
File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
  418           push    b
******
File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
  418           PUSH    H
  419           PUSH    D
  420           push    b
************
************
File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
  422           ret             ; all done for good machines
******
File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
  424           POP     D
  425           POP     H
  426           ret             ; all done for good machines
************

Number of difference sections found: 2
Number of difference records found: 4

DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCO
M.DIF;1-
    DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1-
    DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1

File 1) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM]       created: 1940 26-Aug-89
File 2) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM,HP125] created: 2247 27-Aug-89

1)1     read0a: call    init            ;clear line, initialise buffers
1)              lxi     d,remnam        ;[gnn] save local name here
1)              mvi     a,cmtxt         ;[gnn]
****
2)1             call    init            ;clear line, initialise buffers
2)      read0a: lxi     d,remnam        ;[gnn] save local name here
2)              mvi     a,cmtxt         ;[gnn]
**************
1)2             jz      read5c          ; no autoreceives, so drop out
1)              lxi     d,anymes        ; load up Press any key to continue
****
2)2             jz      read5b          ; no autoreceives, so drop out
2)              lxi     d,anymes        ; load up Press any key to continue
**************

File 1) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM]       created: 0829 28-Aug-89
File 2) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM,HP125] created: 2259 27-Aug-89

1)1     ;       mvi     c,openf         ;See if the file exists.
1)      ;       lxi     d,fcb
1)      ;       call    bdos
1)      ;       cpi     0FFH            ;Does it exist?
1)      ;       jz      gofil9          ;If not create it.
1)      ;       lxi     d,infms5
1)      ;       call    error3
1)      ;       lda     temp2           ;Get the number of chars in the file nam
e.
****
2)1             mvi     c,openf         ;See if the file exists.
2)              lxi     d,fcb
2)              call    bdos
2)              cpi     0FFH            ;Does it exist?
2)              jz      gofil9          ;If not create it.
2)              lxi     d,infms5
2)              call    error3
2)      ;       lda     temp2           ;Get the number of chars in the file nam
e.
**************
1)1             call    prtstr          ; write string to console
****
2)1             lxi     d,fnbuf         ;[MF]Point to string
2)              call    prtstr          ; write string to console
**************










I may be reached on BITNET by E-mail to mailer@uwalocke with the subject-line
containing the phrase <dec10%"bpa">.
-- Mike Freeman; Bonneville Power Administration; Vancouver, Wa;
Telephone (206)690-2307 --

------------------------------

Date:     Thu, 31 Aug 89 13:07 PST
From:     <MAILER@UWALOCKE.BITNET>
Subject:  Re:  Inconsistency in CP/M Kermit Version 4.09

Problem:  Comments in the source-files indicate that the routine which
        processes the "Set Port" command, "prtset" in CPSCOM.ASM, returns
        the port value in the register pair DE for the system-dependent
        routine to process.  In fact, the value is returned in the HL
        register pair.
Solution:  Either (1) put a "xchg" instruction after the "shld port"
        instruction in "prtset" and modify all port-setting routines which
        expect the port parameter in HL, e.g., that for those systems using
        iobyte redirection, to get the value from DE (this would be, I
        suppose, philosophically correct since this would correspond to
        the way the baud-rate-setting routine handles things) or
        (2) change the comments in CPSDAT.ASM and CPXLNK.ASM to show the
        return value from "prtset" in HL and modify the "sysprt" routines
        which expect the port value in DE to get it from HL.  I chose this
        approach as it appeared that this would involve less code changes
        (the only system I saw getting port values from DE was the Lobo).
        Below are FILCOMs of the appropriate files showing these changes.

File 1) DSKE:CPSDAT.ASM[10,50,KERMIT,CPM]       created: 1925 26-Aug-89
File 2) DSKE:CPSDAT.ASM[10,50]                  created: 1202 31-Aug-89

1)4                             ; called with value from table in DE
1)      sysscr: jmp     $-$     ; screen setup for file transfer
****
2)4                             ; called with value from table in HL
2)      sysscr: jmp     $-$     ; screen setup for file transfer
**************

File 1) DSKE:CPXLNK.ASM[10,50,KERMIT,CPM]       created: 1826 26-Aug-89
File 2) DSKE:CPXLNK.ASM[10,50]                  created: 1157 31-Aug-89

1)1                             ; called with value from table in DE
1)              jmp     sysscr  ; screen setup for file transfer
****
2)1                             ; called with value from table in HL
2)              jmp     sysscr  ; screen setup for file transfer
**************

File 1) DSKE:CPXSY2.ASM[10,50,KERMIT,CPM]       created: 0743 28-Aug-89
File 2) DSKE:CPXSY2.ASM[10,50]                  created: 1210 31-Aug-89

1)4             mov     a,e             ;[hh] get the data port value and store
at
1)              sta     outmd3+1        ;[hh] the two places we use...
****
2)4             mov     a,l             ;[hh] get the data port value and store
at
2)              sta     outmd3+1        ;[hh] the two places we use...
**************
1)4             mov     a,d             ;[hh] now get the baud rate port value
1)              sta     getbd+1         ;[hh] store it in the two places we use.
..
****
2)4             mov     a,h             ;[hh] now get the baud rate port value
2)              sta     getbd+1         ;[hh] store it in the two places we use.
..
**************

E-mail replies may be sent to me via Bitnet at mailer@uwalocke.
Please place on the subject line the phrase <dec10%"bpa"> (less the angle-
brackets).
-- Mike Freeman (routing MORF); Bonneville Power Administration; P.O. Box
491; Vancouver, Wa 98666; Telephone (206)690-2307 --

------------------------------

Date: Sat, 25 Nov 89 08:16:41 pst
From: holmes@well.sf.ca.us (Tim Holmes)
To: jrd@watsun.cc.columbia.edu
Subject: Re: Kermit for Epson

The Epson PX-8, also known as the Geneva, is a CP/M 2.2 machine.  It is
a portable.  It is listed on the list of Kermit versions by machine as 
Epson Px-8; program version 4.09.  This version I have never been able
to do anything but get the machine to freeze up.  An earlier version,
4.05, basically works, but with some problems, such as handshaking
and flow control (I think).  The PX-4, better known as the HX-40, is
a similar computer with an even smaller screen.

The PX-8 version comes on the "A" tape.  By the way, I cannot get the
"Generic"  kermit versions to work on the HX-40, whereas they basically
work on the PX-8.

Thanks again.

------------------------------

Date:     Thu,  1 Mar 90 16:48 PST
From:     <MAILER@UWALOCKE>
Subject:  dec10%"BPA" originated mail follows:-
To:       fdccu@cuvma
Original_To:  JNET%"fdccu@cuvma"

. From BPA
. Postmark:26-Feb-90:09:36:20
. To MAILER
. Expires:28-Mar-90:09:35:00
. Subject: bitnet%"fdccu@cuvma"
Re:  Problem with CP/M-80 Kermit

     I have come up with a better, more general solution to the problem
involving Kermit's interpretation of characters at the beggining of the CP/M
command-line than the one I sent you a few days ago.  This more general
solution and the description of the problem/diagnosis appear below:

                                    PROBLEM

B>A:KERMIT ;SET FI B;SET BL 3;SET TER Q
Kermit-80 v4.09 configured for HP-125 Series 100

For help, type ? at any point in a command
Kermit-80   0B:>
?Ambiguous
Kermit-80   0B:>SET FI B
Kermit-80   0B:>SET BL 3
Kermit-80   0B:>SET TER Q
B>

                                   DIAGNOSIS


     CP/M begins the buffer containing the tail to the command-line with
the count of characters in the buffer, followed by the characters in the
command- tail, beginning with the space(s) immediately following the
transient program name (in this case, Kermit).  Kermit does not ignore
leading spaces when reading command input from the CP/M command-line.
Kermit therefore interprets the leading space(s) as part of the first
command to be executed, leading to the "?Ambiguous" message.


                                     SOLUTION


        Rewrite Kermit so that leading spaces in input from the CP/M
command-line are ignored.  This is done by adding code just prior to
label CMINB1 in the module CPSCMD.ASM and adding a label a few lines
following the label CMINB1 in the same module.  This gives, as a
side-effect, the advantage that a leading semicolon is not required
before the commands Kermit is to execute from the command-line, so that
a command-line like:
A>KERMIT SET FILE-MODE ASCII;SET TERMINAL QUIET;SET NO-EXIT
executes without errors.  A Vax DIFFERENCES output showing the changes
in CPSCMD.ASM follows:


************
File DISK$USER:[OGRFJMF]CPSCMD.ASM;1
  981   cminb1: lxi     h,cmccnt        ;Increment the char count.
******
File DISK$USER:[OGRFJMF]CPSCMD.ASM;2
  981           lda     takflg          ;[JMF]See if chars from file or command-
line
  982           ora     a               ;[JMF]...
  983           jz      cminb1          ;[JMF]No
  984           ani     1               ;[JMF]Yes, char from command-line?
  985           jnz     cminb1          ;[JMF]No
  986   cminb0: mvi     c,conin         ;[JMF]Yes, get a character
  987           call    bdos            ;[JMF]...
  988           cpi     40o             ;[JMF]If leading characters are spaces
  989           jz      cminb0          ;[JMF]Ignore them, else
  990           lxi     h,cmccnt        ;Increment the char count.
  991           inr     m
  992           jmp     cmin1a          ;[JMF]and proceed with command buffer
  993   cminb1: lxi     h,cmccnt        ;Increment the char count.
************
************
File DISK$USER:[OGRFJMF]CPSCMD.ASM;1
  985           lhld    cmcptr          ;Get the pointer into the buffer.
  986           mov     m,a             ;Put it in the buffer.
******
File DISK$USER:[OGRFJMF]CPSCMD.ASM;2
  997   cmin1a: lhld    cmcptr          ;Get the pointer into the buffer.
  998           mov     m,a             ;Put it in the buffer.
************

Number of difference sections found: 2
Number of difference records found: 13

DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$USER:[OGRFJMF]CPSCMD.DIF;1-
    DISK$USER:[OGRFJMF]CPSCMD.ASM;1-
    DISK$USER:[OGRFJMF]CPSCMD.ASM;2


        I can be addressed via E-mail on Bitnet at address
MAILER@UWALOCKE. Place the following as the subject of the message:
<dec10%"bpa"> (less the angle-brackets). Thanks.
Michael Freeman (Routing MORF)
Bonneville Power Administration
P.O. Box 491
Vancouver, WA 98666
Telephone (206)690-2307

------------------------------

Date: Mon, 14 May 90 10:26:54 EDT
From: rochester!ames!claris!voder!nsc!thoreau.nsc.com!rtodd@columbia.edu
  (Ron Todd)
To: fdc@watsun.cc.columbia.edu
Subject: My kermit problem( Kermit-80 to Kermit-32)

Frank, 

  I finally got my Kermit-80 (v4.09) on the Kaypro II to work with our
Kermit-32 (v3.1.066) (the problem had to do with the protocol timing out
during disk sector writes on the Kaypro).  The fix is some where in the
combination of sets I am using, I tried your suggestion of turning off the
timeouts on the mainframe.  The significant sets I am using are:

Kermit-80
  set flow on
  
Kermit-32
  set server_time 0
  set send time 0

VMS
  set term/readsync/ttsync

DEC-Server
  set session pasthru

  So far I have only tried ascii file transfer but will be testing binary 
soon, I have a feeling that that should work also.  I am mostly using the 
GET command with Kermit-32 running in server so I may not need to do the 
"set send time".  I am sure I need to use the "set session pasthru" on the 
server and probably atleast one of the "sync" options on the "set term" 
of the VMS side.  

  Thanks for your help, I'll e-mail the final minimum set to you and also 
post it to the net as a followup to help anyone else who may be running 
into the same or similar problems.  

Regards,
  Ron Todd,   K3FR

------------------------------

Subject: Kermit-80 4.09 ported to new system, bug report
From: Russell Lang <rjl@monu1.cc.monash.edu.au>
Date: Tue, 19 Jun 90 11:04:47 +1000
Sender: eln272v@monu1.cc.monash.edu.au

Frank,
   I have ported Kermit-80 4.09 to an Australian CP/M computer, 
   the Microbee.  I have created a new system dependent file 
   CPXBEE.ASM for this computer.
   I sent some mail to Bertil Schou, but he informs me that he is 
   no longer maintaining CP/M kermit.
   Could you please tell me who is currently working on CP/M Kermit?


   During the testing of kermit-80 on the Microbee, I found a bug
   in the system independent part of kermit.

Bug report for Kermit-80 4.09.

Problem:   When receiving a file with WARNING ON, kermit-80 will avoid 
   overwriting an existing file by creating a unique file name.  
   This unique file will have the attributes of the file being avoided.  
   If the created file is opened with Read-Only attribute, kermit-80 is 
   unable to write to the file, and crashes with the message:
   BDOS Err on A: File R/O

Diagnosis:  Kermit checks for the existence of a file by attempting
   to open it.  If the file exists, its directory entry is copied
   into the FCB.  Kermit then modifies the file name in the FCB
   in an attempt to find a unique name.  The name in the FCB has
   the attributes of the previously existing file, so when kermit
   eventually finds a unique name, it creates a file with the 
   attributes of the most recently opened file! 

Solution:
   Clear bit 7 (attribute bit) of all file name and type characters
   before opening/creating file.
   A Unix context diff for CPSPK2.ASM (4)  27-Oct-87  is at the
   end of this mail.


-- 
Russell Lang    Email: rjl@monu1.cc.monash.edu.au    Phone: (03) 565 3460
Department of Electrical and Computer Systems Engineering
Monash University, Australia

diff -c cpspk2.asm cpxpk2.asm.new
*** cpspk2.asm	Tue Jun 19 10:48:54 1990
--- cpspk2.asm.new	Tue Jun 19 10:52:30 1990
***************
*** 299,305
  ;
  ; Part 2) open the file (if success, then it exists)
  
! gofi7d:	lxi	d,fcb
  	mvi	c,openf
  	call	BDOS
  	inr	a		; if 0ffh returned, error (ie does not exist)

--- 299,315 -----
  ;
  ; Part 2) open the file (if success, then it exists)
  
! gofi7d:
! ;zero the attribute bits.  [rjl@monu1.cc.monash.edu.au]
! 	lxi	h,fcb+1		;[rjl]
! 	mvi	c,11		;[rjl]
! gofi7z:	mov	a,m		;[rjl]
! 	ani	07fh		;[rjl]
! 	mov	m,a		;[rjl]
! 	inx	h		;[rjl]
! 	dcr	c		;[rjl]
! 	jnz	gofi7z		;[rjl]
! 	lxi	d,fcb
  	mvi	c,openf
  	call	BDOS
  	inr	a		; if 0ffh returned, error (ie does not exist)

------------------------------