//输入法

  实现输入汉字,字符,符号等

  中断调用:INT $C209

  入口参数:

  ①寄存器X放参数表地址低8位

    寄存器Y放参数表地址高8位

  ②设置光标类型

    设置地址 $0431

    (0431) = 00   闪烁粗光标

    其他自己试试就知道了

  ③设置最右下角显示的两个汉字

    设置地址 $053A

    (053A) = 00  显示"姓名"

    (053A) = 01  显示"备注"

    (053A) = 02  显示"课程"

    (053A) = 03  显示"便笺"

    (053A) = 04  显示"纪念"

    (053A) = 05  显示"行程"

    (053A) = 06  显示"定时"

    (053A) = 07  显示"帐本"

    (053A) = 08  显示"储蓄"

    (053A) = 09  显示"个人"

    (053A) = 0A  显示"邮编"

    (053A) = 0B  显示"生字"

    (053A) = 0C  显示"中文"

    (053A) = 0D  显示"要事"

    (053A) = 0E  显示"笔记"

    (053A) = 0F  显示"查询"

    (053A) = 10  显示"开机"

    (053A) = 11  显示"汉英"

    .....

    其他自己试试

 

    参数表定义:

   偏移 00: 光标位置 (00-$63)

        01: 允许输入最大字节数

        02: 20

        03: 帮助内容开始地址低8位

        04: 帮助内容开始地址高8位

 

    这里有个问题,用户输入后,如何获得用户输入的信息呢?由于输入的信息会在屏幕上显示

那么我们只要把对应屏幕RAM地址内容保存到另外一段地址就可以了

    我举个例子

    光标位置 00

    最大允许输入20个字符,即10个汉字

    输入的信息保存在地址3000后

    输入的字节数保存在地址3100

   

    1.我们 先做帮助

      从地址2000开始

      输入法输入 "输入法帮助",后面用 E C命令紧接输入0000

   2.然后我们做参数表

      从地址2010开始

      E C 2010,输入 00 14 20 00 20

   3.实现主程序,从地址2018开始

     A 2018

     2018: LDA #$00           ;设置光标类型为正常

     201A: STA $0431

     201D: LDA #$0C           ;最右下角显示"中文"

     201F: STA $053A

     2022: INT $8A2E          ;清屏

     2025: LDX #$10           ;设置参数表地址

     2027: LDY #$20

     2029: INT $C209          ;调用输入法中断

     202C: CMP #$1B           ;判断用户是否按 跳出 键

     202E: BEQ $2041          ;如果按了,说明用户取消了输入,那么程序结束

     2030: LDX #$00           ;开始读输入的数据,这里X的内容初始化为00

     2032: LDA $02C0,X        ;因为光标位置是00,所以从地址02C0开始读,这是屏幕RAM首地址

     2035: BEQ $203E          ;判断读取的内容是不是 00,如果是说明信息已经读完了

     2037: STA $3000,X        ;读取信息送地址 3000+(X)

     203A: INX                ;寄存器X内容加1,读取信息下一字节

     203B: JMP $2032 

     203E: STX $3100          ;用户输入的字节数送地址3100

     2041: RTS