[net.micro] 1200 baud modem problems

zok@avsdS.UUCP (01/06/84)

I just bought an ANCHOR ELECTRONICS Signalman Mark XII modem and 
found out that it doesn't send break characters.

IT DOESN'T SEND BREAK CHARACTERS??????!!!!!!!

Our modems on our computers come up as 300 baud and will shift to 1200 baud
when they detect a break key.  This means that I cannot use this modem
on modems of this type. Also some computers use the break key to kill a running
process. This means (for my purposes) THIS MODEM SUCKS!!!!!!!!!!!!!!!!!!!
And I would reccomend that people everywhere stay away from anchor electronics
and I hope the designer burns in hell.


		With flames 
			Mark Rodal 

kevinw%isl@BRL.ARPA (01/11/84)

one (incredibly easy) way to send a break character at 300 baud
(on a line which will not really send a break) is to send at
110 or slower the NULL (^@) which then looks suspiciously like
a break to a higher speed line...  i have this problem on another
modem and this works just fine...
  -- Kevin
     kevinw@su-dsn

KSPROUL@RUTGERS.ARPA (01/11/84)

First off,  Break is NOT a character, it is a state of the line, i.e.
it is a real long SPACE (that is the line is low, not the space char)

So therefore, a modem can not be responsible for sending/not-sending
a break...  If you are using it with a micro simulating a terminal,
it is a problem with your terminal program... Most of the tty programs
I have seen do not have the ability to send breaks...

Keith Sproul
Ksproul@Rutgers.arpa
-------

Little.Fleas%hi-multics@sri-unix.UUCP (01/13/84)

From:      Gary Little <Little.Fleas@hi-multics>

Vell, 'sharli vhat ve haf here is de bimbo vhat don't know vhat dey ish
talking about.

Frankly, I would definitely like to know what a break character is.  I
have heard of a break sequence that sends an extended space (roughly all
zeroes for about 200 milli-seconds).  Mark, your problem is not in your
modem, but rather in your terminal emulator, or in your terminal.
It is a function of your async-controller in your DTE to provide the
break sequence.  If you rummage back thru some old info micro xactions,
I think I have a psuedo-code, and or a 6809 programming model that might
help you.

                              Gary

edwards@uiucuxc.UUCP (01/16/84)

#R:avsdS:-64600:uiucuxc:3700081:000:229
uiucuxc!edwards    Jan 14 20:32:00 1984

	I thought answering modems start up with the speed of the calling
  modem?  I also thought that it was the listening program's responsability
  to resetting the machines speed to match the modem (say on BREAK)?

  -alan edwards

david@intelca.UUCP (David DiGiacomo) (01/16/84)

No!

Failure to transmit a break is very likely to be the modem's fault.
Synchronous modems (e.g. 212) usually receive characters asynchronously
from the terminal/computer with one UART (or moral equivalent) and
synchronously reserialize them with another.  So if the logic inbetween
suffers brain damage (usually inherited from its designer) a break condition
may not even be detected, much less propagated.

Since the modem in question is theoretically "intelligent", it is clear that
somewhere in modem-land there is a brain-damaged programmer who must bear
the responsibility for the canard.

-- 
David DiGiacomo, Intel, Santa Clara, CA
{pur-ee,hplabs,ucbvax!amd70,ogcvax!omsvax}!intelca!david

jaap@haring.UUCP (Jaap Akkerhuis) (01/18/84)

<If you see this line, your news software is fixed>

   Yes, a break is not not a character, but a status of the transmitter and so,
the receiver line of an RS-232 serial line interface.
When there are no characters on the output, this line is kept in the MARK state.
Which means, a voltage lower then -3.2 Volts.
If a character is send, the line toggles between a this state, and the SPACE
state (at least +1.2 Volts).
A ``break'' is defined, as the line being a space longer then the
character time, which is the time it takes to send out a character, stop start
and parity bits included. For a 9600 baud line this will roughly be 1.04 ms
(So the break will cause an framing error in the UART on the receiving side).

A lot of (DEC-)interfaces (f.i. the DL-11) are capable of generating breaks,
normally not supported in UNIX.
But, as being pointed out already by some one, you can generate a break, by
sending out a ^@ on a lower speed, which will be seen as a break on the
receiving side.
The character time of a 300 baud line is 33.3 ms, the ^@ is a SPACE during
it's transmission.
An plain @ will work just as fine, since it value is also most of a time a
SPACE. Note that other character's will hardly work, since the bits could
accidentally be interpret as stop bit, so the framing error will not show up
and some garbage at the input will be the result.
(Looking at the garbage makes our getty to recognise the speed, and will set
the speed of the line to the one at the terminal. This is a nice feature,
since all the terminals are not on fixed lines, but connected via a
portselector)
Generating a break on the lowest possible speed of the UART of course doesn't
work this way, but you may then try to send extra stop bits, wrong parity,
6- or 8-bit character's etc in order to force an overrun error.
The effect depends of course on the interpretation on the receiving side.

Now the fun part:
  Some terminals are not capable of generating breaks on all the speeds they
