home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / rt11pascal.zip / rtglob.pas < prev    next >
Pascal/Delphi Source File  |  1984-05-22  |  7KB  |  222 lines

  1. CONST
  2.  
  3. { standard file descriptors. subscripts in open, etc. }
  4.     STDIN = 1;    { these are not to be changed }
  5.     STDOUT = 2;
  6.     STDERR = 3;
  7.     DL11LINE = 4;
  8.     BINARYFILE = 5;
  9.  
  10. { other io-related stuff }
  11.  
  12.     IOERROR = 0;    { status values for open files }
  13.     IOAVAIL = 1;
  14.     IOREAD = 2;
  15.     IOWRITE = 3;
  16.     IOLINE = 4;
  17.  
  18.     MAXOPEN = 7;    { maximum number of open files }
  19.         MAXCMD  = 10;   { maximun number of arguments }
  20.  
  21. { universal manifest constants }
  22.     ENDFILE = MaxInt;     { Cannot be -1 }
  23.     ENDSTR = 256;        { Cannot be 0    }
  24.     MAXSTR = 100;        { longest possible string }
  25.     CONLENGTH = 20;        { length of constant string }
  26.     BLKSIZE = 512;        { Block Size for files }
  27.  
  28.  
  29. { ascii character set in decimal }
  30. { used by KERMIT                 }
  31.  
  32.     NULLCHAR  = 0;
  33.     SOH = 1;               { SOH }
  34.     BACKSPACE = 8;
  35.     TAB = 9;
  36.     NEWLINE = 10;        { LF }
  37.     CR = 13;              { CR }
  38.     BLANK = 32;
  39.     SHARP = 35;        { # }
  40.     AMPER = 38;        { & }
  41.     PERIOD = 46;        { . }
  42.     COLON = 58;        { : }
  43.     LESS = 60;        { < }
  44.     GREATER = 62;        { > }
  45.     QUESTION = 63;        { ? }
  46.       DEL = 127;             { rubout }
  47.  
  48. { Constants for KERMIT }
  49.  
  50.    DEFTRY       = 5;       { default for number of retries }
  51.    DEFITRY      = 15;      { default for number of retries on init }
  52.    DEFTIMEOUT   = 12;      { default time out }
  53.    MAXPACK      = 94;      { max is 94 ~ - ' ' }
  54.    DEFDELAY     = 5;       { delay before sending first init }
  55.    NUMPARAM     = 7;       { number of parameters in init packet }
  56.    DEFQUOTE     = SHARP;   { default quote character  }
  57.    DEFPAD       = 0;       { default number OF padding chars  }
  58.    DEFPADCHAR   = 0;       { default padding character  }
  59.    DEF8CHAR    = AMPER;   { default 8 Bit Quote Character }
  60.  
  61. { packet types }
  62.  
  63.    TYPEB  = 66; { ord('B') }
  64.    TYPED  = 68; { ord('D') }
  65.    TYPEE  = 69; { ord('E') }
  66.    TYPEF  = 70; { ord('F') }
  67.    TYPEN  = 78; { ord('N') }
  68.    TYPES  = 83; { ord('S') }
  69.    TYPET  = 84; { ord('T') }
  70.    TYPEY  = 89; { ord('Y') }
  71.    TYPEZ  = 90; { ord('Z') }
  72.  
  73.  
  74. { Command parser constants }
  75.  
  76.    SMALLSIZE = 13;
  77.    LARGESIZE = 80;
  78.    MINPACKETSIZE = 10;
  79.    MAXPACKETSIZE = 94;
  80.  
  81.    oON = 21;
  82.    oOFF = 22;
  83.    oEVEN = 31;
  84.    oODD = 32;
  85.    oNONE = 33;
  86.  
  87.  
  88. TYPE
  89.  
  90.     character = -128..MaxInt;  { byte-sized. ascii + other stuff }
  91.     string = array [1..MAXSTR] of character;
  92.     string100 = PACKED ARRAY[1..MAXSTR] of char;
  93.     cstring = PACKED ARRAY [1..CONLENGTH] OF char;
  94.  
  95.     filedesc = IOERROR..MAXOPEN;
  96.     ioblock = record    { to keep track of open files }
  97.         filevar : text;
  98.         mode : -IOWRITE..IOLINE;
  99.     end;
  100.     block = array[1..BLKSIZE] of char;
  101.     binfile = file of block;
  102.  
  103. { Data Types for Kermit }
  104.  
  105.  
  106.    Packet = RECORD
  107.                mark : character;       { SOH character }
  108.                count: character;       { # of bytes following this field }
  109.                seq  : character;       { sequence number modulo 64  }
  110.                ptype: character;       { d,y,n,s,b,f,z,e,t  packet type }
  111.                data : string;          { the actual data }
  112. { chksum is last validchar in data array }
  113. { eol is added, not considered part of packet proper }
  114.             END;
  115.  
  116.    Command = (Transmit,Receive,SetParm,Connect,Invalid,Alldone);
  117.  
  118.    KermitStates = (FileData,Init,Break,FileHeader,EOFile,Complete,Abort);
  119.  
  120.    EOLtype = (LineFeed,CrLf,JustCr);
  121.  
  122.    Stats = real;
  123.  
  124.    Ppack = ^Packet;
  125.  
  126.    InType = (nothing,CRin,abortnow);
  127.  
  128.    TypeOfBinary = (NotSupported,FullBinary,Quoted);
  129.  
  130.    {  Parser defined types }
  131.  
  132.    string13 = packed array [1..SMALLSIZE] of char;
  133.    string80 = packed array [1..LARGESIZE] of char;
  134.  
  135. VAR
  136.  
  137.    { for system }
  138.  
  139.    openlist : ARRAY [1..MAXOPEN] OF ioblock; { open files }
  140.    redirect : ARRAY [STDIN..STDOUT] OF filedesc;
  141.    cmdargs  : 0..MAXCMD;
  142.    cmdlin   : string;
  143.    cmdidx   : ARRAY [1..MAXCMD] OF 1..MAXSTR;
  144.    bfile    : binfile;
  145.    binbuffer : block;
  146.    bptr    :  integer;
  147.  
  148.    { Varibles for Kermit }
  149.  
  150.    DiskFile : filedesc;  { File being read/written }
  151.    SaveState : kermitstates;
  152.    NextArg  : integer;   { next argument to process }
  153.    local    : boolean;   { local/remote flag }
  154.    MaxTry   : integer;
  155.    n        : integer;   { packet number }
  156.    NumTry   : integer;   { times this packet retried }
  157.    OldTry   : integer;
  158.    Pad      : integer;    { padding to send }
  159.    MyPad    : integer;    { number of padding characters I need }
  160.    PadChar  : character;
  161.    MyPadChar: character;
  162.    RunType  : command;
  163.    State    : kermitstates; { current state of the automaton }
  164.    MyTimeOut:  integer;     { when i want to be timed out }
  165.    TheirTimeOut  : integer;
  166.    Delay    : integer;
  167.    LineIN,LineOUT : filedesc; { Line to other KERMIT }
  168.    SizeRecv, SizeSend : integer;
  169.    SendEOL, SendQuote : character;
  170.    myEOL,myQuote: character;
  171.    QuoteForBinary : character;
  172.    BinaryMode : TypeOfBinary;
  173.    Def8QuoteMode : character;  { default 8 Bit Mode is Y or AMPER  
  174.                    this the one we send when starting transmit }
  175.    EOLforFile : EOLtype;
  176.    NumSendPacks : integer;
  177.    NumRecvPacks : integer;
  178.    NumACK : integer;
  179.    NumNAK : integer;
  180.    NumACKrecv : integer;
  181.    NumNAKrecv : integer;
  182.    NumBADrecv : integer;
  183.    RunTime: integer;
  184.    ChInFileSend, ChInPackSend, ChInFileRecv, ChInPackRecv : Stats;
  185.    Verbosity: boolean;     { true to print verbose messages }
  186.    OneWayOnly : boolean;   { used for testing }
  187.    Debug : boolean;
  188.  
  189.    ThisPacket : Ppack; { current packet being sent }
  190.    LastPacket : Ppack; { last packet sent }        
  191.    CurrentPacket : Ppack; { current packet received }
  192.    NextPacket : Ppack; { next packet being received }
  193.    InputPacket : Ppack; { save input to do debug }
  194.  
  195.    TimeLeft : integer; { until Time_Out }
  196.  
  197.    { these are used for the Receive Packet Procedures }
  198.  
  199.    FromConsole : InType;   { input from Console during receive }
  200.    check: integer;    { Checksum }
  201.    PacketPtr : integer; { pointer to InputPacket }
  202.    dataptr : integer;    { pointer to data of Packet }
  203.    fld : 0..5;        { current fld number }
  204.    t : character;    { input character }
  205.    finished : boolean;    { finished packet ? }
  206.    restart : boolean;    { restart packet ? }
  207.    control : boolean;    { quoted ? }
  208.    ishigh : integer;    { shift to put high bit on }
  209.    isgood : boolean;    { packet is good  ? }
  210.  
  211.    invalidConnection : boolean;
  212.  
  213.    {  Parser defined variables }
  214.  
  215.     commandLine, fileSpec : string80;
  216.     exitProgram,fileWarning : boolean;
  217.     localEcho, sFileSpec, rFileSpec, fileWarn, lSpeed : integer;
  218.     debugging, commandLen, fileEol, parity, eightBitQuoting : integer;
  219.     oldRunType : command;
  220.  
  221.  
  222.