Autore Topic: Domande Da Niubbo Totale  (Letto 4186 volte)

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« il: 22 Luglio 2012, 09:48:14 »
 Ragazzi, scusate la domanda, ma sono un niubbo totale ed ho bisogno di una info...

Sto leggendo il libro:

ABC del Linguaggio Macchina sul Commodore 64, L'

segnalato nelle pillole di programmazione del sito e nel quarto capitolo introduce l'alpa, l'assemblatore per c64.. volevo sapere se veramente bisogna usare quell'assemblatore o se esistono assemblatori migliori e magari se esiste qualche soluzione più aggiornata e moderna, magari se possibile, usare qualche assemblatore da pc (windows) senza passare obbligatoriamente dal Vice per scrivere il codice..

Accetto consigli :)

tsm_carmine

  • Redazione
  • Utente
  • ****
  • Post: 519
  • Gioco Preferito: Krakout
Domande Da Niubbo Totale
« Risposta #1 il: 23 Luglio 2012, 00:58:28 »
 Ciao
Quello che stai cercando prende il nome di cross-assembler. Ce ne sono molti, ma ti consiglio DASM.
Dai anche un'occhiata a questo topic.
Buon lavoro!
Riusciremo a costruire un mondo dove più nessuno osi pronunciare le parole... "lettore floppy"?

4e1541

  • Utente
  • **
  • Post: 206
  • Gioco Preferito: nessuno in particolare
Domande Da Niubbo Totale
« Risposta #2 il: 23 Luglio 2012, 08:47:46 »
Citazione da: "NubeCheCorre"
[...] e magari se esiste qualche soluzione più aggiornata e moderna,
magari se possibile, usare qualche assemblatore da pc (windows)

Accetto consigli :)
Se vuoi scrivere dei programmi per il c64 e non necessariamente hai la necessita' utilizzare l'assembly per avere un controllo completo dell'hardware, dai un'occhiata a questo.

cc65, cross compilatore c multi piattaforma (host windows, linux; target c64, c128, apple, etc).

http://www.cc65.org/

ciao

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #3 il: 25 Luglio 2012, 19:17:15 »
 Grazie per le risposte!

scusate il ritardo nel rispondere, ma non ho ricevuto notifiche via mail, eppure le avevo attivate..

grazie! :)

per cominciare proverò il DASM :)
 

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #4 il: 26 Luglio 2012, 21:20:27 »
 Eccomi ancora qui a tediarvi con le mie domande da niubbo totale :) (non bannatemi per favore.. ;-) )

Stavo provando il dasm e per vedere se funzionava tutto correttamente, ho provato a compilare un semplice programma. Purtroppo non riesco a compilare, credo che il problema sia nel listato (!?). Essendo un novizio totale ho cominciato, come suggerito qui su questo sito, con il libro  ABC del Linguaggio Macchina sul Commodore 64, L'.

Qui ho preso un semplice listato e lo copiato all'interno di un file di testo che ho rinominato come hello.asm . Dopodiché ho dato in pasto il file al Dasm da linea di comando con la seguente sintassi:

dasm work:programmazione/dasm/esempi/hello.asm -f2 -oout -llist -v3 -DVER=4

e questo é l'output di compilazione:


DASM V2.20.10, Macro Assembler ©1988-2004

START OF PASS: 1
 Including file "work:programmazione/dasm/esempi/hello.asm"
work:programmazione/dasm/esempi/hello.asm (1): error: Unknown Mnemonic '#$01'.
work:programmazione/dasm/esempi/hello.asm (2): error: Unknown Mnemonic '$400'.

----------------------------------------------------------------------
SEGMENT NAME                 INIT PC  INIT RPC FINAL PC FINAL RPC
INITIAL CODE SEGMENT                  0000 ????                       0000 ????            
----------------------------------------------------------------------
0 references to unknown symbols.
0 events requiring another assembler pass.

--- Symbol List (sorted by symbol)
RTS                      0000 ????            
VER                      0004                  
--- End of Symbol List.
--- Unresolved Symbol List
RTS                      0000 ????            
--- 1 Unresolved Symbol

Complete.
4.Work:Programmazione/DASM/bin/Amiga/OS4>



Chiedo lumi grazie :)

Edit:

Dimenticavo, il sorgente é questo:



LDA #$01;
STA $400;
RTS;


Raffox

  • Administrator
  • Utente
  • *****
  • Post: 714
    • http://www.raffox.com
  • Gioco Preferito: Moonshadow (Idea)
Domande Da Niubbo Totale
« Risposta #5 il: 26 Luglio 2012, 21:54:47 »
 Intanto perché non provi a specificare in quale porzione della memoria vuoi allocare il tuo sorgente?

Ad esempio:
*=$c000
inserito prima del codice macchina che hai scritto servirebbe a indicare al compilatore che a partire dalla locazione 49152 della ram deve iniziare a risiedere il tuo programma.
Di conseguenza un sys49152 farebbe partire il programma, previa compilazione.

Ma lascio la parola ai più esperti per segnalare ulteriori errori che io, essendo un principianet a mia volta, sicuramente non sono in grado di riconoscere.

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #6 il: 26 Luglio 2012, 22:36:59 »
 grazie mille!!

scusami ma nel libro che sto leggendo non é spiegato tutto, o per lo meno fino a dove sono arrivato io.. :)

