# Amiga Hunk

Hunk indica il formato di codifica delle informazioni dei file eseguibili (programmi) che girano sul sistema operativo AmigaOS.
Deve il suo nome al fatto che i file eseguibili di Amiga, suddividono porzioni di codice e dati presenti all'interno del programma in tanti 'hunk', in italiano "pezzi", "spezzoni", che contengono ognuno singolarmente parti di codice o di dati.

## Caratteristiche dei file eseguibili Amiga

L'eseguibile Amiga può essere lanciato sia dall'interfaccia grafica ad icone Amiga Workbench, sia dalla riga di comando, (in Amiga CLI o Amiga Shell) o anche dall'interno di un file manager. A differenza di altri sistemi operativi come MS-DOS o Windows che hanno bisogno di una estensione (".com", ".exe") per riconoscere di trovarsi di fronte ad un file eseguibile, Amiga adotta invece una sequenza particolare di byte nell'intestazione del file, che è il valore $000003f3.
Questa sequenza prende il nome di "magic cookie", o biscottino magico (dal nome dei biscottini magici nella favola di "Alice nel paese delle meraviglie").
Tale soluzione è mutuata dall'analoga soluzione del mondo Unix, dove i magic cookie sono chiamati "magic number". Anche se il magic number è tuttora in uso nel mondo Unix, vi è anche un altro metodo di indicare al sistema che si trova di fronte ad un file eseguibile, ed è quello di gran lunga più adottato in questo sistema operativo. Si tratta di adottare speciali attributi del file indicati nel suo descrittore (bit "x") o richiedono uno speciale marcatore in una posizione prestabilita all'interno del file stesso.

## Descrizione
### Generalità

Gli hunk possono esistere in varie versioni, hunk a 32 bit, hunk a 16 bit, e ve ne sono anche alcuni a soli 8 bit. In pratica gli hunk sono codificati in modo standard all'interno di AmigaOS, e ben documentati sui manuali Amiga "Kernel Manual" della Commodore negli anni in cui Amiga veniva prodotta. In pratica essi sono come i file IFF in quanto sono uno standard riconosciuto.
La loro struttura è semplice: un header, o intestazione all'inizio del file indica che si tratta di un file di tipo riconosciuto e valido su Amiga, a seguire un ID (Identificativo) con l'indicazione della lunghezza dell'hunk stesso, ed infine il segmento contenente i dati veri e propri.

### Struttura

Il file eseguibile Amiga Hunk è così composto: all'inizio del file vi è il magic cookie, detto anche in Unix magic number, di seguito viene dichiarato il numero di hunks in cui è diviso il file, e quindi il numero progressivo degli hunks partendo da 0, che identifica sempre il primo Hunk (Ad esempio se il file è diviso in soli 3 hunk, verrà dichiarato il numero di hunks totali e cioè nel nostro esempio sono tre, seguito dal numero degli hunks: 0 il primo, 1 il secondo e 2 il terzo, e così via). Prima che inizino gli hunk contenenti codice e dati veri e propri vi è in penultima posizione la tabella con la grandezza dei vari hunk presenti nel file eseguibile. Per ultimi ovviamanete vengono i singoli hunk, ognuno indicato dal suo descrittore: HUNK_CODE, HUNK_DATA, eccetera.
Rappresentazione della struttura:
| Magic Cookie | Total number of hunks | Progressive number of hunks | Table of length | Various Hunks (Hunk_Code, Hunk_Data, etc) |

## Tipologie

I tipi di hunk conosciuti sono:
| Name | Value |
| HUNK_UNIT | 999 |
| HUNK_NAME | 1000 |
| HUNK_CODE | 1001 |
| HUNK_DATA | 1002 |
| HUNK_BSS | 1003 |
| HUNK_RELOC32 | 1004 |
| HUNK_RELOC16 | 1005 |
| HUNK_RELOC8 | 1006 |
| HUNK_EXT | 1007 |
| HUNK_SYMBOL | 1008 |
| HUNK_DEBUG | 1009 |
| HUNK_END | 1010 |
| HUNK_HEADER | 1011 |
| (not used) | 1012 |
| HUNK_OVERLAY | 1013 |
| HUNK_BREAK | 1014 |
| HUNK_DREL32 | 1015 |
| HUNK_DREL16 | 1016 |
| HUNK_DREL8 | 1017 |
| HUNK_LIB | 1018 |
| HUNK_INDEX | 1019 |
| HUNK_RELOC32SHORT | 1020 |
| HUNK_RELRELOC32 | 1021 |
| HUNK_ABSRELOC16 | 1022 |
| HUNK_PPC_CODE | 1257 |
| HUNK_RELRELOC26 | 1260 |

