📄 mac_indirect_queue.lst
字号:
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 16
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0 + 4,R2
\ 000007 8B.. MOV ?V0 + 5,R3
147 MAC_TX_PACKET *pPacket = (MAC_TX_PACKET *) pTask->taskData;
\ 000009 8A82 MOV DPL,R2
\ 00000B 8B83 MOV DPH,R3
\ 00000D A3 INC DPTR
\ 00000E A3 INC DPTR
\ 00000F A3 INC DPTR
\ 000010 E0 MOVX A,@DPTR
\ 000011 FE MOV R6,A
\ 000012 A3 INC DPTR
\ 000013 E0 MOVX A,@DPTR
\ 000014 FF MOV R7,A
148 MAC_TX_PACKET *pIndirectPacket;
149 BYTE temp;
150 BYTE destAddrMode;
151 ADDRESS *pDestAddr;
152
153 switch (pTask->state) {
\ 000015 EA MOV A,R2
\ 000016 2405 ADD A,#0x5
\ 000018 F8 MOV R0,A
\ 000019 EB MOV A,R3
\ 00001A 3400 ADDC A,#0x0
\ 00001C F9 MOV R1,A
\ 00001D 8882 MOV DPL,R0
\ 00001F 8983 MOV DPH,R1
\ 000021 E0 MOVX A,@DPTR
\ 000022 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for miqRemoveIndirectPacket>_0`:
\ 000025 00 DB 0
\ 000026 01 DB 1
\ 000027 .... DW ??miqRemoveIndirectPacket_0
\ 000029 .... DW ??miqRemoveIndirectPacket_1
\ 00002B .... DW ??miqRemoveIndirectPacket_2
154 case MIQ_STATE_REMOVE_PACKET:
155
156 // Update the link on the previous packet
157 if (pPacket->prevPacket != NO_PACKET) {
\ ??miqRemoveIndirectPacket_1:
\ 00002D EE MOV A,R6
\ 00002E 248E ADD A,#-0x72
\ 000030 FA MOV R2,A
\ 000031 EF MOV A,R7
\ 000032 3400 ADDC A,#0x0
\ 000034 FB MOV R3,A
\ 000035 8A82 MOV DPL,R2
\ 000037 8B83 MOV DPH,R3
\ 000039 E0 MOVX A,@DPTR
\ 00003A F5.. MOV ?V0 + 0,A
\ 00003C EE MOV A,R6
\ 00003D 248D ADD A,#-0x73
\ 00003F FC MOV R4,A
\ 000040 EF MOV A,R7
\ 000041 3400 ADDC A,#0x0
\ 000043 FD MOV R5,A
\ 000044 74FF MOV A,#-0x1
\ 000046 65.. XRL A,?V0 + 0
\ 000048 6025 JZ ??miqRemoveIndirectPacket_3
158 pMtxPacketPool[pPacket->prevPacket].nextPacket = pPacket->nextPacket;
\ 00004A 8C82 MOV DPL,R4
\ 00004C 8D83 MOV DPH,R5
\ 00004E E0 MOVX A,@DPTR
\ 00004F C0E0 PUSH A
\ 000051 E5.. MOV A,?V0 + 0
\ 000053 75F093 MOV B,#-0x6d
\ 000056 A4 MUL AB
\ 000057 F5.. MOV ?V0 + 0,A
\ 000059 85F0.. MOV ?V0 + 2,B
\ 00005C E5.. MOV A,?V0 + 2
\ 00005E F5.. MOV ?V0 + 1,A
\ 000060 E5.. MOV A,?V0 + 0
\ 000062 24.. ADD A,#((pMtxPacketPool + 141) & 0xff)
\ 000064 F582 MOV DPL,A
\ 000066 E5.. MOV A,?V0 + 1
\ 000068 34.. ADDC A,#(((pMtxPacketPool + 141) >> 8) & 0xff)
\ 00006A F583 MOV DPH,A
\ 00006C D0E0 POP A
\ 00006E F0 MOVX @DPTR,A
159 }
160
161 // Update the link on the next packet
162 if (pPacket->nextPacket != NO_PACKET) {
\ ??miqRemoveIndirectPacket_3:
\ 00006F 8C82 MOV DPL,R4
\ 000071 8D83 MOV DPH,R5
\ 000073 E0 MOVX A,@DPTR
\ 000074 F5.. MOV ?V0 + 0,A
\ 000076 74FF MOV A,#-0x1
\ 000078 65.. XRL A,?V0 + 0
\ 00007A 6025 JZ ??miqRemoveIndirectPacket_4
163 pMtxPacketPool[pPacket->nextPacket].prevPacket = pPacket->prevPacket;
\ 00007C 8A82 MOV DPL,R2
\ 00007E 8B83 MOV DPH,R3
\ 000080 E0 MOVX A,@DPTR
\ 000081 C0E0 PUSH A
\ 000083 E5.. MOV A,?V0 + 0
\ 000085 75F093 MOV B,#-0x6d
\ 000088 A4 MUL AB
\ 000089 F5.. MOV ?V0 + 0,A
\ 00008B 85F0.. MOV ?V0 + 2,B
\ 00008E E5.. MOV A,?V0 + 2
\ 000090 F5.. MOV ?V0 + 1,A
\ 000092 E5.. MOV A,?V0 + 0
\ 000094 24.. ADD A,#((pMtxPacketPool + 142) & 0xff)
\ 000096 F582 MOV DPL,A
\ 000098 E5.. MOV A,?V0 + 1
\ 00009A 34.. ADDC A,#(((pMtxPacketPool + 142) >> 8) & 0xff)
\ 00009C F583 MOV DPH,A
\ 00009E D0E0 POP A
\ 0000A0 F0 MOVX @DPTR,A
164 }
165
166 // Update the "head" and "tail" indexes of the queue
167 temp = pPacket->poolIndex;
\ ??miqRemoveIndirectPacket_4:
\ 0000A1 EE MOV A,R6
\ 0000A2 2490 ADD A,#-0x70
\ 0000A4 F582 MOV DPL,A
\ 0000A6 EF MOV A,R7
\ 0000A7 3400 ADDC A,#0x0
\ 0000A9 F583 MOV DPH,A
\ 0000AB E0 MOVX A,@DPTR
\ 0000AC F5.. MOV ?V0 + 0,A
168 if (temp == miqInfo.firstIndirectPacket) miqInfo.firstIndirectPacket = pPacket->nextPacket;
\ 0000AE 90.... MOV DPTR,#miqInfo
\ 0000B1 E0 MOVX A,@DPTR
\ 0000B2 65.. XRL A,?V0 + 0
\ 0000B4 7009 JNZ ??miqRemoveIndirectPacket_5
\ 0000B6 8C82 MOV DPL,R4
\ 0000B8 8D83 MOV DPH,R5
\ 0000BA E0 MOVX A,@DPTR
\ 0000BB 90.... MOV DPTR,#miqInfo
\ 0000BE F0 MOVX @DPTR,A
169 if (temp == miqInfo.lastIndirectPacket) miqInfo.lastIndirectPacket = pPacket->prevPacket;
\ ??miqRemoveIndirectPacket_5:
\ 0000BF 90.... MOV DPTR,#(miqInfo + 1)
\ 0000C2 E0 MOVX A,@DPTR
\ 0000C3 65.. XRL A,?V0 + 0
\ 0000C5 7009 JNZ ??miqRemoveIndirectPacket_6
\ 0000C7 8A82 MOV DPL,R2
\ 0000C9 8B83 MOV DPH,R3
\ 0000CB E0 MOVX A,@DPTR
\ 0000CC 90.... MOV DPTR,#(miqInfo + 1)
\ 0000CF F0 MOVX @DPTR,A
170
171 pTask->state = MIQ_STATE_MOVE_FIRST_PACKET_FLAG;
\ ??miqRemoveIndirectPacket_6:
\ 0000D0 7401 MOV A,#0x1
\ 0000D2 8882 MOV DPL,R0
\ 0000D4 8983 MOV DPH,R1
\ 0000D6 F0 MOVX @DPTR,A
\ 0000D7 02.... LJMP ??miqRemoveIndirectPacket_0 & 0xFFFF
172 break;
173
174 case MIQ_STATE_MOVE_FIRST_PACKET_FLAG:
175
176 // If set here, then move the isFirstPacket flag to the next packet with same destination in the queue
177 if (pPacket->isFirstPacket) {
\ ??miqRemoveIndirectPacket_2:
\ 0000DA EE MOV A,R6
\ 0000DB 248F ADD A,#-0x71
\ 0000DD F582 MOV DPL,A
\ 0000DF EF MOV A,R7
\ 0000E0 3400 ADDC A,#0x0
\ 0000E2 F583 MOV DPH,A
\ 0000E4 E0 MOVX A,@DPTR
\ 0000E5 7003 JNZ $+5
\ 0000E7 02.... LJMP ??miqRemoveIndirectPacket_7 & 0xFFFF
178 pPacket->isFirstPacket = FALSE;
\ 0000EA E4 CLR A
\ 0000EB F0 MOVX @DPTR,A
179 temp = pPacket->nextPacket;
\ 0000EC EE MOV A,R6
\ 0000ED 248D ADD A,#-0x73
\ 0000EF F582 MOV DPL,A
\ 0000F1 EF MOV A,R7
\ 0000F2 3400 ADDC A,#0x0
\ 0000F4 F583 MOV DPH,A
\ 0000F6 E0 MOVX A,@DPTR
\ 0000F7 F5.. MOV ?V0 + 0,A
180 destAddrMode = (BYTE)(pPacket->pHeader[1] & DEST_ADDR_BM);
\ 0000F9 8E82 MOV DPL,R6
\ 0000FB 8F83 MOV DPH,R7
\ 0000FD A3 INC DPTR
\ 0000FE A3 INC DPTR
\ 0000FF A3 INC DPTR
\ 000100 A3 INC DPTR
\ 000101 E0 MOVX A,@DPTR
\ 000102 540C ANL A,#0xc
\ 000104 F5.. MOV ?V0 + 2,A
181 pDestAddr = (ADDRESS *) (pPacket->pHeader + 5);
\ 000106 EE MOV A,R6
\ 000107 2408 ADD A,#0x8
\ 000109 F5.. MOV ?V0 + 6,A
\ 00010B EF MOV A,R7
\ 00010C 3400 ADDC A,#0x0
\ 00010E F5.. MOV ?V0 + 7,A
\ 000110 8019 SJMP ??miqRemoveIndirectPacket_8
182
183 // For each packet in the queue ...
184 while (temp != NO_PACKET) {
185 pIndirectPacket = &pMtxPacketPool[temp];
186 if (destAddrMode == (pIndirectPacket->pHeader[1] & DEST_ADDR_BM)) {
187 if (destAddrMode == DEST_ADDR_SHORT) {
188 if (pDestAddr->Short == *((WORD *) (pIndirectPacket->pHeader + 5))) {
189 pIndirectPacket->isFirstPacket = TRUE;
190 break;
191 }
192 } else {
193 if (msupCompareExtendedAddress((ADDRESS *) pDestAddr, (ADDRESS *) (pIndirectPacket->pHeader + 5))) {
\ ??miqRemoveIndirectPacket_9:
\ 000112 ; Setup parameters for call to function msupCompareExtendedAddress
\ 000112 AA.. MOV R2,?V0 + 6
\ 000114 AB.. MOV R3,?V0 + 7
\ 000116 12.... LCALL msupCompareExtendedAddress & 0xFFFF
\ 000119 E9 MOV A,R1
\ 00011A 705D JNZ ??miqRemoveIndirectPacket_10
194 pIndirectPacket->isFirstPacket = TRUE;
195 break;
196 }
197 }
198 }
199 temp = pIndirectPacket->nextPacket;
\ ??miqRemoveIndirectPacket_11:
\ 00011C E5.. MOV A,?V0 + 0
\ 00011E 248D ADD A,#-0x73
\ 000120 F582 MOV DPL,A
\ 000122 E5.. MOV A,?V0 + 1
\ 000124 3400 ADDC A,#0x0
\ 000126 F583 MOV DPH,A
\ 000128 E0 MOVX A,@DPTR
\ 000129 F5.. MOV ?V0 + 0,A
\ ??miqRemoveIndirectPacket_8:
\ 00012B 74FF MOV A,#-0x1
\ 00012D 65.. XRL A,?V0 + 0
\ 00012F 6057 JZ ??miqRemoveIndirectPacket_7
\ 000131 E5.. MOV A,?V0 + 0
\ 000133 75F093 MOV B,#-0x6d
\ 000136 A4 MUL AB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -