UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga...

54
UAE - Unix Amiga Emulator di Marcello Mancini (n. matr: 033296) 14 febbraio 2002 Indice 1 Introduzione 4 2 Amiga 4 2.1 Breve storia .............................. 4 2.1.1 Nascita del progetto ..................... 4 2.1.2 Prototipo ........................... 5 2.1.3 Il primo Amiga: A1000 ................... 5 2.1.4 I “Classic-Amiga”: A2000 e A500 ............. 6 2.1.5 Nuovi prodotti ........................ 7 2.1.6 Sviluppi ........................... 8 2.1.7 Progetti alternativi ..................... 9 2.1.8 Il canto del cigno ...................... 10 2.1.9 Storia recente ........................ 10 2.1.10 Birra ............................. 11 2.2 Amiga nel dettaglio ......................... 11 2.2.1 Hardware .......................... 11 2.3 Il sistema operativo ......................... 15 2.3.1 Introduzione ......................... 15 2.3.2 Gestione dei processi .................... 17 2.3.3 Comunicazione tra i task .................. 18 2.3.4 Gestione della memoria ................... 18 2.3.5 Librerie ........................... 19 2.3.6 Device ............................ 19 2.3.7 Accesso concorrente a memoria condivisa ......... 20 2.3.8 AmigaDOS e filesystem ................... 20 1

Transcript of UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga...

Page 1: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

UAE - Unix Amiga Emulator

di MarcelloMancini (n. matr: 033296)

14 febbraio2002

Indice

1 Intr oduzione 4

2 Amiga 42.1 Brevestoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1.1 Nascitadel progetto . . . . . . . . . . . . . . . . . . . . . 42.1.2 Prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.3 Il primo Amiga: A1000 . . . . . . . . . . . . . . . . . . . 52.1.4 I “Classic-Amiga”: A2000eA500 . . . . . . . . . . . . . 62.1.5 Nuovi prodotti . . . . . . . . . . . . . . . . . . . . . . . . 72.1.6 Sviluppi . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.7 Progetti alternativi . . . . . . . . . . . . . . . . . . . . . 92.1.8 Il cantodel cigno . . . . . . . . . . . . . . . . . . . . . . 102.1.9 Storia recente . . . . . . . . . . . . . . . . . . . . . . . . 102.1.10 Birra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Amiga nel dettaglio . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Il sistemaoperativo . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.1 Intr oduzione . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.2 Gestionedei processi . . . . . . . . . . . . . . . . . . . . 172.3.3 Comunicazionetra i task . . . . . . . . . . . . . . . . . . 182.3.4 Gestionedella memoria . . . . . . . . . . . . . . . . . . . 182.3.5 Libr erie . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.6 Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.7 Accessoconcorrentea memoria condivisa . . . . . . . . . 202.3.8 AmigaDOSefilesystem . . . . . . . . . . . . . . . . . . . 20

1

Page 2: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.3.9 Nomi di periferica, device virtuali eassign . . . . . . . . 222.3.10 CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3.11 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3.12 Intuition . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3.13 Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3.14 Datatype . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 UAE 283.1 Il sistema“ospite” . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.1.1 Il sistema di confronto . . . . . . . . . . . . . . . . . . . 283.2 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.1 Versioni del software . . . . . . . . . . . . . . . . . . . . 293.2.2 Modalità alternativedi installazione . . . . . . . . . . . . 29

3.3 Hardware realeecontroparti emulate . . . . . . . . . . . . . . . 293.3.1 Kickstart efloppy-disk . . . . . . . . . . . . . . . . . . . 293.3.2 Hard-disk . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.3 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.4 Mousee joystick . . . . . . . . . . . . . . . . . . . . . . . 323.3.5 Sonoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 Struttura e funzionamentodel programma . . . . . . . . . . . . 323.4.1 JIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.5 File di configurazione . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Prove 384.1 Softwareapplicativo . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.1.1 Softwaredi sistema:Workbench 3.1 . . . . . . . . . . . . 394.1.2 Operazioni sui dischi: DiskCopy 6.3eDPU . . . . . . . . 404.1.3 Programmi musicali: Deluxe Music Construction Sete

Protracker 2.1a . . . . . . . . . . . . . . . . . . . . . . . 424.1.4 Imagine 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 434.1.5 Altr o software . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2 Giochi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.2.1 Lotus Turbo Challenge2 . . . . . . . . . . . . . . . . . . 454.2.2 Superfrog . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.3 Jimmy White’ sWhirlwind Snooker . . . . . . . . . . . . 474.2.4 Pinball Illusions . . . . . . . . . . . . . . . . . . . . . . . 47

4.3 Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3.1 Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.2 DesertDream . . . . . . . . . . . . . . . . . . . . . . . . 50

2

Page 3: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

4.3.3 Red SectorMegademo . . . . . . . . . . . . . . . . . . . 51

5 Conclusioni 52

3

Page 4: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

1 Intr oduzione

Unix Amiga Emulator(UAE) è un emulatoresoftware della piattaformaAmiga che funzionasumacchineUnix. Il suo scopoè quello di riprodurre il funzionamentodell’hardware del sistemaoriginale,in modocheil softwarescrittoper la macchinaemulata“non si accorga” delladifferenzatra la macchinarealee quellavirtuale creatadall’emulatore, e quindi “giri” esattamentecomesulsistemaoriginale.

In questarelazionedescrivo le principali caratteristiche,siadalpuntodi vistadell’hardwarechedel sistema operativo, dei sistemiAmiga, il funzionamentoe le modalità di impiego dell’emulatoreUAE, econfrontoil funzionamento di unaselezionedi softwareAmigasuunamacchinaoriginaleesottoemulazione.

2 Amiga

Amigaèricordatadall’appassionatomediodi informaticacomeuncomputerdedicatoai videogiochicheebbeunostraordinariosuccessodi pubbliconel periodotra il 1985ed il 1994. Fu prodottadaCommodore, già celeberrimanellaprimametàdegli anni ’80 perun altro prodottodi straordinariosuccesso,il Commodore64.

RicordareAmigasolocomepiattaformapervideogiochièperòlimitante. Sindall’uscitaufficia-le, nel 1985,fu chiaroagli addettiai lavori cheAmiga offriva numerosesoluzioni tecnichesiadallatohardwarechedaquellosoftwaredavverointeressantie innovative (47 furonoi brevetti originalilegatiadAmiga),chela rendevanoadattanonsolocomemacchinadagiocomaanchee soprattuttocomepiattaformaper l’utilizzo professionale,in particolarenel campodella grafica. L’importan-za di Amiga nella storiadell’informatica può essereriassuntada un solosemplicefatto: la parola“multimediale” fu coniataproprioperquestapiattaforma.

2.1 Brevestoria

La storiadel progettoAmigavistanel dettaglioè complicataquantola tramadi unasoap-opera,edè un casoemblematicodi quantaimportanzaabbianole politiche di marketing e la pianificazioneaziendaleanchein unsettorebasatosul progressoe l’avanzamentotecnologico comel’informatica.Cercheròdi riassumerein questocapitolo,a grandilinee,la storiadi Amiga, tralasciandoi dettaglitecniciriguardoall’hardwareeal sistemaoperativo, i quali verrannoespostipiù avanti.

2.1.1 Nascitadel progetto

Il progettoAmiganascenel1980daun’ideadi Jay Miner , all’epocadipendente dellanotaaziendagiapponeseAtari, in quelmomentoleadernel settoredei videogiochigraziea consolea 8 bit comeil modello“2600”. Miner proponeadAtari l’idea di un prodottobasatosul nuovo processoredellaMotorola, il 68000(68k). Atari rifiuta la propostaeMiner decidedi lasciarel’aziendapersviluppareil progettoin proprio.

Miner fondala propriasocietàinsiemeconun ex-collegadell’Atari, Larry Kaplan. Chiamatadaprincipio “Hi-Toro”, la societàvieneribattezzata“Amiga” (“amica” in spagnolo)perpureconsi-derazionidi marketing:unnomecurioso,simpatico,originale,esoprattutto chein ordinealfabeticovieneprima di “Apple” e “Atari”. Dave Morse è assuntocomeproject-managerdi quellache inprincipio vuolediventareunarivoluzionariaconsolepervideogiochi. Il teamdi sviluppo,controilpareredegli stessifinanziatoridellasocietà(i primi furonodei dentisticonalcunimilioni di dollari

4

Page 5: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

da investire nel settoredei videogame), si orientaperòversola realizzazionedi un vero e propriocomputer. Sviluppanoperciò,quasiin segreto,vari componenticometastiera,lettoredi floppy-diskeportedi comunicazione.

L’ideadi basedelprogettoèquelladi affiancareal processoreprincipaleunaseriedi chip customchesi occupinodellagrafica,dell’I/O e dellagestionedei canali DMA. Il progettoè all’avanguar-dia e i tecnici checi lavorano,consapevoli della deboleposizionedella loro societànei confrontidellegrandiaziendeinformatiche,lavoranonellapiù strettasegretezza:addirittura,ai chip customvengonodatinomidi donne,persviareeventualitentativi di spionaggio.

2.1.2 Prototipo

Il primo prototipodel nuovo sistema, denominato“Lorraine”, comparenel 1984al CESshowdiChicago,unamostradel settoreinformatico. I chip customnon sonoancoracompletatied il pro-totipo è, dal puntodi vista estetico,una “mostruosità” composta dalla motherboarde da quattro“breadboards”, da25microchipciascuna.

A sinistra, due foto di Lorraine, il primo prototipo di Amiga presentato al

e rossi è ancora oggi il simbolo dell’architettura Amiga.pubblico. A destra, un fotogramma della demo "Boing!": la palla a scacchi bianchi

Nonostantel’aspetto,Lorrainesuscitasubito grandestuporeedinteresse,soprattutto perunpro-grammadimostrativo (demo), scrittodaDale Luck e R.J. Mical e chiamato“Boing!”, chemostral’animazionedi unasferaa scacchibianchie rossicherimbalza,renderizzatain ray-tracing sullastessapiattaforma.La sferaa scacchidiventeràdaquelmomentoil simbolo “non ufficiale” di Ami-ga. Il successoottenutospingei progettisti adaccelerare lo sviluppo: le basidel sistemaoperativovengonocompletatedaMical in tre settimane.

L’aziendasi trova però pesantementeindebitata; per poter completaree produrreil progettonecessitadi grandifinanziamentie deve quindi rivolgersiai colossidel settore. Dopo complicatetrattativeconvarieaziende,tra cui anchel’Atari, “Amiga” vieneinfineacquisitadaCommodore.

2.1.3 Il primo Amiga: A1000

Nel 1985vienepresentatoil primomodellodi Amigaprodotto, A1000.

5

Page 6: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Un Amiga A1000

L’aspettoèquellodi unclassicoPC,conuncabinetdi tipo desktop,monta256KB di RAM, edèequipaggiatoconunlettoredi floppy-diskda3.5pollici, monitoracolori edunmouse.I componentiprincipali del sistemaoperativo (denominati“Kickstart”) vengonopre-caricatiin memoriada undischettoadogniaccensionedellamacchina.

Il nuovo prodottodellaCommodore è senz’altrointeressante,mapococompetitivo sul versantedelprezzoseconfrontatoconla concorrenza,in particolareconil direttoavversario,l’ Atari ST, cheanch’essomontaunprocessore68000machenonutilizzachipcustomerisultaquindipiù economi-codaprodurre.Inoltre,la dotazionedi RAM, sceltadallaCommodoreandandocontrole indicazionidel teamdi progettisti, è tropposcarsaperpermettereadunaqualunqueapplicazioneseriadi funzio-nare,ecomesenonbastasseil sistemaoperativo, completatoin frettae furia sottola pressionedellaCommodore,è instabile e provocaspessoblocchidellamacchina(chei programmatori del sistemaavevanobattezzato“Guru meditation”!).

L’atteggiamento della casa-madreirrita i “padri” del progettoAmiga e li spinge ad andarse-ne: entropochimesidall’uscitasul mercatodell’A1000, nessunodei progettisti originali di Amigalavorapiù perla Commodore.

2.1.4 I “Classic-Amiga”: A2000eA500

L’anno successivo, il 1986, vedel’uscita di due nuovi modelli: il primo è l’ A2000, evoluzionedel precedenteA1000, chemontadi serie512 KB di RAM e ha il Kickstart, giunto alla versione1.3,suunamemoriaROM; l’altro è l’ A500, di caratteristicheanalogheal modellosuperioremadidiversoaspetto:nellochassisinfatti integrala circuiteria,la tastieraedil lettoredi floppy-diskda3,5pollici, ricordandoesteticamentel’ulti maversione del precedentesuccessodi Commodore,il C64,e si presentaperciòal grandepubblicocomesuccessoredel fortunatomicrocomputer.

6

Page 7: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Un A2000 (a sinistra) ed un A500 (a destra). Notare il mouse a due pulsanti fornito di serieper entrambi i prodotti. Il tasto "Help", posto sopra il tasto cursore destro, non troverà un’applicazionenel sistema operativo fino all’introduzione, nel 1992, dell’AmigaGuide.

La sceltadi produrrel’A500 rivelal’intenzionedi Commodoredi trascurarele potenzialitàdellapiattaformaper dedicarsial mercatoconsumer, interessatoad unamacchinada gioco cheoffrisseanchealcunefunzionalitàdi un computer“serio”, masenzaesserloveramente.Eppure,l’architet-turaAmiga è taledapotersenz’altrofornire la baseperapplicazioniserie: il sistema operativo, adesempio,haun’interfacciagraficaa finestre,comandatadal mouse, chericordanell’aspettoquellodell’AppleMacintosh, e lavorain multitasking reale;le capacitàgrafichesonoeccezionaliper l’e-poca,vistocheAmigaè in gradodi visualizzareschermia64colori daunapalettedi 4096,o fino a4096colori contemporaneisulloschermo,sfruttandoun“trucco” hardwarechiamato“HAM”; un’ul-teriorecaratteristicainteressanteè la compatibilità nativa del chipgraficocongli standardtelevisiviPAL ed NTSC, funzionecheancoraoggi è disponibile soloa prezzoelevatoe comeoptional sugliattualiPC.

Comedetto,Commodorespingesulmercatoconsumer, edeffettivamentele venditedelmodelloA500 decollanonel 1989,nel momentoin cui le software-housecomincianoa sfornarevideogio-chi chesu altre piattaformesemplicemente non potevano essererealizzati. Il “fratello maggiore”dell’A500, l’A2000, trovaestimatorisoprattutto nel settoredellagraficaprofessionale.

2.1.5 Nuovi prodotti

Nel 1990escel’ A3000, chemontaunprocessore68030, hard-disksubusSCSIe la nuovaversionedel Kickstart, la 2.0, la primaveramenteaffidabile e adattaall’uso professionale.Gli appassionatinonsonoperòpienamentesoddisfatti di questoprodotto. La nuovaversionedelcustomchipset,de-nominataECS (EnhancedChipSet, mentrela precedentevieneribattezzataOCS, Original ChipSet)vienevistacome“ il più piccoloavanzamentotecnologiconellastoriadell’informatica”; ci si aspet-tavadaCommodoreunmaggioresforzoperaumentareo almenomantenereil vantaggio tecnologicorispettoallearchitettureMacintoshe IBM-compatibili. Contestualmenteall’uscitadell’A3000,esceanchel’ A500 Plus, un A500 dotatodi chipsetECS, Kickstart 2.0 e una maggioredotazionedimemoria.

Semprenel ’90 vienepresentatala scheda“VideoToaster”, prodottanondallaCommodore,cheaveva persol’occasionedi supportareil progetto,madall’aziendaNewTek. Al contrariodi quantodichiaratoscherzosamentein un’intervistadaunodei progettisti, alcunimesiprimadell’uscitauf-ficiale dell’hardware,“Video Toaster”non è unarivoluzionariastampante a “getto di marmellata”per personalizzarele fette di panenei ristoranti,ma unapotenteschedagraficaacceleratricepro-

7

Page 8: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

fessionaleche,affiancataal software“Lightwave3D”, permetteva l’uso di Amigacomepiattaformaspecializzatanegli effetti specialivisivi tridimensionali.

2.1.6 Sviluppi

Il progettoAmiga rimanepraticamentefermo fino al 1992, quandoescesul mercatol’ A600, unibrido tra un normaleA500 ed un computerportatile: di dimensioni inferiori all’A500, con unatastieraprivadel tastierinonumerico,incorporaun hard-diskIDE da3,5pollici collocatosottoallatastiera;la capacitàdi esserecollegato adunqualunquetelevisorecasalingo,ereditatadaiprecedentimodelliAmiga, rendepossibile, conunpo’ di spiritodi adattamento,il trasportodell’A600, almenoda unacasaall’altra. Caratteristicasenz’altropiù interessanteè il fatto chel’A600 fosseil primocomputerdotatodi unoslotperle schedePCMCIA , standardcheoggisi èeffettivamenteaffermatonelmondodei computerportatili.

Un Amiga 600. Lo slot PCMCIA non è visibile in figura, essendo collocatosul lato sinistro dell’unità.

Nello stessoannoescel’ A4000, erededell’A3000, comefacilmenteintuibile. L’A4000 è ilprimo concretopassoin avanti nello sviluppodi Amiga dallaprimauscitaufficiale, nel 1985. Im-plementaun nuovo chipset,denominatoAGA, chepermettegraficaa 256colori contemporaneidaunapalettedi 16milioni, o fino a256000colori in unamodalitàsimileall’HAM delleprecedentige-nerazionidel chipset;il processoreèun 68040, montatosuunascheda,separatadallamotherboard,chenelleintenzionidovrebberendernefacile la sostituzioneconfutureevoluzioni. A4000presental’ultim aversionedelKickstart,la 3.1,chefornisceall’utenteunsistemaoperativo veramentematuroe funzionale.

8

Page 9: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Un Amiga A4000

2.1.7 Progetti alternativi

Nel frattempoCommodore,sull’ondadelsuccessodell’A500,si lancianellarealizzazionedi progettialternativi, basatisull’architettura Amiga. Il “CDTV ”, del 1990,è concepitocomeelettrodomesti-co per l’intrattenimentomultimediale,ed è in praticaun A500 con un lettoredi CD-Rom,dentrouno chassissimile a quello di un videoregistratore. Nelle intenzionidella Commodore,il CDTVdeveattuarela convergenzatra televisioneecomputer, permettendoall’util izzatoredi giocare,guar-darefilm ed ascoltaremusica con lo stessoapparecchio;l’utente più evoluto può poi espandereilCDTV acquistandotastiera,floppy-diskdriveremouseetrasformareil prodotto in unveroepropriocomputer.

AmigaCD32, del 1993,è inveceunaconsolededicataai videogiochi,equipaggiatacol proces-sore68020conarchitetturaa32bit ebasatasull’usodi un lettoredi CD-Romintegrato.

In alto, un CDTV. A destra, un Amiga CD32.Entrambi ebbero scarso successo.

Principalmenteperl’assenzadi titoli interessanti,questemacchinepassaronopressochèinosser-vateneinegozi. Interessanteamioavvisonotareche,conledifferenzetecnichedatedalladiversaetà,dueprodotti simili perfilosofiahannooggistraordinariosuccesso:il lettoredi DVD e “Playstation”dellaSony.

9

Page 10: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.1.8 Il canto del cigno

Questiprogettifalliti contribuisconoametterela Commodorein difficoltàfinanziarie.L’A1200, ve-ro erededell’A500,uscitoallafinedel1992,è l’ultimo computerdellaserieAmigaaesserevendutoconil marchioCommodore.Vieneequipaggiatoconunprocessore68020,2 MB di RAM, Kickstart3.1, harddisk IDE integratosottola tastierae slot PCMCIA comeper l’A600. Migl iaia di AmigaA1200vengonovenduti“a scatolachiusa”,ancoraprimacheil computerarrivi nei negozi. Le ca-ratteristichetecnicheedil successodi pubblicononsalvanocomunqueCommodoredal fallimento,cheavvienenel1994.

Un Amiga A1200

Il grandepubblicoabbandonaAmiga per rivolgersiai PC MS-DOScompatibili , chehannoef-fettuatocon successola rincorsaal sistema della Commodore,graziealla potenzadi calcolodeiprocessori486 e Pentium, alle schedevideo SVGA, all’uscita di Windows3.1 e, bisognadirlo, divideogiochifinalmentecompetitivi (unnomepertutti: “Doom” dellaId Software).

2.1.9 Storia recente

Qui finiscela partedi storiadi Amigadi interesseperla presenterelazione.Bisognaperòsottolinea-re cheAmiga nonè mortaconCommodore,mahacontinuatoa restarein vita edevolvere,pur conalternevicende,sostenuta da un grannumerodi appassionatiestimatori. E’ proprio del 2001una“rinascita” di Amiga, chevive un momento menoluminoso di quello a cavallo degli anni ’90 macomunqueinteressante.Molti utenti,comesi puòevincereseguendosuUseneti newsgroupdedicatiad Amiga, riprendonoi loro vecchiA1200,estraggonola circuiteriadallo chassisoriginale,la in-serisconoin tower-case, e la modificanoconkit custom,equipaggiandoquestiibridi conprocessoriPowerPCe slot PCI perutilizzarele schedeprodotteper i PC,comele 3dfxVoodoo3o le CreativeSoundBlaster; sonoin uscitanuovi videogiochi, e sonomolti i siti InternetdedicatiadAmiga natirecentemente;l’aziendacheattualmentedetieneil copyright del softwareAmiga, Amiga Inc., harilasciatonel2001unanuovaversionedelsistemaoperativo,giungendoalla3.9,mentrenegli annisisonosusseguite voci di nuovi sistemioperativi comeMor phOS o AmigaX; quest’ultimo dovrebbeessereunsistemadi tipo Unix.

E’ probabilecheunapartedelmeritodelrinnovatointeresseversoAmigasiadaattribuireproprioall’emulatoreoggettodi questarelazione;giuntoadunlivello di sviluppotaledapoterfar funzionaresenzaproblemi la stragrandemaggioranzadel softwareAmiga esistente,UAE ha riportatomoltiappassionatiai “vecchitempi” e li haindotti a riprenderein manoi propriAmiga.

10

Page 11: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.1.10 Birra

Trovo divertente,maanchemolto efficacenel riassumerein pocherighela storiadi Amiga,questobreve brano,scovatotra le variecitazionied i vari aneddoticontenutinell’archivio del programma“ fortunes” di Linux, nel qualesi fauncuriosoparallelotra i sistemioperativi e la birra:

AmigaDOSBeer: Thecompany hasgoneout of business,but their recipehasbeenpicked up by someweird Germancompany, so now this beerwill be an import. Thisbeernever really sold very well becausethe original manufacturerdidn’t understandmarketing. Like Unix Beer, AmigaDOSBeer fansare an extremely loyal and loudgroup. It originally camein a 16-oz. can,but now comesin 32-oz. canstoo. Whenthiscanwasoriginally introduced,it appearedflashyandcolorful, but thedesignhasn’tchangedmuchover theyears,soit appearsdatednow. Critics of this beerclaim that itis only meantfor watchingTV anyway.

(Birra AmigaDOS: L’aziendaha chiuso,ma la loro ricetta è stataacquistatada unacuriosacompagniatedesca,perciòora questabirra saràd’importazione. Non ha maivendutomolto beneperchèil produttore originalenoncapiva il marketing. Cosìcomeper la birra Unix, i fan della birra AmigaDOSsonoun gruppoestremamentefedeleechiassoso.In originevenivavendutain lattineda16once,maoraesisteanchein lattineda 32 once. Quandofu introdotta, appariva brillante e colorata,ma il designnon ècambiatomoltonegli anni,e oggiapparedatato.I critici di questabirra sostengonochecomunqueerapensatasoloperguardarcila TV.)

2.2 Amiga nel dettaglio

Nell’esaminareneldettagliole caratteristichehardwareesoftware,prenderòin considerazioneprin-cipalmentequelle degli Amiga cosiddetti“Classic”, ossiaA500 e A2000, e farò solo un breveaccennoalleevoluzioniapparseneimodelliusciti successivamente.

2.2.1 Hardware

Comegià accennatoin precedenza,la caratteristicapeculiaredell’hardwareAmiga è il processoreMotorola68000affiancatodatrechipcustom-built chehannolo scopodi alleviareil caricodi lavorodelprocessore:Agnus, DeniseePaula.

68000 Il Motorola68kèunprocessoredi tipo CISC,conunbusdatia16bit, macheinternamentelavoraa 32 bit; il busdegli indirizzi è invecea 24 bit, e ciò consentedi indirizzarefino a 16 MB diRAM. Le suecaratteristichedi basesono:

� 8 registri indirizzi a32bit;

� 8 registri dati “general-purpose”a32bit;

� 56 istruzionidi base;

� 16modalitàdi indirizzamento;

� Operazionidi I/O di tipo memory-mapped.

La frequenzadi clockdei68kcheequipaggianogli Amigaèdi 7.1MHz . Il 68kèin gradodi operarenellemodalitàutenteesupervisore, edèperciòadattoall’utili zzoconsistemioperativi multitasking.

11

Page 12: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Agnus Agnussvolgetre funzionispecifiche:

� controllo dei 25canali DMA: attraversoi canaliDMA i coprocessorie le periferichedi input,prime tra tutte le memoriedi massacomefloppy- e hard-disk,possono effettuareil trasfe-rimento diretto dei dati in memoria,senzache occorrala supervisione del processore.Inpratica,il 68000si limita ad indicarel’indirizzo, la dimensionee la destinazionedei dati chegli occorrono,eAgnussi occupadel veroe propriotrasferimento;

� sincronizzazioneconil pennelloelettronicodel monitor, attraversoil coprocessoreCopper.La sincronizzazionecon il monitor è indispensabileperavereanimazionifluide, senzascattie senzail cosiddetto“effettoneve”. La sincroniacol segnalevideoè utilizzatoancheperaltreapplicazioninelle quali il timing è importante e deve essereindipendentedalla velocitàdicalcolodelprocessore,comeadesempiola riproduzionedi musica;

� gestionedel Blitter : il Blitter èuncoprocessoreil cui scopoèil trasferimentorapidodi bloc-chi di memoriadaunalocazioneall’altra. Dati l’indirizzo di partenzae di destinazionedelleword da trasferire,il Blitter effettual’operazionead unavelocitàcirca 10 volte maggiorediquantosarebbepossibile utilizzandoil 68000.Il Blitter haaccessoesclusivo a4 canaliDMA,equestogli consentedi accederecontemporaneamenteatredifferentisorgenti,combinarletraloro conle operazionilogichecheèin gradodi effettuare(AND, OR, NOT, XOR) edi utilizzareil restantecanalepermettereil risultatonelladestinazionefinale.Utili zzandoopportunamentele operazionilogichee “maschere”di bit, il Blitter permetteperciòdi spostareelementinonnecessariamenterettangolari.Altre funzioni del Blitter sonoil riempimentorapidodi areedimemoriaconunvalorearbitrario,edil tracciamentodi linee.L’utili tà del Blitter è evidentenelle applicazioniche richiedonoanimazionigrafiche,comepresentazionimultimediali, titolazioniprofessionalievideogiochi,maanchenell’util izzodel-l’interfacciagraficarisultadeterminante;bastipensarechela gestionedellefinestregrafichesilimita in praticaal tracciamentodi lineeerettangolieallo spostamento di porzionidi schermo.

Denise Deniseèil chipchesi occupadellagenerazionedell’outputvideo.Nellaprimaversionedelchipset(denominatoOCS, Original ChipSet) è in gradodi gestirerisoluzioni standarddi 640x256pixel non interallacciati,o di 640x512pixel in modalità interallacciata(anche:interlacciata), cheprevedela visualizzazionealternativamentedelle righepari e delle righedisparidello schermoperogni passaggiodel pennellovideosul monitor;nellemodalità cosiddette“overscan” la risoluzionepuò superarei 700 pixel in larghezzae i 300 in altezza,nelle modalità non interlacciate.Da no-tareche,al contrariodi altre piattaformecomead esempioi PC IBM-compatibili, non esisteunadistinzionetra modalitàgraficheemodalità solo-testo.

Le frequenzedi aggiornamentosonocompatibili congli standardtelevisivi (furonoprodottedueversionidei chip Denise,unacompatibile conlo standardNTSCe unacompatibile conlo standardPAL, utilizzato in Europaed in Italia in particolare);questoconsentiva di collegaredirettamenteAmiga ai televisori casalinghi,anchesein questocasol’utilizzo dellamodalitàinterallacciata,so-prattuttocon schermatedai colori molto contrastanti,era letteralmenteun pugnonegli occhi perl’utilizzatore. La compatibilità per gli standardtelevisivi rendeva ancheAmiga utilizzabilesenzagrandisforzipergeneraretitoli eanimazioniprofessionalinelcampotelevisivo, ossia,utilizzandoilgergodel settore,rendevaAmigaunamacchinaidealeperil DTV (DeskTopVideo)1.

1A talepropositoricordounaneddotocurioso,cherisaleal periodo di massimapopolarità di Amiga, attornoall’anno1990. Un giornalistadi unadelle testatespecializzatenellamacchina Commodoresi sveglia unamattinaedaccende iltelevisore:quellochevedecomparireè la classicaschermatalampeggiantecheAmigavisualizzaquandoentranellesue

12

Page 13: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Denisevisualizzafino a64colori (al massimo6 bit perpixel indicanoil coloredautilizzare,traquelli neiregistri di colore),daunapalettedi 4096(12bit, cioè4 perognicomponentecromaticaR,G e B, perogni registrodi colore). Attraversola modalitàdettaHAM (acronimodi Hold AndMo-dify), puòmostrarecontemporaneamente4096colori. L’HAM sfruttaun “trucco” hardware: infattiin questamodalitàogni pixel ha unaprofonditàdi 6 bit, e questopermetterebbedi utilizzaresolo64 colori; l’HAM, invece,usaperogni pixel i 4 bit menosignificativi per indicare“parzialmente”il colorechedovrà assumere,e gli altri dueper indicareunavariazionedi colorerispettoal pixelimmediatamentea sinistra. Perchiarireil concettopuòessereutile unatabellaconil significatodei6 bit nellamodalitàHAM:

Bit 6 e5 Bit da4 a1 Coloredelpixel00 XXXX Coloredel registro XXXX01 XXXX Stessocoloredel pixel precedente,maconintensità di blu

pari aXXXX10 XXXX Stessocoloredelpixelprecedente,maconintensitàdi rosso

pari aXXXX11 XXXX Stessocolore del pixel precedente,ma con intensità di

verdeparia XXXX

La storiadellamodalitàHAM ècuriosa:fu concepitadaMiner dopounavisitaagli stabilimentidella Silicon Graphics, all’epocaleadernella produzionedi workstationgrafiche,e subitoimple-mentatanei progettidel chip Denise.In seguito lo stessoMiner cambiòideae decisedi eliminarequestamodalità daDenise,maciò avrebbeobbligatoalla riprogettazionequasitotaledel chip, cosìl’HAM rimase. Lo scetticismodi Miner fu probabilmente causatodal fatto cheil funzionamentodellamodalitàHAM rendele immaginisporcheesfocate;ècomunqueancorautilizzabilesoprattut-to perla visualizzazionedi fotografiedigitalizzate.Guardandole cosein prospettiva,HAM superavadi parecchiotuttoquantofossedisponibile acavallo degli anni’90 suipersonalcomputer, e rendevaquindi Amiga l’unica sceltapossibile per chi volesseoccuparsidi graficapittorica e non potessepermettersiunaworkstationdacentinaiadi migliaiadi dollari.

Un’immagine visualizzata in modalità HAM

Un’ulteriore funzionedel chip Deniseè la gestionedegli sprite, oggettigrafici di dimensionilimitate(16pixel di larghezzaefino a255di altezza),completamenteindipendentiperrisoluzionee

“Guru meditation”, cioèquando il sistemaoperativo va in crash. L’uomo rimane perplessoperalcuni secondi, infattiil suoAmiga, collegato al televisore,è spento! Solo dopo capiscechel’Amiga in Gurunonerail proprio, maquelloimpiegatoperi titoli elettronici dalcanaletelevisivo sulqualesi erasintonizzato!

13

Page 14: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

numerodi colori dallo schermosottostante(detto“playfield”), e di cui è l’hardwarestessoa imple-mentarela visualizzazionee il movimento.Denisegestiscefino adotto spritea quattrocolori; essipossonopoi esserecombinatiperottenereoggettiin movimentopiù grandieconunmaggiornumerodi colori; nello stessofotogramma unospritepuòessereriutili zzatopiù volte, a condizionechetraduecopievengamantenuta la distanzadi unarigavideoorizzontale.Farmuovereunoggettograficosullo schermousandogli spritecomportaper l’hardwareAmigaun caricodi lavoro molto inferiorea quellonecessariopersvolgerela stessafunzioneconil Blitter; in effetti il movimentodegli spriterisultacosìveloceefluido dadarel’impressionecheessinonfaccianopartedellaschermatagraficasottostantema la “sorvolino”; un effetto chel’utili zzatoreAmiga poteva provarequotidianamente:lo stessopuntatore del mouse, usatoper interagirecon la GUI del sistema,è uno sprite. Deniseimplementa ancheunafunzionechesegnalaquandoavvienela collisione tra duesprite,oppuretraunospriteedeterminateareedelplayfield.

Paula Paulaèil chipsonoro,chegestiscele quattr o voci digitali a8 bit di Amiga. Amigaproduceaudiostereo: duevociaudiosonoassociateal canaledestro,edueal canalesinistro;tuttelevoci sonoindipendenti, quindidaiduecanaliprovengonosuonicompletamentediversi,equestopuòprovocareun effetto fastidiosoquandosi ascoltal’output Amiga per mezzodi cuffie. Nonostantequesto,l’audio offerto daAmiga eratra i migliori chesi potesseroaverenei primi anni ’90 senzaricorreread attrezzaturemusicali professionaliMIDI, che comunqueAmiga poteva pilotare attraversounappositocavo; in questocamposolo l’ Atari STe potèrivaleggiare con Amiga, mentreper quantoriguardai PC,all’epocail non-plus-ultraerarappresentatodalleschedeAdLib...

Paulasi occupainoltredellagestionedeifloppy-diskdriveredelleportedi I/O: la portaparallela“Centronics” e la serialeRS-232a25poli.

Memoria Perle piattaformeAmigaesisteunadistinzionetra diversitipi di memoriaRAM:

Chip RAM: la Chip RAM è unamemoriaa 16 bit montatadirettamente sulla schedamadre. E’l’unica porzionedi memoria,tra quelleinstallatesu un sistemaAmiga, a cui i chip custompossonoaccederee chepossonoutilizzare. Questoimponeperciòuna forte limitazione al-l’architetturaAmiga: tutti i dati grafici e audiochedevonoessereriprodotti dai chip dedicatidevonoobbligatoriamenterisiederenellamemoriaChip. La Chip RAM è comunquecondi-visa col processore,questosignifica chepuòessereutilizzataanchecomenormalememoriaaccessibiledal68000eallocabileperprogrammiedati.La massimaquantità di memoriaindirizzabiledallediverseversionidel chipsetfu di 512KBperil l’OCS, eaumentònellesuccessiveevoluzioni.

FastRAM: il gergoAmigadenominaFastRAM tuttala memoriastandarda16bit montatasuunamacchina,chenonsiaChip RAM; è perciòla partedi RAM di un sistemaAmiga alla qualela CPU ha accessoesclusivo. Essaveniva montatasu appositislot: slot denominatiZorroequipaggiavano i computerdi forma “standard”,ovvero A1000, A2000, A3000 e A4000, eservivano ancheperle schedeaggiuntive,implementandoundispositivodi autoconfigurazioneprecursoredell’odiernosistema “PlugandPlay”; slotparticolari,dedicatisoloall’espansionedellamemoria e accedibilipermezzodi unaferitoia chiusadaunosportelloin plasticapostosottola tastieraeranodisponibili sui mini-computer A500, A600 e A1200. La parola“Fast”nonsottintendeperòunarealemaggiorevelocitàdi questotipo di memoriarispettoa quellaChip; i duediversi tipi di memoriaavevanoun tempodi accessoparagonabile.

14

Page 15: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

“Real” FastRAM: è la memoriaa 32 bit disponibile perA3000e A4000. Al contrariodellaFastRAM introdotta poco sopra,la “Real” Fast RAM era realmentepiù velocedella memoriaChip.

Evoluzioni Le caratteristicheelencatesoprasonovalidecomedettopergli Amiga “Classic”,A500eA2000.Modelli successivi dei sistemiAmiga introdusseroalcunimiglioramenti.

Comeprocessorifurono utilizzati, oltre ai 68k, anche(rari) i 68010,68020a 14 MHz, 68030fino a50MHz, 68040fino a40MHz e 68060a60MHz.

RispettoallaserieOCS,i chipdellaserieECS implementavanosoloduenuoverisoluzioni dette“Productivity”, e la capacitàdi indirizzarefino ad1 MB di Chip RAM; i chip grafici AGA, invece,portaronoa 2 MB la memoriaChip indirizzabile,e introdussero le tantoattesemodalità grafiche“ truecolor”, a256colori dapalettedi 16milioni.

Un fattocuriosofu chela “festa” degli appassionatiutentiAmigaperl’avventodelchipsetAGAfu “rovinata” dal fattochele informazionitecnichedel nuovo chipsetnonfuronopubblicate.Que-stoperchèi progettistidel nuovo hardwareavevanoincontratograndidifficoltà durantelo sviluppodell’AGA permantenerela compatibilità con le vecchieapplicazioni,difficoltà provocatedal fattochemolti programmatori, alla ricercadellamassima prestazioneottenibile dallapiattaforma,aveva-noviolato le indicazionicontenuteneimanualidi programmazionedell’hardwareAmigaeavevanoabusivamenteutilizzatoregistri e funzionidichiarateriservate,invecedi seguiregli inviti delladocu-mentazioneufficiale adutilizzarequandopossibile le routinedel Kickstart. L’intenzione eraperciòquelladi costringerei programmatoriad usarel’hardwaredella macchinanel modo“giusto”, pre-cludendola possibilità di scegliereil modo“sbagliato”e facilitandosiin questomodoil compitoinvistadi unulterioresviluppodelchipset.Il destinovolle peròchel’A GA fossel’ultimo sviluppo delchipsetAmiga!

2.3 Il sistema operativo

2.3.1 Intr oduzione

Il sistema operativo Amigapuòesserevistocomecompostodatre blocchiprincipali:

Exec, chegestiscei processi,la memoriae tuttele strutture di controlloadessirelativi;

AmigaDOS, chegestiscela partedi alto livello del filesysteme l’interfacciaa linea di comando(CLI , CommandLine Interface);

Intuition, cheforniscei “mattoni” perla costruzionedell’interfacciagraficaafinestre.

Di questitre,Execè il kerneldelsistema,la strutturaportantechepermettedi otteneremultitaskingrealesu macchinecon processoria 7 MHz e, contandoanchela ROM del Kickstart, menodi unmegabyte di memoria. Questoè possibile perchèExec è statoprogettatocon l’intento di ottenerela massimaefficienzaconla minimaridondanza, e realizzaquestoscopopermezzodi unastrutturaorientata agli oggetti2.

Il motivo di questasceltaapparechiarosesi analizzaungenericosistemaoperativo moderno:lamaggiorpartedel lavorodelkernelsi riduceallagestionedi strutturedi daticomecode,listeo tabel-le, asecondadellasceltaeffettuatadaiprogettistidelsistema.Le funzioniallabasedellagestionediquestielementisonomoltosimili nel funzionamento, esi differenzianoin generalesoprattuttoperle

2Curiosamente,Exechaunastrutturaobject-orientedmanon è statoscrittoin un linguaggioOOP.

15

Page 16: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

strutturedati trattate:adesempio,le funzioni chepermettonodi inserirenuovi elementinellareadyqueuesarannomolto simili a quellechesvolgonolo stessocompitoper la lista dellepaginedi me-moriaattive di un processo:in entrambii casisi deve allocarela memorianecessaria,e modificarenelmodoopportunodeipuntatoriagli altri elementidellalista; le funzionihannolo stessoprincipiodi funzionamentomasononecessariamentediverseperchètrattanostrutture datidifferenti.

Sesi tienecontodel fattochequestefunzioni, essendopartedel sistemaoperativo, sonotenutenascosteai programmatoridi applicazioniutente,chequindi devonoa loro volta implementareperciascunprogrammafunzioni chesvolgono sempregli stessicompiti ma si differenzianoper i datigestiti, risulta chiaro che in un sistemaoperativo tradizionaleesiste,duranteil funzionamentoaregime,unacertaquantitàdi funzioni “simili manonidentiche”cherisultanoridondanti.

Exec sceglie unafilosofia di funzionamentoopposta:vengonoimplementatedelle funzioni diutilizzo generale(general-purpose), chevadanoaltrettantobeneperogni esigenzadel sistema ope-rativo; inoltre, questefunzioni vengonomessea disposizionedel programmatoree dei programmiutente.I vantaggidi questasoluzionerispettoalla situazioneprecedentesonoevidenti: uncospicuorisparmio di memoria; unamaggiore semplicità del sistema,perchèesisteunnumeromoltominoredi funzioniunichele qualivengonoutilizzatein contestidiversinellostessomodo;la possibilità peril programmatoredi usarefunzioni già ampiamentesperimentateeperfettamenteefficienti.

La struttura orientata agli oggetti è il mezzoidealeper implementarequestaidea,graziealconcettodi ereditarietà (inheritance) di funzioni e strutturedati. Dataunaclasse(class), un’entitàautocontenutacomprendentedellestrutturedati e le funzioni pergestirle,è semprepossibile creareunnuovo oggettoderivandolo dalprimo: la nuovaentitàerediteràtuttele strutturedatie le funzioniche le gestisconodall’oggetto “genitore”, e potrà includernedi nuove, adatteper un utilizzo piùspecializzato.I vari oggettidi un sistema potrannoessereordinatigerarchicamentein un alberoincui i nodi più vicini alla radicesonole classipiù generiche,e quelli più lontani sonole classipiùspecializzate,cheperòcomprendonotuttele funzionalitàdegli oggettidacui derivano.

