Greetings Professor Falken

Domenica 20 Luglio, 2008

Io ho una tradizione che porto avanti da ben 25 anni! Che festeggio ben volentieri! Dall’ormai lontano 1983, anno della sua uscita, una volta all’anno non posso esimermi dalla visione di WarGames (Giochi di guerra) il film che ha deciso, in qualche modo, il mio destino lavorativo.

WarGames

WarGames, nella sua "attuale" semplicità, fu all’epoca un vero successo, soprattutto tra gli appassionati di informatica. Ancora limitatamente diffusa, l’informatica domestica - concentrata soprattutto nelle console da gioco seguite da riviste specializzate - era ai suoi albori. In italia, poi, il divario con gli stati uniti era enorme (e in parte ancora lo è). La visione del film mi fece innamorare immediatamente di quelle meravigliose tecnologie. A quel tempo acquistavo riviste americane (come Compute! Gazette) che mostravano un mondo affascinante e - a me - totalmente sconosciuto.

Continua a leggere… »

Post correlati

L’operazione aritmetica modulo

Sabato 31 Maggio, 2008

Il "modulo" è una delle operazioni aritmentiche disponibili su praticamente tutti i linguaggi di programmazione (l'ho usato la prima volta con il Basic del Commodore 64). Può comparire come semplice operatore, come nel caso di Actionscript o Javascript che usano entrambi il carattere "percento" (a % b), o come metodo o istruzione. Per gli sviluppatori può risultare utile in contesti apparentemente diversi tra loro. Gskinner ne ha parlato poco tempo fa, mostrando alcuni classici, ma interessanti, esempi.

Semplificando, l'operazione modulo tra due numeri restituisce il resto della loro divisione. Per completezza diciamo che l'operazione di modulo è un argomento assai vasto, che ho trattato anche in La cifratura RSA! Questa volta, tuttavia, non parleremo di codici o cifrature, ma di cose utili e molto più semplici.

Divisibile per... alternare

Il primo uso che possiamo fare dell'operazione di modulo è quella di determinare se un numero a è divisibile per un numero b! Se il risultatto di a % b(userò qui la notazione % per indicare l'operazione di modulo) è zero, a è divisibile per b. Ricordo che quando ebbi a che fare con un problema simile non conoscevo l'operazione di modulo. Sul Commodore 64 mi serviva sapere se un numero era divisibile per 2. All'epoca usai questa sintassi (ho ritrovato il codice origionale - anno 1983):

CODE:
  1. 10 INPUT A
  2. 12 B=A/2: IF B = INT(B) THEN PRINT "OK IL NUMERO "A" E' PARI":GOTO 10
  3. 14 PRINT "IL NUMERO "A" E' DISPARI":GOTO 10

Il BASIC del Commodore 64, comunque, non possedeva l'operazione di modulo - almeno che io ricordi!!

Continua a leggere... »

Post correlati

Linguaggi di sviluppo

Mercoledì 5 Marzo, 2008

Ho "riesumato" questo mio articolo scritto un po' di anni fa. L'ho leggermente rivisto, aggiornando qualcosina qua e là, tuttavia credo sia ancora attuale ed interessante.

INTRODUZIONE

Che cos'è un linguaggio di sviluppo? Un elaboratore elettronico, alias PC (Personal Computer), ha un suo linguaggio personale. Questo linguaggio viene chiamato codice macchina, per intendere che ogni macchina, quindi ogni elaboratore (PC Compatibili, Apple, Unix, ecc...), ne ha uno esclusivo e proprietario. I programmi che vediamo "girare" sul nostro PC vengono principalmente eseguiti da quel misterioso oggetto chiamato microprocessore. Questo rappresenta il cuore, l'unità intelligente, di ogni elaboratore elettronico. In realtà una applicazione non viene eseguita solo dal microprocessore ma si appoggia, per così dire, a quello che viene chiamato sistema operativo: uno strato software fornito dal produttore della macchina (si veda, ad esempio, i Macintosh della Apple). I PC compatibili, ad esempio, che montano i famosi microprocessori Pentium, possono avere come sistema operativo i vari Windows forniti dalla società di Redmond di Bill Gates Microsoft (Windows 95, 98, 2000 ecc...) e, ultimamente, anche sistemi operativi alternativi completamente gratuiti come Linux e derivati. Un'applicazione, quindi, dev'essere scritta per un particolare sistema operativo più che per un particolare microprocessore. Questo perchè il software che si scrive oggi si pone ad un livello più alto rispetto alla macchina stessa (al suo Hardware).
Inoltre il sistema operativo fornisce tutta una serie di funzionalità atte a semplificare la vita dello sviluppatore che non deve, quindi, partire da zero nella stesura di un programma.
I linguaggi di programmazione, come il C, il Pascal, l'Assembly, sono stati inventati per avvicinare il modo di esprimersi degli esseri umani al modo con cui, invece, "ragiona" un computer. Continua a leggere... »

Post correlati

C’era una volta…

Mercoledì 27 Febbraio, 2008

Annuario Videogiochi 1984 "C'era una volta" un tempo in cui la parola Personal Computer non aveva significato. Era il tempo delle console, piccoli marchingegni che si collegavano alla TV, i precursori delle Playstation di oggi. E nelle riviste se ne vedevano davvero di tutti i colori: Intellivision, Atari, Philips, grandi macchine - per l'epoca - che garantivano divertimento unito a stupore. Ed ecco le prime riviste, come l'annuario di VideoGiochi (nella foto) del 1984.  Le pubblicità, accattivanti per l'epoca, mostravano una tecnologia mai vista prima. C'era la Colecovision, con il suo Video Game System, «una console domestica per videogames su cartucce standard Colecovision», all'eccezionale prezzo di 485.000 Lire.

Continua a leggere... »

Post correlati

Auguri

Martedì 11 Dicembre, 2007

Commodore 64

E tutto cominciò da qui... auguri al mio primo Personal Computer, come veniva pubblicizzato all'epoca che, nonostante sia ormai tecnicamente superato, rimarrà sempre insuperabile nell'animo e nel ricordo di molti!

Led Zeppelin

Tra le mie passione c'è la batteria, strumento musicale meraviglioso. Non posso quindi esimermi nel ricordare i grandissimi Led Zeppelin! Bentornati...

Post correlati

Emulatore Assembler 6502

Mercoledì 14 Marzo, 2007

Visto che siamo in tema di nostalgia, ecco un simpatico emulatore dello storico microprocessore del 6502; montato negli anni '80 in console e computer come l'Apple, Nintendo NS e il Commodore 64 (che poi passo al 6510, ...). Questo simpatico gioiellino è scritto interamente in Javascript, funzionante in pratica su tutti i browser (da Safari a Opera), con il solo difetto di essere leggermente lento. Tuttavia vale la pena provarlo. Sul sito (http://www.6502asm.com/) trovate alcuni simpatici esempi, lenti ma curiosi.

Per gli ex programmatori Assembly Commodore 64 considerate che lo schermo video non visualizza i caratteri, quindi codici come questo qui sotto non funzioneranno:

CODE:
  1. start: LDA #$65
  2.        JSR $FFD2
  3.        RTS

Inoltre va considerato che la mappatura video è differente da quella del Commodore 64, quindi non pensate in questi termini (nemmeno i POKE 53280 e 53281 funzioneranno - $D020 e $D021). In questo emultatore il video parte dall'indirizzo $200 (e non $400, 1024 in decimale) fino a $5ff, come anche l'area video è di 32 x 32 pixel (per un totale di 1024).
Anche gli IRQ non sono implementati, quindi istruzioni come CLI, RTI e SEI non avranno effetto. Ulteriori dettagli su questo emultatore (come timer, input da tastiera, ecc...) sono reperibili all'indirizzo:

Informazioni sull'emultatore

Tutto quello che serve per il 6502

Post correlati

Codice per Commodore 64

Lunedì 5 Marzo, 2007

Ho recuperato il mio blocchetto del Commodore 64 per verificare il porting dell'emultatore FC64 proposto quache Post fa! Purtroppo alcune funzionalità della tastiera non sono proprio riuscito a farle funzionare, quindi non ho potuto provare e inserire alcuni listati interessanti (vecchi ricordi nostalgici). Se ricordate, il Commodore 64 aveva combinazioni speciali usate durante la scrittura del codice BASIC, come il simbolo della R in negativo (reverse) o il cuoricino, sempre in negativo, per pulire lo schermo. Se qualcuno trova il modo di farlo... Tuttavia alcune limitazioni possono essere aggirate ricorrendo al comando BASIC CHR$. Ad esempio per pulire lo schermo basta usare PRINT CHR$(147), che corrisponde al cuoricino in negativo!
Altri Tricks, come bloccare e sbloccare la combinazione RUN/STOP RESTORE sono anch'essi fuori dalla mia portata... per ora.

Questa è la lista del codice che ho provate e funziona:

CODE:
  1. POKE 53280,4
  2. SYS 64766

INPUT CON LE VIRGOLETTE

Mette le doppie virgolette dopo la richiesta da tastiera

CODE:
  1. 100 POKE 198,1:POKE 631,34
  2. 110 INPUT A$

LINEA VERTICALE CON LE POKE

Crea una linea animata verticale

CODE:
  1. 100 PRINT CHR$(147)
  2. 110 FOR R = 1 TO 24
  3. 120 POKE 55296+33+40*R,5
  4. 130 POKE 1024+33+40*R,71
  5. 140 NEXT R

RESTRINGIMENTO DELLO SCHERMO

Accesso diretto al VIC Video, permette di restringere orizzonatalmente e verticalmente l'area visibile del Commodore 64. Usato per gli scrool orizzontale e verticale.

CODE:
  1. POKE 53270,32
  2. POKE 53265,23

BLOCCARE IL COMANDO LIST

Scrivere un qualsiasi listato e digitate il seguente codice. Provate ora a digitare LIST e vedrete che il listato non è più visualizzabile, nonostante al RUN il codice funzioni uguale.

CODE:
  1. POKE 775,200

CURSORE LAMPEGGIANTE

CODE:
  1. POKE 788,55

SOSTITUIRE LA SCRITTA READY. CON EDDIE!

Le prime 3 righe copiano il Kernel dalla ROM alla RAM, considerate che ci mette un po', almeno un minutino a copiare il Kernel, ma le vale la pena. Le ultime sostituiscono la scritta "READY." con "EDDIE!". Ricordatevi alla fine di digitare POKE 1,54 - che sposta il puntamento al Kernel dalla ROM alla RAM. Se volete provare con altri caratteri le volte successive basta eseguire le righe di codice dalla 40 in poi, quindi usate RUN 40

CODE:
  1. 10 FOR J = 40960 TO 49151
  2. 20 POKE J, PEEK(J)
  3. 30 NEXT J
  4. 40 FOR J = 41848 TO 41853
  5. 50 READ L$
  6. 60 POKE J, ASC(L$)
  7. 70 NEXT J
  8. 80 DATA E,D,D,I,E,!
  9.  
  10. POKE 1,54

SE ACCIDENTALMENTE DIGITATE "NEW"

Questa riga permette di recuperare un listato in caso si digiti accidentalmente il comando NEW

CODE:
  1. POKE 2050,1:SYS 42291:POKE 45,PEEK(34):POKE 46,PEEK(35):CLR

Ho provato anche codice Assembly, inserendolo come DATA e altre POKE. Tutto sembra funzionare.
Di esempi e codicilli ne ho davvero molti, quindi mi fermo qui - per ora. Spero che quanto prima venga implementato nell'emulatore anche il SID, così da far rivivere tanti effetti e suoni del vecchio - ma sempre meraviglioso - Commodore 64! Anche un Assembly non sarebbe male... ;)

Post correlati

Commodore 64 Web Emulator

Venerdì 2 Marzo, 2007

Se leggete gli ultimi due Post che ho scritto (Net Software e Amiga Web Emulator), questo sembra la diretta conseguenza. Apropos, quindi, di emulatori e Flash 9 con ActionScript 3.0, ecco qualcosa di veramente grandioso, nostalgia a parte. Il progetto si chiama FC64 e vuole essere un'emulatore a basso livello del glorioso Commodore 64! È stato scritto in ActionScript 3.0, quindi per visualizzare il filmato (mi sento strano a chiamare filmato una cosa di questa genere...) dovete installare la versione 9 del plugin di Adobe.


Commodore 64 - Flash 9 Web Emulator

Il progetto non è ancora completato, mancano alcuni dettagli relativi all'implementazione di tutte le parti dell'emultatore, come il SID (Sound Interface Device), i CIA Timer, la collisione degli sprite, ecc... (una lista completa la trovate sul sito FC64 ).
Tuttavia è possibile addirittura caricare una serie di giochini funzionanti, come il mitico ed indimenticabile Galaga!

Post correlati