Autore Topic: Scelta di una stringa  (Letto 194 volte)

theway

  • Newbie
  • *
  • Post: 3
  • Gioco Preferito: the last ninja
Scelta di una stringa
« il: 07 Gennaio 2025, 18:12:55 »
Ciao ,salve a tutti sono nuovo in questo forum e sembra piuttosto interessante!
Vorrei chiedervi un aiuto in quanto ho iniziato da poco a riprendere la programmazione
in Assembly per C64,  sogno che nutro da quando era adolescente.
Sto usando KickAssembler:  ho una lista di testi :
txt:
1  .text "ti trovi nella stanza 01 -"
2  .text "ti trovi nella stanza 02 -"
3  .text "ti trovi nella stanza 03 -"

e per sceglierne uno vorrei usare lo stesso metodo che si usa con  con i  .byte

Scelta:
ldx #00
completeT:
lda txt, x 
sta $0400, x
inx
cpx #21
bne complete
rts


in questo modo riesco a stampare una stringa ma se volessi scegliere la 2  o  la 3 non riesco:
ldy #$00
choice:
lda txt
sta txt, y
rts

cosa sbaglio? ::)

eregil

  • Administrator
  • Utente
  • *****
  • Post: 714
  • Gioco Preferito: Impossible Mission
Re:Scelta di una stringa
« Risposta #1 il: 08 Gennaio 2025, 13:57:20 »
Non capisco bene come immaginavi che dovesse funzionare, ma a occhio (e a parte qualche errore di digitazione) direi che hai definito un solo puntatore (etichetta) alla prima stringa, invece ti serve una tabella di puntatori (o di offset) ed eventualmente un modo diverso di delimitare le stringhe ovvero determinare l'ultimo carattere.

Nei tuoi post per delimitare il codice usa i tag {code} ... {/code} (con le quadre anziché le graffe).
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.

theway

  • Newbie
  • *
  • Post: 3
  • Gioco Preferito: the last ninja
Re:Scelta di una stringa
« Risposta #2 il: 09 Gennaio 2025, 13:39:00 »
Grazie per la risposta.
Hai per caso qualche esempio per  la "tabella di puntatori"? O  "delimitare le stringhe"


mssmsoft

  • Utente
  • **
  • Post: 78
  • Gioco Preferito: microprose soccer
Re:Scelta di una stringa
« Risposta #3 il: 09 Gennaio 2025, 16:38:29 »
Questo è quello che propone copilot (browser Microsoft Edge)
Codice: [Seleziona]
    .org $0801
    .byte $0b, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00

Start:
    lda #$00
    sta StringIndex

NextString:
    lda StringArray, x
    beq EndOfArray
    jsr PrintString
    inx
    jmp NextString

EndOfArray:
    rts

PrintString:
    ldy #$00

PrintChar:
    lda (StringArray), y
    beq EndOfString
    jsr $ffd2 ; CHROUT routine to print character
    iny
    jmp PrintChar

EndOfString:
    rts

StringArray:
    .byte "Stringa1", 0
    .byte "Stringa2", 0
    .byte "Stringa3", 0
    .byte 0 ; Terminatore dell'array

StringIndex:
    .byte 0

Io non l'ho provato   :biggrin:
« Ultima modifica: 09 Gennaio 2025, 16:46:23 da mssmsoft »

theway

  • Newbie
  • *
  • Post: 3
  • Gioco Preferito: the last ninja
Re:Scelta di una stringa
« Risposta #4 il: 09 Gennaio 2025, 17:14:00 »
Grazie mille! Mi e' piu' o meno tutto chiaro tranne lo stringindex finale..    ???

mssmsoft

  • Utente
  • **
  • Post: 78
  • Gioco Preferito: microprose soccer
Re:Scelta di una stringa
« Risposta #5 il: 09 Gennaio 2025, 18:20:07 »
Ad occhio, visto che ci carica zero e non lo usa, direi che non serve a nulla.