C64 Bedtime Coding – Introduzione e Basi (#01)

(Articolo di Phaze101)

Che cos’è C64 Bedtime Coding?

E’ una serie di articoli relativi alla programmazione in linguaggio Assembly 6502 sul Commodore C64. L’intenzione è di imparare a programmare divertendosi e raggiungeremo tale obiettivo scrivendo semplici giochi.

A chi è rivolto?

Questi tutorial saranno principalmente mirati ai principianti che desiderano imparare a scrivere in linguaggio assembly e, in particolare, a coloro che vogliono scrivere giochi per il C64 in questo linguaggio. Il mio obiettivo è quello di mostrarti cose semplici che possono aiutarti a raggiungere questo obiettivo scrivendo giochi e imparando al contempo il linguaggio assembly. Se sei una di quelle persone che hanno sempre voluto imparare a scrivere giochi sul C64 e non sei mai riuscito a imparare l’assembly, questa serie fa per te. Nota che manterrò le cose semplici e non entrerò nei dettagli per non confondere i principianti.

Riflettete per un momento

A tutti noi piace giocare, vero? Vi siete mai chiesti come sono fatti i giochi? Siamo tutti affascinati dalle “Demo”, in cui i programmatori mostrano cosa possono fare spingendo l’hardware al limite, ma come è possibile fare tutto ciò? Ti sembra una cosa impossibile da realizzare? Pensi di non essere capace di farlo? Bene, ti assicuro che non è necessario essere un genio per scrivere giochi semplici. Tutto ciò di cui hai bisogno è la pazienza. Scrivere giochi in Basic è più semplice rispetto a scriverli in Assembly, ma con un po’ di pazienza e l’apprendimento di semplici trucchetti potrai ottenere grandi risultati. Armati quindi di impegno e buona volontà e anche tu sarai presto in grado di spingere l’hardware ai limiti e ottenere così risultati più avanzati di quelli che il Basic può offrirti.

Cosa hai bisogno di sapere?

Ci sono alcune cose che devi sapere per poter programmare in assembly e scrivere giochi:

  1. Conoscere il sistema numerico (binario e esadecimale)
  2. Conoscere e comprendere il set di istruzioni del 6502 e conoscere lo “Status Register”.
  3. Conoscere l’Assembler e le sue direttive.
  4. Conoscere il proprio hardware, che in questo caso è il Commodore 64, e come funziona.
  5. Conoscere i registri speciali dell’hardware.
  6. Conoscere alcune tecniche di gioco.

Tutto quanto scritto sopra sarà oggetto nelle prossime settimane / mesi di questa serie di articoli. Proverò a mostrarti quanto scritto sopra scrivendo un semplice gioco spiegando i concetti di cui sopra man mano che li incontreremo.

Prima di continuare

In primo luogo voglio dire che non mi considero un esperto in materia. Come molti mi piace giocare, ma allo stesso tempo sono sempre stato interessato a come i giochi vengono scritti (programmati / codificati) e a come replicarne le meccaniche. È il mio hobby e la mia passione. Ho fatto le mie ricerche sull’argomento. Ho scritto giochi per hobby ma mai come professionista. Inoltre, né l’inglese né l’italiano sono la mia prima lingua quindi ti prego di scusarmi per eventuali errori di ortografia, errori grammaticali o qualsiasi altra cosa relativa a entrambe le lingue. Proverò a scrivere ogni articolo in inglese e in italiano. Se stai leggendo questo articolo, è perché ti interessa imparare come programmare in assembly o vorresti sapere come scrivere i tuoi giochi e conoscere questo argomento. Se trovi qualche errore dimmelo pure, ma fallo gentilmente.

Le Basi

Il sistema binario – Base 2 (Simbolo %)

Il sistema decimale è noto come sistema a base 10, ed è così chiamato poiché utilizza solo cifre che vanno da 0 a 9. Per i numeri più grandi di 9 riutilizziamo le stesse cifre. La posizione di una cifra all’interno del numero decimale determina il valore della cifra. Quindi le cifre 1 e 2 all’interno dei numeri 12 o 123 hanno un valore differente. Esempio di base 10

Base e Potenza 10^3 10^2 10^1 10^0
Valore Decimale 1000 100 10 1
Valore Decimale 2 5 0 4
^ = elevato alla potenza di

L’utilizzo del numero decimale precedente di 2504 è 2×1000 + 5×100 + 0x10 + 4×1, che è uguale a 2504. La stessa cosa succede nel sistema binario. Le posizioni degli 0 e degli 1 all’interno di un numero binario determinano il valore del numero. Un numero binario %1010 è diverso da %1011. Si noti che il numero binario è normalmente preceduto dal segno % per indicare proprio che si tratta di un numero binario. Nel sistema binario (base 2)

Base e Potenza 2^3 2^2 2^1 2^0
Valore Decimale 8 4 2 1
Esempio Binario 1 1 0 1
^ = elevato alla potenza di

Utilizzando il numero binario sopra di %1101 è 1×8 + 1x 4 + 0x2 + 1×1, che è uguale a 13 o %1101

Il sistema esadecimale – Base 16 (simbolo $)

Il sistema esadecimale usa il simbolo $ e precede il numero per indicare che è un numero esadecimale. Questo sistema usa come cifre i numeri da 0 a 9 e le lettere da A a F per ottenere 16 posizioni. Pertanto, dopo il numero 9, quello successivo è il numero A. A rappresenta il numero 10 in decimale, B è 11, C è 12, D è 13, E è 14 e F è 15. Come nel sistema decimale (Base 10) e in binario (Base 2) il posizionamento dei numeri e delle lettere determina la grandezza della cifra. Pertanto, il numero $00C0 e $0C00 sono diversi. In base 16 (esadecimale)

Base e Potenza 16^3 16^2 16^1 16^0
Valore Decimale 4096 256 16 1
Esempio esadecimale C 2 1 F
^=elevato alla potenza di

L’utilizzo del numero esadecimale sopra di $C21F è 12×4096 + 2×256 + 1×16 + 15×1 che è uguale a 49695 in decimale.

Chiarimenti su quanto scritto sopra

Un bit è come un interruttore che può essere su ON (1) o su OFF (0). Può avere solo questi due valori. Un byte è un gruppo di 8 bit.

Base 2 2^7 2^6 2^5 2^4 2^3 2^3 2^1 2^0 Hex
Valore 128 64 32 16 8 4 2 1  
Binario 0 0 0 0 1 1 1 1 $0F
^ = elevato alla potenza di

Come si può vedere dal numero binario sopra di %00001111 se dovessimo dividere il byte (8 bit) a metà otterremmo un nibble. Un nibble è di 4 bit e può contenere un numero compreso tra (0 – 15) o (0 – F). Pertanto, pensare in esadecimale può essere più semplice se dovessimo dividere un numero binario in 4 bit (nibble) e viceversa. Il numero esadecimale $F0 è %11110000 in binario. Anche se all’inizio potrebbe sembrare strano iniziare a pensare in esadecimale questo ha i suoi vantaggi oltre al fatto che è più facile da convertire in binario. Lo stesso è vero convertendo il binario in esadecimale. Il prossimo diagramma dovrebbe aiutarvi a capire meglio cosa abbiamo coperto.

 

Tutti L Articoli

 

Italian

Articolo 3
https://sys64738.org/2019/03/c64-bedtime-coding-ita-i-registri-della-cpu-03/

Articolo 2
https://sys64738.org/2019/03/c64-bedtime-coding-ita-linguaggio-macchina-02/

Articolo 1
https://sys64738.org/2019/03/c64-bedtime-coding-introduzione-e-basi-01/

English

Article 3
https://sys64738.org/2019/03/c64-bedtime-coding-eng-the-cpu-registers-03/

Article 2
https://sys64738.org/2019/03/c64-bedtime-coding-eng-machine-language-02/

Article 1
https://sys64738.org/2019/03/c64-bedtime-coding-introduction-basics-01/