\nuovoarticolo{Sebastiano Vigna e Sergio Ruocco}{%
Facciamoci del male, ovvero: lista di indicazioni utili per convivere
con \amiga{}}{%
Sebastiano Vigna \\
Via California 22 \\
I-20144 Milano MI \\
Tel.:~(02)4814850 \\
\medskip \\
Sergio Ruocco \\
Via Di Vittorio 4 \\
I-20019 Settimo Milanese MI \\
Tel.:~(02)3283896
}{%
Internet:~vigna@dsi.unimi.it~~(Vigna) \\
~~~~~~~~~~ruocco@dsi.unimi.it~(Ruocco)
}{italian}{%
The C Programming Language\,---\,A language which combines the
flexibility of assembly language with the power of assembly language.}{}


Il titolo di questo articolo (che non vorremmo si configurasse già come
semiserio) rappresenta l'inconsa\-pevole stato dell'utente medio di \amiga{} in
Italia. Circondato dalla disinformazione, spesso impossibilitato a prendere
contatto con persone che potrebbero dargli consiglio, anestetizzato dalle
tonnellate di software piratato su cui comunque riesce a mettere le mani,
l'Amigo medio spreca i suoi anni migliori (e quelli della sua macchina) a
chiedersi perché BLAZEMONGER non gira se aggiunge un secondo drive al suo
\amiga{} 500 con 1 megabyte (di più no, se no BLAZEINSTALLER non va).

Facciamo un piccolo test; nella sequenza di parole: Enforcer, PD, Mungwall,
AUISG, FreeWare, RKM, Texinfo, AmigaGuide, Sushi, UUCP, Internet, ShareWare,
CopyLeft, quante vi risultano note, e cioè di quante sapreste spiegare il
significato e la connessione inscindibile con \amiga{}, esemplificando la
vostra dissertazione con disegni verosimili? Se più di cinque vi risultano
ignote, e ancor più se siete programmatori, questo articolo potrebbe esservi
di una qualche utilità. Toccheremo una serie di temi importanti relativi ad
\amiga{}, cercando di fornire in poche righe alcune informazioni essenziali.

% NUOVO!
Una prima versione di questo articolo, a nome del primo autore, è stata
pubblicata sugli atti dell'\IPISA{} '93. La presente versione è stata
aggiornata sulla base dei dati più recenti riguardanti la Commodore, la SAS,
e altre ditte che ruotano attorno ad \amiga.


\sez{Il destino della Commodore}

% NUOVO!
È ormai notizia di dominio pubblico che una pessima amministrazione durata
diversi anni ha portato la Commodore International alla bancarotta, e alla
successiva liquidazione. Attualmente, diversi acquirenti si sono fatti
avanti. Fra questi, i più promettenti sono la Commodore UK e la CEI, ex
distributore della Commodore negli Stati Uniti. In entrambi i casi, comunque,
non si può pensare a un ritorno ai tempi d'oro: tutti gli ingegneri chiave
(Dave Haynie, Mike Sinz, ecc.) hanno lasciato i laboratori di West Chester e
lavorano attualmente per diverse ditte; molti hanno trovato casa alla Scala,
produttrice dell'omonimo programma.

Il problema più grave sollevato da questo infausto evento è la diaspora dei
produttori di hardware e software, che si stanno rapidamente spostando su
altre piattaforme più remunerative: un mercato piccolo e privo di possibilità
di espansione non è certo il più appetibile. Allo stesso modo, molti autori di
software distribuibile liberamente stanno sospendendo lo sviluppo dei loro
programmi.

Le speranza più consistente è che \amiga{} possa sopravvivere grazie alle sue
qualità multimediali; la piena compatibilità con il segnale PAL ne fa infatti
la macchina ideale per la creazione di chioschi informativi, sistemi di
videotitolazione, montaggio video e così via. Se si vuole mantenere vivo un certo
interesse nei produttori, distributori e rivenditori di hardware e software
occorre inoltre focalizzare i propri acquisti su soggetti che operano
esclusivamente (o quasi) nel mercato di prodotti per \amiga. Ad esempio,
grazie alle quote shareware del quarto CD di Aminet, Urban Müller (cfr.\ il
suo articolo in questi stessi atti) ha potuto acquistare un nuovo, capace
hard disk per il mantenimento dell'archivio di Aminet.

\sez{Il sistema operativo}

La quantità di informazioni sbagliate e/o tendenziose esistenti su questo
argomento è assolutamente sbalorditiva. Sono noti casi di individui improbabili
recatisi dal negoziante chiedendo di mettere su \amiga{} 500 Plus le ROM della
versione 1.3, affermando che con la 2.04 ``i giochi non partono''. Vediamo di
fare luce sull'intera vicenda.

Quando \amiga{} venne alla luce, fu distribuito con una versione del sistema
operativo, la 1.0 o la 1.1, che chiamare definitiva era in effetti un po'
altisonante. Riusciva, è vero, a far funzionare per alcune ore la macchina, ma
niente di più.

Il grosso salto avvenne con la distribuzione della 1.2. Prima di tutto, alcune
funzioni assolutamente necessarie erano state finalmente introdotte (per
esempio, il rinfresco dei singoli gadget). Poi, si poteva\,---\,udite
udite!\,---\,usare tutto lo schermo PAL.

Rimaneva ancora un problemino: non era possibile effettuare il lancio della
macchina da disco rigido, una rogna disastrosa per una macchina non certo nota
a causa della silenziosità o della velocità dei suoi dischetti. La lacuna venne
colmata con la 1.3, in cui finalmente fu introdotto il nuovo, velocissimo Fast
File System, riservato solamente ai dischi rigidi.

Era però sempre più evidente per tutti che una serie di carenze gravi
affliggevano parecchie parti del sistema operativo. (Sciorinare qui una lista
esaustiva dei buchi da tappare e delle migliorie che era necessario apportare
sarebbe stato decisamente prolisso.)

D'altra parte, è veramente impossibile riuscire a far sentire al lettore
che non abbia seguito quegli anni con l'intensità di chi scrive (sì, perché di
lunghi anni si è trattato!), la quantità di sudore, lacrime, attesa e
disperazione generate dalla scrittura, dal beta-testing e dalla pubblicazione
della Release 2. Furono anni unici (che credo rimarranno irripetibili nella
storia di \amiga{}) durante i quali un manipolo di stakanovisti della Commodore e
la quasi totalità degli sviluppatori si dedicarono a produrre la riscrittura
totale più compatibile del mondo. Anni durante i quali, oltre a generare mezzo
megabyte di codice ultracompatto e a prova di bomba, vennero testati centinaia
e centinaia di prodotti (soprattutto giochi) affinché le nuove macchine, e
soprattutto gli utenti, non fossero penalizzati dal non poter più utilizzare i
loro vecchi programmi.

Il risultato fu decisamente eccezionale (si provi a paragonarlo con il System 7
della Apple, che ha causato incubi e disturbi psicofisici di entità non lieve a
quasi tutti gli utenti \macintosh). Per dirla con un'espressione rozza, ma
essenzialmente corretta, ``girava tutto''.

Vi starete chiedendo come mai il mitico acquirente dell'\amiga{} 500 Plus sia
tornato indietro. Forse perché i giochi non funzionavano? Ebbene, {\em no}. Lui forse
poteva crederlo, ma purtroppo il problema è un altro: {\em le sprotezioni
pirata non funzionano!\/} Il 99\% dei problemi riscontrati nel far funzionare
giochi sulla Release 2 deriva dal fatto che chi li ha sprotetti non capisce pressoché
nulla a parte il proprio modello di \amiga{} (che ovviamente conosce fino
all'ultimo cavetto). Peccato che la sua conoscenza sia assolutamente inutile sui
restanti tre milioni di macchine; ma\,---\,come si dice?\,---\,alla qualità bisogna a
volte sopperire con la quantità.

Il triste, deprimente risultato (peraltro rinforzato dalla politica commerciale
della Commodo\-re) è che quasi nessuno in Italia sa addirittura dell'esistenza
della Release 2. Quando poi ci si impegna per trovarla, si scopre che è necessario
pagarlo cifre folli (perché il montaggio è necessariamente incluso).

D'altra parte, l'Amigo medio italiano è raramente in contatto con il software
distribuibile di altissima qualità che popola le reti informatiche, e quindi
può non sapere che quasi nulla ormai gira sotto 1.3, a parte detti giochi
sprotetti.

La storia ovviamente continua con la 2.1, che introduce i nuovi velocissimi
requester e la localizzazione (ovvero il supporto software per la traduzione
dei programmi), e con la 3.01, il software delle nuove macchine, che permette la
gestione dei chip AGA (e anche altre cosucce molto carine). La base di
compatibilità per il futuro rimane però la 2.04, che è un po' come un paletto
piantato sull'Everest dopo una lunghissima scalata. Il salto 1.3-2.04 è
infatti enormemente più importante di quello 2.04-3.01.

% NUOVO!
A questo punto della vicenda si inserisce la versione 3.1, attualmente
distribuita attraverso canali un po' particolari. Consuma meno memoria della
versione 2.04, è dotata di una gestione delle finestre molto più veloce
(merito delle ottimizzazioni apportate da Mike Sinz alla ¶{layers.library}),
di menu a sfondo bianco, di tipi di dati orientati agli oggetti, di una
libreria grafica predisposta all'utilizzo di schede, di una
manualistica esaustiva e completamente rinnovata, di file system per i
CD-ROM$\ldots$ insomma, se volete ancora lavorare con \amiga, è proprio il
caso di procurarsela. Il contatto in questo caso è la Euro Digital Equipment,
Via Dogali 25, 26013 Crema CR, tel.: (0373)86023, fax/BBS (0373)86966.

Se possiamo quindi dare un consiglio spassionato: costi quel che costi,
{\em procuratevi la Release 3}. La funzionalità e la stabilità di \amiga{} ne
vengono letteralmente decuplicate.

Una nota finale, a lato degli aggiornamenti del sistema operativo: lo stesso
discorso va fatto per qualunque libreria o strumento di supporto installato
nel vostro sistema. Spesso, malfunzionamenti o inefficienze di programmi
derivano da file obsoleti, modificati o addirittura assenti.
Cercate di procurarvi sempre le ultime versioni, soprattutto per quanto
riguarda le librerie chiave. Il comando ¶{version full <nomefile>} vi fornirà
la versione e la data di creazione del file specificato (se le relative
informazioni sono presenti, come avviene per tutti i file più recenti),
aiutandovi così a decidere il da farsi. Tenete conto del fatto che i
programmi più diffusi vengono aggiornati almeno ogni sei-otto mesi.


\sez{Il software distribuibile}

\amiga{}, grazie al suo folto gruppo di utenti amatoriali, possiede una vastissima
gamma di software distribuibile. Si tratta di programmi che possono essere
liberamente copiati e utilizzati, senza pagare alcunché (o pagando come
vedremo, cifre molto inferiori a quelle dei programmi commerciali). Su molti
fronti, i programmi distribuibili sono superiori a quelli commerciali: un
esempio tipico è quello dei programmi di comunicazione.

Il problema del software distribuibile è la sua distribuzione: non esistendo
canali commerciali, bisogna affidarsi ai modem (che sono ancora poco diffusi da
noi), agli User Group (ancor meno diffusi), alle collezioni di software
distribuibile, come quella di Fred Fish (neanche a parlarne), o all'accesso di
siti ftp via Internet (fantascienza).

Purtroppo, le BBS italiane sono in larghissima parte saturate di pessimo
software piratato, per la maggior parte giochi, che soffoca letteralmente,
peggio di una vera e propria gramigna, l'ottimo software invece reperibile
negli Stati Uniti. Una bella beffa, se si pensa che il miglior software di
questo tipo viene prodotto proprio in Europa.

Vediamo innanzitutto di fare un po' di azzeramento del linguaggio:

\begin{itemize}

\item Software di dominio pubblico (public domain): si tratta di programmi, di
solito distribuiti anche sotto forma di sorgente, dei quali l'autore non
detiene più il Copyright (questo fatto avviene automaticamente qualora l'autore
non si esprima esplicitamente altrimenti, o comunque dichiari il software di
dominio pubblico). Senza dubbio di alto altruismo e levatura morale, questa
metodologia è andata in disuso dopo che alcuni programmi di dominio pubblico
sono stati leggermente modificati e poi venduti a caro prezzo da ditte non
proprio esemplari.

\item Software liberamente distribuibile (freeware): si tratta di programmi di cui
l'autore detiene il Copyright, ma che mette a disposizione degli utenti senza
richiedere nulla in cambio. Il mantenimento del Copyright garantisce
l'impossibilità (almeno teorica) di operazioni losche come quella di cui sopra.

\item Copyleft: si tratta di una speciale ``versione'' del concetto di Copyright
inventata dal gruppo GNU (un gruppo di programmatori che ha prodotto negli
ultimi anni una mole spaventosa di software sotto UNIX, e per riflesso sotto
\amiga{}). In sostanza, i programmi vengono distribuiti insieme al sorgente.
L'utente ha la possibilità di modificare a suo piacimento il pacchetto e
di ridistribuirlo modificato, se gli aggrada, purché gli avvisi di Copyright
rimangano intatti, e tutti i diritti di cui ha goduto l'utente vengano
trasmessi al successivo (possibilità di modificare il codice, etc.). In altre
parole, è una riedizione del dominio pubblico in cui però gli originatori usano
il proprio Copyright al puro scopo di impedire giochetti sporchi.

\item Shareware: si tratta di programmi distribuiti liberamente, ma per i quali
l'autore richiede, in caso di uso effettivo, il pagamento di una (in genere
modesta) cifra. Pochissime persone pagano effettivamente, il che è un vero
peccato.

\end{itemize}

Il termine {\em software commerciale\/} denota invece i programmi che
normalmente vediamo nei negozi, e che vengono distribuiti tramite canali
commerciali standard. In genere, chi scrive e produce programmi commerciali lo
fa per vivere, contrariamente a chi scrive per le altre categorie.

Se si vuole accedere alla manna del software distribuibile, è necessario
armarsi di pazienza e, inderogabilmente, di un buon modem (ormai i 14\,400 V32bis
V42bis sono molto sotto il mezzo milione). Il modem apre immediatamente a
chiunque le porte di una comunità molto più vasta di quella in cui è abituato a
muoversi, con tutti i vantaggi del caso. Con un po' di attenzione è possibile
trovare BBS ricche di programmi distribuibili; inoltre, l'unirsi in gruppi di
utenti consente di dividere le spese telefoniche, dato che poi il software
raccolto è comunque replicabile a piacere.

È veramente triste, e non ci stancheremo mai di ripeterlo, che proprio la
macchina dotata, per sua fortuna, di una quantità enorme di software gratuito e
ben scritto sia anche maledetta da una comunità telematica di così basso
livello.

% NUOVO!
Vale la pena di menzionare che nell'ultimo anno si è aperta una via
alternativa alla distribuzione telematica: Fred Fish, Urban Müller, la Walnut
Creek e la Almathera stanno pubblicando numerosi compact disk (CD-ROM) di sofware
liberamente distribuibile per \amiga, del costo unitario irrisorio (intorno
alle 40\,000 lre). Il materiale disponibile sorpassa di molto quello
recuperabile sulle BBS italiane; è però necessario procurarsi un lettore di
CD-ROM (attualmente, alcuni modelli economici non superano le 400\,000 lire).
Tenete presente che, dato che un CD-ROM contiene più di 600 megabyte di
software, può essere proficuo dividere la spesa di un lettore e dei dischi
tra più persone (dato che, lo ripetiamo, il contenuto è formato da software
liberamente distribuibile, è possibile riprodurlo a piacimento su dischetti,
nastri e così via).

\sez{Le reti}

