Autore Topic: Bank Switching Dinamico  (Letto 2048 volte)

MarC=ello

  • Utente
  • **
  • Post: 337
  • Gioco Preferito: CBM BASIC 2.0
Bank Switching Dinamico
« il: 10 Giugno 2004, 20:54:06 »
 Cari amici,

mi chiedo da molto tempo due cose:

1) in cosa consiste esattamente il bank switching dinamico, usato ad esempio nel Plus 4, e che cosente di avere 60K circa liberi in BASIC, pur avendo come nel C64, 64K di RAM?

2) ho letto che il 6510 non può effettuare tale bank switching dinamico, mentre il 7501 sì. Qualcuno potrebbe gentilmente spiegarmi perché?

In pratica vorrei sapere se è possibile in qualche modo implementare una sorta di bank switching dinamico anche sul Commodore 64, in modo da aumentare i K disponibili per il BASIC. Io pensavo di modificare l'interprete BASIC in modo che, detto alla sbrigativa - ma spero di rendere l'idea - esso scarichi (utilizzando un programma ausiliario dedicato) la ROM (cioè indirizzi la RAM riservata al 6510), copi dalla RAM dei programmi BASIC i token corrispondenti alla linea BASIC corrente e li vada a depositare in un segmento RAM isolato (ad esempio da 49152 in poi). Poi l'interprete BASIC dovrebbe riabilitare la ROM che ha "scaricato" ed intepretare quanto depositato nel segmento da 49152 in poi. So che mi sono spiegato male, ma spero che qualcuno mi abbia capito e mi dia una risposta. Ciao!
-=MarC=ellO=-

arel72

  • Neo-iscritto
  • *
  • Post: 37
    • http://utenti.lycos.it/gab72/
Bank Switching Dinamico
« Risposta #1 il: 13 Giugno 2004, 20:34:08 »
 
Cioè, vediamo se ho capito: la linea basic corrente viene copiata nel blocco libero di 4k alti, il basic viene riattivato e la linea viene "interpretata" leggendo da lì e poi si ricomincia con la linea successiva, in questo modo posso scrivere un programma basic di 46k visto che l' operazione di "spostamento" avviene ad interprete disattivato. E' così?

E se invece: prendo l' interprete (come se fosse un qualsiasi programma), lo modifico e lo ricompilo per girare a partire da 4k più in su e poi lo carico da dischetto (ovviamente disattivo l' interprete su ROM) non guadagnerei subito 4k? Funzionerebbe? Boh!

MarC=ello

  • Utente
  • **
  • Post: 337
  • Gioco Preferito: CBM BASIC 2.0
Bank Switching Dinamico
« Risposta #2 il: 13 Giugno 2004, 22:01:03 »
 Ciao Arel  :)

Citazione
Cioè, vediamo se ho capito: la linea basic corrente viene copiata nel blocco libero di 4k alti, il basic viene riattivato e la linea viene "interpretata" leggendo da lì e poi si ricomincia con la linea successiva, in questo modo posso scrivere un programma basic di 46k visto che l' operazione di "spostamento" avviene ad interprete disattivato. E' così?

Esatto, è questo che intendevo dire  ;)  Complimenti per aver decifrato il mio informatichese :D

Penso che un'implementazione di questo tipo rallenterebbe i programmi, però il guadagno di memoria sarebbe interessante (considerando poi che, in teoria, oltre che l'interprete BASIC si potrebbe "scaricare" anche il KERNAL).
Purtroppo le mie capacità nella programmazione in assembler - e la mia scarsa conoscenza dell'interprete BASIC (c'è il dump commentato in rete ma purtroppo non è molto semplice da analizzare e capire) - nonché il tempo che purtroppo mi manca - mi impediscono di fare esperimenti. Però credo che, almeno in teoria, quanto detto sarebbe realizzabile. Magari c'è il problema delle variabili, occorre individuare le variabili che la linea BASIC considerata utilizza e copiarle nell'area C000- xxxx.  Però credo che sia realizzabile.
Ovviamente, c'è da dire che raramente si avrebbe la necessità di programmi BASIC così lunghi...

Citazione
E se invece: prendo l' interprete (come se fosse un qualsiasi programma), lo modifico e lo ricompilo per girare a partire da 4k più in su e poi lo carico da dischetto (ovviamente disattivo l' interprete su ROM) non guadagnerei subito 4k? Funzionerebbe? Boh!

Già, ottima idea... Magari sarebbe una prova da farsi... Appena ho tempo ci do un occhio e ti faccio sapere. yum!

Ciao ciao  :)  
-=MarC=ellO=-