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