can handle.
If the spec's say: speed 50 110 300 600 1200 2400 4800 9600 etc. and break
120 ms, it will for sure not generate a correct break for the 50 baud lines!
Of course, if you have to use 50 baud, you have serious problems anyway,
but still...

	Jaap Akkerhuis

P.S The figures of the voltage levels can be wrong since I don't have the
    proper references by hand, but is's late all ready (at least here).
    You might want to look it up in f.i. the RS-232 standard.

seaburg@uiucdcs.UUCP (01/18/84)

#R:sri-arpa:-1540200:uiucdcs:10400101:000:231
uiucdcs!seaburg    Jan 17 20:28:00 1984

Then what happens when I use my modem and press the Break Key on my
terminal and it stops a Unix job?   1200 baud, too.

Explain please.  Does the break signal just become a scrambled mess
that the computer interprets as a break?

stepp@uiuccsb.UUCP (01/19/84)

#R:sri-arpa:-1540200:uiuccsb:4400035:000:3621
uiuccsb!stepp    Jan 18 09:26:00 1984

First, what is a 'break character'?

The 'break character' is a character only in the sense that there is usually
a key on the keyboard for that function.  Like a regular character, break
is a sequence of changes on the communication link of finite duration.
Unlike a character, the break pattern on the link has no parity and is
of an incorrect (too many) number of bits.  Each regular character is sent
as a pattern of (10 or 11) bits, each character composed of exactly the
same number and with leading and trailling bits called 'start' and 'stop',
respectively.  The serial line idles in the 'mark' state (1 state, dating
from the time when telegraphs were connected together in a series loop circuit,
data was sent by interrupting the current briefly) with start and stop
bits always being in the 'space' state (0 state).  Note, on RS232 lines
'mark' is a negative voltage, 'space' is a positive voltage.  One or more
mark bits separate characters.

A break is just that, an opening of the connection (a la telegraphs) for
a long time.  On modern serial data links, the break is a sequence of
space bits much longer that any possible sequence that could be data
surrounded by start and stop bits with mark bits between characters.
UARTS can detect break because they get a 'framing error', that is when
they expect to see a stop bit (ending a character) followed by one or
more marks between characters, they see instead lots of spaces (the break).

On modems that encode one bit as one baud, everything is simple.  Regular
characters go in at the transmitting modem and come out from the receiving
modem bit-by-bit with no interpretation of the bits by either modem.
Break goes in as lots of space bits and comes out the same way.  The speed
of the bits going in equals the speed of the bits coming out, the modem
does not have to know what that speed is as long as its not too fast
(e.g., less than 300 bps, though 600bps is possible).

The 212A style of modem is much different!

The 212A (1200bps full duplex) is not a baud-for-bit modem.  The modem
takes in 2 bits and outputs (on the phone line) one baud.  It can send
four different 'bauds' encoded by phase (PSK).  To decode PSK the receiving
modem must be in constant synchronization with the transmitting one.
The asynchronous data is actually sent synchronously between modems.
It comes out looking like asyncoronous data, but thats just to fool you.

Now consider the break signal.  All is not so simple at all.  Break is
handled specially on such modems and it is possible for a modem to get lost
handling the break, basically because the modem may lose track of correct
timing if it is not careful.  (Note:  on the 212A the data must be presented
to the modem at exactly 1200 bps (+- 1%) for the conversion from asyn. to
syn. transmission to work; the modem fills in garbage data during the
varying time periods between characters which the receiving modem swallows,
but the timing WITHIN A CHARACTER must be exact).

Thus to send break over a 1200 bps line the modems at each end must be
capable of understanding that a sequence of spaces coming in, then being
synchronously transmitted is a break and the receiving modem must then
temporally violate its idea of well-formed-character and hold the outgoing
serial line at the space state 'too long', all without losing synchronization
with the modem at the other end or failing to properly recover the next
real character.

Good 212A modems should do this trick with ease.  I suppose it would be
possible to have a modem that thinks break is something to swallow.  I
would tend to avoid such a modem.

preece@uicsl.UUCP (01/19/84)

#R:sri-arpa:-1540200:uicsl:7000040:000:1035
uicsl!preece    Jan 18 12:59:00 1984

I'm a little confused by claims that the ability/inability to send
a break lies in the terminal program and not in the modem. The
terminal program must, indeed, do something to tell the modem to
send a break. The modem itself, however, is the only place that
the break state can be induced on the line, so it too must have a
special ability. The terminal sets the data line (between itself
and the modem) to the space state for a relatively long time (say
a quarter of a second). The modem must recognize that that is a
signal to it to pass on a (relatively) long space state. Aa 212A
modem doesn't just use the data line state to select between two
signals it can send down the line. Among other things, it uses a
four-level signal, so two states are sent at once.  I suspect the
modem gathers a whole character before sending anything, but I
am just guessing. I have read in several places that the Anchor
212 modem cannot send a break; that doesn't make it true, but it
makes me suspicious.

scott preece
ihnp4!uiucdcs!uicsl!preece