📄 mac_indirect_queue.lst
字号:
\ 000137 24.. ADD A,#(pMtxPacketPool & 0xff)
\ 000139 F5.. MOV ?V0 + 0,A
\ 00013B E5F0 MOV A,B
\ 00013D 34.. ADDC A,#((pMtxPacketPool >> 8) & 0xff)
\ 00013F F5.. MOV ?V0 + 1,A
\ 000141 85..82 MOV DPL,?V0 + 0
\ 000144 F583 MOV DPH,A
\ 000146 A3 INC DPTR
\ 000147 A3 INC DPTR
\ 000148 A3 INC DPTR
\ 000149 A3 INC DPTR
\ 00014A E0 MOVX A,@DPTR
\ 00014B 540C ANL A,#0xc
\ 00014D 65.. XRL A,?V0 + 2
\ 00014F 70CB JNZ ??miqRemoveIndirectPacket_11
\ 000151 E5.. MOV A,?V0 + 0
\ 000153 2408 ADD A,#0x8
\ 000155 FC MOV R4,A
\ 000156 E5.. MOV A,?V0 + 1
\ 000158 3400 ADDC A,#0x0
\ 00015A FD MOV R5,A
\ 00015B 7408 MOV A,#0x8
\ 00015D 65.. XRL A,?V0 + 2
\ 00015F 70B1 JNZ ??miqRemoveIndirectPacket_9
\ 000161 85..82 MOV DPL,?V0 + 6
\ 000164 85..83 MOV DPH,?V0 + 7
\ 000167 E0 MOVX A,@DPTR
\ 000168 F8 MOV R0,A
\ 000169 A3 INC DPTR
\ 00016A E0 MOVX A,@DPTR
\ 00016B F9 MOV R1,A
\ 00016C 8C82 MOV DPL,R4
\ 00016E 8D83 MOV DPH,R5
\ 000170 E0 MOVX A,@DPTR
\ 000171 68 XRL A,R0
\ 000172 7003 JNZ ??miqRemoveIndirectPacket_12
\ 000174 A3 INC DPTR
\ 000175 E0 MOVX A,@DPTR
\ 000176 69 XRL A,R1
\ ??miqRemoveIndirectPacket_12:
\ 000177 70A3 JNZ ??miqRemoveIndirectPacket_11
\ ??miqRemoveIndirectPacket_10:
\ 000179 E5.. MOV A,?V0 + 0
\ 00017B 248F ADD A,#-0x71
\ 00017D F582 MOV DPL,A
\ 00017F E5.. MOV A,?V0 + 1
\ 000181 3400 ADDC A,#0x0
\ 000183 F583 MOV DPH,A
\ 000185 7401 MOV A,#0x1
\ 000187 F0 MOVX @DPTR,A
200 }
201 }
202
203 // Clean up
204 mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
\ ??miqRemoveIndirectPacket_7:
\ 000188 ; Setup parameters for call to function mschRemoveTask
\ 000188 7A02 MOV R2,#0x2
\ 00018A 85..82 MOV DPL,?V0 + 4
\ 00018D 85..83 MOV DPH,?V0 + 5
\ 000190 A3 INC DPTR
\ 000191 A3 INC DPTR
\ 000192 A3 INC DPTR
\ 000193 A3 INC DPTR
\ 000194 A3 INC DPTR
\ 000195 A3 INC DPTR
\ 000196 A3 INC DPTR
\ 000197 A3 INC DPTR
\ 000198 E0 MOVX A,@DPTR
\ 000199 F9 MOV R1,A
\ 00019A 12.... LCALL mschRemoveTask & 0xFFFF
205 mtxpReleasePacket(pPacket);
\ 00019D ; Setup parameters for call to function mtxpReleasePacket
\ 00019D EE MOV A,R6
\ 00019E FA MOV R2,A
\ 00019F EF MOV A,R7
\ 0001A0 FB MOV R3,A
\ 0001A1 12.... LCALL mtxpReleasePacket & 0xFFFF
206 break;
207 }
208 } // miqRemoveIndirectPacket
\ ??miqRemoveIndirectPacket_0:
\ 0001A4 02.... LJMP ?Subroutine2
209
210 //-------------------------------------------------------------------------------------------------------
211 // BOOL miqFindIndirectPacket(ADDRESS *pDestAddr, BOOL isExtAddr)
212 //
213 // DESCRIPTION:
214 // Searches through the indirect packet queue for a match on the given address.
215 //
216 // ARGUMENTS:
217 // ADDRESS *pDestAddr
218 // A pointer to the address to search for
219 // BOOL isExtAddr
220 // TRUE if pDestAddr points to an extended address
221 //
222 // RETURN VALUE:
223 // MAC_TX_PACKET
224 // A packet was found a packet pointer is returned, if no packet is found NULL is returned
225 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
226 ROOT MAC_TX_PACKET *miqFindIndirectPacket(ADDRESS *pDestAddr, BOOL isExtAddr) {
\ miqFindIndirectPacket:
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
\ 000005 8A.. MOV ?V0 + 0,R2
\ 000007 8B.. MOV ?V0 + 1,R3
227 UINT8 temp;
228 BYTE destAddrMode = isExtAddr ? DEST_ADDR_EXT : DEST_ADDR_SHORT;
\ 000009 E9 MOV A,R1
\ 00000A 6005 JZ ??miqFindIndirectPacket_0
\ 00000C 75..0C MOV ?V0 + 2,#0xc
\ 00000F 8003 SJMP ??miqFindIndirectPacket_1
\ ??miqFindIndirectPacket_0:
\ 000011 75..08 MOV ?V0 + 2,#0x8
229 MAC_TX_PACKET *pIndirectPacket;
230
231 // For each packet in the queue ...
232 temp = miqInfo.firstIndirectPacket;
\ ??miqFindIndirectPacket_1:
\ 000014 90.... MOV DPTR,#miqInfo
\ 000017 8014 SJMP ??miqFindIndirectPacket_2
233 while (temp != NO_PACKET) {
234 pIndirectPacket = &pMtxPacketPool[temp];
235
236 // ... return the packet index if there's a match on the address mode ...
237 if ((destAddrMode == (pIndirectPacket->pHeader[1] & DEST_ADDR_BM)) && (pIndirectPacket->transmissionStarted != TRUE)) {
238
239 // ... and the address itself
240 if (destAddrMode == DEST_ADDR_SHORT) {
241 if (pDestAddr->Short == *((WORD *) (pIndirectPacket->pHeader + 5))) {
242 return pIndirectPacket;
243 }
244 } else {
245 if (msupCompareExtendedAddress((ADDRESS *) pDestAddr, (ADDRESS *) (pIndirectPacket->pHeader + 5))) {
\ ??miqFindIndirectPacket_3:
\ 000019 ; Setup parameters for call to function msupCompareExtendedAddress
\ 000019 AA.. MOV R2,?V0 + 0
\ 00001B AB.. MOV R3,?V0 + 1
\ 00001D 12.... LCALL msupCompareExtendedAddress
\ 000020 E9 MOV A,R1
\ 000021 7062 JNZ ??miqFindIndirectPacket_4
246 return pIndirectPacket;
247 }
248 }
249 }
250
251
252 // Move to the next packet in the queue
253 temp = pIndirectPacket->nextPacket;
\ ??miqFindIndirectPacket_5:
\ 000023 EE MOV A,R6
\ 000024 248D ADD A,#-0x73
\ 000026 F582 MOV DPL,A
\ 000028 EF MOV A,R7
\ 000029 3400 ADDC A,#0x0
\ 00002B F583 MOV DPH,A
\ ??miqFindIndirectPacket_2:
\ 00002D E0 MOVX A,@DPTR
\ 00002E FA MOV R2,A
\ 00002F 74FF MOV A,#-0x1
\ 000031 6A XRL A,R2
\ 000032 6057 JZ ??miqFindIndirectPacket_6
\ 000034 EA MOV A,R2
\ 000035 75F093 MOV B,#-0x6d
\ 000038 A4 MUL AB
\ 000039 24.. ADD A,#(pMtxPacketPool & 0xff)
\ 00003B FE MOV R6,A
\ 00003C E5F0 MOV A,B
\ 00003E 34.. ADDC A,#((pMtxPacketPool >> 8) & 0xff)
\ 000040 FF MOV R7,A
\ 000041 8E82 MOV DPL,R6
\ 000043 8F83 MOV DPH,R7
\ 000045 A3 INC DPTR
\ 000046 A3 INC DPTR
\ 000047 A3 INC DPTR
\ 000048 A3 INC DPTR
\ 000049 E0 MOVX A,@DPTR
\ 00004A 540C ANL A,#0xc
\ 00004C 65.. XRL A,?V0 + 2
\ 00004E 70D3 JNZ ??miqFindIndirectPacket_5
\ 000050 EE MOV A,R6
\ 000051 248C ADD A,#-0x74
\ 000053 F582 MOV DPL,A
\ 000055 EF MOV A,R7
\ 000056 3400 ADDC A,#0x0
\ 000058 F583 MOV DPH,A
\ 00005A E0 MOVX A,@DPTR
\ 00005B 6401 XRL A,#0x1
\ 00005D 60C4 JZ ??miqFindIndirectPacket_5
\ 00005F EE MOV A,R6
\ 000060 2408 ADD A,#0x8
\ 000062 FC MOV R4,A
\ 000063 EF MOV A,R7
\ 000064 3400 ADDC A,#0x0
\ 000066 FD MOV R5,A
\ 000067 7408 MOV A,#0x8
\ 000069 65.. XRL A,?V0 + 2
\ 00006B 70AC JNZ ??miqFindIndirectPacket_3
\ 00006D 85..82 MOV DPL,?V0 + 0
\ 000070 85..83 MOV DPH,?V0 + 1
\ 000073 E0 MOVX A,@DPTR
\ 000074 F8 MOV R0,A
\ 000075 A3 INC DPTR
\ 000076 E0 MOVX A,@DPTR
\ 000077 F9 MOV R1,A
\ 000078 8C82 MOV DPL,R4
\ 00007A 8D83 MOV DPH,R5
\ 00007C E0 MOVX A,@DPTR
\ 00007D 68 XRL A,R0
\ 00007E 7003 JNZ ??miqFindIndirectPacket_7
\ 000080 A3 INC DPTR
\ 000081 E0 MOVX A,@DPTR
\ 000082 69 XRL A,R1
\ ??miqFindIndirectPacket_7:
\ 000083 709E JNZ ??miqFindIndirectPacket_5
\ ??miqFindIndirectPacket_4:
\ 000085 EE MOV A,R6
\ 000086 FA MOV R2,A
\ 000087 EF MOV A,R7
\ 000088 FB MOV R3,A
\ 000089 8004 SJMP ??miqFindIndirectPacket_8
254 }
255
256 // Could not find any match
257 return NULL;
\ ??miqFindIndirectPacket_6:
\ 00008B 7A00 MOV R2,#0x0
\ 00008D 7B00 MOV R3,#0x0
\ ??miqFindIndirectPacket_8:
\ 00008F REQUIRE ?Subroutine1
\ 00008F ; // Fall through to label ?Subroutine1
258
259 } // miqFindIndirectPacket
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 7F03 MOV R7,#0x3
\ 000002 02.... LJMP ?FUNC_LEAVE_XDATA
260
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -