(Article by Phaze101) Stampare sullo schermo   Importante Ho dovuto prendere una pausa per motivi di lavoro, non potevo fare diversamente. Come per chiunque altro, anche io ho degli impegni per le quali devo decidere cosa è prioritario e cosa no. Inoltre, ho voluto mettere insieme una squadra per aiutarmi nella traduzione di questi articoli. Sono rimasto sorpreso dal numero di riposte ricevute a riguardo. Desidero ringraziare tutti quelli che mi hanno risposto e si sono adoperati per aiutarmi Articoli futuri Gli articoli stanno diventando più lunghi e complessi. Cercherò di mantenere il ritmo di un articolo a settimana, ma non escludo l’ipotesi di saltarne una occasionalmente. Inoltre, alcuni argomenti richiedono ulteriori ricerche. Non sono una enciclopedia e non conosco ogni singolo aspetto. Tutto ciò può richiedere del tempo. Articoli lunghi inoltre richiedono più tempo per essere tradotti in italiano. Sono fiducioso che questo aspetto diventerà più semplice con il team che mi supporta. Windows / Linux / MAC

Questo argomento potrebbe risultare un po’ controverso, ma vi chiedo di mettermi nei miei panni. Desidero insegnare il linguaggio assembly nella maniera più semplice possibile. E’ un requisito fondamentale per andare incontro a chi voglia imparare assembly.  Sfortunatamente, CBM Prg Studio gira solo su Windows. Credo sia l’ambiente di programmazione più semplice per chi sta iniziando. All’inizio ero indeciso tra CBM Prg Studio e Kick Assembler. Kick Assembler gira su tutte le piattaforme, ma non è così immediato come CBM Prg Studio e non dispone di un ambiente di sviluppo. Per cui, alla fine, ho optato per CMB Prg Studio. Capisco che potrebbero esserci alcuni di voi che usano solo Linux o Mac, e che potrebbero sentirsi esclusi, ma questo non è abbastanza per decidere di non utilizzare CBM Prg Studio. Ho deciso di dare priorità alla semplicità perché so che imparare l’assembly non è facile. Se lo strumento scelto non fosse sufficientemente semplice da usare, la situazione diventerebbe pesante. Scegliere…

(Article by Phaze101) Printing   Key Notes I had to take a break because work got in the way and I couldn’t do otherwise. Like everyone else I have commitments and need to do what is more important. Secondly, I wanted to set up a team to help me out with my articles. I was overwhelmed by the number of responses I got regarding this matter. I wish to thank all those that replied back to me and wanted to help out. Future Articles Articles are becoming longer and more complex. I will still try to maintain a weekly article, but I won’t exclude the possibility of occasionally skipping a week. Also, some topics need further research. I am not an encyclopaedia and do not know it all. This can take time. Longer articles also need more time to be translated to Italian. Hopefully this will become easier with a team behind me. Windows / Linux / MAC This may be

a controversial topic but I ask you to consider it from my point of view. I want to teach assembly in the simplest way possible. It is key to someone trying to learn assembly. Unfortunately, CBM Prog Studio only runs on Windows. I believe it is the easiest IDE program for a beginner. Initially I considered whether I should use CBM Prog Studio or Kick Assembler. Kick Assembler runs on all platforms, but it is not as easy as CBM Prog Studio and it has no IDE. In the end I decided to go with CBM Prog Studio. I realize that there might be some of you that use only Linux or Mac and they might feel excluded, but this still doesn’t justify the reason not to use CBM Prg Studio. I have decided to keep things as simple as possible since I know that learning assembly is not easy. If the tool I use is not easy enough…

(Articolo di Phaze101) Cancellare lo schermo   Perché cancellare lo schermo è importante? La pulizia dello schermo è un’operazione che si ripete spesso all’interno dei giochi. Cancellare lo schermo richiede del tempo. Se è necessario farlo più volte durante un gioco, allora può diventare un fattore importante e quindi c’è bisogno di una routine veloce. Ci sono diversi metodi per compiere quest’operazione. Con alcuni di questi mi trovo d’accordo, altri non mi piacciono affatto. Inoltre, a volte una routine veloce non è affatto necessaria. Dipende sempre da quando deve essere eseguita la routine all’interno del gioco. Come ho già dichiarato in altre occasioni, vorrei ricordare a tutti voi che non ho mai scritto giochi a livello professionale, quindi nei miei articoli non troverete routine ottimizzate e superveloci, anche se cercherò di occuparmene in parte. Detto questo, la serie di articoli è rivolta ai principianti ed in base al suo scopo didattico, cercare di capire i concetti della

programmazione è più importante. Metodo Uno – Utilizzare il Kernal In termini di codice, questo è il metodo più semplice per cancellare lo schermo ma è anche il metodo più lento. Anche se è il metodo più lento, viene utilizzato più spesso di quanto si pensi. Un esempio di applicazione è quando ci si trova nella schermata principale di un gioco e si sceglie di passare alla schermata delle istruzioni. In questo caso, non c'è bisogno di una routine ultraveloce per cancellare lo schermo e visualizzare le istruzioni. Il primo metodo di cui trattiamo utilizza il Kernal. Il Kernal è un blocco di codice che contiene numerose routine per gestire cose diverse del sistema. Come definito nel sito Wiki dedicato al C64: “Il Kernal è l’insieme di interfacce hardware di basso livello presente in tutta la serie di computer a 8 bit della Commodore, a cominciare dai Commodore PET. Il Kernal consiste di trentanove (39) funzioni che vanno dal controllo di input/output alla gestione dei…

(Article by Phaze101) Clearing the Screen   Why clearing the screen, is important? During a game clearing the screen can happen several times. Clearing the screen is time consuming. If this is happening several times during your game, it becomes an important factor which means you will need a fast routine. There are different methods of doing this. Some I agree with and some I do not like at all. Also, there are times when a fast routine is not necessary. It always depends where the routine is in the game. As I have stated this many times now, I would like to remind you all that I never wrote games as a professional, so the optimised, fast routines won’t be found here, although I try to cover some of this. Having said that this series of articles is aimed at beginners hence trying to understand concepts is more important in these cases. Method One – Using the Kernal In terms

of code this is the easiest method of clearing the screen. It is also the slowest method of clearing the screen. Although it is the slowest method to clear the screen there is use for it more than one thinks. An example of this is when you are on the main screen of the game and select to go to the instructions screen. It doesn’t need to be a fast routine to clear the screen and display the instructions. This method is using the Kernal. The Kernal is a block of code that has several routines in it to handle different things. As defined on the C64 Wiki “The Kernal was the set of low-level hardware interfaces repeated throughout Commodore's 8-bit computer series, beginning with the Commodore PET The Kernal consisted of thirty-nine (39) functions ranging from Input / Output control to file management, memory management, console management and time management. These functions formed the basis for higher level routines in the…

(Articolo di Phaze101) PRIMI PASSI Con questo articolo abbiamo raggiunto finalmente il punto in cui passiamo dalla teoria alla pratica. Useremo CBM Prg Studio, ma non staremo qui a spiegare come fare a scaricarlo, installarlo e configurarlo visto che esistono già una moltitudine di video su YouTube che svolgono questo compito. Tutte quello che ci servirà lo spiegherò man mano che dovremo usarlo. Potete scaricare CBM Prg Studio da qui: http://www.ajordison.co.uk/ Ok, da ora in avanti ci sporcheremo le mani. I listati che proporrò saranno immagini, in modo che nessuno possa fare copia e incolla, perché ho bisogno che siate voi a digitare il codice. Solo facendo pratica digitando il codice come si faceva ai vecchi tempi quando si copiava i listati dalle riviste comprenderete quello che state facendo. Mi spiace se questo a qualcuno di voi non piacerà, ma è per il vostro bene: se veramente volete imparare l’assembly dovete avere la pazienza. Come ho detto nel primo articolo solo

con la pazienza riuscirete ad imparare l’assembly. Ovviamente per chi di voi è già esperto potrebbe sembrare assurdo, ma questi articoli si rivolgono a chi muove i primi passi e vuole imparare seriamente l’assembly. E se volete impararlo seriamente dovrete fare qualche sacrificio: digitare i listati è uno di quelli. Presto, quello che vedete come maestro, me, sarà sostituito da voi stessi. E quando questo accadrà, sarò fiero di voi e saprò che ho ottenuto quello che mi ero prefisso con questo corso. A quel punto sarò magari io a imparare da voi 😊 Tutto Insieme Facciamo un riassunto veloce di quanto visto nelle ultime due puntate. Nella puntata 4 abbiamo spiegato le modalità di indirizzamento, e nella 5 il set di istruzioni. Per chi di voi è ancora confuso, chiariamo il legame tra i due argomenti. Prendiamo un’istruzione e vediamo come le modalità di indirizzamento influiscono. Come esempio prendiamo LDA, che ormai dovreste sapere sta per LoaD Accumulator.…