Più che di singole BBS, per telematica veramente distribuita si intedono le
grandi reti. Esse sono formate da centinaia, migliaia e anche più nodi, che si
connettono periodicamente (in alcuni casi anche permanentemente) per permettere
lo scambio di posta, conferenze e file.

La posta elettronica è stata giustamente paragonata alla televisione per la
radicale modifica delle abitudini che induce in chi la usa. È pressoché
impossibile anche solo immaginare che cosa succederà quando tutta la popolazione
mondiale, e non solo pochi milioni di persone, avranno a disposizione questo
strumento.

Essenzialmente, ogni utente di una rete ha un indirizzo elettronico. Ogni altro
utente può mandare messaggi (di solito testi) a un altro utente, specificando
il suo indirizzo. La posta elettronica arriva nel giro di minuti (anziché
giorni) e non richiede alcuno sforzo quale l'acquisto delle buste, dei
francobolli, eccetera. Naturalmente, non può neanche darci il piacere di una
carta scelta con gusto, o di una penna che scorre sul foglio, ma le nuove
tecnologie richiedono sempre dei compromessi. Chi scrive non ha mai tollerato
la fatica e la complicazione della posta normale, ma è diventato un fervido
sostenitore della posta elettronica dopo pochissimo tempo; pensiamo che ben poche
persone possano non condividere questa impressione.

Le conferenze ({\em news}) sono un analogo elettronico di una piazza in cui si
svolge una discussione. Ciascuno può dire la sua, o commentare l'opinione
altrui, in totale libertà. Anche in questo caso siamo accuratamente schermati
dalla fatica (ma anche dal piacere) di doverci spostare, impegnare in un
dibattito e così via. Il grande fascino delle conferenze è che spesso
personaggi di fama mondiale vi descrivono il proprio pensiero, ed è possibile
(nei limiti del buongusto) interpellarli e ascoltarli.

Il trasferimento dei file è probabilmente la funzionalità più ``fredda'' messa
a disposizione dalle reti, ma è di utilità persino superiore alle precedenti.
Permette a persone sparse geograficamente su tutto il globo di collaborare a
stretto contatto su progetti comuni, e soprattutto fornisce un mezzo di
diffusione capillare e istantaneo al software distribuibile, che senza le reti
sarebbe relegato sul disco rigido della macchina dell'autore.

Come accedere a una rete? Ci sono reti amatoriali, tra cui spicca FIDO, a cui
si può accedere a costo zero semplicemente connettendosi mediante un modem a
una BBS facente parte di esse.

% NUOVO!
Fino all'anno scorso, per entrare in Internet, la grande rete mondiale che
connette le università e i centri di ricerca, era necessario essere studenti
o dipendenti di un'università connessa. Nell'ultimo anno una
nuova esplosione di interesse ha provocato la nascita di una serie di
``fornitori'' di connessioni Internet (in gergo, {\em Internet providers\/}),
che offrono, per una cifra contenuta, l'accesso ad alcuni servizi tra quelli
testé menzionati.

Tra i vari fornitori, segnaliamo Altair Data System BBS, tel.:\ (02)6420515;
Galactica, tel.:\ (02)29006150; Telnet, tel.:\ (0382)527893 (al primo numero
di telefono risponde una BBS).

I prezzi variano delle 100\,000 alle 600\,000 lire circa annuali, a seconda dei
servizi offerti. Il prezzo è in genere {\em una tantum}, a parte, ovviamente,
il costo della telefonata urbana o interurbana necessaria al collegamento con
la BBS.



\sez{Programmare su \amiga{}}

