1 giu 2009

Uscita video composito per lo ZX-Spectrum

Qualche settimana fa ho acquistato su e-bay un Sinclair ZX-Spectrum; si tratta di uno dei primissimi home-computers (come si chiamavano allora), entrato in produzione circa 27 anni fa; incidentalmente fu anche il mio primo computer.
La CPU alla base della macchina era uno Z80 a 3.5 MHz (si noti che il principale concorrente dell'epoca, il C=64, aveva una CPU 6510 a 0.985 MHz)
A fine 1982 esistevano due versioni in commercio, una con 16kb di ram ed una con 48kb; mio padre acquistò la versione più economica, espansa in seguito a 48kb.
Rivendemmo il mio primo computer qualche anno dopo ad un vicino di casa... Era già nata l'Amiga, il mondo dell'informatica domestica aveva subito le sue prime accelerazioni.
Tornando ad oggi, le ragioni per lo sconsiderato acquisto di un esemplare funzionante di Spectrum vanno certamente ricercate nella demenza presenile e nel desiderio di rivivere un'infanzia perduta: desiderio pleonastico e velleitario perchè la realtà vince sempre, ed in questo specifico caso la realtà si è presentata nella forma di un problema di visualizzazione dell'output video.
Nel 1982 gli home computer avevano un'uscita a radiofrequenza sulla banda UHF, in modo che i televisori potessero mostrare l'output video sintonizzandosi su un dato canale (tipicamente il canale 36). La sintonia dell'epoca era manuale: con un cacciavite o con una manopolina era possibile regolare il sintonizzatore del TV in modo da ottenere un'immagine fissa dell'output video del computer.
Bene, al giorno d'oggi i televisori hanno (credo) tutti la sintonia automatica, ed il meglio che sono riuscito ad ottenere con il mio TV è una confusa schermata di righe orizzontali, di poco migliore rispetto al rumore bianco.
Perché dunque non uscire direttamente in video composito (connettore RCA) dallo spectrum bypassando la modulazione a RF?
Sul web ci sono indicazioni precise su come ottenere questo risultato...

Incominciamo:
1) rimuoviamo la parte superiore del case di plastica, svitando le 5 viti presenti nella parte inferiore del computer.
Ora occorre molta attenzione nel rimuovere i due nastri che portano il segnale della tastiera: si tratta di sottili strisce di plastica che devono essere estratte dai relativi socket con cautela.

2) ora estraiamo la scheda dal case e rimuoviamo la copertura del modulatore RF (in alto a sinistra sulla scheda.


3) è il momento di agire: dissaldiamo le due connessioni evidenziate.

...ed ecco fatto:

4) ora, all'interno del modulatore RF, dobbiamo dissaldare la resistenza dal conduttore centrale del connettore coassiale.

5) con qualche centimetro di cavo sottile, uniamo il conduttore centrale del connettore coassiale con l'uscita video della scheda, presente nella connessione di sinistra che abbiamo dissaldato al punto 3...

Possiamo fare passare il cavetto per il foro presente sulla sinistra della scatoletta metallica del modulatore RF.



Abbiamo finito! Richiudiamo la scatola del modulatore RF (ormai bypassato), rimettiamo a posto il case, infiliamo con estrema delicatezza i nastri della tastiera nei relativi socket e riavvitiamo le viti.

6 gen 2009

Configurare eclipse per JPlanets

Con questo post voglio illustrare come si configura l'IDE Eclipse per compilare, modificare, debuggare ed eseguire il progetto JPlanets.
Le indicazioni sono valide per qualsiasi piattaforma: GNU/Linux, Windows, MacOsX; le immagini si riferiscono ad Eclipse 3.2 su MacOsX 10.4 (Tiger).

0) avviamo Eclipse;
1) dal menù File, scegliamo New / Project;
2) apparirà una finestra simile a quella mostrata, apriamo la cartella CVS e scegliamo la voce Project from CVS quindi premiamo il pulsante Next;
3) Nella finestra che ci viene presentata, selezioniamo la voce Create a new repository location e premiamo il pulsante Next;

4) Nella finestra di configurazione, riempiamo i campi con questi valori:
  • Host: jplanets.cvs.sourceforge.net
  • Repository path: /cvsroot/jplanets
  • User: anonymous
  • Connection type: pserver
...lasciamo vuoto il campo password e premiamo il pulsante Next;
5) come nome del modulo mettiamo jplanets;


6) abbiamo finito!


Note:
con questi semplici passi abbiamo ottenuto una working copy del progetto JPlanets come utenti anonimi; per contribuire al progetto occorre accedere come sviluppatori, che operativamente si traduce in:
0) essere registrati come sviluppatori del progetto jplanets
1) modificare il punto 4 inserendo le proprie credenziali (user/password) e selezionando come Connection type la voce extssh. Suggerisco inoltre di biffare la casella Save password.

2 ott 2008

Riuso e OOP

Oggi sono in vena di ribadire un'ovvietà.
Certamente vi sarà capitato (o vi capiterà) di vivere la seguente esperienza:
il vostro capo/responsabile vi dice che dovete svolgere un dato compito, portare a termine un progetto, ecc. e che sarebbe meglio ricorrere al riuso di parti di questo o quest'altro progetto esistente.
Occhio, adesso arriva l'ovvietà: l'operazione è conveniente se e solo se il progetto di partenza è stato pensato, disegnato e scritto strettamente O.O., altrimenti ecco quello che capita:


  • - vi ritrovate a copiare/incollare procedure o pezzi di procedure


  • - sporcate la vostra applicazione con codice fuori contesto


  • - costruite il vostro codice sulle macerie di un altro progetto, ottenendo un design pasticciato, precludendovi la possibilità di trovare una soluzione migliore.

    Questa sorta di riuso all'italiana fa parte del triste retaggio anche noto come "arte di arrangiarsi", applicato al processo di sviluppo del software:
  • - FASE UNO: scrivi un programmino in fretta, non documentarlo, non pensare nemmeno a un design. Ah, ancora una cosa: indipendentemente dal linguaggio scelto, se proprio devi usarli, usa gli oggetti solo pro-forma, cerca di fare tutto in modo procedurale (So che puoi farlo, non essere modesto).


  • - FASE DUE: quando servirà un'applicazione per risolvere un problema in qualche modo similare, il tuo successore (perché nel frattempo tu sarai andato a fare il technical manager dalla concorrenza) prenderà i vecchi sorgenti, e nel tentativo di tirar su qualcosa di decente nei tempi imposti farà una minestra di:


  • - reverse engineering sul tuo codice


  • - bug fixing del tuo codice


  • - cross-design tra la vecchia applicazione e quella che si vorrebbe


  • - codifica modificando le procedure (cioè il core del tuo programma)

    tutto questo naturalmente senza accorgersene, senza un planning che dia un nome alle varie fasi di sviluppo, e chiamando infine la suddetta minestra: programmazione.

    Questa è la ragione per cui è una buona idea usare librerie di classi pronte (ed esistono aziende il cui business è proprio quello di vendere componenti), mentre generalmente è una cattiva idea cercare di riusare codice scritto per risolvere in fretta un problema.