home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
ucsdterak.tar.gz
/
ucsdterak.tar
/
ucterak.bwr
< prev
next >
Wrap
Text File
|
1984-04-11
|
6KB
|
175 lines
19-Aug-87 06:14:14-EDT,5994;000000000001
Return-Path: <SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK>
Received: from Cs.Ucl.AC.UK (TUNNEL.CS.UCL.AC.UK) by CU20B.COLUMBIA.EDU with TCP; Wed 19 Aug 87 06:13:18-EDT
Received: from vax1.central.lancaster.ac.uk by nss.Cs.Ucl.AC.UK
via Janet with NIFTP id aa04934; 19 Aug 87 11:11 BST
Date: 19-AUG-1987 11:11:20
From: SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK
To: INFO-KERMIT <@nss.cs.ucl.ac.uk:INFO-KERMIT@cu20b.columbia.edu>
Subject: Update to KERMIT for UCSD(UCT)
In the following you will find two of the pieces of UCSD pSystem Kermit
which I've altered to handle text files properly - binary file transfer is
right out because, apart from anything else, the pSystem II.0 BIOS can't
read/write binary files byte by byte correctly, so that's a non-starter.
I originally fixed the bug that the receive routines expected the sequence
'#M#J' to occur together, so a '#M' at the end of a message followed by '#J' at
the start of the next got things confused. The final fix is to totally ignore
all '#'-codes except the sequence '#M#J' (whether adjacent or not), so as to
ensure reliable text file transfer *without* confusing the filing system with
unexpected control characters.
The changes are to RECSW.TEXT and KERMIT.TEXT which are part of the
concatenated source [.UCT]UCTERAK.PAS. Diff listings for these two files are
below.
Nick Rothwell, Laboratory for Foundations of Computer Science,
University of Edinburgh.
ARPA: nick%{cstvax,itspna}.ed.ac.uk@cs.ucl.ac.uk
JANET: nick@uk.ac.ed.{cstvax,itspna}
UUCP: <Atlantic Ocean>!mcvax!ukc!{cstvax,itspna}!nick
************
File KERMIT.OLD;1
1 >>>>> KERMIT.TEXT
2 program kermit;
3
4 (* $R-*) (* turn range checking off *)
******
File KERMIT.NEW;3
1 >>>> KERMIT.TEXT
2 program kermit;
3
4 {Fixed by NICK: the receive routines ('bufemp') assumed that #M and #J
5 always occurred together, so an isolated #J would write a spurious linefeed.
6 This is fixed. We also ignore any '#' codes except the sequence #M#J.
7
8 }
9
10 (* $R-*) (* turn range checking off *)
************
************
File KERMIT.OLD;1
7 (*$U PARSELIB.CODE*)
8 USES PARSER;
9
******
File KERMIT.NEW;3
13 USES {$U PARSELIB.CODE} PARSER;
14
************
************
File KERMIT.OLD;1
94
******
File KERMIT.NEW;3
99 HaveHashM: Boolean; {NICK}
100
************
************
File KERMIT.OLD;1
429
430 (* empties a packet into a file *)
******
File KERMIT.NEW;3
435 {NICK: This procedure heavily modified}
436 (* empties a packet into a file *)
************
************
File KERMIT.OLD;1
450 if (r.i = cr) then (* else if a carriage return then *)
451 begin
452 i := i + 3; (* skip over that and line feed *)
453 (*$I-*) (* turn i/o checking off *)
454 writeln(f,s); (* and write out line to file *)
455 s := copy('',0,0); (* empty the string var *)
456 ls := 0;
457 if (io_result <> 0) then (* if io_error *)
458 begin
459 io_error(ioresult); (* tell them and *)
460 state := 'a'; (* abort *)
461 end (* if *)
462 end
463 (*$I+*) (* turn i/o checking back on *)
******
File KERMIT.NEW;3
456 if (r.i = cr) then begin
457 i := i + 1;
458 HaveHashM := True; {NICK}
459 end else if (r.i = lf) then
460 begin
461 {NICK:}
462 i := i + 1; (* skip over that ... *)
463 IF HaveHashM then begin {NICK: write line ONLY if #M#J}
464 (*$I-*) (* turn i/o checking off *)
465 writeln(f,s); (* and write out line to file *)
466 s := copy('',0,0); (* empty the string var *)
467 ls := 0;
468 if (io_result <> 0) then (* if io_error *)
469 begin
470 io_error(ioresult); (* tell them and *)
471 state := 'a'; (* abort *)
472 end (* if *)
473 end;
474 HaveHashM := False
475 end
476 else if (r.ch < ' ') then begin
477 i := i + 1; {NICK: ignore any other control}
478 HaveHashM := false
479 end
480 (*$I+*) (* turn i/o checking back on *)
************
************
File KERMIT.OLD;1
466 r.i := aand(r.i,127); (* mask off parity bit *)
******
File KERMIT.NEW;3
483 HaveHashM := false;
484 r.i := aand(r.i,127); (* mask off parity bit *)
************
************
File KERMIT.OLD;1
483 function bufill(*var buffer: packettype): integer*);
******
File KERMIT.NEW;3
501
502 function bufill(*var buffer: packettype): integer*);
************
************
File KERMIT.OLD;1
1142
******
File KERMIT.NEW;3
************
----------------------------------------------------------------
************
File RECSW.OLD;2
3
4 (* RECEIVE SECTION *)
******
File RECSW.NEW;2
3 (* RECEIVE SECTION *)
************
************
File RECSW.OLD;2
315
******
File RECSW.NEW;2
314 HaveHashM := False; {NICK: clear the #M#J state flag}
315
************
************
File RECSW.OLD;2
******
File RECSW.NEW;2
337
************
-------