■ #07467a
□ #8ae6a3
"Noto Sans", sans-serif
Mikrobloggeriet

Upolert nysgjerrighet

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

Forrige: En rar ting som skjedde forrige uke
Neste: Et juleevangelie om håndarbeid