Autore Topic: Assembler/disassembler C64  (Letto 9189 volte)

Yurif999

  • Utente
  • **
  • Post: 86
    • http://www.facebook.com/juri.fossaroli
  • Gioco Preferito: Turrican
Assembler/disassembler C64
« il: 29 Settembre 2013, 20:31:49 »
 Ciao a tutti,
nessuno conosce un buon editor/compilatore assembler per c64, che giri sotto windows (con gli ovvi benefici come copia/incolla, keyword colorate, labels, include, associazioni di labels ad indirizzi di memoria,esempio Rst = $EA31 in modo da chiamare poi semplicemente con un "JMP Rst;", ecc..) e, se non chiedo troppo, le routine del kernel c64 gia' codificate, esempio JSR CHROUT;  (ok per quest'ultima basta fare un file con le associazioni e poi includerlo con il comando include all'inizio)

insomma un tool completo ed abbastanza potente :)
JMP $EA31

COMMODORO

  • Utente
  • **
  • Post: 160
  • Gioco Preferito: Bomberman C64
Assembler/disassembler C64
« Risposta #1 il: 30 Settembre 2013, 00:00:03 »
 Ciao.
io sto usando questo:
CBM prg Studio

Ha tutte le caratteristiche che richiedi.
Sotto certi aspetti deve ancora arrivare a livello dei più evoluti assembler ma é ottimo lo stesso.
Su www.lemon64.com nel Forum, nella stanza 'New Release' c'é un Topic dedicato con frequenti interventi dell'autore, che aggiorna spesso il programma.
Per quanto riguarda 'JSR CHROUT' etc basta assegnare una variabile all'inizio del programma tipo:
SFONDO          = 53281

 

Yurif999

  • Utente
  • **
  • Post: 86
    • http://www.facebook.com/juri.fossaroli
  • Gioco Preferito: Turrican
Assembler/disassembler C64
« Risposta #2 il: 30 Settembre 2013, 00:05:20 »
 Ti ringrazio commodoro, per quanto riguarda "JSR CHROUT" non e' un grosso problema :)
gli daro' un'occhiata, anzi, lo provo di sicuro!
ciao e grazie ancora, cmq altri suggerimenti sono ben accetti :)
JMP $EA31

Flavioweb

  • Redazione
  • Utente
  • ****
  • Post: 58
    • http://www.flavioweb.it
  • Gioco Preferito: Maniac Mansion
Assembler/disassembler C64
« Risposta #3 il: 30 Settembre 2013, 09:28:47 »
 Fondamentalmente potresti editare il codice con un qualunque editor che abbia l'highlight della sintassi (ce ne sono una miriade per win), e poi compilare il codice con 64tass che é compatibile con l'originale turboassembler...

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Assembler/disassembler C64
« Risposta #4 il: 30 Settembre 2013, 22:54:09 »
 Io mi sono avvicinato alla programmazione assembly da poco, ma mi trovo molto bene con CBM Prg Studio e uso anche CharPad per il level editing:
 

Yurif999

  • Utente
  • **
  • Post: 86
    • http://www.facebook.com/juri.fossaroli
  • Gioco Preferito: Turrican
Assembler/disassembler C64
« Risposta #5 il: 09 Ottobre 2013, 14:19:27 »
 ciao ancora, ci ho dato un occhiata ma ha qualcosa che non va (o meglio HO qualcosa che non va) non riesco a creare un semplice programma tipo questo:

Codice: [Seleziona]
1 SYS2112

*=2112

RTS

non so come inserire la linea basic nell'area di editing LM, d'altro canto se apro una finestra per editare un programma basic e inserisco quella linea, quando vado a creare l'eseguibile (.prg) mi da un sacco di errori e non me lo crea. ho cercato un po nel web una soluzione ma senza successo
JMP $EA31

eregil

  • Administrator
  • Utente
  • *****
  • Post: 706
  • Gioco Preferito: Impossible Mission
Assembler/disassembler C64
« Risposta #6 il: 09 Ottobre 2013, 22:28:57 »
 Non ho capito se sai che cosa deve essere fatto (come risultato) ma non sai farlo con Cbm Prg Studio, o se hai proprio dubbi su come sia costruito un programma in LM con SYS. Volendolo realizzare a mano, si tratta di replicare, byte per byte, la struttura del programma BASIC, a partire da 2049. Ci sono articoli in giro che spiegano tutto, ma in prima approssimazione (e in attesa di trovare e sviscerare questi articoli), immetti nel C64 il programma in BASIC contenente solo la SYS, apri il monitor e copiati i byte dalla locazione 2049 fino al triplo zero di fine programma. Nel tuo sorgente replicherai pari pari questi byte, inserendoli come dump di memoria anziché come istruzioni assembly.

Entrando nel dettaglio, in memoria ogni riga di BASIC contiene un puntatore alla locazione della riga successiva (link classico byte basso-byte alto), il numero di riga (sempre in notazione byte basso-byte alto), quindi il contenuto, espresso in codifiche token per le parole chiave del BASIC e PETSCII per tutto il resto; il tutto è terminato con un byte zero. Il programma termina con un link alla locazione 0 (risultando così un triplo zero). Maggiori particolari in giro per i contenuti del sito.
 
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

COMMODORO

  • Utente
  • **
  • Post: 160
  • Gioco Preferito: Bomberman C64
Assembler/disassembler C64
« Risposta #7 il: 10 Ottobre 2013, 00:59:52 »
 
Citazione da: "Yurif999"
ciao ancora, ci ho dato un occhiata ma ha qualcosa che non va (o meglio HO qualcosa che non va) non riesco a creare un semplice programma tipo questo:

