1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
|
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)
------------------------------
|