📄 mac_indirect_queue.lst
字号:
95 pPacket->isFirstPacket = FALSE;
96 break;
97 }
98 }
99 }
100 temp = pIndirectPacket->nextPacket;
\ ??miqAddIndirectPacket_6:
\ 000069 EE MOV A,R6
\ 00006A 248D ADD A,#-0x73
\ 00006C F582 MOV DPL,A
\ 00006E EF MOV A,R7
\ 00006F 3400 ADDC A,#0x0
\ 000071 F583 MOV DPH,A
\ ??miqAddIndirectPacket_3:
\ 000073 E0 MOVX A,@DPTR
\ 000074 FE MOV R6,A
\ 000075 74FF MOV A,#-0x1
\ 000077 6E XRL A,R6
\ 000078 604A JZ ??miqAddIndirectPacket_7
\ 00007A EE MOV A,R6
\ 00007B 75F093 MOV B,#-0x6d
\ 00007E A4 MUL AB
\ 00007F 24.. ADD A,#(pMtxPacketPool & 0xff)
\ 000081 FE MOV R6,A
\ 000082 E5F0 MOV A,B
\ 000084 34.. ADDC A,#((pMtxPacketPool >> 8) & 0xff)
\ 000086 FF MOV R7,A
\ 000087 8E82 MOV DPL,R6
\ 000089 8F83 MOV DPH,R7
\ 00008B A3 INC DPTR
\ 00008C A3 INC DPTR
\ 00008D A3 INC DPTR
\ 00008E A3 INC DPTR
\ 00008F E0 MOVX A,@DPTR
\ 000090 540C ANL A,#0xc
\ 000092 65.. XRL A,?V0 + 2
\ 000094 70D3 JNZ ??miqAddIndirectPacket_6
\ 000096 EE MOV A,R6
\ 000097 2408 ADD A,#0x8
\ 000099 FC MOV R4,A
\ 00009A EF MOV A,R7
\ 00009B 3400 ADDC A,#0x0
\ 00009D FD MOV R5,A
\ 00009E 7408 MOV A,#0x8
\ 0000A0 65.. XRL A,?V0 + 2
\ 0000A2 70BB JNZ ??miqAddIndirectPacket_4
\ 0000A4 85..82 MOV DPL,?V0 + 0
\ 0000A7 85..83 MOV DPH,?V0 + 1
\ 0000AA E0 MOVX A,@DPTR
\ 0000AB F8 MOV R0,A
\ 0000AC A3 INC DPTR
\ 0000AD E0 MOVX A,@DPTR
\ 0000AE F9 MOV R1,A
\ 0000AF 8C82 MOV DPL,R4
\ 0000B1 8D83 MOV DPH,R5
\ 0000B3 E0 MOVX A,@DPTR
\ 0000B4 68 XRL A,R0
\ 0000B5 7003 JNZ ??miqAddIndirectPacket_8
\ 0000B7 A3 INC DPTR
\ 0000B8 E0 MOVX A,@DPTR
\ 0000B9 69 XRL A,R1
\ ??miqAddIndirectPacket_8:
\ 0000BA 70AD JNZ ??miqAddIndirectPacket_6
\ ??miqAddIndirectPacket_5:
\ 0000BC E4 CLR A
\ 0000BD 85..82 MOV DPL,?V0 + 4
\ 0000C0 85..83 MOV DPH,?V0 + 5
\ 0000C3 F0 MOVX @DPTR,A
101 }
102 pTask->state = MIQ_STATE_INSERT_INTO_QUEUE;
\ ??miqAddIndirectPacket_7:
\ 0000C4 7401 MOV A,#0x1
\ 0000C6 85..82 MOV DPL,?V0 + 6
\ 0000C9 85..83 MOV DPH,?V0 + 7
\ 0000CC F0 MOVX @DPTR,A
\ 0000CD 02.... LJMP ??miqAddIndirectPacket_0 & 0xFFFF
103 break;
104
105 case MIQ_STATE_INSERT_INTO_QUEUE:
106
107 // Find the index of the new packet
108 temp = pPacket->poolIndex;
\ ??miqAddIndirectPacket_2:
\ 0000D0 E8 MOV A,R0
\ 0000D1 2490 ADD A,#-0x70
\ 0000D3 F582 MOV DPL,A
\ 0000D5 E9 MOV A,R1
\ 0000D6 3400 ADDC A,#0x0
\ 0000D8 F583 MOV DPH,A
\ 0000DA E0 MOVX A,@DPTR
\ 0000DB FE MOV R6,A
109
110 // Add the packet to the queue
111 if (miqInfo.lastIndirectPacket != NO_PACKET)
\ 0000DC 90.... MOV DPTR,#(miqInfo + 1)
\ 0000DF E0 MOVX A,@DPTR
\ 0000E0 FA MOV R2,A
\ 0000E1 74FF MOV A,#-0x1
\ 0000E3 6A XRL A,R2
\ 0000E4 6011 JZ ??miqAddIndirectPacket_9
112 pMtxPacketPool[miqInfo.lastIndirectPacket].nextPacket = temp;
\ 0000E6 EA MOV A,R2
\ 0000E7 75F093 MOV B,#-0x6d
\ 0000EA A4 MUL AB
\ 0000EB 24.. ADD A,#((pMtxPacketPool + 141) & 0xff)
\ 0000ED F582 MOV DPL,A
\ 0000EF E5F0 MOV A,B
\ 0000F1 34.. ADDC A,#(((pMtxPacketPool + 141) >> 8) & 0xff)
\ 0000F3 F583 MOV DPH,A
\ 0000F5 EE MOV A,R6
\ 0000F6 F0 MOVX @DPTR,A
113
114 pPacket->prevPacket = miqInfo.lastIndirectPacket;
\ ??miqAddIndirectPacket_9:
\ 0000F7 90.... MOV DPTR,#(miqInfo + 1)
\ 0000FA E0 MOVX A,@DPTR
\ 0000FB C0E0 PUSH A
\ 0000FD E8 MOV A,R0
\ 0000FE 248E ADD A,#-0x72
\ 000100 F582 MOV DPL,A
\ 000102 E9 MOV A,R1
\ 000103 3400 ADDC A,#0x0
\ 000105 F583 MOV DPH,A
\ 000107 D0E0 POP A
\ 000109 F0 MOVX @DPTR,A
115 pPacket->nextPacket = NO_PACKET;
\ 00010A E8 MOV A,R0
\ 00010B 248D ADD A,#-0x73
\ 00010D F582 MOV DPL,A
\ 00010F E9 MOV A,R1
\ 000110 3400 ADDC A,#0x0
\ 000112 F583 MOV DPH,A
\ 000114 74FF MOV A,#-0x1
\ 000116 F0 MOVX @DPTR,A
116 pPacket->timeToLive = mpib.macTransactionPersistenceTime;
\ 000117 90.... MOV DPTR,#(mpib + 35)
\ 00011A E0 MOVX A,@DPTR
\ 00011B FA MOV R2,A
\ 00011C A3 INC DPTR
\ 00011D E0 MOVX A,@DPTR
\ 00011E FB MOV R3,A
\ 00011F E8 MOV A,R0
\ 000120 2489 ADD A,#-0x77
\ 000122 F582 MOV DPL,A
\ 000124 E9 MOV A,R1
\ 000125 3400 ADDC A,#0x0
\ 000127 F583 MOV DPH,A
\ 000129 EA MOV A,R2
\ 00012A F0 MOVX @DPTR,A
\ 00012B A3 INC DPTR
\ 00012C EB MOV A,R3
\ 00012D F0 MOVX @DPTR,A
117 pPacket->purgeRequest = FALSE;
\ 00012E E8 MOV A,R0
\ 00012F 2488 ADD A,#-0x78
\ 000131 F582 MOV DPL,A
\ 000133 E9 MOV A,R1
\ 000134 3400 ADDC A,#0x0
\ 000136 F583 MOV DPH,A
\ 000138 E4 CLR A
\ 000139 F0 MOVX @DPTR,A
118 pPacket->requested = FALSE;
\ 00013A E8 MOV A,R0
\ 00013B 248B ADD A,#-0x75
\ 00013D F582 MOV DPL,A
\ 00013F E9 MOV A,R1
\ 000140 3400 ADDC A,#0x0
\ 000142 F583 MOV DPH,A
\ 000144 E4 CLR A
\ 000145 F0 MOVX @DPTR,A
119 pPacket->transmissionStarted = FALSE;
\ 000146 E8 MOV A,R0
\ 000147 248C ADD A,#-0x74
\ 000149 F582 MOV DPL,A
\ 00014B E9 MOV A,R1
\ 00014C 3400 ADDC A,#0x0
\ 00014E F583 MOV DPH,A
\ 000150 E4 CLR A
\ 000151 F0 MOVX @DPTR,A
120
121 // Update the global indexes
122 miqInfo.lastIndirectPacket = temp;
\ 000152 EE MOV A,R6
\ 000153 90.... MOV DPTR,#(miqInfo + 1)
\ 000156 F0 MOVX @DPTR,A
123 if (miqInfo.firstIndirectPacket == NO_PACKET) miqInfo.firstIndirectPacket = temp;
\ 000157 90.... MOV DPTR,#miqInfo
\ 00015A E0 MOVX A,@DPTR
\ 00015B 64FF XRL A,#0xff
\ 00015D 7002 JNZ ??miqAddIndirectPacket_10
\ 00015F EE MOV A,R6
\ 000160 F0 MOVX @DPTR,A
124
125 // Remove the task
126 mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
\ ??miqAddIndirectPacket_10:
\ 000161 ; Setup parameters for call to function mschRemoveTask
\ 000161 7A02 MOV R2,#0x2
\ 000163 8C82 MOV DPL,R4
\ 000165 8D83 MOV DPH,R5
\ 000167 A3 INC DPTR
\ 000168 A3 INC DPTR
\ 000169 A3 INC DPTR
\ 00016A A3 INC DPTR
\ 00016B A3 INC DPTR
\ 00016C A3 INC DPTR
\ 00016D A3 INC DPTR
\ 00016E A3 INC DPTR
\ 00016F E0 MOVX A,@DPTR
\ 000170 F9 MOV R1,A
\ 000171 12.... LCALL mschRemoveTask & 0xFFFF
127 break;
128 }
129
130 } // miqAddIndirectPacket
\ ??miqAddIndirectPacket_0:
\ 000174 REQUIRE ?Subroutine2
\ 000174 ; // Fall through to label ?Subroutine2
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine2:
\ 000000 7F08 MOV R7,#0x8
\ 000002 02.... LJMP ?BANKED_LEAVE_XDATA
131
132
133
134
135 //-------------------------------------------------------------------------------------------------------
136 // void miqRemoveIndirectPacket(MAC_TASK_INFO *pTask)
137 //
138 // DESCRIPTION:
139 // This task removes a packet from the indirect queue. Note that the "requested flag" must have been
140 // cleared before this task is created. To make sure that the packet is not requested again before
141 // this task completes, the timeToLive counter should be set to < 1.
142 //
143 // TASK DATA:
144 // A pointer to the MAC_TX_PACKET to be removed.
145 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
146 void miqRemoveIndirectPacket(MAC_TASK_INFO *pTask) NEAR {
\ miqRemoveIndirectPacket:
\ 000000 74F0 MOV A,#-0x10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -