📄 keyboard.lis
字号:
230:../src/keyboard.c **** { KTAB, KCAP, KF3, KT, KY, KRBR, KF7, KLBR, KBSP, KNUL, KNUL, KNUL, KNUL, KNUL, KLSH, KB5},
231:../src/keyboard.c ****
232:../src/keyboard.c **** { KA, KS, KD, KF, KJ, KK, KL, KSEM, KNUL, KNUL, KNUL, KL2, KNUL, KNUL, KF22, KB1},
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 19
233:../src/keyboard.c ****
234:../src/keyboard.c **** { KESC, KEU2, KF4, KG, KH, KF6, KNUL, KQUO, KF5, KNUL, KNUL, KNUL, KUAR, KLAL, KF23, KB2},
235:../src/keyboard.c ****
236:../src/keyboard.c **** { KZ, KX, KC, KV, KM, KLES, KGTR, KBSL /* KEU1 */, KENT, KNUL, KBRK, KNUL, KDEL, KF21, KRSH, KNUL}
237:../src/keyboard.c ****
238:../src/keyboard.c **** { KNUL, KNUL, KL1, KB, KN, KNUL, KNUL, KMIN, KSPC, KRAR, KDAR, KNUL, KLAR, KRAL, KF24, KNUL}
239:../src/keyboard.c **** }
240:../src/keyboard.c **** } ;
241:../src/keyboard.c ****
242:../src/keyboard.c **** keymap *scanmap ;
243:../src/keyboard.c ****
244:../src/keyboard.c **** BYTE kbd_Buffer[ 8] ;
245:../src/keyboard.c **** static BYTE kbd_tmp[ 8] ;
246:../src/keyboard.c **** BYTE kbd_idx ;
247:../src/keyboard.c **** static BYTE cols[ 16] ;
248:../src/keyboard.c ****
249:../src/keyboard.c **** void KEYBOARD_Send( void) ;
250:../src/keyboard.c ****
251:../src/keyboard.c **** static void kbd_rollover( void)
252:../src/keyboard.c **** {
824 .LMM2:
253:../src/keyboard.c **** for( kbd_idx = 2 ; kbd_idx < 8 ; kbd_idx++)
826 0000 2FF10200 ld dpr:pof(@kbd_idx),#2
826 00
827 0005 BFD20000 ldw rr2,#dpr:pof(@kbd_Buffer)
828 0009 4C01 ld r4,#1
829 .L5:
830 .LMM3:
254:../src/keyboard.c **** {
255:../src/keyboard.c **** kbd_Buffer[ kbd_idx] = 0x01 ;
832 000b C4F10000 ld r1,dpr:pof(@kbd_idx)
833 000f 0C00 ld r0,#0
834 0011 6013F4 ld rr0(rr2),r4
835 .LMM4:
837 0014 2F410100 add dpr:pof(@kbd_idx),#1
837 00
838 0019 2F910700 cp dpr:pof(@kbd_idx),#7
838 00
839 001e 3BEB jxule .L5
840 .LMM5:
256:../src/keyboard.c **** }
257:../src/keyboard.c **** }
842 0020 46 ret
843 .endproc
844 .Lscope0:
848
849 .globl kbd_insert
850
851 .desc kbd_insert, near
852 .proc kbd_insert
853 kbd_insert:
258:../src/keyboard.c ****
259:../src/keyboard.c **** void kbd_insert( BYTE scan)
260:../src/keyboard.c **** {
855 0021 28D0 ld r2,r0
856 .LMM7:
261:../src/keyboard.c **** if( kbd_idx < 8)
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 20
858 0023 2F910700 cp dpr:pof(@kbd_idx),#7
858 00
859 0028 BB11 jxugt .L8
860 .LMM8:
262:../src/keyboard.c **** {
263:../src/keyboard.c **** kbd_Buffer[ kbd_idx++] = scan ;
862 002a C4F10000 ld r1,dpr:pof(@kbd_idx)
863 002e 0C00 ld r0,#0
864 0030 26F00000 ld dpr:pof(@kbd_Buffer)(rr0),r2
864 D2
865 0035 2F410100 add dpr:pof(@kbd_idx),#1
865 00
866 .LMM9:
264:../src/keyboard.c **** }
868 003a 46 ret
869 .L8:
870 .LMM10:
265:../src/keyboard.c **** else
266:../src/keyboard.c **** {
267:../src/keyboard.c **** kbd_rollover() ;
872 003b D20000 call @kbd_rollover
873 .LMM11:
268:../src/keyboard.c **** }
269:../src/keyboard.c **** }
875 003e 46 ret
876 .endproc
877 .Lscope1:
882
883 .globl do_col
884
885 .desc do_col, near
886 .proc do_col
887 do_col:
270:../src/keyboard.c ****
271:../src/keyboard.c **** void do_col( BYTE col, BYTE byt)
272:../src/keyboard.c **** {
889 003f 66DC push r12
890 0041 74DA pushw rr10
891 0043 74D8 pushw rr8
892 0045 C8D1 ld r12,r1
893 .LMM13:
273:../src/keyboard.c **** BYTE scan, row, bit ;
895 .LBB2:
896 .LMM14:
274:../src/keyboard.c ****
275:../src/keyboard.c **** row = 0 ;
898 .LMM15:
276:../src/keyboard.c **** for( bit = 0x01 ; bit ; bit <<= 1)
900 0047 BFD80100 ldw rr8,#256
901 004b B8D0 ld r11,r0
902 004d AC00 ld r10,#0
903 .L14:
904 .LMM16:
277:../src/keyboard.c **** {
278:../src/keyboard.c **** if( byt & bit)
906 004f A2C8 tm r12,r8
907 0051 6D00E0 jxz .L15
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 21
908 .LMM17:
279:../src/keyboard.c **** {
280:../src/keyboard.c **** scan = (*scanmap)[ row][ col] ;
910 0054 18D9 ld r1,r9
911 0056 0C00 ld r0,#0
912 0058 4E00 addw rr0,rr0
913 005a 4E00 addw rr0,rr0
914 005c 4E00 addw rr0,rr0
915 005e 4E00 addw rr0,rr0
916 0060 E2400000 addw rr0,dpr:pof(@scanmap)
917 0064 601AF0 ld r0,rr0(rr10)
918 .LMM18:
281:../src/keyboard.c **** switch( scan)
920 0067 38D0 ld r3,r0
921 0069 2C00 ld r2,#0
922 006b 97D300E3 cpw rr2,#227
923 006f 6B49 jxz .L21
924 0071 AB1C jxgt .L28
925 0073 97D300E0 cpw rr2,#224
926 0077 6B2C jxz .L18
927 0079 AB06 jxgt .L29
928 007b 0E22 orw rr2,rr2
929 007d 6B61 jxz .L15
930 007f 8B5C jxt .L26
931 .L29:
932 0081 97D300E1 cpw rr2,#225
933 0085 6B25 jxz .L19
934 0087 97D300E2 cpw rr2,#226
935 008b 6B26 jxz .L20
936 008d 8B4E jxt .L26
937 .L28:
938 008f 97D300E5 cpw rr2,#229
939 0093 6B33 jxz .L23
940 0095 1B2A jxlt .L22
941 0097 97D300E6 cpw rr2,#230
942 009b 6B32 jxz .L24
943 009d 97D300E7 cpw rr2,#231
944 00a1 6B33 jxz .L25
945 00a3 8B38 jxt .L26
946 .L18:
947 .LMM19:
282:../src/keyboard.c **** {
283:../src/keyboard.c **** case 0x00:
284:../src/keyboard.c **** /* Code non in matrix: Can't be */
285:../src/keyboard.c **** break ;
286:../src/keyboard.c **** case KLCT: /* 0xE0: */
287:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x01 ;
949 00a5 2F010100 or dpr:pof(@kbd_Buffer),#1
949 00
950 .LMM20:
288:../src/keyboard.c **** break ;
952 00aa 8B34 jxt .L15
953 .L19:
954 .LMM21:
289:../src/keyboard.c **** case KLSH: /* 0xE1: */
290:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x02 ;
956 00ac 2F010200 or dpr:pof(@kbd_Buffer),#2
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 22
956 00
957 .LMM22:
291:../src/keyboard.c **** break ;
959 00b1 8B2D jxt .L15
960 .L20:
961 .LMM23:
292:../src/keyboard.c **** case KLAL: /* 0xE2: */
293:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x04 ;
963 00b3 2F010400 or dpr:pof(@kbd_Buffer),#4
963 00
964 .LMM24:
294:../src/keyboard.c **** break ;
966 00b8 8B26 jxt .L15
967 .L21:
968 .LMM25:
295:../src/keyboard.c **** case KL2: /* 0xE3: */
296:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x08 ;
970 00ba 2F010800 or dpr:pof(@kbd_Buffer),#8
970 00
971 .LMM26:
297:../src/keyboard.c **** break ;
973 00bf 8B1F jxt .L15
974 .L22:
975 .LMM27:
298:../src/keyboard.c **** case KRCT: /* 0xE4: */
299:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x10 ;
977 00c1 2F011000 or dpr:pof(@kbd_Buffer),#16
977 00
978 .LMM28:
300:../src/keyboard.c **** break ;
980 00c6 8B18 jxt .L15
981 .L23:
982 .LMM29:
301:../src/keyboard.c **** case KRSH: /* 0xE5: */
302:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x20 ;
984 00c8 2F012000 or dpr:pof(@kbd_Buffer),#32
984 00
985 .LMM30:
303:../src/keyboard.c **** break ;
987 00cd 8B11 jxt .L15
988 .L24:
989 .LMM31:
304:../src/keyboard.c **** case KRAL: /* 0xE6: */
305:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x40 ;
991 00cf 2F014000 or dpr:pof(@kbd_Buffer),#64
991 00
992 .LMM32:
306:../src/keyboard.c **** break ;
994 00d4 8B0A jxt .L15
995 .L25:
996 .LMM33:
307:../src/keyboard.c **** case KR1: /* 0xE7: */
308:../src/keyboard.c **** kbd_Buffer[ 0] |= 0x80 ;
998 00d6 2F018000 or dpr:pof(@kbd_Buffer),#128
998 00
999 .LMM34:
309:../src/keyboard.c **** break ;
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 23
1001 00db 8B03 jxt .L15
1002 .L26:
1003 .LMM35:
310:../src/keyboard.c **** default:
311:../src/keyboard.c **** kbd_insert( scan) ;
1005 00dd D20021 call @kbd_insert
1006 .L15:
1007 .LMM36:
312:../src/keyboard.c **** }
313:../src/keyboard.c **** }
314:../src/keyboard.c ****
315:../src/keyboard.c **** row += 1 ;
1009 00e0 50D9 inc r9
1010 .LMM37:
1012 00e2 4288 add r8,r8
1013 00e4 ED004F jxnz .L14
1014 .LMM38:
316:../src/keyboard.c **** }
317:../src/keyboard.c **** }
1016 .LBE2:
1017 00e7 75D8 popw rr8
1018 00e9 75DA popw rr10
1019 00eb 76DC pop r12
1020 00ed 46 ret
1021 .endproc
1027 .Lscope2:
1029
1030 .globl P3DR
1031 .desc P3DR, 8bit register
1032 P3DR= 227
1033
1034 .globl P4DR
1035 .desc P4DR, 8bit register
1036 P4DR= 228
1038
1039 .globl get_key
1040
1041 .desc get_key, near
1042 .proc get_key
1043 get_key:
318:../src/keyboard.c ****
319:../src/keyboard.c **** BYTE get_key( void)
320:../src/keyboard.c **** {
1045 .LMM40:
321:../src/keyboard.c **** BYTE byt, cnt, tmp ;
1047 .LBB3:
1048 .LMM41:
322:../src/keyboard.c ****
323:../src/keyboard.c **** // byt = 0x7F ;
324:../src/keyboard.c **** // cnt = 0 ;
325:../src/keyboard.c **** // while( --cnt)
326:../src/keyboard.c **** // {
327:../src/keyboard.c **** // byt &= ~P3DR | 0xF0 ;
328:../src/keyboard.c **** // byt &= (~P4DR << 4) | 0x0F ;
329:../src/keyboard.c **** // }
330:../src/keyboard.c **** tmp = cnt = 0 ;
1050 00ee 90D2 clr r2
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s page 24
1051 00f0 38D2 ld r3,r2
1052 .L32:
1053 .LMM42:
331:../src/keyboard.c **** do
332:../src/keyboard.c **** {
333:../src/keyboard.c **** byt = ~P3DR & 0x0F ;
1055 00f2 08E3 ld r0,@P3DR
1056 00f4 80D0 cpl r0
1057 00f6 18D0 ld r1,r0
1058 00f8 15D10F and r1,#15
1059 .LMM43:
334:../src/keyboard.c **** byt |= (~P4DR << 4) & 0xF0 ;
1061 00fb 08E4 ld r0,@P4DR
1062 00fd 80D0 cpl r0
1063 00ff F0D0 swap r0
1064 0101 15D0F0 and r0,#240
1065 0104 15D0F0 and r0,#-16
1066 0107 0210 or r1,r0
1067 .LMM44:
335:../src/keyboard.c **** if( tmp == byt)
1069 0109 9231 cp r3,r1
1070 010b EB04 jxnz .L35
1071 .LMM45:
336:../src/keyboard.c **** {
337:../src/keyboard.c **** cnt += 1 ;
1073 010d 50D2 inc r2
1074 .LMM46:
338:../src/keyboard.c **** }
1076 010f 8B04 jxt .L34
1077 .L35:
1078 .LMM47:
339:../src/keyboard.c **** else
340:../src/keyboard.c **** {
341:../src/keyboard.c **** tmp = byt ;
1080 0111 38D1 ld r3,r1
1081 .LMM48:
342:../src/keyboard.c **** cnt = 0 ;
1083 0113 90D2 clr r2
1084 .LMM49:
343:../src/keyboard.c **** }
344:../src/keyboard.c **** } while( cnt < 255) ;
1086 .L34:
1087 0115 95D2FE cp r2,#254
1088 0118 3BD8 jxule .L32
1089 .LMM50:
345:../src/keyboard.c ****
346:../src/keyboard.c **** return byt ;
1091 .LMM51:
347:../src/keyboard.c **** }
1093 .LBE3:
1094 011a 46 ret
1095 .endproc
1101 .Lscope3:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -