Ciao a tutti,
mi sono messo alla ricerca di un cross-assembler comodo da usare e mi sono trovato di fronte a questo:
http://www.theweb.dk/KickAssembler/Main.php . Trattasi di Kick assembler. E' stato amore a prima vista. Non si tratta di un normale assemblatore da utilizzare su pc, bensi' un compilatore di codice assembly e pseudo codice. Mi spiego: utilizzando alcune macro facilmente intuibili e scrivendo poche righe di codice in pseudo-assembler interpretate in java, e' possibile fare cose come caricare file nativi da c64, come programmi, audio e immagini, creare routine di autostart, lavorare con vettori senza impazzire piu' di tanto. Ho letto il manuale fornito. Ovviamente potete continuare ad usare il codice assembler nativo se non vi piacciono le macro. Alcuni esempi:
definite una macro per cambiare il colore del bordo
.macro SetBorderColor(color) {
lda #color
sta $d020
}
e la richimate cosi all'interno del vostro programma passando il parametro numero colore:
:SetBorderColor(0)
con la direttiva .print e' possibile dare feedback all'utente di di una variabile, del contenuto di una locazione di memoria per un debug piu' semplice.
caricare in accumulatore funzioni matematiche, es seno, coseno o random di un seme
// Load a with a random number
lda #random()*256
usare array e hashtable! Qui l'esempio di un hashMap. Per chi conosce java il codice si legge da se:
// Define the table
.var ht = Hashtable()
// Enter some values (put(key,value))
.eval ht.put(“ram”, 64)
.eval ht.put(“bits”,
.eval ht.put(1, “Hello”)
.eval ht.put(2, “World”)
.eval ht.put(“directions”, List().add(“Up”,”Down”,”Left”,”Right”))
// Retrieve the values
.print ht.get(1) // Prints Hello
caricare file da filesystem ed autoeseguirli. Esempio di load e autostart di una bitmap koala paint
.const KOALA_TEMPLATE = "C64FILE, Bitmap=$0000, ScreenRam=$1f40, ColorRam=$2328,
BackgroundColor = $2710"
.var picture = LoadBinary("picture.prg", KOALA_TEMPLATE)
.pc = $0801 "Basic Program"
:BasicUpstart($0810)
.pc =$0810 "Program"
lda #$38
sta $d018
lda #$d8
sta $d016
lda #$3b
sta $d011
lda #0
sta $d020
lda #picture.getBackgroundColor()
sta $d021
ldx #0
!loop:
.for (var i=0; i<4; i++) {
lda colorRam+i*$100,x
sta $d800+i*$100,x
}
inx
bne !loopjmp
*
.pc = $0c00 .fill picture.getScreenRamSize(), picture.getScreenRam(i)
.pc = $1c00 colorRam: .fill picture.getColorRamSize(), picture.getColorRam(i)
.pc = $2000 .fill picture.getBitmapSize(), picture.getBitmap(i)
E poi cicli for, loop e quant'altro.
Il manualetto in pdf e' di 40 pagine, ma molto esplicativo. Scaricando il programma troverete all'interno il jar, il manuale ed alcuni esempi. Dovete avere java sul vostro pc (1.5) e potete provare a compilare subito in questo modo da linea di cmd:
java -jar KickAss.jar
Ciao a tutti,
Marco