📄 joystick.lis
字号:
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 + -