Known bugs and deficiencies in Kermit v4.05 (18 Feb 85) First, the bugs... (just a few): The command parsing routines do not limit or check the length of command lines or file specs, trashing what ever comes after them. Currently because of where the fcb and command buffer are located, this does not usually cause a problem, but could if an extremely long line was typed in, or in the future multiple fcbs defined elsewhere in memory were used. The D command, where supported, will drop the call, but will not terminate CONNECT mode; it should be followed by C to return to command level. This is an obscure one; I haven't verified the hypothesis yet, but it sounds good... While transferring a .LBR file, using FILE-MODE DEFAULT, a bunch of control-Z's got lost from one block in the middle. It turns out that the block in question was the last of a segment; I'm assuming that the algorithm thought it was at the end of file and suppressed the excess control-Z's. DECmate-II in IBM-mode does not see incoming handshake characters and will therefore require the user to manually type a CR for each packet. Now, the deficiencies: The Osborne Kermit doesn't support multi-sector buffering. (It shouldn't be hard to add; the difficulty was that there are some constraints imposed by bank-switching, and I'm not familiar with the memory map). Kermit should probably flush the serial line just before each packet it sends, since this is a half-duplex protocol. This would be most useful when the 8-Kbyte buffer is being written to disk; this may take longer than the typical 15-second timeout. (Kermit recovers correctly, but several extra messages can be retransmitted). Kermit needs a SET FLOW-CONTROL command, which would tell it to recognize and use XON/XOFF during CONNECT mode (file transfer too, but the restricted packet size makes this less necessary). This would help greatly for session logging, to disk and to the printer. "IBM mode" should be separated into its component parts: SET LOCAL-ECHO, SET PARITY, SET TIMER, and SET HANDSHAKE. The SET HANDSHAKE command would allow the user to specify what kind of handshaking should be done on half duplex connections (options like XON, CR, LF, ESC, BELL, NONE). SET IBM could then be implemented as a macro, except Kermit-80 doesn't support macroes. The quality of the VT52 emulation varies greatly between systems, because it relies on the micro having a sufficiently similar set of commands. None of the micros currently support the keypad, which can be critical for running editors such as DEC's EDT. For vi on Unix, getting a termcap entry for your micro will always be better than trying to use the VT52 entry. Wildcard file stepping is extremely slow. It should probably use a buffer for FCB's (16 or 32 or 64 at a time), and refill it when necessary. GET and RECEIVE commands are still synonymous (the documentation notwithstanding) (???) 8-Oct-85 12:40:19-EDT,3999;000000000001 Return-Path: Received: from ucl-cs by CU20B.ARPA with TCP; Tue 8 Oct 85 12:39:43-EDT Received: from vax1.central.lancaster.ac.uk by 44d.Cs.Ucl.AC.UK via Janet with NIFTP id a000197; 8 Oct 85 17:05 BST Date: 8-OCT-1985 16:52:37 From: SYSKERMIT%vax1.central.lancaster.ac.uk@ucl-cs.arpa To: INFO-KERMIT Subject : Bug report for KERMIT-80 Frank - A bug report on CP/M-80 KERMIT sent in by Martin J Carter of Nottingham University. Alan Phillips ---------------------------------------------------------------------------- The piece of code in cmifil() (cp4cmd.asm) which wipes clean the File Control Block (before inserting the name of your choice) manages to put a space character in the extent-number byte; this causes a British Micro Mimi 803 (which I treat as Generic CP/M with default console) to look for extent number 32 of the named file, so that (eg) ERASE cannot see a file which does exist. (I have not yet worked out why DIRECTORY works despite the above.) More perniciously, gofil() in cp4pkt.asm permits overwriting of a file which exists, even if file collision detection has been set ON. The following patches explicitly set the extent number to zero, which causes the file to be found. I've also included amendations for cp4ker.asm, to display the progress of assembly. I found this very necessary when things started blowing up on me at the end of a long assembly. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cp4cmd.asm: 23a24,30 > ; > ; Edit 5a: 7th May 85, M J Carter [majoc], Nottingham Uni > ; Code in cmifil() put one too many spaces in the FCB; this caused > ; the BDOS of the British Micro Mimi to search for extent no 32, > ; rather than extent 0, so era() always said "can't find file". > ; Putting a null at the point in question ought to fix it. > ; 60c67 < cmdver: db 'CP4CMD.ASM (5) 6-Feb-85$' ; name, edit number, date --- > cmdver: db 'CP4CMD.ASM (5a) 7 May 85$' ; name, edit number, date 464c471,472 < cpi 0CH ;Twelve? --- > ; cpi 0CH ;Twelve? > cpi 0BH ; [majoc 850507] Eleven? 465a474 > mvi m, 0 ; [majoc 850507] Specify extent zero. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cp4pkt.asm: 23a24,31 > ; edit 6a: 25th September 1985, M J Carter [majoc], Nottingham Uni > ; Code in gofil() amended, for exactly similar reasons to the > ; alteration to cmifil() in cp4cmd.asm. If there is any deep > ; reason why gofil() has to be used instead of a call to > ; comnd(cmofil), I can't see it. The bug (on a British Micro > ; Mimi 803) caused gofil() to overwrite existing files in > ; GET and RECEIVE, even with file warning SET ON. > ; 57c65 < pktver: db 'CP4PKT.ASM (6) 22-Nov-84$' ; name, edit number, date --- > pktver: db 'CP4PKT.ASM (6a) 25 Sep 85$' ; name, edit number, date 1217a1226,1227 > ; Question [majoc 850925]: why could not the filename > ; parsing have been done by comnd, like all the rest? 1231c1241,1242 < cpi 0CH ;Twelve? --- > ; cpi 0CH ;Twelve? > cpi 0BH ; [majoc 850925] Eleven? 1233c1244,1245 < gofil2: lhld datptr ;Get the NAME field. --- > mvi m, 0 ; [majoc 850925] Specify extent zero. > gofil2: lhld datptr ;Get the NAME field. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cp4ker.asm: 0a1 > .printx * CP4KER.ASM (or nearest offer) * 98a100,101 > > .printx * CP4DEF.ASM * 99a103,104 > > .printx * CP4MIT.ASM * 100a106,107 > > .printx * CP4PKT.ASM * 101a109,110 > > .printx * CP4TT.ASM * 102a112,113 > > .printx * CP4CPM.ASM * 103a115,116 > > .printx * CP4WLD.ASM * 104a118,119 > > .printx * CP4CMD.ASM * 105a121,122 > > .printx * CP4UTL.ASM * 106a124,125 > > .printx * The End * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++