(Article by Phaze101) First Steps With this article we have reached the section where we will be switching from theory into practice. We will be using CBM Prog Studio. I will not be wasting time in explaining how to download it, install it and configure it. There are too many videos on YouTube regarding this. If there is a need to explain one of its features or assembly directives, I will explain it when we encounter it. You can download CBM Prg Studio from here http://www.ajordison.co.uk/ Please note that from now on it will be hands on. The listings will be images so that no one can do cut and paste from the article to the assembler. I need you to type the code. Only if you practice typing in the code like the old days when copying listing from magazines you will learn what you are doing. Sorry if this is going to put some off you of but it

is for your own good. If you really want to learn assembly, you need to have patience. As I said in article one only if you have patience you will succeed in learning assembly. Of course, for those that know it all this might sound absurd, but these articles are aimed at beginners who seriously want to learn assembly. So, if you are serious in learning assembly you will make the effort, to type the listing and have patience. Soon, who you might see me as your teacher, or your master will be superseded by you. When that happens, I will be more than proud of what you have learnt or achieved in terms of this assembly  course. I will know that my work was not in vein. Then I will be able to learn from you and you’ll become my teacher 😊 Merging All Let’s recap sometime that we covered in articles 4 and 5. In article 4…

Formato Pdf dell'articolo Sorgente assembly “Oggi parleremo delle turmiche, una specie virtu-animale con strane abitudini. Sin dalla loro nascita posso muoversi liberamente e sanno benissimo come farlo ….”. Un documentario della national geographic avrebbe iniziato così la descrizione delle strane creature che voglio presentarvi oggi. Le turmiche furono presentate la prima volta da A.K.Dewdney in “Scientific American” alla fine del 1989 e, all’epoca, battezzò questi animaletti con il nome di turmiti. Le Formiche di Turing Le turmiche, o Formiche di Turing, sono dei particolari essere le cui modalità di movimento sono dettate dalla programmazione loro imposta sin dalla nascita. Questa programmazione nel movimento prevede uno “stato” interno che può cambiare in base alle condizioni dettate dalla loro “programmazione”, la possibilità di scegliere una direzione ed infine un nastro “infinito” che può essere letto e scritto, proprio come in una macchina di Turing. La macchina di Turing è la macchina che Alan Turing ipotizzò come modello di calcolatore programmabile. Questa macchina,

detta brevemente, è formata da una testina di lettura/scrittura (simile a quella dei mangianastri) che agisce su di un nastro (virtualmente infinito) che può muoversi avanti e indietro e sul quale la testina potrà leggere o scrivere alcuni simboli. Ebbene una macchina siffatta ha una potenza computazionale insuperabile, se le viene fornito sufficiente tempo (e la giusta programmazione) può risolvere qualsiasi problema. Per programmare la macchina di Turing sarà sufficiente una tabellina a doppia entrata, nella quale vi saranno tante righe quanti sono gli stati previsti dal programma e tante colonne quanti sono i simboli che si vogliono gestire. In ogni cella della tabellina ci saranno scritte 3 informazioni fondamentali: Quale simbolo scrivere sul nastro In quale stato la macchina si deve portare La direzione in cui si deve spostare la testina rispetto al nastro, destra, sinistra o in alternativa stare ferma. Ogniqualvolta la testina legge un simbolo, la macchina di Turing controllerà nella tabellina la cella corrispondente allo stato…

(Articolo di Phaze101) Il Set di Istruzioni Cercheremo di coprire il maggior numero possibile di istruzioni in questa puntata. Devo ammettere che ho riscritto il testo più volte, perchè non ero mai contento di come terminavo il tutto poichè avrei voluto trovare un modo veloce per spiegarle tutti in una volta. Non sono comunque soddisfatto al 100% ma penso che questa sia la miglior versione possibile. Come già fatto in molti altri libri ho deciso di dividere il set di istruzioni in categorie, potendo in questo modo spiegare nel dettaglio le categorie stesse e non ogni singola istruzioni. Strada che avrebbe richiesto troppo tempo oltre al fatto che sia su carta che on line è pieno di risorse di riferimento per questo scopo. Inizierò dapprima elencando tutte le istruzioni della CPU 6502, con una breve spiegazione di cosa fa ogni istruzione. Ricordate che molte istruzioni supportano differenti modalità di indirizzamento, come abbiamo visto l’ultima volta. Quindi se un’istruzione supporta delle modalità

