Difference between revisions of "CRR"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Provide a few more details on CRR (which I wrote).)
Line 1: Line 1:
 
[[Category:CP/M]]
 
[[Category:CP/M]]
CRR, CP/M Read and Reply, was an offline reader for bulletin boards written by Paul Martin. It ran on all CP/M systems but was particularly popular with CPC-owning BBS users.
+
CRR, CP/M Read and Reply, was an offline reader for bulletin boards written by [mailto:pm@nowster.org.uk Paul Martin]. It ran on all CP/M systems but was particularly popular with CPC-owning BBS users.
  
CRR allowed you to dial up your favourite bulletin board, download all your e-mails and discussion board messages, then disconnect. You could read and reply to them at your leisure, and would only need to reconnect when you wanted to send them. It was compatible with [[FidoNet]] bulletin boards which supported certain protocols, such as XRS.
+
CRR allowed you to dial up your favourite bulletin board, download all your e-mails and discussion board messages, then disconnect. You could read and reply to them at your leisure, and would only need to reconnect when you wanted to send them. It was compatible with [[FidoNet]] bulletin boards which supported certain protocols, such as XRS and QWK.
  
 
In the author's words from 1991, describing an early version:
 
In the author's words from 1991, describing an early version:
Line 14: Line 14:
 
included), and a text editor (eg. VDE or ZDE).
 
included), and a text editor (eg. VDE or ZDE).
 
</blockquote>
 
</blockquote>
 +
 +
If you do wish to use CRR, the following Turbo Pascal program is the registration key generator:
 +
 +
<pre>
 +
Program keygenerator;
 +
 +
var crc1,crc2,p,q: integer;
 +
    b : array [0..24] of byte;
 +
    s : string[25];
 +
 +
begin
 +
writeln('Key generator');
 +
writeln;
 +
write('Enter name: ');
 +
readln(s);
 +
for p:=0 to 24 do b[p]:=32;
 +
for p:=1 to length(s) do
 +
  b[p-1]:=ord(upcase(s[p]));
 +
crc1:=0; crc2:=$ffff;
 +
for p:=0 to 24 do
 +
  begin
 +
  crc1:=crc1 xor b[p];
 +
  crc2:=crc2 xor b[24-p];
 +
  for q:=0 to 7 do
 +
    begin
 +
    if (crc1 and 1) = 0 then
 +
      crc1:=crc1 xor $9041
 +
    else
 +
      crc1:=crc1 shr 1;
 +
    if (crc2 and 1) = 0 then
 +
      crc2:=crc2 xor $9041
 +
    else
 +
      crc2:=crc2 shr 1;
 +
    end;
 +
  end;
 +
for p:=1 to 4 do
 +
  begin
 +
  write(chr(65+(crc1 and $f000) shr 12));
 +
  crc1:=crc1 shl 4;
 +
  end;
 +
for p:=1 to 4 do
 +
  begin
 +
  write(chr(65+(crc2 and $f000) shr 12));
 +
  crc2:=crc2 shl 4;
 +
  end;
 +
writeln;
 +
end.
 +
 +
</pre>

Revision as of 13:42, 12 October 2009

CRR, CP/M Read and Reply, was an offline reader for bulletin boards written by Paul Martin. It ran on all CP/M systems but was particularly popular with CPC-owning BBS users.

CRR allowed you to dial up your favourite bulletin board, download all your e-mails and discussion board messages, then disconnect. You could read and reply to them at your leisure, and would only need to reconnect when you wanted to send them. It was compatible with FidoNet bulletin boards which supported certain protocols, such as XRS and QWK.

In the author's words from 1991, describing an early version:

CRR is the CP/M offline reader for use anywhere XRS might be used on an MSDOS machine. It allows you to read and reply to downloaded messages from a conforming QBBS, RemoteAccess or SuperBBS Fidonet bulletin board. In order to use this software you will need an archiving program (eg. ARK or ARC), an archive extractor (UNZIP included), and a text editor (eg. VDE or ZDE).

If you do wish to use CRR, the following Turbo Pascal program is the registration key generator:

Program keygenerator;

var crc1,crc2,p,q: integer;
    b : array [0..24] of byte;
    s : string[25];

begin
 writeln('Key generator');
 writeln;
 write('Enter name: ');
 readln(s);
 for p:=0 to 24 do b[p]:=32;
 for p:=1 to length(s) do
  b[p-1]:=ord(upcase(s[p]));
 crc1:=0; crc2:=$ffff;
 for p:=0 to 24 do
  begin
   crc1:=crc1 xor b[p];
   crc2:=crc2 xor b[24-p];
   for q:=0 to 7 do
    begin
     if (crc1 and 1) = 0 then
      crc1:=crc1 xor $9041
     else
      crc1:=crc1 shr 1;
     if (crc2 and 1) = 0 then
      crc2:=crc2 xor $9041
     else
      crc2:=crc2 shr 1;
    end;
  end;
 for p:=1 to 4 do
  begin
   write(chr(65+(crc1 and $f000) shr 12));
   crc1:=crc1 shl 4;
  end;
 for p:=1 to 4 do
  begin
   write(chr(65+(crc2 and $f000) shr 12));
   crc2:=crc2 shl 4;
  end;
 writeln;
end.