Codice: [Seleziona]
1 SYS2112

*=2112

RTS

non so come inserire la linea basic nell'area di editing LM, d'altro canto se apro una finestra per editare un programma basic e inserisco quella linea, quando vado a creare l'eseguibile (.prg) mi da un sacco di errori e non me lo crea. ho cercato un po nel web una soluzione ma senza successo
Ciao.
Cercavi di rendere autoeseguibile il tuo programma usando CBM Prg Studio?
Basta che selezioni dal menù a tendina 'Tools' e da lì 'Generate Sys () Call', poi una delle 2 opzioni che CREDO sia indifferente nel risultato (credo..) e ti genera il codice per l'autoavvio.

P.S. ho visto che almeno nel tuo esempio non hai riportato incolonnato correttamente il codice. Ricordati che in Cbm prg Studio le istruzioni vanno spostate qualche colonna rispetto alla prima (mi pare almeno 8 spazi ma devo controllare), cioé prima di scrivere un'istruzione devi battere almeno il tasto TAB una volta. Nella prima colonna possono stare solo LABEL, nomi di variabili e qualcos'altro, leggiti il file Help.
Codice: [Seleziona]
*=2112
        RTS

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Assembler/disassembler C64
« Risposta #8 il: 10 Ottobre 2013, 01:18:20 »
 
Citazione da: "COMMODORO"
P.S. ho visto che almeno nel tuo esempio non hai riportato incolonnato correttamente il codice. Ricordati che in Cbm prg Studio le istruzioni vanno spostate qualche colonna rispetto alla prima (mi pare almeno 8 spazi ma devo controllare), cioé prima di scrivere un'istruzione devi battere almeno il tasto TAB una volta. Nella prima colonna possono stare solo LABEL, nomi di variabili e qualcos'altro, leggiti il file Help.
 
Basta uno spazio per le istruzioni, senza spazio invece sono label o variabili.

Yurif999

  • Utente
  • **
  • Post: 86
    • http://www.facebook.com/juri.fossaroli
  • Gioco Preferito: Turrican
Assembler/disassembler C64
« Risposta #9 il: 12 Ottobre 2013, 21:40:19 »
 ciao a tutti, al momento non sono a casa per provare pero' e' come dice eregil, so cosa voglio fare ma non so come farlo con CBM studio, non me ne volete..
a cose normali facevo cosi':
cartuccia acceleratrice, accendo c64, digito "1 SYS2112 + RETURN", entro nel monitor ed inizio ad assemblare da $0840.

ho deciso di passare a cbm studio (o anche un altro) perche' spesso mi ritrovo magari a copiare parti di programma o a cercare dentro svariati file di testo gli indirizzi di routine del kernel ecc.. quindi mi sono detto: perche' non usare un software specifico per pc con tutti i vantaggi che ne derivano? (copia-incolla, listato colorato, labels, dichiarazioni a inizio programma ecc..) purtroppo pero' non conosco CBM studio e tantomeno conosco il sistema che utilizza, faccio un esempio, ho messo *=2112 non perche' sapevo che si doveva fare cosi', ma perche' mi ricordavo di averlo visto fare da qualche parte, come il comando .byte per memorizzare i dati...

altra domanda per dire: voglio un programma che venga allocato in varie parti della memoria, tipo una serie di bytes (1 sys2112) a $0801, il programma a $0840 e per esempio un'altra serie di dati allocati a $1000... come si fa? c'e' un bel tutorial su come utilizzare CBM studio? e non intendo un tutorial sul linguaggio macchina ma proprio su come strutturare il programma, per quanto riguarda lo spazio o il tab io lo uso nel programma seguendo questa forma:
Codice: [Seleziona]
LABEL:
           istruzione
           istruzione
           istruzione
           istruzione
LABEL:
           istruzione
           istruzione
           istruzione
           istruzione

nell'esempio del mio post precedente non l'ho fatto perche se premo TAB mi sposta il focus dalla finestra dell'editor ad un altra parte quindi l'ho scritto cosi' senza spazi ne tabulazioni!

@commodoro: appena torno a casa daro' un'occhiata piu' approfondita a quella funzione, grazie!
JMP $EA31

COMMODORO

  • Utente
  • **
  • Post: 160
  • Gioco Preferito: Bomberman C64
Assembler/disassembler C64
« Risposta #10 il: 13 Ottobre 2013, 02:00:47 »
 Ciao.
Il grosso di quello che devi sapere per usare CBM prg Studio lo trovi selezionando il menù HELP e poi da lì CONTENTS. In rete non troverai molto di più su come si usa, magari qualcosa lo trovi sul topic aperto sul forum di lemon64.com nella stanza NEW RELEASES.
Qualcosa puoi impararti guardandoti un pò di programmi di esempio che trovi nel menù FILE --> SAMPLE PROGRAMS --> ASSEMBLY PROGRAMS.

Se ho capito bene la tua domanda, per allocare parti di codici in specifiche parti di memoria devi semplicemente inserire un indirizzo come lo hai scritto tu seguito dal codice

*= $801
codice

*= $840
codice

*= $1000
codice

Yurif999

  • Utente
  • **
  • Post: 86
    • http://www.facebook.com/juri.fossaroli
  • Gioco Preferito: Turrican
Assembler/disassembler C64
« Risposta #11 il: 13 Ottobre 2013, 12:52:16 »
 Grazie commodoro e a tutti gli altri per l'aiuto!
lunedi' provero' il tutto  
JMP $EA31