{ Patch Routine for T-Room by Matt Wing - Find/Replace Routine for editor.} { Also some Misc. Routines at the end of file. This is NOT a include file.} { You must type this in or use ^K^R in your Wordstar or Turbo Editor. } { August '86 - DST } { August '86 - DST Updated error in Replace and More trivial routines..} { Sept. '86 - DST Added the upper to lowercase routine. } { Add in Cit.Pas - Var define.. } replace_string,target_string:string[80]; { Ok, you are under the editcommand loop.. } if keyin='?' then.. {Example..} if keyin='S' then.. if keyin='R' then begin { Find/Replace Start } writeln('eplace string'); write('Enter string: '); readln(replace_string); count:=0; count1:=1; savecol:=colposition; colposition:=1; repeat begin count:=pos(replace_string,editline[count1]; count1:=count1+1; end; until (count1>=row) or (count<>0); if count<>0 then begin write('"',replace_string,'" is replaced with =-> '); readln(target_string); delete(editline[count1-1],count,length(replace_string)); insert(target_string,editline[count1-1],count);writeln; writeln(editline[count1-1]); write(' ':count-1); {These 3 lines write the } for count:=1 to length(target_string) do { ^'s that point to the } write('^'); { Correction made.. } writeln; end; if count=0 then writeln('"',replace_string,'" not found. Check spelling.'); goto editcommand; end; { replace string } { This next routine is added to Cit.Pas - Allows the user to .Goto rooms } { without having to type in the whole room. Example: .Goto news will take you to 'System News' or whatever room that has 'news' in it.. } if keyin='.' then.. if character='G'.. while count1<=15 do begin compstring:=rooma[count1]; upcaseconv(compstring); {new} if (pos(instring, compstring)>0) then {replaces 'if compstring=instring then'..} begin lastread[roompoint]:=nextmessnum-1; ... { If you add this patch, you also have to switch this routine: } procedure upcaseconv(var tranchar:word25); begin len:=length(tranchar); oustring:=''; count:=1; while count <= len do begin character:=tranchar[count]; if character in ['a'..'z'] then character:=chr(ord(character)-32_; outstring:=outstring+character; count:=count+1; end; tranchar:=oustring; end; oh yeah, and add : if room='Mail' then writeln(' ',date,' from ',username,' to ',mailname); (for user's ease..) if room<>'Mail' then writeln(' ',date,' from ',username); And one more thing: procedure pause; Add: if (chr(kbdin)='P') OR (chr(kbdin)=#$13) then .... And at the bottom: if chr(kbdin)=#$03 then stopflag:=true; if chr(kbdin)='S'... { This allows ^S and ^C (

ause and top) } AND another thing with the I/O stuff, I modified mine to I/O check only between words.. like: Procedure Dumpfile; begin... ... begin character:=copy(line,count,1) write(character); count:=count+1; if character=' ' then pause; if stopflag=true then begin... { Above might just be a nuisance } { Ok, finally figured out how to heed the english syntax for the upper to lowercase conversion. Here is the installation routine: } { Find editcommand loop under 'Enter message'.. Find the 'S'ave routine} if keyin='S' then begin writeln('aving message.'); buffercnt:=1;... ... ... count:=endpoint+3; endpoint:=count+row-1; while count> } switch(editline[buffercnt], buffercnt); { << Add } count:=count+1; buffercnt:=buffercnt+1; ... { Now, under CIT2.PAS or any other include file, insert the following procedure :} Procedure Switch(var liner: Word80; Num: integer); var counter: integer; c: char; f, caps: boolean; sw: string[80]; begin counter:=1; f:=true; while (counter<=length(liner)) and (f) do begin c:=liner[counter]; counter:=counter+1; if c in ['a'..'z'] then f:=false else f:=true end; if (f) then begin counter:=1; caps:=false; sw:=''; while counter<=length(liner) do begin c:=liner[counter]; if (num=1) and (counter=1) then { Cap 1st letter in 1st line..} caps:=true; if (c in ['.','(','?','!']) then { Any more signs I didn't think of?} caps:=true; if (c in ['A'..'Z']) and (not caps) then c:=chr(ord(c)+32); if (caps) and (c in ['A'..'Z']) then caps:=false; sw:=sw+c; counter:=counter+1; end; liner:=sw; end; end; { I originally had this in 2 separate functions and procedures, but figured I wouldn't use a 'Check_to_see_if_a_lower_case_letter_exists' procedure more than once.. If you want to maintain the modular type programming you can break 'em up.. thought I would save a little code space this way.. } - Dave T.