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!
The palette wasn’t even that terrible IMHO, see for example Steffest’s winning entry or Titus/Rabenauge’s fantastic piece:
I’m not too sad about the missed party, though – there are more demo parties to come and the vacation sure was nice!
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. :)
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! :)
Blog
- Nov 2024 – 3
- Oct 2024 – 9
- Sep 2024 – 6
- Aug 2024 – 5
- Jul 2024 – 6
- Jun 2024 – 6
- May 2024 – 7
- Apr 2024 – 8
- Mar 2024 – 4
- Feb 2024 – 9
- Jan 2024 – 10
- Dec 2023 – 8
- Nov 2023 – 1
- Oct 2023 – 5
- Sep 2023 – 5
- Aug 2023 – 8
- Jul 2023 – 1
- Apr 2023 – 1
Recently updated pages
- new art
- hrrngh!
- Knob-Out
- B.S.I. – Byte Scene Investigation
- Coppenheimer
- Hold mode minutiae
- Shall we play a game?
- Worms VBI
- strss
- Modding the Amiga boot hand
- More…