In Execla strutturasceltadaiprogettisti perle strutturedi datiè la lista a puntatori doppi (dou-bly linkedlist). Questasceltapresentaun ovvio vantaggio edun ovvio svantaggio.Il vantaggio stanell’efficienzadell’utilizzo dellamemoria:unalista a puntatoripuòessereallocatadinamicamentecon facilità, perciò in ogni momentosolo la memoriaeffettivamenteutilizzatadal sistemaopera-tivo è allocata;lo svantaggiostanella velocitàdi accessoad un singolo elementodella lista: perraggiungereundeterminatoelementooccorrescorreretutti gli elementichelo precedono.

L’elementoallabasedi Execèperciòil singolo elementocomponenteunalistaapuntatoridoppi,quindi un oggettochepossiedeun’intestazionee duepuntatori, i quali servono per collegare ognielementorispettivamenteal precedentee al successivo della lista. Questooggettosi chiamaMin-Nodee la classechegestiscele listesi chiamaMinList ; essaèconcepita,comegiàaccennatopocosopra,per essereil più possibile di utilizzo generale;contieneinfatti un set completo di funzioniperaggiungerenuovi MinNode adunalista,a partiredallatesta,dallacodao daun puntoqualsiasidellacatena,permettendoin questomododi implementarelisteFIFO (queue), LIFO (stack) o listegeneriche.Il numerodi casiparticolaridaconsideraree trattareconvariantidelle funzioni di basevieneridotto utilizzandoun espediente:unalista vuotacontienein realtàdueMinNodes,chiamatidummy-nodes, e tutti i nodi aggiuntialla lista vengonoposizionatitra di essi;i dummy-nodessonoperciòi marcatoridi inizio e fine lista, e gli unici elementidella lista ad averepuntatoria NULL,mentrei nodi “significativi” hannosempreunnodoprecedenteedunnodosuccessivo.

Tutte le strutturedati di Execestendonole funzioni dellaclasseMinLi st, aggiungendoai Min-Nodele funzionalità via via necessarie.

16

Page 17: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.3.2 Gestionedei processi

L’unità di esecuzionefondamentalesuisistemiAmigaèdettotask. Le variefunzioniabassolivellodelsistemaoperativo,comeil filesystemel’accessoalleperiferichedi I/O, sonoimplementatecometasksemprein esecuzione.I programmiutentesonoin generetaskestesi,chiamatiprocessi, i qualioltre adaverele caratteristichedei normali taskhannoanchela possibilità di accederealla libreriadi funzioni dos.library (vd. par. 2.3.5)per tutte le operazioniriguardantiil filesystem,la gestionedell’I/O e la creazionedi nuovi processi.

Ogni taskpuòtrovarsiin unodei seguentistati:

runnin g: il taskèattualmentein esecuzione;

ready: il tasksi trovanellaready-queueedèprontoperessereeseguito;

waiting: il taskattendeuneventoesterno,e nonèprontoperessereeseguito;

added: il taskèstatoappenacreato,e nonèancoraprontoperl’esecuzione;

removed: il taskèstatoterminatoe la suastrutturastaperessererimossadallamemoria;

exception: il taskè prontoper l’esecuzionecomeexception. Unaexceptionvieneeseguitaappenainvocatae interrompeogni altro processoin esecuzione.Si può pensaread una exceptioncomeadun taskreal-time.

Execmantieneunacodadi readytasks(readyqueue) edunadi waiting tasks(waiting queue). Adogni taskè associatoun numerointero dettopriorità , cheva da -127 a 128, e la readyqueueèordinatasecondola prioritàdei taskin coda:taskaprioritàmaggioreverrannocollocatiin testaallalista. La waitingqueueè inveceunalistadi tipo FIFO, enuovi elementiin arrivo verrannocollocatiin fondoalla lista.

Lo schedulingèpiuttostosemplice,essendoin praticaunpriority round-robin conpreemption.Un taskrimaneattivo finchènonsi verificaunadelleseguenticondizioni:

� Un taskconprioritàmaggiorediventa ready, oppurevieneinvocataunaexception;

� Il taskattualmenterunningdeveattendereunevento;

� Il taskattualmenterunningrimanefunzionanteperun’interoquanto di tempo;

In ognunodi questicasi il taskchediventa runningè quello readya priorità maggiore;in casodiesistenzadi più taskalla stessapriorità nellareadyqueue,essiverrannoeseguiti unodopol’altro insequenza,secondoil loro ordinenellaqueue.

L’algoritmo per implementare uno schedulercosìconcepitoè senz’altromolto semplicee ri-chiedeperciòunaminimaquantità di tempodi CPUpercalcolarei taskdamandarein esecuzione.Inoltre, si avvicina all’idealeschedulerreal-time,visto chetaska priorità più altaverrannoesegui-ti appenadivengonoready. Un ovvio difetto è cheper i taska priorità più bassac’è il rischio distarvation, setaska priorità maggioresonocostantementein readyqueue,ancheperchèExecnonimplementaalcunapoliticaperil ricalcolodinamicodellepriorità. Questoèaprimavistaungrossodifettodell’architetturaAmiga;bisognaperòprenderein considerazionealcunifatti:

� i taskdi sistemahannoin generepriorità compresatra +20 e -20; di default le applicazioniutentehannoinvecetutteprioritàzero,perciòsi spartirannoequamenteil tempodi CPU;

17

Page 18: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

� Amiga è un sistemamonoutente, perciòè lecito aspettarsiche in ogni momentoci sia unasolaapplicazioneattiva conla qualel’utenteinteragisce,più unaseriedi taskdi servizioe diprocessichegiranoin background;

� esistonocomandidi sistemaconi quali l’utili zzatorepuòcambiarela priorità dei processi,incasodi esigenzeparticolari.

Tenutocontodel contesto,ci si rendecontochequestapolitica di schedulingrappresentaun buoncompromessotra leggerezza,semplicitàdi implementazione edefficienza.

2.3.3 Comunicazionetra i task

I taskcomunicanotra loro permezzodi segnali(signals) emessaggi(messages).Un segnaleè costituito da unaword di 32 bit cheun taskspediscead un altro. Ogni bit del

segnaleè un flag: i primi 16 sonoriservati al sistemaoperativo mentregli altri 16 sonoutilizzabiliarbitrariamentedalprogrammatore.Un segnaleèunmezzomoltocomodoper“risvegliare” un taskin waitingstate,avvertendolodell’avvenimentodi unevento.Ogni taskchesi trova in statowaitingpossiedeun patterndi segnali dei quali è in attesa;al ricevimento di un segnale,la word del signalvieneconfrontataconil patterndei messaggiattesi,edun risultatonon-zeroprovocal’inserimentodel tasknellaready-queue.

Un messaggioè un’estensione del concettodi segnale,ed è in praticaunastringacheun taskinvia adun’appositaporta (message port), dallaqualegli altri taskin “ascolto” possonoprelevaree leggereil messaggio. Ogni taskpuòcreareun numeroarbitrariodi portee messaggi,essendoilsolo limite la quantità di memoriadisponibile; le portepossonoessereprivatee di usoesclusivodi alcuni task,oppureun taskpuò aggiungereunaportaalla lista dellemessageport di sistema.Imessaggisono,adesempio,la basedelle richiestedi I/O agli apposititask,e la strutturautilizzatapercomunicareai processigli eventiattivati dall’utili zzodelmousesulleGUI.

2.3.4 Gestionedella memoria

SuAmigalamemoriaRAM nonvienedivisain paginematrattatacomerisorsaunica. Unaporzionedi memoriacontinuaè dettablocco; Exec mantieneuna lista di blocchi di memoria liberi : perciascunblocco l’elementodella lista contienel’indi rizzo e la dimensione. Quandoun processonecessitadi allocarememoriaeffettuaunarichiestaadExec,il qualeselezionaunbloccodi memorialibero, lo assegnaal processoemodificadi conseguenzala listadeiblocchiliberi.

Non esistealcunafunzionedi gestionedellamemoriavirtuale: il funzionamentodel sistemaèlegatoalla presenzadi unaquantitàsufficientedi memoriafisica. Comunque,l’unico limite allamemoriaallocabiledaun singoloprogrammaè la memoriatotaledisponibile; questosignificacheunprocessononincorrein unerroredi “out-of-memory” finchènonè l’intero sistemaadesaurirelaRAM.

Execnonimplementaalcunmeccanismodi protezionedellamemoria;unprogrammamalscrittoo “malizioso” può invaderela memoriadi altri processie modificarla; il risultato in questocasoè il danneggiamento delle altre applicazionie unaprobabileGuru Meditation. Inoltre, Exec nonmantieneunalista dei blocchidi memoriaeffettivamenteutilizzati, perciòseun processoin fasediconclusionenonprovvedea liberarela memoriachehaallocato,essanonsaràpiù disponibile finoal riavvio dellamacchina.Questoè certamenteil più grandelimite dell’architetturaAmiga. C’è dadire chefunzioni di resource-tracking eranopreviste nel progettoiniziale del sistemaoperativo diAmiga,maessenonfuronoimplementateperla frettadi usciresulmercato.

18

Page 19: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.3.5 Libr erie

Una libreria (library 3) èungruppodi funzioni relativeadunadeterminatafunzionalitàdelsistema;le funzioni fornitesonoscrittein codicerientranteesonoperciòutilizzabili dapiù taskcontempora-neamente.SuAmiga tuttele funzioni di servizio,comele primitive perla gestionedelleliste,dellamemoria,dellemessageports,sonocontenutenellaprincipalelibreriadi sistema,exec.library.

In memoriale libreriehannounastrutturamolto semplice:il codiceveroepropriodellediversefunzioni di libreria è precedutodaunajumptable in cui ogni campocontieneun’istruzionedi salto(jump)all’indirizzodell’inizio delcodicedi ciascunafunzione.Conoscendoqualeposizioneoccupaunadeterminatafunzionenell’elencodellefunzionidi unalibreria (taleinformazioneè ovviamentecontenutanelladocumentazioneufficialeeneifile includeforniti conil SoftwareDevelopmentKit),basteràmoltiplicarela posizioneper la dimensione di ogni campodella jump table(6 byte),som-marel’indirizzo dell’inizio della jump tablestessa,per ottenerel’indirizzo dell’istruzionedi jumpal codicedellafunzionedesiderata.Ad esempiosela jumptabledi unagenericalibreriaècollocataall’indirizzo 0x0000F0 00, e si vuoleinvocarela quartafunzionedella libreria, si dovrà effettuareilcalcolo:

destinaz ione = 0x0000F00 00 + 0x06 * 0x04 = 0x0000F 000 + 0x18 = 0x0000F0 18

A questopunto bastaeffettuareun jump all’indirizzo destinaz ione , che a sua volta contienel’istruzionedi jumpall’inizio delcodicedellafunzionechesi volevautilizzare.

La jump-tabledellaexec.libraryèfissaall’indirizzo 0x0000 0004 ; tuttele altrelibrerie,siaquelledi sistemachequelleprodottedaterzi,sonocaricatedinamicamentein memoriaquandooccorrono,perciòoccuperannoverosimilmenteunaposizionein memoriadiversaadogniboot;il loro indirizzoècomunqueottenibileattraversoun’apposita funzionedellaexec.library.

Il vantaggiodi questasoluzioneè datodal fattochela chiamataal sistemanonè molto diversadal jump del codiceadunaqualsiasifunzioneinternaal taskchiamante,perciònonc’è la necessitàdi effettuareil cambiodi contesto,ossiadi interrompereil programmain esecuzione,salvarnelostatoe i registri, eseguire la funzionerichiesta,e poi ripristinareil programmachiamante.Un altrovantaggioè la relativa facilità concui si puòespandereil sistema, aggiungendolibrerie le quali almomentodell’esecuzionesonoindistinguibili dalle librerie di sistema,e persinosostituendoallelibreriegiàpresentidelleversionimodificate.

2.3.6 Device

L’utilizzo delle diverse perifericheda partedei task avviene, comegià accennato,per mezzodiapposititaskcherimangonoin esecuzionein background.Questitaskvengonochiamatidevice; lerichiestedi accessoadunaperifericaavvengonoin genereattraversomessaggispeditialla relativaporta.Le richiestesonosempreasincrone, mapergarantirela sincroniatra le richiestedeidatiedilloro utilizzo essepossono essereeffettuateattraversoappositefunzioni della libreria dos.library, lequalimettonoil taskchiamantein statowaitingfinchèle richiestenonvengonosoddisfatte,rendendoperciòl’accessoa perifericasincronodal puntodi vistadel singolo task; il passaggioattraversolados.librarynonècomunqueobbligato.

3La traduzionecorrettadi library è “biblioteca”, manel gergo Amiga vienepreferita la parola“ libreria”. Quandonellastesuradellaversioneitalianadelmanualedellaversione2.0delsistemaoperativo la parola“library” vennetradottaletteralmente,le rivistespecializzatee gli addetti ai lavori protestarono e criticarono aspramente la sceltadi affidare atraduttori estraneial mondoAmiga la traduzionedelladocumentazione ufficialedelsistema.

19

Page 20: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

2.3.7 Accessoconcorrente a memoria condivisa

Spessoin un sistemamultitasking c’è la necessitàchediversiprocessipossanoaccedereagli stessidati e all’occorrenzamodificarli; i sistemi operativi devonoperciòimplementaredei metodiper lagestionedell’accessoconcorrentealla memoria,in modocheun processonon vadaa modificareidati cheunaltroprocessostaaccedendo.

Amigametteadisposizionetre tecnicheperla gestione degli accessiconcorrentiamemoria.Leprimeduesonopiuttosto primitivee pocoefficienti, e consistononel disabilitareil multitaskingperil temponecessarioadun taskperteminarel’accessoai dati chegli occorrono.In particolare:

Forbidding: le duefunzioniForbid() ePermit () rispettivamentedisabilitanoeriabilitanoil mul-titasking. Disabilitareil multitasking significaimpedire il dispatching dei task,in praticaim-porreal sistemadi mantenerein esecuzioneil taskchehainvocatola funzioneForbid () , fin-chèil taskstessononchiameràla funzionePermit() ; questoindipendentementedallaprioritàdel task.Rimangonoperòabilitati gli interrupt;

Disabling: il disabling, chesi effettuacon la coppiadi funzioni Disable() ed Enable() , ha glistessieffetti del forbidding ma in più disabilita anchegli interrupt. Un taskcheeffettua ildisabling haperciòpienoedesclusivo controllodel sistema;

La terzatecnica,più raffinatae sicuramentepiù correttadal puntodi vistaformale,è la regolazionedell’accessoalla memoria condivisaattraversoi semafori,messia disposizionedal sistema. L’usodeisemaforihail grandevantaggiodi bloccaresoloi taskchetentanodi accedereai dati regolatidalsemaforo,mentrei task“estranei”nonvengonoinfluenzati.

Una volta inizializzatoun semaforo,essovieneutilizzato comeun classicosemaforobinario,attraversole funzioniObtainSema phore() e Release Semaphore( ) . In dettaglio,un taskchevuo-le accederead unamemoriacondivisa invoca la funzioneObtainSema phore() utilizzandocomeparametroil semaforochevuoleutilizzare:seil semaforoè libero, il taskchiamanteneprendepos-sessoed è libero di accederealla memoria;se inveceil semaforoè già statoottenutoda un altroprocesso,il taskvienepostoin waiting statee la suarichiestaaccodataalle altreeventualmentegiàeffettuateda altri task. Quandoil taskchepossiedeil semaforolo rilasciautilizzandola funzioneReleaseSe maphore() , essoviene“dato” al primo taskin attesa.I taskpossonopoi semplicementeinformarsisullostatodelsemaforoutilizzandola funzioneAttemptS emaphore() .

Un utilizzo alternativo dei semaforivienedalle funzioni Procure() e Vacate() . Il taskcheinvocail Procure() “prenota” il semaforoindicatocomeparametroalla funzione,ma non vienebloccatose il semafororichiestoè già in possessodi un altro task. Il taskcontinuaa funzionarenormalmente,svolgendole operazionichenon richiedonol’accessoalla memoriaregolatadal se-maforo,fin quandoil semaforostessovieneliberato; a quel punto il sistemainvia un messagealtaskper informarlocheil semaforoè libero e cheè il suoturnoperprenderlo.Il Vacate () svolgela stessafunzionedel ReleaseS emaphore() , mapuòancheservireperannullarela “prenotazione”nel casoal tasknonoccorrapiù.

2.3.8 AmigaDOSefilesystem

L’AmigaDOS è la partedel sistema operativo Amiga cheforniscel’accessoai dati contenutinellememoriedi massa,mediatodalparadigmadelfile.

Il filesystemAmiga è diviso in volumi (volumes): ogni floppy-disk inseritonei lettori e ognipartizionedegli hard-diskinstallati suunsistemacostituisceunvolume.Unaparticolaritàèdatadalfatto cheAmigaDOSrileva automaticamenteun floppy-disk quandovieneinseritonel lettoree lo

20

Page 21: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

aggiungeall’elencodei volumi montatinel sistema.Perrilevarequandoun dischettoè inserito,ilsistemaoperativo azionaadintervalli di temporegolari la testinadi ognidriver, tentandodi spostarladi un passoin unadirezionein cui non è possibile muoverla seun discoè presente:perciòse iltentativo nonhasuccesso,effettivamentec’è un disconel lettore,e AmigaDOSpuòprocederean-dandoa leggerneil RootBlock. Questomovimentodellatestinaprovocail “click” tipico dei driverAmiga. Anchel’operazioneinversaè automatica;seun discovieneestrattodal lettore,AmigaDOSpuòreagirein duediversimodi: sealcunerisorsepresentisuldiscosonoin usodalsistema,Amiga-DOSlasciail volumenell’elencodei volumi montati,e sedovesseaver bisogno di leggerealtri datisuqueldisco,utilizzeràla GUI (vd. par. 2.3.12)perchiedereall’utentedi reinserireil discoin undriver;altrimenti, il discoè rimossodall’elencodei volumi montati.

I volumi si distinguono permezzodel nome,il qualepuòessereunaqualunquestringaalfanu-merica,contenentequalunquecarattereadesclusionedi “ / ” e “ : “, fino adunmassimo di 127.Ognivolumecontienefile edirectory:il limite di file e directorycontenutiin unvolume èdatosolodallacapienzadel volumestesso;i loro nomi seguonole stesseregoledei nomi di volume,mentrela di-mensioneèlimitataa30caratteri.Il filesystemAmigaècase-insensitive, comeFAT eal contrariodiext. In unpath,il carattere“ : “ indicala rootdi unvolume,mentre“ / ” è il separatoredelledirectory.

Un volumeè fisicamentediviso in unitàdi allocazionedetteblocchi (blocks), la cui dimensioneè tipicamentedi 512byte.Un floppy-diskdi tipo DD, ovveroabassadensità,contieneperciascunodei duelati 80 tracce (cylinders) da 11 blocchi ciascuna,per un totaledi 1760blocchi e 880 KBdi capienza;floppy-disk HD, montatiin generesu Amiga di fasciaalta,hannoun numerodoppiodi blocchiper tracciae perciòcontengonoun totaledi 3520blocchie 1760KB. Perun hard-diskivalori dipendonoovviamentedallageometriadelsupporto.

I dati di volume sonocontenutinel RootBlock, il bloccosituatonella posizione intermediadelsupporto(880peri dischiDD, 1760peri dischiHD). Essocontieneil nomedelvolume,unpuntatoreai dati della root directory, la posizionedellebitmap cheindicanoi blocchiusatie quelli liberi, ladatadi creazioneeultimamodificadelfilesystemeunchecksum.Unadataècostituitadatre ulong(1 ulong= 4 byte)cheindicanorispettivamenteil numerodi giorni trascorsidall’1/1/1978,di minutitrascorsidallamezzanotteedi tick (1 tick = 1/50di secondo)trascorsodall’ultimo minuto;danotareperciòcheAmiga nonrisentedi nessunodei probleminoti come“Millenium bug”: tali problemisimanifesterannononprimachesianotrascorsi11milioni di anni!

Ogni directoryè memorizzatacomelista concatenatadi blocchi,e contienele informazionisufile e directorycontenute,in particolareil nome,la datadi creazionee modifica,i bit di protezione,la posizionedel primo bloccochenecontienele informazioni,edun checksum.I bit di protezionesonocostituiti daunaulongin cui ognibit èunflag perundeterminatoattributo.

Flag Significato(flag= 1)

0 noncancellabile1 noneseguibile2 nonscrivibile3 nonleggibile4 archivio5 puro6 script7 hold

8-31 riservatiUn file èpuroquandoèuneseguibile scrittoin codicerientrante,cheèpossibilerendereresidente

(vd. par. 2.3.10).L’attributo hold staad indicareun file eseguibile chepuòessereresoresidenteerimanerein memoriaanchedopoil soft-resetdelsistema.

21

Page 22: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Un file vienememorizzatoin blocchichesonoconcatenatitralorocomeunalista. I blocchicosti-tuentiun file vengonomemorizzatidovepossibile, perciòdischi in cui vengonoeffettuatefrequentiaggiuntee cancellazionidi file diventanoframmentatimolto velocemente.La frammentazioneècausadi rallentamentinell’accessoai dati sudisco;il fenomenoè particolarmenteevidentequandoil discodi lavoroèunfloppy-disk,edèsottolineatosiadai tempidi attesachesi prolunganoin modosensibile,siadal tipico rumoredella testina del floppy-disk driver Amiga cheeffettuail seekdelletraccedaunaparteall’altra deldisco.Tra i tool di sistemanonesisteunprogrammaperdeframmen-tarei volumi: tali applicazionisonoperòprodottedaterziedisponibili nelpanoramadeiprogrammifreeeshareware.

