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 + -
显示快捷键?