Difference between revisions of "Projects:Bildschirmtext"

From 34C3_Wiki
Jump to: navigation, search
(Links)
 
(22 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
|Has project tag=retrotechnology, onlineservices, retrocomputing
 
|Has project tag=retrotechnology, onlineservices, retrocomputing
 
|Has description=We'll bring Bildschirmtext back to live as a more distributed and more playable system
 
|Has description=We'll bring Bildschirmtext back to live as a more distributed and more playable system
 +
|Located at assembly=Weisswurscht.is
 
}}
 
}}
  
Line 8: Line 9:
  
 
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.
 
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=
 
=Technical Details=
 +
==Character sets==
 
There are multiple standard character sets.
 
There are multiple standard character sets.
  
Line 22: Line 39:
  
  
Character set G2: (unknown range, characters with grey background combine with next letter to form diacriticals)
+
Character set G2: ($20-$4f)
  
 
[[Image:Btx g2.png|768px]]
 
[[Image:Btx g2.png|768px]]
Line 30: Line 47:
  
 
[[Image:Btx g3.png|768px]]
 
[[Image:Btx g3.png|768px]]
 +
 +
 +
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?=
 
=Why?=
Line 46: Line 272:
  
 
==Dial-in points==
 
==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.
+
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.
 
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.
Line 59: Line 285:
  
 
https://www.youtube.com/watch?v=iBfvIh2K4G0
 
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

Latest revision as of 17:13, 1 January 2018

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...

refresh


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)

G0.png


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 ü.

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

User:Casandro

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