main.s
来自「实现2个ps/2接口转到1个USB接口功能」· S 代码 · 共 2,163 行 · 第 1/3 页
S
2,163 行
mov [_report_packet_kb+2],75
.dbline 499
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 500
; }//PAGE UP end
xjmp L109
L152:
.dbline 501
; else if(get_kb1==0x63)//DEL start
cmp [_get_kb1],99
jnz L155
.dbline 502
; {
.dbline 503
; report_packet_kb.kb2 = 0x4c;
mov [_report_packet_kb+2],76
.dbline 504
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 505
; }//DEL end
xjmp L109
L155:
.dbline 506
; else if(get_kb1==0x59)//END start
cmp [_get_kb1],89
jnz L158
.dbline 507
; {
.dbline 508
; report_packet_kb.kb2 = 0x4D;
mov [_report_packet_kb+2],77
.dbline 509
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 510
; }//END end
xjmp L109
L158:
.dbline 511
; else if(get_kb1==0x5b)//PAGE DOWN start
cmp [_get_kb1],91
jnz L161
.dbline 512
; {
.dbline 513
; report_packet_kb.kb2 = 0x4e;
mov [_report_packet_kb+2],78
.dbline 514
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 515
; }//PAGE DOWN end
xjmp L109
L161:
.dbline 516
; else if(get_kb1==0x60)//U ARROW start
cmp [_get_kb1],96
jnz L164
.dbline 517
; {
.dbline 518
; report_packet_kb.kb2 = 0x52;
mov [_report_packet_kb+2],82
.dbline 519
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 520
; }//U ARROW end
xjmp L109
L164:
.dbline 521
; else if(get_kb1==0x5C)//L ARROW start
cmp [_get_kb1],92
jnz L167
.dbline 522
; {
.dbline 523
; report_packet_kb.kb2 = 0x50;
mov [_report_packet_kb+2],80
.dbline 524
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 525
; }//L ARROW end
xjmp L109
L167:
.dbline 526
; else if(get_kb1==0x5A)//D ARROW start
cmp [_get_kb1],90
jnz L170
.dbline 527
; {
.dbline 528
; report_packet_kb.kb2 = 0x51;
mov [_report_packet_kb+2],81
.dbline 529
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 530
; }//D ARROW end
xjmp L109
L170:
.dbline 531
; else if(get_kb1==0x5E)//R ARROW start
cmp [_get_kb1],94
jnz L173
.dbline 532
; {
.dbline 533
; report_packet_kb.kb2 = 0x4F;
mov [_report_packet_kb+2],79
.dbline 534
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 535
; }//R ARROW end
xjmp L109
L173:
.dbline 539
; //when numlock is off end
;
; //when numlock is on start
; else if(get_kb1==0xA5 && get_kb2==0xE0)//get_kb1==0xA5 && get_kb2==0xE0 start
cmp [_get_kb1],-91
jnz L176
cmp [_get_kb2],-32
jnz L176
.dbline 540
; {
.dbline 541
; if(get_kb3==0x55)//PRINT SCREEN start
cmp [_get_kb3],85
jnz L178
.dbline 542
; {
.dbline 543
; report_packet_kb.kb2 = 0x46;
mov [_report_packet_kb+2],70
.dbline 544
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 545
; }//PRINT SCREEN end
xjmp L109
L178:
.dbline 546
; else if(get_kb3==0x62)//INSERT start
cmp [_get_kb3],98
jnz L181
.dbline 547
; {
.dbline 548
; report_packet_kb.kb2 = 0x49;
mov [_report_packet_kb+2],73
.dbline 549
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 550
; }//INSERT end
xjmp L109
L181:
.dbline 551
; else if(get_kb3==0x5F)//HOME start
cmp [_get_kb3],95
jnz L184
.dbline 552
; {
.dbline 553
; report_packet_kb.kb2 = 0x4A;
mov [_report_packet_kb+2],74
.dbline 554
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 555
; }//HOME end
xjmp L109
L184:
.dbline 556
; else if(get_kb3==0x61)//PAGE UP start
cmp [_get_kb3],97
jnz L187
.dbline 557
; {
.dbline 558
; report_packet_kb.kb2 = 0x4B;
mov [_report_packet_kb+2],75
.dbline 559
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 560
; }//PAGE UP end
xjmp L109
L187:
.dbline 561
; else if(get_kb3==0x63)//DEL start
cmp [_get_kb3],99
jnz L190
.dbline 562
; {
.dbline 563
; report_packet_kb.kb2 = 0x4c;
mov [_report_packet_kb+2],76
.dbline 564
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 565
; }//DEL end
xjmp L109
L190:
.dbline 566
; else if(get_kb3==0x59)//END start
cmp [_get_kb3],89
jnz L193
.dbline 567
; {
.dbline 568
; report_packet_kb.kb2 = 0x4D;
mov [_report_packet_kb+2],77
.dbline 569
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 570
; }//END end
xjmp L109
L193:
.dbline 571
; else if(get_kb3==0x5b)//PAGE DOWN start
cmp [_get_kb3],91
jnz L196
.dbline 572
; {
.dbline 573
; report_packet_kb.kb2 = 0x4e;
mov [_report_packet_kb+2],78
.dbline 574
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 575
; }//PAGE DOWN end
xjmp L109
L196:
.dbline 576
; else if(get_kb3==0x60)//U ARROW start
cmp [_get_kb3],96
jnz L199
.dbline 577
; {
.dbline 578
; report_packet_kb.kb2 = 0x52;
mov [_report_packet_kb+2],82
.dbline 579
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 580
; }//U ARROW end
xjmp L109
L199:
.dbline 581
; else if(get_kb3==0x5C)//L ARROW start
cmp [_get_kb3],92
jnz L202
.dbline 582
; {
.dbline 583
; report_packet_kb.kb2 = 0x50;
mov [_report_packet_kb+2],80
.dbline 584
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 585
; }//L ARROW end
xjmp L109
L202:
.dbline 586
; else if(get_kb3==0x5A)//D ARROW start
cmp [_get_kb3],90
jnz L205
.dbline 587
; {
.dbline 588
; report_packet_kb.kb2 = 0x51;
mov [_report_packet_kb+2],81
.dbline 589
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 590
; }//D ARROW end
xjmp L109
L205:
.dbline 591
; else if(get_kb3==0x5E)//R ARROW start
cmp [_get_kb3],94
jnz L208
.dbline 592
; {
.dbline 593
; report_packet_kb.kb2 = 0x4F;
mov [_report_packet_kb+2],79
.dbline 594
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 595
; }//R ARROW end
xjmp L109
L208:
.dbline 597
; else
; {
.dbline 598
; kb_report_valid = FALSE;
mov [X+1],0
.dbline 599
; }
.dbline 600
; }//get_kb1==0xA5 && get_kb2==0xE0 end
xjmp L109
L176:
.dbline 604
; //when numlock is on end
;
; else
; {
.dbline 605
; kb_report_valid = FALSE;
mov [X+1],0
.dbline 606
; }
.dbline 608
; //special key end
; }//get_kb0==0xE0 end
xjmp L109
L108:
.dbline 609
; else if(get_kb0==0x00)//get_kb0==0x00 start
cmp [_get_kb0],0
jnz L211
.dbline 610
; {
.dbline 611
; kb_report_valid = FALSE; //in order to reduce CPLD's error
mov [X+1],0
.dbline 612
; }//get_kb0==0x00 end
xjmp L212
L211:
.dbline 614
; else//another case,just send the received data
; {
.dbline 615
; report_packet_kb.kb1 = 0x00;
mov [_report_packet_kb+1],0
.dbline 616
; report_packet_kb.kb2 = get_kb0;
mov [_report_packet_kb+2],[_get_kb0]
.dbline 617
; report_packet_kb.kb3 = get_kb1;
mov [_report_packet_kb+3],[_get_kb1]
.dbline 618
; report_packet_kb.kb4 = get_kb2;
mov [_report_packet_kb+4],[_get_kb2]
.dbline 619
; report_packet_kb.kb5 = get_kb3;
mov [_report_packet_kb+5],[_get_kb3]
.dbline 620
; report_packet_kb.kb6 = get_kb4;
mov [_report_packet_kb+6],[_get_kb4]
.dbline 621
; report_packet_kb.kb7 = get_kb5;
mov [_report_packet_kb+7],[_get_kb5]
.dbline 622
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 623
; }
L212:
L109:
L104:
L102:
L100:
L98:
L96:
L86:
.dbline 625
;
; if(R_GUI==TRUE)
cmp [_R_GUI],1
jnz L220
.dbline 626
; {
.dbline 627
; form_kb0=form_kb0|0x80;
mov A,[X+0]
or A,-128
mov [X+0],A
.dbline 628
; }
L220:
.dbline 630
;
; if(R_ALT==TRUE)
cmp [_R_ALT],1
jnz L222
.dbline 631
; {
.dbline 632
; form_kb0=form_kb0|0x40;
mov A,[X+0]
or A,64
mov [X+0],A
.dbline 633
; }
L222:
.dbline 635
;
; if(R_SHIFT==TRUE)
cmp [_R_SHIFT],1
jnz L224
.dbline 636
; {
.dbline 637
; form_kb0=form_kb0|0x20;
mov A,[X+0]
or A,32
mov [X+0],A
.dbline 638
; }
L224:
.dbline 640
;
; if(R_CTRL==TRUE)
cmp [_R_CTRL],1
jnz L226
.dbline 641
; {
.dbline 642
; form_kb0=form_kb0|0x10;
mov A,[X+0]
or A,16
mov [X+0],A
.dbline 643
; }
L226:
.dbline 645
;
; if(L_GUI==TRUE)
cmp [_L_GUI],1
jnz L228
.dbline 646
; {
.dbline 647
; form_kb0=form_kb0|0x08;
mov A,[X+0]
or A,8
mov [X+0],A
.dbline 648
; }
L228:
.dbline 650
;
; if(L_ALT==TRUE)
cmp [_L_ALT],1
jnz L230
.dbline 651
; {
.dbline 652
; form_kb0=form_kb0|0x04;
mov A,[X+0]
or A,4
mov [X+0],A
.dbline 653
; }
L230:
.dbline 655
;
; if(L_SHIFT==TRUE)
cmp [_L_SHIFT],1
jnz L232
.dbline 656
; {
.dbline 657
; form_kb0=form_kb0|0x02;
mov A,[X+0]
or A,2
mov [X+0],A
.dbline 658
; }
L232:
.dbline 660
;
; if(L_CTRL==TRUE)
cmp [_L_CTRL],1
jnz L234
.dbline 661
; {
.dbline 662
; form_kb0=form_kb0|0x01;
mov A,[X+0]
or A,1
mov [X+0],A
.dbline 663
; }
L234:
.dbline 665
;
; report_packet_kb.kb0 = form_kb0;
mov A,[X+0]
mov [_report_packet_kb],A
.dbline 667
; // decide which code should be send to pc end!
; SET_INT0_NEW();
push X
xcall _SET_INT0_NEW
pop X
.dbline 668
; }
xjmp L77
L76:
.dbline 670
; else
; {
.dbline 671
; report_packet_kb.kb0 = 0x00;
mov [_report_packet_kb],0
.dbline 672
; report_packet_kb.kb1 = 0x00;
mov [_report_packet_kb+1],0
.dbline 673
; report_packet_kb.kb2 = 0x00;
mov [_report_packet_kb+2],0
.dbline 674
; report_packet_kb.kb3 = 0x00;
mov [_report_packet_kb+3],0
.dbline 675
; report_packet_kb.kb4 = 0x00;
mov [_report_packet_kb+4],0
.dbline 676
; report_packet_kb.kb5 = 0x00;
mov [_report_packet_kb+5],0
.dbline 677
; report_packet_kb.kb6 = 0x00;
mov [_report_packet_kb+6],0
.dbline 678
; report_packet_kb.kb7 = 0x00;
mov [_report_packet_kb+7],0
.dbline 679
; kb_report_valid = FALSE;
mov [X+1],0
.dbline 681
;
; if(protect_counter>=0x02ff)
mov A,[_protect_counter+1]
sub A,-1
mov A,[_protect_counter]
sbb A,2
jc L243
X19:
.dbline 682
; {
.dbline 684
; // //debug_glimpse();//just for debug!!!!
; shouldprotect = FALSE;
mov [_shouldprotect],0
.dbline 685
; protect_counter=0x0000;
mov [_protect_counter+1],0
mov [_protect_counter],0
.dbline 686
; R_GUI = FALSE;
mov [_R_GUI],0
.dbline 687
; R_ALT = FALSE;
mov [_R_ALT],0
.dbline 688
; R_SHIFT = FALSE;
mov [_R_SHIFT],0
.dbline 689
; R_CTRL = FALSE;
mov [_R_CTRL],0
.dbline 690
; L_GUI = FALSE;
mov [_L_GUI],0
.dbline 691
; L_ALT = FALSE;
mov [_L_ALT],0
.dbline 692
; L_SHIFT = FALSE;
mov [_L_SHIFT],0
.dbline 693
; L_CTRL = FALSE;
mov [_L_CTRL],0
.dbline 694
; kb_report_valid = TRUE;
mov [X+1],1
.dbline 695
; }
L243:
.dbline 696
; }
L77:
.dbline 700
;
; // KEYBOARD
;
; return ( kb_report_valid );
mov A,[X+1]
.dbline -2
L73:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbsym l kb_report_valid 1 c
.dbsym l form_kb0 0 c
.dbend
.area bss(ram, con, rel)
.dbfile ./main.c
_L_CTRL::
.blkb 1
.dbsym e L_CTRL _L_CTRL c
_L_SHIFT::
.blkb 1
.dbsym e L_SHIFT _L_SHIFT c
_L_ALT::
.blkb 1
.dbsym e L_ALT _L_ALT c
_L_GUI::
.blkb 1
.dbsym e L_GUI _L_GUI c
_R_CTRL::
.blkb 1
.dbsym e R_CTRL _R_CTRL c
_R_SHIFT::
.blkb 1
.dbsym e R_SHIFT _R_SHIFT c
_R_ALT::
.blkb 1
.dbsym e R_ALT _R_ALT c
_R_GUI::
.blkb 1
.dbsym e R_GUI _R_GUI c
_get_kb7::
.blkb 1
.dbsym e get_kb7 _get_kb7 c
_get_kb6::
.blkb 1
.dbsym e get_kb6 _get_kb6 c
_get_kb5::
.blkb 1
.dbsym e get_kb5 _get_kb5 c
_get_kb4::
.blkb 1
.dbsym e get_kb4 _get_kb4 c
_get_kb3::
.blkb 1
.dbsym e get_kb3 _get_kb3 c
_get_kb2::
.blkb 1
.dbsym e get_kb2 _get_kb2 c
_get_kb1::
.blkb 1
.dbsym e get_kb1 _get_kb1 c
_get_kb0::
.blkb 1
.dbsym e get_kb0 _get_kb0 c
_kb_timer::
.blkb 1
.dbsym e kb_timer _kb_timer C
_shouldstartkb::
.blkb 1
.dbsym e shouldstartkb _shouldstartkb c
_reg_int0_new::
.blkb 1
.dbsym e reg_int0_new _reg_int0_new C
_get_int0_new::
.blkb 1
.dbsym e get_int0_new _get_int0_new C
_get_ms4::
.blkb 1
.dbsym e get_ms4 _get_ms4 c
_get_ms3::
.blkb 1
.dbsym e get_ms3 _get_ms3 c
_get_ms2::
.blkb 1
.dbsym e get_ms2 _get_ms2 c
_get_ms1::
.blkb 1
.dbsym e get_ms1 _get_ms1 c
_get_ms0::
.blkb 1
.dbsym e get_ms0 _get_ms0 c
_ms_timer::
.blkb 1
.dbsym e ms_timer _ms_timer C
_shouldstartms::
.blkb 1
.dbsym e shouldstartms _shouldstartms c
_reg_int1_new::
.blkb 1
.dbsym e reg_int1_new _reg_int1_new C
_get_int1_new::
.blkb 1
.dbsym e get_int1_new _get_int1_new C
_protect_counter::
.blkb 2
.dbsym e protect_counter _protect_counter s
_shouldprotect::
.blkb 1
.dbsym e shouldprotect _shouldprotect c
_shouldSuspend::
.blkb 1
.dbsym e shouldSuspend _shouldSuspend c
_report_packet_kb::
.blkb 8
.dbsym e report_packet_kb _report_packet_kb X
_report_packet::
.blkb 4
.dbsym e report_packet _report_packet X
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?