CP/M Read and Reply (CRR), was an offline reader for bulletin boards written by Paul Martin. It is written in Pascal using Turbo Pascal. 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; 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.