## Metadati

Amiga registra anche dei metadati in file noti come ".info" (dal nome della loro estensione), questi possono essere equiparati ai resource fork del mondo Macintosh, sebbene non siano esattamente equivalenti ad essi. Ad esempio: salvando un progetto su disco, vengono salvati due file, MyProject e MyProject.info. In MyProject saranno registrati i dati veri e propri del progetto, mentre in MyProject.info saranno contenute, l'icona del progetto, e l'informazione riguardante quale programma è quello originale (oppure quello preferito dall'utente) per aprire il progetto (in AmigaOS non esiste l'application binding), inoltre le opzioni particolari del progetto ed i commenti dell'utente. I file.info, sullo schermo del Workbench ('la scrivania'), non appaiono come file a sé ma l'icona stessa, estratta dall'interno dell'info cui si riferisce, essendo visibile sulla scrivania, è il medium che interconnette fisicamente l'info con il file dati che gli appartiene. La pressione del tasto destro del mouse sull'icona, apre una finestra di input che permette di leggere o modificare i metadati. Per visualizzare i file info come file a sé, questi devono essere visualizzati usando la riga di comando o tramite un file manager. L'utente può anche fare a meno del file info, cancellandolo, rinunciando però alla comodità dell'icona e dei metadati.

## Icone interne al file .info associato all'eseguibile

Le vecchie versioni di AmigaOS potevano associare all'interno del file.info le immagini in formato bitmap dell'icona corrispondente. Questa caratteristica si è mantenuta in tutte le versioni di AmigaOS e sistemi operativi da esso derivati.
La bitmap interna al file.info che va a costituire l'Icona è una sorta di RAW, cioè "grezzo" e non è associato allo standard IFF di Amiga. Le icone possono però essere modificate e salvate dal programma IconEdit da sempre presente fra i programmi di utilità di AmigaOS (IconEdit è presente sul disco floppy di nome Utility fino a AmigaOS3.1 e poi nell'apposita directory su CD a partire da AOS 3.5). A partire dalla versione AOS 2.0 IconEdit è in grado di caricare normali file IFF/LBM per importarli nel suo spazio di lavoro.
Le icone su Amiga possono anche essere modificate e salvate dai programmi grafici Amiga che sono in grado di modificare e salvare i file.info, come ad esempio Personal Paint di Cloanto.
L'icona di Amiga ha un effetto simulato di animazione a cartoni animati, cioè è presente con due immagini corrispondenti a due stati diversi di selezione. La prima a riposo, la seconda attivata o cliccata. Una volta che l'utente clicca due volte col mouse sull'eseguibile lanciandolo, l'icona cambia stato, e il sistema mostra a video la seconda immagine con un gradevole effetto simile ad una subitanea animazione, o dando un'impressione come se si aprisse una scatola a sorpresa.
Metodi moderni di selezione dei file eseguibili, tramite gli engine grafici Magic User Interface (MUI) o ReAction comportano vari tipi di selezione delle icone, e nuovi e vari effetti per mostrare lo stato di attivazione, che sono alternativi alla doppia icona grafica a due stati (attivato e riposo). Tra questi ricordiamo: l'inverse grafico, brillamenti dell'icona, aloni intorno alle icone, e così via, secondo diverse modalità selezionabili a scelta dell'utente nel pannello delle preferenze di AmigaOS.
I cloni moderni dell'Amiga (AROS, Morphos e AOS4), oltre alle icone bitmap in formato RAW, possono anche accettare file grafici standard PNG come immagine dell'icona del file.info.