1
0
mirror of https://github.com/fumiama/c64-snake.git synced 2026-06-28 16:00:34 +08:00

框架构建完成

This commit is contained in:
fumiama
2021-04-03 19:34:32 +08:00
parent c21a2a1efb
commit f716081ad7
17 changed files with 241 additions and 109 deletions

View File

@@ -14,7 +14,7 @@ print16:
lda #0
ldx #6
* sta _num_dec-1, x
* sta _num_dec-1, x
dex
bne -
@@ -32,26 +32,23 @@ print16:
; mod函数处理的数据为打印方便均使用大端序存储
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mod_4: ; 高字节低4位若大于10则向高位进1
;jsr chrin
mod_4: ; 高字节低4位若大于10则向高位进1
lda _num + 3
cmp #10
bcc +
sbc #10 ; 此时c为1
sbc #10 ; 此时c为1
tax
lda #1
sta _num_dec + 3 ; 进位
;jsr chrin
sta _num_dec + 3 ; 进位
txa
* sta _num_dec + 4
;jsr chrin
* sta _num_dec + 4
rts
mod_3: ; 高字节高4位的值相当于个位加6十位加1
mod_3: ; 高字节高4位的值相当于个位加6十位加1
ldx _num + 2
bne + ; 如果为0直接返回
bne + ; 如果为0直接返回
rts
* lda #6
* lda #6
`carry10 4
lda #1
`carry10 3
@@ -59,11 +56,11 @@ mod_3: ; 高字节高4位的值相当于个位加6十位加1
bne -
rts
mod_2: ; 低字节低4位的值相当于个位加6十位加5百位加2
mod_2: ; 低字节低4位的值相当于个位加6十位加5百位加2
ldx _num + 1
bne + ; 如果为0直接返回
bne + ; 如果为0直接返回
rts
* lda #6
* lda #6
`carry10 4
lda #5
`carry10 3
@@ -73,11 +70,11 @@ mod_2: ; 低字节低4位的值相当于个位加6十位加5百位加
bne -
rts
mod_1: ; 低字节低4位的值相当于个位加6十位加9百位加0千位加4
mod_1: ; 低字节低4位的值相当于个位加6十位加9百位加0千位加4
ldx _num
bne + ; 如果为0直接返回
bne + ; 如果为0直接返回
rts
* lda #6
* lda #6
`carry10 4
lda #9
`carry10 3
@@ -94,48 +91,44 @@ mod_1: ; 低字节低4位的值相当于个位加6十位加9百位加
adc _num_dec + _1
bcc _skip
pha
lda #$10 ; 进位相当于100
lda #$10 ; 进位相当于100
clc
adc _num_dec + _1 - 1
sta _num_dec + _1 - 1
pla
_skip:
sta _num_dec + _1
;jsr chrin
.macend
.macro splitbyte
lda _1
sta _num + _2
;jsr printbyte
lsr
lsr
lsr
lsr
sta _num + _2 - 1
;jsr printbyte
lda #$0f
and _num + _2
sta _num + _2
;jsr printbyte
.macend
.macro carry
tya
pha
sed ; 设置为bcd加减法
sed ; 设置为bcd加减法
jsr mod_4
jsr mod_3
jsr mod_2
jsr mod_1 ; 此时结果中有些位可能大于10需要进行进位处理
jsr mod_1 ; 此时结果中有些位可能大于10需要进行进位处理
ldx #5
_loop:
ldy #0 ; y记录进位数
ldy #0 ; y记录进位数
txa
lda _num_dec-1, x
cmp #10
bcc _skip ; 小于10不进位
bcc _skip ; 小于10不进位
pha
and #$f0
lsr
@@ -151,11 +144,11 @@ _skip:
dex
bne _loop
cld ; 退出bcd模式
cld ; 退出bcd模式
ldx #5
_up:
lda _num_dec - 1, x
ora #$30 ; 转化为可显示字符
ora #$30 ; 转化为可显示字符
sta _num_dec - 1, x
dex
bne _up
@@ -163,5 +156,3 @@ _up:
pla
tay
.macend
; .require "printbyte.asm"