<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>the Retrogames Machine &#187; Retroprogrammazione</title>
	<atom:link href="https://www.retrogamesmachine.com/category/tutti/retroworkshop/retroprogrammazione/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.retrogamesmachine.com</link>
	<description>the Future was Now</description>
	<lastBuildDate>Tue, 21 Feb 2023 19:44:33 +0000</lastBuildDate>
	<language>it-IT</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.7.1.1</generator>
	<item>
		<title>Magot, come lo facemmo!</title>
		<link>https://www.retrogamesmachine.com/2015/05/14/magot-come-facemmo/</link>
		<comments>https://www.retrogamesmachine.com/2015/05/14/magot-come-facemmo/#comments</comments>
		<pubDate>Thu, 14 May 2015 06:39:02 +0000</pubDate>
		<dc:creator><![CDATA[MCP]]></dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Commodore 64/128]]></category>
		<category><![CDATA[Homebrew/Indie]]></category>
		<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[gioco]]></category>
		<category><![CDATA[indie]]></category>
		<category><![CDATA[Magot]]></category>
		<category><![CDATA[new commodore 64 game]]></category>

		<guid isPermaLink="false">http://www.retrogamesmachine.com/?p=9425</guid>
		<description><![CDATA[Non c’è cosa peggiore che vedere il proprio lavoro, frutto di anni di applicazione, buttato la da una parte all’interno di una cartella in un luogo remoto dell’hard disk. Si perché di grafica no ho disegnata parecchia in quasi 20 [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p>Non c’è cosa peggiore che vedere il proprio lavoro,<br />
frutto di anni di applicazione, buttato la da una parte all’interno di una cartella in un luogo remoto dell’hard disk.</p>
<p>Si perché di grafica no ho disegnata parecchia in quasi 20 anni e in alcuni casi sono anche riuscito a sfruttarla per qualche progetto amatoriale che si trova tutt’ora in rete. Il problema è che lavorare da soli implica un sacrificio notevole e spesso la frustrazione per un progetto che avanza troppo lentamente fa si che non si riesca a concluderne neanche uno.</p>
<p><span id="more-9425"></span>Ci si ritrova quindi con una serie di giochi che stagnano, ognuno dei quali ad un differente stadio di sviluppo.</p>
<div style="width: 250px" class="wp-caption alignleft"><img class=" " alt="Torre della Terra BIG" src="http://www.retrogamesmachine.com/wp-content/uploads/2015/02/Torre-della-Terra-BIG-300x187.png" width="240" height="149" /><p class="wp-caption-text">Torre della Terra</p></div>
<p>L’ultimo progetto che avevo in mente consisteva in un platform game a schermo fisso per Commodore 64 il cui stile di gioco doveva somigliare ad una sorta di Bubble Bobble/Solomon’s Key/Bomb Jack/Ghosts’n Goblins.Lo so, sembrerebbe un’accozzaglia indefinibile ma nella mia testa tutto filava perfettamente.</p>
<div style="width: 247px" class="wp-caption alignright"><img alt="Foresta 1 Big" src="http://www.retrogamesmachine.com/wp-content/uploads/2015/02/Foresta-1-Big-300x187.png" width="237" height="149" /><p class="wp-caption-text">Foresta</p></div>
<p>Tutto questo accadeva due anni fa e il progetto inizió con alcuni mockup comprendenti  schermate di gioco e animazioni varie. Per la modalitá grafica scelsi la bitmap 16 colori alla maniera di The Last Ninja, Stormlord o Poseidon che per dirla in breve,  consiste nel caricare in memoria l’immagine desiderata per poi scomporla in “tile” con cui creare tutti i fondali.</p>
<div style="width: 246px" class="wp-caption alignleft"><img alt="Torre della Magia BIG" src="http://www.retrogamesmachine.com/wp-content/uploads/2015/02/Torre-della-Magia-BIG-300x187.png" width="236" height="148" /><p class="wp-caption-text">Torre della Magia</p></div>
<p>A livello di codice non è semplice ottenere un buon risultato ma i vantaggi di natura estetica  sono notevoli. Fatto sta che dopo aver disegnato cinque o sei schermate decisi di postarle su qualche forum nella speranza di trovare un coder all’altezza del lavoro che avevo in mente di realizzare.</p>
<div style="width: 240px" class="wp-caption alignright"><img alt="magot shop grande" src="http://www.retrogamesmachine.com/wp-content/uploads/2015/02/magot-shop-grande-300x187.png" width="230" height="149" /><p class="wp-caption-text">Shop</p></div>
<p>Parlai anche con Papá Santoro, un mio vecchio amico che all’epoca era stato un “enfant prodige” del cracking, uno che a 14 anni faceva “raw coding” utilizzando un semplice editior ASCII e un “language monitor” ma mi disse che non avrebbe mai avuto tempo da dedicargli e voglia di ricominciare daccapo con l’assembly del 6510.</p>
<div id="attachment_9545" style="width: 274px" class="wp-caption alignleft"><img class="size-medium wp-image-9545" alt="Schermata introduttivaForesta" src="http://www.retrogamesmachine.com/wp-content/uploads/2015/02/Schermata-introduttivaForesta-300x187.png" width="264" height="173" /><p class="wp-caption-text">Intro</p></div>
<p>Deluso ma fiducioso di venirne a capo andai avanti con la grafica e produssi persino una demo per PC (windows)  cosí da poter mostrare la mia idea in modo piú efficace.  Arriviamo quindi a sette mesi fa, quando una sera chiacchierando su skype con Papá Santoro mi sento fare una richiesta che mi diede da pensare: Massi, perché non mi mandi qualche sprite del tuo progetto Magot? E io: a che ti servono? Papá Santoro: tranquillo volevo solo fare un paio di esperimenti.</p>
<p>Fatto sta che qualche giorno dopo mi ricontatta il mio amico inviandomi un file “prg” da visionare. Incuriosito avvio Hoxs64 e lancio il prg e quello che mi ritrovo davanti è un platform game (molto rudimentale) a schermo fisso in cui le mie creazioni saltellano qua e la, finalmente vive!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2015/05/14/magot-come-facemmo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breve prontuario dei comandi Commodore Basic V2</title>
		<link>https://www.retrogamesmachine.com/2013/12/19/comandi-commodore-basic-v2/</link>
		<comments>https://www.retrogamesmachine.com/2013/12/19/comandi-commodore-basic-v2/#comments</comments>
		<pubDate>Thu, 19 Dec 2013 13:21:11 +0000</pubDate>
		<dc:creator><![CDATA[MetalRedStar]]></dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>
		<category><![CDATA[Basic]]></category>
		<category><![CDATA[Commodore 64/128]]></category>
		<category><![CDATA[commodore basic]]></category>
		<category><![CDATA[Commodore VIC 20]]></category>
		<category><![CDATA[retroprogrmamazione]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.retrogamesmachine.com/?p=6344</guid>
		<description><![CDATA[Nell&#8217;ambito della nostra iniziativa votata a riaccendere nei nostri lettori la fiamma dell&#8217;interesse nei confronti della programmazione cominciamo con le basi.  Un breve riassunto dei comandi del Commodore Basic V2 utilizzato dal Commodore64 (oltre che dal VIC20 e i Commodore [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p><span style="font-size: 13px;">Nell&#8217;ambito della nostra iniziativa votata a riaccendere nei nostri lettori la fiamma dell&#8217;interesse nei confronti della programmazione cominciamo con le basi. </span></p>
<p><span style="font-size: 13px;">Un breve riassunto dei comandi del Commodore Basic V2 utilizzato dal Commodore64 (oltre che dal VIC20 e i Commodore PET). Attenzione! Questo non è un tutorial sul Commodore Basic ma una sorta di guida di riferimento per riaccendere in neuroni spenti (o mai accesi&#8230;).</span></p>
<p><span id="more-6344"></span></p>
<p>Nel basic V2 sono disponibili unicamente i seguenti tipi di variabili:</p>
<ul>
<li><strong>Float</strong>: È il tipo usato più frequentemente ed indica i numeri positivi e negativi dotati di parte intera e decimale. Non hanno indicatore di tipo nella loro dichiarazione.<br />
Valori possibili: +/- [2.94E-39 ... 1.70E+38] (+/- [2<sup>-128</sup> ... 2<sup>127</sup>])<br />
Precisione: mantissa a 32 bit (approx. 9.6 decimali) + esponente a 8 bit</li>
<li><strong>Interi (16 Bit):</strong> Tipo di tati raramente utilizzato. Le variabili ntere si caratterizzano per un &#8216;%&#8217; alla fine della loro &#8216;etichetta&#8217; (es. X%).  È bene notare che tutti i calcoli computazionali sono effettuati con precisione FLOAT e la conversione a Intero è effettuata solo quando il valore è assegnato alla variabile. Quindi la matematica di tipo intero è PIÙ LENTA che quella di tipo float!</li>
<li><strong>Booleani:</strong> I risultati sono espressi con interi. FALSO è rappresentato da 0 (0&#215;0000) mentre VERO da -1 (0xFFFF) o qualunque risultato NON-ZERO</li>
<li><strong>Stringhe: </strong> Le variabili &#8220;stringa&#8221; si identificano per il simbolo &#8216;$&#8217; posto dopo l&#8217;etichetta identificativa (es. X$). Le stringhe non possono essere più lunghe di 255 caratteri.</li>
</ul>
<p>Solo i primi DUE caratteri dell&#8217;etichetta di una variabile sono presi in considerazione dall&#8217;interprete BASIC. Quindi &#8216;CO&#8217;, &#8216;COCCO&#8217; e &#8216;COLOSSEO&#8217; sono nomi equivalenti di una singola variabile (ma non &#8216;C&#8217; o &#8216;CA&#8217;).</p>
<p>L&#8217;identificatore di tipo, invece, identifica e distingue variabili con la stessa etichetta. Quindi &#8216;CO&#8217;, &#8216;CO%&#8217; e &#8216;CO$&#8217; sono TRE variabili diverse.</p>
<h2>Controllo del flusso del programma</h2>
<dl>
<dt><strong><code>FOR...TO...STEP...NEXT</code></strong> - L&#8217;unico costrutto di ciclo del BASIC V2</dt>
<dd>
<div>Sintassi:<br />
<code>FOR &lt;Var&gt; = &lt;Start&gt; TO &lt;End&gt; [STEP &lt;Size&gt;]<br />
&lt;Ciclo&gt;<br />
NEXT [&lt;Var&gt;]</code></div>
<div>Esempi:</div>
<div><code>FOR I=1 TO 5: PRINT I;: NEXT -&gt; 1 2 3 4 5<br />
FOR I=1 TO 5 STEP 2: PRINT I;: NEXT -&gt; 1 3 5<br />
FOR I=5 TO 1 STEP -2: PRINT I;: NEXT I -&gt; 5 3 1<br />
FOR I=3 TO 1: PRINT I;: NEXT -&gt; 3 (!)</code></div>
</dd>
<dt><strong><code>IF...THEN</code></strong> - Esecuzione condizionale</dt>
<dd>Nota: Non esiste nulla di similare ai costrutti <code>ELSE</code> o <code>ENDIF</code>. (tra l&#8217;altro NESSUN BASIC eccetto l&#8217;MSX BASIC implementa l&#8217;<code>ELSE)</code></p>
<div>Sintassi:<br />
<code>IF &lt;Condizione&gt; THEN &lt;Istruzione&gt;</code> or<br />
<code>IF &lt;Condizione&gt; GOTO &lt;NrLinea&gt;</code> or<br />
<code>IF &lt;Condizione&gt; THEN &lt;NrLinea&gt;</code></div>
<div>Esempio:<br />
<code>100 IF A &lt; B THEN MN = A: GOTO 120<br />
110 MN = B<br />
120 ....</code></div>
</dd>
<dt><strong><code>GOTO</code></strong> oppure <strong><code>GO TO</code></strong> - Salto incondizionale</dt>
<dd>
<div>Sintassi:<br />
<code>GOTO &lt;NrLinea&gt;</code> oppure<br />
<code>GO TO &lt;NrLinea&gt;</code></div>
</dd>
<dt><strong><code>GOSUB</code></strong> -  Salto incondizionale a Subroutine</dt>
<dd>Notare che non è possibile passare parametri formali ad una subroutine. Tutto deve essere gestito con l&#8217;uso di variabili globali.</dd>
<dd>
<div>Sintassi:<br />
<code>GOSUB &lt;NrLinea&gt;</code></div>
<div>Esempio:<br />
<code>10 PRINT "Programma principale"<br />
20 GOSUB 100<br />
30 PRINT "Ritorno a Programma principale"<br />
40 GOSUB 100<br />
50 PRINT "Di nuovo Programma principale"<br />
60 END<br />
100 PRINT "Questa è la Subroutine"<br />
110 RETURN</code></div>
</dd>
<dt><strong><code>RETURN</code></strong> - Ritorno dalla Subroutine</dt>
<dd>
<div>Sintassi:<br />
<code>RETURN</code></div>
<div>Esempio:<br />
Vedi: <code>GOSUB</code></div>
</dd>
<dt><strong><code>ON...GOTO</code></strong> oppure <strong><code>ON...GOSUB</code></strong> - Salto multi direzionale</dt>
<dd>
<div>Sintassi:<br />
<code>ON &lt;EspressioneIntera&gt; GOTO &lt;NrLinea1&gt;, &lt;NrLinea2&gt;</code> &#8230;<br />
oppure <code>ON &lt;EspressioneIntera&gt; GOSUB &lt;NrLinea1&gt;, &lt;NrLinea2&gt;</code> &#8230;</div>
<div>Esempio:<br />
<code>ON X GOTO 100, 200, 300</code><br />
È equivalente a :<br />
<code>IF X = 1 THEN GOTO 100<br />
IF X = 2 THEN GOTO 200<br />
IF X = 3 THEN GOTO 300</code></div>
</dd>
<dt><strong><code>DEF FN</code></strong>- Definisce una Funzione/Subroutine in BASIC </dt>
<dd>
<div>Sintassi:<br />
<code>DEF FN &lt;Nome&gt;(&lt;Param&gt;) = &lt;Espressione a Linea Singola&gt;</code></div>
<div>Esempio:<br />
<code>DEF FN SI(X) = SIN(X)/X<br />
FN SI(π/3) -&gt; 0.816993343</code></div>
</dd>
</dl>
<h2>Input/Output</h2>
<dl>
<dt><strong><code>GET</code></strong> - Legge un singolo carattere dallo standard input (normalmente tastiera) senza attendere </dt>
<dd>
<div>Sintassi:<br />
<code>GET &lt;NomeVariabile&gt;</code></div>
<div>Esempio:<br />
<code>100 GET A$: IF A$ = "" THEN GOTO 100</code> -&gt; Attende la pressione di un tasto</div>
</dd>
<dt><strong><code>INPUT</code></strong> -Legge i dati dallo standard input (normalmente tastiera)</dt>
<dd>
<div>Sintassi:<br />
<code>INPUT</code> <code>[&lt;Prompt&gt;;] &lt;NomeVariabile&gt; [, &lt;NomeVariabile&gt; ...]</code></div>
<div>Esempi:<br />
<code>INPUT "LOGIN:"; LG$<br />
INPUT "Introdurre valori di A, B e C"; A, B, C<br />
INPUT A</code></div>
</dd>
<dt><strong><code>PRINT</code></strong> - Scrive sullo standard output (normalmente schermo)</dt>
<dd>
<div>Sintassi:<br />
<code>PRINT &lt;Dati&gt;</code> oppure<br />
<code>? &lt;Dati&gt;</code></div>
<div>Esempi:<br />
<code>PRINT "Ciao Mondo"<br />
PRINT "Queste", "sono", "Tabulazioni" -&gt; Notare le ','<br />
PRINT "Prima Linea"; -&gt; Notare il ';'<br />
PRINT "Still the same line"<br />
PRINT "Risultato="; 2*32</code></div>
</dd>
<dt><strong><code>SPC</code></strong> - Muove in avanti il cursore di un determinato numero di spazi</dt>
<dd>
<div>Sintassi:<br />
<code>SPC(&lt;Cnt&gt;)</code></div>
<div>Esempio:<br />
<code>SPC(6)</code></div>
</dd>
<dt><strong><code>TAB</code></strong>- Muove in avanti il cursore ad una specifica posizione</dt>
<dd>
<div>Sintassi:<br />
<code>TAB(&lt;Posizione&gt;)</code></div>
<div>Esempio:<br />
<code>TAB(6)</code></div>
</dd>
<dt><strong><code>POS</code></strong> - Indica la posizione corrente del cursore</dt>
<dd>
<div>Sintassi (Dummy = valore non rilevante) ;<br />
<code>POS(&lt;Dummy&gt;)</code></div>
<div>Esempio:<br />
<code>POS(6)</code></div>
</dd>
</dl>
<h2>Files</h2>
<dl>
<dt><strong><code>LOAD</code></strong>- Carica un programma da disco o nastro</dt>
<dd>
<div>Sintassi:<br />
<code>LOAD &lt;FileName&gt; [, &lt;Dispositivo&gt; [, &lt;SecondoDisp&gt;]]</code></div>
<div>Esempi:<br />
<code>LOAD "SuperGame", 8, 1 -&gt; Carica il programma da disco #8<br />
LOAD "*", 9 -&gt; Carica il primo programma da disco #9<br />
LOAD "", 1 -&gt; Carica il primo programma da nastro(#1)</code></div>
</dd>
<dt><strong><code>SAVE</code></strong> - Salva un programma su disco o nastro</dt>
<dd>
<div>Sintassi:<br />
<code>SAVE &lt;FileName&gt; [, &lt;Dispositivo&gt; [, &lt;SecondoDisp&gt;]]</code></div>
<div>Esempi:<br />
<code>SAVE "SuperGame", 8 -&gt; Salva su disco #8</code><br />
Per sovrascrivere un file esistente su disko, far precedere il nome del file dal carattere &#8216;@&#8217;</div>
<div>Esempio:<br />
<code>SAVE "@SuperGame",8 -&gt;  Salva su disco #8, sovrascrive vecchio file</code></div>
</dd>
<dt><strong><code>VERIFY</code></strong> - Controlla se il programma in memoria e quello registrato su disco o nastro coincidono. Non modifica nulla.</dt>
<dd>
<div>Sintassi:<br />
<code>VERIFY &lt;FileName&gt; [, &lt;Dispositivo&gt; [, &lt;SecondoDisp&gt;]]</code></div>
<div>Examples:<br />
<code>VERIFY "SuperGame", 8 -&gt; Verifica SuperGame da disco #8<br />
VERIFY "*", 9 -&gt; Verifica il primo programma da disco #9<br />
VERIFY "", 1 -&gt; Verifica il primo programma da nastro #1</code></div>
</dd>
<dt><strong><code>OPEN</code></strong>- Apre un flusso dati (File)</dt>
<dd>
<div>Sintassi:<br />
<code>OPEN &lt;FileID&gt;, &lt;Dispositivo&gt; [, &lt;SecondoDisp&gt; [, &lt;FNameMode&gt;]]</code><br />
<code><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Il parametro </span>&lt;SecondoDisp&gt;</code> è un intero opzionale compreso tra 0-15 che,secondo il valore assegnato ,assume i seguenti significati:<br />
0..Utilizzato per  <code>LOAD, </code>1..Utilizzto per <code>SAVE, </code>2-14..Liberamente utilizzabile per accesso a file utente<code>, </code>15..Canale di Comando/Errore.<br />
<code>&lt;FNameMode&gt;</code> usa il formato format: &#8220;<code>&lt;NomeFile&gt; [,&lt;TipoFile&gt; [,&lt;ModoAccesso&gt;]]" </code>dove <code>&lt;TipoFile&gt;</code> può essere uno tra: <code>P</code> (Programma), <code>S</code> (Sequenziale), <code>L</code> (Relativo) or <code>U</code> (Utente)</div>
<div><code>&lt;ModoAccesso&gt;</code> può essere uno tra: <code>R</code> (Lettura),<code>W</code> (Scrittura), <code>A</code> (Aggiunta) o il numero di Bytes/Record di un file relativo.</div>
<div>Esempi:<br />
<code>OPEN 1, 4 -&gt; Apre un file di output sulla stampante #4<br />
OPEN 1, 8, 2, "My File,P,R" -&gt; Apre un programma, per la lettura, da disco #8<br />
OPEN 1, 8, 2, "My File,S,W" -&gt; Apre un file sequenziale, per la scrittura su disco #8<br />
OPEN 1, 8, 2, "My File,L,"+CHR$(40) -&gt; Apre un file relativo con 40 Bytes/Record su disco #8<br />
OPEN 1, 8, 15 -&gt; Apre il canale Comando/Errore su disco #8</code></div>
</dd>
<dt><strong><code>CLOSE</code></strong> - Chiude un flusso dati (File)</dt>
<dd>
<div>Sintassi:<br />
<code>CLOSE &lt;FileID&gt;</code></div>
<div>Esempio:<br />
<code>CLOSE 1</code></div>
</dd>
<dt><strong><code>GET#</code></strong> - Legge un singolo carattere da un file</dt>
<dd>
<div>Sintassi:<br />
<code>GET# &lt;FileID&gt;, &lt;VarName&gt;</code></div>
<div>Esempio:<br />
<code>GET#1, A$</code></div>
<div>Notare che NON c&#8217;è spazio tra &#8216;<code>GET</code>&#8216; e &#8216;<code>#</code>&#8216;.</div>
</dd>
<dt><strong><code>INPUT#</code></strong> - Recupera dati da un File</dt>
<dd>
<div>Sintassi:<br />
<code>INPUT# &lt;FileID&gt;, &lt;VarName&gt; [, &lt;VarName&gt;...]</code></div>
<div>Esempio:<br />
<code>INPUT#1, EN$, ER$, TR$, SC$</code></div>
<div>Notare che NON c&#8217;è spazio tra &#8217;<code>INPUT</code>&#8216; e &#8216;<code>#</code>&#8216;.</div>
</dd>
<dt><strong><code>PRINT# </code></strong>- Stampa dati su un File </dt>
<dd>
<div>Sintassi:<br />
<code>PRINT# &lt;FileID&gt;, &lt;Dati&gt;</code></div>
<div>Esempio:<br />
<code>PRINT#1, "Power64"</code></div>
<div>Notare che NON c&#8217;è spazio tra &#8216;<code>PRINT</code>&#8216; e  &#8217;<code>#</code>&#8216;. Notare anche che <code>?#</code> NON è <code>PRINT#</code> anche se appaiono uguali in un listato.</div>
</dd>
<dt><strong><code>CMD</code></strong> - Redireziona lo standard output (Input non è modificato ) e scrive messaggi su esso</dt>
<dd>
<div>Sintassi:<br />
<code>CMD &lt;FileID&gt; [, &lt;Messaggio&gt;]</code></div>
<div>Esempio:<br />
<code>OPEN 1, 4 ; Apre un File#1 su Stampante#4<br />
CMD 1 ; Rende #1 lo standard output<br />
PRINT "Messaggio"<br />
PRINT "Messaggio2"<br />
PRINT#1<br />
CLOSE 1</code></div>
</dd>
<dt><strong><code>ST</code><code> </code></strong>- Stato di un dispositivo (Variabile interna)</dt>
<dd>ST = 0 .. Dispositivo Ok<br />
Bit 6: 1 .. Fine del File<br />
Bit 7: 1 .. Dispositivo non presente</dd>
<dt><strong><code>READ</code></strong> - Legge dati statici dalle istruzioni DATA nel programma</dt>
<dd>
<div>Sintassi:<br />
<code>READ &lt;Var&gt; [, &lt;Var&gt;...]</code></div>
<div>Esempio:<br />
<code>10 RESTORE<br />
20 READ X$<br />
30 PRINT X$;<br />
40 S = 0<br />
50 FOR I=1 TO 3<br />
60 READ X<br />
70 S = S + X<br />
80 NEXT I<br />
90 PRINT S<br />
100 DATA "Power", 12, 34, 18</code></div>
</dd>
<dt>L&#8217;output dell&#8217;esempio sarebbe Power 64</dt>
<dt><strong><code>RESTORE</code></strong> - Resetta al primo elemento DATA del programma il puntatore a DATA.</dt>
<dd>
<div>Sintassi:<br />
<code>RESTORE</code></div>
<div>Esempio:<br />
Vedi <code>READ</code></div>
</dd>
<dt><strong><code>DATA</code></strong>- Immagazzina dati statici</dt>
<dd>
<div>Sintassi:<br />
<code>DATA &lt;Dati&gt; [, &lt;Dati&gt;...]</code></div>
<div>Esempio:<br />
<code><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Vedi </span>READ</code></div>
</dd>
</dl>
<h2>Funzioni Matematiche</h2>
<dl>
<dt><strong><code>LET</code></strong> - assegna valore a un variabile</dt>
<dd>
<div>Sintassi:<br />
<code>LET &lt;Variabile&gt; = &lt;Valore&gt;</code></div>
<div>Esempio:</div>
<div><code>LET A = 6.25</code></div>
<div>Notare che il comando <code>LET</code> è innecessario e ridondante. &lt;Variabile&gt; = &lt;Valore&gt; è tutto ciò che serve per assegnare un valore a una variabile. <code>LET</code> rallenta l&#8217;intero processo, quindi NON USATELO!</div>
</dd>
<dt><strong><code>DIM</code></strong> - Dichiarazione Array</dt>
<dd>
<div>Sintassi:<br />
<code>DIM &lt;Nome&gt;(&lt;Dimensione1&gt; [, &lt;Dimensione2&gt;...])</code></div>
<div>Esempi:<br />
<code>DIM A(7)</code> -&gt; Array di 8(!) elementi indicizzati [0..7]<br />
<code>DIM B$(4,5)</code> -&gt; Array di  30(!) stringhe [0..5 x 0..6]<br />
Uso degli elementi: <code>A(3) = 17 : B$(2,3) = "Power64"</code></div>
</dd>
<dt><strong><code>+, -, *, /, ^</code></strong> - Operatori Aritmetici</dt>
<dd>
<div>Esempio:<br />
<code>9 + 5 * (15 - 1) / 7 + 2^4 -&gt; 35</code></div>
</dd>
<dt><strong><code>&lt;, &lt;=, =, &lt;&gt;, &gt;=, &gt;</code></strong> - Operatori di confronto</dt>
<dd>
<div>Esempio:<br />
<code>3 &lt;&gt; 6 -&gt; -1 (VERO)</code><br />
<code>3 &gt; 4 -&gt; 0 (FALSO)</code></div>
</dd>
<dt><strong><code>SIN</code></strong> - Seno (Argomenti in Radianti)</dt>
<dd>
<div>Sintassi:<br />
<code>SIN(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>SIN(π/3) -&gt; 0.866025404</code></div>
</dd>
<dt><strong><code>COS</code></strong> - Coseno (Argomenti in Radianti)</dt>
<dd>
<div>Sintassi:<br />
<code>COS(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>COS(π/3) -&gt; 0.5</code></div>
</dd>
<dt><strong><code>TAN</code></strong> - Tangente (Argomenti in Radianti)</dt>
<dd>
<div>Sintassi:<br />
<code>TAN(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>TAN(π/3) -&gt; 1.73205081</code></div>
</dd>
<dt><strong><code>ATN</code></strong> - Arco Tangente (Risultato in [-π/2 .. π/2])</dt>
<dd>
<div>Sintassi:<br />
<code>ATN(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>ATN(1) -&gt; 0.785398163 ( = π/4)</code></div>
</dd>
<dt><strong><code>EXP</code></strong> - Esponentr (e<sup>x</sup> dove e = 2.71828183&#8230;)</dt>
<dd>
<div>Sintassi:<br />
<code>EXP(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>EXP(6.25) -&gt; 518.012825</code></div>
</dd>
<dt><strong><code>LOG</code></strong> - Logaritmo Naturale</dt>
<dd>
<div><code><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Sintassi:</span></code></div>
<div><code>LOG(&lt;Value&gt;)</code></div>
<div>Esempio:<br />
<code>LOG(6.25) -&gt; 1.83258146</code></div>
</dd>
<dt><strong><code>SQR</code></strong> - Radice quadrata</dt>
<dd>
<div>Sintassi:<br />
<code>SQR(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>SQR(6.25) -&gt; 2.5</code></div>
</dd>
<dt><strong><code>ABS</code></strong> - Valore Assoluto</dt>
<dd>
<div>Sintassi:<br />
<code>ABS(&lt;Valore&gt;)</code></div>
<div>Esempi:<br />
<code>ABS(-6.25) -&gt; 6.25<br />
ABS(0) -&gt; 0<br />
ABS(6.25) -&gt; 6.25</code></div>
</dd>
<dt><strong><code>SGN</code></strong> - Segno</dt>
<dd>
<div>Sintassi:<br />
<code>SGN(&lt;Valore&gt;)</code></div>
<div>Esempi:<br />
<code>SGN(-6.25) -&gt; -1<br />
SGN(0) -&gt; 0<br />
SGN(6.25) -&gt; 1</code></div>
</dd>
<dt><strong><code>INT</code></strong> - Intero (Arrotonda all&#8217;intero minore o uguale all&#8217;argomento.)</dt>
<dd>
<div>Sintassi:<br />
<code>INT(&lt;Valore&gt;)</code></div>
<div>Esempi:<br />
<code>INT(-6.25) -&gt; -7 (!)<br />
INT(-5) -&gt; -5<br />
INT(0) -&gt; 0<br />
INT(5) -&gt; 5<br />
INT(6.25) -&gt; 6</code></div>
</dd>
<dt><strong><code>RND</code></strong> - Numero casuale tra [0.0 .. 1.0]</dt>
<dd>
<div>Sintassi:<br />
<code>RND(&lt;Seed&gt;)</code><br />
Se <code>(&lt;Seed&gt; &lt; 0)</code> il generatore di numeri casuali viene inizializzato.</div>
<div>Esempi:<br />
<code>RND(-625) -&gt; 3.85114436E-06<br />
RND(0) -&gt; 0.464844882<br />
RND(0) -&gt; 0.0156260729</code></div>
</dd>
</dl>
<h2>Operatori Logici e Binari</h2>
<p>Ricordiamo la codifica dei valori Booleani<br />
<code>FALSO &lt;--&gt; 0 (0x0000) e VERO &lt;--&gt; -1 (0xFFFF)</code> or o qualunque valore non-zero.</p>
<dl>
<dt><strong><code>AND</code></strong>- AND logico e binario</dt>
<dd>
<div>Sintassi:<br />
<code>&lt;Expr&gt; AND &lt;Expr&gt;</code></div>
<div>Esempi:<br />
<code>A&gt;5 AND X&lt;=Y<br />
12 AND 10 -&gt; 8 (%1100 AND %1010 = %1000) - operazione di confronto sui bit</code></div>
</dd>
<dt><strong><code>OR</code></strong> - OR logico e binario</dt>
<dd>
<div>Sintassi:<br />
<code>&lt;Expr&gt; OR &lt;Expr&gt;</code></div>
<div>Esempi:<br />
<code>A&gt;5 OR X&lt;=Y<br />
12 OR 10 -&gt; 14 (%1100 OR %1010 = %1110) - operazione di confronto sui bit</code></div>
</dd>
<dt><strong><code>NOT</code></strong>- NOT logico e binario</dt>
<dd>
<div>Sintassi:<br />
<code>NOT &lt;Expr&gt;</code></div>
<div>Esempi:<br />
<code>NOT A&gt;5<br />
NOT 2 -&gt; -3 (NOT $0002 = $FFFD) - operazione di confronto sui bit</code></div>
</dd>
</dl>
<h2>Manipolazione di Caratteri e Stringhe</h2>
<dl>
<dt><strong><code>+</code></strong> - Concatena Stringhe</dt>
<dd>
<div>Esempio:<br />
<code>"Pow" + "er64" -&gt; "Power64"</code></div>
</dd>
<dt><strong><code>&lt;, &lt;=, =, &lt;&gt;, &gt;=, &gt;</code></strong> - Operatori di confronto</dt>
<dd>
<div>Esempi:<br />
<code>"C64" &lt; "Power64" -&gt; -1 (VERO)<br />
"Alpha" &gt; "Omega" -&gt; 0 (FALSO)</code></div>
</dd>
<dt><strong><code>LEN</code></strong> - Lunghezza stringa</dt>
<dd>
<div>Sintassi:<br />
<code>LEN(&lt;Stringa&gt;)</code></div>
<div>Esempio:<br />
<code>LEN("Power64") -&gt; 7</code></div>
</dd>
<dt><strong><code>LEFT$</code></strong> - Parte sinistra della stringa</dt>
<dd>
<div>Sintassi:<br />
<code>LEFT$(&lt;String&gt;, &lt;Lung&gt;)</code></div>
<div>Esempio:<br />
<code>LEFT$("Power64", 5) -&gt; "Power"</code></div>
</dd>
<dt><strong><code>RIGHT$</code></strong> - Parte destra della stringa</dt>
<dd>
<div>Sintassi:<br />
<code>RIGHT$(&lt;String&gt;, &lt;Lung&gt;)</code></div>
<div>Esempio:<br />
<code>RIGHT$("Power64", 5) -&gt; "wer64"</code></div>
</dd>
<dt><strong><code>MID$</code></strong> - Parte centrale della stringa</dt>
<dd>
<div>Sintassi:<br />
<code>MID$(&lt;String&gt;, &lt;Inizio&gt;, &lt;Lung&gt;)</code></div>
<div>Esempio:<br />
<code>MID$("Power64 per Macintosh", 13, 3) -&gt; "Mac"</code><br />
<code>/* -- 123456789012345678901 -- */</code></div>
</dd>
<dt><strong><code>STR$</code></strong> - Converte un numero in una stringa</dt>
<dd>
<div>Sintassi:<br />
<code>STR$(&lt;Valore&gt;)</code></div>
<div>Esempi:<br />
<code>STR$(6.25) -&gt; " 6.25"<br />
STR$(-6.25) -&gt; "-6.25"</code></div>
</dd>
<dt><strong><code>VAL</code></strong> - Converte una stringa in numero</dt>
<dd>
<div>Sintassi:<br />
<code>VAL(&lt;String&gt;)</code></div>
<div>Esempi:<br />
<code>VAL("6.25") -&gt; 6.25<br />
VAL("6xx25") -&gt; 6<br />
VAL("x6x25") -&gt; 0</code></div>
</dd>
<dt><strong><code>ASC</code></strong>- Codice ASCII del primo carattere di una stringa</dt>
<dd>
<div>Sintassi:<br />
<code>ASC(&lt;String&gt;)</code></div>
<div>Esempio:<br />
<code>ASC("P") -&gt; 80<br />
ASC("Power64") -&gt; 80</code></div>
</dd>
<dt><strong><code>CHR$</code></strong> - Carattere corrispondente ad uno specifico codice ASCII</dt>
<dd>
<div>Sintassi:<br />
<code>CHR$(&lt;Valore&gt;)</code></div>
<div>Esempio:<br />
<code>CHR$(80) -&gt; "P"</code></div>
</dd>
</dl>
<h2>Accesso alla Memoria</h2>
<dl>
<dt><strong><code>PEEK</code></strong> - Legge un byte dalla locazione di memoria</dt>
<dd>
<div>Sintassi:<br />
<code>PEEK(&lt;Loc&gt;)</code></div>
<div>Esempio:<br />
<code>PEEK(53280)</code> -&gt; Valore corrente del byte che determina il colore del bordo dello schermo</div>
</dd>
<dt><strong><code>POKE</code></strong> - Scrive un byte in una locazione di memoria</dt>
<dd>
<div>Sintassi:<br />
<code>POKE &lt;Loc&gt;, &lt;Valore&gt;</code></div>
<div>Esempio:<br />
<code>POKE 53280, 7 </code>-&gt; Imposta a 7 il valore del che determina il colore del bordo dello schermo, ottenendo il bordo giallo</div>
</dd>
<dt><strong><code>WAIT</code></strong> - Attende finché il byte di una locazione di memoria assume un certo valore </dt>
<dd>
<div>Sintassi:<br />
<code>WAIT &lt;Loc&gt;, &lt;Maschera&gt; [, &lt;Inverti&gt;]</code><br />
<code>WAIT</code> il programma si arresterà fino a che <code>((PEEK(&lt;Loc&gt;) EXOR &lt;Inverti&gt;) AND &lt;Maschera&gt;) != 0</code><br />
Se &lt;<code>Inverti</code>&gt; non è specificato assume valore di default 0.</div>
<div>Esempio:<br />
<code>WAIT 198, 255</code> -&gt; Attende la pressione di un tasto nel buffer tastiera.</div>
</dd>
</dl>
<h2>Interfaccia a programmi in Assembly</h2>
<dl>
<dt><strong><code>SYS</code></strong> - System &#8211; Richiama un programma assembler da una locazione di memoria</dt>
<dd>
<div>Sintassi:<br />
<code>SYS &lt;Loc&gt; [, &lt;Param&gt; ...]</code></div>
<div>Il numero di parametri dipende dal programma chiamato.</div>
</dd>
<dt><strong><code>USR</code></strong>- Comando utente</dt>
<dd>
<div>Sintassi:<br />
<code>USR</code>(&lt;Param&gt;)</div>
<div>Simile a <code>SYS</code> ma la locazione di memoria &lt;<code>Loc</code>&gt;a cui si punta è fissa a <code>$0310</code> ed il primo ed unico parametro &lt;<code>Param</code>&gt; è sempre valutato e memorizzato nel FloatAccu1 (<code>FAC1</code>) quando il programma assembly viene chiamato. Meno flessibile di SYS e quindi raramente utilizzato.</div>
</dd>
</dl>
<h2>Esecuzione Programmi</h2>
<dl>
<dt><strong><code>RUN</code></strong> - Avvia un programma BASIC</dt>
<dd>
<div>Sintassi:<br />
<code>RUN [&lt;Linea&gt;]</code></div>
<div>Se  &lt;<code>Linea</code>&gt; non è specificato il programma inizia dalla prima linea.</div>
<div>Esempio:<br />
<code>RUN</code></div>
</dd>
<dt><strong><code>STOP</code></strong>- Arresta l&#8217;esecuzione di un programma</dt>
<dd>
<div>Sintassi:<br />
<code>STOP</code></div>
<div><code>STOP</code> è simile ad <code>END</code>, ma stampa il messaggio <code>BREAK IN &lt;Linea&gt;</code> .</div>
</dd>
<dt><strong><code>END</code></strong> - Conclude l&#8217;esecuzione di un programma</dt>
<dd>
<div>Sintassi:<br />
<code>END</code></div>
</dd>
<dt><strong><code>CONT</code></strong> - Continua l&#8217;esecuzione di un  program </dt>
<dd>
<div>Sintassi:<br />
<code>CONT</code></div>
<div>Quando l&#8217;esecuzione di un programma è interrotta da by <code>STOP</code>, <code>END</code> o dalla pressione del tasto Run/Stop il comando <code>CONT</code> viene usato per riprendere l&#8217;esecuzione.</div>
</dd>
</dl>
<h2>Vari</h2>
<dl>
<dt><strong><code>REM</code></strong> - Commento</dt>
<dd>
<div>Sintassi:<br />
<code>REM &lt;Testo&gt;</code></div>
<div>Esempio:<br />
<code>REM Questa linea è un commento</code></div>
</dd>
<dt><strong><code>LIST</code></strong> - Mostra il listato del programma BASIC corrente</dt>
<dd>
<div>Sintassi:<br />
<code>LIST [&lt;Linea&gt; | &lt;Da&gt;- | -&lt;A&gt; | &lt;Da&gt;-&lt;A&gt;]</code><br />
Senza parametri l&#8217;intero programma viene listato.</div>
<div>Esempi:<br />
<code>LIST<br />
LIST -40<br />
LIST 100-200</code></div>
</dd>
<dt><strong><code>NEW</code></strong> - Cancella il programma corrente e tutte le variabili dalla memoria</dt>
<dd>Sintassi:<br />
<code>NEW</code></dd>
<dt><strong><code>CLR</code></strong> - Cancella tutte le variabili </dt>
<dd>
<div>Sintassi:<br />
<code>CLR</code></div>
</dd>
<dt><strong><code>FRE</code></strong> - Indica la memoria disponibili</dt>
<dd>
<div>Sintassi:<br />
<code>FRE(&lt;Dummy&gt;)</code></div>
<div>Esempio:<br />
<code>FRE(0)</code> -&gt; -26627 (immediatamente dopo l&#8217;accensione)</div>
<div>Restituisce il numero di Bytes liberi per i programmi BASIC come un intero a 16 bit con segno. Se la memoria libera eccede i 38KByte viene indicato un numero negativo. Quindi -26627 dovrebbe essere interpretato come 65536-26627 = 38909.</div>
</dd>
<dt><strong><code>π</code></strong> - Pi = 3.14159265</dt>
<dt><strong><code>TI</code></strong> - Timer Ticks trascorsi dall&#8217;accensione (1 Tick = 1/60 Second)</dt>
<dt><strong><code>TI$</code></strong> - Timer dall&#8217;accensione in Ore/Minuti/Secondi </dt>
<dt>             A <code>TI$</code> (ma non a TI) può essere assegnato un valore!</dt>
<dd>La precisione del timer è piuttosto scarsa (scarto &gt;1%)</dd>
</dl>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2013/12/19/comandi-commodore-basic-v2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Piccolo aggiornamento sul mio progettino NGDSGA (NEOGEO CD SINGLE GAME ARCADE): PHOENIX</title>
		<link>https://www.retrogamesmachine.com/2013/11/08/piccolo-aggiornamento-sul-mio-progettino-ngdsga-neogeo-cd-single-game-arcade-phoenix/</link>
		<comments>https://www.retrogamesmachine.com/2013/11/08/piccolo-aggiornamento-sul-mio-progettino-ngdsga-neogeo-cd-single-game-arcade-phoenix/#comments</comments>
		<pubDate>Fri, 08 Nov 2013 10:23:42 +0000</pubDate>
		<dc:creator><![CDATA[iocerostaff]]></dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>

		<guid isPermaLink="false">http://www.retrogamesmachine.com/?p=5916</guid>
		<description><![CDATA[Continuo l’aggiornamento sulla mia missione autolesionista ovvero lo sviluppo di un emulatore Z80 per NeoGeo CD. Questa volta l’emu inizia a dare segni di vita riconoscibile emulando la rom di PHOENIX (uno dei miei arcade preferiti in assoluto!). Purtroppo emulare [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p><span style="line-height: 1.5;">Continuo l’aggiornamento sulla mia missione autolesionista ovvero lo sviluppo di un emulatore Z80 per NeoGeo CD. Questa volta l’emu inizia a dare segni di vita riconoscibile emulando la rom di PHOENIX (uno dei miei arcade preferiti in assoluto!).</span></p>
<p>Purtroppo emulare uno Z80 a 2Mhz su un NeoGeo con Motorola 68000 a 12Mhz è da associare a una missione impossibile sia in termini di peso computazionale che per differenza abissale dell’HW SNK rispetto un PC.</p>
<p>In questo caso non abbiamo la possibilità di renderizzare grafica direttamente in VRAM perché il NeoGeo è capace solo di rappresentare a video o sprite o testo (modalità fix) quindi il “barbatrucco” sta nell’inventare un trick di programmazione atualmente in fase di analisi…</p>
<p>Continua a seguire gli aggiornamenti sullo sviluppo &#8211;&gt; <a href="http://www.iocero.com/eventdetail.aspx?idevent=27312">http://www.iocero.com/eventdetail.aspx?idevent=27312</a></p>
<p>RetroIsTheOnlyFuture!</p>
<p>BEY</p>
<p><a href="http://www.iocero.com/" rel="nofollow">http://www.IoCero.com</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2013/11/08/piccolo-aggiornamento-sul-mio-progettino-ngdsga-neogeo-cd-single-game-arcade-phoenix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NeoGeo CD Galaxian Emu Rel:0.01 ….L’importante è iniziare ;)</title>
		<link>https://www.retrogamesmachine.com/2013/10/23/neogeo-cd-galaxian-emu-rel0-01-limportante-iniziare/</link>
		<comments>https://www.retrogamesmachine.com/2013/10/23/neogeo-cd-galaxian-emu-rel0-01-limportante-iniziare/#comments</comments>
		<pubDate>Wed, 23 Oct 2013 16:06:53 +0000</pubDate>
		<dc:creator><![CDATA[iocerostaff]]></dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Emulatori]]></category>
		<category><![CDATA[Homebrew/Indie]]></category>
		<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>

		<guid isPermaLink="false">http://www.retrogamesmachine.com/?p=5287</guid>
		<description><![CDATA[Visto che nessuno l’ha mai fatto mi sono detto: “perché non realizzare un emulatore di galaxian su NeoGeo CD?”…..Non l’avessi mai fatto   Devo ammettere che il “progettino” richiede più tempo di quanto immaginassi ma l’importante è iniziare con un minimo [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p>Visto che nessuno l’ha mai fatto mi sono detto: “perché non realizzare un emulatore di galaxian su NeoGeo CD?”…..Non l’avessi mai fatto <img alt=":D" src="http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1129645325g" /> <img alt=":D" src="http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1129645325g" /></p>
<p>Devo ammettere che il “progettino” richiede più tempo di quanto immaginassi ma l’importante è iniziare con un minimo di analisi.</p>
<p>Ad oggi sono riuscito a far funzionare un mini core Z80 atto a emulare la scheda arcade del gioco con output a video di soli char ASCII per verificare il corretto avviamento del mini emulatore. Quello che manca è una interfaccia grafica che traduca il contenuto della VRAM della scheda originale e lo converte per il chip video del NGCD.<span id="more-5287"></span></p>
<p><a href="http://www.retrogamesmachine.com/wp-content/uploads/2013/10/IMGTMP2-1.jpg"><img class="alignnone size-medium wp-image-8474" alt="IMGTMP2 (1)" src="http://www.retrogamesmachine.com/wp-content/uploads/2013/10/IMGTMP2-1-300x210.jpg" width="300" height="210" /></a></p>
<p>Chi si vuole aggregare nell’impresa? Ok ok continuerò da solo….. <img alt=":D" src="http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1129645325g" /></p>
<p>SCARICA L’ISO PER NEOGEO CD –&gt; <a href="http://www.filedropper.com/neogalagaemu" target="_blank">http://www.filedropper.com/neogalagaemu</a></p>
<p>News e Blog Dev Link -&gt; <a href="http://www.iocero.com/eventdetail.aspx?idEvent=21009">http://www.iocero.com/eventdetail.aspx?idEvent=21009</a></p>
<p>Stay Tuned!</p>
<p>RetroIsTheOnlyFuture!</p>
<p>BEY From St@ff <a href="http://retrogamesmachine.wordpress.com/2013/10/23/neogeo-cd-galaxian-emu-rel0-01-limportante-e-iniziare/www.iocero.com">www.IoCero.com</a></p>
<p>&nbsp;</p>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2013/10/23/neogeo-cd-galaxian-emu-rel0-01-limportante-iniziare/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSX2 Basic + MSX DOS (A. Sickler – A. Van Utteren)</title>
		<link>https://www.retrogamesmachine.com/2012/10/15/msx2-basic-msx-dos-a-sickler-a-van-utteren/</link>
		<comments>https://www.retrogamesmachine.com/2012/10/15/msx2-basic-msx-dos-a-sickler-a-van-utteren/#comments</comments>
		<pubDate>Mon, 15 Oct 2012 09:16:16 +0000</pubDate>
		<dc:creator><![CDATA[MetalRedStar]]></dc:creator>
				<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[libri]]></category>
		<category><![CDATA[libri msx italiano pdf download]]></category>
		<category><![CDATA[MSX]]></category>
		<category><![CDATA[msx basic]]></category>
		<category><![CDATA[msx computers]]></category>
		<category><![CDATA[msx dos]]></category>
		<category><![CDATA[msx2]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[philips]]></category>
		<category><![CDATA[retroprogrmamazione]]></category>
		<category><![CDATA[scan]]></category>
		<category><![CDATA[scansioni]]></category>

		<guid isPermaLink="false">http://retrogamesmachine.wordpress.com/?p=752</guid>
		<description><![CDATA[Approfittando del fine settimana ho cercato di mettere un po&#8217; di ordine nel marasma di documentazione retroinformatica che ho accumulato nei miei hard disk. Sscansioni di documenti, manuali e libri vari affollavano i miei supporti magnetici senza una minima catalogazione [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p>Approfittando del fine settimana ho cercato di mettere un po&#8217; di ordine nel marasma di documentazione retroinformatica che ho accumulato nei miei hard disk. Sscansioni di documenti, manuali e libri vari affollavano i miei supporti magnetici senza una minima catalogazione e spesso capitava di ignorare persino ciò che avevo o l&#8217;ubicazione di ciò che ero sicuro di avere. L&#8217;idea era di organizzare uno &#8220;spazio di lavoro&#8221; per poter approfondire la programmazione di alcune macchine in maniera più ragionata.</p>
<p>Lungi dall&#8217;aver terminato di sistemare il caos imperante (la lotta in questo senso sarà lunga) devo dire che i frutti che tuttavia ho ottenuto da questo lavoro sono stati davvero piacevolmente sorprendenti!<br />
<span id="more-752"></span></p>
<p>Ho scoperto infatti di avere  già da tempo immagazzinato tra la varia documentazione, le scansioni dell&#8217;edizione italiana del libro MSX2 Basic + MSX DOS di A. Sickler e A. Van Utteren, l&#8217;edizione distribuita da Philips coi suoi MSX2.</p>
<p>Sembra sia un libro abbastanza ricercato nella nostra lingua, io stesso, ignorando fin&#8217;ora di averlo, avevo precedentemente contattato diversi utenti MSX molto più navigati di me per trovarlo ma sembra che fosse proprio difficile ottenerlo.</p>
<p>E invece, quando mi ero rassegnato a usare il PDF dell&#8217;edizione francese e stavo valutando l&#8217;acquisto di una copia spagnola, frugando in un bell&#8217;archivione MSX che avevo già da diverso tempo tra i libri italiani guarda un po&#8217; cosa ti salta fuori!</p>
<p>La scansione proprio di quest&#8217;oggettino del desiderio (almeno mio).</p>
<p>Lesto monto un PDF dalle scan delle singole pagine e subito mi balena l&#8217;idea che forse anche qualcun altro potrebbe esserne alla ricerca, e quindi lo metto a disposizione di tutti tramite il link alla fine di quest&#8217;articolo che potrete incontrare anche nella sezione &#8220;Download&#8221; del blog.</p>
<p>Spero che vi possa essere utile, fatemi sapere.<br />
Link:<a title="MSX2 Basic + MSX DOS (A. Sickler - A. Van Utteren)" href="http://www.mediafire.com/view/?na3k7ra8830vkis" target="_blank"> (Libri – MSX) MSX2 Basic + MSX DOS Philips (A. Sickler – A. Van Utteren)</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2012/10/15/msx2-basic-msx-dos-a-sickler-a-van-utteren/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>TommyGun &#8211; a retro development toolkit</title>
		<link>https://www.retrogamesmachine.com/2012/09/25/tommygun-a-retro-development-toolkit/</link>
		<comments>https://www.retrogamesmachine.com/2012/09/25/tommygun-a-retro-development-toolkit/#comments</comments>
		<pubDate>Tue, 25 Sep 2012 10:08:58 +0000</pubDate>
		<dc:creator><![CDATA[MetalRedStar]]></dc:creator>
				<category><![CDATA[Articoli]]></category>
		<category><![CDATA[Fuffa]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Retroprogrammazione]]></category>
		<category><![CDATA[Retroworkshop]]></category>
		<category><![CDATA[16bit]]></category>
		<category><![CDATA[8bit]]></category>
		<category><![CDATA[Amstrad]]></category>
		<category><![CDATA[atari]]></category>
		<category><![CDATA[C64]]></category>
		<category><![CDATA[Commodore]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[MSX]]></category>
		<category><![CDATA[Sinclair]]></category>
		<category><![CDATA[VIC20]]></category>
		<category><![CDATA[ZX Spectrum]]></category>

		<guid isPermaLink="false">http://retrogamesmachine.wordpress.com/?p=364</guid>
		<description><![CDATA[Un ottimo IDE cross-platform per sviluppo di codice per macchine retro. Se avete sempre sognato di scrivere in maniera facile e veloce un giochino sul vostro computer di 30 anni fa, TommyGun è lo strumento che fa per voi. TommyGun [&#8230;]]]></description>
				<content:encoded><![CDATA[<div class="pf-content"><p>Un ottimo IDE cross-platform per sviluppo di codice per macchine retro.</p>
<p>Se avete sempre sognato di scrivere in maniera facile e veloce un giochino sul vostro computer di 30 anni fa, TommyGun è lo strumento che fa per voi.</p>
<p><span id="more-364"></span></p>
<p>TommyGun non si può certo definire un progetto recente e sicuramente coloro che bazzicano l&#8217;ambito della retro programmazione ne avranno sentito parlare, ma per tutti gli altri può essere interessante.</p>
<p>Si tratta di un ambiente integrato di sviluppo che comprende una console di sviluppo codice, uno sprite editor, strumenti per il debug e quanto possa essere necessario per sviluppare un gioco con estrema facilità.</p>
<p>Sono compresi i vari dialetti BASIC delle varie macchine, l&#8217;assembly specifico per le CPU utilizzate e le relative mappe di memoria di ogni computer e addirittura e previsto uno specifico compilatore C!</p>
<p>Il progetto ha il suo punto di forza nella possibilità di scrivere codice NATIVO per tutte le macchine che sono/saranno supportate. Ovvero come spiegato dall&#8217;autore l&#8217;IDE è attualmente volontariamente limitato al supporto di varie macchine 8 e 16 bit (per ora essenzialmente Spectrum, C64 e Amstrad), ma è teroicamente un IDE modulare e aperto a qualunque piattaforma, infatti nei <a title="TommyGun Low ToDo  List" href="http://www.users.on.net/~tonyt73/TommyGun/TommyGun%20(Low).html" target="_blank">TODO</a> l&#8217;autore si prefigge di realizzare il supporto per una varia quantità di macchine, console incluse.</p>
<p>Il progetto sfortunatamente è fermo (ma non ufficialmente cancellato) dal 2009, si spera che l&#8217;autore voglia e/o possa riprenderlo al più presto e completare i moduli di supporto delle altre macchine, magari mandargli una tonnellata di mail all&#8217;indirizzo <a href="mailto:tommygun.ide@gmail.com">tommygun.ide@gmail.com</a> potrebbe invogliarlo a riprendere il lavoro e magari qualcuno volenteroso potrebbe dargli una mano.</p>
<p>A onor del vero l&#8217;unico screen shot presente sul sito cita in basso un supporto a Windows7 (non ufficialmente supportato da TommyGun anche se funzionante) e l&#8217;anno 2010 riferendosi però a un &#8220;fantomatico&#8221; ZX Game Studio (di cui non si rova traccia su internet) con supporto esclusivo per ZX Spectrum anche se le finestre dell&#8217;editor sono charamente quelle di TommyGun&#8230; Mistero!</p>
<p>Intanto potete divertirvi con quello che c&#8217;è, da parte mia se riuscirò a concludere qualcosa di produttivo con questo strumento o altri simili (come l&#8217;eccellente <a title="CMB .prg Studio" href="http://www.ajordison.co.uk/" target="_blank">CBM .prg Studio</a> esclusivo per sistemi Commodore di cui vi parlerò prossimamente) magari realizzerò una serie di piccole &#8220;lezioni&#8221; (scusate la parolona) per realizzare un semplice giochino sul vostro vecchio, caro mostriciattolo di silicio.</p>
<p>Link a TommyGun retro development IDE: http://www.users.on.net/~tonyt73/TommyGun/</p>
<p>&nbsp;</p>
<p><em>Update 11/03/2014</em></p>
<p>Come gentilmente fatto notare dall amico Farox, in un commento al post che trovate più sotto, sebbene il sito originale non sia più raggiungibile il progetto pare essersi spostato su Sourceforge (quindi opensource) dove potrete trovare una versione del 2011 ( la 0.10.0) che però da compilare. Speriamo che l&#8217;autore continui con lo sviluppo di questo interessante tool.</p>
<p>L&#8217;URL per il download è il seguente:<br />
<a href="http://sourceforge.net/projects/tommygun/" rel="nofollow">http://sourceforge.net/projects/tommygun/</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>https://www.retrogamesmachine.com/2012/09/25/tommygun-a-retro-development-toolkit/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
