Autore Topic: Out Of Memory Error?  (Letto 1855 volte)

Montezuma_III

  • Utente
  • **
  • Post: 73
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« il: 09 Ottobre 2009, 18:55:59 »
 Ciao community, vi propongo un problema.
Stò cercando di trasferire i miei videogames e programmi da cassetta (C2N) a floppy (1541-II), solo che alcuni (specie quelli in autoturbo con la schermata grafica durante il caricamento e relativo bordo multicolore sempre durante il medesimo) quando do il save su disco mi danno il messaggio "out of memory error?" e non lo salva, al chè io digito POKE 50,0 e il file viene salvato; ma quando lo carico dal disco non funziona.
P.S.: prima di caricare il gioco digito una POKE 2048,1 per disabilitare il RUN automatico.
Spero che qualcuno mi possa aiutare.
Un saluto a tutta la community.
Commodore 64: Tutto il resto è noiaaaaaaa.........
no, non ho detto gioiaaaaaaaaaa.............

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Out Of Memory Error?
« Risposta #1 il: 10 Ottobre 2009, 04:29:52 »
 A che pro digitare quella poke50,0 assolutamente senza senso? =)
L'out of memory dopo aver dato il save avviene perche' il prg caricato supera la memoria dedicata al basic (cioe' va oltre l'indirizzo $9fff) e il basic non ha nemmeno lo spazio per memorizzarsi il nome dato dopo il comando SAVE, che e' una stringa temporanea, ma da qualche parte dovra' pur memorizzarla.
Se non si dispongono di programmi di copia diretta nastro/disco, per salvare il programma caricato in memoria non rimangono che un paio di opzioni:
- usare un monitor che consenta di switchare la locazione 1 per "nascondere" la rom del basic e far vedere la ram sottostante e a quel punto salvare la memoria occupata dal prg (locazioni $2b/$2c indicano l'inizio che solitamente e' $0801, e $2d/$2e per l'indirizzo finale)
- usare un programmino tipo dsave che appunto faccia tutto al posto tuo.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

saver71

  • Utente
  • **
  • Post: 278
  • Amante degli anni '80
    • Super 80
Out Of Memory Error?
« Risposta #2 il: 10 Ottobre 2009, 11:32:37 »
Citazione da: iAN CooG
- usare un monitor che consenta di switchare la locazione 1 per "nascondere" la rom del basic e far vedere la ram sottostante e a quel punto salvare la memoria occupata dal prg


Scusa la domanda ma, quale monitor?
Se un gioco scrive oltre la Ram Basic vedo la cosa un po' difficile.
Un monitor come Hesmon è fuori discussione, dato che se non ricordo male era locato nell'ultima parte della Ram Basic, ergo la maggioranza dei giochi e programmi al caricamento ci scrivevano sopra.
Monitor 49152 risolve in parte il problema, sempre nel caso in cui i giochi non scrivano oltre quella locazione di memoria.
Io all'epoca mi salvavo il gioco in due parti. La prima da $0800 a $BFFF da monitor 49152. La seconda da $C000 a $(locazione finale del gioco) con Hesmon caricato dopo il gioco. E' vero che ci sono sistemi migliori, ma a quei tempi mi arrangiavo come potevo. :)

