home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / amiga / Serial.def < prev    next >
Encoding:
Text File  |  1993-11-03  |  5.2 KB  |  122 lines

  1. DEFINITION FOR AMIGALIB MODULE Serial ;
  2.  
  3. FROM SYSTEM IMPORT SHORTSET ;
  4. FROM Exec   IMPORT CMD_NONSTD, IOStdReq ;
  5.  
  6. TYPE
  7. (* array of termination char's       *)
  8. (* to use,see serial.doc setparams *)
  9.  
  10.   IOTArrayPtr = POINTER TO IOTArray ;
  11.   IOTArray = RECORD
  12.     TermArray0 : LONGINT ;
  13.     TermArray1 : LONGINT ;
  14.   END ;
  15.  
  16. CONST
  17.   SER_DEFAULT_CTLCHAR = 11130000H ; (* default chars for xON,xOFF *)
  18.  
  19. (* You may change these via SETPARAMS.    At this time, parity is not    *)
  20. (* calculated for xON/xOFF characters.    You must supply them with the    *)
  21. (* desired parity.                            *)
  22.  
  23. (************************************************************************)
  24. (*                                    *)
  25. (* CAUTION !!  IF YOU ACCESS the serial.device, you MUST (!!!!) use an  *)
  26. (* IOExtSer-sized structure or you may overlay innocent memory !!    *)
  27. (*                                    *)
  28. (************************************************************************)
  29.  
  30. TYPE
  31.   IOExtSerPtr = POINTER TO IOExtSer ;
  32.   IOExtSer = RECORD
  33.     IOSer     : IOStdReq  ;
  34.     io_CtlChar     : LONGINT   ; (* control char's (order = xON,xOFF,INQ,ACK)   *)
  35.     io_RBufLen     : LONGINT   ; (* length in bytes of serial port's read buffer*)
  36.     io_ExtFlags     : LONGINT   ; (* additional serial flags (see bitdefs below) *)
  37.     io_Baud     : LONGINT   ; (* baud rate requested (true baud)          *)
  38.     io_BrkTime     : LONGINT   ; (* duration of break signal in MICROseconds    *)
  39.     io_TermArray : IOTArray  ; (* termination character array              *)
  40.     io_ReadLen     : SHORTCARD ; (* bits per read character (# of bits)          *)
  41.     io_WriteLen     : SHORTCARD ; (* bits per write character (# of bits)          *)
  42.     io_StopBits     : SHORTCARD ; (* stopbits for read (# of bits)              *)
  43.     io_SerFlags     : SHORTSET  ; (* see SerFlags bit definitions below          *)
  44.     io_Status     : CARDINAL  ;
  45.   END ;
  46.  
  47. (* status of serial port, as follows:                          *)
  48. (*           BIT    ACTIVE    FUNCTION                      *)
  49. (*            0     ---    reserved                      *)
  50. (*            1     ---    reserved                      *)
  51. (*            2     high    Connected to parallel "select" on the A1000.  *)
  52. (*                Connected to both the parallel "select" and   *)
  53. (*                serial "ring indicator" pins on the A500 &    *)
  54. (*                A2000.    Take care when making cables.          *)
  55. (*            3     low    Data Set Ready                      *)
  56. (*            4     low    Clear To Send                      *)
  57. (*            5     low    Carrier Detect                      *)
  58. (*            6     low    Ready To Send                      *)
  59. (*            7     low    Data Terminal Ready                  *)
  60. (*            8     high    read overrun                      *)
  61. (*            9     high    break sent                      *)
  62. (*           10     high    break received                      *)
  63. (*           11     high    transmit x-OFFed                  *)
  64. (*           12     high    receive x-OFFed                      *)
  65. (*        13-15        reserved                      *)
  66.  
  67. CONST
  68.   SDCMD_QUERY        = CMD_NONSTD ;
  69.   SDCMD_BREAK        = CMD_NONSTD + 1 ;
  70.   SDCMD_SETPARAMS    = CMD_NONSTD + 2 ;
  71.  
  72.   SERB_XDISABLED    =  7  ;    (* io_SerFlags xOn-xOff feature disabled bit *)
  73.   SERF_XDISABLED    = {7} ;    (*    "        xOn-xOff feature disabled mask   *)
  74.   SERB_EOFMODE        =  6  ;    (*    "        EOF mode enabled bit         *)
  75.   SERF_EOFMODE        = {6} ;    (*    "        EOF mode enabled mask         *)
  76.   SERB_SHARED        =  5  ;    (*    "        non-exclusive access bit         *)
  77.   SERF_SHARED        = {5} ;    (*    "        non-exclusive access mask         *)
  78.   SERB_RAD_BOOGIE    =  4  ;    (*    "        high-speed mode active bit       *)
  79.   SERF_RAD_BOOGIE    = {4} ;    (*    "        high-speed mode active mask      *)
  80.   SERB_QUEUEDBRK    =  3  ;    (*    "        queue this Break ioRqst         *)
  81.   SERF_QUEUEDBRK    = {3} ;    (*    "        queue this Break ioRqst         *)
  82.   SERB_7WIRE        =  2  ;    (*    "        RS232 7-wire protocol         *)
  83.   SERF_7WIRE        = {2} ;    (*    "        RS232 7-wire protocol         *)
  84.   SERB_PARTY_ODD    =  1  ;    (*    "        parity feature enabled bit         *)
  85.   SERF_PARTY_ODD    = {1} ;    (*    "        parity feature enabled mask         *)
  86.   SERB_PARTY_ON        =  0  ;    (*    "        parity-enabled bit             *)
  87.   SERF_PARTY_ON        = {0} ;    (*    "        parity-enabled mask             *)
  88.  
  89. (* These now refect the actual bit positions in the io_Status UWORD *)
  90.  
  91.   IO_STATB_XOFFREAD    =  12 ;    (* io_Status receive currently xOFF'ed bit    *)
  92.   IO_STATF_XOFFREAD    = {12}; (*     "     receive currently xOFF'ed mask *)
  93.   IO_STATB_XOFFWRITE    =  11 ;    (*     "     transmit currently xOFF'ed bit *)
  94.   IO_STATF_XOFFWRITE    = {11}; (*     "     transmit currently xOFF'ed mask*)
  95.   IO_STATB_READBREAK    =  10 ;    (*     "     break was latest input bit     *)
  96.   IO_STATF_READBREAK    = {10}; (*     "     break was latest input mask    *)
  97.   IO_STATB_WROTEBREAK    =  9  ;    (*     "     break was latest output bit    *)
  98.   IO_STATF_WROTEBREAK    = {9} ; (*     "     break was latest output mask   *)
  99.   IO_STATB_OVERRUN    =  8  ;    (*     "     status word RBF overrun bit    *)
  100.   IO_STATF_OVERRUN    = {8} ; (*     "     status word RBF overrun mask   *)
  101.  
  102.  
  103.   SEXTB_MSPON        = 1  ;    (* io_ExtFlags. Use mark-space parity,   *)
  104.                 (*        instead of odd-even.     *)
  105.   SEXTF_MSPON        = 2  ;    (*    "        mark-space parity mask     *)
  106.   SEXTB_MARK        = 0  ;    (*    "        if mark-space, use mark     *)
  107.   SEXTF_MARK        = 1  ;    (*    "        if mark-space, use mark mask *)
  108.  
  109.   SerErr_DevBusy    = 1  ;
  110.   SerErr_BufErr        = 4  ;    (* Failed to allocate new read buffer *)
  111.   SerErr_InvParam     = 5  ;
  112.   SerErr_LineErr    = 6  ;
  113.   SerErr_ParityErr      = 9  ;
  114.   SerErr_TimerErr    = 11 ;    (* (See the serial/OpenDevice autodoc)*)
  115.   SerErr_BufOverflow    = 12 ;
  116.   SerErr_NoDSR        = 13 ;
  117.   SerErr_DetectedBreak  = 15 ;
  118.  
  119.   SERIALNAME        = "serial.device" ;
  120.  
  121. END Serial.
  122.