2.3.9 Nomi di periferica, devicevirtuali e assign

Ad ogni perifericainstallatasuun sistemaAmiga,siaessaun’unitàdi memorizzazioneo unaportadi comunicazione,corrispondeun volume: i floppy disk hannonomeDFx: , dove “x” è un numeroda0 a 3; gli hard-disksi chiamanoHDx: , dove “x” è un numerointeroda0 a 19. Perriferirsi adunfloppy disk si puòperciòsiausareil nomedel volume,cheil nomedel driver in cui è inserito. Leporteserialee parallelasi chiamanorispettivamenteSER: e PAR:; il fattodi poterriferirsi alle portedi comunicazionecomevolumi consentead esempiodi mandareun file da un computerall’altroattraversola portaserialesemplicementecopiandoil file sul volumeSER:. Anchealla stampantecorrispondeun volume, il cui nomeè PRT: ; ad essapuò corrisponderela porta serialeo quellaparallela,asecondadi comesonostateimpostatele preferenzedi sistema.

Esistonoinoltre dei device chenon hannounacorrispondenzadirettacon unaperifericafisicainstallatanel sistema.Alcuni di essivengonotrattati comeveri e propri filesystemvirtuali; alcunialtri sonodei “canali” acui vannoredirettii dati,comesuccedeperSER: e PAR:; altri infinerappre-sentanouna“scorciatoia”perriferirsi a directoryresidentisui filesystemfisici, e vengonochiamatiassign.

Nonc’è limite ai devicechepossonoessereaggiuntiadunsistemaAmigaattraversogli appositifile binari e file di configurazione,che vengono poi attivati da commandline (vd. par. 2.3.10)attraversoil comando“mount ”. Alcuni di questivengonoforniti conil Kickstartevengonoutilizzatiperalcuneoperazionidelsistemaoperativo: vediamoi più importanti.

Filesystemvirtuali I filesystemvirtuali con i quali anchel’utente menointeressatoalle funzio-nalitàavanzatedel sistema Amigaentrain contattosonoquelli cherendonopossibile l’accessoallamemoriaRAM comesefosseun normalevolume,in cui è possibile copiarefile e crearedirectory.Il loro scopoè quello di diminuire quantopossibile lo scambiodi dischetti nel lettore: infatti suisistemiAmiga dotati di unoo duefloppy-disk driver e nessunhard-disk,configurazionetipica perle installazionicasalinghepiù economiche,lo “swapping”dei dischettipotevaa voltediventareunadelleprincipaliattività dell’utente e impiegareunaquantitàenormedel suotempo!

Il RAM:èundiscovirtualedi dimensionedinamica,ossiale suedimensioni sonosempreugualiaquelledelleinformazionichecontiene,edèsemprepossibile aggiungerefile edirectoryfintantochèrimanememoriafisicadisponibile. Il contenutodel RAM: vieneovviamente perdutoadogni rebootdelsistema. Il RAM: vieneutilizzatodalsistemastesso,adesempiocomecontenitoredellaclipboardperle operazionidi copia-e-incolladelleapplicazioni,edèperciòsemprepresenteedisponibile.

Il RAD: è inveceundiscovirtualedi dimensioni prefissate,scelteapiacereal momentodellasuainizializzazione,e resistenteai soft-reset:il suocontenutovienecioèpreservatoal resetdelsistema,maovviamentevieneperdutoquandola macchinavienespenta.Il devicedelRAD: vienefornito colsistemaoperativo a partiredallaversione 2, madi default nonvieneattivatoautomaticamente; puòperòessereattivato dall’utentein qualsiasi momento.

22

Page 23: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Un device prodottodaterzeparti,perciònondisponibile “di serie”suAmiga, e chiamatoRAS:,uniscele proprietàdelRAM e delRAD, ècioèundiscovirtualedinamicoe resistenteal reset.

Canali Il canalepiù importantein Amigaè CON:; i dati inviati a CON: compaiono in unaconsole,unafinestrachesi aprenella GUI (vd. par. 2.3.12)e cheserve a visualizzaretesti. La funzioneprincipaledi CON: è quelladi fornire la finestraper la CLI (vd. par. 2.3.10),l’interfacciaa lineadi comando.CON: permettela gestionedi alcuni parametricomela dimensione,la posizione e lecaratteristichedellafinestradi console.

Una possibilità senz’altrointeressanteofferta da Amiga è quelladella sostituzione dei deviceforniti col sistemaconaltri scritti daterzeparti. Un esempionotevole è il deviceKingCON(KCON:),pensatocomesostituto di CON: cheaggiungeunaseriedi funzionalità alla console,comeunabar-ra di scorrimentoper rivederel’output della finestra,la possibilità di salvare l’output in un file el’autocompletamentodelnomedeifile attraversoil tastoTAB, comeaccadein Bash.

Un altrocanaledi interesseè PIPE: , l’implementazionein Amigadelpipe: si trattadi unbufferdel tipo FIFO chepuòessereutilizzatoperil passaggiodi datidaunprocessoadunaltro. L’utili zzoèparagonabileaquellodeipipedi Unix, conla differenzacheil pipeAmigaèunosolo,perciòsolodueprocessiallavolta,unocheinvia i datieunocheli riceve,possonousarePIPE: percomunicare.

Assign Attraversoil comandoassign datodaCLI (vd. par. 2.3.10)è possibile creareun numeroapiaceredi assignin unsistemaAmiga: unpossibileutilizzo èquelloconle applicazionichefannoriferimentoai propridatiattraversoil nomedelvolumein cui essidevonorisiedere;tali datipossonoesseremessiovunque su un filesystem,bastacheun assignfacciariferimentoa tale directorycolnomedel volumechesi aspetta.Se ad esempioun programmadi word-processingsi aspettaditrovarei file di definizionedell’aspettodei caratterinel volumeFONTS:, e si è creataunadirectorySystem:Fo nts in cui si desideracollocarequestifile, basteràassegnareil nomeFONTS: a quelladirectoryperchèil programmariescaa trovarli senzaproblemi. E’ ancheper questacaratteristicadi Amiga che per installare un programmasu hard-diskspessobastacopiarela directory in unaqualsiasidirectorysull’hard-diskecrearegli opportuniassign.

Alcuni assignhannounafunzioneparticolareper il sistema,e vengono creatiautomaticamenteal boot.Essisono:

Nomeassign DescrizioneC: E’ la directory che contienei comandidella

CLI. Di default viene assegnataalla directory:c del volume dacui vieneeffettuatoil boot.

S: In S: vannocollocati gli script di sistema,adesempio“startup-seq uence “, checontieneicomandidaeseguireal boot. Vieneassegnataa:s .

DEVS: Il volume che contienei file binari e di con-figurazione dei device. Viene assegnata a:devs

LIBS: Il volume che contienele librerie di sistema.Vieneassegnataa :libs

L: E’ il volumechele applicazioniusanoperme-morizzarvile opzionidi configurazione.Vieneassegnataa :l

23

Page 24: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Nomeassign DescrizioneENV: Il volumein cui vengonomemorizzatetempo-

raneamentele variabili ambientali, sottoformadi file di testo. Lo startup-sequencedel Work-benchlo assegnaadunadirectory:env checreain RAM:.

ENVARC: Il volume in cui le variabili ambientali con-tenutein ENV: vengonomemorizzatequandole si rende permanenti. Viene assegnata a:Prefs /Env-Archiv e

T: E’ il volumeusatocomedirectorytemporanea.Lo startup-sequencedel Workbenchlo assegnaadunadirectory:t checreain RAM:

SYS: E’ la root del volume dacui è statoeffettuatoilboot.

Ad unassignpossonofareriferimentopiù directory. Ad esempiosesuundischettosihannodellelibreriechenonsi voglionoinstallarenelsistemamaservonounatantumperunacertaapplicazione,è possibile aggiungereil pathdel dischettoa quellodelladirectorygià assegnataall’assignLIBS: :il sistemacercheràle librerie richiestedall’applicazionenelleduediversedirectory.

2.3.10 CLI

La CLI è l’interfacciaa linea di comandodi Amiga, uno dei duemezzi forniti per interagirecolsistema.Perimpartireun comandobisognadigitarneil nomeseguito dagli eventuali parametri. Inomi dei comandi,la loro sintassie i nomi dei loro parametrisonosimili a quelli degli altri siste-mi operativi, ma non seguono con precisionenessunodegli standardstabiliti; ad esempioesisteilcomandodir per la visualizzazionedell’elencodei file contenutiin unadirectory, ma i parametrichene cambianoil comportamentosonoparoledi sensocompiuto(“ALL” per una lista ricorsivadei file a partireda unadeterminatadirectory, “FILES ” per averel’elenco dei soli file, ecc...) chevannocollocatedopoil nomedelladirectorydi cui visualizzareil contenuto.E’ possibile avereunelencosintenticodeiparametridi uncomandomettendoil carattere“?” comeparametro:dopoavermostratoquestoaiutoil comandononterminamarimanein attesachel’utentespecifichii parametricheintendeutilizzareepremail tastoReturn.Un’altracaratteristicaparticolareèche,apartiredallaversione2.0 del Kickstart,nonc’è bisognodi usareil comando“cd ” per il cambiodelladirectorycorrente,ancheseil comandoesiste:bastaindicareil nomedelladirectoryin cui ci si vuolespostare,comesefosseil nomedi uncomando.

Ho dettochela directoryin cui vannocollocatii comandidellaCLI èquellaassegnataaC: : tuttii comandielementaridel CLI, comead esempiocd o quelli chehannosensosolo seusati in unoscript(comeif , else , lab ; vd. par. 2.3.11)nonsonofisicamentein C: , maresidentinellamemoriaROM del Kickstart. E’ possibile rendereresidentiin RAM altri comandi,attraversoil comandoresident , a pattochesianoscritti in codicerientrantee abbianol’attributo pure: tutti i comandidi sistemahannoquestecaratteristiche.Il comandoresidenthasensoin queisistemi chenonsianodotatidi hard-disk;l’invocazionedi uncomandononresidenterichiederebbela presenzadelvolumecontententeC: in unodei floppy driver, e questopuòesserescomodoe comportaregrandiperditedi tempoper lo scambiodei dischetti; rendendoresidentii comandidi usopiù comune,comedir ocopy, essivengono automaticamentecollocatiin RAM (nonnelvolumeRAM:, infatti dir nonriporta

24

Page 25: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

la presenzadeicomandiresiresidentinelfilesystemdi RAM:) ela loro esecuzionenonnecessitadellapresenzadeldiscodi sistema neldriver.

La CLI supportala redirezionedell’outputdei comandisufile e device, utilizzandoil carattere“>”. Ad esempio,scrivendo:

echo “Hello World” >PRT:

si ottienela stampadellastringatra gli apici. Redirigerel’output di un comandoal device virtualeNIL: fa in modochenessunoutputvengavisualizzato.

2.3.11 Script

In Amigaesistonoduetipi di script. Il primotipodi scriptèfondamentalmenteunfile di testoASCII,di cui è statoattivato il bit di protezione“script”, contenenteunaseriedi comandiAmigaDOScheuna CLI esegue in sequenza;uno script può però essereresopiù complessocon i comandiif ,else , lab , skip e altri, chepermettonol’inserimentodi salti condizionatie loop. La complessitàraggiungibile dagli script Amiga non è paragonabilea quelladelle potentissimeshell Unix comeBasho Csh,ècomunquesuperioreaquelladeifile batchdi MS-DOS,edèsufficientepergli utilizzipiù comuni.

L’altro tipo di scriptèARexx, la versioneAmigadi REXX, un linguaggiodi scriptingsviluppatoda IBM. Uno script ARexx è in gradodi pilotare le applicazioniAmiga predisposte, automatiz-zandonel’utili zzo per svolgereoperazionicomplessee ripetitive. L’interpreteARexx, inclusonelWorkbench,nonvienecaricatoin memoriadi default,mapuòessereinizializzatoin ognimomento.

2.3.12 Intuition

Intuition è la partedelsistemaoperativo Amigachesi occupadellagestionedell’interfaccia grafica.Intuition èunclassicosistemaafinestrecomandatodaunpuntatoremosso dalmouse;neldescri-

vernele funzionalitàdopernoti gli elementitipici di ogni interfacciagraficaepongol’attenzioneinparticolaresuisuoielementicaratteristici.

Attraversola libreria intuition.library vengono messea disposizione del sistemae delle appli-cazioniunaseriedi oggettiprefabbricaticoncui costruireun’interfacciaconl’utenteuniformee difacile utilizzo. Ogni programmaha unao più finestrenelle quali sonocollocati gli elementidel-l’interfaccia,comepulsanti,barredi scorrimentoe checkbox,chenel gergo Amiga sonochiamatigadget. In ogni momentoc’è unaed unasolafinestraattiva, cheè quellachericeve gli input datastiera:la finestraattiva si distinguedallealtreper il coloredel bordoe dellabarradel titolo; unafinestrasi attiva facendoclic al suointernocol mouse.E’ danotareche,al contrariodi quantosuc-cedenellepiù famoseinterfaccea finestre,comeWindows, MacOSo KDE, la finestraattiva nonènecessariamentein primo piano,puòinveceesserecopertadaaltrefinestre,e cliccarneunaparzial-mentecopertala attivamanonla portain primopiano.Perportareunafinestrain primopianoc’è unappositogadget,chevienedaalcuni chiamato“multitaskinggadget” (il nomecorrettoè gadget diprofondità), collocatosullapartedestradellabarradeltitolo accantoal pulsantedi ridimensionamen-to, chealternale dimensioni dellafinestratra dueimpostazionipredefinite;il pulsantedi chiusuradellefinestresi trova invecesullapartesinistradellabarradel titolo.

L’areachecontienetuttele finestreèasuavoltaunaparticolarefinestradettaschermo, chehaledimensioni dell’interaareavisibile e nonè ridimensionabile.La barradel titolo è utilizzatadi voltain volta comebarradi statodel programmacheha la finestraattiva. UnacaratteristicapeculiarediIntuition èchein ognimomentopossonoessereapertipiù schermi,ciascunoconla propriarisoluzio-ne,profonditàdeipixel epalette;èpossibile passaredaunoschermoall’altro usandoil multitasking

25

Page 26: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

gadgetpostosullabarradel titolo, è inoltre possibile trascinare la barradel titolo di unoschermoperabbassarloemostrare lo schermosottostante. Unoschermopuòin teoriaessereanchepiù gran-dedell’areaeffettivamentevisibile adunadatarisoluzione;adesempiounoschermopuòessereinrisoluzione640x256, maaveredimensioni di 1000x1000 pixel, sesi disponedi sufficientememoriaChip: per raggiungerele areenonvisibili bastaspostareil puntatoredel mouse sui bordi dell’areavisualizzatain quelmomento,perfare“scrollare” lo schermo.

Intuition: a sinistra, tre schermi di diverse risoluzioni sovrapposti;

a destra, una vista d’insieme delle possibilità di Intuition

Il mouse dei sistemiAmiga ha duepulsanti: quello sinistrosi usaper “f are clic”, quindi perattivare gli elementidell’interfaccia, ridimensionarele finestree trascinarele icone,con le stessemodalitàdi tutte le più famoseinterfaccegrafiche.Premendoe tenendopremutoil tastodestrodelmouseinvece,la barradel titolo dello schermoin cui risiedela finestraattiva cambiacontenutoemostrale intestazionidei menua tendinadel programmaattivo; perscorrereil contenutodei menueselezionareuncomandobisognaportareil puntatoresulleintestazioni, sempretenendopremutoiltastodestro.Una volta posizionatoil puntatoresul comandodesiderato,rilasciandoil tastodestrodelmouseessovieneeseguito.

Oltre a quelli di finestree gadget,Intuition disponedelle primitive di strutturepiù complesse,chiamateAutorequest: utilizzandounasolafunzionedell’intuition.library è possibile invocarefine-stredi dialogoe per la selezionedi un file, con un vantaggiosia per il programmatore,chetrovaquestestrutture giàpronteenondevecostruirseledasolo,eperl’utente,cheritrova in molti diversiprogrammila stessainterfacciaalleoperazionipiù comuni.

2.3.13 Workbench

Il Workbenchè il file-managerdi Amiga, cheforniscel’accessoa tutte le suefunzioni, sfruttandoappienole possibilità di Intuition. Lo schermodel Workbenchcontienele icone di tutti i volumi,fisici e virtuali, chesonomontati nel sistema.Il menucontieneunaseriedi comandiperagiresullefinestre,sulleiconeesullerisorsedaesserappresentate.

Le iconesi selezionanoconunclic delmouseesi attivanoconundoppioclic. Attivandol’iconadi unvolumesiapreunafinestrachenemostrail contenuto.Al contrariodi quantosuccedeconi file-managerpiù famosi,comeExplorer, non tutti i file presentiin unadirectoryvengono mostratinellarelativafinestra;di unadirectoryo di un file vienevisualizzatal’icona solosenellastessadirectoryin cui si trova l’oggetto esisteun altro file, con lo stessonomepiù l’estensione “ .info ” finale. Ifile .info sonofile specialichecontengonole informazionisulla forma dell’icona e sul mododiattivazione del file a cui sonoassociati. Per avere l’elenco completodei file in una directory, eperpoterli manipolare,bisognausarela CLI o, in alternativa,selezionareun appositocomandodal

26

Page 27: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

menudelWorkbench,chelo forzaamostraretutti i file, usandoun’iconastandardperquelli chenonhannoun file .info . Non esisteun comandopercreareun file .info perun file chenonl’ha già:in generele .info di file contenentidativengonocreatedalleapplicazionicheproduconoqueidati;altrimenti, quellochesi puòfareècopiareunfile .info giàesistente,dandogliil nomedellarisorsaallaqualesi vuoleassegnarel’icona.

Un menupermettedi agire sulle icone, copiandole,cancellandole,cambiandoneil nome. Ilcomando“Showinformations” (o “ Informazioni” nella versioneitaliana)mostraappuntole infor-mazionisuun file: il nome,le dimensioni, i flag di protezione.Le informazionisulle iconedi filenon eseguibili comprendonoancheun campocon il programma associato, ovvero il programmachevieneeseguito quandol’icona vieneattivata, e cheserve peraccederealle informazioniconte-nutenel file. Quindi non è l’estensionea determinarequaleprogrammautilizzareper leggereundeterminatofile, comeaccadein Windows, e nemmenoun meccanismocomeil Magic di Linux;l’associazioneavvieneseparatamenteper ciascunfile: diversi file dello stessotipo possonoessereassociatia programmidiversi. Tra le informazionic’è inoltre unalista di parametrichecambianoil comportamentocheil sistemaassumeall’attivazione dell’icona: svolgonola stessafunzionedeiparametriperi comandiimpartiti dacommand-line.

Intuitionsupportail drag-and-dropequinditrascinarele iconein puntiparticolaridell’interfacciahauneffetto: adesempiotrascinarele iconedi file daunafinestraadun’altradelWorkbench,o soprale iconedi volumi o directoryprovocala loro copianelladestinazione,mentreportarel’icona di unfile di dati sull’iconadi unprogrammaprovocal’aperturadel file dapartedelprogramma.

NonesistenelWorkbenchunequivalentedellaStartbardi Windows9x, o delmenu“Mela” delMacOS;l’unico sistemaper lanciareun’applicazioneè quellodi aprireil volumechela contieneeandarnea cercarel’icona tra le directory. In realtàsin dalleprimeversioni del Workbenchesisteunmenuchiamato“Tools” (o “Strumenti” seil Workbenchèlocalizzatoin italiano)cheavrebbepropriola funzionedellaStartbar, maconil sistemanonèmaistatofornito alcunprogrammaperaggiungerecomandia questomenu;bisognautilizzareprogrammiprodottidaterzi perpoteraggiungervidellevoci.

La configurazionedi tutti gli aspettidel sistemaavvienepervia graficaattraversoi programmi“Preferences”,contenutinelladirectorySYS:Prefs;la loro funzioneèmoltosimileaquelladelleap-plicazionidelPannellodi controllodi Windows: ogniprogrammaserveaconfigurareunparticolareaspettodel sistema,dallastampanteallaportaserialeal comportamentodi mousee tastiera.

A partiredallaversione2.1 il Workbenchingloba un sistemadi aiuto in linea ipertestualechia-mato“AmigaGuide”; ognifile di guidaèununicofile ASCII checontieneil testocondegli apposititagchedistinguonole variesezioni;alcuneparoledel testo,indicateda tag,appaiononel visualiz-zatorecomepulsantichecliccati portanoalla corrispondente sezionenellaguida;nel testopossonoessereinglobatianchefile di immagine,in modosimilea quantoprevisto dall’HTML.

2.3.14 Datatype

Un’ulteriore interessantecaratteristicadel sistemaoperativo Amiga, introdotta col Kickstart 3.1,è costituita dai Datatype; essipossonoessereparagonatiai “plug-in” dei browserpiù sofisticati,NetscapeedExplorer, con la differenzachele loro funzionalità vengonofornite nonadun singoloprogramma,mapotenzialmentea tutte le applicazioniAmiga: si trattainfatti di moduli chevannocollocatiin un’appositadirectorycontenutain DEVS: echefornisconoai programmicompatibili conquestafeaturelapossibilità di leggereescriverei piùdisparatiformatidi file. Unesempioapplicativoè datodal tool Multiview, compresonel Workbench3.1: si trattadi un visualizzatoreuniversale, ingradodi apriree mostrare ogni file il cui formatosia descrittoin uno dei Datatypeinstallati nelsistema.Ad esempio,insieme col Workbench3.1sonoforniti Datatypeper il formatoAmigaGuide

