Newsgroup: it.comp.software.emulatori
Titolo: Assembler C64.

Ue raga sono nuovo del news! Qualcuno mi sa dire qual'e' il migliore
assembler che posso scaricare dall'internet per programmare gratis il
C64 emulato? Grazie a tutti ciao.
P.s.: :p

 P.s.: :p
Ok, lamerate a parte (il post di cui sopra e' quello da usare per
spararmi addosso, tanto dopo essere stato bersagliato col Sol Cannon
non mi preoccupo piu' di nulla), ho preso Tass 6502 come suggerito dai
Fairlight. Pero' se ci fossero ulteriori PDV visto che stiamo parlando
di sviluppare per C64 ne sarei molto felice.
http://taboo.eu.org/download/index.html
http://www.fairlight.to/docs/6502onthepc.html
Appropo', Fort Apocalypse dove lo trovo? ;)

 C64 emulato? Grazie a tutti ciao.
Si puo' programmare il C64 emulato?

 Si puo' programmare il C64 emulato?
No,ci fai andare solo  le rom commerciali pezzotte w4r3z rubate sul
mulo,in particolare l'unica rom che raggiunge i 30 fps stabili e` "Hades
Nebula".
Pero` devi avere ancora il firmware 1.50 o fare il downgrade

 Pero` devi avere ancora il firmware 1.50 o fare il downgrade
Ma sei scemo? ... l'emulatore di Spectrum per C64 non permetteva di
programmare in linguaggio macchina... quindi informati prima di fare il
sarcasmo da Giallappa's del giovedi'.

 di sviluppare per C64 ne sarei molto felice.
Io mi sono personalizzato DASM e ora mi ci trovo meglio che con il C64asm
con cui ho cominciato a fare crossassembling.
TASS va piu' che bene perche' anche quello e' compatibile con il
TurboAssembler nativo.
Molti sceners usano CA65, nel pacchetto del crosscompiler C CC65, ma lo
trovo estremamente (e inutilmente) difficile da usare.
Non resta che provarne un po' e vedere con quale ci si trova meglio.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Reality-ometer:  [\........]  Hmmph!  Thought so...




Si', ma devi avere un assembler e devi chiederglielo per favore
inserendo la direttiva "yes please" al termine del sorgente... ;)
Pero' non fa andare R-Type Delta per PSX :(

 Pero' non fa andare R-Type Delta per PSX :(
Che ridere oh oh ho...



http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/acme.html
Io mi ci trovo molto bene...

 sarcasmo da Giallappa's del giovedi'.
"l'emulatore di Spectrum". Gia`,c'e` ne e` *uno*

 sarcasmo da Giallappa's del giovedi'.
Ahaha riletto ora "l'emulatore di Spectrum *per C64*".
Cioe` ti pare che nel 2006 con un giga di ram e milioni di miliardi di IPS
del vecchio conio ci sono problemi?

 Fairlight.
OK, a me fa molto piacere se qualcun' altro si dedica alla
retroprogrammazione :) 
Se hai bisogno di suggerimenti, aiuti, ecc. sono a tua disposizione :)
Saluti,
Dott. Piergiorgio.

 trovo estremamente (e inutilmente) difficile da usare.
Il fatto di base e' che un assembler scritto principalmente come backend
di un compilatore generalmente e' ostico per scriverci direttamente codice.
Io personalmente mi trovo bene con DASN liscio, e in generale poi tratto i
file oggetto o binari con dei programmilli adhoc scritti da me (che IMHO
non sono degni di essere definiti linker, ma sostanzialmente fanno questo
lavoro, rendendo eseguibile un immagine binaria)
Saluti,
Dott. Piergiorgio.

 Appropo', Fort Apocalypse dove lo trovo? ;)
hai posta.  ;-)
bye G.L.

 sarcasmo da Giallappa's del giovedi'.
Grazie al piffero, emulava solo l'ambiente basic...
bye G.L.

 Si puo' programmare il C64 emulato?
Macche'... ci carichi i binari, che la 99.8% girano, e ti fai pure una
domanda simile? Bah...
bye G.L.


/me si mette ad urlare in modo disumano (vabbe' che mi mancava
veramente l'immagine)
*** Usenetquote ********************************
Sorry, but I don't want to continue this thread -- it has "Fort
Apocalypse" in the subject, and I don't want my mailbox flooded with
copies of it!  :-D 
*** comps.emulators.cbm 19 marzo 1998 ***



Oops... chiedo scusa.  :-)
bye G.L.

 Se hai bisogno di suggerimenti, aiuti, ecc. sono a tua disposizione :)
Ho subito una domandina ina ina. :>
Io inserisco il mio codice in $c000, e poi lo carico col Vice e lo
faccio partire con Sys 49152. Fin qui tutto bene, ma... non ci sarebbe
qualche modo per creare un listatino in basic che faccia partire il
programma quando lo carico da disco?
(O meglio, che il programma si esegua automaticamente quando finisce di
caricare, un po' come con gli isepic se non ricordo male)
Come creo poi delle immagini PRG che hanno del codice gia' sparso per
la ram? Si puo' fare? Tanto per dire, mettere parte del codice su
$c000, altra parte su $0384?
Mi basterebbero dei puntatori alle doc giuste.
10x

 $c000, altra parte su $0384?
Allora: per prima cosa, purtroppo il S.O. del 64 non permette
riallocazione se non monolitica; quindi devi fare un loader in basic
(anche compilato) che carichi le varie parti nelle rispettive aree di
memoria, poi da' la SYS iniziale.
Di autorun ce ne sono a bizzeffe; in genere operano alterando il buffer di
tastiera, che pero' e' lungo solo 16 o 32 caratteri (nn ricordo bene
adesso) quindi si deve fare una cosa compattissima, tipo un
lO"a",8:rU 
Quindi in linea di massima serve un vero e proprio bootstrap: un
programmino d' autorun che a sua volta carica il loader che si occupa a
sua volta di caricare le varie parti e dare la sys iniziale; e bisogna
anche tenere in considerazione la sovrascrittura del loader, se si usa il
basic nel loader e serve anche la parte iniziale dell' area Basic.
Inoltre, in mia opinione aree libere sotto $800 (cioe' 2048) e' meglio
usarla per scratchpad o aree di storaggio dati (un mio progettino di gioco
tipo RPG ma molto semplificato dovrebbe usare per i dati salvabili il
buffer di cassetta) a patto di fare estrema attenzione a cose come l' uso
dei buffers, o peggio la parte bassa dello stack (= estrema attenzione a
tenere il conto dei PHA/PLA ecc.) Uno dei difetti dell' architettura
Commodore e' l' uso di quasi tutta la pagina zero, che costringe a veri
sforzi d' attenzione se si vogliono usare le compatte e veloci istruzioni
zeropage. Non va dimenticato, infatti, che puo' sempre emergere la
convenienza di usare routine del Kernel o, più raramente, del Basic.
Saluti,
Dott. Piergiorgio.

 10x
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
It was my best experience. Now, only sex is left over... ;)

 $c000, altra parte su $0384?
Puoi sempre linkare i 2 pezzi e cruncharli, oppure ti crei uno stub di
rilocazione:
[inserisci qua il sorgente precedente per la riga sys]
    ;* = $080d
    ldx #0
rel1
    lda part1,x
    sta $c000,x
    inx
    cpx #[endpart1-part1]
    bne rel1
    ldx #0
rel2
    lda part2,x
    sta $0384,x
    inx
    cpx #[endpart2-part2]
    bne rel1
    jmp $c000 ; fai partire il tuo codice
    ; carica i prg all'ndirizzo attuale
    ; creando una versione compatta del tutto
part1
    incprg codice$c000.prg
endpart1
part2
    incprg codice$0384.prg
endpart2
tutto questo e' compilabile con la mia versione di dasm, incprg ad esempio
e' un comando che ho implementato io per poter leggere i prg del c64 che
hanno il load address nei primi 2 bytes; con ,
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
CONNECT 28800 +E/€œ‌½©´» زـفلًُتغظ ¬°¾ب´²ڑ@ك  NO CARRIER

 con ,
con
incprg nome.prg,L
ad esempio si puo' caricare il prg all'indirizzo originale, letto dai 2
bytes iniziali o con
incprg nome.prg,$1000
si puo' forzare il caricamento all'indirizzo specificato
DASM e' qua, se interessa: 
iancoog.altervista.org
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Ma chi e' che va costruendo quadrati sull'ipotenusa?

 Kernel o, più raramente, del Basic.
Ovviamente ma solo se si deve fare solo una piccola routine chiamata da un
prg basic.
Le routine nel kernal sono spesso lente rispetto a routine scritte da se',
in un prg tutto in assembly meglio dimenticarsi del basic.
Se non si ha bisogno di routines in rom
    sei
    inc $01
e si lavora con tutte le locazioni che si vogliono, $02-fff9
($00/$01$fffa-$ffff sono riservate al processore e quindi meglio usarle solo
come si deve e non come codice o dati)
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
"Quando e morto Manzoni?"
"Guardi, non sapevo neanche stesse male!"

 Il basic "necessario" e' solo la SYS.
Aspetta: da quello che ho capito, Davide vuole un programma con parti in
$c000 e altre sotto $800, cosa a quanto so, impossibile da fare con 64 e
1541, il che richiede un loader per le diverse parti, che certo si puo'
scrivere in asm, ma in ultima analisi non so che sta programmando e non
posso escludere qualcosa tipo tools o estensioni del Basic che quindi
dovrebbero lasciare il più possibile libera l' area basic e/o avere a
disposizione basic e kernel.
Saluti,
Dott. Piergiorgio.

 con 64 e 1541, il che richiede un loader per le diverse parti, che
Che c'entra il 1541?
E non e' necessario avere piu' file da caricare, basta un rilocatore. Tutto
in memoria in un solo singolo file. che sia basic+asm o solo asm.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
L'universo e' un gran giramento di palle

 programma quando lo carico da disco?
* = $0800
    !byte $00, $01, $08, $0a, $00
               !byte $9e, $20
               !text "2304"
               !byte $00, $00, $00
Codice che parte da $0800, 2304 e' l'indirizzo da cui parte il programma in
asm (indirizzo definito con un *=$0900 subito dopo questa serie di
istruzioni, cosi' rispondo anche all'altra domanda). Se dopo il caricamento
di queste poche righe digiti list salta fuori
10 sys 2304

     !byte
Questo e' quello che mi piace di meno di Acme, le direttive con
l'esclamativo ^_^;
Ovunque si usano con . o, meglo ancora, senza e costui si e' inventato una
roba diversa :D
Devo ammettere che l'ho usato un po' quando vidi che DASM non aveva alcune
facilities specifiche per C64 come SCRU/SCRL (utilissime e presenti in
C64ASM) ma alla fine ho preferito farmi una versione customizzata del DASM
con cio' che mi serviva, prendendo spunti da un po' tutti i xassembler che
conoscevo.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Fan #1 di Teresa Testarossa

 facilities specifiche per C64 come SCRU/SCRL 
Io uso Dasm (quello da te customizzato) e Acme... Quest'ultimo ha la
precedenza perche' e' quello a cui sono abituato!
Piuttosto tempo fa ho notato un piccolo bug nella tua versione:
Se hai 
	*=$0800
	blah blah
$0820:	rts
	*=$2000
	!byte 11,22,33,etc etc
l'assemblato non va oltre $0820. Tutto ok con la direttiva org!

 l'assemblato non va oltre $0820. Tutto ok con la direttiva org!
Molto meglio la direttiva org, specie con questo sfizioso codice:
ASMO equ $C000
ORG  ASMO
ah, l' adolescenza.... ;) :D
Alzi la mano chi non ha mai usato questo frammento di codice ;)
Saluti,
Dott. Piergiorgio.

 l'assemblato non va oltre $0820. Tutto ok con la direttiva org!
