main.s
来自「实现2个ps/2接口转到1个USB接口功能」· S 代码 · 共 2,163 行 · 第 1/3 页
S
2,163 行
; case 0x06: report_packet.z =0xfa;break;
mov [_report_packet+3],-6
.dbline 277
xjmp L34
L50:
.dbline 278
; case 0x07: report_packet.z =0xf9;break;
mov [_report_packet+3],-7
.dbline 278
xjmp L34
L52:
.dbline 279
; case 0xff: report_packet.z =0x01;break;
mov [_report_packet+3],1
.dbline 279
xjmp L34
L54:
.dbline 280
; case 0xfe: report_packet.z =0x02;break;
mov [_report_packet+3],2
.dbline 280
xjmp L34
L56:
.dbline 281
; case 0xfd: report_packet.z =0x03;break;
mov [_report_packet+3],3
.dbline 281
xjmp L34
L58:
.dbline 282
; case 0xfc: report_packet.z =0x04;break;
mov [_report_packet+3],4
.dbline 282
xjmp L34
L60:
.dbline 283
; case 0xfb: report_packet.z =0x05;break;
mov [_report_packet+3],5
.dbline 283
xjmp L34
L62:
.dbline 284
; case 0xfa: report_packet.z =0x06;break;
mov [_report_packet+3],6
.dbline 284
xjmp L34
L64:
.dbline 285
; case 0xf9: report_packet.z =0x07;break;
mov [_report_packet+3],7
.dbline 285
xjmp L34
L66:
.dbline 286
; case 0xf8: report_packet.z =0x08;break;
mov [_report_packet+3],8
.dbline 286
xjmp L34
L33:
.dbline 287
; default: report_packet.z = 0x00;
mov [_report_packet+3],0
.dbline 288
; }
L34:
.dbline 290
; // report_packet.z=0x00;
; mouse_report_valid = TRUE;
mov [X+0],1
.dbline 291
; SET_INT1_NEW();
push X
xcall _SET_INT1_NEW
pop X
.dbline 298
; // }
; // else //check_ms error!!
; // {
; // mouse_report_valid = FALSE;
; // SPIS_SET_MOUSE_NEW();
; // }
; }
xjmp L13
L12:
.dbline 300
; else // nothing receive!!
; {
.dbline 301
; report_packet.buttons = 0x00;
mov [_report_packet],0
.dbline 302
; report_packet.x = 0x00;
mov [_report_packet+1],0
.dbline 303
; report_packet.y = 0x00;
mov [_report_packet+2],0
.dbline 304
; report_packet.z = 0x00;
mov [_report_packet+3],0
.dbline 305
; }
L13:
.dbline 306
; return ( mouse_report_valid );
mov A,[X+0]
.dbline -2
L9:
add SP,-8
pop X
.dbline 0 ; func end
ret
.dbsym l check_ms 5 c
.dbsym l regy_ms0 4 c
.dbsym l regx_ms0 3 c
.dbsym l ysign 2 c
.dbsym l xsign 1 c
.dbsym l mouse_report_valid 0 c
.dbend
.dbfunc e kb_get_report _kb_get_report fc
; kb_report_valid -> X+1
; form_kb0 -> X+0
_kb_get_report::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 312
; }
; //MOUSE
;
;
; BOOL kb_get_report( void )
; {
.dbline 313
; BOOL kb_report_valid = FALSE;
mov [X+1],0
.dbline 314
; UINT8 form_kb0=0x00;
mov [X+0],0
.dbline 316
;
; get_int0_new = GET_INT0_NEW();
push X
xcall _GET_INT0_NEW
pop X
mov [_get_int0_new],A
.dbline 318
;
; if(get_int0_new==reg_int0_new && get_int0_new!=0x00)
mov A,[_get_int0_new]
cmp A,[_reg_int0_new]
jnz L74
cmp [_get_int0_new],0
jz L74
.dbline 319
; {
.dbline 320
; shouldstartkb=TRUE;
mov [_shouldstartkb],1
.dbline 321
; }
xjmp L75
L74:
.dbline 323
; else
; {
.dbline 324
; shouldstartkb=FALSE;
mov [_shouldstartkb],0
.dbline 325
; reg_int0_new=get_int0_new;
mov [_reg_int0_new],[_get_int0_new]
.dbline 326
; kb_timer=0x00;
mov [_kb_timer],0
.dbline 327
; }
L75:
.dbline 329
;
; if(kb_timer==0x0A)
cmp [_kb_timer],10
jnz L76
.dbline 332
; // KEYBOARD
; // if(get_kb_new==0x01)
; {
.dbline 335
; //debug_turn_on_led();
;
; protect_counter=0x0000;
mov [_protect_counter+1],0
mov [_protect_counter],0
.dbline 336
; shouldprotect = TRUE;
mov [_shouldprotect],1
.dbline 340
;
; //debug_glimpse();//just for debug!!!!
; // decide which code should be send to pc start!
; get_kb0=INT0_GET_DATA_KB_00();
push X
xcall _INT0_GET_DATA_KB_00
pop X
mov [_get_kb0],A
.dbline 341
; get_kb1=INT0_GET_DATA_KB_01();
push X
xcall _INT0_GET_DATA_KB_01
pop X
mov [_get_kb1],A
.dbline 342
; get_kb2=INT0_GET_DATA_KB_02();
push X
xcall _INT0_GET_DATA_KB_02
pop X
mov [_get_kb2],A
.dbline 343
; get_kb3=INT0_GET_DATA_KB_03();
push X
xcall _INT0_GET_DATA_KB_03
pop X
mov [_get_kb3],A
.dbline 344
; get_kb4=INT0_GET_DATA_KB_04();
push X
xcall _INT0_GET_DATA_KB_04
pop X
mov [_get_kb4],A
.dbline 345
; get_kb5=INT0_GET_DATA_KB_05();
push X
xcall _INT0_GET_DATA_KB_05
pop X
mov [_get_kb5],A
.dbline 346
; get_kb6=INT0_GET_DATA_KB_06();
push X
xcall _INT0_GET_DATA_KB_06
pop X
mov [_get_kb6],A
.dbline 347
; get_kb7=INT0_GET_DATA_KB_07();
push X
xcall _INT0_GET_DATA_KB_07
pop X
mov [_get_kb7],A
.dbline 350
;
; //initial value
; report_packet_kb.kb0 = 0x00;
mov [_report_packet_kb],0
.dbline 351
; report_packet_kb.kb1 = 0x00;
mov [_report_packet_kb+1],0
.dbline 352
; report_packet_kb.kb2 = 0x00;
mov [_report_packet_kb+2],0
.dbline 353
; report_packet_kb.kb3 = 0x00;
mov [_report_packet_kb+3],0
.dbline 354
; report_packet_kb.kb4 = 0x00;
mov [_report_packet_kb+4],0
.dbline 355
; report_packet_kb.kb5 = 0x00;
mov [_report_packet_kb+5],0
.dbline 356
; report_packet_kb.kb6 = 0x00;
mov [_report_packet_kb+6],0
.dbline 357
; report_packet_kb.kb7 = 0x00;
mov [_report_packet_kb+7],0
.dbline 360
;
; //debug_turn_on_led();
; if(get_kb0==0xF0)//break CODE ,need do nothing
cmp [_get_kb0],-16
jnz L85
.dbline 361
; {
.dbline 362
; if(get_kb1==0xA5)
cmp [_get_kb1],-91
jnz L87
.dbline 363
; {
.dbline 364
; L_SHIFT = FALSE;
mov [_L_SHIFT],0
.dbline 365
; }
xjmp L88
L87:
.dbline 366
; else if(get_kb1==0xA6)
cmp [_get_kb1],-90
jnz L89
.dbline 367
; {
.dbline 368
; L_CTRL = FALSE;
mov [_L_CTRL],0
.dbline 369
; }
xjmp L90
L89:
.dbline 370
; else if(get_kb1==0xA7)
cmp [_get_kb1],-89
jnz L91
.dbline 371
; {
.dbline 372
; L_ALT = FALSE;
mov [_L_ALT],0
.dbline 373
; }
xjmp L92
L91:
.dbline 374
; else if(get_kb1==0xA8)
cmp [_get_kb1],-88
jnz L93
.dbline 375
; {
.dbline 376
; R_SHIFT = FALSE;
mov [_R_SHIFT],0
.dbline 377
; }
L93:
L92:
L90:
L88:
.dbline 379
;
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 380
; }
xjmp L86
L85:
.dbline 381
; else if(get_kb0==0xA5)//L SHFT start
cmp [_get_kb0],-91
jnz L95
.dbline 382
; {
.dbline 383
; L_SHIFT = TRUE;
mov [_L_SHIFT],1
.dbline 384
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 385
; }//L SHFT end
xjmp L96
L95:
.dbline 386
; else if(get_kb0==0xA6)//L CTRL start
cmp [_get_kb0],-90
jnz L97
.dbline 387
; {
.dbline 388
; L_CTRL = TRUE;
mov [_L_CTRL],1
.dbline 389
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 390
; }//L CTRL end
xjmp L98
L97:
.dbline 391
; else if(get_kb0==0xA7)//L ALT start
cmp [_get_kb0],-89
jnz L99
.dbline 392
; {
.dbline 393
; L_ALT = TRUE;
mov [_L_ALT],1
.dbline 394
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 395
; }//L ALT end
xjmp L100
L99:
.dbline 396
; else if(get_kb0==0xA8)//R SHIFT
cmp [_get_kb0],-88
jnz L101
.dbline 397
; {
.dbline 398
; R_SHIFT = TRUE;
mov [_R_SHIFT],1
.dbline 399
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 400
; }//R SHIFT end
xjmp L102
L101:
.dbline 401
; else if(get_kb0==0xE1)//PAUSE start
cmp [_get_kb0],-31
jnz L103
.dbline 402
; {
.dbline 403
; if(get_kb1==0xA6)
cmp [_get_kb1],-90
jnz L105
.dbline 404
; {
.dbline 405
; report_packet_kb.kb2 = 0x48;
mov [_report_packet_kb+2],72
.dbline 406
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 407
; }
xjmp L104
L105:
.dbline 409
; else
; {
.dbline 410
; kb_report_valid = FALSE;
mov [X+1],0
.dbline 411
; }
.dbline 412
; }//PAUSE end
xjmp L104
L103:
.dbline 413
; else if(get_kb0==0xE0)//get_kb0=0xE0 start
cmp [_get_kb0],-32
jnz L108
.dbline 414
; {
.dbline 415
; if(get_kb1==0xF0)//This is a break CODE of multi-bytes code,need do nothing
cmp [_get_kb1],-16
jnz L110
.dbline 416
; {
.dbline 417
; if(get_kb2==0x1F)
cmp [_get_kb2],31
jnz L112
.dbline 418
; {
.dbline 419
; L_GUI = FALSE;
mov [_L_GUI],0
.dbline 420
; }
xjmp L113
L112:
.dbline 421
; else if(get_kb2==0xA6)
cmp [_get_kb2],-90
jnz L114
.dbline 422
; {
.dbline 423
; R_CTRL = FALSE;
mov [_R_CTRL],0
.dbline 424
; }
xjmp L115
L114:
.dbline 425
; else if(get_kb2==0x27)
cmp [_get_kb2],39
jnz L116
.dbline 426
; {
.dbline 427
; R_GUI = FALSE;
mov [_R_GUI],0
.dbline 428
; }
xjmp L117
L116:
.dbline 429
; else if(get_kb2==0xA7)
cmp [_get_kb2],-89
jnz L118
.dbline 430
; {
.dbline 431
; R_ALT = FALSE;
mov [_R_ALT],0
.dbline 432
; }
xjmp L119
L118:
.dbline 433
; else if(get_kb2==0xA8 && get_kb3==0xE0 && get_kb4==0x63)//numlock is off,press Rshift+delete
cmp [_get_kb2],-88
jnz L120
cmp [_get_kb3],-32
jnz L120
cmp [_get_kb4],99
jnz L120
.dbline 434
; {
.dbline 435
; report_packet_kb.kb2 = 0x4c;
mov [_report_packet_kb+2],76
.dbline 436
; }
xjmp L121
L120:
.dbline 437
; else if(get_kb2==0xA5 && get_kb3==0xE0 && get_kb4==0x63)//numlock is off,press Lshift+delete
cmp [_get_kb2],-91
jnz L123
cmp [_get_kb3],-32
jnz L123
cmp [_get_kb4],99
jnz L123
.dbline 438
; {
.dbline 439
; report_packet_kb.kb2 = 0x4c;
mov [_report_packet_kb+2],76
.dbline 440
; }
L123:
L121:
L119:
L117:
L115:
L113:
.dbline 441
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 442
; }
xjmp L109
L110:
.dbline 443
; else if(get_kb1==0x1F)//L GUI start
cmp [_get_kb1],31
jnz L126
.dbline 444
; {
.dbline 445
; L_GUI = TRUE;
mov [_L_GUI],1
.dbline 446
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 447
; }//L GUI end
xjmp L109
L126:
.dbline 448
; else if(get_kb1==0xA6)//R CTRL start
cmp [_get_kb1],-90
jnz L128
.dbline 449
; {
.dbline 450
; R_CTRL = TRUE;
mov [_R_CTRL],1
.dbline 451
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 452
; }//R CTRL end
xjmp L109
L128:
.dbline 453
; else if(get_kb1==0x27)//R GUI start
cmp [_get_kb1],39
jnz L130
.dbline 454
; {
.dbline 455
; R_GUI = TRUE;
mov [_R_GUI],1
.dbline 456
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 457
; }//R GUI end
xjmp L109
L130:
.dbline 458
; else if(get_kb1==0xA7)//R ALT start
cmp [_get_kb1],-89
jnz L132
.dbline 459
; {
.dbline 460
; R_ALT = TRUE;
mov [_R_ALT],1
.dbline 461
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 462
; }//R ALT end
xjmp L109
L132:
.dbline 464
; //special key start
; else if(get_kb1==0x2F)//APPS start
cmp [_get_kb1],47
jnz L134
.dbline 465
; {
.dbline 466
; report_packet_kb.kb2 = 0x65;
mov [_report_packet_kb+2],101
.dbline 467
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 468
; }//APPS end
xjmp L109
L134:
.dbline 469
; else if(get_kb1==0x38)//KP / start
cmp [_get_kb1],56
jnz L137
.dbline 470
; {
.dbline 471
; report_packet_kb.kb2 = 0x54;
mov [_report_packet_kb+2],84
.dbline 472
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 473
; }//KP / end
xjmp L109
L137:
.dbline 474
; else if(get_kb1==0x28)//KP ENTER start
cmp [_get_kb1],40
jnz L140
.dbline 475
; {
.dbline 476
; report_packet_kb.kb2 = 0x58;
mov [_report_packet_kb+2],88
.dbline 477
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 478
; }//KP / end
xjmp L109
L140:
.dbline 481
;
; //when numlock is off start
; else if(get_kb1==0x55)//PRINT SCREEN start
cmp [_get_kb1],85
jnz L143
.dbline 482
; {
.dbline 483
; report_packet_kb.kb2 = 0x46;
mov [_report_packet_kb+2],70
.dbline 484
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 485
; }//PRINT SCREEN end
xjmp L109
L143:
.dbline 486
; else if(get_kb1==0x62)//INSERT start
cmp [_get_kb1],98
jnz L146
.dbline 487
; {
.dbline 488
; report_packet_kb.kb2 = 0x49;
mov [_report_packet_kb+2],73
.dbline 489
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 490
; }//INSERT end
xjmp L109
L146:
.dbline 491
; else if(get_kb1==0x5F)//HOME start
cmp [_get_kb1],95
jnz L149
.dbline 492
; {
.dbline 493
; report_packet_kb.kb2 = 0x4A;
mov [_report_packet_kb+2],74
.dbline 494
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 495
; }//HOME end
xjmp L109
L149:
.dbline 496
; else if(get_kb1==0x61)//PAGE UP start
cmp [_get_kb1],97
jnz L152
.dbline 497
; {
.dbline 498
; report_packet_kb.kb2 = 0x4B;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?