From 34C3_Wiki
Jump to: navigation, search
Description We'll bring Bildschirmtext back to live as a more distributed and more playable system
Has website
Persons working on
Tags retrotechnology, onlineservices, retrocomputing
Located at assembly
Other projects...


What is Bildschirmtext?

In the 1970s and 1980s advances in microelectronics made it possible to build fairly cheap terminals connected to the telephone network. Since those terminals were either dedicated machines or modules integrated into your TV set, they didn't have to deal with the low resolution of NTSC and therefore provide high resolution images. The German BTX, for example 480 content pixels per line, and 250 lines. This allows for 40x24 lines of 12x10 pixel characters as well as an additional status line. There is support for user defined characters as well as 32 colours out of a palette of 4096. User defined characters are also available in colour! This is the lowest level of CEPT.

On the telephone side of this, there was a simple V.23 modem, using the 1200 bps channel for downstream, and the 75 bps channel for upstream. Later devices supported faster transmission rates as well as 64 kbit ISDN.

How was this used

The user had at least a numeric keypad like on a telephone. There were 2 special keys, the sextile (like a *) and the octothorpe (like a #). Random pages were accessed via *pagenumber# or *keyword#. Note that the sextile and the octothorpe were not normal ASCII characters.

Within a "page" you could navigate via the numeric keypad. *# bought you to the previous page, # brought you to the next page. Other numbers accessed numbered links on the screen. Typically before you buy something you had to say yes (=19) or no (=2).

What's the difference to Teletext?

CEPT defines 2 basic modes of operation: Serial Attributes and Parallel Attributes.

Serial Attributes only stores one character (7 bit) per character cell. Attributes are handled by special format cells. So to change the text colour, you have a blank-looking character cell with the foreground colour command. This is how Teletext works. (Also double height characters extend downwards) Teletext also has no cursor control, as every page consists of a number of 40 character lines where each line is sent in full in one line of video.

Parallel Attributes store the full set of attributes for every character cell. So you can change colours without having to put in spaces. BTX apparently supports both modes, but the special Serial Attribute commands have been left out of this documentation.

What's the difference to Minitel?

Minitel should be rather similar. It uses 7 bit plus parity on the modem side and therefore is not fully compatible.

Technical Details

Character sets

There are multiple standard character sets.

Character set G0: ($20-$7f)


Character set G1: ($20-$7f)

Btx g1.png

Character set G2: ($20-$4f)

Btx g2.png

Character set G3: ($20-$7f)

Btx g3.png

There are also 93 DRCS characters

Combining characters

Use the SS2 command, then select a character from G2, then have your main character.

Example: \x19Hu gives you an ü.


single octet

Octet Name Description
$08 APB Active Position Back (left)
$09 APF Active Position Forward (right)
$0A APD Active Position Down
$0B APB Active Position Up
$0C CS Clear Screen
$0D APR Active Position Return (to left most column, keep line
$0E SI Shift In (Shifts to blockgraphic characters)
$0F SO Shift Out
$11 CON Cursor On
$12 RPT Repeat last character n times. n in next octet from $40 to $7f
$14 COF Cursor Off
$18 CAN Erases line right of cursor
$19 SS2 Single Shift to G2 (for combining characters)
$1B ESC Escape for longer commands
$1D SS3 Single shift to G3
$1E APH Active Position Home (cursor to home position)
$1A DCT Makes the terminal talk
$20 SP Space (DUH!)
$88 FSH make the next characters Flash
$89 STD cancels FSH
$8A EBX End Box
$8B SBX Start Box (in conjunction with EBX makes boxes on transparent backgrounds)
$8C NSZ Normal Size
$8D DBH Double Height
$8E DBW Double Width
$8F DBS Double Size
$98 CDY Conceal Display (characters are hidden until a special button is pressed)
$99 SPL Stop (under-)Lining
$9A STL Start (under-)Lining
$9B CSI Control Sequence Introducer
$80-$87 Set Foreground Colour 0-7
$90-$97 Set Background Colour 0-7
$9C NPO Normal polarity
$9D IPO Inverted polarity
$9E TRB Transparent Background
$9F STC Stop Conceal (see CDY)

Multi-octet commands

Octets Description
$1B $3x $40 Invoke colour table x
$1B $28 $40 $0f Invoke G0 character set
$1B $28 $64 $0f Invoke G3 character set
$1B $28 $20 $40 $0f Invoke DRCS
$1B $22 $41 Invoke C1P set, might be important for commands above
$1B $23 $20 $5x sets the full screen background to x: 0-7, E=transparent
$1B $21 $20 $5x sets the row colour to x: 0-7, E=transparent
$1F y x sets the line y ($41...) and column x ($41...)

Commands from the terminal

Octet Name Description
$13 INI Initiator, the sextile key used to start entering a page number
$1C TER Terminator, the octothorpe key used to end entering a page number

Also look at dist/mikroPAD/src/apps/btx and


Because we can!

Also, CEPT is an already defined standard, we can use. There's hardware out there, but it can also be emulated using cheap Wifi modules and 320x240 TFT displays. Since everything is page oriented and page selection happens via a numeric keypad, this might be a cool function for a future badge.

What can I do?

First of all, you can play with the terminals provided.

If you want to do something more technical, you can set up an TCP server speaking the CEPT protocol and I can make the terminals connect to it. I'll also publish the modem source code as soon as it's ready.

Planned things

Bildschirmtext terminals

We'll bring probably one terminal connected to the POC network

Dial-in points

We will have a dial-in number for the POC network which speaks v23 as well as the data link layer protocol for error-free connectivity. The number will be 5190.

If you want to have your own service, set up a TCP-server which speaks CEPT and I'll be able to hook that up.




BTX Modem for Asterisk

More generic modem for Asterisk