*= $2000 ; forma da me implementata, "*=" e' una keyword
o
* = $2000 ; forma gia' implementata da Olaf, equivale a . = $2000
Se scrivi tutto attaccato *=$blabla non lo capisce perche' lo considera un
unica keyword e non riesce a trasformarlo internamente in una direttiva ORG
.
Purtroppo il parser e' molto ostico, e necessita di SPAZI tra le keyword e
l'argomento, non me la sento di cambiarlo. :)
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
We want *you* removed from the web

 Alzi la mano chi non ha mai usato questo frammento di codice ;)
io, ma ne so una ancora piu' bella
;SECSTARTS
    *= $C001
    LDA $D00D
    AND $BABE
    JMP $2BED
    *= $2BED
    LDA $C0CC
    STA $B00B
    PHA
    PLA
    CMP $DEAD
    BEQ $2BAD
    BNE $2BED
    *= $2BAD
    BRK
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
* Fatal error : Mac user detected ! IDIOT MODE ON.

 io, ma ne so una ancora piu' bella
[snip]
ROTFL ! davvero interessante ! meglio del Perl Poetry ! :)
Saluti,
Dott. Piergiorgio.

 l'argomento, non me la sento di cambiarlo. :)
Ah! In effetti e' ok! Bene, sono quasi pronto alla conversione! :)

 ORG  ASMO
Il bello e' che l'ho anche testato e mi sono chiesto dove stava il trucco!
Poi ho realizzato... Un po' come quando mi dissero che ad un esame si era
iscritto un certo Turbato Thomas: tutti a ridere mentre io mi chiedevo chi
diavolo fosse!


Mano alzata! ;-) (Mai avuto un C64...)

 Mano alzata! ;-) (Mai avuto un C64...)
No problem: quasi tutti gli assemblatori ci hanno le direttive ORG ed EQU ;)
Saluti,
Dott. Piergiorgio.