grazie mille per la dritta e per la pazienza! :), provo e ti dico subito!.

Già che ci sono chiedo anche un'altra cosa. La locazione di partenza deve essere sempre specificata?, deve essere sempre quella riportata da te? o può anche essere un'altra posizione conosciuta? :)
 

Raffox

  • Administrator
  • Utente
  • *****
  • Post: 714
    • http://www.raffox.com
  • Gioco Preferito: Moonshadow (Idea)
Domande Da Niubbo Totale
« Risposta #7 il: 27 Luglio 2012, 00:11:39 »
 La locazione di partenza deve essere sempre specificata, altrimenti il compilatore non sa dove allocare il codice. Alla fine del testo che stai studiando ci sono le appendici, tra cui quella della mappa di memoria. Studiandola ti renderai facilmente conto di quali porzioni di memoria puoi utilizzare per allocare il codice. Quindi, va da se che non deve necessariamente essere quella che ti ho indicato io.

Un altro consiglio, in 'Programmazione, Grafica e Musica' puoi trovare numerosi esempi di sorgenti scritti per il Dasm. Cercane uno e studiati al volo la sintassi, così sei sicuro di non fare errori, almeno da quel punto di vista. vedrai che la compilazione andrà a buon fine... invece per il funzionamento o meno del tuo programma, beh, quello è un altro paio di maniche.  :)

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #8 il: 27 Luglio 2012, 01:48:01 »
 grazie mille!! :)

tsm_carmine

  • Redazione
  • Utente
  • ****
  • Post: 519
  • Gioco Preferito: Krakout
Domande Da Niubbo Totale
« Risposta #9 il: 27 Luglio 2012, 18:42:44 »
 Purtroppo gli assemblatori non sono tutti uguali. Per meglio dire, le parti di codice vero e proprio sono standard e trattate nello stesso modo da tutti gli assemblatori, ma in un sorgente asm ci sono altre parti, anch'esse importanti, come l'impostazione del "punto d'origine" che spiegava Raffox, la cui sintassi può cambiare da assemblatore ad assemblatore.
Ad esempio ho notato che la versione corrente del DASM non accetta più l'assegnazione * = qualcosa, ma pretende l'istruzione ORG (esempi ORG $801 o ORG 2049). Ma c'è di più: se la direttiva è scritta nella prima colonna, vale a dire completamente allineata a sinistra nel testo, la parola ORG viene vista come una label e di conseguenza si verifica un errore di codice mnemonico non riconosciuto ($801).
Non so se queste siano precise scelte progettuali o imperfezioni dovute alla recente completa riscrittura del DASM. Potresti provare qualche versione più vecchia o comunque diversa dell'assemblatore, come quella di iAN CooG (che trovi sul suo sito), ma in ogni caso leggi bene il readme accluso per conoscere la sintassi dell'assembler che userai.
 
Riusciremo a costruire un mondo dove più nessuno osi pronunciare le parole... "lettore floppy"?

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #10 il: 27 Luglio 2012, 19:45:29 »
 grazie! effettivmaente, anche grazie all'aiuto di un amico, ho visto che tabulando le istruzioni ora il risultato é diverso.. continua a non assemblare ma almeno non mi da più l'errore "unknown symbol". Invece mi dice che il processore 6510 non é supportato.. devo forse indicare il 6502 (??).. Cmq leggerò bene le istruzioni allegate al dasm..

 :-)
 

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #11 il: 27 Luglio 2012, 21:16:17 »
 Volevo modificare il messaggio di prima ma non mi é stato possibile.. nella fretta ho commesso un pò di errori.. volevo dire che nonostante mettessi come processore il 6502, l'assemblatore non assembla ecco.. scusate, l'errore grossolano, la fretta mi ha giocato un brutto scherzo... :-p
 

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #12 il: 27 Luglio 2012, 21:44:08 »
 Grazie sono riuscito ad assemblare il tutto! bene ora posso cominciare a studiare bene tutto e darci sotto! sicuramente ci sentiremo ancora! grazie raga! :-)

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #13 il: 29 Luglio 2012, 17:55:05 »
 Continuo questo thread facendovi un'altra domanda..

Sono al capitolo 5 ed in questo capitolo viene spiegato il bit di carry che viene usato quando ci sono somme con cifre superiori a 255. Tutto bene, chiaro, solo una piccola domanda su un esempio riportato nel libro che non mi é del tutto chiaro..

Nel libro riporta l'esempio di una somma tra due numeri che sono:

   A7
+C4
=6B

Ecco, non capisco come A+C possa produrre 6, visto che in esadecimale A vale 10 e C vale 12.. 7+4 fa 11 e da li B ma 6, come lo si ottiene?? scusate, la domanda stupida ma vorrei capire cosa mi sfugge..

Grazie mille ancora per la pazienza..
 

NubeCheCorre

  • Neo-iscritto
  • *
  • Post: 15
    • http://www.os4games.it
  • Gioco Preferito: MoonShadow
Domande Da Niubbo Totale
« Risposta #14 il: 30 Luglio 2012, 02:00:22 »
 della serie si faccia una domanda e si dia una risposta.. :)

alla fine googlando e studiando ho capito ciò che effettivamente non avevo capito bene sul sistema numerico esadecimale, quindi ora mi é tutto chiaro..

grazie per la pazienza! ora continuo lo studio :)