Nota: le pagine relative al confronto tra Zx Spectrum e Commodore 64 cominciano da qui!


Anzitutto chiariamo: non siamo noi che siamo razzisti, sono loro che sono commodoriani ;-)

E tutto questo fin dal 1982, anno dell'uscita sul mercato del colossale Sinclair ZX Spectrum e del mefitico puzzolentissimo Commodore 64.

I sessantaquattristi sono degli ultrà da stadio di serie infima, quelli che la domenica non importa niente della partita, importa solo il poter dire a fine giornata di aver dato "una buona lezione" alla tifoseria opposta, a costo di inventarsi storie di tutti i tipi. Ed infatti s'imbestialiscono quando una timida voce (nel caso in esame, la mia) umilmente e sommessamente suggerisce alcuni drammaticamente feroci spunti di riflessione.

Nessuna delle pagine del mio sito mi ha meritato collezioni di commenti più estremi. Quella pagina di storia, invece, ha provocato nel corso degli anni un'inviperita montagna di commenti, riconducibili a quattro categorie:

1) gli spectrumisti che mi hanno inondato di complimenti, fino alle lacrime, perché magari a distanza di tanti anni pensavano che avrebbero ricevuto giustizia solo nell'altro mondo;

2) i commodoriani pentiti, che finalmente avevano il coraggio di ammettere che in fondo in fondo quelle cose le pensavano anche loro all'epoca, e che finalmente avevano occasione di metter fuori il segreto più nascosto del loro animo: che cioè avevano sempre compresso nell'angolo più profondo della propria mente il dubbio "ma possibile che io sono l'unico fesso che usa il C64 solo per giocare? (oops, volevo dire: duplicare giochini)". Fra parentesi buona parte del successo dell'Amiga era dovuto proprio alla feroce reazione dei frustrati del C64, che finalmente "producevano effetti tridimensionali" e musiche di tutto rispetto...

3) i commodoriani impenitenti, che hanno sbraitato come quei bambini a cui gli si svela la terribile verità - che cioè Babbo Natale non esiste. Tipicamente cominciano la loro filippica col dichiararsi al di sopra delle parti... ;-)

Il Commodore 64 lo hanno costruito i commerciali. Ci fu una riunione di tutti i manager, che neanche sapevano cos'era un computer: e infatti, come in tutti gli uffici commerciali, quanto più erano ignoranti, tanto più volevano dire la loro.

Venne il primo, fanatico del risparmio, peggio di zio Paperone, che disse che per venderne molti bisognava tenere il prezzo basso. E così si riciclò il preistorico Basic V2, si recuperò un processore economico, etc.

Venne il secondo, maniaco dell'aggettivo "professionale". Ed allora ecco i tasti funzione, il tastierone, l'alimentatore formato famiglia, tutto come il Vic 20, con un po' di colore in più, e perfino i "64k RAM" (poco importa le liti coi tecnici, quando si tratterà di far entrare in 64k RAM, ROM, area periferiche e tutto il resto).

Venne il terzo, che disse che l'importante erano i giochi. E furono le porte joystick, il chip sonoro, quello grafico con gli sprite ("ma vuoi mica che dei ragazzotti si lamentino dei pixelloni?").

Venne il quarto, che disse che come per il Vic 20 avrebbero fatto soldi a palate ricarrozzando dei mangiacassette bulk per poi rivenderli a peso d'oro come irrinunciabile optional, e ricordò che nei magazzini c'erano quantità allucinanti di drive per dischetti 1541 lenti come il cucco, che bisognava riciclare in qualche modo... pardon, "allo stesso modo".

Venne il quinto, quello che "la pubblicità è tutto". E fu la tastiera con i caratterini grafici, il nome pomposo "Commodore 64", e le campagne pubblicitarie che avrebbero fatto un baffo ai vari Roberto, Midiri, Vanna Marchi nei loro momenti d'oro.

In fondo in fondo il C64 è un collage di pezzi, messo insieme alla carlona per svuotare le aree più polverose dei magazzini, e contemporaneamente sostenuto da una pubblicità martellante che sarà poi l'unica vera chiave del suo successo. Non c'è un'idea trainante, non c'è un progetto completo: c'è solo un guazzabuglio di idee, spesso in contrasto tra loro, e una martellantissima campagna pubblicitaria.

Per lo ZX Spectrum la fase di progettazione è stata completamente diversa: un pozzo di idee coordinato rigorosamente da sir Clive Sinclair. Un'unica mente che pur non arrivando al più remoto dei dettagli, ne ha dettato la filosofia, le linee guida. Facciamolo economico, ma facciamolo bene. Gli smanettoni che vogliono smanettare (cioè gli esperti di computer di domani) avranno pane per i loro denti: un unico modo grafico indirizzabile comodamente fino al singolo pixel, Basic facile e "sui tasti", processore famoso e veloce, prezzo stracciato per smanettoni squattrinati, etc: insomma, una macchina didattica con un nugolo di possibilità. Il suono? Basterà un ronzatore piezoelettrico. Casing e tastiera? In economia, ma senza sacrificare all'estetica. Interfacce? Diamo loro un bus aperto e documentato, e vedrai che se le progetteranno da soli (così come è poi davvero avvenuto).

Erano tempi in cui ognuno si inventava un'idea, ma le uniche due strategie vincenti erano state le due sopra descritte.


Breve divagazione 1: gli Z80/Z80A ed i 6502/6510

Se in qualche pagina internet trovaste scritto che il MOS 6510 del Commodore 64 sarebbe tutto sommato confrontabile allo Zilog Z80A del Sinclair Zx Spectrum, beh, complimenti: avete appena trovato le pagine di qualche sfegatato sessantaquattrista.

Come già ampiamente e inequivocabilmente dimostrato in molte pagine di questo sito, i 6502/6510 sono nettamente inferiori agli Z80/Z80A:


Breve divagazione 2: la fantomatica legge "20-80" (o "10-90")

Per buona parte dei complessi processori presenti sul mercato da qualche decennio a questa parte, si poneva il curioso problema detto "20-80" (oppure, da alcuni più pessimisti, "10-90"), e cioè durante il funzionamento, il processore investiva l'80% del tempo col 20% delle istruzioni disponibili, e il restante 20% del tempo col restante 80% delle istruzioni disponibili.

L'argomento, teoricamente accattivante, non può essere arbitrariamente calato dall'alto su un computer già esistente da decenni e per il quale si può direttamente verificare l'affermazione, disassemblando per esempio qualche software o il sistema operativo (nel nostro caso, la ROM dello Spectrum).

Chi ha avuto occasione di disassemblare codice altrui, ha certamente notato che la legge "20-80" (o peggio, "10-90") appartiene a due àmbiti ben precisi:

  1. i processori maldestramente progettati; per esempio laddove i registri alternativi all'accumulatore non servono quasi a niente (se non a salvarvi i valori dell'accumulatore in modo più "economico" e "veloce" rispetto al salvarli nella memoria centrale): in tal caso la legge "20-80" è l'inevitabile risultato di un processore imbecille;
  2. i software scritti con un compilatore non abbastanza intelligente (che pertanto, ad ogni istruzione ad alto livello, tende sempre ad associarvi le stesse istruzioni: l'utilizzo ottimale dei registri dei processori è infatti un problema NP-completo).

La legge "20-80" non si applica allo Spectrum ma al patetico Commodore 64.

Non solo si può verificare che sullo Spectrum i registri e il set di istruzioni dello Z80 sono utilizzati massicciamente (non c'è solo "il protagonismo dell'accumulatore") sia nella ROM che nei software di più diverso tipo.

Ma si può anche verificare, con lo stesso metodo (cioè col disassemblare la ROM e qualche software del C64), che sul Commodore 64 si applica tragicamente la legge "10-90", dovendo barcamenarsi disperatamente nei tre registri ad 8 bit presenti sul MOS 6510.

Chi come me ha scritto software in assembler Z80 e 6502 può immediatamente confermare questi assunti.

Ancora una volta, i commodoriani utilizzano miseri trucchetti e citano teorie che non conoscono, riempiendosi la bocca di paroloni come "20-80" tentando di nascondere la vergognosa situazione commodoriana dietro slogan e nomi altisonanti, esattamente come nei primi anni ottanta, quando il loro immenso "Professional" computer si rivelava per quello che era: un videogioco basato sugli sprite (quindi sostanzialmente incapace) che aveva sempre il fiatone nel tentare almeno di inseguire o almeno imitare lo Spectrum.


Breve divagazione 3: il Commodore 64 con "38k" RAM

È seccante dover ripetere ogni volta le stesse cose (che si trovano già spiegate ampiamente qui e qui), ma... repetita juvant.

Il Commodore 64 "avrebbe" 64k RAM, ma incredibilmente quel pezzo lì non si può usare, quell'altro non si può scaricare, quell'altro è meglio lasciarlo in pace, quell'altro ancora sta disperso in mezzo ad altri banchi, isolato dal resto...

La mappa di memoria dello Spectrum è quantomai semplice: 16k riservati alla ROM, i successivi 6912 bytes riservati allo schermo, mezzo kilobyte circa tra buffer stampante e variabili del Basic, e tutto il resto, fino all'ultimo byte dei 64k totali indirizzabili, utilizzabile immediatamente anche dal Basic.

La mappa di memoria del C64 è quantomai complicata: I/O memory-mapped, aree "di sistema", aree "non usate"... ed infatti il trogloditico Basic V2 del Commodore 64 parte dichiarando miseramente "38911 bytes free": trentotto kilobytes!

La soluzione ideale per il C64 sarebbe stata la paginazione (che vedremo introdotta nello Spectrum 128 e, successivamente, nel C128: tragicomicamente, nella sua breve vita il C128 resisterà solo come clone del C64).

Ma i progettisti del C64, o hanno tentato inutilmente di avere la botte piena e la moglie ubriaca, oppure erano ubriachi proprio loro.

I commodoriani allegano patetiche giustificazioni che possono trarre in inganno il programmatore dilettante: dicono, per esempio, che il kernal si può "scaricare" e ottenervi, al suo posto, della RAM. Verissimo, ma da quel momento in poi il salvataggio su nastro e su disco ve li potete scordare (l'effetto, cioè, è quello di rendere inutilizzabile l'I/O: dunque può essere sfruttato solo dai giochini per i quali non fa problema dover resettare la macchina al termine!)

È anche vero che uno si può riscrivere parti del kernal per usare - per esempio - almeno il sottosistema a dischetti (il lentissimo e farraginoso drive 1541, eclatante esempio di lumaconeria esasperata, più lento di un comune "turbotape" dello Zx Spectrum). Ma questo significherebbe fare una fatica immane per "ricostruire" il sistema operativo che la foga di recuperare qualche kilobyte di RAM ha fatto sprecare!

Per capire cosa intendo, immaginate che qualche software che utilizzate per Windows abbia necessità di eliminare Windows dalla memoria RAM per guadagnarvi spazio, e perciò abbia di conseguenza necessità di inventarsi routine per disegnare finestre e testo, e per salvare su disco almeno i record dell'ultima sessione di gioco... Un assurdo!


Breve divagazione 4: la "potente" grafica (ah, ah, ah!) ed il "potente" suono (ah, ah, ah!) del C64

Come già detto qui e altrove, il Commodore Vic-20 nacque per riciclare una partita di chip originariamente destinati al mercato dei videogiochi, che era rimasta invenduta.

Col Commodore 64 ci sono indizi gravi, precisi e concordanti dell'evidente "riciclaggio" di materiale destinato al mercato dei videogiochi: la grafica a "sprite", il generatore sonoro con ADSR, le due porte joystick...

Sullo Spectrum, invece, con tutta evidenza non si voleva una "macchina per videogiochi": per esempio, la fissazione di dare all'utente uno schermo veramente grafico indirizzabile pixel per pixel.

Lo schermo "grafico" c'era - con buona dose di dolori di pancia e consumo spropositato di memoria - anche sul C64. Ma era un'aggiunta postuma e posticcia, probabilmente arrivata lì in chiusura di progetto. Infatti il C64 nasce con un modo testo (non si "colora" un pixel, ma si "scrive un intero carattere"), con una mostruosamente ridicola quantità di caratterini grafici disegnati sulla tastiera stessa! (quanta fatica sprecata, in fase di progettazione!)

La semplicità di utilizzo di grafica e suono sullo Spectrum fa il paio esatto con la terribile complessità sul C64. In uno dei numeri di Sinclair Computer uno spectrummista italiano si era sbizzarrito a inserire un listato Basic che suonava un intero pezzo di pianoforte, listato composto esclusivamente da istruzioni BEEP: ed in caso di errori di trascrizione, sarebbe stato facilissimo risalire alla nota sbagliata, visto che la sintassi di tale comando era "numero nota, durata in secondi".

Ebbene, sul C64, con tanta "potente" musica, non si è mai visto niente di simile! Con tanto "potente" SID, con tanto glorioso filtro ADSR, per ottenere qualche nota occorreva affrontare dolorosissime sequenze di POKE...

Insomma, la "potente" grafica e il "potente" suono del C64 consistevano di alcune note caratteristiche:

Risultato finale: il C64 "macchina per videogiochi" (rigorosamente "americani") anche per coloro che obbedendo alla pubblicità avevano creduto di comprare il computer del futuro per entrare nell'informatica "dalla porta principale"!


Breve divagazione 5: il Basic, questo sconosciuto...

Tra i tanti famosissimi limiti del miserabile Basic V2 del Commodore 64, c'è quello dell'utilizzo di trucchetti e mezzucci per far sembrare più veloce l'esecuzione di programmi banali, come ad esempio l'uso di variabili intere al posto delle floating-point.

La presunta "lentezza" del Basic dello Spectrum era dovuta all'uso della sola matematica in virgola mobile. Pertanto anche operazioni banali come un ciclo FOR o il risultato di un confronto a<=b utilizzavano e producevano numeri in virgola mobile.

Nel momento in cui sul Basic del Commodore 64 si vanno ad utilizzare operazioni in virgola mobile (peraltro dotate di precisione inferiore a quella dello Spectrum), si nota il drammatico rallentamento.

Un'altra ragione della presunta velocità di alcune operazioni del Basic V2 del C64 era la gestione a dir poco squinternata degli array, delle stringhe e dell'heap di sistema (come il famoso bug dell'heap che rendeva a dir poco ardua la realizzazione di un software gestionale sul quale si potesse lavorare continuatamente per una giornata intera).

È infatti ovvio che un Basic che permetta stringhe che occupino anche tutta la memoria rimasta sarà - almeno sulla gestione delle stringhe - talvolta più lento di uno che invece preveda un patetico limite di 255 caratteri sulle stringhe!


Ancora sul lungolago...

home page - send e-mail