# Esempi ed esercizi (originali)

Raccolta di programmi d'esempio per il **G80**, scritti da zero (commenti in italiano).
Sostituiscono, a scopo didattico, gli esempi del libro.

## Elenco
| File | Argomento | Periferiche |
|---|---|---|
| `01-indirizzamenti.asm` | modi di indirizzamento | — |
| `02-somma-e-flag.asm` | aritmetica e flag | — |
| `03-led-contatore.asm` | contatore binario | LED (0x20) |
| `04-interruttori-led.asm` | copia ingressi→uscite | interruttori (0x90), LED |
| `05-lcd-messaggio.asm` | scrittura su display (`OTIR`) | LCD (0xD0) |
| `06-tastiera-lcd.asm` | eco dei tasti | tastiera (0xC0), LCD |
| `07-keypad-lcd.asm` | keypad con handshake | keypad (0x80), LCD |
| `08-timer-interrupt.asm` | timer CTC + interrupt IM2 | timer (0x70/71), LCD, LED |
| `09-motore-counter.asm` | counter/nastro + motore | counter (0xE0/E1), motore (0xB0) |
| `10-kiln-chart.asm` | controllo forno + traccia | kiln (0xF0/F1), chart (0x30) |
| `11-progetto-colonna-luminosa.asm` | **progetto finale**: conta fino al valore digitato | keypad (0x80/81), LED, 7 seg, timer (0x70/71) |
| `12-progetto-pianola.asm` | **progetto finale**: suona e riproduce la melodia | keypad (0x80/81), beeper (0x60), LCD |
| `multifile/` | **linking multi-file** (`.globl`, `.lcf`) | — |

## Come si usano

### Nella UI web
Apri `web/g80-lab.html`, incolla il sorgente (o usa "Apri .asm…") e premi **Assembla & Carica**, poi **Esegui**.
Per il multi-file, incolla i due file separati da una riga `;=== FILE: nome ===`.

### Da riga di comando
```bat
npm run asm -- examples\03-led-contatore.asm
npm run cli -- examples\03-led-contatore.ihx --g80

:: multi-file: assembla in oggetti, poi linka
cd examples\multifile
node ..\..\node_modules\tsx\dist\cli.mjs ..\..\src\cli\asm.ts main.asm --rel
node ..\..\node_modules\tsx\dist\cli.mjs ..\..\src\cli\asm.ts extra.asm --rel
node ..\..\node_modules\tsx\dist\cli.mjs ..\..\src\cli\link.ts progetto.lcf
```
(più comodo: `npm run asm -- examples\multifile\main.asm --rel --out examples\multifile\main.rel`, ecc., poi `npm run link -- examples\multifile\progetto.lcf`)