Uno degli argomenti più scottanti, e su cui si diventa facilmente religiosi, è
la programmazione di \amiga{}. Fin dagli esordi, si sono formate due schiere
abbastanza compatte: i fanatici delle {\em poke}, che conoscono a memoria ogni
locazione utile, scrivono in esadecimale (Assembler? che cos'è un Assembler?) e
misurano i tempi di esecuzione in millimetri di schermo, e i programmatori
cosiddetti ``seri'' che invece utilizzano il sistema operativo e linguaggi
``ad alto livello'' (leggi C) e si mantengono scrupolosamente lontani dalla
struttura fisica della macchina.

Mentre il primo approccio poteva funzionare sul Commodore 64, su \amiga{} si è
rivelato assolutamente disastroso. Le numerose, diverse configurazioni hardware
e software disponibili hanno reso pressoché impossibile scrivere codice del
genere sperando di vederlo funzionare altrove che sulla propria macchina.
Migliaia e migliaia di ore/uomo sono state biecamente sacrificate invece di
essere utilizzate produttivamente.

Questo, ovviamente, non significa che con le dovute attenzioni non si possa
prendere il controllo della macchina e farle fare cose particolari. In
particolare, sotto 3.1 la ¶{lowlevel.library} permette di disattivare
selettivamente parti del sistema operativo. E ci sono programmi perfettamente
legali, come ¶{SuperDuper}, che accedono in modo controllato allo hardware per
migliorare le proprie prestazioni.

La sragionevolezza dello smontare il sistema operativo sta nel fatto che Exec è
incredibilmente efficiente. Non fornisce servizi come la protezione della
memoria, o spazi di indirizzamento virtuale separati, ma ha un sovraccarico
assolutamente irrisorio. È pura fantasia pensare di poter fare di meglio. E, se
anche si riuscisse, si costringerebbe il proprio software a restare congelato
nel suo stato presente per sempre, a meno di non dedicarvi ancora energie.

Un tipico esempio è il file requester di sistema: sotto 2.04 era decisamente
lento, ma sotto 2.1 è diventato uno dei migliori. Chi ha avuto la preveggenza e
la costanza di chiamare le funzioni di sistema ne ha ricevuto, a costo zero, un
miglioramento immediato delle prestazioni dei propri programmi. Per non parlare
dell'effetto sugli utenti, che si ritrovano sempre lo stesso file requester, e
non devono imparare trenta volte il significato di bottoni esoterici come
``GetDir''.

Come fare a sfruttare queste informazioni? La parola magica qui è {\em
documentazione}, la bestia nera del programmatore, sempre pronto a provare a
mano se una certa funzione accetta un parametro, o a indovinare il contenuto
di un registro con qualche scrittura a caso. Non credete a chi vi dice di aver
fatto meraviglie senza aver letto un manuale: è anche possibile che sulla sua
macchina, durante una bella giornata, e con gli eventi astronomici (fasi
della luna, eccetera) favorevoli, il suo software possa funzionare. Ma
programmare non è questo. Un vero programma funziona ora, funzionerà tra dieci
anni. Non solo: tra dieci anni funzionerà {\em meglio}. L'articolo che state
leggendo è stato impaginato da \TeX, un programma scritto da D.E.~Knuth nel
1973. Regge bene l'età, non trovate?

La documentazione di \amiga{} è contenuta essenzialmente nei RKM, i famigerati
Rom Kernel Manual, nella loro attuale incarnazione: {\em Libraries}, {\em
Devices}, {\em Includes \& Autodocs}, {\em Amiga User Interface Style Guide} e {\em
Hardware Manual}. Sono la base, assolutamente necessaria, per comprendere il
funzionamento delle varie parti del sistema. La loro reperibilità non è
esattamente di chiara fama, ma è possibile ordinarli in alcune librerie, tra
cui alla Hoepli di Milano, (tel.:(02)86487208) o alla Clup del Politecnico di
Milano (tel.:(02)70634828).

%, o da Hirsch \& Wolf, il distributore
%ufficiale di materiale per \amiga{} della Commodore in Europa (Hirsch \& Wold
%oHG, Attn: Hans-Helmut Hirsch, Mittelstr. 33, D-56564 Neuwied 1, Germania;
%Tel.:~+49-2631-839-90; fax:~+49-2631-839931; e\_mail:
%¶{hhhirsch@\discretionary{}{}{}carla.adsp.sub.org}).

Tra gli RKM è assolutamente necessario procurarsi, nell'ordine, {\em Libraries}
e {\em Devices}. {\em Includes \& Autodocs} è disponibile su disco o CD-ROM in
formato ipertestuale e, in caso di ridotte capacità di acquisto, la {\em User
Inferface Style Guide} può aspettare. Lo {\em Hardware Manual\/} è
essenzialmente inutile per la scrittura del 99\% dei programmi.

% NUOVO!
Ovviamente, i libri non possono stare dietro allo sviluppo costante del sistema
operativo. {\em AmigaMail}, un periodico pubblicato dalla Commodore fino
all'anno scorso, provvedeva ad aggiornare continuamente le informazioni degli
RKM, e a fornire esempi completamente svolti. Gli sviluppatori registrati
con la Commodore lo ricevevano periodicamente per via postale, ed è
solo attraverso un conoscente in possesso di qualche numero che a questo
punto è possibile ottenerlo.

Programmare significa anche scegliere un linguaggio adatto. Negli ultimi mesi
sono fioriti diversi ambienti di sviluppo per \amiga{}, che può ormai vantare
eccellenti implementazioni di C, C++, Pascal, Oberon-II e Scheme, nonché
linguaggi specifici dell'architettura come il nuovissimo \amiga{} E. Per molti
di questi linguaggi sono disponibili compilatori o interpreti liberamente
distribuibili (vedi per esempio lo GNU C).

È comunque necessario possedere un sistema di sviluppo di base in C. Il sistema
operativo stesso di \amiga{} è stato scritto in questo linguaggio, ed è quindi
quello da scegliere per applicazioni vicine al sistema (handler, per esempio).
Una buona conoscenza dell'Assembler 680x0 è però utile, e direi anche
necessaria, se si devono andare a mettere le mani in cose delicate come la
% NUOVO!
gestione delle interruzioni. Il sistema di sviluppo C ``ufficiale'' (nel senso
che veniva usato internamente alla Commodore) era il SAS/C. {\em Era}, in quanto
il 23 dicembre 1994 la SAS sospenderà lo sviluppo e l'assistenza tecnica
(ovviamente a causa dei problemi finanziari della Commodore). Nel frattempo,
però, DICE, il compilatore freeware di Matt Dillon, è diventato un buon
prodotto commerciale sviluppato dalla Obvious Implementation Corporation.
Non solo: esiste un distributore italiano che può fornire DICE all'esatto
prezzo di mercato americano, e con gli stessi sconti per categorie
particolari (ad esempio, studenti). Contattate la CATMU s.n.c., Via G.~Di
Vittorio 22, 10023 Chieri TO, tel./fax:~(011)9415237, FIDO: 2:334/21.19,
Internet: ¶{fer@\discretionary{}{}{}inrete.alpcom.it}.

Quanto al linguaggio di uso comune, è difficile prescindere dal gusto e
dall'esperienza personale. Ogni linguaggio ha la propria schiera di
irriducibili sostenitori, ed è veramente difficile fare delle valutazioni
obiettive. Il miglior consiglio che si possa dare è provare, provare, provare.

Ma programmare è anche, e forse soprattutto, un esercizio di {\em stile}. Il
grande programma è il programma che con {\em nonchalance}, e senza violare una
sola regola del sistema, ottiene risultati eclatanti. I programmi ``legali'' ma
inefficienti, così come gli {\em hack\/} da un pomeriggio che la mattina dopo
fanno esplodere la macchina, decisamente non inducono nell'utente, o nel
programmatore, alcun sentimento di rispetto. Un grande programma funziona bene
oggi, è pensato per funzionare meglio domani, e soprattutto funzionerà sempre,
e sempre al meglio. Una certa obsolescenza è inevitabile, ma non può sfuggirvi
l'ironia del fatto che ¶{TurboBackup}, un programma scritto nel 1988, che gira
in multitasking e che non usa quasi risorse ancora oggi duplichi dischi più
velocemente di ¶{XCopy}, del quale si grida ``miracolo'' già se riesce a
rientrare nel Workbench senza troppi danni, ma da cui ci si aspetterebbe ben
altro, considerato che ci impedisce di utilizzare il resto della macchina.

%
%\sez{ADSP}
%
%Se volete programmare su \amiga{}, anche a livello amatoriale (scrivendo cioè
%software distribuibile), potete considerare l'idea di registrarvi come
%sviluppatori presso la Commodore. Dettagli sull'Amiga Developer Support Program
%sono disponibili negli atti di questo IPISA. Essenzialmente, al costo di una
%tassa di iscrizione annuale, la Commodore fornisce assistenza tecnica, sconti
%massicci sulle macchine e sulla documentazione, e l'accesso a UUCP e Internet
%tramite la connessione di ADSPNet. Se poi state sviluppando software
%commerciale, ADSP prevede sconti maggiori, visionamento delle macchine prima
%della messa in produzione e così via. Ovviamente, per diventare sviluppatori
%commerciali dovete dimostrare di stare sviluppando un prodotto commerciale.


\sez{Gli strumenti di sviluppo}

\amiga{} dispone di eccellenti strumenti di sviluppo, tutti o quasi tutti
liberamente distribuibili, o al più shareware.

Il più antico e celebre è certamente ¶{Enforcer} (=poliziotto). Funziona solo su
macchine che possiedono una MMU, e traccia attraverso di essa tutti gli accessi
a zone ``da non toccare'' della memoria. Tipicamente, tutti i tentativi di
utilizzare puntatori nulli producono un ¶{Enforcer} hit, cioè la stampa (sulla
porta seriale, o parallela, o ancora su un file) del punto in cui l'accesso è
avvenuto, il contenuto dei registri e così via.

¶{Enforcer} collabora con un altro strumento, ¶{Seg\-Tracker}, che fin dalle prime
righe della \discretionary{¶{startup-}}{¶{{\selectlanguage{english}sequence}}}{¶{startup-sequence}}
provvede a tracciare chi possiede le zone di memoria caricate da
{LoadSeg()}. In questo modo, quando il codice produce uno hit è possibile
fornire il nome del file eseguibile, lo hunk e l'offset, rendendo immediato
il risalire alla linea di codice mediante ¶{FindHit}.

Meno noto, ma utilissimo, ¶{Mungwall} offre una serie di servizi di controllo
della memoria: essa viene sporcata prima di essere allocata, quando viene
deallocata, e in generale tutta la RAM libera viene riempita di pattume
riconoscibile come ¶{C0DEDBAD}, ¶{DEADBEEF}, ¶{ABADCAFE} e così via. Inoltre,
ogni allocazione viene ``circondata'' da due muretti riempiti con caratteri
specifici, in maniera che venga rilevato qualunque ``sfondamento''
dell'allocante al di fuori dell'area allocata. Per finire, la locazione zero
viene sporcata ({\em munged\/}) in maniera da peggiorare in maniera visibile
l'effetto dell'indirezione dei puntatori nulli.

¶{Sushi}, il recente tool di Carolyn Schnepper, è un toccasana per tutti coloro
che non posseggono un modem o un secondo \amiga{} connesso sulla porta
seriale. Infatti, ¶{Sushi} può catturare l'uscita di ¶{Enforcer} e
¶{Mungwall} e
riportarla in un file o su video.

¶{Scratch} provvede invece a distruggere metodicamente i contenuti di tutti
registri che non vengono conservati dalle chiamate alle librerie
(¶{d0},¶{d1},¶{a0}
e ¶{a1}). Può infatti accadere che per un puro effetto collaterale qualche
registro venga preservato, e a causa di ciò un buco di un programma potrebbe
non essere più rilevabile.

¶{Memoration} provvede a simulare qualunque condizione di mancanza di memoria.
Può infatti far credere a qualunque task che sulla macchina ci sia solo una
certa quantità di memoria, o inibire tutte le allocazioni superiori a una
certa soglia. ¶{Memoration} è uno strumento essenziale per il controllo di parti
di codice che gestiscono eccezioni rarissime.

% NUOVO!
Questa lista comprende essenzialmente i tool più importanti, ma moltissimi
altri sono reperibili attraverso i Developer Disk (che si possono trovare
parzialmente sui Fish CD-ROM o sulle reti informatiche). È incredibile quanto
il rilevamento dei buchi e dei malfunzionamenti si sia semplificato grazie a
questa messe di programmi.

\sez{Documentate, documentate, qualche cosa resterà}

La scrittura della documentazione è decisamente la croce del programmatore. Sia
essa pensata per altri programmatori, che per gli utenti finali, rimane un
incubo continuato.

Due soluzioni tecniche hanno preso piede nel mondo \amiga{}. Nel primo caso
(documentazione per programmatori, in genere per librerie) si può usare
¶{AutoDoc}, lo strumento utilizzato dai pionieri che progettarono \amiga{} fin
dalle prime fasi del progetto. Essenzialmente, una documentazione essenziale
viene inclusa {\em direttamente nel sorgente}, permettendone così una
manutenzione immediata. Nel momento in cui occorre generare un documento vero e
proprio, ¶{AutoDoc} estrae le parti interessate e le mette in ordine alfabetico.
¶{AD2AG} provvede poi, se si desidera, a trasformare il tutto in un documento
ipertestuale per AmigaGuide.

Approfittiamo di ¶{AD2AG} per parlare di AmigaGuide, il sistema di
visualizzazione di ipertesti di \amiga. Da pochi mesi, AmigaGuide è
ufficialmente liberamente distribuibile, e questo ha fatto letteralmente
esplodere un fenomeno prima relativamente sommesso, vale a dire la scrittura
della documentazione del software distribuibile e commerciale in forma
ipertestuale.

La strada più seguita fino a ora dai programmatori è di utilizzare uno
strumento della GNU modificato e adattato ad AmigaGuide da Reinhard Spisser e
dal primo degli autori, ¶{makeinfo}. Esso provvede a trasformare un file
¶{Texinfo}, scritto in un semplice dialetto di \TeX{} particolarmente adatto
alla documentazione tecnica, in un documento ipertestuale AmigaGuide o in un
file ASCII. Lo stesso documento ¶{Texinfo} compilato con \TeX{} si trasforma
in un eccellente manuale stampato, dove i riferimenti ipertestuali diventano
riferimenti incrociati.

¶{makeinfo}, che è stato presentato nella sua prima versione all'IPISA '92,
permette di soddisfare tre esigenze (manualistica stampata, documentazione
ipertestuale, file ASCII) a partire da un solo sorgente. I vantaggi pratici
dovrebbero essere evidenti di per sé.

% NUOVO!
\sez{Comprare per posta}

Allo scopo di sottrarsi alle grinfie dei rivenditori di software modello
``fino a ieri vendevo le copie, purtroppo oggi c'è una legge sul diritto
d'autore'' non c'è nulla di meglio che rivolgersi a ditte che procurano
software per posta. Fino a poco tempo fa era necessario spostarsi oltre
confine per ottenere un servizio di questo tipo, ma oggi diverse ditte
mettono a disposizione un catalogo abbastanza completo di software \amiga{} a
prezzi ragionevoli. Tra tante segnaliamo la AXXEL, tel.:(0444)325592,
fax:(0444)321145, FIDO: 2:333/201.10, Internet: ¶{aj2@\discretionary{}{}{}maya.dei.unipd.it}, che
offre una scelta abbastanza varia. Altre ditte sono facilmente reperibili
consultando le pubblicità sulle riviste specializzate. In ogni caso, abbiate
sempre cura di confrontare il prezzo proposto in lire con quello in dollari
che appare sulle riviste americane, calcolando che dazi doganali e IVA
incidono per circa il 30\% sul costo finale.

\sez{Comprare all'estero}

Una soluzione relativamente semplice alla scarsa distribuzione del software
commerciale per \amiga{} in Italia è l'acquisto diretto in altre nazioni (di
solito gli Stati Uniti). Per ottenere un risultato ragionevole è bene unirsi
in gruppi di acquirenti, in modo da ammortizzare al massimo le spese di
spedizione.

Infatti, il modo più semplice e sicuro di fare arrivare merce è tramite un
corriere postale (come DHL o Federal Express), che si preoccupa anche del
disbrigo di tutte le pratiche di sdoganamento, che sono un vero inferno.
Nel caso compriate materiale per posta ordinaria, informatevi attentamente alla
dogana centrale di Milano su che documenti produrre per evitare di essere
considerati acquirenti di giochi, sottoposti a un'IVA mostruosa (stiamo,
ovviamente, supponendo che {\em non\/} vi interessi comprare giochi).

La maniera più semplice (in pratica l'unica) per effettuare l'acquisto è
utilizzare una carta di credito. Vorremmo far notare a chi non si fosse mai
interessato dell'argomento che ormai la spesa per una VISA/CartaSì è, per uno
studente, dell'ordine delle 50\,000 lire all'anno, una cifra, a mio avviso, più che
sacrificabile, considerando gli enormi vantaggi che ne derivano. Basta un fax
a un rivenditore di software per posta, corredato di numero e fotocopia della
carta di credito, per ottenere nel giro di due settimane il software e
lo hardware richiesto. I nomi di numerosi rivenditori di questo tipo sono
recuperabili sulle riviste specialistiche d'oltreoceano (leggi AmigaWorld).
Molti rivenditori mettono a disposizione una linea verde per gli ordini
dall'Italia (cioè non pagate nulla), purché l'ordine abbia importo superiore ad
una certa cifra. Se vi fidate del vostro inglese, la cosa è molto più semplice,
specie se non avete un fax.
%Anche Hirsch \& Wolf accetta ordini tramite carta di
%credito.

% NUOVO!
Un'altra risorsa, meno nota e meno sfruttata, è costituita dalle ditte che
vendono libri per posta. Tramite una richiesta via fax, o addirittura tramite
un semplice messaggio di posta elettronica, è possibile farsi spedire a casa
qualsiasi libro. Per libri difficilmente reperibili, o comunque per testi
stranieri, il cui costo è proibitivo a causa del cambio pazzesco del dollaro
librario, esse costituiscono un'ottima alternativa; valgono le stesse
tecniche e raccomandazioni date per l'acquisto di software.
Alcuni indirizzi:

\begin{description}
\item[Computer Literacy Bookshop] 2590 N 1st St, San José CA
95131, USA, tel.:\ (001) (408) 4351118, fax:\ (001) (408) 4350689,
Internet:\ ¶{orders@\discretionary{}{}{}cl\-books.\discretionary{}{}{}com} (per gli ordini),
¶{service@\discretionary{}{}{}clbooks.\discretionary{}{}{}com} (per lo stato
degli ordini e problemi vari), ¶{info@\discretionary{}{}{}clbooks.\discretionary{}{}{}com} (per informazioni sul
servizio);
\item[Quantum Books] 4 Cambridge Center, Cambridge MA 02141, USA,
tel.:\ (001) (617) 4945042, fax:\ (001) (617) 5777282, Internet:
¶{quanbook@\discretionary{}{}{}world.\discretionary{}{}{}std.\discretionary{}{}{}com};
\item[WordsWorth Books] 30 Brattle Street, Cambridge MA
02138-3761, USA, tel.:\ (001) (617) 3541529, fax:\ (001) (617) 3544674,
Internet:\ ¶{73457.\discretionary{}{}{}315@\discretionary{}{}{}compuserve.\discretionary{}{}{}com}.
\end{description}

\sez{Pagare lo shareware}

Non canteremo in questa sede un peana all'acquisto del software originale,
argomento così ovvio, trito e ritrito da diventare nauseabondo. Vorremmo fare
invece un discorso molto più ``forte'' e concreto: {\em pagate lo shareware}.

È infatti diventata una situazione comune, per il programmatore amatoriale di
\amiga{} che vuole guadagnare un piccolo compenso per l'enorme lavoro
fatto, il non ricevere nulla o quasi.

Le ragioni sono tante: mancanza d'attenzione, di denaro$\ldots$ Ma il vero problema
è che sempre più persone abbandonano progetti a causa di questo disinteresse.
Lo shareware è una risorsa preziosissima di \amiga{}, che non possiamo
permetterci di perdere. Se state utilizzando dei programmi shareware, mandate
agli autori quei pochi dollari che vi chiedono (si tratta quasi sempre di cifre
molto modeste). A parte sonni più tranquilli, avrete certamente reso più felice
il programmatore, che essendo di buonumore metterà meno buchi nella versione
successiva.



\sez{Siate esigenti}

Concludiamo questo articolo con un ultimo appello: {\em siate esigenti}.
Quando comprate o provate un nuovo programma, sia esso commerciale o distribuibile,
non subite passivamente le scelte di implementazione dell'autore. Chiedetevi
sempre se l'interfaccia è standard, se il programma sfrutta bene le risorse
della macchina, se mancano delle funzionalità ovvie. Se poi siete
programmatori, o comunque utenti smaliziati, non dategli tregua: picchiatelo con
¶{Enforcer}, ¶{Mungwall}, ¶{Memoration}, ¶{Scratch}, e chi più ne ha più ne metta.
Non è possibile che programmi come ¶{PageStream}, giunto ormai alla versione
3.0, producano ancora ¶{Enforcer} hit. E non è concepibile che programmi pagati
col sudore della nostra fronte si permettano di schiantare la macchina in
condizioni di poca memoria.

Allo stesso modo, non accettate restrizioni arbitrarie sullo hardware che
comprate. Il mercato di schede e accessori per \amiga{} è saturato da materiale
di pessima fattura, che spesso non è compatibile con schede perfettamente
progettate. Cercate di aver letto qualche recensione, o (meglio ancora) di aver
visto in funzione per un certo periodo di tempo e in configurazioni diverse il
tipo di scheda o accessorio che volete comprare: non sempre quello più
economico si rivelerà un buon acquisto. In particolare, non fidatevi {\em
mai\/} delle indicazioni, dei consigli, delle assicurazioni di un
rivenditore. Cercate piuttosto di trovare un amico informato, magari
all'interno di un gruppo di utenti organizzati, affiatati e informati.

La comunità \amiga{} è da sempre una delle più esigenti (ad esempio, un utente
\amiga{} non tollererebbe {\em mai\/} di vedere bloccata la macchina durante
una stampa in rete, come avviene per AppleTalk). È una tradizione dovuta alla
grande percentuale di utenti amatoriali, e di programmatori innamorati della
macchina. Questa è, secondo il nostro modesto parere, una grande forza, ed è
dovere di tutti trasmettere le buone abitudini ai nuovi utenti.

Ringraziamo Roberto Attias, Stefano Basagni, Marco Menegon, Paolo Silvera,
Reinhard Spisser e Carlo Todeschini per i suggerimenti e le correzioni
apportate a questo articolo. Ringraziamo inoltre Fabrizio Lodi per le
informazioni sui servizi telematici.

\finearticolo