Un'altra domanda che mi sorge è come faccia Montezuma_III a fermare l'autostart del gioco. Questa cosa non si può certamente fare con delle semplici POKE.
Bisogna infatti entrare nel Loader del gioco da Monitor e modificarlo (bisogna quindi conoscere un pochino l'Assembly), in modo tale che una volta caricato il gioco, questo non parta.
« Ultima modifica: 21 Febbraio 2015, 17:31:50 da eregil »

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Out Of Memory Error?
« Risposta #3 il: 10 Ottobre 2009, 18:03:47 »
 Qualsiasi, come hai detto tu o usi un monitor rilocabile e salvi a pezzi (dovendo ricaricare 2 volte il gioco) o un monitor residente come nello speeddos o una cartuccia tipo AR o Expert e fai in un colpo solo. Su C64 bisogna aguzzare l'ingegno.Per fortuna ci sono gli emulatori e i crosstools, ormai si fa molto ma molto prima a dumpare il tap ed estrarne il prg con tapclean.
L'autorun bloccabile con poke2048,1 funziona *solo* con alcuni turbotape che danno il RUN, con quelli che lanciano il programma direttamente da asm con una JMP non serve ovviamente a nulla. Anche questo e' un argomento pluritrattato in questo forum.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Montezuma_III

  • Utente
  • **
  • Post: 73
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« Risposta #4 il: 11 Ottobre 2009, 20:17:01 »
 Se ci sono dei copiatori che lo fanno in automatico sarei felice di usarli se mi postate il loro nome e magari il link per scaricarli.
Ciau.
Commodore 64: Tutto il resto è noiaaaaaaa.........
no, non ho detto gioiaaaaaaaaaa.............

Montezuma_III

  • Utente
  • **
  • Post: 73
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« Risposta #5 il: 12 Ottobre 2009, 18:06:58 »
 P.S.: La poke 50,0 (anche se non conosco il suo significato) serviva a permettermi di dare il save col nome ma poi molto spesso il gioco non funzionave.
Ciao.
Commodore 64: Tutto il resto è noiaaaaaaa.........
no, non ho detto gioiaaaaaaaaaa.............

eregil

  • Administrator
  • Utente
  • *****
  • Post: 706
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« Risposta #6 il: 12 Ottobre 2009, 20:55:00 »
 Il puntatore 49-50 indica all'interprete BASIC la fine degli array +1, e quindi l'inizio - in basso - della zona disponibile per le stringhe.

Eseguendo POKE 50,0 imposti tale puntatore in pagina zero (e già questa è una Cattiva Idea), e inganni l'interprete BASIC facendogli pensare che ci sia dello spazio disponibile per le stringhe. Però impostando il puntatore così "alla cieca" non sei più sicuro che la stringa, memorizzata temporaneamente per assegnare il nome del file, non vada a sovrascrivere dei byte importanti nella memoria del C64.

In pratica è un procedimento votato al fallimento.

Indicazioni su come procedere in maniera più efficace ne sono stati già dati, si tratta di usare programmini come dsave (presente su alcuni Radio Elettronica & Computer; ti consiglio una ricerca sul forum con questa parola chiave) oppure farsi la trafila già descritta con dei programmi monitor.

Se ne hai la possibilità, è possibile che sia conveniente passare da un emulatore per salvare la memoria col monitor dell'emulatore e poi trasferire il d64 invece della cassetta.

P.S. Se guardi bene il sito, alcuni copiatori sono presenti su http://ready64.org/utility/utility_varie.php
Qualcuno potrebbe fare al caso tuo, ad es. Spectacular Copy è pensato appositamente per copie nastro-disco, provalo.
« Ultima modifica: 21 Febbraio 2015, 17:32:48 da eregil »
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.

Montezuma_III

  • Utente
  • **
  • Post: 73
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« Risposta #7 il: 22 Novembre 2009, 18:59:34 »
 Grazie, eregil.  ;)  :P  :metallica:  
Commodore 64: Tutto il resto è noiaaaaaaa.........
no, non ho detto gioiaaaaaaaaaa.............

Montezuma_III

  • Utente
  • **
  • Post: 73
  • Gioco Preferito: Impossible Mission
Out Of Memory Error?
« Risposta #8 il: 22 Novembre 2009, 20:24:55 »
 C'è Tapclean per windows?
(grazie anche a te, iAN).
Commodore 64: Tutto il resto è noiaaaaaaa.........
no, non ho detto gioiaaaaaaaaaa.............

fab

  • Utente
  • **
  • Post: 493
    • http://wav-prg.sourceforge.net/
  • Gioco Preferito: Tetris, Turrican, Impossible Mission
Out Of Memory Error?
« Risposta #9 il: 23 Novembre 2009, 13:47:58 »
Citazione da: "Montezuma_III"
C'è Tapclean per windows?
Si', a linea di comando
Un giapponese sa recitare a memoria tutti i numeri di pi greco fino all'83431º decimale. Sa a memoria anche l'unico numero telefonico che è nella sua agendina - Daniele Luttazzi