Autore Topic: Spostare Il Basic In Giro  (Letto 2883 volte)

tsm_carmine

  • Redazione
  • Utente
  • ****
  • Post: 518
  • Gioco Preferito: Krakout
Spostare Il Basic In Giro
« il: 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
Riusciremo a costruire un mondo dove più nessuno osi pronunciare le parole... "lettore floppy"?

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Spostare Il Basic In Giro
« Risposta #1 il: 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)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

tsm_carmine

  • Redazione
  • Utente
  • ****
  • Post: 518
  • Gioco Preferito: Krakout
Spostare Il Basic In Giro
« Risposta #2 il: 30 Settembre 2006, 13:01:46 »
 Gentilissimo!

--
TSM
Riusciremo a costruire un mondo dove più nessuno osi pronunciare le parole... "lettore floppy"?