易码技术论坛

 找回密码
 加入易码
搜索
查看: 226557|回复: 10

SNOOPY...LENDY....XU(他怎么会在这?)进!

[复制链接]
发表于 2004-12-28 20:05:00 | 显示全部楼层
可能是太复杂了!

那么。。。。

PC1000A和PC1000的闪存块分别大小是多少啊???

偶一步一步的问。。。。。。。。呵呵!

7460_7161_2986.rar

60 KB, 下载次数: 249

7460_7161_2987.rar

12 KB, 下载次数: 213

发表于 2004-12-30 15:35:00 | 显示全部楼层
竟很久都没看到这个帖子,不好意思……
-----------------
PC1k擦写ROM的操作具体你自己看看Sun的WQXHex代码(大量的$55 $AA)。
PC1000a的闪存块是$800 Bytes,而PC1000是$1000 Bytes。
 楼主| 发表于 2004-12-31 13:39:00 | 显示全部楼层
现在我们开始编写程序,需要注意的是,擦除闪存的程序必须在RAM执行,而不能在闪存里被执行
  先说明擦除闪存的步骤:
  1.设置中断标志  即 SEI
  2.保护地址00 0A 0D的内容,地址0A的内容的最高位为0
  3.把擦除的闪存的页码送地址00,以切换到擦除的闪存的页码
  4.开始 擦除闪存的代码
  5.把立即数 30 送擦除闪存的块头地址,例如 若是01闪存块,块头地址是 4000,若是02闪存块,块头地址4800
  6.恢复地址 00 0A 0D 的内容
  7.取消中断标志 即  CLI
 
  程序如下:
  2000:SEI
 
  2001DA $00
  2003HA
  2004DA $0A
  2006HA
  2007DA $0D
  2009HA
  200A:LDA $0A
  200C:AND #$7F
  200E:STA $0A
 
  2010:LDA #$06     //把擦除闪存块所在页码数送地址00,以切换到闪存块所在页码
  2012:STA $00
 
  2014:LDA #$F0    //下面的代码就是擦除闪存的代码,是不能变的,大家也别问为什么是这样的代码,照抄就是!!!
  2016:STA $8000
  2019:LDA #$AA
  201B:STA $5555
  201E:LDA #$55
  2020:STA $AAAA
  2023:LDA #$80
  2025:STA $5555
  2028:LDA #$AA
  202A:STA $5555
  202D:LDA #$55
  202F:STA $AAAA

  2032:LDA #$30     //这里是很关键的一步,把立即数30送要擦除的闪存块的块头地址 这里是第1块,所以是 4000,第2块就是4800,类推!
  2034:STA $4000
 
  2037:LDA $8000    //这段代码是固定的,大家照抄!!
  203A:AND #$88
  203C:CMP #$88
  203E:BNE $2037    //注意,这里是变化的,因为代码开始执行地址是不同的,不要这个也照抄,那就完了!!反正是跳转到 LDA $8000 那个地址
  2040:LDA #$F0
  2042:STA $8000
 
  2045:CLI         //取消中断标志,也是必须的
  2046:PLA         //下面就是恢复被保护的地址的内容了
  2047:STA $0D
  2049:PLA
  204A:STA $0A
  204C:PLA
  204D:STA $00
  204F:RTS
发表于 2004-12-31 15:58:00 | 显示全部楼层
你这个是徐的《6502奥秘》上的吧?
那是针对NC1020系列的,PC1000的大概不同吧~
发表于 2004-12-31 17:46:00 | 显示全部楼层
如果我没记错的话2014那里的
LDA #$F0
STA$8000
去掉应该就可以了
估计是xu大哥粗心打多了~
 楼主| 发表于 2005-1-1 14:16:00 | 显示全部楼层
不会吧。。。。。。。。

理论上来说,都是NOR FLASH。。。。

擦写前的代码应该都是相同的啊!!!
发表于 2005-1-1 18:48:00 | 显示全部楼层
这个就不太清楚了~可能会有区别的吧~你反汇编一些中断找找看啊~
 楼主| 发表于 2005-1-3 16:31:00 | 显示全部楼层
XU在这里打错了吧。。。。。

2001DA $00
  2003HA
  2004DA $0A
  2006HA
  2007DA $0D
  2009HA
  200A:LDA $0A
  200C:AND #$7F
  200E:STA $0A


$200A应该是LDA$00

然后是AND#$7F

200E:STA$00

发表于 2005-1-3 18:02:00 | 显示全部楼层
以下是引用dae在2005-1-3 16:31:42的发言:

XU在这里打错了吧。。。。。

2001DA $00
  2003HA
  2004DA $0A
  2006HA
  2007DA $0D
  2009HA
  200A:LDA $0A
  200C:AND #$7F
  200E:STA $0A


$200A应该是LDA$00

然后是AND#$7F

200E:STA$00


??不会吧,我记得这段代码没有错的,当时我在CC880上成功过的!
发表于 2005-1-9 17:16:00 | 显示全部楼层
回烧煤~那个地方没有错的~应该就是我说的那个地方~我那时就是去掉这个后成功的~
 楼主| 发表于 2004-12-22 14:01:57 | 显示全部楼层 |阅读模式
老问题了啊!

PC1000系列怎么用6502指令擦写EROM。。。。

比如把地址2000-3000的内容发到EROM的04页的5000-6000。。。。。

给段代码吧!!

拜托了!
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-3-29 21:56 , Processed in 0.013791 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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