home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / bbs_ra / radu_110.arj / RADU.DOC < prev    next >
Text File  |  1991-11-21  |  147KB  |  3,507 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                   ▄▄▄▄            ▄▄▄▄▄▄▄                      
  8.                    ▄▄             ▄▄                           
  9.                    ▄▄  ▄▄▄▄▄▄     ▄▄     ▄▄▄▄▄   ▄▄▄▄▄   ▄▄▄▄▄ 
  10.                    ▄▄  ▄▄   ▄▄    ▄▄▄▄▄▄     ▄▄ ▄▄      ▄▄   ▄▄
  11.                    ▄▄  ▄▄   ▄▄    ▄▄     ▄▄▄▄▄▄  ▄▄▄▄▄  ▄▄▄▄▄▄▄
  12.                    ▄▄  ▄▄   ▄▄    ▄▄    ▄▄   ▄▄      ▄▄ ▄▄     
  13.                   ▄▄▄▄ ▄▄   ▄▄    ▄▄     ▄▄▄▄▄▄ ▄▄▄▄▄▄   ▄▄▄▄▄▄
  14.  
  15.                               P R O D U C T I O N S
  16.  
  17.  
  18.                                     Presents:
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.                       ▄▄▄▄▄▄      ▄▄▄     ▄▄▄▄▄     ▄▄   ▄▄
  33.                       ▄▄   ▄▄    ▄▄ ▄▄    ▄▄  ▄▄    ▄▄   ▄▄
  34.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  35.                       ▄▄▄▄▄▄    ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  36.                       ▄▄   ▄▄   ▄▄▄▄▄▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  37.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄  ▄▄    ▄▄   ▄▄
  38.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄▄▄▄      ▄▄▄▄▄ 
  39.  
  40.                       Remote   Access   Door   Unit   v1.10
  41.  
  42.                (c) 1990,91 by In Fase Productions, The Netherlands
  43.  
  44.                            Written and compiled using
  45.  
  46.                           Turbo pascal v5.5 and v6.0 by
  47.  
  48.                                  Richard Faasen,
  49.  
  50.                  Sysop of In Fase BBS +31-1840-10261 [2:285/311]
  51.  
  52.                             Release date: 21-Nov-1991
  53.         Page 1                  RADU v1.10 Programmer's reference manual
  54.  
  55.         ╔══════ 
  56.         ║ Table of contents
  57.         ╙───────────────────────────────────────────────────────────────
  58.  
  59.         1 Introduction  . . . . . . . . . . . . . . . . . . . . . .    2
  60.           What is RADU? . . . . . . . . . . . . . . . . . . . . . .    2
  61.           Overview of features  . . . . . . . . . . . . . . . . . .    3
  62.           About this manual . . . . . . . . . . . . . . . . . . . .    4
  63.           Distribution / installation . . . . . . . . . . . . . . .    4
  64.           Licensing . . . . . . . . . . . . . . . . . . . . . . . .    6
  65.           Support, bug reports, suggestions, etc etc  . . . . . . .    7
  66.           Legal stuff / standard disclaimer . . . . . . . . . . . .    7
  67.  
  68.         2 Quick start using RADU  . . . . . . . . . . . . . . . . .    8
  69.  
  70.         3 Complete description of RADU  . . . . . . . . . . . . . .   10
  71.           Basic "CRT" alike routine . . . . . . . . . . . . . . . .   10
  72.           Declared variables and constants  . . . . . . . . . . . .   21
  73.           Some specific door routines . . . . . . . . . . . . . . .   32
  74.           Functions specific to Remote Access . . . . . . . . . . .   37
  75.           Implementing hotkeys in your doors  . . . . . . . . . . .   44
  76.           Non-door related functions  . . . . . . . . . . . . . . .   47
  77.  
  78.         4 Advanced features of RADU . . . . . . . . . . . . . . . .   57
  79.           Direct access to the FOSSIL . . . . . . . . . . . . . . .   57
  80.           Defining sysop command keys and statuslines . . . . . . .   61
  81.             The pre-defined sysop keys. . . . . . . . . . . . . . .   64
  82.           DESQview support functions  . . . . . . . . . . . . . . .   67
  83.           Writing multi-line doors  . . . . . . . . . . . . . . . .   69
  84.           Special Write(ln) extensions  . . . . . . . . . . . . . .   74
  85.             Internal ANSI and AVATAR emulation  . . . . . . . . . .   74
  86.             Remote Access textfile codes  . . . . . . . . . . . . .   74
  87.             RADU codes  . . . . . . . . . . . . . . . . . . . . . .   75
  88.               "A" change text attribute . . . . . . . . . . . . . .   75
  89.               "B" change background color . . . . . . . . . . . . .   76
  90.               "C" center a line of text . . . . . . . . . . . . . .   76
  91.               "D" duplicate a character x times . . . . . . . . . .   77
  92.               "F" change the foreground color . . . . . . . . . . .   77
  93.               "G" change current cursor position  . . . . . . . . .   78
  94.               "H" select high intensity characters  . . . . . . . .   78
  95.               "L" select low intensity characters . . . . . . . . .   78
  96.               "X" change current cursor X position  . . . . . . . .   79
  97.               "Y" change current cursor Y position  . . . . . . . .   79
  98.  
  99.         Appendix A: Complete ASCII table  . . . . . . . . . . . . .   81
  100.  
  101.         Appendix B: Extended keyboard codes . . . . . . . . . . . .   83
  102.  
  103.         Appendix C: List of Turbo Pascal Runtime errors . . . . . .   84
  104.  
  105.         Appendix D: Remote Access textfile codes  . . . . . . . . .   86
  106.  
  107.         Index . . . . . . . . . . . . . . . . . . . . . . . . . . .   88
  108.         RADU v1.10 Programmer's reference manual                  Page 2
  109.  
  110.         ╔══════ 
  111.         ║ 1 Introduction
  112.         ╙───────────────────────────────────────────────────────────────
  113.  
  114.         Welcome  to  RADU! RADU  will be  a great  help for  you writing
  115.         Remote Access doors (external programs).  RADU supplies you with
  116.         a large number of very easy to use, and very powerful  routines,
  117.         which will surely save  you a lot of time! Well,  let's not talk
  118.         too much,  I  hope you  enjoy this  unit as  much  as I  enjoyed
  119.         writing it!
  120.  
  121.  
  122.         ╔══════ 
  123.         ║ What is RADU?
  124.         ╙───────────────────────────────────────────────────────────────
  125.  
  126.         RADU is a TPU (Turbo Pascal Unit) with all the tools you need to
  127.         make a  nice door.  With a  nice door  I  mean a  door which  is
  128.         friendly  to  users,   sysops  and  (very  important)   for  the
  129.         programmer. There  are lots  of routines,  in a  large range  of
  130.         usage, which are  very easy to use. For example  RADU offers you
  131.         routines  for  Statuslines,  HotKeys,  Paging,  FOSSIL,  UserOn,
  132.         File-sharing, DESQview support, Keyboard-idle detection, etc etc
  133.         etc. The basic capabilities of RADU are the same as the standard
  134.         Turbo  Pascal  Unit  "CRT",  which   makes  a  quick  start   to
  135.         door-programming very easy!  After reading a  few pages of  this
  136.         document you can  already write some  nice doors! Of course,  if
  137.         you want to use the more advanced routines you have to read some
  138.         more.
  139.         Page 3                  RADU v1.10 Programmer's reference manual
  140.  
  141.         ╔══════ 
  142.         ║ Overview of features
  143.         ╙───────────────────────────────────────────────────────────────
  144.  
  145.         A summary of RADU's most important features:
  146.  
  147.         ■ RADU  is "CRT" "compatible"  which makes it  possible to learn
  148.           the basic capabilities  in a few  moments! You knew the  basic
  149.           concepts  already before  you ever  heard about RADU!  Can you
  150.           imagine?
  151.         ■ ASCII, ANSI and AVATAR support. RADU  has an internal ANSI and
  152.           AVATAR emulator.  RADU will always  try to  send the  shortest
  153.           ANSI or AVATAR code as possible, for highest performance.
  154.         ■ DESQview support. There  are routines  available to make  your
  155.           program work perfectly with DESQview.
  156.         ■ Multi-line  aware.  There  are  routines  available  for  file
  157.           sharing, internode messages,  and for UserOn support  (c) 1991
  158.           by Gerhard Hoogterp.
  159.         ■ RA  alike  statuslines are  available  for information  to the
  160.           sysop.  You  have  one  statusline   available  for  your  own
  161.           statistics. (Only when registered).
  162.         ■ The sysop has RA alike sysop keys. You  can change the default
  163.           keys, and add keys yourself in an easy way!
  164.         ■ Automatic carrier, time limit and keyboard inactivity watchdog
  165.           for absolute safety. You can  create custom messages when  the
  166.           time limit almost  exceeds, or when  the user has not  touched
  167.           his keyboard for some time.
  168.         ■ Easy access to  special keys  pressed by the  user. Keys  like
  169.           cursor keys pressed by  a user can  be interpreted in a  "CRT"
  170.           alike  way.  After you've  received  a  key, you  can  see who
  171.           actually pressed that key (sysop or user).
  172.         ■ Hotkeys. Your doors  will be  very easy to  use with  hotkeys.
  173.           RADU gives you the routines to implement them.
  174.         ■ A FOSSIL is  used by RADU  for async communications. RADU  was
  175.           tested with the BNU and X00 FOSSIL.
  176.         ■ RADU accepts RA alike textfile codes in all strings you write.
  177.         ■ Doors  written  with  RADU  are   easy  to  install,  even  on
  178.           multi-line systems.
  179.         ■ Everything  possible has been done to  make RADU-doors work on
  180.           any RA version.
  181.         ■ And much, much more.
  182.         RADU v1.10 Programmer's reference manual                  Page 4
  183.  
  184.         ╔══════ 
  185.         ║ About this manual
  186.         ╙───────────────────────────────────────────────────────────────
  187.  
  188.         This document  is meant  for programmers  who are already  quite
  189.         familiar  with Turbo Pascal. It is  also very useful if you know
  190.         something about RA BBS systems,  but it's not necessary.  Almost
  191.         any routine is explained using a  simple example. I suggest that
  192.         you  print  this  manual,  and  its accompanying  file  RADU.INT
  193.         (interface part of  the unit) as reference  material. The manual
  194.         is  divided into three  parts. The first  part will  help you in
  195.         only one page to  start very quickly. The second  part describes
  196.         all  basic routines which you  will use very  often. In the last
  197.         part some special advanced features are described.
  198.  
  199.  
  200.         ╔══════ 
  201.         ║ Distribution / installation
  202.         ╙───────────────────────────────────────────────────────────────
  203.  
  204.         The    latest     version    of    RADU    will     always    be
  205.         requestable/downloadable on my  system, and will always  be sent
  206.         through  the PDN  (Programmers  Distribution  Network). You  may
  207.         distribute RADU  as much  as you like  as long as  it is  in its
  208.         original unmodified state,  and no  fee is charged  for it.  The
  209.         following  files   should  be   found  in   an  archive   called
  210.         RADU-110.ZIP (or any other compression type):
  211.  
  212.         ────────────────────────────────────────────────────────────────
  213.         CONFIG.RA     Use  this  for  testing  your  doors  from  within
  214.                       TURBO.EXE.
  215.         EXAMPLES.ZIP  Example sources, use a lot of RADU routines.
  216.         EXITINFO.BBS  Use  this  for  testing  your  doors  from  within
  217.                       TURBO.EXE.
  218.         IFP.LST       List of other In Fase Productions.
  219.         RADU.DOC      The document you're reading right now.
  220.         RADU.INT      Interface part of the unit.
  221.         RADU.NG       Norton Guide on RADU.
  222.         RADU.REG      Registration form for RADU.
  223.         RADU.T55      RADU.TPU for Turbo Pascal v5.5.
  224.         RADU.T60      RADU.TPU for Turbo Pascal v6.0.
  225.         RADUDOOR.LST  All doors currently written with RADU.
  226.         RAL.PAS       Constants for RalGet.
  227.         RASTRUCT.PAS  Type definition of all RA structures.
  228.         WHATSNEW.110  List  of changes/new  features in this  version of
  229.                       RADU.
  230.         ────────────────────────────────────────────────────────────────
  231.  
  232.         Before using RADU you  should copy the correct RADU.T??  file to
  233.         RADU.TPU in  your unit  directory. For  executing doors  written
  234.         with RADU from within the Turbo Pascal IDE, you should have  the
  235.         files CONFIG.RA and  EXITINFO.BBS in  the current directory,  or
  236.         (if  set)  in the  directory pointed  to  by the  RA environment
  237.         variable.
  238.         Page 5                  RADU v1.10 Programmer's reference manual
  239.  
  240.         NOTE: RADU  has  been  tested with  a  lot  of software/hardware
  241.               combinations, and  it seems  that RADU  is not  compatible
  242.               with the SYS60.TPU unit by Eagle Performance Software!
  243.         RADU v1.10 Programmer's reference manual                  Page 6
  244.  
  245.         ╔══════ 
  246.         ║ Licensing
  247.         ╙───────────────────────────────────────────────────────────────
  248.  
  249.         RADU is NOT free. RADU is distributed via the ShareWare concept.
  250.         After trying RADU for 30 days, you MUST register it. During this
  251.         period you may not distribute doors  written with RADU. The only
  252.         difference with the registered version is  that you will not get
  253.         the  "UNREGISTERED  VERSION"  message, and  you  can  change the
  254.         contents of the  statuslines 8  and 9. Registration  is for  the
  255.         current, and any (if any) future  versions. To register RADU you
  256.         must fill out  the form RADU.REG  and send it together  with the
  257.         registration fee to the address stated in the registration form.
  258.         In 7 to 14 days your version will be registered.
  259.  
  260.         Please be sure that you understand the following statements:
  261.  
  262.         1.  You must completely fill out the registration form, and mail
  263.             it to In Fase Productions, via Netmail or by Post.
  264.         2.  Your registered version  may not  be copied  for other  than
  265.             backup purposes.
  266.         3.  The  program is  provided "as  is"  without warranty  of any
  267.             kind.
  268.         4.  In Fase Productions is not liable for any damage directly or
  269.             indirectly caused by RADU.
  270.  
  271.         Only  when you  completely  agree with  above  statements it  is
  272.         possible to register RADU.
  273.         Page 7                  RADU v1.10 Programmer's reference manual
  274.  
  275.         ╔══════ 
  276.         ║ Support, bug reports, suggestions, etc etc
  277.         ╙───────────────────────────────────────────────────────────────
  278.  
  279.         If you need  support, have bugs  to report, or have  suggestions
  280.         for future versions of RADU, please don't hesitate and feel free
  281.         to contact me. Use one of the following addresses:
  282.  
  283.         By mail:      Richard Faasen
  284.                       Koningsweer 72
  285.                       3363 XJ  Sliedrecht
  286.                       The Netherlands
  287.  
  288.         By netmail:   Fidonet: 2:285/311
  289.                       RiftNET: 62:1000/0
  290.                       Parabelnet: 9:77/200
  291.  
  292.         On my BBS:    In Fase BBS
  293.                       +31-1840-10261, 24h/day (HST/DS V32B)
  294.  
  295.         If you've  written nice doors I'd  be pleased to see  them. Just
  296.         upload them, if  there are  enough doors I'll  make a  RADU-Door
  297.         file area on my BBS!
  298.  
  299.         Thanks in advance for your comments!
  300.  
  301.  
  302.         ╔══════ 
  303.         ║ Legal stuff / standard disclaimer
  304.         ╙───────────────────────────────────────────────────────────────
  305.  
  306.         ■ In no event  shall In Fase  Productions nor Richard Faasen  be
  307.           liable  to  you or  anyone  else  for any  damage  directly or
  308.           indirectly caused by RADU.
  309.         ■ All  units,  executables,  documents  and  example  files  are
  310.           copyrighted 1991 by  Richard Faasen  and In Fase  Productions.
  311.           You may  however share UNMODIFIED  copies of this  product, as
  312.           long as no money is charged or accepted.
  313.         ■ RADU  is  distributed under  the  user supported  software (or
  314.           shareware)  concept. That means you must register RADU after a
  315.           trial  period of 30 days.  Otherwise you are violating federal
  316.           copyright laws. I can (and will) only continue developing RADU
  317.           when enough people  will register  RADU. For more  information
  318.           about registering, please read the chapter about "Licensing".
  319.         ■ All brands and  productnames named  in this documentation  are
  320.           trademarks  or  registered   trademarks  of  there  respective
  321.           holders.
  322.         ■ RADU may not be used in a terroristic environment.
  323.         RADU v1.10 Programmer's reference manual                  Page 8
  324.  
  325.         ╔══════ 
  326.         ║ 2 Quick start using RADU
  327.         ╙───────────────────────────────────────────────────────────────
  328.  
  329.         Of course you'd like to start  immediately, well, just read this
  330.         chapter,  and  within  a  few  minutes  you  can  already  start
  331.         programming!
  332.  
  333.         In fact you  should only know one  thing for a quick  start. The
  334.         only thing you must know is how to initialize the door unit. You
  335.         already know the basic features of RADU, they are the same as in
  336.         the "CRT" unit! I suggest that you first play around  with these
  337.         basic steps,  and after a  few small programs  look at the  more
  338.         advanced routines further on in this document for more power and
  339.         flexibility of your doors.
  340.  
  341.         Well, let's start right now. I'll show you how easy it REALLY is
  342.         programming with RADU. Look at the following example:
  343.  
  344.  
  345.         Program MyFirstDoor;
  346.  
  347.         Uses
  348.           RADU;
  349.  
  350.         Var
  351.           Ch : Char;
  352.  
  353.         Begin
  354.           DorInit;                                   { Initialize RADU }
  355.  
  356.           ClrScr;
  357.           WriteLn ('Well, isn''t this amazing?');
  358.           WriteLn ('With RADU anyone can write doors!');
  359.           Write ('Well, was this easy or what?!?');
  360.           Repeat
  361.             Ch:=UpCase(ReadKey);
  362.           Until Ch in ['Y','N'];
  363.           If Ch='Y' then
  364.             WriteLn ('Yeahhh!')
  365.           Else
  366.             WriteLn ('No, just kidding!');
  367.  
  368.           Write ('Well, just press enter for the BBS');
  369.           ReadLn;
  370.         End.
  371.  
  372.  
  373.         Well, that was really easy huh?!? Well,  go ahead! Go write some
  374.         doors!
  375.         Page 9                  RADU v1.10 Programmer's reference manual
  376.  
  377.         │ DorInit                                              Procedure
  378.         └───────────────────────────────────────────────────────────────
  379.  
  380.            Function   Initialize the door unit.
  381.  
  382.         Declaration   DorInit
  383.  
  384.             Remarks   This procedure initializes the whole RADU unit. It
  385.                       reads some  important RA configuration  files, and
  386.                       initializes some global RADU variables. The FOSSIL
  387.                       will also be prepared to  do ASYNC communications.
  388.                       You  should always  call  this  procedure  at  the
  389.                       beginning  of your main  program before  any other
  390.                       call to a RADU routine.
  391.         RADU v1.10 Programmer's reference manual                 Page 10
  392.  
  393.         ╔══════ 
  394.         ║ 3 Complete description of RADU
  395.         ╙───────────────────────────────────────────────────────────────
  396.  
  397.         This chapter will  describe most of  the functions you'll  often
  398.         use while writing your doors.  The first paragraph describes the
  399.         "CRT" functions, functions which will mostly  do the same as the
  400.         corresponding  routines  in the  standard  "CRT" unit.  The main
  401.         difference  is  that  these routines  have  effect  on  both the
  402.         sysop's and the user's console.
  403.  
  404.  
  405.         ╔══════ 
  406.         ║ Basic "CRT" alike routine
  407.         ╙───────────────────────────────────────────────────────────────
  408.  
  409.         Sometimes there  are some  small differences  between the  "CRT"
  410.         routines, and the  equivalent routines found in  RADU. Therefore
  411.         all "CRT" alike routines will be discussed in this chapter.
  412.  
  413.  
  414.         │ ClrEOL                                               Procedure
  415.         └───────────────────────────────────────────────────────────────
  416.  
  417.            Function   Clears  the current line  to the end  of the line,
  418.                       starting at the current cursor position.
  419.  
  420.         Declaration   ClrEOL
  421.  
  422.             Remarks   To clear the line the space is filled  with spaces
  423.                       of the current text color.  The cursor position is
  424.                       not changed by this procedure.
  425.  
  426.             Example   GotoXY (5,12);             { Position the cursor }
  427.                       ClrEOL;           { Clear to end of current line }
  428.  
  429.  
  430.         │ ClrScr                                               Procedure
  431.         └───────────────────────────────────────────────────────────────
  432.  
  433.            Function   Fills the whole screen with  cyan spaces (color 3)
  434.                       and places the cursor at the top of the screen.
  435.  
  436.         Declaration   ClrScr
  437.  
  438.             Remarks   When  running in  multi-line mode,  this procedure
  439.                       will also check  for a  message from another  node
  440.                       just before the screen clears.
  441.  
  442.            See also   DorSendMessage
  443.  
  444.             Example   ClrScr;                 { Clear the whole screen }
  445.         Page 11                 RADU v1.10 Programmer's reference manual
  446.  
  447.         │ Delay                                                Procedure
  448.         └───────────────────────────────────────────────────────────────
  449.  
  450.            Function   Delays the specified number of milliseconds.
  451.  
  452.         Declaration   Dalay (Ms : Word)
  453.  
  454.             Remarks   RADU's delay  is DESQview aware,  it will  release
  455.                       clock ticks to other tasks.
  456.  
  457.             Example   Delay (1000);             { Delay for one second }
  458.  
  459.  
  460.         │ DelLine                                              Procedure
  461.         └───────────────────────────────────────────────────────────────
  462.  
  463.            Function   Deletes the current screen line.
  464.  
  465.         Declaration   DelLine
  466.  
  467.             Remarks   Most ANSI terminals don't  interpret the code used
  468.                       for this function.
  469.  
  470.            See also   InsLine
  471.  
  472.             Example   GotoXY (1,10);                 { Position cursor }
  473.                       DelLine;                        { Delete line 10 }
  474.         RADU v1.10 Programmer's reference manual                 Page 12
  475.  
  476.         │ GotoXY                                               Procedure
  477.         └───────────────────────────────────────────────────────────────
  478.  
  479.            Function   Position   the  cursor   on  an   absolute  screen
  480.                       position.
  481.  
  482.         Declaration   GotoXY (X,Y : Byte)
  483.  
  484.             Remarks   This procedure will always  send the shortest ANSI
  485.                       or AVATAR code possible. When the door was started
  486.                       in  ASCII  mode, this  procedure  will  attempt to
  487.                       position  the  cursor using  linefeeds, backspaces
  488.                       and spaces.
  489.  
  490.               NOTE!   Please note that this procedure will only send the
  491.                       shortest  ANSI/AVATAR  code.  The  current  cursor
  492.                       position of the LOCAL screen  is used to determine
  493.                       the shortest code. When the cursor position on the
  494.                       local screen differs from  the cursor position  on
  495.                       the remote screen,  the cursor will not  always be
  496.                       put on the correct location  on the remote screen.
  497.                       This can happen  when you write text to  the local
  498.                       screen only,  when you change the  cursor position
  499.                       on the local screen only (CRT.GotoXY), or when the
  500.                       remote screen has less display lines than 23.
  501.  
  502.             Example   GotoXY (8,4);      { Place cursor at X=8 and Y=4 }
  503.         Page 13                 RADU v1.10 Programmer's reference manual
  504.  
  505.         │ HighVideo                                            Procedure
  506.         └───────────────────────────────────────────────────────────────
  507.  
  508.            Function   Selects high intensity characters.
  509.  
  510.         Declaration   HighVideo
  511.  
  512.             Remarks   See "TextColor" for an important note.
  513.  
  514.            See also   LowVideo,  NormVideo,   TextAttr,  TextBackGround,
  515.                       TextColor
  516.  
  517.             Example   HighVideo;         { Set color to high intensity }
  518.                       WriteLn ('This tekst is highlighted!');
  519.  
  520.  
  521.         │ InsLine                                              Procedure
  522.         └───────────────────────────────────────────────────────────────
  523.  
  524.            Function   Inserts a textline on the screen.
  525.  
  526.         Declaration   InsLine
  527.  
  528.             Remarks   See "DelLine" for an important note.
  529.  
  530.            See also   DelLine
  531.  
  532.             Example   GotoXY (1,12);            { Go to position where }
  533.                       InsLine;               { a line must be inserted }
  534.         RADU v1.10 Programmer's reference manual                 Page 14
  535.  
  536.         │ KeyPressed                                            Function
  537.         └───────────────────────────────────────────────────────────────
  538.  
  539.            Function   Returns TRUE  if there  is a key  in the  keyboard
  540.                       buffer.
  541.  
  542.         Declaration   KeyPressed
  543.  
  544.         Result type   Boolean
  545.  
  546.             Remarks   RADU uses two  "keyboard" buffers internally,  one
  547.                       buffer  is for the keys pressed  by the sysop, the
  548.                       other  is   for   keys  pressed   by   the   user.
  549.                       "KeyPressed" will  check either  buffer, and  when
  550.                       one of these buffers is  not empty, it will return
  551.                       TRUE.  When a user  presses a  special key  like a
  552.                       cursor  key,  its  corresponding  ANSI  code  will
  553.                       automatically be  converted to  a normal  extended
  554.                       key code by RADU!
  555.  
  556.            See also   DorSysopKey, ReadKey
  557.  
  558.             Example   Repeat
  559.                         Write ('-',^H,'|',^H);
  560.                       Until KeyPressed;
  561.         Page 15                 RADU v1.10 Programmer's reference manual
  562.  
  563.         │ LowVideo                                             Procedure
  564.         └───────────────────────────────────────────────────────────────
  565.  
  566.            Function   Selects low intensity characters.
  567.  
  568.         Declaration   LowVideo
  569.  
  570.             Remarks   See "TextColor" for an imporant note.
  571.  
  572.            See also   HighVideo,  NormVideo,  TextAttr,  TextBackGround,
  573.                       TextColor
  574.  
  575.             Example   LowVideo;              { Change to low intensity }
  576.                       WriteLn ('This is low intensity!');
  577.  
  578.  
  579.         │ NormVideo                                            Procedure
  580.         └───────────────────────────────────────────────────────────────
  581.  
  582.            Function   Selects  the original color  read at  startup from
  583.                       the current cursor location.
  584.  
  585.         Declaration   NormVideo
  586.  
  587.             Remarks   See "TextColor" for an important note.
  588.  
  589.            See also   HighVideo,  LowVideo,   TextAttr,  TextBackGround,
  590.                       TextColor
  591.  
  592.             Example   NormVideo;                         { Reset color }
  593.                       WriteLn ('This is the original color.');
  594.  
  595.  
  596.         │ NoSound                                              Procedure
  597.         └───────────────────────────────────────────────────────────────
  598.  
  599.            Function   Turns off the internal speaker.
  600.  
  601.         Declaration   NoSound
  602.  
  603.             Remarks   Note that this  procedure is  exactly the same  as
  604.                       the one found in the standard unit "CRT".
  605.  
  606.            See also   Sound
  607.         RADU v1.10 Programmer's reference manual                 Page 16
  608.  
  609.         │ ReadKey                                               Function
  610.         └───────────────────────────────────────────────────────────────
  611.  
  612.            Function   Returns the first character found  in the keyboard
  613.                       buffer, or waits for one when the buffer is empty.
  614.  
  615.         Declaration   ReadKey
  616.  
  617.         Result type   Char
  618.  
  619.             Remarks   When the key returned by  this routine was pressed
  620.                       by  the  sysop,  the  variable  "DorSysopKey"   is
  621.                       assigned  TRUE, otherwise  it  is assigned  FALSE.
  622.                       When a user  presses a cursor key,  "ReadKey" will
  623.                       automatically convert the corresponding  ANSI code
  624.                       to a normal extended key code.
  625.  
  626.            See also   DorSysopKey, GetKey, KeyPressed
  627.  
  628.             Example   Repeat
  629.                       Until UpCase(ReadKey) in ['N','Y'];
  630.         Page 17                 RADU v1.10 Programmer's reference manual
  631.  
  632.         │ Read(ln)                                             Procedure
  633.         └───────────────────────────────────────────────────────────────
  634.  
  635.            Function   Reads one or more values from the keyboard or from
  636.                       the FOSSIL.
  637.  
  638.         Declaration   Read (V1[,V2,...,Vn])
  639.  
  640.             Remarks   This routine is the same as TP's internal Read(ln)
  641.                       procedure, except that this one will read and echo
  642.                       characters from both  the sysop's  and the  user's
  643.                       console.
  644.  
  645.             Example   Write ('Enter a string and a word ');
  646.                       ReadLn (S,W);
  647.  
  648.            See also   CrtInput
  649.  
  650.  
  651.         │ Sound                                                Procedure
  652.         └───────────────────────────────────────────────────────────────
  653.  
  654.            Function   Lets the the internal  speaker beep. This function
  655.                       will only work when paging is allowed.
  656.  
  657.         Declaration   Sound (Hz : Word)
  658.  
  659.             Remarks   When paging  is allowed this routine  simply calls
  660.                       CRT.Sound to beep the internal speaker.
  661.  
  662.            See also   DorPage,   NoSound,   RaPageStat,   RaSetPageStat,
  663.                       RaYell
  664.  
  665.             Example   Sound (1000);                  { Turn speaker on }
  666.                       Delay (100);                  { Delay one second }
  667.                       NoSound;                 { Turn speaker back off }
  668.  
  669.  
  670.         │ TextBackGround                                       Procedure
  671.         └───────────────────────────────────────────────────────────────
  672.  
  673.            Function   Changes the background color.
  674.  
  675.         Declaration   TextBackGround (Color : Byte)
  676.  
  677.             Remarks   See "TextColor" for an important note.
  678.  
  679.            See also   HighVideo,    LowVideo,    NormVideo,    TextAttr,
  680.                       TextColor
  681.  
  682.             Example   TextBackGround (Blue);{ Change the backgr. color }
  683.                       WriteLn ('The background of this text is blue');
  684.         RADU v1.10 Programmer's reference manual                 Page 18
  685.  
  686.         │ TextColor                                            Procedure
  687.         └───────────────────────────────────────────────────────────────
  688.  
  689.            Function   Changes the foreground text color.
  690.  
  691.         Declaration   TextColor (Color : Byte)
  692.  
  693.             Remarks   RADU  will  always  send  the  shortest  ANSI code
  694.                       possible. "CRT"  compatible color  types are  also
  695.                       defined in  RADU  for  use  with  "TextColor"  and
  696.                       "TextBackGround".
  697.  
  698.                       Type
  699.                         Black         = 0;
  700.                         Blue          = 1;
  701.                         Green         = 2;
  702.                         Cyan          = 3;
  703.                         Red           = 4;
  704.                         Magenta       = 5;
  705.                         Brown         = 6;
  706.                         LightGray     = 7;
  707.                         DarkGray      = 8;
  708.                         LightBlue     = 9;
  709.                         LightGreen    = 10;
  710.                         LightCyan     = 11;
  711.                         LightRed      = 12;
  712.                         LightMagenta  = 13;
  713.                         Yellow        = 14;
  714.                         White         = 15;
  715.                         Blink         = 128;
  716.  
  717.               NOTE!   This routine uses  the "CRT.TextAttr" variable  to
  718.                       determine the shortest ANSI code. This can only be
  719.                       done if you  NEVER change "CRT.TextAttr" directly,
  720.                       or if  you restore its value before  you call this
  721.                       procedure.  Otherwise it  can  happen (Read:  will
  722.                       happen) that the  colors of  the local and  remote
  723.                       screens do not match!
  724.  
  725.            See also   HighVideo,    LowVideo,    NormVideo,    TextAttr,
  726.                       TextBackGround
  727.  
  728.             Example   TextColor (2);     { Change the foreground color }
  729.                       WriteLn ('Blue foreground color.');
  730.         Page 19                 RADU v1.10 Programmer's reference manual
  731.  
  732.         │ WhereX                                                Function
  733.         └───────────────────────────────────────────────────────────────
  734.  
  735.            Function   Returns the current X location of the cursor.
  736.  
  737.         Declaration   WhereX
  738.  
  739.         Result type   Byte
  740.  
  741.             Remarks   "WhereX" will return the X  position of the cursor
  742.                       on the LOCAL screen. The position of the cursor on
  743.                       the  local  screen  can  differ  from  the  cursor
  744.                       position on the remote screen when  you've changed
  745.                       the cursor position  on the local screen  only, if
  746.                       you've written text  to the local screen  only, or
  747.                       when  the screen on  the remote  side has  more or
  748.                       less screen lines than 23.
  749.  
  750.            See also   GotoXY, WhereY
  751.  
  752.             Example   GotoXY (WhereX,10);
  753.  
  754.  
  755.         │ WhereY                                                Function
  756.         └───────────────────────────────────────────────────────────────
  757.  
  758.            Function   Returns the current Y position of the cursor.
  759.  
  760.         Declaration   WhereY
  761.  
  762.         Result type   Byte
  763.  
  764.             Remarks   See "WhereX"
  765.  
  766.            See also   GotoXY, WhereX
  767.  
  768.             Example   GotoXY (WhereX-2,WhereY+2);
  769.         RADU v1.10 Programmer's reference manual                 Page 20
  770.  
  771.         │ Window                                               Procedure
  772.         └───────────────────────────────────────────────────────────────
  773.  
  774.            Function   Does nothing
  775.  
  776.         Declaration   Window (X1,Y1,X2,Y2 : Byte)
  777.  
  778.             Remarks   This routine does nothing. It was only included to
  779.                       prevent using  the one  found in  the "CRT"  unit.
  780.                       It's not possible to make  windows using TTY, ANSI
  781.                       or AVT/0.
  782.  
  783.  
  784.         │ Write(ln)                                            Procedure
  785.         └───────────────────────────────────────────────────────────────
  786.  
  787.            Function   Writes one or more values to the screen.
  788.  
  789.         Declaration   Write (V1[,V2,...,Vn])
  790.  
  791.             Remarks   The text that you write using this routine will be
  792.                       written to both  the local  screen and the  user's
  793.                       screen. There are some _VERY_ useful extensions to
  794.                       this routine which will be discussed in a separate
  795.                       chapter.
  796.  
  797.            See also   CrtOutput
  798.  
  799.             Example   WriteLn ('1+1=',1+1);
  800.         Page 21                 RADU v1.10 Programmer's reference manual
  801.  
  802.         ╔══════ 
  803.         ║ Declared variables and constants
  804.         ╙───────────────────────────────────────────────────────────────
  805.  
  806.         In  the unit RADU some  variables and constants are predeclared.
  807.         Most of them are discussed in this chapter.
  808.  
  809.  
  810.         │ CrtInput                                              Variable
  811.         └───────────────────────────────────────────────────────────────
  812.  
  813.            Function   Text device to read characters from the keyboard.
  814.  
  815.         Declaration   CrtInput : Text
  816.  
  817.             Remarks   With  read(ln) you  can read  characters from  the
  818.                       local keyboard AND from the  keyboard of the user.
  819.                       With this text device you can read characters only
  820.                       from the local keyboard.  Please look at  "GotoXY"
  821.                       for a warning.
  822.  
  823.            See also   Read(ln)
  824.  
  825.             Example   ReadLn (CrtInput,S,W);
  826.  
  827.  
  828.         │ CrtOutput                                             Variable
  829.         └───────────────────────────────────────────────────────────────
  830.  
  831.            Function   Writes text to the local screen only.
  832.  
  833.         Declaration   CrtOutput : Text
  834.  
  835.             Remarks   With write(ln)  you can  write text  to the  local
  836.                       screen AND to the  screen of the user. If  you use
  837.                       the text  variable "CrtOutput", text  will only be
  838.                       displayed  on the  local  screen.  Please look  at
  839.                       "GotoXY" for a warning.
  840.  
  841.            See also   Write(ln)
  842.  
  843.             Example   Write (CrtOutput,'Please enter two strings ');
  844.                       ReadLn (CrtInput,S1,S2);
  845.         RADU v1.10 Programmer's reference manual                 Page 22
  846.  
  847.         │ DorAnsi                                               Variable
  848.         └───────────────────────────────────────────────────────────────
  849.  
  850.            Function   Is TRUE when the user wants ANSI codes to be sent.
  851.  
  852.         Declaration   DorAnsi : Boolean
  853.  
  854.             Remarks   This variable is initialized by "DorInit".
  855.  
  856.            See also   DorAvatar
  857.  
  858.             Example   If not DorAnsi then
  859.                       Begin
  860.                         WriteLn ('Sorry, this door requires ANSI!');
  861.                         Halt;
  862.                       End;  { If }
  863.  
  864.  
  865.         │ DorAvatar                                             Variable
  866.         └───────────────────────────────────────────────────────────────
  867.  
  868.            Function   Is TRUE  when the  user wants AVATAR  codes to  be
  869.                       sent.
  870.  
  871.         Declaration   DorAvatar : Boolean
  872.  
  873.             Remarks   This variable is initialized by "DorInit".
  874.  
  875.            See also   DorAnsi
  876.  
  877.             Example   If not (DorAnsi or DorAvatar) then
  878.                       Begin
  879.                         WriteLn ('This door requires ANSI or AVATAR!');
  880.                         Halt;
  881.                       End;  { If }
  882.         Page 23                 RADU v1.10 Programmer's reference manual
  883.  
  884.         │ DorCheckIdle                                          Variable
  885.         └───────────────────────────────────────────────────────────────
  886.  
  887.            Function   When this variable  is TRUE,  RADU will check  for
  888.                       keyboard idle timeouts.
  889.  
  890.         Declaration   DorCheckIdle : Boolean
  891.  
  892.             Remarks   This variable is assigned  TRUE by "DorInit". When
  893.                       the user has  to wait a  long time, and you  don't
  894.                       want to  check for  keyboard inactivity  timeouts,
  895.                       set this variable  to FALSE.  This is useful  when
  896.                       your door executes an external  program (such as a
  897.                       protocol).
  898.  
  899.            See also   DorTimeOut
  900.  
  901.             Example   DorCheckIdle:=FALSE;
  902.                       Dos.Exec ('DSZ.COM','RZ');
  903.                       DorCheckIdle:=TRUE;
  904.  
  905.  
  906.         │ DorCommPort                                           Variable
  907.         └───────────────────────────────────────────────────────────────
  908.  
  909.            Function   This variable contains the FOSSIL comm port.
  910.  
  911.         Declaration   DorCommPort : Byte
  912.  
  913.             Remarks   This  variable is  initialized  by "DorInit",  and
  914.                       contains the comm port used by RA on the node from
  915.                       where the door  was executed. All FOSSIL  routines
  916.                       use this comm port.
  917.  
  918.            See also   RaNodeNr
  919.         RADU v1.10 Programmer's reference manual                 Page 24
  920.  
  921.         │ DorFrozen                                             Variable
  922.         └───────────────────────────────────────────────────────────────
  923.  
  924.            Function   When  this variable is TRUE, the time the user has
  925.                       left will be frozen.
  926.  
  927.         Declaration   DorFrozen : Boolean
  928.  
  929.             Remarks   The  built-in  chatmode  automatically  sets  this
  930.                       variable  to TRUE, and restores its original value
  931.                       after ending the chatmode.
  932.  
  933.             Example   OldFrozen:=DorFrozen;
  934.                       DorFrozen:=FALSE;
  935.                       DoChat;
  936.                       DorFrozen:=OldFrozen;
  937.  
  938.  
  939.         │ DorIsLocal                                            Variable
  940.         └───────────────────────────────────────────────────────────────
  941.  
  942.            Function   "DorInit" will set  this variable to TRUE  when it
  943.                       detects that the door was executed in local mode.
  944.  
  945.         Declaration   DorIsLocal : Boolean
  946.  
  947.             Example   If DorIsLocal then
  948.                         WriteLn ('Cannot transfer files in local mode!')
  949.                       Else
  950.                         DoFileTransfer;
  951.         Page 25                 RADU v1.10 Programmer's reference manual
  952.  
  953.         │ DorMinute                                             Variable
  954.         └───────────────────────────────────────────────────────────────
  955.  
  956.            Function   Points to  a procedure  that should  be called  by
  957.                       RADU  every  time  the time  is  decreased  by one
  958.                       minute.
  959.  
  960.         Declaration   DorMinute : Procedure (TimeLeft : Word)
  961.  
  962.             Remarks   Using the "DorMinute" variable you can create your
  963.                       own  messages  that should  be displayed  when the
  964.                       user's time limit is almost exceeded.
  965.  
  966.            See also   DorTimeOut
  967.  
  968.               NOTE!   Note  that  the   function  where  "DorMinute"  is
  969.                       pointing to must be declared FAR!
  970.  
  971.             Example   Procedure DorMinuteProc (TimeLeft : Word); Far;
  972.  
  973.                       Begin { DorMinuteProc }
  974.                         Case TimeLeft of
  975.                           0    : WriteLn('Time limit exceeded!');
  976.                           1..2 : WriteLn('Only ',TimeLeft,'mins left!');
  977.                         End;  { Case }
  978.                       End;  { DorMinuteProc }
  979.  
  980.                       Begin { Main program }
  981.                         DorInit;
  982.                         DorMinute:=DorMinuteProc;
  983.                         { .... rest of program .... }
  984.                       End.  { Main program }
  985.         RADU v1.10 Programmer's reference manual                 Page 26
  986.  
  987.         │ DorPath                                               Variable
  988.         └───────────────────────────────────────────────────────────────
  989.  
  990.            Function   Contains  the  path  where  the  door  is  located
  991.                       (including trailing backslash).
  992.  
  993.         Declaration   DorPath : String80;
  994.  
  995.             Remarks   This variable is initialized by "DorInit" with the
  996.                       path to the door EXE file.
  997.  
  998.               NOTE!   Please  note that if you run  the door from within
  999.                       the  Turbo  Pascal   IDE  (Integrated   Developers
  1000.                       Environment)  while  compiling  to   memory,  this
  1001.                       variable  will   point  to  the   directory  where
  1002.                       "TURBO.EXE" is located!
  1003.  
  1004.            See also   RaSystem
  1005.  
  1006.             Example   Assign (ConfigFile,DorPath+'Config.cfg');
  1007.  
  1008.  
  1009.         │ DorStatLn                                       Typed constant
  1010.         └───────────────────────────────────────────────────────────────
  1011.  
  1012.            Function   This variable  contains the text for statuslines 8
  1013.                       and 9 (F8 and F9). 
  1014.  
  1015.         Declaration   DorStatLn : Array[8..9,1..2] of String[80] =
  1016.                         (('',''),
  1017.                          ('ALT: [C]hat [H]angup [L]ockOut .... etc',
  1018.                           #24+'-Inc Time '+#25+'-Dec Time .... etc');
  1019.  
  1020.             Remarks   Statusline 8  is  empty by  default, statusline  9
  1021.                       contains the  default sysop keys. The  first index
  1022.                       of the array is the  statusline number, the second
  1023.                       indicates whether you want to  change the upper or
  1024.                       lower part of the statusline.
  1025.  
  1026.               NOTE!   When  you  use  an unregistered  version  of RADU,
  1027.                       statusline  8 will always  contain a  message that
  1028.                       your  door  may  not be  distributed!  Only  after
  1029.                       registration these statuslines can be changed, and
  1030.                       your doors may be distributed.
  1031.  
  1032.            See also   DorStatus
  1033.  
  1034.             Example   DorStatLn[8,1]:='Top of statusline 8';
  1035.                       DorStatLn[8,2]:='Bottom of statusline 8';
  1036.         Page 27                 RADU v1.10 Programmer's reference manual
  1037.  
  1038.         │ DorSysopKey                                           Variable
  1039.         └───────────────────────────────────────────────────────────────
  1040.  
  1041.            Function   Is  TRUE when the last key returned by ReadKey was
  1042.                       pressed by the sysop,  otherwise this variable  is
  1043.                       FALSE.
  1044.  
  1045.         Declaration   DorSysopKey : Boolean
  1046.  
  1047.             Remarks   Since  every keyboard  input routine in  RADU uses
  1048.                       "ReadKey",  this  variable will  always be  set by
  1049.                       these routines. When you for  example get a hotkey
  1050.                       returned by "HotReadKey",  this variable will also
  1051.                       be TRUE when the sysop pressed that hotkey.
  1052.  
  1053.             Example   Key:=ReadKey;
  1054.                       If DorSysopKey then
  1055.                         WriteLn ('Sysop pressed ',Key)
  1056.                       Else
  1057.                         WriteLn ('User pressed ',Key);
  1058.         RADU v1.10 Programmer's reference manual                 Page 28
  1059.  
  1060.         │ DorTimeOut                                            Variable
  1061.         └───────────────────────────────────────────────────────────────
  1062.  
  1063.            Function   The procedure pointed to by  this variable will be
  1064.                       called every minute when the keyboard is idle.
  1065.  
  1066.         Declaration   DorTimeOut : Function (KeyIdle : Word) : Boolean;
  1067.  
  1068.             Remarks   You can use this option  to create custom messages
  1069.                       which  will  be  displayed when  no  key  has been
  1070.                       pressed  for  some  minutes.  There is  already  a
  1071.                       default  handler  in  RADU.  When  your   function
  1072.                       returns  TRUE,  RADU will  disconnect immediately,
  1073.                       and passes control back to the BBS.
  1074.  
  1075.            See also   DorCheckIdle, DorMinute
  1076.  
  1077.               NOTE!   Note  that  the  function  where  "DorTimeOut"  is
  1078.                       pointing to must be declared FAR!
  1079.  
  1080.             Example   Function TimeOut (KeyIdle : Word) : Boolean; Far;
  1081.  
  1082.                       Begin { TimeOut }
  1083.                         Case KeyIdle of
  1084.                           2 :WriteLn('Press any key within one minute');
  1085.                           3 :WriteLn('Keyboard inactivity timeout!');
  1086.                         End; { Case }
  1087.                         TimeOut:=(KeyIdle=3);
  1088.                       End;  { TimeOut }
  1089.  
  1090.                       Begin { Main program }
  1091.                         DorInit;
  1092.  
  1093.                         DorTimeOut:=TimeOut;
  1094.                         { .... Rest of your program .... }
  1095.                       End.  { Main program }
  1096.  
  1097.  
  1098.         │ DvActive                                              Variable
  1099.         └───────────────────────────────────────────────────────────────
  1100.  
  1101.            Function   This variable  is TRUE when DESQview  was detected
  1102.                       by "DorInit".
  1103.  
  1104.         Declaration   DvActive : Boolean
  1105.  
  1106.            See also   DvVer
  1107.  
  1108.             Example   See "DvVer" for an example
  1109.         Page 29                 RADU v1.10 Programmer's reference manual
  1110.  
  1111.         │ DvVer                                                 Variable
  1112.         └───────────────────────────────────────────────────────────────
  1113.  
  1114.            Function   Contains  the DESQview  version that  was detected
  1115.                       when "DorInit" was called.
  1116.  
  1117.         Declaration   DvVer : Word
  1118.  
  1119.             Remarks   High byte -> Major version number,
  1120.                       Low  byte -> Minor version number.
  1121.                       When  DESQview  was  not  detected, this  variable
  1122.                       contains 0.
  1123.  
  1124.            See also   DvActive
  1125.  
  1126.             Example   If DvActive then
  1127.                         WriteLn ('Running under DV v',Hi(DvVer),'.',
  1128.                                                       Lo(DvVer));
  1129.  
  1130.  
  1131.         │ DvVidSeg                                              Variable
  1132.         └───────────────────────────────────────────────────────────────
  1133.  
  1134.            Function   Contains the segment of the screen which should be
  1135.                       used when writing directly to the screen.
  1136.  
  1137.         Declaration   DvVidSeg : Word
  1138.  
  1139.             Remarks   When DESQview is active, this variable will  point
  1140.                       to the DESQview video buffer.
  1141.  
  1142.           See also    FastWrite
  1143.  
  1144.  
  1145.         │ ExitInfo                                              Variable
  1146.         └───────────────────────────────────────────────────────────────
  1147.  
  1148.            Function   Contains the contents of the file "EXITINFO.BBS".
  1149.  
  1150.         Declaration   ExitInfo : ExitInfoRecord;
  1151.  
  1152.             Remarks   The record definition "ExitInfoRecord" is found in
  1153.                       the file "RASTRUCT.PAS".  The variable  "ExitInfo"
  1154.                       is initialized by "DorInit".
  1155.  
  1156.            See also   DorInit, RaConfig
  1157.  
  1158.             Example   WriteLn ('Hi there ',ExitInfo.UserInfo.Name);
  1159.         RADU v1.10 Programmer's reference manual                 Page 30
  1160.  
  1161.         │ Language                                              Variable
  1162.         └───────────────────────────────────────────────────────────────
  1163.  
  1164.            Function   Contains a record from LANGUAGE.RA.
  1165.  
  1166.         Declaration   Language : LanguageRecord;
  1167.  
  1168.             Remarks   This variable is initialised by "DorInit". It will
  1169.                       read the  record for  the requested  language from
  1170.                       the LANGUAGE.RA file.
  1171.  
  1172.             Example   WriteLn ('Current language: ',Language.Name);
  1173.  
  1174.           See also    RalGet
  1175.  
  1176.  
  1177.         │ RaConfig                                              Variable
  1178.         └───────────────────────────────────────────────────────────────
  1179.  
  1180.            Function   Contains the contents of the file "CONFIG.RA".
  1181.  
  1182.         Declaration   RaConfig : ConfigRecord;
  1183.  
  1184.             Remarks   This variable is initialized by "DorInit".
  1185.  
  1186.            See also   DorInit, ExitInfo
  1187.  
  1188.             Example   WriteLn ('Back to ',RaConfig.SystemName);
  1189.                       Halt;
  1190.  
  1191.  
  1192.         │ RaNodeNr                                              Variable
  1193.         └───────────────────────────────────────────────────────────────
  1194.  
  1195.            Function   Contains  the node  number the  user is  currently
  1196.                       logged on to.
  1197.  
  1198.         Declaration   RaNodeNr : Byte
  1199.  
  1200.             Remarks   This variable is initialized by "DorInit".
  1201.  
  1202.            See also   DorInit
  1203.         Page 31                 RADU v1.10 Programmer's reference manual
  1204.  
  1205.         │ RaSystem                                              Variable
  1206.         └───────────────────────────────────────────────────────────────
  1207.  
  1208.            Function   Contains  the  path to  the  Remote  Access system
  1209.                       directory.
  1210.  
  1211.         Declaration   RaSystem : String
  1212.  
  1213.             Remarks   This   variable   is  initialized   by  "DorInit".
  1214.                       "DorInit"  uses the dos environment variable RA to
  1215.                       determine the system  directory. If this  variable
  1216.                       is not set, this variable will be an empty string:
  1217.                       the current directory.
  1218.  
  1219.            See also   DorInit, DorPath
  1220.  
  1221.             Example   Assign (ConfigFil,RaSystem+'Files.Ra');
  1222.  
  1223.  
  1224.         │ TextAttr                                              Variable
  1225.         └───────────────────────────────────────────────────────────────
  1226.  
  1227.            Function   Contains the current text attribute.
  1228.  
  1229.         Declaration   TextAttr : Byte
  1230.  
  1231.             Remarks   This variable  is used by RADU to send the optimal
  1232.                       (shortest) ANSI code to the user. You should NEVER
  1233.                       change   this   variable   directly,  always   via
  1234.                       "TextColor",  etc.  Otherwise RADU  gets confused,
  1235.                       resulting in wrong colors at the user side.
  1236.  
  1237.            See also   HighVideo,  LowVideo,  NormVideo,  TextBackGround,
  1238.                       TextColor
  1239.         RADU v1.10 Programmer's reference manual                 Page 32
  1240.  
  1241.         ╔══════ 
  1242.         ║ Some specific door routines
  1243.         ╙───────────────────────────────────────────────────────────────
  1244.  
  1245.         This chapter discusses  routines which are not  directly related
  1246.         to Remote Access, or anything else.
  1247.  
  1248.  
  1249.         │ CTLRead                                               Function
  1250.         └───────────────────────────────────────────────────────────────
  1251.  
  1252.            Function   Reads an entry from a CTL file.
  1253.  
  1254.         Declaration   CTRLRead  (Var  Fil  : Text;Var  Line  :  Word;Var
  1255.                       Ident,Value : String)
  1256.  
  1257.         Result type   Boolean
  1258.  
  1259.             Remarks   This routine makes it very easy  for you to read a
  1260.                       CTL  file. Some checks  are done automatically, so
  1261.                       you only have to take care about some other stuff.
  1262.  
  1263.                       Fil:    This is  a text variable, you  should open
  1264.                               the CTL file before you call "CTLRead".
  1265.                       Line:   This is the line number just read from the
  1266.                               CTL file. RADU  automatically skips  blank
  1267.                               lines, and ignores all text after a ;
  1268.                       Ident:  This is  the identifier found in  the line
  1269.                               just read from the CTL file.
  1270.                       Value:  This is the value that  is assigned to the
  1271.                               identifier.
  1272.                       Result: The function returns TRUE when  the end of
  1273.                               the file was reached (like EOF).
  1274.  
  1275.             Example   Please look at  the example included in  this RADU
  1276.                       package for an example of this routine.
  1277.  
  1278.  
  1279.         │ DorChangeTime                                        Procedure
  1280.         └───────────────────────────────────────────────────────────────
  1281.  
  1282.            Function   Changes the time the user has left for today.
  1283.  
  1284.         Declaration   DorChangeTime (Delta : Integer)
  1285.  
  1286.             Remarks   If "Delta" is  a positive value, the  time will be
  1287.                       increased, otherwise the time will be decreased.
  1288.  
  1289.             Example   DorChangeTime (10);             { Add 10 minutes }
  1290.         Page 33                 RADU v1.10 Programmer's reference manual
  1291.  
  1292.         │ DorChat                                              Procedure
  1293.         └───────────────────────────────────────────────────────────────
  1294.  
  1295.            Function   Invokes the internal chatmode.
  1296.  
  1297.         Declaration   DorChat
  1298.  
  1299.             Remarks   This  chatmode  can  normally  be  initiated  with
  1300.                       [Alt-C].
  1301.  
  1302.            See also   ChatEndStr, ChatStr, ChatSysopStr, ChatUserStr
  1303.  
  1304.             Example   DorChat;
  1305.  
  1306.  
  1307.         │ DorDisplay                                            Function
  1308.         └───────────────────────────────────────────────────────────────
  1309.  
  1310.            Function   Displays a textfile with  or without hotkeys,  and
  1311.                       with or without "more" prompting.
  1312.  
  1313.         Declaration   DorDisplay (Name,Abort : String;More : Boolean)
  1314.  
  1315.         Result type   Char
  1316.  
  1317.             Remarks   Parameters:
  1318.  
  1319.                       Name:   This is the  name of the file  to display.
  1320.                               You  don't  have  to  supply  a  path   or
  1321.                               extension.  RADU  will  try  to  open  the
  1322.                               following files in the given order:
  1323.  
  1324.                               Language.TextFiles+Name+'.AVT'  { If AVT }
  1325.                               Language.TextFiles+Name+'.ANS'  { If ANS }
  1326.                               Language.TextFiles+Name+'.ANS'
  1327.                               DorPath+Name+'.AVT'             { If AVT }
  1328.                               DorPath+Name+'.ANS'             { If ANS }
  1329.                               DorPath+Name+'.ASC'
  1330.                               DorPath+Name
  1331.                               Name+'.AVT'                     { If AVT }
  1332.                               Name+'.ANS'                     { If ANS }
  1333.                               Name+'.ASC'
  1334.                               RaConfig.TextPath+Name+'.AVT'   { If AVT }
  1335.                               RaConfig.TextPath+Name+'.ANS'   { If ANS }
  1336.                               RaConfig.TextPath+Name+'.ASC'
  1337.                               RaConfig.TextPath+Name
  1338.                               Name
  1339.  
  1340.                       Abort:  This  string  contains  letters which  the
  1341.                               user can  use to abort  displaying of  the
  1342.                               textfile.
  1343.  
  1344.                       More:   When this variable is TRUE,  there will be
  1345.                               a "more [Y/n/=]" prompt every screen  page
  1346.                               (depending   on   user's   screen   length
  1347.                               setting).
  1348.         RADU v1.10 Programmer's reference manual                 Page 34
  1349.  
  1350.  
  1351.                       Result: The result of  the function will  normally
  1352.                               be  the  the key  pressed  by the  user to
  1353.                               abort displaying of  the textfile.  Except
  1354.                               for the following codes:
  1355.  
  1356.                               #0: File   displayed    entirely   without
  1357.                                   aborting
  1358.                               #1: Error opening file
  1359.                               #2: File display aborted at "more" prompt.
  1360.  
  1361.             Example   Case Display ('INFO','Ss',TRUE) of
  1362.                         #0 : Begin
  1363.                                Write ('`h:Press enter to continue.`l:');
  1364.                                GetKey (#13);
  1365.                              End; { #0 }
  1366.                         #1 : Missing ('INFO');
  1367.                       End;  { Case }
  1368.  
  1369.  
  1370.         │ DorLineEdit                                           Function
  1371.         └───────────────────────────────────────────────────────────────
  1372.  
  1373.            Function   Reads  a  string from  the  keyboard with  editing
  1374.                       facilities.
  1375.  
  1376.         Declaration   DorLineEdit (Var S : String;Len : Byte;Legal,Abort
  1377.                       : CharSet;Pad : Char)
  1378.  
  1379.         Result type   Char
  1380.  
  1381.             Remarks   "CharSet" is a type declared in  RADU as a "Set of
  1382.                       Char".
  1383.  
  1384.                       Type
  1385.                         CharSet     = Set of Char;
  1386.  
  1387.                       Parameters:
  1388.                       S:      Source/destination  string.   The  current
  1389.                               value will be displayed, the user can edit
  1390.                               it if needed.
  1391.                       Len:    The maximum stringlength.
  1392.                       Legal:  Legal characters, characters  that may  be
  1393.                               used.
  1394.                       Abort:  Keystokes    to    end    editing.   (More
  1395.                               information below)
  1396.                       Pad:    The  character  used  for padding.  Unused
  1397.                               space  of the string  will be  padded with
  1398.                               this character on the screen.
  1399.  
  1400.                       When you call "DorLineEdit",  the current value of
  1401.                       "S" will be displayed, and  can be edited. If  the
  1402.                       first keystoke is  not a cursor movement  key, the
  1403.                       whole string  is cleared.  When a  key is  pressed
  1404.                       which is  a member of  the "Abort" set,  then that
  1405.                       key is returned as function result. The new string
  1406.         Page 35                 RADU v1.10 Programmer's reference manual
  1407.  
  1408.                       itself is returned in "S".
  1409.  
  1410.                       For editing the following keys are legal:
  1411.                       Left      Move cursor one position to the left.
  1412.                       Right     Move cursor one position to the right.
  1413.                       ^Left     Move cursor one word to the left.
  1414.                       ^Right    Move cursor one word to the right.
  1415.                       Delete    Delete character under cursor.
  1416.                       BackSpace Delete character on the left side of the
  1417.                                 cursor.
  1418.                       Insert    Toggle  insert  mode (default  is insert
  1419.                                 mode)
  1420.                       ^V        Same as Insert.
  1421.  
  1422.                       For the "Abort" parameter the following codes  are
  1423.                       supported:
  1424.                       #0    Cursor Up key.
  1425.                       #1    Cursor Down key.
  1426.                       These  codes  allow  you  to  make  a  full-screen
  1427.                       editable form.
  1428.  
  1429.               NOTE!   Not all terminal emulation software will send  the
  1430.                       (correct)  codes on  these  keys.  In these  cases
  1431.                       strange things can happen.
  1432.  
  1433.            See also   ReadKey, Read(ln)
  1434.  
  1435.             Example   For  an  example,  please  look  at  the  examples
  1436.                       included in this package.
  1437.  
  1438.  
  1439.         │ DorRefresh                                           Procedure
  1440.         └───────────────────────────────────────────────────────────────
  1441.  
  1442.            Function   Refreshes the screen, to remove line noise.
  1443.  
  1444.         Declaration   DorRefresh
  1445.  
  1446.             Remarks   I recommend that you make an option in  your doors
  1447.                       to refresh the display.
  1448.  
  1449.             Example   Case UpCase(ReadKey) of
  1450.                         'R' : DorRefresh;
  1451.                         { .... }
  1452.                       End;
  1453.         RADU v1.10 Programmer's reference manual                 Page 36
  1454.  
  1455.         │ DupWrite                                             Procedure
  1456.         └───────────────────────────────────────────────────────────────
  1457.  
  1458.            Function   Writes a single character x times to the screen.
  1459.  
  1460.         Declaration   DupWrite (Ch : Char;Times : Byte);
  1461.  
  1462.             Remarks   This procedure is extremely fast  when the user is
  1463.                       using AVATAR emulation.
  1464.  
  1465.             Example   DupWrite ('─',80);
  1466.  
  1467.  
  1468.         │ Exec                                                 Procedure
  1469.         └───────────────────────────────────────────────────────────────
  1470.  
  1471.            Function   Executes a sub-door.
  1472.  
  1473.         Declaration   Exec (Path,CmdLine : String)
  1474.  
  1475.             Remarks   This routine takes the following actions:
  1476.                       ■ Writes an EXITINFO.BBS
  1477.                       ■ Calls Dos.Exec (Path,CmdLine)
  1478.                       ■ Reads the EXITINFO.BBS
  1479.  
  1480.                       In the "CmdLine" parameter, "Exec" allowes the use
  1481.                       of the following RA-alike parameters:
  1482.  
  1483.                       *B = User's baudrate (0=local)
  1484.                       *F = User's first name
  1485.                       *G = Ansi, 0=nope, 1=yep
  1486.                       *L = User's last name
  1487.                       *N = Node number
  1488.                       *P = Port number (0=local)
  1489.                       *R = User's record number in USERS.BBS
  1490.                       *T = Time limit for current call
  1491.  
  1492.  
  1493.             Example   Exec ('SubDoor1.Exe','-b*b');
  1494.         Page 37                 RADU v1.10 Programmer's reference manual
  1495.  
  1496.         ╔══════ 
  1497.         ║ Functions specific to Remote Access
  1498.         ╙───────────────────────────────────────────────────────────────
  1499.  
  1500.         This chapter discusses  routines which  are directly related  to
  1501.         Remote Access, such as flag manipulation, paging and logging.
  1502.  
  1503.  
  1504.         │ Byte2Flags                                            Function
  1505.         └───────────────────────────────────────────────────────────────
  1506.  
  1507.            Function   Converts a byte to an RA alike flag string.
  1508.  
  1509.         Declaration   Byte2Flags (B : Byte)
  1510.  
  1511.         Result type   String
  1512.  
  1513.            See also   RaCheckFlags, RaCmpFlags, RaResetFlags, RaSetFlags
  1514.  
  1515.             Example   WriteLn (Byte2Flags(ExitInfo.UserInfo.Flags[1]));
  1516.         RADU v1.10 Programmer's reference manual                 Page 38
  1517.  
  1518.         │ DorPage                                               Function
  1519.         └───────────────────────────────────────────────────────────────
  1520.  
  1521.            Function   Plays  the melody found in the file Page.Ra in the
  1522.                       RA system directory.
  1523.  
  1524.         Declaration   DorPage (SysAbort,UsrAbort,PageFile : String)
  1525.  
  1526.         Result type   Char
  1527.  
  1528.             Remarks   "SysAbort" must contain all the keys the sysop can
  1529.                       press to  stop paging. "UsrAbort" must contain all
  1530.                       the  keys the user  can press to  stop paging. Use
  1531.                       "DorSysopKey" to check who  aborted the page. When
  1532.                       one of  the abortkeys are  pressed, "DorPage" will
  1533.                       return the  key which  was pressed.  When none  of
  1534.                       these  keys were pressed during the time specified
  1535.                       in RACONFIG  (page length), "DorPage"  will return
  1536.                       #0. By default DorPage uses PAGE.RA located in the
  1537.                       RA  system  directory.  You  can  however  use  an
  1538.                       alternate  pagetune by  passing the  full name  in
  1539.                       "PageFile". When "DorPage"  cannot open this file,
  1540.                       it uses PAGE.RA.
  1541.  
  1542.               NOTE!   "DorPage" will ALWAYS work, not only during paging
  1543.                       hours. It's your  task to check whether  paging is
  1544.                       allowed or not. You can  use the function "RaYell"
  1545.                       to  check  this.   When  "ScrollLock"  is  active,
  1546.                       "DorPage" does not make any sound.
  1547.  
  1548.            See also   RaPageStat, RaSetPageStat, RaYell
  1549.  
  1550.             Example   Case UpCase (DorPage('AaCc'+#27,' ','SONG.RA')) of
  1551.                         'C'     : DoChat;
  1552.                         'A',#27 : DoAbort;
  1553.                         #0      : DoNotAtHome;
  1554.                         ' '     : DoUsrAbort;
  1555.                       End;  { Case }
  1556.         Page 39                 RADU v1.10 Programmer's reference manual
  1557.  
  1558.         │ RaCheckFlags                                          Function
  1559.         └───────────────────────────────────────────────────────────────
  1560.  
  1561.            Function   Checks for the presence of flags.
  1562.  
  1563.         Declaration   RaCheckFlags (Fl : FlagType;Which : String)
  1564.  
  1565.         Result type   Boolean
  1566.  
  1567.             Remarks   This  function  returns TRUE  when  all the  flags
  1568.                       listed in "Which" were found in "Fl".
  1569.  
  1570.            See also   RaCmpFlags, RaResetFlags, RaSetFlags
  1571.  
  1572.             Example   Flags:=ExitInfo.UserInfo.Flags;
  1573.                       If RaCheckFlags (Flags,'A1B4') then
  1574.                         Start
  1575.                       Else
  1576.                         NoAccess;
  1577.  
  1578.  
  1579.         │ RaCmpFlags                                            Function
  1580.         └───────────────────────────────────────────────────────────────
  1581.  
  1582.            Function   Compares two sets of flags.
  1583.  
  1584.         Declaration   RaCmpFlags (FlUser,Fl : FlagType)
  1585.  
  1586.         Result type   Boolean
  1587.  
  1588.             Remarks   Only  when  all  flags  in   "Fl"  were  found  in
  1589.                       "FlUser", this function returns TRUE.
  1590.  
  1591.            See also   RaCheckFlags, RaResetFlags, RaSetFlags
  1592.  
  1593.             Example   If RaCmpFlags (ExitInfo.UserInfo.Flags,Need) then
  1594.                         Start
  1595.                       Else
  1596.                         NoAccess;
  1597.         RADU v1.10 Programmer's reference manual                 Page 40
  1598.  
  1599.         │ RaFormatDate                                          Function
  1600.         └───────────────────────────────────────────────────────────────
  1601.  
  1602.            Function   Formats a date string to the given format.
  1603.  
  1604.         Declaration   RaFormatDate (D : Date;Format : Byte)
  1605.  
  1606.         Result type   String
  1607.  
  1608.             Remarks   The parameter "D" must be in the following format:
  1609.                       MM-DD-YY. "RaFormatDate" will  return a string  in
  1610.                       one  of the  following formats,  depending  on the
  1611.                       value of "Format":
  1612.  
  1613.                       0 - Format the user wants (ExitInfo)
  1614.                       1 - DD-MM-YY
  1615.                       2 - MM-DD-YY
  1616.                       3 - DD-MM-YY
  1617.                       4 - DD-Mmm-YY
  1618.  
  1619.                       When  the given  date  is  invalid, this  function
  1620.                       returns "Invalid".
  1621.  
  1622.             Example   Write(RaFormatDate(ExitInfo.UserInfo.LastDate),0);
  1623.  
  1624.  
  1625.         │ RalGet                                                Function
  1626.         └───────────────────────────────────────────────────────────────
  1627.  
  1628.            Function   Gets an entry from the .RAL file for the requested
  1629.                       language.
  1630.  
  1631.         Declaration   RalGet (Nr : Word)
  1632.  
  1633.         Result type   String
  1634.  
  1635.             Remarks   "Nr" is the number of the  entry in the .RAL file.
  1636.                       See "RAL.PAS" for a list of  constants to use with
  1637.                       this function.
  1638.  
  1639.            See also   Language
  1640.  
  1641.             Example   WriteLn(RalGet(ralEnter));
  1642.                       GetKey(#13);
  1643.         Page 41                 RADU v1.10 Programmer's reference manual
  1644.  
  1645.         │ RaLog                                                Procedure
  1646.         └───────────────────────────────────────────────────────────────
  1647.  
  1648.            Function   Writes  an  entry  in  the  Remote  Access  system
  1649.                       logfile.
  1650.  
  1651.         Declaration   RaLog (S : String)
  1652.  
  1653.             Remarks   "RaLog" uses  the logfile,  and logfile  format as
  1654.                       specified in "RaConfig".
  1655.  
  1656.             Example   RaLog ('User left timebank.');
  1657.  
  1658.  
  1659.         │ RaPageStat                                            Function
  1660.         └───────────────────────────────────────────────────────────────
  1661.  
  1662.            Function   Returns the page status [Alt-O].
  1663.  
  1664.         Declaration   RaPageStat
  1665.  
  1666.         Result type   Byte
  1667.  
  1668.             Remarks   This function  returns the  page  status, that  is
  1669.                       whether paging is  allowed or not, or  only during
  1670.                       paging  hours. The  sysop can  change  this status
  1671.                       with  [Alt-O] (override  paging).  There are  some
  1672.                       constants declared in RADU to use this function:
  1673.  
  1674.                       Const
  1675.                         PagingHours   = 1;
  1676.                         PagingOff     = 2;
  1677.                         PagingOn      = 3;
  1678.  
  1679.            See also   DorPage, RaSetPageStat, RaYell
  1680.         RADU v1.10 Programmer's reference manual                 Page 42
  1681.  
  1682.         │ RaResetFlags                                         Procedure
  1683.         └───────────────────────────────────────────────────────────────
  1684.  
  1685.            Function   Sets the specified flags to OFF.
  1686.  
  1687.         Declaration   RaResetFlags (Var Fl : FlagType;Which : String)
  1688.  
  1689.             Remarks   All the flags listed in "Which"  are set to OFF in
  1690.                       "Fl".
  1691.  
  1692.            See also   RaCheckFlags, RaCmpFlags, RaSetFlags
  1693.  
  1694.             Example   RaResetFlags (ExitInfo.UserInfo.Flags,'B2C2D1');
  1695.  
  1696.  
  1697.         │ RaSetFlags                                           Procedure
  1698.         └───────────────────────────────────────────────────────────────
  1699.  
  1700.            Function   Sets the specified flags to ON.
  1701.  
  1702.         Declaration   RaSetFlags (Var Fl : FlagType;Which : String)
  1703.  
  1704.             Remarks   All the flags listed  in "Which" are set to  ON in
  1705.                       "Fl".
  1706.  
  1707.            See also   RaCheckFlags, RaCmpFlags, RaResetFlags
  1708.  
  1709.             Example   RaSetFlags (ExitInfo.UserInfo.Flags,'A5D2B7');
  1710.  
  1711.  
  1712.         │ RaSetPageStat                                        Procedure
  1713.         └───────────────────────────────────────────────────────────────
  1714.  
  1715.            Function   Sets the page status.
  1716.  
  1717.         Declaration   RaSetPageStat (Status : Byte)
  1718.  
  1719.             Remarks   Please look at "RaPageStat" for more information.
  1720.  
  1721.            See also   DorPage, RaPageStat, RaYell
  1722.  
  1723.             Example   RaSetPageStat (PagingHours)
  1724.         Page 43                 RADU v1.10 Programmer's reference manual
  1725.  
  1726.         │ RaSetSecurity                                        Procedure
  1727.         └───────────────────────────────────────────────────────────────
  1728.  
  1729.            Function   Changes the security  level of the user  currently
  1730.                       using this door.
  1731.  
  1732.         Declaration   RaSetSecurity (NewSec : Word)
  1733.  
  1734.             Remarks   This procedure reads the file LIMITS.CTL to adjust
  1735.                       the   restrictions  of  the  user.  When  the  new
  1736.                       security level was  not found  in this file,  RADU
  1737.                       will use the restrictions of  the level just below
  1738.                       the requested level.
  1739.  
  1740.             Example   RaSetSecurity (1000)
  1741.  
  1742.  
  1743.         │ RaYell                                                Function
  1744.         └───────────────────────────────────────────────────────────────
  1745.  
  1746.            Function   Returns TRUE if paging is allowed right now.
  1747.  
  1748.         Declaration   RaYell
  1749.  
  1750.         Result type   Boolean
  1751.  
  1752.             Remarks   "RaYell" uses the page status (RaPageStat) and the
  1753.                       current  time  to   determine  whether  paging  is
  1754.                       allowed or not. You should never make ANY sound on
  1755.                       the sysop side when this function returns FALSE.
  1756.  
  1757.            See also   DorPage, RaPageStat, RaSetPageStat, Sound
  1758.  
  1759.             Example   If RaYell then
  1760.                       Begin
  1761.                         Case UpCase(DorPage ('AaCc'#27,' ','')) of
  1762.                           #0      : NoResponse;
  1763.                           'C'     : DoChatMode;
  1764.                           'A',#27 : DoAborted;
  1765.                           ' '     : DoUsrAborted;
  1766.                         End;
  1767.                       End
  1768.                       Else
  1769.                         OutsidePagingHours;
  1770.         RADU v1.10 Programmer's reference manual                 Page 44
  1771.  
  1772.         ╔══════ 
  1773.         ║ Implementing hotkeys in your doors
  1774.         ╙───────────────────────────────────────────────────────────────
  1775.  
  1776.         What is more  important for programmers than  user friendlyness?
  1777.         When  your door  is easy in  use, users  will come back  and are
  1778.         pleased  to use your  door again! I  think any door  should have
  1779.         hotkeys, and too many doors  don't have them! RADU offers  you a
  1780.         set of routines to implement them very easily in your doors!
  1781.  
  1782.  
  1783.         │ DorCleanKeys                                         Procedure
  1784.         └───────────────────────────────────────────────────────────────
  1785.  
  1786.            Function   Clears the keyboard input buffer of both the sysop
  1787.                       and the user. This can be useful when implementing
  1788.                       hotkeys in your doors.
  1789.  
  1790.         Declaration   DorCleanKeys
  1791.  
  1792.             Example   DorCleanKeys
  1793.  
  1794.  
  1795.         │ DorSetHotKeys                                        Procedure
  1796.         └───────────────────────────────────────────────────────────────
  1797.  
  1798.            Function   Tells RADU which keys are hotkeys.
  1799.  
  1800.         Declaration   DorSetHotKeys (Hot : String)
  1801.  
  1802.             Remarks   First  this procedure will flush all characters in
  1803.                       the  FOSSIL  output buffer.   After  you've called
  1804.                       this procedure,  RADU  will  watch  your  keyboard
  1805.                       while  writing  to the  screen.  When a  hotkey is
  1806.                       pressed,  RADU  will ignore  ANY  write statement,
  1807.                       until you call DorSetHotKeys again. If you want to
  1808.                       disable hotkey checking,  call this procedure with
  1809.                       an empty string as parameter (DON'T FORGET!).
  1810.  
  1811.            See also   HotKeyPressed, HotReadKey
  1812.  
  1813.             Example   For an example, please look at the example program
  1814.                       included in this package.
  1815.         Page 45                 RADU v1.10 Programmer's reference manual
  1816.  
  1817.         │ GetKey                                                Function
  1818.         └───────────────────────────────────────────────────────────────
  1819.  
  1820.            Function   Wait for one of the specified keystrokes.
  1821.  
  1822.         Declaration   GetKey (Legal : String)
  1823.  
  1824.         Result type   Char
  1825.  
  1826.             Remarks   This function waits until a  key is pressed, which
  1827.                       is  a  character in  the  string "Legal".  The key
  1828.                       which was  pressed is returned as function result.
  1829.                       This function  can  be useful  when you  implement
  1830.                       hotkeys in your program using "DorDisplay", but it
  1831.                       can also be used without "DorDisplay".
  1832.  
  1833.            See also   DorDisplay, ReadKey
  1834.  
  1835.             Example   Case UpCase(GetKey ('AaBbCcDd')) of
  1836.                         'A' : DoChoiceA;
  1837.                         'B' : DoChoiceB;
  1838.                         'C' : DoChoiceC;
  1839.                         'D' : DoChoiceD;
  1840.                       End; { Case }
  1841.  
  1842.  
  1843.         │ HotKeyPressed                                         Function
  1844.         └───────────────────────────────────────────────────────────────
  1845.  
  1846.            Function   Returns TRUE when the user has pressed a hotkey.
  1847.  
  1848.         Declaration   HotKeyPressed
  1849.  
  1850.         Result type   Boolean
  1851.  
  1852.             Remarks   When RADU is checking for  hotkeys, it will ignore
  1853.                       any key which  is not a  hotkey. When a hotkey  is
  1854.                       pressed, this function will return TRUE.
  1855.  
  1856.            See also   DorSetHotKeys, HotReadKey
  1857.  
  1858.             Example   For an example, please look at the example program
  1859.                       included in this package.
  1860.         RADU v1.10 Programmer's reference manual                 Page 46
  1861.  
  1862.         │ HotReadKey                                            Function
  1863.         └───────────────────────────────────────────────────────────────
  1864.  
  1865.            Function   Returns (or waits for) a hotkey.
  1866.  
  1867.         Declaration   HotReadKey
  1868.  
  1869.         Result type   Char
  1870.  
  1871.            See also   DorSetHotKeys, HotKeyPressed
  1872.  
  1873.             Example   For an example, please look at the example program
  1874.                       included in this package.
  1875.         Page 47                 RADU v1.10 Programmer's reference manual
  1876.  
  1877.         ╔══════ 
  1878.         ║ Non-door related functions
  1879.         ╙───────────────────────────────────────────────────────────────
  1880.  
  1881.         While writing this door unit I needed  a couple of routines, and
  1882.         after completion of the unit, and  writing some doors, I noticed
  1883.         how  often  these routines  are  used.  You can  also  use these
  1884.         routines.
  1885.  
  1886.  
  1887.         │ ASCIIZtoStr                                           Function
  1888.         └───────────────────────────────────────────────────────────────
  1889.  
  1890.            Function   Converts a NULL  terminated (C alike) string  to a
  1891.                       pascal string.
  1892.  
  1893.         Declaration   ASCIIZtoStr (Var NullStr)
  1894.  
  1895.         Result type   String
  1896.  
  1897.             Remarks   Only  the   first  255  characters  of   the  NULL
  1898.                       terminated string are converted, the rest will  be
  1899.                       ignored.
  1900.  
  1901.             Example   Assign (TextFile,'Name.Fil');
  1902.                       WriteLn (ASCIIZtoStr(TextRec(TextFile).Name));
  1903.  
  1904.  
  1905.         │ DateStr                                               Function
  1906.         └───────────────────────────────────────────────────────────────
  1907.  
  1908.            Function   Returns the current date.
  1909.  
  1910.         Declaration   DateStr
  1911.  
  1912.         Result type   String15
  1913.  
  1914.             Remarks   Returns the current date in the format MM-DD-YY.
  1915.  
  1916.            See also   TimeStr
  1917.  
  1918.             Example   WriteLn('Current date: ',RaFormatDate(DateStr,0));
  1919.         RADU v1.10 Programmer's reference manual                 Page 48
  1920.  
  1921.         │ Dup                                                   Function
  1922.         └───────────────────────────────────────────────────────────────
  1923.  
  1924.            Function   Returns a string containing x  times the specified
  1925.                       character.
  1926.  
  1927.         Declaration   Dup (C : Char;T : Byte)
  1928.  
  1929.         Result type   String
  1930.  
  1931.             Example   WriteLn (Dup('─',80));
  1932.  
  1933.  
  1934.         │ FastWrite                                            Procedure
  1935.         └───────────────────────────────────────────────────────────────
  1936.  
  1937.            Function   Writes a string directly to the screen.
  1938.  
  1939.         Declaration   FastWrite (X,Y : Byte;S : String80)
  1940.  
  1941.             Remarks   X,Y is the  absolute position on the  screen where
  1942.                       the string must be written. The top-left  position
  1943.                       is  0,0.  The  current  text  color is  used  when
  1944.                       writing this  string.  This  routine  is  DESQview
  1945.                       aware.
  1946.  
  1947.             Example   FastWrite (4,8,'Test');
  1948.  
  1949.  
  1950.         │ ForceBack                                             Function
  1951.         └───────────────────────────────────────────────────────────────
  1952.  
  1953.            Function   Adds a backslash to the specified path, if needed.
  1954.  
  1955.         Declaration   ForceBack (Path : String)
  1956.  
  1957.         Result type   String
  1958.  
  1959.             Remarks   All  leading  and  trailing  spaces in  the  input
  1960.                       string will be deleted. Spaces anywere else in the
  1961.                       string will not be deleted.
  1962.  
  1963.                       ForceBack ('C:');            ->  'C:'
  1964.                       ForceBack ('C:\RA');         ->  'C:\RA\'
  1965.                       ForceBack ('C:\RA\MENUS\');  ->  'C:\RA\MENUS\'
  1966.                       ForceBack ('C:\DOS      ');  ->  'C:\DOS\'
  1967.                       ForceBack ('C:\RA MENUS\');  ->  'C:\RA MENUS\'
  1968.  
  1969.             Example   Assign (ForceBack(Path)+'Name.Ext');
  1970.         Page 49                 RADU v1.10 Programmer's reference manual
  1971.  
  1972.         │ FStr                                                  Function
  1973.         └───────────────────────────────────────────────────────────────
  1974.  
  1975.            Function   Converts a numeric parameter to a string.
  1976.  
  1977.         Declaration   FStr (N : LongInt)
  1978.  
  1979.         Result type   String
  1980.  
  1981.             Remarks   This  function  is often  easier  to use  than the
  1982.                       standard "Str" procedure, however  "FStr" can only
  1983.                       convert integer types.
  1984.  
  1985.            See also   FVal
  1986.  
  1987.             Example   Var
  1988.                         S     : String;
  1989.                         N     : Byte; { Shortint/Word/Integer/Longint }
  1990.  
  1991.                       Begin
  1992.                         N:=100;
  1993.                         S:=FStr(N);
  1994.                         WriteLn (N);
  1995.                         WriteLn (S);
  1996.                       End;
  1997.         RADU v1.10 Programmer's reference manual                 Page 50
  1998.  
  1999.         │ FVal                                                  Function
  2000.         └───────────────────────────────────────────────────────────────
  2001.  
  2002.            Function   Converts the specified string to an integer type.
  2003.  
  2004.         Declaration   FVal (S : String)
  2005.  
  2006.         Result type   LongInt
  2007.  
  2008.             Remarks   When the string cannot be converted, this function
  2009.                       returns 0.
  2010.  
  2011.            See also   FStr
  2012.  
  2013.             Example   N:=FVal(Copy(S,10,14));
  2014.  
  2015.  
  2016.         │ LastChar                                              Function
  2017.         └───────────────────────────────────────────────────────────────
  2018.  
  2019.            Function   Returns  the  last  character  of  the   specified
  2020.                       string.
  2021.  
  2022.         Declaration   LastChar (S : String)
  2023.  
  2024.         Result type   Char
  2025.  
  2026.             Remarks   When the  string is  empty, this  function returns
  2027.                       #0.
  2028.  
  2029.             Example   If LastChar('ABC')<>'C' then
  2030.                         WriteLn ('Huh?');
  2031.         Page 51                 RADU v1.10 Programmer's reference manual
  2032.  
  2033.         │ LeftJust                                              Function
  2034.         └───────────────────────────────────────────────────────────────
  2035.  
  2036.            Function   Returns a string expanded to  the specified length
  2037.                       by putting spaces at the right of the string.
  2038.  
  2039.         Declaration   LeftJust (S : String;Len : Byte)
  2040.  
  2041.         Result type   String
  2042.  
  2043.             Remarks   This function calls "LeftJustChar"
  2044.  
  2045.            See also   LeftJustChar, RightJust, RightJustChar
  2046.  
  2047.             Example   WriteLn (LeftJust(Name,30),LeftJust(City,30));
  2048.  
  2049.  
  2050.         │ LeftJustChar                                          Function
  2051.         └───────────────────────────────────────────────────────────────
  2052.  
  2053.            Function   Returns a string expanded  to the specified length
  2054.                       by putting the specified character at the right of
  2055.                       the string.
  2056.  
  2057.         Declaration   LeftJustChar (S : String;Len : Byte;C : Char)
  2058.  
  2059.         Result type   String
  2060.  
  2061.            See also   LeftJust, RightJust, RightJustChar
  2062.  
  2063.             Example   WriteLn (LeftJustChar(Name,30,'■'));
  2064.         RADU v1.10 Programmer's reference manual                 Page 52
  2065.  
  2066.         │ LowCase                                               Function
  2067.         └───────────────────────────────────────────────────────────────
  2068.  
  2069.            Function   Returns the character in lowercase.
  2070.  
  2071.         Declaration   LowCase (C : Char)
  2072.  
  2073.         Result type   Char
  2074.  
  2075.            See also   SLowCase, SUpCase
  2076.  
  2077.             Example   WriteLn (LowCase('A'));
  2078.  
  2079.  
  2080.         │ RightJust                                             Function
  2081.         └───────────────────────────────────────────────────────────────
  2082.  
  2083.            Function   Returns a string expanded to  the specified length
  2084.                       by putting spaces at the left of the string.
  2085.  
  2086.         Declaration   RightJust (S : String;Len : Byte)
  2087.  
  2088.         Result type   String
  2089.  
  2090.             Remarks   This function calls "RightJustChar".
  2091.  
  2092.            See also   LeftJust, LeftJustChar, RightJustChar
  2093.  
  2094.             Example   WriteLn (RightJust(FStr(123),5));
  2095.         Page 53                 RADU v1.10 Programmer's reference manual
  2096.  
  2097.         │ RightJustChar                                         Function
  2098.         └───────────────────────────────────────────────────────────────
  2099.  
  2100.            Function   Returns a string expanded to  the specified length
  2101.                       by putting the specified character  at the left of
  2102.                       the string.
  2103.  
  2104.         Declaration   RightJustChar (S : String;Len : Byte;C : Char)
  2105.  
  2106.         Result type   String
  2107.  
  2108.            See also   LeftJust, LeftJustChar, RightJust
  2109.  
  2110.             Example   WriteLn (RightJustChar(FStr(123),5,'0'));
  2111.  
  2112.  
  2113.         │ SLowCase                                              Function
  2114.         └───────────────────────────────────────────────────────────────
  2115.  
  2116.            Function   Returns the whole string in lowercase.
  2117.  
  2118.         Declaration   SLowCase (S : String)
  2119.  
  2120.         Result type   String
  2121.  
  2122.            See also   LowCase, SUpCase
  2123.  
  2124.             Example   WriteLn ('SLowCase('AbCdEfGh'));
  2125.  
  2126.  
  2127.         │ SUpCase                                               Function
  2128.         └───────────────────────────────────────────────────────────────
  2129.  
  2130.            Function   Returns the whole string in upper case.
  2131.  
  2132.         Declaration   SUpCase (S : String)
  2133.  
  2134.         Result type   String
  2135.  
  2136.            See also   LowCase, SLowCase
  2137.  
  2138.             Example   If SUpCase(Command)='QUIT' then
  2139.                         Halt;
  2140.         RADU v1.10 Programmer's reference manual                 Page 54
  2141.  
  2142.         │ TimeStr                                               Function
  2143.         └───────────────────────────────────────────────────────────────
  2144.  
  2145.            Function   Returns the current time in the given format.
  2146.  
  2147.         Declaration   TimeStr (WithSec,WithHS : Boolean)
  2148.  
  2149.         Result type   String15
  2150.  
  2151.             Remarks   This  function  returns the  current  time in  the
  2152.                       following   format:   HH:MM:SS.hh.  :SS   is  only
  2153.                       included when "WithSec"  is TRUE, and .hh  is only
  2154.                       included when "WithHS" is TRUE.
  2155.  
  2156.            See also   DateStr
  2157.  
  2158.             Example   WriteLn ('Current time : ',TimeStr (TRUE,FALSE));
  2159.  
  2160.  
  2161.         │ ToDec                                                 Function
  2162.         └───────────────────────────────────────────────────────────────
  2163.  
  2164.            Function   Converts a hexadecimal number  (max two digits) to
  2165.                       a decimal number.
  2166.  
  2167.         Declaration   ToDec (Hex : String)
  2168.  
  2169.         Result type   Byte
  2170.  
  2171.             Remarks   The hex string is not case sensitive.
  2172.  
  2173.            See also   ToHex
  2174.  
  2175.             Example   WriteLn (ToDec('Fe'));
  2176.         Page 55                 RADU v1.10 Programmer's reference manual
  2177.  
  2178.         │ ToHex                                                 Function
  2179.         └───────────────────────────────────────────────────────────────
  2180.  
  2181.            Function   Converts a decimal value to a hexadecimal string.
  2182.  
  2183.         Declaration   ToHex (Dec : Byte)
  2184.  
  2185.         Result type   String
  2186.  
  2187.            See also   ToDec
  2188.  
  2189.             Example   WriteLn (ToHex(62));
  2190.  
  2191.  
  2192.         │ Trim                                                  Function
  2193.         └───────────────────────────────────────────────────────────────
  2194.  
  2195.            Function   Removes leading and trailing spaces in a string.
  2196.  
  2197.         Declaration   Trim (S : String)
  2198.  
  2199.         Result type   String
  2200.  
  2201.             Remarks   Calls "TrimLeft" and "TrimRight".
  2202.  
  2203.            See also   TrimLeft, TrimRight
  2204.  
  2205.             Example   S:=Trim(S);
  2206.         RADU v1.10 Programmer's reference manual                 Page 56
  2207.  
  2208.         │ TrimLeft                                              Function
  2209.         └───────────────────────────────────────────────────────────────
  2210.  
  2211.            Function   Removes all leading spaces in a string.
  2212.  
  2213.         Declaration   TrimLeft (S : String)
  2214.  
  2215.         Result type   String
  2216.  
  2217.            See also   Trim, TrimRight
  2218.  
  2219.             Example   S:=TrimLeft(S);
  2220.  
  2221.  
  2222.         │ TrimRight                                             Function
  2223.         └───────────────────────────────────────────────────────────────
  2224.  
  2225.            Function   Removes all trailing spaces in a string.
  2226.  
  2227.         Declaration   TrimRight (S : String)
  2228.  
  2229.         Result type   String
  2230.  
  2231.            See also   Trim, TrimLeft
  2232.  
  2233.             Example   S:=TrimRight(S);
  2234.         Page 57                 RADU v1.10 Programmer's reference manual
  2235.  
  2236.         ╔══════ 
  2237.         ║ 4 Advanced features of RADU
  2238.         ╙───────────────────────────────────────────────────────────────
  2239.  
  2240.         After have used  the above routines  for a while, it's  possible
  2241.         that  you want  more!  Well, there  IS more.  With RADU  you can
  2242.         directly access the FOSSIL driver, make your door work perfectly
  2243.         with DESQview, make your door multi-line compatible, etc etc.
  2244.  
  2245.  
  2246.         ╔══════ 
  2247.         ║ Direct access to the FOSSIL
  2248.         ╙───────────────────────────────────────────────────────────────
  2249.  
  2250.         Although  you'll  probably  never  need  it, I've  included  the
  2251.         following routines for "just in case". I recommend that you only
  2252.         access the FOSSIL  directly when there is  no other way to  do a
  2253.         certain action.
  2254.  
  2255.  
  2256.         │ FosCarrier                                            Function
  2257.         └───────────────────────────────────────────────────────────────
  2258.  
  2259.            Function   Returns  TRUE  when  the  modem's  DCD  signal  is
  2260.                       active.
  2261.  
  2262.         Declaration   FosCarrier
  2263.  
  2264.         Result type   Boolean
  2265.         RADU v1.10 Programmer's reference manual                 Page 58
  2266.  
  2267.         │ FosFlushOutput                                       Procedure
  2268.         └───────────────────────────────────────────────────────────────
  2269.  
  2270.            Function   Waits until the  FOSSIL's output  buffer has  been
  2271.                       flushed.
  2272.  
  2273.         Declaration   FosFlushOutput
  2274.  
  2275.             Remarks   Note that  some modems have internal  buffers, and
  2276.                       that this procedure only flushes the buffer of the
  2277.                       FOSSIL. When  during flushing  the carrier  drops,
  2278.                       this procedure will return.
  2279.  
  2280.  
  2281.         │ FosInReady                                            Function
  2282.         └───────────────────────────────────────────────────────────────
  2283.  
  2284.            Function   Returns TRUE when  a character is available  to be
  2285.                       read from the FOSSIL's input buffer.
  2286.  
  2287.         Declaration   FosInReady
  2288.  
  2289.         Result type   Boolean
  2290.  
  2291.  
  2292.         │ FosPurgeInput                                        Procedure
  2293.         └───────────────────────────────────────────────────────────────
  2294.  
  2295.            Function   Clears the FOSSIL's input buffer.
  2296.  
  2297.         Declaration   FosPurgeInput
  2298.  
  2299.            See also   FosPurgeInput
  2300.         Page 59                 RADU v1.10 Programmer's reference manual
  2301.  
  2302.         │ FosPurgeOutput                                       Procedure
  2303.         └───────────────────────────────────────────────────────────────
  2304.  
  2305.            Function   Clears the FOSSIL's output buffer.
  2306.  
  2307.         Declaration   FosPurgeOutput
  2308.  
  2309.            See also   FosPurgeInput
  2310.  
  2311.  
  2312.         │ FosRead                                               Function
  2313.         └───────────────────────────────────────────────────────────────
  2314.  
  2315.            Function   Reads a character from  the FOSSIL's input buffer.
  2316.                       If no  character is available,  this function will
  2317.                       wait until there is one.
  2318.  
  2319.         Declaration   FosRead
  2320.  
  2321.         Result type   Char
  2322.  
  2323.            See also   FosInReady, FosSend, FosSendStr
  2324.  
  2325.  
  2326.         │ FosSend                                              Procedure
  2327.         └───────────────────────────────────────────────────────────────
  2328.  
  2329.            Function   Puts a character into the FOSSIL's output buffer.
  2330.  
  2331.         Declaration   FosSend (C : Char)
  2332.  
  2333.             Remarks   When  there  is no  space  in the  FOSSIL's output
  2334.                       buffer, "FosSend" will wait until there is.
  2335.  
  2336.            See also   FosRead, FosSendStr
  2337.         RADU v1.10 Programmer's reference manual                 Page 60
  2338.  
  2339.         │ FosSendStr                                           Procedure
  2340.         └───────────────────────────────────────────────────────────────
  2341.  
  2342.            Function   Puts a string into the FOSSIL's output buffer.
  2343.  
  2344.         Declaration   FosSendStr (S : String)
  2345.  
  2346.             Remarks   Calls "FosSend"  for each character  in the string
  2347.                       "S".
  2348.  
  2349.            See also   FosSend
  2350.  
  2351.  
  2352.         │ FosSetDTR                                            Procedure
  2353.         └───────────────────────────────────────────────────────────────
  2354.  
  2355.            Function   Changes the state of the DTR line to the modem.
  2356.  
  2357.         Declaration   FosSetDTR (State : Boolean)
  2358.  
  2359.             Remarks   When State is FALSE, the DTR line will be lowered.
  2360.                       This will terminate the call.
  2361.         Page 61                 RADU v1.10 Programmer's reference manual
  2362.  
  2363.         ╔══════ 
  2364.         ║ Defining sysop command keys and statuslines
  2365.         ╙───────────────────────────────────────────────────────────────
  2366.  
  2367.         To make the  life of the sysop  a little more comfortable,  RADU
  2368.         offers  the  possibility  to  create  special  sysop  keys,  and
  2369.         statuslines.  Statuslines  are  RA alike,  and  (when  your RADU
  2370.         version is registered) you can create your own statusline.
  2371.  
  2372.  
  2373.         │ DorExtCheck                                           Variable
  2374.         └───────────────────────────────────────────────────────────────
  2375.  
  2376.            Function   Only when  "DorExtCheck" is TRUE, RADU  will check
  2377.                       the keyboard for extended keys (sysop keys).
  2378.  
  2379.         Declaration   DorExtCheck : Boolean
  2380.  
  2381.             Remarks   This   variable  is   initialized  with   TRUE  by
  2382.                       "DorInit".   Change   this   variable   when   you
  2383.                       temporarily want to disable sysop key checking.
  2384.  
  2385.            See also   DorExtKeys
  2386.  
  2387.             Example   DorExtCheck:=FALSE;
  2388.                       DoSomeThingStrange;
  2389.                       DorExtCheck:=TRUE;
  2390.         RADU v1.10 Programmer's reference manual                 Page 62
  2391.  
  2392.         │ DorExtKeys                                            Variable
  2393.         └───────────────────────────────────────────────────────────────
  2394.  
  2395.            Function   Contains pointers  to the procedures  which should
  2396.                       be  called when an extended  key is pressed by the
  2397.                       sysop.
  2398.  
  2399.         Declaration   DorExtKeys : Array[0..150] of Procedure;
  2400.  
  2401.             Remarks   When an  extended key  is pressed,  two codes  are
  2402.                       returned by "ReadKey".  The first  code is  always
  2403.                       #0,  the second code is used  by RADU to determine
  2404.                       which sysop  function  must be  invoked. RADU  has
  2405.                       some default  sysop keys, which can  be redefined,
  2406.                       except the  keys F1 through  F7, F9 and  F10. When
  2407.                       you  define a function  for the key  F8, RADU will
  2408.                       first execute that  function, and then  change the
  2409.                       statusline  to  statusline 8.  This allows  you to
  2410.                       change the contents of this line before it will be
  2411.                       displayed.
  2412.  
  2413.               NOTE!   Please  remember  that   you  should  declare  the
  2414.                       procedures FAR!
  2415.  
  2416.            See also   DorExtCheck, DorNullProc
  2417.  
  2418.             Example   Procedure AltM; Far;
  2419.  
  2420.                       Begin
  2421.                         WriteLn ('[Alt-M] Pressed!');
  2422.                       End;
  2423.  
  2424.                       Begin
  2425.                         DorInit;
  2426.                         DorExtKeys[50]:=AltM;
  2427.                         { .... }
  2428.                       End.
  2429.         Page 63                 RADU v1.10 Programmer's reference manual
  2430.  
  2431.         │ DorNullProc                                           Variable
  2432.         └───────────────────────────────────────────────────────────────
  2433.  
  2434.            Function   Points  to  an empty  (null)  procedure.  Use this
  2435.                       variable to clear sysop keys.
  2436.  
  2437.         Declaration   DorNullProc : Procedure
  2438.  
  2439.            See also   DorExtCheck, DorExtKeys
  2440.  
  2441.             Example   Begin
  2442.                         DorInit;
  2443.                         DorExtKeys[50]:=AltM;         { Define the key }
  2444.                         { .... }
  2445.                         DorExtKeys[50]:=DorNullProc;   { Clear the key }
  2446.                         { .... }
  2447.                       End.
  2448.  
  2449.  
  2450.         │ DorStatus                                            Procedure
  2451.         └───────────────────────────────────────────────────────────────
  2452.  
  2453.            Function   Changes the active statusbar.
  2454.  
  2455.         Declaration   DorStatus (Nr : Byte)
  2456.  
  2457.             Remarks   "Nr" is the  new statusline to display.  When "Nr"
  2458.                       is the current statusline, "DorStatus" will return
  2459.                       immediately. If  you want to  refresh the contents
  2460.                       of the  statusline if  it's the  current one,  you
  2461.                       should add  10  to  the  statusline  number.  This
  2462.                       construction  is  done  because   refreshing  some
  2463.                       statuslines each time can slow down your program.
  2464.  
  2465.            See also   DorStatLn
  2466.  
  2467.             Example   DorStatus (1);          { Change to statusline 1 }
  2468.                       DorStatus (11); { Statln 1, refresh if already 1 }
  2469.         RADU v1.10 Programmer's reference manual                 Page 64
  2470.  
  2471.         ╔══════ 
  2472.         ║ The pre-defined sysop keys.
  2473.         ╙───────────────────────────────────────────────────────────────
  2474.  
  2475.         The following keys will automatically be defined by DorInit.
  2476.  
  2477.         [UpArrow]     : Increase time by one minute.
  2478.  
  2479.         [DownArrow]   : Decrease time by one minute.
  2480.  
  2481.         [Alt-C]       : Activate the built-in chatmode.
  2482.  
  2483.         [Alt-G]       : Display some garbage to thrill the user :-))
  2484.  
  2485.         [Alt-H]       : Hang up; terminates the call.
  2486.  
  2487.         [Alt-L]       : Lock-out user.
  2488.  
  2489.         [Alt-N]       : Sysop next (only works with a registered RA)
  2490.  
  2491.         [Alt-O]       : Override paging.
  2492.  
  2493.         [Alt-S]       : Change security level.
  2494.  
  2495.         [F1] [F2]
  2496.         [F3] [F5]     : Statistics about the user currently online.
  2497.  
  2498.         [F4]          : System statistics.
  2499.  
  2500.         [F6]          : Registered/unregistered note of RADU.
  2501.  
  2502.         [F7]          : IEMSI session information.
  2503.  
  2504.         [F8]          : Definable by you! (Only when registered)
  2505.  
  2506.         [F9]          : Hotkey    summary    help    (Changeable    when
  2507.                         registered).
  2508.  
  2509.         [F10]         : Remove statusline. [F1] to [F9] brings it back.
  2510.  
  2511.  
  2512.         The built-in chatmode can be  either a normal RA-alike chatmode,
  2513.         or  a splitscreen chatmode  (ANSI, AVATAR or  IEMSI). By default
  2514.         RADU  uses the  splitscreen version, but  you can  always switch
  2515.         between them  with [Ctrl-S].  When you  hold  [Shift] while  the
  2516.         chatmode is invoked, you will  always enter the normal chatmode.
  2517.         The sysop can  configure the  default state  for each  emulation
  2518.         method using  the  "RADUCHAT" environment  variable.  When  RADU
  2519.         finds one or  more of the  keywords "ANS",  "AVT" or "IEMSI"  in
  2520.         this variable, it will only use  the splitscreen version for the
  2521.         listed cases.
  2522.         When the normal  chatmode is  active, you can  use [Ctrl-A]  for
  2523.         capture.
  2524.         Page 65                 RADU v1.10 Programmer's reference manual
  2525.  
  2526.         │ ChatEndStr                                            Variable
  2527.         └───────────────────────────────────────────────────────────────
  2528.  
  2529.            Function   Is the  string which  will be  displayed when  the
  2530.                       chatmode was terminated by the sysop.
  2531.  
  2532.         Declaration   ChatEndStr : String
  2533.  
  2534.             Remarks   "DorInit" sets this variable to the value returned
  2535.                       by "RalGet(ralEndCht)"
  2536.  
  2537.            See also   ChatStr, ChatSysopStr, ChatUserStr
  2538.  
  2539.             Example   ChatEndStr:='`a15:Adios, CU next time!'
  2540.  
  2541.  
  2542.         │ ChatStr                                               Variable
  2543.         └───────────────────────────────────────────────────────────────
  2544.  
  2545.            Function   Is the  string which  will be  displayed when  the
  2546.                       chatmode is invoked.
  2547.  
  2548.         Declaration   ChatStr : String;
  2549.  
  2550.             Remarks   "DorInit" sets this variable to the value returned
  2551.                       by "RalGet(ralStartCht)".
  2552.  
  2553.            See also   ChatEndStr, ChatSysopStr, ChatUserStr
  2554.  
  2555.             Example   ChatStr:=^L+'`a15:Hi there! Here is your sysop!'
  2556.  
  2557.  
  2558.         │ ChatSysopStr                                    Typed constant
  2559.         └───────────────────────────────────────────────────────────────
  2560.  
  2561.            Function   Is the  string which  will be  displayed when  the
  2562.                       sysop presses a  key just  after the user  pressed
  2563.                       one. This allows you to  customize the colors used
  2564.                       in the chatmode.
  2565.  
  2566.         Declaration   ChatSysopStr : String = '`a15:'
  2567.  
  2568.            See also   ChatEndStr, ChatStr, ChatUserStr
  2569.  
  2570.             Example   ChatSysopStr:='`a14:'
  2571.         RADU v1.10 Programmer's reference manual                 Page 66
  2572.  
  2573.         │ ChatUserStr                                     Typed constant
  2574.         └───────────────────────────────────────────────────────────────
  2575.  
  2576.            Function   Is the  string which  will be  displayed when  the
  2577.                       user presses a  key just  after the sysop  pressed
  2578.                       one. This allows you to  customize the colors used
  2579.                       in the chatmode.
  2580.  
  2581.         Declaration   ChatUserStr : String = '`a7:'
  2582.  
  2583.            See also   ChatEndStr, ChatStr, ChatSysopStr
  2584.  
  2585.             Example   ChatUserStr:='`a4:'
  2586.         Page 67                 RADU v1.10 Programmer's reference manual
  2587.  
  2588.         ╔══════ 
  2589.         ║ DESQview support functions
  2590.         ╙───────────────────────────────────────────────────────────────
  2591.  
  2592.         For multi-tasking purposes  the program  DESQview is very  often
  2593.         used.  Unfortunately  too  few  programs  are   DESQview  aware,
  2594.         resulting in  slow or incompatible programs.  RADU automatically
  2595.         gives time-slices  to other  tasks whenever  possible, and  only
  2596.         writes into the DESQview video buffer. I don't think you'll need
  2597.         to use the  following DESQview routines,  but just in case,  you
  2598.         never know.
  2599.  
  2600.  
  2601.         │ DvPause                                              Procedure
  2602.         └───────────────────────────────────────────────────────────────
  2603.  
  2604.            Function   Give time to other DESQview tasks.
  2605.  
  2606.         Declaration   DvPause
  2607.  
  2608.             Remarks   RADU  uses  this  procedure   internally  whenever
  2609.                       possible  to  get   an  optimal  performance  when
  2610.                       running under DESQview.
  2611.  
  2612.             Example   Repeat
  2613.                         DvPause;
  2614.                       Until Finished;
  2615.  
  2616.  
  2617.         │ DvStartCritical                                      Procedure
  2618.         └───────────────────────────────────────────────────────────────
  2619.  
  2620.            Function   Disables   multi-tasking   when    running   under
  2621.                       DESQview.
  2622.  
  2623.         Declaration   DvStartCritical
  2624.  
  2625.             Remarks   When  some  code requires  that  no other  task is
  2626.                       running at the  same time,  use this procedure  to
  2627.                       freeze any other task.
  2628.  
  2629.            See also   DvStopCritical
  2630.         RADU v1.10 Programmer's reference manual                 Page 68
  2631.  
  2632.         │ DvStopCritical                                       Procedure
  2633.         └───────────────────────────────────────────────────────────────
  2634.  
  2635.            Function   Re-enables   multi-tasking   when   running  under
  2636.                       DESQview.
  2637.  
  2638.         Declaration   DvStopCritical
  2639.  
  2640.             Remarks   DvStopCritical _MUST_  be called  after a  call to
  2641.                       DvStartCritical.
  2642.  
  2643.            See also   DvStartCritical
  2644.  
  2645.             Example   DvStartCritical;
  2646.                       DoSomethingStrange;
  2647.                       DvStopCritical;
  2648.         Page 69                 RADU v1.10 Programmer's reference manual
  2649.  
  2650.         ╔══════ 
  2651.         ║ Writing multi-line doors
  2652.         ╙───────────────────────────────────────────────────────────────
  2653.  
  2654.         RADU offers limited routines for writing multi-line aware doors.
  2655.         You can  send messages to  other nodes and share  files, but you
  2656.         cannot send data directly to an other node. I am working hard on
  2657.         it, but the results so far are not satisfactory, and I only want
  2658.         to release good, reliable and efficient programs. So please have
  2659.         some patience, the internode-interface will be released in a few
  2660.         months. For filesharing the following constants are declared:
  2661.  
  2662.         Const
  2663.           ReadMode        = 0;
  2664.           WriteMode       = 1;
  2665.           ReadWriteMode   = 2;
  2666.  
  2667.           DenyAll         = $10;
  2668.           DenyWrite       = $20;
  2669.           DenyRead        = $30;
  2670.           DenyNone        = $40;
  2671.  
  2672.           Inheritance     = $80;
  2673.         RADU v1.10 Programmer's reference manual                 Page 70
  2674.  
  2675.         │ DorSendMessage                                       Procedure
  2676.         └───────────────────────────────────────────────────────────────
  2677.  
  2678.            Function   Sends a message to another user currently online.
  2679.  
  2680.         Declaration   DorSendMessage (LineNr : Byte)
  2681.  
  2682.             Remarks   "LineNr" is the  line number  to send the  message
  2683.                       to. When "LineNr" equals to 0, a list of all users
  2684.                       currently online will be displayed.
  2685.  
  2686.            See also   ClrScr
  2687.  
  2688.             Example   DorSendMessage(0);
  2689.  
  2690.  
  2691.         │ LockRecords                                          Procedure
  2692.         └───────────────────────────────────────────────────────────────
  2693.  
  2694.            Function   Locks a region of a typed or untyped file.
  2695.  
  2696.         Declaration   LockRecords (Var F;StartRec,NumRec : LongInt)
  2697.  
  2698.             Remarks   "F" is the file, typed or untyped (not text).
  2699.                       "StartRec" is the number of  the first record, and
  2700.                       "NumRec" is the number of  records to lock. Please
  2701.                       don't forget to  unlock the region after  use, and
  2702.                       don't lock the region for a long time.
  2703.  
  2704.            See also   LockResult, UnLockRecords
  2705.         Page 71                 RADU v1.10 Programmer's reference manual
  2706.  
  2707.         │ LockResult                                            Function
  2708.         └───────────────────────────────────────────────────────────────
  2709.  
  2710.            Function   Returns the status of the last lock/unlock.
  2711.  
  2712.         Declaration   LockResult
  2713.  
  2714.         Result type   Byte
  2715.  
  2716.             Remarks   Possible error codes:
  2717.                        0  No error
  2718.                        6  Invalid handle (file not open?)
  2719.                       17  Lock violation (already locked?)
  2720.  
  2721.                       After a call to this  function the error code will
  2722.                       be cleared.
  2723.  
  2724.            See also   LockRecords, UnLockRecords
  2725.  
  2726.  
  2727.         │ ShareInstalled                                        Function
  2728.         └───────────────────────────────────────────────────────────────
  2729.  
  2730.            Function   Returns TRUE when "SHARE.EXE" is installed.
  2731.  
  2732.         Declaration   ShareInstalled
  2733.  
  2734.         Result type   Boolean
  2735.  
  2736.             Remarks   RADU uses  this function  internally, and  ignores
  2737.                       lock/unlock when "SHARE.EXE" is not installed.
  2738.  
  2739.            See also   LockRecords, UnLockRecords
  2740.         RADU v1.10 Programmer's reference manual                 Page 72
  2741.  
  2742.         │ UnLockRecords                                        Procedure
  2743.         └───────────────────────────────────────────────────────────────
  2744.  
  2745.            Function   Unlocks a region of a typed or untyped file.
  2746.  
  2747.         Declaration   UnLockRecords (Var F;StartRec,NumRec : LongInt)
  2748.  
  2749.             Remarks   "F" is the typed or untyped file (not text),
  2750.                       "StartRec"  is  the  record number  of  the  first
  2751.                       record  to  unlock,  "NumRec"  is  the  number  of
  2752.                       records to unlock. Between locking and unlocking a
  2753.                       region of a file no other process can  access that
  2754.                       area. If the time  that the area is locked  is too
  2755.                       long, the other process can get an error.
  2756.  
  2757.               NOTE!   When  you  close  the file  before  unlocking  the
  2758.                       locked area, strange  things will happen!  Be sure
  2759.                       to unlock anything you've locked!
  2760.  
  2761.            See also   LockRecords, LockResult
  2762.  
  2763.             Example   LockRecords (DataFile,10,20);
  2764.                       { Manipulate data }
  2765.                       UnLockRecords (DataFile,10,20);
  2766.  
  2767.  
  2768.         │ UOnClear                                             Procedure
  2769.         └───────────────────────────────────────────────────────────────
  2770.  
  2771.            Function   Deletes the "UserDoes" file.
  2772.  
  2773.         Declaration   UOnClear
  2774.  
  2775.             Remarks   This procedure  only  has effect  when running  in
  2776.                       multi-line    mode.    RADU    calls    "UOnClear"
  2777.                       automatically when  it passes control  back to the
  2778.                       BBS.
  2779.  
  2780.            See also   UOnGet, UOnSet
  2781.  
  2782.             Example   UOnClear;
  2783.                       Halt;
  2784.         Page 73                 RADU v1.10 Programmer's reference manual
  2785.  
  2786.         │ UOnGet                                                Function
  2787.         └───────────────────────────────────────────────────────────────
  2788.  
  2789.            Function   Returns the contents  of the "Userdoes" file  of a
  2790.                       user currently online at another node.
  2791.  
  2792.         Declaration   UOnGet (Line : Byte)
  2793.  
  2794.         Result type   UOnString
  2795.  
  2796.             Remarks   "UOnString"  is  a   type  declared  in  RADU   as
  2797.                       String[70].
  2798.  
  2799.                       Type
  2800.                         UOnString   = String[70];
  2801.  
  2802.                       When the  "UserDoes"  file  could  not  be  opened
  2803.                       (missing) or when not running  in multi-line mode,
  2804.                       an empty string will be returned.
  2805.  
  2806.            See also   UOnClear, UOnSet
  2807.  
  2808.             Example   WriteLn (UOnGet(3));
  2809.  
  2810.  
  2811.         │ UOnSet                                               Procedure
  2812.         └───────────────────────────────────────────────────────────────
  2813.  
  2814.            Function   Creates  a  "UserDoes"  file  in  the  RA   system
  2815.                       directory.
  2816.  
  2817.         Declaration   UOnSet (What : UOnString)
  2818.  
  2819.             Remarks   This procedure  only  has effect  when running  in
  2820.                       multi-line mode. For more information about UserOn
  2821.                       I refer to  the file  "USERON20.ZIP" which can  be
  2822.                       found on many BBS's (including mine).
  2823.  
  2824.            See also   UOnClear, UOnGet
  2825.  
  2826.             Example   UOnSet ('User is using the timebank.');
  2827.         RADU v1.10 Programmer's reference manual                 Page 74
  2828.  
  2829.         ╔══════ 
  2830.         ║ Special Write(ln) extensions
  2831.         ╙───────────────────────────────────────────────────────────────
  2832.  
  2833.         RADU  has  extended the  write(ln)  command to  be  very useful,
  2834.         especially when  writing doors.  With RADU  you can  simply send
  2835.         ANSI, AVATAR and RA codes  using Write(ln), RADU will  interpret
  2836.         the codes and  do the corresponding  actions. Besides that  RADU
  2837.         has added a very  powerful feature, the RADU codes!  These codes
  2838.         can save you a lot of time and frustration!
  2839.  
  2840.  
  2841.         ╔══════ 
  2842.         ║ Internal ANSI and AVATAR emulation
  2843.         ╙───────────────────────────────────────────────────────────────
  2844.  
  2845.         Thanks to the internal ANSI and AVATAR emulator in  RADU you can
  2846.         simply send ANSI or  AVATAR codes with Write(ln). RADU  supports
  2847.         most  ANSI   codes,  and   all  AVATAR   codes  as   defined  in
  2848.         FSC-0037.TXT. Example:
  2849.  
  2850.         Write (^[+'[2J');                                  { ANSI code }
  2851.         Write (^V^A#7);                                  { AVATAR code }
  2852.  
  2853.  
  2854.         ╔══════ 
  2855.         ║ Remote Access textfile codes
  2856.         ╙───────────────────────────────────────────────────────────────
  2857.  
  2858.         You  can also  display  the Remote  Access  textfile codes  with
  2859.         Write(ln). For a list  of all RA codes supported by RADU, please
  2860.         look at appendix D. Example:
  2861.  
  2862.         WriteLn ('Your full name is: ',^F,'A');
  2863.         Page 75                 RADU v1.10 Programmer's reference manual
  2864.  
  2865.         ╔══════ 
  2866.         ║ RADU codes
  2867.         ╙───────────────────────────────────────────────────────────────
  2868.  
  2869.         While  writing  some doors  I  noticed  how often  I  needed the
  2870.         sequence  "GotoXY",   "TextColor"  followed  by   a  "Write(ln)"
  2871.         statement. After some time I got a bit irritated, my source  got
  2872.         pretty large and  not very surveyable  anymore. So I  "invented"
  2873.         the RADU codes! With  these codes you can  do all these  actions
  2874.         with just one  statement: Write(ln)! You just  insert some codes
  2875.         into your text  to display, and RADU  will do the work  for you!
  2876.         Just try it, I'm sure you'll like it! But be careful,  use it in
  2877.         a structured way, otherwise you can make a real mess out  of it!
  2878.         Don't say I didn't warn you! 
  2879.  
  2880.         All codes are in the following form:
  2881.  
  2882.         <`><Code><Parameters><:>
  2883.  
  2884.         <Code>        is one of the characters "ABCDFGHLXY"
  2885.         <Parameters>  Are  zero  or  more  parameters  (always  numeric)
  2886.                       serparated by commas.
  2887.  
  2888.         Example: `g10,10:
  2889.  
  2890.         The following codes are defined at this moment.
  2891.  
  2892.  
  2893.         ╔══════ 
  2894.         ║ "A" change text attribute
  2895.         ╙───────────────────────────────────────────────────────────────
  2896.  
  2897.         Code letter   "A"
  2898.  
  2899.            Function   Changes the text attribute
  2900.  
  2901.             Remarks   Changing the  text color  using this  code is  the
  2902.                       most efficient way  to change  the color. This  is
  2903.                       because with this  code you  can change the  fore-
  2904.                       and background color  at the same time!  This will
  2905.                       give a much more efficient ANS/AVT code.
  2906.  
  2907.          Parameters   "A" needs only  one parameter, and that's  the new
  2908.                       text attribute. This  number must be in  the range
  2909.                       0..255.
  2910.  
  2911.            See also   HighVideo,    LowVideo,    NormVideo,    TextAttr,
  2912.                       TextBackGround, TextColor, "B", "F", "H", "L"
  2913.  
  2914.             Example   Write ('`a122:Hi! `a7:There!');
  2915.         RADU v1.10 Programmer's reference manual                 Page 76
  2916.  
  2917.         ╔══════ 
  2918.         ║ "B" change background color
  2919.         ╙───────────────────────────────────────────────────────────────
  2920.  
  2921.         Code letter   "B"
  2922.  
  2923.            Function   Changes the background color.
  2924.  
  2925.          Parameters   "B" needs only  one parameter, and that's  the new
  2926.                       background color. This number must be in the range
  2927.                       0..15.
  2928.  
  2929.            See also   TextBackGround, "A", "F", "H", "L"
  2930.  
  2931.             Example   Write ('`b7:White background.');
  2932.  
  2933.  
  2934.         ╔══════ 
  2935.         ║ "C" center a line of text
  2936.         ╙───────────────────────────────────────────────────────────────
  2937.  
  2938.         Code letter   "C"
  2939.  
  2940.            Function   Center a line of text on the current line.
  2941.  
  2942.             Remarks   This code MUST be  at the beginning of a  line. It
  2943.                       will   center  all  the   text  of  the  Write(ln)
  2944.                       statement.
  2945.  
  2946.            See also   "X"
  2947.  
  2948.             Example   WriteLn ('`c:This text will be centered.');
  2949.         Page 77                 RADU v1.10 Programmer's reference manual
  2950.  
  2951.         ╔══════ 
  2952.         ║ "D" duplicate a character x times
  2953.         ╙───────────────────────────────────────────────────────────────
  2954.  
  2955.         Code letter   "D"
  2956.  
  2957.            Function   Writes a single character many times.
  2958.  
  2959.             Remarks   This code  is extremely  useful, besides  that you
  2960.                       can  easily  duplicate   a  character,  it's  also
  2961.                       extremely fast when the user wants AVATAR codes to
  2962.                       be sent.
  2963.  
  2964.          Parameters   This  code   needs  two   parameters.  The   first
  2965.                       parameter is the  ASCII code  of the character  to
  2966.                       duplicate (range 0..255),  the second parameter is
  2967.                       the number of  times that the character  should be
  2968.                       repeated (range 0..255).
  2969.  
  2970.            See also   DupWrite
  2971.  
  2972.             Example   Write ('`d196,80:`d10,3:');
  2973.  
  2974.  
  2975.         ╔══════ 
  2976.         ║ "F" change the foreground color
  2977.         ╙───────────────────────────────────────────────────────────────
  2978.  
  2979.         Code letter   "F"
  2980.  
  2981.            Function   Changes the foreground color.
  2982.  
  2983.          Parameters   This code  needs one parameter, the new foreground
  2984.                       color. This value must be in range 0..15.
  2985.  
  2986.            See also   TextColor, "A", "B", "H", "L"
  2987.  
  2988.             Example   Write ('`f3:Hi `f5:',^F,'A');
  2989.         RADU v1.10 Programmer's reference manual                 Page 78
  2990.  
  2991.         ╔══════ 
  2992.         ║ "G" change current cursor position
  2993.         ╙───────────────────────────────────────────────────────────────
  2994.  
  2995.         Code letter   "G"
  2996.  
  2997.            Function   Changes  the cursor  to  an  absolute or  relative
  2998.                       position on the screen.
  2999.  
  3000.          Parameters   This code  needs two parameters.  These parameters
  3001.                       can be in two forms.
  3002.                       1)  Without  a  sign,  in this  case  you  mean an
  3003.                           absolute  position  (relative to  the top-left
  3004.                           courner of your screen)
  3005.                       2)  With a  sign (-/+).  In this  case you  mean a
  3006.                           position  relative  to   the  current   cursor
  3007.                           position.
  3008.  
  3009.            See also   GotoXY, "C", "X", "Y"
  3010.  
  3011.             Example   Write ('`g10,20:');        { Cursor to X=10,Y=20 }
  3012.                       Write ('`g-3,10:');  { Move 3 pos left, and Y=10 }
  3013.                       Write ('`g+0,+3:');          { Move 3 lines down }
  3014.  
  3015.  
  3016.         ╔══════ 
  3017.         ║ "H" select high intensity characters
  3018.         ╙───────────────────────────────────────────────────────────────
  3019.  
  3020.         Code letter   "H"
  3021.  
  3022.            Function   Sets the high intensity bit on.
  3023.  
  3024.            See also   HighVideo, LowVideo, NormVideo, "A", "B", "F", "L"
  3025.  
  3026.             Example   WriteLn ('`h:High video.');
  3027.  
  3028.  
  3029.         ╔══════ 
  3030.         ║ "L" select low intensity characters
  3031.         ╙───────────────────────────────────────────────────────────────
  3032.  
  3033.         Code letter   "L"
  3034.  
  3035.            Function   Sets the high intensity bit off.
  3036.  
  3037.            See also   HighVideo, LowVideo, NormVideo, "A", "B", "F", "H"
  3038.  
  3039.             Example   WriteLn ('`h:High and `l:Low intensity.');
  3040.         Page 79                 RADU v1.10 Programmer's reference manual
  3041.  
  3042.         ╔══════ 
  3043.         ║ "X" change current cursor X position
  3044.         ╙───────────────────────────────────────────────────────────────
  3045.  
  3046.         Code letter   "X"
  3047.  
  3048.            Function   Moves the X-position of the  cursor to an absolute
  3049.                       or relative position on the screen.
  3050.  
  3051.          Parameters   Only one  parameter is  needed for  this code.  As
  3052.                       with the "G" code, you can use a  sign or not, see
  3053.                       "G" for more details.
  3054.  
  3055.            See also   GotoXY, "C", "G", "Y"
  3056.  
  3057.             Example   Write ('`x10:');      { Place cursor at pos X=10 }
  3058.                       Write ('`x-5:');     { Move cursor 5 pos to left }
  3059.                       Write ('`x+5:');    { Move cursor 5 pos to right }
  3060.  
  3061.  
  3062.         ╔══════ 
  3063.         ║ "Y" change current cursor Y position
  3064.         ╙───────────────────────────────────────────────────────────────
  3065.  
  3066.         Code letter   "Y"
  3067.  
  3068.            Function   Moves the Y-position of the  cursor to an absolute
  3069.                       or relative position on the screen.
  3070.  
  3071.          Parameters   Only one  parameter is  needed for  this code.  As
  3072.                       with the "G" code,  you can use a sign or not, see
  3073.                       "G" for more details.
  3074.  
  3075.            See also   GotoXY, "G", "X"
  3076.  
  3077.             Example   Write ('`y10:');          { Place cursor at Y=10 }
  3078.                       Write ('`y-5:');        { Move cursor 5 lines up }
  3079.                       Write ('`y+5:');      { Move cursor 5 lines down }
  3080.         RADU v1.10 Programmer's reference manual                 Page 80
  3081.  
  3082.         ╔══════ 
  3083.         ║ 5 THANKS
  3084.         ╙───────────────────────────────────────────────────────────────
  3085.  
  3086.         I'd like to  thank everyone who  has helped me developing  RADU.
  3087.         Without these people RADU would never be what it has become now!
  3088.         Thanks to (in alphabetic order):
  3089.  
  3090.  
  3091.         Arnoel Bisschop, thanks  for your tips and  intensive testing of
  3092.         RADU!
  3093.  
  3094.         Erick van Emmerick, thanks for your tips and testing of RADU!
  3095.  
  3096.         Erwin Elvers, thanks for writing a Norton Guide for RADU!
  3097.  
  3098.         Hans Siemons, thanks for your tips and testing of RADU!
  3099.  
  3100.         Maurice Don, from  the very beginning  of RADU you have  already
  3101.         been using it!  Without your help  RADU would even never  exist!
  3102.         Thanks a lot for all your comments!
  3103.  
  3104.         My Mother, thanks for the food-supply when I was working hard on
  3105.         RADU!
  3106.  
  3107.         Ruud Loeffen, thanks  for your tips, ohh yeah, I  did not forget
  3108.         you, hehehe:-))
  3109.  
  3110.         Willem van Pelt, thanks for checking this document, your english
  3111.         (eeeh English (miereneuker;-))) is better than mine!
  3112.         Page 81                 RADU v1.10 Programmer's reference manual
  3113.  
  3114.         ╔══════ 
  3115.         ║ Appendix A: Complete ASCII table
  3116.         ╙───────────────────────────────────────────────────────────────
  3117.  
  3118.           0 00  ^@ NUL      32  20           64 40  @         96  60  `
  3119.           1 01  ^A SOH      33  21  !        65 41  A         97  61  a
  3120.           2 02  ^B STX      34  22  "        66 42  B         98  62  b
  3121.           3 03  ^C ETX      35  23  #        67 43  C         99  63  c
  3122.           4 04  ^D EOT      36  24  $        68 44  D        100  64  d
  3123.           5 05  ^E ENQ      37  25  %        69 45  E        101  65  e
  3124.           6 06  ^F ACK      38  26  &        70 46  F        102  66  f
  3125.           7 07  ^G BEL      39  27  '        71 47  G        103  67  g
  3126.           8 08  ^H BS       40  28  (        72 48  H        104  68  h
  3127.           9 09  ^I TAB      41  29  )        73 49  I        105  69  i
  3128.          10 0A  ^J LF       42  2A  *        74 4A  J        106  6A  j
  3129.          11 0B  ^K VT       43  2B  +        75 4B  K        107  6B  k
  3130.          12 0C  ^L FF       44  2C  ,        76 4C  L        108  6C  l
  3131.          13 0D  ^M CR       45  2D  -        77 4D  M        109  6D  m
  3132.          14 0E  ^N SO       46  2E  .        78 4E  N        110  6E  n
  3133.          15 0F  ^O SI       47  2F  /        79 4F  O        111  6F  o
  3134.          16 10  ^P DLE      48  30  0        80 50  P        112  70  p
  3135.          17 11  ^Q DC1      49  31  1        81 51  Q        113  71  q
  3136.          18 12  ^R DC2      50  32  2        82 52  R        114  72  r
  3137.          19 13  ^S DC3      51  33  3        83 53  S        115  73  s
  3138.          20 14  ^T DC4      52  34  4        84 54  T        116  74  t
  3139.          21 15  ^U NAK      53  35  5        85 55  U        117  75  u
  3140.          22 16  ^V SYN      54  36  6        86 56  V        118  76  v
  3141.          23 17  ^W ETB      55  37  7        87 57  W        119  77  w
  3142.          24 18  ^X CAN      56  38  8        88 58  X        120  78  x
  3143.          25 19  ^Y EM       57  39  9        89 59  Y        121  79  y
  3144.          26 1A  ^Z SUB      58  3A  :        90 5A  Z        122  7A  z
  3145.          27 1B  ^[ ESC      59  3B  ;        91 5B  [        123  7B  {
  3146.          28 1C  ^\ FS       60  3C  <        92 5C  \        124  7C  |
  3147.          29 1D  ^] GS       61  3D  =        93 5D  ]        125  7D  }
  3148.          30 1E  ^^ RS       62  3E  >        94 5E  ^        126  7E  ~
  3149.          31 1F  ^_ US       63  3F  ?        95 5F  _        127  7F
  3150.         RADU v1.10 Programmer's reference manual                 Page 82
  3151.  
  3152.         128 80  Ç          160  A0  á       192 C0  └        224  E0  α
  3153.         129 81  ü          161  A1  í       193 C1  ┴        225  E1  ß
  3154.         130 82  é          162  A2  ó       194 C2  ┬        226  E2  Γ
  3155.         131 83  â          163  A3  ú       195 C3  ├        227  E3  π
  3156.         132 84  ä          164  A4  ñ       196 C4  ─        228  E4  Σ
  3157.         133 85  à          165  A5  Ñ       197 C5  ┼        229  E5  σ
  3158.         134 86  å          166  A6  ª       198 C6  ╞        230  E6  µ
  3159.         135 87  ç          167  A7  º       199 C7  ╟        231  E7  τ
  3160.         136 88  ê          168  A8  ¿       200 C8  ╚        232  E8  Φ
  3161.         137 89  ë          169  A9  ⌐       201 C9  ╔        233  E9  Θ
  3162.         138 8A  è          170  AA  ¬       202 CA  ╩        234  EA  Ω
  3163.         139 8B  ï          171  AB  ½       203 CB  ╦        235  EB  δ
  3164.         140 8C  î          172  AC  ¼       204 CC  ╠        236  EC  ∞
  3165.         141 8D  ì          173  AD  ¡       205 CD  ═        237  ED  φ
  3166.         142 8E  Ä          174  AE  «       206 CE  ╬        238  EE  ε
  3167.         143 8F  Å          175  AF  »       207 CF  ╧        239  EF  ∩
  3168.         144 90  É          176  B0  ░       208 D0  ╨        240  F0  ≡
  3169.         145 91  æ          177  B1  ▒       209 D1  ╤        241  F1  ±
  3170.         146 92  Æ          178  B2  ▓       210 D2  ╥        242  F2  ≥
  3171.         147 93  ô          179  B3  │       211 D3  ╙        243  F3  ≤
  3172.         148 94  ö          180  B4  ┤       212 D4  ╘        244  F4  ⌠
  3173.         149 95  ò          181  B5  ╡       213 D5  ╒        245  F5  ⌡
  3174.         150 96  û          182  B6  ╢       214 D6  ╓        246  F6  ÷
  3175.         151 97  ù          183  B7  ╖       215 D7  ╫        247  F7  ≈
  3176.         152 98  ÿ          184  B8  ╕       216 D8  ╪        248  F8  °
  3177.         153 99  Ö          185  B9  ╣       217 D9  ┘        249  F9  ∙
  3178.         154 9A  Ü          186  BA  ║       218 DA  ┌        250  FA  ·
  3179.         155 9B  ¢          187  BB  ╗       219 DB  █        251  FB  √
  3180.         156 9C  £          188  BC  ╝       220 DC  ▄        252  FC  ⁿ
  3181.         157 9D  ¥          189  BD  ╜       221 DD  ▌        253  FD  ²
  3182.         158 9E  ₧          190  BE  ╛       222 DE  ▐        254  FE  ■
  3183.         159 9F  ƒ          191  BF  ┐       223 DF  ▀        255  FF   
  3184.         Page 83                 RADU v1.10 Programmer's reference manual
  3185.  
  3186.         ╔══════ 
  3187.         ║ Appendix B: Extended keyboard codes
  3188.         ╙───────────────────────────────────────────────────────────────
  3189.  
  3190.         After  pressing an extended key,  ReadKey will return two codes,
  3191.         the  first code  is  always ASCII  0, the  second one  is listed
  3192.         below.
  3193.  
  3194.  
  3195.         Second code                   Meaning
  3196.         ────────────────────────────────────────────────────────────────
  3197.         3                             NUL
  3198.         15                            Shift Tab
  3199.         16-25                         Alt-Q/W/E/R/T/Y/U/I/O/P
  3200.         30-38                         Alt-A/S/D/F/G/H/J/K/L
  3201.         44-50                         Alt-Z/X/C/V/B/N/M
  3202.         59-68                         F1-F10
  3203.         71                            Home
  3204.         72                            Cursor up
  3205.         73                            PgUp
  3206.         75                            Cursor left
  3207.         77                            Cursor right
  3208.         79                            End
  3209.         80                            Cursor down
  3210.         81                            PgDn
  3211.         82                            Ins
  3212.         83                            Del
  3213.         84-93                         Shift-F1 to Shift-F10
  3214.         94-103                        Ctrl-F1 to Ctrl-F10
  3215.         104-113                       Alt-F1 to Alt-F10
  3216.         114                           Ctrl-PrtScr
  3217.         115                           Ctrl-Cursor-Left
  3218.         116                           Ctrl-Cursor-Right
  3219.         117                           Ctrl-End
  3220.         118                           Ctrl-PgDn
  3221.         119                           Ctrl-Home
  3222.         120-131                       Alt-1/2/3/4/5/6/7/8/9/0/-/=
  3223.         132                           Ctrl-PgUp
  3224.         133                           F11
  3225.         134                           F12
  3226.         135                           Shift-F11
  3227.         136                           Shift-F12
  3228.         137                           Ctrl-F11
  3229.         138                           Ctrl-F12
  3230.         139                           Alt-F11
  3231.         140                           Alt-F12
  3232.         RADU v1.10 Programmer's reference manual                 Page 84
  3233.  
  3234.         ╔══════ 
  3235.         ║ Appendix C: List of Turbo Pascal Runtime errors
  3236.         ╙───────────────────────────────────────────────────────────────
  3237.  
  3238.         When a door exits due to a  runtime error, it will automatically
  3239.         log  the  error code  and address  in  the Remote  Access system
  3240.         logfile.  The following errorcodes  can be returned  by a pascal
  3241.         program:
  3242.  
  3243.         ■ DOS-errors
  3244.           001 Invalid function number.
  3245.           002 File not found.
  3246.           003 Path not found.
  3247.           004 Too many open files.
  3248.           005 File access denied.
  3249.           006 Invalid file handle.
  3250.           012 Invalid file access code.
  3251.           015 Invalid drive number.
  3252.           016 Cannot remove current directory.
  3253.           017 Cannot rename across drives.
  3254.  
  3255.         ■ I/O errors.
  3256.           100 Disk read error.
  3257.           101 Disk write error.
  3258.           102 File not assigned.
  3259.           103 File not opened.
  3260.           104 File not open for input.
  3261.           105 File not open for output.
  3262.           106 Invalid numeric format.
  3263.  
  3264.         ■ Critical errors
  3265.           150 Disk is write-protected.
  3266.           151 Unknown unit.
  3267.           152 Drive not ready.
  3268.           153 Unknown command.
  3269.           154 CRC error in data.
  3270.           155 Bad drive request structure length.
  3271.           156 Disk seek error.
  3272.           157 Unknown media type.
  3273.           158 Sector not found.
  3274.           159 Printer out of paper.
  3275.           160 Device write fault.
  3276.           161 Device read fault.
  3277.           162 Hardware failure.
  3278.  
  3279.         ■ Fatal errors.
  3280.           200 Division by zero.
  3281.           201 Range check error.
  3282.           202 Stack overflow.
  3283.           203 Heap overflow.
  3284.           204 Invalid pointer operation.
  3285.           205 Floating point overflow.
  3286.           206 Floating point underflow.
  3287.           207 Invalid floating point operation.
  3288.           208 Overlay manager not installed.
  3289.           209 Overlay file read error.
  3290.         Page 85                 RADU v1.10 Programmer's reference manual
  3291.  
  3292.           210 Object not initialized.
  3293.           211 Call to abstract method.
  3294.           212 Stream registration error.
  3295.           213 Collection out of range.
  3296.           214 Collection overflow error.
  3297.         RADU v1.10 Programmer's reference manual                 Page 86
  3298.  
  3299.         ╔══════ 
  3300.         ║ Appendix D: Remote Access textfile codes
  3301.         ╙───────────────────────────────────────────────────────────────
  3302.  
  3303.         RADU supports the following RA alike textfile codes.
  3304.  
  3305.         ^A      Wait for [Enter].
  3306.         ^F      Insert a user parameter (see table below).
  3307.         ^G      Produces a beep on the caller's console.
  3308.         ^H      Non-destructive   backspace  (send   ^H+'  '+^H   for  a
  3309.                 destructive backspace).
  3310.         ^I      Tab, forward to next tab position.
  3311.         ^J      Line feed (no carriage return).
  3312.         ^K      Insert a system parameter (see table below)
  3313.         ^L      Clear screen.
  3314.         ^M      Carriage return (no linefeed).
  3315.         ^V      Reserved for AVATAR
  3316.         ^W      Pause for one second.
  3317.         ^Y      Reserved for AVATAR
  3318.         ^[      Reserved for ANSI
  3319.  
  3320.  
  3321.         User parameters
  3322.         ────────────────────────────────────────────────────────────────
  3323.         ^FA     User's full name
  3324.         ^FB     Location
  3325.         ^FC     Password
  3326.         ^FD     Business/Data phone number
  3327.         ^FE     Voice/Home phone number
  3328.         ^FF     Data of last call
  3329.         ^FG     Time of last call
  3330.         ^FH     A Flags setting
  3331.         ^FI     B Flags setting
  3332.         ^FJ     C Flags setting
  3333.         ^FK     D Flags setting
  3334.         ^FL     Netmail credit remaining (cents)
  3335.         ^FM     Total messages posted
  3336.         ^FN     Number of last message read
  3337.         ^FO     Security level
  3338.         ^FP     Total calls to the BBS
  3339.         ^FQ     Number of uploads
  3340.         ^FR     Kilobytes of uploads
  3341.         ^FS     Number of downloads
  3342.         ^FT     Kilobytes of downloads
  3343.         ^FU     Minutes used today
  3344.         ^FV     Current screen length
  3345.         ^FW     User's first name only
  3346.         ^FX     Ansi setting (On /Off)
  3347.         ^FY     "Continue?" Prompt setting (On /Off)
  3348.         ^FZ     Screen clearing (On /Off)
  3349.         ^F0     Full screen editor (On /Off)
  3350.         ^F1     Quiet/do not disturb mode (On /Off)
  3351.         ^F2     Hot-Keys (On /Off)
  3352.         ^F3     Handle/alias of user
  3353.         ^F4     Date of first call
  3354.         ^F5     Date of birth
  3355.         Page 87                 RADU v1.10 Programmer's reference manual
  3356.  
  3357.         ^F6     Subscription expiry date
  3358.         ^F8     AVATAR setting (On /Off)
  3359.         ^F;     Full screen message viewer (On /Off)
  3360.         ^F<     Current date format
  3361.         ^F=     Message forwarding (On /Off)
  3362.         ^F>     Forward to (or nobody)
  3363.         ^F?     Users current file ratio (number)
  3364.         ^F@     Users current file ratio (KB)
  3365.         ^F[     KB download limit remaining for today
  3366.         ^F\     Name of current selected language
  3367.         ^F]     Users comment field
  3368.  
  3369.  
  3370.         System parameters
  3371.         ────────────────────────────────────────────────────────────────
  3372.         ^KA     Total system calls
  3373.         ^KB     Last caller (any line)
  3374.         ^KF     Number of times user has paged sysop
  3375.         ^KI     Time in 24 hour format
  3376.         ^KJ     Todays date
  3377.         ^KM     Minutes used today
  3378.         ^KN     Seconds used today (always returns 00)
  3379.         ^KO     Minutes remaining today
  3380.         ^KP     Seconds remaining today (always returns 00)
  3381.         ^KR     Current baud rate
  3382.         ^KS     Day of week (abbreviated form)
  3383.         ^KV     24 hour format time of next event
  3384.         ^KW     Line number
  3385.         ^KX     Terminates the call. (Forces  DTR low, has no  effect in
  3386.                 local mode)
  3387.         ^K\     Clear to end of line
  3388.         ^K]xxx  Display entry xxx (decimal) from .RAL file
  3389.         ^K[xx   Change color attribute to xx (hex)
  3390.         ^K1     Current msg area number
  3391.         ^K2     Current file area number
  3392.         RADU v1.10 Programmer's reference manual                 Page 88
  3393.  
  3394.         ╔══════ 
  3395.         ║ Index
  3396.         ╙───────────────────────────────────────────────────────────────
  3397.  
  3398.         "A" . . . . . . . . . . . . 75    DorPage . . . . . . . . . . 38
  3399.         "B" . . . . . . . . . . . . 76    DorPath . . . . . . . . . . 26
  3400.         "C" . . . . . . . . . . . . 76    DorRefresh  . . . . . . . . 35
  3401.         "D" . . . . . . . . . . . . 77    DorSendMessage  . . . . . . 69
  3402.         "F" . . . . . . . . . . . . 77    DorSetHotKeys . . . . . . . 44
  3403.         "G" . . . . . . . . . . . . 78    DorStatLn . . . . . . . . . 26
  3404.         "H" . . . . . . . . . . . . 78    DorStatus . . . . . . . . . 63
  3405.         "L" . . . . . . . . . . . . 78    DorSysopKey . . . . . . . . 27
  3406.         "X" . . . . . . . . . . . . 79    DorTimeOut  . . . . . . . . 28
  3407.         "Y" . . . . . . . . . . . . 79    Dup . . . . . . . . . . . . 48
  3408.         ANSI  . . . 11, 12, 18, 22, 74    Duplicate . . . . . . . . . 77
  3409.         ASCII . . . . . . . . . . . 12    DupWrite  . . . . . . . . . 36
  3410.         ASCII table . . . . . . . . 81    DvActive  . . . . . . . . . 28
  3411.         ASCIIZtoStr . . . . . . . . 47    DvPause . . . . . . . . . . 67
  3412.         ASYNC . . . . . . . . . . .  9    DvStartCritical . . . . . . 67
  3413.         AVATAR  . . . . 12, 22, 36, 74    DvStopCritical  . . . . . . 68
  3414.         Byte2Flags  . . . . . . . . 37    DvVer . . . . . . . . . . . 29
  3415.         Center  . . . . . . . . . . 76    DvVidSeg  . . . . . . . . . 29
  3416.         CharSet . . . . . . . . . . 34    Exec  . . . . . . . . . . . 36
  3417.         ChatEndStr  . . . . . . . . 65    ExitInfo  . . . . . . . . . 29
  3418.         Chatmode  . . . . . . . 24, 33    EXITINFO.BBS  . . . . .  4, 29
  3419.         ChatStr . . . . . . . . . . 65    ExitInfoRecord  . . . . . . 29
  3420.         ChatSysopStr  . . . . . . . 65    FastWrite . . . . . . . . . 48
  3421.         ChatUserStr . . . . . . . . 66    Filesharing . . . . . . . . 69
  3422.         ClrEOL  . . . . . . . . . . 10    ForceBack . . . . . . . . . 48
  3423.         ClrScr  . . . . . . . . . . 10    FosCarrier  . . . . . . . . 57
  3424.         CONFIG.RA . . . . . . .  4, 30    FosFlushOutput  . . . . . . 57
  3425.         CrtInput  . . . . . . . . . 21    FosInReady  . . . . . . . . 58
  3426.         CrtOutput . . . . . . . . . 21    FosPurgeInput . . . . . . . 58
  3427.         CTL file  . . . . . . . . . 32    FosPurgeOutput  . . . . . . 58
  3428.         CTLRead . . . . . . . . . . 32    FosRead . . . . . . . . . . 59
  3429.         DateStr . . . . . . . . . . 47    FosSend . . . . . . . . . . 59
  3430.         Delay . . . . . . . . . . . 11    FosSendStr  . . . . . . . . 59
  3431.         DelLine . . . . . . . . . . 11    FosSetDTR . . . . . . . . . 60
  3432.         DESQview                  11, 28, 29, 48, 57, 67    FOSSIL  . . . .  9, 23, 44, 57
  3433.         DorAnsi . . . . . . . . . . 22    FStr  . . . . . . . . . . . 49
  3434.         DorAvatar . . . . . . . . . 22    FVal  . . . . . . . . . . . 49
  3435.         DorChangeTime . . . . . . . 32    GetKey  . . . . . . . . . . 45
  3436.         DorChat . . . . . . . . . . 33    GotoXY  . . . . . . 12, 21, 75
  3437.         DorCheckIdle  . . . . . . . 23    HighVideo . . . . . . . . . 12
  3438.         DorCleanKeys  . . . . . . . 44    HotKeyPressed . . . . . . . 45
  3439.         DorCommPort . . . . . . . . 23    Hotkeys . . . . . . . . 33, 44
  3440.         DorDisplay  . . . . . . 33, 45    HotReadKey  . . . . . . 27, 46
  3441.         DorExtCheck . . . . . . . . 61    IEMSI . . . . . . . . . . . 64
  3442.         DorExtKeys  . . . . . . . . 62    InsLine . . . . . . . . . . 13
  3443.         DorFrozen . . . . . . . . . 24    Keyboard codes  . . . . . . 83
  3444.         DorInit . . . 8, 9, 22-24, 26,    KeyPressed  . . . . . . . . 14
  3445.                              29-31, 61    Language  . . . . . . . . . 30
  3446.         DorIsLocal  . . . . . . . . 24    LastChar  . . . . . . . . . 50
  3447.         DorLineEdit . . . . . . . . 34    LeftJust  . . . . . . . . . 50
  3448.         DorMinute . . . . . . . . . 25    LeftJustChar  . . . . . . . 51
  3449.         DorNullProc . . . . . . . . 63    Licensing . . . . . . . . .  6
  3450.         Page 89                 RADU v1.10 Programmer's reference manual
  3451.  
  3452.         LIMITS.CTL  . . . . . . . . 43    TrimRight . . . . . . . . . 56
  3453.         Lock-out  . . . . . . . . . 64    UnLockRecords . . . . . . . 72
  3454.         LockRecords . . . . . . . . 70    UOnClear  . . . . . . . . . 72
  3455.         LockResult  . . . . . . . . 70    UOnGet  . . . . . . . . . . 73
  3456.         Logfile . . . . . . . . . . 41    UOnSet  . . . . . . . . . . 73
  3457.         LowCase . . . . . . . . . . 51    UserDoes  . . . . . . . . . 72
  3458.         LowVideo  . . . . . . . . . 14    USERON20.ZIP  . . . . . . . 73
  3459.         Multi-line  . . 10, 57, 69, 72    WhereX  . . . . . . . . . . 19
  3460.         Multi-tasking . . . . . . . 67    WhereY  . . . . . . . . . . 19
  3461.         NormVideo . . . . . . . . . 15    Window  . . . . . . . . . . 19
  3462.         NoSound . . . . . . . . . . 15    Write(ln) . . . . . 20, 74, 75
  3463.         Paging  . . . . . . 17, 38, 43    Write(ln) extensions  . . . 74
  3464.         PDN . . . . . . . . . . . .  4
  3465.         RaCheckFlags  . . . . . . . 39
  3466.         RaCmpFlags  . . . . . . . . 39
  3467.         RaConfig  . . . . . . . 30, 41
  3468.         RADU codes  . . . . . . . . 75
  3469.         RADU.REG  . . . . . . . . .  6
  3470.         RaFormatDate  . . . . . . . 40
  3471.         RalGet  . . . . . . . . . . 40
  3472.         RaLog . . . . . . . . . . . 41
  3473.         RaNodeNr  . . . . . . . . . 30
  3474.         RaPageStat  . . . . . . 41, 43
  3475.         RaResetFlags  . . . . . . . 41
  3476.         RaSetPageStat . . . . . . . 42
  3477.         RaSetSecurity . . . . . . . 43
  3478.         RASTRUCT.PAS  . . . . . . . 29
  3479.         RaSystem  . . . . . . . . . 31
  3480.         RaYell  . . . . . . . . 38, 43
  3481.         Read(ln)  . . . . . . . . . 16
  3482.         ReadKey . . . . . . 16, 27, 62
  3483.         Registration  . . . . . . . 26
  3484.         RightJust . . . . . . . . . 52
  3485.         RightJustChar . . . . . . . 52
  3486.         Runtime errors  . . . . . . 84
  3487.         SHARE.EXE . . . . . . . . . 71
  3488.         ShareInstalled  . . . . . . 71
  3489.         ShareWare . . . . . . . . .  6
  3490.         SLowCase  . . . . . . . . . 53
  3491.         Sound . . . . . . . . . . . 17
  3492.         Statusline  . . . . . . . . 26
  3493.         Statuslines . . . . . .  6, 61
  3494.         SUpCase . . . . . . . . . . 53
  3495.         SYS60.TPU . . . . . . . . .  5
  3496.         Sysop keys  . . . . . . . . 61
  3497.         Sysop next  . . . . . . . . 64
  3498.         TextAttr  . . . . . . . . . 31
  3499.         TextBackGround  . . . . . . 17
  3500.         TextColor . . . . . . . 18, 75
  3501.         Textfile codes  . . . . 74, 86
  3502.         THANKS  . . . . . . . . . . 80
  3503.         TimeStr . . . . . . . . . . 54
  3504.         ToDec . . . . . . . . . . . 54
  3505.         ToHex . . . . . . . . . . . 54
  3506.         Trim  . . . . . . . . . . . 55
  3507.         TrimLeft  . . . . . . . . . 55