| 
 
注册时间2004-8-28最后登录1970-1-1 
 | 
 
| bin 4000-4001固定是4000
 4002-4011是文件名(BIG5码)
 4012-4017是00
 4018是程序开始地址
 401B-4027是A5AA5500000000000001060000
 4028开始就是程序了。
 
 
 LEE com
 
 $0000:43 4f 4d ("COM")
 $0003:?? (COM文件入口地址的高8位,必须是偶数且在1A-3E之间,低8位恒为10)
 $0004:?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (文件名,如用汉字必须使用BIG5码)
 $0010:?? ?? ... (文件内容)
 
 com文件的详细规范:
 
 
 以下数字如无特别说明,都是16进制。
 0000:'CO'
 0002:01
 0003:com_set(bit7为0)
 0004-000F:文件名
 0010-0FFF:block 0
 1000-1FFF:block 1
 2000-2FFF:block 2
 .....
 F000-FFFF:block F
 ------------------
 0000:'CO'
 0002:01
 0003:com_set(bit7为1)
 0004-000F:文件名
 0010-1FFF:block 0
 2000-3FFF:block 1
 .....
 E000-FFFF:block 7
 
 com文件在加载时由系统读入前2000字节到$2000,然后跳转到$2010执行。
 若要切换2000-FFFF的内容,调用$1F00处的子程序。
 入口参数:
 x:com_block(块号),y:com_ser_no(服务号)。
 
 com_set:bit7为0时一个block是1000字节,为1时一个block是2000字节。bit7为0时,小于com_set的com_block
 放在$2000-$2FFF,大于等于com_set的com_block放在$3000-$3FFF(例外的是com_block0一定在$2000-$2FFF,
 com_block1一定在$3000-$3FFF)。
 com_block:bit6 为1时读4k数据(从2000-2FFF调用则数据放在3000-3FFFF,从3000-3FFF调用则数据放在2000-2FFFF),为0时调入并执行程序。
 com_block:bit7 为1时调用程序但不返回(尽管不返回,仍然要用jsr $1F00,若用jmp $1F00会出错),为0
 时调用程序后返回。
 com_ser_n服务号。每一个块(4k或8k)内可能有不止一个子程序(服务)。在每个块的头100字节放了80
 个双字节地址,分别指向80个服务的入口地址(当然,如果你没有提供全部80个服务,完全可以把剩余的空间
 用来放程序)。
 
 注意,$1F00-$1FFF由系统控制,不允许破坏。com文件在执行时不可以破坏堆栈,返回时应使用rts指令。
 
 文件FCB(File Control Block
 文件FCB(File Control Block)
 每个文件的FCB占$10个字节。
 00:F1正常E1该文件已经删除E3传输中断
 01-03:固定为303030
 04:文件建立次序
 05:文件类型
 06-07:文件长度(0x00,x为占的页数)
 08-09:文件存储地址的Block
 0A-0B:当为Bin时为FFFF,其他指向文件名存储的Block
 0E-0F:文件建立时间
 Block是一种特殊的地址形式。在Xasm用X命令,在WQXHex中用B命令。
 00页码的5168或7168是BIN档的目录地址,当00页码的4000是2a时,地址5168是其目录地址,否则7168是其目录地址
 
 
 (不知道对PC1000编汇有兴趣的人还有多少。。。。。。。。。。。。。)
 
 | 
 |