Start

heckmeck!

Nerd content and
cringe since 1999
Alexander Grupe
Losso/AttentionWhore

August 2024

Blog

2024-092024-07

The #WeeklyTeletextArt hash tag has been reanimated on Twitter some days ago, and I decided to pop in for this week’s prompt: “pop” – as in: musique non stop, techno pop!

It’s still magical to me having the technology to send original Teletext content to a real TV. Living in the future and all… :)

A photograph can’t quite capture the enchantment of those bright colors and the crips edges on a decades-old tube TV in a dark room – the “broadcastiness” of it.

One day I might learn to capture it without the moiré artifacts…

Here’s the source code as an editor link.

PS: “The technology” = Raspberry Pi + raspi-teletext + adapter cable

I haven’t missed a real-life Evoke party since… *checks notes* 2013? Sadly, holiday plans were clashing this year and I couldn’t be there.

This year was celebrating the 25th Evoke installment and I was excited to learn that 420 years of Teletext was featured in the #evoke25 demo show on Friday (at 03:06:00 in the Twitch stream recording).

That would have been awesome to re-watch live at the party with everyone! :’)

But… I still wanted to hand in something, and I had an idea for a pixel graphics entry. For the Evoke pixel graphics competition, the organizers traditionally announce a fixed palette which reliably leads to some grumpy backlash every year.

Not meaning to single out jok here, or anyone – those reactions are a tradition as well. :) My idea was to make a little animation about them for fun. See the prod page: hrrngh!

Click to let the creativity explode

The palette wasn’t even that terrible IMHO, see for example Steffest’s winning entry or Titus/Rabenauge’s fantastic piece:

The Experiment

I’m not too sad about the missed party, though – there are more demo parties to come and the vacation sure was nice!

Just a little hot at times…

A little update to the bar receipt encoding mystery: I was looking at the wrong code page! While I’ve studied Ancient Greek at school, we didn’t learn about ancient Greek 8-bit encodings – thanks for nothing, German education system!

It turns out that code page 737 is the common Greek 8-bit encoding, not code page 869. Using that, we can reconstruct better what happened to the receipts full of question marks.

Example

Let’s compare a good and a messed-up receipt: Φ.Π.Α. turns into ”.?.€.

When we look at the code pages involved:

Code page 737
80 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π 8F
90 Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ 9F
Code page 1252
80   ƒ ˆ Š Œ   Ž   8F
90   ˜ š œ   ž Ÿ 9F

…we can trace the conversions of each character.

  • Letters Φ and Α are encoded as 94 and 80 (hexadecimal) in code page 737
  • When bytes 94 and 80 get parsed as 1252 data, they map to and
  • The dot . is at 2E in both code pages and stays intact
  • Letter Π is 8F in 737
  • But 8F is not assigned in code page 1252 (red gap in the table above)
  • It gets replaced with a ?
  • Result: ”.?.€.

Something is still missing

Or rather: Too much is missing! In other examples of good v. mixed-up texts, there are more question marks than we would expect.

Original Ξ Ε Ν Ο Δ Ο Χ Ε Ι Α Κ Ω (Ν) Σ Υ Ν Ο Λ Ο
Expected ? „ Œ Ž ƒ Ž • „ ˆ € ‰ — ‘ “ Œ Ž Š Ž
Actual ? „ ? ? ƒ ? ? „ ? € ? ? ? “ ? ? ? ?

So the “target” code page cannot be the 1252 encoding we know today. It must be a variant with more gaps, i.e. unassigned byte positions, leading to more question marks in the output.

Uppercase Greek letters ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
737 interpreted as 1252 €?‚ƒ„…†‡ˆ‰Š‹Œ?Ž??‘’“”•–—
Observed in the examples (incomplete) €  ƒ„  ‡???????????“”? ?
737 interpreted as 1253 (wild guess) €?‚ƒ„…†‡?‰?‹?????‘’“”•–—

While code page 1253 (1252-variant for Greek) matches somewhat better, it’s not a full match. Capital Kappa Κ maps to , but it should be a ?, etc.

Phew! So we’re searching for a 1252-like encoding…

  • that contains € ƒ ‡ “ ”
  • but not Œ Š ‹ Ž ‰ • — ‘ ’

I think I’ll start looking at the beach, with a drink that has ‰! :)

“Did we pick a nice holiday location?” To me, the only relevant indicator for that is how closely the sunsets resemble Lotus 2’s high score screen. :)

Reference
Verdict: Acceptable!

Yes, we all � Unicode, or rather, the joy of competing legacy encodings and conversions.

Even when you’re on holidays, a nice soup of encoding chaos can give you a chuckle – especially when it’s presented to you as the bar tab and you first have to scratch your head a little:

Later I got another receipt, this time without mangled-up characters. Interesting! Even if mojibake looks random, charset conversions do not happen randomly. Indeed, we might guess some substitutions when we compare the receipts:

Most Greek letters turn to question marks, with some exceptions: “Α” (capital Alpha) always becomes the Euro sign “€”, and “Ε” (capital Epsilon) turns into double lower quotation marks. Since the number of characters stays the same, this seems to be an 8-bit fuckup (i.e. there’s no UTF-16 or UTF-8 involved, where we would expect multiple garbled output characters for some input characters). The fact that we see “ƒ” (small F-with-hook) and double quotation marks hints to code page 1252 (or code page 1253 for Greek?). Maybe the ancient code page 869 is involved, too?

Char Codepoint UTF-8 CP-1253 CP-869
Α U+0391 CE 91 C1 A4
Ε U+0395 CE 95 C5 A8
U+20AC E2 82 AC A4
U+201E E2 80 9E 0A 84

A-ha! Or should I say: Ηὕρηκα! The messed-up texts were originally CP-869-encoded, and those bytes were then interpreted as as Windows-1253!

…or were they? At least for the capital Alpha this would work, but the capital Epsilon would end up as “¨” (diaeresis) instead of lower double quotation marks. A font issue? Also, this requires a 1253-variant where A4 is the Euro sign, not the generic currency symbol “¤”.

Since I’m on holidays, I consider this riddle half-solved for now, and I’ll celebrate with half a liter of ΜΑΜΟΣ beer! :)

previous next close
eie