PET CBM C64 MOS6510 Assembly Распечатать письмо на экране с вычисленным адресом экрана?
Я новичок в программировании на ассемблере для C64, и у меня есть вопрос о процедуре сохранения и загрузки областей памяти. Меня беспокоит следующее:
lda #$01
sta $0400
Помещает букву А в левый верхний угол экрана.
ldx #$00
lda #$01
sta $0400, x
с этим я могу использовать регистр x в качестве счетчика и могу сравнить, как часто я буду использовать цикл.
Но теперь у меня есть 16-битный расчет (начальный адрес экрана плюс xxx) и я сохраняю результат внутри адреса памяти, например 4000 и 4001 долларов. Как я могу использовать это значение в качестве нового адреса экрана, чтобы распечатать букву a в рассчитанной области на экране?
1 ответ
Хорошо, теперь я понимаю значение (косвенного),Y Теперь мое решение выглядит так:
.var lines = $28 //40 characters
.var currentPos = $fd //save screen address
calcLine:
ldx #$05 //counter 5 backward
ldy #$00 //Sets carry to 0
lda #lines //A=40
asl //A=80
calc:
clc
adc #lines //A=120 (or $78 in hex)
bcc next //If carry, then increase
iny
next:
dex
cpx #$00
bne calc
sta currentPos //If carry, then increase
sty currentPos+1 //Save value if carry
//add screen start address ($0400)
clc
lda currentPos+1
adc #$04
sta currentPos+1
lda #$42 //the sign
sta (currentPos),y