\nuovoarticolo{Claudio Zani}{Twilight Development System (TDS)}{%
Claudio Zani \\
Via Liuzzi 1 \\
I-42020 Cadelbosco Sotto RE \\
Tel.:~(0552)911710
}{%
Internet:~zani@cs.unibo.it \\
Fidonet:~~2:332/516.18
}{italian}{
{\em Absent}, adj.: Peculiarly exposed to the tooth of detraction; vilified;
hopelessly in the wrong; superseded in the consideration and affection
of another.}{Ambrose Bierce}

\sez{Introduzione}

Il Twilight Development System (TDS) rende disponibile un ambiente di
sviluppo integrato per scrivere e compilare programmi o generici
sorgenti simile all'ambiente fornito da programmi come Turbo Pascal o
Borland C++. Il programma principale del pacchetto è un potente editor
di testo chiamato Twilight Editor (¶{Ted}) che comprende un project
manager integrato. Questo project manager semplifica e velocizza lo
sviluppo di programmi composti da differenti sorgenti (moduli). Con
TDS è possibile compilare e collegare questi moduli in un file
eseguibile con un singolo comando e, se il compilatore trova qualche
errore, questi saranno notificati direttamente dall'editor. TDS non
fornisce un proprio compilatore, ma può usare qualunque compilatore o
assemblatore eseguibile dalla shell. Si può interfacciare direttamente
con molti noti compilatori e assemblatori come DICE C, SAS/C, Lattice
C, Aztec C, DevPac, A68K, PCQ, HCC, GNU C, \amiga{} E, Oberon e anche
programmi come \TeX, ¶{catcomp} e ¶{makeinfo}. Se il compilatore non è
supportato, si può scrivere un piccolo programma di interfaccia per
convertire i messaggi di errore in un formato intelligibile
dall'editor. Il processo di compilazione verrà eseguito
concorrentemente usando un altro programma chiamato Twilight Make
(¶{TMake}), così l'utente può continuare a editare il sorgente mentre il
computer sta lavorando. Infine è presente un terzo programma chiamato
Twilight Reference Generator (¶{TRefs}) che permette la generazione dei
file indici per la consultazione rapida di file include, autodoc o
AmigaGuide.


\sez{Twilight Editor (¶{Ted})}

¶{Ted} possiede molte funzioni per supportare la creazione e l'editing di
sorgenti. Il numero di file sorgenti che possono essere aperti ed
editati contemporaneamente è limitato solo dall'ammontare della
memoria disponibile e così anche per la lunghezza di un singolo file
di testo o di una linea. Per ogni file ¶{Ted} ricorda ogni cambiamento
fatto e rende possibile, con i comandi `Undo' e `Redo', tornare
indietro attraverso i cambiamenti. Supporta anche molti comandi (come
`Taglia', `Copia', `Incolla', `Impagina') per maneggiare i blocchi
orizzontali e verticali e per cercare stringhe nel file. È anche
possibile personalizzare i collegamenti ``tasto premuto''-``codice o
comando eseguito''. Infine possiede anche una propria porta ARexx con
numerosi commandi per la scrittura di macro personalizzate. Una parte
importante dell'editor è il project manager integrato che gestisce la
creazione dei cosiddetti ``file progetto''.

Un file progetto è costituito da una lista di moduli sorgenti e da una
lista di traduttori. Un traduttore è un compilatore, un assemblatore o
qualunque altro programma che traduce un sorgente in un file oggetto.
Quando ¶{TMake} prova a compilare un sorgente, cerca attraverso la lista
dei traduttori una estensione di nome che combaci con l'estensione del
nome del file. Una volta compilato il sorgente in un file oggetto,
l'estensione del nome del file oggetto viene confrontata con
l'estensione degli oggetti usati dal linker. Se la ricerca fallisce,
il file oggetto diventa un sorgente e il processo riprende dalla
ricerca di un traduttore. In questo modo si può usare un compilatore
che traduce un sorgente in assembler, un assemblatore che traduce
l'assemblato in un codice oggetto e finalmente un linker che produce
l'eseguibile.

I comandi per la compilazione di un modulo sorgente o dell'intero
progetto `Compila', `Costruisci' e `Costruisci tutto' non sono
incorporati nell'editor, ma la loro esecuzione è affidata a ¶{TMake}.
Quando uno di questi comandi è stato selezionato, ¶{Ted} lancia ¶{TMake} che
esegue i comandi e se trova qualche errore, restituisce una lista
degli errori a ¶{Ted}. Usando il multitasking del sistema operativo, ¶{TMake}
opera in background, così si può continuare a utilizzare l'editor.
Inoltre questi comandi possono anche aprire una propria console window
per seguire il processo di compilazione e per poterlo interrompere con
Control-C.

\sez{Twilight Make (¶{TMake})}

¶{TMake} è simile al programma ¶{make} usato nello sviluppo di programmi
composti da più di un file sorgente. Questo programma controlla ogni
file sorgente per vedere se è stato modificato e, a seconda
dell'estensione del file (per esempio ¶{.c} o ¶{.asm}), lo compila o lo
assembla. Quindi collega tutti i file oggetto insieme per ottenere il
file eseguibile. ¶{TMake} non usa i makefile, ma si appoggia ai file
progetto creati con ¶{Ted}.

¶{TMake} è stato disegnato per interfacciarsi ai più noti compilatori
come DICE C, SAS/C, Lattice C, Aztec C, DevPac, A68K, PCQ, HCC, GNU C,
\amiga{} E, Oberon e anche programmi come \TeX, ¶{catcomp} e ¶{makeinfo}. \`E
anche possibile scrivere un proprio convertitore di messaggi se il
compilatore usato non è tra quelli direttamente supportati. ¶{TMake} può
anche essere usato da solo dalla Shell o dal Workbench per compilare i
progetti creati con ¶{Ted}.

\sez{Twilight Reference Generator (¶{TRefs})}

¶{TRefs} genera file di indice usati dal commando `Trova riferimento'.
Con questo comando è possibile ottenere informazioni circa una
particolare parola chiave; per esempio, muovendo il cursore sulla
parola ``Window'' e selezionando il comando `Trova riferimento' si otterrà
il caricamento del file ¶{intuition.h} e l'editor posizionerà il cursore
all'inizio della definizione della struttura ¶{Window}. Al momento
¶{TRefs} può essere usato per generare file indice dai file include
¶{\#?.h}, dagli autodoc ¶{\#?.doc} e dai file in formato AmigaGuide
¶{\#?.guide}.

\sez{Realizzazione}

Per la realizzazione dei programmi è stato utilizzato il compilatore
DICE 2.07.54 di Matt Dillon per quanto riguarda la parte in C;
per le funzioni in Assembler è stato fatto uso dell'assemblatore
DevPac 2.14.

Questo software viene distribuito sotto il concetto di Shareware e
necessita di un {\em keyfile\/} per diventare completamente funzionante. Senza
il keyfile ¶{Ted} non può aprire più di 4 file alla volta e la lunghezza
di un singolo file è limitata. Inoltre il project manager non può
gestire più di 8 moduli per progetto e ogni tanto appare il requester
`About'. Per i dettagli riguardanti la registrazione si veda la
documentazione su allegata al programma.


\finearticolo
