Autore Topic: I Listati  (Letto 2593 volte)

sivfix

  • Neo-iscritto
  • *
  • Post: 12
  • Gioco Preferito: Head The Ball
I Listati
« il: 12 Febbraio 2011, 17:43:19 »
 Una cosa mi son sempre chiesto, già quando ero piccolo. Come saprete in alcuni giochi, premendo RUN-STOP, si esce dal programma e ci si trova in ambiente BASIC. Con il comando LIST se ne può poi vedere il listato. Ma con altri giochi "più fighi" no. non si riesce ad "uscire". come si fa in tal caso a vedere il listato? o sono scritti in altro modo?

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
I Listati
« Risposta #1 il: 12 Febbraio 2011, 20:25:47 »
 Dipende, possono essere in basic o assembler.
Per i programmi Basic e' sufficiente disabilitare il run/stop con una poke 808,234 e non potrai piu' interrompere il programma, quinid nemmeno listarlo. Se si ha un monitor residente basta salvare tutta la memoria su disco, da $0801 in poi, ma non e' nemmeno detto che il programma basic sia a $0801, puo' essere ovunque.
La maggior parte in ogni caso e' scritta in assembler, quindi il "listato" si puo' ottenere solo disassemblando la memoria.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

sivfix

  • Neo-iscritto
  • *
  • Post: 12
  • Gioco Preferito: Head The Ball
I Listati
« Risposta #2 il: 14 Febbraio 2011, 17:49:44 »
 mmhh... qui si va sul complicato. Io ho un Commodore 64 originale con monitor originale (non so cosa significhi "residente"). Però generalmente uso l'emulatore WinVICE-2.2-x64. Le cose che dici sono fattibili sia dall'uno che dall'altro? E come si fa? Poi l'Assembler, da quel poco che so, è il linguaggio base: quello su cui gli altri programmi operano. Per esempio i comandi Basic dovrebbero essere delle routine a loro volta scritte in assembler. Questo proprio perché è più "facile" scrivere qualcosa con il linguaggio che "sta" ad un livello più superficiale, che non in quello più basilare. Dunque molti giochi sono veramente scritti in assembler, oppure sono scritti in basic ma se ne può poi vedere solo il listato in assembler? se no come fanno a scrivere direttamente in assembler? Come si fa a disassemblare la memoria?
Grazie.

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2437
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
I Listati
« Risposta #3 il: 16 Febbraio 2011, 10:36:52 »
 
Citazione da: "sivfix"
Io ho un Commodore 64 originale con monitor originale (non so cosa significhi "residente").
Per spiegarla "alla buona", il monitor è uno strumento software che consente di esaminare la memoria della ram e/o di immettere comandi in asm.
"Residente" vuol dire che è precaricato, generalmente su cartuccia (Action Replay & C.), o comunque richiamabile in qualsiasi momento, dopo aver caricato il programma di cui si vuole esaminare il codice.

Per fare una prova su emulatore, basta caricare un programma qualsiasi con VICE e poi tramite ALT+M accedere al monitor. A questo punto è possibile manipolare/listare la memoria, naturalmente previa conoscenza dell'assembler, dei codici esadecimali e della mappa di memoria del C64.

Citazione da: "sivfix"
mmhh... qui si va sul complicato.
Decisamente. Per questa ragione non è possibile addentrarsi ulteriormente nella spiegazione, ma sta eventualmente all'interessato approfondire il discorso per conto proprio. Le risorse non mancano. Segnalo la FAQ di tsm_carmine che spiega molto meglio di quanto possa aver fatto io:

http://ready64.org/smf/index.php?topic=3547.0

Oltre all'asm e al basic "puro" ci sarebbe un terzo caso, per certi versi "ibrido", ovvero il Basic Compilato (tramite apposito compilatore), che rende il programma non listabile e ne rende più veloce l'esecuzione.
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Raffox

  • Administrator
  • Utente
  • *****
  • Post: 714
    • http://www.raffox.com
  • Gioco Preferito: Moonshadow (Idea)
I Listati
« Risposta #4 il: 16 Febbraio 2011, 15:17:16 »
 Nell'accezione più pura del termine "ibrido" si può aggiungere anche che esistono innumerevoli casi di programmi scritti in parte in BASIC e in parte in L.M.

Un esempio classico potrebbe essere un vidoegame adventure, spesso costituito da descrizioni testuali (comodamente programmate in BASIC e visualizzate utilizzando un semplice PRINT) e illustrazioni bitmap o hi-res (realizzate con tool grafico e visualizzate tramite un'apposita routine scritta in Assembly).

Sostanzialmente il programma BASIC convive in memoria insieme al programma Assembly.

sivfix

  • Neo-iscritto
  • *
  • Post: 12
  • Gioco Preferito: Head The Ball
I Listati
« Risposta #5 il: 20 Febbraio 2011, 23:54:53 »
 Molto interessante! Ho dato un'occhiata a abc_del_linguaggio_macchina_sul_commodore_64.


Ho la risposta alla mia domanda. Grazie.