易码技术论坛

 找回密码
 加入易码
搜索
查看: 2599|回复: 19

[源码] 6502问题

[复制链接]
发表于 2008-10-24 22:35:59 | 显示全部楼层 |阅读模式
如何在6502中实现控制屏幕上图像移动?

[ 本帖最后由 tl2655600 于 2008-10-27 21:48 编辑 ]
发表于 2008-10-24 22:47:05 | 显示全部楼层
自己操作显存。
发表于 2008-10-25 08:16:52 | 显示全部楼层
这个会让人晕掉的
 楼主| 发表于 2008-10-25 18:37:46 | 显示全部楼层
难道要先画图形,再读键,再清屏,在画图形。。。。。。
好麻烦啊
发表于 2008-10-25 19:45:41 | 显示全部楼层
如果LZ认为有更好的方法,那就好好研究,争取把它搞出来。
 楼主| 发表于 2008-10-27 12:47:26 | 显示全部楼层
问一下,NCTOOLS808到底能不能制作BIN程序啊?
我做出来的BIN一打开就关机
开头要打个AE EE EA 00 10  00 20 AC XX YY 70 03 31 03 FF FF什么的,我已经打了啊?
程序就NCTOOLS808上测试很正常啊
发表于 2008-10-27 17:31:58 | 显示全部楼层
AC XX YY 打错了。
应为4C xx yy
最好是AA A5 5A 00 10 00 20 4C XX YY 70 03 31 03 FF FF
不过我从来不用NcTools808制作程序。

[ 本帖最后由 dragon_ 于 2008-10-27 17:35 编辑 ]
 楼主| 发表于 2008-10-27 21:41:22 | 显示全部楼层
,我两个都试过了!
都不行

LS顺便问一下,你觉得什么编程最方便?要在808平台上哦
 楼主| 发表于 2008-10-27 21:46:02 | 显示全部楼层
还有一个问题,控制屏幕上图像的方法我已经想到了,可怎么也运行不起来
有可能是我写错了,可就是不知道错在哪里


下面是我编的,还请高手指点迷津


2000 ldx#$00
2002 stx$2100
2005 lda#$28
2007 sta$03c4  (808 x轴地址)
200a lda#$05  
200c sta$03d6  (808 圆半径地址)
200f lda$2100
2012 sta$03c3  (808 y轴地址)
2015 int$c737 (808 清屏中断)
2018 int$ca0e (808 画圆中断)
201b pha
201c int$c006  (808 读键地址,键值放在a)
201f cmp#$16  (“16” 为808 键盘“→”键值)
2021 bne$2025
2024 inx
2025 cmp#$17  (“17” 为808 键盘“←”键值)
2027 bne$202b
202a dex
202b cmp#$19
202d beq$2039
2030 pla
2031 cmp#$a0
2033 beq$2000
2036 jmp$200f
2039 rts

[ 本帖最后由 tl2655600 于 2008-11-3 22:53 编辑 ]
 楼主| 发表于 2008-10-27 21:47:14 | 显示全部楼层
注:“808 ”是机型tc808简称
发表于 2008-10-27 22:15:25 | 显示全部楼层
原帖由 tl2655600 于 2008-10-27 21:41 发表
,我两个都试过了!
都不行

LS顺便问一下,你觉得什么编程最方便?要在808平台上哦

我写那个就是可以的,不行那是你自己的程序有问题。注意bin程序执行是从$4000开始的,不是$2000。
WQX端的汇编编译器有很多……

[ 本帖最后由 dragon_ 于 2008-10-27 22:17 编辑 ]
发表于 2008-10-27 22:22:11 | 显示全部楼层
原帖由 tl2655600 于 2008-10-27 21:46 发表
还有一个问题,控制屏幕上图像的方法我已经想到了,可怎么也运行不起来
有可能是我写错了,可就是不知道错在哪里


下面是我编的,还请高手指点迷津


2000 ldx#$00
2002 stx$2100
2005 lda#$28
2007 sta$03c4  (80 ...

你的$2100是用来干什么的?inx和dex又有什么意义?这里应该有问题。
仔细看看lda $2000,x的含义。
 楼主| 发表于 2008-10-28 09:54:04 | 显示全部楼层
哦,我知道了,运行不起来关键在200F!!
 楼主| 发表于 2008-10-29 12:27:56 | 显示全部楼层
我改了一下,还不行,汗

2000 ldx#$00
2002 lda#$28
2005 sta$03c4  (808 x轴地址)
2007 lda#$05
200a sta$03d6
200c  stx$2100
200f lda$2100
2012 sta$03c3  (808 y轴地址)
2015 int$c737 (808 清屏中断)
2018 int$ca0e (808 画圆中断)
201b pha
201c int$c006  (808 读键地址,键值放在a)
201f cmp#$16  (“16” 为808 键盘“→”键值)
2021 bne$2025
2024 inx
2025 cmp#$17  (“17” 为808 键盘“←”键值)
2027 bne$202b
202a dex
202b cmp#$19
202d beq$2039
2030 pla
2031 cmp#$a0
2033 beq$2000
2036 jmp$200c
2039 rts
发表于 2008-10-29 12:40:30 | 显示全部楼层
运行之后有何反应?
第一句先改成
2000 ldx#$10
看看圆画出来没。

[ 本帖最后由 dragon_ 于 2008-10-29 12:41 编辑 ]
 楼主| 发表于 2008-10-29 12:44:58 | 显示全部楼层
运行后按→时会越进一大步,后来就不行了,只有按“目录”退出
 楼主| 发表于 2008-10-29 12:45:52 | 显示全部楼层
圆一开始就出来了
发表于 2008-10-29 12:48:49 | 显示全部楼层
按你写的来看,是正常的。
有QQ上QQ,这里不好发挥。

[ 本帖最后由 dragon_ 于 2008-10-29 12:56 编辑 ]
发表于 2009-1-22 10:46:54 | 显示全部楼层
NCTOOL写的程序从$2000执行,应用程序里的BIN从$4000执行,假如用了JSR和JMP等跳转就不行。
发表于 2009-2-1 15:47:02 | 显示全部楼层
寫program當要執行一些副程式,應先要了解它會否影響當前的a x y值, 很明顯在這裡當你執行int後的a與x值已改變了,之後的pha與inx,dex已沒意義.另外你程序中有檢測x-coor(cmp #$a0), 但缺乏檢測x-coor為#$00, 這樣若一開始按左時, 下一個圓會畫在哪裡呢? 最後,在運用pha pla是需要小心一點, 你在$201b上pha後若檢測到按鍵值是#$19, 在$202d處會跳到$2039結束, 但是你沒注意到你並未pla而跳出, 這樣永遠也不能正常跳出!
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-19 11:01 , Processed in 0.012134 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表