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

Sommario Un classico problema logico tratto da un best seller di enigmi e puzzle per C64. Viene proposta e sviluppata una soluzione molto più completa di quella fornita dal testo, applicabile ad una vastissima gamma di problemi analoghi ma anche ad innumerevoli situazioni di programmazione: dai gestionali all’automazione industriale, dai protocolli alla grafica. E' disponibile anche una versione PDF di quest'articolo ed i sorgenti presentati in formato ZIP. «È più facile quadrare un circolo che arrotondare un Matematico» (Augustus de Morgan, 1806-1871) 1 Introduzione. Scopo del presente articolo è l’illustrazione di un semplice problema che molti di noi «retroprogrammatori» si sono all’epoca divertiti a risolvere con l’ausilio del proprio PET preferito: una tipologia di problema che peraltro caratterizza anche molti rompicapo logici proposti dalle più note riviste di enigmistica. Il linguaggio è intenzionalmente informale, divulgativo e didascalico, scevro da particolari pretese di rigore, al fine di raggiungere il più vasto uditorio informatico possibile. L’articolo è organizzato in tre parti principali.

Nella prima parte si illustra il problema nella sua forma originale, proponendone anche una immediata traduzione dall’inglese. Nella seconda parte si presenta la scarna soluzione originale del testo. Nella terza e ultima parte si discute una soluzione completamente autonoma da parte del calcolatore, senza alcun passaggio manuale, rivelando la reale natura del problema e dell’algoritmo risolutivo, che si presta ad una scelta totalmente automatizzabile della soluzione corretta tra quelle potenzialmente valide. 2 Sarah’s Number. Il problema originale, a pagina 12 del testo [LS83], è caratterizzato dal numero progressivo 11. Eccone il testo completo: Last week while we were out sailing on the Henderson’s yacht, Julie, Ken, Liz, Morris and Naomi were trying to remember Sarah’s phone number. They all agreed on the prefix, but none of them could remember exactly the last four digits. They came up with these statements: Julie: There is a 9 in it. Ken: It is definitely higher than 5000. Liz: It is palindromic: it reads…