300 Baud

A modem had one job: turn bits into a sound a telephone would carry, and turn that sound back into bits at the other end. The Bell 103 did it with two tones 200 Hz apart, starting in 1962, and the arrangement stayed in service for twenty-five years.

New to modems? Start here

A telephone line carries sound and nothing else. It cannot carry a bit, so a modem's entire job is to turn bits into sounds a phone line will accept, and turn the sounds at the far end back into bits. Three hundred bits a second means three hundred decisions a second, encoded as two tones.

That is why the connection screeches: you are hearing the data. It also sets the pace of everything on the other end. Text arrives slower than you read it, so the software was designed for a world where every character cost something, and this page is what that felt like.

A message that takes time and may not arrive

A message takes time to travel from one computer to another. Sending it does not establish that it arrived, and receiving one message does not establish that an earlier one arrived first.

Messages may be delayed, lost, duplicated or reordered. A protocol defines how the participants respond to those possibilities. Some machines here model only one of them; the page says which assumptions its result needs.

The machine for this idea on its own is Packet Switching, if you would rather press it than read about it.

Below is a working one. Dial the board and everything you hear is generated from the bits, everything you read was recovered from that sound by a detector running in this page, and it arrives at thirty characters a second because that is genuinely as fast as it went.

The terminal

You never talked to a modem directly. You ran a terminal program, and it is the thing you actually sat in front of: it drew the ANSI, kept the dialling directory, ran the file transfers, and passed your typing through to the modem. On a PC that meant ProComm, Telix or Qmodem; on a Mac, Red Ryder. This page stands in for one of those, in the manner of them rather than as a copy of any one.

A PC text screen was eighty columns by twenty-five rows, and the terminal program kept the last row for its own status line. That is why BBS screens were drawn for twenty-four rows and why the line below the screen here is not something the board can write to.

Logical Art 300 Baud Bell 103, 300 bps, 8-N-1. Type AT and press Enter. The modem should say OK. Then dial: ATDT7025550143
ANSI-BBS 300 8-N-1 -- ONLINE 00:00

Click the screen, then type. AT and Enter to start. Ctrl+L clears it. The handshake you hear is one tone answered by another: the far end's, then both together once this end replies, then silence. A second each way, which is what V.25 asks of the calling end before it may transmit. Type ATM2 before dialling to hear the whole call, or ATS9=25 to make it hang on longer before it decides.

Command mode. Try ATDT7025550143.

300 BAUDSMARTMODEM

  • HS
  • AA
  • CD
  • OH
  • RD
  • SD
  • TR
  • MR

What the lamps mean
HS
High speed. Lit at 300, dark at 110.
AA
Auto answer. Lit when register S0 is not zero, so ATS0=1 lights it.
CD
Carrier detect. Lit when the detector is actually hearing the far end's tone.
OH
Off hook. Lit from the moment it seizes the line until it hangs up.
RD
Receive data. Flickers as bytes arrive.
SD
Send data. Flickers as bytes leave.
TR
Terminal ready. Lit when the terminal has the keyboard, which is the honest answer to “why is my typing not going anywhere”.
MR
Modem ready. Lit once the audio hardware is running, which a browser will not do until you have clicked something.
NO CARRIER

Those are the two speeds a Bell 103 ran: 300, and 110 for the Teletypes that came before it. There is nothing faster in the menu because there cannot be. Telling two tones 200 Hz apart needs a window long enough to resolve 200 Hz, and at 1200 bits a second a bit does not last a millisecond. That is not a limit of this page, it is the reason full-duplex 1200 bps modems gave up on frequency-shift keying and started shifting the phase of a single carrier instead. Frequency shift did reach 1200 bps — Bell 202 and V.23 both do it — but only by spreading the tones much further apart and giving up the simultaneous return channel, which is why V.23 sends 1200 one way and 75 the other.

Framing errors
0

Line quality adds Gaussian noise to the audio before it is played and before it is demodulated, so you are hearing exactly what the detector is up against. It holds together further down than you would expect: swept over forty seeded runs, it is clean at 9 dB and above, and at 0 dB, where the noise is as loud as the signal, 32 runs in 40 still come back perfect. Below about minus one it comes apart. Framing errors are the count of characters whose stop bit was not where it should have been, which is the detector telling you it lost the thread.

Numbers to try

Three boards, and only one of them answers. The other two are here because a busy signal and a phone nobody picks up were most of what dialling a board actually got you.

And one more, which was not on anybody's list. A wardialer worked through this exchange overnight and logged whatever answered with a carrier: most of it fax machines, one of it this. There is more about the practice, and about what turned out to be on the other end, on the bulletin board page.

Expecting the screech? It is not missing, it is a different modem. The long negotiating howl people remember belongs to V.32bis, V.34 and V.90, where two modems spend twenty to sixty seconds agreeing a speed, probing the line and training their equalisers against it. A Bell 103 has nothing to agree: one speed, one modulation, no fallback, no line probing. What there is, and all there is: the answering modem puts its tone up, this end waits until it has heard it for a full second, as V.25 requires, and replies with its own tone in the other half of the band, and the far end needs the same second again before there is a link. So you hear one tone, then two together, then nothing, in about two seconds. Then the speaker cuts, because ATM1 says it should. Type ATM2 before dialling to keep listening through the call.

