易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: 空小子

[原创]无题

[复制链接]
 楼主| 发表于 2005-7-28 20:25:49 | 显示全部楼层 |阅读模式
记得以前电脑数码就是自己的一切,现在没有那么自由了,很少觉得自己是那么的忙!都不知道在忙些什么!
废话少说,难的抽这个空用电脑上网(现在一天中唯一值得我感动的就是下午看《犬夜叉》的动画,其他时间变成了机器人),是这样的,用6502ASM的人很多吧,但是我一直都看到很多人都是这样定义变量的,为什么呢?
var1 =$40
var2 =$42
var3 =$44
...
再问:为什么呢,这样似乎太费神了吧!你这样定义也好过它呀:
var1 =$40
var2 =var1+2
var3 =var2+2
...
至少是相对的,而不是绝对的!好处很多!但是后来我们不这样了!
看一下下面来自WINIDE FOR CC800的COMMON.TXT的一段:
__base  = 40h
        define  2,ap   ;40h
        define  2,fp   ;42h
        define  2,sp   ;44h
        define  2,op1   ;46h
        define  2,op2   ;48h
....
很容易猜道define是个宏,而且可以猜到GGV的这个宏支持整个串作为参数传入的,比如说:
define  2,ap
这里的ap就完全传进去被引用,语句相当于ap=40h,这样似乎十分酷,但是6502ASM能这样么,不能!但是我们能想办法,你有好办法么?若没有,不妨看看我的方法的:
;----------------------------------------------------------------
;分配名字:var1=_VP
;分配长度:SL length(var1)
;分配名字:var2=_VP
;分配长度:SL length(var2)
;      ......
;----------------------------------------------------------------
SL: .MACRO Length
_VP .= _VP + Length
;这里做些智能判断吧,不要以为多得是,中间跳过LCDBUF,就直接接到$2000了,随你便!
.ENDM
ZSL: .MACRO Length
_ZVP .= _ZVP + Length
.IF _ZVP > $A0 ;注意零址是有限的,不要用太尽,因为很多可以重用,用到$A0就收手吧
  .ERROR "零址内存不足!!"
.ENDIF
.ENDM
;----------------------------------------------------------------
;For 6502/WQX
;----------------------------------------------------------------
;初始化
ZP_VAR_BASE_ADDR=$40
_ZVP .= ZP_VAR_BASE_ADDR
VAR_BASE_ADDR=$1500
_VP .= VAR_BASE_ADDR

;以后就这样定义变量了
Byte   =_ZVP
  ZSL 1
Integer   =_ZVP
ZSL 2

;也可以开辟一个缓冲区
BUF_LEN=256
Buf   =_VP
  SL BUF_LEN
好了,大家不知道是否觉得有用!怎样都行!

JIPU_PHIL,我对着手机看你那封信看了一个晚上还不是很懂你的意思,然后给朋友看,最后他翻译给我听了(只有一点夸张)!我还是发在贴子上吧,想知道可以看,错了大家可以帮我们纠正!TC1000的可能跟NC差不多吧,具体哪里不一样,我也不想知道了!下面是ASMFUN在TC1000观察到的!
-----------------
024000-$BFFF
034000-$7FF0
04-194000-$BFFF
-----------------
上面就是内核了!JIPU_PHIL说的1M不知道是什么意思!

当$0D=#$50且$0A为最高位为1的时候见下:
00:$4000-$5FFF为RAM($0A为最高位为0的时候一样)
00:$6000-$BFFF   |
01:$4000-$BFFF   |   映射
02:$4000-$BFFF   |<-------->01-0F:$C000-$CFFF(前面些是RAM)
03:$4000-$BFFF   |
20:$4000-$5FFF    <-------->00:$C000-$CFFF
20:$6000-$7FFF    <-------->BIOS($E000-$FFFF)
当$0D=#$50且$0A为最高位为0的时候见下:
00:$4000-$5FFF为RAM($0A为最高位为0的时候一样)
00:$6000-$7FFF为RAM
01:$6000-$BFFF为RAM

既然TC1000的00-19页大多数是内核,那么1A-1F呢,其中1E有个文件号表,应该是用来分配文件号用的,1F是Inode表,应该两个交替使用,不记得了!那1A-1D呢,好象也不闲,同样系统要向他们伸出魔爪!(下楼续)
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-3-29 05:41 , Processed in 0.012337 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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