易码技术论坛

 找回密码
 加入易码
搜索
查看: 577048|回复: 13

[原创]漫谈信息框之用法 for NC2k/2600/3000....

[复制链接]
发表于 2006-7-21 13:38:00 | 显示全部楼层
不错,支持!
 楼主| 发表于 2006-7-21 13:58:00 | 显示全部楼层
以下是引用17th_Apostle在2006-7-21 12:54:00的发言:[BR]支持原创^_^

还有没?


近期发布一些原创的3000的汇编资料.届时,希望来关注啊

资料的首发地在我的BLOG上.请大家密切关注哦.

地址为:http://219.153.32.168/wqxblog/blog.php?uid=42


[em01][em01][em01][em01][em01][em01]
发表于 2006-7-21 12:54:00 | 显示全部楼层
支持原创^_^

还有没?
发表于 2006-7-21 17:03:00 | 显示全部楼层
呵呵,支持一下
发表于 2006-7-22 12:52:00 | 显示全部楼层
近期发布一些原创的3000的汇编资料.届时,希望来关注啊

资料的首发地在我的BLOG上.请大家密切关注哦.

地址为:http://219.153.32.168/wqxblog/blog.php?uid=42


好!支持![em02][em02][em02][em02][em02]
发表于 2006-7-25 10:06:00 | 显示全部楼层
好像有人写过2600的!

支持!
发表于 2006-7-28 16:18:43 | 显示全部楼层
我只看过画框框的程序,我的中断里是这样的边框:不过我好想自己写一个INT$CA12啊,弄更漂亮的
没法粘图片啊
发表于 2006-8-3 10:38:17 | 显示全部楼层
支持原创。继续努力
发表于 2006-8-3 15:16:52 | 显示全部楼层
支持
发表于 2006-8-6 20:57:24 | 显示全部楼层
有抄袭的嫌疑啊!
 楼主| 发表于 2006-8-6 21:17:56 | 显示全部楼层
应该来说是sossb整理和添加的.....呵呵.......别见怪..........
发表于 2006-8-23 17:13:50 | 显示全部楼层
加精华啊
发表于 2006-9-2 11:18:44 | 显示全部楼层
不错的说~
 楼主| 发表于 2006-7-21 12:31:32 | 显示全部楼层 |阅读模式
作者:Isword
   信息框在汇编程序中使用的频率很高,用户常常通过对信息框的操作来使用程序.所以,信息框的编辑对于程序员来说是相当的重要的,而系统自带的信息框功能还是比较强大的.笔者就重点叙述一下中断int $ca12的详细用法,希望能对新手有一定的帮助.
   int $ca12此中断的信息框,根据寄存器A存放的值不同,一共可以分为5种类型,下面,笔者就来讲讲这5种类型的信息框的具体用法.
1.弹出式信息框.
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A的值为#$00.
[参数表定义]:
偏移  00: 80
     01: 信息文字内容开始地址低8位
     02: 信息文字内容开始地址高8位(文字以#$00结尾或换行)
     03: 信息框在X轴位置
     04: 信息框在Y轴位置
     05: 信息内容的长度(最大为#$10)
     06: 信息框宽度(#$02 显示8*16字体的1行,8*8字体的2行,#$04 显示8*16字体的2行,8*8字体的4行,#$06 8*16字体的3行,8*8字体的6行......最大只能是#$08)
     07: 文字状态地址低8位
     08: 文字状态地址高8位
     09: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
[实例]:
main:
  LDA #$00
  LDX #<table
  LDY #>table
  INT $ca12
  INT $c006(2600=c00a);按键等待
  RTS
table:
  .db $80
  .dw l2
  .db $13 $10 $0b $02
  .dw l1
l1:
  .db $02
l2:
  .db "hello world",$00,$00

2.选择式信息框.
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A=#$02,显示问号,寄存器A=#$01,显示感叹号.
[参数表定义]:
偏移   00: 80
      01: 信息内容开始地址低8位
      02: 信息内容开始地址高8位
      03: 信息框在X轴位置
      04: 信息框在Y轴位置
      05: 信息内容的长度(如果显示是4个汉字,这里就是08,每个菜单项大小必须一样,最大为#$10)
      06: 信息框宽度(#$02 显示8*16字体的1行,$04 显示8*16字体的2行,#$06 8*16字体的3行......最大只能是#$08)
      07: 文字状态地址低8位
      08: 文字状态地址高8位
      09: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
[注意点]:
使用int $ca12中断后,用户选择是与否的结果保存在寄存器A里,若选择了是,寄存器A的值为#$79,若选择了否,寄存器A的值不为#$79.
[实例]:略.

3.菜单选择框:
[入口参数]:
寄存器X放参数表地址低8位,寄存器Y放参数表地址高8位,寄存器A的值为#$03.
[参数表定义]:
偏移   00: 80/82(80时为圆点选择菜单,82时为条形选择菜单)
      01: 信息内容开始地址低8位
      02: 信息内容开始地址高8位
      03: 信息框在X轴位置
      04: 信息框在Y轴位置
      05: 信息内容的长度(如果显示是4个汉字,这里就是08,每个菜单项大小必须一样,最大为#$10)
      06: 信息框宽度(#$02 显示8*16字体的1行,$04 显示8*16字体的2行,#$06 8*16字体的3行......最大只能是#$08)
      07: 文字状态地址低8位
      08: 文字状态地址高8位
      09: 执行菜单项开始地址低8位
      0A: 执行菜单项开始地址高8位         
      0B: 文字状态(#$02 显示8*16字体;#$04 显示8*8字体;#$82 显示8*16反显字体;#$84 显示8*8反显字体.......)
      0C: 第一个菜单项执行地址低8位
      0D: 第一个菜单项执行地址高8位
      0E: 第二个菜单项执行地址低8位
      0F: 第二个菜单项执行地址高8位
      ........
[实例]:略.

   值得注意的地方是:此中断在超过使用两个时会出现错误的,即在屏幕的中央出现"error"的字样,解决的方法是:每次使用前使$0661=#$00就可以了
比如:
        lda $0661
        pha
        lda #$00
        sta $0661
        子程序;调用int $ca12
        pla
        sta $0661
        rts
   关于int $ca12的详细用法,笔者就此收笔,望可以对新手有所帮助...




相关连接点这里
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2024-3-29 01:46 , Processed in 0.011507 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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