27

Page 28: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

e per i file immagine IFF ILBM, masuInternet(adesempionell’archivio Aminet) sonodisponibiliDatatypeperJPEG, GIF, PostScript, Rich Text ecc...La solaaggiuntadi questifile estendeperciòle capacitàdi Multiview edi tutti i programmiscritti perutilizzarela datatype.library.

3 UAE

3.1 Il sistema “ospite”

Il sistema utilizzatodurantele proveèunPCIBM compatibile chemonta il seguentehardware:

� SchedamadreATX conchipsetSiS735

� ProcessoreAMD Duron700

� 128MB di RAM a 133MHz

� SchedavideoS3-Trio

� SchedaaudioSoundBlasterPCI128

Il sistemaoperativo usatoè Linux, installato dalladistribuzioneRed-Hat7.1,conkernel2.4.2-2.IlsistemavieneutilizzatomedianteinterfacciagraficaKDE 2, in unoschermoconrisoluzione1024x768a 64000colori. La partizionedi swapèdi 512MB.

3.1.1 Il sistemadi confronto

Pertestarel’efficaciadell’emulazione,UAE è statoconfrontatoconun sistemareale,un A500 conKickstart2.0,512KB di ChipRAM e1.5MB di FastRAM.

3.2 Installazione

La formapreferitaper la distribuzionedelleultime versionidi UAE è quelladi tar-ball contenenteil codicesorgente. L’installazione consistequindi nella compilazionedei sorgenti, cheavvieneinmodoautomaticograzieai classiciscriptdi autoconfigurazioneforniti nell’archivio.

Entrandonel dettaglio,i passidaseguireperaveresul propriosistemaun’installazionedi UAEfunzionantesono:

Scaricare l’archivio più recentedal sitodi UAE, all’indirizzo http://www.freiburg.linux.de/~uae/;

“Scompattare” l’archivio in unadirectoryopportuna(/usr/src è la sceltapiù logica);

Farecd nelladirectoryin cui è statoscompattatol’archivio;

Lanciare, con i privilegi di root, lo script di auto-configurazionedel processodi compilazione,usando:./confi gureSenelsistemasonopresentituttele librerienecessarieedovviamenteil compilatoreC adatto,il processodi autoconfigurazionevieneportatoa termineconsuccessoin pochisecondi.

Lanciare lo scriptdi compilazionedandoil comando:makeAl terminedellacompilazionenelladirectorycorrentesi troverà il file eseguibile “uae”.

28

Page 29: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Copiare o linkare il file in unadirectoryopportuna(/usr/X11R6 /bin/uae è la directoryda mescelta).

Da questomomento in poi i privilegi di root non sonopiù necessari.In realtàè necessarioessereroot perpotersfruttarele librerie grafichecheconsentonoil funzionamentodell’emulatore a pienoschermo,ma ricordandoil principio del minimo privilegio ed il fatto chestiamousandoun soft-warein versionesperimentalee quindi potenzialmenteinstabile,è convenienterinunciarea questacaratteristicaedeseguireil programmacomenormaleutente.

3.2.1 Versioni del software

Ogniversionedi UAE ècaratterizzatadaunnumerodi versione,compostodatrenumeriseparatidaunpunto.Il primonumeroè0, adindicarecheil programma,sebbenegià funzionanteedutilizzabi-le, èancoradaconsiderarsinellafasebetadellosviluppo,perciònoncompletamenteaffidabileenonadattoadutilizzatori inesperti;il secondonumeroindicachela versioneèstabile(stable) seil nume-ro è dispari,e sperimentale(development) seil numeroè pari; l’ultim o numerovieneincrementatoadogniversionedel softwarepubblicata.

Al momentoin cui scrivo la versione stabilepiù recentedi UAE è la 0.7.6,mentrequellaspe-rimentaleè la 0.8.20. Nella home-pagedel programmae in tutti i file di documentazionevienecomunquespecificatochiaramentechein realtàle ultimerevisiondellaversione0.8sonopiù stabilie meglio funzionantidellaversione0.7.6,e sonoperciòin ogni casopreferibili a quest’ultima. Laversioneusatanelleproveèperciòla 0.8.20.

3.2.2 Modalità alternativedi installazione

In alternativa all’archivio di codicesorgente,è possibile scaricaredalla home-pageil softwaregiàcompilato,in unnormalearchivio gzipo in pacchettoRPM. In questicasiperòlaversionedisponibileper il downloadnon è la più recente;inoltre non vieneinclusala documentazionedell’emulatore,indispensabileperl’utilizzo delprogramma.

3.3 Hardware realeecontroparti emulate

3.3.1 Kickstart efloppy-disk

I sistemiAmigaoriginali leggono il KickstartdaunaROM collocatasullaschedamadre,edil soft-waredadischettiin formato3,5pollici attraversoil lettoredi dischetti.I dischettisononormalissimifloppy-disk da3.5pollici del tipo DS-DD (DoubleSided- DoubleDensity),mail file systemusatoli rendeassolutamente illeggibili dalleunitàadiscoconcui sonoequipaggiati gli odierniPC,amenodi utilizzarehardwareparticolare.Questoperchèi dischettiin formatoMS-DOSsonoformattatiinunasuddivisionea tracceo cilindri, a loro volta divisi in settori,e tra i settorivienelasciatoun gapnonutilizzatoper la memorizzazione;i dischi in formatoAmigaDOShanno80 cilindri mai settoriin cui sonosuddivisi sonocontigui,equestoli rendeilleggibili perchèi controllerdelleunitàadiscodeiPCnonprevedonounsimile formato.E’ invecepossibileleggerei dischettiin formatoMS-DOSdall’Amiga, utilizzandol’appositodevice “CrossDOS” presentedallaversione 2.1 del Workbench,oppuresoftwareprodotto daterzeparti perle versioniprecedenti.

Non potendoleggereil softwareAmiga direttamentedai dischetti originali, l’emulatoreleggedelleimmaginideidischetti, riprodottein file in formatoADF. Un appositoprogrammaAmigaDOSinclusonell’archivio di UAE (transdisk) permettela produzione di questifile a partiredai dischettioriginali. I file ADF cosìprodotti possono esserepoi trasferiti su PC o per mezzodi dischettiin

29

Page 30: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

formatoMS-DOS,oppureattraversouncollegamentonull-modemserialeo concavo Lap-Link; nelprimo casobisognerà“splittare” ogni file ADF in dueparti, visto cheogni dischettoAmiga haunacapienzadi 880 KB e i file ADF, essendodelle immagini, hannoesattamentequestedimensioni,perciò non entranosui dischettiMS-DOS da 720 KB, gli unici che Amiga riescaa leggere;nelsecondocasooccorreprocurarsidelsoftwareapposito,e trasferirlosuAmiga.

I file ADF sonoperòperfettamenteinutili senonsi disponedel contenutodelleROM del Kick-start. Perottenerequestidati vienefornito il programmatransdos; i file prodotti potrannoesseretrasferiti sul PC con le stessemodalitàdei file ADF, con il vantaggioche le ROM Amiga hannounacapienzadi 512 KB, e perciòle loro immagini trovanopostoin un solo dischettoMS-DOSabassadensità.Un’alternativa è l’acquistodi un CD-Romchiamato“AmigaForever”, prodottodaCloanto, cheincludeappuntoi file immaginedelleROM, oltreadalcuniemulatori,UAE compreso,e unacospicuadotazionedi software. Procurarsile immagini delle ROM in qualsiasialtro modo,adesempioscaricandoleda Internet,è un’azioneillegale,perchèil softwarecontenutonelleROMè ancorasottocopyright e,persceltadellaAmiga Inc., detentriceattualedei diritti, soloCloantohadiritto di distribuirlo. Ovviamentenonè impossibile trovarecomunquequestifile in Rete!

Lo stessodiscorsovarrebbenaturalmenteper il softwarevero e proprio, ma in questocasoèpossibile trovare un gran numerodi programmi,in particolarevideogiochi,che gli autori hannoconsentitodi distribuire liberamente.Emblematico è il casodella softwarehouse“Factor 5”, cheesordìnel 1987proprioconunaseriedi giochi perAmiga, e cheoggi è ancoraattiva conprodottiper PC e per le consolepiù diffuse. Factor 5 nella propria home-pagerendedisponibili per loscaricamentoalcunidei propri giochi classici,aggiungendoun esplicitoringraziamentoagli autoridi UAE, checonquestoemulatoremantengonovive le radici di questastoricasoftware-house.

3.3.2 Hard-disk

UAE emulagli hard-diskdi Amiga in duediversimodi.Il primo modoè l’hardfile, un file immaginedi un filesystemoriginaleAmiga; essovieneletto

permezzodi un device appositamentescritto,chiamatouaehf.device. E’ concepitoperpermettereagli utilizzatoridi sistemiAmigaconhard-diskdi “trapiantare”il propriosistemasuunPCconUAEsemplicementecreandoneun’immaginefisicae trasferendolasull’hard-disk delPC.In questomodosi conserva la strutturadellatabelladellepartizionie del filesystemcongli attributi dei singoli file.E’ comunquepossibile creareda zeroun file di dimensioniopportune da usarecomehardfile,adesempioconil comando:

$ dd if=/dev/ zero of=hardfile bs=512 count=64 k

In questomodosi creaunfile di 32MB (65536blocchida512bytes)di tutti zero,di nomeappunto“hardfile”. Bisognapoi impostareUAE per riconoscereil file comehard-disk,indicandone oppor-tunamentela geometria,specificandoneil numerodi tracce,di testinee la dimensione dei singoliblocchi. Nel casodi un hardfilecreatocomeimmaginedi un hard-diskAmiga, scegliendo corret-tamentei parametridellageometriaessopotràlessereletto daUAE. Nel casodi un hardfilecreatoad-hoc,qualunquegeometriaandràbene,ma scegliere unadimensione dei blocchi troppograndeportaad un accessopiù lento al discovirtuale e un maggiorsprecodi spazio. Nel mio casohoutilizzatola seguente impostazione:

hardfile =rw,32,1,2 ,1024,path/ dell/hardf ile

chesignificacheil file hardfilevienevisto comeun hard-disknonprotettodallascrittura(rw), con32 tracce,unatestina,dueblocchiriservati eunadimensionedeiblocchidi 1024bytes.

30

Page 31: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

A questopuntoall’interno dell’emulatore l’hardfile si gestiscecomeun normalehard-disk;uti-lizzandole utility di sistemadell’AmigaDOSsi procedealla formattazionedel disco, dopodichèdiventa utilizzabile per copiarvi dati ed installarvi applicazioni. Da Linux, se il kernel, versionealmeno2.0.5,è statocompilato in modoopportunoe seè presenteil relativo modulo,è possibilemontarel’hardfile comefilesystemAmiga(sottoLinux vieneindicatocol nome“AFFS”, AmigaFa-st File System) in modalità loop, e in questomodoaccedereai file contenutinell’hard-diskvirtualeanchesenzalanciarel’emulatore.Il comandodadarepuòessere:

# mount path/dell/ hardfile /mnt/mo untpoint -t affs -o loop

Il secondomodoperemulareun hard-diskin UAE è quellodi indicareall’emulatoreunadirectorydel propriofilesystem,dautilizzarecomehard-diskvirtuale. In praticala directoryvienecondivisatra il sistemaoperativo ospitee quello emulato. Questosecondomodooffre alcuni vantaggisuquello cheusal’hardfile: non vienesprecatospaziosul disco,mentrecon la modalità hardfile lospaziovisto comelibero daAmiga è comunque occupatosul filesystemospite. Inoltre, entrambiisistemipossonoaccedervidirettamente,e questoè un vantaggio nel casosi abbianofile sul propriodiscochesi vuole far vedereall’emulatore:bastacopiarei file nelladirectoryprescelta.Infine, lagestionedell’hardfile un UAE presentaalcuni bug noti: nella documentazionedel programmasiconsigliaesplicitamentedi utilizzarel’emulazionedell’hard-diskdafilesystemin ognicaso.Unodiquestibugèstatoincontratodurantele proveedhaportatoa risultati spiacevoli.

PerchèUAE possavedereunadirectorydelpropriosistema comevolumeedaccedervi,bisognaindicargli il pathdelladirectoryed il nomecheessoassumeràper l’Amiga. L’impostazionedameusataè:

filesyst em=rw,Linu x:/home/mac man/amiga/ amigafs/

L’interfacciadi UAE offre la possibilità di aggiungerenuove directoryall’elencodei volumi vistidall’Amiga emulato,senzadoverriavviarel’emulatore;unnuovo filesystemnonverràperòvistodalsistemasenondopoun reset.

3.3.3 Monitor

Una finestrasullo schermodi X fa le veci del monitor dell’Amiga emulato. Facendopartire ilprogrammacoi privilegi di root e impostandoun’apposita opzionesarebbepossibile visualizzarelafinestradi UAE a pienoschermo,maapartei rischi chel’utilizzo di un’applicazionenellafasebetadello sviluppo con i privilegi di root comportanoper l’integrità del propriosistema,un tentativo diutilizzarequestapossibilità effettuatodurantele prove ha datoesitonegativo. In realtàdel pienoschermononsi avverteil bisogno;adunarisoluzionedelloschermodi 1024x768pixel, la finestradiUAE è abbastanzagrandedapermettereunavisionechiaradell’output graficodell’Amiga emulato,maancheabbastanzapiccolodalasciareundiscretospazio“di manovra” peroperareconla GUI delprogramma,maancheconle altreapplicazionidi Linux.

La finestradi UAE comprendenella parteinferiore unaseriedi cinque“led” virtuali, ovveropiccoli rettangolichedurantel’uso del programmapossono assumereduesfumature di colore,unapiù scuraedunapiù intensa,“simulando” il comportamentodi ledluminosi: quattro,di coloreverde,mostranoin ogniistantela posizionedelletestinedeifloppy-diskdriver virtuali, medianteunnumeroda0 a79,esi “illumi nano”quandoil loro motore è in funzione;l’ultim o, di colorerosso,riproduceil comportamentodel ledchesull’Amigarealeindicacheil sistemaèalimentato.

31

Page 32: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

3.3.4 Mousee joystick

Gli Amigarealihannodueportedi comunicazionea9 pin denominaterispettivamente“joyport0” e“joyport1”, ededicateallaconnessione delmouseo di joystick.

Il mouseè unaperifericafondamentaleper l’utili zzo di Amiga. Comefunzionamento essoèidenticoadun qualunquemousea duetastiperPC:UAE utilizza perciòil mousedel PCperemu-lare il mouse Amiga. UAE perLinux funziona,comevisto nel paragrafo3.3.3,mostrandol’outputgraficoin finestra,perciòduranteil funzionamentodell’emulatorei puntatoridelmousevisualizzatisonodue: unoè quellodel server graficodi Linux, X, l’altro è quelloemulatodell’Amiga. Questasituazionepuòportarea disorientamento e difficoltà di utilizzo del sistema emulato:il movimentodel mouse nonvienerilevatodaUAE seil puntatoredi X è fuori dallasuafinestra;d’altro cantoiduepuntatori del mousepossonoaverevelocitàdiversee quindi percorreredistanzein corrispon-denzadellostessomovimentodelmouse.PerciòUAE offre la possibilità di bloccareil puntatoredelmouseall’interno della finestradell’emulatore e di nascondereil puntatoredi X lasciandoin vistasolo quello emulato;tale funzioneè accessibilecon la combinazione di tasti F12+’g’. Si trattadiunacombinazionevolutamente“originale”: l’autore di UAE ha voluto essercertocheessanon sisovrapponesse adalcunacombinazionedi tastivalida neiprogrammiemulati,conrisultati impreve-dibili . In questomodononsi correalcunrischio,visto chele tastiereAmiga hannosolodieci tastifunzione.La stessacombinazionedi tastisbloccail puntatore,restituendo quellodi X, adesempioperagiresullaGUI dell’emulatore.

Il joystick non è altrettantoindispensabile,ma ovviamenteè utile nel casosi voglia utilizzareUAE pergiocare;la stragrandemaggioranzadei videogiochirichiedeinfatti un joystick digitalea 4direzionieunpulsantedi sparo,connessoalla joyport1. UAE offre la possibilità di utilizzareunjoy-stick realeo di emularloutilizzandoalcunitastidellatastiera.Allo scoposonomolto comodii tasticursore,main questocasola loro funzionesi sovrapporrebbeaquelladei tasticursoredellatastieraAmigaemulata;perciòUAE offre duealternative. Comunquesiain ognimomentoattraversola GUIè possibile modificarele impostazioniriguardantii joystick in ognimomento durantel’emulazione.ComeextraUAE offre unafunzionedi “autofire”, chequandoattivato premee rilasciavelocementeil pulsantedi sparodel joystickvirtuale:èunafunzionechetrovala suautilità in alcunivideogiochi.

3.3.5 Sonoro

Il sonorodell’Amigaemulatovienenaturalmenteriprodottodallaschedaaudiodelsistema,passan-do attraversoil server audioe il device /dev/dsp . Anche le più umili tra le schedesonoreoggidisponibili (la SoundBlastercheequipaggiail mio sistema puòessereinseritain questacategoria)sonoin gradodi riprodurresenzaalcunproblemail sonoroa 8 bit stereodegli Amiga originali, apattocheil serveraudiodi Linux siafunzionanteecorrettamenteconfigurato.

3.4 Struttura e funzionamentodel programma

UAE è un programmaOpenSource e, comedettonel paragrafo3.2, la forma preferitaper la suadistribuzioneè il codicesorgente.Questoperòpurtroppononrendepiù facilecapirea fondocomefunzionainternamentequestoprogramma:comesenonbastassela suaintrinsecacomplessitàe l’in-tricatezzadei riferimenti incrociati tra i diversimoduli, inevitabili dovendoemulareun’architetturacosìsofisticata,il codiceè ancheassaipococommentatoe perciòdi difficile letturaperchi nonsiaunottimo conoscitoredell’hardwareAmiga. E’ comunquepossibile dedurrequalisonoi moduli piùimportanti edestrapolarnei principi di funzionamento.

32

Page 33: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Bisognainnanzituttodire cheil codiceè concepitoper favorirne la portabilità sullepiù diversepiattaformahardware, ed infatti esistonoversionidi UAE per Windows e MacOS,ma ancheperAlphae persinoperAmiga;quest’ultimaversioneè pensataperi modelli più recentidi questicom-puter, chenon montanoil chipsetoriginalee non possonoperciò far girare i vecchi videogiochinativamente. La ricercadella portabilità porta a volte a costruzioniinconsuete,un esempiopuòessereil seguente:

void start_pr ogram (void){

do_start_ program ();}

void leave_pr ogram (void){

do_leave_ program ();}

Il tentativo èquellodi mantenerequantopossibile unastrutturacoerentedelcodicetra i vari porting:le funzionido_start_p rogram() edo_leave_p rogram() esisterannoeavrannola stessaformaintuttele versioni,mentrestart_pr ogram() e leave_progr am() potrannoincludereall’occorrenzaaltrerighedi codice.

L’intentodellaportabilitàportaancheallo sforzodi scriverecodiceil più possibile indipendentedal sistemaoperativo sottostanteil programma.La versione perLinux fa esplicitoriferimentoallelibrerie del server graficoX11, chefornisconole primitive per la scritturadellagraficaa videomaancheper l’intercettazionedellapressionedei tastie dei movimenti del mouse,e a due includeedun modulo C, perla gestionedei joystick, scritteappositamente perquestosistemaoperativo; perilrestoutilizza librerie standarddell’ANSIC e altre librerie diffuse(ad esempioper la GUI e per lagestionedei file compressicongzip).

Il moduloprincipaleè main.c : le suefunzionisono:

� dichiarareunaseriedi costanticheverrannousatein tutto il restodel codice;

� effettuareil parsingdel file di configurazionee dellacommand-line per impostarele diverseopzioni;

� attivaregli altri moduli delprogramma(grafica,sonoro,emulazionedelprocessore,deifloppy-disk,delchipset);

� infine lanciarel’emulazione.

Al lancioil programmaesegue10000cicli avuotoemisurail tempoimpiegatodalsistemapercom-pletarli, usandoquestoparametrocomemisura approssimativa dellavelocità dellaCPU.In seguitovengonoattivati il sonoroe l’emulazionedei joystick, e costruite in memoriale strutturedel 68000edei chipcustom.A questopuntovieneavviatal’emulazioneveraepropria.

Il cuoredell’emulatoreèl’interpretedelcodicemacchinadel68000.Emulandoil comportamen-to delprocessorereale,l’interpreteeffettuail fetchdel codicecherisiedealla locazionedi memoriapuntatadal registroPC (ProgramCounter); il 68000èunprocessoreCISCe le sueistruzioni hannolunghezzediverse:è perciòspessonecessarioeffettuarepiù di un fetchperavereil comandocom-pletodaeseguire.L’istruzioneprelevatavienedisassemblata,ossiail codicemacchinavienetradottonel relativo opcodemnemonico: per far questoil codicevieneconfrontatocon una look-uptable,generataall’inizializzazionedelprogramma,checontienetuttele istruzioni del68k,in questaforma:

