posta - Amiga Magazine Online
posta - Amiga Magazine Online posta - Amiga Magazine Online
S e avete due programmi, uno dei quali produce dei dati che il secondo deve leggere, potete porre i dati intermedi nel RAM Disk. Ecco un esempio: supponiamo che vogliate creare l'elenco del contenuto di una directory in ordine alfabetico. Il comando List genera l'elenco che invierete nel RAM Disk. Il comando Sort leggerà il file e lo ordinerà. Potrete impartire i seguenti comandi: CD DFO : (il drive O diventa la direc- tory corrente, può essere qualsiasi altro drive) LI ST >RAM : TEMP (creiamo I'elen- co della directory; invece di inviare I'output verso lo schermo, lo man- diamo in un file di nome Temp nel RAM Disk) STACK 50000 (alcune versioni del comando Sort necessitano di un grosso stack; ne eleviamo di conse- guenza la quantità) SORT RAM : TEMP * (S0rt legge i dati dal file RAM:Temp e li invia ordinati verso il file *, che corrisponde allo schermo. Vedrete apparire l'elenco dei file in ordine alfabetico) QUANDO I DATI SONO TROPPI Il metodo citato funziona bene per compiti piuttosto semplici e limitati. Volete esaminare comodamente il contenuto di una directory? Inviate il suo elenco in un file in RAM: e legge- telo mediante More o con un text editore come Ed. Qualche volta, tuttavia, il file inter- medio può essere troppo grande da gestire. Potrebbe non esserci memoria sufficiente per contenere il 76 AMIGA MAGAZINE file. In tal caso si può usare PIPE. Ecco come funziona PIPE: riceve i dati generati da un programma e quando il suo buffer è pieno, pone in stato di attesa il programma che invia i dati. Quando un altro pro- gramma legge i dati da PIPE, lo spazio per i dati diventa nuovamen- te disponibile e PIPE richiede altri dati al programma che li invia. Se il programma che genera i dati li produce più rapidamente di quanto il programma ricevente possa ge- stirli, PIPE rallenterà la trasmissione. Se il programma ricevente è più veloce di quello che li invia, PIPE farà scorrere i dati direttamente. In entrambi i casi non verrà a mancare la memoria. USIAMO PIPE Volete vedere PIPE al lavoro? Aprite due Shell e posizionatele in modo di poterle osservare contemporanea- mente. PIPE non ha necessariamente biso- gno di due finestre per funzionare, le usiamo solo per capire come funzio- na PIPE. Ecco il nostro obiettivo: vogliamo esaminare un programma, per esempio Clock, alla ricerca della stringa INT al fine di capire se il programma usa I'lntuition.library. Dal momento che Clock è un pro- gramma, non possiamo leggerlo come se fosse un semplice file di testo. Ma possiamo esaminarlo mediante il comando Type Hex. Selezioniamo una delle due finestre e digitiamo: TYPE >PIPE:AA HEX SYS:UTILITIES/ CLOCK Type inizierà a inviare il dump esa- decimale di Clock verso PIPE:AA. Ben presto PIPE sarà colmo, I'attivi- tà del disco cesserà e la finestra non darà più segni di vita. Non possiamo inserire nuovi co- mandi perché Type non ha ancora terminato il suo lavoro. Sta aspettan- do che PIPE gli richieda altri dati. Iniziamo a estrarre i dati da PIPE. Selezioniamo la seconda finestra e digitiamo MORE PIPE:AA. Stiamo chiedendo a PIPE di leggere il contenuto di AA mediante More. Vedrete apparire nella finestra un lungo elenco di numeri e lettere. E' solo una parte dell'output di Type Hex che proviene da PIPE. Ora chiediamo a More di ricercare la stringa INT. Premiamo il tasto del punto, seguito da l, N, T e Return. Vedremo lo schermo modificarsi immediatamente. Sul lato destro, apparirà la scritta "intuition.library". L'abbiamo trova- ta! Premiamo il tasto N per cercare altre occorrenze di INT. Quando raggiungeremo la fine del file, accadranno due cose. La prima finestra tornerà a vivere, perché ha completato l'esecuzione di Type. Nella seconda finestra, apparirà il messaggio "not found" che segnala la fine del file AA di PIPE. Premete Q e More terminerà. Non chiedete a More di terminare prima di raggiun- gere la fine del file. Se lo fate, verrà meno il programma che svuota PIPE e il programma inviante resterà bloccato. A O Com ute Publication International, Ltd., 1991. futti i diritti sono riservati.
miga è sicuramente un com- puter insolito: permette di svolgere egregiamente una grande quantità di applicazioni ad un costo ridotissimo, inoltre quando la configurazione base non è più sufficiente, non ci sono difficoltà ad espandere il computer in direzioni particolari. E' sicuramente noto a tutti che le elevate capacità di questo compu- ter sono dovute al lavoro dei chy? custom capaci di generare ottima grafica, spostare blocchi di memo- ria in modo veloce, generare suoni paragonabili ai sintetizzatori della prima generazione, ecc. Raramente si elogia il sistema ope- rativo, trovo che non si possa resta- re impassibili ad un computer che dispone di una ROM 256 K nelle ver- sioni 1.3 e di ben 51 2 K nelle versioni 2.04. Pochi computer possono vantare software di qualità unito ad una in- terfaccia grafica standard operante in un sistema multitasking a sole 700.000 lire! Il Kickstart è composto da varie entità quali librerie, device, risorse, task, ecc; ogni entità ha una speci- fica funzione e svolge parte di un lavoro sinergico. Per avere una visione d'insieme del funzionamento del computer, è doveroso conoscere discretamente ogni singola parte, questa rubrica ovviamente vi aiuterà ad acquisire questa visione globale. In Amiga le librerie si trovano quasi tutte in ROM (come è naturale che sia!), ma alcune, per motivi di eleva- te dimensioni o possibili cambia- menti in nuove versioni del S.O., sono collocate nella directory LIBS: del Workbench. Il fatto di dover ca- ricare alcune librerie da disco può sembrare una forte limitazione, e in parte ciò è vero, ma questo ha an- che permesso il proliferare di molte librerie di pubblico domino di altissi- ma qualità, basti pensare al proget- to ARP, alla libreria PowerPacker, alla req.library, alle librerie MIDI, ecc. Nella tabella 1 sono state elencate le librerie della versione 1.3 del Kickstart. Questa lista è stata ottenuta tramite I'ausilio del volume Amiga ROM Kernel Manual: Includes & Auto- docs, pubblicazione ufficiale Com- modore-Amiga in cui sono elencate e discusse tutte le funzioni di tutte le librerie 1.3 (oltre ad esaurienti infor- mazioni sul formato IFFe sull'uso dei device). E' significativo notare che alcune librerie, come la info.library, non sono dichiarate nei ROM Kernel Manual nonostante siano presenti nel disco del Workbench fin dalle prime release del sistema operati- vo, inoltre, disponendo di utility ade- guate come ResAnalyzer, Xoper, ARTM, ecc, capaci di indagare tra le liste di Exec, si può notare che spesso sono presenti altre librerie non documentate, come, ad esem- pio, la ramlib.library. Di queste librerie non si sa nulla e su di esse si possono fare solo ipotesi, da alcune prove ho potuto appurare che la info.library viene utilizzata quando si richiede un info da Work- bench, la ramlib.library viene chia- mata quando si invoca per la prima volta RAM:, mentre la version.library viene utilizzata quando si richiede un version da Workbench o si lancia l'omonimo commando da CLI. Volendo fare alcune considerazioni sulle librerie private, si può citare il caso della info.library, non più pre- sente nell'OS 2.04. Probabilmente gli sviluppatori della Commodore avevano già previsto da tempo di inglobare questa libre- ria all'interno di un'altra (workbench.library), e non hanno diffuso le informazioni sul suo utiliz- zo nell'intento di limitare la diffusio- ne di programmi incompatibili. Ogni libreria Amiga dispone sempre di un puntatore denominato BASE, il quale punta ad una struttura library, definita nei file include in questo modo: struct Library struct UBYTE UBYTE UWORD UWORD UWORD UWORD APTR ULONG UWORD i; Node lib-Node; lib-Flags; lib-pad; 1ibNegSize; lib-PosSize; lib Version; lib Revision; lib-IdString; lib-Sum; lib-0penCnt; Il primo campo è gestito automati- camente dal sistema operativo e serve per concatenare questa strut- tura alle strutture library di ogni sin- gola libreria caricata nel sistema. In questo modo si viene ad avere una lista facilmente accessibile, conte- nente le informazioni di tutte le libre- rie sparse nella memoria. lib-Flags indica lo stato della libreria in esa- me, nella versione 1.3 del Kickstart i flag possono essere quattro: AMIGA MAGAZINE 77
- Page 29 and 30: Q uasi tutti i nuovi programmi di g
- Page 31 and 32: On Disk 25 ILIVIIQA MAOAZINE ON DIS
- Page 33 and 34: Paolo Canali Guida tecnico-pratica
- Page 35 and 36: AT-BUS e XT-BUS Gli standard AT-BUS
- Page 37 and 38: l'"intelligenzan tipica delle perif
- Page 39 and 40: usare due trucchi: il primo è tene
- Page 41 and 42: HARD WARE In questo capitolo verrà
- Page 43 and 44: Capitolo 2: Hardware 3 SKIP Skip è
- Page 45 and 46: Ca~itolo 2: Hardware 5 I1 Blitter p
- Page 47 and 48: i-, L' ("i V l'-'l '.L/ I? Capitolo
- Page 49 and 50: La gestione del Timer su Amga Anton
- Page 51 and 52: Attese hardware Ci sono alcune appl
- Page 53 and 54: essere assoluto, cioè deve compren
- Page 55 and 56: DOS 2.0 elenca una serie di pacchet
- Page 57 and 58: f~nestra CL1 scrivete: TArc/TArc a
- Page 59 and 60: U no dei campi in cui il software p
- Page 61 and 62: un errore o che tutti gli errori in
- Page 63 and 64: F in dall'uscita sul mercato di emu
- Page 65 and 66: IL SOFTWARE DI SETWP E DI GESTIONE
- Page 67 and 68: ggi le possibilità di scelta che s
- Page 69 and 70: problemi un A2091 della Commodore d
- Page 71 and 72: che gira perfettamente sul 3000) si
- Page 73 and 74: 17,. I I SET PN31 13) SELECT SET 15
- Page 75 and 76: vole interesse. Semplici modifiche
- Page 77 and 78: a GVP ha superato se stessa: quando
- Page 79: formare la song finale. Ogni evento
- Page 83 and 84: Iprogrammatori di giochi preferi- s
- Page 85 and 86: Questo mese la consueta sono loro g
- Page 87: SIOA 1992 IO0 SALONE DELL'INFORMATI
S<br />
e avete due programmi, uno<br />
dei quali produce dei dati che<br />
il secondo deve leggere, potete<br />
porre i dati intermedi nel RAM<br />
Disk. Ecco un esempio: supponiamo<br />
che vogliate creare l'elenco del<br />
contenuto di una directory in ordine<br />
alfabetico. Il comando List genera<br />
l'elenco che invierete nel RAM Disk.<br />
Il comando Sort leggerà il file e lo<br />
ordinerà.<br />
Potrete impartire i seguenti comandi:<br />
CD DFO : (il drive O diventa la direc-<br />
tory corrente, può essere qualsiasi<br />
altro drive)<br />
LI ST >RAM : TEMP (creiamo I'elen-<br />
co della directory; invece di inviare<br />
I'output verso lo schermo, lo man-<br />
diamo in un file di nome Temp nel<br />
RAM Disk)<br />
STACK 50000 (alcune versioni del<br />
comando Sort necessitano di un<br />
grosso stack; ne eleviamo di conse-<br />
guenza la quantità)<br />
SORT RAM : TEMP * (S0rt legge i dati<br />
dal file RAM:Temp e li invia ordinati<br />
verso il file *, che corrisponde allo<br />
schermo. Vedrete apparire l'elenco<br />
dei file in ordine alfabetico)<br />
QUANDO I DATI SONO TROPPI<br />
Il metodo citato funziona bene per<br />
compiti piuttosto semplici e limitati.<br />
Volete esaminare comodamente il<br />
contenuto di una directory? Inviate il<br />
suo elenco in un file in RAM: e legge-<br />
telo mediante More o con un text<br />
editore come Ed.<br />
Qualche volta, tuttavia, il file inter-<br />
medio può essere troppo grande da<br />
gestire. Potrebbe non esserci<br />
memoria sufficiente per contenere il<br />
76 AMIGA MAGAZINE<br />
file. In tal caso si può usare PIPE.<br />
Ecco come funziona PIPE: riceve i<br />
dati generati da un programma e<br />
quando il suo buffer è pieno, pone in<br />
stato di attesa il programma che<br />
invia i dati. Quando un altro pro-<br />
gramma legge i dati da PIPE, lo<br />
spazio per i dati diventa nuovamen-<br />
te disponibile e PIPE richiede altri<br />
dati al programma che li invia.<br />
Se il programma che genera i dati li<br />
produce più rapidamente di quanto<br />
il programma ricevente possa ge-<br />
stirli, PIPE rallenterà la trasmissione.<br />
Se il programma ricevente è più<br />
veloce di quello che li invia, PIPE<br />
farà scorrere i dati direttamente. In<br />
entrambi i casi non verrà a mancare<br />
la memoria.<br />
USIAMO PIPE<br />
Volete vedere PIPE al lavoro? Aprite<br />
due Shell e posizionatele in modo di<br />
poterle osservare contemporanea-<br />
mente.<br />
PIPE non ha necessariamente biso-<br />
gno di due finestre per funzionare, le<br />
usiamo solo per capire come funzio-<br />
na PIPE.<br />
Ecco il nostro obiettivo: vogliamo<br />
esaminare un programma, per<br />
esempio Clock, alla ricerca della<br />
stringa INT al fine di capire se il<br />
programma usa I'lntuition.library.<br />
Dal momento che Clock è un pro-<br />
gramma, non possiamo leggerlo<br />
come se fosse un semplice file di<br />
testo.<br />
Ma possiamo esaminarlo mediante<br />
il comando Type Hex. Selezioniamo<br />
una delle due finestre e digitiamo:<br />
TYPE >PIPE:AA HEX SYS:UTILITIES/<br />
CLOCK<br />
Type inizierà a inviare il dump esa-<br />
decimale di Clock verso PIPE:AA.<br />
Ben presto PIPE sarà colmo, I'attivi-<br />
tà del disco cesserà e la finestra non<br />
darà più segni di vita.<br />
Non possiamo inserire nuovi co-<br />
mandi perché Type non ha ancora<br />
terminato il suo lavoro. Sta aspettan-<br />
do che PIPE gli richieda altri dati.<br />
Iniziamo a estrarre i dati da PIPE.<br />
Selezioniamo la seconda finestra e<br />
digitiamo MORE PIPE:AA.<br />
Stiamo chiedendo a PIPE di leggere<br />
il contenuto di AA mediante More.<br />
Vedrete apparire nella finestra un<br />
lungo elenco di numeri e lettere.<br />
E' solo una parte dell'output di Type<br />
Hex che proviene da PIPE.<br />
Ora chiediamo a More di ricercare la<br />
stringa INT.<br />
Premiamo il tasto del punto, seguito<br />
da l, N, T e Return.<br />
Vedremo lo schermo modificarsi<br />
immediatamente.<br />
Sul lato destro, apparirà la scritta<br />
"intuition.library". L'abbiamo trova-<br />
ta! Premiamo il tasto N per cercare<br />
altre occorrenze di INT.<br />
Quando raggiungeremo la fine del<br />
file, accadranno due cose.<br />
La prima finestra tornerà a vivere,<br />
perché ha completato l'esecuzione<br />
di Type.<br />
Nella seconda finestra, apparirà il<br />
messaggio "not found" che segnala<br />
la fine del file AA di PIPE. Premete Q<br />
e More terminerà. Non chiedete a<br />
More di terminare prima di raggiun-<br />
gere la fine del file. Se lo fate, verrà<br />
meno il programma che svuota PIPE<br />
e il programma inviante resterà<br />
bloccato. A<br />
O Com ute Publication International, Ltd.,<br />
1991. futti i diritti sono riservati.