📄 kbsub.lis
字号:
0102 A6AA lda #-86
0104 E704 sta 4,X
0106 2062 bra L18
0108 L32:
0108 ; else if(KB_P==0xED&&tmp==0xB7)tmp=0x55;
0108 B600 lda 0
010A A1ED cmp #-19
010C 260C bne L34
010E E604 lda 4,X
0110 A1B7 cmp #-73
0112 2606 bne L34
0114 A655 lda #85
0116 E704 sta 4,X
0118 2050 bra L18
011A L34:
011A ; else if(KB_P==0xEB&&tmp==0xB7)tmp=0xA3;
011A B600 lda 0
011C A1EB cmp #-21
011E 260C bne L36
0120 E604 lda 4,X
0122 A1B7 cmp #-73
0124 2606 bne L36
0126 A6A3 lda #-93
0128 E704 sta 4,X
012A 203E bra L18
012C L36:
012C ; else if(KB_P==0xBE&&tmp==0xE7)tmp=0xA6;
012C B600 lda 0
012E A1BE cmp #-66
0130 260C bne L38
0132 E604 lda 4,X
0134 A1E7 cmp #-25
0136 2606 bne L38
0138 A6A6 lda #-90
013A E704 sta 4,X
013C 202C bra L18
013E L38:
013E ; else if(KB_P==0xBD&&tmp==0xE7)tmp=0xA5;
013E B600 lda 0
0140 A1BD cmp #-67
0142 260C bne L40
0144 E604 lda 4,X
0146 A1E7 cmp #-25
0148 2606 bne L40
014A A6A5 lda #-91
014C E704 sta 4,X
014E 201A bra L18
0150 L40:
0150 ; else tmp=KB_P&tmp;
0150 B600 lda 0
0152 E404 and 4,X
0154 E704 sta 4,X
0156 ; break;
0156 2012 bra L18
0158 L20:
0158 E602 lda 2,X
015A 48 lsla
015B AB10 add #16
015D E702 sta 2,X
015F L17:
015F 6C03 inc 3,X
0161 L19:
0161 E603 lda 3,X
0163 A103 cmp #3
0165 2203 bhi X4
0167 CC0078 jmp L16
016A X4:
016A L18:
016A E603 lda 3,X
016C A104 cmp #4
016E 2609 bne L15
0170 A6FF lda #-1
0172 E704 sta 4,X
0174 2003 bra L15
0176 L14:
0176 CC0069 jmp L13
0179 L15:
0179 ; }
0179 ;
0179 ; else //本行无键按下,扫描下一列
0179 ; line1=(line1<<1)+0x10;
0179 ;
0179 ; }
0179 ;
0179 ;
0179 ; if(j==4) tmp=0xff;
0179 ; break;
0179 ; }
0179 ; return(tmp);
0179 E604 lda 4,X
017B 201C bra L3
017D X0:
017D ;
017D ; //*/
017D ; }
017D ; break;
017D L8:
017D F6 lda ,X
017E 48 lsla
017F AA01 ora #1
0181 F7 sta ,X
0182 L5:
0182 6C01 inc 1,X
0184 L7:
0184 E601 lda 1,X
0186 A104 cmp #4
0188 2203 bhi X5
018A CC0037 jmp L4
018D X5:
018D L6:
018D ; }
018D ; else //本行无键按下,扫描下一行
018D ; line=(line<<1)|0x01;
018D ; }
018D ; if(i==5) tmp=0xff;
018D E601 lda 1,X
018F A105 cmp #5
0191 2604 bne L44
0193 A6FF lda #-1
0195 E704 sta 4,X
0197 L44:
0197 ; return(tmp);
0197 E604 lda 4,X
0199 L3:
0199 A706 ais #6
019B .dbline 0 ; func end
019B 81 rts
.area lit
0000 _KB_Table::
0000 EE31 .byte 238,49
0002 DE32 .byte 222,50
0004 BE33 .byte 190,51
0006 ED34 .byte 237,52
0008 DD35 .byte 221,53
000A BD36 .byte 189,54
000C EB37 .byte 235,55
000E E72A .byte 231,42
0010 B723 .byte 183,35
0012 E661 .byte 230,'a
0014 C662 .byte 198,'b
0016 A663 .byte 166,'c
0018 E564 .byte 229,'d
001A C565 .byte 197,'e
001C A566 .byte 165,'f
001E E367 .byte 227,'g
0020 AA41 .byte 170,'A
0022 9642 .byte 150,'B
0024 B643 .byte 182,'C
0026 5544 .byte 'U,'D
0028 9545 .byte 149,'E
002A B546 .byte 181,'F
002C A347 .byte 163,'G
002E 00 .byte 0
.area text
; KeyPress -> 0,X
; i -> 1,X
; j -> 2,X
; KB_valve -> 5,X
019C _KB_Def::
019C A7FD ais #-3
019E 95 tsx
019F ; }
019F ; /*KB_Def:键值转为定义值函数----------------------------*
019F ; *功 能:键值转为定义值 *
019F ; *参 数:键值 *
019F ; *返 回:键定义值 *
019F ; *-----------------------------------------------------*/
019F ; //键盘定义表
019F ; const unsigned char KB_Table[]=
019F ; {0xEE,'1',0xDE,'2',0xBE,'3',0xED,'4',0xDD,'5',0xBD,'6',0xEB,'7',0xE7,'*',0xB7,'#',
019F ; 0xE6,'a',0xC6,'b',0xA6,'c',0xE5,'d', 0xC5,'e', 0xA5,'f',0xE3,'g',//按键*1,*2,*3,*4,*5,*6,*7
019F ; 0xAA,'A',0x96,'B',0xB6,'C',0x55,'D', 0x95,'E', 0xB5,'F',0xA3,'G',//按键#1,#2,#3,#4,#5,#6,#7
019F ; 0x00};
019F ; unsigned char KB_Def(unsigned char KB_valve)
019F ; {
019F ; unsigned char KeyPress;
019F ; unsigned char i;
019F ; unsigned char j;
019F ; i=0;
019F 6F01 clr 1,X
01A1 203C bra L48
01A3 L47:
01A3 ; while(1)
01A3 ; {
01A3 ; j=KB_Table[i];
01A3 3F00 clr *__r0
01A5 E601 lda 1,X
01A7 AB00 add #<_KB_Table
01A9 B700 sta *__r1
01AB B600 lda *__r0
01AD A900 adc #>_KB_Table
01AF B700 sta *__r0
01B1 5500 ldhx *__r0
01B3 F6 lda ,x
01B4 95 tsx
01B5 E702 sta 2,X
01B7 ; //与0(定义表结束标志)相比较
01B7 ; if (j==0) //=0,即表中无次定义值
01B7 2605 bne L50
01B9 ; {KeyPress=0xff; break;} //返回0xff
01B9 A6FF lda #-1
01BB F7 sta ,X
01BC 2023 bra L49
01BE L50:
01BE ; else
01BE ; //与键值相比较
01BE ; if (j==KB_valve) //找到
01BE E602 lda 2,X
01C0 E105 cmp 5,X
01C2 2615 bne L52
01C4 ; {KeyPress=KB_Table[i+1];break;} //取键定义值
01C4 3F00 clr *__r0
01C6 E601 lda 1,X
01C8 AB01 add #<_KB_Table+1
01CA B700 sta *__r1
01CC B600 lda *__r0
01CE A901 adc #>_KB_Table+1
01D0 B700 sta *__r0
01D2 5500 ldhx *__r0
01D4 F6 lda ,x
01D5 95 tsx
01D6 F7 sta ,X
01D7 2008 bra L49
01D9 L52:
01D9 E601 lda 1,X
01DB AB02 add #2
01DD E701 sta 1,X
01DF L48:
01DF 20C2 bra L47
01E1 L49:
01E1 ; else
01E1 ; i+=2; //指向下一个键值,继续判断
01E1 ; };
01E1 ; return KeyPress;
01E1 F6 lda ,X
01E2 L46:
01E2 A703 ais #3
01E4 .dbline 0 ; func end
01E4 81 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -