🎲 β€” mikrobloggeriet luke β€” luke-8 Β· luke-9 Β· luke-10

LUKE-9

I en tid fΓΈr grafiske brukergrensesnitt pleide IT-folk Γ₯ sende slike julehilsener til hverandre:

     β—†                                     β—†
             βŽ½βŽ½βŽ½βŽ½βŽ½βŽ½βŽ½βŽ½β”Œβ”βŽ½βŽ½                 / \
 ↓          /        β””β”˜  \               / β†’ \
            ┬────────────┬              / Β°  Β°\
───────────── β”Όβ”Ό β”Œβ”€β”€β” β”Όβ”Ό β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€/ ↓~ Β°  \
            β”‚    β”‚-.β”‚    β”‚            /βŽ½βŽΌβ”€β”¬β”€β”¬β”€βŽΌβŽ½\
            β””β”€β”€β”€β”€β”΄β”€β”€β”΄β”€β”€β”€β”€β”˜              β”Œβ”€β”΄β”€β”΄β”€β”
                                        β””β”€β”€β”€β”€β”€β”˜

Denne kommer fra et arkiv av β€œVT100-animasjoner”, mange stammer fra 1980-tallet.

Disse er jo hyggelige og fine, men… πŸ€” ASCII-standarden fra 1963+ inneholder bare 128 symboler og ┐, β”΄ og β—† er ikke blant dem β€” Unicode og UTF ble jo ikke oppfunnet fΓΈr pΓ₯ 1990-tallet! Jeg leste filene direkte, sΓ₯ hvordan virker dette egentlig?

VT100 er en dataterminal som ble utgitt i 1978 (fysisk maskin, produsert av Digital Equipment Corporation, DEC) og manualen sier:

The VT100 has many control commands which cause it to take action other than displaying a character on the screen. In this way, the host can command the terminal to move the cursor, change modes, ring the bell, etc. […]

Character set G0 designator
United States (USASCII) ESC ( B
Special graphics characters and line drawing set ESC ( 0

SΓ₯ hvis terminalen mottar tegnene ESC ( 0 bytter den tegnsett til Special graphics and line drawing.

Mange av disse kontrollkodene er standardisert i ANSI X3.64 og X3.41/ECMA-35(1980), men hvilke tegnsett (B, 0) som implementeres er ikke spesifisert.

Uansett kan vi lese i Linux-dokumentasjonen om Console Controls:

ESC ( Start sequence defining G0 character set (followed by one of B, 0, U, K, as below)
ESC ( B Select default (ISO 8859-1 mapping).
ESC ( 0 Select VT100 graphics mapping.

Jeg liker at plattformer har bakoverkompatibilitet, og dette er et heftig eksempel. Jeg kan her nyte, rett ut av boksen, innhold og kontrollkoder produsert for 40 Γ₯r siden, pΓ₯ min moderne Mac eller Linux-maskin.

La oss i denne adventstiden sette pris pΓ₯ all kode og innhold skapt i 2023 og tidligere, som fortsatt virker som det skal 🌟

Min gave til dere i denne kalenderluken er julehilsen fra fortiden:

printf '\033[?25l' # skjul markΓΈr
curl -s http://artscene.textfiles.com/vt100/xmas2.vt \
| node -e 'require("fs").readFileSync(0).forEach((b,i)=>
    setTimeout(()=>process.stdout.write(Buffer.from([b]).toString()),i))'

β€”Richard Tingstad