Click the screen first, then type. Once connected: any name, any password. M for the message bases, F for files, G for the door, X to hang up. The board echoes each key back before it answers, which at thirty characters a second is the only sign it heard you. To reach the modem again without dropping the call, leave it quiet for a second, type +++, and wait another second.

What is on the wire

The line itself, tapped ahead of the volume control and fed by both directions at once, which is what a scope across a two-wire pair would see. It runs from the moment the line is seized until it is hung up, and it does not go quiet when the speaker does: dial tone, each touch tone, the ringing, the answer tone, this end replying, and then both carriers for the rest of the call. Every character is ten bits, so at 300 baud you get thirty characters a second.

The detector, with its hands exposed

Everywhere else here a measurement is quoted and you are asked to take it. This runs one in your browser instead: the same detector, the same noise, the same arithmetic.

The dashed line is theory, and it is worth knowing what it is a statement about before comparing anything to it. It is the closed form for a non-coherent FSK receiver deciding one isolated bit, and it assumes the receiver already knows where that bit begins. The measured line is this whole machine delivering characters: finding the start bit for itself, losing alignment when a frame goes wrong, and counting a character that never arrived as all ten of its bits, because losing one is not free. The measured curve therefore sits well to the right, and almost none of that gap is the detector being worse at deciding bits. It is the price of framing and resynchronisation, which the theory does not model.

The window is how much audio it integrates before deciding a bit. One bit period is the matched filter and therefore optimal, which is a claim the slider lets you falsify. It degrades in both directions and for different reasons: shorter integrates less of the symbol's energy so noise wins more often, and longer reaches across the boundary so the next bit votes in the decision. Measured at 0 dB over forty seeds, a quarter of a bit period gives 358 character errors and two bit periods gives 302, against 6 at one.

1.00 bit periods

The window is how much audio the detector integrates before deciding a bit. One bit period is the matched filter, which is optimal; the slider is here so that can be checked rather than believed.

The speeds, and what each one sounded like

This machine is the bottom rung. The table is what each standard could actually carry, in the unit that decided what using one felt like: characters a second. Pick a rung to hear its connect and to watch a menu arrive at that speed.

One honest warning. The 300 baud connect is produced by the working modem at the top of this page. The faster ones cannot be: V.34 and V.90 are enormous pieces of signal processing, and implementing one in a browser tab is a project rather than a section. Those are reconstructed from the tone frequencies and sequence each standard publishes, so the shape and the timing are right and the sound is an approximation. The negotiation phases are the exception and really are modulated, because every standard from V.32 onward begins by talking V.21 at 300 bits per second.

The whole progression, past where dial-up had to stop and on to fibre, is on every speed. What these modems were dialling into is on the bulletin board world, and what it cost to be inside somebody's private network is on the walled gardens.

How two tones carried the early internet

A telephone line will not carry a square wave. It was built for speech, it passes roughly 300 to 3000 Hz, and anything outside that is gone. So a modem does not send the bits. It sends a tone, and moves that tone between two frequencies depending on whether the current bit is a one or a zero. One is called mark, zero is called space, and the names are older than the telephone: they come from the marks a telegraph inked onto paper tape.

Both ends want to talk at once, and they cannot use the same two frequencies without shouting over each other. So the caller uses the low pair, 1070 and 1270 Hz, and whoever answers uses the high pair, 2025 and 2225 Hz. Two conversations, two slices of the same voice band, no taking turns. That is why you can type while the board is still printing at you, and you can hear both directions at once in the speaker.

Both ends hold their own tone up for the whole call, not just when there is something to say. The answering modem raises 2225 Hz first, which is the note you hear at the end of the handshake; that tone also disabled the echo suppressors the phone network used on long-distance circuits. The calling modem answers with 1270 Hz, and from then on the two tones sit there until somebody hangs up. Losing one is not a metaphor: NO CARRIER is the detector reporting that the sound stopped.

There is no clock on the wire. An idle line rests at mark, and a character announces itself by dropping to space for exactly one bit period. Everything after that is timed from that one edge, which is what asynchronous means, and it is why the last thing in every frame is a stop bit that puts the line back where it started.

The detector in this page mixes the incoming sound against both tones and measures which one holds more energy over each bit period. It is a plain non-coherent FSK detector, the same idea the hardware used, and it holds up under noise: it reads cleanly at 9 dB above the noise floor and still recovers most characters at 0 dB, where the noise is as loud as the signal.

Deeper in

The engineering notebook has the arithmetic: what the detector actually computes and why it needs both a sine and a cosine, why the half-window lag cancels instead of needing a correction, why a flat detector window measurably beats a tapered one, the bug that only an end-to-end test could find, and the register that decides when a modem believes a carrier.

What is real here, and what is not

