⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joystick.lis

📁 用ST92163开发的鼠标
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 234:../src/joystick.c **** 	}
 235:../src/joystick.c **** }
 580 01cb 46       		ret 
 581              		.endproc
 582              	.Lscope6:
 584              	
 585              		.globl EP6TxCount
 586              		.desc	EP6TxCount, 16bit register
 587              	EP6TxCount=	50
 589              	
 590              		.globl ep6_int
 591              	
 592              		.desc	ep6_int, near
 593              		.desc	ep6_int, interrupt
 594              		.proc	ep6_int
 595              	ep6_int:
 236:../src/joystick.c **** 
 237:../src/joystick.c **** #pragma INTERRUPT ep6_int
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 13


 238:../src/joystick.c **** void ep6_int( void)
 239:../src/joystick.c **** {
 597 01cc 66EA     		push 	R234
 598 01ce 74D6     		pushw	rr6
 599 01d0 74D4     		pushw	rr4
 600 01d2 74D2     		pushw	rr2
 601 01d4 74D0     		pushw	rr0
 602 01d6 FE       		sdm
 603              	.LMM101:
 240:../src/joystick.c **** 	spp( 4) ;
 605              	; #APP
 606 01d7 C712     		spp #4
 607              	; #NO_APP
 608              	.LMM102:
 241:../src/joystick.c **** 
 242:../src/joystick.c **** 	if( ENDPR6_A == 0xEE)	/* Correct SETUP received */
 610 01d9 95FCEE   		cp   	@ENDPR6_A,#238
 611 01dc EB74     		jxnz 	.L42
 612              	.LMM103:
 243:../src/joystick.c **** 	{
 244:../src/joystick.c **** 		ENDPR6_B |= 0x80 ;	/* By default we expect STATUS_OUT */
 614 01de 05FD80   		or 	@ENDPR6_B,#128
 615              	.LMM104:
 245:../src/joystick.c **** 		CurDevice = 3 ;
 617 01e1 2FF10300 		ld  	dpr:pof(@CurDevice),#3
 617      00
 618              	.LMM105:
 246:../src/joystick.c **** 		CurRxBuffer = (BYTE *) EP6RxAddr ;
 620 01e6 EF34D2   		ldw  	rr2,@EP6RxAddr
 621 01e9 E2F30000 		ldw  	dpr:pof(@CurRxBuffer),rr2
 622              	.LMM106:
 247:../src/joystick.c **** 		fsm_state[ 3] = do_setup() ;
 624 01ed D20000   		call 	@do_setup   
 625 01f0 C5F10003 		ld  	dpr:pof(@fsm_state+3),r1
 626              	.LMM107:
 248:../src/joystick.c **** 		switch( fsm_state[ 3])
 628 01f4 C4F10003 		ld 	r1,dpr:pof(@fsm_state+3)
 629 01f8 0C00     		ld 	r0,#0
 630 01fa CFD0     		decw 	rr0
 631 01fc 97D10004 		cpw  	rr0,#4
 632 0200 BB4C     		jxugt	.L50
 633 0202 4E00     		addw 	rr0,rr0
 634 0204 EE       		spm
 635 0205 86F0020D 		ldw  	rr0,sof(.L51)(rr0)
 635      D0
 636 020a FE       		sdm
 637 020b D4D0     		jp   	(rr0)
 638              	.L51:
 639              	$start_switch_table_51:
 640 020d 0217     		.word sof(.L44)
 641 020f 0220     		.word sof(.L45)
 642 0211 024E     		.word sof(.L50)
 643 0213 0244     		.word sof(.L49)
 644 0215 0244     		.word sof(.L49)
 645              	$end_switch_table_51:
 646              	.L44:
 647              	.LMM108:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 14


 249:../src/joystick.c **** 		{
 250:../src/joystick.c **** 			case TX_STALL:
 251:../src/joystick.c **** 				ENDPR6_A &= ~0x30 ;	/* Clear STAT bits */
 649 0217 15FCCF   		and 	@ENDPR6_A,#207
 650              	.LMM109:
 252:../src/joystick.c **** 				ENDPR6_A |= 0x10 ;		/* Tx STAT_STALL */
 652 021a 05FC10   		or 	@ENDPR6_A,#16
 653              	.LMM110:
 253:../src/joystick.c **** 				break ;
 655 021d 8D02D6   		jxt  	.L52
 656              	.L45:
 657              	.LMM111:
 254:../src/joystick.c **** 			case TX_N:
 255:../src/joystick.c **** 				EP6TxAddr = data_ptr ;
 659 0220 E2F20000 		ldw  	rr2,dpr:pof(@data_ptr)
 660 0224 EFD230   		ldw  	@EP6TxAddr,rr2
 661              	.LMM112:
 256:../src/joystick.c **** 				if( data_size[ 3] >= MAX_PACKET_SIZE)
 663 0227 2F910700 		cp   	dpr:pof(@data_size+3),#7
 663      03
 664 022c 3B06     		jxule	.L46
 665              	.LMM113:
 257:../src/joystick.c **** 				{
 258:../src/joystick.c **** 					EP6TxCount = MAX_PACKET_SIZE ;
 667 022e BF320008 		ldw  	@EP6TxCount,#8
 668              	.LMM114:
 259:../src/joystick.c **** 				}
 670 0232 8B14     		jxt  	.L69
 671              	.L46:
 672              	.LMM115:
 260:../src/joystick.c **** 				else
 261:../src/joystick.c **** 				{
 262:../src/joystick.c **** 					EP6TxCount = data_size[ 3] ;
 674 0234 C4F10003 		ld   	r1,dpr:pof(@data_size+3)
 675 0238 0C00     		ld   	r0,#0
 676 023a EFD032   		ldw  	@EP6TxCount,rr0
 677              	.LMM116:
 263:../src/joystick.c **** 					fsm_state[ 3] = TX_LAST ;
 679 023d 2FF10300 		ld  	dpr:pof(@fsm_state+3),#3
 679      03
 680              	.LMM117:
 264:../src/joystick.c **** 				}
 265:../src/joystick.c **** 		
 266:../src/joystick.c **** 				ENDPR6_A |= 0x30 ;	/* TX STAT_VALID */
 267:../src/joystick.c **** 				break ;
 682 0242 8B04     		jxt  	.L69
 683              	.L49:
 684              	.LMM118:
 268:../src/joystick.c **** 			case TX_ACK_ADDR:
 269:../src/joystick.c **** 			case TX_0:
 270:../src/joystick.c **** 				EP6TxCount = 0 ;					/* Enable the transmission */
 686 0244 BF320000 		ldw  	@EP6TxCount,#0
 687              	.LMM119:
 271:../src/joystick.c **** 				ENDPR6_A |= 0x30 ;
 689              	.L69:
 690 0248 05FC30   		or 	@ENDPR6_A,#48
 691              	.LMM120:
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 15


 272:../src/joystick.c **** 				break ;
 693 024b 8D02D6   		jxt  	.L52
 694              	.L50:
 695              	.LMM121:
 273:../src/joystick.c **** 			default:
 274:../src/joystick.c **** 				nop() ;
 697              	; #APP
 698 024e FF       		nop
 699              	; #NO_APP
 700              	.LMM122:
 275:../src/joystick.c **** 		}
 276:../src/joystick.c **** 	}
 702 024f 8D02D6   		jxt  	.L52
 703              	.L42:
 704              	.LMM123:
 277:../src/joystick.c **** 	else if( (ENDPR6_A & 0xBF) == 0xAA)	/* IN (don't care toggle) */
 706 0252 08FC     		ld  	r0,@ENDPR6_A
 707 0254 1FC0     		bres	r0.6
 708 0256 95D0AA   		cp   	r0,#170
 709 0259 EB55     		jxnz 	.L53
 710              	.LMM124:
 278:../src/joystick.c **** 	{
 279:../src/joystick.c **** 		switch( fsm_state[ 3])
 712 025b C4F10003 		ld 	r1,dpr:pof(@fsm_state+3)
 713 025f 0C00     		ld 	r0,#0
 714 0261 47D1FFFE 		addw 	rr0,#-2
 715 0265 97D10003 		cpw  	rr0,#3
 716 0269 BB6B     		jxugt	.L52
 717 026b 4E00     		addw 	rr0,rr0
 718 026d EE       		spm
 719 026e 86F00276 		ldw  	rr0,sof(.L60)(rr0)
 719      D0
 720 0273 FE       		sdm
 721 0274 D4D0     		jp   	(rr0)
 722              	.L60:
 723              	$start_switch_table_60:
 724 0276 027E     		.word sof(.L55)
 725 0278 02D6     		.word sof(.L52)
 726 027a 02D1     		.word sof(.L66)
 727 027c 02A2     		.word sof(.L58)
 728              	$end_switch_table_60:
 729              	.L55:
 730              	.LMM125:
 280:../src/joystick.c **** 		{
 281:../src/joystick.c **** 			case TX_N:	/* after IN( n) => send next */
 282:../src/joystick.c **** 				EP6TxAddr += EP6TxCount ;
 732 027e EF32D0   		ldw  	rr0,@EP6TxCount
 733 0281 47D030   		addw 	@EP6TxAddr,rr0
 734              	.LMM126:
 283:../src/joystick.c **** 				data_size[ 3] -= EP6TxCount ;
 736 0284 EF32D0   		ldw  	rr0,@EP6TxCount
 737 0287 C5510003 		sub  	dpr:pof(@data_size+3),r1
 738              	.LMM127:
 284:../src/joystick.c **** 				if( data_size[ 3] < MAX_PACKET_SIZE)
 740 028b 2F910700 		cp   	dpr:pof(@data_size+3),#7
 740      03
 741 0290 BBB6     		jxugt	.L69
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 16


 742              	.LMM128:
 285:../src/joystick.c **** 				{
 286:../src/joystick.c **** 					EP6TxCount = data_size[ 3] ;
 744 0292 C4F10003 		ld   	r1,dpr:pof(@data_size+3)
 745 0296 0C00     		ld   	r0,#0
 746 0298 EFD032   		ldw  	@EP6TxCount,rr0
 747              	.LMM129:
 287:../src/joystick.c **** 					fsm_state[ 3] = TX_LAST ;
 749 029b 2FF10300 		ld  	dpr:pof(@fsm_state+3),#3
 749      03
 750              	.LMM130:
 288:../src/joystick.c **** 				}
 289:../src/joystick.c **** 
 290:../src/joystick.c **** 				ENDPR6_A |= 0x30 ;	/* Tx STAT_VALID */				
 291:../src/joystick.c **** 				break ;
 752 02a0 8BA6     		jxt  	.L69
 753              	.L58:
 754              	.LMM131:
 292:../src/joystick.c **** 			case TX_LAST:	/* after a IN( 0) => expect STATUS_OUT */
 293:../src/joystick.c **** 				break ;
 294:../src/joystick.c **** 			case TX_ACK_ADDR:
 295:../src/joystick.c **** 				spp( USB_PG) ;
 756              	; #APP
 757 02a2 C73E     		spp #15
 758              	; #NO_APP
 759              	.LMM132:
 296:../src/joystick.c **** 				DADDR3 = 0x80 | address[ 3] ;
 761 02a4 C4F30003 		ld  	r3,dpr:pof(@address+3)
 762 02a8 0FE3     		bset 	r3.7
 763 02aa 39F3     		ld  	@DADDR3,r3
 764              	.LMM133:
 297:../src/joystick.c **** 				spp( 4) ;
 766              	; #APP
 767 02ac C712     		spp #4
 768              	; #NO_APP
 769              	.LMM134:
 298:../src/joystick.c **** 				/* Fall Through */
 299:../src/joystick.c **** 			case TX_0:	/* STATUS_IN */
 300:../src/joystick.c **** 				fsm_state[ 3] = UNDEFINED ;
 301:../src/joystick.c **** 				break ;
 302:../src/joystick.c **** 		}
 303:../src/joystick.c **** 	}
 771 02ae 8B21     		jxt  	.L66
 772              	.L53:
 773              	.LMM135:
 304:../src/joystick.c **** 	else if( (ENDPR6_A & 0x8F) == 0x82)	/* OUT (don't care Tx STAT */
 775 02b0 08FC     		ld  	r0,@ENDPR6_A
 776 02b2 15D08F   		and 	r0,#143
 777 02b5 95D082   		cp   	r0,#130
 778 02b8 EB1C     		jxnz 	.L52
 779              	.LMM136:
 305:../src/joystick.c **** 	{
 306:../src/joystick.c **** 		switch( fsm_state[ 3])
 781 02ba C4F10003 		ld   	r1,dpr:pof(@fsm_state+3)
 782 02be 0C00     		ld   	r0,#0
 783 02c0 97D10002 		cpw  	rr0,#2
 784 02c4 6B08     		jxz  	.L65
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 17


 785 02c6 97D10003 		cpw  	rr0,#3
 786 02ca 6B05     		jxz  	.L66
 787 02cc 8B08     		jxt  	.L52
 788              	.L65:
 789              	.LMM137:
 307:../src/joystick.c **** 		{
 308:../src/joystick.c **** 			case TX_N:	/* HOST stops transmission */
 309:../src/joystick.c **** 				ENDPR6_A &= ~0x30 ;	/* Tx STAT_DISABLE */
 791 02ce 15FCCF   		and 	@ENDPR6_A,#207
 792              	.L66:
 793              	.LMM138:
 310:../src/joystick.c **** 				/* Fall Through */
 311:../src/joystick.c **** 			case TX_LAST:	/* Status_out following transmission */
 312:../src/joystick.c **** 				fsm_state[ 3] = UNDEFINED ;				
 795 02d1 2FF10000 		ld  	dpr:pof(@fsm_state+3),#0
 795      03
 796              	.L52:
 797              	.LMM139:
 313:../src/joystick.c **** 		}
 314:../src/joystick.c **** 	}
 315:../src/joystick.c **** 
 316:../src/joystick.c **** 	EP6RxCount = MAX_PACKET_SIZE ;
 799 02d6 BF360008 		ldw  	@EP6RxCount,#8
 800              	.LMM140:
 317:../src/joystick.c **** 	ENDPR6_B |= 0x30 ; /* Rx STAT_VALID */
 802 02da 05FD30   		or 	@ENDPR6_B,#48
 803              	.LMM141:
 318:../src/joystick.c **** 	ENDPR6_A &= ~0x80 ;	/* Reset CTR */		
 805 02dd 15FC7F   		and 	@ENDPR6_A,#127
 806              	.LMM142:
 319:../src/joystick.c **** }
 808 02e0 75D0     		popw 	rr0
 809 02e2 75D2     		popw 	rr2
 810 02e4 75D4     		popw 	rr4
 811 02e6 75D6     		popw 	rr6
 812 02e8 76EA     		pop  	R234
 813 02ea D3       		iret
 814              		.endproc
 815              	.Lscope7:
 818              	
 819              		.globl ep7_int
 820              	
 821              		.desc	ep7_int, near
 822              		.desc	ep7_int, interrupt
 823              		.proc	ep7_int
 824              	ep7_int:
 320:../src/joystick.c **** 
 321:../src/joystick.c **** #pragma INTERRUPT ep7_int
 322:../src/joystick.c **** void ep7_int( void)
 323:../src/joystick.c **** {
 826 02eb 66EA     		push 	R234
 827 02ed FE       		sdm
 828              	.LMM144:
 324:../src/joystick.c **** 	spp( 4) ;
 830              	; #APP
 831 02ee C712     		spp #4
 832              	; #NO_APP
GAS LISTING C:\DOCUME~1\REF\LOCALS~1\Temp\cc001908.s 			page 18


 833              	.LMM145:
 325:../src/joystick.c **** 	ENDPR7_A &= ~0x80 ;	/* Reset CTR bit */
 835 02f0 15FE7F   		and 	@ENDPR7_A,#127
 836              	.LMM146:
 326:../src/joystick.c **** }
 838 02f3 76EA     		pop  	R234
 839 02f5 D3       		iret
 840              		.endproc
 841              	.Lscope8:
 844              	
 845              		.section .bss
 846              	
 847              		.desc	x, near
 848              		.comm	x,1,1
 850              	
 851              		.desc	y, near
 852              		.comm	y,1,1
 854              		.lcomm 	xrange,2
 856              		.lcomm 	yrange,2
 858              	
 859              		.desc	j_buttons, near
 860              		.comm	j_buttons,1,1
 862              	
 863              		.desc	Joy_Buffer, near
 864              		.comm	Joy_Buffer,3,1
 865              		.section .text
 867              	.Letext:
 868              	
 869              		.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -