|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 13056 (0x3300) Types: TextFile Names: »hlvlamref«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »hlvlamref«
>hc ü >sp20 >ul RC3502 LAM108/116 DRIVER >sp2 >ul Preliminary Driver Reference Manual. >np >a1 General Description. >sp2 The RC3502 LAM-driver supports full duplex V.24 asynchronous communication on 8 or 16 lines with transmission speed selectable between 110 bps and 1200 bps on a per line basis. The driver supports program controlled >sp1 - echoing, - input continued, i.e. collection of characters received before an input buffer arrives, - input conversion, - timeout monitoring, - modem control, - conversion table sharing between lines. >sp1 Lines are numbered 0 to 7 or 0 to 15 for both input and output lines. >a1 Messages and Answers. >sp2 All messages are signalled to the LAM-driver general semaphore and all answers are returned to the answer semaphore except when the driver is removed or enteres an exception. >sp1 The general format for messages is message answer u1 function function u2 not used result u3 lineno lineno u4 not used unchanged >a2 Fixed Types. >sp2 All message data types starts with first, last, next: integer in accordance with the standard driver convensions. >ne 33 line_status_type = packed record ?: 0..1; line_speed: 0..3; (* 0: 110 bps, 1: 300 bps, 2: 600 bps, 3: 1200 bps *) data_size: 0..3; (* 0: 5 data bits / char, 1: 6 data bits / char, 2: 7 data bits / char, 3: 8 data bits / char *) stop_bits: boolean; (* true: 2 stop bits, false: 1 stop bit *) pty_mode: 0..3; (* 0: odd parity, 1: ignore parity, parity bits received are stripped off and ignored; chars xmitted has even parity bit supplied *) 2: even parity, 3: no parity, characters received and xmitted without parity bit *) ?: 0..1; rts, (* request to send, outgoing modem signal *) dtr, (* data terminal ready, outg. modem signal *) dcd, (* data carrier detect, inc. modem signal *) rfs, (* ready for sending, inc. modem signal *) dsr, (* data set ready, incomming modem signal *) ?,?: boolean; end; (* line_status_type *) >a2 Control Messages. >sp2 Control messages except set conversion are always executed and returned immediately. Control messages are common for the input and output lines. >a3 Sense Line. >sp2 >ul Format: >sp1 message answer u1 0 0 u2 - result u3 lineno lineno u4 - unchanged buf: - line status sense_buffer_type = record f, l, n: integer; (* not used *) line_status: line_status_type; end; >sp1 >ul function: >sp1 The current state of the three incomming modem signals: DSR, RFS, and DCD is updated and the answer is returned. >a3 Line Control. >sp2 >ul Format: message amswer u1 4 4 u2 - result u3 lineno lineno u4 - unchanged buf line_control line_status buffer_type = record f, l, n: integer; (* not used *) new_line_state, actual_changes: line_status; end; >sp1 >ul Function: >sp1 The record, actual_changes, is inspected for true or non-zero values and for each such found, the corresponding line_state is set. >sp0 Finally the function, sense line, is executed, the record, new_line_state, updated, and the answer returned. >a3 Set Conversion. >sp2 >ul Format: >sp1 message answer u1 8 8 u2 - result u3 lineno lineno u4 - unchanged buf conv_spec conv_spec conv_spec = record f, l, n: integer; (* not used *) conv_control: integer; (* -2: clear and push current conversion buffer, if any, under this message and return this message, -1: set conv_tab in this buffer as conver- sion table for this line. If a conversion table is already set for this line it is returned. 0-15: set the conversion table for the specified line as conversion table well. If a conversion table is already set for this line, it is returned. *) end; Conversion is executed for input and attention operations only. Incomming characters are converted and classified using the value of the incomming characters for table lookup in conv_tab. >sp0 The type, conv_integer, in interpreted in one of two ways depending on the value of conv_integer.normal-conv@. If normal_conv is true the value is used for normal classification of incomming characters while special conversion is performed when normal_conv is false. >sp1 conv-integer = packed record normal-conv: boolean; (* false: the value of conv-integer is used as index in conv-tab for the start- integer of a special conversion record, true: this element is used for conversion and classification of the received character. *) attention: boolean; (* true: this character is an attention char. i.e: if an input-operation is present, it is terminated and returned with status att. with the value delivered, if specified. If an attention-operation and no input- operation is present, the attention-operation is terminated and returned with the value delivered, if specified. If an input- or attention-operation is pre- sent and an output-operation is being executed, this output-operation is terminated with status: attention. Note however that if no input- or attention- is present, the attention charecter is stored in the internal buffer but not executed. *) termination: boolean; (* an input operation is terminated with this character, which is delivered if specified. *) blind: boolean; (* the value is not delivered *) noecho: boolean; (* the value is not echoed *) erase_last: boolean; (* if current buffer is empty, this character is delivered, if specified, but not echoed. If current buffer is non-empty, the last stored character is erased and the received character is delivered, if specified, and echoed, if specified. *) erase_all: boolean; (* all characters in the current buffer are erased and the received character is delivered, if specified, and echoed, if specified. *) mark: boolean; (* status mark is set in the result of the current input buffer if value is stored. *) conv_char: byte; (* the value to be delivered and echoed. *) end; If normal_conv is false, the binary value of conv-integer is the index in conv_tab of the first integer of a special conversion record: >sp1 spec_conv_record = packed record spec_conv_integer: conv_integer; (* values as normal conversion. *) length: integer; (* length of special echo (in bytes) *) spec_echo: array (1..length) of byte; end; >sp1 >ul Function: >sp1 Conversion is set or cleared as specified in conv_spec. When an old conversion table is returned by a clear-function, this is done by PUSH'ing the old one under the clear-message and then returning this. Then an old conversion table is returned by setting up a new one, this is done by returning the old one. >a3 Set Timers. >sp2 >ul Format: >sp1 message answer u1 12 12 u2 - result u3 lineno lineno u4 - unchanged buf timers timers timers = record f, l, n: integer; (* not used *) itimer1: integer; (* defines the timeout before first character input to a buffer. *) itimer2: integer; (* defines the timeout between chars. input. *) otimer1: integer; (* defines the timeout per character output from a buffer or echo. *) end; All timers are in units of 1 second and a zero value means no timeout. >sp0 Note however that the value n means a period between n-1 and n seconds, e.g: the value 1 is senseless. >sp1 >ul Function: >sp1 The timer values are set and the answer returned. >a3 Reset. >sp2 >ul Format: >sp1 message answer u1 16 16 u2 - result u3 lineno lineno u4 - unchanged buf - unchanged >sp1 >ul Function: >sp1 All operations in progress on the input and output line are terminated and all messages are returned with status: reset (= not processed ). Finally the reset operation is returned with result: ok. >a2 Transput Messages. >sp2 The driver supports message data stacks of a maximal depth of 1, i.e. on stacked (chained) buffers. All transput messages are formatted according to standard using first, last, and next indices. >a3 Input. >sp2 >ul Format: >sp1 message answer u1 inpfunc inpfunc u2 - result u3 lineno lineno u4 - unchanged buf - rec-data >sp1 >ul Function: >sp1 The value of inpfunc in u1 defines the actual input function for the message and is composed of a sum of binary numbers, each defining a specific characteristic of the input function: >tb 20 inpfunc@@@1@: Basic input function. >tb 20 inpfunc@@+2@: Echoing of significant characters are to be performed. >tb 20 inpfunc@@+4@: Continuing input, i.e. characters received from returnal of the previous input operation and onto initiation of this input message are accepted instead of skipped. >tb 20 inpfunc@@+8@: Attention, only characters, which are classified with attention, are accepted. >tb 20 inpfunc@+16@: Flow control by means of XON / XOFF characters are to be performed. The following action is taken: >in 20 - When the driver initiates execution of a flow control input message an XON-character (dec:@17) is output. - When the driver terminates execution of a flow control input message an XOFF-character (dec:@19) is output. >a3 output >sp2 >ul Format: >sp1 message answer u1 2 2 u2 - result u3 lineno lineno u4 - unchanged buf data unchanged >sp1 >ul Function: >sp1 The data in the buffer is output and the answer returned. A timeout condition or the recognition of an attention character will terminate the output-operation prematurely. >a2 Results. >sp2 >ul Basic Results: >sp1 0 operation executed succesfully. 1 operation not processed but returned by a reset operation. 2 error described by result modification. 4 illegal function code or lineno. >sp1 >ul Result Modifications: >sp1 +0 timeout. The operation is terminated. +8 echo error. The operation continues. +16 attention. The operation terminates. +32 parity or stopbit error. The oper. continues. +64 overrun or character lost, e.g: hardware overrun or internal buffer overrun. The oper. terminates. +128 mark. The operation continues. >a2 Treatment of Characters Received. >sp2 Normally characters received are placed in an internal buffer until an input operation is available. They are then converted, if conversion is defined, echoed, if specified, and stored in the input buffer. >sp0 If echoing or transmission of flow control characters are to be performed and the output line is busy executing an output operation no echoing is performed but status echo-error is set in the answer. The same applies to a timeout error during output of echo characters. >sp0 A character received with parity or stop-bit error is substituted by the character SUB (dec: 26) and status parity is set in the answer. >sp0 A received break signal is treated as a character with conversion index -1 when conversion is defined. If conversion is not defined, however, a break signal is treated as a character with parity error and a SUB-character is stored. >a1 LAM-Driver Process. >sp2 The LAM driver process is created with the following format: PROCESS lamdriver(var lamsem: semaphore; lamlevel: integer); where lamsem is the driver input semaphore, and lamlevel is the interrupt level of the lam. LAM-driver stack size: xxxx words. Recommended LAM-driver priority: 0. ▶EOF◀