Real: the modulation, the demodulation, the framing, the carrier that both ends hold up for the length of the call, the carrier detect, the touch tones and their frequency grid, pulse dialling as actual line breaks, ringback and busy at their true cadences, the answer tone, the ANSI terminal, code page 437, and XMODEM with both its checksum and its CRC. The board's replies are modulated onto the answer channel, played, demodulated, and only then printed. Nothing takes a shortcut past the audio.

The door is Hunt the Wumpus, Gregory Yob's 1973 game, which ended up on nearly every board because a few lines a turn is all a 300 baud line could comfortably carry.

Not real: the board is fiction, and so are the three phone numbers. There is no server anywhere in this; The Oasis runs in the same tab you are reading. The password is not checked and nothing is stored. The faster line speeds are a convenience, not a modem that existed.

Questions

What am I actually hearing?

A single tone being moved between two frequencies, 300 times a second. When the tone is high you are hearing a 1, when it is low you are hearing a 0. The warble is the data. Everything is generated from the bits as it plays; there is no recording on this site.

Is the board real?

No. The Oasis is fiction, the three phone numbers are fiction, and there is no server involved anywhere. It runs in this tab. The signal processing around it is real, which is the part worth being careful about.

Why is it so slow?

Because that is the speed. 300 bits a second, ten bits to a character, is thirty characters a second, and a screenful of text is most of a minute. People read along as it arrived. The line speed control will run the same modulation faster, but the slowness is the thing the machine is here to show you.

Why can I type while the board is printing at me?

Because the two directions use different pairs of tones and do not collide. The caller transmits at 1070 and 1270 Hz, the answering end at 2025 and 2225 Hz, and both are inside the range a telephone will carry. That is what full duplex means, and it is why a conversation with a board never had to take turns.

Could I dial a real bulletin board with this?

This page does not connect to a telephone line. It generates and decodes Bell 103 tones and framing. The tests send generated audio through the detector, including through the browser's microphone input. Those tests establish a working audio path; they do not establish interoperability with a physical Bell 103 modem or a telephone network.

Not a V.21 modem, though, unless it also spoke Bell 103. The European standard is the same idea at different frequencies: 980 and 1180 Hz for the caller against Bell's 1070 and 1270, and 1650 and 1850 for the answering end against 2025 and 2225. That is exactly why an American modem could not call a European one, and why so many of them shipped with a switch for both.

Why does the screen look like that?

The board draws in code page 437, the character set IBM shipped on the PC. Above character 127 sit accented letters, currency signs, Greek and mathematics — and, from 0xB0 to 0xDF, the box drawing, blocks and shading that became the entire palette BBS artists actually used. A terminal that treats those bytes as Latin-1 instead renders every screen as accented gibberish, which is why the terminal here implements the real one.

What happens if I choose a faster line speed?

The same frequency-shift keying runs quicker than the Bell 103 standard allowed. It is a convenience, not a historical modem. A real 1200 bps modem was a Bell 212A and it worked a completely different way, shifting the phase of a carrier rather than its frequency.

Glossary

Every term this page uses, in plain language.

Mark and space
A 1 and a 0. The names come from telegraphy, where a current either marked the paper tape or left a space. An idle line rests at mark.
Frequency-shift keying (FSK)
Sending data by moving a tone between two frequencies. It is the simplest modulation that survives a telephone line, which is why the first modems used it.
Baud and bits per second
Baud counts symbol changes a second; bits per second counts data. On a Bell 103 each symbol is one bit, so 300 baud and 300 bps are the same number. On later modems they stopped being the same, and the habit of saying "baud" for everything stuck anyway.
Originate and answer
The two ends of a call. Whoever dials uses the low pair of tones, whoever picks up uses the high pair, so the two directions never collide.
Full duplex
Both ends transmitting at once, without taking turns.
Carrier
The tone itself, present whether or not data is moving. Losing it is the far end hanging up, which is what NO CARRIER means.
Start bit, stop bit, 8-N-1
There is no clock on the wire, so each character announces itself by dropping the line to space for one bit period and ends by returning it to mark. 8-N-1 is eight data bits, no parity, one stop bit: ten bits on the wire per character.
AT commands
The Hayes command language. Every instruction starts with the letters AT, for "attention", so the modem can tell an instruction from data on the one wire that carries both.
Guard time
The second of silence required either side of +++ before a modem accepts it as an escape. Without it, no file containing three plus signs could ever be sent.
ANSI
The escape sequences that move the cursor and set colour, standardised as ANSI X3.64. They are what let a board draw a menu without redrawing the screen.
Code page 437
The IBM PC character set. Its box drawing and block characters are the whole visual vocabulary of BBS art.
Ward Christensen’s XMODEM specification
A file transfer protocol: 128 bytes at a time, each block numbered and checked, with the receiver acknowledging every one before the next is sent.
ACK and NAK
Acknowledge and negative-acknowledge. The receiver's only two answers to a block: keep going, or send that one again.
Checksum and CRC
Two ways of catching a corrupted block. A checksum adds the bytes up, which misses any error that happens to preserve the sum, including two bytes swapping places. A CRC catches those.
Sysop
System operator. The person whose spare bedroom the board was in, and whose telephone line it answered.

Sources

Every factual claim on this page traces back to one of these.