33

Page 34: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

0001 DDDd ddss sSSS:00:- NZ00:----- :12: MOVE.B s,d[!Areg ]0010 DDDd ddss sSSS:00:- ----:----- :12: MOVEA.L s,d[Areg ]

Unavolta ottenutol’opcodedell’istruzionedaeseguire,UAE eseguela relativa function tra quellecontenutenel modulocpuemu.c ; questasequenzava eseguita per ogni istruzionedel 68k, con unoverheadstimatodi ben35 cicli di clock peristruzioneeffettivamenteeseguita. Sesi considerachesuAmigagranpartedel lavoroèeffettivamentesvolto daichipcustom,questainformazionepuòfarprevedereprestazionidell’emulatore nonentusiasmanti, comein effetti risulteràdalleprove.

Dopoogniesecuzioneil programmacontrollasesonostatigeneratieventi, chevengonoposizio-nati in unacoda,e a qualeciclo di clock del processorevirtualedebbanoessereeseguiti; aggiornail contatoredei cicli di clock aggiungendoil numerodi cicli necessariper l’ulti ma esecuzione,econfrontail risultatocol tempoa cui devonoavveniregli eventi, decidendosegestirli o lasciarli incodapereseguire il successivo fetch. In questomodoavvienela sincronizzazionetra 68000e chipcustom.

Tutte le operazionihardwareavvengonoquandoil processoreaccedealle locazionidi memoriache corrispondono all’hardware stesso(I/O memorymapped). La memoria,gestitaattraversolefunzioni del modulo memory.c , vieneallocatada UAE in banchidi 64 KB, ciascunodei quali ècaratterizzatodapuntatoria funzioniperl’utili zzodelbancostesso:Perl’accessoadundeterminatobancoil programmautilizzaquestefunzioni: i banchichevirtualizzanola memoriaRAM potrannoessereaccedutidirettamentein letturae scrittura:quelli cheinvecerisiedonoagli indirizzi dei chipcustomo delleperiferichedi I/O genererannodegli eventi chel’emulatoreraccoglierànellapropriacodaegestiràin sequenza.

Le funzioni chegestisconoquestieventi, ovverocheeseguonoi compiti richiestidal processoreconl’accessoallarelativalocazionein memoria,risiedononeidiversimoduli di UAE: custom .c èilcolossalemodulocheriproducele operazionisvoltedai chipcustom; essevengonoeseguiteusandole funzionicontenutein disk.c perl’accessoai dischifloppy, exwin.c perquantoriguardale scrit-ture a video,oltre naturalmente ad altri moduli per la gestione dei restantiaspettidell’emulazione(hardfile,filesystem,suono,ecc...).xwin.c si occupaanchedellatraduzionedellapressionedei tastidellatastieradelPCnei relativi tastidellatastieraAmigaeneimovimentidei joystick.

UAE faunutilizzo limitatodei threadin spaziokerneldi Linux: il principalescopoè impedireilbloccodell’interaapplicazionealla richiestaal sistemaoperativo di I/O di periferiche,comei lettoridi CD-Rom. Al momento questafeatureè ancorain fasesperimentalee più cheapportarebeneficirallentail sistema,comeindicatoanchedall’autorenelladocumentazione.

3.4.1 JIT

Il fattodi essereOpenSourceportagrandibeneficial progettoUAE: chiunquesiain gradodi com-prendereapprofonditamente il funzionamentodel codice,e conoscaperfettamentel’hardwareAmi-ga,è liberodi apportaremiglioramential programma,apattochespediscale patchall’autoreperchèle rendadisponibili pertutti. Nelle intestazioni dei vari moduli sonoindicatinumerosicollaboratoriperi diversi aspettidel programma.

Unodeimiglioramentipiù interessantistanelJust In Time compiler (JIT), cheintendeovviareai problemidi performancedell’emulatore.L’emulatorestandardeseguein sequenzae“ciecamente”il codicemacchina:per il principio di località essosi troverà,con molta probabilità, a ripeterelestessebrevi porzionidi codicemolte volte, e perogni passaggiodovrà ripetereinteramentetutte leoperazionidi fetchedinterpretazioneprimadi eseguireeffettivamentei comandi.

Il principio del JIT è invecequello di scansireil codicemacchinae riconoscerele porzioni(chiamateblocchi) cheverrannoeseguite a ripetizione. Il riconoscimento avviene identificandoi

34

Page 35: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

comandidi salto,condizionatoo incondizionato,all’indietro nellasequenzadi opcodes.Ad esempiosi puòosservarela seguenteporzione:

mov.l 0x42000000, A0loop: mov.l (A1+),(A0+)

cmp.l 0x42010000, A0bne loop

In essasi trovaun saltocondizionato,comandatodall’istruzionebne , all’indietro, alla riga identifi-catadallalabel loop . E’ perciòpiuttostofacilericonoscere,anchein modoautomatico,nelleultimetre righedi codiceunblocco,cheverràripetutodiversevolte.

Con l’emulazionestandardogni loop del bloccocomporterebbeapprossimativamente105ciclidi clockdelprocessoreospite;di questiunabuonapercentualeèutilizzataperil riconoscimentodel-l’istruzione,nonperl’esecuzione.Il JIT invecericonosceil blocco,e interpretain unsolopassaggioi tre comandichelo compongono,mettendoil risultantecodiceper la macchinaospite in unapartedellamemoriachefungedacache.A questopuntoèquestocodicein formanativaperil processoreospitechevieneeseguito; l’overheadcausatodal riconoscimento del bloccoè ampiamenteassorbi-to dal considerevole risparmiosui cicli utilizzati per eseguire il bloccostesso.Con un’opportunagestionedellacachedel codicetradottoè possibile conservarei blocchipiù recentementeutilizzati,facendoaffidamentoancorasulprincipiodi località,chegarantiscecheconunacertaprobabilità taliblocchiverrannoriutili zzati.

Il JIT perUAE è in statoancoraprimitivo, infatti è statoimpossibile far funzionareunaversio-ne dell’emulatore (0.8.15)comprendentela patchcheimplementail JIT. L’autoredi UAE non haancoraincluso il JIT nella distribuzioneufficiale, proprio per questomotivo. Comunque,la ver-sioneattualmente disponibile del portingperWindows di UAE è dotatodi unaversionerivedutaecorrettadel JIT cheè possibile utilizzare. Alcune prove hannorivelato l’immaturitàdel JIT, cherisultaincompatibile conla maggiorpartedel softwareAmiga, correttamenteeseguitodallaversio-nestandarddi UAE; le applicazioniCPU-intensivechefunzionanohannoperòmostratounenormeincrementonellavelocitàdi esecuzione.La differenzadi prestazionitra le dueversionidi UAE, conesenzaJIT, è invecemoltomenoevidenteneiprogrammicheutilizzanointensamentei chipcustom:l’emulazionedelle funzioni da essisvolte non traebeneficidal JIT, per cui rimangonoun collo dibottiglia.

3.5 File di configurazione

Un programmadi talecomplessitàhaovviamenteungrannumerodi opzionieparametridaregolareperadattareil softwareal propriosistemae farlo funzionareal meglio.

Comecomportamentodi defaultUAE leggei parametridi funzionamentodalfile $HOME/.uaerc ,il cui formatoèmoltosemplice:perogni rigaè indicataun’impostazione,conla sintassi:

parametro= valoreAlcuni di questiparametripossonoesserecambiatiancheutilizzandola GUI del programma,

ma altri sonoimpostabili solo attraversoil file di configurazionee vannoperciòspecificatiprimadell’avvio delprogramma.I più importanti sonoriportati in questatabella:

Parametro Descrizione Valoreutilizzato

config_description E’ una semplice descrizione del file diconfigurazione

UAE default configura-tion

35

Page 36: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Parametro Descrizione Valoreutilizzatouse_gui Indica se si desiderausarela GUI. La GUI

è molto utile ed suo utilizzo non ha alcunacontroindicazione:perciòla attivo sempre.

yes

sound_output Il sonoropuòesseredisabilitato (none),attiva-to (normal),attivato conla massimaprecisione(max)einfinedisattivatomacalcolato.L’opzio-nenormalè adattaalla stragrandemaggioranzadeicasi.

normal

sound_channels Si può scegliere un suonomono, stereoo mi-xed,cherimediaal fastidiosoeffettodeidueca-nali audiocompletamenteindipendenti mixan-do parzialmentei duecanali,ma comportaunmaggiorpesoperil processore.

stereo

sound_bits Bit sonoriutilizzati perl’audio (8 o 16) 16sound_max_buff Buffer dedicatoal suono.Valori maggioricom-

portanounaminorprobabilitàdi avereunsono-ro a“scatti“, macomportanounlieveritardodelsuonostessorispettoal restodell’emulazione,avvertibile in particolareneigiochi.

4096

sound_frequency Frequenzadell’output sonoro. 44100sound_interpol Perunamaggiorepurezzadelsuonoèpossibile

utilizzareunaroutinedi interpolazione,chepe-rò comportaun maggiorcaricodel processore.Il suonoècomunquesoddisfacenteanchesenzainterpolazione.

none

joyport0 Indica qualeperifericadel PC verrà usatapersimularela perifericaconnessaalla porta0 del-l’Amiga. In generealla porta0 vieneconnessoil mouse.

mouse

joyport1 Indica qualeperifericadel PC verrà usatapersimularela perifericaconnessaalla porta1 del-l’Amiga. kbd1indicacheverrannousatii tastidel tastierinonumericodel PC per emulareunjoystick digitale.

kbd1

gfx_framerate L’emulatoremanterràunframerateparia1 frat-to il valoreindicato,rispettoadunAmigareale.Un valoredi 2 richiedeperciòunframerateparia1/2del frameratereale,cheèdi 50 frame/sec.

2

36

Page 37: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Parametro Descrizione Valoreutilizzatogfx_linemode Gli Amigareali alle risoluzioni noninterlaccia-

te traccianounarigavideoalternataadunariganera. Se gfx_linemodeè impostato a “scanli-ne“, UAE riproducequestoeffetto. Le alter-native sono“double“, cheraddoppiaogni rigaorizzontale,con un outputgraficomigliore maun caricodi lavoro doppioper il server grafico,oppure“none“, chenonlasciaalcunospaziotraunarigaorizzontaleel’altra col risultatodi ave-re unaschermataschiacciatain sensoverticale(moltobruttaavedersi).

scanline

gfx_colour_mode Permettedi impostarela profonditàdi coloredesiderataperla finestragrafica. Il valore“8bit“è in assolutola più veloceedèperciòconsiglia-ta. Altri valori possibili sono“16bit“, “32bit“,oppure “8bitdithered“ che effettua anche unditheringdell’output.

8bit

chipset Permettedi scegliereil chipsetdaemulare.So-no disponibili i tre chipsetAmiga, mal’A GA èimplementatoin unostatoancoraembrionaleerisultamolto lento.

ocs

collision_level Amiga implementa un meccanismohardwareche segnala quandoavvengonocollisioni traduespriteo tra spritee playfield. UAE imple-mentaquestomeccanismo,ma è piuttosto pe-santee rallentavisibilmente il sistema. L’op-zione“sprite“ limita la collision detectionallesolecollisioni tra sprite,cheè sufficienteper lamaggiorpartedeigiochi.

sprite

fastmem_size Dimensionein MB dellaFastMemorycheverrà“montata“sull’Amigaemulato.

4

chipmem_size DimensionedellaChip RAM dell’Amiga emu-lato. La memoriaemulatasaràpari a 512 KBper il valoreindicato. Perciòchipmem_size=2richiede1 MB di ChipRAM

2

cpu_speed Indicachevelocitàdovràavereil 68000emula-to, in rapportocol chipsetemulato.“max“ im-ponela massimavelocitàottenibilesul sistemaospite. Alcuni giochi peròrichiedonoper fun-zionareche l’emulatoreriproducaesattamentei timing dell’Amiga A500 o A2000. Questoparametropuòcomunqueesserevariatoal “vo-lo“, all’occorrenza,permezzodellaGUI duran-te l’emulazione,perciòlascioquestoparametrosu“max“

max

37

Page 38: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Parametro Descrizione Valoreutilizzatocpu_type Indica qualeprocessoredovrà essereemulato.

Processoripiù potenti non sarannopiù velo-ci, perchèil limite è determinatodallavelocitàdel sistema“ospite“; i processorisuccessivi al68000includono perònuovi opcodes.

68000

kbd_lang Indica il tipo di tastierachedovrà essereemu-lata.La tastieradegli Amigaèmoltosimile allacorrispondentetastieraperPCnellacollocazio-nedei tastitipici dellediversenazionalità.Con-vieneperciòper comodità settarequestopara-metroindicandola nazionalità del layout dellatastieradelproprioPC.

it

kickstart_rom_file E’ il pathal file checontieneil kickstart. UAEimplementaalcunebasilari funzioni per il ca-ricamentodel bootblock per gli ADF di dischinon DOS, ma allo statoin cui si trovanoessesonosufficienti solo per pochissimi dischi de-mo. Il kickstartè poi indispensabile sesi vuoleutilizzaredischiDOSedil sistema operativo.

<pathal file>

4 Prove

Pertestarel’efficaciae le prestazionidi UAE sonostateutilizzatetre tipologiedi software:

� Software applicativo: è statatestataunavastagammadi softwareapplicativo, con funzionichevannodal semplicemantenimentodel sistema operativo, al word-processing,al desktop-publishing, alla composizione di musica,fino ad arrivare al settorein cui i sistemiAmigasonostati per anni protagonisti, ossiala grafica,sia pittorica 2D che3D in ray-tracing. Inquestomodoè statacollaudatal’emulazionedel sistemaoperativo e l’implementazionedelleperiferichedi memorizzazione,ovveroi floppy-diskdriveregli hard-disk.

� Giochi: ho testatoun certonumerodi giochi nonsoloper “nostalgia”e divertimentoperso-nale,ma ancheperchèi videogiochiimpegnanol’hardwaredelle macchinepiù del softwareapplicativo, essendoprogrammichedevono gestirein real-timee in perfettacoordinazionegrafica,sonoroe i dispositivi di input per risultaregiocabili. Bisognapoi ammettereche igiochisonoanchepiù facilmentereperibili in reterispettoal softwareapplicativo;

� Demo: si trattadi programmiscritti da programmatoriAmiga al solo scopodi spingereallimite estremole possibilità della macchinae provareil propriovalorecome“coder”. Sonoprogrammiscritti per la maggiorpartedirettamente in assembler68k e non hannoalcunautilità concreta,maproduconoa videoanimazioniedeffetti speciali,comescrittecolorateesaltellanti, il classico“plasma”efigureanimatepseudo-3D.Proprioperchèspingonoal limitel’hardwaresucui sonostatescritte,questedemosonoi programmiidealipertestarel’efficacianell’emulazionedelchipsetdeisistemiAmiga.

38

Page 39: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

4.1 Softwareapplicativo

In generaleil softwareapplicativo è statoeseguito correttamenteda UAE. Solo un programmahamanifestatodeiproblemi,cheperòsi risolvonodasoli, senzamodificarealcunaimpostazione,dopoalcunisecondidi utilizzo.

Unanotainteressanteè datadal fattochenellerisoluzionidelloschermointerlacciatela finestradi UAE imita unoschermoad alta persistenza,eliminandoil fastidioso flicker della graficae con-sentendoperciòdi rendereutilizzabili questerisoluzioni. Non vieneinvecerisparmiatoall’utenteiltempodi attesadelcaricamentodeiprogrammidaidischetti:permotivi di compatibilitàUAE emulai movimenti della testinasullasuperficiedel dischetto,quindi i tempidi accessoai file ADF si av-vicinanoa quelli dei floppy-diskdriver reali, comedimostratonel paragrafo4.1.2.La seriedi “led”postinellaparteinferioredellafinestradi UAE, chemostranoin temporealelo statodeifloppy-diskdriver virtuali (vd. par. 3.3.3),permettonodi avereun riscontroimmediatodei movimenti delletestine;adesempiosi puònotareil movimentoavuotoattornoalle traccepiù vicinealla0, cheserveper l’auto-mounting dei floppy, oppureil fattochela primatraccialetta in un discoappenainseritoè quellaintermediadel supporto, dove risiedeil RootBlock(vd. par. 2.3.8),o ancorai seekdaunaparteall’altra dellasuperficiedi undiscomolto frammentato.

4.1.1 Software di sistema:Workbench 3.1

Il primosoftwaretestatoèstatonaturalmenteil Workbenche le utilità conessofornite.La versionedelWorkbenchsceltaperla provaèla 3.1,chetra le variefunzionihaunprogramma

perl’installazione delsistemasull’hard-disk, e la localizzazionedeimessaggiin italiano.Il primopassoèstatoquellodi creareunfile dautilizzarecomehard-diskvirtuale,percollaudare

questafunzionalità. Utilizzandola sintassiindicataanchenel paragrafo3.3.2ho prodottoun filevuotodi 32MB, e l’ho impostato comehard-diskprincipaledell’Amiga virtualedi UAE.

Ho poi effettuatoil bootdalle immagini dei dischidi sistema,ottenendodopoalcunisecondidicaricamentolo schermodelWorkbench.L’hardfileaquestopuntodelprocessovienevistodall’Ami-gaDOSe mostratosul WorkbenchcomevolumenonDOS,perchènoncontieneun RootBlock.Perrenderel’hardfile un volume validobisognaformattarlo,facendoclic sullasuaiconae scegliendoilcomando“Format” del menudi sistema.Unavolta sceltialcuniparametridel filesystemdacreare,l’operazionedi formattazioneverae propriarichiedepochisecondi;nonho mododi confrontareiltempoimpiegatoconil tempodi formattazionedi unhard-diskreale,mapensodi poterdireconunbuon gradodi sicurezzacheè decisamentepiù breve: al contrariodi quantoavvienecon i floppy,nonc’è motivo percui il programmadebbaemularei ritardi nell’accessoall’hard-disk.

A questopuntoè bastatoinserireil discocontenenteil programmadi installazioneed eseguir-lo facendodoppioclic sulla relativa icona,effettuareil cambiodei dischettinei floppy-disk driverquandorichiesto,eresettareil sistemaal terminedell’operazione,peraverein pochiminuti unWor-kbenchAmiga perfettamentefunzionante.Il bootdel sistema è praticamenteimmediato.Le utilitàdi sistema funzionanotuttesenzail minimo problema:solo le utilità per la gestionea bassolivellodell’hard-disk,cheserve perpartizionarei dischie ha funzioni di diagnostica,risultanoinutilizza-bili, perchèoperanosudischiSCSIcheutilizzino la scsi.device, mentrel’hardfile vienegestitoconunadevicecostruitaad-hocperl’emulatore,uaehf.device.

Anchela CLI funzionaperfettamente.E’ stataancheinstallataedutilizzatala device sostitutivadi CON:, KingCON, illustratanel paragrafo2.3.9. Anch’essaè statacorrettamenteeseguitadall’e-mulatore: anzi, le funzionalitàaggiuntealla CON: standardsonorisultatepreziose,in particolarel’autocompletamentodei nomi di file e directoryè statoindispensabileperoperarevelocementesuifile attraversola CLI.

39

Page 40: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Percomodità UAE è statoconfiguratoper utilizzareunadirectorydel filesystemLinux comesecondohard-disk:utilizzandosia la CLI cheil Workbenchper operaresui file di questovolumenonsonomaistatiriscontraticomportamenti anomalichepotesseroportareacorruzionedi file; nonè statopossibile usciredalla directory indicataa UAE comesecondohard-disk,la protezionedelfilesystemospitedaeventualiapplicazionidifettoseo virus chepossanoesserein funzionesull’A-miga emulatorisulta perciòefficace. UAE sopportasenzaproblemichesi operi sul filesystemalui assegnatocontemporaneamentedall’Amiga emulatoe dallashell di Linux: è statopossibile adesempioscompattarearchivi LHA, scaricatida Internete collocati in unadirectory“privata” dellamia home,direttamentenelladirectorydedicataa UAE, conil Workbenchin funzione,edaccedereimmediatamentedall’Amiga ai nuovi dati caricati.

Il sistemaè risultatostabile;a regime di normalefunzionamentonè l’emulatorenè il sistemaoperativo emulatosi sonomai bloccati, ed hannosopportatosenzaproblemi il mantenimento inesecuzioneperdiverseoreconsecutive, in multitaskingconaltreapplicazioniLinux. L’unico modoper mandarein crisi UAE è cambiareal volo un grannumerodi impostazionidalla GUI, comelaquantitàdi memoriainstallatao il tipo e la modalità di funzionamentodelprocessore;in particolareUAE èrisultatosensibile all’attivazionedell’opzione“Slowbut morecompatible mode” cheriguardail 68000:in molti casiattivandoquestafunzionel’emulatorehafattocrashpersegmentviolation.

4.1.2 Operazioni sui dischi: DiskCopy 6.3eDPU