di indirizzamento, non è detto che supporti tutte quelle che abbiamo visto. Questo varia da istruzione ad istruzione. Osservazione generali Alcune note per aiutarvi a ricordare più velocemente le varie istruzioni. La maggior parte delle volte che un’istruzione ha a che fare col registro A, l’istruzione stessa termina con una A. Lo stesso per I registri X e Y. Se l’istruzione trasferisce un valore dal registro A al registro Y, probabilmente terminerà con AY, ed allo stesso modo con le altre combinazioni. Le istruzioni di confronto iniziano con una C. Le istruzioni di branch iniziano con una B. Le istruzioni che puliscono (clear) qualcosa iniziano con CL. Le istruzioni che impostano (set) qualcosa, iniziano con SE. Le istruzioni di salto iniziano con una J. Le istruzioni che operano con lo stack solitamente iniziano con un P (per push e pull). Se un’istruzione inizia con DE è un’istruzione di decremento, mentre se inizia con IN è una di incremento. Quando…

(Article by Phaze101) The Instruction Set I am going to try and cover as much as I can here. This article was written more than once I have to admit. I was never happy with the finish of it since I wanted a quick way of explaining it all, in a easy way. I am still not 100% happy but this is the best way I could come up with that explains the instructions set. I came up with the idea of dividing the instruction set in categories. This was done in the past in several books. Like this I just need to explain each category instead of going through each instruction. Going through each instruction would have taken too much time and there are so many references that one can look at online to see what each instruction does. In the next section I am listing all the 6502 CPU Instruction set. Each instruction is explained in few words

what it does. Now remember that many of the instructions support different addressing modes, what we talked about in the previous article. Now if an instruction supports addressing modes, it doesn’t mean that it supports all of the addressing modes that we coved. If various from instruction to instruction. Another way of saying addressing modes is, each instruction can support different modes. General Observations The below might help you remember the instructions set quicker. Notice also that if the A register is affected most of the time the instructions ends with an A generally speaking. Same applies for X and Y. If it is a transfer from A to Y then the instruction will end with AY and same for the rest. Compare instructions start with a C. Branch instructions start with a B. When you are clearing something it starts with a CL. When you are setting something it starts with a SE. When you are jumping to a…

Il giro del cavallo Il giro del cavallo Sommario Nel 1985 veniva stampato un testo unico nel suo genere: «Artificial Intelligence Projects for the Commodore 64». Presentiamo uno degli esempi più noti tratti da tale libro, il che ci fornisce un'ottima occasione per parlare di un problema scacchistico che ha interessato nei secoli matematici del calibro di Eulero, Legendre, Vandermonde e soprattutto della tecnica dimostrativa computazionale con la quale recentemente è stato risolto. Come d'abitudine, l'articolo è disponibile anche in formato PDF (caldamente consigliato). Sono inoltre disponibili i sorgenti e il project file per CBM Prg Studio in formato ZIP. «Sans les mathématiques on ne pénètre point au fond de la philosophie. Sans les philosophie on ne pénètre point au fond des mathématiques. Sans le deux, on ne pénètre point au fond de rien.» (Gottfried W. Leibniz, 1646-1716) 1 Introduzione. Scopo del presente articolo è la presentazione di un programma BASIC V2 che molti di noi «retroprogrammatori» si sono all'epoca divertiti a

digitare durante lo studio di un testo più unico che raro sulla IA applicata al C64 [9]: uno dei primi testi applicativi di larga diffusione ad introdurre tecniche all'epoca altamente innovative, che solo molti anni dopo sarebbero state trattate sistematicamente in volumi di meritata fama come [10]. Il linguaggio è intenzionalmente informale, divulgativo e didascalico, scevro da particolari pretese di rigore, al fine di raggiungere il più vasto uditorio informatico possibile. 2 Knight's tour. Figura 1: Esempio di percorso chiuso diretto. Il problema originale, la cui prima traccia storicamente certa risale circa all'850 d.C., riguarda il pezzo degli scacchi noto come cavallo (knight nel mondo anglosassone), che notoriamente si muove lungo l'immaginaria diagonale di un rettangolo con lati di due e tre caselle rispettivamente. Si tratta di trovare (almeno) un percorso che porti il cavallo ad occupare tutte le caselle della scacchiera partendo da una casella qualsiasi e passando una e una sola volta su ciascuna altra casella.…