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) ------------------------------