home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / languages / obrn-a_1.5_lib.lha / oberon-a / source2.lha / source / amiga / Serial.mod < prev    next >
Encoding:
Text File  |  1995-01-26  |  5.0 KB  |  136 lines

  1. (**************************************************************************
  2.  
  3.      $RCSfile: Serial.mod $
  4.   Description: external declarations for the serial device
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.7 $
  8.       $Author: fjc $
  9.         $Date: 1995/01/26 02:39:55 $
  10.  
  11.   $VER: serial.h 33.6 (6.11.90)
  12.   Includes Release 40.15
  13.  
  14.   (C) Copyright 1985-1993 Commodore-Amiga, Inc.
  15.       All Rights Reserved
  16.  
  17.   Oberon-A interface Copyright © 1994-1995, Frank Copeland.
  18.   This file is part of the Oberon-A Interface.
  19.   See Oberon-A.doc for conditions of use and distribution.
  20.  
  21. ***************************************************************************)
  22.  
  23. <* STANDARD- *> <* INITIALISE- *> <* MAIN- *>
  24.  
  25. MODULE [2] Serial;
  26.  
  27. <*$ CaseChk-  IndexChk- LongVars+ NilChk-  *>
  28. <*$ RangeChk- StackChk- TypeChk-  OvflChk- *>
  29.  
  30. IMPORT e := Exec, s := Sets;
  31.  
  32.  
  33.                    (* array of termination char's *)
  34.                    (* to use,see serial.doc setparams *)
  35.  
  36. TYPE
  37.  
  38.   IOTArrayPtr * = POINTER TO IOTArray;
  39.   IOTArray * = ARRAY 8 OF CHAR;
  40.  
  41. CONST
  42.  
  43.   defaultCtlChar * = 11130000H;  (* default chars for xON,xOFF *)
  44.  
  45. (* You may change these via SETPARAMS.  At this time, parity is not
  46.    calculated for xON/xOFF characters.  You must supply them with the
  47.    desired parity. *)
  48.  
  49. (******************************************************************)
  50. (* CAUTION !!  IF YOU ACCESS the serial.device, you MUST (!!!!) use an
  51.    IOExtSer-sized structure or you may overlay innocent memory !! *)
  52. (******************************************************************)
  53.  
  54. TYPE
  55.  
  56.   IOExtSerPtr * = POINTER TO IOExtSer;
  57.   IOExtSer * = RECORD (e.IORequestBase)
  58.     ioSer *     : e.IOStdReq;
  59.     ctlChar *   : e.ULONG;  (* control char's (order = xON,xOFF,INQ,ACK) *)
  60.     rBufLen *   : e.ULONG;  (* length in bytes of serial port's read buffer *)
  61.     extFlags *  : s.SET32;  (* additional serial flags (see bitdefs below) *)
  62.     baud *      : e.ULONG;  (* baud rate requested (true baud) *)
  63.     brkTime *   : e.ULONG;  (* duration of break signal in MICROseconds *)
  64.     termArray * : IOTArray; (* termination character array *)
  65.     readLen *   : SHORTINT;  (* bits per read character (# of bits) *)
  66.     writeLen *  : SHORTINT;  (* bits per write character (# of bits) *)
  67.     stopBits *  : SHORTINT;  (* stopbits for read (# of bits) *)
  68.     serFlags *  : s.SET8;   (* see SerFlags bit definitions below  *)
  69.     status *    : s.SET16;
  70.   END; (* IOExtSer *)
  71.  
  72.    (* status of serial port, as follows:
  73. *                  BIT  ACTIVE  FUNCTION
  74. *                   0    ---    reserved
  75. *                   1    ---    reserved
  76. *                   2    high   Connected to parallel "select" on the A1000.
  77. *                               Connected to both the parallel "select" and
  78. *                               serial "ring indicator" pins on the A500
  79. *                               & A2000.  Take care when making cables.
  80. *                   3    low    Data Set Ready
  81. *                   4    low    Clear To Send
  82. *                   5    low    Carrier Detect
  83. *                   6    low    Ready To Send
  84. *                   7    low    Data Terminal Ready
  85. *                   8    high   read overrun
  86. *                   9    high   break sent
  87. *                  10    high   break received
  88. *                  11    high   transmit x-OFFed
  89. *                  12    high   receive x-OFFed
  90. *               13-15           reserved
  91. *)
  92.  
  93. CONST
  94.  
  95.   query     * =     e.nonstd;     (* $09 *)
  96.   break     * =     e.nonstd+1;   (* $0A *)
  97.   setParams * =     e.nonstd+2;   (* $0B *)
  98.  
  99.  
  100.   xDisabled  * = 7;       (* ioSerFlags xOn-xOff feature disabled bit *)
  101.   eofMode    * = 6;       (*    "     EOF mode enabled bit *)
  102.   shared     * = 5;       (*    "     non-exclusive access bit *)
  103.   radBoogie  * = 4;       (*    "     high-speed mode active bit *)
  104.   queuedBrk  * = 3;       (*    "     queue this Break ioRqst *)
  105.   sevenWire  * = 2;       (*    "     RS232 7-wire protocol *)
  106.   partyOdd   * = 1;       (*    "     parity feature enabled bit *)
  107.   partyOn    * = 0;       (*    "     parity-enabled bit *)
  108.  
  109. (* These now refect the actual bit positions in the ioStatus UWORD *)
  110.   xOffRead *   = 12;     (* ioStatus receive currently xOFF'ed bit *)
  111.   xOffWrite *  = 11;     (*    "     transmit currently xOFF'ed bit *)
  112.   readBreak *  = 10;     (*    "     break was latest input bit *)
  113.   wroteBreak * = 9;      (*    "     break was latest output bit *)
  114.   overRun *    = 8;      (*    "     status word RBF overrun bit *)
  115.  
  116.  
  117.   mSpOn     * = 1;       (* ioExtFlags. Use mark-space parity, *)
  118.                          (*          instead of odd-even. *)
  119.   mark      * = 0;       (*    "     if mark-space, use mark *)
  120.  
  121.  
  122.   devBusy         * = 1;
  123.   baudMismatch    * = 2; (* baud rate not supported by hardware *)
  124.   bufErr          * = 4; (* Failed to allocate new read buffer *)
  125.   invParam        * = 5;
  126.   lineErr         * = 6;
  127.   parityErr       * = 9;
  128.   timerErr       * = 11; (*(See the serial/OpenDevice autodoc)*)
  129.   bufOverflow    * = 12;
  130.   noDSR          * = 13;
  131.   detectedBreak  * = 15;
  132.  
  133.   serialName * = "serial.device";
  134.  
  135. END Serial.
  136.