为活跃人气,激发大家学习WQX汇编编程的兴趣。Lendy决定暑假期间在此发布《WQX系统函数详解》~欢迎有兴趣学习WQX编程的星迷踊跃参与。当然,前提是你必须要有一定的6502基础。
《WQX系统函数详解》将以NC2k系列文曲星为平台,主要公布系统函数及用法,并配套详细说明及部分实例。
P.S. 如无详细说明,则可通用于NC2000/NC2010/NC2600三种机型。
□ WQX系统函数详解 Vol.1 - 文字输入输出
(一)相关地址
屏幕缓冲区:$19C0 - $1FFF
该缓冲区存放屏幕点阵信息。
文字缓冲区:中文大字体模式 $02C0 - $0323,小字体模式 $02C0 - $035D
该缓冲区存放欲显示到屏幕上的文字资料。
其余相关地址详见下面系统函数说明。
(二)相关系统函数
清屏幕缓冲区
[指令] BRK $C729
[入参] 无
[出参] 无
清文字缓冲区
[指令] BRK $C72A
[入参] 无
[出参] 无
等待按键
[指令] BRK $C009, BRK $C00A (这两个指令功能基本相同,现在就不多作说明了)
[入参] 无
[出参] A - 键值
[说明] 按键之后,寄存器A将被赋予所按按键的键值
显示文字
[指令] BRK $C719
[入参] $0391 $0392 - 显示模式(当$0391为01,$0392为00时显示大字体;当$0391为00,$0392为01时显示小字体)
$03E8 - 内码(当$03E8为80时显示纯英文,当$03E8为40时显示GB码 简体,当$03E8为20时显示BIG5码 繁体)
[出参] 无
[说明] 将文字缓冲区内容显示到屏幕上。
[实例] 3000 LDX #$0B
3002 LDA $3800,X
3005 STA $02C0,X
3008 DEX
3009 BPL $3002
300B RTS
....
3800 这是一个实例
文字输入
[指令] BRK $CB07
[入参] X,Y 输入框状态设定的地址
$0448 输入栏提示内容
[输入框状态设定] 第一个字节为输入框所处屏幕位置,第二个字节为输入的字节数,第三个字节为可用输入法(一般设为21,可使用全部输入法),第4&5个字节为帮助信息地址
[输入栏提示内容] 00 姓名,01 备注,02 课程,03 便签,04 纪念,05 行程,06 定时,07 账本,08 储蓄,09 个人,0A 邮编,0B 生字,0C 中文,0D 要事,0E 笔记,0F 查询,10 开机,11 英汉,12 录音,13 题词,14 自建,15 (无提示),16 职务,17 公司,18 简称,19 电话,1A 电邮,1B 地址,1C 便签,1D 类别,1E 血型,1F 提示
[出参] 对应的屏幕缓冲区(如输入框所处位置为14,对应则为$02C0+$14 = $02D4,即从$02D4起为所输入内容)
[实例] 在屏幕第二行第一列($14)输入文字,文字最长10($0A)个字节,可用所有输入法($21),帮助信息($00 $39)“这是帮助”
3000 LDX #$00
3002 LDY #$38
3004 LDA #$03
3006 STA $0448
3009 BRK $CB07
....
3800 $14 $0A $21 $00 $39
....
3900 这是帮助
将数字转换为字符串信息
[指令] BRK $C733
[入参] $80, $81 - 欲转换的值
[出参] $82, $83, $84, $85, $86 - 转换后的字符串
[实例] 将数值270F(十进制数9999)转换为字符串信息并显示到屏幕上
3000 BRK $C72A ;清文字缓冲区
3003 LDA #$0F
3005 STA $80
3007 LDA #$27
3009 STA $81
300B BRK $C733
300E LDX #$04
3010 LDA $82,X
3012 STA $02C0,X
3015 DEX
3016 BPL $3010
3018 BRK $C719
301B BRK $C00A
301E RTS
[此贴子已经被作者于2004-10-5 21:13:21编辑过]
|