Commodore 64 > Programmazione, Grafica e Musica

Scelta di una stringa

(1/2) > >>

theway:
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:
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).

theway:
Grazie per la risposta.
Hai per caso qualche esempio per  la "tabella di puntatori"? O  "delimitare le stringhe"

mssmsoft:
Questo è quello che propone copilot (browser Microsoft Edge)

--- Codice: ---    .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

--- Termina codice ---

Io non l'ho provato   :biggrin:

theway:
Grazie mille! Mi e' piu' o meno tutto chiaro tranne lo stringindex finale..    ???

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa