; > $.Documents.SerialSaga Title: Serial saga/1 Authors: Tim Dobson at Newmarket Road (ext 526) Stuart Swales Version: 0.02 Started: 20-Apr-88 Last updated: 05-Jul-88 Status: Provisional Archimedes serial line - the story so far... -------------------------------------------- Hardware problems ----------------- (ha) When CTS goes low, the transmit data line immediately goes to the mark state, causing the character being transmitted to get corrupted. Not strictly a bug - most data sheets actually document this behaviour, but clearly undesirable from our point of view. Present in GTE, Rockwell. Fixed in CMD. Absent in RCA. (hb) If the 6551 control register is written to (even with its current value) then the baud rate generators are reset, which can cause characters being received or transmitted at that time to be corrupted. Present in GTE, CMD. Absent in RCA. (hc) Bits 2 and 3 of the command register control the state of the RTS line and whether the transmitting interrupt is enabled, as follows:- Bit 3 2 Meaning - - ------- 0 0 RTS low, transmitter disabled 0 1 RTS high, transmit interrupt disabled 1 0 RTS high, transmit interrupt enabled 1 1 RTS high, transmit interrupt disabled, transmit break If the state is switched from 01 to 10 or vice versa, then the chip can misread this as 11, causing a break level to be transmitted. Present in about 70% RCA. Absent in GTE, CMD. ??? Rockwell. (hd) If DCD goes low (indicating absence of carrier), then transmission of characters becomes unreliable. Only important when using modems, otherwise DCD is usually tied high. Present in GTE. ??? Rockwell, RCA, CMD. (he) The 6551 has a problem that results in characters being mangled when tranmitted. This affects typically 1 in 10 000 characters (chip dependent) Present in GTE. Fixed in CMD. ??? Rockwell, RCA. (hf) The 6551 generates spurious interrupts of short duration, such that the interrupt is generated to ARM, but when the IRQ service code looks at IOC to determine the IRQ source, the interrupt has gone away (as it is not a latched input). This results in the fatal error 'Unknown IRQ' being generated on Arthur 1.20 if no other IRQ sources were causing interrupts. Present in GTE, CMD. ??? Rockwell, RCA. Software problems ----------------- (sa) When the RS423 input buffer fills up, then RTS is set low, to tell the other end to stop transmitting. When sufficient characters have been removed from this buffer, then RTS should be set high again, but it is not. Present in Arthur 0.30. Fixed in 0.30 patch module, 1.20 and later. (sb) A solution to hardware problem (ha) is to connect the CTS line to the DSR pin on the socket, and tie the CTS pin on the socket high. This requires the software to stop transmitting if DSR is low. Unfortunately DSR going low stops transmission and reception. Not really a bug - the use of DSR is non-standard. Present in Arthur 0.30. Fixed in 0.30 patch module, 1.20 and later. (sc) Unfortunately, the fixing of software problem (sa) caused hardware problem (hb) to happen. When a character was removed from the RS423 input buffer, the RTS line was set high to tell the other end to restart transmission. This was done via a generic 'modify a pseudo 6850 control register' routine, which happened to write to the control register as well as the command register (the former of which is strictly unnecessary). This provokes hardware problem (hb). Present in Arthur 1.20. Absent in 0.30. Fixed in 1.20 patch module version 1.24, 1.60 and later. ??? 0.30 with patch module. (sd) GST Ltd had problems with a program which outputted files to a LaserWriter (1st Script). During the investigation of this problem (see document '1st Script report/1') an inadequacy of patch module version 1.24 was discovered. If both input and output is taking place down the serial line, and the printer mechanism is being used to send characters (ie OSBYTE 5,2 etc rather than bit 0 of OSBYTE 3) then the patch module fails to correct the MOS's behaviour. Present in Arthur 1.20, Arthur 1.20 with patch 1.24. Absent in Arthur 1.60 and later. Absent in 0.30.