Ready64 Forum

Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: tsm_carmine - 30 Settembre 2006, 09:41:24

Titolo: Spostare Il Basic In Giro
Inserito da: tsm_carmine - 30 Settembre 2006, 09:41:24
 Ciao, ho bisogno di spostare e/o ridimensionare il basic per fare spazio a una routine in LM lunga non più di 3K.

Ho letto che gli indirizzi di inizio e fine del basic sono contenuti nelle locazioni, rispettivamente, 43/44 e 55/56. Dagli esempi che ho trovato, mi pare di capire che bisogna mettere uno 0 nella locazione da noi scelta come inizio ("bottom") del programma basic: perché?

Mi sembrava di aver letto qualcosa sull'argomento proprio qui nel forum ma non trovo il thread...

Grazie!

--
TSM
Titolo: Spostare Il Basic In Giro
Inserito da: iAN CooG - 30 Settembre 2006, 12:47:14
 Te lo spiego con del codice
Codice: [Seleziona]
   * = $3000; metterla in una locazione libera da dati e programma basic

basic   = $0801
endbasic= $23db; indirizzo del byte successivo al fine programma (3 byte a $00)
topmem  = $8000

    lda #0        ; Il byte precedente deve essere 0
    sta basic-1    ; il "parser" del basic lo controlla
                  ; con lo stesso criterio del terminatore
                  ; di riga, che deve essere 0
    ldx #<basic
    ldy #>basic
    stx $2b        ; inizio del programma basic
    sty $2c

    ldx #<endbasic
    ldy #>endbasic
    stx $2d        ; fine del programma basic
    sty $2e        ; e inizio spazio variabili e arrays
    stx $2f
    sty $30
    stx $31
    sty $32

    ldx #<topmem
    ldy #>topmem
    stx $33      ; fine spazio disponibile al basic
    sty $34      ; la variabili temporanee (es: a$=b$+c$)
    stx $35      ; verranno create da questo indirizzo in giu'
    sty $36      ; fino ad arrivare all'ultimo byte usato dalle var.
    stx $37
    sty $38

    lda #$ea      ; protezione dal runstop/restore
    sta $0328     ; occhio: e' meglio non metterlo, o ripristinarlo
                  ; al valore di default, prima di effettuare un SAVE
                  ; da programma.


    jsr $A659    ; reset del puntatore del basic
    jsr $A533    ; relink delle righe
    jmp $A7AE    ; esegui prossima istruzione (run)
Titolo: Spostare Il Basic In Giro
Inserito da: tsm_carmine - 30 Settembre 2006, 13:01:46
 Gentilissimo!

--
TSM