DiskCopy è un potentissimo programmaper la gestionedei floppy-disk; la suafunzioneprincipaleè,comechiaramenteespressodalnome,la copiadeidischetti, madisponedi altrefunzionalitàcomela formattazionerapida,il controllo degli errori presentinel filesystem,la deframmentazionedeidischi.Lo scopoprincipaledi DiskCopy rimanecomunquela duplicazionedi floppy-disknonDOSscritti conmeccanismidi protezionedallacopia,in particolarevideogiochi. Perfarequestononusale funzioni del sistemaoperativo ma accededirettamenteall’hardwaredella macchina.E’ quindiil programmaidealeper testarel’efficaciadell’emulazionedei floppy-disk driver dapartedi UAE.Questele proveeffettuate:

� Formattazione senzaverifica: con questafunzioneil programmaformattarapidamenteundischetto.Sia l’A500 cheUAE completanol’operazionein esattamente36 secondi. In en-trambii casiil dischettoè statopoi provatoperverificarnel’avvenutacorrettaformattazione,copiandovi unadirectoryperun totaledi circa600KB, e la provahaavutosuccesso.

� Formattazione con verifica: l’A500 completala formattazionedi un dischettocon verificadeiblocchiscritti in 1 minutoe12secondi;UAE invecenonriesceadeffettuarel’operazione,riportandosin dal primo bloccogravi errori di scritturaalla verifica. Da notarechelo stessofile ADF è statopoi formattatoconsuccessoconl’opzionedi formattazionesenzaverifica,ecollaudatoin modoapprofondito perverificarechenonci fosseroerrori nel filesystemcreato.Evidentemente DiskCopy utilizza in questocasodei meccanismidi verifica che non sonocorrettamenteimplementatiin UAE.

� Controllo: con questocomandoil programmaeffettuauno scanrapidodei blocchi del di-schetto,verificandochesianotutti leggibili. Sia l’A500 cheUAE completanol’operazionenellostessotempo,37secondi.

� Ottimizzazione: questocomandodeframmentail filesystemdi un dischetto,riarrangiandoiblocchi in modochei file risiedanosu blocchi consecutivi, diminuendoil temponecessarioalla loro lettura;inoltre effettuaunaverificadel dischettopercontrollarechel’operazionesia

40

Page 41: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

andataa buonfine. Ho effettuatol’ottimizzazionedi un dischettosottoAmiga A500, e dellasuaesattaimmagineADF sottoUAE. L’A500 completal’operazionein 2 minuti e21secondi,mentreUAE impiega2 minuti e3 secondi.

� Copia con verifica: ho effettuatola copiadi un dischettoAmigaDOSutilizzandosia comesorgentechecomedestinazioneil drive DF0: ; DiskCopy consenteanchela copiadirettadaun floppy-disk ad un altro, ma necessitaovviamentedi duedisk driver, mentrel’A500 a di-sposizione nehasolouno,quindi nonsarebbepossibile in quelcasoun confrontodiretto. Ilprogrammaleggeil contenutodel dischettoe lo memorizzain RAM, perpoi scriverlo sul di-schettodi destinazione,effettuandounaverificadellascrittura.L’A500 originalehaimpiegatoperl’operazione2 minuti e 25secondi(il tempoimpiegatoperscambiarei dischettinel drivenonè conteggiato),mentreUAE la completain 2 minuti e 8 secondisevieneconfiguratoperusareunmegabytedi FastRAM, e1 minutoe55secondisesi utilizzala RealFastRAM.

Sesi tienecontochel’A500 utilizzatonelleprove montaun floppy-disk driver di circa 12 annidietà,chehaallespallesvariatecentinaiadi oredi utilizzo,echeanchei dischettiutilizzati nelleprovehannopressappocola stessaetà,con tutti i difetti di efficienzacheil tempoe l’usuracomportano,si puòdirechei tempidi accessodei floppy-disk driver emulatidaUAE possonoessereconsideratiparagonabilia quelli dell’hardwareoriginale.Sia le operazionichecomportanola letturao scrittu-ra del discosequenzialmente (copia,verifica, formattazione),sia quellecherichiedonoseekdellatestinada unaparteall’altra della superficiedel disco(l’ottimizzazione,nonchèla normaleletturacol Workbench)hannorichiestotempi di pocoinferiori a quelli necessariper le stesseoperazionisull’hardwareoriginale;nonè statopossibile pergli autoridi UAE sfruttareil fattochei dischettisonoemulatievengonocaricatiin RAM, molti programmialtrimentirisulterebberononfunzionanti.

DPU, acronimodi Disk Peekand Update, è un programmafreewarechepermettedi accederedirettamenteai datimemorizzatifisicamentesuidischi,senzapassareattraversoil filesystem.Tra lefunzioni più interessanti, la possibilità di visualizzareil RootBlock e la bitmapcheindica i blocchiutilizzati equelli liberi.

DPU mostra la bitmap dei blocchi liberi di un disco prima (a sinistra) e dopo(a destra) la "cura" di DiskCopy 6.3

Il programmafunzionacorrettamente,ehapermessodi visualizzarele varieinformazionideidi-schi;danotarechel’hardfile vienevistodaDPUcomeunhard-diskgestitoattraversol’ uaehf.device,i cui blocchisonoaccessibilievisualizzabilidirettamente,maprivo di RootBlock,percui nonèpos-sibilemostrarela bitmapdeiblocchiliberi; inveceil filesystemvirtualizzatocomesecondohard-disknonvienerilevatoe nonèpossibile selezionarlocomeunitàdaanalizzare.

41

Page 42: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

4.1.3 Programmi musicali: DeluxeMusic Construction SeteProtracker 2.1a

Deluxe Music ConstructionSet(DMCS) è un sempliceprogrammaper la composizionedi musica;permettedi selezionareuno strumentoed assegnargli la melodiada suonaresemplicementecollo-candole notesu un pentagrammaper mezzodel mouse,e di riprodurrela partituracon il chipsetAmigao, in alternativa,utilizzandoil linguaggio MIDI percomunicareconstrumenti musicalipro-fessionalicometastiereo expander. Tra le funzioni del programmac’è l’evidenziazionedellenotesuonatesul pentagramma,le cui “pagine” vengono sfogliateautomaticamente,e suunatastierachevienevisualizzatasulloschermo.

DMCS è l’applicazionechehadatoi risultati menosoddisfacentitra quelletestate:tentandodisuonaresubitodopoil caricamentounodeibraniforniti comeesempioneldischettodelprogramma,dallaschedaaudioprovienesolo rumore;tale rumoresi stabilizzadopoalcunisecondidiventandoinfineil branochesi stavacercandodi suonare.Sedoposi fermala riproduzionedellamelodiaela sifa ripartire,il problemanonsi manifestapiù. Rimangonoperòprobleminellariproduzionedi braniparticolarmentecomplessi:unodegli esempi,chiamato“BaricadesMisterieuses”, vieneriprodottoin modoatroce,condellepausee dei buchi nell’esecuzionechelo rendonoirriconoscibile rispettoallo stessobranosuonatodall’Amiga reale.

Durantele prove,l’utilizzo di DMCSconparticolariconfigurazioni(68020,2 MB di ChipRAM,suonodisattivato)haportatoallacorruzionedell’hardfileutilizzatocomehard-diskdi sistema,conlaperditadi tutti i dati in essocontenuti.Si ètrattatodell’unicocasoin cui UAE haprovocatodeidanni.L’incidenteèstatoin qualchemodo“cercato”,vistochel’autoredi UAE sconsigliaesplicitamentediutilizzarel’hardfile; è statocomunqueun fattoindisponente,perchèaccadutoproprioalla fine delleprovedelsoftware.

Protracker èunsequencer, unprogrammapercomporremusicacompletamentediverso perfilo-sofiadi funzionamentorispettoa DMCS. Innanzitutto i suonidegli strumenti nonsonosintetizzati,vengonoinveceriprodotti dei campionisonori: per produrrele diversenote,uno stessocampionevieneriprodottopiù o menovelocemente.In Protracker unbranomusicale,dettomodulo (module)è compostodaun numeroarbitrariodi parti chiamatepattern, ciascunadellequali è unatabelladi64 righeper4 colonne,unacolonnaperogni vocedellasezioneaudiodell’hardwareAmiga. Ognicaselladella tabellacontienequattrobyte,chea secondadel loro valoreassumono il significatodisuonareun determinatocampionead unadatanota,oppuredi cambiarela velocitàdi riproduzio-ne, passareal patternsuccessivo o applicaredeterminatieffetti ad un suonogià in produzione.Ilprogrammascorrein sequenzale righedelpattern,avanzandoadintervalli di temporegolari,edese-guei comandiriportati nellecaselle,agendoin modoindipendenteperciascunadellequattrovoci.ProgrammandoProtracker perchèriproducai diversipatternin un determinatoordine,si ottieneunbranomusicalecompleto.Protracker producefile cheinglobanoi pattern,l’ordine in cui suonarlie i campionida suonare.Il formatodi questifile è leggibile con unaroutinepiuttostosemplice,pubblicaeliberamenteutilizzabile,edil risultatoottenibile daunmusicistaabileèdi talequalitàcheil formatoProtracker è statoil favorito per implementarele musichenei videogiochie nelledemoperAmiga.

Protracker 2.1afunzionaregolarmentein emulazione:l’output sonoroprodottodal PC è iden-tico, perqualitàaudioe per temporizzazione,a quelloprodottodall’Amiga reale.L’esecuzionedelprogrammapresentaunsolodifetto: alcunevolteuncampionesonorononvienesuonatoaffatto,an-chesegli strumentidel programma,adesempiol’analizzatoredi spettro,mostranocheil comandodi esecuzionedel campioneè statointerpretato.Il difetto si manifestain modoevidentesesi usalatastieradelPCperfarsuonarei campionicomesesi strimpellasseunatastieramusicale:alcunevolteal tastopremutononcorrispondealcunsuono.Nonsembrainfluire la velocitàconcui si indicanolenotedasuonare.

42

Page 43: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

A sinistra DMCS; a destra Protracker

4.1.4 Imagine 2

Imagine2 èunodeipiù potentiprogrammiperla modellizzazioneedil renderingdi sceneedanima-zioni tridimensionali maiprodotti.Permettedi “scolpire”, apartiredaunaseriedi formebasecomesfere,cubi, cilindri e superficispline,modelli tridimensionali di qualunqueoggetto,di comporrequestioggetti in scenesimili a setcinematograficivirtuali, in cui posizionarela telecamereed unnumeroarbitrariodi luci, infine utilizza la tecnicadel ray-tracing perprodurreimmagini edanima-zioni in qualitàfotorealisticadellescenecomposte, rendendosullesuperficidegli oggettigli effettidella luce comerifrazione,riflessionee assorbimento, a partireda unalungaseriedi regole cheèpossibile definireperognielementodellascena.Strumentisimili adImaginevengono utilizzati perla realizzazionedegli effetti specialidigitali in film comeJurassicParko StarWars.

Imagineè,comeè facilededurre,unprogrammachefa unusointensivo dellaCPU,edè quindiunbancodi provaefficaceperverificarel’effettivavelocità delsistemaAmigaemulato.

Imaginesi comportaperfettamentebenein emulazione:sindalcaricamentosiavverteunsensibi-le incrementodellavelocitàrispettoall’util izzoconl’A500 reale.Pereffettuareunaprovaoggettivaho realizzatounascenasemplicissima,compostadaunasferadeformatain mododafarleassume-re la forma di un vaso,alla cui superficieho assegnatogli attributi di colore,ruvidezzae durezzaper imitare in modoapprossimativo l’aspettodella terracotta;ho aggiuntoduefonti di luce sferi-cheomnidirezionalie ho inquadratoil soggetto conla telecameravirtuale. La scena,composta percomoditànell’ImaginesottoUAE, è statapoi importatacon successonella stessaapplicazioneinfunzionesull’A500 reale.Ho quindi lanciatoil renderingsulleduepiattaforme;Imaginemantieneun file con le statistichesui framerenderizzati,percui è possibile un confrontodirettoe oggettivodei tempidi elaborazione.

43

Page 44: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Imagine 2: a sinistra la fase di allestimento della scena; a destra l’immaginerenderizzata della semplice scena di prova

Vadettoche,comeauspicabile,il risultatodelrenderingèidenticosulleduepiattaforme.L’A500ha richiesto34 minuti e 57 secondiper completarel’operazione,mentreUAE ha completatoilrenderingin 4 minuti e 11 secondi,in unaconfigurazionechericalcaquelladell’A500 (512KB diChip RAM e 1 MB di FastRAM), mentreè bastatoun minuto e 27 secondiper renderela stessascenaconla configurazionedi default usatapertuttele altreprove (1 MB di Chip RAM e 4 MB diRealFastRAM).

E’ evidentecheImagineè in gradodi sfruttareappienola maggiorpotenzadi calcolopurodelprocessoredellamacchinacheospital’Amiga emulatoin UAE. Bisognaaggiungerechela versionedi Imagineutilizzataè in entrambii casiquellacompilataperprocessori68000,e quindi nonvienesfruttatain UAE alcunafunzionedelprocessorechenonsiadisponibile sull’A500,comeadesempioil coprocessorematematicoo l’accessoamemoriaa32bit.

4.1.5 Altr o software

Elencoqui altri programmiprovati conUAE, chenelleprovesonostatieseguiti correttamenteenonhannomanifestatoalcuncomportamentoanomaloo comunque interessantedasegnalare.Un’unicanotariguardail fattochenonè statopossibile eseguiredellestampedirettamentedall’emulatore:ariguardola documentazioneriportaalcunisuggerimentisucomeprovareaeffettuarela stampadalleapplicazioniAmiga, suggerimenti seguiti senzasuccesso;la documentazioneindicaperòesplicita-menteche l’autore non ha mai effettuatoalcunaprova a riguardo. Nemmenodal forum ufficialedi UAE ho potutoricavareinformazioniutili : a quantoparequelladi stamparedall’emulatorenonvieneconsideratacomeunapossibilità interessante.

Altri programmitestatisono:

Final Copy II: wordprocessordel tipo WYSIWYG (WhatYouSeeIs WhatYouGet), unodeipriminel suogenere;

PageStream2.2: programmaperl’impaginazionedei testicheutilizzafont vettoriali;

DICE: compilatoreC;

AMOS: interpretee compilatoredi un linguaggiosimile al BASIC, orientatoalla programmazionedi videogiochi;

DeluxePaint 4: programmadi graficapittorica;

44

Page 45: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Cloanto PersonalPaint: programmadi graficapittoricain gradodi sfruttareil chipsetAGA;

Power Packer: “compattatore”,ossiaun software in gradodi comprimereun file eseguibile, inmodocheoccupimenospaziosudisco,marimangacomunquedirettamenteeseguibile,comeunnormaleprogramma.

4.2 Giochi

ImpostareUAE per emularei videogiochiAmiga richiedeun minimo di pazienzae alcuni minutidi prove: spessoi videogiochi nonpartonoo rimangono bloccati,setrovano chel’Amiga emulatodifferisceper qualchedettagliodall’Amiga A500 per il qualesonostati scritti; altre volte i giochipartonomarisultanoingiocabili, perchètroppoveloci o troppolenti. Ad ogni modo,la possibilitàdi variare“al volo” unagranpartedelle impostazionidell’emulatore hannoconsentito di trovareilgiusto“assetto”perquasitutti i videogiochi provati; alcunevolte perònonè statopropriopossibileeliminarealcuneimperfezioni,edhodovuto accontentarmidi compromessi.

L’impostazione a cui i videogiochi sonopiù sensibili è quelladella velocitàdel processoreinrapportoal restodel chipset:mentrele applicazioniAmigaDOSfunzionanotranquillamentequan-do UAE è impostato ad usarela massimavelocità ottenibile (“Optimize for host CPU speed”),la maggiorpartedei giochi richiedeche tale opzionesia regolatasu “Approximate 68000/7MHzspeed”.

4.2.1 Lotus Turbo Challenge2

Lotus2 è certamenteunodei videogiochipiù famosie più riusciti prodotti perAmiga. Prodottonel1991daiMagneticFieldsperla Gremlin, conla licenzaufficiale dellaceleberrimacasaautomobili-sticaingleseLotus,il giocoriprendeil gameplaydei più classiciarcadedi guida,comeadesempioOutRundellaSega; il giocatoredeve guidarela propriavetturasuun percorsostradale,ovviamentetortuosoe pienodi ostacoli,e raggiungerei punti di controllo (checkpoint) prima che il tempoadisposizionesi esaurisca,per poterproseguire la corsa. Lotus 2 vantava unagraficaed un sonoroaccattivanti e caratteristichetecnichedi tutto rispetto: 25 frameal secondo,tracciaticon cambidipendenzae le più diversecondizioniatmosferiche,possibilità di giocarein duesullo stessocompu-tergraziealla funzionedi split-screen(lo schermosi divideorizzontalmentein due),o addirittura inquattrocollegandodueAmigaattraversouncavo serialenull-modem.

Due screenshot del gioco "Lotus 2"

45

Page 46: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

Lotus2 risultaunodeigiochichemeglio si comportanosottoemulazione.Avendocuradi rego-lare il timing del processoresu"Approximate68000/7MHz speed", il giocopartesenzarichiedereulteriori modifichedellaquantitàdi memoriainstallatao dellaversionedel Kickstart. La graficaedil sonoroappaionocorretti e in sincrono,il gioco funzionaalla velocitàgiusta ed è perfettamentefluido e ottimamentegiocabile.

4.2.2 Superfr og

Superfrog,prodotto nel 1993dal Team17, fu unodei rappresentantidellasuperioritàtecnicadegliAmiga nei confrontidegli altri personalcomputerdell’epoca.Il gameplaynonrappresentava certounanovità, trattandosidel tipico “platform-game” sul generedi “Mario-Bros”, in cui il giocatoredeve guidareil personaggioattraversoi livelli del gioco, raccogliendoun determinatonumerodimoneteperpoteraccedereal livello successivo, collezionandoi bonuse i power-upspiù vari e uc-cidendoi diversinemicichetrovasullapropriastrada.Il giocovantavaperòcaratteristichetecnicheeccezionali:la graficacuratissimaedivertenteèdisegnatain unoschermooverscandi oltre700x300pixel di dimensioni, e sfruttaa fondol’hardwareAmiga ottenendo100colori apparenticontempo-raneisullo schermoattraversol’uso di palettevariabili, unoscrollingnellequattrodirezionivelocee fluido, e oggetti animatia 50 fotogrammial secondo.A questosi aggiungel’ottima musicael’enormeprofondità(unaquarantinadi livelli cheoccupanountotaledi quattrodischetti), percreareungiocofreneticoedivertente.

PurtroppoSuperfrogva collocatonella categoria dei giochi che l’emulatore non riescea farfunzionarecorrettamente.Il difetto si manifestain modoevidentesin dai primi istanti del gioco:nellaparteinferioredelloschermo,unastrisciadi circa50pixel largaquantotutto lo schermo,vienedisegnatala partesbagliatadelpaesaggio;il problemaèbenvisibile nelloscreenshotqui riprodotto.L’effetto è molto fastidioso,edessendoSuperfrogun giocoin cui è fondamentalela precisionedeimovimenti, perchèsi deve saltaresu piccolepiattaformeo soprai nemici e schivare gli ostacoli,la suagiocabilità vienecompromessa. Per il restoil gioco funzionabene:bisognaregolareUAEperchètracci solo 25 fotogrammial secondo,altrimenti il gioco risulta troppo lento, comunquesonoroespritedeipersonaggidelgiocosonoquasitutti corretti,cosìcomegli elementidi contorno,in particolarela presentazioneanimata.

Due screenshot del gioco "Superfrog"Si notano gli errori nel disegno di alcuni sprite (le api, a sinistra)

e della schermata del livello (a destra)

46

Page 47: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

4.2.3 Jimmy White’s Whirlwind Snooker

JWW Snooker è un simulatoredi biliardo in graficavettoriale tridimensionalescritto nel 1991daArcher McLeanper la Virgin Games. Vieneriprodottoin ogni dettagliolo snooker, giocomolto invogain Inghilterrama praticamentesconosciutoin Italia; il videogiocoprendeil nomeda un fa-mosocampioneinglesedi questadisciplina,JimmyWhite,soprannominato “Whirlwind” (“Trombad’aria”) per la suavelocitànell’effettuarei colpi. All’epoca fu consideratoil miglior simulatoredibiliardomaiprodottoedunodeimigliori videogiochisportivi di sempre.Le caratteristichepeculiaridel gioco sono: l’ottima graficain 3D, molto bella a vedersi;il motorefisico, molto verosimile;l’intelli genzaartificialedegli avversari,semplicemente micidialeai livelli di difficoltàpiù elevati.

Due screenshot del gioco "JWW Snooker"Come se il gioco non fosse abbastanza difficile, le palle da biliardo

(a destra) prendono in giro i giocatori!

Il giocoè tra i pochissimi adavvantaggiarsi dellapotenzadelprocessorechela macchinaospitemetteadisposizionedell’emulatore,infatti apparesensibilmentepiùvelocesottoemulazionerispettoaquandoèin funzionesullamacchinareale.La configurazionedell’emulatorevaperòaccuratamen-te regolata,perchèalcunisettagginonsolocompromettonola qualitàdell’esecuzionedel gioco,maspessoprovocanoo il resetdellamacchinavirtualeo addiritturail crashdi UAE persegmentationfault; in particolarela velocitàdel 68k va portataal massimo (“Optimizefor hostCPU speed”), edeve esseredisattivatala rilevazione dellecollisioni tra gli sprite. In questomodoil giocofunzionaal massimo dellesuepossibilità; un soloinconvenientesi verificaquandola telecameravirtualedelmotorevettorialedel gioco inquadrain primo piano le palla in movimentosul tappetoverde: inquesticasiil suomovimentononèfluido, pareinvecescattarevelocementeavantie indietro.Questoeffetto è probabilmentedaattribuirsi nontantoa problemidell’emulatore,maadun effetto dovutoalladiversasincroniadelmonitor usato,rispettoaquelli percui il giocoèstatoscritto.Approfondiròl’argomentopiù tardi,nelparagrafo4.3.

