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 
Другие вопросы по тегам