Ready64 Forum
Commodore 64 => Aiuto & Domande => Topic aperto da: DaGoN - 03 Aprile 2016, 18:04:03
-
Ciao a tutti,
un questito in asm su come stampare un messaggio lungo a video stile macchina da scrivere
[...]
LDX #$00
DISPMSG LDA MSGTXT,X
STA $0428,X ; SKIPPA LA PRIMA LINEA $0400 + $28
JSR DELAY; ASPETTA UN PO'
INX
CPX #$FF; massima lunghezza possiblie
BNE DISPMSG
RTS
MSGTXT TEXT "Ciao a tutti, "; 40 caratteri per riga
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
[N]
Una vaga idea la ho... ma spero ci sia un modo migliore :'( :'(
-
Una soluzione sarebbe questa... però è una ripetizione del codice
LDX #$00
JSR DISPMSG
LDX #$00
JSR DISPMSG2
RTS
DISPMSG LDA MSGTXT,X
STA $0428,X ; SKIPPA LA PRIMA LINEA $0400 + $28
JSR DELAY; ASPETTA UN PO'
INX
CPX #$F0; massima lunghezza possiblie
BNE DISPMSG
RTS
LDX #$00
DISPMSG2 LDA MSGTXT2,X
STA $0512,X ; $0428 + $F0 (LUNGEZZA 6 RIGHE)
JSR DELAY; ASPETTA UN PO'
INX
CPX #$F0; massima lunghezza possiblie
BNE DISPMSG
RTS
MSGTXT TEXT "Ciao a tutti, "; 40 caratteri per riga
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
TEXT "Blah blah blah blah blah blah"
MSGTXT2 TEXT "Blah blah blah blah blah blah"; seconda porzione
TEXT "Blah blah blah blah blah blah"
[N]
Come potrei ottimizzare il codice senza fare il copia/incolla della prima routine n volte???
Il mio problema è che vorrei caricare nell'accumulator un cosa del tipo
LDA ($0428 + $F0), X
Thanks in adv,
DaGoN
-
Ciao, da non esperto mi sono voluto dilettare e ho escogitato questa soluzione. Per semplicità ho stabilito che uno zero finale faccia da terminatore alla stringa messaggio.
* = $1000 ; SYS 4096
LDX #$00
load LDA MSGTXT, X
BEQ end ; se il carattere è 0, fine
store STA $0428, X
;JSR DELAY
INX
BNE load ; ripete se X non è diventato 0 (overflow)
; X si è azzerato per overflow.
; Per avanzare di $100, incremento la parte alta degli indirizzi
; direttamente nel codice.
INC load + 2
INC store + 2
JMP load
end RTS
MSGTXT SCRU "Ciao a tutti, "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah blah "
SCRU "blah blah blah blah blah test "
SCRU "blah blah blah blah blah test "
SCRU "blah blah blah blah blah test "
SCRU "blah blah blah blah blah test "
SCRU "blah blah blah blah blah test "
DC.B 0
-
Grazie mille!!! Sto usando CBM Studio e la direttiva SCRU non esiste, ma dovrebbe andare bene anche TEXT.
Cerco di adattare il mio codice al tuo suggerimento.
Devo studiare meglio il modo di manipolare le Word... :) :)
Appena riesco nell'impresa posto tutto il codice del remake eheheh.
Grazie ancora,
DaGoN