4.2.4 Pinball Illusions

Nel 1992 i Digital Illusion (DI ), un gruppodi ex-pirati informatici ed autori di demo,pubblica“Pinball Dreams”, un simulatore di flipper perAmiga, reinventando un generee creandoun filonedestinatoa riscuotereun certosuccesso.Il giocohaun conceptè estremamentesemplice:il tavolodel flipper vienevisualizzatoverticalmentee scrollain alto e in bassoseguendoi movimenti dellapallina; il giocatoreazionai respingenticon la tastiera,cercandodi spedirela pallina sui bersagliluminosi e di ottenereparticolari combinazioni per guadagnareil maggiornumerodi punti. Larealizzazionetecnicaè perònotevole per qualitàdi grafica,musica e programmazione,ed il gioco

47

Page 48: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

risultavelocissimo e divertente. Al primo “episodio” segue,semprenel 1992,“Pinball Fantasies”,enel1995“Pinball Illusions”.

Due screenshot del gioco "Pinball Illusions"

La versioneprovata di Pinball Illusions è quella dedicataall’Amiga A1200, e sfrutta perciòla maggiorpotenzadel processoree le miglioratecapacitàgrafichedel chipsetAGA, al contrariodegli altri giochi provati, cheutilizzanotutti l’OCS. Perquestomotivo non è possibile compararedirettamenteil funzionamentodelgiocoemulatoconquellosullamacchinareale,vistochel’AmigaadisposizionenonèequipaggiataconchipsetAGA.

Il gioco vienecaricatoe funzionacorrettamentesesi configuraUAE in mododa emulareunAmiga A1200,secioè si attivanoil processore68020e il chipsetAGA e si allocano2 MB per laChip RAM. La documentazionedi UAE avvertedel fattochel’implementazionedel chipsetAGAè ancorain faseembrionalee nonè ottimizzata;è peròsufficientea far funzionarePinball Illusionsin modoaccettabileanchesuunamacchinapocopotentecomequellaadisposizione: tutti gli effettigrafici e sonoriappaionocorretti e la musicavieneriprodottain modocontinuo e regolare,senzascattinemmenoquandola macchinavirtuale è maggiormenteimpegnata.Certamentelo scrollingdelloschermoe i movimentidellapallinanonsonoperfettamentefluidi, e neimovimentipiù velociil “flick ering” chenederiva dàa volte fastidio;nonostantequestoil giocoè utilizzabile. Gli unicimomentiin cui l’emulazioneAGA manifestala suaimmaturitàè quandoduranteil giocosi entrainmodalità“multiball”: quandosullo schermodi giococompaionopiù biglie, essevengonodisegnatein modononcorrettoe appaionolampeggianti.

Pinball Illusions è anchel’unico tra i giochi testatia risiederesu dischettiAmigaDOS, leggi-bili anchedal Workbench,e volendopuò essereinstallato sull’Hard Disk: sull’ultimo dei quattrodischettichecompongonoil gioco è presenteuno script per l’Installer Commodorechesi occupadell’operazionein modoautomatico;unavolta installato il giocovienelanciatofacendodoppioclicsullasuaicona. Comelecito aspettarsiil comportamentodel giocononcambiaquandoessovieneavviato dahard-disk,rispettoa quandovienecaricatodai dischetti,a parteovviamentela maggiorevelocitànell’accessoai dati.

4.3 Demo

Le demosi sonodimostrateil bancodi prova più duroe difficile perUAE, edil softwarecol qualel’emulatoresi è comportatopeggio. Mettendofiancoa fianco il PC con UAE in funzioneed unAmigaA500, la differenzadellaresageneraledegli effetti delledemoè desolante,sesi tienecontocheil PCèassemblatoconcomponentichehanno15annimenodi quelli di Amiga, edil processorefunzionaadunafrequenzadi clockcentovoltesuperioreaquelladel68000cheequipaggiail micro-

48

Page 49: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

computer;perquantoquestoparametrononsiaun terminedi paragoneaffidabileperun confrontodirettotra le duemacchine,ècomunqueun indiceapprossimativo delleforzein campo.

Le demovengonoriprodottecorrettamente:sia la graficacheil sonoronon presentanoimper-fezioni, maper il fattochel’emulatoredeve esseresettatoin mododadisegnarela metàdei framedelleanimazionioriginali, perriuscirea funzionareallagiustavelocità,il risultato èdi qualitàmoltoinferioreaquellochesi ottieneconl’Amiga reale.

Difetti ineliminabili Unapartedeidifetti di riproduzione delledemodapartedell’emulatorenonèperòdaattribuirsi al programma.Alcunesequenzedeiprogrammidimostrativi prevedonoil movi-mentocontinuo,fluido euniformedi scritteedelementigrafici attraversolo schermo.In tutti questicasisullo schermodel PCquellochesi ottieneè un movimentoa scatti. Il problemain questocasonon è nell’efficaciadi UAE, ma nel fatto che le animazionisonoprogettateper essereriprodottesu un monitor la cui frequenzadi refreshsia quelladei televisori casalinghi,ovvero 50 Hz per letelevisioni PAL, 60 perquelleNTSC.I monitor odierni funzionanoa frequenzemaggiori,per limi-tarel’affaticamentodegli occhidell’utentedi fronteallo schermo;tipicamenteanchei monitor piùeconomicinonfaticanoa reggerefrequenzedi 70-80Hz. Questadifferenzacostringel’emulatoreanonvisualizzarealcuni fotogrammi dell’animazione,o mostrarnealcuniduevolte, permantenernela sincronia;daqui l’effetto, ineliminabile,dellescrittechesaltanoescattanosulloschermo.

Effetti Le demomostranotuttaunaseriedi effetti ricorrenti. Gli autoridelledemo(detti coder)eranoinfatti in costantecompetizionepervederechi riuscivaaricrearelo stessoeffettoconil codicepiù compattoe veloce;a partire da un’idea potevanopoi venir sviluppateinfinite varianti, ma ilconcettodi fondorimaneva lo stesso.

Un elencodi questieffetti, daconsiderarsiintroduttivo edassolutamenteincompleto, riportatoaisoli fini di renderepiù comprensibilel’analisi del funzionamento delledemoconUAE, puòessereilseguente:

tunnel: degli elementicolorativengonofatti muoveree ingranditicreandol’effetto di caderein untunnelmulticolore. Alcunevolte l’effetto è creatocongraficavettoriale,altresemplicementeconla riproduzione edil movimentodi formecolorate;

starfield: unamiriadedi puntini vengonofatti muovere tutti insieme a darel’impressionedi esse-re suun’astronave chesi muove a velocitàvertiginosa nello spazio,riproducendoun effettosimilea quellovisto in molti film di fantascienza;

distorsore: un’immagine bitmapvienedistortae modificatain temporeale;spessovieneprodottoun effetto prospettico,e si dàl’impressione chel’osservatoresi muova in volo sopral’imma-gine,chesi allontanie si avvicini; altrevolte vengonoriprodotti effetti comequelli di riflessisull’acquao di lenti d’ingrandimento;

scroller: immancabilein ognidemochesi rispetti,si trattadi unascrittachescorrefluidamentesulloschermo,spessoconeffetti specialicomecambidi coloreo movimenti a formadi sinusoide.Il testodello scrollerriporta in generesalutiagli “alleati” e frasi di schernopergli avversaridel gruppoautoredellademo.

3d: animazioniin grafica3dpoligonale;

texture mapping: immagini bidimensionalichevengonomodificatee distorte perdarel’illusionedelletredimensioni; sonotipici cubi,parallelepipediesfererotantio saltellantisulloschermo;

49

Page 50: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

dissolvenzee tendine: usateper collegare diversescenedi una demo,a imitazione di quantosivedeneifilm. Le dissolvenzesfruttanoil cambiodeicolori delleimmaginiavideo;le tendinesovrappongonoall’immaginedi unascenaquelladellascenasuccessiva.

4.3.1 Arte

Nell’archivio del sito “Back 2 theRoots”, cheraccoglieunaenormequantità di softwareperAmigachegli autori hannoautorizzatoa diffondereliberamentein rete,Arte figura al primo postonellaclassificadelledemoperAmigadotatidi chipsetOCS.Scrittanel 1993dai Sanity, Arte è effettiva-menteunottimoesempiodi ciò chequestiprogrammatorieranoin gradodi otteneredagliAmiga. E’unacarrellatadi effetti chesi susseguono senzasoluzionedi continuità, comesevenisse seguitoununicofilo conduttore;il tutto accompagnatodaun’ottima musicaeconditodaunagraficadisegnataconstilegrottescoedivertente.Tragli effetti più interessantipossocitare:il tunneldell’inizio dellademo,un corridoio pseudo-tridimensionalecon curve e saliscendipercorsoa velocità mozzafiato;unainteressantesequenzain cui vengonoanimatidei puntini colorati,a formarescrittescorrevoli efigurein prospettiva; i “titoli ” di codachevedonoaffiancatiunoscrollerverticaleconi salutidi ritoeunascena3d.

Due momenti della demo "Arte": a sinistra l’effetto plasma, a destra i titoli di coda

UAE esegue la demodal principio alla fine senzail minimo problema,e senzadover toccarealcunaimpostazione.Alcuni effetti mettonoperòin grossissimacrisi la macchinaospite; il tunneliniziale non vieneriprodottoalla giusta velocità senon impostandoUAE affinchèdisegni solo unfotogrammaogni quattro,mentrecon ogni impostazioneprovata, durantelo starfielddella partecentraledellademoil PCaccumulaunosvantaggiodi ben30 secondisul totaledi circadueminutidi duratadellasequenza.Il restodellademopuòessereeseguitaconil framerateimpostatoa 1/2diquelloreale.UAE si prendeunaparziale“ri vincita” nellasequenza3dfinale,cheapparepiù fluidainemulazionechesull’Amigaoriginale:meritodeiprogrammatoridellademochehannoscrittocodicecompatibileconl’intera gammaAmiga,dall’A500 all’A4000; la demofunzionaregolarmenteanchese il timing del processoreè impostato a “Optimize for host CPU speed”e perciò l’animazionevettoriale,cheè unaroutinedi purapotenzadi calcolo,puòavvantaggiarsidellamaggiorevelocitàdellamacchinaospite,rispettoal 68000a7 MHz dell’Amiga originale.

4.3.2 DesertDream

DesertDreamè unademoin duedischettiscrittanel 1993dagli ANKH. Presentaun’animazioneiniziale in 3d vettoriale, cheraccontaunastoriala cui tramapuò far dubitaredella sanitàmentale

50

Page 51: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

degli autori:un’astronavealienascendesullaTerraeattaccale piramididi Gizaconunafettagigantedi anguria;le piramidi rispondonoal fuocoeabbattonoil velivolo... Segueunanotevoleanimazionein cui un parallelepipedotexture-mappedruota ad altissima velocità, ed una sequenzain cui unnumeroimpressionantedi punti colorati (da10 a 12 mila, comevienespecificatodascrittea videoduranteil renderingdell’effetto)vieneanimatoa formarecubi,sfereealtrefiguregeometriche.

Due screenshot della demo "Desert Dream": a destra il parallelepipedo texture−mappedanimato

UAE si comportadecisamentebenefino aquestopuntodellademo;anchein questocasononc’èbisognodi modificarealcunaimpostazionedel programma.Qui peròsi interrompee, nonostanteidiversitentativi, nonsonoriuscitoa farloproseguire. L’Amiga originaleesegueinveceregolarmentela demofino alla fine, leggendola dadischettichesonostatiprodottia partiredagli stessifile ADFutilizzati in UAE.

4.3.3 RedSectorMegademo

La RSM èunademoin duedischettiprodottadaRedSectornel1989.Piùcheun’unicoprogrammaè unaraccoltadi effetti chevengonocaricatie mostratiin sequenza:un effetto rimanein rotazionefinchèl’utente non premeil tastosinistrodel mouse.L’intera demovieneriprodotta senzagrandiproblemidaUAE, apattodi selezionare“Approximate68000/7MHzspeed” primadelcaricamento;altrimenti, la demosi avvia ma si comportain modobuffo: i titoli iniziali vengono mostratiunodopol’altro troppovelocementee la “vocenarrante”non riescead annunciarli,e alla fine l’interoprogrammasi inchioda.

Due screenshot del Red Sector Megademo: a destra un esempio di vectorball

51

Page 52: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

La maggiorpartedelle sequenzesonovarianti di scroller: scritte giganti e coloratein movi-mentochevengono fatteoscillaree saltare,con effetti che imitano la riflessionesu uno specchiod’acqua,fuochi d’artificio e figure in movimentosullo sfondo.Il tutto usandoschermiin overscancheriempiono la finestradi 800x600pixel dell’emulatore.L’unico effetto notevole e interessanteda guardareè quello chiamato“vectorballs”: figure formateda sferepseudo-tridimensionaliven-gonofattevolteggiaree animatesullo schermo.Altra particolaritàè un testsulleconoscenzesullaprogrammazioneAmiga a cui l’utente vienesottoposto alla fine della demo;per la cronacasonorisultatoun“promettenteprincipiante”...

5 Conclusioni

Secondounastimaempiricaeapprossimativa,uncomputerdisponedi sufficientepotenzadi calcoloperemularecorrettamenteun’architetturahardwarerisalenteanonmenodi 5 anniprima;èun’affer-mazionechesi puòcondivideresesi consideracheoggici sonodiversi softwarein gradodi emulareperfettamentesui moderniPCvideogiochiarcadeprogettatinel 1993.Amigaèperòun’architetturadi talecomplessità dacostituire un’eccezioneimportante a questaregola: computerin gradodi farfunzionareunemulatoreAmiga in modosoddisfacentesonodisponibili al pubblicosolooggi,apiùdi 15annidall’uscitadelprimissimo A1000.Questopuòdareun’ideadell’enormequantitàdi lavorocheèstatanecessariaperlo sviluppodi UAE.

Durantei testè risultataunacompatibilità moltoelevatacol softwareesistente:solovideogiochie demo,chevannoad effettuareoperazioniparticolaridirettamentesull’hardwaredella macchina,hannopresentatoproblemidi funzionamento,edalcunidi questiproblemipossonoessererisolti oaggiratiselezionandodallaGUI dell’emulatore le opportune opzioni.

Il problemaprincipaledi UAE stanella lentezzadel programma:il computer utilizzato nelleprovenonèdi fasciaalta,mala suapotenzanonènemmenoparagonabileconquelladellamacchinaemulata;eppure,UAE si trova in difficoltà senon gli viene indicatodi renderesolo la metàdeifotogrammiprodotti dal softwareoriginale,e ciò causaun degradodella resagraficaglobaledeiprogrammi,chesuisistemiAmigaèunaparteimportante.

La lentezzanonè causatadal fattochein Linux nonè permessol’accessodirettoall’hardwaredellamacchinaospite:unconfrontoconil funzionamentodellaversioneperWindowsdi UAE, chesfruttale routineDirectX, nonhamostratodifferenzesensibili nellavelocitàdi esecuzionedel soft-ware.Il problemarisiedenelmotoreallabasedell’emulatore;possoipotizzarechela situazionenonè destinataa mutare:con l’arrivo di processorie memoriesemprepiù veloci (è stataraggiuntalasogliadei 2 GHz per la frequenzadi clock dei processori)i problemidi velocità di UAE vengonosemprepiù attenuati. Non saràquindi UAE a cambiareper migliorare le proprieprestazioni:sa-rannoinvecei PC a raggiungereunapotenzataleda far finalmentefunzionaresenzarallentamentil’emulatore.

Nonmancanopoi alcunibug,checausanoin alcunicasiblocchiesegmentationfault. In uncasol’hardfile cheveniva utilizzatocomehard-diskdi sistemaè statocorrotto,ed i file checontenevasonoandatipersi;d’altra partequestonondeve sorprendere:nelladocumentazionedel softwareèchiaramenteindicatochesi trattadi unprogrammanellafasebetadellosviluppo.

Nonostantei difetti, UAE è un buonprodotto; si integra benecol sistemaoperativo ospite,fun-zionacorrettamenteanchein multitaskingconaltreapplicazioni, edè sicurodautilizzareancheperesperimenticon softwarepotenzialmentedannoso(sempresenon si usal’hardfile!). Certamentele sueprestazioninon lo rendonoadattocomepiattaformaperutilizzareil sistemaoperativo Ami-ga e le sueapplicazioniin modo intensivo: è comunque,secondola mia personaleopinione, il

52

Page 53: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

mezzomigliore perentrare(o rientrare)in contattoconunadellearchitetturepiù interessantie piùsottovalutatedellastoriadell’informatica.

AppendiceA - Alter nativea UAE

UAE è probabilmentela sceltamiglioresesi desiderautilizzarel’intera varietàdel softwareAmigaesistente,videogiochicompresi.Esistonocomunquealcunealternative, chepossonoaverealcunivantaggisuUAE, maanchealcunecontroindicazioni.Essesono:

Fellow: è un altro emulatoredell’architettura hardware Amiga. Il fatto di esserestatoscritto inbuonapartedirettamentein Assemblerx86 gli dàun certovantaggioin velocitàpurarispettoa UAE; questasceltaha peròlo svantaggiodellamaggioredifficoltà di manutenzione e svi-luppo.Questofatto,unitoallaminore“anzianità”,ècausadell’immaturitàdelprogetto,chesimanifestain unacompatibilità col softwareesistenteminore rispettoaUAE;

Amithlon, ARES, AmigaXL: si tratta di porting del sistemaoperativo Amiga sulle piattaformeIntel. Amithlon si appoggiasu Linux, AmigaXL su un sistemaoperativo pococonosciutoma interessantechiamatoQNX, mentreARES è indipendente; Amithlon e AmigaXL sonoprodotti commerciali,il cui prezzovaria tra i 100 e i 150 euro,mentreARES è distribuitoconunalicenzasimile allaGPL e liberamentescaricabiledal sito. Facendofunzionarecodice68000suprocessoriIntel x86compatibilisonoanch’essidegli emulatori;al contrariodi UAEe Fellow emulanoil sistemaoperativo di Amiga e non l’hardware: questosignifica chenonpossonofar funzionaresoftware che dipendadall’hardware Amiga e che ne facciaun usodiretto (comela stragrandemaggioranzadi giochi e demo),ma anchecheil processorenondeve sostituirsi a granpartedel chipset,è menoimpegnatoe perciòpuòfar girareil softwareadunavelocitàmolto maggiore.In effetti la velocità di PCdi fasciamediaconunodi questisistemiin funzionesuperaquelladeipiù velociAmigaoggiesistenti.

AppendiceB - “VIP” Amiga

Alcuni film eserietelevisive in cui èstatausataAmigapergli effetti speciali

� “Babylon5” (film TV eserie)

� “Freejack”: Amiga conVideoToasterutilizzataper la sequenzainiziale e gli effetti di “war-ping”;

� “JurassicPark”: Amigausataperle anteprimedurantela realizzazionedeimodellianimatideidinosauri;

� “Max Headroom”(serie)

� “Robocop”e “Robocop2”

� “SeaQuestDSV” (serie)

� “Star Trek VI” (film), “Star Trek - The Next Generation”e “Star Trek - DeepSpaceNine”(serie)

53

Page 54: UAE -Unix Amiga Emulatorspazioinwind.libero.it/macman/Download/UAE.pdf1 Introduzione Unix Amiga Emulator (UAE) è un emulatore software della piattaforma Amiga che funziona su macchine

� “TotalRecall”

� “Terminator2”: effetti di morphing3d

Bibliogr afia

Perla stesuradi questarelazionesonostateutilizzatele seguentirisorse:

Documentazione:� AmigaReferenceGuidedi AmigaMagazine,GruppoEditorialeJackson

� “The Object-OrientedAmigaExec” di TomHolloway, daByte Magazine,Gennaio1991

� Official AmigaHardwareGuide,Commodore

� Official AmigaDeveloperAutodocs,Commodore

� Documentazioneallegataconil programmaUAE, versioni 0.8.19e0.8.20perLinux, 0.8.17r3perWindows

� DocumentazioneallegataconUAE versione0.8.15conJIT

� EmulatorTechnicalCentre(http://etc.home.dhs.org/)

� ADF FAQ (http://perso.club-internet.fr/lclevy/adflib/adf_info.html)

� TheHistoryof theAmiga(http://amiga.emugaming.com/Fahistory.html)

Forum enewsgroup:� UAE DiscussionBoard(http://amiga.nvg.org/uae/index.html)

� alt.emulators.amiga

� it.comp.os.amiga

Ar chivi di software:� Backto theRoots(http://www.back2roots.org/)

� Aminet - mirror italiano(http://it.aminet.net/~aminet/)

� World of Classics(http://www.marksplace.f9.co.uk/)

TestocompostoconLYX.

54