PET CBM C64 MOS6510组件在屏幕上打印出带有计算出的屏幕地址的字母?

问题描述

我是C64汇编程序编程的新手,我对保存和加载内存区域的过程有疑问。我担心以下问题:

rowmax2 <- function(x) apply(x,1,function(x) {x <- na.omit(x);length(x[x > 4])})
rowmax2(aMat)
# [1] 8 7 8 7 4 3

将字母A放在屏幕左上方

lda #$01
sta $0400

我可以使用x寄存器作为计数器,并可以比较使用循环的频率。

但是现在我有一个16位计算(屏幕起始地址加xxx),并将结果存储在内存地址中,例如$ 4000和$ 4001。如何将此值用作新的屏幕地址,以便在屏幕上计算出的区域上打印出字母a?

解决方法

好的,现在我理解了(间接)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 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...