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

  1. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*-
  2.  
  3.                       ▄▄▄▄▄▄      ▄▄▄     ▄▄▄▄▄     ▄▄   ▄▄
  4.                       ▄▄   ▄▄    ▄▄ ▄▄    ▄▄  ▄▄    ▄▄   ▄▄
  5.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  6.                       ▄▄▄▄▄▄    ▄▄   ▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  7.                       ▄▄   ▄▄   ▄▄▄▄▄▄▄   ▄▄   ▄▄   ▄▄   ▄▄
  8.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄  ▄▄    ▄▄   ▄▄
  9.                       ▄▄   ▄▄   ▄▄   ▄▄   ▄▄▄▄▄      ▄▄▄▄▄ 
  10.  
  11.                       Remote   Access   Door   Unit   v1.10
  12.  
  13.                (c) 1990,91 by In Fase Productions, The Netherlands
  14.  
  15.                            Written and compiled using
  16.  
  17.                           Turbo pascal v5.5 and v6.0 by
  18.  
  19.                                  Richard Faasen,
  20.  
  21.                  Sysop of In Fase BBS +31-1840-10261 [2:285/311]
  22.  
  23.                           Release date: 21 november 1991
  24.  
  25. -*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  26.  
  27. {$A+,B-,D-,E-,F-,I+,L-,N-,O-,R-,S-,V-}
  28.  
  29. Unit RADU;
  30.  
  31. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  32. Interface
  33. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  34.  
  35. {$I RaStruct}
  36. {$I RAL}
  37.  
  38. Type
  39.   CharSet     = Set of Char;                              { Used by LineEdit }
  40.   UOnString   = String[70];                           { Used by UOn routines }
  41.  
  42. Var
  43.   ChatStr     : String;                          { Displayed at chat-startup }
  44.   ChatEndStr  : String;                      { Displayed at chat-termination }
  45.   CrtInput    : Text;                               { Use to read local only }
  46.   CrtOutput   : Text;                              { Use to write local only }
  47.   DorAnsi     : Boolean;                   { True if user has ANSI turned on }
  48.   DorAvatar   : Boolean;                 { True if user has AVATAR turned on }
  49.   DorCheckIdle: Boolean;                  { Check keyboard inactivity on/off }
  50.   DorCommPort : Byte;                                { COM port connected to }
  51.   DorExtCheck : Boolean;                  { True if ext keys must be checked }
  52.   DorExtKeys  : Array[0..150] of Procedure;   { Procedures for extended keys }
  53.   DorFrozen   : Boolean;                     { True if time should be frozen }
  54.   DorIsLocal  : Boolean;                         { True if locally logged on }
  55.   DorMinute   : Procedure (TimeLeft : Word);       { Points to your own proc }
  56.   DorNullProc : Procedure;                       { Dummy to clear DorExtKeys }
  57.   DorPath     : String;                        { Full path to door .EXE file }
  58.   DorSysopKey : Boolean;     { True if last key returned was pressed locally }
  59.   DorTimeOut  : Function (KeyIdle : Word) : Boolean;    { Points to own proc }
  60.   DvActive    : Boolean;                     { True if DESQview was detected }
  61.   DvVer       : Word;                                  { Version of DESQview }
  62.   DvVidSeg    : Word;                                { Screen segment to use }
  63.   ExitInfo    : ExitInfoRecord;                { Holds EXITINFO.BBS contents }
  64.   Language    : LanguageRecord;          { Holds info for requested language }
  65.   RaNodeNr    : Byte;                                          { Line number }
  66.   RaConfig    : ConfigRecord;                 { Where CONFIG.RA is stored in }
  67.   RaSystem    : String;                        { Path to RA system directory }
  68.   ShareInstalled: Boolean;                  { TRUE if SHARE.EXE is installed }
  69.   TextAttr    : Byte;               { Current attribute. Please DON'T modify }
  70.  
  71.  
  72. Const
  73.   Black       = 0;                         { Constants for CRT compatibility }
  74.   Blue        = 1;
  75.   Green       = 2;
  76.   Cyan        = 3;
  77.   Red         = 4;
  78.   Magenta     = 5;
  79.   Brown       = 6;
  80.   LightGray   = 7;
  81.   DarkGray    = 8;
  82.   LightBlue   = 9;
  83.   LightGreen  = 10;
  84.   LightCyan   = 11;
  85.   LightRed    = 12;
  86.   LightMagenta= 13;
  87.   Yellow      = 14;
  88.   White       = 15;
  89.   Blink       = 128;
  90.  
  91.   { Constant to create your own status line }
  92.  
  93.   DorStatLn   : Array[8..9,1..2] of String[80] =
  94.           (('',''),
  95.            ('ALT: [C]hat [G]arbage [H]angup [L]ockOut [N]extOn [Q]uit to BBS',
  96.             '     [S]ecurity [O]verride Paging  '+#24+'-Inc Time '+#25+
  97.             '-Dec Time  [F1]-[F7]=Extra Stats'));
  98.  
  99.   PagingHours = 1;              { Constants for RaPageStat and RaSetPageStat }
  100.   PagingOff   = 2;
  101.   PagingOn    = 3;
  102.  
  103.   ReadMode      = 0;                         { Constants for System.FileMode }
  104.   WriteMode     = 1;
  105.   ReadWriteMode = 2;
  106.  
  107.   DenyAll       = $10;
  108.   DenyWrite     = $20;
  109.   DenyRead      = $30;
  110.   DenyNone      = $40;
  111.   Inheritance   = $80;
  112.  
  113.   ChatSysopStr  : String = '`a12:';
  114.   ChatUserStr   : String = '`a3:';
  115.  
  116. { Radu procedures/functions }
  117. Procedure DorInit;           { Initialize RADU, must be run to activate RADU }
  118.  
  119.  
  120. { CRT compatible routines }
  121. Procedure ClrEol;                        { Local/remote clear to end of line }
  122. Procedure ClrScr;                                { Local/remote clear screen }
  123. Procedure Delay (MS: Word);                       { DV-Aware Delay procedure }
  124. Procedure DelLine;                               { Local/remote delete line. }
  125. Procedure GotoXY (X,Y : Byte);                         { Local/remote gotoxy }
  126. Procedure HighVideo;                                { Local/remote HighVideo }
  127. Procedure InsLine;                                { Local/remote insert line }
  128. Function  KeyPressed : Boolean;                      { True if key in buffer }
  129. Procedure LowVideo;                                  { Local/remote LowVideo }
  130. Procedure NormVideo;                                { Local/remote NormVideo }
  131. Procedure NoSound;                                     { Same as CRT.NoSound }
  132. Function  ReadKey : Char;           { Returns key from local/remote keyboard }
  133. Procedure Sound (Hz: Word);         { Same as CRT.Sound when PRA.RaYell=True }
  134. Procedure TextBackground(Color: Byte); { Local/remote BackGroundColor change }
  135. Procedure TextColor(Color: Byte);            { Local/Remote TextColor change }
  136. Function  WhereX : Byte;                                { Same as CRT.WhereX }
  137. Function  WhereY : Byte;                                { Same as CRT.WhereY }
  138. Procedure Window (X1,Y1,X2,Y2 : Byte);                        { Does nothing }
  139.  
  140.  
  141. { Some specific door routines }
  142. Function  CtlRead (Var Fil : Text;Var Line : Word;Var Ident,Value : String)
  143.           : Boolean;                                   { CTL reading routine }
  144. Procedure DorChangeTime (Delta : Integer);          { Increase/Decrease time }
  145. Procedure DorChat;                                         { Invoke chatmode }
  146. Function  DorDisplay (Name,Abort : String;More : Boolean) : Char; { Disp txt }
  147. Function  DorLineEdit (Var S :String;Len : Byte;Legal,Abort : CharSet;
  148.           Pad : Char) : Char;                  { Editable line input routine }
  149. Procedure DorRefresh;                                   { Refresh the screen }
  150. Procedure DorStatus (Nr : Byte); { Select which statusline must be displayed }
  151. Procedure DupWrite (Ch : Char;Times : Byte);     { Write char multiple times }
  152. Procedure Exec(Path, CmdLine: string);         { Execute sub-door in a shell }
  153.  
  154.  
  155. { Routines specific to Remote Access }
  156. Function  Byte2Flags (B : Byte) : String;       { Convert byte to flag-style }
  157. Function  DorPage (SysAbort,UsrAbort,PageFile : String) : Char; { Page sysop }
  158. Function  RaCheckFlags (Fl : FlagType;Witch : String) : Boolean; { Chk flags }
  159. Function  RaCmpFlags (FlUser,Fl : FlagType) : Boolean;       { Compare flags }
  160. Function  RaFormatDate (D : Date;Format : Byte) : String;  { Format Date var }
  161. Function  RalGet (Nr : Word) : String;            { Get entry from .RAL file }
  162. Procedure RaLog (S : String);                         { make an RA.LOG entry }
  163. Function  RaPageStat : Byte;                               { Get page status }
  164. Procedure RaResetFlags (Var Fl : FlagType;Witch : String);     { Reset flags }
  165. Procedure RaSetFlags (Var Fl : FlagType;Witch : String);         { Set flags }
  166. Procedure RaSetPageStat (Status : Byte);                    { Set pageStatus }
  167. Procedure RaSetSecurity (NewSec : Word);             { Change security level }
  168. Function  RaYell : Boolean;             { Returns true when sound is allowed }
  169.  
  170.  
  171. { Hotkey routines }
  172. Procedure DorCleanKeys;                         { Clean all keyboard buffers }
  173. Procedure DorSetHotKeys (Hot : String);                 { Set hotkeys to use }
  174. Function  GetKey (Legal : String) : Char;             { Wait for certain key }
  175. Function  GetYesNo (Default : Boolean) : Boolean; { Wait for Y/N in used lng }
  176. Function  HotKeyPressed : Boolean;  { As "KeyPressed", but checks for hotkey }
  177. Function  HotReadKey : Char;          { As "ReadKey", but reads only hotkeys }
  178.  
  179.  
  180. { Non-door routines }
  181. Function  ASCIIZToStr (Var NullStr) : String;  { Conv Null terminated to str }
  182. Function  DateStr : Date;                                   { Date to string }
  183. Function  Dup (C : Char;T : Byte) : String;       { Duplicate char C T times }
  184. Procedure FastWrite (X,Y : Byte;S : String80);         { Direct screen write }
  185. Function  ForceBack (Path : String) : String;    { Force backslash if needed }
  186. Function  FStr (N : LongInt) : String;           { The same as Str procedure }
  187. Function  FVal (S : String) : LongInt;               { Same as Val procedure }
  188. Function  LastChar (S : String) : Char;        { Returns last char of String }
  189. Function  LeftJust (S : String;Len : Byte) : String;  { LJustify with spaces }
  190. Function  LeftJustChar (S : String;Len : Byte;C : Char) : String; { LJustify }
  191. Function  LowCase (C : Char) : Char;             { Change char to lower case }
  192. Function  RightJust (S : String;Len : Byte) : String; { RJustify with spaces }
  193. Function  RightJustChar (S : String;Len : Byte;C : Char) : String;{ RJustify }
  194. Function  SLowCase (S : String) : String;      { Change string to lower case }
  195. Function  SUpCase (S : String) : String;                { UpCase for strings }
  196. Function  TimeStr (WithSec,WithHS : Boolean) : String15;    { Time to string }
  197. Function  ToDec (Hex : String) : Byte;         { Conv hex string to dec byte }
  198. Function  ToHex (Dec : Byte) : String;    { Conv decimal byte to 2 digit hex }
  199. Function  Trim (S : String) : String;                  { Same for both sides }
  200. Function  TrimLeft (S : String) : String;      { Removes whitespaces on left }
  201. Function  TrimRight (S : String) : String;        { Same for trailing spaces }
  202.  
  203.  
  204. { Direct access to the FOSSIL }
  205. Function  FosCarrier : Boolean;                       { Is CARRIER detected? }
  206. Procedure FosFlushOutput;                      { Wait until all data is send }
  207. Function  FosInReady : Boolean;                         { Is char available? }
  208. Procedure FosPurgeInput;                               { Delete input buffer }
  209. Procedure FosPurgeOutput;                             { Delete output buffer }
  210. Function  FosRead : Char;                           { Receive/wait character }
  211. Procedure FosSend (C : Char);                             { Send a character }
  212. Procedure FosSendStr (S : String);             { Send a string to the fossil }
  213. Procedure FosSetDTR (State : Boolean);               { Raise/lower DTR state }
  214.  
  215.  
  216. { DESQview support }
  217. Procedure DvPause;                              { Give time to other process }
  218. Procedure DvStartCritical;                          { Start critical section }
  219. Procedure DvStopCritical;                            { Stop critical section }
  220.  
  221.  
  222. { Multi-line routines }
  223. Procedure DorSendMessage (LineNr : Byte);       { Send message to other node }
  224. Procedure LockRecords (Var F;StartRec,NumRec : LongInt);              { Lock }
  225. Function  LockResult : Byte;         { Returns the status of (un)lock action }
  226. Procedure UnLockRecords (Var F;StartRec,NumRec : LongInt);          { UnLock }
  227. Procedure UOnClear;                                    { Clear UserDoes file }
  228. Function  UOnGet (Line : Byte) : UOnString;      { Get what someone is doing }
  229. Procedure UOnSet (What : UOnString);                { Set what user is doing }
  230.  
  231. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  232. Implementation
  233. (*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-*)
  234.