La manina dell’ Amiga

All’ accensione di quasi tutti gli home-computer ad 8-bit l’utente era salutato dal detentore di vari copyright e subito abbandonato a se stesso ed all’ interprete Basic. Con l’Amiga no, c’era una perentoria mano che brandiva un floppy 3,5″ di colore blu, semanticamente inequivocabile, promessa e premessa delle gioie che sarebbero arrivate.
Questa è la storia di quanto era dietro a quella iconica manina.

Chi fosse l’autore l’ autrice è un mistero svelato solo nel 2017, quando ha pubblicamente risposto in un forum online condividendo dei dettagli sul suo impiego di product design in Commodore;
Sheryl Knowles racconta di essere stata la prima artista assunta nel team Amiga, di aver lavorato gomito a gomito con RJ Mical (che si occupò di Intuition, l’interfaccia grafica di sistema, e della scrittura dei tools) e Jack Hager, l’ art director del progetto. I tre si divisero i compiti; la Knowels realizzò molte delle icone e dei font utilizzati nel Workbench (il sistema operativo di Amiga di quegli anni, oggi chiamato AmigaOs).
I pittogrammi stampati sulle plastiche posteriori dell’ Amiga 1000 sono sua opera:

Oltre a questo le dobbiamo anche molte delle prime illustrazioni digitali realizzate per mostrare le potenzialità di Amiga e la progettazione di Graphicraft (programmato da RJ Mical per Island Graphics Corporation), primissimo pacchetto grafico commercializzato per la piattaforma dalla stessa Commodore.
Sforzi testimoniati e ripagati dalla sua firma imperitura nella scocca superiore degli Amiga 1000.

Prima della creazione di Graphicraft la Knowles lamenta di aver dovuto produrre molta della sua arte su carta millimetrata, poi a schermo dove venivano fatti dump dell’ intera memoria o fotografie in 35mm.
Ci fu in seguito una versione più evoluta di Graphicraft, destina al mercato professionale, chiamata ProPaint; è possibile vederne al lavoro una versione alpha manovrata da Andy Warhol al gala di presentazione di Amiga a NewYork, il 23 luglio 1985.
Secondo quanto riportato da Mical la versione di ProPaint era tanto acerba e buggata che fu indicato esplicitamente a Warhol di non utilizzare la funzione di fill dato che si sarebbe potuto bloccare l’ intero sistema; diktat che l’ artista ignorò completamente, fortunatamente con nessuna conseguenza; rivedendo quelle immagini a 40 anni di distanza c’è chi ancora sta col fiato sospeso ed una incombente ansia.

Nel curriculum vitae di Sheryl Knowels si sarebbero alternati molti lavori nell’ industria del videogioco della Silicon Valley, in compagnie come Epyx, Electronic Arts, Fujitsu, and Infogrames, prestando la sua arte a titoli come Rescue on Fractalus, Street Sports Basketball, California Games, Omnicron Conspiracy, Ishido, RoadRash e Desert Strike per EA, Lord of the Rings, Zero Tolerance, WorldsAway, Hogs of War.

Con molta carta millimetrata, nessun tool grafico specifico ancora pronto e stringenti costrizioni sul quantitativo di (costosissima) RAM da utlizzare (il modello base di Amiga 1000 usciva con 256kb) iniziava così la sfida della creazione.

Si optò per generare programmaticamente mano e dischetto utilizzando una manciata di funzioni delle librerie di sistema (setDrMd, Move, Draw e Flood di graphics.library es.) e ricorrere a delle bitmap per il logo “Amiga”(2 bitplane) ed un ulteriore bitplane per le altre scritte (Workbench, V 1.x, ecc.); il “peso” complessivo dell’ intera schermata è intorno a soli 700 bytes.
L’ algoritmo di rendering legge due bytes a volta dal seguente array che contiene comandi e dati;

FF 01 23 0B 3A 0B 3A 21 71 21 71 0B 7D 0B 88 16 88 5E 7F 5E 7F 38 40 38
3E 36 35 36 34 38 2D 38 2D 41 23 48 23 0B FE 02 25 45 FF 01 21 48 21 0A
7E 0A 8A 16 8A 5F 56 5F 56 64 52 6C 4E 71 4A 74 44 7D 3C 81 3C 8C 0A 8C
0A 6D 09 6D 09 51 0D 4B 14 45 15 41 19 3A 1E 37 21 36 21 36 1E 38 1A 3A
16 41 15 45 0E 4B 0A 51 0A 6C 0B 6D 0B 8B 28 8B 28 76 30 76 34 72 34 5F
32 5C 32 52 41 45 41 39 3E 37 3B 37 3E 3A 3E 41 3D 42 36 42 33 3F 2A 46
1E 4C 12 55 12 54 1E 4B 1A 4A 17 47 1A 49 1E 4A 21 48 FF 01 32 3D 34 36
3C 37 3D 3A 3D 41 36 41 32 3D FF 01 33 5C 33 52 42 45 42 39 7D 39 7D 5E
34 5E 33 5A FF 01 3C 0B 6F 0B 6F 20 3C 20 3C 0B FF 01 60 0E 6B 0E 6B 1C
60 1C 60 0E FE 03 3E 1F FF 01 62 0F 69 0F 69 1B 62 1B 62 0F FE 02 63 1A
FF 01 2F 39 32 39 32 3B 2F 3F 2F 39 FF 01 29 8B 29 77 30 77 35 72 35 69
39 6B 41 6B 41 6D 45 72 49 72 49 74 43 7D 3B 80 3B 8B 29 8B FF 01 35 5F
35 64 3A 61 35 5F FF 01 39 62 35 64 35 5F 4A 5F 40 69 3F 69 41 67 3C 62
39 62 FF 01 4E 5F 55 5F 55 64 51 6C 4E 70 49 71 46 71 43 6D 43 6A 4E 5F
FF 01 44 6A 44 6D 46 70 48 70 4C 6F 4D 6C 49 69 44 6A FF 01 36 68 3E 6A
40 67 3C 63 39 63 36 65 36 68 FF 01 7E 0B 89 16 89 5E FE 01 22 0B FE 01
3B 0B FE 01 61 0F FE 01 6A 1B FE 01 70 0F FE 01 7E 5E FE 01 4B 60 FE 01
2E 39 FF FF

I blocchi vengono interpretati secondo poche e semplici regole;
– Se il primo Byte è FF, disegna una polilinea del colore del secondo Byte. Tratta i bytes successivi come coppie di coordinate x ed y appartenenti alla polilinea.
– Quando il primo Byte è FE, esegui un fill col colore indicato nel secondo byte partendo dalle coordinate x,y dei due bytes successivi.
– Qualora entrambi i bytes siano FF, termina le operazioni.
L’ immagine è disegnata partendo da un offset di 70×40 pixel, i quattro colori indicizzati sono;

    0: #fff (bianco)
1: #000 (nero)
2: #77c (blu)
3: #bbb (grigio)
Ecco il risultato al VAR.

Svelata così l’eleganza della soluzione tecnica possiamo goderne con notevoli implementazioni moderne fatte in Javascript, con altisonanti nomi come AmiGogh, scritte in Amos Pro su Amiga. C’è chi ne ha tratto ispirazione per produrre intro da 512bytes e chi tenta di riscrivere la storia e la ROM. Chi mi ha segnalato questo GIT che contiene l’ implementazione in vari dialetti BASIC per le più disparate piattaforme, un notevole esercizio di stile. Infine chi ne scrive in qualche sperduto e scarsamente frequentato blog, per il solo gusto di farlo, nella speranza che Vi sia gradito.