Difference between revisions of "CRR"
PulkoMandy (Talk | contribs) |
(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 12: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.