| 
 
注册时间2004-9-3最后登录1970-1-1 
 | 
 
| 作者: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的详细用法,笔者就此收笔,望可以对新手有所帮助...
 
 
 
 
 相关连接点这里
 | 
 |