L'ultima distribuzione dei sorgenti può essere prelevata tramite FTP
da ftp://bugs.nosc.mil/pub/Mgr/69
o tramite Mosaic da
http://archimedes.nosc.mil/Mgr/69
.
Essa si può trovare anche presso
ftp://sunsite.unc.edu/pub/Linux/apps/MGR
ed i suoi mirrors.
Versioni precedenti di questa distribuzione, curate da Haardt, si possono
trovare in tsx-11.mit.edu
, e probabilmente altrove.
Versioni di MGR precedenti al port per Linux, di Uhler ed altri
si trovavano in ftp://bellcore.com/pub/mgr
, ma penso che ora
non vi siano più.
Io ho salvato una copia di ogni cosa riguardante MGR vista su
Internet, ma non sono a conoscenza di nulla di una certa importanza che
manchi da questa distribuzione per Linux e Sun.
MGR è passato attraverso un bel po' di versioni e
releases, ma la corrente versione *per Linux* è la 0.69. Essa
passerà a 1.0 quando vi sarà del codice stabile per
supportare la VGA a 256 colori sotto Linux (per più di una scheda
grafica).
I numeri di versione RCS sono saliti dal 4.3 della Bellcore al 4.13
attuale.
Per costruire questa distribuzione di MGR sono necessari i seguenti tools: m4 (GNU, o forse anche altri dotati dell'opzione -D), make (GNU, o forse anche altri che supportino gli include) e *roff per la documentazione. Ed anche sh e POSIX install. Le distribuzioni binarie spesso non vengono assemblate, cosicché è necessario un compilatore ANSI C, come per esempio gcc.
Una installazione Linux richiede Linux 0.99.10 o meglio (quello che io
uso attualmente per il testing è la versione 1.2.13), una scheda
grafica HGC, EGA, VGA o SVGA, e un mouse.
Sono supportati i seguenti mouse:
mouse seriale Microsoft, mouse seriale MouseSystems a 3 e 5 byte
mouse seriale MMSeries, mouse seriale Logitech, mouse PS/2,
oppure un bus mouse. Con le combinazioni Buckey (Meta) da tastiera, anche
un sistema senza mouse potrebbe fare un po' di utile lavoro sotto
MGR. Il modo grafico monocromatico VGA 640x480 è
supportato senza bisogno di alcun intervento particolare, ed egualmente
quello 640x350 e 640x200.
Per supportare la modalità 800x600, o altre che il tuo BIOS
può inizializzare e che non richiedono bank-switching, è
necessario far girare sotto DOS, o un emulatore, un piccolo programma
(src/vgamisc/regs.exe
) per leggere i registri VGA e scrivere un
file header da piazzarsi nella directory src/libbitblit/linux
,
cosicché possa venire #incluso
dal file lì presente
vga.c
. Sono forniti anche degli esempi di tali file, ma per favore
creati quelli specifici della tua particolare scheda.
Alcune schede VGA possono usare modalità grafiche che richiedono 128k
di RAM, e queste potrebbero supportare risoluzioni monocromatiche
più elevate.
Il codice per la modalità a colori in Linux funziona senza problemi anche nella modalità policromatica VGA 320x200x256, poiché essa non richiede alcun bank-switching. Se pensi quanto pochi siano 64000 pixel, capirai che questa modalità è assai limitata. Nella versione 0.65 è stato aggiunto del codice per il bank-switching, non molto veloce, ma semplice: funziona con una scheda grafica Tseng ET4000 nelle modalità 640x480x256 e 800x600x256. Il codice per la S3 non funziona ancora nelle risoluzioni super VGA. Supportare nuove schede super VGA richiede la scrittura di una funzione per switchare i banchi, e quindi assicurare che la modalità desiderata possa venire inizializzata da un register dump, magari lavorandoci un po' sopra a mano. I servers a colori per Linux generalmente corrompono i font dello schermo, rendendo necessario l'uso di restorefont come in runx.
Sono supportati anche i Sun con SunOS 4.1.2+ e i frame buffer bwtwo
,
cgthree
, o cgsix
. La loro velocità lavorando nelle
modalità a colori è buona. Le installazioni Coherent
dovrebbero riferirsi al file README.Coh
nella distribuzione dei
sorgenti.
Il porting della versione più recente di MGR
ad un altro
sistema POSIX-like, che supporti select
, i pty e l'accesso
diretto ad un frame-buffer a mappa di bit dovrebbe essere immediato,
richiedendo solo l'implementazione della libreria libbitblt
basandosi, per esempio, sul codice sunmono
o colorport
.
Per una installazione completa, occorrono 7 Mb di spazio su disco per i file binari, i font, le man-page etc. I file sorgente occupano circa 4.5 Mb, cui vanno aggiunti i file oggetto durante la compilazione.
Normalmente, la directory dove installare i file che MGR usa a
runtime dovrebbe essere /usr/mgr
, o almeno dovrebbe venire
linkata ad essa. Scrivendo:
cd /usr/mgr; tar xvfz dovelohaimesso/mgrusr-0.69.tgz
e facoltativamente
cd /usr/mgr; tar xvfz dovelohaimesso/morefonts-0.69.tgz
si scomprimeranno questi file. I sorgenti possono venire installati
ovunque, ad esempio scrivendo
cd /usr/src/local/mgr; tar xvfz dovelohaimesso/mgrsrc-06.9.tgz
per scomprimere i sorgenti prelevati da archimedes.nosc.mil
.
L'albero dei sorgenti può venire compilato da un unico Makefile
nella directory principale che chiama quelli nelle secondarie, ognuno
dei quali "include" il file "Configfile"
nella directory base. Configfile
è creato dallo shell
script interattivo Configure
, che, tenendo conto delle tue
risposte ad alcune sue domande, fa processare Configfile.m4
ad m4.
Quindi si deve scrivere qualcosa di simile a questo:
chdir /usr/src/local/mgr
sh ./Configure
make first
make depend
make install
make clean
Potrebbe essere saggio, prima di far partire make, dare uno sguardo al
Configfile
generato dallo script Configure
,
controllando che sembri ragionevole.
(Come minimo un m4 (il /usr/bin/m4
dei Sun) si ferma subito
creando un Configfile
cortissimo.
Se accade questo, bisogna editare a mano una copia di
Configfile.sun
o Configfile.lx
)
Si può anche editare make all
in ogni directory in cui sia
stato creato un Makefile, non appena siano state compilate ed installate
le librerie.
Il server, le librerie, e alcuni client sono stati lintati, ma molti
client sono scritti in K&R C, e fanno generare molti warning
al compilatore.
Si possono aggiungere od omettere molti flag nella variabile MGRFGLAGS in Configfile per modificare alcune caratteristiche opzionali del server, ossia:
modifica il file utmp così da permettere il funzionamento di "who"
inserisce del codice che permette di muovere il cursore con il mouse in vi
abilita la possibilità di selezionare con l'opzione -d un output di debug
utilizza l'operazione XOR nel tracciamento del mouse
abilita i comandi da tastiera, senza l'utilizzo del mouse
usa uno scheduling diverso dal round-robin standard, dando una priorità più alta alla finestra attiva
abilita il supporto per il copia/incolla fra le finestre.
forza l'allineamento della finestra sul confine del byte, per una maggiore velocità di scrolling ( solo nelle modalità monocromatiche)
uccide le finestre nel caso che la tty riporti un errore di i/o
usa solo parte dello schermo ( pari al valore della variabile di ambiente $MGRSIZE)
non permette lo stacking degli eventi
attiva il beep
nei Sun legge l'input di MGR
dalla tastiera, invece che da
stdin. Questo permette la redirezione a una finestra dei messaggi
della console.
abilita il supporto per il movimento frazionale dei caratteri permettendo così l'uso di font proporzionali
supporto esteso per i menu ( sperimentale )
estensione per fare moviole: tutte le operazioni vengono salvate su di un file per un successivo replay -- non del tutto funzionante su Linux
nei mouse a due tasti, emula il bottone di mezzo premendo insieme gli altri 2.
La macro BITBLITFLAGS deve contenere -DBANKED
se si sta provando
il supporto per la SVGA a colori.
Un convertitore genera il codice C per le variabili statiche contenenti le icone e i font dai file corrispondenti.
Non tutti i client vengono compilati ed installati dai Makefile.
I client che si trovano sotto src/clients
e che hanno i nomi
capitalizzati, o che non vengono compilati dai Makefile forniti possono
presentare problemi durante la compilazione o l'esecuzione, ma
può essere interessante farci un po' di hacking.
Molti dei driver video nella directory libbitblit
sono di
interesse soprattutto archeologico. Qualche volta rovistando nelle tombe
può saltare fuori qualcosa di interessante.
A un certo punto controlla che i tuoi file /etc/termcap
e/o
terminfo
contengano le entrate per i terminali MGR
come quelli che si trovano nella directory misc
. Se tutto il
tuo software controlla $TERMCAP nell'ambiente , questo non
è più necessario, finché fai partire
eval `set_termcap`
in ogni finestra.
MGR funziona meglio se gira setuid root, poiché cerca di cambiare le proprietà dei pty e scrivere nel file utmp. Questo aiuta il gestore di icone ify a lavorare meglio e il meccanismo di trasmissione degli eventi ad essere più sicuro. Su Linux sono necessarie le permissioni del root per l'input/output sullo schermo. D'altra parte, tu decidi se fidarti o no.
Nelle versioni intorno alla 0.62 c'erano problemi sul Sun usando la csh come shell di default. I programmi sembravano girare in un gruppo di processi diverso da quello del gruppo di processi di primo piano del pty della finestra, in contrasto alle man-page e alle specifiche POSIX. Non c'era nessun problema con bash, sh o rc. Qualcuno ha un idea del perché ?