Projects:Bildschirmtext
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 | Assembly:Weisswurscht.is |
Other projects... |
Contents
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)
Character set G2: ($20-$4f)
Character set G3: ($20-$7f)
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 ü.
Commands
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 http://www.runningserver.com/software/bildschirmtrix.tar dist/mikroPAD/src/apps/btx and http://btx.runningserver.com/
Why?
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.
Contact
Links
http://www.runningserver.com/?page=runningserver.content.thelab.bildschirmtrix
https://acn.wtf/retrotext.html
https://www.youtube.com/watch?v=iBfvIh2K4G0
BTX Modem for Asterisk https://github.com/Casandro/btx_modem
More generic modem for Asterisk https://github.com/proquar/asterisk-Softmodem