📄 osal_nv.lst
字号:
\ 00000A 75..00 MOV ?V0 + 1,#0x0
309 uint8 newPg = OSAL_NV_PAGE_NULL;
\ 00000D 7F00 MOV R7,#0x0
310 uint8 xBad;
311 uint8 pg;
312
313 readHdr( OSAL_NV_IEEE_PAGE, OSAL_NV_IEEE_OFFSET, (uint8 *)(&ieee) );
\ 00000F ; Setup parameters for call to function readHdr
\ 00000F 7408 MOV A,#0x8
\ 000011 12.... LCALL ?XSTACK_DISP0_8
\ 000014 AC82 MOV R4,DPL
\ 000016 AD83 MOV R5,DPH
\ 000018 7AF8 MOV R2,#-0x8
\ 00001A 7B07 MOV R3,#0x7
\ 00001C 793F MOV R1,#0x3f
\ 00001E 90.... MOV DPTR,#(??readHdr & 0xffff)
\ 000021 74.. MOV A,#((??readHdr >> 16) & 0xff)
\ 000023 12.... LCALL ?BCALL ; Banked call to: DPTR()
314 if ( (ieee.active == OSAL_NV_ERASED_ID) &&
315 (ieee.inUse == OSAL_NV_ERASED_ID) &&
316 (ieee.xfer == OSAL_NV_ERASED_ID) &&
317 (ieee.spare == OSAL_NV_ERASED_ID) )
\ 000026 7408 MOV A,#0x8
\ 000028 12.... LCALL ?XSTACK_DISP0_8
\ 00002B E0 MOVX A,@DPTR
\ 00002C 64FF XRL A,#0xff
\ 00002E 7004 JNZ ??initNV_1
\ 000030 A3 INC DPTR
\ 000031 E0 MOVX A,@DPTR
\ 000032 64FF XRL A,#0xff
\ ??initNV_1:
\ 000034 7035 JNZ ??initNV_2
\ 000036 740A MOV A,#0xa
\ 000038 12.... LCALL ?XSTACK_DISP0_8
\ 00003B E0 MOVX A,@DPTR
\ 00003C 64FF XRL A,#0xff
\ 00003E 7004 JNZ ??initNV_3
\ 000040 A3 INC DPTR
\ 000041 E0 MOVX A,@DPTR
\ 000042 64FF XRL A,#0xff
\ ??initNV_3:
\ 000044 7025 JNZ ??initNV_2
\ 000046 740C MOV A,#0xc
\ 000048 12.... LCALL ?XSTACK_DISP0_8
\ 00004B E0 MOVX A,@DPTR
\ 00004C 64FF XRL A,#0xff
\ 00004E 7004 JNZ ??initNV_4
\ 000050 A3 INC DPTR
\ 000051 E0 MOVX A,@DPTR
\ 000052 64FF XRL A,#0xff
\ ??initNV_4:
\ 000054 7015 JNZ ??initNV_2
\ 000056 740E MOV A,#0xe
\ 000058 12.... LCALL ?XSTACK_DISP0_8
\ 00005B E0 MOVX A,@DPTR
\ 00005C 64FF XRL A,#0xff
\ 00005E 7004 JNZ ??initNV_5
\ 000060 A3 INC DPTR
\ 000061 E0 MOVX A,@DPTR
\ 000062 64FF XRL A,#0xff
\ ??initNV_5:
\ 000064 7005 JNZ ??initNV_2
318 {
319 xBad = TRUE;
\ 000066 75..01 MOV ?V0 + 0,#0x1
\ 000069 8002 SJMP ??initNV_6
320 }
321 else
322 {
323 xBad = FALSE;
\ ??initNV_2:
\ 00006B 8F.. MOV ?V0 + 0,R7
324 }
325
326 pgRes = OSAL_NV_PAGE_NULL;
\ ??initNV_6:
\ 00006D E4 CLR A
\ 00006E 90.... MOV DPTR,#??pgRes
\ 000071 F0 MOVX @DPTR,A
327
328 for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
\ 000072 7E3C MOV R6,#0x3c
329 {
330 #if OSAL_NV_CLEANUP
331 OSAL_NV_PAGE_ERASE( pg );
332 asm( "NOP" );
333 #endif
334
335 readHdr( pg, OSAL_NV_PAGE_HDR_OFFSET, (uint8 *)(&pgHdr) );
\ ??initNV_7:
\ 000074 ; Setup parameters for call to function readHdr
\ 000074 85..82 MOV DPL,?XSP + 0
\ 000077 85..83 MOV DPH,?XSP + 1
\ 00007A AC82 MOV R4,DPL
\ 00007C AD83 MOV R5,DPH
\ 00007E 7A00 MOV R2,#0x0
\ 000080 7B00 MOV R3,#0x0
\ 000082 EE MOV A,R6
\ 000083 F9 MOV R1,A
\ 000084 90.... MOV DPTR,#(??readHdr & 0xffff)
\ 000087 74.. MOV A,#((??readHdr >> 16) & 0xff)
\ 000089 12.... LCALL ?BCALL ; Banked call to: DPTR()
336
337 if ( pgHdr.active == OSAL_NV_ERASED_ID )
\ 00008C 85..82 MOV DPL,?XSP + 0
\ 00008F 85..83 MOV DPH,?XSP + 1
\ 000092 E0 MOVX A,@DPTR
\ 000093 64FF XRL A,#0xff
\ 000095 7004 JNZ ??initNV_8
\ 000097 A3 INC DPTR
\ 000098 E0 MOVX A,@DPTR
\ 000099 64FF XRL A,#0xff
\ ??initNV_8:
\ 00009B 7018 JNZ ??initNV_9
338 {
339 if ( pgRes == OSAL_NV_PAGE_NULL )
\ 00009D 90.... MOV DPTR,#??pgRes
\ 0000A0 E0 MOVX A,@DPTR
\ 0000A1 7004 JNZ ??initNV_10
340 {
341 pgRes = pg;
\ 0000A3 EE MOV A,R6
\ 0000A4 F0 MOVX @DPTR,A
\ 0000A5 8034 SJMP ??initNV_11
342 }
343 else
344 {
345 setPageUse( pg, TRUE );
\ ??initNV_10:
\ 0000A7 ; Setup parameters for call to function setPageUse
\ 0000A7 7A01 MOV R2,#0x1
\ 0000A9 EE MOV A,R6
\ 0000AA F9 MOV R1,A
\ 0000AB 90.... MOV DPTR,#(??setPageUse & 0xffff)
\ 0000AE 74.. MOV A,#((??setPageUse >> 16) & 0xff)
\ 0000B0 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000B3 8026 SJMP ??initNV_11
346 }
347 }
348 else // Page is active.
349 {
350 // If the page is not yet in use, it is the tgt of items from an xfer.
351 if ( pgHdr.inUse == OSAL_NV_ERASED_ID )
\ ??initNV_9:
\ 0000B5 7402 MOV A,#0x2
\ 0000B7 12.... LCALL ?XSTACK_DISP0_8
\ 0000BA E0 MOVX A,@DPTR
\ 0000BB 64FF XRL A,#0xff
\ 0000BD 7004 JNZ ??initNV_12
\ 0000BF A3 INC DPTR
\ 0000C0 E0 MOVX A,@DPTR
\ 0000C1 64FF XRL A,#0xff
\ ??initNV_12:
\ 0000C3 7004 JNZ ??initNV_13
352 {
353 newPg = pg;
\ 0000C5 EE MOV A,R6
\ 0000C6 FF MOV R7,A
\ 0000C7 8012 SJMP ??initNV_11
354 }
355 // An Xfer from this page was in progress.
356 else if ( pgHdr.xfer != OSAL_NV_ERASED_ID )
\ ??initNV_13:
\ 0000C9 7404 MOV A,#0x4
\ 0000CB 12.... LCALL ?XSTACK_DISP0_8
\ 0000CE E0 MOVX A,@DPTR
\ 0000CF 64FF XRL A,#0xff
\ 0000D1 7004 JNZ ??initNV_14
\ 0000D3 A3 INC DPTR
\ 0000D4 E0 MOVX A,@DPTR
\ 0000D5 64FF XRL A,#0xff
\ ??initNV_14:
\ 0000D7 6002 JZ ??initNV_11
357 {
358 oldPg = pg;
\ 0000D9 8E.. MOV ?V0 + 1,R6
359 }
360 }
361
362 // Calculate page offset and lost bytes.
363 initPage( pg, OSAL_NV_ITEM_NULL );
\ ??initNV_11:
\ 0000DB ; Setup parameters for call to function initPage
\ 0000DB 7A00 MOV R2,#0x0
\ 0000DD 7B00 MOV R3,#0x0
\ 0000DF EE MOV A,R6
\ 0000E0 F9 MOV R1,A
\ 0000E1 90.... MOV DPTR,#(??initPage & 0xffff)
\ 0000E4 74.. MOV A,#((??initPage >> 16) & 0xff)
\ 0000E6 12.... LCALL ?BCALL ; Banked call to: DPTR()
364
365 readHdr( pg, OSAL_NV_IEEE_OFFSET, (uint8 *)(&pgHdr) );
\ 0000E9 ; Setup parameters for call to function readHdr
\ 0000E9 85..82 MOV DPL,?XSP + 0
\ 0000EC 85..83 MOV DPH,?XSP + 1
\ 0000EF AC82 MOV R4,DPL
\ 0000F1 AD83 MOV R5,DPH
\ 0000F3 7AF8 MOV R2,#-0x8
\ 0000F5 7B07 MOV R3,#0x7
\ 0000F7 EE MOV A,R6
\ 0000F8 F9 MOV R1,A
\ 0000F9 90.... MOV DPTR,#(??readHdr & 0xffff)
\ 0000FC 74.. MOV A,#((??readHdr >> 16) & 0xff)
\ 0000FE 12.... LCALL ?BCALL ; Banked call to: DPTR()
366 if ( xBad )
\ 000101 E5.. MOV A,?V0 + 0
\ 000103 85..82 MOV DPL,?XSP + 0
\ 000106 85..83 MOV DPH,?XSP + 1
\ 000109 6058 JZ ??initNV_15
367 {
368 /* TBD - For the cost of more code space, the IEEE could be checksummed & then tested here
369 * before installing to the erased IEEE on page 63.
370 */
371 if ( (pgHdr.active != OSAL_NV_ERASED_ID) ||
372 (pgHdr.inUse != OSAL_NV_ERASED_ID) ||
373 (pgHdr.xfer != OSAL_NV_ERASED_ID) ||
374 (pgHdr.spare != OSAL_NV_ERASED_ID) )
\ 00010B E0 MOVX A,@DPTR
\ 00010C 64FF XRL A,#0xff
\ 00010E 7004 JNZ ??initNV_16
\ 000110 A3 INC DPTR
\ 000111 E0 MOVX A,@DPTR
\ 000112 64FF XRL A,#0xff
\ ??initNV_16:
\ 000114 7030 JNZ ??initNV_17
\ 000116 7402 MOV A,#0x2
\ 000118 12.... LCALL ?XSTACK_DISP0_8
\ 00011B E0 MOVX A,@DPTR
\ 00011C 64FF XRL A,#0xff
\ 00011E 7004 JNZ ??initNV_18
\ 000120 A3 INC DPTR
\ 000121 E0 MOVX A,@DPTR
\ 000122 64FF XRL A,#0xff
\ ??initNV_18:
\ 000124 7020 JNZ ??initNV_17
\ 000126 7404 MOV A,#0x4
\ 000128 12.... LCALL ?XSTACK_DISP0_8
\ 00012B E0 MOVX A,@DPTR
\ 00012C 64FF XRL A,#0xff
\ 00012E 7004 JNZ ??initNV_19
\ 000130 A3 INC DPTR
\ 000131 E0 MOVX A,@DPTR
\ 000132 64FF XRL A,#0xff
\ ??initNV_19:
\ 000134 7010 JNZ ??initNV_17
\ 000136 7406 MOV A,#0x6
\ 000138 12.... LCALL ?XSTACK_DISP0_8
\ 00013B E0 MOVX A,@DPTR
\ 00013C 64FF XRL A,#0xff
\ 00013E 7004 JNZ ??initNV_20
\ 000140 A3 INC DPTR
\ 000141 E0 MOVX A,@DPTR
\ 000142 64FF XRL A,#0xff
\ ??initNV_20:
\ 000144 606F JZ ??initNV_21
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -