(Articolo di Phaze101)  I Registri della CPU I registri del 6510 Nella puntata precedente abbiamo visto che la CPU usa dei propri Registri, che non sono altro che locazioni di memoria usate dalla CPU stessa per eseguire le sue funzioni. Il 6510 ha tre Registri, chiamati A (abbreviazione di accumulatore), X e Y. Esiste anche un registro di stato “Status Register(SR)” ed un registro “Program Counter (PC)” oltre ovviamente al contatore dello stack, “Stack Pointer  (SP)”. L’accumulatore (A) E’ usato per memorizzare numeri ad 8 bit da 0 a 255 (o $FF). Vi si possono caricare valori della memoria, o direttamente indicando un valore. Possiamo anche trasferire il valore dell’Accumulatore in un indirizzo di memoria. E’ l’unico registro che può essere usato per operazione aritmetiche, come l’addizione e la sottrazione. I Registri X e Y Questi registri sono in un certo qual modo identici all’accumulatore. Possono memorizzare un valore ad 8 bit. E’ anche possibile spostare un

valore dalla memoria dei registri, o indicare direttamente un valore, ed infine copiare i loro valori in una locazione di memoria. Una funzione molto potente di questi registri, che verrà descritta più avanti quando affronteremo le modalità di indirizzamento, è quella che consente di usarli come indici. Il registro di Stato (SR) Il registro di stato contiene una serie di flag (bit) che avranno valore 0 o 1 a seconda delle operazioni che la CPU sta facendo, ed è lungo 8 bit. Ad esempio quando l’operazione ha come risultato zero, viene alzato il flag Zero. Ecco la lista di questi flag.   Lo Stack Pointer (SP) Questo registro controlla il puntatore allo stack. Questo può essere paragonato ad una pila di piatti. I piatti in cima sono sempre quelli presi per primi, e se vi aggiungo un piatto, andrà sempre messo in cima. Questo vuol dire che lo stack è una coda di tipo LIFO (Last In First Out) Lo stack è usato…

(Article by Phaze101) The CPU Registers The 6510 CPU Registers In the previous article it was shown that the CPU is using its own Registers which are just memory locations within the CPU, and these permit the CPU to perform its functions. The 6510 processor has 3 Registers. These are called the A register which is short for the Accumulator, the X register and the Y register. There is also the Status Register (SR) and the Program Counter (PC) plus the Stack Pointer (SP). The Accumulator (A) This is used to store an 8-bit number from 0 to 255 or $FF. You can load a value from memory to the Accumulator. It is also possible to load a number directly to the A register. We can also transfer the Accumulator register value to memory. The accumulator is the only register that can be used for arithmetic operations such as addition and subtraction. The X and Y Registers

These registers are in a way identical to the accumulator. They can hold an 8-bit value. It is also possible to load a value from memory and store it in these registers. Same thing as the Accumulator you can also load a number directly to them. You can also store the contents of the X and Y register into memory. The X and Y registers can also be used for indexing and this is a powerful feature of these registers. I will cover this in greater detail when I will be explaining the addressing modes. The Status Register (SR) The status register has a serious of flags which are flipped (switched on or off) according to the operations that the CPU performs. It is 8 bits wide. An example of this is when an operation results in a zero then the Zero flag is set. Here is a list of the Status Register flags The Stack Pointer (SP) The Stack Pointer controls the…

(Articolo di Phaze101) Linguaggio Macchina   Cos’è il Linguaggio Macchine Quindi, cos’è il Linguaggio Macchina? Che faccia ha? Questo è un semplice listato in Linguaggio Macchina per 6502: A2 01 8E 84 03 A9 02 6D 84 03 8D 85 03 60 Come potete vedere, per un essere umano sembra privo di significato. Per lo meno per la maggior parte, perché sono sicuro che un guru del 6502 sarebbe in grado di tradurlo al volo. Ma questo modo di scrivere In Linguaggio Macchina è un po’ estremo, e non saremo obbligati ad usarlo. E’ quello che il computer alla fine comprende, certo trasformato poi in binario (non in esadecibale), meglio ancora in segnali elettrci +5V o 0V, ma così andiamo troppo verso il profondo dell’hardware. Vediamo invece come rendere le cose più semplici. Partiamo da un po’ di Basic Di seguito un semplice programma basic. Nulla

di speciale, è veramente molto semplice: assegna un valore a X e Y, mette la somma dentro A e la stampa. 10 LET X = 1 20 LET Y = 2 30 A = X + Y 40 PRINT A Cosa succede quando scriviamo un programma così semplice? Quando diciamo al computer di eseguirlo, viene tradotto in Linguaggio Macchina e solo allora eseguito. Ovviamente è un processo lento, perché la traduzione deve avvenire prima che parta l’esecuzione vera e propria. Ho semplificato il processo reale, ma giusto per far capire a tutti, anche chi è proprio alle prime armi, qual è il processo che viene seguito. Questo excursus è utile per comprendere cosa diremo in seguito. Cos’è un Assembler? Un assembler è un programma che aiuta un essere umano a scrivere in assembly. L’assembly usa dei comandi mnemonici (rappresentati da 3 caratteri nel caso del 6502) per rappresentare le istruzione della CPU. Scrivere codice assembly vuol dire usare questi comandi. Ecco un listato in assembly che fa praticamente la stessa cosa del programma basic…

(Articolo di Emanuele Bonin) PartyPlanner_Sorgente (file .asm) Party Planner Sinceramente non ho idea se l’immagine che vedete in testa di questo articolo vi susciti qualche emozione, ma a me ha sempre fatto un effetto misto di sorpresa e ammirazione essendo associata ad un articolo che non ho mai scordato. L’articolo in questione si trovava nel numero di novembre del 1987 di “Le Scienze” (traduzione italiana di Scientific American), l’articolo è stato scritto dal grande A.K.Dewdney, il quale non ha bisogno di presentazioni. Nell’articolo Dewdney ha descritto come creare un programma in grado di simulare le interazioni umane ad una festa. Questa cosa mi ha affascinato sin da quando, “giovine”, imberbe ed aspirante nerd, lo lessi la prima volta e riuscii a riprodurlo in un C64, programmando con l’amato Basic. Col passare del tempo lo riscrissi anche in altri linguaggi e su computer più veloci, se non altro per dare un po' di sprint al party, ora sono tornato all’adorato biscottone color crema (emulato sigh), ma

stavolta utilizzando l’assembly. Let’s party “Recentemente ho dato un ricevimento a cui non ho potuto partecipare di persona.”, così iniziava Dewdney sul suo bellissimo articolo, e fu dopo aver letto quelle parole che decisi di dare anch’io il mio primo ricevimento, ora, con altri mezzi, ho dato un altro ricevimento, ma, al contrario di Dewdney, ho trovato il modo per essere presente in esso. Ho quindi organizzato una festa ed ho invitato tutta la redazione di 8BRPI. Il fine ultimo di “Party Planner” (o PP, così chiamerò il programma) è quello di dare un’idea di come potrebbe svolgersi la festa. Le simpatie e le antipatie tra le persone sono cosa normale e squisitamente umana, e saranno proprio questi sentimenti che guideranno i movimenti della festa, le persone tenderanno ad avvicinarsi tra di loro se si conoscono o provano attrazione, oppure si allontaneranno in casi totalmente opposti o ancora si rincorreranno se sussistesse una sorta di…