📄 gamepad_v0.89.dt
字号:
;=========================================
; USB 8 KEY GAMEPAD
; MODIFY BY HOWARD 08/08/2002
; MODIFY BY NEKO 06/05/2003
;=========================================
;===============================================================================
; PROGRAM REGISTERS
;===============================================================================
R0 == 0X00
TCC == 0X01
PC == 0X02
STATUS == 0X03
RSR == 0X04
PORT5 == 0X05
PORT6 == 0X06
PORT7 == 0X07
R8 == 0X08
R9 == 0X09
RA == 0X0A
RB == 0X0B
RC == 0X0C
RD == 0X0D
RE == 0X0E
RF == 0X0F
;=================================================================================
; USB REGISTERS ASSIGN
;=================================================================================
TRANSFER == 0X10; [0]CMD REPORT DATA FINISH(0) OR NOT(1) [1]DEVICE CONFIG REPORT OK(1) OR NOT(0)
A_TEMP == 0X11
STATUS_TEMP == 0X12
RSR_TEMP == 0X13
PACK_MAX == 0X14
INCRE == 0X15
DATA_MAX == 0X16
PC_WANT == 0X17
PORT6_STATE == 0X18
PORT6_TEMP == 0X19
PORT7_STATE == 0X1A
PORT7_TEMP == 0X1B
X_DATA == 0X1C
Y_DATA == 0X1D
BTM_DATA == 0X1E
CMD_SELECT == 0X1F; EP0 CMD SELECTOR
BTM_DATA2 == 0X20
REP_DATA == 0X21; TURBO SET REGISTER
REP_DATA2 == 0X22; TURBO SET REGISTER2
CHECKPOINT == 0X23; [0]TURBO SET [1]TURBO CLR
TMP_DATA == 0X24; LAST KEY STATUS
TMP_DATA2 == 0X25; LAST KEY STATUS2
TEMP == 0X26
TEMP1 == 0X27
TCTEMP == 0X28; TURBO REPORT CHECK TEMP
BYTE0 == 0X38
BYTE1 == 0X39
BYTE2 == 0X3A
BYTE3 == 0X3B
BYTE4 == 0X3C
BYTE5 == 0X3D
BYTE6 == 0X3E
BYTE7 == 0X3F
;========================================================================
; PROGRAM START
;========================================================================
ORG 0X00
JMP INITIAL
ORG 0X0A
DISI
MOV A_TEMP,A ;SAVE A
SWAP A_TEMP
SWAPA RSR ;SAVE RSR(R4)
MOV RSR_TEMP,A
SWAPA STATUS ;SAVE STATUS(R3)
MOV STATUS_TEMP,A
CLR RSR
JMP INT_STATE
;============================================================
; DESCRIPTORS
;============================================================
DEVICE_TABLE:
;LIST:
ADD PC,A
RETL @0X12;0 START OF DEVICE DESCRIPTOR
RETL @0X01;1
RETL @0X00;2
RETL @0X01;3
RETL @0X00;4
RETL @0X00;5
RETL @0X00;6
RETL @0X08;7
;TRANS == 1
RETL @0X03;8 Vendor ID(assigned by USB)
RETL @0X06;9
RETL @0X75;A Product ID 0x0001 (assigned by manufacturer)
RETL @0X68;B
RETL @0X00;C Device release number (assigned by manufacturer)
RETL @0X01;D
RETL @0X00;E Index of String descriptor describing manufacturer
RETL @0X22;F Index of string descriptor describing product
;TRANS == 2
RETL @0X00;10 Index of String descriptor desribing the device's serial number
RETL @0X01;11 END OF DEVICE DESCRIPTOR
;TRANS == 3
CONFIG_TABLE:
TBL
;CONFIGURATION DESCRIPTOR
RETL @0X09;12 START OF CONFIG
RETL @0X02;13
RETL @0X22;14
RETL @0X00;15
RETL @0X01;16
RETL @0X01;17
RETL @0X00;18
RETL @0X80;19
;TRANS ==1
RETL @0X32;1A
RETL @0X09;1B START OF INTERFACE
RETL @0X04;1C
RETL @0X00;1D
RETL @0X00;1E
RETL @0X01;1F
RETL @0X03;20
RETL @0X00;21
;TRANS ==2
RETL @0X00;22
RETL @0X00;23
RETL @0X09;24 START OF HID
RETL @0X21;25
RETL @0X00;26
RETL @0X01;27
RETL @0X00;28
RETL @0X01;29
;TRANS ==3
RETL @0X22;2A
RETL @0X39;2B
RETL @0X00;2C
RETL @0X07;2D START OF ENDPOINT
RETL @0X05;2E
RETL @0X81;2F
RETL @0X03;30
RETL @0X08;31
;TRANS ==4
RETL @0X00;32
RETL @0X0A;33
;TRANS ==5 INCRE == 12
HID_TABLE:
TBL
;REPORT DESCRIPT
RETL @0X05;34 INCRE == 34 DATA_MAX == 39
RETL @0X01;35
RETL @0X09;36
RETL @0X05;37
RETL @0XA1;38
RETL @0X01;39
RETL @0X09;3A
RETL @0X01;3B
;8BYTES--TRANS==1
RETL @0XA1;3C
RETL @0X00;3D
RETL @0X09;3E
RETL @0X30;3F
RETL @0X09;40
RETL @0X31;41
RETL @0X15;42
RETL @0X00;43
;16BYTES--TRANS==2
RETL @0X26;44
RETL @0XFF;45
RETL @0X00;46
RETL @0X35;47
RETL @0X00;48
RETL @0X46;49
RETL @0XFF;4A
RETL @0X00;4B
;24BYTES--TRANS==3
RETL @0X66;4C
RETL @0X00;4D
RETL @0X00;4E
RETL @0X95;4F
RETL @0X02;50
RETL @0X75;51
RETL @0X08;52
RETL @0X81;53
;32BYTES--4
RETL @0X02;54
RETL @0XC0;55
RETL @0X05;56
RETL @0X09;57
RETL @0X19;58
RETL @0X01;59
RETL @0X29;5A
RETL @0X0A;5B 10KEY
;40BYTES--5
RETL @0X15;5C
RETL @0X00;5D
RETL @0X25;5E
RETL @0X01;5F
RETL @0X95;60
RETL @0X0A;61 10KEY
RETL @0X75;62
RETL @0X01;63
;48BYTES--6
RETL @0X81;64
RETL @0X02;65
RETL @0X95;
RETL @0X01;
RETL @0X75;
RETL @0X06;
RETL @0X81;
RETL @0X01;
;56bytes--7
RETL @0XC0;66 End of Report Descriptor
/*
RETL @0X95;67
RETL @0X01;68
RETL @0X81;69
RETL @0X06;6A
RETL @0X09;6B
;56BYTES--7
RETL @0X3C;6C
RETL @0X15;6D
RETL @0X00;6E
RETL @0X25;6F
RETL @0X01;70
RETL @0X75;71
RETL @0X01;72
RETL @0X95;73
;64BYTES--8
RETL @0X01;74
RETL @0XB1;75
RETL @0X22;76
RETL @0X95;77
RETL @0X07;78
RETL @0XB1;79
RETL @0X01;7A
RETL @0XC0;7B END OF REPORT DESCRIPTOR
;72BYTES--9
*/
STRING0T:
TBL
RETL @0X04;7C STRING DESCRIPTOR OF LANGUAGES
RETL @0X03;7D
RETL @0X09;7E
RETL @0X04;7F END OF LANGUAGES
;TRANS == 1 INCRE == 7C DATA_MAX == 4
STRING1T:
TBL
RETL @0X4E;80 STRING DESCRIPTOR OF MANUFACTURE
RETL @0X03;81 NEKO Microelectronics Corporation
RETL @0X4E;82 N
RETL @0X00;83
RETL @0X45;84 E
RETL @0X00;85
RETL @0X4B;86 K
RETL @0X00;87
;TRANS == 1
RETL @0X4F;88 O
RETL @0X00;89
RETL @0X20;8A SPACE
RETL @0X00;8B
RETL @0X4D;8C M
RETL @0X00;8D
RETL @0X69;8E i
RETL @0X00;8F
;TRANS == 2
RETL @0X63;90 c
RETL @0X00;91
RETL @0X72;92 r
RETL @0X00;93
RETL @0X6F;94 o
RETL @0X00;95
RETL @0X65;96 e
RETL @0X00;97
;TRANS == 3
RETL @0X6C;98 l
RETL @0X00;99
RETL @0X65;9A e
RETL @0X00;9B
RETL @0X63;9C c
RETL @0X00;9D
RETL @0X74;9E t
RETL @0X00;9F
RETL @0X72;A0 r
RETL @0X00;A1
RETL @0X6F;A2 o
RETL @0X00;A3
RETL @0X6E;A4 n
RETL @0X00;A5
RETL @0X69;A6 i
RETL @0X00;A7
RETL @0X63;A8 c
RETL @0X00;A9
RETL @0X73;AA s
RETL @0X00;AB
RETL @0X20;AC SPACE
RETL @0X00;AD
RETL @0X43;AE C
RETL @0X00;AF
RETL @0X6F;B0 o
RETL @0X00;B1
RETL @0X72;B2 r
RETL @0X00;B3
RETL @0X70;B4 p
RETL @0X00;B5
RETL @0X6F;B6 o
RETL @0X00;B7
RETL @0X72;B8 r
RETL @0X00;B9
RETL @0X61;BA a
RETL @0X00;BB
RETL @0X74;BC t
RETL @0X00;BD
RETL @0X69;BE i
RETL @0X00;BF
RETL @0X6F;C0 o
RETL @0X00;C1
RETL @0X6E;C2 n
RETL @0X00;
RETL @0X20; SPACE
RETL @0X00;
RETL @0X46; F
RETL @0X00;
RETL @0X55; U
RETL @0X00;
RETL @0X43; C
RETL @0X00;
RETL @0X4B; K
RETL @0X00;C3 End of Manufacture String Descriptor
STRING2T:
TBL
RETL @0X22;C4 Strat of Product String Descriptor
RETL @0X03;C5 INCRE == C4 DATA_MAX == 22
RETL @0X55;C6
RETL @0X00;C7
RETL @0X53;C8
RETL @0X00;C9
RETL @0X42;CA
RETL @0X00;CB
RETL @0X20;CC
RETL @0X00;CD
RETL @0X47;CE
RETL @0X00;CF
RETL @0X61;D0
RETL @0X00;D1
RETL @0X6D;D2
RETL @0X00;D3
RETL @0X65;D4
RETL @0X00;D5
RETL @0X50;D6
RETL @0X00;D7
RETL @0X61;D8
RETL @0X00;D9
RETL @0X64;DA
RETL @0X00;DB
RETL @0X20;DC
RETL @0X00;DD
RETL @0X53;DE
RETL @0X00;DF
RETL @0X54;E0
RETL @0X00;E1
RETL @0X44;E2
RETL @0X00;E3
RETL @0X2E;E4
RETL @0X00;E5 End of Product String Descriptor
;==========================================================================
; END OF DESCRIPTOR
;==========================================================================
INITIAL:
DISI
MOV A,@0B11010000 ;DUALCLOCK DIS, WUE DIS, RUN BIT SET
IOW 0X0E
MOV A,@0B00000011
IOW 0X05 ;SET BIT0 D+/DATA, BIT 1 D-/CLK PINS INPUT
MOV A,@0XFF
MOV R8,A ;DISABLE PORT6 CHANGE WAKEUP
MOV R9,A ;DISABLE PORT7 CHANGE WAKEUP
CLR RF
CLR 0X3E ;CLR RAM
CLR 0X3F
USB_MODE:
MOV A,@0B11000001
IOW 0X0A ;SET TO USB MODE
CALL CLRRAMU
CLR RC
CLR RD
CLR RF
CLR TRANSFER
CLRA
CONTW
MOV A,@0B00000110
IOW 0X0F ;ENABLE EP0 INTERRUPT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -