(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…

(Article by Phaze101) Machine Code   What is Machine code So, what is machine code and how it is written? Here is a simple 6502 program A2 01 8E 84 03 A9 02 6D 84 03 8D 85 03 60 As you can see it has no meaning to the human being. Well let me rephrase that. It has no meaning to most human beings, but I am sure that there are some 6502 Gurus out there that will be able to translate that. The above is the extreme and we will never write such a program thankfully. It is what the computer understands. Of course, they will be translated into binary (Not Hex) or better +5V and 0 but that is to deep down the line. So, let’s make things a bit simpler. Let’s do some BASIC Here is a simple basic program.  Nothing special, this is a

very simple Basic program. If is declaring X and Y with a value. Then it is just adding X + Y and storing the result in A. Then it prints contents of A which is the result. 10 LET X = 1 20 LET Y = 2 30 A = X + Y 40 PRINT A What happens when we write such a Basic program? Well, when we tell the computer to run this program the computer will translate the above into Machine Code and execute it for us. Of course, this is a slow process because of the translation that must happen before the machine code is execute. Please note I am trying to keep it simple here and not going into detail so as not to complicate things for beginners but in fact the process is more complex than what I explained. What is Assembler? An assembler is a program that helps the human being write assembly language. Assembly uses mnemonics (represented by 3 characters in the case of…

(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…

(Article by Phaze101) What is C64 Bedtime Coding? This is a series of articles related to the 6502 Assembly language programming on the Commodore C64. The intention is to learn this while having fun. We will achieve this objective by writing simple games. For who is it These tutorials will be mainly aimed and focused for beginners who want to learn to write assembly language. Also, it is for those that want to write games for the C64 using assembly. My aim is to show you simple things that can get you to achieve this goal of writing your own games and at the same time learn the assembly language. If you are one of those people that always wanted to learn how to write games on the C64 and you never managed to learn assembly then this series is for you. Please note that I will keep things simple and will not go into detail so as not to

confuse beginners. Reflect for a moment We all like playing games, right? Have you ever wondered and thought about how games are done? We are all fascinated with demos where coders show what they can do by pushing the hardware to the limits but how is all this possible? Does it seem something that it is impossible for you to do? Do you think that you are not capable of doing so? Well let me assure you that you do not need to be a genius to write simple games. All you need is patience. Writing games in Basic is simple compare to writing in Assembly but with patience and knowing small simple things you can achieve a lot. With patience you will be able to push the hardware to the limits and achieve greater things that Basic can’t give you. What you need to know There are a few things that you need to know to code in assembly…

(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: Conoscere il sistema numerico (binario e esadecimale)Conoscere e comprendere il set di istruzioni del 6502 e conoscere lo “Status Register”.Conoscere…

In queste righe farò un excursus sulle notevoli capacità del Basic 7.0 incorporate nel Commodore128, ultimo computer ad 8-bit della Commodore uscito nel 1985. Innanzi tutto una breve storia: il C128 era nato per sostituire il C64 e le sue capacità lasciavano presagire il meglio. Aveva infatti 3 modalità operative: C128 che usava una CPU 8502 con 128 Kbyte RAM; una modalità C64 uguale identica al C64 compatibile con tutte le sue periferiche e cartucce i classici 64Kbyte RAM; ed in più una CPU Z80 per far funzionare il C128 in modalità CP/M, il predecessore di Ms-Dos. Sia la modalità C128 che CP/M usando un monitor Commodore come il 1084 permetteva di usare una modalità ad 80 colonne con risoluzione 640x200 il che gli consentiva di fungere anche da macchina per ufficio. Vendette svariati milioni di esemplari ma venne ben presto dismesso per due motivi principali: l’enorme successo del C64 (in quegli anni rinnovato nella veste C64C simile al C128)

e al fatto che la Commodore ormai si stava impegnando a fondo nel suo primo computer a 16-bit, l’Amiga 1000 con CPU Motorola 68000 come l’Apple Macintosh e l’Atari ST. Il C128 resta quindi l’ultima macchina 8-bit prodotta dalla Commodore. Qui ci concentreremo sulle caratteristiche uniche del BASIC 7.0: è quindi inutile concentrarci sulle capacità di base del tutto uguali a quelle del C64 ma metterò in rilievo le differenze coi BASIC degli altri 8-bit Commodore. Comandi essenziali da disco Per formattare un disco basta il comando HEADER “nome_disco”, id ; con uno solo non serve. Quindi basta ad esempio HEADER “my-disk” per caricare un programma basic da disco DLOAD “nome_prog”, id per salvarlo DSAVE “nome_disco”, id per verificare se il programma nel computer è uguale a quello scritto su disco DVERIFY “nome_prog”, id in tutti questi comandi se non si inserisce l’id del disco si presuppone il device numero 8; se si hanno due drive si può scrivere ad…

(articolo di Davide Fichera) Sorgenti in formato .D64 Print e Poke Per scrivere caratteri a schermo il BASIC V2 ci offre fondamentalmente due alternative: quella del PRINT, con tutti i suoi caratteri PETSCII e quelli di controllo (cursore su, giù, destra, sinistra, home, clear, reverse on, ecc.) , oppure quella del POKE, che però ci permette di scrivere solo un carattere su schermo alla volta. Il POKE però ha il vantaggio che può scrivere da qualsiasi parte dello schermo senza andare ad utilizzare scomodi caratteri di controllo, tipo quelli che si ottengono tramite i tasti freccia. Se vogliamo, ad esempio, scrivere il carattere “A” alla colonna 5 e alla riga 8 tramite il comando POKE dovremo scrivere: 10 POKE 1024+8*40+5,1 se invece opteremo per il PRINT scriveremo il seguente codice: 10 PRINT”{home}{down*8}{right*5}A” La prima versione calcola la posizione che il carattere avrà a schermo utilizzando una formula, dove il 1024 rappresenta la locazione di memoria

del carattere più in alto a sinistra sullo schermo, 8*40 calcola la posizione relativa del primo carattere della 8° riga dello schermo e infine aggiungendo il 5 ci spostiamo di ulteriori 5 caratteri sulla destra. La seconda versione è invece più immediata da comprendere perché semplicemente posiziona il cursore in alto a sinistra con il carattere di controllo home e poi lo sposta di 8 posizioni giù e di 5 posizioni a destra con degli ulteriori caratteri di controllo. La prima scelta però, per certi versi, risulta più veloce, elegante e di più facile lettura rispetto alla seconda, dove i caratteri di controllo compaiono tutti insieme e sono difficili da interpretare al volo (per un occhio non particolarmente avvezzo a quei caratteri speciali). Stampa di caratteri in posizioni generiche Immaginiamo ora di voler posizionare un carattere ovunque sullo schermo tramite delle coordinate X e Y precedentemente assegnate. Come fare ciò nei due casi del PRINT e del POKE? Per quanto riguarda la versione con POKE…