From ab9a1046ddd342ec20872cd24745b9f9c7527f87 Mon Sep 17 00:00:00 2001 From: EmbeddedMan Date: Mon, 6 May 2024 21:41:52 -0500 Subject: [PATCH 1/2] EBF firmware v3.0.2 release: Removed "Param_Number" from response to QU command as per issue #228 --- .../production/EBF.X.production.map | 2656 ++- .../production/app.X.production.cof | Bin 662638 -> 661831 bytes .../production/app.X.production.hex | 2685 ++- .../production/app.X.production.lst | 15731 ++++++++-------- .../production/app.X.production.unified.hex | 2652 ++- .../app.X/nbproject/configurations.xml | 10 +- EBB_firmware/app.X/source/UBW.c | 22 +- .../production/bootloader.X.production.cof | Bin 97995 -> 97995 bytes .../production/bootloader.X.production.map | 2 +- docs/EBBReleaseNotes.html | 24 + docs/ebb.html | 27 +- 11 files changed, 11884 insertions(+), 11925 deletions(-) diff --git a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/EBF.X.production.map b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/EBF.X.production.map index c5694a6..562c098 100644 --- a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/EBF.X.production.map +++ b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/EBF.X.production.map @@ -1,5 +1,5 @@ MPLINK 5.00, LINKER -Linker Map File - Created Fri Apr 12 21:27:09 2024 +Linker Map File - Created Mon May 06 21:26:14 2024 Section Info Section Type Address Location Size(Bytes) @@ -9,72 +9,72 @@ REMAPPED_HIGH_INTERRUPT_VECTOR code 0x001008 program 0x000006 REMAPPED_LOW_INTERRUPT_VECTOR code 0x001018 program 0x000006 .cinit romdata 0x00102a program 0x000026 .code_ebb.o code 0x001050 program 0x00341c - .code_UBW.o code 0x00446c program 0x002bf4 - .code_usb_device.o code 0x007060 program 0x000d3e - .code_RCServo2.o code 0x007d9e program 0x00046c - PROG code 0x00820a program 0x000466 - .code_usb_function_cdc.o code 0x008670 program 0x0003c6 - .stringtable romdata 0x008a36 program 0x0002fe - .code_ebb_print.o code 0x008d34 program 0x000230 - .code_WriteBytesFlash.o code 0x008f64 program 0x0001de - .code_main.o code 0x009142 program 0x00014e - .code code 0x009290 program 0x000140 - .code_EraseFlash.o code 0x0093d0 program 0x0000f8 - .romdata_UBW.o romdata 0x0094c8 program 0x0000aa - _cinit_scn code 0x009572 program 0x00009e - .code_ReadFlash.o code 0x009610 program 0x000092 - .code_u1open.o code 0x0096a2 program 0x000072 - .code_fxm3232.o code 0x009714 program 0x000070 -.romdata_usb_descriptors.o romdata 0x009784 program 0x000057 - .idata_u1open.o_i romdata 0x0097db program 0x000000 - .romdata_u1open.o romdata 0x0097db program 0x000000 - .romdata_fxm3232.o romdata 0x0097db program 0x000000 - .idata_ReadFlash.o_i romdata 0x0097db program 0x000000 - .idata_fxm3232.o_i romdata 0x0097db program 0x000000 - .romdata_ReadFlash.o romdata 0x0097db program 0x000000 - .idata_u1write.o_i romdata 0x0097db program 0x000000 - .romdata_u1write.o romdata 0x0097db program 0x000000 - .romdata_pow2x16.o romdata 0x0097db program 0x000000 - .idata_pow2x16.o_i romdata 0x0097db program 0x000000 - .idata_u1defs.o_i romdata 0x0097db program 0x000000 - .romdata_u1defs.o romdata 0x0097db program 0x000000 -.idata_WriteBytesFlash.o_i romdata 0x0097db program 0x000000 -.romdata_WriteBytesFlash.o romdata 0x0097db program 0x000000 - .idata___init.o_i romdata 0x0097db program 0x000000 - .romdata___init.o romdata 0x0097db program 0x000000 - .idata_u1baud.o_i romdata 0x0097db program 0x000000 - .romdata_u1baud.o romdata 0x0097db program 0x000000 -.romdata_usb_function_cdc.o romdata 0x0097db program 0x000000 - .romdata_ebb.o romdata 0x0097db program 0x000000 -.idata_usb_function_cdc.o_i romdata 0x0097db program 0x000000 - .idata_main.o_i romdata 0x0097db program 0x000000 - .romdata_main.o romdata 0x0097db program 0x000000 - .romdata_usb_device.o romdata 0x0097db program 0x000000 - .idata_RCServo2.o_i romdata 0x0097db program 0x000000 - .romdata_RCServo2.o romdata 0x0097db program 0x000000 - .idata_usb_device.o_i romdata 0x0097db program 0x000000 - .romdata_c018i.o romdata 0x0097db program 0x000000 - .idata_ebb_print.o_i romdata 0x0097db program 0x000000 - .romdata_ebb_print.o romdata 0x0097db program 0x000000 - .idata_EraseFlash.o_i romdata 0x0097db program 0x000000 - .romdata_EraseFlash.o romdata 0x0097db program 0x000000 - .idata_fxd3232u.o_i romdata 0x0097db program 0x000000 - .romdata_fxd3232u.o romdata 0x0097db program 0x000000 - .idata_c018i.o_i romdata 0x0097db program 0x000000 - .code_c018i.o code 0x0097dc program 0x000000 - .code_u1defs.o code 0x0097dc program 0x000000 - .code_usb_descriptors.o code 0x0097dc program 0x000000 - .code_fxd3232u.o code 0x0097dc program 0x000048 - STRING code 0x009824 program 0x000034 - .code_u1write.o code 0x009858 program 0x00002e - CTYPE code 0x009886 program 0x000028 - .code_u1baud.o code 0x0098ae program 0x000022 - _startup_scn code 0x0098d0 program 0x00001c - .code_pow2x16.o code 0x0098ec program 0x000016 - .code___init.o code 0x009902 program 0x000002 -.idata_usb_descriptors.o_i romdata 0x009904 program 0x00007e - .idata_ebb.o_i romdata 0x009982 program 0x000002 - .idata_UBW.o_i romdata 0x009984 program 0x000009 + .code_UBW.o code 0x00446c program 0x002bc4 + .code_usb_device.o code 0x007030 program 0x000d3e + .code_RCServo2.o code 0x007d6e program 0x00046c + PROG code 0x0081da program 0x000466 + .code_usb_function_cdc.o code 0x008640 program 0x0003c6 + .stringtable romdata 0x008a06 program 0x0002fe + .code_ebb_print.o code 0x008d04 program 0x000230 + .code_WriteBytesFlash.o code 0x008f34 program 0x0001de + .code_main.o code 0x009112 program 0x00014e + .code code 0x009260 program 0x000140 + .code_EraseFlash.o code 0x0093a0 program 0x0000f8 + .romdata_UBW.o romdata 0x009498 program 0x0000a8 + _cinit_scn code 0x009540 program 0x00009e + .code_ReadFlash.o code 0x0095de program 0x000092 + .code_u1open.o code 0x009670 program 0x000072 + .code_fxm3232.o code 0x0096e2 program 0x000070 +.romdata_usb_descriptors.o romdata 0x009752 program 0x000057 + .idata_u1open.o_i romdata 0x0097a9 program 0x000000 + .romdata_u1open.o romdata 0x0097a9 program 0x000000 + .romdata_fxm3232.o romdata 0x0097a9 program 0x000000 + .idata_ReadFlash.o_i romdata 0x0097a9 program 0x000000 + .idata_fxm3232.o_i romdata 0x0097a9 program 0x000000 + .romdata_ReadFlash.o romdata 0x0097a9 program 0x000000 + .idata_u1write.o_i romdata 0x0097a9 program 0x000000 + .romdata_u1write.o romdata 0x0097a9 program 0x000000 + .romdata_pow2x16.o romdata 0x0097a9 program 0x000000 + .idata_pow2x16.o_i romdata 0x0097a9 program 0x000000 + .idata_u1defs.o_i romdata 0x0097a9 program 0x000000 + .romdata_u1defs.o romdata 0x0097a9 program 0x000000 +.idata_WriteBytesFlash.o_i romdata 0x0097a9 program 0x000000 +.romdata_WriteBytesFlash.o romdata 0x0097a9 program 0x000000 + .idata___init.o_i romdata 0x0097a9 program 0x000000 + .romdata___init.o romdata 0x0097a9 program 0x000000 + .idata_u1baud.o_i romdata 0x0097a9 program 0x000000 + .romdata_u1baud.o romdata 0x0097a9 program 0x000000 +.romdata_usb_function_cdc.o romdata 0x0097a9 program 0x000000 + .romdata_ebb.o romdata 0x0097a9 program 0x000000 +.idata_usb_function_cdc.o_i romdata 0x0097a9 program 0x000000 + .idata_main.o_i romdata 0x0097a9 program 0x000000 + .romdata_main.o romdata 0x0097a9 program 0x000000 + .romdata_usb_device.o romdata 0x0097a9 program 0x000000 + .idata_RCServo2.o_i romdata 0x0097a9 program 0x000000 + .romdata_RCServo2.o romdata 0x0097a9 program 0x000000 + .idata_usb_device.o_i romdata 0x0097a9 program 0x000000 + .romdata_c018i.o romdata 0x0097a9 program 0x000000 + .idata_ebb_print.o_i romdata 0x0097a9 program 0x000000 + .romdata_ebb_print.o romdata 0x0097a9 program 0x000000 + .idata_EraseFlash.o_i romdata 0x0097a9 program 0x000000 + .romdata_EraseFlash.o romdata 0x0097a9 program 0x000000 + .idata_fxd3232u.o_i romdata 0x0097a9 program 0x000000 + .romdata_fxd3232u.o romdata 0x0097a9 program 0x000000 + .idata_c018i.o_i romdata 0x0097a9 program 0x000000 + .code_c018i.o code 0x0097aa program 0x000000 + .code_u1defs.o code 0x0097aa program 0x000000 + .code_usb_descriptors.o code 0x0097aa program 0x000000 + .code_fxd3232u.o code 0x0097aa program 0x000048 + STRING code 0x0097f2 program 0x000034 + .code_u1write.o code 0x009826 program 0x00002e + CTYPE code 0x009854 program 0x000028 + .code_u1baud.o code 0x00987c program 0x000022 + _startup_scn code 0x00989e program 0x00001c + .code_pow2x16.o code 0x0098ba program 0x000016 + .code___init.o code 0x0098d0 program 0x000002 +.idata_usb_descriptors.o_i romdata 0x0098d2 program 0x00007e + .idata_ebb.o_i romdata 0x009950 program 0x000002 + .idata_UBW.o_i romdata 0x009952 program 0x000009 ISR_access udata 0x000000 data 0x00003a MATH_DATA udata 0x00003a data 0x000014 .tmpdata udata 0x00004e data 0x000008 @@ -150,323 +150,320 @@ REMAPPED_LOW_INTERRUPT_VECTOR code 0x001018 program 0x000006 0x001000 0x001005 0x001008 0x00100d 0x001018 0x00101d - 0x00102a 0x0097da - 0x0097dc 0x00998c - 35188 out of 63498 program addresses used, program memory utilization is 55% + 0x00102a 0x0097a8 + 0x0097aa 0x00995a + 35138 out of 63498 program addresses used, program memory utilization is 55% Symbols - Sorted by Name Name Address Location Storage File --------- --------- --------- --------- --------- - AnalogConfigure 0x005c4c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - BlinkUSBStatus 0x006992 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - CDCInitEP 0x00870c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - CDCTxService 0x0088a2 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - D3232S 0x0083f0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SNEG 0x0083fe program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SOK 0x0083fa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SX 0x00841e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - DA3232S 0x0083da program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - Done 0x0092f2 program static source\squareroot.s - Done32 0x009366 program static source\squareroot.s + AnalogConfigure 0x005c26 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + BlinkUSBStatus 0x006974 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + CDCInitEP 0x0086dc program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + CDCTxService 0x008872 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + D3232S 0x0083c0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SNEG 0x0083ce program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SOK 0x0083ca program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SX 0x0083ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + DA3232S 0x0083aa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + Done 0x0092c2 program static source\squareroot.s + Done32 0x009336 program static source\squareroot.s EBB_Init 0x001972 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - EraseFlash 0x0093d0 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c - FLO3232S 0x00820e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - FLO3232U 0x00820a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - FPD32 0x008240 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - FPM32 0x0082e6 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - FXD3232S 0x0083c0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - FXD3232U 0x0097dc program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232u.c - FXM3232 0x009714 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxm3232.c - INT3232 0x008428 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - InitializeSystem 0x009152 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - LongDelay 0x00628a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - NextBit 0x0092e2 program static source\squareroot.s - NxtBt16 0x00934a program static source\squareroot.s - Open1USART 0x0096a2 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1open.c + EraseFlash 0x0093a0 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c + FLO3232S 0x0081de program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + FLO3232U 0x0081da program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + FPD32 0x008210 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + FPM32 0x0082b6 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + FXD3232S 0x008390 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + FXD3232U 0x0097aa program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232u.c + FXM3232 0x0096e2 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxm3232.c + INT3232 0x0083f8 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + InitializeSystem 0x009122 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + LongDelay 0x00626c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + NextBit 0x0092b2 program static source\squareroot.s + NxtBt16 0x00931a program static source\squareroot.s + Open1USART 0x009670 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1open.c ProcessIO 0x004a44 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RCServo2_Init 0x007d9e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - RCServo2_Move 0x007f36 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - RCServo2_S2_command 0x007e88 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -RCServo2_get_channel_from_RPn 0x007e4e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - RPnBit 0x009559 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RPnLATPort 0x009527 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RPnTRISPort 0x0094f5 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ReadFlash 0x009610 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\ReadFlash.c + RCServo2_Init 0x007d6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + RCServo2_Move 0x007f06 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + RCServo2_S2_command 0x007e58 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +RCServo2_get_channel_from_RPn 0x007e1e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + RPnBit 0x009527 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + RPnLATPort 0x0094f5 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + RPnTRISPort 0x0094c3 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ReadFlash 0x0095de program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\ReadFlash.c Remapped_High_ISR 0x001008 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c Remapped_Low_ISR 0x001018 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - SetPinLATFromRPn 0x006a6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - SetPinTRISFromRPn 0x006aca program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - Sq16 0x009376 program static source\squareroot.s - Sqrt 0x009290 program extern source\squareroot.s - Sqrt16 0x0092ba program static source\squareroot.s - Sqrt32 0x009300 program static source\squareroot.s - Squar16 0x00930e program static source\squareroot.s - Square8 0x0092c2 program static source\squareroot.s - TAGTB32 0x008496 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\gtFP.asm - TALTB32 0x0084a8 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\ltFP.asm - USBCBCheckOtherReq 0x0091ae program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBErrorHandler 0x0091ac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBInitEP 0x0091b4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBSendResume 0x0091b8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBStdSetDscHandler 0x0091b2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBSuspend 0x0091a6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBWakeFromSuspend 0x0091a8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCB_SOF_Handler 0x0091aa program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCDCEventHandler 0x00874e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - USBCancelIO 0x00738c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCheckCDCRequest 0x008670 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - USBCheckStdRequest 0x00798c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBConfigureEndpoint 0x00744c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPAllowDataStage 0x00740e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -USBCtrlEPAllowStatusStage 0x0073c2 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPService 0x007830 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPServiceComplete 0x0074a8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfInHandler 0x007912 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfOutHandler 0x0078f4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfRxService 0x007582 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfSetupHandler 0x0078be program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfTxService 0x007502 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBDeviceInit 0x007060 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBDeviceTasks 0x00712c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBEnableEndpoint 0x007286 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStallEndpoint 0x00735a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStallHandler 0x0077de program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdFeatureReqHandler 0x007a34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdGetDscHandler 0x0076c2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdGetStatusHandler 0x007768 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdSetCfgHandler 0x00764a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBSuspend 0x007800 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBTransferOnePacket 0x0072ce program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBWakeFromSuspend 0x007816 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USB_CD_Ptr 0x0097d9 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c -USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + SetPinLATFromRPn 0x006a50 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + SetPinTRISFromRPn 0x006aac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + Sq16 0x009346 program static source\squareroot.s + Sqrt 0x009260 program extern source\squareroot.s + Sqrt16 0x00928a program static source\squareroot.s + Sqrt32 0x0092d0 program static source\squareroot.s + Squar16 0x0092de program static source\squareroot.s + Square8 0x009292 program static source\squareroot.s + TAGTB32 0x008466 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\gtFP.asm + TALTB32 0x008478 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\ltFP.asm + USBCBCheckOtherReq 0x00917e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBErrorHandler 0x00917c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBInitEP 0x009184 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBSendResume 0x009188 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBStdSetDscHandler 0x009182 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBSuspend 0x009176 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBWakeFromSuspend 0x009178 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCB_SOF_Handler 0x00917a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCDCEventHandler 0x00871e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + USBCancelIO 0x00735c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCheckCDCRequest 0x008640 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + USBCheckStdRequest 0x00795c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBConfigureEndpoint 0x00741c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPAllowDataStage 0x0073de program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +USBCtrlEPAllowStatusStage 0x007392 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPService 0x007800 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPServiceComplete 0x007478 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfInHandler 0x0078e2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfOutHandler 0x0078c4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfRxService 0x007552 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfSetupHandler 0x00788e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfTxService 0x0074d2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBDeviceInit 0x007030 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBDeviceTasks 0x0070fc program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBEnableEndpoint 0x007256 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStallEndpoint 0x00732a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStallHandler 0x0077ae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdFeatureReqHandler 0x007a04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdGetDscHandler 0x007692 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdGetStatusHandler 0x007738 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdSetCfgHandler 0x00761a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBSuspend 0x0077d0 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBTransferOnePacket 0x00729e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBWakeFromSuspend 0x0077e6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USB_CD_Ptr 0x0097a7 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c +USER_USB_CALLBACK_EVENT_HANDLER 0x0091cc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c UserInit 0x0048ce program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - Write1USART 0x009858 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1write.c - WriteBytesFlash 0x008f64 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\WriteBytesFlash.c - _2jContinue 0x009844 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - _3jEnd 0x00984e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - __FpCompare 0x0084ba program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - __FpExit 0x008570 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpPack 0x00859c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnNaN 0x008564 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnNegInf 0x008576 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnNegZero 0x00858e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnPosInf 0x00857c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnPosZero 0x008596 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnSignInf 0x008572 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnSignZero 0x00858a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnW 0x0085f4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpUnPackA 0x008614 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - __FpUnPackB 0x008644 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - ___case_0_lbl00261 0x0057dc program static - ___case_1_lbl00262 0x0057dc program static - ___case_2_lbl00260 0x0057c8 program static - ___case_3_lbl00264 0x0057e2 program static - ___default_lbl00263 0x0057dc program static - ___else_lbl00237 0x005506 program static - ___else_lbl00240 0x00554e program static - ___else_lbl00242 0x00559a program static - ___else_lbl00244 0x00557e program static - ___else_lbl00249 0x005634 program static - ___else_lbl00251 0x005618 program static - ___else_lbl00253 0x005664 program static - ___else_lbl00256 0x005704 program static - ___else_lbl00258 0x005740 program static - ___else_lbl00266 0x0057b2 program static - ___else_lbl00268 0x005840 program static - ___else_lbl00270 0x00581e program static - ___else_lbl00272 0x0058aa program static - ___else_lbl00274 0x005870 program static - ___else_lbl00276 0x005914 program static - ___else_lbl00278 0x0058da program static - ___else_lbl00280 0x00597a program static - ___else_lbl00282 0x005942 program static - ___else_lbl00286 0x005a08 program static - ___else_lbl00288 0x0059ee program static - ___else_lbl00290 0x005a50 program static - ___else_lbl00292 0x005a36 program static - ___else_lbl00294 0x005a9e program static - ___else_lbl00296 0x005a82 program static - ___else_lbl00298 0x005aa4 program static - ___else_lbl00300 0x005a56 program static - ___else_lbl00302 0x005a0e program static - ___else_lbl00304 0x0059c8 program static - ___else_lbl00306 0x005980 program static - ___else_lbl00308 0x00591a program static - ___else_lbl00310 0x0058b0 program static - ___else_lbl00312 0x005846 program static - ___else_lbl00314 0x0057f6 program static - ___else_lbl00316 0x005774 program static - ___else_lbl00318 0x005746 program static - ___else_lbl00320 0x00570e program static - ___else_lbl00322 0x0056d2 program static - ___else_lbl00324 0x0056a2 program static - ___else_lbl00326 0x00566c program static - ___else_lbl00328 0x00563a program static - ___else_lbl00330 0x0055ee program static - ___else_lbl00332 0x0055a0 program static - ___else_lbl00334 0x005554 program static - ___else_lbl00336 0x00550c program static + Write1USART 0x009826 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1write.c + WriteBytesFlash 0x008f34 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\WriteBytesFlash.c + _2jContinue 0x009812 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + _3jEnd 0x00981c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + __FpCompare 0x00848a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + __FpExit 0x008540 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpPack 0x00856c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnNaN 0x008534 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnNegInf 0x008546 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnNegZero 0x00855e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnPosInf 0x00854c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnPosZero 0x008566 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnSignInf 0x008542 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnSignZero 0x00855a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnW 0x0085c4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpUnPackA 0x0085e4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + __FpUnPackB 0x008614 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + ___case_0_lbl00261 0x0057e0 program static + ___case_1_lbl00262 0x0057e0 program static + ___case_2_lbl00260 0x0057cc program static + ___case_3_lbl00264 0x0057e6 program static + ___default_lbl00263 0x0057e0 program static + ___else_lbl00237 0x00550a program static + ___else_lbl00240 0x005552 program static + ___else_lbl00242 0x00559e program static + ___else_lbl00244 0x005582 program static + ___else_lbl00249 0x005638 program static + ___else_lbl00251 0x00561c program static + ___else_lbl00253 0x005668 program static + ___else_lbl00256 0x005708 program static + ___else_lbl00258 0x005744 program static + ___else_lbl00266 0x0057b6 program static + ___else_lbl00268 0x005844 program static + ___else_lbl00270 0x005822 program static + ___else_lbl00272 0x0058ae program static + ___else_lbl00274 0x005874 program static + ___else_lbl00276 0x005918 program static + ___else_lbl00278 0x0058de program static + ___else_lbl00280 0x00597e program static + ___else_lbl00282 0x005946 program static + ___else_lbl00286 0x005a0c program static + ___else_lbl00288 0x0059f2 program static + ___else_lbl00290 0x005a54 program static + ___else_lbl00292 0x005a3a program static + ___else_lbl00294 0x005aa2 program static + ___else_lbl00296 0x005a86 program static + ___else_lbl00298 0x005aa8 program static + ___else_lbl00300 0x005a5a program static + ___else_lbl00302 0x005a12 program static + ___else_lbl00304 0x0059cc program static + ___else_lbl00306 0x005984 program static + ___else_lbl00308 0x00591e program static + ___else_lbl00310 0x0058b4 program static + ___else_lbl00312 0x00584a program static + ___else_lbl00314 0x0057fa program static + ___else_lbl00316 0x005778 program static + ___else_lbl00318 0x00574a program static + ___else_lbl00320 0x005712 program static + ___else_lbl00322 0x0056d6 program static + ___else_lbl00324 0x0056a6 program static + ___else_lbl00326 0x005670 program static + ___else_lbl00328 0x00563e program static + ___else_lbl00330 0x0055f2 program static + ___else_lbl00332 0x0055a4 program static + ___else_lbl00334 0x005558 program static + ___else_lbl00336 0x005510 program static ___for_lbl00230 0x0019da program static ___for_lbl00231 0x0019de program static ___for_lbl00232 0x00197e program static ___for_lbl00233 0x001ab0 program static ___for_lbl00234 0x001ab4 program static ___for_lbl00235 0x001a9c program static - ___for_lbl00460 0x0062ac program static - ___for_lbl00461 0x0062b0 program static - ___for_lbl00464 0x006296 program static - ___if_lbl00005 0x0090ac program static - ___if_lbl00006 0x0090ce program static - ___if_lbl00007 0x0090e6 program static - ___if_lbl00234 0x0054c4 program static - ___if_lbl00236 0x00550a program static - ___if_lbl00239 0x005552 program static - ___if_lbl00241 0x00559e program static - ___if_lbl00243 0x00559e program static - ___if_lbl00245 0x0055dc program static - ___if_lbl00248 0x005638 program static - ___if_lbl00250 0x005638 program static - ___if_lbl00252 0x00566a program static - ___if_lbl00254 0x0056a0 program static - ___if_lbl00255 0x00570c program static - ___if_lbl00257 0x005744 program static - ___if_lbl00265 0x0057f0 program static - ___if_lbl00267 0x005844 program static - ___if_lbl00269 0x005844 program static - ___if_lbl00271 0x0058ae program static - ___if_lbl00273 0x0058ae program static - ___if_lbl00275 0x005918 program static - ___if_lbl00277 0x005918 program static - ___if_lbl00279 0x00597e program static - ___if_lbl00281 0x00597e program static - ___if_lbl00285 0x005a0c program static - ___if_lbl00287 0x005a0c program static - ___if_lbl00289 0x005a54 program static - ___if_lbl00291 0x005a54 program static - ___if_lbl00293 0x005aa2 program static - ___if_lbl00295 0x005aa2 program static - ___if_lbl00297 0x005aa8 program static - ___if_lbl00299 0x005aa8 program static - ___if_lbl00301 0x005aa8 program static - ___if_lbl00303 0x005aa8 program static - ___if_lbl00305 0x005aa8 program static - ___if_lbl00307 0x005aa8 program static - ___if_lbl00309 0x005aa8 program static - ___if_lbl00311 0x005aa8 program static - ___if_lbl00313 0x005aa8 program static - ___if_lbl00315 0x005aa8 program static - ___if_lbl00317 0x005aa8 program static - ___if_lbl00319 0x005aa8 program static - ___if_lbl00321 0x005aa8 program static - ___if_lbl00323 0x005aa8 program static - ___if_lbl00325 0x005aa8 program static - ___if_lbl00327 0x005aa8 program static - ___if_lbl00329 0x005aa8 program static - ___if_lbl00331 0x005aa8 program static - ___if_lbl00333 0x005aa8 program static - ___if_lbl00335 0x005aa8 program static - ___return_lbl00000 0x009822 program static - ___return_lbl00000 0x009900 program static - ___return_lbl00000 0x0098ea program static - ___return_lbl00000 0x00968a program static + ___for_lbl00460 0x00628e program static + ___for_lbl00461 0x006292 program static + ___for_lbl00464 0x006278 program static + ___if_lbl00005 0x00907c program static + ___if_lbl00006 0x00909e program static + ___if_lbl00007 0x0090b6 program static + ___if_lbl00234 0x0054c8 program static + ___if_lbl00236 0x00550e program static + ___if_lbl00239 0x005556 program static + ___if_lbl00241 0x0055a2 program static + ___if_lbl00243 0x0055a2 program static + ___if_lbl00245 0x0055e0 program static + ___if_lbl00248 0x00563c program static + ___if_lbl00250 0x00563c program static + ___if_lbl00252 0x00566e program static + ___if_lbl00254 0x0056a4 program static + ___if_lbl00255 0x005710 program static + ___if_lbl00257 0x005748 program static + ___if_lbl00265 0x0057f4 program static + ___if_lbl00267 0x005848 program static + ___if_lbl00269 0x005848 program static + ___if_lbl00271 0x0058b2 program static + ___if_lbl00273 0x0058b2 program static + ___if_lbl00275 0x00591c program static + ___if_lbl00277 0x00591c program static + ___if_lbl00279 0x005982 program static + ___if_lbl00281 0x005982 program static + ___if_lbl00285 0x005a10 program static + ___if_lbl00287 0x005a10 program static + ___if_lbl00289 0x005a58 program static + ___if_lbl00291 0x005a58 program static + ___if_lbl00293 0x005aa6 program static + ___if_lbl00295 0x005aa6 program static + ___if_lbl00297 0x005aac program static + ___if_lbl00299 0x005aac program static + ___if_lbl00301 0x005aac program static + ___if_lbl00303 0x005aac program static + ___if_lbl00305 0x005aac program static + ___if_lbl00307 0x005aac program static + ___if_lbl00309 0x005aac program static + ___if_lbl00311 0x005aac program static + ___if_lbl00313 0x005aac program static + ___if_lbl00315 0x005aac program static + ___if_lbl00317 0x005aac program static + ___if_lbl00319 0x005aac program static + ___if_lbl00321 0x005aac program static + ___if_lbl00323 0x005aac program static + ___if_lbl00325 0x005aac program static + ___if_lbl00327 0x005aac program static + ___if_lbl00329 0x005aac program static + ___if_lbl00331 0x005aac program static + ___if_lbl00333 0x005aac program static + ___if_lbl00335 0x005aac program static + ___return_lbl00000 0x0097f0 program static + ___return_lbl00000 0x009750 program static + ___return_lbl00000 0x0098b8 program static ___return_lbl00000 0x001004 program static - ___return_lbl00000 0x00912a program static - ___return_lbl00000 0x009782 program static - ___return_lbl00001 0x00960e program static + ___return_lbl00000 0x0090fa program static + ___return_lbl00000 0x009658 program static + ___return_lbl00000 0x0098ce program static ___return_lbl00001 0x00100c program static + ___return_lbl00001 0x0095dc program static ___return_lbl00002 0x00101c program static ___return_lbl00052 0x004854 program static ___return_lbl00229 0x001b06 program static - ___return_lbl00233 0x005aae program static - ___return_lbl00459 0x0062b0 program static - ___return_lbl00465 0x0062c8 program static - ___return_lbl00466 0x0062d6 program static - ___switchexit_lbl00259 0x0057f0 program static - ___while_lbl00001 0x00904e program static - ___while_lbl00001 0x009658 program static - ___while_lbl00002 0x00912a program static - ___while_lbl00002 0x00968a program static - ___while_lbl00003 0x009072 program static - ___while_lbl00004 0x0090ae program static + ___return_lbl00233 0x005ab2 program static + ___return_lbl00459 0x006292 program static + ___return_lbl00465 0x0062aa program static + ___return_lbl00466 0x0062b8 program static + ___switchexit_lbl00259 0x0057f4 program static + ___while_lbl00001 0x00901e program static + ___while_lbl00001 0x009626 program static + ___while_lbl00002 0x0090fa program static + ___while_lbl00002 0x009658 program static + ___while_lbl00003 0x009042 program static + ___while_lbl00004 0x00907e program static ___while_lbl00053 0x00482a program static ___while_lbl00054 0x004854 program static - ___while_lbl00246 0x0055dc program static - ___while_lbl00247 0x0055e6 program static - ___while_lbl00283 0x00599c program static - ___while_lbl00284 0x0059c6 program static - ___while_lbl00462 0x00629e program static - ___while_lbl00463 0x0062ac program static - __init 0x009902 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\__init.c + ___while_lbl00246 0x0055e0 program static + ___while_lbl00247 0x0055ea program static + ___while_lbl00283 0x0059a0 program static + ___while_lbl00284 0x0059ca program static + ___while_lbl00462 0x006280 program static + ___while_lbl00463 0x00628e program static + __init 0x0098d0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\__init.c + __pa_0 0x007b2e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_0 0x00894c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_0 0x006b08 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_0 0x0080be program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_0 0x00389a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_0 0x0094ba program static E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c - __pa_0 0x00897c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_0 0x007b5e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_0 0x008e86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_0 0x0080ee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_0 0x006b26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_0 0x008e56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_0 0x00948a program static E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c + __pa_1 0x0080ee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_1 0x008e70 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_1 0x008966 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_1 0x006b0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_1 0x0038a6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_1 0x006b2c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_1 0x008ea0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_1 0x008996 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_1 0x00811e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_1 0x007b66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_10 0x008a1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_10 0x006b7e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_10 0x007bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_10 0x00818c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_1 0x007b36 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_10 0x007b94 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_10 0x003a22 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_10 0x008f44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_100 0x006fcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_10 0x00815c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_10 0x006b5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_10 0x008f14 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_10 0x0089ec program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_100 0x006fb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_100 0x003f68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_101 0x006fd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_101 0x006fbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_101 0x003f72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_102 0x006fde program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_102 0x006fc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_102 0x003f7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_103 0x006fe6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_103 0x006fcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_103 0x003f86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_104 0x006fee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_104 0x006fd8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_104 0x003f90 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_105 0x006fe0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_105 0x003f9a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_105 0x006ff6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_106 0x006fe8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_106 0x003fa4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_106 0x006ffe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_107 0x006ff2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_107 0x003fae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_107 0x00700a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_108 0x003fb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_108 0x007012 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_109 0x00701a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_108 0x006ff8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_109 0x003ffc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_11 0x007bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_11 0x006b88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_11 0x008196 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_109 0x007000 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_11 0x008166 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_11 0x003a2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_11 0x008f4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_11 0x008a2a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_11 0x008f1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_11 0x007ba4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_11 0x006b68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_11 0x0089fa program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c __pa_110 0x00400a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_110 0x007020 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_110 0x007006 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_111 0x004014 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_111 0x007028 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_111 0x007014 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_112 0x004024 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_112 0x00702e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_112 0x00701c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_113 0x007026 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_113 0x004036 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_113 0x00703c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_114 0x00403e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_114 0x007044 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_115 0x004052 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_115 0x00704e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_116 0x007058 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_116 0x00405e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_117 0x004068 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_118 0x00408e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_119 0x004096 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_12 0x00819e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_12 0x006b92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_12 0x00816e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_12 0x008f28 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_12 0x007bae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_12 0x006b76 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_12 0x003a3c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_12 0x008f58 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_12 0x007bde program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_120 0x0040a4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_121 0x0040be program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_122 0x0040de program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -477,10 +474,10 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_127 0x004124 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_128 0x004136 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_129 0x004148 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_13 0x00817e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_13 0x007bc2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_13 0x006b8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_13 0x003a46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_13 0x007bf2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_13 0x0081ae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_13 0x006b9a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_130 0x004150 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_131 0x004158 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_132 0x004162 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -491,10 +488,10 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_137 0x0041a0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_138 0x0041b2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_139 0x0041c4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_14 0x006ba8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_14 0x0081b8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_14 0x008188 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_14 0x003a5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_14 0x007c06 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_14 0x006b98 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_14 0x007bd6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_140 0x0041d0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_141 0x0041dc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_142 0x0041ee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -505,10 +502,10 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_147 0x00422c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_148 0x004232 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_149 0x004238 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_15 0x0081c8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_15 0x008198 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_15 0x007be2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_15 0x003a66 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_15 0x006bc0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_15 0x007c12 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_15 0x006ba0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_150 0x004244 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_151 0x004250 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_152 0x00425e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -519,10 +516,10 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_157 0x004282 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_158 0x00428a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_159 0x004290 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_16 0x007c2c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_16 0x006bc8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_16 0x00819e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_16 0x006bac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_16 0x007bfc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_16 0x003a7a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_16 0x0081ce program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_160 0x0042c0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_161 0x0042d4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_162 0x0042e6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -533,9 +530,9 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_167 0x004352 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_168 0x00435e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_169 0x00436a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_17 0x006bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_17 0x0081de program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_17 0x007c38 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_17 0x007c08 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_17 0x0081ae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_17 0x006bb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_17 0x003a8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_170 0x004382 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_171 0x00438e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -547,10 +544,10 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_177 0x0043d6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_178 0x0043e0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_179 0x0043e8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_18 0x0081b6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_18 0x007c14 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_18 0x003a92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_18 0x0081e6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_18 0x006bde program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_18 0x007c44 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_18 0x006bbe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_180 0x0043f6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_181 0x004404 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_182 0x00440a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -561,305 +558,305 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __pa_187 0x004434 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_188 0x00443c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_189 0x004444 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_19 0x0081c4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_19 0x007c1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_19 0x003a96 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_19 0x007c4c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_19 0x0081f4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_19 0x006be6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_19 0x006bc6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_190 0x004450 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_191 0x004456 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_192 0x004462 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_2 0x0089a6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_2 0x008128 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_2 0x008e8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_2 0x008976 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_2 0x006b16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_2 0x0080f8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_2 0x007b40 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_2 0x0038b2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_2 0x006b32 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_2 0x008eba program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_2 0x007b70 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_20 0x007c54 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_20 0x006bda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_20 0x0081ce program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_20 0x007c24 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_20 0x003aa0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_20 0x0081fe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_20 0x006bee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_21 0x006c02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_21 0x007c60 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_21 0x006be6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_21 0x003aac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_21 0x007c30 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_22 0x006bf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_22 0x003ab2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_22 0x006c0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_22 0x007c70 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_23 0x007c7e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_22 0x007c40 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_23 0x003aba program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_23 0x006c18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_23 0x007c4e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_23 0x006bfe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_24 0x007c5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_24 0x006c10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_24 0x003b04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_24 0x006c26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_24 0x007c8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_25 0x006c38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_25 0x003b0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_25 0x007c9a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_26 0x006c40 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_25 0x006c18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_25 0x007c6a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_26 0x003b30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_26 0x007ca8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_27 0x006c4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_26 0x006c24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_26 0x007c78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_27 0x003b44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_27 0x007cb2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_27 0x006c46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_27 0x007c82 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_28 0x007c9a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_28 0x003b5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_28 0x006c6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_28 0x007cca program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_28 0x006c54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_29 0x003b62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_29 0x007cd6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_29 0x006c7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_3 0x007b78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_3 0x0089b8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_3 0x006b3a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_3 0x008ed8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_3 0x008132 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_29 0x007ca6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_29 0x006c62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_3 0x006b1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_3 0x008988 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_3 0x007b48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_3 0x0038c8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_30 0x007cde program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_30 0x006c8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_3 0x008102 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_3 0x008ea8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_30 0x006c84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_30 0x007cae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_30 0x003b70 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_31 0x007cc2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_31 0x006c8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_31 0x003b78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_31 0x007cf2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_31 0x006cac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_32 0x007d04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_32 0x006cb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_32 0x003b80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_33 0x006cc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_33 0x007d12 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_32 0x007cd4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_32 0x006c9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_33 0x003b88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_34 0x006cca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_34 0x007d1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_33 0x006ca2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_33 0x007ce2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_34 0x003b90 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_35 0x006ce6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_35 0x007d26 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_34 0x006cbe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_34 0x007cec program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_35 0x003b98 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_36 0x006cf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_36 0x007d2c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_35 0x006cc8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_35 0x007cf6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_36 0x006cd2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_36 0x007cfc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_36 0x003ba0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_37 0x007d34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_37 0x007d04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_37 0x003ba8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_37 0x006cfa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_38 0x007d3a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_37 0x006cdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_38 0x006ce6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_38 0x003bb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_38 0x006d04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_39 0x007d48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_38 0x007d0a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_39 0x006cf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_39 0x003bd8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_39 0x006d0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_4 0x006b40 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_39 0x007d18 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_4 0x0089a2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c __pa_4 0x0038ea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_4 0x007b82 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_4 0x0089d2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_4 0x008ef0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_4 0x00813c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_4 0x007b52 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_4 0x006b22 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_4 0x00810c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_4 0x008ec0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c __pa_40 0x003bfc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_40 0x007d56 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_40 0x006d18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_41 0x007d64 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_41 0x006d30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_40 0x006d08 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_40 0x007d26 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_41 0x006d10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_41 0x007d34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_41 0x003c10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_42 0x007d6e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_42 0x007d3e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_42 0x003c22 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_42 0x006d38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_43 0x007d78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_42 0x006d1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_43 0x003c34 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_43 0x006d42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_43 0x006d26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_43 0x007d48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_44 0x007d50 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_44 0x003c46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_44 0x006d4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_44 0x007d80 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_44 0x006d32 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_45 0x007d5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_45 0x006d3c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_45 0x003c52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_45 0x006d5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_45 0x007d8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_46 0x003c68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_46 0x006d64 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_46 0x007d96 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_47 0x006d74 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_46 0x007d66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_46 0x006d4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_47 0x003c70 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_48 0x006d84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_47 0x006d5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_48 0x003c80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_48 0x006d6a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_49 0x003c84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_49 0x006d92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_5 0x008efa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_5 0x006b4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_5 0x0089dc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_49 0x006d78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_5 0x006b2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_5 0x0089ac program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_5 0x008eca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_5 0x00811c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_5 0x0038f2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_5 0x00814c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_5 0x007b8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_50 0x006da0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_5 0x007b5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_50 0x006d86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_50 0x003c90 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_51 0x006dae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_51 0x006d94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_51 0x003cb2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_52 0x006dbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_52 0x003cca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_53 0x006dca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_52 0x006da2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_53 0x003cd0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_54 0x006dd8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_53 0x006db0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_54 0x006dba program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_54 0x003cd6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_55 0x006dc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_55 0x003cea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_55 0x006de2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_56 0x003cfc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_56 0x006dec program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_56 0x006dcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_57 0x003d0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_57 0x006df6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_57 0x006dd2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_58 0x003d20 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_58 0x006dfe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_59 0x006e04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_58 0x006dda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_59 0x003d32 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_6 0x008150 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_6 0x008f06 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_59 0x006de8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_6 0x008ed6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_6 0x0089b4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_6 0x007b66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_6 0x0039bc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_6 0x006b54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_6 0x0089e4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_6 0x007b96 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_6 0x006b36 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_6 0x008120 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_60 0x006df2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_60 0x003d44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_60 0x006e0c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_61 0x006df8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_61 0x003d56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_61 0x006e1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_62 0x006e24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_62 0x006e02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_62 0x003d62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_63 0x006e0c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_63 0x003d68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_63 0x006e2a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_64 0x003d78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_64 0x006e30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_64 0x006e14 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_65 0x003d88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_65 0x006e3a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_65 0x006e1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_66 0x006e24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_66 0x003da0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_66 0x006e42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_67 0x003daa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_67 0x006e48 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_68 0x006e52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_67 0x006e2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_68 0x006e44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_68 0x003db4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_69 0x006e5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_69 0x003dbe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_7 0x0089f2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_7 0x008164 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_7 0x006b62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_7 0x008f16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_69 0x006e52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_7 0x008134 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_7 0x0089c2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_7 0x006b44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_7 0x0039c6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_7 0x007b9e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_70 0x006e72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_7 0x008ee6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_7 0x007b6e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_70 0x006e64 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_70 0x003dca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_71 0x006e80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_71 0x003dd6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_71 0x006e72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_72 0x003dec program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_72 0x006e92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_72 0x006e78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_73 0x003dfa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_73 0x006ea0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_73 0x006e88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_74 0x003e04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_74 0x006ea6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_74 0x006e98 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_75 0x003e0a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_75 0x006eb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_75 0x006ea2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_76 0x003e1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_76 0x006ec6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_76 0x006eac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_77 0x006eb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_77 0x003e2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_77 0x006ed0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_78 0x003e40 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_78 0x006eda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_79 0x006ee2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_78 0x006ebc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_79 0x003e52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_8 0x008f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_8 0x006b6c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_8 0x008a00 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_79 0x006ec2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_8 0x0039da program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_8 0x00816e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_8 0x007bae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_8 0x006b4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_8 0x008ef4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_8 0x007b7e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_8 0x00813e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_8 0x0089d0 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c __pa_80 0x003e64 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_80 0x006eea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_81 0x006ef0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_80 0x006ece program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_81 0x003e76 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_81 0x006edc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_82 0x003e88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_82 0x006efc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_83 0x006f0a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_82 0x006eea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_83 0x006ef2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_83 0x003e94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_84 0x006f18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_84 0x006efe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_84 0x003ea0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_85 0x006f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_85 0x006f0a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_85 0x003ea6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_86 0x006f30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_86 0x006f18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_86 0x003eb2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_87 0x006f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_87 0x003ebc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_87 0x006f3e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_88 0x006f4a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_88 0x006f2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_88 0x003ec6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_89 0x006f3c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_89 0x003ed0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_89 0x006f54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_9 0x006b74 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_9 0x008a0a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_9 0x008f2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_9 0x007bb8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_9 0x008180 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_9 0x006b56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_9 0x0089da program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_9 0x008efe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_9 0x007b88 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c __pa_9 0x003a1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_90 0x006f62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_9 0x008150 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c __pa_90 0x003ed8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __pa_90 0x006f48 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_91 0x006f52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_91 0x003ee8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_91 0x006f6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_92 0x006f5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_92 0x003ef8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_92 0x006f78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_93 0x006f66 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_93 0x003f08 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_93 0x006f82 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_94 0x006f8c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_94 0x006f6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_94 0x003f18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_95 0x006f94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_95 0x006f7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_95 0x003f26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_96 0x006f9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_96 0x006f88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_96 0x003f34 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_97 0x006faa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_97 0x006f92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_97 0x003f42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_98 0x006fb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_98 0x003f50 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_99 0x006fbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_98 0x006fa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c __pa_99 0x003f5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_0 0x008b86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_1 0x008d31 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_1 0x008b81 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_10 0x008c42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_10 0x008b4f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_11 0x008c19 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_11 0x008b46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_12 0x008bff program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_12 0x008b3b program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_13 0x008bfd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_13 0x008b30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_14 0x008bfa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_14 0x008b24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_15 0x008bf7 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_15 0x008b02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_16 0x008bf4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_16 0x008afc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_17 0x008bec program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_17 0x008adc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_18 0x008ad2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_18 0x008be4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_19 0x008acc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_19 0x008bdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_2 0x008d2d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_2 0x008b7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_20 0x008ac6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_20 0x008bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_21 0x008bcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_21 0x008aa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_22 0x008a7e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_22 0x008bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_23 0x008a5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_23 0x008bbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_24 0x008a36 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_24 0x008bb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_25 0x008b92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_26 0x008b8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_3 0x008b77 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_3 0x008d10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_4 0x008b72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_4 0x008cf6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_5 0x008cdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_5 0x008b6d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_6 0x008cbf program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_6 0x008b68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_7 0x008b63 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_7 0x008c9f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_8 0x008b5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_8 0x008c87 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_9 0x008c68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_9 0x008b58 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __tmplbl_149 0x006b6c program static - __tmplbl_150 0x006b6c program static - __tmplbl_165 0x006b6c program static - __tmplbl_166 0x006b6c program static - __tmplbl_167 0x006b6c program static + __pa_99 0x006faa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_0 0x008b56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_1 0x008b51 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_1 0x008d01 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_10 0x008b1f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_10 0x008c12 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_11 0x008b16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_11 0x008be9 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_12 0x008b0b program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_12 0x008bcf program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_13 0x008b00 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_13 0x008bcd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_14 0x008bca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_14 0x008af4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_15 0x008bc7 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_15 0x008ad2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_16 0x008acc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_16 0x008bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_17 0x008bbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_17 0x008aac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_18 0x008aa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_18 0x008bb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_19 0x008bac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_19 0x008a9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_2 0x008b4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_2 0x008cfd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_20 0x008a96 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_20 0x008ba4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_21 0x008b9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_21 0x008a72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_22 0x008b94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_22 0x008a4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_23 0x008b8c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_23 0x008a2a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_24 0x008b84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_24 0x008a06 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_25 0x008b62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_26 0x008b5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_3 0x008b47 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_3 0x008ce0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_4 0x008b42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_4 0x008cc6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_5 0x008b3d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_5 0x008cac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_6 0x008b38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_6 0x008c8f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_7 0x008b33 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_7 0x008c6f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_8 0x008c57 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_8 0x008b2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_9 0x008b28 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_9 0x008c38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __tmplbl_149 0x006b4e program static + __tmplbl_150 0x006b4e program static + __tmplbl_165 0x006b4e program static + __tmplbl_166 0x006b4e program static + __tmplbl_167 0x006b4e program static __tmplbl_197 0x003a8e program static __tmplbl_198 0x003c80 program static __tmplbl_199 0x003c80 program static @@ -867,29 +864,29 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __tmplbl_201 0x003c80 program static __tmplbl_202 0x003c80 program static __tmplbl_209 0x003a8e program static - __tmplbl_210 0x006b6c program static - __tmplbl_211 0x006b6c program static - __tmplbl_213 0x006b6c program static + __tmplbl_210 0x006b4e program static + __tmplbl_211 0x006b4e program static + __tmplbl_213 0x006b4e program static __tmplbl_213 0x003a8e program static __tmplbl_214 0x003c80 program static - __tmplbl_215 0x006b6c program static - __tmplbl_216 0x006b6c program static - __tmplbl_217 0x006b6c program static - __tmplbl_218 0x006b6c program static - __tmplbl_219 0x006b6c program static + __tmplbl_214 0x006b4e program static + __tmplbl_215 0x006b4e program static + __tmplbl_216 0x006b4e program static + __tmplbl_217 0x006b4e program static + __tmplbl_218 0x006b4e program static __tmplbl_221 0x003a8e program static - __tmplbl_223 0x006b6c program static - __tmplbl_224 0x006b6c program static - __tmplbl_225 0x006b6c program static + __tmplbl_222 0x006b4e program static + __tmplbl_223 0x006b4e program static + __tmplbl_224 0x006b4e program static __tmplbl_228 0x003a8e program static - __tmplbl_229 0x006b6c program static + __tmplbl_228 0x006b4e program static + __tmplbl_229 0x006b4e program static __tmplbl_230 0x003a8e program static - __tmplbl_230 0x006b6c program static - __tmplbl_234 0x006b6c program static - __tmplbl_236 0x006b6c program static + __tmplbl_233 0x006b4e program static + __tmplbl_235 0x006b4e program static __tmplbl_238 0x003a8e program static __tmplbl_239 0x003a8e program static - __tmplbl_24 0x007b96 program static + __tmplbl_24 0x007b66 program static __tmplbl_240 0x003a8e program static __tmplbl_241 0x003a8e program static __tmplbl_243 0x003a8e program static @@ -901,125 +898,125 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg __tmplbl_259 0x00427a program static __tmplbl_264 0x003a8e program static __tmplbl_266 0x003a8e program static - __tmplbl_35 0x007b96 program static + __tmplbl_35 0x007b66 program static __tmplbl_379 0x00438e program static - __tmplbl_38 0x007b96 program static + __tmplbl_38 0x007b66 program static __tmplbl_380 0x00438e program static __tmplbl_381 0x0040e6 program static __tmplbl_382 0x00438e program static - __tmplbl_39 0x007b96 program static - __tmplbl_40 0x007b96 program static - __tmplbl_81 0x0054fe program static - __tmplbl_82 0x0054e8 program static - __tmplbl_83 0x005546 program static - __tmplbl_84 0x005530 program static - __zero_memory 0x0093b0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - _do_cinit 0x009572 program extern C:\MCC18\src\traditional\startup\c018i.c - _false 0x00981e program static + __tmplbl_39 0x007b66 program static + __tmplbl_40 0x007b66 program static + __tmplbl_81 0x005502 program static + __tmplbl_82 0x0054ec program static + __tmplbl_83 0x00554a program static + __tmplbl_84 0x005534 program static + __zero_memory 0x009380 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + _do_cinit 0x009540 program extern C:\MCC18\src\traditional\startup\c018i.c + _false 0x0097ec program static _reset 0x001000 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - _startup 0x0098d0 program extern C:\MCC18\src\traditional\startup\c018i.c - baud1USART 0x0098ae program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1baud.c + _startup 0x00989e program extern C:\MCC18\src\traditional\startup\c018i.c + baud1USART 0x00987c program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1baud.c check_and_send_TX_data 0x004d64 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c check_high_water 0x004868 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c clear_StepCounters 0x003346 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c clear_parmaeter_globals 0x001928 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - compare_l 0x0093c6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - configDescriptor1 0x009796 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c - copy_loop 0x0095e4 program static - copy_one_byte 0x0095ea program static - device_dsc 0x009784 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c - done 0x00960e program static - done_copying 0x0095f8 program static - ebb_print 0x008d34 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_hex 0x008d6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_int 0x008e1a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_ram 0x008d56 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_uint 0x008de2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + compare_l 0x009396 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + configDescriptor1 0x009764 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c + copy_loop 0x0095b2 program static + copy_one_byte 0x0095b8 program static + device_dsc 0x009752 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c + done 0x0095dc program static + done_copying 0x0095c6 program static + ebb_print 0x008d04 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_hex 0x008d3e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_int 0x008dea program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_ram 0x008d26 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_uint 0x008db2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c ebb_putc 0x004d06 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_digit 0x0068b4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_number 0x006640 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_string 0x0065c6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_digit 0x006896 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_number 0x006622 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_string 0x0065aa program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c fill_stack 0x0047ea program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - getsUSBUSART 0x00878a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + getsUSBUSART 0x00875a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c high_ISR 0x001050 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - jANotInf 0x008304 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jANotInf 0x00825e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jANotZero 0x008272 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jAisNeg 0x008536 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jBothFinite 0x008312 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jBothNotZero 0x00831e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jBothNotZero 0x0084d8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jEQ 0x0084f4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jEnd 0x009856 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - jExch 0x008500 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jExit 0x008494 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jExpEQ 0x008546 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jFinal 0x00852a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jHaveZero 0x00831a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jI2F32Beg 0x008226 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - jLoop 0x009838 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - jLoop 0x00829a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jLoop 0x008468 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jLoopExit 0x00847c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMax 0x008438 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMaxNeg 0x00844a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMaxPos 0x00843c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jNE 0x0084f8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jNext 0x0082c0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jNoAdjust 0x0082be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jNoExch 0x008520 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jNoMatch 0x0098ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm - jNotInf 0x008456 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jPkLoop 0x0085aa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkRoundDone 0x0085f4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkRoundIt 0x0085dc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkShiftDone 0x0085c6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jReturnPosInf0 0x008580 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jRotate 0x008552 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jShift 0x00853c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jSignedZero 0x008268 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jSignsEQ 0x0084dc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jUnpkA1 0x00861e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkA2 0x008636 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkANZ 0x00862c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkB1 0x00864e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkB2 0x008666 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkBNZ 0x00865c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkNaN 0x008640 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jWr123 0x008442 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jWrZ123 0x008452 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jZero 0x008450 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jZero1and2 0x008584 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - loop 0x0098e0 program static - loop 0x0097ea program static - loop_h 0x0093be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - loop_l 0x0093c8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + jANotInf 0x0082d4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jANotInf 0x00822e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jANotZero 0x008242 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jAisNeg 0x008506 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jBothFinite 0x0082e2 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jBothNotZero 0x0082ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jBothNotZero 0x0084a8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jEQ 0x0084c4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jEnd 0x009824 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + jExch 0x0084d0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jExit 0x008464 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jExpEQ 0x008516 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jFinal 0x0084fa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jHaveZero 0x0082ea program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jI2F32Beg 0x0081f6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + jLoop 0x009806 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + jLoop 0x00826a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jLoop 0x008438 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jLoopExit 0x00844c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMax 0x008408 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMaxNeg 0x00841a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMaxPos 0x00840c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jNE 0x0084c8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jNext 0x008290 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jNoAdjust 0x00828e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jNoExch 0x0084f0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jNoMatch 0x00987a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm + jNotInf 0x008426 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jPkLoop 0x00857a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkRoundDone 0x0085c4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkRoundIt 0x0085ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkShiftDone 0x008596 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jReturnPosInf0 0x008550 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jRotate 0x008522 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jShift 0x00850c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jSignedZero 0x008238 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jSignsEQ 0x0084ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jUnpkA1 0x0085ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkA2 0x008606 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkANZ 0x0085fc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkB1 0x00861e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkB2 0x008636 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkBNZ 0x00862c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkNaN 0x008610 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jWr123 0x008412 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jWrZ123 0x008422 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jZero 0x008420 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jZero1and2 0x008554 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + loop 0x0098ae program static + loop 0x0097b8 program static + loop_h 0x00938e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + loop_l 0x009398 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm low_ISR 0x00446c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - main 0x009142 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - memset 0x009824 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - parse_AC_packet 0x005d1e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_A_packet 0x005df8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_BL_packet 0x0062ba program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_CK_packet 0x00635e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + main 0x009112 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + memset 0x0097f2 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + parse_AC_packet 0x005cf8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_A_packet 0x005dd2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_BL_packet 0x00629c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_CK_packet 0x006340 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_CM_packet 0x002370 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_CS_packet 0x003350 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_CU_packet 0x00546e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_C_packet 0x005bf2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_CU_packet 0x005472 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_C_packet 0x005bcc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_EM_packet 0x002df2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_ES_packet 0x002a9a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_HM_packet 0x0025a6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_I_packet 0x005dbe program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_I_packet 0x005d98 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_L3_packet 0x001d04 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_LM_packet 0x001c92 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_LT_packet 0x001e9e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_MR_packet 0x005ef2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_MW_packet 0x005ebc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_MR_packet 0x005ed4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_MW_packet 0x005e9e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_ND_packet 0x002e94 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_NI_packet 0x002e6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_O_packet 0x005d52 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PD_packet 0x005f30 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PI_packet 0x006068 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PO_packet 0x006152 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_O_packet 0x005d2c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PD_packet 0x005f12 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PI_packet 0x00604a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PO_packet 0x006134 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_QB_packet 0x002fa6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_QC_packet 0x002fce program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_QE_packet 0x002b68 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -1028,45 +1025,45 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\Egg parse_QM_packet 0x003256 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_QN_packet 0x002ef4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_QP_packet 0x002b38 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_QR_packet 0x0062d8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_QR_packet 0x0062ba program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_QS_packet 0x0032d8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_QT_packet 0x006586 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_QU_packet 0x005ac2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_RB_packet 0x0062ca program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_R_packet 0x005460 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_QT_packet 0x00656a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_QU_packet 0x005ac6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_RB_packet 0x0062ac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_R_packet 0x005464 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_SC_packet 0x001b10 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_SE_packet 0x003066 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_SL_packet 0x002f18 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_SM_packet 0x002348 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_SN_packet 0x002eb2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_SP_packet 0x002c84 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_SR_packet 0x0062f8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_ST_packet 0x00651c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_SR_packet 0x0062da program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_ST_packet 0x006502 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_T3_packet 0x001e72 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_TD_packet 0x001d7c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_TP_packet 0x002c38 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_TR_packet 0x002680 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - parse_V_packet 0x005dea program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_V_packet 0x005dc4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_XM_packet 0x002836 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_Y_packet 0x00335a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c parse_packet 0x004db0 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -populateDeviceStringWithName 0x006496 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - pow2x16 0x0098ec program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\pow2x16.c - print_command 0x0053de program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - print_line_ending 0x00541a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - print_status 0x006980 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +populateDeviceStringWithName 0x00647c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + pow2x16 0x0098ba program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\pow2x16.c + print_command 0x0053e2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + print_line_ending 0x00541e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + print_status 0x006962 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c process_QM 0x0031c6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c process_SP 0x002cfa program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c process_low_level_move 0x001ed8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c process_simple_motor_move_fp 0x002884 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c process_simple_rate_move_fp 0x0026a0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - putUSBUSART 0x008808 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - putrsUSBUSART 0x008860 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - putsUSBUSART 0x008820 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - st_version 0x0094c8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - test 0x00958c program static - toupper 0x009886 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm - zero_block 0x0093be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + putUSBUSART 0x0087d8 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + putrsUSBUSART 0x008830 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + putsUSBUSART 0x0087f0 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + st_version 0x009498 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + test 0x00955a program static + toupper 0x009854 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm + zero_block 0x00938e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm ADCON0 0x000fc2 data extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm ADCON0bits 0x000fc2 data extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm ADCON1 0x000fc1 data extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm @@ -1823,25 +1820,25 @@ process_simple_motor_move_fp 0x002884 program static D:\Projects\EggBot __pa_14 0x003a5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_15 0x003a66 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_16 0x003a7a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __tmplbl_258 0x003a8e program static + __tmplbl_221 0x003a8e program static + __tmplbl_230 0x003a8e program static + __tmplbl_243 0x003a8e program static + __tmplbl_228 0x003a8e program static + __tmplbl_213 0x003a8e program static __tmplbl_264 0x003a8e program static __tmplbl_266 0x003a8e program static __tmplbl_197 0x003a8e program static - __tmplbl_200 0x003a8e program static __pa_17 0x003a8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __tmplbl_209 0x003a8e program static - __tmplbl_213 0x003a8e program static - __tmplbl_221 0x003a8e program static - __tmplbl_228 0x003a8e program static - __tmplbl_230 0x003a8e program static + __tmplbl_244 0x003a8e program static + __tmplbl_246 0x003a8e program static + __tmplbl_200 0x003a8e program static + __tmplbl_248 0x003a8e program static __tmplbl_238 0x003a8e program static __tmplbl_239 0x003a8e program static - __tmplbl_240 0x003a8e program static __tmplbl_241 0x003a8e program static - __tmplbl_243 0x003a8e program static - __tmplbl_244 0x003a8e program static - __tmplbl_258 0x003a8e program static - __tmplbl_248 0x003a8e program static - __tmplbl_246 0x003a8e program static + __tmplbl_240 0x003a8e program static __pa_18 0x003a92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_19 0x003a96 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_20 0x003aa0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -1872,13 +1869,13 @@ process_simple_motor_move_fp 0x002884 program static D:\Projects\EggBot __pa_45 0x003c52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_46 0x003c68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_47 0x003c70 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __pa_48 0x003c80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __tmplbl_198 0x003c80 program static - __tmplbl_199 0x003c80 program static - __tmplbl_201 0x003c80 program static __tmplbl_202 0x003c80 program static + __tmplbl_201 0x003c80 program static + __tmplbl_199 0x003c80 program static __tmplbl_214 0x003c80 program static + __pa_48 0x003c80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __tmplbl_254 0x003c80 program static + __tmplbl_198 0x003c80 program static __pa_49 0x003c84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_50 0x003c90 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_51 0x003cb2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -2004,9 +2001,9 @@ process_simple_motor_move_fp 0x002884 program static D:\Projects\EggBot __pa_169 0x00436a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_170 0x004382 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_171 0x00438e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __tmplbl_382 0x00438e program static - __tmplbl_380 0x00438e program static __tmplbl_379 0x00438e program static + __tmplbl_380 0x00438e program static + __tmplbl_382 0x00438e program static __pa_172 0x004396 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_173 0x0043a8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c __pa_174 0x0043b6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -2039,628 +2036,625 @@ process_simple_motor_move_fp 0x002884 program static D:\Projects\EggBot ebb_putc 0x004d06 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c check_and_send_TX_data 0x004d64 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c parse_packet 0x004db0 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - print_command 0x0053de program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - print_line_ending 0x00541a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_R_packet 0x005460 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_CU_packet 0x00546e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ___if_lbl00234 0x0054c4 program static - __tmplbl_82 0x0054e8 program static - __tmplbl_81 0x0054fe program static - ___else_lbl00237 0x005506 program static - ___if_lbl00236 0x00550a program static - ___else_lbl00336 0x00550c program static - __tmplbl_84 0x005530 program static - __tmplbl_83 0x005546 program static - ___else_lbl00240 0x00554e program static - ___if_lbl00239 0x005552 program static - ___else_lbl00334 0x005554 program static - ___else_lbl00244 0x00557e program static - ___else_lbl00242 0x00559a program static - ___if_lbl00241 0x00559e program static - ___if_lbl00243 0x00559e program static - ___else_lbl00332 0x0055a0 program static - ___while_lbl00246 0x0055dc program static - ___if_lbl00245 0x0055dc program static - ___while_lbl00247 0x0055e6 program static - ___else_lbl00330 0x0055ee program static - ___else_lbl00251 0x005618 program static - ___else_lbl00249 0x005634 program static - ___if_lbl00248 0x005638 program static - ___if_lbl00250 0x005638 program static - ___else_lbl00328 0x00563a program static - ___else_lbl00253 0x005664 program static - ___if_lbl00252 0x00566a program static - ___else_lbl00326 0x00566c program static - ___if_lbl00254 0x0056a0 program static - ___else_lbl00324 0x0056a2 program static - ___else_lbl00322 0x0056d2 program static - ___else_lbl00256 0x005704 program static - ___if_lbl00255 0x00570c program static - ___else_lbl00320 0x00570e program static - ___else_lbl00258 0x005740 program static - ___if_lbl00257 0x005744 program static - ___else_lbl00318 0x005746 program static - ___else_lbl00316 0x005774 program static - ___else_lbl00266 0x0057b2 program static - ___case_2_lbl00260 0x0057c8 program static - ___default_lbl00263 0x0057dc program static - ___case_1_lbl00262 0x0057dc program static - ___case_0_lbl00261 0x0057dc program static - ___case_3_lbl00264 0x0057e2 program static - ___if_lbl00265 0x0057f0 program static - ___switchexit_lbl00259 0x0057f0 program static - ___else_lbl00314 0x0057f6 program static - ___else_lbl00270 0x00581e program static - ___else_lbl00268 0x005840 program static - ___if_lbl00267 0x005844 program static - ___if_lbl00269 0x005844 program static - ___else_lbl00312 0x005846 program static - ___else_lbl00274 0x005870 program static - ___else_lbl00272 0x0058aa program static - ___if_lbl00273 0x0058ae program static - ___if_lbl00271 0x0058ae program static - ___else_lbl00310 0x0058b0 program static - ___else_lbl00278 0x0058da program static - ___else_lbl00276 0x005914 program static - ___if_lbl00277 0x005918 program static - ___if_lbl00275 0x005918 program static - ___else_lbl00308 0x00591a program static - ___else_lbl00282 0x005942 program static - ___else_lbl00280 0x00597a program static - ___if_lbl00279 0x00597e program static - ___if_lbl00281 0x00597e program static - ___else_lbl00306 0x005980 program static - ___while_lbl00283 0x00599c program static - ___while_lbl00284 0x0059c6 program static - ___else_lbl00304 0x0059c8 program static - ___else_lbl00288 0x0059ee program static - ___else_lbl00286 0x005a08 program static - ___if_lbl00285 0x005a0c program static - ___if_lbl00287 0x005a0c program static - ___else_lbl00302 0x005a0e program static - ___else_lbl00292 0x005a36 program static - ___else_lbl00290 0x005a50 program static - ___if_lbl00289 0x005a54 program static - ___if_lbl00291 0x005a54 program static - ___else_lbl00300 0x005a56 program static - ___else_lbl00296 0x005a82 program static - ___else_lbl00294 0x005a9e program static - ___if_lbl00295 0x005aa2 program static - ___if_lbl00293 0x005aa2 program static - ___else_lbl00298 0x005aa4 program static - ___if_lbl00335 0x005aa8 program static - ___if_lbl00333 0x005aa8 program static - ___if_lbl00331 0x005aa8 program static - ___if_lbl00329 0x005aa8 program static - ___if_lbl00327 0x005aa8 program static - ___if_lbl00325 0x005aa8 program static - ___if_lbl00323 0x005aa8 program static - ___if_lbl00321 0x005aa8 program static - ___if_lbl00319 0x005aa8 program static - ___if_lbl00317 0x005aa8 program static - ___if_lbl00315 0x005aa8 program static - ___if_lbl00313 0x005aa8 program static - ___if_lbl00311 0x005aa8 program static - ___if_lbl00309 0x005aa8 program static - ___if_lbl00307 0x005aa8 program static - ___if_lbl00305 0x005aa8 program static - ___if_lbl00303 0x005aa8 program static - ___if_lbl00301 0x005aa8 program static - ___if_lbl00299 0x005aa8 program static - ___if_lbl00297 0x005aa8 program static - ___return_lbl00233 0x005aae program static - parse_QU_packet 0x005ac2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_C_packet 0x005bf2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - AnalogConfigure 0x005c4c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_AC_packet 0x005d1e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_O_packet 0x005d52 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_I_packet 0x005dbe program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_V_packet 0x005dea program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_A_packet 0x005df8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_MW_packet 0x005ebc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_MR_packet 0x005ef2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PD_packet 0x005f30 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PI_packet 0x006068 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_PO_packet 0x006152 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - LongDelay 0x00628a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ___for_lbl00464 0x006296 program static - ___while_lbl00462 0x00629e program static - ___while_lbl00463 0x0062ac program static - ___for_lbl00460 0x0062ac program static - ___return_lbl00459 0x0062b0 program static - ___for_lbl00461 0x0062b0 program static - parse_BL_packet 0x0062ba program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ___return_lbl00465 0x0062c8 program static - parse_RB_packet 0x0062ca program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ___return_lbl00466 0x0062d6 program static - parse_QR_packet 0x0062d8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_SR_packet 0x0062f8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_CK_packet 0x00635e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -populateDeviceStringWithName 0x006496 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_ST_packet 0x00651c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - parse_QT_packet 0x006586 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_string 0x0065c6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_number 0x006640 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - extract_digit 0x0068b4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - print_status 0x006980 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - BlinkUSBStatus 0x006992 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - SetPinLATFromRPn 0x006a6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - SetPinTRISFromRPn 0x006aca program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_0 0x006b26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_1 0x006b2c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_2 0x006b32 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_3 0x006b3a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_4 0x006b40 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_5 0x006b4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_6 0x006b54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_7 0x006b62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __tmplbl_218 0x006b6c program static - __tmplbl_219 0x006b6c program static - __tmplbl_217 0x006b6c program static - __tmplbl_216 0x006b6c program static - __tmplbl_223 0x006b6c program static - __tmplbl_224 0x006b6c program static - __pa_8 0x006b6c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __tmplbl_225 0x006b6c program static - __tmplbl_229 0x006b6c program static - __tmplbl_230 0x006b6c program static - __tmplbl_234 0x006b6c program static - __tmplbl_236 0x006b6c program static - __tmplbl_165 0x006b6c program static - __tmplbl_150 0x006b6c program static - __tmplbl_149 0x006b6c program static - __tmplbl_166 0x006b6c program static - __tmplbl_167 0x006b6c program static - __tmplbl_210 0x006b6c program static - __tmplbl_211 0x006b6c program static - __tmplbl_213 0x006b6c program static - __tmplbl_215 0x006b6c program static - __pa_9 0x006b74 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_10 0x006b7e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_11 0x006b88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_12 0x006b92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_13 0x006b9a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_14 0x006ba8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_15 0x006bc0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_16 0x006bc8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_17 0x006bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_18 0x006bde program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_19 0x006be6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_20 0x006bee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_21 0x006c02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_22 0x006c0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_23 0x006c18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_24 0x006c26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_25 0x006c38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_26 0x006c40 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_27 0x006c4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_28 0x006c6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_29 0x006c7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_30 0x006c8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_31 0x006cac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_32 0x006cb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_33 0x006cc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_34 0x006cca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_35 0x006ce6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_36 0x006cf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_37 0x006cfa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_38 0x006d04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_39 0x006d0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_40 0x006d18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_41 0x006d30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_42 0x006d38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_43 0x006d42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_44 0x006d4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_45 0x006d5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_46 0x006d64 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_47 0x006d74 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_48 0x006d84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_49 0x006d92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_50 0x006da0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_51 0x006dae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_52 0x006dbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_53 0x006dca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_54 0x006dd8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_55 0x006de2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_56 0x006dec program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_57 0x006df6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_58 0x006dfe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_59 0x006e04 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_60 0x006e0c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_61 0x006e1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_62 0x006e24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_63 0x006e2a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_64 0x006e30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_65 0x006e3a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_66 0x006e42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_67 0x006e48 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_68 0x006e52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_69 0x006e5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_70 0x006e72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_71 0x006e80 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_72 0x006e92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_73 0x006ea0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_74 0x006ea6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_75 0x006eb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_76 0x006ec6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_77 0x006ed0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_78 0x006eda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_79 0x006ee2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_80 0x006eea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_81 0x006ef0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_82 0x006efc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_83 0x006f0a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_84 0x006f18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_85 0x006f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_86 0x006f30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_87 0x006f3e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_88 0x006f4a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_89 0x006f54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_90 0x006f62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_91 0x006f6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_92 0x006f78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_93 0x006f82 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_94 0x006f8c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_95 0x006f94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_96 0x006f9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_97 0x006faa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_98 0x006fb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_99 0x006fbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_100 0x006fcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_101 0x006fd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_102 0x006fde program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_103 0x006fe6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_104 0x006fee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_105 0x006ff6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_106 0x006ffe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_107 0x00700a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_108 0x007012 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_109 0x00701a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_110 0x007020 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_111 0x007028 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_112 0x00702e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_113 0x00703c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_114 0x007044 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_115 0x00704e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __pa_116 0x007058 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - USBDeviceInit 0x007060 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBDeviceTasks 0x00712c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBEnableEndpoint 0x007286 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBTransferOnePacket 0x0072ce program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStallEndpoint 0x00735a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCancelIO 0x00738c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -USBCtrlEPAllowStatusStage 0x0073c2 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPAllowDataStage 0x00740e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBConfigureEndpoint 0x00744c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPServiceComplete 0x0074a8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfTxService 0x007502 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfRxService 0x007582 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdSetCfgHandler 0x00764a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdGetDscHandler 0x0076c2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdGetStatusHandler 0x007768 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStallHandler 0x0077de program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBSuspend 0x007800 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBWakeFromSuspend 0x007816 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlEPService 0x007830 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfSetupHandler 0x0078be program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfOutHandler 0x0078f4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCtrlTrfInHandler 0x007912 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBCheckStdRequest 0x00798c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - USBStdFeatureReqHandler 0x007a34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_0 0x007b5e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_1 0x007b66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_2 0x007b70 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_3 0x007b78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_4 0x007b82 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_5 0x007b8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __tmplbl_40 0x007b96 program static - __tmplbl_24 0x007b96 program static - __tmplbl_35 0x007b96 program static - __pa_6 0x007b96 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __tmplbl_38 0x007b96 program static - __tmplbl_39 0x007b96 program static - __pa_7 0x007b9e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_8 0x007bae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_9 0x007bb8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_10 0x007bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_11 0x007bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_12 0x007bde program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_13 0x007bf2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_14 0x007c06 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_15 0x007c12 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_16 0x007c2c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_17 0x007c38 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_18 0x007c44 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_19 0x007c4c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_20 0x007c54 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_21 0x007c60 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_22 0x007c70 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_23 0x007c7e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_24 0x007c8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_25 0x007c9a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_26 0x007ca8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_27 0x007cb2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_28 0x007cca program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_29 0x007cd6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_30 0x007cde program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_31 0x007cf2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_32 0x007d04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_33 0x007d12 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_34 0x007d1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_35 0x007d26 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_36 0x007d2c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_37 0x007d34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_38 0x007d3a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_39 0x007d48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_40 0x007d56 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_41 0x007d64 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_42 0x007d6e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_43 0x007d78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_44 0x007d80 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_45 0x007d8c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - __pa_46 0x007d96 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c - RCServo2_Init 0x007d9e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -RCServo2_get_channel_from_RPn 0x007e4e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - RCServo2_S2_command 0x007e88 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - RCServo2_Move 0x007f36 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_0 0x0080ee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_1 0x00811e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_2 0x008128 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_3 0x008132 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_4 0x00813c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_5 0x00814c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_6 0x008150 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_7 0x008164 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_8 0x00816e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_9 0x008180 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_10 0x00818c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_11 0x008196 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_12 0x00819e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_13 0x0081ae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_14 0x0081b8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_15 0x0081c8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_16 0x0081ce program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_17 0x0081de program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_18 0x0081e6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_19 0x0081f4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - __pa_20 0x0081fe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c - FLO3232U 0x00820a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - FLO3232S 0x00820e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - jI2F32Beg 0x008226 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm - FPD32 0x008240 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jANotInf 0x00825e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jSignedZero 0x008268 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jANotZero 0x008272 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jLoop 0x00829a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jNoAdjust 0x0082be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - jNext 0x0082c0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm - FPM32 0x0082e6 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jANotInf 0x008304 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jBothFinite 0x008312 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jHaveZero 0x00831a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - jBothNotZero 0x00831e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm - FXD3232S 0x0083c0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - DA3232S 0x0083da program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232S 0x0083f0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SOK 0x0083fa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SNEG 0x0083fe program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - D3232SX 0x00841e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm - INT3232 0x008428 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMax 0x008438 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMaxPos 0x00843c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jWr123 0x008442 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jMaxNeg 0x00844a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jZero 0x008450 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jWrZ123 0x008452 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jNotInf 0x008456 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jLoop 0x008468 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jLoopExit 0x00847c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - jExit 0x008494 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm - TAGTB32 0x008496 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\gtFP.asm - TALTB32 0x0084a8 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\ltFP.asm - __FpCompare 0x0084ba program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jBothNotZero 0x0084d8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jSignsEQ 0x0084dc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jEQ 0x0084f4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jNE 0x0084f8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jExch 0x008500 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jNoExch 0x008520 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jFinal 0x00852a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jAisNeg 0x008536 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jShift 0x00853c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jExpEQ 0x008546 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - jRotate 0x008552 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm - __FpReturnNaN 0x008564 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpExit 0x008570 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnSignInf 0x008572 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnNegInf 0x008576 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnPosInf 0x00857c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jReturnPosInf0 0x008580 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jZero1and2 0x008584 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnSignZero 0x00858a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnNegZero 0x00858e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnPosZero 0x008596 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpPack 0x00859c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkLoop 0x0085aa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkShiftDone 0x0085c6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkRoundIt 0x0085dc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpReturnW 0x0085f4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - jPkRoundDone 0x0085f4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm - __FpUnPackA 0x008614 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkA1 0x00861e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkANZ 0x00862c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkA2 0x008636 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkNaN 0x008640 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - __FpUnPackB 0x008644 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkB1 0x00864e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkBNZ 0x00865c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - jUnpkB2 0x008666 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm - USBCheckCDCRequest 0x008670 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - CDCInitEP 0x00870c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - USBCDCEventHandler 0x00874e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - getsUSBUSART 0x00878a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - putUSBUSART 0x008808 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - putsUSBUSART 0x008820 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - putrsUSBUSART 0x008860 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - CDCTxService 0x0088a2 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_0 0x00897c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_1 0x008996 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_2 0x0089a6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_3 0x0089b8 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_4 0x0089d2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_5 0x0089dc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_6 0x0089e4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_7 0x0089f2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_8 0x008a00 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_9 0x008a0a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_10 0x008a1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __pa_11 0x008a2a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c - __string_24 0x008a36 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_23 0x008a5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_22 0x008a7e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_21 0x008aa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_20 0x008ac6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_19 0x008acc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_18 0x008ad2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_17 0x008adc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_16 0x008afc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_15 0x008b02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_14 0x008b24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_13 0x008b30 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_12 0x008b3b program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_11 0x008b46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_10 0x008b4f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_9 0x008b58 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_8 0x008b5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_7 0x008b63 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_6 0x008b68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_5 0x008b6d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_4 0x008b72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_3 0x008b77 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_2 0x008b7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_1 0x008b81 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_0 0x008b86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c - __string_26 0x008b8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_25 0x008b92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_24 0x008bb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_23 0x008bbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_22 0x008bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_21 0x008bcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_20 0x008bd4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_19 0x008bdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_18 0x008be4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_17 0x008bec program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_16 0x008bf4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_15 0x008bf7 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_14 0x008bfa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_13 0x008bfd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_12 0x008bff program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_11 0x008c19 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_10 0x008c42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_9 0x008c68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_8 0x008c87 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_7 0x008c9f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_6 0x008cbf program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_5 0x008cdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_4 0x008cf6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_3 0x008d10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_2 0x008d2d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - __string_1 0x008d31 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - ebb_print 0x008d34 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_ram 0x008d56 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_hex 0x008d6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_uint 0x008de2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - ebb_print_int 0x008e1a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_0 0x008e86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_1 0x008ea0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_2 0x008eba program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_3 0x008ed8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_4 0x008ef0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_5 0x008efa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_6 0x008f06 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_7 0x008f16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_8 0x008f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_9 0x008f2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_10 0x008f44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_11 0x008f4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - __pa_12 0x008f58 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c - WriteBytesFlash 0x008f64 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\WriteBytesFlash.c - ___while_lbl00001 0x00904e program static - ___while_lbl00003 0x009072 program static - ___if_lbl00005 0x0090ac program static - ___while_lbl00004 0x0090ae program static - ___if_lbl00006 0x0090ce program static - ___if_lbl00007 0x0090e6 program static - ___while_lbl00002 0x00912a program static - ___return_lbl00000 0x00912a program static - main 0x009142 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - InitializeSystem 0x009152 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBSuspend 0x0091a6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBWakeFromSuspend 0x0091a8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCB_SOF_Handler 0x0091aa program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBErrorHandler 0x0091ac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBCheckOtherReq 0x0091ae program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBStdSetDscHandler 0x0091b2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBInitEP 0x0091b4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - USBCBSendResume 0x0091b8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -USER_USB_CALLBACK_EVENT_HANDLER 0x0091fc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c - Sqrt 0x009290 program extern source\squareroot.s - Sqrt16 0x0092ba program static source\squareroot.s - Square8 0x0092c2 program static source\squareroot.s - NextBit 0x0092e2 program static source\squareroot.s - Done 0x0092f2 program static source\squareroot.s - Sqrt32 0x009300 program static source\squareroot.s - Squar16 0x00930e program static source\squareroot.s - NxtBt16 0x00934a program static source\squareroot.s - Done32 0x009366 program static source\squareroot.s - Sq16 0x009376 program static source\squareroot.s - __zero_memory 0x0093b0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - loop_h 0x0093be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - zero_block 0x0093be program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - compare_l 0x0093c6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - loop_l 0x0093c8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm - EraseFlash 0x0093d0 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c - __pa_0 0x0094ba program static E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c - st_version 0x0094c8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RPnTRISPort 0x0094f5 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RPnLATPort 0x009527 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - RPnBit 0x009559 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - _do_cinit 0x009572 program extern C:\MCC18\src\traditional\startup\c018i.c - test 0x00958c program static - copy_loop 0x0095e4 program static - copy_one_byte 0x0095ea program static - done_copying 0x0095f8 program static - done 0x00960e program static - ___return_lbl00001 0x00960e program static - ReadFlash 0x009610 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\ReadFlash.c - ___while_lbl00001 0x009658 program static - ___while_lbl00002 0x00968a program static - ___return_lbl00000 0x00968a program static - Open1USART 0x0096a2 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1open.c - FXM3232 0x009714 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxm3232.c - ___return_lbl00000 0x009782 program static - device_dsc 0x009784 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c - configDescriptor1 0x009796 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c - USB_CD_Ptr 0x0097d9 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c - FXD3232U 0x0097dc program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232u.c - loop 0x0097ea program static - _false 0x00981e program static - ___return_lbl00000 0x009822 program static - memset 0x009824 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - jLoop 0x009838 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - _2jContinue 0x009844 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - _3jEnd 0x00984e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - jEnd 0x009856 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm - Write1USART 0x009858 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1write.c - toupper 0x009886 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm - jNoMatch 0x0098ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm - baud1USART 0x0098ae program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1baud.c - _startup 0x0098d0 program extern C:\MCC18\src\traditional\startup\c018i.c - loop 0x0098e0 program static - ___return_lbl00000 0x0098ea program static - pow2x16 0x0098ec program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\pow2x16.c - ___return_lbl00000 0x009900 program static - __init 0x009902 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\__init.c + print_command 0x0053e2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + print_line_ending 0x00541e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_R_packet 0x005464 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_CU_packet 0x005472 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ___if_lbl00234 0x0054c8 program static + __tmplbl_82 0x0054ec program static + __tmplbl_81 0x005502 program static + ___else_lbl00237 0x00550a program static + ___if_lbl00236 0x00550e program static + ___else_lbl00336 0x005510 program static + __tmplbl_84 0x005534 program static + __tmplbl_83 0x00554a program static + ___else_lbl00240 0x005552 program static + ___if_lbl00239 0x005556 program static + ___else_lbl00334 0x005558 program static + ___else_lbl00244 0x005582 program static + ___else_lbl00242 0x00559e program static + ___if_lbl00241 0x0055a2 program static + ___if_lbl00243 0x0055a2 program static + ___else_lbl00332 0x0055a4 program static + ___if_lbl00245 0x0055e0 program static + ___while_lbl00246 0x0055e0 program static + ___while_lbl00247 0x0055ea program static + ___else_lbl00330 0x0055f2 program static + ___else_lbl00251 0x00561c program static + ___else_lbl00249 0x005638 program static + ___if_lbl00248 0x00563c program static + ___if_lbl00250 0x00563c program static + ___else_lbl00328 0x00563e program static + ___else_lbl00253 0x005668 program static + ___if_lbl00252 0x00566e program static + ___else_lbl00326 0x005670 program static + ___if_lbl00254 0x0056a4 program static + ___else_lbl00324 0x0056a6 program static + ___else_lbl00322 0x0056d6 program static + ___else_lbl00256 0x005708 program static + ___if_lbl00255 0x005710 program static + ___else_lbl00320 0x005712 program static + ___else_lbl00258 0x005744 program static + ___if_lbl00257 0x005748 program static + ___else_lbl00318 0x00574a program static + ___else_lbl00316 0x005778 program static + ___else_lbl00266 0x0057b6 program static + ___case_2_lbl00260 0x0057cc program static + ___case_0_lbl00261 0x0057e0 program static + ___case_1_lbl00262 0x0057e0 program static + ___default_lbl00263 0x0057e0 program static + ___case_3_lbl00264 0x0057e6 program static + ___switchexit_lbl00259 0x0057f4 program static + ___if_lbl00265 0x0057f4 program static + ___else_lbl00314 0x0057fa program static + ___else_lbl00270 0x005822 program static + ___else_lbl00268 0x005844 program static + ___if_lbl00267 0x005848 program static + ___if_lbl00269 0x005848 program static + ___else_lbl00312 0x00584a program static + ___else_lbl00274 0x005874 program static + ___else_lbl00272 0x0058ae program static + ___if_lbl00271 0x0058b2 program static + ___if_lbl00273 0x0058b2 program static + ___else_lbl00310 0x0058b4 program static + ___else_lbl00278 0x0058de program static + ___else_lbl00276 0x005918 program static + ___if_lbl00275 0x00591c program static + ___if_lbl00277 0x00591c program static + ___else_lbl00308 0x00591e program static + ___else_lbl00282 0x005946 program static + ___else_lbl00280 0x00597e program static + ___if_lbl00279 0x005982 program static + ___if_lbl00281 0x005982 program static + ___else_lbl00306 0x005984 program static + ___while_lbl00283 0x0059a0 program static + ___while_lbl00284 0x0059ca program static + ___else_lbl00304 0x0059cc program static + ___else_lbl00288 0x0059f2 program static + ___else_lbl00286 0x005a0c program static + ___if_lbl00287 0x005a10 program static + ___if_lbl00285 0x005a10 program static + ___else_lbl00302 0x005a12 program static + ___else_lbl00292 0x005a3a program static + ___else_lbl00290 0x005a54 program static + ___if_lbl00291 0x005a58 program static + ___if_lbl00289 0x005a58 program static + ___else_lbl00300 0x005a5a program static + ___else_lbl00296 0x005a86 program static + ___else_lbl00294 0x005aa2 program static + ___if_lbl00293 0x005aa6 program static + ___if_lbl00295 0x005aa6 program static + ___else_lbl00298 0x005aa8 program static + ___if_lbl00315 0x005aac program static + ___if_lbl00313 0x005aac program static + ___if_lbl00311 0x005aac program static + ___if_lbl00309 0x005aac program static + ___if_lbl00307 0x005aac program static + ___if_lbl00305 0x005aac program static + ___if_lbl00303 0x005aac program static + ___if_lbl00335 0x005aac program static + ___if_lbl00333 0x005aac program static + ___if_lbl00301 0x005aac program static + ___if_lbl00299 0x005aac program static + ___if_lbl00297 0x005aac program static + ___if_lbl00331 0x005aac program static + ___if_lbl00317 0x005aac program static + ___if_lbl00319 0x005aac program static + ___if_lbl00329 0x005aac program static + ___if_lbl00327 0x005aac program static + ___if_lbl00325 0x005aac program static + ___if_lbl00321 0x005aac program static + ___if_lbl00323 0x005aac program static + ___return_lbl00233 0x005ab2 program static + parse_QU_packet 0x005ac6 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_C_packet 0x005bcc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + AnalogConfigure 0x005c26 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_AC_packet 0x005cf8 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_O_packet 0x005d2c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_I_packet 0x005d98 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_V_packet 0x005dc4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_A_packet 0x005dd2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_MW_packet 0x005e9e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_MR_packet 0x005ed4 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PD_packet 0x005f12 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PI_packet 0x00604a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_PO_packet 0x006134 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + LongDelay 0x00626c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ___for_lbl00464 0x006278 program static + ___while_lbl00462 0x006280 program static + ___for_lbl00460 0x00628e program static + ___while_lbl00463 0x00628e program static + ___for_lbl00461 0x006292 program static + ___return_lbl00459 0x006292 program static + parse_BL_packet 0x00629c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ___return_lbl00465 0x0062aa program static + parse_RB_packet 0x0062ac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ___return_lbl00466 0x0062b8 program static + parse_QR_packet 0x0062ba program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_SR_packet 0x0062da program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_CK_packet 0x006340 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +populateDeviceStringWithName 0x00647c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_ST_packet 0x006502 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + parse_QT_packet 0x00656a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_string 0x0065aa program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_number 0x006622 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + extract_digit 0x006896 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + print_status 0x006962 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + BlinkUSBStatus 0x006974 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + SetPinLATFromRPn 0x006a50 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + SetPinTRISFromRPn 0x006aac program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_0 0x006b08 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_1 0x006b0e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_2 0x006b16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_3 0x006b1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_4 0x006b22 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_5 0x006b2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_6 0x006b36 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_7 0x006b44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __tmplbl_165 0x006b4e program static + __tmplbl_166 0x006b4e program static + __tmplbl_167 0x006b4e program static + __tmplbl_150 0x006b4e program static + __tmplbl_214 0x006b4e program static + __tmplbl_213 0x006b4e program static + __tmplbl_149 0x006b4e program static + __tmplbl_229 0x006b4e program static + __tmplbl_211 0x006b4e program static + __tmplbl_224 0x006b4e program static + __tmplbl_210 0x006b4e program static + __tmplbl_233 0x006b4e program static + __pa_8 0x006b4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __tmplbl_228 0x006b4e program static + __tmplbl_235 0x006b4e program static + __tmplbl_218 0x006b4e program static + __tmplbl_222 0x006b4e program static + __tmplbl_217 0x006b4e program static + __tmplbl_216 0x006b4e program static + __tmplbl_223 0x006b4e program static + __tmplbl_215 0x006b4e program static + __pa_9 0x006b56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_10 0x006b5e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_11 0x006b68 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_12 0x006b76 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_13 0x006b8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_14 0x006b98 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_15 0x006ba0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_16 0x006bac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_17 0x006bb6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_18 0x006bbe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_19 0x006bc6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_20 0x006bda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_21 0x006be6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_22 0x006bf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_23 0x006bfe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_24 0x006c10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_25 0x006c18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_26 0x006c24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_27 0x006c46 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_28 0x006c54 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_29 0x006c62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_30 0x006c84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_31 0x006c8e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_32 0x006c9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_33 0x006ca2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_34 0x006cbe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_35 0x006cc8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_36 0x006cd2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_37 0x006cdc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_38 0x006ce6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_39 0x006cf0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_40 0x006d08 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_41 0x006d10 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_42 0x006d1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_43 0x006d26 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_44 0x006d32 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_45 0x006d3c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_46 0x006d4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_47 0x006d5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_48 0x006d6a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_49 0x006d78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_50 0x006d86 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_51 0x006d94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_52 0x006da2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_53 0x006db0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_54 0x006dba program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_55 0x006dc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_56 0x006dcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_57 0x006dd2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_58 0x006dda program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_59 0x006de8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_60 0x006df2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_61 0x006df8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_62 0x006e02 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_63 0x006e0c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_64 0x006e14 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_65 0x006e1a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_66 0x006e24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_67 0x006e2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_68 0x006e44 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_69 0x006e52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_70 0x006e64 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_71 0x006e72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_72 0x006e78 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_73 0x006e88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_74 0x006e98 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_75 0x006ea2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_76 0x006eac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_77 0x006eb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_78 0x006ebc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_79 0x006ec2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_80 0x006ece program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_81 0x006edc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_82 0x006eea program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_83 0x006ef2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_84 0x006efe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_85 0x006f0a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_86 0x006f18 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_87 0x006f24 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_88 0x006f2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_89 0x006f3c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_90 0x006f48 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_91 0x006f52 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_92 0x006f5c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_93 0x006f66 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_94 0x006f6e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_95 0x006f7c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_96 0x006f88 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_97 0x006f92 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_98 0x006fa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_99 0x006faa program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_100 0x006fb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_101 0x006fbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_102 0x006fc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_103 0x006fcc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_104 0x006fd8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_105 0x006fe0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_106 0x006fe8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_107 0x006ff2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_108 0x006ff8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_109 0x007000 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_110 0x007006 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_111 0x007014 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_112 0x00701c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __pa_113 0x007026 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + USBDeviceInit 0x007030 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBDeviceTasks 0x0070fc program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBEnableEndpoint 0x007256 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBTransferOnePacket 0x00729e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStallEndpoint 0x00732a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCancelIO 0x00735c program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +USBCtrlEPAllowStatusStage 0x007392 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPAllowDataStage 0x0073de program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBConfigureEndpoint 0x00741c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPServiceComplete 0x007478 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfTxService 0x0074d2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfRxService 0x007552 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdSetCfgHandler 0x00761a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdGetDscHandler 0x007692 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdGetStatusHandler 0x007738 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStallHandler 0x0077ae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBSuspend 0x0077d0 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBWakeFromSuspend 0x0077e6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlEPService 0x007800 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfSetupHandler 0x00788e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfOutHandler 0x0078c4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCtrlTrfInHandler 0x0078e2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBCheckStdRequest 0x00795c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + USBStdFeatureReqHandler 0x007a04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_0 0x007b2e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_1 0x007b36 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_2 0x007b40 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_3 0x007b48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_4 0x007b52 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_5 0x007b5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_6 0x007b66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __tmplbl_39 0x007b66 program static + __tmplbl_38 0x007b66 program static + __tmplbl_40 0x007b66 program static + __tmplbl_35 0x007b66 program static + __tmplbl_24 0x007b66 program static + __pa_7 0x007b6e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_8 0x007b7e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_9 0x007b88 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_10 0x007b94 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_11 0x007ba4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_12 0x007bae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_13 0x007bc2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_14 0x007bd6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_15 0x007be2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_16 0x007bfc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_17 0x007c08 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_18 0x007c14 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_19 0x007c1c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_20 0x007c24 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_21 0x007c30 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_22 0x007c40 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_23 0x007c4e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_24 0x007c5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_25 0x007c6a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_26 0x007c78 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_27 0x007c82 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_28 0x007c9a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_29 0x007ca6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_30 0x007cae program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_31 0x007cc2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_32 0x007cd4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_33 0x007ce2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_34 0x007cec program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_35 0x007cf6 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_36 0x007cfc program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_37 0x007d04 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_38 0x007d0a program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_39 0x007d18 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_40 0x007d26 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_41 0x007d34 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_42 0x007d3e program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_43 0x007d48 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_44 0x007d50 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_45 0x007d5c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + __pa_46 0x007d66 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c + RCServo2_Init 0x007d6e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +RCServo2_get_channel_from_RPn 0x007e1e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + RCServo2_S2_command 0x007e58 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + RCServo2_Move 0x007f06 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_0 0x0080be program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_1 0x0080ee program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_2 0x0080f8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_3 0x008102 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_4 0x00810c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_5 0x00811c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_6 0x008120 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_7 0x008134 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_8 0x00813e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_9 0x008150 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_10 0x00815c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_11 0x008166 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_12 0x00816e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_13 0x00817e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_14 0x008188 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_15 0x008198 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_16 0x00819e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_17 0x0081ae program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_18 0x0081b6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_19 0x0081c4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + __pa_20 0x0081ce program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c + FLO3232U 0x0081da program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + FLO3232S 0x0081de program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + jI2F32Beg 0x0081f6 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\cast32FP.asm + FPD32 0x008210 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jANotInf 0x00822e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jSignedZero 0x008238 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jANotZero 0x008242 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jLoop 0x00826a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jNoAdjust 0x00828e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + jNext 0x008290 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\divFP.asm + FPM32 0x0082b6 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jANotInf 0x0082d4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jBothFinite 0x0082e2 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jHaveZero 0x0082ea program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + jBothNotZero 0x0082ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\mulFP.asm + FXD3232S 0x008390 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + DA3232S 0x0083aa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232S 0x0083c0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SOK 0x0083ca program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SNEG 0x0083ce program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + D3232SX 0x0083ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232s.asm + INT3232 0x0083f8 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMax 0x008408 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMaxPos 0x00840c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jWr123 0x008412 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jMaxNeg 0x00841a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jZero 0x008420 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jWrZ123 0x008422 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jNotInf 0x008426 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jLoop 0x008438 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jLoopExit 0x00844c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + jExit 0x008464 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\castFP32.asm + TAGTB32 0x008466 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\gtFP.asm + TALTB32 0x008478 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\ltFP.asm + __FpCompare 0x00848a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jBothNotZero 0x0084a8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jSignsEQ 0x0084ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jEQ 0x0084c4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jNE 0x0084c8 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jExch 0x0084d0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jNoExch 0x0084f0 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jFinal 0x0084fa program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jAisNeg 0x008506 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jShift 0x00850c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jExpEQ 0x008516 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + jRotate 0x008522 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\compFP.asm + __FpReturnNaN 0x008534 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpExit 0x008540 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnSignInf 0x008542 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnNegInf 0x008546 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnPosInf 0x00854c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jReturnPosInf0 0x008550 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jZero1and2 0x008554 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnSignZero 0x00855a program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnNegZero 0x00855e program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnPosZero 0x008566 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpPack 0x00856c program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkLoop 0x00857a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkShiftDone 0x008596 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkRoundIt 0x0085ac program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + jPkRoundDone 0x0085c4 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpReturnW 0x0085c4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\packFP.asm + __FpUnPackA 0x0085e4 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkA1 0x0085ee program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkANZ 0x0085fc program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkA2 0x008606 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkNaN 0x008610 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + __FpUnPackB 0x008614 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkB1 0x00861e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkBNZ 0x00862c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + jUnpkB2 0x008636 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\math\UnpackFP.asm + USBCheckCDCRequest 0x008640 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + CDCInitEP 0x0086dc program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + USBCDCEventHandler 0x00871e program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + getsUSBUSART 0x00875a program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + putUSBUSART 0x0087d8 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + putsUSBUSART 0x0087f0 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + putrsUSBUSART 0x008830 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + CDCTxService 0x008872 program extern D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_0 0x00894c program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_1 0x008966 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_2 0x008976 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_3 0x008988 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_4 0x0089a2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_5 0x0089ac program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_6 0x0089b4 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_7 0x0089c2 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_8 0x0089d0 program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_9 0x0089da program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_10 0x0089ec program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __pa_11 0x0089fa program static D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c + __string_24 0x008a06 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_23 0x008a2a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_22 0x008a4e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_21 0x008a72 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_20 0x008a96 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_19 0x008a9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_18 0x008aa2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_17 0x008aac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_16 0x008acc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_15 0x008ad2 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_14 0x008af4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_13 0x008b00 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_12 0x008b0b program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_11 0x008b16 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_10 0x008b1f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_9 0x008b28 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_8 0x008b2e program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_7 0x008b33 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_6 0x008b38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_5 0x008b3d program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_4 0x008b42 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_3 0x008b47 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_2 0x008b4c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_1 0x008b51 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_0 0x008b56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c + __string_26 0x008b5a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_25 0x008b62 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_24 0x008b84 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_23 0x008b8c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_22 0x008b94 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_21 0x008b9c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_20 0x008ba4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_19 0x008bac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_18 0x008bb4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_17 0x008bbc program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_16 0x008bc4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_15 0x008bc7 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_14 0x008bca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_13 0x008bcd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_12 0x008bcf program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_11 0x008be9 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_10 0x008c12 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_9 0x008c38 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_8 0x008c57 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_7 0x008c6f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_6 0x008c8f program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_5 0x008cac program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_4 0x008cc6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_3 0x008ce0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_2 0x008cfd program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + __string_1 0x008d01 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + ebb_print 0x008d04 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_ram 0x008d26 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_hex 0x008d3e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_uint 0x008db2 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + ebb_print_int 0x008dea program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_0 0x008e56 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_1 0x008e70 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_2 0x008e8a program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_3 0x008ea8 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_4 0x008ec0 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_5 0x008eca program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_6 0x008ed6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_7 0x008ee6 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_8 0x008ef4 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_9 0x008efe program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_10 0x008f14 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_11 0x008f1c program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + __pa_12 0x008f28 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c + WriteBytesFlash 0x008f34 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\WriteBytesFlash.c + ___while_lbl00001 0x00901e program static + ___while_lbl00003 0x009042 program static + ___if_lbl00005 0x00907c program static + ___while_lbl00004 0x00907e program static + ___if_lbl00006 0x00909e program static + ___if_lbl00007 0x0090b6 program static + ___while_lbl00002 0x0090fa program static + ___return_lbl00000 0x0090fa program static + main 0x009112 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + InitializeSystem 0x009122 program static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBSuspend 0x009176 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBWakeFromSuspend 0x009178 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCB_SOF_Handler 0x00917a program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBErrorHandler 0x00917c program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBCheckOtherReq 0x00917e program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBStdSetDscHandler 0x009182 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBInitEP 0x009184 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + USBCBSendResume 0x009188 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +USER_USB_CALLBACK_EVENT_HANDLER 0x0091cc program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c + Sqrt 0x009260 program extern source\squareroot.s + Sqrt16 0x00928a program static source\squareroot.s + Square8 0x009292 program static source\squareroot.s + NextBit 0x0092b2 program static source\squareroot.s + Done 0x0092c2 program static source\squareroot.s + Sqrt32 0x0092d0 program static source\squareroot.s + Squar16 0x0092de program static source\squareroot.s + NxtBt16 0x00931a program static source\squareroot.s + Done32 0x009336 program static source\squareroot.s + Sq16 0x009346 program static source\squareroot.s + __zero_memory 0x009380 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + zero_block 0x00938e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + loop_h 0x00938e program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + compare_l 0x009396 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + loop_l 0x009398 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\proc\p18f46j50.asm + EraseFlash 0x0093a0 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c + __pa_0 0x00948a program static E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\EraseFlash.c + st_version 0x009498 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + RPnTRISPort 0x0094c3 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + RPnLATPort 0x0094f5 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + RPnBit 0x009527 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + _do_cinit 0x009540 program extern C:\MCC18\src\traditional\startup\c018i.c + test 0x00955a program static + copy_loop 0x0095b2 program static + copy_one_byte 0x0095b8 program static + done_copying 0x0095c6 program static + ___return_lbl00001 0x0095dc program static + done 0x0095dc program static + ReadFlash 0x0095de program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\Flash\ReadFlash.c + ___while_lbl00001 0x009626 program static + ___return_lbl00000 0x009658 program static + ___while_lbl00002 0x009658 program static + Open1USART 0x009670 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1open.c + FXM3232 0x0096e2 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxm3232.c + ___return_lbl00000 0x009750 program static + device_dsc 0x009752 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c + configDescriptor1 0x009764 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c + USB_CD_Ptr 0x0097a7 program extern D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c + FXD3232U 0x0097aa program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\fxd3232u.c + loop 0x0097b8 program static + _false 0x0097ec program static + ___return_lbl00000 0x0097f0 program static + memset 0x0097f2 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + jLoop 0x009806 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + _2jContinue 0x009812 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + _3jEnd 0x00981c program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + jEnd 0x009824 program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\memset.asm + Write1USART 0x009826 program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1write.c + toupper 0x009854 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm + jNoMatch 0x00987a program static E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\toupper.asm + baud1USART 0x00987c program extern E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\u1baud.c + _startup 0x00989e program extern C:\MCC18\src\traditional\startup\c018i.c + loop 0x0098ae program static + ___return_lbl00000 0x0098b8 program static + pow2x16 0x0098ba program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\math\pow2x16.c + ___return_lbl00000 0x0098ce program static + __init 0x0098d0 program extern E:\3.46\pic18-lt\cxx-framework\src\traditional\stdclib\__init.c AllDone 0x000000 data static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c isr_i 0x000001 data static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c AxisActive 0x000002 data static D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c diff --git a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.cof b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.cof index 83c4d242db865dabe67e7263d632891933caa956..7373d106966f7ac5bf7cb5fc4580edaacddf9905 100644 GIT binary patch literal 661831 zcmc${30zcF8$W*UEHHpvV8k^O1Xnb7Q7aSIv}L%1rlRte7Ns*a)2p_>Z;eEjib{xP zW@=@nEw=BLP+Dph7dK`RW-cTmA~U0CyZpY-xp&yCUjCo|=lA)+=bU@abDr~@?K#hR z&N^wvmE6>4$KD;WPsi!gIL^pvIF1v)fvM&=1Kecj?}nZncdg>&;?-}19ygkt#?Ww;(JjV^aU&+J`(Hu9ev*I4` zDt)(wCBnXK#>CqvPDa9@Nq-M3pH{XbR`Gs_vc{|B-PsC5@ipTxf=HoWr5`oWOIadHr`w1l1kl0}=HXwn_nBMuG30*9KXoanH>h zH&+cplq>#1>Gne%6CL_fKZ-}S9qP9m0^8G%dbN|Uo@-}&e2(;u&nlTPp=_3aDeeJ3 zQf^=85*07^Y%e&}cB5wb^mZlSc_-m%xkNQ=Ch!a`@V-*<4z|Ht3cRi@@b;;AzqY}9 z6qWl=_2N*n!QIRMGhUjCcSk$r^9dBIJ#wfE=-U3P5Wg3BJ*1XnfQ#xSRgW%@ZwR%_Kf>M&dAv7h{ z>~N^gD&YK6dDB$9Q|;^@^UxOU=^synu5OJ&d?@NMyg+g9noF(Il~07d^xsRC&04U8 ziE6~3l7JVZc($vsmLG@Oj<*Bv zTeaf;vi?*VWd&ZDitrc15f|dWT;QEn@hC@a|3Y~Az^ha7LTud3vWe9@r39(fj3RX`=|PQ z2zVJPo|?^8R73RcM&WqK`48h$ zF(aJ~1@7ev9+kyT+*iLqsc>B8D^!j# zP35?|o#mL*&T=ejXE`d`S&oay?fq&wAX&LJYB^l5Q8~sol_L+{f2wB(u<7sdcJkG- zcJftiJNr?8q+Ox*9TNMEYB?6aLFJgBINZ*1R3rURKffY#03@owx7x{9 zTT#e=;=eSN-llf)mC(*|OalES@$irT>Jr=)9?cr}K$NqMf|ZACXATpRsDG+@QPKuM~bMt-J8lgs-5NS*Us_|YiD_1Z)bVGLvBA;%i9_5 zi)uN#eNE+vV&#}LGgF)b-%J&cWMR}cSok~0@ZuTX;5!%F7BAzt6jfL4i|`RD9z!OJ zhyJ{D*@8Q*aI1<{5y9L1IpFVE&jkj<{9?Io%l5jP0*mTy39PJ}7Wlo)$fXFEY_Y=6 zHct4(rspHLi{eE)*_Z5E`QkmiG)^L4fWd;yJ`bB}TNo0-RqN&c$#} zxHNAsa+gzgLty)+J1q+>F??U^0{CM1MA%-7S2WquEgb~Yd`?K86I z-s-pdtX_*&@Xn8`thIPYK83W1&N&PD@|t{d-MBy<;u(a4cAap@9>aGQ`r38;P(cH~ z)}AKt_FRFp>-jIOd#tB2KJbqVP+4-m3X`%?mQ<^r-($5)u+1H01w!S@{#YYrulR%I zXpeo5K2py9+#pfuQ?04XQ&;MFjj+eQP}D_*`2aKPqBOpRg*SS#-=8im6#1wK2IZsl zzJ*>ruOr<2g<`CV9SiKfo`sthz7;DW_S<@?AJSYZY)5GpZqf6#X5LpD4qI+;E))|% zh0;ij;(fol7mAvw4$QBKGWaN7^`a+)YTJ6a?zHFxJ%8G^r(4Z#jdXe>jJPLDQ~A=S zA(YPR10^poyz~22E_|(zbXSRdQP0cfhofpH(to9W;YRr*om6Sw3|d-zx8Ylx%Y07T6{JMvWlP*Hp@uQyH?2T1cfMYJD#NMcw-hTKR&d z!O~wMD!W1LcTlQt`~&v6MuOF6{Kjaf2|Ez_jPL<$q}GZi%C@Yc#1tqmNe`HcE;ObW zHT-2>DCb()0tyjQ8E8*{i@tmex!UG_H$t*^c9tGPSej7ZS>b*1)&Hl$LusZ7CL8%p zqQ5hJ{r{;ws^{y>NiySqb5DHF*)@Wc6)qq3)MxlDlIMWnw;4G}A1hZ`y?~{`@A2G< z*iKI_+`Ld_f79b&SbCm%5XBFZcLL+E=X%(&(lN7+PtDTv$MGGVsjE!gckJTmea9~@ zaBlZ}?%ArQLAB2b6*iqvZu{D!i*7*eglhhRSl>5YJeTyO$G??oQzO6S;iaW0RRwCl z9CiPo$G>HnM~9xzq38SaTGq}(N3%DfzweEfobNP=2DiSJ9@IrPT%i@INnUR&p_In#k zz`4Ajl}hv)StFF#z2Lwa@mSU|d%Ac$^SHe?YSIf193zxNUR2nRz85Wd#V)>5$iX9! zgQWvG;YhLpGIF-(LYY^LM93M0)T$wV@n%m$*{O`kqq{uu)KVqhMlU$ZBfdLkhP=R~C6Z?&EI1m=>j#O=v}pbhGCf;sohsH}QtY zd@?TFr&mQl7K-dmBs^@)H!M#k_>B=qu#)gGEG}6MtKQNvzN6lX& z)Y|_Pqd_UW)H;)m5&C-SsK{ByY;;vRqf3JJK00B|G&JrK>aW@*wA_ zjC)JMgU4e%2_aSw8AH*(Yc*9D?s zpu>Pi^x%;W(iZqNXyK7&Jzr`+V*N@e?T3)$qsw`4&(U>CeDIyQ*76lvL=O%hzR%xi zeB04ZW)}kj4%hJJ(nzK_4d9BoEc;7OK@x9@Gd89c8 z`1ktgt1&F9N~9i_b(c)NVB}t%l;%3@EOTn539bY9)+T8Le~G8@S0@h%#R=X*Uh?Kr zpBUugr6I27(L*Z?%jzHxc7^*`k8$$Sr-<#($rUnPqa^RLUam0T6sLddB&R>G!KsnP zoGQ67HTb?kx#)z(r-P!6^K)g7)I_OB=sRkY9r?= zscw`@TyUWeurHon+%wKGLOtZ`IgIVqwqNUR4w%qZ^1n=?kyBF3Ln<`V z*7O!_q=%r7iehgg=N0!*2{DFzpnOw|9Hf}&M{dqAYUN0!0;!Z^?5I%34sRI4Dye8Z zS5l4~DjFS?#>i1FHzPIrZo@Y{$y8JUorv&|GD;=XT^l%+aVo>ebr#0jw+W-|j|r*Z zP-QewXc@VmEv0=f*^ZchPBP%UiA&Ug|43`|qfEuf)7PxzBx_6o(k(c_gjvD?Z?5nG zQoX}Dw5dksdLak<;>-#gZ7Pt1au_}1Uj4&fw;Se}_keB4)b)Z9<(iHDEkW6~P z$fbD?s;&g@S>W~YLXJimxq;qll;m<$ZR#0Y2t)COVpd~rX0nB;?NMtv&3Y1Q(DIY& zYOJV%4rk=ndlik0xI~eNwMj-UK%qvAJ&*_qQM`frb!*w6z(ztEjfAi!DUk%}ppEPe zY0$~nD>52iMH+ml_I(5T_i^jd<-O1^L$Ir))O{{!a&GAJg~AEQh%&p!deZ7-a-dL+ z8O~xBV{|og!}q-dTt!Y4T5lFM*f(0Avu?6JZ#4*;?XOt7qgJU^2iA>cE#4Dus_~G& zhfB}DZQX6%0ZBW-mF?0C6T9;ABvIqzgm`HhLfKK5WTz`5RJUU zy35K714@$tf5rNy`K>q&y>GMkIIMka0E6zK1QUL`smrkVQ6B)I=zvg8#j zLd93Ix>ddc88=gvaWo3OVm@u7dBvGV;@aBA)1sn_DkIV>1FOoubRt!At@IPVJIvwo z87HN*>mo0_Vc%h|kaVsta*@-U(ugrG3gZXS@}y`OHNMJ|;unK*iPMW1BqJ$~wuQX- z3Us^5+tv8c4-oH?8vo};ick7vK;ErVcmp-jn!=0Hb57!XsQcgxYFJXqf3pEIe z^GUp;=-)m840Q4wcdXo2iCXTgE#tl)MRz<1J`t#BZbFe;fYY@Ov#| zofR1qA%iAC29=|)zK)c4Qp&d1A=7pyzdG=>WaJ4l?Mj(T9PsKz;(*sci)M$W0JU;D zjeMZ<7L!86)9K*xW~oc@CemEBWD+osdeO3IhaG0f$}ld>UGh`o8JJp_3os2Z)fwjt zPn7Hnt`c~DU!N1Ui1+hyIEP+%Dr>x~6Ls?K!jthU;__?}I}Ff(HSt>1t~Ordn_QO= z&}=tKQe9%8*KR@TwROdsn*fX0p_5Wl1||(kx+dw*x}E`E*5qrq$4M^W_1PUQ_1T)I zVhv9jku)-CR8l7VysXV9>Sjirmsd--NMXps&GKKTdzIv_yBg_sk)9BG#rLvZnfAJO zw9<-od22P&ifwsYn{(1#szb~^yE`LhpZGquwz*kP@mA-pLcAC9Hn+^1Qt}&oT>kY^ zIPx}D)@&awML;X1y5RDu^r3W=+!>p47qLT+THyqxURvi($q(UDepaj`+~L4gYNvI6 zL}5iIlTRn=#YznuJ$KC9v53_jv93z$k#seSm6|d-X-v}Cq<4fBU4Fv6_^GTpvVQxu(mVP{ z8%cof@+I(rU*z~&%a%T8Y%iK=LPRecDUZ|)&Z`U;M(0S9K7|J{bOsf+2C8X zDNOndlIvr8F*L(f&pf3k+0TQ+=VGLIDyzvCEBOA!`12v@X{;wcGjHX*Rr3g92Or!A zdGSZs3FBc>!nsyy0_)EB0LR3)|k}`GKP1tbk5%=Fd;fO0CiTE)Nyv zcjknw&LzU<@f<%tcCIa}XkMU3)Jk7i2==*cyrcu=aq1Jtk7%a zHMwhYR$^sh1@wI8-lA39g@A9-h2RA%x9H)Hkk=HhA-BY+I6x)mEl>?(R96>-ODhYM zu+=%>oSbQ>Um>4!MC|wzwZX;fWP=b9&&!u2JtRbP&CIh=A84v4=ou}1vGZbixm=1^ z+qcLO>{qlr*uN+zIH2gs;M*@>E_%cb!_yd7I2>92u1HUKm6M&xx z{9f(A&ntEW*Ay=gt}V_9t}FiE`56rQLqLBh=nrcL{o%kL0sN7`AJq>0B;Y3lzc=vv zv;#jM`F|GqFF^j+wLjTqgvrbmbPPS68{ zc%vLubg)5iXe?R_=ZLYyTH-9cB~jq#>nnLNo1}fpFJ;{Jj-}ufYm7)-gYm=>_HJIG zj^ALW6@v}-I8lTCW5oDsoUfIqq4(+`>y7i{We?zcFir^SS0`jbR@awo3f7lA53@Pw zFL@yt0qJX;AJ+=IXI)ajU$P?jKwXc(%ZO76Dw83LjPrZS%i*T*ek!%MgXcB5+6O?IA36HqD{DiRNVK0`#~@oJ=QosQl=dEOP*rX zC`Xh|c$=Qns;{6PTKAl5eXDmFq^FB}2A(NS2&^nl46G{d6DC653eb0qaLK!Y1gH&)YZd+uZQnz84yFSoPds z=lQ3t&sbMlS6RUixe@QL%yH}vcNn&7q~+Vg9XhO4oFKS~SoKuW7X-l!uuZ zkF^LMb3AoVsKtI!p&F`$)MIYjyqC12ZCHv_Mty|mSHOho1>+TFB^bY8-hp}7`kpl` zKf+Sr*tSKPrFN_v%w{y?i-HOH*W_-5^xs&pGOu9E8pp=`)j5R)d0RGY$=kYNYu=^} zoANeq*j%_ZXKkBpy}$7muFcuX^Sn@O*E?2iTEA)K#)6IH|Jbgx(DyUD7rov)KLWK= zYng-D3)Ko{^C=A|)#uhPuv_(|H5|C#pcK6DwOy4JLPv0WyseXEy(75Q;8?$L`Nk+q z2TQa?$bY4-Ti|%!@y*9K9xpszaNKdia(rzt_k7{`RWxT;Rw8aj&(;bf!NE78S5;eF zViCSNJ{M#7o03;J5{x={pY zJPnC~HfK}}vd*$Gzp!A#mJM4sY}&B-swO%eKqpe>g?kaBu&|)8a7)4F4Fv@Six`Fm zDcuQ-1(;7TjNF3U!n}f28*&PAWrb znR0HxN_qWEPB=GHTWJv1BTb6EIWSC$Xu=6=ffLq*^Fkm&iUf{U-i%lgQdE<>qtpRz zB_BIjny(@}8n7@{c8$*fnPAAD&gwff|GCkBb>I%vuMEE91wCs16mz`;SQ%32kGlQZ ze6_FCd?fB@+_5;l>@vIKJaH%Ev_1(f5i85)%DAeypAd4!TpM>bt_~r`5u%06$X#QQ zsP|G2{R(D3=%@L6vJ@>yK}m~J-38xZmR7%}v?80*(#z%Mia2kaPffK`Q>u|oskX#v zPG85;52Z`I7DwwhNHGc0-X-!e8hj&Sh5$l2a*28diDr<22+L%-3iG*}$|OpU!%h3c zBz;1X#sC<#Vrh_g;7E{G?~Vp(_3l_u4_gj~!LAI3!>$S%VE+`1fb9xK!gdFvV0(fc zV4n;|!#)!fVAlp?V4n@f!mbNKo8`;zt4OFw_9l3feF?tgbNAIJ)F=BB{KmLXh)7eX8mcSQ^XixFzmP)w>@TD`5X(0{q5 zJfl2Ac(>1yhz||YS=5cbQY-vm|Iu24^>oZ-#o?gq5S*RjeGcJRC+PM^XZOtuN)k<4`4MDb{*XqzM+%QV}{fnNc9FYtZ94`cWyF|9XZV9#tq;t{(jPE0&% zH;a=JkJ--vzZUpsfnV2(zRc)XGWu1F{!gHP4*2!J_X9uBhQ7?`S2FrljQ&p;Ylm1P zc67#0g-48*hpZg3`iJ6y!5@nU1xt#r2};F-gFOEOlY`AQ{X?+{T-gPDaf1)MXmJTl zuG>%obA4|U)M9ZL9&)*g?_$_)hV5b4CtF~LF>Jl; z5PY39z8OdjX^C1Na{QDAa(T#d%7=#K<9e2l1Hj?2(@%M*WK^pd)t_2W4dvmSnujwC zyOv>}W!QBsu$%J`Xq$(pSstDYm8BjnPP?Au-eR8 z*k?1(!mi7#!ye$b*tK1gzq+8bcxdoQ@vz|0;^Dz##Up~m(Gk9b#bbhpipK`OFTOT- zxcIuDMtT}`=_;NUbQez#dWvrfo-DpO2)+t}uY%yKAowaM7mo~97LN*66{iM&Djv;f zg`w`Qw~n*kU>$GONco_0rudd%ZSk$av&E)hU2%HwT=C>!eesl_zj$geP<$hcMKvCd zogtnN69(8L-k2*jpnqJ2e)SN(w_wd}HT2safoT{Ur^DO?b2AKK+}ISF2FL`Mi7=DY z(BD-$EASoDgn0`>Z-p_zq^p=CnnEW7G6iNT%#CX3;HJ1PrwlT(zJkxl}%efM0iM&Bm zNs=sd;)7SuEE%fKg5pl50W5%)pkUFsG6Ct(Y9Ng(lOS)s;0#UmWt7oSMJbPA{_bQm z$~5Loz+8pm(3mqR01cy6oUkk6(0DW4=Eg+E$g8dtn z(_Ny#APs=5V!Uq@-a;!7pB-Vav7kvh5qPAljc=2Q}r@cFHuL5ol z;9lK?d#2AR;MVr42JYEjr-577tHw@RLA;a7NFzLzsM@0RoMwHG`i;g({pELrN4#;B zbhxR;4x)b^g83fiFicNSGB?$*6`V1S`8J@=gm+(IW#@S+y|#+9rZD-frkXCq+H%i; zP9_bFm)A%?6b}g|Qrb+aDjI>t_aQ=QwAc9dz;#@e|61X!Si{bd)r>Mor_A;9tIhRu zPQ%o|q*OhPd<_6Co+s)(d@E6s5r7rodk%e52aSUlM%v?~O@KmE=0`3bwK#S06WBEz zDeXg?;fOs1(sQJBlr_~l+ByL8`)UT|dCGSWAJHP3M7x>h&=xd@E*`dcIB1TrM>3j} zBRyyiwGOimw~nyJpq5CUzXW*18yYDRl>SQE>00q4NjrrHNiS1IPa2bt+i6TbVW%;< z%zhHK(@vrFIM;Iuqn10f8n!3%H0+a^HTLE<7T)DbshwYLYUllE+izjMgE^qK^OmMi zYUhp2N9{~fEY`Q*{B7KKaR;y;L{f~jJVoj#5?ErbtJK^u*5ah$V~@?g9eV8ktQEqy znY{2Fdd`8&@T%>?emfx8@%hevz`7rr&9~5OzJq3S0GdrVVTx_4D}rddMKIfl(n!>+p>9IpJ$#j%_G4|F zg*J|={MxMZEn#IIFCDZVvVL!M2#4*&(@`>onON8`N$K^}!w*6)I0U`md*}s+p%=7m zd4)FzFy3rVBZbk4Zj(kd(g^c~u`rTS{ad9o66uUWI;lu!G)pJMwZvUK-;%%nZbWU( zW6Df?2Wny`YKBHLYRBs#tCUq@%F9z(S|6olYa?<*dv(zxEi)_|1D7iDdJYv(%l) z*Jn*SgK4)`N?#-{GA}X}DcVD~ma)}wA3J}Dm5Xyt200g}RH32b{0*JIOO^;4;Uj1m zgK9CizhLXe;3~FH!PW^K6ez>it55@W7GhaxFJOmKCnCylU-DLMzWQVe?5XL_Cd z16r=yqLb)L;})%eP+d0fc#`h)Gg3W;6!oC92pC$XncN8%(dvy|Tu=b5*nRyw#1gCmSj;X=K%nuYnJ#*877GQOXv&1dXV)wsjgkgIb>I zco4YFBMy*H1N$^;HUv*(b$_)Sv8S7=1IM!5(}~cxQGZl2s%^!m!?}`Jtk}k4#g;T= zs`J);nmFY$r0wTfjlvh1jlv$7FEjO(pJTWBi{w4YUnbL-PguY)e-XDQ?#np6?{n;m zeKBv(yf5d4G-$MBU(#~JnU+hO;t``{Z^`FD%FP#S&0`N+^Y}7&Wy@3F{Tw687chHZ zzJv+&*Z0sip;RYjDZ!wvtjI`!yvaq%R2NtBw9-GQzf+x3+|GXy z*Wc9ZTBVPAYu!UA$KmWA0nJdVZ8Se=86*7N@O;Yki+e7Y5iUpb?BaCnawvVdGyGjt zKUPd3)k5VY&C=)e+9+0x;EnfUF8&!#+r$dqSg$R7yH>&~EL=Li5F-puF~D7D6##cI zH=Pe?mL1#brUo*w{wn_~L!=ZaU!>(x4+mdbsE1Q)HTQC=8Q!;vt!p;28HN@!4D9s? zo<&;W2-Po}myq^LJ)Gt!Ob(FLhF^=`%JX|6?ThST7?C_Bds*uj1rL4LN&0@#AHtz{ zF5-~wMV#-H#lwFA^+;oc7k=8Q z35}TKr`;ON+F8AyUkh4_RKeN0bc_@1Y#lh(D;jXd&J>#-i&b-!xw((aHj_Bc->a#; zKk!m(ljN_q1?vW|eFd}{_G73G;ljR)k{aB&6`_pXaKDCC1LRfVtPmITY_3FOlcvd~ zZJIw_StABW3F7PXTRRtd8?o*LS*j7bGP&9fwod2{TQ6J%J51;SJ6yOL_W8ARnm<|X zJ1$Yj=4?v8326hM-9o0G-%5Mh=hqrJl3l-esV|b8<-YMY4)bVycX}?%{5Kha4Q`Du z3vLbE>)@UZw-)a0Ze11ai{9hWO7t~)K1J#ZEK7wMJbRj8GgR1RcTp2;x(aJ>?`wjM zS7Ej815L0|D$M6T+yon_!cMrQCRi^OcG$fecdm3O$zkO9viq{EM~;WW{R`Y-aHqh1 z9`10suTx8+QDeXDUg1&7@vB=Y+Ya|~6%tS(FS!4sLQboY0{25Iq(X(PbT3gM$5n{K zeV+C)*i=Y2ccco*Rw1!0 z?;Vi$Smb>o@)(UgE<=8=hg*Q#26rmlF>pVj=6$LfJLo#3w!}CUQsdgMLPn|(ud7If z3{)W}Twkb=Bo*?53n%&+Z+255`&{p-kXRM+h3hR960SntcM;FTBJb}bk3YFC%W=qK zXSgfiHo_eXw-fG;aQ9O4UgJ_YWWDQNm7Z6Hta9C>LQbfV<*tP){B6j z*Blk{g$lXbHA98GuR^k1CKa+vh0J7mk4N5TB9AMO$4+eRch=}E-f%vrLN2M0mz)JE@+ke?+UgOGre$kn#Ex)B&XzQfp(ZWApu%ff5|b`CTSf}ZnuOB_u5Th7M+9H#v} zi9LuX$Hqi0^+O9MZ5-cNF#w%s0LI@Gn1L{ZV6K4~3^N2~D9kXJ;V>g$M#7AONrf2= zGX`cX%(XDr!CVhB4(0}!@i1vH6JRF7OoEvVGX-WU%#AS9V5Y;|1amXYEikvjm|)Uj zL>Mzn2FwhYnJ~A(%z~K>qv+T;R}4)$x6h>*IvMI|T1_6M)|tO9E%2rXSDT8avo(cZ zJhbk$A1e;8W5wY{tT^1^nQohh)rPa4t30%t;Si=lFWQH@a1#T3q>=0HxeE1FZ3&Is zM$VaUN=;8?+7F#6McpfH!tNYGSEyHwA76?)l;zOKQC_k=9@P8qZc6bzgw-dSZ65(b zYs=33vm%ESWn071YRjdgp)(Rj?nk#tOpg^~&9TZU_nM>1S!IPLhx52op0mROB5 z@sz`J$ZHJhYAWjLM%2|b)Rj_CfA}W^R=AaQpLAiUXM|c$On)nR8mEVzfmw+YM5}_h zU!(F{B<>%F?ot`K-8hT?WT#J#?6&2AFF(LHM#$;(4!+Cbf0Ox_cX}OP2mG%vzoXN( zBeXZH+!8QyTg*H9y=ZO4&nCZNE=YdUygu0l9IA~8sDp{9i%Bq(Q5Q5{CVlPRx)`Rd z(G7@t++41o6EX_K0Z5~2P=gj~F*l5n+m0FROKb-FGIS}e@Cs}r=kuU_aEC%EgVRB) zr;TXwQyIS>8HDtntm}*PaBsrW#nRQ%&C=a+m8FN}YD?(sQRv(erPX{VgJ!wVEiL{1 zy#lK|e$am!cMOf(am?sWz?8u_VTc#&OY+e=&%zX-h1R2mj$4(JJE2oL6mLxM1a{2I zuw&-Ljv4Y-e0{LGcwF#w@eRS6;_-kC1-)S~!(m3i;9dyqQ81}6qZuT$I(PsaL$$dE zxA(C38<%1y{%b^T5?lDgk^7302{033CgHa2=fLA`c{wI zBt=8f=Z2xr4M(3FfmmrpBLNu&NGc$s0ojke=5Mjr{2lh14`8p^$o0i}-+oE`lLk=E zFyG%WZ{xh@<{7#F)^!dnJ3?jCv000e+hl$|ZgboVacFDvGjS{9R>5@|p|ob9oRN2- zG&g+b`dY~S@hdGS8n6hZjNOy0bLoZn)-)oQY)TlH8;R?~0l3kz^2OQ~&Tz4kC} zgOpnKfeF3KNarbxF4a7}nBCA@e)1jg*-IzsJpv-JO0E~p%Zs8 zbtz2ppRpwa8fuMFXP6Lqvc4n_e7go_EqHfb@LNFXysmO;_W_jTBQLe-KIfNCWe;&n z#dlIUYu)E6WcJlV+P>_4vEnV~=Th@N;TXv2u`t)dTnEz=X)F7Nl)vi%83%I%%y>1F z;HTiOhB*yW1M^q~l_VXb5b2_380x{)qvli$M4!5?Lh)TjEtuFE1l^?62qGI9&1__( zen-0-JZ|FAIYb%-P1s9K$6l(4y;O72WbhZs9CkvXq8s@BAUN_6IP!aN7l%3Wwfl|&QbV%wee zB~)R960;w^A77M%yJhixiormdzjg7_rHgI%G{@|}bO6_Dgc6uBCvoBfci)}8 zB+>q0_L3zJ*tlN9m5`ZNh740eCM~e_Lw<>`mn~X=k}p`gj2Mbb#0|l^{wo-oq6F3N>#@2Tq@ z=n5*$I|Q;VBug>kvHwIr=~On@^xgu!zTneeB?rCP1@z*92KV|e+XbP~ei=GW|6t&;ccOX&36Y|-uw&QXHE6hESiY>s!s@$x(@Ma)myIpaobY4@7l}9tFG?8 zWvZ*A?*Y}-!M9X(>9Mmtv1<%&$VN+By;0I;Z-n%`H(YwrtA|@FZS?ZedM_`8N}BG! z1tsk7H^5GXq&0GvT-6yIe+O>pDsL}ztUT>f^e?0PfXi?3xs*{V%I$F}V^^5ln^IfG z@!twtP#Z7W#|w{OPv8+-iTZsc=P}EpmPhhKI|m=eM?`#R6Le0SjcD)fDtpO98SnyezY=@~h-DqVi#k z*e1GDDVpX-_~?wg5)xi%#eH9m?Cr0WyeXIPrpc*{r%RW+!of4N^GfeLrl&+yuqz3j zgwAYLv)ljG?Dl_XpE0DL#yCUceYHgy%aJ>EZCthuElt6D3UXh%Sz6urlo#!X(UEj@ z?3Ch^?Ke`COCuk2eu)%4IumMlGj8GXRUb)od%3HDuY8xeu>XsFo?`0>XDsgUD%57x zjbb$#^7mK$KZBA*R!*@H6?#YGpfh66YDvOfTfglW{U*7m;&RV>)ildZ#;Cp-A@=iQ)0b8tF)Uq7>(`VFg`ODU-PK`r-F2TJuh_Ua-N!w#W_n&C)=6n^jq$8mig1Lt~Mlk0dj8SGMtPDMI(0yUS3dizuF{{ z9`)?T`8jAwUU9Z`<({^(YJwMdK+h%qiMeVcR%U8#Dh<4Bro2DUER#rQQf_Y4CeeFV z^^J6snNnz8)gjJmxduc2u2N`CF{E=Lr?@L>b-1CMHf@yyU)z7A(n5oRz&~DRhg(5rc;g9?liS(Es{2|AjHF z|2M=m|F4Xp|5a`NSI4ye&x>jP=XgEGYqUCjSa|5G_?)oU+p0FkKY#l#al-PMYX_QVXG0&PWnP<<5R58vVXS4A3)@;1JHAv$4-crfFSpjL^ z?7*yhXZPfU*+~i||t|%@XI#pDkw2iKwL1R9gQ6t+`>WB(u=NXJZyc z?4ntL*_K)2$2RiK5e8|2uT0G)7zZPZQh*wy#yZtCu zA0E4HaOE>N@31oYQS&odkC|6y_N}5jYg*y)tc1${;H`#4^|q4(a)bQIs(-oa@2mQA z$Ujgk{0H^_AM4`-HPWNj$E=jj6G+E#TaQX|uZ4TvZJjGuAss@=xG0}qSd$fARh+kV%ZqtmJHF0YW96ka19|={ z?AU)5uETe4Tv1#xFu#Hxv3Fk4yyAHw7%#8fh#PrXi88I%TnFT%LqeL^&;*%=b3T$uK(AzuX9L(kPO22 zFYXSW5>J)*aEs8{7~Av;1C59@epi;1HpnGM8cO%!MKp{tCX0?gg16^Pu}AIcMaLSB z?yG1#wy(U=AXH!-sXQq(uiMK`N(eY95mgm>VW%E^=}qAUdOzcASxadil8_asmAzO= zQ`WKsxRiCJ^LaF8ouSn&_6kkCA&kzdgdr4qXRvHHxE^^Df5=J~f6NS{vl%5nG!XWW z4d?S(zU=Y3e^j6jsjRdVEYk67t?R6-EbAAowiGVP+n86lVdI9vg0;Nxr9Ic0V+FTa z|7!)`T8V3k>y(?DtI@g-<~-_7|a) zI?i#==kbPTGYu`H5d;lC()!G*+)I4Qy2ARjHHM$Q?kl0#Carz2@Rb#>Zu|`E6rbSb zzz1`0s2h&@46O(XmanXPtwq*i>m9hoSSx&E-)G&AcLTn))2d*Bb-gw8^2}!I3)T(R zLhJdp=UcrRNVWblc$!W{eS~~|UN;i-ABPN$tUO#d81Da~hyNEZq5RkSc=-9UCt1iD z7LtRI9E9XppA5fHMz2)0eI1jpOexLAxkTRAx0K!{Aw#Er-maU3JJ6$>&XGaCFz{8M zN~Dj1H}GBoKTZ(I6tW1IE^oA7t(rFAX+Z|fy{OaD81X?9D$ z^$_l1(vAIi-}h#tOt*0ISP6+Y4nm%#Ti!%@*TU$aaemKEX9;-Q<$H`C-&;r1+iFd- z1ma-QJU-fommpJc$_%mS9)gbl*zBFp%ZW}M{}Dz)4kI7EMTnUac;};mX~IX~UG#4= zeRH28IHhd*Djg?rmG??dWrU~`jgPag#=CYq%zEG0y2$~WjsJog{MhVtd~{oQCDAd0 zGd|k)aYHy>;&D1YzK#6AuoAvPi~3qbn;979N@(Q^Sj%JQZ+W^Yei(Nt@+7*|qZ2;a zM>8JW6ePJyJh12ql(#d+*b6o~KU#zLEn_N)H$KgZV!Y83m(GWtE~6Op{u(X6`h9KOmPv0gfZ@YTWq zlz?OgaRurHuQx0@0?i1m@EUM0lzfMK{2w9=cO$^(y!@&4J9CAt+)|CuL55@>eWMKt z>>Fvg%GVt8z?CugnK8RN0R2?Ntv;O6!_7i^udN(zFLn%Q6q^*tz^a2ro{7~9UJjPt z#(ZYxt0}#e`KB>nMX7>0gZYlBJ_Yko=|qN^!NQ74XSSg7vFcOey;VAcg-v3ZFRMO< z$|g0vIV^0g8a9Rba!V(%coUfKQ592(cYo<{7N(?dcj=TCzWJp$GM|E(p;A$N(@Jk< zVM<8!?6d>vGuk{3;>iN#aGevuTP5>_uM zB~pApNlINSrFBb68I*XEB(|XPt?E-+Y>(bTz8F6$qALGw+bhmt9%LDaMATM;6TIZvkz=z>$9&Hc{@38#9 zWN2qe$A5|UrHF=JKEz<8S&(02(8=F1h*sLy6hh-)0HrzstjA8?c%oV~M zd4&qC+#|XxXkE>6ZDQkUdLVtIuF@o8nO{hs8D6Q}J0eX0CA3t5m+6h$-!Uumh#hTN zM5!>^zfb44j}G6Og9Ne}zh-t)+aD`LdSjRM^VA?=Cu zg!I5^k8LC4<1wmVShq#CF2Ct4kY<;iv`YYl^vsNl-pi-@GXvF$KK^JCc)U;?gEvT{@#TGyQuBL6 zq4kSMR_|ERXc3!}&gY$9n_2qX6*=hHrtLIxL_x>D(IMzVDlmB=hc=Tu*cwrqaq2El>WdfblbZ7|CrK> zh}`z1^c|bkv~HyVZOVi?+C)1RSMpYz9PvzhQYpkeueRms-c-MM7s}BdbGGb$$+W0- zUfW7QxBl;=JAUfqp{*Mn!UoHjiFf@&DV4> zk(lqq;;vBv^Z}2!p5(4r$Zj`nU@Hw9ZA7o_{Fr8)Om8sgE9s`^Wj50!jbR|u1+vg* zFNj!m>)0T!>u6vYwEhx}^*X|)+2>)<_*1?hUg&`x=Pu*G^&YW3@#VpO1as7*c7dzvVPF6rXBF3l-)_=^-kzhksYKcWqNQ13`OiGX^b zI^tQ4(0f<37DL+4N~VucEwo(6489h>y_SCxIbD~9*=!PDC69_dLixJnvb|94Bp)t)LPb;fbznwUq_T$LC4sOg_vG2IWVY8#7cfTV%8Ng71UE#uKzpoXm!{DJ(m zjjaV|@VgS3V6%Mt6Yu${ftcsJC~faUE}@c_{4`d|l9asni-)V6;dR|1r+` z&Y5lEtT&37pZ-%ig`LN@iBo7y#jNt5;%w;Lr%jv<#vYjK{!^Tdouk^s*=W>2;%KD5 zt98_ig=${U@0ctI^4O<@HLrzg^qitADydd{bOC8mw zEuM^rUL?e-PEptW2)Oo^~ zD=g-;C!D#2m`eOg6Un`pm~sz#lV=a)`)UEd=cKG~?hd{Aun#yNvaqeVg``Mll4`WR zzFH^*6`EJkX&U9cNji3&>8%Kgw}av2(CrA|D0445lS1*gu&`wwmlzqd)6)?$(To@_ zF)ZdK4{0X<_T({)J3RvS4@L)anQy))hWQBBfKjIlzT~d9kZYRvG^!yZC<=4 z<(;pq`~Wv7yeYqy6)+fXfY0w$xywVpsdIJJs~$R`l!)DyE>+tA!!MQz8b00fTOSk7 zX+MnI7BZ+tNVog}*q;pMO*x6*gsSP?HRiXk&ouu2HN8wveof3D@c+sDr!x8;tz#)t z`+*0L8``6+^hB}ou-0-MtN!fwo-m4fQUch6t+wq3?ieSnC3|hvi+%^B+VUKHQr+}G zz%$*mx$ee5ou@zQwYjwCk5Fk}_k_xOU5oP4uPYtTil{tpPQ<&_M14Iw<9;fG)?W6w zwVqQMM_7EX#f*5>z|hFKE5op=Mr+eL-$6h)p}%z4-Mo4oE&Ks!1V-+3+j&p=e4UTZ z;oz45s=Q)H>5K=z7XiAoPlY>`kkQJTw>Je^UCL#_hkeBg^u>)w^4+xGK&$hVu3p9& z7qL51?<#%g8Dt3eksqh1C{IH7($y_!DLDvZF|b3jQY%E3Uc+*gh<#k<)F$^ns zW1w-EXulL^o~NMi@SX%nd*yBs>3At@et9Y*^b04%@u6Pv*XN{ld}51~X-^}KX}w|c zt!{^4anlJZW0giY><*JBGoM4a-5pVdcT3#{`8q)60I#0CT_#EoxrxFI+GiM zqzb(jM*Ap}0xfTc=!EN`AL)g0u)~BKV22CiVUJ|mZI~SGeuACc>hDgjqWaUx|MqY~ zFLw{*<|*Xa;(0>o?(T#=%JuNw>1h-?x&`DbRO=n&Ou*`Ak|9bu_EH)zq@wn--Mp`t zn_4G45+^AmyZH3@O)VZP4qE&Ul0FhQ`XhDtYEY7%QW9=v1fNt|E0-Ba!gokF8tNt{dlva{QS9Fjcn zHV%c1m?{37nSa z?R0!s7wPY`diW{cB*YDMaH%KdE&K*Y+p}z!q`6EomN*~B{O?QmAO6$;{hpP(SWN?9oTyoa>&fFx37Y zyhIcWyNmp03mS=_VQNKVC}@PBL<7I>mep5&7G(Fv(RkPmJ|-a9#T9 z=S6QgmAPIz=6a|r2K&|JH^xeTI4OK{i}0ErCR>m}Yh3=$X6a_Ix>+V)KOuV|qKu2T5$%P+8%onI}xxArJb zuI>Wt`4+!X_gCiur@7NyPceF-+nt{d{IqE&J#-T>bYqpiei%A87`lt-%)fxMCCcwX z&4NUm4gDu{#+7blV0MQyjwV{CnQ!F!;dk~n;CJ@uw_xbCjC7oY44v0;I*i=sE*iI< zLyqW0>(H2nUxQ-5%y))brLLP#Kej#g@T-0(1w!*GX!U>> zZuUM|kqoXs@5C%0kVhDNO@(r@*T^;B!Djkj1--Nr`b{39pqzwKPC+5v)_3InQv-z+ z{e*&wIThfJ)kbbn1>NLQejoB8__k1JWHjjaBEMC*dquexn zAK;d9W3*Ga#oR>B&Mjm10&WR+7dME*6_kJcPtyK#cp~S}G5 z6NzKn;d+fGjXpW_x$C)dr{s+G{ph^lbcugJn5f6jaVfbzsXi%K_Oo=@dBSP%9dlMX z73KUFDCd{T&Pw&p7%&SlwoBaWtjD%ly_gOo!kCIK2Tizms;L@^rH;|Uc7i!@ZD zbgi!TcdEQbSmGSwY^nbK&eY#OnELxCQ-3cr_17g%bG98kKVZwY)D>=*TK=FI4JKlM zgeYB=rI54$4Kou06w>@-Vt)?&69Zh3iQVP_ZX%=EeQT8Zvl=gziWi|XCy6y)qlCwVi z_%gFQyF0rOB#0+LM1lnIdQzl#F!B1MWwDWz9LBuEhv zkrGOgA0jykB0;<#J(1!a5=sf7h=_=U5G3d2H*7e2-%nq^y%&4?o_Y3}f6p`DXJ%*S zNpbto(vWT5>p92Eo|inIaNO_ttbKm(mg70EKiF-4>z3DZFTHkPbol-HX&A4M-~VyX zk2{RK-tbBNlaA*sFYC{lU;c)1u?|;td{^WG3mM1Lg!B5;@e(5L9 zm(5R@jnDTPpFLi-7@uECaewF_#pA)Pg8Lpc8|m(~mub>y9GP}admbKcOUCX#N15L( zxP9xTlwal;%^Ks=-5vBvH=yfA2P>PYcmMsDQIC%QupNy~HC!i(Pu^A6=hvGshsK(| zyl33#V}$jS+j&x4xAQ!)m$-B}WjE`6DZ3dd#@`dh-@A>6MLwT$(Mt>8xccEZ^CvHzS z8hRH-+fUqWnZGc8^6Bd*8h`ray~`Ljb~4PRv6C?u3qJ1=9~4uxRd6xzv6Pr>T~nxXi?qOPR)FBr@&4FopyhLjsK z<03Cb#z!tSCr3UW86Ej>WYW18Ze2==^L)f}sVBMN|2vniIdaWqzcGJ9f0*YXqr=%g zW&UJdFBUwOa(6DPJYJv6yYpwvg>vwdhmA`EqxT*)KEIUmc<@0=v@vH78*>;ZoZuRt zY>a>07#|(@aG*qB$9oGC z{2%pC^iK$UG%ztR%Ky^fnlbe5wtRg{M*08D___Sj#4E;_s6mtS?%2CqI=b*-{}}&^ z{tpMn1YQg@Iin_iVWhlJ|C;ml?R;TWGp2c=`@Z=LBUYo!zDq_liYt1gD7NVB^Tq>f zirnTe85aW|-nuaK>aEymxIv#e`N&6mRC!XF8b4Uab>)P)}X zf0eaMgR4dt*Y7pT)P+%#^TLqvH)3+SImM8klOgw(Jfrju+U75GnO$4%f^kT5q1ots zIVC>J@q)3PvTQFH>pRQxf>DBut}ai;FBuQ|yU^r0AD{A=aTEJvMn@Kj#!YpJMzv6FAQF&J(=1C*-R_$(r&qect23#B0V7<8~I~{ba4h6+BY#(ya?dr%%~J!Z{z4a?$fw##+2v(qpuxu8Z3Kt&1s( zFT{i_tR)Y=!N@h)_yObbF6aE?p<4wf<;MErQuV{((czDW$Ard&Ji8W?^5eC~jirk= zmh|C>OGPnZ##F=OJ1SSI{=FoU(Lx{SzRDCJ@q;^f{U54p}#n{ zVU&>Al=mtpHSeSbCK&bRVWXBD1jH1@raWpW#-)pf5)EApe&i&zk>(&J#;AW61C6cg zN_CKO^7-T&7lY$mX=02t7X#y5<1YqZat*s^G?Wi z@wkqYi*w-oNW9<{scYJa#+o*6OaB$~Wp9R44k z-ctI!_WDhwcW>8rU$dJ|BGpOfxF@k{+ts=4%f>0XU)++HP}~zQFh@@hnCG8vwz%E? z&ePS#x=0x`4wwJ`sg0jTf|M6u$lpwTq3HF;HQXCbjgF%bM_)e`aBmvTRc4G9Vz^@b z8HdKDWzqf5!Wa_q2=@CS9Cu#w#0vFCcE$2|6b?6NqM=*-DI>Bw3Bwj?>tVn&`HTSY0X=K~M zxUA9DYB*^-m|blLi>vK$_13*VXx+PY|96czDFIcY1l;j>(I{W98Sh57=0>-5+s4fV zuX?<>b>p-4d&9d$zcuRhO9cl7FNNOcuo!!}mm&{bkFxbLy=Ii1 zlQq0Q_ysUl>PQc9Y4JVthWf zm`uh&nQ5WTWE>`%OjX9`lh=c$PGiXH<6d`{aFD4R?hy_)^$LfW`h?$U>W2q}!%Tzl zknp=r!|;gkpO{94BTZw%X{OjOpDfpXCvV0p%@ha6!wGOAoFtrXN*4a0>9TN!DMk20 zrc~ifQ=0IHP3gi}rVQa+Q>O4oOj*KLOxePDrX1m7Q?Br*Ojm?UOnJheHsuSKnhJzJ zV=5FbGZhIxX(|>jHkioHdP7#jj3Ar3#J<3T2rlX zovBXvi>7+vdQ*e&mrRYq4W=gHzcV!p|Gnv|aFeM;_$#JXxD9THJK#>ZOSs+C4fnvk za39Sk=2>;wIQh3GfyzqayMZwX+FSy0PvBEF9#li7#g7A)8BAf&#!a{IXjmTqS(uRxSLhTaEA? zw_3PP*re18D@p_0D6A??!e*rzzAAjjtwq?bw8Cw0yRfcw2s@QdVRxlV*hA?S_ELJ_ zUbqkL7xq>L;6Zo@9)?HYQFu)FjmkKD4W57};VF0;o)Pv@X5s6?Udo*C1Ii6}9$tVK z;hVy5QI_Ckct!ZF$|}4DufrSgrf`6=1#b(#P1%8Wg@cqmcwhJ-8g+z}pAOrJW5KX=EEDT?qjidlF<(O{eK4-_4C3LC#;3csv)!d|eq@R8yp z{Hk&W_7#3j@q_(^6*T}3goEHYa?Gx@+`{4n25FUbu;SqRL zxJMlm{+2opUxO#$Nq7pLhG&Got*;s4z7nA;6~y1n492c_$u52x5903JKQ1MV(xVL4aRRRVa9&1#oQ(QRdYAo1NRDd znET*<;ZE~_@Yl_Q@DMx!TmTosMR2k3TP!7TDO@HT zWGRO$;7Z|OOBGxV*TA)K9b7N`kfi}`gqwszEzQEw+EthT{B(OoYb|iAaE#Ulw+mm? zI^a&>N3<@uTll?N58Mm)2|ud!!vpZ3aH2K@55ptEN!lnp29FCTYuALI&?ewXcnY2t zPSs}MS@^o}`?Wdv20SmErY*pW!Wr64;Y@7_UKY;QR)jyNt-Ac=Y5Dq`wkBMqtqWIc z8}KH)CHw_#8{QGF)pmvdR@;O3g}+dS2p_@6@NM`GY~0miyzZ`#zta@hEd2MH z2HRjAb_)N4<{{jodBR@8U)H=~ANY*$S2SPYAM6dn`Kw~oWt;0fW6TPKA-VV#1fg^R5- z!k@Cv3YS=~!*jx=)*HeV)_LK7v@W>3d|ICW(Yh%773)oSNx03r46nee@EW`>+-}`~ zH-*1$-GaA;zhT`G{-$*o-h=mrzhymu4~3t$9>K@(ZTJps+~aDz?ym2rtqN?0HQ`~a z4c1{N>>)gA^@P1(Z`eopyVf(XukiP*ez3prGu8k&5DtQa;Se|!J`10N!{Bh??^z>+ ze_)M-&kO(18U;tgF>ov#2gkz+a3Y)}`~z#U@Qa!Rc@Y zoGJVpYZjah=fJt}6*v#hhYN&%Yb}I}gb%F6a0y%rm%-(51zZVN!PUY?)*84Lu7m60 z2DlM!f}7#1aEtJp-Y|HS9u+_FIY`3k!>+puK)3z!6 z2HTdfk8K;?5q^tp7v6*Sg&(pVz=!Y=d<@@)@4%+AllXske;aC3V6*Ufn+Ds2qinix zjLivqz@D%d><#6*TNzvqSHP8U6Z{CBn{xLLT%cGcy?)B4+GYk^zgHsNktJKO=p0?eF@4%)fPvZaG`ZjG- zU^A@2Hdu$9um|i3d%@nY4}3;=#^wwA!TxXn90&)&!ElK1Pi>*X|6w}|pA-I>Ell{9 zEgX&ze%=--ykk4>a_;H=a@Q6GM+^VP79;#yTPz$0$HNJ5BAf&#!RTEd$PkvxH6dY&b_)vF8e#?N{JDVT(Oq*lI6;3xz%GMQ|}(BJ61|751{1347bi z;R@k5*(>2HxEij3YvDTKGxmD8LHI59Mz{%X7JjS!D%=9M!fnC<_IBa7**oA);Ro$q za5vlo_riT}KRh5DXCHLA;k3TS*@xg^;rH4{;8A!C9*3{N6YwNFC7fuVhG*be;UxQY z;m7TB!k6tggg|4TLw{OEc@UC#5eNXsl`#yXi{H*;DJ`$d?9}7Qgzb*Wn{f_X8-Bf-O|3^=k zXWg#AW>^#6wA)}Eb_#FXJz!7R3-*S6;4`o<><9b90dOE31P2T6+e6?`_$+)*_`n_} z{E9ssj({WK^KcX#4aW$-W{-vA;CMJe*iBD_li+0dGMoaZ!f9|ioB?OTS#UO-1Lwk5 z;5=bP&xZ@(LbyoyHG45!B5c-6;WA;XUM_6cD}?G`&ms19~^yBb=`H z3V%@VgZqU)qz?#Z>Vxo*@Q3wb;VgXw9u>~j$AmwkkHgpC3E^UW5}p!n(5GGg@6+wo zpwGaw@O9xveGa}Md{v(p{;IwJFA6`U-xU6uz637||Fga#{B?a*xJO?T{=UBMvPpaW z_s1XT8}KH)1#iPU@UHN*z6b9M|5!hO58)%>|EnLvw}t2QJFw}qC-ML8^3Lgs@D1Gz zYr^xoO?W}qVJGY%d`tI)y@Y?Rd&54$%laANHQg8XgZ<$E;SD_y4ietfgN3*B5I9tL zTR#h*6W-Cogm?9DI0B9o-q+6yzoJLM(ZaveW8hdgPWV+l9!`K0;UqX2z6_@b|6Wgp z(}YcqbYY7l1I`rob!55xr>FJV*O3k9z`5`hI1kQ;3*bVy2rd@(bCkfPa2Z?t&VQEM>xRI3-<{JI{Jl!90Ty6 z@I#Ivcvv{pF#?amWAHe9P57K+LO9GZ2~P<}IHutl;rBRZ;p^}md;^|`7vM$srto>k zlJK88mf;oQD95Vs1;?83!;W=$Lpa8<32(vM@D98S@4@@<0emQY(QzdFh~pT(4c~!{ zo-T~n-TmXE4n;W2VRkwBbpM&<&|sVJmmE6m6mD>Mz@D%d><#+}H#*M1zQTX+@Pqx~ z060*%$q@tx!y&@|;0P6NcASOJ3AZ@H;BetDJ0jpn_&gj1N5e6~t&UhY4vvQt;6ykH zPKGZFf5njkr^0D)y6{tu4B<{kCY%Ll3wJqk;9TLaJFW^a}sGqfhuJj(&Im9u!`548g;~HytCw&pSqi z|I;xBj|;!xxCT!MuRA8;Dd86#)58Dlm=WG`%)-}&f9;qPe#vnIo`)CUMfj%h%Z?>@ z8D0^7#jz^T&=dQ5o+!NNE`|yEqr1KCyf{)?b@EzFn z*C+A+ZhVh)DzF*WU>mH%PS^wX6pnIw!QQYBd>*Jgr5#Ja+p1Y3)251xLd%!fwu3mnTm1b92VQ@o<8$=1g>X z`t7{evO~&4R9me1UJK1g+F0yae4PN|4-Oj;WoG(?tnYtF1TBGQtNT~;B@+vS})uO z_rn9i-_-_PK0eLwyV?*u43EI0@EAM}UxO#$Nnsyl%4L)F_3i1SOv5wqtnizZ>+l?W z1D+T5QWoGvVK@Dz%i8Jux#>&rGQ0w>!fV3MSl3;4p636Ibpzgnx8QAf2i}GE;C=W2 zJ`}!YJ%W#gzv;N`ve)VIeA96UHdUU)|Nj}Uz-Cwze#BvO`OInlk2rML346evu$S;F z4sVzJPxF7p;RBz6eT83j__-W(`u$fO{%`;sDEvEfkjtT`-~XLC7!H9$;j{2L;fKs& zE{C1w|ByKxj({WK^KcX#4aW$-=oag8O}ImEcRBNP z{yX#zxD)PzyWt+;7IUx5Ij8xznET*oGz@`GT=<% z4n51|$&V{cCzhusHdFC{~m(2Na0bKY82iuH(?c8GPPU>5U(PjGUj)UXj z1UL~+683gWhA+b@a4MVzr^6X=CY%Ll3;Vj|2tVMK3txfr;C$h?xD~*Ka1mS#m%ycP z8C(umz?E{xuw|)2kK7^0pWB4|F2R422WdDD6{d~twfz7Z6+h84b!XB`v@c(i1 z5*~H)hJD~O!asHM6<%=j6Mn1W@A5yLmWQ_~0dOE31P8+*aHw#Yauz-(9HfN7;cx^T z37?0f;Al8TI9Q1l4pHLZcsK!0gp=T8_%fU#{7xlR_^gs99Im7bzgx)=&Qda6{@2s( zo2_KQ*}^$W4x9^Lf%D*exBxDMi{N6o1TKZkg!7bgxB{+(tKe$52Cjwc;CkVYDGhKV z+ypnnSA`3e7Pu8|gWKT_;ZG=?a2MPS_rSeyAKVWQz=QA*JPeP(qwp9!4qt;O;7NE2 zo`z@OS@^nep)v>G5dO3>FZ`sk051xER=Fws4Q0vYsnh!YePtP5fmel}Ro38jcmv*q zx8QAfM|euv72Z+yT)uTW|8{j>_C?Z^BE$zg3sv6?j$nC3Ov6 zhd1C&;g{7dcpKgkK2&$%J>esDA3lH&g^$%E_!zzo-+@hEI*I>x_czC?0-J@8R83eh z+h84b3Y*OyuqW&Vd&55P8DYijD}0~X5B7%xgx_EegoEHQWrsl&1a3Nd-7sDlRsqp=3nahu#PTyNChb!PpxC*X@Yv5YA zPWV`@clrIN^K+~=z>RPd+${X6dKGSgTZM0{ZE(Br@6`^t6YdgzM(uX_L#NC0jM@YD z!hLYR@B`)nm;d54zX!~N@DMyK`~`Ky<&U0z{|o9UJO+=$*Wd|wQaDJNa{1$@(+g6j z;Td=qz7Eg9H-tZ?%)9)l)9HOoS%4SeoA8qGrni@{x|K0RD?FTp;{br4TNHi{TRCw<)E< z4=QEC!AiMsyix&I!d1eLDb;X|@MWbIu7m602I2QBjc}9j2b5;`D%=9M!fkN7@CTI+ zxKlV=>4Lk3bCn*rSNJ1JAKWkeQDs0lPZ<>cm@)(p3;&fe0*?xRTp5GM;cM`OaIrE8 zPr=i|CCZHOXO&s_y6|5sbMOt}N@X5i5Ux@dg+H&{6s}g5glm*#ctyBYS%uf&b$CPg zi^?Xv1#b&~N!by;s_eph@IHJ1AHqlQv2d$$TlgvE4s3eEz5Cy%6h-)-6*H^}e_gS` zI_!i!U{Baf_#28h>?7Q-oPm9X2NXZpUwB9ffCGhxl^{464iWy25-L2RoQ2N`k1Ans zxbT<~0Y}2;;V9u}lxR3c`1?w%@Pra4JgLMBPbmq)KU5NhXOtv38NMt$tE343L`j9y zgnz1}!x_RqQ!?Q!;af^JoCD_yFDX}qf3D;SKdH{X3BRb6 z3vVbD!kbE^@Rm{~{7a=;ct@#$YvDTKU8P?56{P`ggqz@I_$u5Y{5z#p_*JD%SXJBM z4!BcTQ@h}9VO{Nkdxf29AKWkOr49)DsDtp3@SD_Ocmy65ezQ6z?5~c)*MtMr33yUC zNS%VG;Thq#tFyunsn_8-;diJv;CXlfUW9K7|B<=`FAKj*T@embSB1mXHQ@+#UHDJb z4dDywCcGtlQQd}jgdb6N;XQa?I8Hqfj#m%iBjE(~7`_ePflXfb#{UFW5l&LguqK?W z+Jqlhb>a7^PT?n158+hRQ#eocg1uoM;e7QB>?`~U)erWE1K>d6PpUz}C2BAnB3!D5 z3YV#8h0E1*!WC*594=g`MhI7_k;2vLdEqapQNn+#MhkyYjS>Em8Y}z{Y8)Id{Eun^ zoGAQHY7(3bUxriQRN)pi4NezsRWsmBI1A1e{;HZI{FIstUxD-Be7HckLoI}hggez@ zxCAbR%Y?hta=1dcN3DdbgnQL$xCX9;>)?9fZ>bG%qwu%YCb${C3bzOksI9_-Y8%`R zcfg%+m+-%;-Efcazp1@&AKVWQ2!B@{golL3)nVah)e(3U9uuBY$Kh+jper0@-O z3Z8~%gnz2e!q?$B_y#-=FTjiNO?U}j7XA-)1zv^M;C10ebpzgnx8QBzpQ$_WF1#mv zQ{9IT;6wOGcu74LeqOx|-+@i{-y8p*R~6U{Yr-q44c1{N>;ZeiUc&#Wdc!{O8Q52N zRrQ1Y;Q%-g4ia8dgW(W36g~@|gTsV3)o?fhj)c#{QNq7eqv04h7LJ4C;RHAlPJ)x+ z%fi1>Q{YtL9W_n(*J?VPA^aOPQ+Qv^54;9TKD^$MIPe5B?JyO|5%LbwPn zhD+d5;n&nMxE!v4E8!}*T39jHz_r4c^aO9XW{Gc z9DDQ_$IsrFT*SFD!c}-!yE7>yajK=JMgY>fO${&LG!+Fkof>UgpY(n%*Vp- zG~b5rz$Wi|H|-2tXUqj~q41ODBH_=Pi-rH%Tq0a&E``g4 zo6P0H|7fld{;IhWt`dIATn*R2wQwC=4>!P#!rwGE!OiehxCL&7+u(M%L--r!PPhy1 zhI`;%xDW0Z{Q_$IsrFT*SFD!c}-!yE7>yajK=JMb>NC%kLkhY#RG_y|6RZ^L(B(;M%N|GQ=d zHp3chgLT*md%&Ks7wirDz-M4z*bnxH1B8ET4upf?U^oO0h0nt0;4nBGj({WK^KcX# z4adN-a2y;DC%}nt5}XWQhEs$O%&Bl1oDOHenQ#`I4d=kQ@D(@@&W8)&LbwPnhD+d5 zxC}0bE8t4F3a%D@#asi|!gX*x+yFPiO>i@O6>foB;WoG(?tnYtF1Q=+fqUUTxE~&X z2jL;%WAiXP0*}ID@Hl)8o`5IeDR>&5foI|C@Em*to`)CUMffJX1TVuY@G86}{Co2{ zya8{*Tktl#1Mk9n@IHJ1AHqlQF?<`o1DkyAjsL$lE3g^XU>mH%PS^wX6gFABU~kw5 zJ_Gy0ey~3r00+WBa4;MKhr(y!b8r|O4oAR|@Od~2j)r64SYg!?2gkz+a3Y)pC&QQF z6gU-5gVW&*I1|o-v*8>#7rp}L!TE3jTnHDz#ljX#30w-7!R5kEO9fmh>|v>btA#x+ zHE=Cl2iL<5a3kCVHw(Yfause7_OY}IpRu$FzuD3*>}%-|e!$Wx>}Tl`ev74BIKa{a z_riT}zi^;s03L*ggaa(Y@Q84TWfUG04z-NK*M#3`nSdwZDd9h|ObfruG9&!QmRaF< zTdoVg$1(@sfait()Up6C3O{PO2`|CR@QUzbmQ{ESUKjo|%LcqDoMzdAx8WUlS2*3W z2k#62x#a*pgpc53;cUxo_zrA()4lOO+oHf`Sc7e_4m)8F*c0}Gy@fww@qy34zObM0 zM=kzvfN-HD5DtQa;Sk|ZSVG~m@Hse4xX2O?N5GNrdErl5qTp!ZPg!E%SU3)j7yh&* z0ZtVDj3o(9hA+b@a4MVzr^6X=rf``h3(gjP(vkz`!dKutI3F&63x&%qMQ|}(0++&N za5-E7SHe}o6_#qa2CfyZwA8`%!k@P^z>RPd+${VzmaA}!@E0ttaGP+gr5)~oJK-+4 z8}5O7;Xb%uxXv;F55hz6uyDO)1RjOQ;BnzES+2no@FYAX++dl8XN13MnT4;zbMOs# z9$tVK;hVx=u`I#M@Cv*Nufgl^hVYjyoA4IA4e!9a@Sbp+WnZ}6asVF+cUq3%W8p5# zZTJpsI&*LQ@3JVc8P;GMtP6KroUn&*kHr)Ag1uoM_zdg|`@#Og-?9Y2fx_Rm1i`^@ z2plT>FP5|LIpL=*VQ@Gc0Y?h|tK~c#CH!xeXgCIrh2!9O;qO=y;6&m7V@ZOO;mdFe zoGSc1OB$RGX9z!I$rS#+B}@2OOSbS2EIDv4d`0+&mOSC-EcwDevJ?nkw-mxf!gH2l zxCAbR%Y^^kQVv(Zm2j2t4NEm#1J}ZJ!auRp!wqmF+$212X@;-DEpV&wqNNRPhdYFC zSvrN6EM0In+#|ef=@nkF^uhhYtCj)b7c7Iqo0cJX7#`KQ-W7Igd&2J8zVLn8f$$r&Lt!uNNcfG~F??J2&DtGdU(NL9d*i>a zrU*ZvnT6k?X|PTBt(qjqq2sTH$uBPWWqDy>O@2Al#)j!cB0q@Yl7g!rfX6+zPh| ze?x1BJK#>ZOZb~wH{1jF!hLW*JOB?0e?uFBhlRhTjliSu7(5PN6YkR{guks#!c)Ti z+B7@^&kFyGc3pTtn-hLoyCFQN&BF`A-_aJ~o5Ca7lJNJmW#MscMfe$QRrvebn(&0S zF8o7nLwH)-6n;+I5}whvg@3H=z`Me8+Me*gYx}}Cv;*OvXote{+L7>2wPWE0?Y8iu zc1QT8W_sY>_V-e;VW<+oDUbkg>aGZ z+pNWK30w-72|s8phb!Pp;kR3>gdeh23x`;1gx_JU6%Mu53BS`?FMQV8Ap9rRMz{%X zhOfdca4Xyfw+p|=+5vY8|EaZ0IM&)N{D`$jIL_KDe977;9B=Ixey?>v_)+U1JOmHJ zBk(9Z29Lwngdej`z>~s%W}OmFwN4Aa-#R0lW}OxOfc3g?x^+(YgVr0uAGXfJ3-BU* zQ~1xVOYkzh0d<@@)?+Aa)YVtdY z|99i>$E*r$hBep*>#!5{5dJHxC+r1#3xC||1D}C?g+F2SgZ<$EI8gYL)*v_-4uM1A zv+y}M3=S9mlr;j5gwG3q+8PB%!!g32vBtu2a6FtK{G>GzP7nbtkM*j{UpqY>=&`m44_RB`Hn<(`fIEf%&DsTb!#!{> z+$a1UYrpWQbpRd|e#SZk55ptEKd_F%WAHe94W57};VF0;o`GkDe`vi9&k0XkZwUX$ zIu9?vi||c&30{U*;8l1HUKjqcbpzfMzHZ$T{&(v(yd!+Wx-0x2);)M%c+q+Q9}54> zdITQ}-?H9@?+7njO>a4g|99)#vQ-h@x0+r4-f4Z@w`#(7tTtE|Hrbr82kZ%Z!QR4d zHXrzmu<>(*u*2pD`@;dkZ?FZzL2xh}0*At9;d5{p91cgok??sq3XX~u1wkhEc+os_e;lHrW!q?$B_=a$fZ602L7vY=2xwa*ES@@&26?he1 zgV*5=coW`&x8WUl7v6*Sh4X9&@F9EzAH%odJFvvysKjhgI*bHm14c3MK%I1VU zU{BZ!_J)1nGq5l02m8YTaG-F3EeH;VL*P*OEPM_QgTvtnI1)Y&M+twz77fS1v2Yw5 z4=2Eha1xv>Tx7cpr@*Oj8k`Piz?s6IvSq>9!lkwxI9K>d+Z8wu&W8)&LbwPn7H+ha zxcu^Iyl%9W3b)zH;Bw)1TLoMx{Li*3;T~HxTm#n%_u1;;dbmNj-_{5>3IB_&S$N2H z6>bs!j;$4L6CSm-!yUr2woaGdU_1r=U|JybtyltC?XM}fbv+#A{U)$#38^XV_&BF`A`?f{+ zrm)q%+y?0fLOu($mHK7@~ieeB2Z zZTJpsdh1F2zq|f??27OMb~CKOHsK(<4m)8F*i$&z?ge|pKEi)wKLh*1e!}PM{%`;s z2nWHza0nbK{4V=h_#7MthrDxrcuDv%`!c)&ufl8aI=lgI!dvh*yaVsT zd+3H^I&DRk#Iih1=kExC8DKZnJm6-Ea@wE8J=CgZtqD;V%0i zJOmHJBk(9Z29Lwn;0bsVo`R?08F&`H4$ldH-F^d}hZo>Q;cwY*!b|Y7@VD(N@G86} z{4e%(ctd#Dz6o!^+rlIE9e7uG)V?P?X5WVogrBh=!bk8id>g(4o8D$JUU!fGzi(Gy zv+%Qa4Yt8L?1VjFPuL6ghJD~OurKTf`@;cnpzx$U2o8or;85Wi`&sxL940(#4~HY* zNccP)1xLd%a4Z}L$HNJ5BAf&#!z!oRjp z3;)(W1JAuqp5+yQsOUBbS4H{1jF!hLW* zJOB^EL+~&>BK&|p3Xci<>ErM<;kW1$@TBlt^(lB7o`GlK>%sy09DDQ_$Isr zFT*SFs_@(NHFzD~fH&bS;Xr*G-hp@FJ$N5JfDhp#_!zz|{GfgZHa&Q6{C`kaU^A=< z2kACghn=to>4uM03|5!f@pA(MI!{Bh? zNIgRMydEhWrJommSdW6E;TSj;j)UXj1mXATi7x;4^!l6k=}E#L(39cIa0;9XrwOO) z>2L;|31`9CaE|bY^j!D~oG1KYJzw}Q^aA0()C=Jv;S#;rW%K>7UyoLzm%ycPneb=y za=1dcOs|Bi;A*%Au7&I1dbmOONxcznf}7#1a0}cDx54eg<$4F)33tKWa1Y!I_rd+b zpVbH8L3jurhDYF0cnlsFuF$W+6T*M3Pr_61G&}>(!q?$B_=a$eJ`XPl*XoP#P2n%< zOYkzhB3!Sp!fWt4ya8_te@Wkhx8WV(27MRagZG91PCtMT;UnQj{TRLt-w|%oO+hE| z|L*>$NmpPqtO@_4Zi98$33~|tlkN$73AgIrun&9&_J#dme>eaRgoEH6 zFgP5J5N^{W;q$^z=}~Yr90SL~ad14G04Kspa58)uPJvV5G&mj3fHUDNI2+D^bKxs+ z9-J@yHN5~X6#i$u2rh<8;8M5@E{7}NO1KKHhHKzjxDKv|8{kH`32uh3!Yyzs+y=M9 z9l~GNJK-+jZ|L1{58Mm)!Ts<6JO~fL!|(_^3Xj3#@HKb>o`k31X?O;ng|EYN@C|rg z_?!9yyeRxF{U*EwFT*SFD!c}-!yE7>yajK=JMb>N2k*lN@F9EzAH%odJFw~P_s0Kk z=?ZKX{?J&|d&54$*Yq>6FYE{V!vVtI*8|}oI2aCrL*cW+ z6Z$zg3=W4Q;7H+T_49BP91X_^PwKI792^fPz=^^?(39X~_%fU#Jf)|?X>dB60cQ&T zP|t$1;T$+ucv`;#=fU}K0bD5joL&SM!zFO3@Qhvtm%|lsC0r%^BfT1~fop|l^*Xp- zcusGC8{sCn8NMp~fU^Z|74~zs!R>Gd+zEHV-Efcaqt0HJ6Hm|AJnHNde$3eq4+#I6 za}XX9e!@8nkHDkw7(5PNgC~Sjos;ksJPpslv+#A{4>;%G8}K~5058Hf;U#z(UJ?GF za}{2L*M&di+<-UXEqEK=fp>*J?A(L*;RE;(K7x;h|H642z5|&%t4E zI2-{-!sp>AI2w+DW8pYBUbxhm04Kspa58)uPJvV5G&mj3fHUDNI2+D^bKxs+9-I#s zz=d!TTrB*gvji>`{=BnH_-~x$aD{MGJnGyM+gxJ#eq^kh2f&hX>$6cu4r) zoWt-4JPMD&E0^r;ob(f!yRy^@EhE_guUIn;U2gb?t}Y<-{d|Z?CU-V55dFmh_Ijg zC_Dy_!`FoU-6!BlcnY2teyjToJPTik=Y#{@ZwLpu&%+DwqHwVLO?U}jhF63`+*jc> zcpct=H{mVeQ1@-&v+g_aF1!ct3%|?#K=_Z{58)&D7`_eP5&jc*Q^>vX|4-Z%;rFgxm%{@>!-91P+!#!9y z(>(+Zh0nt0;4nBGju0+%k92wU^mwJv{k(9AdlVcE$H1|0obZ$G@o)m12q(eG@MSm! zPKDFpbT|XfgtOpmI7hhLJr}+L=fU}K0bB?d!NqV1Tnd-L^JPThJ9&w+8Z@}~L0=y_Z z>V6Ym5*~A3hF9QK;c@phcwP9K`v$xTZ^7HbQ|>$PuJCj2d++LRAzUQ9?p_R+z@@?)?qzVf@Gspf;7Yg(u7+#i zTDT6bha2EVxCw5Cufi>GE8HghEBAJ|1MY;og!kRM;U2gb?h`(6?-xFFAAkpikKBjg zVR%IN*nL#^w)+@74qt;O;7Q>-?o;qIJR@xKn1!zkD;{(34R~JI?6DxMc`U*=;U#z( zUJ%@pDLedmQJSB)KJHBv~0rvXUejNs^3}WUZ{MBuTQe zR+40_tgMxlB*{vWktA6wD@l?hBN=;ttz;x?t(CFn+kM^FUGsk3|2-eq=l$dQTtD6% zH}C;`2p_@6@QJXS?Nr!mJA=>R3-}Vg61Lf{;TvIx?G`qKJb(T>Y$|LLeu2#byTWd; zRrrNAoA8TlcGxNWVw)%I1$ztMvH1wU#O4e8!TxXn94P!!TM!%!hX_Ax3x&gkAF+kQ z5pX0N1xE|N%oZd3a$77M2gkz+aH8-lY)No3oC2r9X>dB60cQ&TsVz(Rm9}g+2hN4_ z;C$gnZ3S?laJa1qE{02lUu`Re%YF^x6MuXb2h8+Kih1u z9d-(T-sUOXXY&&NlFeKA%Qhd_S9r+g2m1>T+XCP~;jh|);9%iVTL>Hqhr!`+1RM!R z2|sCz*8F+>efOj-M);eySU3)jhZEpLI0;UMQ{YrM4NiwM;7m9R&W3Y@r);@!p769S zA1)C7j;#h3vbza;9lWvTOZsH55R-)5IhWzz@zXOJTAOrn-Jc$O~O;~ zG&}>(!gKIEyZ|r4OTv4$W#N6>itt_AD!c}-!yE9X@PFF2;BDbw*>>Pv;a}VK;C=Y6 z@H4gp_)z%Fb_5^8C&K5pQ}|5y!gdZ{z?Z_8wk!Br_{w$z-@=B_d-MOn`|HZ4!Y0@v zd}DKk-C!$hgYB>r_7wgdU6re?R?3k0#+ado;r>!pR=3aGUVkJlf$7xD)PzyWt+VS2*3H5AKHtgtI&b z;URb!9udy=7=_1#-|aCDPr#GH@9~&|r-chVX5d+P4xWb>;6>pgk0p3nxY%O_UWM1- zb$CO#)MFFgg16xvco*J-_u;$n0emQ2=5Yic3xCk#1U`k&;B)u_zJ#xY>pZSCKdL{k zbsjhHEo^w@z4`xO{U<$C*aTaIKjq;Hy9qzxVTEn59d^Q=!hi4K1$zsB#={5p75)bg zKiD4*fCJ$m;m>*m!y&@|=n)Es33qvf!x3;K93}jDk7(g9c*MZ5a2y;DC%}nt5}XXD zz^TGt^hkr#;S4wv&VsXr2R(A&TsRNThYR3BxCkzWOW;ztOnAtn9Ik*X;VQTqu7PXe zI=CKgfE$Is;L!v(!!5$29<9P-9&N(o9_?@k+zEFHf5W32?ty#ZKDZwq5T5WDgolK` z=`k!k@UyS$GbfhZo>QcnMyHSKw864PJ*g;7xc7-iCMJ zU3d@Phwlo{cpSio@DY3rpTMW^neb0M&Nb)i^ZO?r7s6W}m++PFQy$mw4SWk5!tTxg z2lam8p~5EE0=vR)uvPeJ4;yTUovzx7ClQ{YrMP58e&(uL1GGT=-&OZdVg zTlmr=NBDOhxp1EFwMRZ&02jhVa4}p0mkJx~Wt#t1f4&X&a$(h80awCRa5Y>5*TQvh zJ=_2{3Y+Xra5LNjx59107JEC~A?$AN)cp7Qe!1Jbggxxta1Y!I_rd+}fUv_p2oJ%- z@CZCA`~v$JJTClV`-JAt>*xDo`y@OCPYe6mXW&_3fBPIf4==!r@RIPu_GNfQ_!0Xm zyauns8}KH)1#iPU@GiUu?+d@oeiuFv4zeG@NANLx0-wTX@VRi9{X+A&em{iSFNMSH zSMW7_1K+}iNAJ!52l>P8Dr|x+uq*5){3^Q@wh6!5Zik)1QFc$*OE}){t@+>d{fW2x zz`n4baDv@m_|5hJI8gX4_8>S|IMp5khr(gP@34o%5pX0NCHzi%G#mrR3O{a-gX7@@ zI8pe|?MZO5aJD@KPKDFpbT|XfgtLV6?b({Q_3NK+&w+E{JmCU+zVQ3(1#qEoiM!P#a1-1Nw+Mg4-U_z~f7IR%cL@KD zy%X*duCaH+J#a7F2lvAR@St#meMs|#e!n%?hlLyMBk(9Z29LuN@FYA1Ps20ttner8 zbMUT1BH{ea-LHicG4e!9a z@E*J`{AK%H_&|8beh44I$M6Y!3ZDso#eNQ7z?Z`RV!wi~g}-XQfp3Lp?S}As^Z$;1 zJ!b8y@SNQQTZHHBuCSZ%_v}{K2HS=I-R^`vVK3qD+r42Q*jM-mc0br(_=olYI1mmJ z{*gTx4uM03e{2tf!{G?wb$g`nhCK?77T&bSz_DZ~~kNC&9^Z3Y-e3!Rc@Y zoC#;a*}~iQ95`3_7xp~iU)uA9pSBmkg~GqJ7io^upO@d-i-rH&UILd2U)syya^Y)x z1zaioti1}ZhHKzjxK8-iUJp0Gjc}8&$(!gKIEyddo9ScI40Wq3u{%dsl# z?O21?;SG2b-h#Jg)-K71EGfDeWL)Nv&IO2;vLA{^#86%Kct!RPP= zd@1}Y#}#}H-@v!Rkq*PF?#=%P@3TmU3Y&zZ92Vgihb!y`TZLcmu)%iWc!v}AguP&I z*a!B7{a}AM01kwM;9%i5Izr%3I1CPlBj89l3XXL`E$8+yFPiO>i^Z0=L3#!jC)J;SRVH?t;7F9=I3o6V7tb>Tm%=xC2%QR2A2yDIx65w zxJr1)Q4QA!4?Ak%I=EhV#L)mZ!cD@Xj%K(8ZWSJLw88Cghw!+g6Yhe$g(n<6aIf$; z9er>=JOB^EL&8&zVR%INTaHn93?3Jrc1*yN!ryjG!PD@J@Qh;?o)i9#V;)|B7lmgX zOYpMrcO5J6D!c}-!yE7>ye0g7$F}Al=^|IFbj{BwsF z><#`t2hYO` z@FKhfFT*SFD!c}-!yE7>yajK=JMb>N2k*mo;RE;(K7x!P#a1-1Nx4^A%8{7_ez@2ax+zt1@ zy>K7g4-deD@DMxoFC6N;3m?FT@R9HRDyTMlBaHkEn!%o-}_JX}(AJ`Z6gZ<$EI1mnkgW(W36b^&K;RrYqj)J4%7&sP= zgX7@@I1x^Qli?IN6;6ZG;S4wv&VsYy95@%wgY)46xDYOai{TQu6fT3y;R?7Cu7a!K z8n_m&gX`f2xDjrGo8cC?6>fvu;SRVH?t;7F9=KOH!r2G+!vpZ3@T;9e@Gv|AkHTZ{ zxNxL%0-l7Y;AwaUo)vzLa}J(|7vM#B30@YCa<0Iu@EW`hZ@`=I7Q7Abz`O7sybs@n z58y-i2tI~S;8XYvK8G*hOZW=DhHv0o*bw#n`5)y}VH0eDU12xa3fo{i?1VjGFW4LQ zfqh{=*dGpn1K}Vz7!H9$;V?KHj({WKC^#C9fn(t~I37-b6X7H{8BT#y;WRiM&VV!F zEI3;@+L;6A!g+AM@Siyg;6k_vE{03sQsEe98C(umz?EuiFX;TE_RZiCz54!9HUg1g}!xEJn&`{4n25FUbu;SqQg9)ri>33w8of~Vmbcov?6 z=ivo-5nh6q;T3olUW3=+4R{mYg16xvco*J-_u;$n0elD_!N>3kd72+2sgpaa0}cDx54dj2iysF!QF5V z+za=?{qO)h2oJ%-@CZB#kHO>c1Uv~(!PD>zJPXgk^Y8+^2rt3Q@Cv*NufglWiOvmp z6W)Tih2QMlfp_6OcpttC9|$Ko58)&D7(Rhd;WOdKoagWbdsP4cDMuXguCEw;Us5|=5PAk|NAmY&R*fioPBUV zJOB?0KWiV-{2e|2v-V+l1RjOQ;Bn#C*d{dpo1XtQwn=yjo`z@OS$GbfhZo>QcuDv% z=d$MS>-{D>SKw864PJ*g;7xc7-iCMJU3d@Phws7%@F9F8+-yG9{3Cron$0KhDSRgU zHru)8pX%{%vt7WK@D+Rw-@v!9;m_{P|3B7KVH0eDU12xa3fo{i?1VjGFW4LQfqh{= z*dGpn1K}Vz7!H9$;V?KHj({WKC^#C9fn(t~I37-b6X7H{8BT#y;WRiM&VV!FEI1p^ zfpg(JI3F&63*jQT7%qWJ;WD@!u7E4yD!3Z1fotJ9xE^kR8{sCn8E%1F;WoG(?tnYt zF1Q=+fqUUTxE~&X2jL-j7#@K~;W2m|o)Av6O$xu=HU&?^Gs4NvS$z_uzf_E_?tV!bkA2 zu;P9KpTcMGIeY_ad14G04EARRPd+zhwCt-`GMoaZ!f9|ioB?OTS#Y-S-vBqlO>nd3kKK6?-vYP7ZE(BhkKcI^-vM{RU2wPNPu+PC-vjr;eQ>|# zzrXV!egGbXhlCqlhBbfo&i(jCml1dr9)ri>3E@$7QuF8T+|NI%PQlag3_J_Z!SnEf z@YmEucnMyHSKw864PJ*ggvZoPcuV*v>bB-D+_}F$KT&t!U3d@Phws7%@S*UAdITTC zC-5nJ2A{(h@TKri)hqZ~_$zKVn!kMK{{DQ$?G`q~-kbk_Jg&kf*aEx4Zm<=$3IEpB zuKBBaf4_Bg!k(}f><#`*{rHrl32ug4;8wUzxXIM6`9JjhO{NaG6YdiJl&Kr;fqUUT z;TBUrJOB^EL&8s(hT#!-6dr@eg*{v*H2+H94-c0~cnY3|XW&_Q4xWb>;6-=|UKVb% zt!Vy@-hZ2I6DYibg`c!;Y5twQ{z>aLyaVsTd+TTk|HtF1@H4I^*aEx4 zZm?C@X0vJj6TKgs%?>+ZPuL6ghJ9dP*iZOTo4;m<-p`}905}j1f`j1@I1~isQD#&KQXo>I2lfXQ{gl?9nOF=h2Qc}mgYzF ze%|s>Hkld#RbS@Y}k`Zo6#xD{@L+u;tl6Yhe$;U2gb?h}5- zyn4ZsJ8->T2xz|NppN z6@JWY()=Mk-(zMA>?)jVcGLV(eSNOk3fo{i?1VjGFW4LQ5q^)^SM%TM{k+HQ2m8YT za3CB62g4z7sPJbW3e)@vy`RrM6b?tgk#H0o4adN-aGda}HD2?l^?p{Z32-8u1Sbps z$eJSjV{0m$2B!-@W6jX~8NHupteJ2YoDJu|xo{qw4;KjA+zU1Tqu!6ry$CLbOW;zt z3@(Q&;7Z{&_bSc*toO6#UJcj4wQwC=4>!P#aFejr*sS@BdOucU3)~8~!R>H|u$Qq@ z^H=ozUdArC8}5O7;XdI~kABTx)AN^l48ViJ6COjFpVZe+cnrfM@F+Y6j|(?ACNzIr z&)?vfgs0$Xct-d`j##{HWdY8MxaV`h&q42w`N1A`G*MFDw z7(Rhd;WPLgzJM=Una90SL~ad5nFw0nZ)XZ3o~?ul>`oGkoj?kR98oF-gqOV_Nt6V8IO;T$+uc;A?(*+s9nZ_I}a;6k`a_z~A)&F*@>M_fzbQn(B*7d~;V(EI{D z--&A_Tm@IdHNwAft=0TuJ>PF!>)?900d5rjsI^J+OZ9vowKl^oa4Xy( zYWEJf6Yhe$g}?35qxnzueBbuyh5O)sctCi>F{t@fdcG0I5IhWzz@x%ju49^CtLJ;l zbsV06Cxx@jQ<`6|$G^)w4bQ-{@Ekl3FTjiN61*&&V_tz*;Wc<2-hemZEqEK=fp_6O z;dh(&;k)nwd%# zY=K>cE8N{QzeTTC;ckU(!XI|G!%pGXyL)PWyPhx3-Anil?%u+0boUWXaQ78{le?er zo8A540O3zt12sRc*Z;INNcahBuyC6-1P+D6;BYtsjud{<8m0N&dOuHEqv04hR`|`% zIL&{l$G_Pb4=2Eha1xvhr@*Oj8k{a%Y0uF7KE1z6dnTL(XTv#guJ99Xd73|<=YPU2 zA1)AXbt{C6gn#W`tog%wzF)hSz@=~*Tn<;jm2eeY4cEZ6a2;F^H^7Z>6Wk29z^%fU z_BPFbqwm-6?Co#|+$sD{N0;Wm)8pUi=!SdXUbqkLhX;g{oP(M_sn<(#4#C6l2s{dp z!Q=1*JPA+1)9?&DD{OF|)BJ>fJ_h%BcmZC7m*8c11zv^M;B|Nd-h{W{ZFmRX6@J#f zr}-cB^MBU958s6kgp-|zn*T|UPj()`$MA{p+ucqze_oG&yW5%YJKWBNGuCDW)p0IU4G^)`UI-V##c&B+3YWpC7UJ(AEc~SHK>ivAs zyaX@9EAT43CR}A+*ZhBa{wnhZya{i?+whL??|=Vav(fMV=ZgmSJ$N6!3m?FT@DY3r zp9uFjPBlNI_tWDzgU^L~9T&o?^HQ^i9~XcYJQ;}|H_993HRpzAFaYB z*aEx4Zm?DObr0Dz-_h&8?jbwuggs#|*c)&ebfIHzX;Z$=s+ynQ* zeQ-ZK01v`L@Gv|Aj|#udJO+=$6YwNF1y92>@GLwhJm@m7`6K%N54$YDi^3x=OTu4s zSr#61S%FvKHF#b4>nQdLsNnw^PlZ(&Jy~b_Sor7x1O9m)jM54d1}Gu;ESj=Kq6!yxdgS1Y2NN z*iHB)ZdT2Iub=Nr+-$HNcEX;*er{f{H|zuZ!hWzn8~_KxL2$6}q%}nIXZ7=)w1x_Q z(;5bc!x3;K90fov#Cp=}1hZBS=?TMN{r=L%yJqb>RQ{YrM4NezUTr)I(L9eH{ zX2Mx;wy^4&1Lq2Fy5?#AvY!8EuK92QTnHDz#lp)Em1zE|o`3nFQn(B*hb!PpxC*X@ zYv5YA4z3senQMdQZ~S3@8sR3mS$NB}1#T67(%Po^TYCN{t?h6J+$sEP_b$!f)#HEd z-VOJ_y>K7g4-deD@R0DAZNr+sr}y(^+Xy@gkHO>c1UxDHoOMd`5A=G^S*PI{cov?6 z=ivo-5nd9$v@dJ^vEI+`>?`o9@cZm*nt!IRf1iCF-helS4enc-f1$@4+_&K!co*Ii ze$2eD`9Ji0kD2en2k@cr3*3%0|4NU4f!i^B0-wTX!k%vD@P+Ulw@b~x(d*rDyMnLb z8~9e(*UgZ4Z~i~X=j)~lKjCK5{NH-LRyPamDxB=$ruldJ`cw}qY=iB>?=m|zKc~mP z%j^kz!QR5}Hv4Eczx4j+J?}RA!hW#7aFsbg^PlMPRpvlA2o4s`w})tU={fpdkulsq_J*jp)p3*jQT7%qWJ;WD@!u7E3r)0HaCpVaTq4=L4} zKcoB8N{!~v=^j^VHGfI>x>Be4YkzRP@UN8y&C~jEMQzl)@CP>u7pu*hf21ETR$Jg! z;Zn5?ZihRBKcsdFSEyaWA6C2J9^qQG7w&`m;Q@G1`0vyqco-fLu2)ClF?d|~6Y7L; zqdEys!PD@J@Tb&Scn+QyZdMoIMR-a0)9SKto4O+WJ#|&{iGF{4PhEr8;SJ$`S2y7; zcpKht!r|=nk4qw2R@D+Rw-@v!9q2u1XeQ2 zH`of>U_0!DJz+1{8}@;HVL#X(4uAvUAUGHffkWXiI2?|EBjG4G8jcbEp&Bc^s>TVg zsqw-;RuhDOq9zJ&s7b<`YO?Up)D+>LtEs} zbKyMUdV|4!@BUBL-%s@hRruoulW>#4Rda^EzRBPw{3(M~_z8oz=3IUK69ymQR)g;! zoDpC!e8W)oxA*$_=pzQheU}S=(@+6d3QrlTgr^PFa1C4w*9p%U>fr{s5pIH;g}-BH zfm?-V4Q+5c+yQsOUBcfrbi+MxFWd+B3r`yc;6dSe!w@_SkHDkwnDF-uUJ?GGVO97?hBbH{-helS*9}|nHoPPJ zQ^PL2C%k3Yhws7%@S*U}4M*@Xd;*^eKV>+B&xL#cd!x3;K93^~Wh=yZ?FAcG992^fP2wxcz;UqX&_*p{=oGN^2NQ2Xb4N8Wv zqGZBZ!d4|)^Pqk`tx67@D{NEp;Cx{Zr2sAzwkt(&FqD%`1Dl@__S7zZkcphGW7vUv%8D4=`;Wc<2-hemZEqEK= zfp_6OcpttCAHaw35qu1vz^B5mP|o0U_yWEZ4pFY)YxoAfg$;jqZ~i}ce}*V3Y!Z%F zESkTkzi;CeSJ+MXZHg7P!FJdQd%|9@H|zuZ3a2Z6u)lDI5&#DZXDLB&u<*N-5aGX2 zLWK*IFgP5JfFt23I2w+DW8pYB9!`K0;UwYrDamjOoC>E2|Fx11X9#~l$%M0n%av?6 z2hN4_;C#3ME`*DOKcW=FC2%QR2A9JXa3x$NT&+~YHE^wPtx^Zq!wtd>N+a9^H^VK$ zjY_LDw_ybQ0vtMD4U4sXDl@D{uc@4&n89=s3Vg%99E_y|50{(I#FK84TVbNB+j zgsr_7rYcykKwG2lj>iggX^~ zH~ov#2gkz+!o5nO@aL5zI2le6{(_P!{6!^A zcu+|f9#JyjOyRF9S#UO-1Lq2VL&+1KQu5&f;cqL2!t+Xz@b{ErxCAbR%iwb1MWq6+ zgsb3cxJLNjm0GwCu7?|hmy|}hNqAXlhFgSxq_o0qa68-qcMAVh>4LlA9^p-;7w!}O znbHprz=Og+SB8Z5lwo*8_-SPn9)ri>33w8of~Vmbcvkpb%ADqx1>XPp)4P;;cmZC7 zm*8c11zv^MgmaX2cmv*qx8QBzcPl&aF1!ct!*_*ql>_)t_&v%Id<>rme@;2o{HOZ< ze@;1r&*2OBQrJtm()=nt-;0!M_y)d(4IelB{@;W64=AeU*XsE`pqO9_>m2;J7G`Q3-*S6gs%*~n%|_?zcTm(`EUVTDEzcir1^b%zNeL9xCAa0Zdb}Qe?X6KSIXfE zxDu{{tKk~BR`^9qo#qeg^p}Ui<-nw>>+lA=32(vMfAIhO zKBuozns{%X?FJbP_gw~;!xeBPTm@IdHE=Cl2iL<5a3kCVH^VJ(E8Hghu+k292nQ;i z!of-x+$|iU^uWDvAKVWQz=OiCREC7Zm0@@U9)-t*U#*M_M=2A+uT>_6W0Wa)TKIL! z3_J_Z!SnEf@avUD;RIy~UWQlTRd@|vhc|>DQ#Ro(cpKhv{hYvwrRB~!Ra$%3=t95@%wgY)46xDYOai{TQu6fT3y;R?7Cu7a!K8n_m& zgX`f2xDjrGo8cDWVx<*sgWKT_xD)PzyWt+;5~WwTROy5J;Q@FM9)gF3Kdg+vqwp9! zE?lKd2>*>T2~WY(@C-Z)&%yKXf^dzp2rt3Q@QU!qlvQ{QUWYe?Yn4rS3*Lrzg#S+2 z6>d=Wgd3H8;U?v-aI10vAHqlQF?<4_!e_#5$~k-iUkZOlxq`3Z8~7GBBt3ur|AV5! zCgIO27T6Vb6Yf&1uno4uPS_Lng1uoM;eS$mVL#X(4uAvUAUGHf5$;w(;V?KHj({WK zC^#C95&oPKE8L^R!SQf{@b7=#Cfuha3HK|>!e3TW;8fwSDrs;!oB?OTS#UO-1Lwkd za6ViB7Yct(DT0gP65%nW6fT3y;R?7?cwDK1tA!_&8n_m&6P{G+g}RQ|@VAs^ z;cqJ~!rxI^h3AzvxLtTj>3}=oF5w?2-Ea@wE4-@o3IAB>7v4|?gnyQ)9?&D3(vvx!Vjwp@FKhfFT*RskEpBg8oUl~ zz?;G^Q@4ae)NObN-W7hOx(DyWcZDBS58y-iNcdIiF?<4_3P-AE@Hu=T9Hm~uSMarP zw0Z;I!iLA5KmTJ@6*dXSsTScksIJ0qRNaK%q*{d&Rhw{VMp->-(ip>P-+E?lZc2$!jm!j){2?_3PKDFpbT|XfgtLSz)oeHi&V}=YtJQqC04@}+QH$VWxCAbR%iwaj z0)?9fkE;!EBitn1pf(FPsV#6T+$P+tw!h!#!{>+z0my ze?}b;ZdV84A$VB0NgWaHR7c@4cwD$!oe=I(Cxt(+PQlag3_L6R1$9n%K%Ivd;6-=| zUWQlTRd@|vhd1C&cnjW!ci>%k58j9G!Uymnd?Y-i9%~+b`Td{w4XG#aDSQT>!xzHC z>Lq+7{8jZDz7ZZ(Z(&37z4`y3-><7GY=SMYE9?eaVH<3Rov)I9YgFO@UM4G&o)O zn`(yejG75&!P#&QoD1i{`EUVT2p0+et6Hr2J1@Wgy#K3OBD|oM!ewwdTme_YRd6+2 z1J}ZJ!i#FX@RHg9H^NPDGu#5V!fkLn+#$TIcEVk7H{1jF3NNXB!ar2|;Q@FM9)gGA z5qK0H6aJAp4o|?7@Dw}^&j_!pv%)`7=iqsG0bYcc;AMCPUKReCx~BQZ`t$NLbzOKz z-4OnTx+(l0>K42W?+E`tbyxU6-4i}k_l19@-W5Jp58y-i2tF1*QBQ<_tDeGV!vC$F z3ty@i!vCvY3SX&L!oO3mg|F2c;b+xb;ak=4mV5L6!S%RRRpIAU6KoMS7+qmEVZ~^L zZNjS2F6?4-3cDITh24x^!hd4)7PcCFgx!t4!X8FH*kAYs#sD}F4uXT>5I7VLgTvtn z;TIYs;V3v7j)7z0I5-|ofD_>)I2lfXQ{gn>7Z}sw3^)_cg0qERY|Mdkg?)^9!gq}M z!oJ1=VLxLbTm%=xC2*;*zp)H1hb!PpxC*X@YlQubwQwC=FC1WOfE(c^xEXE{4m7sH zZE!o>0e8Y(aJO)Pu?Oyj`-Fpx{qO)h2oJ%-@CZB#kHO=@!Nv)A5}tym;Td=qo)Zo- z&ch4vqHw5j30@X{rEx_#%(yE2sBuj=!niK{YU74*q;XUDwZ<)YTR6_R1MdpI(YPm^ zVB8l@G~N|{v++PU*?0&a38xs3;S=Gv8Bc}ZVLXG+g)@y8@TKtM#w+103>*u`!SQf{@Mn#Qnt!8z zz5ZEa5}XXD2=^OP;WXhd8`I$o;bCJYoCRmYIl^Bx=E8ZxW5#^AK=|v%LbwPn7XF5@ zMEFT#sqnC|O!!;Ia<~Gn6rM3w!PUawHP*nj!gIztxE^j0o;NlMFBqGIzh!I|UNW}8 zt#BLM4tKzva2MPS_rSfvKQQ*e{qO)h2oJ%-!t2HncoZIk$KeTh5}tym;Td=qo`dJ% z1$a?-!?*-5!z=Kr@TPGMUWYf}O?V65hIimycn{te-ZI{W58y-i2tF3xHlDzz@R{(A z@f^N@FX1crTKE^n8{u8!Eo^w}z4`y({r*d%3Y&!Yj275cc;DzIeAj3dJ}}x~yYPP+ zov^3yuZ&*8r$%qs2lf^IZ=)aV4+p@3!vA9o623GB!y&>~#!xs64u>P)NH_|PhGXDZ zI1Y{%zBVSniNensli+0G|1+k*sc;&c4rjoba2A{m=Lp{#bA_KX=E3>G22%lCDEzFk zNLV!$3!6+O!WL60Tqf*dDi?mpR3ZE)rb@U<*lDVUYlJ;bwQwC=4>!P#aFg(hOwDi$ z+$wy>)FvEYY8Uo1b-bRzsF(Q;CMJeIM0*_Ckf}9 zlHn9M6;6ZGh2Lw+fHUDN;UZHuoCD{=d2qh)Uz-ZxLbyoy{ib5L1TKZk;Bw(IQw3ZJ zR|%J!s^J>A7OsQqg+FX+fE(c^;g6V_;TE_RZiCx}t4$rkb*4_ZOSs4g1|t?lK+1NANLx0-wTX!ri8G;m?~cg!@dF z@D+Rw-@v!9;cd^K|9vJEHVJ>pWYIhjeE9I%v1x{3jf4ZC;SUjJ=_2{!cB0q@Sdp!ZiU-~ zpEk7%-!*l>ox%sEF5zFBy5SzU7w!{2HuVet#xwvA3jfwL1P=@UmuUnZg~x<%Oyin= zso!5WrU`fwo)W$_O~W(7&zWZ7Ibnl&9$pYu&5Q7ou+h8>ufVJD8oVxSF>k<|!Y<}5 z;fKuI@D98y{3qr;cwgAVd>1}|4~6aKBluX@X+D8Zg+0w@!d~Wc_(J%_=1cerzJ_n$ zTiB3xZ~i~H|6XiXVH0eDU12xa3fo}2@Ex-g_JqBJUt;!#eS}|X_7#5E><9Y`KVlAm z1BG8~4iXMF2g4z7sPLoaFgP5J5Dqs-!clOv@T<)+a4Z}L$HNK2k>*4=2~HM%tvLlw zh0}zi&FOFkoC#;a*>Db=D;#6agY)46xDYOai{TQu6fT3y;R?7?_;uzgxLP>YTm#p_ zb#Oi005`%-aI46nee!s+HUcpct=H{mUK8{UC; z;XQa?IMaMrILmwhAHqlQF?<4_!e_#NZa#-Egx_txgs2H{ri9TVWe)hn=t|>;-$nKEnBCU)T@!7k;lf01kwM;9xie4u!+ua5w^vgrneS z;lDD+z_D-~91kbJiNZzZBsdvPfm7i$I33P_Glk!0&VsYy95@%wgY)46xDYOai{TQu z6fP5fzquT)fGgoDxEij3YvDS$9&Uge;U>5lZh>3jHn<(`fIHzXxEt<)d*ME~A0B`Q z;URb!9)U;UF?bxFfG6Q8cp9F8XW=<`9$tVK;U#z(UV&HPHFzD~fH&bScpKht!r|=nk4qw2R@D+Rw-@v!9A^rLD|NUkaHo+Fy6?TKIuno4uPS_Ln zg1uoM*cbML{ow#O5DtQa;Se|!4uiwt2sjdsf}`OWI2MkB){5t5pIH;;TE_R zZiCz54!9HUg1g}!xEJn&`{4n25FUbu;SqQg9)ri>33w8of~Vmbcov?6=ivo-5nh6q z;T3olUW3=+4R{mYg16xvco*J-_u;$n0elD_!N>3kd3>*u` z!SQecoCqhu$#4ps3a7#8a0Z+SXTjNU4x9_;!TE3jTnHDz#c&B+3YWpPFgP5JfFp(f%@PGi3xCfN1IG$~-x4QWZjOf&gg<0X6s|HS!O6lOHKz#Inp5F4 z;lDMf3pbcE;7s99n6reN&Dn5{@TbkW!foa}IA8cP<^thPbD{7*nu~;c%*Akt@IRYN zh5OBA!e2C(3lEtq;7Z}In5%?G&DC&?@Yl?>!V~5?xL){4bA#}-xe;y>{XPy=|S!Uo_VY6jU*v&EzF9`pMWl`8}S%Q~^9hMbg zFUu;tCj27Hy0EWh1Kt#ViDgSTz_JbR2tQ)k6%MxS!TZ9mu-p|6vmC&O!jD>xgd;7- z@QLtiET_UTmNWQV_;r>G;dsj>d?oxw%e8Ql-JsQ@G!f1!oI?(UK!PWXXl|gui0R7ap|~z=gtJvlIzW zSc-+8w3G;c%TfxL2~S(fg;y*UaHa67r3$WwYv5YpA6e?)df_!o1KbEV!Od_B+zPkB z?ZQ8{bikc(7u*f^z`byv@VccR9)JghH!MT&u<)*B1RjOQ;Bj~Yo`k1__bk)!3_J_Z z!SnC}ya+GB%fe4vR)qh^WUcx39Z`cR+6@Gz>pXLwi*Y^c3{=zSG34jCPAmJCe1j8Y4sPKzj z!i4X*gu@YVBpd}t!!g1yafyZF;CMIzP85ErOA?$6r@*Pg54)tn>2QYdBQBZ3K`vQv zHksln_dYp@a~^sG*b+B*q$IC{khxp@dS) zthJO{YbmvqT1%~?)>&(-D9bJjV&);T|Z{Ob2Q=ejQB z`3Nz&t-F0c-#>P4H{jgg*Xz80pYuM~xlk6vJ@69ohZB~<%ivzP4_+>QHem(467Giw z;8pM-JOr$#aEAEf37K#foDJu|xo{qw4;R3Na1mS#&w@+fQn(B*hb!PpxJvv=!fd!2t`WbQ zP%HjKLLFQ${$xS}JQtn^&xae~1#lDG47b3o@FMZ2658N)xC8ElyWnnkG2A2mbixvG zPr_31l7wY&FWd(&hgZNW;eL1kUIh=rL-16bioczZ2G4+J!s&1ZoC#;a*>Db=3+KW4;_oCB zz=h&JOehk6H=!7wCH|v?61WsDgUjIxxDu{{XT#NS4O}b!enK5w4>!Pb;d$_UxDj3; z{y{<$+${cKLW}rE39axVxJ~>g3GHwP+zEHV-SA?#2VMd%g_ps-;vXmU!OP(l@JhHJ z9)MTDgYXc%8eRhr!)wJm64t>Z;++ZW#k&(Wz#HLB@Md@mycOOCZ-;llJK{X;Op=W_$GWy{L=(`Zu0v7(}Y+!PW;~!;>G_X!2^562NV2oP<%Kc2~LKm z!zpkooCeQ;XTs@l2AnBAl8^;w!#Qv+oCoK_1#lr;1Q)}z#77fK;8M6ud@P|{d_187 zt`wh4sDfw1)o=}53)jK*a05ISo(IntpGs(i7r;$$Gu#5V!i(TGxE=0*JK-+z-z9Xz zi{T!43A_|u2KT~!@N#$syi)wDgnsc@!hrZ}!YX(W9)efHYv5t=xrDXwI(P(LFaD>5 z4e&ia6GD zReX=%u;CR>rdttxW;|an^a56j{PJvV5GzOI` zd(z#7tVw8;R3i2E)oYl#o}q6S>hy5iTFNGsW{nFCZ6so7pHhC;7W0t zrwX18SHm@MEnElJ!wv9Ucpf}oJj2rnFMyliX1E1zg%`nX;+dXy@jE>o;s-pPa2MPS zFNS;ICGb*s8Qcr^!OP(l;&*vgiZea^;vCNayb2zKhv3!XM?7o9g`Qz}t+>Fm4jvH~ zde*}m;EnJmc(b_3vqfC&*$QtHmw2|rJK&x0E_gS*2i^;h!u#O;@BwkD=OBCtJ`5j$ zkHW{`-Piakpm?+$Qeww8I_ZZciuN1$V=X;U4i~&k}Ku zXDPf)yv)-J_rc5I74S;9A0B{L!GrJ+yjtArStI_uXIR|lSu6g6XPx*%aKJeS4a_l(0=;H&U8_&R(8z6sxgZQkVd|NEX;I1Y{%|G?uB|Ip(V z|H$KqgW^B&B*Dq>bT|c0h11{}@Ju)z&VVz;KlWt7*>Db=3+KW4Z~{%@Wl@t=B% z;aPAATnd-L{AZq8@t=F@#DC$bha1E{@yvzi!Smrpcmdo5H^VJ( zE4&D9gWJVF^>o0Ua2MPSFNS;ICGb-5fA=gCAMo^w4|@9Gzxbl(fa^bfF#PZ1E_x1%FMAHbhsEQbBk)o9nD{rI9v9z}cm=)+UxTm1H^iRAoA52zKH{wZ(ed;o#=>!8 zZ(_VSnCOAMupbV>N#dl$WO%yxzQhzb6;6X^h<`V6CY%muz?pEC`2NIfI0w#!^Ter% z`EY^wZHa~Aw8SE~7@j45dt!-rW@0H^2A9JXaHTjsu?n6ISBoV;eL1kUIh=rL-1;N4Ll656&EJ1gGb=?;`b$PfH%UM;LY$Bcq_aO-VX18cZ!P= zcZnZO+zsy$KbE*xT#`5{ej;%nykA_FcmO^K9}@Q`9(Mh2k^6=I#3S%g_?UQA;&JiU z6HmY=;Zx$F#MAH@@#@4e_$+)5J`Z0Ie>3qSd*DVw-hgky zx5VocZN9VqN5^MK}f0f|g^>70`7oG>tha1Izmbd_Jf}7zMxD{Rmx54dj2iysF!QJ9NPh2ei zi^Lvy3A_|uCLT@fh5O*;@CtY(+z$`HtKdO+NW4FBwfI2d8h9993$KGm;PvnZcq6+04UxY8gm*H{viugq0Rrs2CEb+SQ_ea*FvBVqVe@eUw z-x6O)v=^N9KYILy#8@~^{OiPc@pz&K_QHNR2q(eG@N_sud?hgzP80toaRxjSPKPt# zOgIb9hI7RKo|x6y^F)uHJKI%One$0CiJ_H|zkHAO8PkE2I{%WMWr@Y6-PkT>@ zE4?S-Q}Ai{3_K>T@}7my!RO%%@I~=6-b?UhagBEzz5-u`uff;h8}Lo|7Ho~q`XBA@ z8gDEd2gk!6ajn-2`{5v*1SiAO;S@L(PJ?H_GvRbN1I~oA#C6_mI0w!ZKkLnd^Wg%x z5H5m?;aPAATnd-LdrTnpF1^>70`7oG>tha2Gqa1-1Nx4^CN zBDhWboVOkBfIHzXxEo#!_rOcwrSLMiS6t)mgO`h6@UDPY!u{e#?*P0C9)ySB)$kg4 z7+x!G_O5gN{mA;#>>Uw*+`As$0B;nxc{jnE;Vt47xIJ>LEB0r((%2tEuSfsew+#J%3*uJ=a9tJix%{6+6c_>}ld-qY|Icud^y zJqw?M&x;4W7vPKVCGn8=GCU4nfv>{X#B03Q;T!Nx_!ew0I_rP5e}}!Xa2y;Ddtfi@ zhl6mE_`BX@*C!(5{ax>L@m6mNoGRYoO@n8^GvRbNL;PpnOgIb9hI8Ot@m_BpoDUbk zh2l|f5nK$<67Tbtz@=~*Tn<;jm2ee28?F}b_tuCHcx&N0xE^kR=fd;g`EaB7ue=N3 zCb$`Hfm_8t^Dcth;CAs}dpqDxxC`!v7sEa95_l=RO#E|iulR4geeiO41-ugOhX>$Q z@Sym(cL-h$uYrf*wc-=rb?^whUVPHK0p192f;Yok;H~gBcssm9e9F61eA>GU-VN`8 z_rjy_K6pQTK>RE3LHH1S7(N0Y75}~W7;UqX2 zo(`wLsc;%RLp<)CDZb)OhcnG0s}?8vYT#P2&sPW6ivzv}crH9o9Q4hH8{q}w z`+QB}`+d!D3)~7X63_It!R>Gd+$m1?b-~^6Vz>uh0xyM^!M$*wIK#IbUIDL!`{4m` zrf(HI2oJ%l;Wh9uycS*ukHG82S-uVMMtBpvS)A?L0&j)4!Q0^-@J@Iayc^yF?-l3x zM&W(%e)xbm*LM&;1RsWvz(?U@@NxJAd=fq-&hwpy&%k5wS@@hd-*+Cq0AGYJ!I$B2 z_zHX#z6M{1Z@@RiVJ;y@%wy1@#DTEI2oP}r@*P= zCwyt}40tA-4rhp;^ku?Xa5kI+=fZh#K3pKK@)f%N*hAsHwy2A_lrO4I{+Vq z55b4wBk)o97pImtzvf&&!SNsiM9-I#sz=d!TTnx{GOW;!RH+^N|Z~4mM3b+!kf@j0ka1C55 zUhAt9uk+Q5|IpVUUhkU=&l7*oHy>_<7r;$$Gu#5V!i&V_Z*%?A$o-r7+u;tl6Ydh< z>+gma!#(g4ae{xT*yCRY_lmv#KC$1wTpaMP5C{D$#U6jZ_+I}2yh{8#{y}&MUJb8- zhsA0BwXRP@`v2|zb>esUN5nJz>%|ZFH;6O*8{tjjclkGqbNpLe|9zzV2mM>c5Bax= z^ZeVz5BqnB3;a99kN9_qOZ>ZCk4MTY@$V6r`uD=4@IH7yd;mTue!_nUJ`5ibKj}XT zAA^sJpYor8Pl`Y6Kjk_mFZ_P#!~WCo8F)Q9F=;7su%f0nq-pDk|p=ZHJ~xp1ENHGe)_02jhVa4|d!E`dwM-TpGy4@AzFZhtvk z0auDY=dXfii+lam;y!;3TnpF1^>70`7oG>tha1IT@GpRy;AXf5ZiN?#m;2k`cDMuX zguCEw@fZDz;U0JiycAw0Ug7VB`{3p93V5aXOa6X%0A2+T!b9Sf{?+grco<#_uM>aS zKLW3ZH^3XkU-55(H^W=tt>OXyHh4R{1KtVmf_KAv;JxrDyidH!zaKsTAA}Eyzve#- zAAyg;$Kd1e3GvtcC*f1@Y50tI$Ug?3h0np~;S2CZ_!4{>9*3{MSK({$b@+yOwf`o3 z3$|uw{f}P%SNmhd-}J}9@vsN>!hSdiC&9_^bT~!)Eq^MU2G4+JiiiE_a0Z+SXTjOx zwf-D9SNt7+9-I#sz=d#;c%8pk{D=Noa0y%rmx)LG#NqCb(Jr1AhzL3NI3G@wbV8oz1 zFLC{NY5y(Q z7CP&H^!o4*{#e(~MXneB;Exmkqd#7J!S8{+;$Qpya1c&{li}%b3Y;qb7k?T&1D*+| z!x?ZUoCRl#f9=nKbKyMkxIZ5*fD7RwxEP)Vm%ydsYyL909Ik*X;VO7GTn*R2wc_jk zI=CKgfai*D_~(iLw|_p|2rqz};AXf5ZWYG`7P)SVoIi1aHnAtrF7^dF;7+&;?iL3E zi{T!zFR%n&D!wnU4DJ;Ir^K_&j_8z6f7} zFT>;T74h!}uEN*E&jhZ+H{hG_E!bL|^*=gap9#c@YXWg_JnVtJupbVJKO9IB*9DT{ z>2M013a5$712e=8fthf+_@zLG>phY4_oYB4oF#rakPYXE+XA_89-J?34-~+KaFMtp zP%Q2Y%o2A8O5jqsOuRTy4p+dH;+{YiJX^dhPz~3J`vSFa9b6ALz;oew;x7i~!;SC) zxJmq_Kr`F|w~D_USS0>Rpbc&p4+c8mPPj|_tw6W<8-c}ek9bXBiTIm=rSLMi7w&_X zi`N8Jh`$q93HOUf0t4_W@gD{T;UV!zU^To({N2DXyjHwEunry({~)j)-T-feH^H05 zKMZVvx5C@t?eGqGr}$3-yWrj89f3XK9|!irqv9Qbed3*g{qO(XI1gWdFT$7L%kVgS1-=SjgRjFk;G6I**god0 z|IzhsG!P5N!SS#M_QHNR2q(eG@N_r@PKDFp8SqRv9nKK%4`jkwa5kI+=fZh#zW89E z04{`!#D@dL@GSAq10~`kfl{~(E{7}NO7YJFRpMiT*>JV^7l9h_@jxwH2iL<5@LcgP z0`tTt1M}fV@h<}l#HRvHa5LNjx5A6WzYMgA&ji}VzY27S&jvch=K@`DH@sMUKF|X% zftSL|;9j^7UJkE-SHk`90K5twgoohO@EUj+UJI{-N8t7F26!X93Em8Efw#ij;O+1Z z@jnN4ivK0B3*Idr59|^DYhW)t3h#sW!w1CUfrH|!fkW_N@wLDa@xKL*!pGp_;%k8u z;{O#m37-<*44fAK@4y*&3_dHq88|1t9XJnP5XS~DierM8;LGs1I5v1id~fh7d=0)1 z-w?+KZ;Cy^TjGSEwN76D6N0gD92^gOU@z-oaIW~>!Flj}xDj3eH^I$ti#R*jD$WTmg4^JBxC8ElyWnnkG28<$ zftSL|#P1FEit~eg@N#$syb|t*2jErkAUq^44z70n=zGJz-~ImJ8h9993$KGm#7_j* z!yDj@@FsXOyanD0ZxcTm+z#)6cfz~G<-y(X9(XT23h#sWiz|W$;DhiX_%M6~J_;X$ zkHaV6lkh3{G<*gggU`a};PdbW_#%7>z6_7USKzDgHTXJw1HK90g6(Bz{g0kc6~S0I z4vvRCuow2jK{yFchNr_Ra4MVz&wyvb>2L;|31`9Ca1NXc=fU}Kfw(eQ2p7S{@GQ6l zE``g)Rl#!c>|h04DSjeY1q}eKC-^l z2b z-NBXOPX+tMpAHVdtKdQL9|VWQOMFNxO& zFN?ny9EY#KSK({o4Z-W;O~D)RP52gUi=6d8dVSd(j1~Vd7$^QwFdp{6Uhy9X{o-xG zp!iRMN#Y&BWOzE9BHkHHh11{};$6X+;y(+fi+2Yz#D5XYgtOpmI7j@K!CW{G&KLhA zSRmdPEQE{TVtAJLr@<1qRD2*s1|Ejj!t3A>cs;xU-Ux3J7fstNer(zn*JF|S z{rI%4@HTimyaV0|?}B&3d*Hp|vT396K6t;leA)r{Abbcu3?G4y!pGp_@Co=Nd{X;Op=W_$GV{wvRjOe{_CUPK$-(#8uPc z#q~jt>-_xi^SJt;7xs(4><_vwio}1}p9Ckv)5UXwDXvQ*$Il6-!fE1$;0)L0k@$w- zOgLTqOk9TRs!04ZahY%yoDJu|x#F9Nd9G_B`G@}gA6x(zihE*;T-QgA?};gfXTc?K zDO?7Zi{BNfa6K$b@8^ZX0oCb$`H5myFVU3W(Es|+rJ+u(M%1MY;o#6R$NyIveA?+5&I3ak-^`=Pu5`w4UGw>LE z7CtAwFL2)V)=2*M1unoB;Y;vkaUd}6dPgL`K;Q~|6}|>vhi||)#g)@;x!yf7e%9u! z|92b<$HDQi2lm2#I4CalC%GPt)Th*+3{Qts#4*8C*9RiU#{|>h8SqRv9nKJ+iOY0- zIFkRb;;R>H1itKkoNd!L#9NajLfl zu7&Hw6~TJfCnM!m1RLPF@H}`v+z2lapA9s*J`*YLY@iu#fm`84a2wnXcfg%+7u*dm zhI`;8@KSgg+$*k}*5~?Mq(3UBEr(aYE8%|eyMqI+FGlivcW@Ov2oJ%l;WhBE_PN5uIt>s?=q#OKFsfH%UM;LY$Bcq_aO-VX18cfz~i-S8f{X;Op=W_$GV{wpX0> z|4#X_a2y;je!}N*ogVF9pBMJSLGkTClIyI<@wWrX@N}^SQ{YtbjrcUzxsm*C#Ls|d z!s&1ZoGIQM%yL~2$$xV&8_t1q#Xk(@!TI9*0tK#%Bl+JKD1?jPVtAJL#62ahOC$N6 zxTh2@gUjIxxDu{{XNw!}t#(}zDZlaF8n_m&gX`f2crH9o{Il5ku4hNe|5>_3+@*C;ugDZh?M7x>k<3omWTs!OW|d3 zFWe`-FLAl+`H}MOOI!i3g!|zEcojS-9!(r_-4rQrG;uY&1|Ejj!t3A>@q4DNcikE( z?>*Btz#HLB@Md@myj7fi&ozJ(2w8`47Mc;X~r?z+ufM~?g=TGZ_ zm%vNmWpFRt2QL?wPg~*oe5CyHX)ED=cmQ4n55hz6YO&9^#`UF0`99w;ycS*ukBB$< z*So$F$#0W?1H2L51aB5U6Su|n^+_xx%6r0h3BC-Ei)Y?*#dSvH_?h=y zg|ETa;T!Nx@!Rgb) zUEWmJg^}{QylL5-ER9a09#%-Xv~|+3dP^qQAGmTj6c+c5#(&hwBxQ{HlCA;a%by z-)`}}zCEr7BFEqB+Y67v`^0mC`&|!B^v41CAbd!i7dY&CIC6Ym;0SyaJ_a9$Pl$_y zCtZ(3@-Ggaf=|O|#25Tyt~W-Gzu-R$pM%ef?@zqodQ0T^`x7t1m*C6rxH!*y#r5`R ze|fLM*TjQ?>#lc2;s*ma;G6I*@xptp!&(3LMvh;2Z!8=q{;oIP_5Miw54;}OE8gt& zi?@1%a1xv>4*I6MJ`^eMK3@u)3a5$35@)zR8aaL}aVDHD{-?wYI8!|A&vJbtlHagD z8_p4b+n)>PP58+B%syiY^W(My-U;u5cZ*-KJ@8(56y7I()%L>&;DhiX z_%M6~J_;X$kHaV6lkh3{G<-(fVPo)Fai^Vw&x^b4g1E;nx}NrEc)k3LU4k#eaMt%b^^Jw&;CR>rd&QqMKO7V+DE-UbRlR3+{#&!#(g4cqzOL?uGl{ zxT#6Rq!A@1h0nIz{BubcpW?fuZK5?U$Twj0^8)eFw))v+YE1k zx5C@t?eGqGC%g;Z4ex>XihFF-^{hz!du$)PA3gvd6o1|hxh{+3_jx-EAAyg;$Kd1Q z$L)mc%1Hi?+e!Eod>TFjkHKf*bK;NNdDqpE@;`1D;EV7j_%b{WUlD)SuDY&^l=oS? z249D7z&FKpcFXnLNPcx@Uv<|1JC23p;CR>rdtpBugp=T8@k=({bz`KyFIftl3a5#m zvKg+MBga2&GvRb`rDedGaF%$!WxHM!$$!4(z`1Z9oDUaFcqEkPS8c(dGd|9K*iGV9 z)(p3Zzh@1LE)7D)A;86#u}6#G7rk_=mPeyv2saKeDyrt+r15$2KDV z6I%~&5O24Q;vd^4@ebQ8{%^KLywkRd|J1gLciDD$hxpHIr+ByR692jF7Voh=;=i!H z;=ML1{!7~j?-!5S0r5}lpm?7hf)9&-YDdI>WkQ6oMSRk(ivKUWCO&1?#lN&0 z;?s6he8z5xe`WUd$=APMS*&=>;^27k-Fu(Ym1;zhpN#gUCEdD2(F1}zX z;(xYO@kL7$|Jr82GsTxI9nKK{i)D&0TbB4=En7TpIpY7@a>Z9HPy8Fp7hkmk@xNK2 z_?i{L#o~XrS#XK?x|NFmmzBZg;u}^WzHOCai>VUF#>|GR#rMS2z_sGIm^$&jG47~yb1`eh{}{7w!mA$( z{oPX=as8vve%R~b4e&;I6TBJT0&j)4!Q0^-@J@J_`2Dt9TxNUVz3?c!58e+SfDgil z;KT3{_$Yh~J`SINPr|3*)9@K_xsAbR;dAhL_yT+pz64)}$KfmRRrnfw9linIgm1w% zwS2fh{9!8;*I5xKMsx0?^%*-XW#kCvSfI=_}!KQr;6WWY48kqruacihcm?amI-IU+2Thm2hJ52 zTOOPb7l=!&5H1pzSus2dE)hRzrEr9L!v+N{%3O+4<+|Iyb;wSAad`?_$=iv+D z-?xkKCGoR%Sv<$a#SL~v{G44C&$Vmf=k2=qBX&bP-)@Ruuv_9rv(G#0e{??mfyKgc za6If0f5yD9U%b?UaFY15mJCl9FS8UlRs1#UHgx;ugCs{+Nx!SH!J$Rs6DDoA6gd=Sz-VckS#uUk}<1_@?+F zy9HaHv;Ieqf5>9Rc@_u9iyt-*>=hT9UmW`PNa7+(5*J&t_%WL?64_Sx!z1Attw=Qvkbx%0`{Z4%ryLR@&?h(JomWXp~sW{h` zi663F@q4XLoNvp;1-4?szbbXEKPz23`_5Oc^}_?=hinx*C=RXv;?VjpF0eK5u(;UP z!t2D3*$BK|Tw)u<@3)QOGTS76(l(2K-?oUWY^(SKwoUwuZ5LPD4)F(Vr}#s*OI&Na z#UHjk;%9BIxZXy^b8MgZdD}0ZX9vU!>>zwd{E{6OH`x(!iyeiJ!N=hf;*Z%$_!N8^ zJ|k|mG59Qe4n8k_*)G5r;Y;vkahr{cU$HCVcDpM6gk2MN+I8`#?1p%;-Gpz6mzaIQ zS^uNw>t`%hywu{vpSO5%pLxVzFt7N_<`?%{Q2Z53f|KFt;z3J+Q{gmt20Rl^7q77l zI8!`qS>kV7Hk}F~w<2+>6^q|yv&3muB7VD- zir-;n;s>l;oM9E>Osf?Co>hsnY_>SZs>KgljX2M0#qYH`ae>u~AF&2;q0JQ++dO!_ z_;G6#m)HXF`>jb_YR%$uYY{(Xt>Ow>B!0=-#7)*N{-||`o2^s4(7MDe)(tNfho1k# zOT@3(QgOR26TfP`;!jwgxYL%yE8vxIzc}>#A6^9yio0w`{ApV)?y)uE&)BedsjU_F z**bVcyu#LtzhoQ4D{Z5Az&62~#Y46Q-U@Gnw~N1FJH%^jr}$g83*HUy5f9s5@po)g zyw3KCzi0c!8|;91qaB0~iN9}$;UnT7*irFjJ0{*@$HhOg6XLCQQoPMhiT}h-i?`bu z@sDi`K0DzLgs!)b*g4nEzVlUR=f&@{3*utCD1OW?iA(IV_z4>qm)jNbQ+8EcVb{b@ z+jViJ-4M^Vo8o8embk`jxwHO9+xH=h71vsvxZdK$bIc=dFt7M|^NZ(MP~2!q;ukGh z++x$kAF~v3tEGxRZfW8+n;~wunc`1ay12_S#GkZGakpiOKV{kC#g-#pV!7haSe|&9 z<%>UO1>#;S6fd_T@fWRFyuxOQzicJqek+}DL+E)?l5PH`GyZc!`;PCkE#hR`D*heY zCQh;K;`?ofIL&s7-)XzV>9$+^fb9`y*k1AP*{C?n_KDwZ`^DLIK>VN`6zAF@@k4f4 zoM%VG@3o`id^;w7*p7<}?1cCcJ1H)*Q{qSMw7A&Lh##{t@hm$le%#K9OYFS({dPfI zZWqOsc1isEc3J$4jZe5MG+zRCcC|Bqx z5vST!@!Ra0IL)q$XV?w#JM5+TI5&R-9pR;&)lR`1i~s&N8p~J?0nZ zSWx_sC5iJaS)6av#SdGGxWH1yk64+3 zKViAzGRqS`W%=R?D-eIc3dOUnNL+2j;t$#^agCLTKV+ri4_leI&dSAetU}yimEw*b!)M^J3CD##6S&{be8X7}XN2~{9)r)q z=iu}31^6O-3BC-E!&l&|;3b<07YE|%TxEij3 zYvH;H?+NvBtrfcepUCmhe%M8DF+2+{flJ{sxE!v4E8!}5He3zYh(o`x57)u<;yKm; z&xPl~^WjE#0o(*P!!2+tya;ZC+u;tl6Yhe$;l<+TtOs5KFNK%Ey>K7A99{vhg!|zE zcojSd55cS9HSjRJRy^0%!6Wc`cmuo<-UM%kx4>KBZSZz@2fP#B1@DIUz+6}|>v zhi||);ajk+a@O)?900iFxb zgXhDI;*Z$^ajP}K&2S6c3NM1&;C8qJ?u5JGZg?@=BW|`O;*Z->cp2O)ZnHjkIlMyr ziminE;Q{fhwo2S#gYb~J(^iXLvo-KAyjJ{4TL+JbyKOzZLHsG(C|+!v#Gkg!@D_Nh z_z!HGc!_O?cZiqTPI#C2v$h-F1Mh`L;eGIa_yBwmJ_H|zkHAOaWAJhK1bh-c1)qk` zz+>=P_#Av5z5ri@FTt1Larg>+6}~2Z!LEyY?FM`kz6IOYCa?d!77NG0@vsN>!hSdi zCr!9F^!pHrcGP|U+ZWpZYUnH3mbl(D;id30xEJn&m%}UImE!5v4-der#J_8U@DRKj zUIP!qYbU%v)CcKy#r?d-*$?|Fd=0)1-+*t5-(|O8bIXsGmuazZoH)ngVGrzu{csRY z5{EvYgr~zPa4MW8e%NM+3v8zNeU>gRvJ7$P^T`SSU1&`1wcW0N720J4>X%~muATj`8{oO{Ja|6bD1MtQfSbf= z)(p3ZXIQKF9kxiEZf$To+#!CzI^iz3TbyZ&#qYMB3Fo!E+_uoUc!suHx1H}Fi<#|l ze!hMyc{21jutP_BEVN^>anXq4d!u`Ieojuyx|2My_wI?kJ3DzzEiS@kIJ*mDobT^+ zzJ<2?!apppsma~D6W8pMF; zJ1`UxoKxARSD|tzr@ivh%k55Fvb%DJ2GwHi#TQ?0e>qf}@ai2&d#&rG zkA6J#a?pv6b-(J%t844)s_oh|C(W5{PP&=zLFfNUbhdEZiysZ=my_hAIVV-Dg^#t! zvB}}IC(Em!tPhRbr2HzMt;??tz536S(n7Sv^w2eKQd;!_2p>2xu|xdmq`Yq5cG?zW69XR7?c2F-TGJ=*q~5-r5srJs9p2Es6Sv+? zd&!*{Zc-@i0XMDXEylgoGN#J!PVMg0`L~IisvWO|o8^9wws)$usp@jKF?vrZ$LJVc znPQBzjBwxoXQy?))b>gDpj?bG|3qhTaNobRqk7yYkHoC$9$@Od8>V@`9M5A$m`(*Se|ZWH?RdGXKKY zq2Ffi>OD&$=cpfr{(n(ti^eVN zc(MJHuSCVwxh@64j;GZY<<@O{LGrs%)l=Gf-QGq-R%!hJebxz6jC zCi?1ukYa4gewKMP)fk1_@!K5xQgd_X!q+f|rkLX$lO{}bjHYT^Xbyd>tJP_tGnNm9 zzK74A(GR;xp|o&29Q}{bzguv&TeqEu1m19(d?X zx#fgJ)0~jL>hKf7@UsGs^NeERk`O+(T4J)@e8Xip$2i-|6Hhms{IWwSF;m9f?fiW( zlyCI>Ep@8tKKja?%0$zg<9;w@UxiC}I#ST<&za=N zE81Qszek=8{hN`{&u|&hxXCp(Ywily?%p?vbMiYGn$PiXA#PKJne&+KZskrjZsGZ$ z^>fPo@kGBQhUAX~gnzsgQPay^uSB0IhRgL?%gYPfqCI`voqxWVsmhqDF5&*xx^%o8 zo|8_UZr^t55)yV~} zpC{h!ocT^@B1F%b=(Bb0RkKfqPRBi=3FwVH`*-S)mu2=BZkltV#X3p$bSQ1Fo7U!} z#pJuGF>($%N#6_ouDrA9H78u^CnJTIKUEwK3VpxZJS~4J^oN^5n{(J*0+O=dR*zaUZC8s^SB0;rxBZ&CU7T`R@6J$_+)l`T0BNL(e(Y`wyMJ z;d7Cr8(R18G9F);6y8$kl+1R7$3FZ@=-)$ppu!#YH|yt6ocmmb9z9xPrYxd zcIbFa)sFC(PO4ZW+sd5q&Mo)asn_x0N#Qp_NAlKnWJ%U)PMG<<~LRS z8eVd)DbYCRn&X@D-Xh%JlPViI<|k8*QMgaP7YPqtBI+aIp|&~KaZk)t`8`z=4s#9* zUn4@lHBb@y&@{B&88aeP5k|d{&V^zdLQB3&*|p; zjcX@WuWK3?YKMDJxE;=#GIgE9eWrDO@x}6rXb0*X3dj9qQk`FzsIybPFXoN+JA~`!e19So_g8Nrt|&BgKX>Dtc@Vx1Bvynz z^GDjV6Z6WM0!N=@qAJXA8ey@L5w`_;)qJY5k!eKKqo!Jrqfs9QPGB zZK{3_&xdfiPM*>2g^Bt(V;+4^60X=UCe5MhP}`hM=kuh1@XHn->K7+f<3gQ+ZOb!L zT~9T?rcb{1Y3H#2$o+G;Z#6$Bua8Z%ck+0I<4#Ayb&fmZ8yb(7BX15uie6)yk8aFF(2OBV!c#(Gru4!*JH<}{1woVV)#PhL_@?-oM=5 z@~Tq<=dftpRM)0YJ@x7*ork{Rdnu<+Juy?&Z>n~L`&+N~FSpl*o))}je-ldfTB}oo zm}s0{bcMYCG`9M6ZM?RT)$DRk+=+ugkY4>N2^n!hKL4sY^#i z`1diLUWv}Nsrr7ZIXP9iZ*@*~RDQDkqoFdL8F>5l=R&oa`dSk1GaWaluD%bNotQLF zqj8gaA=U&3Rr<-YjhoQb!3 z`aUHb_k5(iPR=Xv{$r~ArkdkZ)g|1IS{J8`U%$uf@7?im&ZF3vH;Qxm;H(?x^g+0i z*FrZX|KO%M4yXO|UB>dINp1V9&=@(}oAv!)O?m&U?U<^);eOOOr@Y@x)bI7zjjl-j zrs~tF?sumuW2(A@+x_~wyb$Wsb8i2=9I9DtOgQeI*S!a84aNP_TZp@v9s1j9Zrq(Q z`d}#S*KXRKF**=RyM(mA52gJJ(o#Zcmyz~xDD7V-rA@r+4xJ9uEZmOpd((XPH@KZX zk8Xc6abMyIB}Ly`Is0axnKU5*`<=pOfD|-lbpG zPwJQ7Jm5sLy`c$&?V*h58a289CS??guLyk}S`qpz`_10tI9YFb3;pcGU3fA&hn#Z5 z?c5bQ*7@E2yN!`^?EX+(`df%Q8j8z)3vs7Ian8G`H!Jr-D9(8scel8y#xgu#Uq6=r zI^|e8XIrQrCk?^)hutKUt794cY}QHD`c29xoQ?fQKMM@cuWR76A#hzf|Bgl-L0P=rVm zkt+~L00oSIh}aO3i;9TYxTqKr6|o`q&b4B>iXFRR@7NVf{xdr>@9xf?ld~xI{oU{9 z@A{F1!?W|unRB+h`@ZjPbbCwAjqQQM*7#T^xtF^nx1;l+EqeX=#6BY@j_KW<-%p`^ zF^|eZ;E&9B zB)8x9c|6jdo7o(;Txgt=xolsFVSCAs!O5oDe`9a{))cGmk{!E=|z9#FuXAO039I5jw z;KjvPzjeU*>Ri@k{1i9@#OjQ(hpG8o)_dZVip;ShJU9CWxbWP9`t()G`fUc+(*I2T zXwD_;*S?1OwT{$pYrcl>tKUw*`Ra$YY6Vf8n5rJ1LP0rzL>Omi+-=YwjfbJs|nj|49+zPgkHm!{6g1DB@GbAa>JxkqW=;Nz?X ziTtqg@#P|j*8-a2{fKlF{;fwTz7oP`GHNadTH;F;#A^vn@p#EP-w0fq@x2?kKQq3x zO(ea&GvgaQ?h}Xk$nq$7agp#H`}=sZHvkAEr!Wl2-AG4;N8UB92eIT-bCyaaN}W= zyLW#e{-YnhCtpo#u(xSjThJxn+W@ z2)eW(m{<5K%?-`rzs!R9_ggss@?`!^gHK?}@5teTZL-XcUyccyhg#b9!c9jl|4F|6 zW5!$7ZOiqEt}gSQa>jq5zFo#O*dR46D+^ZBbMgx2zGZG>=Dl1`xkwz2@pwm%ha(qx zeOD#%99(eA4(QDy;T&G!f{w!g-0%9Qc$W$qg%uQ}TY0Ny>QFF(>oY74Q0#@g87K=Bq2-s+92_W)81O z1a)!D`^R)V2lqsRqwS;RkgH= zIL_;KU~Y(Tj=HpB4zt6>HEyjF9Mx~Ws-NaC<}pyK1(sU19F?pUakv)Ms(l^&-I(dp z4@ZAHFgL}+9l+cq4_CrmrHAXu+%dvA>fD<->WzEeAIjWBPrRdaJcoB!O70&ixuX+Y zMbM=;)jZG~Lj7SLydBPi%=Oqg<>5S#`e2(ZaxOsYVk^y!lR1|KQY**YIEA@$J=_`0 zogti~rn8v~^Rr(Mo5S4M63>y}T;~2MoWna$dmY>*DY;7%Tt(2OCR5_aJk4#)HTVNy z%$o-B@R(OCbIhAICLD7aU*a$Y8s8P1-*T>tc%%DCq?dI!CVH;t+IQZ{@vi20fAt*h zA&w{KXs&(dznQ~aadGAM2y<6?=D}k+o?{-op5Q71|5P=;nnUPf7`JKRxYd&D)kBU6 z$1Mm3e_)#|wrkQdz7!8h8sA?yzc;17j_qRubFX^1I&~=vIoEX6Igh!!Jn^<;?hfG` zb>5yisex-A?4&tIe|KT-K99Ghj_1g)mF67YJ(+u1ybf+J=AQO&2QVk+;I6tHlrp~| z%snYyM}LRvcn7v# z7hb!(5bh5$`|*|&!u^44=fvS!w4GnT-p%+N(zRVKVD1mDA4aI^ihqW$tz7H=i`V@^ zYVR1MCCtg|71x|x${g9<`|N9(`%Ju!v0SF(Ik@XJ=jg}X%zZCj2X`-X-wNmOKA^o0 z?m^8tysMa#*JrMAdziTmp8OuuUPpe9r{tbUaI`Iyo)ACx(Hzc)SNDK(*?N@mSCC8i?0X zXSvTl`fzc@`-S5*^u+s>If~|v7kuaopq(Y2WB%37qezW~bM!;*ZSV8ualEFUc=ede z#B+G-YtGS+Et!+o)vh}4%v=jkeyvh^J2ThP6K_8q&(YugQ*s9;INB~7PmOPvn!|bz zgUeP;0xrH?jy*BCU1FOow$Dt+v5ev&N!#TB&hHSZi(}jdGS`DS*#+UBG zM@^5>wQ}TgDsu;U;>}1IZzglyJn_!a@f`g)H^I@E&sSrvIjm(7jQN6a%)|4NlfyBW zu_O-HqOn}e-qF$zNByp3Zn%fLin)JyxNDd@%EPT%Dj`YNP zNyl?|UrWioo|1bb!O=YE0NZNxJxI-ApL@VO=oE1A>kLC?Bf)FO zUo!Vk5BDu|XLz^`%uNu^QRm;7!;Eopjc;%ZO!)WXJ@Ilj55i>raK)?7-02+euf9jH z6~{Ztli$`U^V^2GQ$6vv)A1a2ZjzGQQFD&@vNLmMdGc$n<2mx%HNnyLaiiKkG=~Fy zXG?hAm}UFOo0Z%?h{LsL`)JSJE2STf{&ryQUmmU-bC-I!p3Ge=oTDzinZt~6alNKH zG$q$J!BL%`Rdv=Jx+`13{nElZXRdKKJ}ay%$uj-ziMsJ>|qGnx;5`^eI_)t0_tn=H~dS{GZXZ~x+4?vtDyeOtubZ65C5%-t%S zqXv&Km&wn;J(l2T9{izdr8$f{YY+Hi8XmWT<56w7e!6gWavortEO@Uyz1(4GlbVtP z*Pxod$vNYFTySyi+uvgDWe@i;b9i6Cn&SP;9NuS8mNxzAH{ba#+(0Qne*ysPGh=CIZ`!`xUG z&W+5qzGden=LWXPf*&c9-{q&w7mA0iG+!Rz{NytSuKDsHbMje-@gpZsk^6r8_OVa# zy4!l@$6??c1%oPgf z=*Mq5KL__mO0E{({4}z-_QjhexQbw{p>X%#=(P;ZA=Dc7Il}@jICrcg=Z@1ZNbYm6 zO%~hnw<*_082nkx``>6=wdHs&`zy)?Y1&^k=Dzil+B?Q_2j=9nPp5+ zGf`9fKIh;BN43wL9Tu}S)T;P&q?eB&*S)^99F1AvwhH);pOWz!| z`Ui72F_-pQ3z{Z&hxcdUC*5x(hwnj`ga4FSDhKr_#lPU!0eqijKbLcn&zQO9_yxMo zj=n8q?gmc{u4HbcaE^JfB&ByLbLF0R*QJbiGjkIpo}<6FFn6qQj(!LygXF67ij?`S zWbOp$yO+6>Jl^|L#(R*tQ$6ukrHuC|bLUAsNBtgW?pzP| z6mw?@=cw~DDf4@lxwAd-*64T+@AE0Smo?|8%d5;?FZnsRx0$<8I7faTr1XBooP18v zwHlt2Xc+U-Vo`bHj&EnNT^r(DVg5*WkH=eEu|kf7ao{D@Oum_738~ z!8F6cJ!Y!HsQGV@Iepje-%)nb@Ob3g%m&Hq5=zWxZtCaUZ zaUyq)2Dix%%% zii?`F&$vP8Yzn_fv{>EkR@`~W+66F;x z_(%AIyhUcI#e28KOB}9EUfECmro1;QuW)g1vANme&0Cu6FL9ywF81ZtrHInsRmv+| z+}qYXZ1FC$c!>+WjdCfHeBNBVFDY+B=HlLV<`s*#*EPxh5*K=NcwRM7{e4$?g^PRJ zn{^iNGK-hE(0d>IwpHE@%6mWmd)(W>{ATe^yEfTh;zI8=yx(Y|ymd~ApC1Sp_jWXS z0T(~+ueErI3%y;~TcErRl~=g9x0Bh{;_Y-@vcJTI-k;dJyYegqcpEQE)|t4_y9awa zDer;GD_q=LY)UNNg%&Syp;zw3b)fS0QC{KV-nOQ%#hZ71vcJTI-V^cS5G>u5cc}6T zM>HQ7irblC7Vk8RmpELTjth75@#qlc9jm;;#l7v#F&6J97B6w3_a>gtrOG>1d4-F6 zJD6z}?~vumIujRq<@Lf~<(;9t!o|HE%}k4TnZ-+7=#}pP3{&2P%KIJ9`?$B0S!D5! zy&>6O;zIA`d^{>s-lfVbT-@8)Tx;>Jws?sPy>hRJvC4a+@(LI8wki+7pDOI+xEk1zR7QQjAnSGc&h*t}%%cDgCqU*bZqeD_7Z zHzemd?<((?wt3aItyyRBF0*)v3%&9>V20}NXUZ#FyuaAmW*%isqynG z;o{zorgp$}hi19{V$9tZFL9w)Ue_*E{moNe;o{y-rk=(7iN#A?=-rmj#}_MaBjpt? z?(J+ETf9SVNscdZp?5p>%6HGC&MlNzxR|$Hq1oNyU2X9a7kaPfdRe?{Eneb6 zuUwas*FQ48eU(?ZxVN1twRjufnyfQ%p*M%mujIRS;vK5Ixy;4A?aeTYcbdgZTrZmy>uhj#qXDj_i3(US}%T=RMs85k=`34>&o|#(|T`- ztb6W8=Daep?p+(X?j4bJdu&Z3nKozqKCRSBUJs;Q7q5HBy1VePGVQwfeOg&}CSTu9 zyY9au>$YpKas7QXvhIl+xh|R{=dZU+=SAwXgXEet{*5lmomG--TWo22-qQA#YMW3# zVRAWqNB!GN4J=)tjC4T#H+-h!nG3M3EBsGwb$5Yn8Xpu)_cJ$xdh`xHtvo7d!-2>( zgQ&@rMcaCm2D_Erqix-K9*mJXN7{P#?cNjKVlnST+DiNP>)r?2zKgW=9MHcI+dhr7 z!C%eh1@PQH)z)n{c*PvF;f@;e>(U*bGy~szig1u~@R&o&nK(eqSJ2-tBOJE<1Z^Lx zwl&Z;Gici!2yk@k*B4pxN?m$jlj#sycTn#hftT7sZ^Huk&On62x)i~>A4l4b=-(r# z-zSkajNcq`xhiPmT==P*qaz%~!vXm^(pK7M(10VL_-{nopw2~D=l9}m#n|>*qz(RR zb}WGV6sa}?ZEr=|26pXJIVK1{(82qzzLZG{Bg(k+#xqfb}wFL%a>u z=9fqt{{2EYZSEh;=dh+Xz+zX+KNjW-%~M(z=6Eo09U~6- zSP%|}*(1^>$2>eOlTUsuy!xk^hF3kC_aJGI-4!Z_@qyF03 zY`N4lMlfYEVKN<^3g$Z z@JDqu9w>8aJWqTE2$}bCZ-H1%gRPAs$~>Kn2MS)KZK5>5PkJ^g{! zbN>9?>&E-x=KK!Y&i`Ef+}^*GUu@hczxcimkD)on+PB!cl%H+gwE3mx{$F`h&b9b< z{?}_7kH_=CQiFK?t_sF2KG&!%K9&uMi}j6i_OFWvS-qXxyc93)O}p;@dd^EMb>_BM zO?lj6`!E}4i^uE6;@LQAi`UsUz8uezOMG417}>lO@6WBv@nU^*=NF&j?p*vFtsBqz zf2mfs?db1qLC&fFPmV9_DP)oJV%zc3IwxgC_*v7sY3t(WcpKbg+a+(Sv3O~>U(Us{ zzw-CvZ*OLs`BU}d+Q;S}?T7x#+>M{p@EFA$)K=5$!54s+*Dj+h*D>SI?W+ZJj*;go zph{l5OddDA9RH3>n%7LZIiYvC%^Q1dPv_6_Tn}X zK7McEW)4up;Sikbh;S+-gjRtMfx8a$t$aj5hHJCgpoJDdCB|aW>4$`l3 z%DCeu(yWnqe`Vd#<&!fPWoq(bKfegBLPh(Ft+Yrk@p;t-{xN)B2a@ud*g8hu@ueD! z96fqc`Q&&FY;!#Avnk`!ff1UGG}2U`FxcwNJo zz3_4;EaN7QE{Ct42Mg6D&rCU~GT63o1!+TIRv)?&NOj4>YZRGX0&UY3IdnfFas)x) zk8zo+8yK%8wB%U1n)VxeMz-Grak^p@`Vstzb(X)%_*RS`IYttcwowzpWTXw(yWUzW zGVI5-N^Udq%=>tMF<#pN(Pt$K7tPq1(Nicpyn;lz*g1^17UpxE6dc~C9502|6wfwp zG#}#mq4%~-U9bpSFhD;>ab4h|`~h-5MA@NMSJSaJ?S3fUUpn8AXB|;La3j^nZsPjH_F--=zJHz>#H*>lqoE7ZUwJPf zK8uWbrK>U9!UmUb#zVZ^oZazl3sVCB#h0gm8<>Lo^Z;5fzK^9hBgXOeF}&=gDdil# zx*ENC?5!JYt75io3$%^#n;Qbc&jT{sC3YabZ@)>l%ivu^TB)Y}K^dRlW36iB_*^vC z$F(IV&ZrvWwIdGqo;7mt{U%&sIBMqL`$)L>_LF7s{UKa@`^hr+z7H-~;TrRU@8{rx zWv`Kg@6+IdACst=qXEH9wq}k71h=4?IT{e$i`2}~fHd%OG$6PKsyQAFNWPb&0omHi z(SS7cax@^@_&E5!0502lIU0}cyc~^3BQHnevAvh0@xb>vYpioIjmHjNj>e;jm!t96 z(aX_zH1%>c9y|Fs_&hW&J9{}A4|wao#=6+{r?gK_p0Dj$!~XOR-kL0-+hwb5t1F&1-Ev{kJ~60YO~da`k3_Q zTfGai+%k_xEwe{(7dYXwx2NZ1b7637V(DWaU5V)-azxl&1fypAGnJ$na_#B)PhX#1^if)6}p+VD)IevYkgkyA{_nK)Z6Q#ls?pmWjs zd@h>HpYkEV);Fq8vTyA&eM_E;$~`;BA9rHLOt0Vaa%}O&jvF%;LA2Dw+47@0Cih`I zGx17Cn>0FD z0sfFNckRc2?@y#~wp!V0O5>NT>321}?rF$1MdMf9#f!Di%W=gk?-IRUg7XN@1G+}f z`Kj$J;KK8J`!STpH2IooQtKcryhe=91LB%Sa;~7=Q>Lb_*I>sh&gQk%l1oQ!TV6>o3QO2>zpLMkn2*`C)^Rq zzP+p$?R28&aJGI>Z7E)m1pjfmbv%gc78#H4)qJtV8y?xHGsl4bBXK7XEOgx)_D%hd zi?q#!f2(g!jB$H$Ta-I5XtVW=>J#rMAx9ioo zt?OzG-g`Vcmb=0xa6{164A!E&@Lv2kskYy(V~!(f%%PFmZ;vk;VX5hL6#o0?FipdG zU_XDc)sM!RyckE8qpWj-xIvNpPULGGvVXS4i(f~=d0*eUy-~lDx$F%4;#-3H(f-B7 zy#YJe6#<9GL8|=^`%#bL*SW|sj{8wYFW&;NraJ$9y(#^?qB)Wr%Re&XfnzD>lf=M!HC5O29aRDdA_InspG8?bAbO|`gbBk@^ zGvs`Dko#W|hilRI_vH$w-1l1UGZu2AgT(4{dS~#Qba6W~ce;neYv{O~DjeUBOnZeR zI=p|j=1$^xKJMfMR}rl8dQd<7mFl87{FinxCEg6{TuW;E1zbpy-;u)w+hjQxFHWdM z#)IPFKa%$f&hHYb3*Wy^_jfUKa^G;dZ=U8}aP+t7Kk53Mcs2J|-b=;a{JcAyX9f;9 z2$|emsn2h4kxYI^4i{{bMe0K9Vk^~U7usE#m0TCekDeWj1Wgc!f=H#B}t})t!IqWSiuKZdtcdd9G+ss}%o`Wk&$+b;z zw9O1rb4YV(-^;>2?|G;(LxXsI;BVo4c@xgH^?boLS!BM@y4XtdWfvA`N@6G#H;EYc+=E*DaVt0 z%Dd|PAain$dKdQ)b8^pnSDl5!p5fx+R&hL{+}y(nj>hdPHEx=d`eA(etQ!9QK8(?N z%NWgVmK-DEa4j06FE|&ukGnXcW8|vem%Ogrqu%yjbY*w?&<-AIBxhH=dVDN=-?M#e zsg9Yhc#W8od-uD>ZHJWcnlUH$?svr#4y%ldi`!Lu`F?$S&xs#@H78?)v8$_R!k=^? ze;MXMVX$s|Tb;XWavl(e5ojJ9#<^_CpIHzG%>#0{>fD#tt;_5B=RwW!j^%j2d*;DJ z=CBvIxblQpS6Sx#pgD@28CSA#?jmJjb~G#9SK> z_X~5ag>#I@A38q=7kt!7iVQzp+iFg2g4&7K(T`fp6$|I^<}oK~*S5O3<{aL9<~n)2 z+v#|Y{2Hg^c1&<|&Tz=t@nePNZ1>8hbLRMaPr*H4;aXCkAYOMUS1o>z%9!zO!hMPC zH;BWk(tcxdE>*a9rY@AeU_sl3aTSGZW6;X3P$7VmhAm$=X?^LdQ&u2f#(VqW;@&FvQNjTSF) zp;wOG6O?zA@(LI8c7$ioS-eeQ`_l87xX{~zx1-6*`>gT`7xThLgVtEQb1h!tLhl&% zo}|2Ml~=f!7d~qAy2bmZ#Ym2{nn3%$*_zh^1$ z&&n%Y+*@QeSiEmqyu^iGdA*g%kI(gLpA+AYZ?3jqxHe2XR0u_%w+-)MH3nGu4DQC> z!|IsGx*K~Bs|k^HH})P@m63Hf_8wM~BkOMLJ*=ii*4@~9Se+DEcVq8ibxLI2jlGA} z>5+9e_8wL`(th=%Iu$mKDcVq8ignc$$-nJx&_rH`2=6YaP{4;!Q zkH71-nrgp0@KXCmb#ZOEYDK?~q94JZ)xkpxbIkwW+G?sFyd=rgua%{KSh(=}rs4Jb zKigJQE`1}pjJD)54U^%ey1EYhmV=Ko&n(h5G1G$c3U|o*USaNaZSibvC&e6pJ)X^x zjke12X_eBI>S{QEIcl0VmrY%lag`${@kiBQEOBeMkGaho|BNQ?)N@R{jmE8}If?rU z*}wdKUpl=V!37-Lwo=|-Z!*xb$UQV{Z50B+Px)?mO=E=fL&oUu`_gTi`_gR>Coode zI+k;q_ibpwm35m_yqK5U;5D->a^4irk2rsR*>L<1 z)ZA=S_4jV69(lU8vfLrOS0%qIoIO((U{xnlD4Mtcw9eA?c;U6 z3JATeQd`{HkhoaiZ1dE%u5CNFc`07pn|58B_kStpC6+pKTdbx$Zn1rsjkCq$bz|{t z9JR&kY^xQ=v*Z$A*EU8rFU9+F>vFtU-`x4d=eRo;KS%4vbN*kdm2Ervdt1mH<74y1 zHV^&>$2Ydmru_WJ1)h^B*G)U`{aka)ae><``wf3Q>aU;s+nbr=o2<@%W!!k(*!-jY z&|jIm@pBrU8!-p9)%1FBr=0M$OE&LIcUZ*x_kHPdjP3qN(DwIz>B_^i3%N(s|JD1_ zy^;AoHeMuKIffSZj zT&v_ZBi}EJ_ZQdszjj|bnh(@p%wLx9-iG+TY5eUqd%jg zQz%&E`WpV;Inx%t*A{Ygy&bt;cw;44#DTxpI~@OvJGQs9h404v)HYzs z$jE)}Hje8CH?EynKAv--e)O0)vMhKoUXUNP#m^JTQPckU@<{FJ`B(AU!!ut3C;m}g z&F}YE+VJ1!W$H&>Z2J{AJy_(JTvIMfBe~@9=LMiCw#+V|ze>FRrO`T54f=;=&Um|* zj~^-TXUV!4=`eh|3Kp3|HRX3xB)@;<(|S6;(#+gg0s#GM*w#E~i+_fIY6_n}NPMTu z#>Lz4!!0#G3up2+;l4yZgQ0T{?kfRxXu|h=e3CwA7yE*8m+|AfA2+c)==6@k=U-}> zag!$vAIH6vHU#EEESv#52Jvd;P`vnOn33xXFSqdsykkJ)8t@FZUUW|ribri{LK_ZK zv~6>EFB{*^j(UG+MfW0%w(YbV-FGm$?nJoJ8h%|R%AHbxcMFKOO+1)B=@VV|L1@E0 zX|(NmXltO_rt~xhM^?BoJ$v`;*Lxz|!y#;gU(F2QaF-_>wvB-{yb?iexPOQJ8nnSs z#<&Xj{v>=gJk~Z1+VDPn(RiH>H3mOVvtw|FNQ!qTwBgrvqiwf$g$7vS_b{Myq(ySh zP(%#=N&Cq>Q^v2Iab9KG+7gE&m}!I0G~{LH$nV()mEiC3=p&N6>f&=hA)Lq^{%m9>&sN z**8(GaO=s-Ax9p6;*H`Cm{MMe{lK19S05K}v>nB{!2?E(9AAEDFo$TrmS-jmA345q z?8sogh!>-l!}#KSp?zJRnKrxvn}hj6_qWY6Cvn^M0f!@n9KIWD%ntBB)e1RkgH0*Z zh78_cxmnPL`(msO%;f>_96|Ug4s6>A+FC@~;GWvUCzp>gy9aHwu5E76I8&W5jx76F z$7Ao{pP#H@JP;^`jg7_wx7a*0pa&hPaaKtEWZdcmZT@k?{XtFRc1Zc8V*v@a%j#;J ziFv%AjE`@ZQKN#RJ|0?Y;xN`%yTWIw11_xnyU>Q!lDUE0i_q3eaX&#De7rHk4d_vN z+=+0*<~ETw+j!7ir#b_gS-NG$181;otHeFe<1uPN1_v+BmHIih@tthpY+hS_H1^5- z4$I^h-G28865`{Z>2}7TQ1aZas)x)4?HZCPMKsj zz+`J=T0%>1j*UaUe;2y<=Z?X*^>VHI4dj09N%LUG;0RO;o6NtV4aYayb~dzO*3o0Y z+t7x)^C))>v~`GZ)A)l+GoT1fgFRF&&LzH|oH(uw)`I)u2OQ2x%B39~e9sEnu=ei$ z9t7Lv?E%*SIr!h0-mufSGibxVQ`>&fc2|ZY$K(QI?or&Ouo2xGwBdG6+_k_x7_?!2 z6z>R#_mGPBb1$f&iZ}9L`0j{mTLIi7k$Bxsm^5(QgmUv}qzy#oY2Y3U+QM93hPEeF z+dI(qAJw)ec%Kj2a1X^bg|?Sf+X2w_nrg$RDhqg~uTQg|; zQnh^yZLOefyI}uc%Q>Gfg1!w2xbfHz-v1St0{B~W*?l+qo1CNL-@e6750+@#(Qr;v z3MW`Q(EW3AWji*z=a|gzv>I$6Am&BBuSV-)BYjV9bD9q3IX>5y??Hwf-BYI?b5D6V zx!=eZIGtgU?>Fjr`ujpIZx8mCNId=?q>gt8a}9;#?>B0$A9Ivl_`Off4P>r~#B+ED zGuK!+hj)nfI=CY>=kN|^uC;g_+-T-ndbnelYc8B4zws&aJD$1SJ@NGSs9f`9iuOA4 zOWdo(QJ3i)Z(qsJ!JW!nCl7ZfbH&0r@;giS!{MF7TnA6Qb96k1_uQ1+T+KQ1yO6m9 zJ^5X%<2mxXRC5mR<;=|xuY;>%?hp^Rgt=bAIr3Yo^K)?5XwH$}4a}8^*TLP&+z1bM z7jylEbL4kV%KYwUZm=g_;$Ae4e*Bx`4fVu(G-ZBIFn6>k-jh0>qb^US`9CgO;#^dsv z^uxi8WA0Aj9Q|uU!j?T|9ZuYEcrEY}C@e1S5#}0rxaXLwEu5pjuj+m{>MZw%+d|?wxOX^SJ>eYQ_q5l+ ztxL(huQ^A4A2Zin@^f&XG1u6`eZ^cO;T-)~uk&+o-)PQ}-*?Ovh}XgW#N5upIlOY; zJeqy(>#=elFCX`-?uWzso8}z-ko)EpNb8Uokt4=Wa}ReNa|IsmbLQrG>LOg`IPK_%a0@nZyh}E5yhWQR-d9|| z#h!S=`RXU!l1&`%+D#m9`6i0@4cG5xPdwp#^%G7$f9!f6Te!6G?%c%r-Mfk6eb4oK z&=XHMUw?&rcoWBad=tleY7@o#iR<^QC!TP=`U&^KCXV;YCXV;|CW^O#>-V-No^ZbU z3Ab(&$NOj#$NOv(#rvJ>_mwA}aK8Ep_w6Q*_v0pxw_y{-3%+ImMft-MPdH!wgv*ul zCdc`oaB1V!*~IbcZK8O!@ME2@H1Na|j%fGwQ{ftJ;&_cVal9s*DBfmVznwktgv->= zF|X=yJRes#C6}i;$9emf%oR#M9NgB-?d{>3G1o>oM}K$K`8l{2DY@M==jcZ(=5Cby z99$db7J0b6nd>B+qaTGS^DAa-<0tVVXnI;-hheY26IC^@y<#a@1M*K^TazhWxVs4 z8{vs}e#&_Gta4oDN<7E*dnI!f!a26ft5SNeX6_hIylYa%TgKc(Pdt1kcXV;Re|aNw zlRWWmP8koMJ&ns$PrQ{WDK>zP~XiT7>Fc;7R(%oFcN9naB^pHgx^YtB)> z-v)dw*fqgb1Vghse6bwATQ1+b(;WWG4c&}s8E{?T zZ}MG1V^)n1zuPC@<0B5&qVMtT!QMBdACB>D$=plAIr`Dg(T_^i56xjl&+G`#0L}Cx zx0ZY_G5@%*AIRZ?ZL(}zUw#XJN`EOHwo`vQa()NljU`}l?e9A=*Pgj?ga?1p_npJ% zXyZ9HjS+q4@c>@;eNU~r=vp~ye>!s?d*TTvsk-_$gX4Yfi6@*d-WeS4Yfn7keDP*- zyze~mg!9EaljHs5i6@*d-Ykyyt0$gtzIbPGylPK8;e7FCbG%wI#~s_MaK3o|?3&6Hho_yz@EU9-er@`Qpvzczb%{3FnJ<0ms|N6Hho_yrmqk zttZ~K%w^&^w(~a4-bQ{4 ze^&5)3Bne*r-Oxi%F-ssbIJuHP|iPa-BvbVi#QQEo?{!{-vfIg z_cnALLv!oW%Du$vsC{kbSmiw5$YXAZ#B=ncK68DAb9nPpdbeS&zbBqN>&(}W9XQ@# zPrRl&KSw`y(VU|$&6yi3UI*8Lxub=1c-y7)c3`f|6R&5=c)ggb@WdOU<2m|qq~;uT z8OGdrkN4=5@kTON>4`TgWxNXJrb#?UKgKdQRX9goj?rERH(qlN??mQih}XeYGIyGA z4(}xGb#PNO=kUt&WoLQ3C#8&cGIMi0@lH({?{wzodg7gtGTxcYEtGhUx}3$_0^uBW z{%1<>+00$yi6_tO&FoJd-nrWA;N~SbI>yh3dmcuQ@tQ+_&%VYi2)Ot$K7UT~7>{kT zSda01oD~Lt+K%T>*KmxdTyRY~#xLc*t&*BL#_}5G?qm)l=zAf#j_2|mE}XYO{1=ir`UZl!Pz?{nJg;MSz%UQci|UvlB5h0*zvHTtP~%WrCymGF{CV&0)U>mKt-4Wxk9!KRI8pO_u-Ge4$*>Li42^ z_w6^SsiXGonfsPGjG*TW-V3v+tGtH5i~BhS+lrwL|3>!+%`w5fD~seFro;tp@B##H znJAoVe|0G5@`>c^7~jM6xHIrjFV_$y{sZFhbh-@;a|uAP&cPys7K#$mJd8T1q?z z_davG3+M2Dq`eOAt^J|h%|@l^0m01BXa}$@kcc-cvC6z<9zu&(&pN~;Y z8UAeo^dCP$E)G|`1{|-%GY|5aBa?gIxear@B%WjbZO2?s;T-d7d+l{_jWy@+Hf3(K zcpcns%nkN%doWijoFl*1Df4T?+(1vfLLJZHEz+E$zipW-6R(47&)hKK9NtbTz56mZ z!V~X69naxCC?!{-IY)nwW3E#2b8u6cJ4QH1elt^gXE8U?6YpFd&*7b`IY&P(Vs4>$ z9o)Z|n<|{cds#~F70k_(cnRIr4iZWq!{xw^HIc@>|2)3J>=Jb2kg; z$nPbcpM!fjCHG27?$wmsTFp7?@&xs8}%6P4q`$FP5=4ml=pLw{B%zYx9WBcf=^K)?f zrR4Tc$sLg3==F5ZUE|m5G>7x%d-%*ruYl_Ue+xfzvg(24>tt+`#r8V6g?e3&?8d$y zMY-Ub^xF9_?%NjpdfTO7gb9+4c@ z^`H*Oa}P(CPo6Ryp5cR6K;*hb&~_3%XHVL2t)08kv+|;Cdq5lBdNSIE&;7!omCqSX z;%6{o8uHx8DdiI?;jf0CErwqXr`k5|kIx%Iu2!b4IkdssDVerOBS()rVX`s11a0BE z9{~qL2^_wo;QqYw`COO%JoQ_^Tr=Su`;v>818K0hwvS7h+sza2Un%2V&Ri=`yu~Tw zRWY}hC*G2j@s=`IMec8||L&EXhLf%iUV1YCUn&3H9A z|FBJ#|JMAYT+l-E@1NYaQ>CVk+RtHbig1paUgoIPVpS{6VMa^g{h6vvt-|+bW~{Z; z3fg3`)yj76V|&j=-k%{aMx?qd=YD)B{dLsk2Ik&i4$mWca$?ohb>KJmasL)x_bhQZ zYI>KhsUw$rnLFDP@BWnW9%Al1PrOG`#(SK(3q0{wr;N9Txr;sVUP>8nEpz|!#Cs!U zytkOU!V~Y^l<_`h?hc9PmUa~pHsbTzO0tEZ;d=$bml z=sM=AJ@IZy8E++XTX||g&k2Xmr3&Ym8+WDj-oxDHo_P1AjQ0R@TYBO>q~kgIu}X7} z@pzoM?ZxZho@Q=4;T+!oXs?5NPIC^gJR|-n@jAFyINnaeIlQl@^uEnpGf%wtQpS6q zx!pYRK1vzy3+6gYJV#xAU~V4|_Y-q_3FoNauR1>m_q*mC`30A2Vc*qJybdl0FEqo_ zUO0z$Gvj=CI_(%Y4}G2(Uf_fY1_JzObsql9zh*I(!7;0C7T2BqW%CpbDUUf4Q*UaUE+ zciq0mEDE^byg2h2=F*>&=X%&Ci|t&`c3x+@o-NnN$cqu_TyGTjV~Nz+F>a%oTf`hj zSPAdR;Ue$J;qR}(dv}I?&QDKgZiXk` z87bqVN3B*ecY}w!i@EECbJXgdlr@!S*-C%qeZLA-Q_Ug28Ps%a zSkugYa@8Nnnqr$QwwgZ2uM362pSFFc)S0|UQJv)(wLeH*9Cdz@>+%J27~wyC@Xv6c zh`+xMZPERte0Cwte)4&CJSe$1#^^;oMvk0cX6|86yjN4kdyTorJ@MX18SgFTp7O+d zCuO|%n0wX}@BNhV7Di6xumCO%t+ZL-+*iMD%5)pYJiUW`clM0sxQ*4vTA zbsn}Q*QG9VNdL;8t@VAbYI|PycTeqi(6x8W$)?QZNY0MAv2)6J@~qg+Jn@?Acnu- zBbY1j#5*!&Jb5l>3s1bGQ^p&`TuV>9aXOx(F2^M}n!7)%xvM!Gpn33}R$SzBQ24vv zM_^kyyic+roa4E2o?Ti$ImfY07CEn@b%RL33FB#;^GL1%{tM=!zr%~U{1$wNm*$#l zUw1mkJ2Db)b^%7kzR|jPFAMxTo$FECpvmPud-v=Y`(CfScHS&lcMJH_{n~jpdk^xA zig;)0ykhrASi992a_YDGu7`_(9ti94iKo9ACuS zCFTwHoeA2C`Itg&u5JHK&TqWr=cxVLdW;PZ%e#hKY;T-+= zL35@@#AL;Nq(N?vC1jt7@+~jM<|feBaGd`+^;lwZ}GDY_+fHnjkrFZK{16&iQev zfur_&G54T{D`xI~;T$z>m#9@)&?Ws0g^mf1_6LpjiSJJ}hrvF8nl=u&_%XhuX|kr+ zCX216HO*&o;M!DEc~;%qQUga#yKvuLW)2SACj=+e5J_J9^`1Do9KMFeuMulLe?E-k zJttmA?fdDPI`Zq!+>4%g19d!ySDx{PmBK}ijf2%#Y7W`mU@V7(V;NpE+SxLe&?bv* zEN$CIP2)>mj7Z}v&w~3!>f)&1NUqB_n`nHG<#->9*HPyQdORHYRWkRvC!Rc$O={{o zcbv-czV^hMrt@?3L!Pyk@yhqD)O^t#@*nnv?^}iQC37rWQIMQ3*d|Nb`6B06b9Fr2Y^jxSj#|wTjyvM=%JbK1d*aFS2|1kem^V**d5oS>W28BZ z`vZ*8v*8$Jw(0fFl4FEzve?GR_THH7Go&(Z^K{Llj*BpPG*KH*ZNA2aAU6>s%u6R#z zyuCc}o?(unx#K;{T#+Z<^C{!K$Xt6*yq8nPdy~1&o_KHTc#b;1li=taZggS%98Pms z$CqI4Rs>x99B#$#$+?Sdve@QsO~-h0;Mz1#0Z0YGot!RevaDbY>iRF#Wlw_W3Im^o;>?WBD&&j&hZ9& z;>ok0eDSvActbt$MY7Y6Kha2;F!1aN@<>tuyQ7ekVeXJbMiNm#MKPk_r zxl!uksPh=^#}ei+LU`W*dR>cchr|0;w4V&yhC>_f+2u7ca!0{)Dx&X^y7ohp*gIeH zbJTeXa~K;JS3G&1%tfAf@_ZVK=8iX=y$e0@PEDEL>C9d3iFZcIcxN(K<%xHej_0WJ zxe1Qu=|FfZBYF=F&0!te!@0oVfD6tAGM^17>=4dVsW-OCVmlW|`+A|Kb6d&OhH zbE`b@Zb=#MR^}e{#Jf$$bJXR51V{7v6*ZqVhhu&M%;&Y?e9pWsE7>Rc9B_4VR+5*&?3_qOr!cLipT&&w#`IOZfcc6$galA@w5;*P{BZWA7Kz4@dpp zXYK>x9R2;q(T~2WADY9AR>OPSrI~)@X0Cmi1H*nG7c9^wi)~)j^h{-P;M!D!UpVI< zrEiWJY+&vi;T$yxZk8s=!B4qfJVez%bGXXYrEp#o)*y3EQyQs(j3sfn7WE^yA^vX6 zT}|kx>s+7~bEhyjg>KyztR(M8xz=sL>*nH(-eB=@!42V%bJR-W1;I9kbBvM1tCupr zJmIpOUqkVF`jIbOmh)>OUQd3Fh0Ah&&Bg1#Gq*Gsr8=ht7np8QIM%W{50#p}s$h;UiXuS~q2 z{6+|u<@}BjuP48;!eu$XN#gb7S1DYU^P4VSPkz&c%Tj*wEUua2b>t`94B;I43FkZi zOK=|VIpXzjbA-!sehb9w$#1@JS8(e)o#kli%IKWjVix#p}s$m2g?k??xjmh*c-yq^5l2$$vjUKg(? zzqP_;Ilpz{_2l=ia9PgpGx2)z`$V`b=l896J^8H{F3b6C5U(e{pM}d(euZ-VuQ8pm zxvu{SXM}U)m*MyX&~=?K!8z(8Ts`r6xIE#qoL@undh*K`F3b5f5w9n|#=>Pezvklg zZUQd24h0Ah&#p3nkS14ST^V?Uvp8Prqm*xDrir150iEvrY?-22N^6MpB zmh&dT5xGd+lT)dwAmI;^T{8ozBliv#AvYg+&;`QWrw{Tg`?_u$J@>?Zb zmh*c`yq^443zy~mUJ$P*zcs>TIltG%>&b7ea9Pf8op?R@y(?Un^ZQJ^p8P%$F3b6S zD_&22>xIj5ejCK=$?s?3vXtNca{Z4!^zQuppK$!)c<1N;GMwl7UxIVgMYwt?^UD*? zQ9p_2J3mcup8Oh$*Tdxtm*xDLh}V-}W8t!#Uvu$#@+%N7%lWkyuP48j!eu$XV)1(N zD-58zNkm z^D7gtC%+NGWjViN#Ouj#tZ-S*Z<2UD`Be&+<@~0L*OT8g;j)xpSGoQtUPpey%@EF! zpK!kOs|4rqo+DllH%GWE=eIz-p8Vzum*xBxiPw|gLgBKU-xBe9@~aXq%lR!AuP47{ z!eu$XmE!f}w?eoq=XbAoJ^9@&T$b~DSiGM6RtcBo{GJl8C%@IgWjVhW#Ouj#jc{4c z?{)Ed@>?rhmh)RDUQd4S3YX>lJ`=AezfXkAa(>^6*OT9R;j*0H2Jw3G`&qaw<=0ED z|9QS+ESwR}kza=MT>ndOj=Bg}PrM#3Pq-}S*HFBk{PKm%a(+$3>&dUNa9Pf;xp+PK z6$qE*{923GlV3~WvYcPBcs=l_7$%uzfQtsIlr#r_2gF~T$b}YM7*B-dI^{1 z{Q8U6lV7QDSs&7yhHi?FT7qy_bFP~DSn?K%^^Q)KV#~gW6Vwl?|~%uDQaO_NHG364Y<}R zxbeXCO~H)-Zc++vAaIu?xH_he%I^T+E>FP~0k0>$kB+%pL- znctScy^!FVo8~HB4shQmxGfCcc`ds9urK`WTs>~}P5meYzkdo`{S@3=z%@#6n;U*C zVJ7PH!0nQP`waTgGQlP5@(yr&C%DZF-svm4yaZg^6x@@*bxOfK2;2cFxZ8m1nu1#f z+`%ch-oW)q!95OjK0F0?A8>;cTg2B(>!z)J)hx;fm3idDf&~w>uz`er8hW7=NdtwoX0qCAsJ$ZliKoe{W@5QxL z?XM12`?bJZ1oz^%cvo1w#G!$_zw-T+A5q>F$}1eMiA&%uhUeK>y!qpj{Ur|9Byal$ z_`5MrD(~aUD;&}6h5L@Jws==ryu{(!7-{l+iK z+eUeXi+hXA-WKnAi@RVlSGLQom3OrA3K#dbHx(A| z3X7Mx&|A$Xb=xcNH02d8?(JZvTfC(wCi_cV=v~bxbvr5VT;+XIo&3@9x1*V7@vgUc zi3`2*`eRq+ov*yY#rxaIEU?;!SeQQo_iSGc&ht-06YEwy-w3%%d+@$F#c&D}449Q@vP94u~U zY6o2WI9PRZvcJTI-VMBeK1_MHP+sBU{cUd=SiI{kUgARU=e)lfpuBr4uW)g12UBSA znp2bgB`);las7@|-mc0kT-@8ybhmh`EMDS5?@T_A9j?4XlvlX8x04xa@s^&J>@RVl zSLSKC^5Qj<9RdlR-wPM_b~a@e?|h4wxX}A9J_G@lW0iNJ@(M?^yiO@Jl@_l#J=tI4 zaBb>`99NH5-l@tfT-;k^@Y>W4CcYh&SiHm~y(cQ~X{o%$W`@N(!{Q|_={;3>XQ%SE zHFGT9RTeLCN$;7;J1>>Dotba(niBF7c1|zsk|M{GK+VW#YC^37vEo*SxGN(q4#UP2zQ(E7AUW9ac{9{Zt>2yc!>+W z@;cxi$-t@P4^JgdfOI+x^a4U-RwDMLc??ueTy&cS0i+7d9OI+xcXU#mXyc3moF`sA0 zy&X-Z#cTeV>@RVlSH|sCh;;piH zi3`1Va{b;{-g(L^T+G|P(9E}Z&75SNi3`26Yg438m3M{mp37X^TVz&Ry!mG*y~Ksy zt@wEKweqf3Ug6^2V)K;6yT;-rF7(dh*WEuT@3YD)T-@8%tg(2_Im!MK7kUTq`2MQA zFDb8Zac?{Gip5)K@e&t$Z{ycxIZY{|T(A2?d4-F6+ndiU-Zd64aiMn%zdov~yc?8P zxVX22`OV@Tac;8C#D(6^_&B(w@@{cJ{P_EM^i3;RJ-B|=zN2XnaPi~sdW)C1(A$9L z)i%nzv+@cT?{6nlVDZkFo9r)fp?4ql?x4Jd$}3#l+u0Oby!q!Py~Ksy4(#1UdAlmF za4~O(Let&it+IHD3%&cYcQ@r7sJz0(y+vlQ#alQp*T`i+kIdX%=tE`N=vH z7kc03cn2u&Y~_8&>TPf4SiGw&UgAP;1HO*bO?ek9uW<4H!s|hccgFl=e~AmdpR>2O z@-9&LQeNTW z-Ximg#ap-_S!d!x@3y?Z8l$|QDX(yGZ?XBp;(gcRB`);7#n%ZZDDTh8D_q>$)@-nN zOD|0Jm$=Y-8rONU^5z~GKkf?`_rmq|fQujZt1MpPLhr$Ro^z7&<|(gmac_H5&*EKU z@e&t$hq3o`{ z&sE+7l~=g9x05NccxPOk>@RVl_ZdFUT%f$A%KMz{c+|18>2LAoUy}3^7kcG=l1r7h zOnHTi^|w=@8Ex@aS-ixBUOB#9p}bR+SGc&h$V|0(3olLfm$=aTEFTB2R^HjlD_q=L zZ0165?7x#8Dk6XMeEMDS5Zxwt0qrA^5uW)g1 zXS2rQHH(sUCNA{K`^hgV?<>kHT+G|K(5$t1ODtaELT^XDj`W)Hex$qyG8gw2nNKX< zRTeLCq4!AM-@l{0KPs1y%Lw|I#Q zy`A{@TWcqZD6fzDDsN}z;@(cC)Z#UZll>(w^p5A(gPSYwFy$34?(J-jwsPnwGFfNhLhl#s z-BEd`E3a@-?{x5+WU$VEE^3GCT;iBF%!8_aHU19MO7kW?R{p23XJ5PCq zi+bmRcfQ4Is*-gkF7!_0?PD+HU8uamMZFh;cag8O!N$vPKalk6{XxF*$E-hUgV zy!!|7k{q_k@)39sEJ=DREnebqP4de3KgKCiqcu5XhWN8ZCr6tM!R$08n;hNN6`TpQ}%6oqhFUetx zEW3gC!IGr6^7>?diNiI?E8ly%PC)i!!^k(-$(qH@_rD+ zOLEvEOGog2RFd?ruy~2XHOVWVx4lw%zX;+bIc$-o1iW9BB)#h`UgB^~^7iBH@*3qe zT`*qA4YF*%y}_FsaPj#(|Au6pi3{VM!N>g@ls8{__2<1YLVxf!w0QI3!;w$cM*`lD zDys;75{JK1f4AY+N4F|(bLAB-2*Q6H1>P1GZYV`IUKZ~viYWPSQj6EXhg$Xc z5*K=(=JV$#m3Of63K#XB4&EUaZ;8cATEZ!LwFL9w)u6MqtymORS zxTyDP@SbDwuCaKD3%#%Mb)=7#caieGrml-(gd4$oxy3tTMY7JsgbWqkebJLO%WyuyhSe?AD_l@@RQt;zlphij1+z8V!QzbNm+ z$}1ev^yd@cebnNuvUrKZ^~if1&*y68eO7sei+b09ca6nsRwnyPT$T<>U|BoZ(6(~EMDS5ubf}iSKcp_SGcHm9eBU8c-LFJ#D!k@{PWhz`@QmB&inDG z_jB<6Xz>=_maH>zp*NSmm%qL8{-(UbMZMpH_YaG=(&8m9^zOy)v+tz5TXc<|UkMlW z{tn&-0T(~NT5s_Z7kc+&@2<+*RC$Gqdh5V_19rA}D{oKMnYhr~o?n->Qr_0e+re_3 zVJq;qv3TFLc!>+WtND7)KFV9DyuwBM+ZepX7H|F?$^H@-dgXih?UlEK@}6Zm&uIqU zP8M&8#Y#PSW?=a;RF6!MMyhmHSl@>2?p;z9oI81rVlvlW@w+DDfTf9{kFL9w)zBe{N zd5=+E;iBHY;2m%AzH9Lk7kcIUOh+njrSg8m+gsFo1b8P|y!m$}$CtR!yDPsg8?L<5 zl(z+QQSS)wPPceVEneb6uYB*MTzO|GuW(WCIPlK2c;{QZ#D!k@eDSf$J4bnii+U%4 z_Z*9Njm1k`=#~3<9Iw3dlvlW@_hj(Sw|LFn$?+vF^d8FRIVURbgUWjtb5ZXs@UF6W zXWWzY5*K=x^7;6w%KL)y-eNg#KM%YwS-b`JCcVUk-i5qEc5Ca@E&dP zR$9Eoh2EDq-c8CoR(a+9yl8)42JbNz?;4AjxX>&2?YT{PXDF|5QSaN}ooVsTe<)dJ z;zFfD_qo@3-_?O)8Z}sce204g{Ew%~o%;$3g?5*K>M@avwpl=mg&6)xJ} zoxuBw#asArvd+YXUb$}ZzVg1UyuwAjyMy;#i+6^_OI+xc?f0`HF&Z{Z`!IujRqcjS0KC~qzt%6AAlN5`$E7H=2u z)(*J%algvqB`);J`_8{AZ=Ukn-giC(y!9;JH5M;%p|=-*E+}W0pmUk;J>@HJALfXn zKL>!fp~aj3XtK`4h2A6iytuCNHdbEYqF%hGUlWVB)Z!&B^d80DEtR)Gd4-F5%fZ{+ z;+=2t5*K>qdgnIE+fsRji+U%5x3$H)#^NO|^ve5IJ1B3l@{Y1x&p8pi?JVAc$CBeq zTf zdn#{Vc8ZQr>~eD_qoj8F&XKoKl*qbEHget5BkRg{(9-5SGqUcbd>l)=?pcv_pWeuv z=S0>Wypi5>BkSI^k=}Wcb$jspFlqaHL1f+1jr3j=S$7xy97kI3rIB@K@@ww2>n@6{ z`_4wz`HIN8?f5lCT5nZk-4i!*UEI`YyBw2Kz{et=7uT7%k1?mgi5Z=n)xjpy7uxW7 zf6=z1q3vzewiwzjZxZKDgSHi_Z637UuG$*6g=b&Dy;`D@KNd(G0;1Ztqy?G9eub{DjL1pi0J_h|TgcnzNB-v!VXUXP%*<(9Tb zEp0~tzWXo(OBeV*7k@EDhr|1q1M#=8Ew35Oztgd;5ByKuc|G9#v;y1Uq9?cQ3hS;L zfNkNrZGc;OUc4A6(aX(q^-1nzwX%fU8D{EY8ne^zQ-L!Rzx#8*oM4`t>#UM%s|s0cvnw&_?yc zw%=PAb5qd9wI2cji{Sejk#(`oI1|r^wBfp^gZatY_*+=#CeXKwgEs6J_3gLb#w-ll zw#>8@0(XgOdk?rps_lNL>5NEzXnP#mC>P2Z+kS$!4R|ajN<7411QQV8rM)%?i*L@4xE>_$c$Zw{K_atz1zrS!@{J!Tm ziaQp#mm_W14;UizanKglehO^Avub0HsI9cmpaDlfhu=`#mr(n~h(+dK(_T>fpe>BI zHMCu(+Ugz(pVH{3 z*oMDd29DPwj)7ec4%V%RtUG*om%!T{SBQ*x6WBhM1a0B=u>#`Fk2uEk?^fKubfP&v z;KIHY!5EDU+9trC)ZaX4J6pBw4s9nz+T`^wmP*dOU*U7_0OLPudi~otvhF)|X@#7~ z%A+E`S65?hIVLzo;r8n4HbGn231Mq>b#vk-Okv8H>T0Y`ju}~*X@a(98^xt{R9L)W zc9;w0{8uIWqiN2j8WV{wcpfjQ%8dr0&A2bU#gXDJNkQDkaOz)lj9rPXVd)i9~XE|rd&5| zUHlwxgPUx-Q;Jrayge$KcKJkPJ(ndK$Tc#_LpRERyCxx>}u1CbjgU&(vS?c#! z)*W3wS*8Z`gKBE?Vz0i))T$Z$%`tAVdG-IXcOGzB71!UNU5W^ZfJPBf7es7`?9#0) zO;F0REJ%zI7g&nI($+?7Aod0pqK2TNA`*g16iaNVu?10VQKLqTQ8embiM{cjGv}P= z&YWjv?_Evu`hQ=pA9tVq@tyOVIWu=|zfY)-s2#yR%2>8?{P>wwv(y+0jPdEtfRR25 zwGGD5#F|OcZ~NJ{;a?987meD1e?3koXkmS81b;P#H2@bpuK}khF)gr6t{z`?GJWK6 z)yUMGGTp9QSb)X>mWT7WgXs((ohxXB=O}Vh0$T z2I$wfa2_9*v6E}2$~i@9M-ww)a@7>c^kzH$niPaQLUo~h`*oQ{fE3C)(-cF% z;$}6pt<5?Q`R%3sjnMYZnbx3f#0~c5FkG4SHl8@Y>|D#$*51RN_WsIVzwz5!Q#lb+ zU>8~UD|oI$QO*tH=RQ~kSfnrUbFZ96bw(}WI>KL+-GOk83K#Lf&y92Qb0Pdi+>QY) z*-jHzHrd^0AZdLXnegw5G*}^AzsV(;jvryEXiL94jU7uL z;AeaLX}q;NgVkZeRfV}ZxzhAO-W5^b)(z@oJzQ#3k|0 z$B(c~k@`99=wSba+HryXY|J>}oOZa}Ma;=BX-6AdKUAq5nwwflD@e-)#_Ue*Xdq*$ zG3>U;XNilNEInb&>ZMmeJGDSl&O5QJFaA5#?^;GrmG(yRavgIgq;N}_n^sno*@1Q(9%u(~Sc=+lHv8Tr^^3IQ9OkYQF4B(knL`I$ zq#fENjr#3;=RMZf0Ft|+VL)P4++E;VPUIy)$m$W0- zN7p#*Kn@qwWRbQ}SyZWyHgjE`l{!b-#(K}PDr_Wk-K%h{EuU>g;0J25+*}}^lHa!nwEF_uV*%~* zfEL=u$QY+Oqc@FlcvROeQfJA_cbjpcbMSIr;2W#81s?7d;&bp{S&hz7#KsUjE^3#8 zcJw>OJ;t29y$;Y=pZ}9NiWcWS%;RWm9CH~SFW^Es(A=0YHB+aL>1>7qQE0}(&w4!H z7s@n-g`s}&`?Q*Yw;U7K^*Ol~PT9IXC%3&*wyw{~?dX)P>vM9gow9X(mT?!SY+ava zEON@$_4&Nrow9X(KCgpQwyw|T?d_DU>+^XXow9X(K5u`gY+awvD{;!!_4zzpS7cqt z`g|UiSz7|<(cv5bo#SbUlKC5G$@vY^Hi4F$DB3`$w|m#ztTq`12q2ZzwNW zbLz+A{*{Wr?_6EH`dttIqQ@F(zHdw7ys}hhe_aTb4UO@TFU9kHvz86{{*>yxB#>v; zyqt2sdE+I-h2n8pFJ6cv&ChcvR~#=;7r$(%k3zl_?}wG;cwXD$_4DV5cwN#tD(lzz zr1 zw=KT8F&>zo{r(8$FO+A_=?{v>Wxer7^U#kOyZ$~6*V*$Rt+wOA{{dc(2V3JQ99RnI zm;E_zTJ?m<6G@Q!=4MSFJCh|?kDA#M{yl+(R{JscBKq;D9Y3YIU`7t^JYBBR$xLJ0+;0OZKT|z_6?p|ghh^{YOBlE(CJc_ zE%#^^n9#kP|EYU4TR6FIWY4Ag;{f~coFe?0^d-LYLlzl-<;m@*xjye#HKmf??~#1d|HzZ4dfw}W4B11V24 z_=j=dU(%7@&B9zGk3&}8RZ?3#@s`O%}PvOl47}>#MgjaKY~ML9YKM9Ni1Cin)2rP3FJxmyEwy*?X9sD;|9Rf%bU7 ziHRTO8nfp9mdDXq&^B;0^1k-psBM}Htuu)4(-z*PXUh(Tzhs=kc!N1raw_>F4oi{8 zyZ8~7<=i&$_}*T7r|m*4FB_?-x&8;_^g}NDYso3!!=iJA+jm^96fTncO@!rs#&Z9! z96=vqZTo_`YsEKGzpt44t#Fb0eXD&V+;wtUxf{1 zjC{UZGG3$_sL4`|n`X7lQ1!rno)+L_{E;tGH2&ntpC=@Lkvwn1K7V8mBaCf{Ka=f( zJkx;ovQEo3rJlpdHU%#Q=JqWjzPqsRol?I@zwM^-5F1zRn7bz>-X1z$#CM-Oj^>j3 zXZUl8=Ah~S@oh4CG-^xl^xT);=~-XK+61`nDxZ%I%H$j$^J(3Mcn_zm-zI z<1*H-nz?sU;+>c=-YLv|E%74b;4J1o5H7M#%YEV0Yw>=Qd-1-McoE+#*>{t05#MVv zws$depQpsTPREP*F3HH%DDO+bFET1xgWhyxJWzxkgIrMZZ&+-tvs_(r&wINtWcMSNe@z7g(~jNGdkxxZ%Q zUdzb6o{{@o9!J~w`_A;Yd72B|Yf9VP`recDW5!Icgj-V012$ein0D&%F)SQIbV;_; zvaKZ!XD8Z+`#INdzg)jj{XVeq67H9(9o84l1%G5Y-*;)(d|%>{cvo}0F3R_FyDDGdh-P1iUlj1|9`Gd&OOx-s0*W+T`Iac(vzhaJd%*V#1$c5``d#OlxWrfHzh5cebCj=ezHe7^ zUcmRnfG=^0ugrgQl0Lie1-FUdz#e&-**DO#3jD6J-=G{ zKCFC&^L=}nM+3g24$RLpafz>tmur>pTIDO8=UdX*tPA)q4fqn5_oYa@+@tu`_4%V?oU(O&{;1L^Ti550#ye%}`W(^UI)9VoG9 zWxj+Y&^ZL`Z|d_t1B}@YE8yg>1~l7TN81I?*eK^1UcnJ-o*JwXMuv);siFR-tE?`q4l^``l97_Gky7WV^8CKAtS^En5N^vz?!J z&kiQMF8A?taB{!pxv}swakY)z{ha*my%lC(dWJsZ&*c4UxSmtL{ZOs8x*QDAWj#7L zQkUuFSR=g7gexi4WfN}nV3GUb@blXK_!G5`@RK-QwyJu3?iHDCJk4R8cXJ*|4zhS) z*&kXz|2{mr*RQtxVQM6QTb=>@X+8ru&gr8q&j7;x*|>u6lDluXj?Vx#gwVoT;EOJjm zuzmu;ZyA4~vVIPJd^hXrzCWcpFA3zCH7}>3@e<-f@wluPFT|1N=Q)%sj_1uKp|YVq z3i(nz-#2Snj_0+F;`z^@hB(%|c5qoQUWg;juk%kSSE2Q2%eo-j8GoDdzodV??E=*~ zeY?P8GGp1Sc}eHm1-1*UdFvbJKI8hf#aC~W{~LM!G5yA6z41r$(2p6r{{9P(A8V@VF z<-32jeD_aXzWe8|2hs2jefLjyJdq5`zx%s?_Ox;9Q*izn`tF|)SKGXScYDda@t^qa zpZkNkq8Xwe=PLhuTUzoI;SfbYVVy8INMabM)r?`pcCfUnr$OhHT8 zaQZFpj={eYjrQ;TeN4JO=x%$`*W0bHfX0>4eLkTO`x5ow97#|U1`4r?F<#K6KHc3Hx#tFN;?R& zvy>+H-R$Sw({aflW6oCGnV_Acw8fyEtF+zW(EmKEB{?W*Xv_slYY*B*s_bc?U97Z; zpk1QMz6+b7`AVyTx?E;8Jcma)9S+(RR>QwZYkfF8pRKgcpeB9O`nX(vAUbwbJf_vUe%%5zy{d z+H5F$kJ2sz?Ovs=1nrMXdkD1ql=eJm_gf9eDE<%cwTAnu9`d&*IGS<Xf+&v^>{sMVOqdnvQ&;6Cm&(IbAR{@ z_b5%CIGMj{Gya@nHp0D-?Q>!52h?Pd=Ya6N*mN3^p2um!>&wbL ziInGw6K=dEc46)o<|a#E_$}v9VrAQL*)vi+_GNCD6b{b~;quQ8^jqFXq3e7Ib3`T2 z`f9E(b33Q_4rK0UDcs@A{VSz@gEQ7oo=N{AC0^{Ablu*O?7Lk`JC0(mK?-*?bDLA@ zcTC3i9?M)k@#SYwbvwrDco9yXg-;s?v_`1Q8e<6fS@&$TyFziGOD5pKHXBJGf8_I65X$GJLQ#P__6oIIzaQA91(vJI>D^2m0cMjynbHw*y?Hl19 z(Ojf{@(zRHQojiI6vsP4xQOp-8GYrM%wZ|%|-G&h`AF|dEfdloIbc9WT<3>oamo^0*0hNNhaJKepE#Lh`+7eExvXN5C0}`USc32Xd|e zzhBKgSFn_Q@0a#Q@_aLMcQc2+6XDzlF7mufY~5eYWmk(wBv<$37lvx$4PdOE3y9 za$W^LWBzcrCM|!DbG*mIH0ncoEB?0b+ zfOca*yJjoj6aP9Rpvkz$@7;8Bbvf7ProAXmY^+_u++yY?SC1Jt6NtoDD%O%=rpuJ}`Y!q>;;kv;;RlE_vec+V!*Efs@=h3HCSHTCK zJFza*f7`-*ihsFt?C&5Ry1Clxz=1_hi{;=Js-|h4lB?U8YbIP|Jg;I7tnCup*SkY= zk-6z^=30qwgnN*=9fXV2Z;keiaF1v%;w$S?n-t%*8RI?A+!Toy@qLlG<5IX+nCqOv z{f)U!DclC;_7X0VzrQn=8wZhgyu)0_lz4iMiH)ldv~Q$-A8IaAzyD!wpwutIeahT` z6z(hL`lWE+GIxM*k#-c|O71MN^}HT)hor=7kTG5(=K7?>Ypml%+R-c{w{1qQx#lAM zwjFbWQ`+&fjPY7AH%a0}e0OK=s1$C0<|>4X#(1YNcTP$?ym!rAV)H%T zyN1gJDe>^$HFt@{o5$QGDe>?=HFt?^r_a}1WSruCYPc*C-w1apa|?xwjAy(j&0S*c z{WWvfq{O>g$BX#l{cP?M%gf?Cj*bWG5Alz2G&jx(F5iEI(t&XN(a@Id2Y(gj?z`F0 zG5;75HCg1?ipru&=Z9|K`aQ~d5nuXl7&=ag<@81_dmon_Hf21%O3E&B>=G-xoXf6E z>5mo6QPlV~uUna0l@br{k8_t;{qWv3Tvn&V!+Y1-WzeL#WAeQ{dQsX+V>)Mjlw2#v0ylhfC|d>31ww zcn=;fuX3(xs-{jS1&@DgACq`*9WF0Ro+I-M-ZO{GI^iOD{tI(N$H(7m%srP9@9!Do z{e!ueQsRB2<3-x>aYpWwJdVcIN;R%Dhxu7m2KS^U}e|>#Cz=h6nKM~+U=e=dSMROQ>(RS-wo)dqu5BbNoTi-D^g1K?ircSM_ z9&ZcDJEHK98L<7;=X}S3hEtyGHz9W+Xc*GfP6rLUz|}^BhSQ*I8{wn*7S3^F_X#%{ zMObhsi56=|WA5XTd)p$p@08NlG+QvYuW*rV&vt6e#C(6o-2N%?cFY*BHFF0_yvV*l z8|JzR7iq_?8GVbG>y;9(osJjrZLhgVJN9O7nD|DxUd;7R;SOf5uW*t29jfaW;d*N> zQosJp4NCDHoH5=|=7yxiE7$QN?HHlCNIOO{HzLJ%w2l|?{ki5MzDF}RJY~Kb!`v9D zUnHJzzZ5P~KjCQBfPLkxT*P-g*Y9}ojc^l~o1BrGC|sm|5-+VCS-DAEzg)aXJEkyq zL`uI^GdClp9Wyif)-ZQMO1zUZ#+%LDDJk*vwmP<5IFsX@mJ)AX#`>MZ+?6bc-W?g^t!D1}lz8`MjQ1#WH>JdTB4fO#n7bt<-nxwOo@MU$De+#&81E(K zZcmB#YQ}i4F?VN5yf-t(`x}WfWo}JMJbO?f8!h-9o1Y8$ z9L%3m;x$y~YGUykG52IjyrvoBHDm7Slz1&O#@n8`^(paMWsKLFxffI7?V2%O5p%Dk z#KU(9xJ#@*IxzQoO1ynC#_P!3hLm`nGseUBB;fLolz81U#_P%4dnxe_${6nu<~~e` z*C%7Ve$0K65^rF}c!x9hSxUU28RL~P_f<-~ij46_G51|cyrVM4JDNGXj~AENamuk7 zV@W^S95cr!D`t6{E1O1zUZ#+%LD&r;%@o-y8;%WDvg<{?+Y2Z7d01Y@0-jGOR3*mI$orHf6vIhm&Z-8+od;0`1got4xz@w zE$W^7-!Y)=4%%Bbp1tOuyKiI-yp%$&(^4e(o;c@46>?34$|6D6L_Xy@pUAnwf5E!A z_l=;2b@^^HF125`|BT~J<9PPk2?l^At?XA^cB=GSq<_C>u9n4jd~fm`gz<0Th%rd{&>;cl&Uc`r%bQ1tmG8`kneuf@AA1Gx>}D7)MSyd zv8(dkj_Y?d=S6(ou@O7g*q+PImz+lWQoh6Nbm1a>*-Gas60bFLmq@$_*M_-y!bN;{ z&FEXi+<7VS+GUK_p1F%s;_a#9McT1fMozvHEjKo*XiSb(V?%Su-#HBKN3xuqn;OWN zTR$;>{Glext2m{oMV{YqWqqC*|4qg&`JzGtyCb*v7Rg^^9PG#3V&NkBE6K|r3c zi{`LKFT=ewGn2e*C3z{Gl%E&WWC^wR$-p)6rvloa1KQ(TOXTFY| z5-;NW59T@w7iq`)8GS!suB*h0_iEt5Ldjq7bl(npv1?ryL*!Zijxk&xCVs3!c zFT!oj+(E)c+R-GV?>5Z!PKmc&#&|ztu3t*L9d*1&J6dTjl9!#C8zsIGZWrbT3m5S% z%IMpUxw4da-7?1O!CXa3yk0t9q#XxnE|M3yhkSzgMz}*c-qFHEeEVed?Z@1)De;cX z81LuIjZca93mq@gj-xdf$;%k#P88n=SIOKI;Ud1{GWu3AH$5fZNg3mv!dy*CykF^f zk#?M_xkz5-Fn7B6M!0jCJ5{)d?_%v6;jYzO#CHjEmxynKyOFth!bNE&g1L)Q;;q#2BJH?UbCJBPVs5ecMz}keyF$2#@9K=ccQbcYO1yhB#=DQXMJe$f z(D5Secu;eZygba@O7V?wk1}_oa1r0fGx|Qs+_IE-Ycs}M$J~mPc+cv1k#?-tTqG~g zGq)=!GRaRG5O|dbh9sR2-$4;T!0CH_Z;K+u?bg=Pk z|K{GwyWys!f91L#aafA_=yzPdzT95%rEC6_Q}LzyK}d_`Zw1FYfaArumCUsgE|TZl zbp9gSk3TTCm&A*3cQLoCa1q~oGy2}gTnC94@qK`~_QFMc*J$4e_i#q;5zR&F_b29h zO8p|-lgxDzE>gd>8GY9=*InX8e4k~mt8fwD=e2Kydm$tDVn*(zJdW1$&((UaIb0J@ zf%*B%Wc|(EM==Aw;6(O8k;4TwSwi!3D|LPr+1lo8@FCl4%5x&MOeJX>-Q$^Dni&0ua+<&+b6vyjVuc~uR_{(Ea|2m8Mx^oFp4)M*e)}9Mqc#@0M7{^x7H+$0+8oWw^wyH;&H8 z9h1k=y1(ccf4ikQ^ga>R{l%6mg};*b!(D$*e*dB-OQ?Tq+isBumZrWO&vkxOauw;z zD(3#k97g!vVEmc%+ljm_bC2m_eL0=u-6_72KANd>8mZq2%-xd`?<5^B;yXK!qrQAj z^`+)89}}Q2Ur72gx2_KVV}4(vCQGOfh#L{B>1xn3p@De_LA4Usp@-&+lK< zWC`_eZGA}|Sep9sdaiTN{U~B=-CDxj{>)9EHnT?RAp7^zCs$huYbP2C%itVLmi6~m z_V`Cif84I~9O>UXnR_oK-rX7F-OJpEDe>;l81F&mzLI#6cC2CUU&2Mk-y<1)|HRxE zDe)fH@glxYXfD!@rhPL>oWR2%UnJ2jkM!A9WTN?uenHjUu3R@_(r(D zFxN!5i0>;IegDebwkh#m*YP60Z)h&kjyIXxMSLUNTg>e!T*UY7jK1$Mw{uFojXGY$ z_dU%;+VM~3_7>j=_aSq;3m5VIpNzhrFt=w)ynpF<5#LWW7iq`m%DdlpE2G9<}Q$Uk#d4CWS!Z-kr0+9XI$p$gzUCtBxQw}b#W%uT!Q36fMSK@#^u3C?yHny_qvJ(39*}8}c~XULFURMT_kQjEx$OEBkFA+|Mz~0>nlmR=h@Go%k&)XjkE7gQqjIk~ z^uKBde3w#^``mk77QB+=Uh0XOEYcrT7FFtx9l0)VOAaFa(Tce@gp1^A_ek58tF~zl zYjhLbN4p}>wid7Ew+%H}q-|6dRchOwT$j(J&XKn5#oUJ}TnTgk6fTkj;d1qha9tv~ zx?AN+bGC($t9z4N<@QO_oqjYda1g4=hdN zbU4>}-;|t|Gq)>q{{0)BEHiza!VDTKyzXxz)ZLG8epG{#Tlyc{C^ z5g7+3G1rs1k$q0F;~68#c7FtGm;rgO)yP5B_Bs=eZn>5}f;Czf@MnP;Ie1$2MEKOu za=gy4hNl@fZ*D*w+?a-6ZHMU*U-)PS?_ms<5-qkb@cYO(m_6Pf2bx2V4`CiU)pB+m zB-{9n`Qu;#XtGG|sVu6L`&+p#$E4)`Hs&grtIIyuU0im6ctqBtdvsnRdo7QndBebD?(UCk4tu#PjF&>o+40g)=8ZKU zzc{GCcmEvXjg2V{JVUT@kez*mB!!SxotBgr;)yVo4Lu%jfGWz76+I0 zO~xd)LbTYn>;sNBQG6qP^if{!VJ83IbN9!GsNN%fKDFxJ_yzjj>GN6B@FkMsMe z05n-bee`UgKb{U~(jVlD5vf1wZ$r^9k-S9uqXBdCn3LRN>9pK8<+8KIBa-`O%u$Wv z?_T^FbEl`o+c9IjotT@O5^rZ6FVc=(@;DkB%hcG=9JaepJ8J!Adm)?pejprU<05&+ z&x`sSv)slT41Xo}X%%b=j3Llu35}u9{(+1a^1#wGUUuiUJ;J%df5AG_a~&PwucXf3 z+IN5AiV}Z!+nyY6HOC9B=dpEqe=d7fO23up{)mk6?#wMpiFa_uc)gjsQQ}2>g`}rV7_Vgq{E0cmy>e=IX+t^wZIIK>hWQj90hZjy=9j7L@q&!M$T*$G+;hT3#>))m zz}hac^>>!$BEBav_nP=dxKo&WRk%p~&d|OQZjR<6zVn!STYOWvw}gxMO1!lE<#7?; z^SFK=h;M|ufVuaDi`4HTotFrAiRL1{*9gaBJT^{mU~W@N{gz5R8GjMqWz2mq@gm&s znEN&(_qA}5yhyyX{>{p*(Cv-*{$6vD_TI@{ed&)#yt^{SyN9{$C0@k$LFO6@7x7(_ z(f3j2T1vc#uW-$Ui}(tc)^Az4KV@vklgt%K{UYsnow?S+McVOZM&Exhw`)qgcXhmo z??%l<+VMVf9mO}oHEu>d(LuO~?>5Zk`YjT#Idl7@#A~VJMSQo@T*P-r<~pbNcGB@8 zzMb5;`^rT}zNLP99jA#&|i`d6MKR zlG72)jT0`Ct0N;hn5lB0IjqsUaBNVMP6pme*(vwlj3_ab0?*6vza?VxJaH)XUH0;u-)b&WziXMhTzn&(Tn}6zT*UV#?Hl2iX5?-tFn5pCFT$;0?%EV? zC3C+OF4B%wx_%Mv51NbA?@s1!7T*YW7jriW7xDe0_Kk4&X)faX0CTsBZ-je@x!(&H z@qJYLMz}v|F5)Zay6zI+2q)i-a;I<+Uwus_Hvg^D^^3&Q*U@6}^!1%i{M|Z3kMpIV+=t?7_<7s*#+2E1*nN=P_P2P){OvDsSc>)|_S_af!}pqTzlpDVj!}HG zdC*U5<2x@&Irv^0@rG`~kSfGH}a)doz#A_ZcX?cW zdta$r!^a@c1sCf)`{QcNn3}26#}u1UP_UafANcWz>uiPsSLkv6dOl{%^vW?X_cuBo z=b?T;%lu-@CvEb#AH-p;Y5P&Z`)fUU`yu;RO>Mk<4i#LiFPvm)7VvGmOTI60Sdx4% zY>J&&CGee-HquU@U0B^5|{YShCO{;j#j>Xl&^3^b9;Lj(=Xt=KHy6nmZtW~ zeL-WD?_lLCoafuqn4tmRw!7u$nYhGP_BSRe-wNd`oafuim{9@W%78C%iSLfwZ`I28 zXyq%M=Ud#_924-pKHy7S;(HX&8#T&zg7Ov4_boP)0=}OFe2GhZ<(&C!7;Wm!D_iur#%|4PVo|O8MTQe1-FUdzjS$-^ze5afz?wZ?W>dPx%Vx`}Q;s1bnX# z_!5`+E@(oLZdAUHDqrDz-(KdifbWKYFL8`Ta{= z;=2`Z_it0aZ!2HneBWa8PQZ6Vz?Znhw*`-@)ynrH6jv zpYr`y`3mRzb}`=ve6J7q5|{W&zdfvcn@#bL&xP}SyPD>f^Y@>N_sDNAaf$CCJU>67 ze0Na3!uh`4OsjzJjDRn3iEjaqt98n^o$?jV_w8=l2YlBDe2GhZ-{Aep7nE;5<@-10 zeBT~sK)`oHhx|Mfm-z13m?FKZe9M(@E9QLPo~9z;JABW4U*Zzqew^nwmG802S2*9d zml+%IT@&ynF7bVf*Q0lo?_A|8oafu6vzZt0UB6d;dx=YYW&QX-`Cg=ah4X!j%_RZf zwtMIM5|{Yy$$8$Se6LZy!uh@>W>LU*LBN-|#8<}Em&*4#2@FB>c0XO*vTzHfK)T)?+<-~9Fxm-t@6zRi{ItIAh6-?xW(E#SK#;7eTMdnk|R z9hC3e%2znwx2Jh0;JYEi@pyCC38T;lr@-IinqDBr`C zuW-I^cQZKP+hYIx_7a!)9)pi*z%p3*9;JMRBU;8)4|8z8eC*#3jBh_`KP8<$Ia(70zpKw_>-p6%PQaJA#8<8h zU7>v6QNF_YzP-%GfbS;(U*ZzqFL?dEM)`iMeC4`}=i9xr*%a_C?V8`e#3jDcj_Z`~ z=gL<&-?!L&8StGE@Fgzacd7C<)&Blu@OoMI5>se7e}8gKz?ZnhSB~>mDBs4)S2(}D zT};z}Z;NjEc_uFL?Zn3^tCVj`<-33A{6_b#X8VBe@PIFIiEl5CcenCwrF;(v`gSv| z1HN+tzQiTI6ZrV|0p;6H`3mRf8O~n?eAfqjiA#Ltxb{)y+fn%n=lk|BodUjXyXW^W zaf$CzK0bO%`Swx1H#6t^_B8zhzUu?N#3jBXx!;~uzGcc+IN!IIDG&IT_Q-E9af$CJ z-j97r`Hoe-!g;#5W#J33_?|-U%uT#Fl`M%xEl7R1;fG=^0?=oI5zgE7>m9KEVFI*oC z__jD8zrDmIzPbA{;GP#;>_R9BTv+7tuCQHX-q=C;3g`QFH?0D` zGXlQECB8Mhzj2WAZKr&N^L=}m_5t7Z0bk-0-}`u+_EEkam9KEVZ%@-H;M?|){5%tv z_#-Q;M=x$ex8X-d?nr#240_%`5p z3zhG~%2zlnDa&l|eKg>^KHy6nmZbf5>9NzU`IoyUbxpSzZU< z4guc{0bk;O`9P8-*3iG$D2+QCQqq?Pyd9mO4`JN z6SpFYPiNRaYAgGZQ})6-mi@#jyQGd~KXuCfn#WYuI)CAm{c|0Czjn&5s-$%+rLHK`nRD|wyci6TRUZU!e{ z??RJ2cZJWmWUVu@Qud^bWwFdl@O<7r1LeF5odDSgT7}XY1hgidjd`NNFZ)?;ue1Wt4p-VN@F-W>-rzAxX&u31w9>AG zvU8O-546QfgVUI1iP8=WXgh<)jfxuu+?z`K8uF~QrtmD|`-*D}@ir;#E~sA{cu1B` zw^Ls(1+Ayjs=)UkrQx$-TKlRKJZq}BCm`M=rJV(3tChA9%1&1rJ|}de(*6S6Ql&ix z+Dl4%1$-MF>9_5Ah}T?ccS6~gN_!v5_EQ=@TQX2-H$vINm3BF3CoAn6h__m4dx5rA zX+uGKQ)xd7XoUgoK+xV%Wlw^!@u|`tgm!3cF4XyJ#o>2lw;S!}uPJE#l!nhn3{=|d z0c{56N^yrmyc(r-0&S(z@ILufO8X|D9Sa_JD6SIXy`i)+&|3Z6ZyVk--9~9U1+-z{ zv8&?Ff_MXzHWRedm4^4v&Q)5EfOZIY%v0R1uufm6w9cSCrL_H^>{_MW1a;Y@v@1Ys zdX%37ybrUv(nbcfHsH}xagRg11C+KJvMmM z^?`NaOr=$Tc8StfLRqan0NQ1WI|O{SHXO9&iW?8w-AX(15P8--so(g3HY1>&9?&if zX#Wam=FoiKZ30^BfVO8q>l)BX1KQAlHYuQ;5YXlZv`YipqJXwKpgj`MzAl3Ojnl9% zV5iR%;s>*KXJcmWgr5?vus`g-TZuhoFZnH_v>$DuIS?cr-r41sr1sJfgm z418hzay>4Gc-_I<)wY6o*FgJRts9gbrONKm7UuEOeeMO|CUo|-pMeH1bAu&m+h^c` z>#(bx1KJgxd~G3U)k^yZXiHVuJ-}nM(%uHGmD2iy_Nj_jA9AotX^#Te9L9%Rzb_!C zoA&dy2Ea|)*VjgZ)>CQY!J{YapSkh22Mv!8T5M0-~@6pW7WmJ@4FCd z`a)mp(g*6I){moL+&^X~>||YN4)NYs@!o@R^~RNcynSFicD>Zs${;7#UG8hULc9)6 zyo&NcBQP76ZHrt}_`lGg2Gui{E3GeRS11izex;)gF0H_D=6qknaOMJE!*J$8U&Csyl+Wa%}jH(qYWC` zZ$M}G`+tQQJO)b%Xk{k=2eY?|&G4FdJ3b?_jKLvKrO7Z{M==5~#~+hqD?~ z`c6l~SX)7nJDjp*!^-U-I@94$!$CAhX*h`HIvU1%rGYVPoOr111npg{wC`cP{H@Z~ zLD`3uwzSBY2MRDsl9!<^>HBObPn4^jAl}8cEaeJIYy}#P@kDD58jW$%O8b@f9|5^~ z)RrX=t3j?F@wC3fhQffM`XzPw0^0Tuhr@A&)5yDy2J1pGgfkl)4ePga5zHk@GoZch zXc!MSZGUsLvcV%q90}rI9SsokI*eVK50dsi2pY{ViFONUC)%YJdD*G@^XVy7PZzeo^MjxdKl5o@E@K2Jz+1n<_crM z?cctzepIQl4PXG?Xt|^=%U~|XvFgUV7BoBIIUctSg#K0IsuJq*u+?x((YQJbINF0x zJo*eUW;^9k4P}vVeIEdA8>KxDxuQY-D!RnRk z-%Wu&@;xZ`|85PwQ{{vzZlAp8IOO4T^=<#Aa}6?bxPld!P`p`HRpYsOkbB(Pz;|)h zat(Ja5VFoRY(yp9agXN%Wsz|@3pdidh*m8E{NB77w**kXe_L7ZOV5`z&m+#I*Dqey zZ%3R<_n`IshvhHs`=jdT^&8dCpX-|1z6`d_D@*kYmCahe%-sJi-;86;UoU@rPW^a1 z4gxvw^LM@NH-D^==J#bw;=Hy|ozu&P*7J}r#q)i$mi?*Mc}XD8ta&-*e)HzA5EqKa zWxaSIjx;~dq5kD~fx7r*LwywTrFcKAEXVWO7O$T_#^ZHK=cue-=buupLhI3%bwT#2 z|5x^}H)qrM3vDlhV=`meta(Z2cpdz=t(Uy6dhuBE=AkXVxiRkLC2Rgd9Ov{0#pANx z_@jB~$BbQnpN8w~d5~7yvCDJ7%dyM2CRDhZ{A!F{sq3rv$CdA5IJ_4 zHF>ri(q%ekDg+bpT^{oFj_qmxdD`@v$)g?{V@g#r zO9+=W9vbwclTA5~NtM;(?M=P#Z<3dghGl<$0RBw4s_A2@Pnaqi)fu#0Q>1>O9L$=T zj3PN7;r9pagA5Dg@5huKUo}gH2DF!Q8uGr%JJi8 zR?SjlC@{vSI|D}gGSoI0LlbKzNx$u9+lGHVG+Z=l2mbXqoj8PXk0%Kl^J<3YHQ;(` zH~Y&>t{z`?GJWK6)yUMGGTp9QSb)X>on)9dn9c;!xq?P`jv_ZD(7H9DU~e0jJUFbG zoIAUL@%93_Ajs7=Z|v)=zw(}9ZjiOXJd2-<-3e1FCrSlH8#gtnjA&TymSC>PVF2eU zf1PQ`Rq)%3@w$wlYe3{7oLggK#`BjGHvqmi4&%KH$KT^ zAxA;Me}nVK5auB43+Hzyz$JgXgxB9@SQh4?{CO7(Jp}6(E^;2u_oaEr*XVp=ZR<=A zNTF==J_&8}e#AWFx0m)eLfbcIT7$L`H`trQnnJ7fHl8@Y>|D#$*4|T{_R6&ce-s&W z9$XW_#h(*fTJ203&rSttJk$JlX(`rJ*40L4?6~nG@n(oZt6?7zw+uL(5!|wW0xen3 ziMtcDWSu7M8_<&Vm$Vy>pvW@sLTGa}XpOB$;yVcHg4uMr8sKo`xpkQf8jc=UyAZVI zN^1h~S~yy0U8OmI@&{;cxg6%9@?RU%%jTr8AjW;s7v@3BO@Xq71;t%4L|?uhnhR&P zqKjLq-!RK???_6&{S9(j0GzaUR?W=G)f1)Proz88V&6i`VN6^??WHk7zC;-_YkcR< zo#Br&VIcJ2_J%m*TLjyISF+%`>%XlXJD4UmBK-)pgK|c`f?_-HP;Z{oju40Z&cSx{ zw4oON+uG6H*xSf#)Np@L&d8TB+aD$H$0Da4ArARHg6(K$L(y1-?>mgl2ieC}kzKcJ zQ1}t*56T(&3WxpC1^#%!X-9}d{&#Sp?Pgk!U~tNMwh$U7y9f&?#Hj=Or(3%GULH z$puc?x;_JVg;Tb!&j9|~DO=ZP0IzY%*7X@c9CtFV>iP^Io+Xg7N8?6JEwznjoB^fm zmU{>aOm4-8yvQ+j=w1Wa-^Wzv_IL3QUbfsrfO*0FgzzfcaavgTCIU13-m&q2+r-}ON2u|}Hji^puhd1a~2 z{(2ND8(NP-z7)^*&003(`%|j(l0cqW^Ku#*FCi`zkIQ=TLL6y+own$RH5jB-HRTM5)=d4^`xDlYbYKko_ z_3K|h`CDo<2+;4=4lKZRqT#K7~G%U-tcM1GO|C(s+tma?aq2pS(e&k%+ zruv0AU!!B^+Uk4*R6*)2=ZAEiKRL{pPe44-jD`BuD_CdGVK=qcQ$VoG#4@_x{hj5o ze)Y^`{LNe<*$_(ScJM1_Uq0q;|QQ1Y3>Sxr878cSzo@Hu*Vo`>EKhu0i% zS>K(0<4^Scb~7&I+i5Je2d+ou%8s{9FSaVY|AfoNI6VK1%M-#?h2uF@uzaTo*Tep6 z@v!|3@Yz-(0M+l zS$>{TlST53?}c#l+?Rm@?r5pYH#X0HUB0#&%?GjE_v3h9OHL!XAH>|3Dclg|J`ygH z`(ezSPc z;%9j$f*x1jx5yt?sL3MZ3g4&Tj;rwuY*)*;ise+cwN1Eej604!wiYgu(-~4({vBI? zPs-ycryEt+9mP_EG1 zKdA3rH?`ki3mfH8HXhDMvL6A@O7EEDUUEttR))5DGw~xV`{de7zHcjE;XGd`^G?8b zaln_j#P@g(RH1w~DPQ3{U$~Xz(|~WYHu>!(F7Z8s10AJ&zg51%dA_jY`F+6mn1C;F ziElXvI#&6%ywso9g!6ohJDcq-=g(Ko;9VHHe~C+cWxbrBd|NAD;e6j>(31Auea{Jc+ynFL@?YbpQux2ngx-%N?S{GAaX@fy);A{B0FVj$I z$Zh3lBcOs5$4BZdPBYE!L2>20(ICe5@44c^w#`V6WV zJgjeL(>$luGo%%p7LHcYe@Gctrlr!b(%U&&r*YH9S7Ae7!O>^T)Pf=y6cfyR`xpJ# z$&7&h#m~oHCS0M_;MGdzf}GY6v=b_4R`oQOIoi;wlWY1+t}&||t>3h2Yx}UHp+}bz zcu$t6K|C;d!_kI9xEjz}UoLfNXfPg@?e1tJW?=2$T}X~r+jbCHS-0lEKCQpNI>YM+ z&RnuCAoF%R$P3JCeQbfL1=rc%?vMGWjvP>KXa9sNG^pYDb2Tj0sDrN|hhw)g=YchV zI_%+VBL|gReXPTQ29L(fGM?6-z;O5VDb2Kdb zNqb{ljkv+)c!w(+(r?gEcr)FUJZ+$v>Sr;Lhd>Q6x4%er2WIwFU>5hi+@Vjrd z_UnLloziT)iotnhpHUpu#h5c3U($*_&3*5s+g^F6ooMd6Fh#?5JO<-=j^lw`U(n|| z8gkD9=W58|UNgRP&yDvgaIS`2f8g*vd@lDkaIQ9R@F<(-vlaIW?1#A;%tO!}CFUH( zy$9g@4J)fchhv~ELI}{E7miLCbS_2qEm#F%E+rXGh9j$b5`H=Fm3Nzo)Fy6<& zxf*hP2OMS=DDG|GT+MwKuv-^-f2U~f`+-G6-zQ%XMKQ&@ z#?i2TXFxnx8#bbE#mJ%k&2JRz?K^5E2l%(V zw^p>WLFJZPtm5qi>!qs=DkJV%#WjL)?`q%+wS#v@D{d=@=W5_U&}2~ zTnq4ZHSmSKae8N~v3P(ea zkBfZGa?lRVy{b4{XDI)B6>mGJv#VJS;<*|WGvC3ucQxBK&{sO~tOjLW&9)b~TOH17 zz`2^u0dTiDoYjDHH9*W`u+Me7!=d&}K)VgJRf@YOpj`vn9~5_k(%?PTB{;#{p*VSu zwTvsQ%T6$cG}lgP_PyA^-s!}1-<2)#tOh$os~rwK_J??PDXpi{%8ndj>#VtnMSj`- z*tpUW=57^l8;Ga1{!sQF#SK*&ge%5e-K)578ksz81DyBQ-1|zy9KbLze{|wm4UT8> zG|1I`4hO}|7ZC4$r5R|Ot3j@8om~yf{-Vg|FjvKps|QrP7r{eo`$O3W71vW~NA|0* z+pUKb*BG8>cePU7yMiRFQJlQ@T*iy#;3UPvij#MoCmftZf%ZM(aPIrZJq~jEsKY@q zvppPF{7GrMC=HG^pwcCI+)awZc;B~!^;*T-3OHAzc*UNEWv^BoYWslpxQf?BX%NpI z{Aup?e6ARet)5WvHbI?T4dNl@X;_y_AfDoi@fhq$CmxhV$W%5Hzxx|$u~#yst481Dp#=W0;azBhiI!=VPlz&zt<<#y!KJJ@BsV7&E3 zzSftfA+z2oi(EC#v93m3v8N$7Hjkr*Jg4Fv37o6-wX1Zor(wJ!6bJiowk6N2cn`xq zoU2uIrUt*LxZ@#zt_HcX-#77+!=Z-x`-`LD;FIsUaPxORjF*=k4zFuqyXLIGp>v0K&Q7!yy`8ufXyfoU-mU441%S{Bju1<~Ad|Dw6qaYTdq;ptubJt3}!d4A8S3vyWJ z_Z`i>79(XT&z;Q&4u|pOdpLwcZR;Ys9wnN4O(fB9ThYaQtm1tF+cH-hG!(fK^NHgA z0i3H5N8jNg9#|LoUJudmyHZg9mlMzZ{uGzPynO0#?tAEkqw6^Eetws8-eK=^1I-tC z+(`4Kqm}i=+8Oher(v(+!~M37hOwT2_0rWUhT#?z z^5t-#S!1PPTFm!82d;3>oTK62W7@$subF&r#MA=#sFwMsmcvOI9H!&{~QtTa6NzgB5@x&CRT!R;1iozn0g+-H;qw<(xswFV7Y zuQh1Mb6SIjJnv`_-W(74`wM7xz`}KxMksm<<*yhjop78#sPxOZvaCU+Ur|~K)cIAd zL7o4qHK_AzT7x>jt~E&h8;*w6od@lB7c@Ngf!B}f+u!aFY{#IX*y#y}bp{Q5H|EN+ z2EOlU4Se5sG>kqUd_MpUc12*BT2Rmac7L!h41|PZ56J0uSDtw6d}hcIN`WCV+gYF71n8j!@b|P`?f^ zZyauG6}l!2*T(wWOO*~s@g~9Xeo_{$m-R2hX~XQ9i$~n=fpazBa4Io-DQ-1zt_B=V zFJ^DWJqVnu0cWop?4!6RfO9qAa2hiEDsDY+t_GaFF4<9WuL9?4z~OXd_EX&7fpazB za0)Y>6!!set_B=VYi57NeFmJX0f$qa>8!XJz_}W7*dfJ=`xS7mh8%WCiQ>)%&ef2^ z4(Xz}OM!DWZt zHWDxKf!!V1_8}J>Xoe--yG?aOZ5O!&wd5Hq6n`<0QymIcWAK1{i-Z&8ubpsTF+( zAA#d4;V3VEfMZTq>pO~$#z*Ah5%(G#>$+N*z1}_8R4DE?IDhYI#0@kf6?Y?Wu2wb# zIs=wbiaQH9R|C#&o{v=AY~WnY-Wvel;5gdhNE>K=?r7*a1Iiwyv`L`-!qLix3>nrB zs(7@cVcDyIb2Z`ynqMmJBH&!DYzU2)V-$A;aIR)KXz>`u^#;z>g7*qR{Th33mYaVn z)_JE=co*U2a(@o>?_ML|{8CP9Xr@e?Hhs(_U&FE=!ZFf9%}s$kIGWtQb~)_y$-OwW z-P?ovhH`JuZ?{7if2pl3;!<`oth=}r(68Lj={VuT;yzcji6#QjaBZOyYiUyhTF0EG z%T`s7&%H|6ji)*EdpGCNG#4+62bTSz^^@mpFov|Pw*37CILV*nJ}rN-9LRUZmeakG z1qI^Ug;?5Yp(xT+~MMd%7)+9JQn6=TrhvNawQgnyGc{H zF2v#bQENQA2kgF6Hc~&k2kgFQHp1CGVE5g#5zg)byYHioaCQ$Eu4|^XgYylWn%diI z_kiX7w%C^uU%Llv?7L2D&7a)^mUrXU7LPh)o7DPIhv3XoyDxPJj_%qy>X7EC9CZln zN~FZ24r!UnQHS6hTWkIBLJQkJsFj25$1FhXLfeW71*>gU^3NvC zsbxMbErY+)I$}n;`CB_8nC@g=>kv zxUM!a_Jk3u@_iGbwv9a{_evcoi+e0h3PN=`G3S6D=+}hzcMI))o&0mCZIqwaeK6DRxke(rJ4 zCY<}w_9K-0&^#W`z5l#@k}2$?saO~8qxxPSoiuIcc+3?p(&w>x{5v=%ak)^gLOG@W z%g^Z=IOe2n9_F;5AjHLvar#nK%orXUF^;ThWt_dURwIlAY>ecrTXk^elWd!L7J?tLSo;e8Ys5AUrI4L@yN zl>TgP=vh!KEBEixQ7g^Waz6t^2BOfo_w>5HaxaN!?tLSog`OE*w*xx63q030VY0lE zEtlt8Ve{aQ3uAz*<(X03SEjK6&yfb=&4PHXUE7p+*!o;N_T3+*wwxAPKSEldF5AFC z8f9B5)Z2b&vM;`SO%@`O=b}+3?RL1|u~abDlINlm?pokv{=~9l#+3FST_)H26E1lM zI?=v@vUFWL(LM&vUNAz5ecuIbp#7V)F=P5zk3o)xAHRaO9j>&GL6dnq7Y{TX=d@6J z-vDihNbH+DLyrGIT=JZCqOFDc9iqxU0@|UD7Mic{pL>Gul(PjaG;kkJuK6RZJhh-Z z{O;g=LkpdM{!JUW?_myHPp}--?=sNdP})b3fX{PU!&<+01VhRE_sotqu=8WfdSpy* zn~yE)5uBI*39UzuL0#T<)+6ks=Rn*39NS&+gVqndzTv-?0@qcQJqxr6N;?*`W0ZC? zXh$h+CTN3|HVm`@O1l!YK8_Yz_m@Kbe#L7z))npuI(0xcuRbaXrQ_ONA}yFhl@H}McRgK&K(=@dpeL6ZN#9%?5PJn zJpunxXd~%;6*W9ZI$dcT8TLr&FmstvA2IuT<6sN`_Oi9A>^-#gtxzYlheL( zZ!!K!{r2xXJ__}3Xn$i8xL262wodeejy00^H=#=PyA6&t=AV`9gY+xyQqrYlgjt@` z;GH!jnTH$=BMfN__qQvpFKFu=jmnNTA30j69icp5nm3oAYw{kd(R^>kC_Whe9GWDb z+$Y>v`>zQ{_e?-D>@tR9%XvM`!8GYDa$fIa<(tptpEtw%j4;^U zxv~w-mvv`;f{vPTG)9^JZNrD*0-iWQ2!?DTcRcFTcRcF8)>2QH14xia_$D} zlC1klykw3@v}7(xv}DdnwB$TPq9yB5q9x}U5-mB;Kw4;AtqY8+0i$6X3R}^)7Q(q< z9#=IouIj=2USu5b`{jwl*3-C>@se;ft`d&MmCPHbNjyIPtT`%;@oAB9RR-hWmsTR* zd@g@nA&%oEDNExe)NeZX?lVblpX>309-(m+>bKCC4E1GbJnQ~N-yb^GLStjw9WkQ2 z#P?qcT+9IX|H%H!mh+BE??WXa0QS=N`ec7Lo`vsm8s>iS|3 z2JX=Hn4X>$T5Y|0rhWTSQ&l}PtXrh&kyTwYRh4x!vu1iO3tBK<+gO5&B^yg1WLC&B z7C%;&q3t`EUWn>o1k};N_vi~52guio6oXp6m?CKY~TCci(bf5U*#EEyr ziHH-C2zwYzyuV~)UkIWQ^4_$ur_mQE@LM)^7$$p*vG?6JX7)06ER53jN0>zSE$n&g z46pU!jW-M1q+4JZPxnQ?{ufAM{l%j#_)X?0q|Gl<--bJ9{UQ1{YFX)W#V&n`kUp0Xcya5 z_HTn<%UTF&yl6Vf-b zI+wTorOx#%I+G{5z>l&t+$&UFz`X76^6B>CA1I&E8C<@S)mdG>Ur`40Uv-QB z$mK$yE@s6@Jyko41#T(egR=@$Q@rn?IN z!sM;!u0oN#qPq%3d_`q1<+whEZMv(VdV9X?&%disG=CJ8ebG36e%a@3*2m8sOb_|99;yd^=se`VT+?$cyzD_Qq^ zx8c)&=ka}yGMN9mpR>Szj_g0mTFvDv+Rr(sFPyud^KTHRuI(?oucGHJ|JDk7)xDs9 zXNA4$UJ%*PXqrC=8-GOS{d5KPziEBQ`P)AR_RPWPoX*B>vIkXk7vQ}8ra%8?{(eBw zU4Wwd2KHNoy0=7pw9ogyoI40t*>9pU(>iK@2f6Iu=h^W&y3~uGOtSOBH_vQ)8sU@i z``f=yZ0K!FZEO_Vw5LV!YWhBQYZrOv_RLV))i?T?;di3l|I|-X>!n}uU4?Ih&qs0= zVt6yD_OMs4l)W*+c1_sJ_K&^W{&Cwsj6KpfZ~xfm{&9B6{$Zb|d>)|==HBnc-L{iH7xtqo{S5Z}*yFZ92E zgnMGLy8W827wD8o%l@kCg&(lOUUj`dsnvKd zyT-YR-cIoqo&Uax1tERAO3!+Wbb0%GF{+PKh^y${_Sp1Gw{|jxefrPZW{2wNrel+B zTcP!4k4+TEk=b*|zwstqzhe4+=b3-FhwpFEZ`1x{&+t*`O?)Khmp?5Q$rthcd#vfG z{cYmIRp}YYq+OXjA0gQf}I z8AkI;tL`IwNRZJF+C<`~d_+@PZem}O#UVPPxn2axXJbg2h%0)5a z*kp(DokrfR9m=g83bmC1zZ#G4se{hXTlwBL;8)}Ejr9xp#O{G~{LS)cRL5QO3;E>0 zmevBB=Q$v+uTh)&@k0Gn_`c7K zryqnJij3Xs=~G*iy#6eFB~9N`%8C50YKJ0uT#t8?9m?_TJhORxk#2PRW~SMT(zf|$ zJ&yhH_=|L4hj&-nlJ1@eB>m3K}) zzH~{xpIGA)GntS7EUk6vCwts3UyhT zR@kfV5B;GP_Jg#$`ON!TA7Xd&&#^&Pcd)PHfZ&S`_BHVRn1lTf@cp8L{Ryyt>0o5r z^T!TGwmmj>lQV)MTb!cvfFc_pRKwbPpqG8`f#cZny#Gc+vqyWIAM(z#_t9^%DqoRJ zQIY)+Np4}k_@8hbw9iT-T=orBJ^vu=Q*YwFkd+p~JYc_PVV8ZIRQm^s(7x6CB)RP0 z=h@-f9?`CG{`dYD?e}S9WheR2w-Xez->gxLWa)bfiV2^*W1|@H>3a%_*>Bq@Mtu67 zf{p1L5H_aoDcG34-C<+;c86m28$F6`8p9|}TFyUv$#VX46e#zTw{7&@3XPXo^z8{7 z(|0CpOy87H%zm3xvCHP;{qM*n4vyRRBd84Mr}lO1FnwCvpN(nzvoURdHm2=QF}wXK zM*p>K*qF8r8`HL7W7;+pv)hJZ^#A|IcWd4EBPbv4dz(dXO8hhM{fKu=?B*wZP;JY) zjLKL?@5uerpH!PMnSYP>agW);p0{KN{%ba7&L4lv##(2?Q^@`u8#@dc{ogjWJ6+Hb z+#lOmZ5q=X6>t2lEG^Hwr_(W%%#Ybv>ugEM`J|0?!laK+A-rW_mmLqjc5C}~Yx`!# zx^HCLx1xUjRrIwV^PZVLPXDBz*I+|RZ|&Os{0D%2-of;3T$@kd(6uprYuCm;i!q{| z%9C;9HL#w8>3f@YSbgKy#`G;<8`F1$6?@)(!7tCe=fv?g;{AsX_7<>Tb+B&-_B99l zHIz$+edyBfc7LKkA1cyMZ{NR{dFED+z&Z$R?I7)~QZBmI5Lhr>SJ;@YA#6<73yKxZ zc}3&K2?Bi1yDP!?uZ$b2Z>0V0c(Hs@D|!FZ=`%l!e)K06_MG|3-Wy-mF-OLOCHOw> zV5-05;;5Ir&p3P&g#CUC<2dkc=(dFw<+rF0*62cc?)Q0ixogA^=Xl5=<)XTyt~JO< z=L#Fs_mvg%{a)*!Ep@IKh1GVT*k$wat#r`n{Ct19phvcT2X>o3V(d45!h96rFCqe^ z)qX?xNQmrx(Hj%=%lHQD&iKRzgI4+U`+G*V+LgL|?mAoTN;5u*cb)HiyHeZsXmmx} zBO0c44SQ>g?b;r_h0<}cuP}x`H@0{DF38Zb*LssSPtxUAWK&tGW3LbG`Aeof|BPvK z{~dvq*7huXBum;A**wrs`G}@C>^H!4pE?UGZTu6&jNezCHtzDR+gOh|+%IsNiIlXg z^PS(uzXzeTtggD}i)kedd(}N(O0CBGLD)_g?SWDne(nwEveup;VOOz8TTe9Cb&l{n?i8(JnpJjQYv0Tau-&iVm*Q(p=>>WOoQu%TIH@{QG{}1QBy!8GT z=fOMmA1WKgS;=BvE=tm-~JND5~X!45k5+-^k1;>FXJ1qJL8ja<3on; z51ets<@>nd(|FY)Z++Y#ZaS~X!oES@HEKd_^8T;YkBZ)ee%fhq?f#*~ zS5&5d_X_<;%Zk!P`-$HyZ|zb)()xAtc2PfS^nR$_l0e?y=Ku3MG|qnue|_3`K*vnN z)pCgkMtf)n!Y46)43+s_iWPrTilqD?lxZseKmAjY`MW*OyE_a=f!~Vyaj-k<$ESBg z1L2XwAbJ^=Ga%@X@+`;or>XDLXqp6dd}uVz^N8M=vJJONJJZw^3(p4laUIDax#bp(+09gsETZ>rTTE^;53)ukcrEGg>F=v=t&QUloC}~CQvQ9C( zv=ubvtjQ20}5qzkRe(N8KU)&A!$vd z(0X0uy|gxL)UA&=K?j~B{Q*AjcsH3Z`GVu!RY4sIX4jBG?D`SN)Q&g`>P9@Wnh|$e zFXA+{k~*?F5y-9)Mbi2ZKx;!>R$T~?)r7jW9@MS1pzgE|46t4UwuhE~hB>8QYc`G! zxA>dTOqPV)?;JFCAEtDt-Am~wwf#q44GbXmz1m?Go=6kkAFd*Qc-mhq0^E7^lj-n< zKMYrk1QSthI9$zFvp&X1uQnR>!ri^yBd>--n{d+LhqPBwVBD<*HH%S0B*g~Z!=}WP z&SYw5)3}B~^kv}HYsZw8Qc7@w4O&*TY@-?7+ZP&Re+P0O;`#0RY`S=H+^u(U__K<= zdYGKH+FM7ft%5F)P_dEtp7UB zW4Kd-i8IGGo6e_+!#3|H4%f1@Gdw#x%LfHGu5LfSx8=a{N_8HLlTkmKtYK(*YuGeg zgJ#o#i&6j0W2?9yB{no)_T%{pQn_2*{_9BPbTP~dD2|3FNz@;qRzoy{lQ==>)$&BT zBQv(6a1!qFu<^;kbQp!h)9LbLzMS<3LzMf=%H8TVoD@yFw9}~GE8pEaY)~Xu z4*TrcGYMPkboN>uAML8wIokIcjdlq%w-wOklx{Yfn7j8DkNS%dMzMyt(O5Eo+H9*$ zUcEEYk)REDjRO)VT}EgTeL#{G&SE(*>UP5rhM7h#u8!@$#w_SZ9klpHIG-bj%~jN=no@V`EEuj5v;hUULpPFW){DkeFkWL7 zMZqF5;ms$74zW&<4+I^(<2AXOo(IDuK50!R=x(LAA3i#1)$9Iv8qHtzqrj^5y~S|0 z8U-g1xI}}9(9*6a06jg3ro$e3Y?Cy->&n4Eak7f3V_YvCCOn4B2RE02S_&687BdQX z^0;Y^a`Vkig`M_iH_jJi_{%AVjO$B^2REy13Gd&iXsE?tFnP1d)%0dF!Xy|`vhrew zS8R~l5KZmhEVw@lhnKFg{&IQu*-0F(qG53Is2`1}&tvGOPh(%Qsy2!6X()M8s`wbd z{Qe+(c`c!-?s>U_$t5Tad%0ea3rp(kHKL?o*NBbu-fP50!LAn@md$h0G%hoE=E?<8 z8m0Vt={13`5i=|H*NAjAcy*nOQpZkpxhoeFg|>GlknV$8z43@AeUO;+McoiuwB%+N zuwfxm6o+Q_Y3-es!bBUq*Yew)R=0K7^O|{uze(C}!)X6a)bs&%kBr(bzFASn;_l1m^ntd78RQbM`IjzPES)r(l zQhp()>f0AElA^tw57ClHML6M2w-aj{Z|Ge|Kqp;(UoX77Jin?Ge!=6!ETyj-nAhFc z4a|%5>jst;{iQjoa&B=E2wCzbLIl1>74+t`!7Zt{mz`6&ErhsV0<2I(J7U)~_}cscK5 z`5yBgz;&9A*>;Pso&9v*?s}bWd?uTG*9$#C)n7a1vzr9QrrQmozF~LOtjO!;VSW$N#yf&GnbU`lWP%huSm=s{3)${S2KL$=!`SW^u5QP#`IJ6y zFC}40XS?u;$4PQ(Bgn0Bc7kQlPiQBa0kiwfbTbnxq>42zORPauY}0qd_J_kDj#(<+ zv*Z7hSvbHKr#;zVpH1Hjy02sOJ#W9(t8uPD)Rkx`(Nv-(M61c#zPI0MO406ziwUm+ zJklEcCZu`zY$%`ndIup+0!p3LVnNlxuClrggJ6V<8(0^-#EKz1H&Dzw3|>hThgefc ztVetfz$sx;Du+p_o}+F<>ltM4_)wC4^aKs&_|P<)Bb@Y>ShMunI2qY}D3#sbYo&w; z1|nkHd!|8vP%qOU+6T2}vm=Y9_5mWdNa+ymgXYn3uk^?>#J(ZQij)a4>n;!)>forE zff5%k3$VqC8d*nvNCir@SF998Y-{Tn# zpxh1<58Fl5ruUA##|?iTV;MTffm5eZZcgbVtHA=B?r^by&{bsbcA4Le-K>9Wr21jFfaiVb{FbL_taBmdEKa_VDn%aHx>l>%WBJng>-R!jK4y9(lj z_Sc!7MmQ_OQNk)(;H`&M;B{NaaezLLEpvR8C}ecP3ak3(5N+}#}M2yj01@gR9X%>sP8dKgz}axY1H^x z8WSl8P?kn$Dy^*2m{49z7|BxD4wyxbR2+AOrT0#|*AbFzc665EcAR!Ec2RQ`f~F*# zeOl8eTXNSA#Uv1nS__==VI!M+wb$E1 zCOCz?^xUmidYFP#IO1K&sLZ>Xf{p!mQW^=9sf>~+Lm*Ky1QI0`O_U6QJ*#ubhg~Jk zXDC&v8b$>~W2fCMuZNLm#3REobuIQh*6v29bO!0i0SZ3yj$3;Y8wkUV<7Q!MwM!W# z^?M9V;wDPwAEK&hhMwLhN=9WL`N2B?HOvzCAVboLTaz zR&j2Q^90%H%Wv@!JcBX70u5@9tOCY;49!66t9UQ&u42r-BMcQl8ui9$Fnn>8oCY|A zd{>}W6oru-uA=OS$(*k;-9_L|5U=JevVk-F5t?Z;9_B)rSR^=&SJYl}px-^(_3bdt zM(ZVpK^y90PMKlCp@=D+IFm7hUJ4<48&VSoSg0;Tn65D&4oh3@+6;Ov9hjoge!($_p@?0i;GE6Y z04onxoW{%q`=OH(#a!%FcD$&ML%Y_UZ4Niuh2{?X6;yaGsu30)`38tq0Zd}bv!bvY z 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

KD94V-x%MM9+u9>~ta*_?1BE28@F9#2yl zIF}c+Qkh;OYlJeJ2OL-@9?m{&%Mg!b9kKOAO?tqAqlHSyiz?fpkD?@x*wtGOId~9q zuzV0F983;_jGXB{SK$#O5ONA3^=gPuoa#PbaUwI~&^zupYN;|$lLs7S6!p9l`EX@v zs-4J(A|>lYXSNe5yRuw1UT{Npo#K>jc7%UG}Zk)af0-ki+ICr zIu;x1)l0|r`~k`DHvMk>1GVaSmFn*Ms@5&^=E0?Iw9s17J&g7BS~K-|o$!$>Cts1r zn(FUdmnx`F*P3h1-{PwmUUTI@Y6WF5C+tF9me_XfDZTKWZN%GQzuu&c=;!4l!oAvv@qp$D<+c}vgEoVZ zDvdB*wEk*#6kJUEHO(np?Ej+hYZAt>vhoWNun%6)Knm`3T_`(zK`VTL?~w}zPA81W z?oo}hEz|KMOsA~%h<_@rKJ6knRYPMGVxK|WVEg*ef`@HKz?C#Y1?|sVI*eXpEW=C* zk(!8D%*%&PqKhuErE!k|*V4MV>R(72yb#k{x=9($$6W@?gh_ z%m>T$e3|96g=AKZMY7Cx`ZoXc@Jwc(gnh_z*m6YG5loIZomwH?Io)>y)inq>~4+8ZmG+Xs;Mo8uFBmF_ULf;ireggq_)u@`&A|o1lT1v|c?QgPx*{&XT^f z+}kTbqypa*(yqzM3gJ+W9?(Nk?^a2lc^M*yl0ETfrA`E`QC+HAF

    YiSd2dLvpGq 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πQ7j}ziB>-@JA4V(rUjUd?Z8m zzVsd3jIYlTWPDVYuh{iX~@vL*K(6OPtxUAWK;S2Hum*khy1pw&%bEu+;1bW(psN| zk7P-`qPsElQ$C_84*Lx--KWmNN*(_cG2{17ojUIFt=d?RINS%UGm)apD&P5a{PPH< zd3D)6Ukod0*vszulC~P}hhaNivc~^M8ghFF&4TX`{Ye@(SNrD!4=0>9%(d?n|!xCH^CauF9cf;X zUbLV1qtuSHeBHFYtR2<6Kiz6dAn&j8|Jg0-=Rd+3Q3w1W!pouIm6t1j>1_%PAh8Xb&A=!t)R(obr$5fdS!X8 zNSf;kn0&XKS!QX^tvLxhQd%wPO zKc(BPZc0C@?LF{nU;we_)ef@oM4IsaU>W&?)82d@;LfX`Oa@Q=LAabJ7>H_v!E&~o z_RvRqwc)TE?(FUydNmx{gyT9tq`iy+<8IEWS`6zVDK_XXHYFx>CR00`#5HuH&jN3| zc0@@jr35Q%(6XXs8_nqMp3vy~+mL%7&u?!}C-bLAo$U?|f0nVg9VVyE*2dv7IXXN( zh&z~>ZZDH0oVS+oX)yHaUq0Ed*GpR`rzeBt#Ui+UYD2?d+Itb_G2AJ^z?oy4PG*zD zVVm_5hig&V8l0V-<%0qoRX3m9*>GTar8*DB$*>oVS1{DP6>Ji&K+{Rz#i;$}v1Qzg z5*wN=dhzT8TJBUgzX~lU^FfwDaWptdqTUdt8loDU#0f$#7bnsjnXwgxYmXY39|vOzE9$$ z$p|f?_erwCSuFczx?MMfVJ1|_?*0)1KJe;>uu*6)s8n@w?1Gt5B82x*J0+#bZDaed zJ`H+N8#TTj&SpqqV;S|Rq}1I!3kJ&sbwB}b(DfvmcB2txj8|VqQ7}(Tc=Ji21FRF| z13`yxcnvP5C&3_zPnzQ~np^3M_aB@zx3~S#B$_?%MS)f7yYsXYy);i|N%ygh4POwen&Im#mOl5l!h|FStJq z2Ny1}-ePh4@ktymqd{=;pcf6P&7YF-fjA=cC*tw=z5L(gug+v-@2LoH&D|1*gZ1ScImft+Aq_JbbitN@(IuCxV!%1 zG&#Y%_lqM;1B2&b^b}L=)#3Z4L3G;vQpRkWeG%4l^8Iq=v>0E?iix^R%3sQ<^X-=~ z(nNbP8=xl96ybz7-A=4+yn%NW0qu18eYNoJ^8B(=_yvy>vy{GSU|x4$H83yIuNqiZ z^cM6km>-)9t15Bc5jdhjCVb#$aJl$#C#)9oi0(!KD zy=vh8bpj81aZ)K?Lv<3c)54zgRn;F*;Un{}93JbYYv@0mJiA8d(PGxa@;&A~fU8s; zv+WjNIr-_n-PIc1=u9^Gt`>TXqQA1{)9VDrrrR~5zGidPtNG3>`2Mb-Xa3Nc5Nx*KaZ5Uf^!_{f~HJ|ju>8X-1rL$f5 z#N#+QwGpJ&INQM@=q0oh&4AhcX1bAy6;j0-mnGI9Dz@P}Vta!@5XUSP@7eMH@igq? zi_@NLuumsn3py`iv^{UH)~#`>L2N5gSE8XrQ;24RXZzk>vmsf#7tY7L3h-#w;5Q)6 z!)HVJZS9&0 z0Ybe@g=p>98jZFrnp*pa+#;nxwDuc^N8Qo`&k%ctC@WGX#H_nOXsG?eMhX(GIBg1R zBt#qhux-k*1xgB%C@D#zq$r7!OlciSlEA6X6N*mQ@BZ4`X1>}^#Q8#LXTlrED}h)l8?x`88I zX6o9q=g+pW3RZtfhWF*o;XtyZ()KiIwhz(outiD0V&LYd_BFCv`iV z#p$xnYX^hLVuB5PP&4em1VjJ9WPIwQbIXvu@VNqE5*+uQ2FnF}-&zK7Li_7XPa>R^ z;V5Al&GFX5GVnUhqc}jD$8o~LWkA4A+uyDoywPlISaivzZI80$QL*T%Mc=XLO^d#3 z(OVXMkLja>RE-YC#)h0Sh{btx@{rJW=BUEuE%NfVi#3cA!ta#*{3yp!qu8k zRog+u7DfW7!db|2(R!MAoe;xQI2p=Npe||J9Sj1&usO#mA2zbNReRkHB!V^Ursrq%n|QOMrGdB6s+&Pki&} z%1*mmUKc&jkb8zBYFg}hq|J>^=?v0~17v*U9W{3)HV}pz$IZgjY?U%f%J&GE#7&fp zKSWj25O-2aiIhKOPq|a(O=Z5T#Fi5GgxG2C%eZm`N;;CGJ$q>8F|*`Tsp8xm=LxdY zm*3(ecnV{HIV#jHSp|%G=$e6UFXP>~vy3tN4$)Nrsc+X$gTd3o>A)13Hx}J9Tr$-0p;k#J z$rL-Y8h{Q)rvVzP@xVc>o=!`C$>D5zLT!WX^n5xCjO<%3>|{&$>?j+oI6w^|yau8A zx3IqxBwPj93-gfeC7#`0{FGx5LlHYm!8x6-09G2TIE|SJ z_Cv=din-XU?08Wd$Lv~nwmIBz2Qzorub{wlQ4O)^$X7tr3Sbgbo)wv0AB}BH+5<)3 zje7GK`FuDJvWzOIy#98hOZzS~MOvXpzL-!m+<6>lxn5HS=a?U)S@?PtXg%PyoX` z^z(T%gMxMc;IO+}Z+dEI;nR0}YJ2|nZWr?+&)>s))bMMN-MHU6Ok1DN$CUqC{1RJ4$RSaTf$_kFp#lNDdPuhY6Ci)7sgq-S1=+ z=LYZvwZIEMEOvdv(4p#yxmlv+=1Ob1IReW~9h;xJtDAZGRcW}EKZl=;M4gQd4xTw# z+sw)BQk`WJ9(Wq z^S+yoZ(irSd7ba(b-tSybvG~SZeG+@Ues1T>{dSPRzB>#eAs(=HSXm_-OG!*mlIXl z$cd_Kttoy! zNd~6@CKIN=kigGRVIidnU~O{@sz7v8aA@!##P>O z8lD@}cl(o{r-w#4%w zqOhd`k0pv*D)5k^xTOM*EQ(ty@BpK@rGh1rhaAJgbzNyoO|El_Q{F3Wslelq;+6^( zD;Ky2H$0XYo{TAMJ}Yji zz~h7BR$btMLUAh>xWyUVV&{QXVJjE7YAbH#!ltEyl~^kxO6sELmv~ae1c_yWlEnlG zWP+qILAk;N>Ba;}XM$uip^|xKMF{uZOsHh;z8O);+=DZslDQLSL?v@SP6)RQCRAr` z6O5?N+!`2Bow*$_qB?U6U_^E13Qq{vb|zG3uIG%X&fLEdZp~BdRm6Xc$qQc}c^F>db2zLU@M6gy>B6g4kj7DMGnx#)FC>EtFe? z!ZuEF6elH>rW{b3R8^YtL1|K0Y03?yNo_-0;<@Q4Y^lHvNO4OAZbph*DsW>mxW#TM zY%yEvTH0F5lCId1M6*+Z1TjKlm>?lckO(G7023OV6GsS7@tB~b6H(!%2vfWQ7D`1` zco8g^3afBUVvMKLLZ$L};vtyoQQ?_1V_a8+qD&Sl4a;+C!8Dx}o>&W}DXsAATCg+@ zo?;VL<(^w8jibsdV!<>ktGp-{Ow(KCWw2nH-YVBl#<;^4N_DQLMN{Rej`(WfRC!4( zSQ~RnsD>a@7;xRA;Vsf~8V;zRMW*(n6&v=c$BXX^ObdWsKK@xcZ45 zA9TgcU>w|gst?bMQwNuWVdJHn`bfDLAKs=&eJs&sDIj4h^IFKTm8F=}#||TfV0@$; z)WMmf4z4%q;9^jRrFEIdP>oc|L)q*|r7VmOuZJ{@l!N-%@$lH0vf0w4bW9jtwJRG> z15*bVtg_hx?6gS{8ZNsO%RK2*VLWoC4m%5Yyi}h%wrJjOOMPqwcuZ3t9?pz|M|`Du z$We!t7}Ifx&K2o9)WOZkIII}$RN4V}=rU1Aha+Km0Q(xYZfUX|MlU>nFu{hoPsU3A zFcg=E?w_wYrUd)LD#u^W>2_ToJMOzM3Gn)KLbww~F!}^-j*r+>Ue3__bgZ(Co11bNA7SxtHJPuJm{RLjytE!MGhECB;g>Os%K}}SO0jhi{rO5_{4lS&g+|F4X=;W zx{+uF10Feo=)g{B!|NX`XF25%QLBds5?+WZdIUxfESLiVA_trvuRp-4Fdt?0@qBCa z!l%zU#QrqE6RotTZm5}&A|m+$u0O!>MqfzeC{BkcXg4JD1w+z#Ad~(8$8F^8!;C?Q zB=lqQ#v=^=5c%jwXBnLcjZ*XzGGQR5IgAx>;zne22DRo)Ceet>6S0#=VmxqGh=~V; z2=T(h@*Ov!=?W4>>f;-l6sLj7%*}re8Ib@uz{Jf+4gwNe=hK1Znn7ohMqaFiI$$y9 z4d}`y&R_$aL-4KZ*g!awnDux%q~Px!G7P%&L8 z_h)2v7JEaAo-`ucv*B_!dx5wHy+uqH)M4i`m<|0Xh!^1;Ctt(o4Or$-%F=sB8RcVV z#&XfYZp!6j4r;lUspm2oc&G?+4y=SfU((ixXOc-4eoB%tAIbwe##D>FKYP7O}zOs8diPHdBe%mAIqCrV@9R*iz!2H{PQ+0VGe2qr=;P`#AZ|0c;zWLtyVYodod; z_M$~E=Ac1~aFN%Ac{Q$h=b&gZ9>Z!5jAY5eMqy)Q_F{=+>&P3!lCBL)K{{S$ni>WX zooSftcTy4x095%PWz-^YhBA^zA>d*QBR2dAMj(L4W5#*+A*|)o^a3c`oR!G*3i@slpT$%<0Dg4DTT^uunMR+XxCdX zL?l}&cB=i7H}jJ#zjWV&wJ>XECzNPZ_a^66fPR*rUzV1 zK4beKqM(|M{^&HE4q=rF@$I@lM>jxr(&EB%NH9Ih+^~T}-=^-z+`A(f6V$b&H1#d) z7)V1loYVmDepEyHO)i&V_ICTTk*TIYU0)s%+%U$3f`nl#q=82XQB6QH z1cwJ(78%VQr*PX0xiG10;V@D;@i|1|L5;y6!0*wFF;3HaR&24EI%d5y#BY3%yO{$I zBcSAwJq`p@NVKjPRu>$fCxdU=w*=HLvhB46l|7yikddVlJ|>&qWWP6G!d{BZOd@ZB zY20uL+t&$d=A<{pER4pE$uPx-k1(*{tra}EL60V|DZrE3L70%4022by6DN2(A1_*Y zPlyJGcszhbo>05xol1Ed59#wmd~DW$C-`f_C(AhTK<)Q%K;hvf?KWz`uz|5Pb?kzn z^_1V-7re~}FJjTK;XNTMgSdwt(=cO3VTiu-yTUFta5tmcEg;J))FJ!Vz&k)JF0)6TtT=1&Eo}M00 z&{5J9m0uzBd(-E5=*c*E9JOgIGlh-&CG^U)=nw=Gb267z2O^WJ4F1FYlc;oF-o_2_9K34i3Mg9 zhRJPUi4RNgn6^TYJAR0RjUi8(Nf(3(%x*1;ix<4-+D+ID_PQ5X}80 zJvWC=J24AaAEGd#0~>k?G#HR^HgX7~{TPc@loxN#RLcFThers8N4!+uuIg-D?y*|L9K?)!QYvLkml9-CH0(dzbMz z7MON$eflnAHjm$B0KMm7$xc_ZHke+ewHWn&tOdz4c$w%$$dBjRlJqIOjA>coOZk?V gWl5gHvw1l0bAp`5F6{8^MT<)}fG%$3F;2+;ztiW$7XSbN diff --git a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.hex b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.hex index 98fc54a..d6a6336 100644 --- a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.hex +++ b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.hex @@ -1,10 +1,10 @@ :020000040000FA -:0610000068EF4CF0120045 +:061000004FEF4CF012005E :0610080028EF08F01200C1 :0610180036EF22F0120089 -:06102A00030084990000A0 -:10103000E70400000900000082990000FA050000A2 -:101040000200000004990000800200007E00000001 +:06102A00030052990000D2 +:10103000E70400000900000050990000FA050000D4 +:1010400002000000D2980000800200007E00000034 :10105000DACFE4FFE9CFE4FFEACFE4FFF3CFE4FF28 :10106000F4CFE4FFE652F294D6CFC4F18A0E010128 :10107000C425D66E09B28C820080050E855D3FE1E5 @@ -161,8 +161,8 @@ :1019E000856B0101866B0101876B886B896B8A6B44 :1019F0000101AD6BAE6B0101AC6B0101AF6B01017D :101A0000B06BB16B0690096A92809F9C010EE66EE6 -:101A1000E66A26EC2EF0E552E552010EE66E0B0E5C -:101A2000E66E26EC2EF0E552E5528D8496948D827A +:101A1000E66A13EC2EF0E552E552010EE66E0B0E6F +:101A2000E66E13EC2EF0E552E5528D8496948D828D :101A30009692898C929C8D8096908B8294928C9CAD :101A4000959C8C9E959E8C9895988C9A959A949E30 :101A5000828E000000000000000000000000000076 @@ -295,15 +295,15 @@ :10224000EBC14EF1ECC14FF1EDC144F1EEC145F1EE :10225000EFC146F1F0C147F1FE0EDB5003E0010192 :10226000070E02D00101060E296F09AA5AD0F4EC1C -:1022700021F01BEC20F077EC21F07C0E4E6E8B0EE3 +:1022700021F01BEC20F077EC21F04C0E4E6E8B0E13 :1022800059EC1CF048C1E6FF49C1E6FF4AC1E6FF30 -:102290004BC1E6FF1BEC20F0770E4E6E8B0E59EC17 +:102290004BC1E6FF1BEC20F0470E4E6E8B0E59EC47 :1022A0001CF040C1E6FF41C1E6FF42C1E6FF43C169 :1022B000E6FF1BEC20F0FBEC21F01BEC20F086ECA1 -:1022C00021F0680E4E6E8B0E59EC1CF04CC1E6FFEF +:1022C00021F0380E4E6E8B0E59EC1CF04CC1E6FF1F :1022D0004DC1E6FF4EC1E6FF4FC1E6FF1BEC20F00B -:1022E000630E4E6E8B0E59EC1CF044C1E6FF45C1E7 -:1022F000E6FF46C1E6FF47C1E6FF1BEC20F05E0E9D +:1022E000330E4E6E8B0E59EC1CF044C1E6FF45C117 +:1022F000E6FF46C1E6FF47C1E6FF1BEC20F02E0ECD :102300004E6E8B0E59EC1CF02FC14EF04F6A506A86 :10231000516A2FC1E6FFA2EC21F01BEC20F056EC35 :102320001DF009BC0AD013500F5CFDE20EB005D0C1 @@ -337,14 +337,14 @@ :1024E00042F0100EDBCF43F0110EDFEC1EF002E6DF :1024F000FEEC1DF008E3D9500E0F38EC1EF002E69A :102500001AEC1EF002E20401848D0401845144E1BE -:102510000EB042D009AA39D0580E4E6E8B0E59EC2F -:102520001CF0DECF4EF0DDCF4FF00EEC1DF04F0E65 +:102510000EB042D009AA39D0280E4E6E8B0E59EC5F +:102520001CF0DECF4EF0DDCF4FF00EEC1DF01F0E95 :102530004E6E8B0E59EC1CF0D950020F45EC21F079 -:10254000460E4E6E8B0E59EC1CF0D950060F45EC22 -:1025500021F03B0E4E6E8B0E59EC1CF0D9500A0F39 -:1025600045EC21F0300E4E6E8B0E59EC1CF0D9501C -:102570000E0F45EC21F0240E4E6E8B0E59EC1CF024 -:10258000120EACEC20F056EC1DF0020E4E6E8B0ECF +:10254000160E4E6E8B0E59EC1CF0D950060F45EC52 +:1025500021F00B0E4E6E8B0E59EC1CF0D9500A0F69 +:1025600045EC21F0000E4E6E8B0E59EC1CF0D9504C +:102570000E0F45EC21F0F40E4E6E8A0E59EC1CF055 +:10258000120EACEC20F056EC1DF0D20E4E6E8A0E00 :1025900039EC21F049EC1DF0250EE15C02E2E16A24 :1025A000E55247EF1DF016EC21F0010EDF6E12EC44 :1025B00020F0010EE66ED90EE66E010EC1EC21F0A0 @@ -362,12 +362,12 @@ :10267000E86FC3EC1FF014D849EC1DF040EF1EF0DA :1026800012EC20F0E66AD50EE66E010E05EC20F0A5 :10269000E50EE66E010EFEEC1FF002D849EF1DF0CC -:1026A000FBEC20F009AA1BD0FC0E4E6E8A0E59ECF2 +:1026A000FBEC20F009AA1BD0CC0E4E6E8A0E59EC22 :1026B0001CF0C9C1E6FFCAC1E6FFCBC1E6FFCCC131 -:1026C000E6FF1EEC1DF0810E4E6E8B0E59EC1CF0D9 -:1026D0006BEC1EF06D0E4E6E8B0E95EC21F00EB075 +:1026C000E6FF1EEC1DF0510E4E6E8B0E59EC1CF009 +:1026D0006BEC1EF03D0E4E6E8B0E95EC21F00EB0A5 :1026E000A3D0D880A80E010174EC1FF003E3DAEC4C -:1026F0001EF006E1DC0E4E6E8A0E39EC21F094D00D +:1026F0001EF006E1AC0E4E6E8A0E39EC21F094D03D :10270000D0EC1EF004E1D5EC1EF001E18DD0CDC17E :102710002FF120EC1FF002E18D908B920101800ED1 :10272000D81502E0B4EC1EF0800EE81502E0BCEC17 @@ -393,9 +393,9 @@ :10286000D86FC8EC1FF0EE50D95DE56FEE50DA5925 :10287000E66FEE50DB59E76FEE50DC59E86F02D897 :1028800049EF1DF0FBEC20F00EB000D109AA1BD0DF -:10289000D20E4E6E8A0E59EC1CF0C5C1E6FFC6C1C1 -:1028A000E6FFC7C1E6FFC8C1E6FF1EEC1DF0CC0E77 -:1028B0004E6E8A0E59EC1CF06BEC1EF0C60E4E6E7E +:10289000A20E4E6E8A0E59EC1CF0C5C1E6FFC6C1F1 +:1028A000E6FFC7C1E6FFC8C1E6FF1EEC1DF09C0EA7 +:1028B0004E6E8A0E59EC1CF06BEC1EF0960E4E6EAE :1028C0008A0E95EC21F00101C25110E0C551C611EC :1028D000C711C81102E10401848DEBEC1EF002E285 :1028E0000401848D0401845101E0D0D0CDC12FF1C9 @@ -404,22 +404,22 @@ :10291000C759000EC85907E3A00EC56F860EC66FD3 :10292000010EC76FC86BC5C12BF1C6C12CF1C7C161 :102930002DF1C8C12EF1190E456E466A476A486AE4 -:102940003BEC1FF08AEC4BF03CC02BF13DC02CF16E +:102940003BEC1FF071EC4BF03CC02BF13DC02CF187 :102950003EC02DF13FC02EF18DD020EC1FF002E1E2 :102960008D908B920101800ED81502E0B4EC1EF020 :10297000800EE81502E0BCEC1EF00A0E4E6ED70E7B :102980004F6EA30E506E4C0E516E3BEC1FF034ECAC -:1029900020F020EC41F0B1EC20F00101D0EC1EF071 +:1029900020F008EC41F0B1EC20F00101D0EC1EF089 :1029A00027E092EC20F05DEC1DF00BE2C25104E058 -:1029B000A20E4E6E8A0E3FD0C96BCA6BCB6B800ED7 -:1029C000CC6FDAEC1EF00BE1C25104E07E0E4E6ECD +:1029B000720E4E6E8A0E3FD0C96BCA6BCB6B800E07 +:1029C000CC6FDAEC1EF00BE1C25104E04E0E4E6EFD :1029D0008A0E31D0010EC96FCA6BCB6BCC6BC9C1EB :1029E00030F1CAC131F1CBC132F1CCC133F105D0E4 :1029F0000101306B316B326B336B0FEC21F0010155 :102A0000D5EC1EF029E089EC20F05DEC1DF00BE226 -:102A1000C25104E05A0E4E6E8A0E0DD0C96BCA6BBD +:102A1000C25104E02A0E4E6E8A0E0DD0C96BCA6BED :102A2000CB6B800ECC6FDAEC1EF00DE1C25106E0EC -:102A3000360E4E6E8A0E39EC21F028D0010EC96F89 +:102A3000060E4E6E8A0E39EC21F028D0010EC96FB9 :102A4000CA6BCB6BCC6BC9C134F1CAC135F1CBC1F8 :102A500036F1CCC137F105D00101346B356B366BE3 :102A6000376B90EC1EF00101A1EC1FF009AA02D017 @@ -516,7 +516,7 @@ :10301000DF6E0101B95103E0100EDF10DF6E07A073 :1030200003D0200EDF10DF6E0401945104E0400E47 :10303000DF10DF6E946B0EA003D0800EDF10DF6E0A -:10304000020EE66EDFCF4EF04F6A29EC20F0B7ECAF +:10304000020EE66EDFCF4EF04F6A29EC20F09FECC7 :1030500046F0526E050EE15E5250B1EC1EF007B024 :10306000079040EF1EF0F7EC20F0030EDB6A05EC52 :1030700022F063EC1FF068EC1FF0030F6FEC20F000 @@ -550,7 +550,7 @@ :10323000F3CF4EF0DF50080DF3504E104F10E55213 :10324000E7104E6E040EE15C02E2E16AE552E16EC7 :103250004E503DEF21F0F7EC20F0030EDB6AB3DFB8 -:1032600063EC1FF0010EE66EE66EEFEC29F0E5521E +:1032600063EC1FF0010EE66EE66EF1EC29F0E5521C :10327000E552040EDBA002D0E5EC1EF0040EDBA24A :1032800003D0010ED2EC1FF0040EDBA403D0DE52FB :10329000010EDD6E040EDBA602D0010EDF6EDFCF65 @@ -650,9 +650,9 @@ :10387000F6D803D0ADA2FED7A1D892D904E3ADA269 :10388000FED7EDD803D0ADA2FED798D8AE6E040E09 :10389000E15C02E2E16AE552FAD052EC20F0CFDBC3 -:1038A000080E1F0B1200E66E20EC33F0E552C7EF56 +:1038A000080E1F0B1200E66E11EC33F0E552C7EF65 :1038B00021F04F6E506A4EC0E6FFE66E50C0E6FF44 -:1038C0009AEC46F0C7EF21F0EDDBDFCF80F1010E7F +:1038C00082EC46F0C7EF21F0EDDBDFCF80F1010E97 :1038D000DBCF81F1020EDBCF82F1030EDBCF83F170 :1038E000010183390F0B73EF20F011502F0D4BEFB7 :1038F00020F01050F0EC21F029C1EEFF2AC1EEFFBC @@ -669,29 +669,29 @@ :1039A00053C1EEFF54C1EEFF55C1EEFF56C1EEFF0D :1039B00057C1EEFF102A1350105C1200410E010196 :1039C0008425F60F1200010EDB6A020EDB6A030E7D -:1039D000DB6A35DB080E1F0B120007EC41F0ABDB96 -:1039E0006EDB51C049F020EC41F0F8DBAC0E4E6EBE +:1039D000DB6A35DB080E1F0B1200EFEC40F0ABDBAF +:1039E0006EDB51C049F008EC41F0F8DBAC0E4E6ED6 :1039F000C50E4F6EA70E506E470E516E60DB496EBE -:103A000073EC41F0EBDB1BDB466A476A800E486EC5 -:103A10003F0EC4DB54EC42F0010A12001ADB1BEF2C -:103A200020F0E66AEFEC29F0E552E5521200D8905A -:103A30004E364F3650365136E8061200F1EC46F05D +:103A00005BEC41F0EBDB1BDB466A476A800E486EDD +:103A10003F0EC4DB3CEC42F0010A12001ADB1BEF44 +:103A200020F0E66AF1EC29F0E552E5521200D89058 +:103A30004E364F3650365136E8061200D9EC46F075 :103A4000E552C7EF21F0DACFEAFFEECFE6FFEECF87 :103A5000E6FFEECFE6FFEFCFE6FF1BEF20F0300EE4 -:103A600001018425120007EC41F065DBDBEC21F05D -:103A7000FBDA73EC41F0B1EF20F0EE20516EB5ECC3 +:103A6000010184251200EFEC40F065DBDBEC21F076 +:103A7000FBDA5BEC41F0B1EF20F0EE20516EB5ECDB :103A800021F0EBEC21F0D890EB50000A1200E16E2F :103A9000F4D3E66AF6D3D9CFE6FFE1CFD9FF12001F :103AA000CEDA4E504F10501051101200020EE66E3A -:103AB000E8D3E926000EEA22120007EC41F0000EDE +:103AB000E8D3E926000EEA221200EFEC40F0000EF7 :103AC000DFCF46F0010EDBCF47F0020EDBCF48F030 -:103AD000030EDBCF49F073EC41F014EC42F040C030 +:103AD000030EDBCF49F05BEC41F0FCEC41F040C061 :103AE000C9F141C0CAF142C0CBF143C0CCF1D8808A :103AF000000E01014054000E4154000E4254800E4D :103B000043541200E66E000EDA20E66E1200DBEC83 -:103B100021F005EC41F00FDBAC0E466EC50E476E92 -:103B2000A70E486E470E496E73EC41F014EF42F059 -:103B300086DA466A476A486A4F0E30DB4BEC42F041 +:103B100021F0EDEC40F00FDBAC0E466EC50E476EAB +:103B2000A70E486E470E496E5BEC41F0FCEF41F08A +:103B300086DA466A476A486A4F0E30DB33EC42F059 :103B4000010A1200EE52EE52EECF87F1EECF88F16D :103B5000EECF89F1EFCF8AF1120010502F0D4BEF0D :103B600020F00A50E96EEA6AD890E936EA36120087 @@ -725,11 +725,11 @@ :103D2000E5C13CF1E6C13DF1E7C13EF1E8C13FF13B :103D3000120030C1E6FF31C1E6FF32C1E6FF33C1F8 :103D4000E6FF120034C1E6FF35C1E6FF36C1E6FFEB -:103D500037C1E6FF1200456E466A476A486AE0EFDF +:103D500037C1E6FF1200456E466A476A486AC8EFF7 :103D600041F0010EE66E8DD2800E01012A112A6FFC :103D7000000E0101FFEF20F0200E01012A112A6F31 :103D8000000E010107EF21F0DECF41F0DECF42F05F -:103D9000DECF43F0DDCF44F0DD52DD5214EF42F0D0 +:103D9000DECF43F0DDCF44F0DD52DD52FCEF41F0E9 :103DA000D551D611D711D8111200E551E611E711FE :103DB000E8111200C951CA11CB11CC111200DBCF8E :103DC00044F04434000E44181200010EF36E030E4A @@ -752,7 +752,7 @@ :103ED000010EE66ED9501200046E96809482958C85 :103EE000958E9588958A1200C955610ECA55000EA7 :103EF000CB55000ECC5512004568466847684868A7 -:103F00008AEC4BF03C501200010EDB50EA6A580F6D +:103F000071EC4BF03C501200010EDB50EA6A580F86 :103F1000E96E010EEA22120086899807000E995B6D :103F20009A5B9B5B1200F36E010EF3CFDBFF020E78 :103F3000DB6A1200010EDBCFA2F0020EDBCFA3F092 @@ -771,10 +771,10 @@ :10400000CD0EE66E010E1AEF22F0E66E060E4BDCC8 :10401000E66A1200E9D912DD6AD9EDD90FDD76D949 :1040200056EF1DF094EC0CF013DAE66AC90EE66E5A -:10403000010E1AEF22F00DEC47F0E552A8D1CBD9D2 +:10403000010E1AEF22F0F5EC46F0E552A8D1CBD9EB :10404000EECF4EF0EECF4FF0EECF50F0EFCF51F07D :104050001200506A516A4EC0E6FFA2EF21F052DD15 -:10406000060E21DCE66A120005EC41F041C052F078 +:10406000060E21DCE66A1200EDEC40F041C052F091 :1040700042C053F043C054F044C055F041C046F034 :1040800042C047F043C048F044C049F084D19CD9B5 :10409000010E53EF1CF0FA51F324E96EFB51F420AA @@ -805,18 +805,18 @@ :104220000101486B496B4A6B4B6B120034DCE65260 :10423000120004DC0101120094DC890EE926000E54 :10424000EA2212008EDC790EE926000EEA22120024 -:104250009BEC3FF04E6E080EE15E4E50120081DC8A +:1042500083EC3FF04E6E080EE15E4E50120081DCA2 :10426000AFEF1FF0A1DCEE50ED101200D1DC49EFF2 :104270001DF059EC1CF056EF1DF0E552E7CFD9FFC9 -:1042800012000DEC2AF0E5521200E96E23EF1DF04A +:1042800012000FEC2AF0E5521200E96E23EF1DF048 :1042900075EC1CF0EFCF85F1D1D8060E0ADCEECF1D :1042A0008CF1EECF8DF1EECF8EF1EFCF8FF1C6D83E :1042B000060E59EC1DF0040E59EC1DF075EF1EF0C2 :1042C000B5DF94EC0CF0C4D8BDD8D50EE66E010E67 :1042D0009CDEC7D0DD0EE66E010E97DEE10EE66EC7 -:1042E000010E05EF20F0A2DF9DDEACD8BAD0810E22 +:1042E000010E05EF20F0A2DF9DDEACD8BAD0510E52 :1042F0004E6E8B0E59EC1CF038C1E6FF39C1E6FF5B -:104300003AC1E6FF3BC1E6FF1EEF1DF06D0E4E6E9B +:104300003AC1E6FF3BC1E6FF1EEF1DF03D0E4E6ECB :104310008B0E59EC1CF03CC1E6FF3DC1E6FF3EC1EF :10432000E6FF3FC1E6FF1EEF1DF059EC1CF0E5C1B2 :10433000E6FFE6C1E6FFE7C1E6FFE8C1E6FF7BDE98 @@ -830,8 +830,8 @@ :1043B00050DE19EF21F0C9C140F0CAC141F0CBC1B4 :1043C00042F0CCC143F0120043D823EF1EF080DD51 :1043D000010F6FEF20F0D9CFE9FFDACFEAFF12002B -:1043E0002F0D05014BEF20F0860E4E6E8B0E59EC13 -:1043F0001CF099EF1EF0720E4E6E8B0E59EC1CF0F5 +:1043E0002F0D05014BEF20F0560E4E6E8B0E59EC43 +:1043F0001CF099EF1EF0420E4E6E8B0E59EC1CF025 :10440000A2EF1EF02CDED950120041DE61DDC0EFBC :1044100020F014D81E0E59EF1DF010D8160E59EFCB :104420001DF0EE52260E59EF1DF0E126DF6A010E57 @@ -841,27 +841,27 @@ :0C4460001FF0D90EE66E010E05EF20F0F3 :04446C00D8CFE4FFC2 :10447000E0CFE4FFE46EDACFE4FFE9CFE4FFEACF78 -:10448000E4FFF3CFE4FFF4CFE4FFE65250EC37F063 +:10448000E4FFF3CFE4FFF4CFE4FFE65239EC37F07A :10449000A4A645D1A4960001602B00019B51000108 -:1044A000605D01E29FD0606B000165EC36F0EF6A61 +:1044A000605D01E29FD0606B000151EC36F0EF6A75 :1044B00079907B6A7A6A0001992B00019A51000178 -:1044C000995D01E3996BEAEC37F0EA22EE50ED10CA -:1044D00001E188D0D5EC37F0EECF58F0EFCF59F0AE +:1044C000995D01E3996BD5EC37F0EA22EE50ED10DF +:1044D00001E188D0BEEC37F0EECF58F0EFCF59F0C5 :1044E0005850561802E1595057185FE009B28986B2 -:1044F00024EC37F0EA22EE50ED1051E0D5EC37F025 +:1044F0000DEC37F0EA22EE50ED1051E0BEEC37F053 :104500000401EE50565CCF6FEE505758D06FE83430 -:1045100022E2CF510008000ED0551DE2000124EC2C -:1045200037F0E4EC35F004015750D019E8AE02D072 +:1045100022E2CF510008000ED0551DE200010DEC43 +:1045200037F0D0EC35F004015750D019E8AE02D086 :10453000D03504D0CF51565CD05157580AE2000113 -:1045400024EC37F002EC37F05650EE265750ED22AF +:104540000DEC37F0E9EC36F05650EE265750ED22E0 :104550002CD0000124D0CFC456F0D0C457F0566CF4 -:10456000571E000E5722000124EC37F0EA22EECF4E +:10456000571E000E572200010DEC37F0EA22EECF65 :1045700058F0EFCF59F059505718E8AE02D05734E1 -:1045800004D05650585C5750595809E224EC37F083 -:1045900002EC37F05650EE5E5750ED5A06D0D5EC8F -:1045A00037F056C0EEFF57C0EDFF65EC36F0120E47 -:1045B000EF6EF29E000175EC37F057C056F0576A67 -:1045C0005650B66E75EC37F05650B56EF00EB4140A +:1045800004D05650585C5750595809E20DEC37F09A +:10459000E9EC36F05650EE5E5750ED5A06D0BEECC0 +:1045A00037F056C0EEFF57C0EDFF51EC36F0120E5B +:1045B000EF6EF29E00015EEC37F057C056F0576A7E +:1045C0005650B66E5EEC37F05650B56EF00EB41421 :1045D0000009B46EF00EB4140909B46E7980F28E3D :1045E00009B289960401000ED8807A55000E7B55D9 :1045F0002EE2882B000E89237A51885D7B518959E0 @@ -886,9 +886,9 @@ :104720004FD09E9CC1AC07D0C19C010E0401906F7C :10473000916B8C6B2AD0C450586E596E586AC35016 :1047400000015810566E59C057F004018C51E96EA3 -:10475000EA6A39EC37F0EA2256C0EEFF57C0EDFFA7 -:104760000B0E8C5D0EE18C51E96EEA6A39EC37F084 -:10477000E4EC35F09251565C9351575802E2010E29 +:10475000EA6A22EC37F0EA2256C0EEFF57C0EDFFBE +:104760000B0E8C5D0EE18C51E96EEA6A22EC37F09B +:10477000D0EC35F09251565C9351575802E2010E3D :10478000946FD890903791378C2B100E8C5D0EE281 :1047900090518E15566E91518F15576E5650571079 :1047A00005E18C2BD89090379137EFD7100E8C5DA8 @@ -903,1324 +903,1319 @@ :10483000EAFFBF0ED880EE540E0EED540BE3DECF30 :10484000E9FFDDCFEAFFEE0EEF6EDF2A010E01E396 :10485000DB2AEBD7020EE15C02E2E16AE552E16E8F -:10486000E552E7CFD9FF1200F3EC37F0BF0EF36E3D +:10486000E552E7CFD9FF1200DEEC37F0BF0EF36E52 :10487000010EF3CFDBFF0E0EF36E020EF3CFDBFF64 :10488000F28C010EDBCFE9FF020EDBCFEAFFEF5027 :10489000EE0806E1010EDB06020EF3E2DB06F1D7BD -:1048A000C2EC36F004014E50CD5D4F50CE5906E2B9 +:1048A000AEEC36F004014E50CD5D4F50CE5906E2CD :1048B000010EDBCFCDF4020EDBCFCEF4F28C030E73 -:1048C000E15C02E2E16AE552E16EB6EF35F005EC3B -:1048D00038F0896A926804018E6B8F6B8A6A9368DC +:1048C000E15C02E2E16AE552E16EA7EF35F0ECEC63 +:1048D00037F0896A926804018E6B8F6B8A6A9368DD :1048E0008B6A94688C968C9495969594928E010E12 :1048F000BD6F846B826B816B836B7D6B7C6B7E6B1E :104900007A6B7B6B7F6B806B886B896B8A6B8B6B35 :104910008C6B76827680769C769A76887696FA0E7E -:10492000776EDE6ADD6A78EC36F0100E4E5C000EB3 -:104930004F5813E27DEC36F0010ED890E936EA3696 +:10492000776EDE6ADD6A64EC36F0100E4E5C000EC7 +:104930004F5813E269EC36F0010ED890E936EA36AA :10494000E806FBE1000EE926010EEA22EE6AED6AB6 :10495000DF2A010EE8E3DB2AE6D70401B76BB86B68 -:10496000B56BB66BDE6ADD6A8CEC37F00AE27DEC83 -:1049700036F0000EE926020EECEC36F0F5E3DB2A09 -:10498000F3D7DE6ADD6A8CEC37F00AE27DEC36F0B4 -:10499000400EE926020EECEC36F0F5E3DB2AF3D705 -:1049A000DE6ADD6A78EC36F0000E4E5C010E4F5880 -:1049B0000AE27DEC36F0000EE926030EECEC36F050 +:10496000B56BB66BDE6ADD6A79EC37F00AE269ECAA +:1049700036F0000EE926020ED8EC36F0F5E3DB2A1D +:10498000F3D7DE6ADD6A79EC37F00AE269EC36F0DB +:10499000400EE926020ED8EC36F0F5E3DB2AF3D719 +:1049A000DE6ADD6A64EC36F0000E4E5C010E4F5894 +:1049B0000AE269EC36F0000EE926030ED8EC36F078 :1049C000F1E3DB2AEFD70401B96BBA6BBB6BBC6BAD :1049D000856B866B876B0F01498FBE0EC16ED08EC3 -:1049E0007694A386A596B9EC0CF0CFEC3EF07684D5 -:1049F0004BEC32F00401C96BCA6BCB6BCC6B0E6A0B +:1049E0007694A386A596B9EC0CF0B7EC3EF07684ED +:1049F0003EEC32F00401C96BCA6BCB6BCC6B0E6A18 :104A0000BE6BBF6BC06BC16B600EC26FEA0EC36F33 :104A1000C46BC56B010EC66FCD6BCE6B926B936B87 :104A2000966B976B986B996B9A6B9B6B956B946B72 :104A3000F28EF28C020EE15C02E2E16AE552E16E76 -:104A4000B6EF35F0B1EC35F0050EE126C9EC36F0E5 -:104A5000C9EC34F004017E5100080AE2DFEC2EF0CC +:104A4000A7EF35F0A2EC35F0050EE126B5EC36F017 +:104A5000BAEC34F004017E5100080AE2CCEC2EF0EE :104A600004017D2B030E7D5D01E17D6B7E07F2D796 -:104A7000835100080AE2FCEC2EF00401822B030EA5 +:104A7000835100080AE2E9EC2EF00401822B030EB8 :104A8000825D01E1826B8307F3D7200E0501E76E9B :104A9000BC19E8AE02D0E73402D0E750BC5D01E2B9 :104AA0002AD16550020B01E026D1400EE66E400E81 -:104AB000E66E020EE66EC5EC43F0FBEC37F0E76EF7 +:104AB000E66E020EE66EADEC43F0E2EC37F0E76E28 :104AC000020EE7CFDBFFDB50000801E3B8D0030E96 -:104AD000DB6A020EDB50F36E030E82EC36F001E36C -:104AE000AED0B2EC36F0040EEFCFDBFF0401EC5198 -:104AF00014E06DEC37F0040EDBCFEFFFB72B030EA5 +:104AD000DB6A020EDB50F36E030E6EEC36F001E380 +:104AE000AED09EEC36F0040EEFCFDBFF0401EC51AC +:104AF00014E056EC37F0040EDBCFEFFFB72B030EBC :104B0000DB2A0401EC07EC5137E109B08B80ADECF6 :104B100019F009A02FD08B902DD0EB512DE0040E71 :104B2000DB50590829E1EB6B1C0EEC6F020EDBCF5A :104B3000E6FF030EDB50E552E75C4E6E1C0E4E5C4A -:104B40001BE3030EDB2AEC510FE0B2EC36F0EF5022 -:104B5000E66E6DEC37F0E552E750EF6EB72B030EC3 +:104B40001BE3030EDB2AEC510FE09EEC36F0EF5036 +:104B5000E66E56EC37F0E552E750EF6EB72B030EDA :104B6000DB2A0401EC07EFD709B08B80ADEC19F01C -:104B700009B08B90D0EC36F009A806D0040EDBCF3C -:104B8000E6FF2CEC4CF0E5520401EC5155E1E75105 +:104B700009B08B90BCEC36F009A806D0040EDBCF50 +:104B8000E6FF13EC4CF0E5520401EC5155E1E7511E :104B90001BE10D0E4E6E040EDB504E5C06E00A0E5D -:104BA0004F6E040EDB504F5C0FE1010EE76F6DECB2 +:104BA0004F6E040EDB504F5C0FE1010EE76F56ECC9 :104BB00037F00D0EEF6EB72B09B08B80F9D809B026 -:104BC0008B90D0EC36F02BD0040EDB5008080FE1B0 -:104BD0000401B75100080BE2B707B751A0EC35F05C -:104BE000EF6A310E4E6E8D0E93EC35F018D0040E38 +:104BC0008B90BCEC36F02BD0040EDB5008080FE1C4 +:104BD0000401B75100080BE2B707B75191EC35F06B +:104BE000EF6A010E4E6E8D0E84EC35F018D0040E77 :104BF000DB500D0814E0040EDB500A0810E0200E14 -:104C0000F36E040E82EC36F00AE36DEC37F0040E1E +:104C0000F36E040E6EEC36F00AE356EC37F0040E49 :104C1000DBCFEFFF0401E76BEB6B0401B72B040163 :104C2000B7514E6E4F6A000E4E1806E1010E4F1836 :104C300003E18487B76BB86B030EDB2A4AD7040104 -:104C4000845139E084A105D02D0E4E6E8D0E21ECDD -:104C500037F0040184A305D0100E4E6E8D0E21ECAA -:104C600037F0040184A505D0F60E4E6E8C0E21ECB3 -:104C700037F0040184A705D0DC0E4E6E8C0E21ECBB -:104C800037F0040184A905D0BF0E4E6E8C0E21ECC6 -:104C900037F0040184AD05D09F0E4E6E8C0E21ECD2 -:104CA00037F0040184AF05D0870E4E6E8C0E21ECD8 +:104C4000845139E084A105D0FD0E4E6E8C0E0AEC25 +:104C500037F0040184A305D0E00E4E6E8C0E0AECF2 +:104C600037F0040184A505D0C60E4E6E8C0E0AECFA +:104C700037F0040184A705D0AC0E4E6E8C0E0AEC02 +:104C800037F0040184A905D08F0E4E6E8C0E0AEC0D +:104C900037F0040184AD05D06F0E4E6E8C0E0AEC19 +:104CA00037F0040184AF05D0570E4E6E8C0E0AEC1F :104CB00037F00401846BCA511DE0010E0E1414E09C -:104CC000CB5112E1680E4E6E8C0E93EC35F0020E55 -:104CD000E66EC9C44EF04F6ABFEC35F09DEC35F07E +:104CC000CB5112E1380E4E6E8C0E84EC35F0020E94 +:104CD000E66EC9C44EF04F6AABEC35F08EEC35F0A1 :104CE0000401010ECB6F06D0010E0E1403E1CB516F :104CF00001E0CB6B37D8050EE15C02E2E16AE552D8 -:104D0000E16EB6EF35F050EC37F0B5C4DFFFDF2AC7 -:104D1000400EF3EC35F001E1DF6A0401B651DF5CCF +:104D0000E16EA7EF35F039EC37F0B5C4DFFFDF2AED +:104D1000400EDFEC35F001E1DF6A0401B651DF5CE3 :104D200001E120D80401B551EA6A000FE96E020ED4 :104D3000EA22FE0EDBCFEFFFB52B400EB55D01E1A1 :104D4000B56BB651B55D01E18485FE0EDBCF4EF04B :104D50004F6A4EBE4F684EC0F3FF4FC0F4FFE5529E -:104D6000B6EF35F050EC37F00401B551B65D1DE0FB -:104D70000501A45105E051EC44F096EC38F0F8D769 -:104D80000401B651D880B55507E2B651B55D26ECA1 -:104D900036F0B5C4B6F407D0400ED880B65526EC30 -:104DA00036F00401B66B51EC44F0E552B6EF35F045 -:104DB000B1EC35F0090EE126DE6ADD6A020EDB6A2F +:104D6000A7EF35F039EC37F00401B551B65D1DE021 +:104D70000501A45105E039EC44F07EEC38F0F8D799 +:104D80000401B651D880B55507E2B651B55D12ECB5 +:104D900036F0B5C4B6F407D0400ED880B65512EC44 +:104DA00036F00401B66B39EC44F0E552A7EF35F06C +:104DB000A2EC35F0090EE126DE6ADD6A020EDB6A3E :104DC000030EDB6A050EDB6A010EF36E060EF3CFEF -:104DD000DBFF0401C76BC86BCC5101E18AD0060E22 +:104DD000DBFF0401C76BC86BCC5101E18CD0060E20 :104DE000DB6A040EB7C4DBFFDB5003E0040EDB0616 -:104DF00002D0040EDB6892EC37F016E0050EF36E7D +:104DF00002D0040EDB687FEC37F016E0050EF36E90 :104E0000DBCFF4FFE850F45C0FE2040EDB50B85D3A :104E10000BE0040EDB5003E0040EDB0602D0040EB0 -:104E2000DB68050EDB2AE7D792EC37F059E1070E75 +:104E2000DB68050EDB2AE7D77FEC37F05BE1070E86 :104E3000B8C4DBFF040EDBCFB8F4E66AD950020F2A -:104E4000FBEC36F0070EDBCFB8F4080EB8C4DBFF7E +:104E4000E2EC36F0070EDBCFB8F4080EB8C4DBFF97 :104E5000040EDB50F36E080EDB50F35C19E0080E15 -:104E6000DB50A0EC35F0030EDBCFE7FFEF50E72679 +:104E6000DB5091EC35F0030EDBCFE7FFEF50E72688 :104E7000030EE7CFDBFF080EDB2ADB504E6E4F6AD6 :104E8000E850E6E1010E4F18E3E1080EDB6AE0D7D7 :104E9000030EDB1C010FE76E030EE7CFDBFF020EF4 :104EA000DB50F36E030EDB50F35C0CE1010EF36E8E -:104EB000060EF3CFDBFF040EDB50A0EC35F00D0E39 -:104EC000EF6E17D0420E4E6E8C0E93EC35F0030E43 -:104ED00098EC36F02CEC38F0F1EC46F0E55205D0C9 -:104EE000190E4E6E8C0E40EC37F0FBEC37F09DEC5B -:104EF00035F0060EDB5001E168D2040114EC38F005 -:104F0000BAEC36F0F3CFC7F40401CDEC35F004E190 -:104F1000010E4F1801E1B86BC751DE6EDD6AFFEC80 -:104F200036F02C0823E0FFEC36F00D081FE0FFEC14 -:104F300036F00A081BE014EC38F0BAEC36F0F3CF88 -:104F4000C8F40401CDEC35F004E1010E4F1801E185 -:104F5000B86BC7C451F0506AC851000150244E6E5E -:104F6000000E51204F6E4EC0DEFFDD6E000EDFCF13 -:104F700042F0010EDBCF43F0520E421802E1540E14 -:104F8000431801E1F1D1550E421802E1510E4318C8 -:104F900001E1E8D14D0E421802E1480E431801E14B -:104FA000DED1520E421802E1530E431801E1D4D172 -:104FB000520E421802E1510E431801E1CAD1420ECD -:104FC000421802E1520E431801E1C0D1540E4218BA -:104FD00002E1510E431801E1B6D1540E421802E12C -:104FE000530E431801E1ACD1530E421802E1430EB7 -:104FF000431801E1A2D1530E421802E1510E4318A9 -:1050000001E198D14D0E421802E1580E431801E11A -:105010008ED1530E421802E1450E431801E184D1AE -:10502000430E421802E1410E431801E17AD14D0EC0 -:10503000421802E1510E431801E170D1320E4218BC -:1050400002E1530E431801E166D1450E421802E118 -:10505000530E431801E15CD1470E421802E1510E94 -:10506000431801E152D1430E421802E1510E431898 -:1050700001E148D14B0E421802E1430E431801E111 -:105080003ED14C0E421802E1420E431801E134D1E8 -:10509000440E421802E14E0E431801E12AD1490E96 -:1050A000421802E14E0E431801E120D1420E42188F -:1050B00002E1510E431801E116D14C0E421802E1F3 -:1050C000510E431801E10CD14C0E421802E1530E6F -:1050D000431801E102D14E0E421802E1510E43186D -:1050E00001E1F8D04E0E421802E1530E431801E1DF -:1050F000EED0430E421802E1530E431801E1E4D012 -:105100004D0E421802E1450E431801E1DAD0450E7A -:10511000421802E1510E431801E1D0D0500E42185E -:1051200002E1510E431801E1C6D0500E421802E1CF -:10513000540E431801E1BCD0500E421802E1530E48 -:10514000431801E1B2D04D0E421802E1530E43184C -:1051500001E1A8D0570E421802E14D0E431801E1BB -:105160009ED0520E421802E14D0E431801E194D038 -:10517000440E421802E1500E431801E18AD04F0E4E -:10518000421802E1500E431801E180D0490E421846 -:1051900002E1500E431801E176D0410E421801E1C0 -:1051A00043506EE0560E421801E1435066E0490E4E -:1051B000421801E143505EE04F0E421801E14350B6 -:1051C00056E0550E421802E1430E43184EE0430EDE -:1051D000421801E1435046E0520E421801E14350AB -:1051E0003FE04D0E421802E14C0E431836E0330EFC -:1051F000421802E1540E43182DE0440E421802E119 -:10520000540E431824E0330E421802E14C0E4318AA -:105210001BE0540E421802E14C0E431812E04D0EF2 -:10522000421802E1430E431809E00401C85101E0AD -:105230009ED078EC37F07EEC37F0ADD0B8EC11F0C2 -:10524000B2D04FEC0FF0AFD082EC0EF0ACD0BEEC91 -:105250000EF0A9D039EC0FF0A6D049EC0EF0A3D097 -:10526000FFD8A1D0F9EC2DF09ED001D99CD0A9ECAB -:105270002EF099D0DFEC2EF096D0F5EC2EF093D0F6 -:10528000FCEC2EF090D034EC30F08DD0A9EC30F066 -:105290008AD098EC2FF087D079EC2FF084D05EEC98 -:1052A0002FF081D0A4EC11F07ED042EC16F07BD030 -:1052B0001CEC16F078D09CEC15F075D0B4EC15F021 -:1052C00072D0F9EC16F06FD088EC0DF06CD059EC80 -:1052D00017F069D07AEC17F066D08CEC17F063D039 -:1052E000ACEC17F060D0D3EC17F05DD037EC17F0D2 -:1052F0005AD04AEC17F057D05DEC31F054D0AFECF7 -:1053000031F051D0E7EC17F04ED000EC18F04BD054 -:1053100033EC18F048D044EC3FF045D02BEC19F0BA -:1053200042D08FEC2EF03FD04DEC15F03CD01BEC72 -:1053300014F039D06CEC19F036D0A8EC19F033D059 -:105340008EEC32F030D0C3EC32F02DD065EC31F081 -:105350002AD06CEC31F027D07CEC31F024D0D3ECA7 -:1053600012F021D0AEDB1FD040EC13F01CD078EC53 -:1053700037F0C8C4E6FFC7DCE5527EEC37F0C6EC78 -:1053800037F0C7C4E6FF06EC37F098EC37F0020EB2 -:10539000E66EC8C44EF04F6ABFEC35F0270EBAEC8B -:1053A00035F09DEC35F00401FFEC36F00D080DE012 -:1053B00084510BE1520E4E6E4F6ADF504E1803E1DE -:1053C000DE52DD504F1801E0848FB7C4B8F4090EE7 -:1053D000E15C02E2E16AE552E16EB6EF35F050ECD5 -:1053E00037F02C0EDF6E010E0101C31503E1FE0E36 -:1053F000DB5010E0A1EC36F00401C85104E0C8C451 -:10540000E6FF81DCE552FD0EDB5004E0DFCFE6FF76 -:105410007ADCE552E552B6EF35F0B1EC35F001013A -:10542000C3A104D0FD0E4E6E8B0E16D00401BD51EB -:1054300008E0FE0EDB5005E1FA0E4E6E8B0E93EC8B -:1054400035F0FE0EDB50020804E1F70E4E6E8B0EB7 -:1054500003D0F40E4E6E8B0E93EC35F0B6EF35F0B4 -:1054600009EC38F0EAEC35F07DDC67EF24F0D9CFB9 -:10547000E6FFE1CFD9FF040EE126E66AE66AAFDF78 -:10548000E552E552E66AD9CFE6FFDACFE6FF030E32 -:10549000E66E20EC33F0E552E552E552E552E66A5D -:1054A000D950020FE66E000EDA20E66E020EE66EAE -:1054B00020EC33F0E552E552E552E5520401845107 -:1054C00001E0F5D2010E4E6E4F6ADF504E1803E137 -:1054D000DE52DD504F181AE1D950020FE96EDACFD3 -:1054E000EAFFEE50ED100BE0010E4E6E4F6A020E19 -:1054F000DB504E1803E1030EDB504F1804E1020E9F -:10550000DBCFBDF402D00401848DCED2020E4E6EEC -:105510004F6ADF504E1803E1DE52DD504F181AE19A -:10552000D950020FE96EDACFEAFFEE50ED100BE032 -:10553000010E4E6E4F6A020EDB504E1803E1030E51 -:10554000DB504F1804E1020EDBCFC2F102D00401A0 -:10555000848DAAD2030E4E6E4F6ADF504E1803E1BF -:10556000DE52DD504F181CE1D950020FE96EDACF40 -:10557000EAFFEE50ED1003E106908C9410D0010E7E -:105580004E6E4F6A020EDB504E1803E1030EDB50E5 -:105590004F1803E106808C9402D00401848D84D2DC -:1055A000040E4E6E4F6ADF504E1803E1DE52DD509E -:1055B0004F181DE1020EDBCF4EF0030EDBCF4FF094 -:1055C0004F3404E24E502008000E4F5407E2200EE4 -:1055D000F36E020EF3CFDBFF030EDB6AE3EC18F091 -:1055E000000901E0FBD7020EDB50136E5DD20A0EFC -:1055F0004E6E4F6ADF504E1803E1DE52DD504F18F9 -:105600001CE1D950020FE96EDACFEAFFEE50ED103F -:1056100003E10101C39110D0010E4E6E4F6A020EDC -:10562000DB504E1803E1030EDB504F1803E101017C -:10563000C38102D00401848D37D2320E4E6E4F6A80 -:10564000DF504E1803E1DE52DD504F180FE1D95004 -:10565000020FE96EDACFEAFFEE50ED1003E104012C -:10566000C66B03D00401010EC66F1ED2330E4E6E00 -:105670004F6ADF504E1803E1DE52DD504F1811E142 -:10568000FF0EE76E020EDBCF4EF0030EDBCF4FF0C6 -:10569000E7504E164F6A4E500C6E0C5001E10E90C2 -:1056A00003D2340E4E6E4F6ADF504E1803E1DE52C5 -:1056B000DD504F180EE1FF0EE76E020EDBCF4EF00D -:1056C000030EDBCF4FF0E7504E164F6A4E500D6E73 -:1056D000EBD1350E4E6E4F6ADF504E1803E1DE52AD -:1056E000DD504F1814E1010E4E6E4F6A020EDB5072 -:1056F0004E1803E1030EDB504F1804E10401010EC4 -:10570000CA6F04D00401CA6B0401CB6BCDD1360E35 -:105710004E6E4F6ADF504E1803E1DE52DD504F18D7 -:1057200012E1010E4E6E4F6A020EDB504E1803E17D -:10573000030EDB504F1804E10401010ECC6F02D0C0 -:105740000401CC6BB1D13C0E4E6E4F6ADF504E1847 -:1057500003E1DE52DD504F180DE1020EDBCF92F473 -:10576000030EDBCF93F4FF0E04019217030E040126 -:1057700093179AD13D0E4E6E4F6ADF504E1803E1DB -:10578000DE52DD504F1837E1F29EF29C020EDBCF65 -:1057900096F4030EDBCF97F404019651971109E1BB -:1057A0000401956B0401986B996B04019A6B9B6BD8 -:1057B0001FD004019551030A14E0020A0FE0010A08 -:1057C0000DE0020A01E00AD096C49AF497C49BF453 -:1057D0000401E80E986F030E996F0AD00401010EC0 -:1057E000956F0401986B996B04019A6B9B6B00D0C9 -:1057F000F28CF28E59D1FA0E4E6E4F6ADF504E186F -:1058000003E1DE52DD504F181EE1D950020FE96E60 -:10581000DACFEAFFEE50ED1002E1099213D0010E4B -:105820004E6E4F6A020EDB504E1803E1030EDB5042 -:105830004F1806E10982959295909292929602D025 -:105840000401848D31D1FB0E4E6E4F6ADF504E182D -:1058500003E1DE52DD504F182BE1D950020FE96E03 -:10586000DACFEAFFEE50ED1003E1099609941FD05C -:10587000010E4E6E4F6A020EDB504E1803E1030E0E -:10588000DB504F1812E109840996EC0EE66E57ECD6 -:105890004CF0E552020EE66EE66A1C0EE66E51EC26 -:1058A0004BF0E552E552E55202D00401848DFCD064 -:1058B000FC0E4E6E4F6ADF504E1803E1DE52DD5093 -:1058C0004F182BE1D950020FE96EDACFEAFFEE5004 -:1058D000ED1003E1099609941FD0010E4E6E4F6A38 -:1058E000020EDB504E1803E1030EDB504F1812E19D -:1058F00009860984EC0EE66E57EC4CF0E552020E78 -:10590000E66EE66A1C0EE66E51EC4BF0E552E5528F -:10591000E55202D00401848DC7D0FD0E4E6E4F6A51 -:10592000DF504E1803E1DE52DD504F1829E1D95007 -:10593000020FE96EDACFEAFFEE50ED1002E10998AE -:105940001ED0010E4E6E4F6A020EDB504E1803E160 -:10595000030EDB504F1811E10988EC0EE66E57EC90 -:105960004CF0E552020EE66EE66A1C0EE66E51EC55 -:105970004BF0E552E552E55202D00401848D94D0FB -:10598000FE0E4E6E4F6ADF504E1803E1DE52DD50C0 -:105990004F181AE109829592959092928C908C8082 +:104EB000060EF3CFDBFF040EDB5091EC35F00D0E48 +:104EC000EF6E19D0120E4E6E8C0E84EC35F0030E80 +:104ED00084EC36F04EC0E6FFEDEC36F0D9EC46F04F +:104EE000E55205D0E90E4E6E8B0E29EC37F0E2EC60 +:104EF00037F08EEC35F0060EDB5001E168D204018C +:104F000000EC38F0A6EC36F0F3CFC7F40401B4ECB3 +:104F100035F004E1010E4F1801E1B86BC751DE6EA8 +:104F2000DD6AE6EC36F02C0823E0E6EC36F00D08FE +:104F30001FE0E6EC36F00A081BE000EC38F0A6ECC7 +:104F400036F0F3CFC8F40401B4EC35F004E1010EFF +:104F50004F1801E1B86BC7C451F0506AC851000145 +:104F600050244E6E000E51204F6E4EC0DEFFDD6E9F +:104F7000000EDFCF42F0010EDBCF43F0520E42189D +:104F800002E1540E431801E1F1D1550E421802E13D +:104F9000510E431801E1E8D14D0E421802E1480ECE +:104FA000431801E1DED1520E421802E1530E4318BC +:104FB00001E1D4D1520E421802E1510E431801E131 +:104FC000CAD1420E421802E1520E431801E1C0D18B +:104FD000540E421802E1510E431801E1B6D1540EAD +:104FE000421802E1530E431801E1ACD1530E4218AE +:104FF00002E1430E431801E1A2D1530E421802E12F +:10500000510E431801E198D14D0E421802E1580E9D +:10501000431801E18ED1530E421802E1450E4318A8 +:1050200001E184D1430E421802E1410E431801E12F +:105030007AD14D0E421802E1510E431801E170D1B0 +:10504000320E421802E1530E431801E166D1450EBB +:10505000421802E1530E431801E15CD1470E421899 +:1050600002E1510E431801E152D1430E421802E110 +:10507000510E431801E148D14B0E421802E1430E94 +:10508000431801E13ED14C0E421802E1420E431892 +:1050900001E134D1440E421802E14E0E431801E101 +:1050A0002AD1490E421802E14E0E431801E120D1E7 +:1050B000420E421802E1510E431801E116D14C0E86 +:1050C000421802E1510E431801E10CD14C0E421876 +:1050D00002E1530E431801E102D14E0E421802E1E3 +:1050E000510E431801E1F8D04E0E421802E1530E62 +:1050F000431801E1EED0430E421802E1530E43186B +:1051000001E1E4D04D0E421802E1450E431801E1E1 +:10511000DAD0450E421802E1510E431801E1D0D019 +:10512000500E421802E1510E431801E1C6D0500E54 +:10513000421802E1540E431801E1BCD0500E42184F +:1051400002E1530E431801E1B2D04D0E421802E1C4 +:10515000530E431801E1A8D0570E421802E14D0E3C +:10516000431801E19ED0520E421802E14D0E431841 +:1051700001E194D0440E421802E1500E431801E1BF +:105180008AD04F0E421802E1500E431801E180D040 +:10519000490E421802E1500E431801E176D0410E4B +:1051A000421801E143506EE0560E421801E14350AF +:1051B00066E0490E421801E143505EE04F0E42188E +:1051C00001E1435056E0550E421802E1430E4318E8 +:1051D0004EE0430E421801E1435046E0520E4218A1 +:1051E00001E143503FE04D0E421802E14C0E4318DE +:1051F00036E0330E421802E1540E43182DE0440EFF +:10520000421802E1540E431824E0330E421802E122 +:105210004C0E43181BE0540E421802E14C0E43188A +:1052200012E04D0E421802E1430E431809E004015A +:10523000C85101E09ED061EC37F067EC37F0ADD09B +:10524000B8EC11F0B2D04FEC0FF0AFD082EC0EF012 +:10525000ACD0BEEC0EF0A9D039EC0FF0A6D049ECE2 +:105260000EF0A3D0FFD8A1D0E6EC2DF09ED001D94E +:105270009CD096EC2EF099D0CCEC2EF096D0E2ECAF +:105280002EF093D0E9EC2EF090D025EC30F08DD0BC +:105290009AEC30F08AD089EC2FF087D06AEC2FF0AE +:1052A00084D04FEC2FF081D0A4EC11F07ED042ECF2 +:1052B00016F07BD01CEC16F078D09CEC15F075D075 +:1052C000B4EC15F072D0F9EC16F06FD088EC0DF05C +:1052D0006CD059EC17F069D07AEC17F066D08CECF2 +:1052E00017F063D0ACEC17F060D0D3EC17F05DD0C2 +:1052F00037EC17F05AD04AEC17F057D04EEC31F09B +:1053000054D0A0EC31F051D0E7EC17F04ED000ECC7 +:1053100018F04BD033EC18F048D02CEC3FF045D0CF +:105320002BEC19F042D07CEC2EF03FD04DEC15F078 +:105330003CD01BEC14F039D06CEC19F036D0A8EC52 +:1053400019F033D081EC32F030D0B5EC32F02DD002 +:1053500056EC31F02AD05DEC31F027D06DEC31F015 +:1053600024D0D3EC12F021D0AEDB1FD040EC13F0F0 +:105370001CD061EC37F0C8C4E6FFC5DCE55267EC31 +:1053800037F075EC37F0C7C4E6FFEDEC36F085EC8E +:1053900037F0020EE66EC8C44EF04F6AABEC35F043 +:1053A000270EC7EC35F08EEC35F00401E6EC36F054 +:1053B0000D080DE084510BE1520E4E6E4F6ADF5026 +:1053C0004E1803E1DE52DD504F1801E0848FB7C460 +:1053D000B8F4090EE15C02E2E16AE552E16EA7EF82 +:1053E00035F039EC37F02C0EDF6E010E0101C315DC +:1053F00003E1FE0EDB5010E08DEC36F00401C851E5 +:1054000004E0C8C4E6FF7FDCE552FD0EDB5004E09B +:10541000DFCFE6FF78DCE552E552A7EF35F0A2ECEE +:1054200035F00101C3A104D0CD0E4E6E8B0E16D007 +:105430000401BD5108E0FE0EDB5005E1CA0E4E6EC0 +:105440008B0E84EC35F0FE0EDB50020804E1C70E33 +:105450004E6E8B0E03D0C40E4E6E8B0E84EC35F068 +:10546000A7EF35F0F0EC37F0D6EC35F07BDC67EFEA +:1054700024F0D9CFE6FFE1CFD9FF040EE126E66A9A +:10548000E66AAFDFE552E552E66AD9CFE6FFDACF4A +:10549000E6FF030EE66E11EC33F0E552E552E552FD +:1054A000E552E66AD950020FE66E000EDA20E66E8B +:1054B000020EE66E11EC33F0E552E552E552E5528C +:1054C0000401845101E0F5D2010E4E6E4F6ADF50A7 +:1054D0004E1803E1DE52DD504F181AE1D950020F89 +:1054E000E96EDACFEAFFEE50ED100BE0010E4E6EE2 +:1054F0004F6A020EDB504E1803E1030EDB504F18CB +:1055000004E1020EDBCFBDF402D00401848DCED2C3 +:10551000020E4E6E4F6ADF504E1803E1DE52DD5030 +:105520004F181AE1D950020FE96EDACFEAFFEE50B8 +:10553000ED100BE0010E4E6E4F6A020EDB504E185E +:1055400003E1030EDB504F1804E1020EDBCFC2F182 +:1055500002D00401848DAAD2030E4E6E4F6ADF5032 +:105560004E1803E1DE52DD504F181CE1D950020FF6 +:10557000E96EDACFEAFFEE50ED1003E106908C946D +:1055800010D0010E4E6E4F6A020EDB504E1803E132 +:10559000030EDB504F1803E106808C9402D0040107 +:1055A000848D84D2040E4E6E4F6ADF504E1803E194 +:1055B000DE52DD504F181DE1020EDBCF4EF0030E20 +:1055C000DBCF4FF04F3404E24E502008000E4F5412 +:1055D00007E2200EF36E020EF3CFDBFF030EDB6A51 +:1055E000E3EC18F0000901E0FBD7020EDB50136E6C +:1055F0005DD20A0E4E6E4F6ADF504E1803E1DE5246 +:10560000DD504F181CE1D950020FE96EDACFEAFFE6 +:10561000EE50ED1003E10101C39110D0010E4E6E6A +:105620004F6A020EDB504E1803E1030EDB504F1899 +:1056300003E10101C38102D00401848D37D2320E0F +:105640004E6E4F6ADF504E1803E1DE52DD504F18A8 +:105650000FE1D950020FE96EDACFEAFFEE50ED10FC +:1056600003E10401C66B03D00401010EC66F1ED214 +:10567000330E4E6E4F6ADF504E1803E1DE52DD509E +:105680004F1811E1FF0EE76E020EDBCF4EF0030E56 +:10569000DBCF4FF0E7504E164F6A4E500C6E0C5059 +:1056A00001E10E9003D2340E4E6E4F6ADF504E1859 +:1056B00003E1DE52DD504F180EE1FF0EE76E020EE1 +:1056C000DBCF4EF0030EDBCF4FF0E7504E164F6AA4 +:1056D0004E500D6EEBD1350E4E6E4F6ADF504E18A8 +:1056E00003E1DE52DD504F1814E1010E4E6E4F6A99 +:1056F000020EDB504E1803E1030EDB504F1804E19D +:105700000401010ECA6F04D00401CA6B0401CB6B03 +:10571000CDD1360E4E6E4F6ADF504E1803E1DE5289 +:10572000DD504F1812E1010E4E6E4F6A020EDB5033 +:105730004E1803E1030EDB504F1804E10401010E83 +:10574000CC6F02D00401CC6BB1D13C0E4E6E4F6ACF +:10575000DF504E1803E1DE52DD504F180DE1020E0E +:10576000DBCF92F4030EDBCF93F4FF0E040192170C +:10577000030E040193179AD13D0E4E6E4F6ADF500F +:105780004E1803E1DE52DD504F1837E1F29EF29CD5 +:10579000020EDBCF96F4030EDBCF97F40401965193 +:1057A000971109E10401956B0401986B996B040151 +:1057B0009A6B9B6B1FD004019551030A14E0020AF7 +:1057C0000FE0010A0DE0020A01E00AD096C49AF443 +:1057D00097C49BF40401E80E986F030E996F0AD0EA +:1057E0000401010E956F0401986B996B04019A6B8B +:1057F0009B6B00D0F28CF28E59D1FA0E4E6E4F6A2E +:10580000DF504E1803E1DE52DD504F181EE1D95033 +:10581000020FE96EDACFEAFFEE50ED1002E10992D5 +:1058200013D0010E4E6E4F6A020EDB504E1803E18C +:10583000030EDB504F1806E10982959295909292E3 +:10584000929602D00401848D31D1FB0E4E6E4F6AC8 +:10585000DF504E1803E1DE52DD504F182BE1D950D6 +:10586000020FE96EDACFEAFFEE50ED1003E1099680 +:1058700009941FD0010E4E6E4F6A020EDB504E1877 +:1058800003E1030EDB504F1812E109840996EC0E78 +:10589000E66E3EEC4CF0E552020EE66EE66A1C0E39 +:1058A000E66E38EC4BF0E552E552E55202D00401C9 +:1058B000848DFCD0FC0E4E6E4F6ADF504E1803E113 +:1058C000DE52DD504F182BE1D950020FE96EDACFCE +:1058D000EAFFEE50ED1003E1099609941FD0010E86 +:1058E0004E6E4F6A020EDB504E1803E1030EDB5082 +:1058F0004F1812E109860984EC0EE66E3EEC4CF07E +:10590000E552020EE66EE66A1C0EE66E38EC4BF0CF +:10591000E552E552E55202D00401848DC7D0FD0E58 +:105920004E6E4F6ADF504E1803E1DE52DD504F18C5 +:1059300029E1D950020FE96EDACFEAFFEE50ED10FF +:1059400002E109981ED0010E4E6E4F6A020EDB5026 +:105950004E1803E1030EDB504F1811E10988EC0EDD +:10596000E66E3EEC4CF0E552020EE66EE66A1C0E68 +:10597000E66E38EC4BF0E552E552E55202D00401F8 +:10598000848D94D0FE0E4E6E4F6ADF504E1803E1A8 +:10599000DE52DD504F181AE109829592959092924D :1059A0008C908C808C908C808C908C808C908C8057 :1059B0008C908C808C908C808C908C808C908C8047 -:1059C0008C908C80EBD770D04E684F6ADF504E18A9 -:1059D00003E1DE52DD504F181AE1D950020FE96E93 -:1059E000DACFEAFFEE50ED1002E1099A0FD0010E76 -:1059F0004E6E4F6A020EDB504E1803E1030EDB5071 -:105A00004F1802E1098A02D00401848D4DD04E6AFC -:105A1000010E4F6EDF504E1803E1DE52DD504F187D -:105A20001AE1D950020FE96EDACFEAFFEE50ED101D -:105A300002E1099C0FD0010E4E6E4F6A020EDB5040 -:105A40004E1803E1030EDB504F1802E1098C02D01F -:105A50000401848D29D0010E4E6E010E4F6EDF5071 -:105A60004E1803E1DE52DD504F181CE1D950020FF1 -:105A7000E96EDACFEAFFEE50ED1003E10990948071 -:105A800010D0010E4E6E4F6A020EDB504E1803E12D -:105A9000030EDB504F1803E10980949002D00401FB -:105AA000848D02D00401848DE66AB7DCE552040ED1 -:105AB000E15C02E2E16AE552E16EE552E7CFD9FF2F -:105AC000120050EC37F063EC37F0010E99EC35F032 -:105AD0000401845101E08AD0DF0408E1F6EC36F0DD -:105AE000020EE66EC9C44EF04F6A1ED0020EF3ECF1 -:105AF00035F008E1F6EC36F0200EE66EE66AE66A6E -:105B0000E66A4CD0030EF3EC35F004E1F6EC36F027 -:105B1000135026D0040EF3EC35F009E134EC24F0F8 -:105B2000F6EC36F0D7EC36F0BFEC35F059D0050E78 -:105B3000F3EC35F00EE1F6EC36F0D7EC36F0BFECD6 -:105B400035F09DEC35F0F29C0401CD6BCE6BF28C00 -:105B50004BD0060EF3EC35F006E1F6EC36F00F50C4 -:105B60001CEC36F019D03C0EF3EC35F007E1F6EC06 -:105B700036F092C44EF093C44FF00AD03D0EF3ECD1 -:105B800035F00FE1F6EC36F096C44EF097C44FF0C6 -:105B9000506A516A4EC0E6FF06EC37F0E6EC37F08B -:105BA0001FD0C80EF3EC35F01EE1F6EC36F0F29E95 -:105BB0001EC0E6FF1FC0E6FF20C0E6FF21C0E6FFD3 -:105BC000E6EC37F02C0EBAEC35F022C0E6FF23C02D -:105BD000E6FF24C0E6FF25C0E6FFE6EC37F0F28ED4 -:105BE0009DEC35F001D0848DEAEC35F0E552B6EF4E -:105BF00035F0B1EC35F0050E0DEC37F0010ECAECC6 -:105C000037F0CEEC37F0E66AD950030FFBEC36F0F4 -:105C1000E66AD950040F1EEC38F010E1DF50926EA6 -:105C2000010EDB50936E020EDB50946E030EDB50C0 -:105C3000956E040EDB50966EEAEC35F0050EE15CD5 -:105C400002E2E16AE552E16EB6EF35F0B1EC35F013 -:105C5000FE0EDB50100805E2100EF36EFE0EF3CFC1 -:105C6000DBFFFD0EDB502BE0FE0EDB5076EC4CF044 -:105C7000F35004018E13F4508F13080EF36EFE0ED2 -:105C800082EC36F00DE2010EF36EFE0EDB5003E007 -:105C9000E0EC35F0FDE1F350F31C0F0148173DD067 -:105CA000FE0EDB500C0839E3DEEC36F004E0E8468B -:105CB000FE0B4E06FCE1E81C0F0149172ED0FE0E2C -:105CC000DB5076EC4CF0F3CF4EF0F4CF4FF04E1E9D -:105CD0004F1E4E5004018E174F508F17080EF36E53 -:105CE000FE0E82EC36F00CE2010EF36EFE0EDB507F -:105CF00003E0E0EC35F0FDE1F3500F0148130DD067 -:105D0000FE0EDB500C0809E3DEEC36F004E0E8465A -:105D1000FE0B4E06FCE10F014913B6EF35F022EC05 -:105D200038F0CAEC37F0010F1EEC38F00AE1010E32 -:105D3000DBCFE6FFDFCFE6FF89DFE552E552EAEC95 -:105D400035F0020EE15C02E2E16AE552E16EB6EF87 -:105D500035F022EC38F099EC35F037EC36F027E1ED -:105D6000010EDB5002E1DF50896E18EC37F01FE1C5 -:105D7000010EDB5002E1DF508A6E18EC37F017E1BC -:105D8000010EDB5002E1DF508B6E18EC37F00FE1B3 -:105D9000010EDB5002E1DF508C6E18EC37F007E1AA -:105DA000010EDB5002E1DF508D6EEAEC35F0020EA1 -:105DB000E15C02E2E16AE552E16EB6EF35F0010E18 -:105DC000E66EE66E29EC37F080501DEC37F081501E -:105DD0001DEC37F082501DEC37F083501DEC37F08E -:105DE00084500DEC38F09DEF35F073EC36F0C80EB2 -:105DF0004E6E940E21EF37F0F3EC37F0DF6A010EB0 -:105E0000F36EDB6E020EDB6AE66A010EE66E29ECCB -:105E100037F09DBCFED7DF6ADFCF4EF0100EE76E85 -:105E20004E18E8AE02D0E73402D0E7504E5C3BE2B9 -:105E3000010EDB5004018E1500014E6E020EDB5088 -:105E400004018F1500014F6E4E504F101FE02C0EB5 -:105E5000BAEC35F0C9EC35F04EAE03D04F6850685F -:105E60005168F7EC37F03A0EBAEC35F0DFCFE9FFC6 -:105E7000EA6AE9BEEA6839EC37F0EA22EECF4EF082 -:105E8000EFCF4FF0506A516AF7EC37F0C2EC36F0C2 -:105E9000D8904E364F36010E4EC0DBFF020E4FC07B -:105EA000DBFFDF2AB9D7020EB7EC37F0030EE15C57 -:105EB00002E2E16AE552E16EB6EF35F0EFEC37F061 -:105EC000030ECAEC37F0020F1EEC38F00AE19FEC2B -:105ED00037F005E27DEC36F0020EDBCFEFFFEAECA7 -:105EE00035F0030EE15C02E2E16AE552E16EB6EFE5 -:105EF00035F0F3EC37F063EC37F0030E99EC35F046 -:105F0000040184510DE19FEC37F005E27DEC36F0A1 -:105F1000020EEFCFDBFF020E98EC36F015EC37F0F7 -:105F2000030EE15C02E2E16AE552E16EB6EF35F0A4 -:105F300017EC38F001E090D0020EDB50010801E2CE -:105F400087D0010EDB50070801E282D0410EF3EC4E -:105F500035F016E1020EDB500AE1EFEC35F003E01C -:105F6000E0EC35F0FDE1F350F31C921673D0EFEC4A -:105F700035F003E0E0EC35F0FDE1F35092126AD029 -:105F8000420EF3EC35F016E1020EDB500AE1EFECC5 -:105F900035F003E0E0EC35F0FDE1F350F31C93162F -:105FA00059D0EFEC35F003E0E0EC35F0FDE1F350D3 -:105FB000931250D0430EF3EC35F016E1020EDB5095 -:105FC0000AE1EFEC35F003E0E0EC35F0FDE1F350F1 -:105FD000F31C94163FD0EFEC35F003E0E0EC35F025 -:105FE000FDE1F350941236D0440EF3EC35F016E197 -:105FF000020EDB500AE1EFEC35F003E0E0EC35F0A7 -:10600000FDE1F350F31C951625D0EFEC35F003E0DD -:10601000E0EC35F0FDE1F35095121CD0450EF3ECA9 -:1060200035F016E1020EDB500AE1EFEC35F003E04B -:10603000E0EC35F0FDE1F350F31C96160BD0EFECDD -:1060400035F003E0E0EC35F0FDE1F350961202D0BC -:10605000848D02D0EAEC35F0030EE15C02E2E16AE5 -:10606000E552E16EB6EF35F0F3EC37F0020EDB6A85 -:1060700063EC37F0050ECAEC37F0010F1EEC38F078 -:1060800060E1010EDB50070850E3410EF3EC35F000 -:106090000AE1EFEC35F003E0E0EC35F0FDE1F35020 -:1060A000801439E029D0420EF3EC35F00AE1EFEC30 -:1060B00035F003E0E0EC35F0FDE1F35081141CE134 -:1060C0002AD0430EF3EC35F00AE1EFEC35F003E0B3 -:1060D000E0EC35F0FDE1F35082140EE11CD0440EEB -:1060E000F3EC35F00BE1EFEC35F003E0E0EC35F0EC -:1060F000FDE1F35083140FE0010E10D0450EF3ECD8 -:1061000035F013E1EFEC35F003E0E0EC35F0FDE1C4 -:10611000F350841402E1000E01D0010EE76E020E6E -:10612000E7CFDBFFDB5008E002D0848D0AD0010E00 -:10613000F36E020EF3CFDBFF020E98EC36F015EC97 -:1061400037F0030EE15C02E2E16AE552E16EB6EF80 -:1061500035F017EC38F001E090D0020EDB5001086A -:1061600001E287D0010EDB50070801E282D0410E28 -:10617000F3EC35F016E1020EDB500AE1EFEC35F0FE -:1061800003E0E0EC35F0FDE1F350F31C891673D029 -:10619000EFEC35F003E0E0EC35F0FDE1F35089126F -:1061A0006AD0420EF3EC35F016E1020EDB500AE144 -:1061B000EFEC35F003E0E0EC35F0FDE1F350F31CDB -:1061C0008A1659D0EFEC35F003E0E0EC35F0FDE154 -:1061D000F3508A1250D0430EF3EC35F016E1020E64 -:1061E000DB500AE1EFEC35F003E0E0EC35F0FDE1E7 -:1061F000F350F31C8B163FD0EFEC35F003E0E0ECEE -:1062000035F0FDE1F3508B1236D0440EF3EC35F04F -:1062100016E1020EDB500AE1EFEC35F003E0E0ECB2 -:1062200035F0FDE1F350F31C8C1625D0EFEC35F082 -:1062300003E0E0EC35F0FDE1F3508C121CD0450E8C -:10624000F3EC35F016E1020EDB500AE1EFEC35F02D -:1062500003E0E0EC35F0FDE1F350F31C8D160BD0BC -:10626000EFEC35F003E0E0EC35F0FDE1F3508D129A -:1062700002D0848D02D0EAEC35F0030EE15C02E23C -:10628000E16AE552E16EB6EF35F0D9CFE6FFE1CF36 -:10629000D9FFE652DF6AFF0EDF5C0AE2E868E850E9 -:1062A00005E0E80600D000D000D0F9D7DF2AF3D708 -:1062B000E552E552E7CFD9FF1200F29EF29C6592BB -:1062C000656AE3DF0FEF00F01200F29EF29C659228 -:1062D000656ADBDFFF00120073EC36F08050080BBC -:1062E00001E0010E0DEC38F00101C3B103D0020E44 -:1062F000B7EC37F0EAEF35F0B1EC35F0060E0DEC07 -:1063000037F0070E99EC35F0010EE66ED950040F08 -:10631000FBEC36F0E76E050EE7CFDBFF040184519E -:1063200016E1DFCFC2F4010EDBCFC3F4020EDBCFE8 -:10633000C4F4030EDBCFC5F4050EDB5006E1040EFA -:10634000DB5002E0898601D08996EAEC35F0060E32 -:10635000E15C02E2E16AE552E16EB6EF35F0B1ECE4 -:1063600035F0100EE12609EC38F0E7DBE66AD9508B -:10637000010FC4EC35F0E66A63D912EC37F0E66A37 -:10638000BCEC37F0010ECAEC37F0040FC4EC35F06A -:10639000020ECAEC37F0020FC4EC35F0030ECAEC63 -:1063A00037F00A0FF1DB060ECAEC37F0060FECDB14 -:1063B000070ECAEC37F00E0FE7DB040ECAEC37F01D -:1063C0000F0FE2DB050EB5DBEC0E4E6E8B0EABDB7A -:1063D000010E98EC36F04EAE03D04F68506851680D -:1063E000DBEC37F0E40E4E6E8B0E9DDBD2DB15EC52 -:1063F00037F0DC0E4E6E8B0E96DB040EDBCF4EF0CC -:10640000050EDBCF4FF0506A516A4FAE02D0506894 -:106410005168DBEC37F0D40E4E6E8B0E84DB020E2F -:10642000DBCF4EF0030EDBCF4FF0506A516A15EC14 -:1064300037F0CC0E4E6E8B0E76DBD9500A0FB4DBE4 -:1064400027EC38F068EC37F0D950060FADDBE6ECFE -:1064500037F073DBBC0E4E6E8B0E65DB0E0E85ECDB -:1064600037F0B40E4E6E8B0E5EDB0F0E85EC37F000 -:1064700068EC37F0080EE66E2EEC37F068EC37F07B -:10648000E66A2EEC37F0A6DB100EE15C02E2E16A70 -:10649000E552E16E6BD350EC37F0DF6A110EDF5C32 -:1064A00004E2BADBEF6ADF2AF9D7A5EC37F0DF6A3E -:1064B000100EDF5C21E2B0DBEF5080081DE3ACDBA7 -:1064C000EFCF4EF0200E4E5C17E3A6DBEF50E66EEA -:1064D000180E02014F6AFA254E6EFB518CEC36F015 -:1064E0009BDBEF50E66E020E4F6AFC254E6EFD51AF -:1064F0008CEC36F0DF2ADCD7DF50E824180FFAC224 -:10650000E9FFFBC2EAFFEF6EDF50E824020FFCC296 -:10651000E9FFFDC2EAFFEF6EE55228D305EC38F043 -:10652000DF6A09EC38F0010EDB6A110EF36E010E22 -:10653000E9DB0BE2010EDB50EA6AD50FE96E040ECF -:10654000EA22EF6A010EDB2AF0D7100EE66EC1ECEC -:1065500037F039D8FBEC37F0DF6EE668FB0EE66EFD -:10656000E66AAAEC37F0E8EC49F0ADEC36F04FDB28 -:10657000B2EC47F0F2DB2EDB020EE15C02E2E16AF4 -:10658000E552E16EF3D250EC37F0ADDBDF6A110E6D -:10659000DF5C04E241DBEF6ADF2AF9D7A5EC37F0D4 -:1065A000800E0401D55D09E2D551200806E2C1EC58 -:1065B00037F0ABEC46F0E552E5520101C3A1BDDA7C -:1065C00009DBE552D3D250EC37F0DF6A57DBEF6AD4 -:1065D000FFEC37F002E1848906D0FFEC36F02C089E -:1065E00004E0DEEC37F0000E29D0D7DA04E1010E2A -:1065F0004F1801E1B86B0D0E10EC38F00AE02C0ECC -:106600004F6EFFEC36F04F5C04E0FC0EDB50DF5CBD -:1066100002E3DF5013D0F3DBE66E30DBE552E750E8 -:10662000EF6EBBDA04E1010E4F1801E1B86BDF2A0F -:10663000FD0EDB2AFE0EDFE3DB2ADDD7E55296D224 -:1066400090DA090EE126080EDB6AFFEC37F005E16F -:10665000FB0EDB501AE1848918D0D1DB2C0807E04F -:10666000FB0EDB5002E1DEEC37F0020E1AD195DAB8 -:1066700004E1010E4F1801E1B86B0D0E10EC38F07B -:1066800006E1FB0EDB5001E18489030E0AD12D0ED9 -:1066900010EC38F020E1040E4FDB1DE0050E506ECB -:1066A000FE0EDB50505C17E0FE0EDB0401E1C0D0B3 -:1066B000030E2DDB01E1BCD0070E3EDB01E1B8D0BB -:1066C000010EF36E080EF3CFDBFF67DA04E1010E73 -:1066D0004F1801E1B86B040E1ADB09E0050E2CDB44 -:1066E00006E00A0EEFDAE6D8FBEC37F031D014EC16 -:1066F00038F0EFCF4EF0000E4EC0DFFF4ADB050E44 -:1067000006DB1FE1000EDFCFE6FF010EDBCFE6FF69 -:1067100043EC4CF0E552E552F3CF4EF0F4CF4FF09E -:10672000506A516A4FAE02D0506851684EC0DFFFC8 -:10673000010E4FC0DBFF020E50C0DBFF030E51C045 -:10674000DBFF04012ADA04E1010E4F1801E1B86B06 -:10675000080EDB5040E0FE0EDB5006E152DA800E00 -:106760006FDA000EEE5412E3020ED1DA06E149DAD6 -:10677000000EEE54800E64DA09E3060EDDDA08E15D -:1067800040DA000E5DDA800EEE5402E2040150D0D1 -:106790007CDA080EDB5053E0040EDBCF40F0050E30 -:1067A000DBCF41F0060EDBCF42F0070EDBCF43F02C -:1067B00045684668476848688AEC4BF0040E3CC060 -:1067C000DBFF050E3DC0DBFF060E3EC0DBFF070E04 -:1067D0003FC0DBFF34D0FE0EDB5006E112DA7F0E45 -:1067E000EE54000E2DDA23E3FE0EDB0404E179DB28 -:1067F000000E26DA1CE3020E8ADA04E172DB7F0E59 -:106800001FDA15E3030E98DA04E16BDBFF0E18DAEA -:106810000EE3060E506EFE0EDB50505C0CE161DBA9 -:10682000FF0EEE54FF0EEE547F0EEE5404E2040110 -:10683000848D010E36D0070E6ADA01E026DAFE0EEC -:10684000DB50070A21E0010A17E0050A11E0010AFE -:106850000FE0030A08E0050A06E0010A04E0050A61 -:1068600002E0040E1ED027DA040EDBCFEFFF18D0B3 -:1068700078DBDBCFEDFF14D074DBDBCFEEFF060E51 -:10688000DBCFEEFF070E0AD016DADFCFEEFF010EE8 -:10689000DBCFEEFF020EDBCFEEFF030EDBCFEEFF12 -:1068A000000E4E6E090EE15C02E2E16AE552E16E15 -:1068B0004E505CD1AADBE2D9EE6AEE6AEE6AEE6A6D -:1068C000010EDB6AFC0EDB50F36E010E1BDA4EE2AA -:1068D0000401AADBEFCFDFFF300EDF5C42E3DF50C5 -:1068E00039083FE3CBD9EECF4EF0EECF4FF0EECFED -:1068F00050F0EFCF51F00A0E456E466A476A486A7B -:106900004EC040F04FC041F050C042F051C043F083 -:106910008AEC4BF03CC04EF03DC04FF03EC050F012 -:106920003FC051F0300EDF5C526E536A546A556AB4 -:10693000E8504E2653504F22545050225550512269 -:106940009DD94EC0EEFF4FC0EEFF50C0EEFF51C0CC -:10695000EEFF040122D907E1010E4F1804E1B86BE4 -:1069600002D0000E04D0010EDB2AACD7010E4E6E11 -:10697000020EE15C02E2E16AE552E16E4E50F6D0B1 -:106980008A0E4E6E8B0ECFD87EC44EF0FFDA15EF16 -:1069900037F00501BC5108E0010E4E6E6550020B48 -:1069A00001E0010E4E5C17E1D2D90BE1ED51EE1181 -:1069B00011E18C86A00EED6F0F0EEE6F010EEF6FE2 -:1069C0001200ED51EE1152E18C96A00EED6F0F0EFC -:1069D000EE6FEF6B1200BC0509E0020EBC5D06E035 -:1069E000040EBC5D03E0100EBC5D17E1B0D90BE1F5 -:1069F000ED51EE1111E18C86200EED6F4E0EEE6F13 -:106A0000010EEF6F1200ED51EE1130E18C96200E69 -:106A1000ED6F4E0EEE6FEF6B1200200EBC5D26E1A7 -:106A200096D907E1ED51EE1121E18C86DAD9010EFC -:106A300015D0EF0507E1ED51EE1118E18C96D1D993 -:106A4000020E0CD0020EEF5D0BE1ED51EE110EE1E6 -:106A50008C86A00EED6F860EEE6F030EEF6F1200A8 -:106A6000ED51EE1103E18C96BCD9EF6B120079D891 -:106A7000ACD9E8AE02D04E3403D0E750D8804E54A3 -:106A800023E3FD0EDB5010E011D9F6BEF768AFD856 -:106A900004E0E846FE0B4F06FCE14E6E07D9F6BE59 -:106AA000F76801DAEF1210D001D9F6BEF7689FD867 -:106AB00004E0E846FE0B4F06FCE1E81C4E6EF6D8FB -:106AC000F6BEF768F0D9EF1651D04BD87ED9E8AEB4 -:106AD00002D04E3403D0E750D8804E5423E3FD0E4D -:106AE000DB5011E1E3D8F6BEF76881D804E0E84650 -:106AF000FE0B4F06FCE1E81C4E6ED8D8F6BEF768D8 -:106B0000DAD9EF160FD0D2D8F6BEF76870D804E005 -:106B1000E846FE0B4F06FCE14E6EC8D8F6BEF7689D -:106B2000CAD9EF1223D0ACD9FBEF37F06FD9E6EF1B -:106B300037F0E66E85DD12EF37F0010EB7EF37F074 -:106B4000EA6A000FE96E030EEA22120082D9E66AB1 -:106B5000BCEF37F09951E96EEA6AD890E936EA3627 -:106B60001200D9CFE6FFE1CFD9FF1200E552E7CFFF -:106B7000D9FF1200E66E83EC26F0E5521200506A4F -:106B8000516A6ADA98EF37F0E66E000EDA20E66EA8 -:106B90001200DFCF4EF0C6EF37F0B82BB8514E6E73 -:106BA0004F6A000E4E181200E96EDACFEAFFEECF00 -:106BB000E6FFEECFE6FFEECFE6FFEFCFE6FF1200F7 -:106BC000D890F336E8061200EA22EECF56F0EFCF67 -:106BD00057F01200E66A0DEC2AF0E5521200010EA1 -:106BE000F36EDB5012004E6EDF504E5C1200590EF9 -:106BF000F626950EF7220800F5504F6E010E4F5203 -:106C00001200D9CFE9FFDACFEAFFD8801200B9D954 -:106C1000100EE66EAAEF37F0DF50EA6AD50FE96E84 -:106C2000040EEA221200F7220900F5CFE9FF08005E -:106C3000F5CFEAFF4E5012004E6EA8D9E66E120054 -:106C4000EE54000EEE54000EEE541200DF6EDFCF55 -:106C5000E6FFB6514F6A000F4E6E020E4F224EC035 -:106C6000E6FF4FC0E6FF04EC44F0FBEF37F0E76EC1 -:106C7000010EE7CFDBFF040184511200FD0EDBCFD4 -:106C8000E9FFFE0EDBCFEAFF1200D9CFE9FFDACF32 -:106C9000EAFF040EEECFDBFF050EEECFDBFF060EA4 -:106CA000EECFDBFF070EEECFDBFF1200FE0EDBCFD9 -:106CB000F6FFF76A1200FC0EDBCFE9FFFD0EDBCF1B -:106CC000EAFF1200E66EBCEF37F09951EA6A710FE5 -:106CD000E96E000EEA22EF500001EA6A9C25E96E97 -:106CE0009D51EA221200010EE66EE66A29EF37F0A6 -:106CF000DECF4EF0DDCF4FF01200DECFE9FFDDCF6B -:106D0000EAFF1200DBCFF4FFF350F45C12004E6E8A -:106D1000FE0EDB504E5C12004F22DF50E8244E2462 -:106D2000E96E000E4F20EA6EE552E750EF6E12005A -:106D3000DBCF4EF0C6EF37F04F6EFE0EDB504F5CF0 -:106D40001200C7C4E6FF83EC26F0E55212000401EE -:106D5000ED07000EEE5BEF5112004E6E080EE15E85 -:106D60004E501200030EDB50EA6A400FE96E020E2D -:106D7000EA221200EF50E66EE66A43EC4CF0E55270 -:106D8000E5521200010EDBCF4EF0020EDBCF4FF0CA -:106D90001200010EDB6A020EDB6A030EDB6A1200D0 -:106DA0000401B76BB86B0401010EEB6F1200030E08 -:106DB000E66ECDC44EF0CEC44FF01200FE0EDB5096 -:106DC000F80F4E6E010E4E521200FE0EDBCF4EF04B -:106DD000190EE76E4E181200EA22EF6ADF2A010E42 -:106DE0001200100EED6F270EEE6F1200D2DEFFD8EC -:106DF0002C0EBAEF35F0C8DE010E99EF35F014D93C -:106E0000EF501200E1DEE6D8EA2212004FC0E6FFA2 -:106E100050C0E6FF51C0E6FF1200E126E66AE66ACE -:106E2000A6EF35F0E8D8E5521200E1D89DEF35F035 -:106E3000010E48DF7EDE37EF36F0EFD82C0EBAEFCA -:106E400035F071DE9DEF35F085DE890EE926000E06 -:106E50001200EFEC29F0E552E5521200D950060F6E -:106E6000A3DEB7EC46F04E6E050EE15E4E509DEF90 -:106E700035F0D890E936EA36000EE926010E120008 -:106E80004F6E506A4EC0E6FFE66E50C0E6FF9AEFC6 -:106E900046F070DE270E6EDE50DE0401848B120099 -:106EA00060DEE6521200D890F636F736270EF62648 -:106EB000950E13EF36F0D890F636F736F50EF62627 -:106EC000940E13EF36F0010EE66EE66EA6EF35F087 -:106ED000C40E4E6E8B0E93EF35F00401B751A0EF48 -:106EE00035F08FDEFF0EEE54120074D8E4EF35F06B -:106EF000FF0E4E6E8B0E17DEA1EF36F03A0E3ADE25 -:106F0000020EE66EC7C44EF01200DBCFE6FF83EC44 -:106F100026F0E5529DEF35F0EBDE400E4E5C000EA4 -:106F20004F581200040EDB500BDEEF502C081200FD -:106F3000B7EC46F0526E050EE15E52501200D8DEFC -:106F4000000E4E5C100E4F58120061DE08EC4BF044 -:106F5000ADEF36F0E66AE66AF80EE66EE66AE66AD5 -:106F60001200A9DE040EDBCFEEFF050E1200E66E66 -:106F70000DEC2AF0E5521200D9CFE6FFDACFE6FF9A -:106F80001200D50EE66E040EE66E12004F6A506ACD -:106F9000516A1200CEDDE66AD9501200010F2BDFD4 -:106FA000E66AD950020FFBEF36F0D4DD790EE92600 -:106FB000000E02EF37F050D827EF38F0920E4E6EE9 -:106FC0008B0EB1DD04011BDF49EF37F0F1EC46F029 -:106FD00012EF37F0BFDD610EE926000E1200C1DDB1 -:106FE000030E0DEF37F0BDDD030EE12612004EC09B -:106FF000E6FF96EF35F0E552E552E55212000D0E30 -:107000004E6E0401FCDE4E5C1200ABDD020EE1268A -:107010001200E66AE66A29EF37F00EDE96EF35F0E9 -:107020004E6EEDDE4E5C1200B851A0EF35F0D7DFAA -:10703000050EB0DFB3DF040184511200DCDE040171 -:10704000845112008EDD020EE8DE010E12000DECFE -:1070500047F0E8DE9DEF35F04EC0E6FF06EF37F073 -:107060009AEC3EF0A098636A626A0F01266B79EC95 -:107070003EF00F0138EC3EF0DF6ADF504E6E4F6A93 -:107080000C0E4E5C000E4F5810E2DF50040DF3CF93 -:10709000E9FFF4CFEAFF000EE926040EEA22EE6AC9 -:1070A000EE6AEE6AEE6ADF2AE8D7658C0F01386B6C -:1070B0006598659C62A607D062960501D36BD86B74 -:1070C000D96BDA6BF7D70501010EEC6FED6FEE6B44 -:1070D000EF6BE06BDF6A030EDF5C11E2EA6ADF341C -:1070E0009DEC3EF0EA22EE6AED6AEA6ADF34A4EC37 -:1070F0003EF0EA22EE6AED6AF9EC3DF0ECD70501CC -:10710000080EC96F040ECA6F0F01160E266F040118 -:10711000300E026F040E036F400E016F840E006F7D -:107120000501BD6BBC6BE552CBEF3DF09AEC3EF038 -:1071300082BE06D0656A0F01366B0501BC6B6FD04D -:107140000501BC510CE1656A0F01366B38EC3EF06D -:1071500065B602D06586FCD70501010EBC6FBC0583 -:107160000AE165BA08D0626A0F01366B368136894A -:107170000501020EBC6F6250040B06E00F01365190 -:10718000040B02E0629447DB65B249D06250010B08 -:1071900009E00F013651010B05E062DF0501040E25 -:1071A000BC6F62906250100B06E00F013651100B5D -:1071B00002E026DB629862AC10D00F0136AD05D03C -:1071C0003FEC3EF0730EB8EC3DF0629C0501EA51D5 -:1071D00001E0EA07EA5101E1F4D86250200B05E032 -:1071E0000F013651200B01E0FADA6250020B0CE07D -:1071F0000F013651020B08E03FEC3EF0E6687F0ECF -:10720000E66EABEC3EF0636A040E0501E76EBC1956 -:10721000E8AE02D0E73402D0E750BC5D02E2A198AC -:107220002FD00F0136A72BD0DF6A040EDF5C27E2D8 -:1072300062A625D064CFE1F50501E151780BE84263 -:10724000E842E842E26F6296E1B504D0E251B2EC66 -:107250003EF003D0E251B7EC3EF0EA22EF70E2518B -:1072600002E1E6DA0AD0000EE66EE66AE10EE66EAC -:10727000050EE66E720EB8EC3DF0DF2AD6D7A19867 -:10728000E552CBEF3DF06BEC3EF0FD0EDBA403D0FE -:10729000E66A30EC3EF0FD0EDBA204D0010EE66E95 -:1072A00030EC3EF0FE0EDB504F6A260F4E6E0F0E96 -:1072B0002AEC3EF0BCEC3DF0FD0EDBCFEFFF020E02 -:1072C000E15C02E2E16AE552E16ECBEF3DF06BEC8E -:1072D0003EF0FD0EDB5003E0B3EC3DF002D0EAECF3 -:1072E0003DF016EC3EF0D9CFE9FFDACFEAFFEE50E1 -:1072F000ED1003E1F36AF46A28D0BCEC3DF0C6EC73 -:107300003EF0FB0EDBCFEEFFFC0EDBCFEDFFBCEC67 -:107310003DF0EE52FA0EDBCFEFFF400EBCEC3EF03C -:10732000880ECBEC3EF0FD0EDB5003E0B3EC3DF0FD -:1073300002D0EAEC3DF0EA22EF74DECF4EF0DDCF72 -:107340004FF04EC0F3FF4FC0F4FF020EE15C02E2CB -:10735000E16AE552E16ECBEF3DF06BEC3EF0FE0EE4 -:10736000DB5003E182EC3EF009D0EFEC3DF059EC4C -:107370003EF0EFEC3DF0010F59EC3EF0020EE15C07 -:1073800002E2E16AE552E16ECBEF3DF0C6EC3DF082 -:1073900065A816D093EC3EF0400EEE16EE6AEE6A4B -:1073A000EE6A93EC3EF0EE7CDEDBEA22EF74400EF8 -:1073B0004E6E93EC3EF04E50EF1693EC3EF0EF7CA9 -:1073C000EAD30501EC5122E1010EEC6FED511EE113 -:1073D000010EED6F020ED05D07E1D3DBEE52EF6AD6 -:1073E000D0DBC80EEF6E1200D00510E1E36BDFDBDF -:1073F000EE52400EEF6EDBDB65EC3EF0D8DB840E28 -:10740000EF6E010EE36FABDB800EEF6E1200050135 -:10741000EE6BEF6B020ED05D06E1C0EC3EF0CCDB14 -:1074200054EC3EF010D0D4510401365D0501D55125 -:107430000401375904E236C4D4F537C4D5F561D810 -:10744000A0DBBADB9EDBC80EEF6E12006BEC3EF0E9 -:10745000000EDE6E040EDD6EC2DB040DF4CF4FF0C5 -:10746000D9CFE9FFDACFEAFFF350EE264F50ED22F5 -:1074700083DBEF9EFD0EDB5002E1ACDB01D073DB62 -:10748000EA22DECFEEFFDDCFEDFF76DBEF9C74DB93 -:10749000040EE926000EEA22EF8C020EE15C02E205 -:1074A000E16AE552E16E77D365980501D3BF0DD04F -:1074B000D8AF09D0020ED06FEF5101E1A8DF05016E -:1074C000ED6BEC6B120082EF3EF0040130AF0DD09B -:1074D0000501010ED06FEE5101E199DF0501ED6B61 -:1074E000EC6BEB510DE1E1EF39F00501020ED06FCD -:1074F00036DB840EEF6EED6BEC6BEB5101E161DF7F -:1075000012009AEC3EF0400EDF6E0501D45D000ED5 -:10751000D5590AE2D4C5DFFFCF5102E1010E03D0F5 -:10752000CF0502E1020ECF6FDF504F6AE850D45D05 -:10753000D46F4F50D559D56F24DBEE52DFCFEFFF1C -:10754000380EDD6F040EDE6FD3B10DD0DF5017E0C3 -:10755000D1C5F6FFD2C5F7FFD12B000ED22308000C -:10756000F55057DBF3D7DF500AE0D1C5E9FFD2C5AC -:10757000EAFFD12B000ED223EF504BDBF4D7E552BC -:107580000AD3A9DB14DBEE52EFCFDFFFDFCF4EF0E3 -:107590004E500501D95D000EDA5902E2D9C5DFFF70 -:1075A000DF504E6E4F6AE850D95DD96F4F50DA59AF -:1075B000DA6F010EDB6ADF50F36E010EDBCFF4FFF2 -:1075C000F350F45C16E2010EDB50EA6A380FE96E04 -:1075D000040EEA22EF50E66ED6C5E9FFD7C5EAFFF2 -:1075E000D62B000ED723E552E750EF6E010EDB2AB3 -:1075F000E2D7000ED880D955000EDA550DE2C0DB77 -:10760000DBDAD5DAEF50400B03E14EDBC80E02D0D7 -:107610004BDB880EEF6E12D0A2DA840EEF6EDB51D8 -:10762000DC1107E005D0DCC5FAFF0501DB51F96E7E -:10763000FADF0501D89FEB5101E1C3DE020EE15CE8 -:1076400002E2E16AE552E16EA6D274DB0501D38F56 -:1076500050DB300EE66EE66AE66A000EE66E040E59 -:10766000B1DA658CDF6A030EDF5C02E2C2DAFBD7B7 -:10767000010EE66EE66AE66ABE0EE66E050EA2DA58 -:10768000659C0501080EC96F040ECA6F000EBF6F1E -:10769000040EC06FBFC5C1F5C26F32C4BDF5BD5188 -:1076A00002E1100E0BD0010EE66EE66ABD0EE66E2C -:1076B000050EE66E010E5CDA0501200EBC6FE55288 -:1076C0006AD2800E0401305D4EE10501C00ED36F19 -:1076D00004013351030A25E0010A09E0030A41E1EC -:1076E0000501840ED16F970ED26F120E34D0325135 -:1076F000F66EF76AD890F636F736D90EF626970E5C -:10770000F7220900F5CFD1F50A00F5CFD2F5020E28 -:107710000501BCDAF5CFD4F5030EB8DAF5CFD5F50F -:107720001200040E325D1AE20501D38104013251C8 -:10773000E96EEA6AD890E936EA36F60EE926020ED4 -:10774000EA22EECFD1F5EDCFD2F5D1C5E9FFD2C512 -:10775000EAFFEF500501D46FD56B12000501D36B22 -:1077600012000501D36B1200B6DA0401386B396BD5 -:1077700030511F0B020A11E0030A0CE0010A1EE15E -:107780000501D38F040138810501DF0517E10401EC -:10779000388314D00501D38F11D00501D38F040194 -:1077A00034BF02D0B6DA01D0B9DA40DABFDA06E087 -:1077B000E3D9EF50040B02E0010E386F0501D3AF9F -:1077C00007D0380ED16F040ED26FD381020ED46F62 -:1077D000020EE15C02E2E16AE552E16EDCD10F01EA -:1077E00026A10CD0E4D9EF50800807E1CAD9EF50A8 -:1077F000840803E1DCD98C0EEF6E2691629A1200A8 -:107800000F013685629865820501010EE06F14DA7A -:10781000750EB8EF3DF00501E06B0EDA740EA8D9D5 -:1078200065920F01369562A402D06294FCD71200D3 -:1078300081DA05012D0EEA6FFD0EE11539E17E0EAC -:10784000E115E8407F0B040DF3CFBFF5F4CFC0F591 -:10785000000EBF27040EC023BFC5C1F5C0C5C2F5C9 -:10786000C175A5D9EF503C0BE842E8420D081EE176 -:10787000DF6A080EDF5C16E29AD9020EE926000ED6 -:10788000C2D9EF50E66EDF50EA6A300FE96E040E9F -:10789000EA22E552E750EF6E8AD978DAEE2AEF2233 -:1078A000DF2AE7D784D911DA0AD807D023D805D040 -:1078B000FD0EE115040801E12CD8E5526CD105015B -:1078C000CF6BEB6BEE6BEF6BE36BD06B5AD9EF9E2C -:1078D000C97557D9EF9EC975E7D9EF9ED36BD46BA5 -:1078E000D56BD86BD96BDA6B51D8A6D9030E40D9BA -:1078F00054EF3AF0020E0501D05D02E1C1EF3AF01B -:10790000D06BE35104E12BD98C0EEF6E1200E36BC8 -:10791000120010DA36D9EF50400B01E0010EDF6E95 -:107920000501C975080EBC5D0BE132C438FF0F01BB -:10793000385103E00501100E02D00501040EBC6FA2 -:10794000D00513E11ED938D9DCDD020E0501CF5D6B -:1079500003E117D9840E07D0DF5003E112D9C80E16 -:1079600002D00FD9880EEF6E0FD0D8AF0CD0DB51FC -:10797000DC1107E005D0DCC5FAFF0501DB51F96E2B -:10798000FADF0501D89FD06BE55205D104013051D3 -:10799000600BE842E842E842E842E842000901E0C0 -:1079A000120031510C0A45E00B0A3FE00C0A31E0AD -:1079B000010A22E00B0A1EE0020A1CE0030A18E09A -:1079C000080A10E0010A0CE00F0A08E0030A01E0CF -:1079D00012000501D38F080EBC6F120061EF3BF05F -:1079E00025EF3BF00501BD0ED16F050ED26F0CD017 -:1079F000B4EF3BF01AEF3DF034510501D16FD26B7B -:107A0000BE0ED127050ED223D381010ED46FD38FA2 -:107A100012000501D38F04013451EA6ABE0FE96EEA -:107A2000050EEA2232C4EFFF120006D9020EB8EFAB -:107A30003DF01200ABD8050EE1260401320510E13D -:107A400030511F0B00090CE10501D38F030E040117 -:107A5000315D04E10501010EDF6F02D00501DF6B2E -:107A60000401325101E074D030511F0B020870E163 -:107A700034510F0B00096CE034510F0B020868E31E -:107A8000200E0501BC5D64E1D38F040134BF04D036 -:107A900040D9CCD8D7D803D041D9C8D8D7D8EA2232 -:107AA000020EEFCFDBFFF9D8010B03E1000EDF94EC -:107AB00001D0DF8434BF02D02CD901D02FD9EA22E3 -:107AC000DECFEEFFDDCFEDFF030E315D0CE12ED9F1 -:107AD00007E034BF02D0B6D801D0B8D8EA22EF828E -:107AE000840E59D935D0DF7421D906E045D8EF9EF0 -:107AF00043D8EF8CF4D802D03FD8EF8CDF74CDD8C8 -:107B0000020B02E113D90DE0040134BF02D09AD870 -:107B100001D09CD8EA22EF923B0E4E6E2DD9DFD8D1 -:107B200002D03B0E29D9040134510F0B4F6A260FA6 -:107B30004E6E0F0E4F22030E4EC0DBFF040E4FC0E1 -:107B4000DBFF030EDBCFE9FF040EDBCFEAFFEF9094 -:107B5000050EE15C02E2E16AE552E16E1CD010D94B -:107B6000B4D854EF3EF0FE0EEA6ADB349DEF3EF0EF -:107B7000E66EE66AABEF3EF0DECFE9FFDDCFEAFF6F -:107B80001200C9C5E9FFCAC5EAFF1200D9CFE6FF56 -:107B9000E1CFD9FF1200E552E7CFD9FF12003451EF -:107BA0000F0BE96EEA6AD890E936EA361200BFC5D3 -:107BB000E9FFC0C5EAFF1200E9D8380EEE6E040EE8 -:107BC000ED6E1200E66E12EC4CF04E6E050EE15EAC -:107BD0004E501200FE0EEA6ADB34A4EF3EF0FD0EBA -:107BE000DB50E824506EFE0EDB50040DF3505024A1 -:107BF0001200DF50BCD8EA22EF6ADF50B3D8EA2285 -:107C0000EF6ADF2A1200EA22EE50EFCFEAFFE96EB8 -:107C10001200E66EDDC5E9FFDEC5EAFFDD2B000ED2 -:107C2000DE23E552E750EF6EDF061200EA22EECFC8 -:107C3000DEFFEDCFDDFF1200000EE66EE66AE66EB7 -:107C4000E66A120034510F0BB2EF3EF034510F0BC5 -:107C5000B7EF3EF04F224EC0DEFF4FC0DDFF1200F7 -:107C6000FE0EDBCFE6FF26EC3AF0E552E5521200BD -:107C7000160E396F9F0E376F7B0E366F1200010E96 -:107C8000E66EE66A000EE66EE66A1200F76AD12535 -:107C9000F66ED251F72208001200D950020FE96E99 -:107CA000DACFEAFFEF501200C1C5E9FFC2C5EAFF13 -:107CB0001200040DF3CF4EF0F4CF4FF0000E4E261D -:107CC000040EC8DF840ECBEF3EF060D8300EEE6EAF -:107CD000040EED6E12005ADF020EE1261200020EB3 -:107CE000E66EE66ADECFE6FFDDCFE6FF050EB8EF13 -:107CF0003DF0020EE66EE66AE66A270EE66E0F0EAD -:107D0000E2EF3DF02CDF8C0EEF6E3BDF840EEF6E6A -:107D1000120045DFC30EE926050E120040DFC90E32 -:107D2000E926050E12001FDF03EF3EF025DFEF50BE -:107D3000800B12002BDFE6521200FE0BEA36E96ED2 -:107D4000C90EE926050E1200FE0BEA36E96EC30ED7 -:107D5000E926050E1200FEEC48F04E6E060EE15EBE -:107D60004E501200EA6AE70FE96E050E1200EA6A49 -:107D7000E40FE96E050E1200FFDEE850EF16120068 -:107D800093DFEE52400EEF6E54EF3EF0020EE92606 -:0E7D9000000EEA221200F0DEE850EF121200A0 -:027D9E00F6D914 -:107DA000E6520001606B996BDF6A080EDF5C13E23C -:107DB000E7D9610EE926000E12DAC8D9EF6AE0D9D8 -:107DC000790EE926000E0BDADBD9890EE926000EC2 -:107DD00006DADF2AEAD70001C60E9C6F0E0E9D6FF1 -:107DE0003F0E79140009796ECF0E79140009796E6F -:107DF00079827B6A7A6A79900F0152815293F00EF0 -:107E0000B4140909B46E0001080E9A6F030E9B6F3B -:107E1000C60E9E6F3B0E9F6F250EA06F580EA16F72 -:107E2000040EA66F900EA26F010EA36F900EA46FAA -:107E3000010EA56F000EE66EE66A010EE66E7DECA1 -:107E400016F0E552E552E5528996E552A4D19ED945 -:107E5000E652DF6A080EDF5C09E278D9EFCF4EF018 -:107E6000FE0EDB504E5C09E0DF2AF4D7DF6A080E15 -:107E7000DF5C07E26BD9EF5002E1DF2803D0DF2A95 -:107E8000F6D7000EE55287D181D9070EE126DE6ACA -:107E9000DD6A020EDB6A030EDB6A040EDB6A050E86 -:107EA000DB6A060EDB6A010EE66ED9CFE6FFDACF9B -:107EB000E6FF030E39D9020F7AD9010E35D9030F27 -:107EC00076D9030E31D9050F72D9030E80D9E66A2F -:107ED000E66AEFEC29F0E552E5520401845124E111 -:107EE000020EDB50180802E2848D1ED0010EE66EF1 -:107EF000050EDBCFE6FF060EDBCFE6FF030EDBCF82 -:107F0000E6FF040EDBCFE6FF020EDBCFE6FFDECF9F -:107F1000E6FFDDCFE6FF0FD84E6E080EE15E4E5055 -:107F2000E66A0DEC2AF0E552070EE15C02E2E16A36 -:107F3000E552E16E30D12AD9020EE126FC0EDBCFEC -:107F4000E6FF85DFE552E76E010EE7CFDBFFDB5092 -:107F500002E1000EC3D00BD902E1C9D8BDD0010E99 -:107F6000DB044E6E00019A514E5C01E3B5D0FC0E6D -:107F7000DB50180801E2B0D0FC0EDB50070802E12C -:107F80000101C16BD6D810E1E66AFC0EDBCFE6FF3B -:107F900065EC35F0E552E552E66AFC0EDBCFE6FF14 -:107FA00037EC35F0E552E552F70EDB046AE1135089 -:107FB0000F5CFDE2FC0EDB50040801E1C9D809BCEE -:107FC0008BD0D0D8020EEF6EF80EDBCF4EF0F90E4C -:107FD000DBCF4FF0506A516A190E456E466A476A08 -:107FE000486A4EC040F04FC041F050C042F051C00E -:107FF00043F08AEC4BF03CC04EF03DC04FF03EC029 -:1080000050F03FC051F0AED8EE52EE523CC0EEFF01 -:108010004FC0EEFF50C0EEFF51C0EEFF80D8290EDA -:10802000E926000EEA22010EDBCFEFFF78D8260EFC -:10803000E926000EEA22FC0EDBCFEFFF70D8270EF8 -:10804000E926000E7BD86BD82A0EE926000EA7D8A9 -:1080500066D8EE52D880000EEE54000EEE54190E83 -:10806000EE54000EEE5406E25AD8EE52EE6AEE6A74 -:10807000EE6AEE6A102A1350105C01E3106A0F2AB0 -:108080002BD005A029D0FC0EDB50040801E160D8FC -:108090006ED802E12CD812D08FD8890EE926000EB6 -:1080A0007ED88AD8790EE926000E48D88DD8FC0EE5 -:1080B000DBCFEFFF3ED802E19DD840D8FC0EDB506D -:1080C0000001A65D09E10101010EB96F0101B66B66 -:1080D0000101C15101E08A98010EDB504E6E020E83 -:1080E000E15C02E2E16AE552E16E4E5054D06CD898 -:1080F000EF500001EA6A9C25E96E9D51EA22EF6A81 -:108100005BD8890EE926000E6AD856D8790EE92682 -:10811000000E65D859D8EF6A6DD8EFEF40F01050D7 -:108120002F0D61D8EE52120052D8010EE66ED950D2 -:10813000120060D8EA22EE50ED101200EA22FD0E85 -:10814000DBCFEEFFFE0EDBCFEDFF1200DF5057D08E -:108150008986C2C4BEF4C3C4BFF4C4C4C0F4C5C4D9 -:10816000C1F4120010502F0D0501F3EF40F0D9506B -:10817000FD0FE96EFF0EDA20EA6EEE50ED101200F0 -:10818000EA6ADF34FE0BEA36E96E1200D9CFE6FF69 -:10819000E1CFD9FF1200E552E7CFD9FF1200EA2262 -:1081A000FA0EDBCFEEFFFB0EDBCFEDFF1200E66E2B -:1081B000000EDA20E66E1200010EDB04E96EEA6AB8 -:1081C000D890E936EA361200010EDB0418D0E66ECC -:1081D00020EC33F0E552E552E552E5521200EA2276 -:1081E000EE6AED6A1200FA51F324E96EFB51F420B5 -:1081F000EA6E1200E1DF610EE926000E1200EA6A63 -:0A820000710FE96E000EEA22120071 -:06820A003B9E0CD03B9EE0 -:1082100043AE09D0406C411E421E431EE86A412213 -:10822000422243223B8E43C03DF042C03CF041C05D -:108230004DF040C04CF09E0E3E6E3F6ACEEF42F0D5 -:108240003B6A0AEC43F022EC43F03BB6B2EF42F05B -:108250003BA205D03BBAB2EF42F0B9EF42F03BBAD5 -:10826000C5EF42F03BA005D03BB8B2EF42F0C5EFFE -:1082700042F03BB8B9EF42F03F6A7F0E44243E6EB5 -:10828000E86A3F2249503E5EE86A3F5A1A0E4A6E3B -:10829000446A4C6A4D6A3C6A3D6A4650415E4750AA -:1082A000425A4850435A000E445A09E74650412664 -:1082B0004750422248504322000E442201D04C8AAB -:1082C000D8904136423643364436D8904C364D36F7 -:1082D0003C363D364A2EE1D7435042104110D8A4D7 -:1082E0004C8ACEEF42F03B6A0AEC43F022EC43F0BA -:1082F0003BB6B2EF42F03BA205D03BB8B2EF42F042 -:10830000B9EF42F03BAA05D03BB0B2EF42F0B9EF73 -:1083100042F03BB002D03BA802D0C5EF42F03F6A2A -:10832000495044243E6EE86A3F227E0E3E5EE86A73 -:108330003F5A4C6A4D6A3C6A3D6A48504302F4CF4A -:108340003DF0F3CF3CF047504302F3504D26F4503C -:108350003C22000E3D2248504202F3504D26F4507C -:108360003C22000E3D2246504302F3504C26F4506E -:108370004D22000E3C223D2247504202F3504C2633 -:10838000F4504D22000E3C223D2248504102F35051 -:108390004C26F4504D22000E3C223D224650420213 -:1083A000F4504C26000E4D223C223D224750410203 -:1083B000F4504C26000E4D223C223D22CEEF42F0DE -:1083C0003A6AE86A48AEEDEF41F0456C461E471E3A -:1083D000481E4622472248223A1E43AEF8EF41F09B -:1083E000406C411E421E431E4122422243223A1E3D -:1083F000EEEC4BF043BE0FEF42F03AAE000C406C97 -:10840000411E421E431EE86A4122422243223C6C26 -:108410003D1E3E1E3F1E3D223E223F22000C3ABE24 -:10842000FFEF41F03B88FF0C3B6A0AEC43F03BB6A0 -:108430001EEF42F03BA20FD03BB407D07F0E436E3D -:10844000FF0E426E416E406E25D0800E436E01D00D -:10845000436A000EF6D73BB0FBD7406A9F0E4460DC -:10846000EBD77E0E4464F4D79E0E445C07E0D890B0 -:108470004332423241324032442AF6D73BA40AD03A -:10848000406C411E421E431EE86A412242224322A2 -:1084900043AEDED712005DEC42F03BB6000C3BB0C1 -:1084A000000C3BB4000C010C5DEC42F03BB6000C40 -:1084B0003BB0000C3BA4000C010C3B6A0AEC43F0FF -:1084C00022EC43F03BB612003BAE08D03BA004D0F8 -:1084D0003BA802D03B8012003B9012004950445C04 -:1084E0000BE14850435C08E14750425C05E14650CF -:1084F000415C02E13B801200D8A002D03B8E10D03C -:10850000445049C044F0496E435048C043F0486E5F -:10851000425047C042F0476E415046C041F0466E5F -:108520004950445C10E0FF0F09E03B903BB403D09E -:108530003BAE3B8412003BAE3B941200492AD890DC -:108540004832473246324650415E4750425A4850C0 -:10855000435A43BEEAD7D890413642364336442E7A -:10856000F8D7C8D77F0E446EFF0E436E426E416E41 -:1085700012007F0E3BBEFF0E446E02D07F0E446E93 -:10858000800E436E426A416AF3D73BAE04D0800E40 -:10859000446E436AF7D7446A436AF4D73D503C10AF -:1085A0004D104C10F8E03FBEF0D73DBE0CD03E5011 -:1085B0003F10EBE0D8904C364D363C363D363E060B -:1085C000D8A03F06F2D73F50D4E13E28D2E04CAECF -:1085D00011D07F0E4C1402E14DA00CD04D2AE86A58 -:1085E0003C223D2207E3D8803D323C324D323E2AC8 -:1085F0003E28BFE03E50C9E04DC041F03CC042F0D3 -:108600003D34436E3E30446E4332449E3BBE448E06 -:10861000B8EF42F04336443602E33B843B7E06E14A -:108620003B80446A436A426A416A1200442803E07C -:10863000D88043321200D890433202E13B821200CC -:108640003B8612004836493602E33B8C3B7E06E10E -:108650003B88496A486A476A466A1200492803E02B -:10866000D88048321200D8904832EAE13B8A1200A2 -:10867000040130511F0B010801E012003051600B62 -:10868000E842E842E842E842E842010801E012001C -:10869000345103E0340501E012003151220A31E087 -:1086A000030A24E0010A15E0210A0DE0010A01E0B5 -:1086B00012000501B40ED16F050ED26F080ED46FF3 -:1086C000D56BD38121D00501B40ED16F050ED26FC9 -:1086D0001BD036C4D9F537C4DAF50501940ED66F30 -:1086E000050ED76FDB6BDC6BD88F12000501940E83 -:1086F000D16F050ED26F070ED46FD56BC10ED36F3D -:10870000120032C4AFF50501D38F12000501946B3E -:108710004B0E956F966B976B986B996B080E9A6FD3 -:10872000A36B1A0EE66E010EE66E43EC39F0E552CD -:10873000E5521E0EE66E020EE66E43EC39F0E5528F -:10874000E5521CD90501AD6BAE6BA46B120041D98B -:1087500065D9050E421801E1435002E0000E14D025 -:1087600048D90501AB514E1804E1AC514F1801E155 -:1087700005D93FD90501AD514E1805E1AE514F184D -:1087800002E1A46BA96B010E29D123D90501A36BCA -:10879000AB51AC1102E1000E05D032D9EF50800B85 -:1087A00001E0010E00092DE1FC0EDBCF4EF028D9CF -:1087B000EE52EF50D8804E5405E222D9EE52FC0E14 -:1087C000EFCFDBFFA36BFC0EDB50A35D19E2A351DF -:1087D000EA6A540FE96E050EEA22EF50E66EA351E5 -:1087E000E76EFD0EDBCFE9FFFE0EDBCFEAFFE750C1 -:1087F000E926000EEA22E552E750EF6EA32BE3D7FD -:10880000BDD80501A351EAD0E4D80501A45107E180 -:10881000E9D8FC0EDBCFA9F5010EAA6FA46FDED05C -:1088200004D917E1C0D8DF2AFF0EDF5C0BE0010E90 -:10883000DBCFE9FFDB2A020EDBCFEAFF01E3DB2A15 -:10884000EF50F1E1CFD8DFCFA9F50501010EAA6FF6 -:10885000A46F030EE15C02E2E16AE552E16EBED074 -:10886000E4D818E1A0D8DF2AFF0EDF5C0CE0010E8F -:10887000DBCFF6FFDB2A020EDBCFF7FF01E3DB2ABB -:108880000800F550F0E1AED8DFCFA9F50501AA6BDD -:10889000010EA46F030EE15C02E2E16AE552E16EB3 -:1088A0009DD097D8020EE1260501AD51AE1102E12F -:1088B000000E08D0ADC5E9FFAEC5EAFFEF50800B52 -:1088C00001E0010E000953E1030EA45D01E1A46B78 -:1088D000A4514DE0020EA45D09E1E66A000EE66EC9 -:1088E000E66A59D80501030EA46F41D0A4053FE103 -:1088F000400E4E6E4F6AA9514E5C000E4F5803E277 -:10890000400EDF6E02D0A9C5DFFFDF50A95DA96F61 -:10891000140EA76F050EA86F010EDFCFDBFFAA5163 -:108920000BE1010EDB5012E0A5C5F6FFA6C5F7FF6F -:108930000800F55041D8F5D7010EDB5007E0A5C57A -:10894000E9FFA6C5EAFFEF5037D8F6D70501A951D0 -:1089500007E1400EDF5C02E1020E01D0030EA46FBE -:10896000DFCFE6FF140EE66E050EE66E14D8020E9B -:10897000E15C02E2E16AE552E16E30D0400EE66E63 -:10898000540EE66E050EE66EE66A3FD8F3CFABF501 -:10899000F4CFACF51200010EE66E37D8F3CFADF58B -:1089A000F4CFAEF51200DF6A39D8DE5242C0DEFFE6 -:1089B00043C0DDFFDD521200A7C5E9FFA8C5EAFFED -:1089C000EF6EA72B000EA823A52BA623010EDB0616 -:1089D0001200D9CFE6FFE1CFD9FF1200E552E7CF71 -:1089E000D9FF1200FD0EDBCFA5F5FE0EDBCFA6F5FD -:1089F0001200FB0EDBCF4EF0FC0EDBCF4FF012006F -:108A0000ABC5E9FFACC5EAFF1200020EE66E67ECEB -:108A100039F04E6E050EE15E4E501200FD0EDBCFBA -:108A200042F0FE0EDBCF43F01200D3DF030EE1264F -:068A30000501A451120033 -:0A8A36002130204572723A203C61A5 -:108A4000786973323E20737465702072617465209A -:108A5000746F6F20736C6F772E0021302045727217 -:108A60003A203C61786973323E20737465702072DD -:108A700061746520746F6F20686967682E0021300B -:108A8000204572723A203C61786973313E207374DC -:108A90006570207261746520746F6F20736C6F77DE -:108AA0002E002130204572723A203C617869733182 -:108AB0003E2073746570207261746520746F6F203E -:108AC000686967682E00205341323D0020534131D0 -:108AD0003D004475726174696F6E3D002130204520 -:108AE00072723A20537465705261746520696E76B3 -:108AF000616C69642076616C75652E0052617465E5 -:108B00003D00434D20636F6D6D616E642064697339 -:108B100061626C656420696E207468697320627597 -:108B2000696C640020446972656374696F6E3D000E -:108B30002043656E7465725F593D002043656E7415 -:108B400065725F583D0020446573745F593D002095 -:108B5000446573745F583D00467265713D00205353 -:108B6000453D00204A323D002041323D0020533235 -:108B70003D002052323D00204A313D002041313D30 -:108B8000002053313D0052313D00537461747573C0 -:108B90003D002135204572723A204E6565642063A0 -:108BA0006F6D6D61206E6578742C20666F756E64D4 -:108BB0003A202700506172616D383D00506172614A -:108BC0006D373D00506172616D363D0050617261DC -:108BD0006D353D00506172616D343D0050617261D0 -:108BE0006D333D00506172616D323D0050617261C4 -:108BF0006D313D000D0A000A0D004F4B000A0021A7 -:108C000038204572723A20556E6B6E6F776E206316 -:108C10006F6D6D616E642027002138204572723AB5 -:108C200020436865636B73756D206E6F7420666F8B -:108C3000756E642062757420726571756972656401 -:108C40002E002138204572723A20436865636B73A9 -:108C5000756D20696E636F72726563742C20657820 -:108C600070656374656420004C696D697420737766 -:108C700069746368207472696767657265642E2021 -:108C8000506F7274423D002137204572723A204580 -:108C90007874726120706172616D65746572002113 -:108CA00036204572723A20496E76616C6964207094 -:108CB0006172616D657465722076616C7565002105 -:108CC00034204572723A204D697373696E67207063 -:108CD0006172616D657465722873290021332045C6 -:108CE00072723A20525820427566666572206F761D -:108CF000657272756E002132204572723A205458A6 -:108D000020427566666572206F76657272756E00B8 -:108D10002131204572723A2043616E2774207374AA -:108D2000657020746861742066617374002130205E -:048D30000020080017 -:0C8D3400DDD8D0D80DE0CED8F3D8D9504F -:108D4000FC0FE96EFF0EDA20EA6EEE2A000EEE222C -:108D5000EE22F1D7F7D0CCD8D6D808E0D4D8E2D8D4 -:108D6000FD0EDB2AFE0EF8E3DB2AF6D7EBD0EED8B9 -:108D70000F0E4E6E4F6A506AD950BFD8EE504E1645 -:108D8000EE504F16EE505016EE504EC0FEF14E50C3 -:108D9000090802E3300E01D0370EFE25C8D873D87B -:108DA000040ED890513250324F324E32E806F9E17B -:108DB000FB0E4EC0DBFFFC0E4FC0DBFFFD0E50C0B4 -:108DC000DBFFFE0E51C0DBFF0101FD07FA0EDB5099 -:108DD00002E0FA0EDB06C0D8CBE1FA0EDB50C8E1A8 -:108DE0006CD0B4D85DD897D83CC0FEF1300E0101EC -:108DF0003C249DD855D88FD8FB0E40C0DBFFFC0E1D -:108E000041C0DBFFFD0E42C0DBFFFE0E43C0DBFFB7 -:108E10000101FD07A1D8E6E150D06AD8E1506DD834 -:108E2000D890030EEB50000A08E6000EEE5C000E30 -:108E3000EE58000EEE58000EEE5815E22D0E72D8C8 -:108E40002FD845684668476848688AEC4BF0FB0EA7 -:108E50003CC0DBFFFC0E3DC0DBFFFD0E3EC0DBFF78 -:108E6000FE0E3FC0DBFFD95048D8EECFE6FFEECF75 -:108E7000E6FFEECFE6FFEFCFE6FFB3DFE552E552C8 -:108E8000E552E5525FD0FB0EDBCF4EF0FC0EDBCFA0 -:108E90004FF0FD0EDBCF50F0FE0EDBCF51F0120095 -:108EA000FB0EDBCF40F0FC0EDBCF41F0FD0EDBCF45 -:108EB00042F0FE0EDBCF43F01200FD2BFD514F6A56 -:108EC000F10F4E6E010E4F224EC0E6FF4FC0E6FF7F -:108ED00042DFE552E55236D0FC0EDBCFF6FFFD0E49 -:108EE000DBCFF7FFFE0EDBCFF8FF0800F5501200D6 -:108EF000D9CFE6FFE1CFD9FF1200FB0FE96EFF0EDD -:108F0000DA20EA6E1200FD0EDBCFE9FFFE0EDBCFAA -:108F1000EAFFEF5012000A0E456E466A476A486A39 -:108F2000EEEF4BF0E66E83EC26F0E5521200E66EB3 -:108F3000FD51EA6AF10FE96E010EEA22E552E750AF -:108F4000EF6E1200E552E7CFD9FF1200D1DF010129 -:108F5000FC6B0A0EFD6F120096DF4E504F10501042 -:048F6000511012009A -:0C8F6400D9CFE6FFDACFE6FFE1CFD9FF5E -:108F7000E2CFDAFF060EE12402E3E168E652E16E99 -:108F8000DF6A010EDB6AD950FA0FE96EFF0EDA20B4 -:108F9000EA6E020EEECFDBFF030EEECFDBFF040E18 -:108FA000EECFDBFF050EEECFDBFFD950FA0FE96EF7 -:108FB000FF0EDA20EA6E060EE76ED890030EEB3253 -:108FC000020EEB32010EEB32EF32E706F6E1D9503A -:108FD000FA0FE96EFF0EDA20EA6E060EE76ED89001 -:108FE000EF36010EEB36020EEB36030EEB36E706DC -:108FF000F6E1D950FA0FE96EFF0EDA20EA6E400E64 -:10900000EE26000EEE22000EEE22000EEE22FA0EEA -:10901000DBCF52F0FB0EDBCF53F0FC0EDBCF54F076 -:10902000FD0EDBCF55F0D950020FE96E000EDA20AD -:10903000EA6EEE50525C4E6EEE5053584F6EEE504C -:109040005458506EEE505558516E4E50DF6ED950F8 -:10905000F80FE96EFF0EDA20EA6EEE50ED1065E0D3 -:10906000040EDB50F86E030EDB50F76E020EDB5081 -:10907000F66EDF50DF0600091AE0F60EDBCFE9FFDF -:10908000DB2AF70EDBCFEAFF01E3DB2AEF50F56EB8 -:109090000D00F80EDB06DBCF4EF0F90E01E2DB0629 -:1090A000DBCF4FF04E504F1001E101D0E2D7040E5C -:1090B000DB50F86E030EDB50F76E020EDB50F66EDF -:1090C000A684F2AE04D0F29EDE52010EDD6E550E85 -:1090D000A76EAA0EA76EA682A694010EDB5003E02F -:1090E000F28E010EDB6A400EDF6E400E4E6E4F6A4E -:1090F000506A516AD950020FE96E000EDA20EA6E0A -:10910000EE504E26EE504F22EE505022EE5051229D -:10911000020E4EC0DBFF030E4FC0DBFF040E50C03B -:10912000DBFF050E51C0DBFF92D7060EE15C02E2C9 -:10913000E16AE552E16EE552E5CFDAFFE7CFD9FF0C -:0291400012001B -:0E914200F5EC23F005D896EC38F022EC25F081 -:10915000FBD7D9CFE6FFE1CFD9FF020EE1260F0101 -:1091600048694969600ED36E9B8C580EDE6E020E04 -:10917000DD6EDFCF4EF0DF06010EDBCF4FF001E2F8 -:10918000DB064E504F10F5E1948E67EC24F030EC86 -:1091900038F0020EE15C02E2E16AE552E16EE5526E -:1091A000E7CFD9FF1200120012001200120038EFB0 -:1091B00043F0120086EF43F00501DF051EE10501D3 -:1091C000E0051BE1F1DF65920501E06B0201100E85 -:1091D000FE6F0E0EFF6FFE07000EFF5BFE51FF11CC -:1091E000FAE16584080EFE6F070EFF6FFE07000EA2 -:1091F000FF5BFE51FF11FAE165941200D9CFE6FF43 -:10920000E1CFD9FFFD0EDBCF42F0FE0EDBCF43F006 -:10921000050E421801E1435036E0E868421802E1C9 -:109220007F0E43182FE0030E421801E1435028E05F -:10923000020E421801E1435021E0010E421801E103 -:1092400043501AE0740E421801E1435013E0750ECA -:10925000421801E143500CE0730E421801E1435003 -:1092600005E0720E42180FE143500DD09EDF0BD087 -:109270009ADF09D099DF07D09DDF05D09ADF03D0B0 -:1092800096DF01D093DF010EE552E7CFD9FF120040 -:10929000D9CFE6FFE1CFD9FF0501FB0EDBCF00F50B -:1092A000FC0EDBCF01F5FD0EDBCF02F5FE0EDBCFB2 -:1092B00003F5036725D0026723D0126B800E106F71 -:1092C0000B6F0B510B03F350005DF4500159D8B0F4 -:1092D00008D012C50BF5104310510B1310BF09D065 -:1092E000F0D70BC512F5104310510B1310BF01D06E -:1092F000E8D712C5F3FFF46AE552E7CFD9FF1200B1 -:10930000126B136B106B0B6B800E116F0A6F0BC51A -:1093100005F50AC504F5BBEC49F00C51005D0D5193 -:1093200001590E5102590F510359D8B00ED0000FF8 -:1093300012C50BF513C50AF51133103311510A1379 -:1093400010510B13D8B00FD0E2D7000F0BC512F598 -:109350000AC513F51133103311510A1310510B13B1 -:10936000D8B001D0D4D712C5F3FF13C5F4FFE5522E -:10937000E7CFD9FF120005510503F4CF0DF5F3CF68 -:109380000CF504510403F4CF0FF5F3CF0EF505519E -:109390000403F3500D27F4500E23E86A0F23045101 -:1093A0000503F3500D27F4500E23E86A0F23120033 -:1093B000C00EF36E00EE00F00E0E01D81200EA604F -:1093C00002D0EE6AFCD7F350E9601200EE6AFCD7D7 -:1093D000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFF60 -:1093E000E652E652E652E652E652DF6AD950FA0FEA -:1093F000E96EFF0EDA20EA6E010EEECFDBFF020E01 -:10940000EECFDBFF030EEECFDBFF040EEECFDBFF74 -:10941000F60EDBCF4EF0F70EDBCF4FF0F80EDBCFC2 -:1094200050F0F90EDBCF51F048D84E50EE5C4F5063 -:10943000EE585050EE585150EE5833E2030EDB50C8 -:10944000F86E020EDB50F76E010EDB50F66EA6844E -:10945000A688F2AE03D0F29E010EDF6E550EA76E07 -:10946000AA0EA76EA682DF5001E0F28E4E6A040EAD -:109470004F6E506A516A21D8EE504E26EE504F2260 -:10948000EE505022EE505122010E4EC0DBFF020E74 -:109490004FC0DBFF030E50C0DBFF040E51C0DBFFEB -:1094A000B7D7050EE15C02E2E16AE552E16EE552F2 -:1094B000E5CFDAFFE7CFD9FF1200D950010FE96EEF -:0894C000000EDA20EA6E120032 -:0894C8004542427631335F6139 -:1094D0006E645F61626F7665204542204669726DF9 -:1094E000776172652056657273696F6E20332E3016 -:1094F0002E312E3100920F920F920F930F930F93F4 -:109500000F930F930F930F930F930F940F940F9448 -:109510000F940F940F940F940F940F950F950F9530 -:109520000F950F950F950F890F890F890F8A0F8A55 -:109530000F8A0F8A0F8A0F8A0F8A0F8A0F8B0F8B61 -:109540000F8B0F8B0F8B0F8B0F8B0F8B0F8C0F8C49 -:109550000F8C0F8C0F8C0F8C0F0001050001020384 -:1095600004050607000102030405060702030405BB -:029570000607EC -:0E9572002A0EF66E100EF76E000EF86E050152 -:109580000900F550F56F0900F550F66F03E1F56736 -:1095900001D03DD00900F550F06F0900F550F16F92 -:1095A0000900F550F26F09000900F550E96E090055 -:1095B000F550EA6E090009000900F550F36F090043 -:1095C000F550F46F09000900F6CFF7F5F7CFF8F57D -:1095D000F8CFF9F5F0C5F6FFF1C5F7FFF2C5F8FFD2 -:1095E0000501F35302E1F45307E00900F550EE6E74 -:1095F000F307F8E2F407F9D7F7C5F6FFF8C5F7FF68 -:10960000F9C5F8FF0501F507000EF65BBFD712009C -:10961000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFF1D -:10962000E652E652E652E652D9CFE9FFDACFEAFF38 -:10963000FA0EDBCFEEFFFB0EDBCFEEFFFC0EDBCF37 -:10964000EEFFFD0EDBCFEEFF020EDB50F86E010EDB -:10965000DB50F76EDF50F66EF80EDBCF4EF0DB0618 -:10966000F90EDBCF4FF001E2DB064E504F100DE05C -:109670000900F60EDBCFE9FFDB2AF70EDBCFEAFFAE -:1096800001E3DB2AF5CFEFFFE7D7040EE15C02E24E -:10969000E16AE552E16EE552E5CFDAFFE7CFD9FFA7 -:0296A0001200B6 -:0E96A200D9CFE6FFDACFE6FFE1CFD9FFE2CF66 -:1096B000DAFFAD6AAC6AFD0EDBB0AD88DBA202D08A -:1096C000AD8CAC8CDBB4AD8EDBA602D0AC8801D007 -:1096D000AC8ADBB8AD84DBBAAC86DBAC02D09D8A49 -:1096E00001D09D9ADBAE02D09D8801D09D98FB0EE3 -:1096F000DB50B06EFC0EDBCF4FF04FC04EF04F6A28 -:109700004E507F6EAD8AAC8EE552E5CFDAFFE7CFE3 -:04971000D9FF12006B -:0C97140040504502F3CF3CF0F4CF3DF094 -:109720004602F3503D26000EF4203E6E40504702A4 -:10973000F3503E26000EF4203F6E40504802F35096 -:109740003F2641504502F3503D26F4503E22000E84 -:109750003F2241504602F3503E26F4503F224150F2 -:109760004702F3503F2642504502F3503E26F45044 -:109770003F2242504602F3503F2643504502F350E9 -:049780003F2612006E -:0C9784001201000202000040D80492FD17 -:1097900082010102030109024300020100C03209F3 -:1097A000040000010202010005240010010424024B -:1097B00002052406000105240100010705810308B4 -:1097C000000209040100020A00000007050202402D -:0B97D000000007058202400000969791 -:0497DC003F6A3E6A38 -:1097E0003D6A3C6A200EE76ED890403641364236DC -:1097F00043363C363D363E363F3645503C5C46505F -:109800003D5847503E5848503F5809E345503C5E4C -:1098100046503D5A47503E5A48503F5A402AE72E3C -:04982000E4D7120077 -:0C982400FE0EE3CFE9FFFF0EE3CFEAFFEA -:10983000E9CFF3FFEACFF4FFFB0EE35003E1FC0EA8 -:10984000E35009E0FB0EE30602E2FC0EE306FD0E28 -:08985000E350EE6EF1D71200A7 -:08985800D9CFE6FFDACFE6FFED -:10986000E1CFD9FFE2CFDAFFADAC04D0AD90050176 -:10987000FCB3AD80FD0EDB50AE6EE552E5CFDAFFF6 -:06988000E7CFD9FF120042 -:0A988600FF0EE124E96EFF0EE22060 -:10989000EA6EEDCFF4FFEFCFF3FFF46607D0600E72 -:0E98A000F36404D07B0EF36001D0F39A120043 -:0298AE00D9CF10 -:1098B000E6FFDACFE6FFE1CFD9FFE2CFDAFFFD0E18 -:1098C000DB507E6EE552E5CFDAFFE7CFD9FF12001D -:1098D0001EEE00F02EEE00F0F86A3B9CB9EC4AF068 -:0C98E00081EC4CF0A1EC48F0FBD712002A -:0498EC00F36AF46ABD -:1098F000F32A0F0B05E0D890F336F436E804FBE1C9 -:02990000120053 -:02990200120051 -:0C9904000403090418035300630068000A -:109910006D0061006C007A00480061007500730002 -:1099200038034500690042006F00740042006F0078 -:109930006100720064002C00200020002000200044 -:109940002000200020002000200020002000200017 -:109950002000200020002000220320002000200002 -:1099600020002000200020002000200020002000F7 -:1099700020002000200020002000800284029C02A1 -:02998000D4020F -:029982000006DD -:09998400000000000100000000D9 +:1059C0008C908C808C908C80EBD770D04E684F6A16 +:1059D000DF504E1803E1DE52DD504F181AE1D95066 +:1059E000020FE96EDACFEAFFEE50ED1002E1099AFC +:1059F0000FD0010E4E6E4F6A020EDB504E1803E1BF +:105A0000030EDB504F1802E1098A02D00401848D95 +:105A10004DD04E6A010E4F6EDF504E1803E1DE523C +:105A2000DD504F181AE1D950020FE96EDACFEAFFC4 +:105A3000EE50ED1002E1099C0FD0010E4E6E4F6A40 +:105A4000020EDB504E1803E1030EDB504F1802E14B +:105A5000098C02D00401848D29D0010E4E6E010EF6 +:105A60004F6EDF504E1803E1DE52DD504F181CE13F +:105A7000D950020FE96EDACFEAFFEE50ED1003E1E4 +:105A80000990948010D0010E4E6E4F6A020EDB50CA +:105A90004E1803E1030EDB504F1803E10980949088 +:105AA00002D00401848D02D00401848DE66AB7DC43 +:105AB000E552040EE15C02E2E16AE552E16EE55274 +:105AC000E7CFD9FF120039EC37F04CEC37F0010E7C +:105AD00087EC35F00401845176E1DF0406E1020E23 +:105AE000E66EC9C44EF04F6A18D0020EDFEC35F0F6 +:105AF00006E1200EE66EE66AE66AE66A3ED0030E2E +:105B0000DFEC35F002E1135020D0040EDFEC35F06D +:105B100007E134EC24F0C3EC36F0ABEC35F04DD0BB +:105B2000050EDFEC35F00CE1C3EC36F0ABEC35F0F4 +:105B30008EEC35F0F29C0401CD6BCE6BF28C41D033 +:105B4000060EDFEC35F004E10F5008EC36F013D010 +:105B50003C0EDFEC35F005E192C44EF093C44FF0FB +:105B600008D03D0EDFEC35F00BE196C44EF097C443 +:105B70004FF0F4EC37F0EDEC36F0D1EC37F01DD00F +:105B8000C80EDFEC35F01CE1F29E1EC0E6FF1FC020 +:105B9000E6FF20C0E6FF21C0E6FFD1EC37F02C0E77 +:105BA000C7EC35F022C0E6FF23C0E6FF24C0E6FFC5 +:105BB00025C0E6FFD1EC37F0F28E8EEC35F001D047 +:105BC000848DD6EC35F0E552A7EF35F0A2EC35F038 +:105BD000050EF4EC36F0010EB3EC37F0B7EC37F00D +:105BE000E66AD950030FE2EC36F0E66AD950040FAA +:105BF0000AEC38F010E1DF50926E010EDB50936E2C +:105C0000020EDB50946E030EDB50956E040EDB50DB +:105C1000966ED6EC35F0050EE15C02E2E16AE552E3 +:105C2000E16EA7EF35F0A2EC35F0FE0EDB50100868 +:105C300005E2100EF36EFE0EF3CFDBFFFD0EDB5020 +:105C40002BE0FE0EDB505DEC4CF0F35004018E13A4 +:105C5000F4508F13080EF36EFE0E6EEC36F00DE26C +:105C6000010EF36EFE0EDB5003E0CCEC35F0FDE1EF +:105C7000F350F31C0F0148173DD0FE0EDB500C080B +:105C800039E3CAEC36F004E0E846FE0B4E06FCE1D0 +:105C9000E81C0F0149172ED0FE0EDB505DEC4CF0D6 +:105CA000F3CF4EF0F4CF4FF04E1E4F1E4E50040176 +:105CB0008E174F508F17080EF36EFE0E6EEC36F0F7 +:105CC0000CE2010EF36EFE0EDB5003E0CCEC35F07F +:105CD000FDE1F3500F0148130DD0FE0EDB500C0810 +:105CE00009E3CAEC36F004E0E846FE0B4E06FCE1A0 +:105CF0000F014913A7EF35F00EEC38F0B3EC37F095 +:105D0000010F0AEC38F00AE1010EDBCFE6FFDFCF2E +:105D1000E6FF89DFE552E552D6EC35F0020EE15C94 +:105D200002E2E16AE552E16EA7EF35F00EEC38F0E1 +:105D300087EC35F023EC36F027E1010EDB5002E171 +:105D4000DF50896E01EC37F01FE1010EDB5002E1FC +:105D5000DF508A6E01EC37F017E1010EDB5002E1F3 +:105D6000DF508B6E01EC37F00FE1010EDB5002E1EA +:105D7000DF508C6E01EC37F007E1010EDB5002E1E1 +:105D8000DF508D6ED6EC35F0020EE15C02E2E16A86 +:105D9000E552E16EA7EF35F0010EE66EE66E12EC0D +:105DA00037F0805006EC37F0815006EC37F0825027 +:105DB00006EC37F0835006EC37F08450F9EC37F0FE +:105DC0008EEF35F05FEC36F0980E4E6E940E0AEFC3 +:105DD00037F0DEEC37F0DF6A010EF36EDB6E020E99 +:105DE000DB6AE66A010EE66E12EC37F09DBCFED768 +:105DF000DF6ADFCF4EF0100EE76E4E18E8AE02D02D +:105E0000E73402D0E7504E5C3FE2010EDB50040164 +:105E10008E1500014E6E020EDB5004018F1500013D +:105E20004F6E4E504F1023E02C0EC7EC35F0DFCFF5 +:105E30004EF075EC37F04EAE03D04F6850685168A5 +:105E40004EC0E6FF8BEC35F03A0EC7EC35F0DFCFF5 +:105E5000E9FFEA6AE9BEEA6822EC37F0EA22EECF0F +:105E60004EF0EFCF4FF0F4EC37F08BEC35F0AEECBA +:105E700036F0D8904E364F36010E4EC0DBFF020E84 +:105E80004FC0DBFFDF2AB5D7020EA4EC37F0030EBC +:105E9000E15C02E2E16AE552E16EA7EF35F0DAEC8F +:105EA00037F0030EB3EC37F0020F0AEC38F00AE1DA +:105EB0008CEC37F005E269EC36F0020EDBCFEFFF39 +:105EC000D6EC35F0030EE15C02E2E16AE552E16EE8 +:105ED000A7EF35F0DEEC37F04CEC37F0030E87EC33 +:105EE00035F0040184510DE18CEC37F005E269ECEA +:105EF00036F0020EEFCFDBFF020E84EC36F0FCEC46 +:105F000036F0030EE15C02E2E16AE552E16EA7EFD2 +:105F100035F003EC38F001E090D0020EDB500108C0 +:105F200001E287D0010EDB50070801E282D0410E6A +:105F3000DFEC35F016E1020EDB500AE1DBEC35F068 +:105F400003E0CCEC35F0FDE1F350F31C921673D076 +:105F5000DBEC35F003E0CCEC35F0FDE1F3509212D0 +:105F60006AD0420EDFEC35F016E1020EDB500AE19A +:105F7000DBEC35F003E0CCEC35F0FDE1F350F31C45 +:105F8000931659D0DBEC35F003E0CCEC35F0FDE1B5 +:105F9000F350931250D0430EDFEC35F016E1020EB1 +:105FA000DB500AE1DBEC35F003E0CCEC35F0FDE151 +:105FB000F350F31C94163FD0DBEC35F003E0CCEC4F +:105FC00035F0FDE1F350941236D0440EDFEC35F09D +:105FD00016E1020EDB500AE1DBEC35F003E0CCEC1D +:105FE00035F0FDE1F350F31C951625D0DBEC35F0D0 +:105FF00003E0CCEC35F0FDE1F35095121CD0450EDA +:10600000DFEC35F016E1020EDB500AE1DBEC35F097 +:1060100003E0CCEC35F0FDE1F350F31C96160BD009 +:10602000DBEC35F003E0CCEC35F0FDE1F3509612FB +:1060300002D0848D02D0D6EC35F0030EE15C02E292 +:10604000E16AE552E16EA7EF35F0DEEC37F0020EC3 +:10605000DB6A4CEC37F0050EB3EC37F0010F0AECBD +:1060600038F060E1010EDB50070850E3410EDFEC31 +:1060700035F00AE1DBEC35F003E0CCEC35F0FDE186 +:10608000F350801439E029D0420EDFEC35F00AE1FC +:10609000DBEC35F003E0CCEC35F0FDE1F35081149E +:1060A0001CE12AD0430EDFEC35F00AE1DBEC35F0E1 +:1060B00003E0CCEC35F0FDE1F35082140EE11CD08E +:1060C000440EDFEC35F00BE1DBEC35F003E0CCEC1B +:1060D00035F0FDE1F35083140FE0010E10D0450EB2 +:1060E000DFEC35F013E1DBEC35F003E0CCEC35F020 +:1060F000FDE1F350841402E1000E01D0010EE76EC1 +:10610000020EE7CFDBFFDB5008E002D0848D0AD01F +:10611000010EF36E020EF3CFDBFF020E84EC36F0BD +:10612000FCEC36F0030EE15C02E2E16AE552E16E5E +:10613000A7EF35F003EC38F001E090D0020EDB5011 +:10614000010801E287D0010EDB50070801E282D08E +:10615000410EDFEC35F016E1020EDB500AE1DBEC1C +:1061600035F003E0CCEC35F0FDE1F350F31C89167B +:1061700073D0DBEC35F003E0CCEC35F0FDE1F3500F +:1061800089126AD0420EDFEC35F016E1020EDB50C8 +:106190000AE1DBEC35F003E0CCEC35F0FDE1F35047 +:1061A000F31C8A1659D0DBEC35F003E0CCEC35F06B +:1061B000FDE1F3508A1250D0430EDFEC35F016E1CA +:1061C000020EDB500AE1DBEC35F003E0CCEC35F0FD +:1061D000FDE1F350F31C8B163FD0DBEC35F003E010 +:1061E000CCEC35F0FDE1F3508B1236D0440EDFECF1 +:1061F00035F016E1020EDB500AE1DBEC35F003E08E +:10620000CCEC35F0FDE1F350F31C8C1625D0DBEC23 +:1062100035F003E0CCEC35F0FDE1F3508C121CD0EE +:10622000450EDFEC35F016E1020EDB500AE1DBEC47 +:1062300035F003E0CCEC35F0FDE1F350F31C8D16A6 +:106240000BD0DBEC35F003E0CCEC35F0FDE1F350A6 +:106250008D1202D0848D02D0D6EC35F0030EE15CB5 +:1062600002E2E16AE552E16EA7EF35F0D9CFE6FF31 +:10627000E1CFD9FFE652DF6AFF0EDF5C0AE2E86891 +:10628000E85005E0E80600D000D000D0F9D7DF2ABA +:10629000F3D7E552E552E7CFD9FF1200F29EF29C08 +:1062A0006592656AE3DF0FEF00F01200F29EF29C48 +:1062B0006592656ADBDFFF0012005FEC36F080500C +:1062C000080B01E0010EF9EC37F00101C3B103D076 +:1062D000020EA4EC37F0D6EF35F0A2EC35F0060E46 +:1062E000F4EC36F0070E87EC35F0010EE66ED9506F +:1062F000040FE2EC36F0E76E050EE7CFDBFF04019A +:10630000845116E1DFCFC2F4010EDBCFC3F4020EDD +:10631000DBCFC4F4030EDBCFC5F4050EDB5006E182 +:10632000040EDB5002E0898601D08996D6EC35F068 +:10633000060EE15C02E2E16AE552E16EA7EF35F09C +:10634000A2EC35F0100EE126F0EC37F0E7DBE66A60 +:10635000D950010FAFEC35F0E66A63D9F9EC36F0AD +:10636000E66AA9EC37F0010EB3EC37F0040FAFEC9E +:1063700035F0020EB3EC37F0020FF1DB030EB3EC95 +:1063800037F00A0FECDB060EB3EC37F0060FE7DB55 +:10639000070EB3EC37F00E0FE2DB040EB3EC37F070 +:1063A0000F0FDDDB050EB3DBBC0E4E6E8B0EACDBD0 +:1063B000010E84EC36F04EAE03D04F685068516841 +:1063C000C4EC37F0B40E4E6E8B0E9EDBDFCF4EF07A +:1063D00075EC37F0FCEC36F0AC0E4E6E8B0E94DBA9 +:1063E000040EDBCF4EF0050EDBCF4FF0506A516A42 +:1063F0004FAE02D050685168C4EC37F0A40E4E6E18 +:106400008B0E82DB020EDBCF4EF0030EDBCF4FF0A4 +:10641000506A516AFCEC36F09C0E4E6E8B0E74DBAB +:10642000D9500A0FA8DB13EC38F051EC37F0D950F3 +:10643000060FA1DBD1EC37F071DB8C0E4E6E8B0EAC +:1064400063DB0E0E6EEC37F0840E4E6E8B0E5CDB53 +:106450000F0E6EEC37F051EC37F0080EE66E17ECCD +:1064600037F051EC37F0E66A17EC37F09FDB100E8F +:10647000E15C02E2E16AE552E16E69D339EC37F0A2 +:10648000DF6A110EDF5C04E2B3DBEF6ADF2AF9D7C3 +:1064900092EC37F0DF6A100EDF5C21E2A9DBEF50EF +:1064A00080081DE3A5DBEFCF4EF0200E4E5C17E316 +:1064B0009FDBEF50E66E180E02014F6AFA254E6E12 +:1064C000FB5178EC36F094DBEF50E66E020E4F6A2B +:1064D000FC254E6EFD5178EC36F0DF2ADCD7DF501C +:1064E000E824180FFAC2E9FFFBC2EAFFEF6EDF50A3 +:1064F000E824020FFCC2E9FFFDC2EAFFEF6EE5529D +:1065000026D3ECEC37F0DF6AF0EC37F0010EDB6AF3 +:10651000110EF36E010EE2DB0BE2010EDB50EA6AB4 +:10652000D50FE96E040EEA22EF6A010EDB2AF0D7DE +:10653000100EE66EAEEC37F038D8E2EC37F0DF6ED6 +:10654000E668FB0EE66EE66A97EC37F0D0EC49F0B1 +:10655000F0DB49DB9AEC47F0ECDB28DB020EE15C78 +:1065600002E2E16AE552E16EF2D239EC37F0A7DBE4 +:10657000DF6A110EDF5C04E23BDBEF6ADF2AF9D74A +:1065800092EC37F0800E0401D55D09E2D551200868 +:1065900006E2AEEC37F093EC46F0E552E55201012D +:1065A000C3A1BCDA03DBE552D2D239EC37F0DF6AA3 +:1065B00051DBEF6AE6EC37F002E1848906D0E6ECC5 +:1065C00036F02C0804E0C9EC37F0000E28D0CCDA05 +:1065D00004E1010E4F1801E1B86B0D0EFCEC37F031 +:1065E00009E02C0E4F6EF2DB4F5C04E0FC0EDB503A +:1065F000DF5C02E3DF5013D0E9DBE66E2BDBE55214 +:10660000E750EF6EB1DA04E1010E4F1801E1B86B0B +:10661000DF2AFD0EDB2AFE0EE0E3DB2ADED7E552A1 +:1066200096D290DA090EE126080EDB6AE6EC37F026 +:1066300005E1FB0EDB501AE1848918D0C7DB2C087A +:1066400007E0FB0EDB5002E1C9EC37F0020E1AD175 +:106650008BDA04E1010E4F1801E1B86B0D0EFCEC72 +:1066600037F006E1FB0EDB5001E18489030E0AD10D +:106670002D0EFCEC37F020E1040E4ADB1DE0050E88 +:10668000506EFE0EDB50505C17E0FE0EDB0401E1A5 +:10669000C0D0030E28DB01E1BCD0070E39DB01E1DD +:1066A000B8D0010EF36E080EF3CFDBFF5DDA04E124 +:1066B000010E4F1801E1B86B040E15DB09E0050E61 +:1066C00027DB06E00A0EEADAE6D8E2EC37F031D052 +:1066D00000EC38F0EFCF4EF0000E4EC0DFFF45DB90 +:1066E000050E01DB1FE1000EDFCFE6FF010EDBCF61 +:1066F000E6FF2AEC4CF0E552E552F3CF4EF0F4CF32 +:106700004FF0506A516A4FAE02D0506851684EC087 +:10671000DFFF010E4FC0DBFF020E50C0DBFF030E98 +:1067200051C0DBFF040120DA04E1010E4F1801E142 +:10673000B86B080EDB5040E0FE0EDB5006E14DDA90 +:10674000800E6ADA000EEE5412E3020ECCDA06E195 +:1067500044DA000EEE54800E5FDA09E3060ED8DA52 +:1067600008E13BDA000E58DA800EEE5402E2040132 +:1067700050D077DA080EDB5053E0040EDBCF40F048 +:10678000050EDBCF41F0060EDBCF42F0070EDBCF6C +:1067900043F0456846684768486871EC4BF0040E62 +:1067A0003CC0DBFF050E3DC0DBFF060E3EC0DBFF3D +:1067B000070E3FC0DBFF34D0FE0EDB5006E10DDAE2 +:1067C0007F0EEE54000E28DA23E3FE0EDB0404E114 +:1067D00071DB000E21DA1CE3020E85DA04E16ADBCC +:1067E0007F0E1ADA15E3030E93DA04E163DBFF0E82 +:1067F00013DA0EE3060E506EFE0EDB50505C0CE119 +:1068000059DBFF0EEE54FF0EEE547F0EEE5404E201 +:106810000401848D010E36D0070E65DA01E021DA1D +:10682000FE0EDB50070A21E0010A17E0050A11E01D +:10683000010A0FE0030A08E0050A06E0010A04E085 +:10684000050A02E0040E1ED022DA040EDBCFEFFFB1 +:1068500018D074DBDBCFEDFF14D070DBDBCFEEFFA5 +:10686000060EDBCFEEFF070E0AD011DADFCFEEFF08 +:10687000010EDBCFEEFF020EDBCFEEFF030EDBCF10 +:10688000EEFF000E4E6E090EE15C02E2E16AE55297 +:10689000E16E4E505CD1A0DBDDD9EE6AEE6AEE6AA5 +:1068A000EE6A010EDB6AFC0EDB50F36E010E16DAA7 +:1068B0004EE20401A5DBEFCFDFFF300EDF5C42E3E9 +:1068C000DF5039083FE3C6D9EECF4EF0EECF4FF0A0 +:1068D000EECF50F0EFCF51F00A0E456E466A476A90 +:1068E000486A4EC040F04FC041F050C042F051C025 +:1068F00043F071EC4BF03CC04EF03DC04FF03EC059 +:1069000050F03FC051F0300EDF5C526E536A546A53 +:10691000556AE8504E2653504F225450502255503D +:10692000512298D94EC0EEFF4FC0EEFF50C0EEFF8F +:1069300051C0EEFF040118D907E1010E4F1804E120 +:10694000B86B02D0000E04D0010EDB2AACD7010ECA +:106950004E6E020EE15C02E2E16AE552E16E4E50DB +:10696000F6D05A0E4E6E8B0ECFD87EC44EF0BDDAE6 +:10697000FCEF36F00501BC5108E0010E4E6E65508B +:10698000020B01E0010E4E5C17E1CDD90BE1ED5198 +:10699000EE1111E18C86A00EED6F0F0EEE6F010E61 +:1069A000EF6F1200ED51EE1152E18C96A00EED6FDB +:1069B0000F0EEE6FEF6B1200BC0509E0020EBC5D1E +:1069C00006E0040EBC5D03E0100EBC5D17E1ABD920 +:1069D0000BE1ED51EE1111E18C86200EED6F4E0EA4 +:1069E000EE6F010EEF6F1200ED51EE1130E18C965B +:1069F000200EED6F4E0EEE6FEF6B1200200EBC5DA1 +:106A000026E191D907E1ED51EE1121E18C86D5D92E +:106A1000010E15D0EF0507E1ED51EE1118E18C964E +:106A2000CCD9020E0CD0020EEF5D0BE1ED51EE1150 +:106A30000EE18C86A00EED6F860EEE6F030EEF6FEB +:106A40001200ED51EE1103E18C96B7D9EF6B1200F5 +:106A500079D8A7D9E8AE02D04E3403D0E750D88019 +:106A60004E5423E3FD0EDB5010E00CD9F6BEF76860 +:106A7000AAD804E0E846FE0B4F06FCE14E6E02D9B0 +:106A8000F6BEF768F9D9EF1210D0FCD8F6BEF76859 +:106A90009AD804E0E846FE0B4F06FCE1E81C4E6E77 +:106AA000F1D8F6BEF768E8D9EF1651D04BD879D9AE +:106AB000E8AE02D04E3403D0E750D8804E5423E3E2 +:106AC000FD0EDB5011E1DED8F6BEF7687CD804E09D +:106AD000E846FE0B4F06FCE1E81C4E6ED3D8F6BE2E +:106AE000F768D2D9EF160FD0CDD8F6BEF7686BD8BD +:106AF00004E0E846FE0B4F06FCE14E6EC3D8F6BE3E +:106B0000F768C2D9EF1223D0A4D9E2EF37F0E66ECE +:106B100088DDF9EF36F061D9D1EF37F0010EA4EF3F +:106B200037F0EA6A000FE96E030EEA2212007AD902 +:106B3000E66AA9EF37F09951E96EEA6AD890E9362A +:106B4000EA361200D9CFE6FFE1CFD9FF1200E552B5 +:106B5000E7CFD9FF120048DA40D985EF37F0E66E6B +:106B6000000EDA20E66E1200B82BB8514E6E4F6A56 +:106B7000000E4E181200E96EDACFEAFFEECFE6FF04 +:106B8000EECFE6FFEECFE6FFEFCFE6FF1200E66EB8 +:106B900083EC26F0E5521200D890F336E806120096 +:106BA000EA22EECF56F0EFCF57F01200E66A0FEC74 +:106BB0002AF0E5521200010EF36EDB5012004E6E09 +:106BC000DF504E5C1200270EF626950EF7220800C5 +:106BD000F5504F6E010E4F521200D9CFE9FFDACFB8 +:106BE000EAFFD8801200BAD9100EE66E97EF37F0A0 +:106BF000DF50EA6AD50FE96E040EEA221200F7228E +:106C00000900F5CFE9FF0800F5CFEAFF4E5012006A +:106C10004E6E6BD9E66E1200EE54000EEE54000E6E +:106C2000EE541200DF6EDFCFE6FFB6514F6A000F61 +:106C30004E6E020E4F224EC0E6FF4FC0E6FFECEC58 +:106C400043F0E2EF37F0E76E010EE7CFDBFF040120 +:106C500084511200FD0EDBCFE9FFFE0EDBCFEAFF11 +:106C60001200D9CFE9FFDACFEAFF040EEECFDBFF47 +:106C7000050EEECFDBFF060EEECFDBFF070EEECFED +:106C8000DBFF1200FE0EDBCFF6FFF76A1200FC0EF0 +:106C9000DBCFE9FFFD0EDBCFEAFF1200E66EA9EFC6 +:106CA00037F09951EA6A710FE96E000EEA22EF504F +:106CB0000001EA6A9C25E96E9D51EA221200010E4C +:106CC000E66EE66A12EF37F0DECF4EF0DDCF4FF022 +:106CD0001200DECFE9FFDDCFEAFF1200DBCFF4FFC9 +:106CE000F350F45C12004E6EFE0EDB504E5C120050 +:106CF0004F22DF50E8244E24E96E000E4F20EA6E4A +:106D0000E552E750EF6E1200DBCF4EF075EF37F033 +:106D10004F6EFE0EDB504F5C1200C7C4E6FF83ECE3 +:106D200026F0E55212000401ED07000EEE5BEF5174 +:106D300012004E6E080EE15E4E501200030EDB5044 +:106D4000EA6A400FE96E020EEA221200EF50E66E88 +:106D5000E66A2AEC4CF0E552E5521200010EDBCF58 +:106D60004EF0020EDBCF4FF01200010EDB6A020E76 +:106D7000DB6A030EDB6A12000401B76BB86B040117 +:106D8000010EEB6F1200030EE66ECDC44EF0CEC4C2 +:106D90004FF01200FE0EDB50F80F4E6E010E4E52F9 +:106DA0001200FE0EDBCF4EF0190EE76E4E181200E9 +:106DB000EA22EF6ADF2A010E1200100EED6F270E95 +:106DC000EE6F1200CCDE010E87EF35F019D9EF50CF +:106DD0001200E6DEEAD8EA2212004FC0E6FF50C0F9 +:106DE000E6FF51C0E6FF1200E126E66AE66A97EF89 +:106DF00035F0E8D8E55212004EC0E6FF8CDE8EEF8B +:106E000035F0010E4BDF83DE23EF36F0F2D82C0E87 +:106E1000C7EF35F079DE8EEF35F08DDE890EE9268D +:106E2000000E1200F1EC29F0E552E5521200D950A3 +:106E3000060FA1DE9FEC46F04E6E050EE15E4E5051 +:106E40008EEF35F0D890E936EA36000EE926010ECD +:106E500012004F6E506A4EC0E6FFE66E50C0E6FF6D +:106E600082EF46F094DE270E92DE58DE0401848B1A +:106E7000120068DEE6521200D890F636F736F50EAC +:106E8000F626940EFFEF35F0D890F636F736C30E9F +:106E9000F626940EFFEF35F0010EE66EE66E97EFE4 +:106EA00035F0940E4E6E8B0E84EF35F00401B75121 +:106EB00091EF35F092DEFF0EEE54120076D8D0EF4F +:106EC00035F0CF0E4E6E8B0E1FDE8DEF36F03A0E84 +:106ED0005EDE020EE66EC7C44EF01200DBCFE6FFA8 +:106EE00083EC26F0E5528EEF35F04F6A506A516A16 +:106EF0001200EADE400E4E5C000E4F581200040EE7 +:106F0000DB500FDEEF502C0812009FEC46F0526E63 +:106F1000050EE15E52501200D7DE000E4E5C100EE0 +:106F20004F58120060DEEFEC4AF099EF36F0E66A57 +:106F3000E66AF80EE66EE66AE66A1200A8DE040E5D +:106F4000DBCFEEFF050E1200E66E0FEC2AF0E552E5 +:106F50001200D9CFE6FFDACFE6FF1200D50EE66EBB +:106F6000040EE66E1200D3DDE66AD9501200010F5E +:106F700029DFE66AD950020FE2EF36F0DCDD790E48 +:106F8000E926000EE9EF36F04EC0E6FF26DF13EFEC +:106F900038F0620E4E6E8B0EB7DD040117DF32EF54 +:106FA00037F0D9EC46F0F9EF36F0C5DD610EE92691 +:106FB000000E1200C7DD030EF4EF36F0C3DD030E42 +:106FC000E1261200E552E552E55212000D0E4E6E1A +:106FD0000401FCDE4E5C1200B5DD020EE12612005B +:106FE000E66AE66A12EF37F0506A516A4EC0E6FF71 +:106FF00012000EDE8BEF35F04E6EE8DE4E5C1200B6 +:10700000B85191EF35F0D6DF050EADDFB0DF0401EA +:1070100084511200D7DE04018451120093DD020E68 +:10702000E3DE010E1200F5EC46F0E3DE8EEF35F004 +:1070300082EC3EF0A098636A626A0F01266B61ECF5 +:107040003EF00F0120EC3EF0DF6ADF504E6E4F6ADB +:107050000C0E4E5C000E4F5810E2DF50040DF3CFC3 +:10706000E9FFF4CFEAFF000EE926040EEA22EE6AF9 +:10707000EE6AEE6AEE6ADF2AE8D7658C0F01386B9C +:107080006598659C62A607D062960501D36BD86BA4 +:10709000D96BDA6BF7D70501010EEC6FED6FEE6B74 +:1070A000EF6BE06BDF6A030EDF5C11E2EA6ADF344C +:1070B00085EC3EF0EA22EE6AED6AEA6ADF348CEC97 +:1070C0003EF0EA22EE6AED6AE1EC3DF0ECD7050114 +:1070D000080EC96F040ECA6F0F01160E266F040149 +:1070E000300E026F040E036F400E016F840E006FAE +:1070F0000501BD6BBC6BE552B3EF3DF082EC3EF099 +:1071000082BE06D0656A0F01366B0501BC6B6FD07D +:107110000501BC510CE1656A0F01366B20EC3EF0B5 +:1071200065B602D06586FCD70501010EBC6FBC05B3 +:107130000AE165BA08D0626A0F01366B368136897A +:107140000501020EBC6F6250040B06E00F013651C0 +:10715000040B02E0629447DB65B249D06250010B38 +:1071600009E00F013651010B05E062DF0501040E55 +:10717000BC6F62906250100B06E00F013651100B8D +:1071800002E026DB629862AC10D00F0136AD05D06C +:1071900027EC3EF0730EA0EC3DF0629C0501EA5135 +:1071A00001E0EA07EA5101E1F4D86250200B05E062 +:1071B0000F013651200B01E0FADA6250020B0CE0AD +:1071C0000F013651020B08E027EC3EF0E6687F0E17 +:1071D000E66E93EC3EF0636A040E0501E76EBC199F +:1071E000E8AE02D0E73402D0E750BC5D02E2A198DD +:1071F0002FD00F0136A72BD0DF6A040EDF5C27E209 +:1072000062A625D064CFE1F50501E151780BE84293 +:10721000E842E842E26F6296E1B504D0E2519AECAE +:107220003EF003D0E2519FEC3EF0EA22EF70E251D3 +:1072300002E1E6DA0AD0000EE66EE66AE10EE66EDC +:10724000050EE66E720EA0EC3DF0DF2AD6D7A198AF +:10725000E552B3EF3DF053EC3EF0FD0EDBA403D05E +:10726000E66A18EC3EF0FD0EDBA204D0010EE66EDD +:1072700018EC3EF0FE0EDB504F6A260F4E6E0F0EDE +:1072800012EC3EF0A4EC3DF0FD0EDBCFEFFF020E62 +:10729000E15C02E2E16AE552E16EB3EF3DF053ECEE +:1072A0003EF0FD0EDB5003E09BEC3DF002D0D2EC53 +:1072B0003DF0FEEC3DF0D9CFE9FFDACFEAFFEE502A +:1072C000ED1003E1F36AF46A28D0A4EC3DF0AEECD3 +:1072D0003EF0FB0EDBCFEEFFFC0EDBCFEDFFA4ECB0 +:1072E0003DF0EE52FA0EDBCFEFFF400EA4EC3EF085 +:1072F000880EB3EC3EF0FD0EDB5003E09BEC3DF05E +:1073000002D0D2EC3DF0EA22EF74DECF4EF0DDCFBA +:107310004FF04EC0F3FF4FC0F4FF020EE15C02E2FB +:10732000E16AE552E16EB3EF3DF053EC3EF0FE0E44 +:10733000DB5003E16AEC3EF009D0D7EC3DF041ECC4 +:107340003EF0D7EC3DF0010F41EC3EF0020EE15C67 +:1073500002E2E16AE552E16EB3EF3DF0AEEC3DF0E2 +:1073600065A816D07BEC3EF0400EEE16EE6AEE6A93 +:10737000EE6A7BEC3EF0EE7CDEDBEA22EF74400E40 +:107380004E6E7BEC3EF04E50EF167BEC3EF0EF7C09 +:10739000EAD30501EC5122E1010EEC6FED511EE143 +:1073A000010EED6F020ED05D07E1D3DBEE52EF6A06 +:1073B000D0DBC80EEF6E1200D00510E1E36BDFDB0F +:1073C000EE52400EEF6EDBDB4DEC3EF0D8DB840E70 +:1073D000EF6E010EE36FABDB800EEF6E1200050166 +:1073E000EE6BEF6B020ED05D06E1A8EC3EF0CCDB5D +:1073F0003CEC3EF010D0D4510401365D0501D5516E +:107400000401375904E236C4D4F537C4D5F561D840 +:10741000A0DBBADB9EDBC80EEF6E120053EC3EF031 +:10742000000EDE6E040EDD6EC2DB040DF4CF4FF0F5 +:10743000D9CFE9FFDACFEAFFF350EE264F50ED2225 +:1074400083DBEF9EFD0EDB5002E1ACDB01D073DB92 +:10745000EA22DECFEEFFDDCFEDFF76DBEF9C74DBC3 +:10746000040EE926000EEA22EF8C020EE15C02E235 +:10747000E16AE552E16E77D365980501D3BF0DD07F +:10748000D8AF09D0020ED06FEF5101E1A8DF05019E +:10749000ED6BEC6B12006AEF3EF0040130AF0DD0E3 +:1074A0000501010ED06FEE5101E199DF0501ED6B91 +:1074B000EC6BEB510DE1C9EF39F00501020ED06F15 +:1074C00036DB840EEF6EED6BEC6BEB5101E161DFAF +:1074D000120082EC3EF0400EDF6E0501D45D000E1E +:1074E000D5590AE2D4C5DFFFCF5102E1010E03D026 +:1074F000CF0502E1020ECF6FDF504F6AE850D45D36 +:10750000D46F4F50D559D56F24DBEE52DFCFEFFF4C +:10751000380EDD6F040EDE6FD3B10DD0DF5017E0F3 +:10752000D1C5F6FFD2C5F7FFD12B000ED22308003C +:10753000F55057DBF3D7DF500AE0D1C5E9FFD2C5DC +:10754000EAFFD12B000ED223EF504BDBF4D7E552EC +:107550000AD3A9DB14DBEE52EFCFDFFFDFCF4EF013 +:107560004E500501D95D000EDA5902E2D9C5DFFFA0 +:10757000DF504E6E4F6AE850D95DD96F4F50DA59DF +:10758000DA6F010EDB6ADF50F36E010EDBCFF4FF22 +:10759000F350F45C16E2010EDB50EA6A380FE96E34 +:1075A000040EEA22EF50E66ED6C5E9FFD7C5EAFF22 +:1075B000D62B000ED723E552E750EF6E010EDB2AE3 +:1075C000E2D7000ED880D955000EDA550DE2C0DBA7 +:1075D000DBDAD5DAEF50400B03E14EDBC80E02D008 +:1075E0004BDB880EEF6E12D0A2DA840EEF6EDB5109 +:1075F000DC1107E005D0DCC5FAFF0501DB51F96EAF +:10760000FADF0501D89FEB5101E1C3DE020EE15C18 +:1076100002E2E16AE552E16EA6D274DB0501D38F86 +:1076200050DB300EE66EE66AE66A000EE66E040E89 +:10763000B1DA658CDF6A030EDF5C02E2C2DAFBD7E7 +:10764000010EE66EE66AE66ABE0EE66E050EA2DA88 +:10765000659C0501080EC96F040ECA6F000EBF6F4E +:10766000040EC06FBFC5C1F5C26F32C4BDF5BD51B8 +:1076700002E1100E0BD0010EE66EE66ABD0EE66E5C +:10768000050EE66E010E5CDA0501200EBC6FE552B8 +:107690006AD2800E0401305D4EE10501C00ED36F49 +:1076A00004013351030A25E0010A09E0030A41E11C +:1076B0000501520ED16F970ED26F120E34D0325197 +:1076C000F66EF76AD890F636F736A70EF626970EBE +:1076D000F7220900F5CFD1F50A00F5CFD2F5020E59 +:1076E0000501BCDAF5CFD4F5030EB8DAF5CFD5F540 +:1076F0001200040E325D1AE20501D38104013251F9 +:10770000E96EEA6AD890E936EA36F60EE926020E04 +:10771000EA22EECFD1F5EDCFD2F5D1C5E9FFD2C542 +:10772000EAFFEF500501D46FD56B12000501D36B52 +:1077300012000501D36B1200B6DA0401386B396B05 +:1077400030511F0B020A11E0030A0CE0010A1EE18E +:107750000501D38F040138810501DF0517E104011C +:10776000388314D00501D38F11D00501D38F0401C4 +:1077700034BF02D0B6DA01D0B9DA40DABFDA06E0B7 +:10778000E3D9EF50040B02E0010E386F0501D3AFCF +:1077900007D0380ED16F040ED26FD381020ED46F92 +:1077A000020EE15C02E2E16AE552E16EDCD10F011A +:1077B00026A10CD0E4D9EF50800807E1CAD9EF50D8 +:1077C000840803E1DCD98C0EEF6E2691629A1200D8 +:1077D0000F013685629865820501010EE06F14DAAB +:1077E000750EA0EF3DF00501E06B0EDA740EA8D91E +:1077F00065920F01369562A402D06294FCD7120004 +:1078000081DA05012D0EEA6FFD0EE11539E17E0EDC +:10781000E115E8407F0B040DF3CFBFF5F4CFC0F5C1 +:10782000000EBF27040EC023BFC5C1F5C0C5C2F5F9 +:10783000C175A5D9EF503C0BE842E8420D081EE1A6 +:10784000DF6A080EDF5C16E29AD9020EE926000E06 +:10785000C2D9EF50E66EDF50EA6A300FE96E040ECF +:10786000EA22E552E750EF6E8AD978DAEE2AEF2263 +:10787000DF2AE7D784D911DA0AD807D023D805D070 +:10788000FD0EE115040801E12CD8E5526CD105018B +:10789000CF6BEB6BEE6BEF6BE36BD06B5AD9EF9E5C +:1078A000C97557D9EF9EC975E7D9EF9ED36BD46BD5 +:1078B000D56BD86BD96BDA6B51D8A6D9030E40D9EA +:1078C0003CEF3AF0020E0501D05D02E1A9EF3AF07B +:1078D000D06BE35104E12BD98C0EEF6E1200E36BF9 +:1078E000120010DA36D9EF50400B01E0010EDF6EC6 +:1078F0000501C975080EBC5D0BE132C438FF0F01EC +:10790000385103E00501100E02D00501040EBC6FD2 +:10791000D00513E11ED938D9DCDD020E0501CF5D9B +:1079200003E117D9840E07D0DF5003E112D9C80E46 +:1079300002D00FD9880EEF6E0FD0D8AF0CD0DB512C +:10794000DC1107E005D0DCC5FAFF0501DB51F96E5B +:10795000FADF0501D89FD06BE55205D10401305103 +:10796000600BE842E842E842E842E842000901E0F0 +:10797000120031510C0A45E00B0A3FE00C0A31E0DD +:10798000010A22E00B0A1EE0020A1CE0030A18E0CA +:10799000080A10E0010A0CE00F0A08E0030A01E0FF +:1079A00012000501D38F080EBC6F120049EF3BF0A7 +:1079B0000DEF3BF00501BD0ED16F050ED26F0CD05F +:1079C0009CEF3BF002EF3DF034510501D16FD26BDB +:1079D000BE0ED127050ED223D381010ED46FD38FD3 +:1079E00012000501D38F04013451EA6ABE0FE96E1B +:1079F000050EEA2232C4EFFF120006D9020EA0EFF4 +:107A00003DF01200ABD8050EE1260401320510E16D +:107A100030511F0B00090CE10501D38F030E040147 +:107A2000315D04E10501010EDF6F02D00501DF6B5E +:107A30000401325101E074D030511F0B020870E193 +:107A400034510F0B00096CE034510F0B020868E34E +:107A5000200E0501BC5D64E1D38F040134BF04D066 +:107A600040D9CCD8D7D803D041D9C8D8D7D8EA2262 +:107A7000020EEFCFDBFFF9D8010B03E1000EDF941C +:107A800001D0DF8434BF02D02CD901D02FD9EA2213 +:107A9000DECFEEFFDDCFEDFF030E315D0CE12ED921 +:107AA00007E034BF02D0B6D801D0B8D8EA22EF82BE +:107AB000840E59D935D0DF7421D906E045D8EF9E20 +:107AC00043D8EF8CF4D802D03FD8EF8CDF74CDD8F8 +:107AD000020B02E113D90DE0040134BF02D09AD8A1 +:107AE00001D09CD8EA22EF923B0E4E6E2DD9DFD802 +:107AF00002D03B0E29D9040134510F0B4F6A260FD7 +:107B00004E6E0F0E4F22030E4EC0DBFF040E4FC011 +:107B1000DBFF030EDBCFE9FF040EDBCFEAFFEF90C4 +:107B2000050EE15C02E2E16AE552E16E1CD010D97B +:107B3000B4D83CEF3EF0FE0EEA6ADB3485EF3EF04F +:107B4000E66EE66A93EF3EF0DECFE9FFDDCFEAFFB7 +:107B50001200C9C5E9FFCAC5EAFF1200D9CFE6FF86 +:107B6000E1CFD9FF1200E552E7CFD9FF120034511F +:107B70000F0BE96EEA6AD890E936EA361200BFC503 +:107B8000E9FFC0C5EAFF1200E9D8380EEE6E040E18 +:107B9000ED6E1200E66EF9EC4BF04E6E050EE15EF6 +:107BA0004E501200FE0EEA6ADB348CEF3EF0FD0E02 +:107BB000DB50E824506EFE0EDB50040DF3505024D1 +:107BC0001200DF50BCD8EA22EF6ADF50B3D8EA22B5 +:107BD000EF6ADF2A1200EA22EE50EFCFEAFFE96EE9 +:107BE0001200E66EDDC5E9FFDEC5EAFFDD2B000E03 +:107BF000DE23E552E750EF6EDF061200EA22EECFF9 +:107C0000DEFFEDCFDDFF1200000EE66EE66AE66EE7 +:107C1000E66A120034510F0B9AEF3EF034510F0B0D +:107C20009FEF3EF04F224EC0DEFF4FC0DDFF12003F +:107C3000FE0EDBCFE6FF0EEC3AF0E552E552120005 +:107C4000160E396F9F0E376F7B0E366F1200010EC6 +:107C5000E66EE66A000EE66EE66A1200F76AD12565 +:107C6000F66ED251F72208001200D950020FE96EC9 +:107C7000DACFEAFFEF501200C1C5E9FFC2C5EAFF43 +:107C80001200040DF3CF4EF0F4CF4FF0000E4E264D +:107C9000040EC8DF840EB3EF3EF060D8300EEE6EF7 +:107CA000040EED6E12005ADF020EE1261200020EE3 +:107CB000E66EE66ADECFE6FFDDCFE6FF050EA0EF5B +:107CC0003DF0020EE66EE66AE66A270EE66E0F0EDD +:107CD000CAEF3DF02CDF8C0EEF6E3BDF840EEF6EB3 +:107CE000120045DFC30EE926050E120040DFC90E63 +:107CF000E926050E12001FDFEBEF3DF025DFEF5008 +:107D0000800B12002BDFE6521200FE0BEA36E96E02 +:107D1000C90EE926050E1200FE0BEA36E96EC30E07 +:107D2000E926050E1200E6EC48F04E6E060EE15E06 +:107D30004E501200EA6AE70FE96E050E1200EA6A79 +:107D4000E40FE96E050E1200FFDEE850EF16120098 +:107D500093DFEE52400EEF6E3CEF3EF0020EE9264E +:0E7D6000000EEA221200F0DEE850EF121200D0 +:027D6E00F6D944 +:107D7000E6520001606B996BDF6A080EDF5C13E26C +:107D8000E7D9610EE926000E12DAC8D9EF6AE0D908 +:107D9000790EE926000E0BDADBD9890EE926000EF2 +:107DA00006DADF2AEAD70001C60E9C6F0E0E9D6F21 +:107DB0003F0E79140009796ECF0E79140009796E9F +:107DC00079827B6A7A6A79900F0152815293F00E20 +:107DD000B4140909B46E0001080E9A6F030E9B6F6C +:107DE000C60E9E6F3B0E9F6F250EA06F580EA16FA3 +:107DF000040EA66F900EA26F010EA36F900EA46FDB +:107E0000010EA56F000EE66EE66A010EE66E7DECD1 +:107E100016F0E552E552E5528996E552A4D19ED975 +:107E2000E652DF6A080EDF5C09E278D9EFCF4EF048 +:107E3000FE0EDB504E5C09E0DF2AF4D7DF6A080E45 +:107E4000DF5C07E26BD9EF5002E1DF2803D0DF2AC5 +:107E5000F6D7000EE55287D181D9070EE126DE6AFA +:107E6000DD6A020EDB6A030EDB6A040EDB6A050EB6 +:107E7000DB6A060EDB6A010EE66ED9CFE6FFDACFCB +:107E8000E6FF030E39D9020F7AD9010E35D9030F57 +:107E900076D9030E31D9050F72D9030E80D9E66A5F +:107EA000E66AF1EC29F0E552E5520401845124E13F +:107EB000020EDB50180802E2848D1ED0010EE66E21 +:107EC000050EDBCFE6FF060EDBCFE6FF030EDBCFB2 +:107ED000E6FF040EDBCFE6FF020EDBCFE6FFDECFD0 +:107EE000E6FFDDCFE6FF0FD84E6E080EE15E4E5086 +:107EF000E66A0FEC2AF0E552070EE15C02E2E16A65 +:107F0000E552E16E30D12AD9020EE126FC0EDBCF1C +:107F1000E6FF85DFE552E76E010EE7CFDBFFDB50C2 +:107F200002E1000EC3D00BD902E1C9D8BDD0010EC9 +:107F3000DB044E6E00019A514E5C01E3B5D0FC0E9D +:107F4000DB50180801E2B0D0FC0EDB50070802E15C +:107F50000101C16BD6D810E1E66AFC0EDBCFE6FF6B +:107F600056EC35F0E552E552E66AFC0EDBCFE6FF53 +:107F700028EC35F0E552E552F70EDB046AE11350C8 +:107F80000F5CFDE2FC0EDB50040801E1C9D809BC1E +:107F90008BD0D0D8020EEF6EF80EDBCF4EF0F90E7C +:107FA000DBCF4FF0506A516A190E456E466A476A38 +:107FB000486A4EC040F04FC041F050C042F051C03E +:107FC00043F071EC4BF03CC04EF03DC04FF03EC072 +:107FD00050F03FC051F0AED8EE52EE523CC0EEFF32 +:107FE0004FC0EEFF50C0EEFF51C0EEFF80D8290E0B +:107FF000E926000EEA22010EDBCFEFFF78D8260E2D +:10800000E926000EEA22FC0EDBCFEFFF70D8270E28 +:10801000E926000E7BD86BD82A0EE926000EA7D8D9 +:1080200066D8EE52D880000EEE54000EEE54190EB3 +:10803000EE54000EEE5406E25AD8EE52EE6AEE6AA4 +:10804000EE6AEE6A102A1350105C01E3106A0F2AE0 +:108050002BD005A029D0FC0EDB50040801E160D82C +:108060006ED802E12CD812D08FD8890EE926000EE6 +:108070007ED88AD8790EE926000E48D88DD8FC0E15 +:10808000DBCFEFFF3ED802E19DD840D8FC0EDB509D +:108090000001A65D09E10101010EB96F0101B66B96 +:1080A0000101C15101E08A98010EDB504E6E020EB3 +:1080B000E15C02E2E16AE552E16E4E5054D06CD8C8 +:1080C000EF500001EA6A9C25E96E9D51EA22EF6AB1 +:1080D0005BD8890EE926000E6AD856D8790EE926B3 +:1080E000000E65D859D8EF6A6DD8D7EF40F0105020 +:1080F0002F0D61D8EE52120052D8010EE66ED95003 +:10810000120060D8EA22EE50ED101200EA22FD0EB5 +:10811000DBCFEEFFFE0EDBCFEDFF1200DF5057D0BE +:108120008986C2C4BEF4C3C4BFF4C4C4C0F4C5C409 +:10813000C1F4120010502F0D0501DBEF40F0D950B3 +:10814000FD0FE96EFF0EDA20EA6EEE50ED10120020 +:10815000EA6ADF34FE0BEA36E96E1200D9CFE6FF99 +:10816000E1CFD9FF1200E552E7CFD9FF1200EA2292 +:10817000FA0EDBCFEEFFFB0EDBCFEDFF1200E66E5B +:10818000000EDA20E66E1200010EDB04E96EEA6AE8 +:10819000D890E936EA361200010EDB0418D0E66EFC +:1081A00011EC33F0E552E552E552E5521200EA22B5 +:1081B000EE6AED6A1200FA51F324E96EFB51F420E5 +:1081C000EA6E1200E1DF610EE926000E1200EA6A93 +:0A81D000710FE96E000EEA221200A2 +:0681DA003B9E0CD03B9E11 +:1081E00043AE09D0406C411E421E431EE86A412244 +:1081F000422243223B8E43C03DF042C03CF041C08E +:108200004DF040C04CF09E0E3E6E3F6AB6EF42F01D +:108210003B6AF2EC42F00AEC43F03BB69AEF42F0D4 +:108220003BA205D03BBA9AEF42F0A1EF42F03BBA35 +:10823000ADEF42F03BA005D03BB89AEF42F0ADEF76 +:1082400042F03BB8A1EF42F03F6A7F0E44243E6EFD +:10825000E86A3F2249503E5EE86A3F5A1A0E4A6E6B +:10826000446A4C6A4D6A3C6A3D6A4650415E4750DA +:10827000425A4850435A000E445A09E74650412694 +:108280004750422248504322000E442201D04C8ADB +:10829000D8904136423643364436D8904C364D3627 +:1082A0003C363D364A2EE1D7435042104110D8A407 +:1082B0004C8AB6EF42F03B6AF2EC42F00AEC43F033 +:1082C0003BB69AEF42F03BA205D03BB89AEF42F0A2 +:1082D000A1EF42F03BAA05D03BB09AEF42F0A1EFEC +:1082E00042F03BB002D03BA802D0ADEF42F03F6A73 +:1082F000495044243E6EE86A3F227E0E3E5EE86AA4 +:108300003F5A4C6A4D6A3C6A3D6A48504302F4CF7A +:108310003DF0F3CF3CF047504302F3504D26F4506C +:108320003C22000E3D2248504202F3504D26F450AC +:108330003C22000E3D2246504302F3504C26F4509E +:108340004D22000E3C223D2247504202F3504C2663 +:10835000F4504D22000E3C223D2248504102F35081 +:108360004C26F4504D22000E3C223D224650420243 +:10837000F4504C26000E4D223C223D224750410233 +:10838000F4504C26000E4D223C223D22B6EF42F026 +:108390003A6AE86A48AED5EF41F0456C461E471E82 +:1083A000481E4622472248223A1E43AEE0EF41F0E3 +:1083B000406C411E421E431E4122422243223A1E6D +:1083C000D5EC4BF043BEF7EF41F03AAE000C406CF9 +:1083D000411E421E431EE86A4122422243223C6C57 +:1083E0003D1E3E1E3F1E3D223E223F22000C3ABE55 +:1083F000E7EF41F03B88FF0C3B6AF2EC42F03BB602 +:1084000006EF42F03BA20FD03BB407D07F0E436E85 +:10841000FF0E426E416E406E25D0800E436E01D03D +:10842000436A000EF6D73BB0FBD7406A9F0E44600C +:10843000EBD77E0E4464F4D79E0E445C07E0D890E0 +:108440004332423241324032442AF6D73BA40AD06A +:10845000406C411E421E431EE86A412242224322D2 +:1084600043AEDED7120045EC42F03BB6000C3BB009 +:10847000000C3BB4000C010C45EC42F03BB6000C88 +:108480003BB0000C3BA4000C010C3B6AF2EC42F048 +:108490000AEC43F03BB612003BAE08D03BA004D040 +:1084A0003BA802D03B8012003B9012004950445C34 +:1084B0000BE14850435C08E14750425C05E14650FF +:1084C000415C02E13B801200D8A002D03B8E10D06C +:1084D000445049C044F0496E435048C043F0486E90 +:1084E000425047C042F0476E415046C041F0466E90 +:1084F0004950445C10E0FF0F09E03B903BB403D0CF +:108500003BAE3B8412003BAE3B941200492AD8900C +:108510004832473246324650415E4750425A4850F0 +:10852000435A43BEEAD7D890413642364336442EAA +:10853000F8D7C8D77F0E446EFF0E436E426E416E71 +:1085400012007F0E3BBEFF0E446E02D07F0E446EC3 +:10855000800E436E426A416AF3D73BAE04D0800E70 +:10856000446E436AF7D7446A436AF4D73D503C10DF +:108570004D104C10F8E03FBEF0D73DBE0CD03E5041 +:108580003F10EBE0D8904C364D363C363D363E063B +:10859000D8A03F06F2D73F50D4E13E28D2E04CAEFF +:1085A00011D07F0E4C1402E14DA00CD04D2AE86A88 +:1085B0003C223D2207E3D8803D323C324D323E2AF8 +:1085C0003E28BFE03E50C9E04DC041F03CC042F003 +:1085D0003D34436E3E30446E4332449E3BBE448E37 +:1085E000A0EF42F04336443602E33B843B7E06E193 +:1085F0003B80446A436A426A416A1200442803E0AD +:10860000D88043321200D890433202E13B821200FC +:108610003B8612004836493602E33B8C3B7E06E13E +:108620003B88496A486A476A466A1200492803E05B +:10863000D88048321200D8904832EAE13B8A1200D2 +:10864000040130511F0B010801E012003051600B92 +:10865000E842E842E842E842E842010801E012004C +:10866000345103E0340501E012003151220A31E0B7 +:10867000030A24E0010A15E0210A0DE0010A01E0E5 +:1086800012000501B40ED16F050ED26F080ED46F23 +:10869000D56BD38121D00501B40ED16F050ED26FF9 +:1086A0001BD036C4D9F537C4DAF50501940ED66F60 +:1086B000050ED76FDB6BDC6BD88F12000501940EB3 +:1086C000D16F050ED26F070ED46FD56BC10ED36F6D +:1086D000120032C4AFF50501D38F12000501946B6F +:1086E0004B0E956F966B976B986B996B080E9A6F04 +:1086F000A36B1A0EE66E010EE66E2BEC39F0E55216 +:10870000E5521E0EE66E020EE66E2BEC39F0E552D7 +:10871000E5521CD90501AD6BAE6BA46B120041D9BB +:1087200065D9050E421801E1435002E0000E14D055 +:1087300048D90501AB514E1804E1AC514F1801E185 +:1087400005D93FD90501AD514E1805E1AE514F187D +:1087500002E1A46BA96B010E29D123D90501A36BFA +:10876000AB51AC1102E1000E05D032D9EF50800BB5 +:1087700001E0010E00092DE1FC0EDBCF4EF028D9FF +:10878000EE52EF50D8804E5405E222D9EE52FC0E44 +:10879000EFCFDBFFA36BFC0EDB50A35D19E2A3510F +:1087A000EA6A540FE96E050EEA22EF50E66EA35115 +:1087B000E76EFD0EDBCFE9FFFE0EDBCFEAFFE750F1 +:1087C000E926000EEA22E552E750EF6EA32BE3D72D +:1087D000BDD80501A351EAD0E4D80501A45107E1B1 +:1087E000E9D8FC0EDBCFA9F5010EAA6FA46FDED08D +:1087F00004D917E1C0D8DF2AFF0EDF5C0BE0010EC1 +:10880000DBCFE9FFDB2A020EDBCFEAFF01E3DB2A45 +:10881000EF50F1E1CFD8DFCFA9F50501010EAA6F26 +:10882000A46F030EE15C02E2E16AE552E16EBED0A4 +:10883000E4D818E1A0D8DF2AFF0EDF5C0CE0010EBF +:10884000DBCFF6FFDB2A020EDBCFF7FF01E3DB2AEB +:108850000800F550F0E1AED8DFCFA9F50501AA6B0D +:10886000010EA46F030EE15C02E2E16AE552E16EE3 +:108870009DD097D8020EE1260501AD51AE1102E15F +:10888000000E08D0ADC5E9FFAEC5EAFFEF50800B82 +:1088900001E0010E000953E1030EA45D01E1A46BA8 +:1088A000A4514DE0020EA45D09E1E66A000EE66EF9 +:1088B000E66A59D80501030EA46F41D0A4053FE133 +:1088C000400E4E6E4F6AA9514E5C000E4F5803E2A7 +:1088D000400EDF6E02D0A9C5DFFFDF50A95DA96F92 +:1088E000140EA76F050EA86F010EDFCFDBFFAA5194 +:1088F0000BE1010EDB5012E0A5C5F6FFA6C5F7FFA0 +:108900000800F55041D8F5D7010EDB5007E0A5C5AA +:10891000E9FFA6C5EAFFEF5037D8F6D70501A95100 +:1089200007E1400EDF5C02E1020E01D0030EA46FEE +:10893000DFCFE6FF140EE66E050EE66E14D8020ECB +:10894000E15C02E2E16AE552E16E30D0400EE66E93 +:10895000540EE66E050EE66EE66A3FD8F3CFABF531 +:10896000F4CFACF51200010EE66E37D8F3CFADF5BB +:10897000F4CFAEF51200DF6A39D8DE5242C0DEFF16 +:1089800043C0DDFFDD521200A7C5E9FFA8C5EAFF1D +:10899000EF6EA72B000EA823A52BA623010EDB0646 +:1089A0001200D9CFE6FFE1CFD9FF1200E552E7CFA1 +:1089B000D9FF1200FD0EDBCFA5F5FE0EDBCFA6F52D +:1089C0001200FB0EDBCF4EF0FC0EDBCF4FF012009F +:1089D000ABC5E9FFACC5EAFF1200020EE66E4FEC34 +:1089E00039F04E6E050EE15E4E501200FD0EDBCFEB +:1089F00042F0FE0EDBCF43F01200D3DF030EE12680 +:068A00000501A451120063 +:0A8A06002130204572723A203C61D5 +:108A1000786973323E2073746570207261746520CA +:108A2000746F6F20736C6F772E0021302045727247 +:108A30003A203C61786973323E207374657020720D +:108A400061746520746F6F20686967682E0021303B +:108A5000204572723A203C61786973313E2073740C +:108A60006570207261746520746F6F20736C6F770E +:108A70002E002130204572723A203C6178697331B2 +:108A80003E2073746570207261746520746F6F206E +:108A9000686967682E00205341323D002053413100 +:108AA0003D004475726174696F6E3D002130204550 +:108AB00072723A20537465705261746520696E76E3 +:108AC000616C69642076616C75652E005261746515 +:108AD0003D00434D20636F6D6D616E64206469736A +:108AE00061626C656420696E2074686973206275C8 +:108AF000696C640020446972656374696F6E3D003F +:108B00002043656E7465725F593D002043656E7445 +:108B100065725F583D0020446573745F593D0020C5 +:108B2000446573745F583D00467265713D00205383 +:108B3000453D00204A323D002041323D0020533265 +:108B40003D002052323D00204A313D002041313D60 +:108B5000002053313D0052313D00537461747573F0 +:108B60003D002135204572723A204E6565642063D0 +:108B70006F6D6D61206E6578742C20666F756E6404 +:108B80003A202700506172616D383D00506172617A +:108B90006D373D00506172616D363D00506172610C +:108BA0006D353D00506172616D343D005061726100 +:108BB0006D333D00506172616D323D0050617261F4 +:108BC0006D313D000D0A000A0D004F4B000A0021D7 +:108BD00038204572723A20556E6B6E6F776E206347 +:108BE0006F6D6D616E642027002138204572723AE6 +:108BF00020436865636B73756D206E6F7420666FBC +:108C0000756E642062757420726571756972656431 +:108C10002E002138204572723A20436865636B73D9 +:108C2000756D20696E636F72726563742C20657850 +:108C300070656374656420004C696D697420737796 +:108C400069746368207472696767657265642E2051 +:108C5000506F7274423D002137204572723A2045B0 +:108C60007874726120706172616D65746572002143 +:108C700036204572723A20496E76616C69642070C4 +:108C80006172616D657465722076616C7565002135 +:108C900034204572723A204D697373696E67207093 +:108CA0006172616D657465722873290021332045F6 +:108CB00072723A20525820427566666572206F764D +:108CC000657272756E002132204572723A205458D6 +:108CD00020427566666572206F76657272756E00E9 +:108CE0002131204572723A2043616E2774207374DB +:108CF000657020746861742066617374002130208F +:048D00000020080047 +:0C8D0400DDD8D0D80DE0CED8F3D8D9507F +:108D1000FC0FE96EFF0EDA20EA6EEE2A000EEE225C +:108D2000EE22F1D7F7D0CCD8D6D808E0D4D8E2D804 +:108D3000FD0EDB2AFE0EF8E3DB2AF6D7EBD0EED8E9 +:108D40000F0E4E6E4F6A506AD950BFD8EE504E1675 +:108D5000EE504F16EE505016EE504EC0FEF14E50F3 +:108D6000090802E3300E01D0370EFE25C8D873D8AB +:108D7000040ED890513250324F324E32E806F9E1AB +:108D8000FB0E4EC0DBFFFC0E4FC0DBFFFD0E50C0E4 +:108D9000DBFFFE0E51C0DBFF0101FD07FA0EDB50C9 +:108DA00002E0FA0EDB06C0D8CBE1FA0EDB50C8E1D8 +:108DB0006CD0B4D85DD897D83CC0FEF1300E01011C +:108DC0003C249DD855D88FD8FB0E40C0DBFFFC0E4D +:108DD00041C0DBFFFD0E42C0DBFFFE0E43C0DBFFE8 +:108DE0000101FD07A1D8E6E150D06AD8E1506DD865 +:108DF000D890030EEB50000A08E6000EEE5C000E61 +:108E0000EE58000EEE58000EEE5815E22D0E72D8F8 +:108E10002FD8456846684768486871EC4BF0FB0EF0 +:108E20003CC0DBFFFC0E3DC0DBFFFD0E3EC0DBFFA8 +:108E3000FE0E3FC0DBFFD95048D8EECFE6FFEECFA5 +:108E4000E6FFEECFE6FFEFCFE6FFB3DFE552E552F8 +:108E5000E552E5525FD0FB0EDBCF4EF0FC0EDBCFD0 +:108E60004FF0FD0EDBCF50F0FE0EDBCF51F01200C5 +:108E7000FB0EDBCF40F0FC0EDBCF41F0FD0EDBCF75 +:108E800042F0FE0EDBCF43F01200FD2BFD514F6A86 +:108E9000F10F4E6E010E4F224EC0E6FF4FC0E6FFAF +:108EA00042DFE552E55236D0FC0EDBCFF6FFFD0E79 +:108EB000DBCFF7FFFE0EDBCFF8FF0800F550120006 +:108EC000D9CFE6FFE1CFD9FF1200FB0FE96EFF0E0D +:108ED000DA20EA6E1200FD0EDBCFE9FFFE0EDBCFDB +:108EE000EAFFEF5012000A0E456E466A476A486A6A +:108EF000D5EF4BF0E66E83EC26F0E5521200E66EFD +:108F0000FD51EA6AF10FE96E010EEA22E552E750DF +:108F1000EF6E1200E552E7CFD9FF1200D1DF010159 +:108F2000FC6B0A0EFD6F120096DF4E504F10501072 +:048F300051101200CA +:0C8F3400D9CFE6FFDACFE6FFE1CFD9FF8E +:108F4000E2CFDAFF060EE12402E3E168E652E16EC9 +:108F5000DF6A010EDB6AD950FA0FE96EFF0EDA20E4 +:108F6000EA6E020EEECFDBFF030EEECFDBFF040E48 +:108F7000EECFDBFF050EEECFDBFFD950FA0FE96E27 +:108F8000FF0EDA20EA6E060EE76ED890030EEB3283 +:108F9000020EEB32010EEB32EF32E706F6E1D9506A +:108FA000FA0FE96EFF0EDA20EA6E060EE76ED89031 +:108FB000EF36010EEB36020EEB36030EEB36E7060C +:108FC000F6E1D950FA0FE96EFF0EDA20EA6E400E94 +:108FD000EE26000EEE22000EEE22000EEE22FA0E1B +:108FE000DBCF52F0FB0EDBCF53F0FC0EDBCF54F0A7 +:108FF000FD0EDBCF55F0D950020FE96E000EDA20DE +:10900000EA6EEE50525C4E6EEE5053584F6EEE507C +:109010005458506EEE505558516E4E50DF6ED95028 +:10902000F80FE96EFF0EDA20EA6EEE50ED1065E003 +:10903000040EDB50F86E030EDB50F76E020EDB50B1 +:10904000F66EDF50DF0600091AE0F60EDBCFE9FF0F +:10905000DB2AF70EDBCFEAFF01E3DB2AEF50F56EE8 +:109060000D00F80EDB06DBCF4EF0F90E01E2DB0659 +:10907000DBCF4FF04E504F1001E101D0E2D7040E8C +:10908000DB50F86E030EDB50F76E020EDB50F66E0F +:10909000A684F2AE04D0F29EDE52010EDD6E550EB5 +:1090A000A76EAA0EA76EA682A694010EDB5003E05F +:1090B000F28E010EDB6A400EDF6E400E4E6E4F6A7E +:1090C000506A516AD950020FE96E000EDA20EA6E3A +:1090D000EE504E26EE504F22EE505022EE505122CE +:1090E000020E4EC0DBFF030E4FC0DBFF040E50C06C +:1090F000DBFF050E51C0DBFF92D7060EE15C02E2FA +:10910000E16AE552E16EE552E5CFDAFFE7CFD9FF3C +:0291100012004B +:0E911200F5EC23F005D87EEC38F022EC25F0C9 +:10912000FBD7D9CFE6FFE1CFD9FF020EE1260F0131 +:1091300048694969600ED36E9B8C580EDE6E020E34 +:10914000DD6EDFCF4EF0DF06010EDBCF4FF001E228 +:10915000DB064E504F10F5E1948E67EC24F018ECCE +:1091600038F0020EE15C02E2E16AE552E16EE5529E +:10917000E7CFD9FF1200120012001200120020EFF8 +:1091800043F012006EEF43F00501DF051EE105011B +:10919000E0051BE1F1DF65920501E06B0201100EB5 +:1091A000FE6F0E0EFF6FFE07000EFF5BFE51FF11FC +:1091B000FAE16584080EFE6F070EFF6FFE07000ED2 +:1091C000FF5BFE51FF11FAE165941200D9CFE6FF73 +:1091D000E1CFD9FFFD0EDBCF42F0FE0EDBCF43F037 +:1091E000050E421801E1435036E0E868421802E1FA +:1091F0007F0E43182FE0030E421801E1435028E090 +:10920000020E421801E1435021E0010E421801E133 +:1092100043501AE0740E421801E1435013E0750EFA +:10922000421801E143500CE0730E421801E1435033 +:1092300005E0720E42180FE143500DD09EDF0BD0B7 +:109240009ADF09D099DF07D09DDF05D09ADF03D0E0 +:1092500096DF01D093DF010EE552E7CFD9FF120070 +:10926000D9CFE6FFE1CFD9FF0501FB0EDBCF00F53B +:10927000FC0EDBCF01F5FD0EDBCF02F5FE0EDBCFE2 +:1092800003F5036725D0026723D0126B800E106FA1 +:109290000B6F0B510B03F350005DF4500159D8B024 +:1092A00008D012C50BF5104310510B1310BF09D095 +:1092B000F0D70BC512F5104310510B1310BF01D09E +:1092C000E8D712C5F3FFF46AE552E7CFD9FF1200E1 +:1092D000126B136B106B0B6B800E116F0A6F0BC54B +:1092E00005F50AC504F5A3EC49F00C51005D0D51DC +:1092F00001590E5102590F510359D8B00ED0000F29 +:1093000012C50BF513C50AF51133103311510A13A9 +:1093100010510B13D8B00FD0E2D7000F0BC512F5C8 +:109320000AC513F51133103311510A1310510B13E1 +:10933000D8B001D0D4D712C5F3FF13C5F4FFE5525E +:10934000E7CFD9FF120005510503F4CF0DF5F3CF98 +:109350000CF504510403F4CF0FF5F3CF0EF50551CE +:109360000403F3500D27F4500E23E86A0F23045131 +:109370000503F3500D27F4500E23E86A0F23120063 +:10938000C00EF36E00EE00F00E0E01D81200EA607F +:1093900002D0EE6AFCD7F350E9601200EE6AFCD707 +:1093A000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFF90 +:1093B000E652E652E652E652E652DF6AD950FA0F1A +:1093C000E96EFF0EDA20EA6E010EEECFDBFF020E31 +:1093D000EECFDBFF030EEECFDBFF040EEECFDBFFA5 +:1093E000F60EDBCF4EF0F70EDBCF4FF0F80EDBCFF3 +:1093F00050F0F90EDBCF51F048D84E50EE5C4F5094 +:10940000EE585050EE585150EE5833E2030EDB50F8 +:10941000F86E020EDB50F76E010EDB50F66EA6847E +:10942000A688F2AE03D0F29E010EDF6E550EA76E37 +:10943000AA0EA76EA682DF5001E0F28E4E6A040EDD +:109440004F6E506A516A21D8EE504E26EE504F2290 +:10945000EE505022EE505122010E4EC0DBFF020EA4 +:109460004FC0DBFF030E50C0DBFF040E51C0DBFF1B +:10947000B7D7050EE15C02E2E16AE552E16EE55222 +:10948000E5CFDAFFE7CFD9FF1200D950010FE96E1F +:08949000000EDA20EA6E120062 +:089498004542427631335F6169 +:1094A0006E645F61626F7665204542204669726D29 +:1094B000776172652056657273696F6E20332E3046 +:1094C0002E3200920F920F920F930F930F930F93E0 +:1094D0000F930F930F930F930F940F940F940F9478 +:1094E0000F940F940F940F940F950F950F950F9560 +:1094F0000F950F950F890F890F890F8A0F8A0F8A91 +:109500000F8A0F8A0F8A0F8A0F8A0F8B0F8B0F8B90 +:109510000F8B0F8B0F8B0F8B0F8B0F8C0F8C0F8C78 +:109520000F8C0F8C0F8C0F00010500010203040546 +:1095300006070001020304050607020304050607E7 +:109540002A0EF66E100EF76E000EF86E0501090079 +:10955000F550F56F0900F550F66F03E1F56701D09E +:109560003DD00900F550F06F0900F550F16F09008A +:10957000F550F26F09000900F550E96E0900F55049 +:10958000EA6E090009000900F550F36F0900F55073 +:10959000F46F09000900F6CFF7F5F7CFF8F5F8CF2B +:1095A000F9F5F0C5F6FFF1C5F7FFF2C5F8FF0501C3 +:1095B000F35302E1F45307E00900F550EE6EF307B0 +:1095C000F8E2F407F9D7F7C5F6FFF8C5F7FFF9C5D4 +:0E95D000F8FF0501F507000EF65BBFD712008D +:0295DE00D9CFE3 +:1095E000E6FFDACFE6FFE1CFD9FFE2CFDAFFE652BE +:1095F000E652E652E652D9CFE9FFDACFEAFFFA0E99 +:10960000DBCFEEFFFB0EDBCFEEFFFC0EDBCFEEFF82 +:10961000FD0EDBCFEEFF020EDB50F86E010EDB50CD +:10962000F76EDF50F66EF80EDBCF4EF0DB06F90E6C +:10963000DBCF4FF001E2DB064E504F100DE009008A +:10964000F60EDBCFE9FFDB2AF70EDBCFEAFF01E303 +:10965000DB2AF5CFEFFFE7D7040EE15C02E2E16A17 +:10966000E552E16EE552E5CFDAFFE7CFD9FF120010 +:10967000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFFBD +:10968000AD6AAC6AFD0EDBB0AD88DBA202D0AD8C5A +:10969000AC8CDBB4AD8EDBA602D0AC8801D0AC8A3A +:1096A000DBB8AD84DBBAAC86DBAC02D09D8A01D0DE +:1096B0009D9ADBAE02D09D8801D09D98FB0EDB50B9 +:1096C000B06EFC0EDBCF4FF04FC04EF04F6A4E50E5 +:1096D0007F6EAD8AAC8EE552E5CFDAFFE7CFD9FFDA +:0296E000120076 +:0E96E20040504502F3CF3CF0F4CF3DF046027D +:1096F000F3503D26000EF4203E6E40504702F350DA +:109700003E26000EF4203F6E40504802F3503F26A4 +:1097100041504502F3503D26F4503E22000E3F22B8 +:1097200041504602F3503E26F4503F22415047023A +:10973000F3503F2642504502F3503E26F4503F225C +:1097400042504602F3503F2643504502F3503F2615 +:02975000120005 +:0E9752001201000202000040D80492FD8201C4 +:109760000102030109024300020100C032090400A2 +:109770000001020201000524001001042402020578 +:1097800024060001052401000107058103080002E9 +:1097900009040100020A000000070502024000005F +:0997A000070582024000006497F5 +:0697AA003F6A3E6A3D6AC1 +:1097B0003C6A200EE76ED89040364136423643363A +:1097C0003C363D363E363F3645503C5C46503D5873 +:1097D00047503E5848503F5809E345503C5E46507C +:1097E0003D5A47503E5A48503F5A402AE72EE4D748 +:0297F000120065 +:0E97F200FE0EE3CFE9FFFF0EE3CFEAFFE9CF63 +:10980000F3FFEACFF4FFFB0EE35003E1FC0EE3505D +:1098100009E0FB0EE30602E2FC0EE306FD0EE35058 +:06982000EE6EF1D712000C +:0A982600D9CFE6FFDACFE6FFE1CF6D +:10983000D9FFE2CFDAFFADAC04D0AD900501FCB3A7 +:10984000AD80FD0EDB50AE6EE552E5CFDAFFE7CF1F +:04985000D9FF12002A +:0C985400FF0EE124E96EFF0EE220EA6E38 +:10986000EDCFF4FFEFCFF3FFF46607D0600EF364A3 +:0C98700004D07B0EF36001D0F39A1200CC +:04987C00D9CFE6FF5B +:10988000DACFE6FFE1CFD9FFE2CFDAFFFD0EDB5002 +:0E9890007E6EE552E5CFDAFFE7CFD9FF12007A +:02989E001EEEBC +:1098A00000F02EEE00F0F86A3B9CA0EC4AF068EC69 +:0A98B0004CF089EC48F0FBD71200E1 +:0698BA00F36AF46AF32AD0 +:1098C0000F0B05E0D890F336F436E804FBE1120004 +:0298D000120084 +:0E98D2000403090418035300630068006D00CE +:1098E00061006C007A004800610075007300380365 +:1098F0004500690042006F00740042006F00610083 +:10990000720064002C0020002000200020002000B5 +:109910002000200020002000200020002000200047 +:109920002000200020002203200020002000200032 +:109930002000200020002000200020002000200027 +:109940002000200020002000800284029C02D4021B +:0299500000060F +:099952000000000001000000000B :00000001FF diff --git a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.lst b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.lst index f2755e1..4440e67 100644 --- a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.lst +++ b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.lst @@ -1,6 +1,6 @@ MP2COD 5.00, COFF to COD File Converter Copyright (c) 1998-2013 Microchip Technology Inc. -Listing File Generated: Fri Apr 12 21:27:09 2024 +Listing File Generated: Mon May 06 21:26:14 2024 Address Value Disassembly Source File @@ -39,31 +39,31 @@ Address Value Disassembly Source { C:\MCC18\src\traditional\startup\c018i.c _asm C:\MCC18\src\traditional\startup\c018i.c // Initialize the stack pointer C:\MCC18\src\traditional\startup\c018i.c -0098d0 ee1e LFSR 0x1,0xe00 lfsr 1, _stack C:\MCC18\src\traditional\startup\c018i.c -0098d2 f000 -0098d4 ee2e LFSR 0x2,0xe00 lfsr 2, _stack C:\MCC18\src\traditional\startup\c018i.c -0098d6 f000 +00989e ee1e LFSR 0x1,0xe00 lfsr 1, _stack C:\MCC18\src\traditional\startup\c018i.c +0098a0 f000 +0098a2 ee2e LFSR 0x2,0xe00 lfsr 2, _stack C:\MCC18\src\traditional\startup\c018i.c +0098a4 f000 C:\MCC18\src\traditional\startup\c018i.c -0098d8 6af8 CLRF 0xf8,0x0 clrf TBLPTRU, 0 // 1st silicon doesn't do this on POR C:\MCC18\src\traditional\startup\c018i.c +0098a6 6af8 CLRF 0xf8,0x0 clrf TBLPTRU, 0 // 1st silicon doesn't do this on POR C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c -0098da 9c3b BCF 0x3b,0x6,0x0 bcf __FPFLAGS,RND,0 // Initialize rounding flag for floating point libs C:\MCC18\src\traditional\startup\c018i.c +0098a8 9c3b BCF 0x3b,0x6,0x0 bcf __FPFLAGS,RND,0 // Initialize rounding flag for floating point libs C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c _endasm C:\MCC18\src\traditional\startup\c018i.c -0098dc ecb9 CALL 0x9572,0x0 _do_cinit (); C:\MCC18\src\traditional\startup\c018i.c -0098de f04a +0098aa eca0 CALL 0x9540,0x0 _do_cinit (); C:\MCC18\src\traditional\startup\c018i.c +0098ac f04a C:\MCC18\src\traditional\startup\c018i.c loop: C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c // If user defined __init is not found, the one in clib.lib will be used C:\MCC18\src\traditional\startup\c018i.c -0098e0 ec81 CALL 0x9902,0x0 __init (); C:\MCC18\src\traditional\startup\c018i.c -0098e2 f04c +0098ae ec68 CALL 0x98d0,0x0 __init (); C:\MCC18\src\traditional\startup\c018i.c +0098b0 f04c C:\MCC18\src\traditional\startup\c018i.c // Call the user's main routine C:\MCC18\src\traditional\startup\c018i.c -0098e4 eca1 CALL 0x9142,0x0 main (); C:\MCC18\src\traditional\startup\c018i.c -0098e6 f048 +0098b2 ec89 CALL 0x9112,0x0 main (); C:\MCC18\src\traditional\startup\c018i.c +0098b4 f048 C:\MCC18\src\traditional\startup\c018i.c -0098e8 d7fb BRA 0x98e0 goto loop; C:\MCC18\src\traditional\startup\c018i.c -0098ea 0012 RETURN 0x0 } /* end _startup() */ C:\MCC18\src\traditional\startup\c018i.c +0098b6 d7fb BRA 0x98ae goto loop; C:\MCC18\src\traditional\startup\c018i.c +0098b8 0012 RETURN 0x0 } /* end _startup() */ C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c /* MPLAB-C18 initialized data memory support */ C:\MCC18\src\traditional\startup\c018i.c /* The linker will populate the _cinit table */ C:\MCC18\src\traditional\startup\c018i.c @@ -93,30 +93,30 @@ Address Value Disassembly Source static short long data_ptr; C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c // Initialized data... C:\MCC18\src\traditional\startup\c018i.c -009572 0e2a MOVLW 0x2a TBLPTR = (short long)&_cinit; C:\MCC18\src\traditional\startup\c018i.c -009574 6ef6 MOVWF 0xf6,0x0 -009576 0e10 MOVLW 0x10 -009578 6ef7 MOVWF 0xf7,0x0 -00957a 0e00 MOVLW 0x0 -00957c 6ef8 MOVWF 0xf8,0x0 +009540 0e2a MOVLW 0x2a TBLPTR = (short long)&_cinit; C:\MCC18\src\traditional\startup\c018i.c +009542 6ef6 MOVWF 0xf6,0x0 +009544 0e10 MOVLW 0x10 +009546 6ef7 MOVWF 0xf7,0x0 +009548 0e00 MOVLW 0x0 +00954a 6ef8 MOVWF 0xf8,0x0 _asm C:\MCC18\src\traditional\startup\c018i.c -00957e 0105 MOVLB 0x5 movlb data_ptr C:\MCC18\src\traditional\startup\c018i.c -009580 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -009582 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -009584 6ff5 MOVWF 0xf5,0x1 movwf curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c -009586 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -009588 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -00958a 6ff6 MOVWF 0xf6,0x1 movwf curr_entry+1, 1 C:\MCC18\src\traditional\startup\c018i.c +00954c 0105 MOVLB 0x5 movlb data_ptr C:\MCC18\src\traditional\startup\c018i.c +00954e 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009550 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009552 6ff5 MOVWF 0xf5,0x1 movwf curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c +009554 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009556 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009558 6ff6 MOVWF 0xf6,0x1 movwf curr_entry+1, 1 C:\MCC18\src\traditional\startup\c018i.c _endasm C:\MCC18\src\traditional\startup\c018i.c //while (curr_entry) C:\MCC18\src\traditional\startup\c018i.c //{ C:\MCC18\src\traditional\startup\c018i.c test: C:\MCC18\src\traditional\startup\c018i.c _asm C:\MCC18\src\traditional\startup\c018i.c -00958c e103 BNZ 0x9594 bnz 3 C:\MCC18\src\traditional\startup\c018i.c -00958e 67f5 TSTFSZ 0xf5,0x1 tstfsz curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c -009590 d001 BRA 0x9594 bra 1 C:\MCC18\src\traditional\startup\c018i.c +00955a e103 BNZ 0x9562 bnz 3 C:\MCC18\src\traditional\startup\c018i.c +00955c 67f5 TSTFSZ 0xf5,0x1 tstfsz curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c +00955e d001 BRA 0x9562 bra 1 C:\MCC18\src\traditional\startup\c018i.c _endasm C:\MCC18\src\traditional\startup\c018i.c -009592 d03d BRA 0x960e goto done; C:\MCC18\src\traditional\startup\c018i.c +009560 d03d BRA 0x95dc goto done; C:\MCC18\src\traditional\startup\c018i.c /* Count down so we only have to look up the data in _cinit C:\MCC18\src\traditional\startup\c018i.c * once. C:\MCC18\src\traditional\startup\c018i.c * C:\MCC18\src\traditional\startup\c018i.c @@ -126,37 +126,37 @@ Address Value Disassembly Source */ C:\MCC18\src\traditional\startup\c018i.c _asm C:\MCC18\src\traditional\startup\c018i.c /* read the source address */ C:\MCC18\src\traditional\startup\c018i.c -009594 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -009596 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -009598 6ff0 MOVWF 0xf0,0x1 movwf prom, 1 C:\MCC18\src\traditional\startup\c018i.c -00959a 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -00959c 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -00959e 6ff1 MOVWF 0xf1,0x1 movwf prom+1, 1 C:\MCC18\src\traditional\startup\c018i.c -0095a0 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095a2 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095a4 6ff2 MOVWF 0xf2,0x1 movwf prom+2, 1 C:\MCC18\src\traditional\startup\c018i.c +009562 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009564 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009566 6ff0 MOVWF 0xf0,0x1 movwf prom, 1 C:\MCC18\src\traditional\startup\c018i.c +009568 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +00956a 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +00956c 6ff1 MOVWF 0xf1,0x1 movwf prom+1, 1 C:\MCC18\src\traditional\startup\c018i.c +00956e 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009570 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009572 6ff2 MOVWF 0xf2,0x1 movwf prom+2, 1 C:\MCC18\src\traditional\startup\c018i.c /* skip a byte since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c -0095a6 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009574 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c /* read the destination address directly into FSR0 */ C:\MCC18\src\traditional\startup\c018i.c -0095a8 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095aa 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095ac 6ee9 MOVWF 0xe9,0x0 movwf FSR0L, 0 C:\MCC18\src\traditional\startup\c018i.c -0095ae 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095b0 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095b2 6eea MOVWF 0xea,0x0 movwf FSR0H, 0 C:\MCC18\src\traditional\startup\c018i.c +009576 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009578 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +00957a 6ee9 MOVWF 0xe9,0x0 movwf FSR0L, 0 C:\MCC18\src\traditional\startup\c018i.c +00957c 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +00957e 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009580 6eea MOVWF 0xea,0x0 movwf FSR0H, 0 C:\MCC18\src\traditional\startup\c018i.c /* skip two bytes since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c -0095b4 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095b6 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009582 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009584 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c /* read the destination address directly into FSR0 */ C:\MCC18\src\traditional\startup\c018i.c -0095b8 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095ba 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095bc 6ff3 MOVWF 0xf3,0x1 movwf curr_byte, 1 C:\MCC18\src\traditional\startup\c018i.c -0095be 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095c0 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095c2 6ff4 MOVWF 0xf4,0x1 movwf curr_byte+1, 1 C:\MCC18\src\traditional\startup\c018i.c +009586 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009588 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +00958a 6ff3 MOVWF 0xf3,0x1 movwf curr_byte, 1 C:\MCC18\src\traditional\startup\c018i.c +00958c 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +00958e 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +009590 6ff4 MOVWF 0xf4,0x1 movwf curr_byte+1, 1 C:\MCC18\src\traditional\startup\c018i.c /* skip two bytes since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c -0095c4 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095c6 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009592 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +009594 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c _endasm C:\MCC18\src\traditional\startup\c018i.c //prom = data_ptr->from; C:\MCC18\src\traditional\startup\c018i.c //FSR0 = data_ptr->to; C:\MCC18\src\traditional\startup\c018i.c @@ -165,61 +165,61 @@ Address Value Disassembly Source * off since we'll be using the table pointer to do the copying C:\MCC18\src\traditional\startup\c018i.c * for the entry. C:\MCC18\src\traditional\startup\c018i.c */ C:\MCC18\src\traditional\startup\c018i.c -0095c8 cff6 MOVFF 0xff6,0x5f7 data_ptr = TBLPTR; C:\MCC18\src\traditional\startup\c018i.c -0095ca f5f7 -0095cc cff7 MOVFF 0xff7,0x5f8 -0095ce f5f8 -0095d0 cff8 MOVFF 0xff8,0x5f9 -0095d2 f5f9 +009596 cff6 MOVFF 0xff6,0x5f7 data_ptr = TBLPTR; C:\MCC18\src\traditional\startup\c018i.c +009598 f5f7 +00959a cff7 MOVFF 0xff7,0x5f8 +00959c f5f8 +00959e cff8 MOVFF 0xff8,0x5f9 +0095a0 f5f9 C:\MCC18\src\traditional\startup\c018i.c /* now assign the source address to the table pointer */ C:\MCC18\src\traditional\startup\c018i.c -0095d4 c5f0 MOVFF 0x5f0,0xff6 TBLPTR = prom; C:\MCC18\src\traditional\startup\c018i.c -0095d6 fff6 -0095d8 c5f1 MOVFF 0x5f1,0xff7 -0095da fff7 -0095dc c5f2 MOVFF 0x5f2,0xff8 -0095de fff8 +0095a2 c5f0 MOVFF 0x5f0,0xff6 TBLPTR = prom; C:\MCC18\src\traditional\startup\c018i.c +0095a4 fff6 +0095a6 c5f1 MOVFF 0x5f1,0xff7 +0095a8 fff7 +0095aa c5f2 MOVFF 0x5f2,0xff8 +0095ac fff8 C:\MCC18\src\traditional\startup\c018i.c /* do the copy loop */ C:\MCC18\src\traditional\startup\c018i.c _asm C:\MCC18\src\traditional\startup\c018i.c // determine if we have any more bytes to copy C:\MCC18\src\traditional\startup\c018i.c -0095e0 0105 MOVLB 0x5 movlb curr_byte C:\MCC18\src\traditional\startup\c018i.c -0095e2 53f3 MOVF 0xf3,0x1,0x1 movf curr_byte, 1, 1 C:\MCC18\src\traditional\startup\c018i.c +0095ae 0105 MOVLB 0x5 movlb curr_byte C:\MCC18\src\traditional\startup\c018i.c +0095b0 53f3 MOVF 0xf3,0x1,0x1 movf curr_byte, 1, 1 C:\MCC18\src\traditional\startup\c018i.c copy_loop: C:\MCC18\src\traditional\startup\c018i.c -0095e4 e102 BNZ 0x95ea bnz 2 // copy_one_byte C:\MCC18\src\traditional\startup\c018i.c -0095e6 53f4 MOVF 0xf4,0x1,0x1 movf curr_byte + 1, 1, 1 C:\MCC18\src\traditional\startup\c018i.c -0095e8 e007 BZ 0x95f8 bz 7 // done_copying C:\MCC18\src\traditional\startup\c018i.c +0095b2 e102 BNZ 0x95b8 bnz 2 // copy_one_byte C:\MCC18\src\traditional\startup\c018i.c +0095b4 53f4 MOVF 0xf4,0x1,0x1 movf curr_byte + 1, 1, 1 C:\MCC18\src\traditional\startup\c018i.c +0095b6 e007 BZ 0x95c6 bz 7 // done_copying C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c copy_one_byte: C:\MCC18\src\traditional\startup\c018i.c -0095ea 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c -0095ec 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c -0095ee 6eee MOVWF 0xee,0x0 movwf POSTINC0, 0 C:\MCC18\src\traditional\startup\c018i.c +0095b8 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c +0095ba 50f5 MOVF 0xf5,0x0,0x0 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c +0095bc 6eee MOVWF 0xee,0x0 movwf POSTINC0, 0 C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c // decrement byte counter C:\MCC18\src\traditional\startup\c018i.c -0095f0 07f3 DECF 0xf3,0x1,0x1 decf curr_byte, 1, 1 C:\MCC18\src\traditional\startup\c018i.c -0095f2 e2f8 BC 0x95e4 bc -8 // copy_loop C:\MCC18\src\traditional\startup\c018i.c -0095f4 07f4 DECF 0xf4,0x1,0x1 decf curr_byte + 1, 1, 1 C:\MCC18\src\traditional\startup\c018i.c -0095f6 d7f9 BRA 0x95ea bra -7 // copy_one_byte C:\MCC18\src\traditional\startup\c018i.c +0095be 07f3 DECF 0xf3,0x1,0x1 decf curr_byte, 1, 1 C:\MCC18\src\traditional\startup\c018i.c +0095c0 e2f8 BC 0x95b2 bc -8 // copy_loop C:\MCC18\src\traditional\startup\c018i.c +0095c2 07f4 DECF 0xf4,0x1,0x1 decf curr_byte + 1, 1, 1 C:\MCC18\src\traditional\startup\c018i.c +0095c4 d7f9 BRA 0x95b8 bra -7 // copy_one_byte C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c done_copying: C:\MCC18\src\traditional\startup\c018i.c C:\MCC18\src\traditional\startup\c018i.c _endasm C:\MCC18\src\traditional\startup\c018i.c /* restore the table pointer for the next entry */ C:\MCC18\src\traditional\startup\c018i.c -0095f8 c5f7 MOVFF 0x5f7,0xff6 TBLPTR = data_ptr; C:\MCC18\src\traditional\startup\c018i.c -0095fa fff6 -0095fc c5f8 MOVFF 0x5f8,0xff7 -0095fe fff7 -009600 c5f9 MOVFF 0x5f9,0xff8 -009602 fff8 +0095c6 c5f7 MOVFF 0x5f7,0xff6 TBLPTR = data_ptr; C:\MCC18\src\traditional\startup\c018i.c +0095c8 fff6 +0095ca c5f8 MOVFF 0x5f8,0xff7 +0095cc fff7 +0095ce c5f9 MOVFF 0x5f9,0xff8 +0095d0 fff8 /* next entry... */ C:\MCC18\src\traditional\startup\c018i.c -009604 0105 MOVLB 0x5 curr_entry--; C:\MCC18\src\traditional\startup\c018i.c -009606 07f5 DECF 0xf5,0x1,0x1 -009608 0e00 MOVLW 0x0 -00960a 5bf6 SUBWFB 0xf6,0x1,0x1 -00960c d7bf BRA 0x958c goto test; C:\MCC18\src\traditional\startup\c018i.c +0095d2 0105 MOVLB 0x5 curr_entry--; C:\MCC18\src\traditional\startup\c018i.c +0095d4 07f5 DECF 0xf5,0x1,0x1 +0095d6 0e00 MOVLW 0x0 +0095d8 5bf6 SUBWFB 0xf6,0x1,0x1 +0095da d7bf BRA 0x955a goto test; C:\MCC18\src\traditional\startup\c018i.c done: C:\MCC18\src\traditional\startup\c018i.c ; C:\MCC18\src\traditional\startup\c018i.c -00960e 0012 RETURN 0x0 } C:\MCC18\src\traditional\startup\c018i.c +0095dc 0012 RETURN 0x0 } C:\MCC18\src\traditional\startup\c018i.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c File Information: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c FileName: usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -685,45 +685,45 @@ Address Value Disassembly Source None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c ***************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007060 ec9a CALL 0x7d34,0x0 void USBDeviceInit(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007062 f03e +007030 ec82 CALL 0x7d04,0x0 void USBDeviceInit(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007032 f03e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007064 98a0 BCF 0xa0,0x4,0x0 USBDisableInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007034 98a0 BCF 0xa0,0x4,0x0 USBDisableInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Clear all USB error flags D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007066 6a63 CLRF 0x63,0x0 USBClearInterruptRegister(U1EIR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007036 6a63 CLRF 0x63,0x0 USBClearInterruptRegister(U1EIR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Clears all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007068 6a62 CLRF 0x62,0x0 USBClearInterruptRegister(U1IR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007038 6a62 CLRF 0x62,0x0 USBClearInterruptRegister(U1IR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear all of the endpoint control registers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00706a 010f MOVLB 0xf U1EP0 = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00706c 6b26 CLRF 0x26,0x1 +00703a 010f MOVLB 0xf U1EP0 = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00703c 6b26 CLRF 0x26,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00706e ec79 CALL 0x7cf2,0x0 DisableNonZeroEndpoints(USB_MAX_EP_NUMBER); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007070 f03e -007cf2 0e02 MOVLW 0x2 -007cf4 6ee6 MOVWF 0xe6,0x0 -007cf6 6ae6 CLRF 0xe6,0x0 -007cf8 6ae6 CLRF 0xe6,0x0 -007cfa 0e27 MOVLW 0x27 -007cfc 6ee6 MOVWF 0xe6,0x0 -007cfe 0e0f MOVLW 0xf -007d00 efe2 GOTO 0x7bc4 -007d02 f03d +00703e ec61 CALL 0x7cc2,0x0 DisableNonZeroEndpoints(USB_MAX_EP_NUMBER); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007040 f03e +007cc2 0e02 MOVLW 0x2 +007cc4 6ee6 MOVWF 0xe6,0x0 +007cc6 6ae6 CLRF 0xe6,0x0 +007cc8 6ae6 CLRF 0xe6,0x0 +007cca 0e27 MOVLW 0x27 +007ccc 6ee6 MOVWF 0xe6,0x0 +007cce 0e0f MOVLW 0xf +007cd0 efca GOTO 0x7b94 +007cd2 f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007072 010f MOVLB 0xf SetConfigurationOptions(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007074 ec38 CALL 0x7c70,0x0 -007076 f03e -007c70 0e16 MOVLW 0x16 -007c72 6f39 MOVWF 0x39,0x1 -007c74 0e9f MOVLW 0x9f -007c76 6f37 MOVWF 0x37,0x1 -007c78 0e7b MOVLW 0x7b -007c7a 6f36 MOVWF 0x36,0x1 -007c7c 0012 RETURN 0x0 +007042 010f MOVLB 0xf SetConfigurationOptions(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007044 ec20 CALL 0x7c40,0x0 +007046 f03e +007c40 0e16 MOVLW 0x16 +007c42 6f39 MOVWF 0x39,0x1 +007c44 0e9f MOVLW 0x9f +007c46 6f37 MOVWF 0x37,0x1 +007c48 0e7b MOVLW 0x7b +007c4a 6f36 MOVWF 0x36,0x1 +007c4c 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //power up the module (if not already powered) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c USBPowerModule(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -732,152 +732,152 @@ Address Value Disassembly Source USBSetBDTAddress(BDT); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear all of the BDT entries D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007078 6adf CLRF 0xdf,0x0 for(i=0;i<(sizeof(BDT)/sizeof(BDT_ENTRY));i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00707a 50df MOVF 0xdf,0x0,0x0 -00707c 6e4e MOVWF 0x4e,0x0 -00707e 6a4f CLRF 0x4f,0x0 -007080 0e0c MOVLW 0xc -007082 5c4e SUBWF 0x4e,0x0,0x0 -007084 0e00 MOVLW 0x0 -007086 584f SUBWFB 0x4f,0x0,0x0 -007088 e210 BC 0x70aa -0070a6 2adf INCF 0xdf,0x1,0x0 -0070a8 d7e8 BRA 0x707a +007048 6adf CLRF 0xdf,0x0 for(i=0;i<(sizeof(BDT)/sizeof(BDT_ENTRY));i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00704a 50df MOVF 0xdf,0x0,0x0 +00704c 6e4e MOVWF 0x4e,0x0 +00704e 6a4f CLRF 0x4f,0x0 +007050 0e0c MOVLW 0xc +007052 5c4e SUBWF 0x4e,0x0,0x0 +007054 0e00 MOVLW 0x0 +007056 584f SUBWFB 0x4f,0x0,0x0 +007058 e210 BC 0x707a +007076 2adf INCF 0xdf,0x1,0x0 +007078 d7e8 BRA 0x704a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00708a 50df MOVF 0xdf,0x0,0x0 BDT[i].Val = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00708c 0d04 MULLW 0x4 -00708e cff3 MOVFF 0xff3,0xfe9 -007090 ffe9 -007092 cff4 MOVFF 0xff4,0xfea -007094 ffea -007096 0e00 MOVLW 0x0 -007098 26e9 ADDWF 0xe9,0x1,0x0 -00709a 0e04 MOVLW 0x4 -00709c 22ea ADDWFC 0xea,0x1,0x0 -00709e 6aee CLRF 0xee,0x0 -0070a0 6aee CLRF 0xee,0x0 -0070a2 6aee CLRF 0xee,0x0 -0070a4 6aee CLRF 0xee,0x0 +00705a 50df MOVF 0xdf,0x0,0x0 BDT[i].Val = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00705c 0d04 MULLW 0x4 +00705e cff3 MOVFF 0xff3,0xfe9 +007060 ffe9 +007062 cff4 MOVFF 0xff4,0xfea +007064 ffea +007066 0e00 MOVLW 0x0 +007068 26e9 ADDWF 0xe9,0x1,0x0 +00706a 0e04 MOVLW 0x4 +00706c 22ea ADDWFC 0xea,0x1,0x0 +00706e 6aee CLRF 0xee,0x0 +007070 6aee CLRF 0xee,0x0 +007072 6aee CLRF 0xee,0x0 +007074 6aee CLRF 0xee,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Assert reset request to all of the Ping Pong buffer pointers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070aa 8c65 BSF 0x65,0x6,0x0 USBPingPongBufferReset = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00707a 8c65 BSF 0x65,0x6,0x0 USBPingPongBufferReset = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Reset to default address D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070ac 010f MOVLB 0xf U1ADDR = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070ae 6b38 CLRF 0x38,0x1 +00707c 010f MOVLB 0xf U1ADDR = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00707e 6b38 CLRF 0x38,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Make sure packet processing is enabled D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070b0 9865 BCF 0x65,0x4,0x0 USBPacketDisable = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007080 9865 BCF 0x65,0x4,0x0 USBPacketDisable = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Stop trying to reset ping pong buffer pointers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070b2 9c65 BCF 0x65,0x6,0x0 USBPingPongBufferReset = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007082 9c65 BCF 0x65,0x6,0x0 USBPingPongBufferReset = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Flush any pending transactions D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070b4 a662 BTFSS 0x62,0x3,0x0 while(USBTransactionCompleteIF == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070b6 d007 BRA 0x70c6 -0070c4 d7f7 BRA 0x70b4 +007084 a662 BTFSS 0x62,0x3,0x0 while(USBTransactionCompleteIF == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007086 d007 BRA 0x7096 +007094 d7f7 BRA 0x7084 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070b8 9662 BCF 0x62,0x3,0x0 USBClearInterruptFlag(USBTransactionCompleteIFReg,USBTransactionCompleteIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007088 9662 BCF 0x62,0x3,0x0 USBClearInterruptFlag(USBTransactionCompleteIFReg,USBTransactionCompleteIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Initialize USB stack software state variables D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070ba 0105 MOVLB 0x5 inPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070bc 6bd3 CLRF 0xd3,0x1 -0070be 6bd8 CLRF 0xd8,0x1 outPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070c0 6bd9 CLRF 0xd9,0x1 outPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070c2 6bda CLRF 0xda,0x1 +00708a 0105 MOVLB 0x5 inPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00708c 6bd3 CLRF 0xd3,0x1 +00708e 6bd8 CLRF 0xd8,0x1 outPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007090 6bd9 CLRF 0xd9,0x1 outPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007092 6bda CLRF 0xda,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Set flags to TRUE, so the USBCtrlEPAllowStatusStage() function knows not to D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //try and arm a status stage, even before the first control transfer starts. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070c6 0105 MOVLB 0x5 USBStatusStageEnabledFlag1 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070c8 0e01 MOVLW 0x1 -0070ca 6fec MOVWF 0xec,0x1 -0070cc 6fed MOVWF 0xed,0x1 USBStatusStageEnabledFlag2 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007096 0105 MOVLB 0x5 USBStatusStageEnabledFlag1 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007098 0e01 MOVLW 0x1 +00709a 6fec MOVWF 0xec,0x1 +00709c 6fed MOVWF 0xed,0x1 USBStatusStageEnabledFlag2 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Initialize other flags D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070ce 6bee CLRF 0xee,0x1 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070d0 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070d2 6be0 CLRF 0xe0,0x1 USBBusIsSuspended = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00709e 6bee CLRF 0xee,0x1 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070a0 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070a2 6be0 CLRF 0xe0,0x1 USBBusIsSuspended = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Initialize all pBDTEntryIn[] and pBDTEntryOut[] D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //pointers to NULL, so they don't get used inadvertently. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070d4 6adf CLRF 0xdf,0x0 for(i = 0; i < (BYTE)(USB_MAX_EP_NUMBER+1u); i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070d6 0e03 MOVLW 0x3 -0070d8 5cdf SUBWF 0xdf,0x0,0x0 -0070da e211 BC 0x70fe -0070fc d7ec BRA 0x70d6 -007c02 2adf INCF 0xdf,0x1,0x0 -007c04 0012 RETURN 0x0 +0070a4 6adf CLRF 0xdf,0x0 for(i = 0; i < (BYTE)(USB_MAX_EP_NUMBER+1u); i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070a6 0e03 MOVLW 0x3 +0070a8 5cdf SUBWF 0xdf,0x0,0x0 +0070aa e211 BC 0x70ce +0070cc d7ec BRA 0x70a6 +007bd2 2adf INCF 0xdf,0x1,0x0 +007bd4 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070dc 6aea CLRF 0xea,0x0 pBDTEntryIn[i] = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070de 34df RLCF 0xdf,0x0,0x0 -0070e0 ec9d CALL 0x7d3a,0x0 -0070e2 f03e -0070e4 22ea ADDWFC 0xea,0x1,0x0 -0070e6 6aee CLRF 0xee,0x0 -0070e8 6aed CLRF 0xed,0x0 -007d3a 0bfe ANDLW 0xfe -007d3c 36ea RLCF 0xea,0x1,0x0 -007d3e 6ee9 MOVWF 0xe9,0x0 -007d40 0ec9 MOVLW 0xc9 -007d42 26e9 ADDWF 0xe9,0x1,0x0 -007d44 0e05 MOVLW 0x5 -007d46 0012 RETURN 0x0 -0070ea 6aea CLRF 0xea,0x0 pBDTEntryOut[i] = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070ec 34df RLCF 0xdf,0x0,0x0 -0070ee eca4 CALL 0x7d48,0x0 -0070f0 f03e -0070f2 22ea ADDWFC 0xea,0x1,0x0 -0070f4 6aee CLRF 0xee,0x0 -0070f6 6aed CLRF 0xed,0x0 -007d48 0bfe ANDLW 0xfe -007d4a 36ea RLCF 0xea,0x1,0x0 -007d4c 6ee9 MOVWF 0xe9,0x0 -007d4e 0ec3 MOVLW 0xc3 -007d50 26e9 ADDWF 0xe9,0x1,0x0 -007d52 0e05 MOVLW 0x5 -007d54 0012 RETURN 0x0 -0070f8 ecf9 CALL 0x7bf2,0x0 ep_data_in[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070fa f03d -007bf2 50df MOVF 0xdf,0x0,0x0 -007bf4 d8bc RCALL 0x7d6e -007bf6 22ea ADDWFC 0xea,0x1,0x0 -007bf8 6aef CLRF 0xef,0x0 -007bfa 50df MOVF 0xdf,0x0,0x0 ep_data_out[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007bfc d8b3 RCALL 0x7d64 -007bfe 22ea ADDWFC 0xea,0x1,0x0 -007c00 6aef CLRF 0xef,0x0 +0070ac 6aea CLRF 0xea,0x0 pBDTEntryIn[i] = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070ae 34df RLCF 0xdf,0x0,0x0 +0070b0 ec85 CALL 0x7d0a,0x0 +0070b2 f03e +0070b4 22ea ADDWFC 0xea,0x1,0x0 +0070b6 6aee CLRF 0xee,0x0 +0070b8 6aed CLRF 0xed,0x0 +007d0a 0bfe ANDLW 0xfe +007d0c 36ea RLCF 0xea,0x1,0x0 +007d0e 6ee9 MOVWF 0xe9,0x0 +007d10 0ec9 MOVLW 0xc9 +007d12 26e9 ADDWF 0xe9,0x1,0x0 +007d14 0e05 MOVLW 0x5 +007d16 0012 RETURN 0x0 +0070ba 6aea CLRF 0xea,0x0 pBDTEntryOut[i] = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070bc 34df RLCF 0xdf,0x0,0x0 +0070be ec8c CALL 0x7d18,0x0 +0070c0 f03e +0070c2 22ea ADDWFC 0xea,0x1,0x0 +0070c4 6aee CLRF 0xee,0x0 +0070c6 6aed CLRF 0xed,0x0 +007d18 0bfe ANDLW 0xfe +007d1a 36ea RLCF 0xea,0x1,0x0 +007d1c 6ee9 MOVWF 0xe9,0x0 +007d1e 0ec3 MOVLW 0xc3 +007d20 26e9 ADDWF 0xe9,0x1,0x0 +007d22 0e05 MOVLW 0x5 +007d24 0012 RETURN 0x0 +0070c8 ece1 CALL 0x7bc2,0x0 ep_data_in[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070ca f03d +007bc2 50df MOVF 0xdf,0x0,0x0 +007bc4 d8bc RCALL 0x7d3e +007bc6 22ea ADDWFC 0xea,0x1,0x0 +007bc8 6aef CLRF 0xef,0x0 +007bca 50df MOVF 0xdf,0x0,0x0 ep_data_out[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007bcc d8b3 RCALL 0x7d34 +007bce 22ea ADDWFC 0xea,0x1,0x0 +007bd0 6aef CLRF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Get ready for the first packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0070fe 0105 MOVLB 0x5 pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[EP0_IN_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007100 0e08 MOVLW 0x8 -007102 6fc9 MOVWF 0xc9,0x1 -007104 0e04 MOVLW 0x4 -007106 6fca MOVWF 0xca,0x1 +0070ce 0105 MOVLB 0x5 pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[EP0_IN_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070d0 0e08 MOVLW 0x8 +0070d2 6fc9 MOVWF 0xc9,0x1 +0070d4 0e04 MOVLW 0x4 +0070d6 6fca MOVWF 0xca,0x1 // Initialize EP0 as a Ctrl EP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007108 010f MOVLB 0xf U1EP0 = EP_CTRL|USB_HANDSHAKE_ENABLED; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00710a 0e16 MOVLW 0x16 -00710c 6f26 MOVWF 0x26,0x1 +0070d8 010f MOVLB 0xf U1EP0 = EP_CTRL|USB_HANDSHAKE_ENABLED; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070da 0e16 MOVLW 0x16 +0070dc 6f26 MOVWF 0x26,0x1 //Prepare for the first SETUP on EP0 OUT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00710e 0104 MOVLB 0x4 BDT[EP0_OUT_EVEN].ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007110 0e30 MOVLW 0x30 -007112 6f02 MOVWF 0x2,0x1 -007114 0e04 MOVLW 0x4 -007116 6f03 MOVWF 0x3,0x1 -007118 0e40 MOVLW 0x40 BDT[EP0_OUT_EVEN].CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00711a 6f01 MOVWF 0x1,0x1 -00711c 0e84 MOVLW 0x84 BDT[EP0_OUT_EVEN].STAT.Val = _USIE|_DAT0|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00711e 6f00 MOVWF 0x0,0x1 +0070de 0104 MOVLB 0x4 BDT[EP0_OUT_EVEN].ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070e0 0e30 MOVLW 0x30 +0070e2 6f02 MOVWF 0x2,0x1 +0070e4 0e04 MOVLW 0x4 +0070e6 6f03 MOVWF 0x3,0x1 +0070e8 0e40 MOVLW 0x40 BDT[EP0_OUT_EVEN].CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070ea 6f01 MOVWF 0x1,0x1 +0070ec 0e84 MOVLW 0x84 BDT[EP0_OUT_EVEN].STAT.Val = _USIE|_DAT0|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070ee 6f00 MOVWF 0x0,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Clear active configuration D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007120 0105 MOVLB 0x5 USBActiveConfiguration = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007122 6bbd CLRF 0xbd,0x1 +0070f0 0105 MOVLB 0x5 USBActiveConfiguration = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070f2 6bbd CLRF 0xbd,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Indicate that we are now in the detached state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007124 6bbc CLRF 0xbc,0x1 USBDeviceState = DETACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007126 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007128 efcb GOTO 0x7b96 -00712a f03d +0070f4 6bbc CLRF 0xbc,0x1 USBDeviceState = DETACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070f6 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070f8 efb3 GOTO 0x7b66 +0070fa f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -992,8 +992,8 @@ Address Value Disassembly Source void __attribute__((interrupt(),vector(_USB_1_VECTOR))) _USB1Interrupt( void ) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00712c ec9a CALL 0x7d34,0x0 void USBDeviceTasks(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00712e f03e +0070fc ec82 CALL 0x7d04,0x0 void USBDeviceTasks(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0070fe f03e #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1022,19 +1022,19 @@ Address Value Disassembly Source //If the interrupt option is selected then the customer is required D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // to notify the stack when the device is attached or removed from the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // bus by calling the USBDeviceAttach() and USBDeviceDetach() functions. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007130 be82 BTFSC 0x82,0x7,0x0 if (USB_BUS_SENSE != 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007132 d006 BRA 0x7140 +007100 be82 BTFSC 0x82,0x7,0x0 if (USB_BUS_SENSE != 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007102 d006 BRA 0x7110 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Disable module & detach from bus D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007134 6a65 CLRF 0x65,0x0 U1CON = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007104 6a65 CLRF 0x65,0x0 U1CON = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Mask all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007136 010f MOVLB 0xf U1IE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007138 6b36 CLRF 0x36,0x1 +007106 010f MOVLB 0xf U1IE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007108 6b36 CLRF 0x36,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Move to the detached state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00713a 0105 MOVLB 0x5 USBDeviceState = DETACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00713c 6bbc CLRF 0xbc,0x1 +00710a 0105 MOVLB 0x5 USBDeviceState = DETACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00710c 6bbc CLRF 0xbc,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Disable D+ Pullup D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1063,7 +1063,7 @@ Address Value Disassembly Source //return so that we don't go through the rest of D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the state machine D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00713e d06f BRA 0x721e return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00710e d06f BRA 0x71ee return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1086,32 +1086,32 @@ Address Value Disassembly Source #endif //#ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //if we are in the detached state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007140 0105 MOVLB 0x5 if(USBDeviceState == DETACHED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007142 51bc MOVF 0xbc,0x0,0x1 -007144 e10c BNZ 0x715e +007110 0105 MOVLB 0x5 if(USBDeviceState == DETACHED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007112 51bc MOVF 0xbc,0x0,0x1 +007114 e10c BNZ 0x712e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Initialize register to known value D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007146 6a65 CLRF 0x65,0x0 U1CON = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007116 6a65 CLRF 0x65,0x0 U1CON = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Mask all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007148 010f MOVLB 0xf U1IE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00714a 6b36 CLRF 0x36,0x1 +007118 010f MOVLB 0xf U1IE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00711a 6b36 CLRF 0x36,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Enable/set things like: pull ups, full/low-speed mode, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //set the ping pong mode, and set internal transceiver D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00714c ec38 CALL 0x7c70,0x0 SetConfigurationOptions(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00714e f03e +00711c ec20 CALL 0x7c40,0x0 SetConfigurationOptions(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00711e f03e D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Enable module & attach to bus D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007150 b665 BTFSC 0x65,0x3,0x0 while(!U1CONbits.USBEN){U1CONbits.USBEN = 1;} D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007152 d002 BRA 0x7158 -007154 8665 BSF 0x65,0x3,0x0 -007156 d7fc BRA 0x7150 +007120 b665 BTFSC 0x65,0x3,0x0 while(!U1CONbits.USBEN){U1CONbits.USBEN = 1;} D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007122 d002 BRA 0x7128 +007124 8665 BSF 0x65,0x3,0x0 +007126 d7fc BRA 0x7120 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //moved to the attached state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007158 0105 MOVLB 0x5 USBDeviceState = ATTACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00715a 0e01 MOVLW 0x1 -00715c 6fbc MOVWF 0xbc,0x1 +007128 0105 MOVLB 0x5 USBDeviceState = ATTACHED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00712a 0e01 MOVLW 0x1 +00712c 6fbc MOVWF 0xbc,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c U1OTGCON |= USB_OTG_DPLUS_ENABLE | USB_OTG_ENABLE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1119,8 +1119,8 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif //#if defined(USB_POLLING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00715e 05bc DECF 0xbc,0x0,0x1 if(USBDeviceState == ATTACHED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007160 e10a BNZ 0x7176 +00712e 05bc DECF 0xbc,0x0,0x1 if(USBDeviceState == ATTACHED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007130 e10a BNZ 0x7146 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * After enabling the USB module, it takes some time for the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1131,19 +1131,19 @@ Address Value Disassembly Source * as a USB bus reset from the USB host. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007162 ba65 BTFSC 0x65,0x5,0x0 if(!USBSE0Event) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007164 d008 BRA 0x7176 +007132 ba65 BTFSC 0x65,0x5,0x0 if(!USBSE0Event) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007134 d008 BRA 0x7146 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007166 6a62 CLRF 0x62,0x0 USBClearInterruptRegister(U1IR);// Clear all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007136 6a62 CLRF 0x62,0x0 USBClearInterruptRegister(U1IR);// Clear all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(USB_POLLING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007168 010f MOVLB 0xf U1IE=0; // Mask all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00716a 6b36 CLRF 0x36,0x1 +007138 010f MOVLB 0xf U1IE=0; // Mask all USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00713a 6b36 CLRF 0x36,0x1 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00716c 8136 BSF 0x36,0x0,0x1 USBResetIE = 1; // Unmask RESET interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00716e 8936 BSF 0x36,0x4,0x1 USBIdleIE = 1; // Unmask IDLE interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007170 0105 MOVLB 0x5 USBDeviceState = POWERED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007172 0e02 MOVLW 0x2 -007174 6fbc MOVWF 0xbc,0x1 +00713c 8136 BSF 0x36,0x0,0x1 USBResetIE = 1; // Unmask RESET interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00713e 8936 BSF 0x36,0x4,0x1 USBIdleIE = 1; // Unmask IDLE interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007140 0105 MOVLB 0x5 USBDeviceState = POWERED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007142 0e02 MOVLW 0x2 +007144 6fbc MOVWF 0xbc,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1161,27 +1161,27 @@ Address Value Disassembly Source /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Task A: Service USB Activity Interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007176 5062 MOVF 0x62,0x0,0x0 if(USBActivityIF && USBActivityIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007178 0b04 ANDLW 0x4 -00717a e006 BZ 0x7188 -00717c 010f MOVLB 0xf -00717e 5136 MOVF 0x36,0x0,0x1 -007180 0b04 ANDLW 0x4 -007182 e002 BZ 0x7188 +007146 5062 MOVF 0x62,0x0,0x0 if(USBActivityIF && USBActivityIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007148 0b04 ANDLW 0x4 +00714a e006 BZ 0x7158 +00714c 010f MOVLB 0xf +00714e 5136 MOVF 0x36,0x0,0x1 +007150 0b04 ANDLW 0x4 +007152 e002 BZ 0x7158 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007184 9462 BCF 0x62,0x2,0x0 USBClearInterruptFlag(USBActivityIFReg,USBActivityIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007154 9462 BCF 0x62,0x2,0x0 USBClearInterruptFlag(USBActivityIFReg,USBActivityIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(USB_SUPPORT_OTG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c U1OTGIR = 0x10; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007186 db47 RCALL 0x7816 USBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007156 db47 RCALL 0x77e6 USBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Pointless to continue servicing if the device is in suspend mode. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007188 b265 BTFSC 0x65,0x1,0x0 if(USBSuspendControl==1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00718a d049 BRA 0x721e +007158 b265 BTFSC 0x65,0x1,0x0 if(USBSuspendControl==1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00715a d049 BRA 0x71ee { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1197,23 +1197,23 @@ Address Value Disassembly Source * DETACHED_STATE or ATTACHED_STATE, and therefore cannot D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * cause a USB reset event during these two states. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00718c 5062 MOVF 0x62,0x0,0x0 if(USBResetIF && USBResetIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00718e 0b01 ANDLW 0x1 -007190 e009 BZ 0x71a4 -007192 010f MOVLB 0xf -007194 5136 MOVF 0x36,0x0,0x1 -007196 0b01 ANDLW 0x1 -007198 e005 BZ 0x71a4 +00715c 5062 MOVF 0x62,0x0,0x0 if(USBResetIF && USBResetIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00715e 0b01 ANDLW 0x1 +007160 e009 BZ 0x7174 +007162 010f MOVLB 0xf +007164 5136 MOVF 0x36,0x0,0x1 +007166 0b01 ANDLW 0x1 +007168 e005 BZ 0x7174 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00719a df62 RCALL 0x7060 USBDeviceInit(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00716a df62 RCALL 0x7030 USBDeviceInit(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Re-enable the interrupts since the USBDeviceInit() function will D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // disable them. This will do nothing in a polling setup D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00719c 0105 MOVLB 0x5 USBDeviceState = DEFAULT_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00719e 0e04 MOVLW 0x4 -0071a0 6fbc MOVWF 0xbc,0x1 +00716c 0105 MOVLB 0x5 USBDeviceState = DEFAULT_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00716e 0e04 MOVLW 0x4 +007170 6fbc MOVWF 0xbc,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Disable HNP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1223,51 +1223,51 @@ Address Value Disassembly Source USBOTGDeactivateHnp(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071a2 9062 BCF 0x62,0x0,0x0 USBClearInterruptFlag(USBResetIFReg,USBResetIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007172 9062 BCF 0x62,0x0,0x0 USBClearInterruptFlag(USBResetIFReg,USBResetIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Task C: Service other USB interrupts D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071a4 5062 MOVF 0x62,0x0,0x0 if(USBIdleIF && USBIdleIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071a6 0b10 ANDLW 0x10 -0071a8 e006 BZ 0x71b6 -0071aa 010f MOVLB 0xf -0071ac 5136 MOVF 0x36,0x0,0x1 -0071ae 0b10 ANDLW 0x10 -0071b0 e002 BZ 0x71b6 +007174 5062 MOVF 0x62,0x0,0x0 if(USBIdleIF && USBIdleIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007176 0b10 ANDLW 0x10 +007178 e006 BZ 0x7186 +00717a 010f MOVLB 0xf +00717c 5136 MOVF 0x36,0x0,0x1 +00717e 0b10 ANDLW 0x10 +007180 e002 BZ 0x7186 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If Suspended, Try to switch to Host D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c USBOTGSelectRole(ROLE_HOST); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071b2 db26 RCALL 0x7800 USBSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007182 db26 RCALL 0x77d0 USBSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071b4 9862 BCF 0x62,0x4,0x0 USBClearInterruptFlag(USBIdleIFReg,USBIdleIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007184 9862 BCF 0x62,0x4,0x0 USBClearInterruptFlag(USBIdleIFReg,USBIdleIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071b6 ac62 BTFSS 0x62,0x6,0x0 if(USBSOFIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071b8 d010 BRA 0x71da +007186 ac62 BTFSS 0x62,0x6,0x0 if(USBSOFIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007188 d010 BRA 0x71aa { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071ba 010f MOVLB 0xf if(USBSOFIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071bc ad36 BTFSS 0x36,0x6,0x1 -0071be d005 BRA 0x71ca +00718a 010f MOVLB 0xf if(USBSOFIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00718c ad36 BTFSS 0x36,0x6,0x1 +00718e d005 BRA 0x719a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071c0 ec3f CALL 0x7c7e,0x0 USB_SOF_HANDLER(EVENT_SOF,0,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071c2 f03e -0071c4 0e73 MOVLW 0x73 -0071c6 ecb8 CALL 0x7b70,0x0 -0071c8 f03d -007c7e 0e01 MOVLW 0x1 -007c80 6ee6 MOVWF 0xe6,0x0 -007c82 6ae6 CLRF 0xe6,0x0 -007c84 0e00 MOVLW 0x0 -007c86 6ee6 MOVWF 0xe6,0x0 -007c88 6ae6 CLRF 0xe6,0x0 -007c8a 0012 RETURN 0x0 +007190 ec27 CALL 0x7c4e,0x0 USB_SOF_HANDLER(EVENT_SOF,0,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007192 f03e +007194 0e73 MOVLW 0x73 +007196 eca0 CALL 0x7b40,0x0 +007198 f03d +007c4e 0e01 MOVLW 0x1 +007c50 6ee6 MOVWF 0xe6,0x0 +007c52 6ae6 CLRF 0xe6,0x0 +007c54 0e00 MOVLW 0x0 +007c56 6ee6 MOVWF 0xe6,0x0 +007c58 6ae6 CLRF 0xe6,0x0 +007c5a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071ca 9c62 BCF 0x62,0x6,0x0 USBClearInterruptFlag(USBSOFIFReg,USBSOFIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00719a 9c62 BCF 0x62,0x6,0x0 USBClearInterruptFlag(USBSOFIFReg,USBSOFIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(USB_ENABLE_STATUS_STAGE_TIMEOUTS) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Supporting this feature requires a 1ms timebase for keeping track of the timeout interval. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1292,59 +1292,59 @@ Address Value Disassembly Source #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Decrement our status stage counter. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071cc 0105 MOVLB 0x5 if(USBStatusStageTimeoutCounter != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071ce 51ea MOVF 0xea,0x0,0x1 -0071d0 e001 BZ 0x71d4 +00719c 0105 MOVLB 0x5 if(USBStatusStageTimeoutCounter != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00719e 51ea MOVF 0xea,0x0,0x1 +0071a0 e001 BZ 0x71a4 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071d2 07ea DECF 0xea,0x1,0x1 USBStatusStageTimeoutCounter--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071a2 07ea DECF 0xea,0x1,0x1 USBStatusStageTimeoutCounter--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if too much time has elapsed since progress was made in D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //processing the control transfer, without arming the status stage. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If so, auto-arm the status stage to ensure that the control D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //transfer can [eventually] complete, within the timing limits D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //dictated by section 9.2.6 of the official USB 2.0 specifications. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071d4 51ea MOVF 0xea,0x0,0x1 if(USBStatusStageTimeoutCounter == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071d6 e101 BNZ 0x71da +0071a4 51ea MOVF 0xea,0x0,0x1 if(USBStatusStageTimeoutCounter == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071a6 e101 BNZ 0x71aa { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071d8 d8f4 RCALL 0x73c2 USBCtrlEPAllowStatusStage(); //Does nothing if the status stage was already armed. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071a8 d8f4 RCALL 0x7392 USBCtrlEPAllowStatusStage(); //Does nothing if the status stage was already armed. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071da 5062 MOVF 0x62,0x0,0x0 if(USBStallIF && USBStallIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071dc 0b20 ANDLW 0x20 -0071de e005 BZ 0x71ea -0071e0 010f MOVLB 0xf -0071e2 5136 MOVF 0x36,0x0,0x1 -0071e4 0b20 ANDLW 0x20 -0071e6 e001 BZ 0x71ea +0071aa 5062 MOVF 0x62,0x0,0x0 if(USBStallIF && USBStallIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071ac 0b20 ANDLW 0x20 +0071ae e005 BZ 0x71ba +0071b0 010f MOVLB 0xf +0071b2 5136 MOVF 0x36,0x0,0x1 +0071b4 0b20 ANDLW 0x20 +0071b6 e001 BZ 0x71ba { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071e8 dafa RCALL 0x77de USBStallHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071b8 dafa RCALL 0x77ae USBStallHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071ea 5062 MOVF 0x62,0x0,0x0 if(USBErrorIF && USBErrorIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071ec 0b02 ANDLW 0x2 -0071ee e00c BZ 0x7208 -0071f0 010f MOVLB 0xf -0071f2 5136 MOVF 0x36,0x0,0x1 -0071f4 0b02 ANDLW 0x2 -0071f6 e008 BZ 0x7208 +0071ba 5062 MOVF 0x62,0x0,0x0 if(USBErrorIF && USBErrorIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071bc 0b02 ANDLW 0x2 +0071be e00c BZ 0x71d8 +0071c0 010f MOVLB 0xf +0071c2 5136 MOVF 0x36,0x0,0x1 +0071c4 0b02 ANDLW 0x2 +0071c6 e008 BZ 0x71d8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071f8 ec3f CALL 0x7c7e,0x0 USB_ERROR_HANDLER(EVENT_BUS_ERROR,0,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0071fa f03e -0071fc 68e6 SETF 0xe6,0x0 -0071fe 0e7f MOVLW 0x7f -007200 6ee6 MOVWF 0xe6,0x0 -007202 ecab CALL 0x7d56,0x0 -007204 f03e -007d56 ecfe CALL 0x91fc,0x0 -007d58 f048 -007d5a 6e4e MOVWF 0x4e,0x0 -007d5c 0e06 MOVLW 0x6 -007d5e 5ee1 SUBWF 0xe1,0x1,0x0 -007d60 504e MOVF 0x4e,0x0,0x0 -007d62 0012 RETURN 0x0 -007206 6a63 CLRF 0x63,0x0 USBClearInterruptRegister(U1EIR); // This clears UERRIF D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071c8 ec27 CALL 0x7c4e,0x0 USB_ERROR_HANDLER(EVENT_BUS_ERROR,0,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071ca f03e +0071cc 68e6 SETF 0xe6,0x0 +0071ce 0e7f MOVLW 0x7f +0071d0 6ee6 MOVWF 0xe6,0x0 +0071d2 ec93 CALL 0x7d26,0x0 +0071d4 f03e +007d26 ece6 CALL 0x91cc,0x0 +007d28 f048 +007d2a 6e4e MOVWF 0x4e,0x0 +007d2c 0e06 MOVLW 0x6 +007d2e 5ee1 SUBWF 0xe1,0x1,0x0 +007d30 504e MOVF 0x4e,0x0,0x0 +007d32 0012 RETURN 0x0 +0071d6 6a63 CLRF 0x63,0x0 USBClearInterruptRegister(U1EIR); // This clears UERRIF D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //On PIC18, clearing the source of the error will automatically clear D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // the interrupt flag. On other devices the interrupt flag must be D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1359,91 +1359,91 @@ Address Value Disassembly Source * Once bus reset is received, the device transitions into the DEFAULT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * state and is ready for communication. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007208 0e04 MOVLW 0x4 if(USBDeviceState < DEFAULT_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00720a 0105 MOVLB 0x5 -00720c 6ee7 MOVWF 0xe7,0x0 -00720e 19bc XORWF 0xbc,0x0,0x1 -007210 aee8 BTFSS 0xe8,0x7,0x0 -007212 d002 BRA 0x7218 -007214 34e7 RLCF 0xe7,0x0,0x0 -007216 d002 BRA 0x721c -007218 50e7 MOVF 0xe7,0x0,0x0 -00721a 5dbc SUBWF 0xbc,0x0,0x1 -00721c e202 BC 0x7222 +0071d8 0e04 MOVLW 0x4 if(USBDeviceState < DEFAULT_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071da 0105 MOVLB 0x5 +0071dc 6ee7 MOVWF 0xe7,0x0 +0071de 19bc XORWF 0xbc,0x0,0x1 +0071e0 aee8 BTFSS 0xe8,0x7,0x0 +0071e2 d002 BRA 0x71e8 +0071e4 34e7 RLCF 0xe7,0x0,0x0 +0071e6 d002 BRA 0x71ec +0071e8 50e7 MOVF 0xe7,0x0,0x0 +0071ea 5dbc SUBWF 0xbc,0x0,0x1 +0071ec e202 BC 0x71f2 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00721e 98a1 BCF 0xa1,0x4,0x0 USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007220 d02f BRA 0x7280 return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071ee 98a1 BCF 0xa1,0x4,0x0 USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071f0 d02f BRA 0x7250 return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Task D: Servicing USB Transaction Complete Interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007222 010f MOVLB 0xf if(USBTransactionCompleteIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007224 a736 BTFSS 0x36,0x3,0x1 -007226 d02b BRA 0x727e +0071f2 010f MOVLB 0xf if(USBTransactionCompleteIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071f4 a736 BTFSS 0x36,0x3,0x1 +0071f6 d02b BRA 0x724e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007228 6adf CLRF 0xdf,0x0 for(i = 0; i < 4u; i++) //Drain or deplete the USAT FIFO entries. If the USB FIFO ever gets full, USB bandwidth D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00722a 0e04 MOVLW 0x4 -00722c 5cdf SUBWF 0xdf,0x0,0x0 -00722e e227 BC 0x727e -00727a 2adf INCF 0xdf,0x1,0x0 -00727c d7d6 BRA 0x722a +0071f8 6adf CLRF 0xdf,0x0 for(i = 0; i < 4u; i++) //Drain or deplete the USAT FIFO entries. If the USB FIFO ever gets full, USB bandwidth D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0071fa 0e04 MOVLW 0x4 +0071fc 5cdf SUBWF 0xdf,0x0,0x0 +0071fe e227 BC 0x724e +00724a 2adf INCF 0xdf,0x1,0x0 +00724c d7d6 BRA 0x71fa { //utilization can be compromised, and the device won't be able to receive SETUP packets. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007230 a662 BTFSS 0x62,0x3,0x0 if(USBTransactionCompleteIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007232 d025 BRA 0x727e +007200 a662 BTFSS 0x62,0x3,0x0 if(USBTransactionCompleteIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007202 d025 BRA 0x724e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Save and extract USTAT register info. Will use this info later. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007234 cf64 MOVFF 0xf64,0x5e1 USTATcopy.Val = U1STAT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007236 f5e1 -007238 0105 MOVLB 0x5 endpoint_number = USBHALGetLastEndpoint(USTATcopy); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00723a 51e1 MOVF 0xe1,0x0,0x1 -00723c 0b78 ANDLW 0x78 -00723e 42e8 RRNCF 0xe8,0x1,0x0 -007240 42e8 RRNCF 0xe8,0x1,0x0 -007242 42e8 RRNCF 0xe8,0x1,0x0 -007244 6fe2 MOVWF 0xe2,0x1 +007204 cf64 MOVFF 0xf64,0x5e1 USTATcopy.Val = U1STAT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007206 f5e1 +007208 0105 MOVLB 0x5 endpoint_number = USBHALGetLastEndpoint(USTATcopy); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00720a 51e1 MOVF 0xe1,0x0,0x1 +00720c 0b78 ANDLW 0x78 +00720e 42e8 RRNCF 0xe8,0x1,0x0 +007210 42e8 RRNCF 0xe8,0x1,0x0 +007212 42e8 RRNCF 0xe8,0x1,0x0 +007214 6fe2 MOVWF 0xe2,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007246 9662 BCF 0x62,0x3,0x0 USBClearInterruptFlag(USBTransactionCompleteIFReg,USBTransactionCompleteIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007216 9662 BCF 0x62,0x3,0x0 USBClearInterruptFlag(USBTransactionCompleteIFReg,USBTransactionCompleteIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Keep track of the hardware ping pong state for endpoints other D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //than EP0, if ping pong buffering is enabled. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if (USB_PING_PONG_MODE == USB_PING_PONG__ALL_BUT_EP0) || (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007248 b5e1 BTFSC 0xe1,0x2,0x1 if(USBHALGetLastDirection(USTATcopy) == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00724a d004 BRA 0x7254 +007218 b5e1 BTFSC 0xe1,0x2,0x1 if(USBHALGetLastDirection(USTATcopy) == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00721a d004 BRA 0x7224 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00724c 51e2 MOVF 0xe2,0x0,0x1 ep_data_out[endpoint_number].bits.ping_pong_state ^= 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00724e ecb2 CALL 0x7d64,0x0 -007250 f03e +00721c 51e2 MOVF 0xe2,0x0,0x1 ep_data_out[endpoint_number].bits.ping_pong_state ^= 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00721e ec9a CALL 0x7d34,0x0 +007220 f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007252 d003 BRA 0x725a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007222 d003 BRA 0x722a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007254 51e2 MOVF 0xe2,0x0,0x1 ep_data_in[endpoint_number].bits.ping_pong_state ^= 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007256 ecb7 CALL 0x7d6e,0x0 -007258 f03e -00725a 22ea ADDWFC 0xea,0x1,0x0 -00725c 70ef BTG 0xef,0x0,0x0 +007224 51e2 MOVF 0xe2,0x0,0x1 ep_data_in[endpoint_number].bits.ping_pong_state ^= 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007226 ec9f CALL 0x7d3e,0x0 +007228 f03e +00722a 22ea ADDWFC 0xea,0x1,0x0 +00722c 70ef BTG 0xef,0x0,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //USBCtrlEPService only services transactions over EP0. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //It ignores all other EP transactions. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00725e 51e2 MOVF 0xe2,0x0,0x1 if(endpoint_number == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007260 e102 BNZ 0x7266 +00722e 51e2 MOVF 0xe2,0x0,0x1 if(endpoint_number == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007230 e102 BNZ 0x7236 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007262 dae6 RCALL 0x7830 USBCtrlEPService(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007232 dae6 RCALL 0x7800 USBCtrlEPService(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007264 d00a BRA 0x727a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007234 d00a BRA 0x724a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007266 0e00 MOVLW 0x0 USB_TRANSFER_COMPLETE_HANDLER(EVENT_TRANSFER, (BYTE*)&USTATcopy.Val, 0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007268 6ee6 MOVWF 0xe6,0x0 -00726a 6ae6 CLRF 0xe6,0x0 -00726c 0ee1 MOVLW 0xe1 -00726e 6ee6 MOVWF 0xe6,0x0 -007270 0e05 MOVLW 0x5 -007272 6ee6 MOVWF 0xe6,0x0 -007274 0e72 MOVLW 0x72 -007276 ecb8 CALL 0x7b70,0x0 -007278 f03d +007236 0e00 MOVLW 0x0 USB_TRANSFER_COMPLETE_HANDLER(EVENT_TRANSFER, (BYTE*)&USTATcopy.Val, 0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007238 6ee6 MOVWF 0xe6,0x0 +00723a 6ae6 CLRF 0xe6,0x0 +00723c 0ee1 MOVLW 0xe1 +00723e 6ee6 MOVWF 0xe6,0x0 +007240 0e05 MOVLW 0x5 +007242 6ee6 MOVWF 0xe6,0x0 +007244 0e72 MOVLW 0x72 +007246 eca0 CALL 0x7b40,0x0 +007248 f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if(USBTransactionCompleteIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1451,10 +1451,10 @@ Address Value Disassembly Source }//end for() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if(USBTransactionCompleteIE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00727e 98a1 BCF 0xa1,0x4,0x0 USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007280 52e5 MOVF 0xe5,0x1,0x0 }//end of USBDeviceTasks() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007282 efcb GOTO 0x7b96 -007284 f03d +00724e 98a1 BCF 0xa1,0x4,0x0 USBClearUSBInterrupt(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007250 52e5 MOVF 0xe5,0x1,0x0 }//end of USBDeviceTasks() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007252 efb3 GOTO 0x7b66 +007254 f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1505,37 +1505,37 @@ Address Value Disassembly Source Remarks: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007286 ec6b CALL 0x7cd6,0x0 void USBEnableEndpoint(BYTE ep, BYTE options) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007288 f03e +007256 ec53 CALL 0x7ca6,0x0 void USBEnableEndpoint(BYTE ep, BYTE options) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007258 f03e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c unsigned char* p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Use USBConfigureEndpoint() to set up the pBDTEntryIn/Out[ep] pointer and D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //starting DTS state in the BDT entry. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00728a 0efd MOVLW 0xfd if(options & USB_OUT_ENABLED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00728c a4db BTFSS 0xdb,0x2,0x0 -00728e d003 BRA 0x7296 +00725a 0efd MOVLW 0xfd if(options & USB_OUT_ENABLED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00725c a4db BTFSS 0xdb,0x2,0x0 +00725e d003 BRA 0x7266 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007290 6ae6 CLRF 0xe6,0x0 USBConfigureEndpoint(ep, OUT_FROM_HOST); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007292 ec30 CALL 0x7c60,0x0 -007294 f03e -007c60 0efe MOVLW 0xfe -007c62 cfdb MOVFF 0xfdb,0xfe6 -007c64 ffe6 -007c66 ec26 CALL 0x744c,0x0 -007c68 f03a -007c6a 52e5 MOVF 0xe5,0x1,0x0 -007c6c 52e5 MOVF 0xe5,0x1,0x0 -007c6e 0012 RETURN 0x0 +007260 6ae6 CLRF 0xe6,0x0 USBConfigureEndpoint(ep, OUT_FROM_HOST); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007262 ec18 CALL 0x7c30,0x0 +007264 f03e +007c30 0efe MOVLW 0xfe +007c32 cfdb MOVFF 0xfdb,0xfe6 +007c34 ffe6 +007c36 ec0e CALL 0x741c,0x0 +007c38 f03a +007c3a 52e5 MOVF 0xe5,0x1,0x0 +007c3c 52e5 MOVF 0xe5,0x1,0x0 +007c3e 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007296 0efd MOVLW 0xfd if(options & USB_IN_ENABLED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007298 a2db BTFSS 0xdb,0x1,0x0 -00729a d004 BRA 0x72a4 +007266 0efd MOVLW 0xfd if(options & USB_IN_ENABLED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007268 a2db BTFSS 0xdb,0x1,0x0 +00726a d004 BRA 0x7274 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00729c 0e01 MOVLW 0x1 USBConfigureEndpoint(ep, IN_TO_HOST); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00729e 6ee6 MOVWF 0xe6,0x0 -0072a0 ec30 CALL 0x7c60,0x0 -0072a2 f03e +00726c 0e01 MOVLW 0x1 USBConfigureEndpoint(ep, IN_TO_HOST); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00726e 6ee6 MOVWF 0xe6,0x0 +007270 ec18 CALL 0x7c30,0x0 +007272 f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Update the relevant UEPx register to actually enable the endpoint with D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1544,28 +1544,28 @@ Address Value Disassembly Source #if defined(__C32__) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c p = (unsigned char*)(&U1EP0+(4*ep)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072a4 0efe MOVLW 0xfe p = (unsigned char*)(&U1EP0+ep); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072a6 50db MOVF 0xdb,0x0,0x0 -0072a8 6a4f CLRF 0x4f,0x0 -0072aa 0f26 ADDLW 0x26 -0072ac 6e4e MOVWF 0x4e,0x0 -0072ae 0e0f MOVLW 0xf -0072b0 ec2a CALL 0x7c54,0x0 -0072b2 f03e +007274 0efe MOVLW 0xfe p = (unsigned char*)(&U1EP0+ep); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007276 50db MOVF 0xdb,0x0,0x0 +007278 6a4f CLRF 0x4f,0x0 +00727a 0f26 ADDLW 0x26 +00727c 6e4e MOVWF 0x4e,0x0 +00727e 0e0f MOVLW 0xf +007280 ec12 CALL 0x7c24,0x0 +007282 f03e #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072b4 ecbc CALL 0x7b78,0x0 *p = options; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072b6 f03d -0072b8 0efd MOVLW 0xfd -0072ba cfdb MOVFF 0xfdb,0xfef -0072bc ffef -0072be 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072c0 5ce1 SUBWF 0xe1,0x0,0x0 -0072c2 e202 BC 0x72c8 -0072c4 6ae1 CLRF 0xe1,0x0 -0072c6 52e5 MOVF 0xe5,0x1,0x0 -0072c8 6ee1 MOVWF 0xe1,0x0 -0072ca efcb GOTO 0x7b96 -0072cc f03d +007284 eca4 CALL 0x7b48,0x0 *p = options; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007286 f03d +007288 0efd MOVLW 0xfd +00728a cfdb MOVFF 0xfdb,0xfef +00728c ffef +00728e 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007290 5ce1 SUBWF 0xe1,0x0,0x0 +007292 e202 BC 0x7298 +007294 6ae1 CLRF 0xe1,0x0 +007296 52e5 MOVF 0xe5,0x1,0x0 +007298 6ee1 MOVWF 0xe1,0x0 +00729a efb3 GOTO 0x7b66 +00729c f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /************************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1658,46 +1658,46 @@ Address Value Disassembly Source function first. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072ce ec6b CALL 0x7cd6,0x0 USB_HANDLE USBTransferOnePacket(BYTE ep,BYTE dir,BYTE* data,BYTE len) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072d0 f03e -007cd6 df5a RCALL 0x7b8c -007cd8 0e02 MOVLW 0x2 -007cda 26e1 ADDWF 0xe1,0x1,0x0 -007cdc 0012 RETURN 0x0 +00729e ec53 CALL 0x7ca6,0x0 USB_HANDLE USBTransferOnePacket(BYTE ep,BYTE dir,BYTE* data,BYTE len) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072a0 f03e +007ca6 df5a RCALL 0x7b5c +007ca8 0e02 MOVLW 0x2 +007caa 26e1 ADDWF 0xe1,0x1,0x0 +007cac 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c volatile BDT_ENTRY* handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If the direction is IN D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072d2 0efd MOVLW 0xfd if(dir != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072d4 50db MOVF 0xdb,0x0,0x0 -0072d6 e003 BZ 0x72de +0072a2 0efd MOVLW 0xfd if(dir != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072a4 50db MOVF 0xdb,0x0,0x0 +0072a6 e003 BZ 0x72ae { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //point to the IN BDT of the specified endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072d8 ecb3 CALL 0x7b66,0x0 handle = pBDTEntryIn[ep]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072da f03d +0072a8 ec9b CALL 0x7b36,0x0 handle = pBDTEntryIn[ep]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072aa f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072dc d002 BRA 0x72e2 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072ac d002 BRA 0x72b2 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //else point to the OUT BDT of the specified endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072de ecea CALL 0x7bd4,0x0 handle = pBDTEntryOut[ep]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072e0 f03d -0072e2 ec16 CALL 0x7c2c,0x0 -0072e4 f03e +0072ae ecd2 CALL 0x7ba4,0x0 handle = pBDTEntryOut[ep]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072b0 f03d +0072b2 ecfe CALL 0x7bfc,0x0 +0072b4 f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Error checking code. Make sure the handle (pBDTEntryIn[ep] or D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //pBDTEntryOut[ep]) is initialized before using it. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072e6 cfd9 MOVFF 0xfd9,0xfe9 if(handle == 0) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072e8 ffe9 -0072ea cfda MOVFF 0xfda,0xfea -0072ec ffea -0072ee 50ee MOVF 0xee,0x0,0x0 -0072f0 10ed IORWF 0xed,0x0,0x0 -0072f2 e103 BNZ 0x72fa +0072b6 cfd9 MOVFF 0xfd9,0xfe9 if(handle == 0) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072b8 ffe9 +0072ba cfda MOVFF 0xfda,0xfea +0072bc ffea +0072be 50ee MOVF 0xee,0x0,0x0 +0072c0 10ed IORWF 0xed,0x0,0x0 +0072c2 e103 BNZ 0x72ca { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072f4 6af3 CLRF 0xf3,0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072f6 6af4 CLRF 0xf4,0x0 -0072f8 d028 BRA 0x734a +0072c4 6af3 CLRF 0xf3,0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072c6 6af4 CLRF 0xf4,0x0 +0072c8 d028 BRA 0x731a } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Toggle the DTS bit if required D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1711,62 +1711,62 @@ Address Value Disassembly Source #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Set the data pointer, data length, and enable the endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072fa ecbc CALL 0x7b78,0x0 handle->ADR = ConvertToPhysicalAddress(data); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0072fc f03d -0072fe ecc6 CALL 0x7d8c,0x0 -007300 f03e -007302 0efb MOVLW 0xfb -007304 cfdb MOVFF 0xfdb,0xfee -007306 ffee -007308 0efc MOVLW 0xfc -00730a cfdb MOVFF 0xfdb,0xfed -00730c ffed -00730e ecbc CALL 0x7b78,0x0 handle->CNT = len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007310 f03d -007312 52ee MOVF 0xee,0x1,0x0 -007314 0efa MOVLW 0xfa -007316 cfdb MOVFF 0xfdb,0xfef -007318 ffef -00731a 0e40 MOVLW 0x40 handle->STAT.Val &= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00731c ecbc CALL 0x7d78,0x0 -00731e f03e -007320 0e88 MOVLW 0x88 handle->STAT.Val |= _USIE | (_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007322 eccb CALL 0x7d96,0x0 -007324 f03e +0072ca eca4 CALL 0x7b48,0x0 handle->ADR = ConvertToPhysicalAddress(data); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072cc f03d +0072ce ecae CALL 0x7d5c,0x0 +0072d0 f03e +0072d2 0efb MOVLW 0xfb +0072d4 cfdb MOVFF 0xfdb,0xfee +0072d6 ffee +0072d8 0efc MOVLW 0xfc +0072da cfdb MOVFF 0xfdb,0xfed +0072dc ffed +0072de eca4 CALL 0x7b48,0x0 handle->CNT = len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072e0 f03d +0072e2 52ee MOVF 0xee,0x1,0x0 +0072e4 0efa MOVLW 0xfa +0072e6 cfdb MOVFF 0xfdb,0xfef +0072e8 ffef +0072ea 0e40 MOVLW 0x40 handle->STAT.Val &= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072ec eca4 CALL 0x7d48,0x0 +0072ee f03e +0072f0 0e88 MOVLW 0x88 handle->STAT.Val |= _USIE | (_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072f2 ecb3 CALL 0x7d66,0x0 +0072f4 f03e D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Point to the next buffer for ping pong purposes. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007326 0efd MOVLW 0xfd if(dir != OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007328 50db MOVF 0xdb,0x0,0x0 -00732a e003 BZ 0x7332 +0072f6 0efd MOVLW 0xfd if(dir != OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072f8 50db MOVF 0xdb,0x0,0x0 +0072fa e003 BZ 0x7302 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //toggle over the to the next buffer for an IN endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00732c ecb3 CALL 0x7b66,0x0 USBAdvancePingPongBuffer(&pBDTEntryIn[ep]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00732e f03d +0072fc ec9b CALL 0x7b36,0x0 USBAdvancePingPongBuffer(&pBDTEntryIn[ep]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0072fe f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007330 d002 BRA 0x7336 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007300 d002 BRA 0x7306 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //toggle over the to the next buffer for an OUT endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007332 ecea CALL 0x7bd4,0x0 USBAdvancePingPongBuffer(&pBDTEntryOut[ep]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007334 f03d -007336 22ea ADDWFC 0xea,0x1,0x0 -007338 74ef BTG 0xef,0x2,0x0 +007302 ecd2 CALL 0x7ba4,0x0 USBAdvancePingPongBuffer(&pBDTEntryOut[ep]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007304 f03d +007306 22ea ADDWFC 0xea,0x1,0x0 +007308 74ef BTG 0xef,0x2,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00733a cfde MOVFF 0xfde,0x4e return (USB_HANDLE)handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00733c f04e -00733e cfdd MOVFF 0xfdd,0x4f -007340 f04f -007342 c04e MOVFF 0x4e,0xff3 -007344 fff3 -007346 c04f MOVFF 0x4f,0xff4 -007348 fff4 -00734a 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00734c 5ce1 SUBWF 0xe1,0x0,0x0 -00734e e202 BC 0x7354 -007350 6ae1 CLRF 0xe1,0x0 -007352 52e5 MOVF 0xe5,0x1,0x0 -007354 6ee1 MOVWF 0xe1,0x0 -007356 efcb GOTO 0x7b96 -007358 f03d +00730a cfde MOVFF 0xfde,0x4e return (USB_HANDLE)handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00730c f04e +00730e cfdd MOVFF 0xfdd,0x4f +007310 f04f +007312 c04e MOVFF 0x4e,0xff3 +007314 fff3 +007316 c04f MOVFF 0x4f,0xff4 +007318 fff4 +00731a 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00731c 5ce1 SUBWF 0xe1,0x0,0x0 +00731e e202 BC 0x7324 +007320 6ae1 CLRF 0xe1,0x0 +007322 52e5 MOVF 0xe5,0x1,0x0 +007324 6ee1 MOVWF 0xe1,0x0 +007326 efb3 GOTO 0x7b66 +007328 f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1792,79 +1792,79 @@ Address Value Disassembly Source None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00735a ec6b CALL 0x7cd6,0x0 void USBStallEndpoint(BYTE ep, BYTE dir) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00735c f03e +00732a ec53 CALL 0x7ca6,0x0 void USBStallEndpoint(BYTE ep, BYTE dir) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00732c f03e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BDT_ENTRY *p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00735e 0efe MOVLW 0xfe if(ep == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007360 50db MOVF 0xdb,0x0,0x0 -007362 e103 BNZ 0x736a +00732e 0efe MOVLW 0xfe if(ep == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007330 50db MOVF 0xdb,0x0,0x0 +007332 e103 BNZ 0x733a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //For control endpoints (ex: EP0), we need to STALL both IN and OUT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //endpoints. EP0 OUT must also be prepared to receive the next SETUP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //packet that will arrrive. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007364 ec82 CALL 0x7d04,0x0 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007366 f03e -007d04 df2c RCALL 0x7b5e +007334 ec6a CALL 0x7cd4,0x0 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007336 f03e +007cd4 df2c RCALL 0x7b2e pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007d06 0e8c MOVLW 0x8c pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007d08 6eef MOVWF 0xef,0x0 -007d0a df3b RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007d0c 0e84 MOVLW 0x84 -007d0e 6eef MOVWF 0xef,0x0 -007d10 0012 RETURN 0x0 +007cd6 0e8c MOVLW 0x8c pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007cd8 6eef MOVWF 0xef,0x0 +007cda df3b RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007cdc 0e84 MOVLW 0x84 +007cde 6eef MOVWF 0xef,0x0 +007ce0 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007368 d009 BRA 0x737c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007338 d009 BRA 0x734c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00736a ecef CALL 0x7bde,0x0 p = (BDT_ENTRY*)(&BDT[EP(ep,dir,0)]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00736c f03d -00736e ec59 CALL 0x7cb2,0x0 -007370 f03e -007cb2 0d04 MULLW 0x4 -007cb4 cff3 MOVFF 0xff3,0x4e -007cb6 f04e -007cb8 cff4 MOVFF 0xff4,0x4f -007cba f04f -007cbc 0e00 MOVLW 0x0 -007cbe 264e ADDWF 0x4e,0x1,0x0 -007cc0 0e04 MOVLW 0x4 -007cc2 dfc8 RCALL 0x7c54 -007cc4 0e84 MOVLW 0x84 p->STAT.Val |= _BSTALL | _USIE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007cc6 efcb GOTO 0x7d96 -007cc8 f03e -007d96 def0 RCALL 0x7b78 -007d98 50e8 MOVF 0xe8,0x0,0x0 -007d9a 12ef IORWF 0xef,0x1,0x0 -007d9c 0012 RETURN 0x0 +00733a ecd7 CALL 0x7bae,0x0 p = (BDT_ENTRY*)(&BDT[EP(ep,dir,0)]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00733c f03d +00733e ec41 CALL 0x7c82,0x0 +007340 f03e +007c82 0d04 MULLW 0x4 +007c84 cff3 MOVFF 0xff3,0x4e +007c86 f04e +007c88 cff4 MOVFF 0xff4,0x4f +007c8a f04f +007c8c 0e00 MOVLW 0x0 +007c8e 264e ADDWF 0x4e,0x1,0x0 +007c90 0e04 MOVLW 0x4 +007c92 dfc8 RCALL 0x7c24 +007c94 0e84 MOVLW 0x84 p->STAT.Val |= _BSTALL | _USIE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007c96 efb3 GOTO 0x7d66 +007c98 f03e +007d66 def0 RCALL 0x7b48 +007d68 50e8 MOVF 0xe8,0x0,0x0 +007d6a 12ef IORWF 0xef,0x1,0x0 +007d6c 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If the device is in FULL or ALL_BUT_EP0 ping pong modes D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //then stall that entry as well D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) || (USB_PING_PONG_MODE == USB_PING_PONG__ALL_BUT_EP0) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007372 ecef CALL 0x7bde,0x0 p = (BDT_ENTRY*)(&BDT[EP(ep,dir,1)]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007374 f03d -007376 0f01 ADDLW 0x1 -007378 ec59 CALL 0x7cb2,0x0 -00737a f03e -007c54 224f ADDWFC 0x4f,0x1,0x0 -007c56 c04e MOVFF 0x4e,0xfde -007c58 ffde -007c5a c04f MOVFF 0x4f,0xfdd -007c5c ffdd -007c5e 0012 RETURN 0x0 +007342 ecd7 CALL 0x7bae,0x0 p = (BDT_ENTRY*)(&BDT[EP(ep,dir,1)]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007344 f03d +007346 0f01 ADDLW 0x1 +007348 ec41 CALL 0x7c82,0x0 +00734a f03e +007c24 224f ADDWFC 0x4f,0x1,0x0 +007c26 c04e MOVFF 0x4e,0xfde +007c28 ffde +007c2a c04f MOVFF 0x4f,0xfdd +007c2c ffdd +007c2e 0012 RETURN 0x0 p->STAT.Val |= _BSTALL | _USIE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00737c 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00737e 5ce1 SUBWF 0xe1,0x0,0x0 -007380 e202 BC 0x7386 -007382 6ae1 CLRF 0xe1,0x0 -007384 52e5 MOVF 0xe5,0x1,0x0 -007386 6ee1 MOVWF 0xe1,0x0 -007388 efcb GOTO 0x7b96 -00738a f03d +00734c 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00734e 5ce1 SUBWF 0xe1,0x0,0x0 +007350 e202 BC 0x7356 +007352 6ae1 CLRF 0xe1,0x0 +007354 52e5 MOVF 0xe5,0x1,0x0 +007356 6ee1 MOVWF 0xe1,0x0 +007358 efb3 GOTO 0x7b66 +00735a f03d D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -1889,49 +1889,49 @@ Address Value Disassembly Source None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c **************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00738c ecc6 CALL 0x7b8c,0x0 void USBCancelIO(BYTE endpoint) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00738e f03d +00735c ecae CALL 0x7b5c,0x0 void USBCancelIO(BYTE endpoint) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00735e f03d { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007390 a865 BTFSS 0x65,0x4,0x0 if(USBPacketDisable == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007392 d016 BRA 0x73c0 +007360 a865 BTFSS 0x65,0x4,0x0 if(USBPacketDisable == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007362 d016 BRA 0x7390 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //The PKTDIS bit is currently set right now. It is therefore "safe" D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //to mess with the BDT right now. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007394 ec93 CALL 0x7d26,0x0 pBDTEntryIn[endpoint]->Val &= _DTSMASK; //Makes UOWN = 0 (_UCPU mode). Deactivates endpoint. Only sends NAKs. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007396 f03e -007398 0e40 MOVLW 0x40 -00739a 16ee ANDWF 0xee,0x1,0x0 -00739c 6aee CLRF 0xee,0x0 -00739e 6aee CLRF 0xee,0x0 -0073a0 6aee CLRF 0xee,0x0 -0073a2 ec93 CALL 0x7d26,0x0 pBDTEntryIn[endpoint]->Val ^= _DTSMASK; //Toggle the DTS bit. This packet didn't get sent yet, and the next call to USBTransferOnePacket() will re-toggle the DTS bit back to the original (correct) value. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073a4 f03e -0073a6 7cee BTG 0xee,0x6,0x0 +007364 ec7b CALL 0x7cf6,0x0 pBDTEntryIn[endpoint]->Val &= _DTSMASK; //Makes UOWN = 0 (_UCPU mode). Deactivates endpoint. Only sends NAKs. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007366 f03e +007368 0e40 MOVLW 0x40 +00736a 16ee ANDWF 0xee,0x1,0x0 +00736c 6aee CLRF 0xee,0x0 +00736e 6aee CLRF 0xee,0x0 +007370 6aee CLRF 0xee,0x0 +007372 ec7b CALL 0x7cf6,0x0 pBDTEntryIn[endpoint]->Val ^= _DTSMASK; //Toggle the DTS bit. This packet didn't get sent yet, and the next call to USBTransferOnePacket() will re-toggle the DTS bit back to the original (correct) value. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007374 f03e +007376 7cee BTG 0xee,0x6,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Need to do additional handling if ping-pong buffering is being used D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if ((USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) || (USB_PING_PONG_MODE == USB_PING_PONG__ALL_BUT_EP0)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Point to the next buffer for ping pong purposes. UOWN getting cleared D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //(either due to SIE clearing it after a transaction, or the firmware D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //clearing it) makes hardware ping pong pointer advance. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073a8 dbde RCALL 0x7b66 USBAdvancePingPongBuffer(&pBDTEntryIn[endpoint]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073aa 22ea ADDWFC 0xea,0x1,0x0 -0073ac 74ef BTG 0xef,0x2,0x0 +007378 dbde RCALL 0x7b36 USBAdvancePingPongBuffer(&pBDTEntryIn[endpoint]); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00737a 22ea ADDWFC 0xea,0x1,0x0 +00737c 74ef BTG 0xef,0x2,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073ae 0e40 MOVLW 0x40 pBDTEntryIn[endpoint]->STAT.Val &= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073b0 6e4e MOVWF 0x4e,0x0 -0073b2 ec93 CALL 0x7d26,0x0 -0073b4 f03e -0073b6 504e MOVF 0x4e,0x0,0x0 -0073b8 16ef ANDWF 0xef,0x1,0x0 -0073ba ec93 CALL 0x7d26,0x0 pBDTEntryIn[endpoint]->STAT.Val ^= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073bc f03e -0073be 7cef BTG 0xef,0x6,0x0 -007d26 df1f RCALL 0x7b66 -007d28 ef03 GOTO 0x7c06 -007d2a f03e +00737e 0e40 MOVLW 0x40 pBDTEntryIn[endpoint]->STAT.Val &= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007380 6e4e MOVWF 0x4e,0x0 +007382 ec7b CALL 0x7cf6,0x0 +007384 f03e +007386 504e MOVF 0x4e,0x0,0x0 +007388 16ef ANDWF 0xef,0x1,0x0 +00738a ec7b CALL 0x7cf6,0x0 pBDTEntryIn[endpoint]->STAT.Val ^= _DTSMASK; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00738c f03e +00738e 7cef BTG 0xef,0x6,0x0 +007cf6 df1f RCALL 0x7b36 +007cf8 efeb GOTO 0x7bd6 +007cfa f03d #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073c0 d3ea BRA 0x7b96 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007390 d3ea BRA 0x7b66 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2205,63 +2205,63 @@ Address Value Disassembly Source //USBCtrlEPAllowStatusStage() can be called twice simultaneously (ex: once D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //in main loop context, while simultaneously getting an interrupt which D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //tries to call USBCtrlEPAllowStatusStage() again, at the same time). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073c2 0105 MOVLB 0x5 if(USBStatusStageEnabledFlag1 == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073c4 51ec MOVF 0xec,0x0,0x1 -0073c6 e122 BNZ 0x740c +007392 0105 MOVLB 0x5 if(USBStatusStageEnabledFlag1 == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007394 51ec MOVF 0xec,0x0,0x1 +007396 e122 BNZ 0x73dc { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073c8 0e01 MOVLW 0x1 USBStatusStageEnabledFlag1 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073ca 6fec MOVWF 0xec,0x1 -0073cc 51ed MOVF 0xed,0x0,0x1 if(USBStatusStageEnabledFlag2 == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073ce e11e BNZ 0x740c +007398 0e01 MOVLW 0x1 USBStatusStageEnabledFlag1 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00739a 6fec MOVWF 0xec,0x1 +00739c 51ed MOVF 0xed,0x0,0x1 if(USBStatusStageEnabledFlag2 == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00739e e11e BNZ 0x73dc { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073d0 0e01 MOVLW 0x1 USBStatusStageEnabledFlag2 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073d2 6fed MOVWF 0xed,0x1 +0073a0 0e01 MOVLW 0x1 USBStatusStageEnabledFlag2 = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073a2 6fed MOVWF 0xed,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Determine which endpoints (EP0 IN or OUT needs arming for the status D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //stage), based on the type of control transfer currently pending. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073d4 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073d6 5dd0 SUBWF 0xd0,0x0,0x1 -0073d8 e107 BNZ 0x73e8 +0073a4 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073a6 5dd0 SUBWF 0xd0,0x0,0x1 +0073a8 e107 BNZ 0x73b8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073da dbd3 RCALL 0x7b82 pBDTEntryIn[0]->CNT = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073dc 52ee MOVF 0xee,0x1,0x0 -0073de 6aef CLRF 0xef,0x0 -0073e0 dbd0 RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073e2 0ec8 MOVLW 0xc8 -0073e4 6eef MOVWF 0xef,0x0 +0073aa dbd3 RCALL 0x7b52 pBDTEntryIn[0]->CNT = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073ac 52ee MOVF 0xee,0x1,0x0 +0073ae 6aef CLRF 0xef,0x0 +0073b0 dbd0 RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073b2 0ec8 MOVLW 0xc8 +0073b4 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073e6 0012 RETURN 0x0 else if(controlTransferState == CTRL_TRF_TX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073e8 05d0 DECF 0xd0,0x0,0x1 -0073ea e110 BNZ 0x740c +0073b6 0012 RETURN 0x0 else if(controlTransferState == CTRL_TRF_TX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073b8 05d0 DECF 0xd0,0x0,0x1 +0073ba e110 BNZ 0x73dc { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073ec 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; //Indicator flag used in USBCtrlTrfOutHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073bc 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; //Indicator flag used in USBCtrlTrfOutHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //This buffer (when ping pong buffering is enabled on EP0 OUT) receives the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //next SETUP packet. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if((USB_PING_PONG_MODE == USB_PING_PONG__EP0_OUT_ONLY) || (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073ee dbdf RCALL 0x7bae pBDTEntryEP0OutCurrent->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073f0 52ee MOVF 0xee,0x1,0x0 -0073f2 0e40 MOVLW 0x40 -0073f4 6eef MOVWF 0xef,0x0 -0073f6 dbdb RCALL 0x7bae pBDTEntryEP0OutCurrent->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073f8 ec65 CALL 0x7cca,0x0 -0073fa f03e -0073fc dbd8 RCALL 0x7bae pBDTEntryEP0OutCurrent->STAT.Val = _USIE|_BSTALL; //Prepare endpoint to accept a SETUP transaction D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0073fe 0e84 MOVLW 0x84 -007400 6eef MOVWF 0xef,0x0 -007402 0e01 MOVLW 0x1 BothEP0OutUOWNsSet = TRUE; //Indicator flag used in USBCtrlTrfOutHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007404 6fe3 MOVWF 0xe3,0x1 +0073be dbdf RCALL 0x7b7e pBDTEntryEP0OutCurrent->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073c0 52ee MOVF 0xee,0x1,0x0 +0073c2 0e40 MOVLW 0x40 +0073c4 6eef MOVWF 0xef,0x0 +0073c6 dbdb RCALL 0x7b7e pBDTEntryEP0OutCurrent->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073c8 ec4d CALL 0x7c9a,0x0 +0073ca f03e +0073cc dbd8 RCALL 0x7b7e pBDTEntryEP0OutCurrent->STAT.Val = _USIE|_BSTALL; //Prepare endpoint to accept a SETUP transaction D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073ce 0e84 MOVLW 0x84 +0073d0 6eef MOVWF 0xef,0x0 +0073d2 0e01 MOVLW 0x1 BothEP0OutUOWNsSet = TRUE; //Indicator flag used in USBCtrlTrfOutHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073d4 6fe3 MOVWF 0xe3,0x1 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //This EP0 OUT buffer receives the 0-byte OUT status stage packet. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007406 dbab RCALL 0x7b5e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073d6 dbab RCALL 0x7b2e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007408 0e80 MOVLW 0x80 pBDTEntryEP0OutNext->STAT.Val = _USIE; // Note: DTSEN is 0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00740a 6eef MOVWF 0xef,0x0 +0073d8 0e80 MOVLW 0x80 pBDTEntryEP0OutNext->STAT.Val = _USIE; // Note: DTSEN is 0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073da 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00740c 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073dc 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2292,51 +2292,51 @@ Address Value Disassembly Source *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c void USBCtrlEPAllowDataStage(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00740e 0105 MOVLB 0x5 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007410 6bee CLRF 0xee,0x1 -007412 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073de 0105 MOVLB 0x5 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073e0 6bee CLRF 0xee,0x1 +0073e2 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007414 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) //(...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007416 5dd0 SUBWF 0xd0,0x0,0x1 -007418 e106 BNZ 0x7426 +0073e4 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) //(...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073e6 5dd0 SUBWF 0xd0,0x0,0x1 +0073e8 e106 BNZ 0x73f6 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Prepare EP0 OUT to receive the first OUT data packet in the data stage sequence. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00741a ecc0 CALL 0x7d80,0x0 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00741c f03e -00741e dbcc RCALL 0x7bb8 pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007420 ec54 CALL 0x7ca8,0x0 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007422 f03e +0073ea eca8 CALL 0x7d50,0x0 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073ec f03e +0073ee dbcc RCALL 0x7b88 pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073f0 ec3c CALL 0x7c78,0x0 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073f2 f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007424 d010 BRA 0x7446 else //else must be controlTransferState == CTRL_TRF_TX (...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073f4 d010 BRA 0x7416 else //else must be controlTransferState == CTRL_TRF_TX (...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Error check the data stage byte count. Make sure the user specified D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //value was no greater than the number of bytes the host requested. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007426 51d4 MOVF 0xd4,0x0,0x1 if(SetupPkt.wLength < inPipes[0].wCount.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007428 0104 MOVLB 0x4 -00742a 5d36 SUBWF 0x36,0x0,0x1 -00742c 0105 MOVLB 0x5 -00742e 51d5 MOVF 0xd5,0x0,0x1 -007430 0104 MOVLB 0x4 -007432 5937 SUBWFB 0x37,0x0,0x1 -007434 e204 BC 0x743e +0073f6 51d4 MOVF 0xd4,0x0,0x1 if(SetupPkt.wLength < inPipes[0].wCount.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0073f8 0104 MOVLB 0x4 +0073fa 5d36 SUBWF 0x36,0x0,0x1 +0073fc 0105 MOVLB 0x5 +0073fe 51d5 MOVF 0xd5,0x0,0x1 +007400 0104 MOVLB 0x4 +007402 5937 SUBWFB 0x37,0x0,0x1 +007404 e204 BC 0x740e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007436 c436 MOVFF 0x436,0x5d4 inPipes[0].wCount.Val = SetupPkt.wLength; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007438 f5d4 -00743a c437 MOVFF 0x437,0x5d5 -00743c f5d5 +007406 c436 MOVFF 0x436,0x5d4 inPipes[0].wCount.Val = SetupPkt.wLength; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007408 f5d4 +00740a c437 MOVFF 0x437,0x5d5 +00740c f5d5 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00743e d861 RCALL 0x7502 USBCtrlTrfTxService(); //Copies one IN data packet worth of data from application buffer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00740e d861 RCALL 0x74d2 USBCtrlTrfTxService(); //Copies one IN data packet worth of data from application buffer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //to CtrlTrfData buffer. Also keeps track of how many bytes remaining. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Cnt should have been initialized by responsible request owner (ex: by D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //using the USBEP0SendRAMPtr() or USBEP0SendROMPtr() API function). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007440 dba0 RCALL 0x7b82 pBDTEntryIn[0]->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007442 dbba RCALL 0x7bb8 -007444 db9e RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007446 0ec8 MOVLW 0xc8 -007448 6eef MOVWF 0xef,0x0 +007410 dba0 RCALL 0x7b52 pBDTEntryIn[0]->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007412 dbba RCALL 0x7b88 +007414 db9e RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007416 0ec8 MOVLW 0xc8 +007418 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00744a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00741a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2361,81 +2361,81 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00744c ec6b CALL 0x7cd6,0x0 static void USBConfigureEndpoint(BYTE EPNum, BYTE direction) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00744e f03e +00741c ec53 CALL 0x7ca6,0x0 static void USBConfigureEndpoint(BYTE EPNum, BYTE direction) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00741e f03e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c volatile BDT_ENTRY* handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Compute a pointer to the even BDT entry corresponding to the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //EPNum and direction values passed to this function. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007450 0e00 MOVLW 0x0 handle = (volatile BDT_ENTRY*)&BDT[EP0_OUT_EVEN]; //Get address of start of BDT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007452 6ede MOVWF 0xde,0x0 -007454 0e04 MOVLW 0x4 -007456 6edd MOVWF 0xdd,0x0 -007458 dbc2 RCALL 0x7bde handle += EP(EPNum,direction,0u); //Add in offset to the BDT of interest D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00745a 0d04 MULLW 0x4 -00745c cff4 MOVFF 0xff4,0x4f -00745e f04f -007460 cfd9 MOVFF 0xfd9,0xfe9 -007462 ffe9 -007464 cfda MOVFF 0xfda,0xfea -007466 ffea -007468 50f3 MOVF 0xf3,0x0,0x0 -00746a 26ee ADDWF 0xee,0x1,0x0 -00746c 504f MOVF 0x4f,0x0,0x0 -00746e 22ed ADDWFC 0xed,0x1,0x0 -007bde 0efd MOVLW 0xfd -007be0 50db MOVF 0xdb,0x0,0x0 -007be2 24e8 ADDWF 0xe8,0x0,0x0 -007be4 6e50 MOVWF 0x50,0x0 -007be6 0efe MOVLW 0xfe -007be8 50db MOVF 0xdb,0x0,0x0 -007bea 0d04 MULLW 0x4 -007bec 50f3 MOVF 0xf3,0x0,0x0 -007bee 2450 ADDWF 0x50,0x0,0x0 -007bf0 0012 RETURN 0x0 +007420 0e00 MOVLW 0x0 handle = (volatile BDT_ENTRY*)&BDT[EP0_OUT_EVEN]; //Get address of start of BDT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007422 6ede MOVWF 0xde,0x0 +007424 0e04 MOVLW 0x4 +007426 6edd MOVWF 0xdd,0x0 +007428 dbc2 RCALL 0x7bae handle += EP(EPNum,direction,0u); //Add in offset to the BDT of interest D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00742a 0d04 MULLW 0x4 +00742c cff4 MOVFF 0xff4,0x4f +00742e f04f +007430 cfd9 MOVFF 0xfd9,0xfe9 +007432 ffe9 +007434 cfda MOVFF 0xfda,0xfea +007436 ffea +007438 50f3 MOVF 0xf3,0x0,0x0 +00743a 26ee ADDWF 0xee,0x1,0x0 +00743c 504f MOVF 0x4f,0x0,0x0 +00743e 22ed ADDWFC 0xed,0x1,0x0 +007bae 0efd MOVLW 0xfd +007bb0 50db MOVF 0xdb,0x0,0x0 +007bb2 24e8 ADDWF 0xe8,0x0,0x0 +007bb4 6e50 MOVWF 0x50,0x0 +007bb6 0efe MOVLW 0xfe +007bb8 50db MOVF 0xdb,0x0,0x0 +007bba 0d04 MULLW 0x4 +007bbc 50f3 MOVF 0xf3,0x0,0x0 +007bbe 2450 ADDWF 0x50,0x0,0x0 +007bc0 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007470 db83 RCALL 0x7b78 handle->STAT.UOWN = 0; //mostly redundant, since USBStdSetCfgHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007472 9eef BCF 0xef,0x7,0x0 +007440 db83 RCALL 0x7b48 handle->STAT.UOWN = 0; //mostly redundant, since USBStdSetCfgHandler() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007442 9eef BCF 0xef,0x7,0x0 //already cleared the entire BDT table D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Make sure our pBDTEntryIn/Out[] pointer is initialized. Needed later D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //for USBTransferOnePacket() API calls. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007474 0efd MOVLW 0xfd if(direction == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007476 50db MOVF 0xdb,0x0,0x0 -007478 e102 BNZ 0x747e +007444 0efd MOVLW 0xfd if(direction == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007446 50db MOVF 0xdb,0x0,0x0 +007448 e102 BNZ 0x744e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00747a dbac RCALL 0x7bd4 pBDTEntryOut[EPNum] = handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007bd4 0efe MOVLW 0xfe -007bd6 6aea CLRF 0xea,0x0 -007bd8 34db RLCF 0xdb,0x0,0x0 -007bda efa4 GOTO 0x7d48 -007bdc f03e +00744a dbac RCALL 0x7ba4 pBDTEntryOut[EPNum] = handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ba4 0efe MOVLW 0xfe +007ba6 6aea CLRF 0xea,0x0 +007ba8 34db RLCF 0xdb,0x0,0x0 +007baa ef8c GOTO 0x7d18 +007bac f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00747c d001 BRA 0x7480 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00744c d001 BRA 0x7450 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00747e db73 RCALL 0x7b66 pBDTEntryIn[EPNum] = handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007480 22ea ADDWFC 0xea,0x1,0x0 -007482 cfde MOVFF 0xfde,0xfee -007484 ffee -007486 cfdd MOVFF 0xfdd,0xfed -007488 ffed -007b66 0efe MOVLW 0xfe -007b68 6aea CLRF 0xea,0x0 -007b6a 34db RLCF 0xdb,0x0,0x0 -007b6c ef9d GOTO 0x7d3a -007b6e f03e +00744e db73 RCALL 0x7b36 pBDTEntryIn[EPNum] = handle; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007450 22ea ADDWFC 0xea,0x1,0x0 +007452 cfde MOVFF 0xfde,0xfee +007454 ffee +007456 cfdd MOVFF 0xfdd,0xfed +007458 ffed +007b36 0efe MOVLW 0xfe +007b38 6aea CLRF 0xea,0x0 +007b3a 34db RLCF 0xdb,0x0,0x0 +007b3c ef85 GOTO 0x7d0a +007b3e f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00748a db76 RCALL 0x7b78 handle->STAT.DTS = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00748c 9cef BCF 0xef,0x6,0x0 -00748e db74 RCALL 0x7b78 (handle+1)->STAT.DTS = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007490 0e04 MOVLW 0x4 -007492 26e9 ADDWF 0xe9,0x1,0x0 -007494 0e00 MOVLW 0x0 -007496 22ea ADDWFC 0xea,0x1,0x0 -007498 8cef BSF 0xef,0x6,0x0 +00745a db76 RCALL 0x7b48 handle->STAT.DTS = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00745c 9cef BCF 0xef,0x6,0x0 +00745e db74 RCALL 0x7b48 (handle+1)->STAT.DTS = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007460 0e04 MOVLW 0x4 +007462 26e9 ADDWF 0xe9,0x1,0x0 +007464 0e00 MOVLW 0x0 +007466 22ea ADDWFC 0xea,0x1,0x0 +007468 8cef BSF 0xef,0x6,0x0 #elif (USB_PING_PONG_MODE == USB_PING_PONG__NO_PING_PONG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Set DTS to one because the first thing we will do D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //when transmitting is toggle the bit D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2452,13 +2452,13 @@ Address Value Disassembly Source (handle+1)->STAT.DTS = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00749a 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00749c 5ce1 SUBWF 0xe1,0x0,0x0 -00749e e202 BC 0x74a4 -0074a0 6ae1 CLRF 0xe1,0x0 -0074a2 52e5 MOVF 0xe5,0x1,0x0 -0074a4 6ee1 MOVWF 0xe1,0x0 -0074a6 d377 BRA 0x7b96 +00746a 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00746c 5ce1 SUBWF 0xe1,0x0,0x0 +00746e e202 BC 0x7474 +007470 6ae1 CLRF 0xe1,0x0 +007472 52e5 MOVF 0xe5,0x1,0x0 +007474 6ee1 MOVWF 0xe1,0x0 +007476 d377 BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2495,21 +2495,21 @@ Address Value Disassembly Source * PKTDIS bit is set when a Setup Transaction is received. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Clear to resume packet processing. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074a8 9865 BCF 0x65,0x4,0x0 USBPacketDisable = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007478 9865 BCF 0x65,0x4,0x0 USBPacketDisable = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check the busy bits and the SetupPtk.DataDir variables to determine what type of D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //control transfer is currently in progress. We need to know the type of control D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //transfer that is currently pending, in order to know how to properly arm the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //EP0 IN and EP0 OUT endpoints. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074aa 0105 MOVLB 0x5 if(inPipes[0].info.bits.busy == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074ac bfd3 BTFSC 0xd3,0x7,0x1 -0074ae d00d BRA 0x74ca +00747a 0105 MOVLB 0x5 if(inPipes[0].info.bits.busy == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00747c bfd3 BTFSC 0xd3,0x7,0x1 +00747e d00d BRA 0x749a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074b0 afd8 BTFSS 0xd8,0x7,0x1 if(outPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074b2 d009 BRA 0x74c6 +007480 afd8 BTFSS 0xd8,0x7,0x1 if(outPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007482 d009 BRA 0x7496 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074b4 0e02 MOVLW 0x2 controlTransferState = CTRL_TRF_RX; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074b6 6fd0 MOVWF 0xd0,0x1 +007484 0e02 MOVLW 0x2 controlTransferState = CTRL_TRF_RX; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007486 6fd0 MOVWF 0xd0,0x1 /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Control Write: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * ... | D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2520,26 +2520,26 @@ Address Value Disassembly Source // RAM buffer wasn't available yet) by calling USBDeferDataStage(). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // If it did so, it is then responsible for calling USBCtrlEPAllowDataStage(), D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // once it is ready to begin receiving the data. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074b8 51ef MOVF 0xef,0x0,0x1 if(USBDeferOUTDataStagePackets == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074ba e101 BNZ 0x74be +007488 51ef MOVF 0xef,0x0,0x1 if(USBDeferOUTDataStagePackets == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00748a e101 BNZ 0x748e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074bc dfa8 RCALL 0x740e USBCtrlEPAllowDataStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00748c dfa8 RCALL 0x73de USBCtrlEPAllowDataStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //2. IN endpoint 0 status stage will be armed by USBCtrlEPAllowStatusStage() D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //after all of the OUT data has been received and consumed, or if a timeout occurs. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074be 0105 MOVLB 0x5 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074c0 6bed CLRF 0xed,0x1 -0074c2 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00748e 0105 MOVLB 0x5 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007490 6bed CLRF 0xed,0x1 +007492 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074c4 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007494 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * If no one knows how to service this request then stall. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Must also prepare EP0 to receive the next SETUP transaction. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074c6 ef82 GOTO 0x7d04 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074c8 f03e +007496 ef6a GOTO 0x7cd4 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007498 f03e pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryIn[0]->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2547,13 +2547,13 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c else // A module has claimed ownership of the control transfer session. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074ca 0104 MOVLB 0x4 if(SetupPkt.DataDir == USB_SETUP_DEVICE_TO_HOST_BITFIELD) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074cc af30 BTFSS 0x30,0x7,0x1 -0074ce d00d BRA 0x74ea +00749a 0104 MOVLB 0x4 if(SetupPkt.DataDir == USB_SETUP_DEVICE_TO_HOST_BITFIELD) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00749c af30 BTFSS 0x30,0x7,0x1 +00749e d00d BRA 0x74ba { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074d0 0105 MOVLB 0x5 controlTransferState = CTRL_TRF_TX; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074d2 0e01 MOVLW 0x1 -0074d4 6fd0 MOVWF 0xd0,0x1 +0074a0 0105 MOVLB 0x5 controlTransferState = CTRL_TRF_TX; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074a2 0e01 MOVLW 0x1 +0074a4 6fd0 MOVWF 0xd0,0x1 /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Control Read: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * ... | D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2567,10 +2567,10 @@ Address Value Disassembly Source * is ready to begin sending the data, it should then call the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * USBCtrlEPAllowDataStage() function to start the data stage. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074d6 51ee MOVF 0xee,0x0,0x1 if(USBDeferINDataStagePackets == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074d8 e101 BNZ 0x74dc +0074a6 51ee MOVF 0xee,0x0,0x1 if(USBDeferINDataStagePackets == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074a8 e101 BNZ 0x74ac { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074da df99 RCALL 0x740e USBCtrlEPAllowDataStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074aa df99 RCALL 0x73de USBCtrlEPAllowDataStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // 2. (Optionally) allow the status stage now, to prepare for early termination. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2593,14 +2593,14 @@ Address Value Disassembly Source // recommended for the USB class handler firmware to call USBDeferStatusStage(), for this D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // type of control transfer. If the USB class handler firmware needs more time to fetch the IN D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // data that needs to be sent to the host, it should instead use the USBDeferDataStage() function. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074dc 0105 MOVLB 0x5 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074de 6bed CLRF 0xed,0x1 -0074e0 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074e2 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074e4 e10d BNZ 0x7500 +0074ac 0105 MOVLB 0x5 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074ae 6bed CLRF 0xed,0x1 +0074b0 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074b2 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074b4 e10d BNZ 0x74d0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074e6 efe1 GOTO 0x73c2 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074e8 f039 +0074b6 efc9 GOTO 0x7392 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074b8 f039 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c else // (SetupPkt.DataDir == USB_SETUP_DIRECTION_HOST_TO_DEVICE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2615,29 +2615,29 @@ Address Value Disassembly Source //(hence: outPipes[0].info.bits.busy == 0). There is however still D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //an IN status stage. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074ea 0105 MOVLB 0x5 controlTransferState = CTRL_TRF_RX; //Since this is a HOST_TO_DEVICE control transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074ec 0e02 MOVLW 0x2 -0074ee 6fd0 MOVWF 0xd0,0x1 +0074ba 0105 MOVLB 0x5 controlTransferState = CTRL_TRF_RX; //Since this is a HOST_TO_DEVICE control transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074bc 0e02 MOVLW 0x2 +0074be 6fd0 MOVWF 0xd0,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //1. Prepare OUT EP to receive the next SETUP packet. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074f0 db36 RCALL 0x7b5e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074c0 db36 RCALL 0x7b2e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074f2 0e84 MOVLW 0x84 pBDTEntryEP0OutNext->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074f4 6eef MOVWF 0xef,0x0 +0074c2 0e84 MOVLW 0x84 pBDTEntryEP0OutNext->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074c4 6eef MOVWF 0xef,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //2. Prepare for IN status stage of the control transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074f6 6bed CLRF 0xed,0x1 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074f8 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074fa 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074fc e101 BNZ 0x7500 +0074c6 6bed CLRF 0xed,0x1 USBStatusStageEnabledFlag2 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074c8 6bec CLRF 0xec,0x1 USBStatusStageEnabledFlag1 = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074ca 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074cc e101 BNZ 0x74d0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0074fe df61 RCALL 0x73c2 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074ce df61 RCALL 0x7392 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if(ctrl_trf_session_owner == MUID_NULL) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007500 0012 RETURN 0x0 }//end USBCtrlEPServiceComplete D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074d0 0012 RETURN 0x0 }//end USBCtrlEPServiceComplete D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2660,120 +2660,120 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Note: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007502 ec9a CALL 0x7d34,0x0 static void USBCtrlTrfTxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007504 f03e +0074d2 ec82 CALL 0x7d04,0x0 static void USBCtrlTrfTxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074d4 f03e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE byteToSend; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Figure out how many bytes of data to send in the next IN transaction. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Assume a full size packet, unless otherwise determined below. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007506 0e40 MOVLW 0x40 byteToSend = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007508 6edf MOVWF 0xdf,0x0 -00750a 0105 MOVLB 0x5 if(inPipes[0].wCount.Val < (BYTE)USB_EP0_BUFF_SIZE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00750c 5dd4 SUBWF 0xd4,0x0,0x1 -00750e 0e00 MOVLW 0x0 -007510 59d5 SUBWFB 0xd5,0x0,0x1 -007512 e20a BC 0x7528 +0074d6 0e40 MOVLW 0x40 byteToSend = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074d8 6edf MOVWF 0xdf,0x0 +0074da 0105 MOVLB 0x5 if(inPipes[0].wCount.Val < (BYTE)USB_EP0_BUFF_SIZE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074dc 5dd4 SUBWF 0xd4,0x0,0x1 +0074de 0e00 MOVLW 0x0 +0074e0 59d5 SUBWFB 0xd5,0x0,0x1 +0074e2 e20a BC 0x74f8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007514 c5d4 MOVFF 0x5d4,0xfdf byteToSend = inPipes[0].wCount.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007516 ffdf +0074e4 c5d4 MOVFF 0x5d4,0xfdf byteToSend = inPipes[0].wCount.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074e6 ffdf D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Keep track of whether or not we have sent a "short packet" yet. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //This is useful so that later on, we can configure EP0 IN to STALL, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //after we have sent all of the intended data. This makes sure the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //hardware STALLs if the host erroneously tries to send more IN token D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //packets, requesting more data than intended in the control transfer. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007518 51cf MOVF 0xcf,0x0,0x1 if(shortPacketStatus == SHORT_PKT_NOT_USED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00751a e102 BNZ 0x7520 +0074e8 51cf MOVF 0xcf,0x0,0x1 if(shortPacketStatus == SHORT_PKT_NOT_USED) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074ea e102 BNZ 0x74f0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00751c 0e01 MOVLW 0x1 shortPacketStatus = SHORT_PKT_PENDING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074ec 0e01 MOVLW 0x1 shortPacketStatus = SHORT_PKT_PENDING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00751e d003 BRA 0x7526 else if(shortPacketStatus == SHORT_PKT_PENDING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007520 05cf DECF 0xcf,0x0,0x1 -007522 e102 BNZ 0x7528 +0074ee d003 BRA 0x74f6 else if(shortPacketStatus == SHORT_PKT_PENDING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074f0 05cf DECF 0xcf,0x0,0x1 +0074f2 e102 BNZ 0x74f8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007524 0e02 MOVLW 0x2 shortPacketStatus = SHORT_PKT_SENT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007526 6fcf MOVWF 0xcf,0x1 +0074f4 0e02 MOVLW 0x2 shortPacketStatus = SHORT_PKT_SENT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074f6 6fcf MOVWF 0xcf,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Keep track of how many bytes remain to be sent in the transfer, by D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //subtracting the number of bytes about to be sent from the total. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007528 50df MOVF 0xdf,0x0,0x0 inPipes[0].wCount.Val = inPipes[0].wCount.Val - byteToSend; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00752a 6a4f CLRF 0x4f,0x0 -00752c 50e8 MOVF 0xe8,0x0,0x0 -00752e 5dd4 SUBWF 0xd4,0x0,0x1 -007530 6fd4 MOVWF 0xd4,0x1 -007532 504f MOVF 0x4f,0x0,0x0 -007534 59d5 SUBWFB 0xd5,0x0,0x1 -007536 6fd5 MOVWF 0xd5,0x1 +0074f8 50df MOVF 0xdf,0x0,0x0 inPipes[0].wCount.Val = inPipes[0].wCount.Val - byteToSend; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0074fa 6a4f CLRF 0x4f,0x0 +0074fc 50e8 MOVF 0xe8,0x0,0x0 +0074fe 5dd4 SUBWF 0xd4,0x0,0x1 +007500 6fd4 MOVWF 0xd4,0x1 +007502 504f MOVF 0x4f,0x0,0x0 +007504 59d5 SUBWFB 0xd5,0x0,0x1 +007506 6fd5 MOVWF 0xd5,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Next, load the number of bytes to send to BC7..0 in buffer descriptor. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Note: Control endpoints may never have a max packet size of > 64 bytes. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Therefore, the BC8 and BC9 bits should always be maintained clear. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007538 db24 RCALL 0x7b82 pBDTEntryIn[0]->CNT = byteToSend; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00753a 52ee MOVF 0xee,0x1,0x0 -00753c cfdf MOVFF 0xfdf,0xfef -00753e ffef +007508 db24 RCALL 0x7b52 pBDTEntryIn[0]->CNT = byteToSend; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00750a 52ee MOVF 0xee,0x1,0x0 +00750c cfdf MOVFF 0xfdf,0xfef +00750e ffef D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Now copy the data from the source location, to the CtrlTrfData[] buffer, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //which we will send to the host. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007540 0e38 MOVLW 0x38 pDst = (USB_VOLATILE BYTE*)CtrlTrfData; // Set destination pointer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007542 6fdd MOVWF 0xdd,0x1 -007544 0e04 MOVLW 0x4 -007546 6fde MOVWF 0xde,0x1 -007548 b1d3 BTFSC 0xd3,0x0,0x1 if(inPipes[0].info.bits.ctrl_trf_mem == USB_EP0_ROM) // Determine type of memory source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00754a d00d BRA 0x7566 +007510 0e38 MOVLW 0x38 pDst = (USB_VOLATILE BYTE*)CtrlTrfData; // Set destination pointer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007512 6fdd MOVWF 0xdd,0x1 +007514 0e04 MOVLW 0x4 +007516 6fde MOVWF 0xde,0x1 +007518 b1d3 BTFSC 0xd3,0x0,0x1 if(inPipes[0].info.bits.ctrl_trf_mem == USB_EP0_ROM) // Determine type of memory source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00751a d00d BRA 0x7536 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00754c 50df MOVF 0xdf,0x0,0x0 while(byteToSend) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00754e e017 BZ 0x757e -007564 d7f3 BRA 0x754c +00751c 50df MOVF 0xdf,0x0,0x0 while(byteToSend) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00751e e017 BZ 0x754e +007534 d7f3 BRA 0x751c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007550 c5d1 MOVFF 0x5d1,0xff6 *pDst++ = *inPipes[0].pSrc.bRom++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007552 fff6 -007554 c5d2 MOVFF 0x5d2,0xff7 -007556 fff7 -007558 2bd1 INCF 0xd1,0x1,0x1 -00755a 0e00 MOVLW 0x0 -00755c 23d2 ADDWFC 0xd2,0x1,0x1 -00755e 0008 TBLRD -007560 50f5 MOVF 0xf5,0x0,0x0 -007562 db57 RCALL 0x7c12 -007c12 6ee6 MOVWF 0xe6,0x0 -007c14 c5dd MOVFF 0x5dd,0xfe9 -007c16 ffe9 -007c18 c5de MOVFF 0x5de,0xfea -007c1a ffea -007c1c 2bdd INCF 0xdd,0x1,0x1 -007c1e 0e00 MOVLW 0x0 -007c20 23de ADDWFC 0xde,0x1,0x1 -007c22 52e5 MOVF 0xe5,0x1,0x0 -007c24 50e7 MOVF 0xe7,0x0,0x0 -007c26 6eef MOVWF 0xef,0x0 -007c28 06df DECF 0xdf,0x1,0x0 byteToSend--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007c2a 0012 RETURN 0x0 +007520 c5d1 MOVFF 0x5d1,0xff6 *pDst++ = *inPipes[0].pSrc.bRom++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007522 fff6 +007524 c5d2 MOVFF 0x5d2,0xff7 +007526 fff7 +007528 2bd1 INCF 0xd1,0x1,0x1 +00752a 0e00 MOVLW 0x0 +00752c 23d2 ADDWFC 0xd2,0x1,0x1 +00752e 0008 TBLRD +007530 50f5 MOVF 0xf5,0x0,0x0 +007532 db57 RCALL 0x7be2 +007be2 6ee6 MOVWF 0xe6,0x0 +007be4 c5dd MOVFF 0x5dd,0xfe9 +007be6 ffe9 +007be8 c5de MOVFF 0x5de,0xfea +007bea ffea +007bec 2bdd INCF 0xdd,0x1,0x1 +007bee 0e00 MOVLW 0x0 +007bf0 23de ADDWFC 0xde,0x1,0x1 +007bf2 52e5 MOVF 0xe5,0x1,0x0 +007bf4 50e7 MOVF 0xe7,0x0,0x0 +007bf6 6eef MOVWF 0xef,0x0 +007bf8 06df DECF 0xdf,0x1,0x0 byteToSend--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007bfa 0012 RETURN 0x0 }//end while(byte_to_send.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c else // RAM D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007566 50df MOVF 0xdf,0x0,0x0 while(byteToSend) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007568 e00a BZ 0x757e -00757c d7f4 BRA 0x7566 +007536 50df MOVF 0xdf,0x0,0x0 while(byteToSend) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007538 e00a BZ 0x754e +00754c d7f4 BRA 0x7536 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00756a c5d1 MOVFF 0x5d1,0xfe9 *pDst++ = *inPipes[0].pSrc.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00756c ffe9 -00756e c5d2 MOVFF 0x5d2,0xfea -007570 ffea -007572 2bd1 INCF 0xd1,0x1,0x1 -007574 0e00 MOVLW 0x0 -007576 23d2 ADDWFC 0xd2,0x1,0x1 -007578 50ef MOVF 0xef,0x0,0x0 -00757a db4b RCALL 0x7c12 +00753a c5d1 MOVFF 0x5d1,0xfe9 *pDst++ = *inPipes[0].pSrc.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00753c ffe9 +00753e c5d2 MOVFF 0x5d2,0xfea +007540 ffea +007542 2bd1 INCF 0xd1,0x1,0x1 +007544 0e00 MOVLW 0x0 +007546 23d2 ADDWFC 0xd2,0x1,0x1 +007548 50ef MOVF 0xef,0x0,0x0 +00754a db4b RCALL 0x7be2 byteToSend--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end while(byte_to_send.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if(usb_stat.ctrl_trf_mem == _ROM) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00757e 52e5 MOVF 0xe5,0x1,0x0 }//end USBCtrlTrfTxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007580 d30a BRA 0x7b96 +00754e 52e5 MOVF 0xe5,0x1,0x0 }//end USBCtrlTrfTxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007550 d30a BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBCtrlTrfRxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2800,135 +2800,135 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007582 dba9 RCALL 0x7cd6 static void USBCtrlTrfRxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007552 dba9 RCALL 0x7ca6 static void USBCtrlTrfRxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE byteToRead; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Load byteToRead with the number of bytes the host just sent us in the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //last OUT transaction. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007584 db14 RCALL 0x7bae byteToRead = pBDTEntryEP0OutCurrent->CNT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007586 52ee MOVF 0xee,0x1,0x0 -007588 cfef MOVFF 0xfef,0xfdf -00758a ffdf +007554 db14 RCALL 0x7b7e byteToRead = pBDTEntryEP0OutCurrent->CNT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007556 52ee MOVF 0xee,0x1,0x0 +007558 cfef MOVFF 0xfef,0xfdf +00755a ffdf D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Update the "outPipes[0].wCount.Val", which keeps track of the total number D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //of remaining bytes expected to be received from the host, in the control D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //transfer. First check to see if the host sent us more bytes than the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //application firmware was expecting to receive. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00758c cfdf MOVFF 0xfdf,0x4e if(byteToRead > outPipes[0].wCount.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00758e f04e -007590 504e MOVF 0x4e,0x0,0x0 -007592 0105 MOVLB 0x5 -007594 5dd9 SUBWF 0xd9,0x0,0x1 -007596 0e00 MOVLW 0x0 -007598 59da SUBWFB 0xda,0x0,0x1 -00759a e202 BC 0x75a0 +00755c cfdf MOVFF 0xfdf,0x4e if(byteToRead > outPipes[0].wCount.Val) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00755e f04e +007560 504e MOVF 0x4e,0x0,0x0 +007562 0105 MOVLB 0x5 +007564 5dd9 SUBWF 0xd9,0x0,0x1 +007566 0e00 MOVLW 0x0 +007568 59da SUBWFB 0xda,0x0,0x1 +00756a e202 BC 0x7570 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00759c c5d9 MOVFF 0x5d9,0xfdf byteToRead = outPipes[0].wCount.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00759e ffdf +00756c c5d9 MOVFF 0x5d9,0xfdf byteToRead = outPipes[0].wCount.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00756e ffdf } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Reduce the number of remaining bytes by the number we just received. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0075a0 50df MOVF 0xdf,0x0,0x0 outPipes[0].wCount.Val = outPipes[0].wCount.Val - byteToRead; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0075a2 6e4e MOVWF 0x4e,0x0 -0075a4 6a4f CLRF 0x4f,0x0 -0075a6 50e8 MOVF 0xe8,0x0,0x0 -0075a8 5dd9 SUBWF 0xd9,0x0,0x1 -0075aa 6fd9 MOVWF 0xd9,0x1 -0075ac 504f MOVF 0x4f,0x0,0x0 -0075ae 59da SUBWFB 0xda,0x0,0x1 -0075b0 6fda MOVWF 0xda,0x1 +007570 50df MOVF 0xdf,0x0,0x0 outPipes[0].wCount.Val = outPipes[0].wCount.Val - byteToRead; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007572 6e4e MOVWF 0x4e,0x0 +007574 6a4f CLRF 0x4f,0x0 +007576 50e8 MOVF 0xe8,0x0,0x0 +007578 5dd9 SUBWF 0xd9,0x0,0x1 +00757a 6fd9 MOVWF 0xd9,0x1 +00757c 504f MOVF 0x4f,0x0,0x0 +00757e 59da SUBWFB 0xda,0x0,0x1 +007580 6fda MOVWF 0xda,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Copy the OUT DATAx packet bytes that we just received from the host, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //into the user application buffer space. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0075b2 0e01 MOVLW 0x1 for(i=0;i 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0075f4 80d8 BSF 0xd8,0x0,0x0 -0075f6 55d9 SUBFWB 0xd9,0x0,0x1 -0075f8 0e00 MOVLW 0x0 -0075fa 55da SUBFWB 0xda,0x0,0x1 -0075fc e20d BC 0x7618 +0075c2 0e00 MOVLW 0x0 if(outPipes[0].wCount.Val > 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075c4 80d8 BSF 0xd8,0x0,0x0 +0075c6 55d9 SUBFWB 0xd9,0x0,0x1 +0075c8 0e00 MOVLW 0x0 +0075ca 55da SUBFWB 0xda,0x0,0x1 +0075cc e20d BC 0x75e8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0075fe dbc0 RCALL 0x7d80 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007d80 df93 RCALL 0x7ca8 -007d82 52ee MOVF 0xee,0x1,0x0 -007d84 0e40 MOVLW 0x40 -007d86 6eef MOVWF 0xef,0x0 -007600 dadb RCALL 0x7bb8 pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007d88 ef54 GOTO 0x7ca8 -007d8a f03e -007602 dad5 RCALL 0x7bae if(pBDTEntryEP0OutCurrent->STAT.DTS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007604 50ef MOVF 0xef,0x0,0x0 -007606 0b40 ANDLW 0x40 -007608 e103 BNZ 0x7610 +0075ce dbc0 RCALL 0x7d50 pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007d50 df93 RCALL 0x7c78 +007d52 52ee MOVF 0xee,0x1,0x0 +007d54 0e40 MOVLW 0x40 +007d56 6eef MOVWF 0xef,0x0 +0075d0 dadb RCALL 0x7b88 pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007d58 ef3c GOTO 0x7c78 +007d5a f03e +0075d2 dad5 RCALL 0x7b7e if(pBDTEntryEP0OutCurrent->STAT.DTS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075d4 50ef MOVF 0xef,0x0,0x0 +0075d6 0b40 ANDLW 0x40 +0075d8 e103 BNZ 0x75e0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00760a db4e RCALL 0x7ca8 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00760c 0ec8 MOVLW 0xc8 +0075da db4e RCALL 0x7c78 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075dc 0ec8 MOVLW 0xc8 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00760e d002 BRA 0x7614 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075de d002 BRA 0x75e4 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007610 db4b RCALL 0x7ca8 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007612 0e88 MOVLW 0x88 -007614 6eef MOVWF 0xef,0x0 +0075e0 db4b RCALL 0x7c78 pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075e2 0e88 MOVLW 0x88 +0075e4 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007616 d012 BRA 0x763c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075e6 d012 BRA 0x760c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //We have received all OUT packets that we were expecting to D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //receive for the control transfer. Prepare EP0 OUT to receive D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the next SETUP transaction that may arrive. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007618 daa2 RCALL 0x7b5e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075e8 daa2 RCALL 0x7b2e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Configure EP0 OUT to receive the next SETUP transaction for any future D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //control transfers. However, set BSTALL in case the host tries to send D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //more data than it claims it was going to send. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00761a 0e84 MOVLW 0x84 pBDTEntryEP0OutNext->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00761c 6eef MOVWF 0xef,0x0 +0075ea 0e84 MOVLW 0x84 pBDTEntryEP0OutNext->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075ec 6eef MOVWF 0xef,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //All data bytes for the host to device control write (OUT) have now been D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //received successfully. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Go ahead and call the user specified callback function, to use/consume D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the control transfer data (ex: if the "void (*function)" parameter D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //was non-NULL when USBEP0Receive() was called). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00761e 51db MOVF 0xdb,0x0,0x1 if(outPipes[0].pFunc != NULL) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007620 11dc IORWF 0xdc,0x0,0x1 -007622 e007 BZ 0x7632 +0075ee 51db MOVF 0xdb,0x0,0x1 if(outPipes[0].pFunc != NULL) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075f0 11dc IORWF 0xdc,0x0,0x1 +0075f2 e007 BZ 0x7602 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(__XC8) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Special pragmas to suppress an expected/harmless warning D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2938,17 +2938,17 @@ Address Value Disassembly Source outPipes[0].pFunc(); //Call the user's callback function D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #pragma warning pop D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007624 d005 BRA 0x7630 outPipes[0].pFunc(); //Call the user's callback function D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007626 c5dc MOVFF 0x5dc,0xffa -007628 fffa -00762a 0105 MOVLB 0x5 -00762c 51db MOVF 0xdb,0x0,0x1 -00762e 6ef9 MOVWF 0xf9,0x0 -007630 dffa RCALL 0x7626 +0075f4 d005 BRA 0x7600 outPipes[0].pFunc(); //Call the user's callback function D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0075f6 c5dc MOVFF 0x5dc,0xffa +0075f8 fffa +0075fa 0105 MOVLB 0x5 +0075fc 51db MOVF 0xdb,0x0,0x1 +0075fe 6ef9 MOVWF 0xf9,0x0 +007600 dffa RCALL 0x75f6 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007632 0105 MOVLB 0x5 outPipes[0].info.bits.busy = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007634 9fd8 BCF 0xd8,0x7,0x1 +007602 0105 MOVLB 0x5 outPipes[0].info.bits.busy = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007604 9fd8 BCF 0xd8,0x7,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Ready to arm status stage IN transaction now, if the application D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //firmware has completed processing the request. If it is still busy D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2962,20 +2962,20 @@ Address Value Disassembly Source //means either 50ms, 500ms, or 5 seconds, depending on the type of D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //control transfer. See the USB 2.0 specification section 9.2.6 for D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //more details. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007636 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007638 e101 BNZ 0x763c +007606 51eb MOVF 0xeb,0x0,0x1 if(USBDeferStatusStagePacket == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007608 e101 BNZ 0x760c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00763a dec3 RCALL 0x73c2 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00760a dec3 RCALL 0x7392 USBCtrlEPAllowStatusStage(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00763c 0e02 MOVLW 0x2 }//end USBCtrlTrfRxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00763e 5ce1 SUBWF 0xe1,0x0,0x0 -007640 e202 BC 0x7646 -007642 6ae1 CLRF 0xe1,0x0 -007644 52e5 MOVF 0xe5,0x1,0x0 -007646 6ee1 MOVWF 0xe1,0x0 -007648 d2a6 BRA 0x7b96 +00760c 0e02 MOVLW 0x2 }//end USBCtrlTrfRxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00760e 5ce1 SUBWF 0xe1,0x0,0x0 +007610 e202 BC 0x7616 +007612 6ae1 CLRF 0xe1,0x0 +007614 52e5 MOVF 0xe5,0x1,0x0 +007616 6ee1 MOVWF 0xe1,0x0 +007618 d2a6 BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -2996,112 +2996,112 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00764a db74 RCALL 0x7d34 static void USBStdSetCfgHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00761a db74 RCALL 0x7d04 static void USBStdSetCfgHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // This will generate a zero length packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00764c 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00764e 8fd3 BSF 0xd3,0x7,0x1 +00761c 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00761e 8fd3 BSF 0xd3,0x7,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear all of the endpoint control registers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007650 db50 RCALL 0x7cf2 DisableNonZeroEndpoints(USB_MAX_EP_NUMBER); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007620 db50 RCALL 0x7cc2 DisableNonZeroEndpoints(USB_MAX_EP_NUMBER); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear all of the BDT entries D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007652 0e30 MOVLW 0x30 memset((void*)&BDT[0], 0x00, sizeof(BDT)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007654 6ee6 MOVWF 0xe6,0x0 -007656 6ae6 CLRF 0xe6,0x0 -007658 6ae6 CLRF 0xe6,0x0 -00765a 0e00 MOVLW 0x0 -00765c 6ee6 MOVWF 0xe6,0x0 -00765e 0e04 MOVLW 0x4 -007660 dab1 RCALL 0x7bc4 +007622 0e30 MOVLW 0x30 memset((void*)&BDT[0], 0x00, sizeof(BDT)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007624 6ee6 MOVWF 0xe6,0x0 +007626 6ae6 CLRF 0xe6,0x0 +007628 6ae6 CLRF 0xe6,0x0 +00762a 0e00 MOVLW 0x0 +00762c 6ee6 MOVWF 0xe6,0x0 +00762e 0e04 MOVLW 0x4 +007630 dab1 RCALL 0x7b94 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Assert reset request to all of the Ping Pong buffer pointers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007662 8c65 BSF 0x65,0x6,0x0 USBPingPongBufferReset = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007632 8c65 BSF 0x65,0x6,0x0 USBPingPongBufferReset = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Re-Initialize all ping pong software state bits to 0 (which corresponds to D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the EVEN buffer being the next one that will be used), since we are also D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //doing a hardware ping pong pointer reset above. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007664 6adf CLRF 0xdf,0x0 for(i = 0; i < (BYTE)(USB_MAX_EP_NUMBER+1u); i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007666 0e03 MOVLW 0x3 -007668 5cdf SUBWF 0xdf,0x0,0x0 -00766a e202 BC 0x7670 -00766e d7fb BRA 0x7666 +007634 6adf CLRF 0xdf,0x0 for(i = 0; i < (BYTE)(USB_MAX_EP_NUMBER+1u); i++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007636 0e03 MOVLW 0x3 +007638 5cdf SUBWF 0xdf,0x0,0x0 +00763a e202 BC 0x7640 +00763e d7fb BRA 0x7636 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00766c dac2 RCALL 0x7bf2 ep_data_in[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00763c dac2 RCALL 0x7bc2 ep_data_in[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c ep_data_out[i].Val = 0u; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //clear the alternate interface settings D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007670 0e01 MOVLW 0x1 memset((void*)&USBAlternateInterface,0x00,USB_MAX_NUM_INT); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007672 6ee6 MOVWF 0xe6,0x0 -007674 6ae6 CLRF 0xe6,0x0 -007676 6ae6 CLRF 0xe6,0x0 -007678 0ebe MOVLW 0xbe -00767a 6ee6 MOVWF 0xe6,0x0 -00767c 0e05 MOVLW 0x5 -00767e daa2 RCALL 0x7bc4 -007bc4 6ee6 MOVWF 0xe6,0x0 -007bc6 ec12 CALL 0x9824,0x0 -007bc8 f04c -007bca 6e4e MOVWF 0x4e,0x0 -007bcc 0e05 MOVLW 0x5 -007bce 5ee1 SUBWF 0xe1,0x1,0x0 -007bd0 504e MOVF 0x4e,0x0,0x0 -007bd2 0012 RETURN 0x0 +007640 0e01 MOVLW 0x1 memset((void*)&USBAlternateInterface,0x00,USB_MAX_NUM_INT); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007642 6ee6 MOVWF 0xe6,0x0 +007644 6ae6 CLRF 0xe6,0x0 +007646 6ae6 CLRF 0xe6,0x0 +007648 0ebe MOVLW 0xbe +00764a 6ee6 MOVWF 0xe6,0x0 +00764c 0e05 MOVLW 0x5 +00764e daa2 RCALL 0x7b94 +007b94 6ee6 MOVWF 0xe6,0x0 +007b96 ecf9 CALL 0x97f2,0x0 +007b98 f04b +007b9a 6e4e MOVWF 0x4e,0x0 +007b9c 0e05 MOVLW 0x5 +007b9e 5ee1 SUBWF 0xe1,0x1,0x0 +007ba0 504e MOVF 0x4e,0x0,0x0 +007ba2 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Stop trying to reset ping pong buffer pointers D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007680 9c65 BCF 0x65,0x6,0x0 USBPingPongBufferReset = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007650 9c65 BCF 0x65,0x6,0x0 USBPingPongBufferReset = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007682 0105 MOVLB 0x5 pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[EP0_IN_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007684 0e08 MOVLW 0x8 -007686 6fc9 MOVWF 0xc9,0x1 -007688 0e04 MOVLW 0x4 -00768a 6fca MOVWF 0xca,0x1 +007652 0105 MOVLB 0x5 pBDTEntryIn[0] = (volatile BDT_ENTRY*)&BDT[EP0_IN_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007654 0e08 MOVLW 0x8 +007656 6fc9 MOVWF 0xc9,0x1 +007658 0e04 MOVLW 0x4 +00765a 6fca MOVWF 0xca,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Set the next out to the current out packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00768c 0e00 MOVLW 0x0 pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[EP0_OUT_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00768e 6fbf MOVWF 0xbf,0x1 -007690 0e04 MOVLW 0x4 -007692 6fc0 MOVWF 0xc0,0x1 -007694 c5bf MOVFF 0x5bf,0x5c1 pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007696 f5c1 -007698 6fc2 MOVWF 0xc2,0x1 +00765c 0e00 MOVLW 0x0 pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[EP0_OUT_EVEN]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00765e 6fbf MOVWF 0xbf,0x1 +007660 0e04 MOVLW 0x4 +007662 6fc0 MOVWF 0xc0,0x1 +007664 c5bf MOVFF 0x5bf,0x5c1 pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007666 f5c1 +007668 6fc2 MOVWF 0xc2,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //set the current configuration D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00769a c432 MOVFF 0x432,0x5bd USBActiveConfiguration = SetupPkt.bConfigurationValue; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00769c f5bd +00766a c432 MOVFF 0x432,0x5bd USBActiveConfiguration = SetupPkt.bConfigurationValue; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00766c f5bd D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //if the configuration value == 0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00769e 51bd MOVF 0xbd,0x0,0x1 if(USBActiveConfiguration == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076a0 e102 BNZ 0x76a6 +00766e 51bd MOVF 0xbd,0x0,0x1 if(USBActiveConfiguration == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007670 e102 BNZ 0x7676 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Go back to the addressed state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076a2 0e10 MOVLW 0x10 USBDeviceState = ADDRESS_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007672 0e10 MOVLW 0x10 USBDeviceState = ADDRESS_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076a4 d00b BRA 0x76bc else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007674 d00b BRA 0x768c else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //initialize the required endpoints D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076a6 0e01 MOVLW 0x1 USB_SET_CONFIGURATION_HANDLER(EVENT_CONFIGURED,(void*)&USBActiveConfiguration,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076a8 6ee6 MOVWF 0xe6,0x0 -0076aa 6ae6 CLRF 0xe6,0x0 -0076ac 0ebd MOVLW 0xbd -0076ae 6ee6 MOVWF 0xe6,0x0 -0076b0 0e05 MOVLW 0x5 -0076b2 6ee6 MOVWF 0xe6,0x0 -0076b4 0e01 MOVLW 0x1 -0076b6 da5c RCALL 0x7b70 +007676 0e01 MOVLW 0x1 USB_SET_CONFIGURATION_HANDLER(EVENT_CONFIGURED,(void*)&USBActiveConfiguration,1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007678 6ee6 MOVWF 0xe6,0x0 +00767a 6ae6 CLRF 0xe6,0x0 +00767c 0ebd MOVLW 0xbd +00767e 6ee6 MOVWF 0xe6,0x0 +007680 0e05 MOVLW 0x5 +007682 6ee6 MOVWF 0xe6,0x0 +007684 0e01 MOVLW 0x1 +007686 da5c RCALL 0x7b40 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Otherwise go to the configured state. Update the state variable last, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //after performing all of the set configuration related initialization D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //tasks. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076b8 0105 MOVLB 0x5 USBDeviceState = CONFIGURED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076ba 0e20 MOVLW 0x20 -0076bc 6fbc MOVWF 0xbc,0x1 +007688 0105 MOVLB 0x5 USBDeviceState = CONFIGURED_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00768a 0e20 MOVLW 0x20 +00768c 6fbc MOVWF 0xbc,0x1 }//end if(SetupPkt.bConfigurationValue == 0) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076be 52e5 MOVF 0xe5,0x1,0x0 }//end USBStdSetCfgHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076c0 d26a BRA 0x7b96 +00768e 52e5 MOVF 0xe5,0x1,0x0 }//end USBStdSetCfgHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007690 d26a BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3122,114 +3122,114 @@ Address Value Disassembly Source *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c static void USBStdGetDscHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076c2 0e80 MOVLW 0x80 if(SetupPkt.bmRequestType == 0x80) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076c4 0104 MOVLB 0x4 -0076c6 5d30 SUBWF 0x30,0x0,0x1 -0076c8 e14e BNZ 0x7766 +007692 0e80 MOVLW 0x80 if(SetupPkt.bmRequestType == 0x80) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007694 0104 MOVLB 0x4 +007696 5d30 SUBWF 0x30,0x0,0x1 +007698 e14e BNZ 0x7736 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076ca 0105 MOVLB 0x5 inPipes[0].info.Val = USB_EP0_ROM | USB_EP0_BUSY | USB_EP0_INCLUDE_ZERO; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076cc 0ec0 MOVLW 0xc0 -0076ce 6fd3 MOVWF 0xd3,0x1 +00769a 0105 MOVLB 0x5 inPipes[0].info.Val = USB_EP0_ROM | USB_EP0_BUSY | USB_EP0_INCLUDE_ZERO; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00769c 0ec0 MOVLW 0xc0 +00769e 6fd3 MOVWF 0xd3,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076d0 0104 MOVLB 0x4 switch(SetupPkt.bDescriptorType) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076d2 5133 MOVF 0x33,0x0,0x1 -0076d4 0a03 XORLW 0x3 -0076d6 e025 BZ 0x7722 -0076d8 0a01 XORLW 0x1 -0076da e009 BZ 0x76ee -0076dc 0a03 XORLW 0x3 -0076de e141 BNZ 0x7762 +0076a0 0104 MOVLB 0x4 switch(SetupPkt.bDescriptorType) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076a2 5133 MOVF 0x33,0x0,0x1 +0076a4 0a03 XORLW 0x3 +0076a6 e025 BZ 0x76f2 +0076a8 0a01 XORLW 0x1 +0076aa e009 BZ 0x76be +0076ac 0a03 XORLW 0x3 +0076ae e141 BNZ 0x7732 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_DESCRIPTOR_DEVICE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if !defined(USB_USER_DEVICE_DESCRIPTOR) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c inPipes[0].pSrc.bRom = (ROM BYTE*)&device_dsc; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076e0 0105 MOVLB 0x5 inPipes[0].pSrc.bRom = (ROM BYTE*)USB_USER_DEVICE_DESCRIPTOR; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076e2 0e84 MOVLW 0x84 -0076e4 6fd1 MOVWF 0xd1,0x1 -0076e6 0e97 MOVLW 0x97 -0076e8 6fd2 MOVWF 0xd2,0x1 +0076b0 0105 MOVLB 0x5 inPipes[0].pSrc.bRom = (ROM BYTE*)USB_USER_DEVICE_DESCRIPTOR; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076b2 0e52 MOVLW 0x52 +0076b4 6fd1 MOVWF 0xd1,0x1 +0076b6 0e97 MOVLW 0x97 +0076b8 6fd2 MOVWF 0xd2,0x1 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076ea 0e12 MOVLW 0x12 inPipes[0].wCount.Val = sizeof(device_dsc); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076ec d034 BRA 0x7756 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076ba 0e12 MOVLW 0x12 inPipes[0].wCount.Val = sizeof(device_dsc); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076bc d034 BRA 0x7726 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_DESCRIPTOR_CONFIGURATION: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if !defined(USB_USER_CONFIG_DESCRIPTOR) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c inPipes[0].pSrc.bRom = *(USB_CD_Ptr+SetupPkt.bDscIndex); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076ee 5132 MOVF 0x32,0x0,0x1 inPipes[0].pSrc.bRom = *(USB_USER_CONFIG_DESCRIPTOR+SetupPkt.bDscIndex); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0076f0 6ef6 MOVWF 0xf6,0x0 -0076f2 6af7 CLRF 0xf7,0x0 -0076f4 90d8 BCF 0xd8,0x0,0x0 -0076f6 36f6 RLCF 0xf6,0x1,0x0 -0076f8 36f7 RLCF 0xf7,0x1,0x0 -0076fa 0ed9 MOVLW 0xd9 -0076fc 26f6 ADDWF 0xf6,0x1,0x0 -0076fe 0e97 MOVLW 0x97 -007700 22f7 ADDWFC 0xf7,0x1,0x0 -007702 0009 TBLRDPOSTINC -007704 cff5 MOVFF 0xff5,0x5d1 -007706 f5d1 -007708 000a TBLRDPOSTDEC -00770a cff5 MOVFF 0xff5,0x5d2 -00770c f5d2 +0076be 5132 MOVF 0x32,0x0,0x1 inPipes[0].pSrc.bRom = *(USB_USER_CONFIG_DESCRIPTOR+SetupPkt.bDscIndex); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076c0 6ef6 MOVWF 0xf6,0x0 +0076c2 6af7 CLRF 0xf7,0x0 +0076c4 90d8 BCF 0xd8,0x0,0x0 +0076c6 36f6 RLCF 0xf6,0x1,0x0 +0076c8 36f7 RLCF 0xf7,0x1,0x0 +0076ca 0ea7 MOVLW 0xa7 +0076cc 26f6 ADDWF 0xf6,0x1,0x0 +0076ce 0e97 MOVLW 0x97 +0076d0 22f7 ADDWFC 0xf7,0x1,0x0 +0076d2 0009 TBLRDPOSTINC +0076d4 cff5 MOVFF 0xff5,0x5d1 +0076d6 f5d1 +0076d8 000a TBLRDPOSTDEC +0076da cff5 MOVFF 0xff5,0x5d2 +0076dc f5d2 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //This must be loaded using byte addressing. The source pointer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // may not be word aligned for the 16 or 32 bit machines resulting D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // in an address error on the dereference. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00770e 0e02 MOVLW 0x2 inPipes[0].wCount.byte.LB = *(inPipes[0].pSrc.bRom+2); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007710 0105 MOVLB 0x5 -007712 dabc RCALL 0x7c8c -007714 cff5 MOVFF 0xff5,0x5d4 -007716 f5d4 -007c8c 6af7 CLRF 0xf7,0x0 -007c8e 25d1 ADDWF 0xd1,0x0,0x1 -007c90 6ef6 MOVWF 0xf6,0x0 -007c92 51d2 MOVF 0xd2,0x0,0x1 -007c94 22f7 ADDWFC 0xf7,0x1,0x0 -007c96 0008 TBLRD -007c98 0012 RETURN 0x0 -007718 0e03 MOVLW 0x3 inPipes[0].wCount.byte.HB = *(inPipes[0].pSrc.bRom+3); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00771a dab8 RCALL 0x7c8c -00771c cff5 MOVFF 0xff5,0x5d5 -00771e f5d5 -007720 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076de 0e02 MOVLW 0x2 inPipes[0].wCount.byte.LB = *(inPipes[0].pSrc.bRom+2); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076e0 0105 MOVLB 0x5 +0076e2 dabc RCALL 0x7c5c +0076e4 cff5 MOVFF 0xff5,0x5d4 +0076e6 f5d4 +007c5c 6af7 CLRF 0xf7,0x0 +007c5e 25d1 ADDWF 0xd1,0x0,0x1 +007c60 6ef6 MOVWF 0xf6,0x0 +007c62 51d2 MOVF 0xd2,0x0,0x1 +007c64 22f7 ADDWFC 0xf7,0x1,0x0 +007c66 0008 TBLRD +007c68 0012 RETURN 0x0 +0076e8 0e03 MOVLW 0x3 inPipes[0].wCount.byte.HB = *(inPipes[0].pSrc.bRom+3); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0076ea dab8 RCALL 0x7c5c +0076ec cff5 MOVFF 0xff5,0x5d5 +0076ee f5d5 +0076f0 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_DESCRIPTOR_STRING: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //USB_NUM_STRING_DESCRIPTORS was introduced as optional in release v2.3. In v2.4 and D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // later it is now manditory. This should be defined in usb_config.h and should D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // indicate the number of string descriptors. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007722 0e04 MOVLW 0x4 if(SetupPkt.bDscIndexSTAT.UOWN == 1u) && (p->STAT.BSTALL == 1u)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077ae e006 BZ 0x77bc -0077b0 d9e3 RCALL 0x7b78 -0077b2 50ef MOVF 0xef,0x0,0x0 -0077b4 0b04 ANDLW 0x4 -0077b6 e002 BZ 0x77bc -0077b8 0e01 MOVLW 0x1 CtrlTrfData[0]=0x01; // Set bit0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077ba 6f38 MOVWF 0x38,0x1 +00777c dabf RCALL 0x7cfc if((p->STAT.UOWN == 1u) && (p->STAT.BSTALL == 1u)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00777e e006 BZ 0x778c +007780 d9e3 RCALL 0x7b48 +007782 50ef MOVF 0xef,0x0,0x0 +007784 0b04 ANDLW 0x4 +007786 e002 BZ 0x778c +007788 0e01 MOVLW 0x1 CtrlTrfData[0]=0x01; // Set bit0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00778a 6f38 MOVWF 0x38,0x1 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end switch D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077bc 0105 MOVLB 0x5 if(inPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077be afd3 BTFSS 0xd3,0x7,0x1 -0077c0 d007 BRA 0x77d0 +00778c 0105 MOVLB 0x5 if(inPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00778e afd3 BTFSS 0xd3,0x7,0x1 +007790 d007 BRA 0x77a0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077c2 0e38 MOVLW 0x38 inPipes[0].pSrc.bRam = (BYTE*)&CtrlTrfData; // Set Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077c4 6fd1 MOVWF 0xd1,0x1 -0077c6 0e04 MOVLW 0x4 -0077c8 6fd2 MOVWF 0xd2,0x1 -0077ca 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; // Set memory type D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077cc 0e02 MOVLW 0x2 inPipes[0].wCount.v[0] = 2; // Set data count D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077ce 6fd4 MOVWF 0xd4,0x1 +007792 0e38 MOVLW 0x38 inPipes[0].pSrc.bRam = (BYTE*)&CtrlTrfData; // Set Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007794 6fd1 MOVWF 0xd1,0x1 +007796 0e04 MOVLW 0x4 +007798 6fd2 MOVWF 0xd2,0x1 +00779a 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; // Set memory type D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00779c 0e02 MOVLW 0x2 inPipes[0].wCount.v[0] = 2; // Set data count D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00779e 6fd4 MOVWF 0xd4,0x1 }//end if(...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077d0 0e02 MOVLW 0x2 }//end USBStdGetStatusHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077d2 5ce1 SUBWF 0xe1,0x0,0x0 -0077d4 e202 BC 0x77da -0077d6 6ae1 CLRF 0xe1,0x0 -0077d8 52e5 MOVF 0xe5,0x1,0x0 -0077da 6ee1 MOVWF 0xe1,0x0 -0077dc d1dc BRA 0x7b96 +0077a0 0e02 MOVLW 0x2 }//end USBStdGetStatusHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077a2 5ce1 SUBWF 0xe1,0x0,0x0 +0077a4 e202 BC 0x77aa +0077a6 6ae1 CLRF 0xe1,0x0 +0077a8 52e5 MOVF 0xe5,0x1,0x0 +0077aa 6ee1 MOVWF 0xe1,0x0 +0077ac d1dc BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBStallHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3391,30 +3391,30 @@ Address Value Disassembly Source */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* v2b fix */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077de 010f MOVLB 0xf if(U1EP0bits.EPSTALL == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077e0 a126 BTFSS 0x26,0x0,0x1 -0077e2 d00c BRA 0x77fc +0077ae 010f MOVLB 0xf if(U1EP0bits.EPSTALL == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077b0 a126 BTFSS 0x26,0x0,0x1 +0077b2 d00c BRA 0x77cc { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // UOWN - if 0, owned by CPU, if 1, owned by SIE D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077e4 d9e4 RCALL 0x7bae if((pBDTEntryEP0OutCurrent->STAT.Val == _USIE) && (pBDTEntryIn[0]->STAT.Val == (_USIE|_BSTALL))) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077e6 50ef MOVF 0xef,0x0,0x0 -0077e8 0880 SUBLW 0x80 -0077ea e107 BNZ 0x77fa -0077ec d9ca RCALL 0x7b82 -0077ee 50ef MOVF 0xef,0x0,0x0 -0077f0 0884 SUBLW 0x84 -0077f2 e103 BNZ 0x77fa +0077b4 d9e4 RCALL 0x7b7e if((pBDTEntryEP0OutCurrent->STAT.Val == _USIE) && (pBDTEntryIn[0]->STAT.Val == (_USIE|_BSTALL))) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077b6 50ef MOVF 0xef,0x0,0x0 +0077b8 0880 SUBLW 0x80 +0077ba e107 BNZ 0x77ca +0077bc d9ca RCALL 0x7b52 +0077be 50ef MOVF 0xef,0x0,0x0 +0077c0 0884 SUBLW 0x84 +0077c2 e103 BNZ 0x77ca { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // Set ep0Bo to stall also D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077f4 d9dc RCALL 0x7bae pBDTEntryEP0OutCurrent->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077f6 0e8c MOVLW 0x8c -0077f8 6eef MOVWF 0xef,0x0 +0077c4 d9dc RCALL 0x7b7e pBDTEntryEP0OutCurrent->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077c6 0e8c MOVLW 0x8c +0077c8 6eef MOVWF 0xef,0x0 }//end if D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077fa 9126 BCF 0x26,0x0,0x1 U1EP0bits.EPSTALL = 0; // Clear stall status D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077ca 9126 BCF 0x26,0x0,0x1 U1EP0bits.EPSTALL = 0; // Clear stall status D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077fc 9a62 BCF 0x62,0x5,0x0 USBClearInterruptFlag(USBStallIFReg,USBStallIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0077fe 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077cc 9a62 BCF 0x62,0x5,0x0 USBClearInterruptFlag(USBStallIFReg,USBStallIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077ce 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBSuspend(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3457,27 +3457,27 @@ Address Value Disassembly Source * then it can never get out of the suspend D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * mode. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007800 010f MOVLB 0xf USBActivityIE = 1; // Enable bus activity interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007802 8536 BSF 0x36,0x2,0x1 -007804 9862 BCF 0x62,0x4,0x0 USBClearInterruptFlag(USBIdleIFReg,USBIdleIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077d0 010f MOVLB 0xf USBActivityIE = 1; // Enable bus activity interrupt D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077d2 8536 BSF 0x36,0x2,0x1 +0077d4 9862 BCF 0x62,0x4,0x0 USBClearInterruptFlag(USBIdleIFReg,USBIdleIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(__18CXX) || defined(_PIC14E) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007806 8265 BSF 0x65,0x1,0x0 U1CONbits.SUSPND = 1; // Put USB module in power conserve D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077d6 8265 BSF 0x65,0x1,0x0 U1CONbits.SUSPND = 1; // Put USB module in power conserve D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // mode, SIE clock inactive D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007808 0105 MOVLB 0x5 USBBusIsSuspended = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00780a 0e01 MOVLW 0x1 -00780c 6fe0 MOVWF 0xe0,0x1 +0077d8 0105 MOVLB 0x5 USBBusIsSuspended = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077da 0e01 MOVLW 0x1 +0077dc 6fe0 MOVWF 0xe0,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * At this point the PIC can go into sleep,idle, or D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * switch to a slower clock, etc. This should be done in the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * USBCBSuspend() if necessary. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00780e da14 RCALL 0x7c38 USB_SUSPEND_HANDLER(EVENT_SUSPEND,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007810 0e75 MOVLW 0x75 -007812 efb8 GOTO 0x7b70 -007814 f03d +0077de da14 RCALL 0x7c08 USB_SUSPEND_HANDLER(EVENT_SUSPEND,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077e0 0e75 MOVLW 0x75 +0077e2 efa0 GOTO 0x7b40 +0077e4 f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3497,29 +3497,29 @@ Address Value Disassembly Source *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c static void USBWakeFromSuspend(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007816 0105 MOVLB 0x5 USBBusIsSuspended = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007818 6be0 CLRF 0xe0,0x1 +0077e6 0105 MOVLB 0x5 USBBusIsSuspended = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077e8 6be0 CLRF 0xe0,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * If using clock switching, the place to restore the original D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * microcontroller core clock frequency is in the USBCBWakeFromSuspend() callback D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00781a da0e RCALL 0x7c38 USB_WAKEUP_FROM_SUSPEND_HANDLER(EVENT_RESUME,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00781c 0e74 MOVLW 0x74 -00781e d9a8 RCALL 0x7b70 +0077ea da0e RCALL 0x7c08 USB_WAKEUP_FROM_SUSPEND_HANDLER(EVENT_RESUME,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077ec 0e74 MOVLW 0x74 +0077ee d9a8 RCALL 0x7b40 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(__18CXX) || defined(_PIC14E) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //To avoid improperly clocking the USB module, make sure the oscillator D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //settings are consistant with USB operation before clearing the SUSPND bit. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Make sure the correct oscillator settings are selected in the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //"USB_WAKEUP_FROM_SUSPEND_HANDLER(EVENT_RESUME,0,0)" handler. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007820 9265 BCF 0x65,0x1,0x0 U1CONbits.SUSPND = 0; // Bring USB module out of power conserve D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077f0 9265 BCF 0x65,0x1,0x0 U1CONbits.SUSPND = 0; // Bring USB module out of power conserve D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // mode. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007822 010f MOVLB 0xf USBActivityIE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007824 9536 BCF 0x36,0x2,0x1 +0077f2 010f MOVLB 0xf USBActivityIE = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077f4 9536 BCF 0x36,0x2,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c Bug Fix: Feb 26, 2007 v2.1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3537,15 +3537,15 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // UIRbits.ACTVIF = 0; // Removed D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(__18CXX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007826 a462 BTFSS 0x62,0x2,0x0 while(USBActivityIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007828 d002 BRA 0x782e -00782c d7fc BRA 0x7826 +0077f6 a462 BTFSS 0x62,0x2,0x0 while(USBActivityIF) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077f8 d002 BRA 0x77fe +0077fc d7fc BRA 0x77f6 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00782a 9462 BCF 0x62,0x2,0x0 USBClearInterruptFlag(USBActivityIFReg,USBActivityIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077fa 9462 BCF 0x62,0x2,0x0 USBClearInterruptFlag(USBActivityIFReg,USBActivityIFBitNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } // Added D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00782e 0012 RETURN 0x0 }//end USBWakeFromSuspend D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0077fe 0012 RETURN 0x0 }//end USBWakeFromSuspend D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBCtrlEPService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3568,37 +3568,37 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007830 da81 RCALL 0x7d34 static void USBCtrlEPService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007800 da81 RCALL 0x7d04 static void USBCtrlEPService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If we get to here, that means a successful transaction has just occurred D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //on EP0. This means "progress" has occurred in the currently pending D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //control transfer, so we should re-initialize our timeout counter. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined(USB_ENABLE_STATUS_STAGE_TIMEOUTS) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007832 0105 MOVLB 0x5 USBStatusStageTimeoutCounter = USB_STATUS_STAGE_TIMEOUT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007834 0e2d MOVLW 0x2d -007836 6fea MOVWF 0xea,0x1 +007802 0105 MOVLB 0x5 USBStatusStageTimeoutCounter = USB_STATUS_STAGE_TIMEOUT; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007804 0e2d MOVLW 0x2d +007806 6fea MOVWF 0xea,0x1 #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if the last transaction was on EP0 OUT endpoint (of any kind, to either the even or odd buffer if ping pong buffers used) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007838 0efd MOVLW 0xfd if((USTATcopy.Val & USTAT_EP0_PP_MASK) == USTAT_EP0_OUT_EVEN) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00783a 15e1 ANDWF 0xe1,0x0,0x1 -00783c e139 BNZ 0x78b0 +007808 0efd MOVLW 0xfd if((USTATcopy.Val & USTAT_EP0_PP_MASK) == USTAT_EP0_OUT_EVEN) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00780a 15e1 ANDWF 0xe1,0x0,0x1 +00780c e139 BNZ 0x7880 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Point to the EP0 OUT buffer of the buffer that arrived D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if defined (_PIC14E) || defined(__18CXX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00783e 0e7e MOVLW 0x7e pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[(USTATcopy.Val & USTAT_EP_MASK)>>1]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007840 15e1 ANDWF 0xe1,0x0,0x1 -007842 40e8 RRNCF 0xe8,0x0,0x0 -007844 0b7f ANDLW 0x7f -007846 0d04 MULLW 0x4 -007848 cff3 MOVFF 0xff3,0x5bf -00784a f5bf -00784c cff4 MOVFF 0xff4,0x5c0 -00784e f5c0 -007850 0e00 MOVLW 0x0 -007852 27bf ADDWF 0xbf,0x1,0x1 -007854 0e04 MOVLW 0x4 -007856 23c0 ADDWFC 0xc0,0x1,0x1 +00780e 0e7e MOVLW 0x7e pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[(USTATcopy.Val & USTAT_EP_MASK)>>1]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007810 15e1 ANDWF 0xe1,0x0,0x1 +007812 40e8 RRNCF 0xe8,0x0,0x0 +007814 0b7f ANDLW 0x7f +007816 0d04 MULLW 0x4 +007818 cff3 MOVFF 0xff3,0x5bf +00781a f5bf +00781c cff4 MOVFF 0xff4,0x5c0 +00781e f5c0 +007820 0e00 MOVLW 0x0 +007822 27bf ADDWF 0xbf,0x1,0x1 +007824 0e04 MOVLW 0x4 +007826 23c0 ADDWFC 0xc0,0x1,0x1 #elif defined(__C30__) || defined(__C32__) || defined __XC16__ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pBDTEntryEP0OutCurrent = (volatile BDT_ENTRY*)&BDT[(USTATcopy.Val & USTAT_EP_MASK)>>2]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3606,21 +3606,21 @@ Address Value Disassembly Source #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Set the next out to the current out packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007858 c5bf MOVFF 0x5bf,0x5c1 pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00785a f5c1 -00785c c5c0 MOVFF 0x5c0,0x5c2 -00785e f5c2 +007828 c5bf MOVFF 0x5bf,0x5c1 pBDTEntryEP0OutNext = pBDTEntryEP0OutCurrent; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00782a f5c1 +00782c c5c0 MOVFF 0x5c0,0x5c2 +00782e f5c2 //Toggle it to the next ping pong buffer (if applicable) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007860 75c1 BTG 0xc1,0x2,0x1 ((BYTE_VAL*)&pBDTEntryEP0OutNext)->Val ^= USB_NEXT_EP0_OUT_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007830 75c1 BTG 0xc1,0x2,0x1 ((BYTE_VAL*)&pBDTEntryEP0OutNext)->Val ^= USB_NEXT_EP0_OUT_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If the current EP0 OUT buffer has a SETUP packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007862 d9a5 RCALL 0x7bae if(pBDTEntryEP0OutCurrent->STAT.PID == PID_SETUP) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007864 50ef MOVF 0xef,0x0,0x0 -007866 0b3c ANDLW 0x3c -007868 42e8 RRNCF 0xe8,0x1,0x0 -00786a 42e8 RRNCF 0xe8,0x1,0x0 -00786c 080d SUBLW 0xd -00786e e11e BNZ 0x78ac +007832 d9a5 RCALL 0x7b7e if(pBDTEntryEP0OutCurrent->STAT.PID == PID_SETUP) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007834 50ef MOVF 0xef,0x0,0x0 +007836 0b3c ANDLW 0x3c +007838 42e8 RRNCF 0xe8,0x1,0x0 +00783a 42e8 RRNCF 0xe8,0x1,0x0 +00783c 080d SUBLW 0xd +00783e e11e BNZ 0x787c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c unsigned char setup_cnt; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3628,70 +3628,70 @@ Address Value Disassembly Source //buffer, or elsewhere, depending upon how the BDT was prepared D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //before the transaction. Therefore, we should copy the data to the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //SetupPkt buffer so it can be processed correctly by USBCtrlTrfSetupHandler(). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007870 6adf CLRF 0xdf,0x0 for(setup_cnt = 0; setup_cnt < 8u; setup_cnt++) //SETUP data packets always contain exactly 8 bytes. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007872 0e08 MOVLW 0x8 -007874 5cdf SUBWF 0xdf,0x0,0x0 -007876 e216 BC 0x78a4 -0078a0 2adf INCF 0xdf,0x1,0x0 -0078a2 d7e7 BRA 0x7872 +007840 6adf CLRF 0xdf,0x0 for(setup_cnt = 0; setup_cnt < 8u; setup_cnt++) //SETUP data packets always contain exactly 8 bytes. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007842 0e08 MOVLW 0x8 +007844 5cdf SUBWF 0xdf,0x0,0x0 +007846 e216 BC 0x7874 +007870 2adf INCF 0xdf,0x1,0x0 +007872 d7e7 BRA 0x7842 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007878 d99a RCALL 0x7bae *(BYTE*)((BYTE*)&SetupPkt + setup_cnt) = *(BYTE*)ConvertToVirtualAddress(pBDTEntryEP0OutCurrent->ADR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00787a 0e02 MOVLW 0x2 -00787c 26e9 ADDWF 0xe9,0x1,0x0 -00787e 0e00 MOVLW 0x0 -007880 d9c2 RCALL 0x7c06 -007882 50ef MOVF 0xef,0x0,0x0 -007884 6ee6 MOVWF 0xe6,0x0 -007886 50df MOVF 0xdf,0x0,0x0 -007888 6aea CLRF 0xea,0x0 -00788a 0f30 ADDLW 0x30 -00788c 6ee9 MOVWF 0xe9,0x0 -00788e 0e04 MOVLW 0x4 -007890 22ea ADDWFC 0xea,0x1,0x0 -007892 52e5 MOVF 0xe5,0x1,0x0 -007894 50e7 MOVF 0xe7,0x0,0x0 -007896 6eef MOVWF 0xef,0x0 -007c06 22ea ADDWFC 0xea,0x1,0x0 -007c08 50ee MOVF 0xee,0x0,0x0 -007c0a cfef MOVFF 0xfef,0xfea -007c0c ffea -007c0e 6ee9 MOVWF 0xe9,0x0 -007c10 0012 RETURN 0x0 -007898 d98a RCALL 0x7bae pBDTEntryEP0OutCurrent->ADR++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00789a da78 RCALL 0x7d8c -00789c 2aee INCF 0xee,0x1,0x0 -00789e 22ef ADDWFC 0xef,0x1,0x0 +007848 d99a RCALL 0x7b7e *(BYTE*)((BYTE*)&SetupPkt + setup_cnt) = *(BYTE*)ConvertToVirtualAddress(pBDTEntryEP0OutCurrent->ADR); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00784a 0e02 MOVLW 0x2 +00784c 26e9 ADDWF 0xe9,0x1,0x0 +00784e 0e00 MOVLW 0x0 +007850 d9c2 RCALL 0x7bd6 +007852 50ef MOVF 0xef,0x0,0x0 +007854 6ee6 MOVWF 0xe6,0x0 +007856 50df MOVF 0xdf,0x0,0x0 +007858 6aea CLRF 0xea,0x0 +00785a 0f30 ADDLW 0x30 +00785c 6ee9 MOVWF 0xe9,0x0 +00785e 0e04 MOVLW 0x4 +007860 22ea ADDWFC 0xea,0x1,0x0 +007862 52e5 MOVF 0xe5,0x1,0x0 +007864 50e7 MOVF 0xe7,0x0,0x0 +007866 6eef MOVWF 0xef,0x0 +007bd6 22ea ADDWFC 0xea,0x1,0x0 +007bd8 50ee MOVF 0xee,0x0,0x0 +007bda cfef MOVFF 0xfef,0xfea +007bdc ffea +007bde 6ee9 MOVWF 0xe9,0x0 +007be0 0012 RETURN 0x0 +007868 d98a RCALL 0x7b7e pBDTEntryEP0OutCurrent->ADR++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00786a da78 RCALL 0x7d5c +00786c 2aee INCF 0xee,0x1,0x0 +00786e 22ef ADDWFC 0xef,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078a4 d984 RCALL 0x7bae pBDTEntryEP0OutCurrent->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078a6 da11 RCALL 0x7cca -007bae c5bf MOVFF 0x5bf,0xfe9 -007bb0 ffe9 -007bb2 c5c0 MOVFF 0x5c0,0xfea -007bb4 ffea -007bb6 0012 RETURN 0x0 +007874 d984 RCALL 0x7b7e pBDTEntryEP0OutCurrent->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007876 da11 RCALL 0x7c9a +007b7e c5bf MOVFF 0x5bf,0xfe9 +007b80 ffe9 +007b82 c5c0 MOVFF 0x5c0,0xfea +007b84 ffea +007b86 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Handle the control transfer (parse the 8-byte SETUP command and figure out what to do) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078a8 d80a RCALL 0x78be USBCtrlTrfSetupHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007878 d80a RCALL 0x788e USBCtrlTrfSetupHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078aa d007 BRA 0x78ba else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00787a d007 BRA 0x788a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Handle the DATA transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ac d823 RCALL 0x78f4 USBCtrlTrfOutHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00787c d823 RCALL 0x78c4 USBCtrlTrfOutHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ae d005 BRA 0x78ba else if((USTATcopy.Val & USTAT_EP0_PP_MASK) == USTAT_EP0_IN) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078b0 0efd MOVLW 0xfd -0078b2 15e1 ANDWF 0xe1,0x0,0x1 -0078b4 0804 SUBLW 0x4 -0078b6 e101 BNZ 0x78ba +00787e d005 BRA 0x788a else if((USTATcopy.Val & USTAT_EP0_PP_MASK) == USTAT_EP0_IN) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007880 0efd MOVLW 0xfd +007882 15e1 ANDWF 0xe1,0x0,0x1 +007884 0804 SUBLW 0x4 +007886 e101 BNZ 0x788a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Otherwise the transmission was and EP0 IN D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // so take care of the IN transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078b8 d82c RCALL 0x7912 USBCtrlTrfInHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007888 d82c RCALL 0x78e2 USBCtrlTrfInHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ba 52e5 MOVF 0xe5,0x1,0x0 }//end USBCtrlEPService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078bc d16c BRA 0x7b96 +00788a 52e5 MOVF 0xe5,0x1,0x0 }//end USBCtrlEPService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00788c d16c BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBCtrlTrfSetupHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3738,13 +3738,13 @@ Address Value Disassembly Source //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //1. Re-initialize state tracking variables related to control transfers. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078be 0105 MOVLB 0x5 shortPacketStatus = SHORT_PKT_NOT_USED; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078c0 6bcf CLRF 0xcf,0x1 -0078c2 6beb CLRF 0xeb,0x1 USBDeferStatusStagePacket = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078c4 6bee CLRF 0xee,0x1 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078c6 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078c8 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ca 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00788e 0105 MOVLB 0x5 shortPacketStatus = SHORT_PKT_NOT_USED; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007890 6bcf CLRF 0xcf,0x1 +007892 6beb CLRF 0xeb,0x1 USBDeferStatusStagePacket = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007894 6bee CLRF 0xee,0x1 USBDeferINDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007896 6bef CLRF 0xef,0x1 USBDeferOUTDataStagePackets = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007898 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00789a 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Abandon any previous control transfers that might have been using EP0. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Ordinarily, nothing actually needs abandoning, since the previous control D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3753,30 +3753,30 @@ Address Value Disassembly Source //one or more UOWN bits might still be set. If so, we should clear the UOWN bits, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //so the EP0 IN/OUT endpoints are in a known inactive state, ready for re-arming D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //by the class request handler that will be called next. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078cc d95a RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ce 9eef BCF 0xef,0x7,0x0 -0078d0 75c9 BTG 0xc9,0x2,0x1 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078d2 d957 RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078d4 9eef BCF 0xef,0x7,0x0 -0078d6 75c9 BTG 0xc9,0x2,0x1 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078d8 d9e7 RCALL 0x7ca8 pBDTEntryEP0OutNext->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078da 9eef BCF 0xef,0x7,0x0 +00789c d95a RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00789e 9eef BCF 0xef,0x7,0x0 +0078a0 75c9 BTG 0xc9,0x2,0x1 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078a2 d957 RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078a4 9eef BCF 0xef,0x7,0x0 +0078a6 75c9 BTG 0xc9,0x2,0x1 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078a8 d9e7 RCALL 0x7c78 pBDTEntryEP0OutNext->STAT.Val &= ~(_USIE); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078aa 9eef BCF 0xef,0x7,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078dc 6bd3 CLRF 0xd3,0x1 inPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078de 6bd4 CLRF 0xd4,0x1 inPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078e0 6bd5 CLRF 0xd5,0x1 -0078e2 6bd8 CLRF 0xd8,0x1 outPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078e4 6bd9 CLRF 0xd9,0x1 outPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078e6 6bda CLRF 0xda,0x1 +0078ac 6bd3 CLRF 0xd3,0x1 inPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078ae 6bd4 CLRF 0xd4,0x1 inPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078b0 6bd5 CLRF 0xd5,0x1 +0078b2 6bd8 CLRF 0xd8,0x1 outPipes[0].info.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078b4 6bd9 CLRF 0xd9,0x1 outPipes[0].wCount.Val = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078b6 6bda CLRF 0xda,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //2. Now find out what was in the SETUP packet, and begin handling the request. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078e8 d851 RCALL 0x798c USBCheckStdRequest(); //Check for standard USB "Chapter 9" requests. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ea d9a6 RCALL 0x7c38 USB_NONSTANDARD_EP0_REQUEST_HANDLER(EVENT_EP0_REQUEST,0,0); //Check for USB device class specific requests D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078ec 0e03 MOVLW 0x3 -0078ee d940 RCALL 0x7b70 +0078b8 d851 RCALL 0x795c USBCheckStdRequest(); //Check for standard USB "Chapter 9" requests. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078ba d9a6 RCALL 0x7c08 USB_NONSTANDARD_EP0_REQUEST_HANDLER(EVENT_EP0_REQUEST,0,0); //Check for USB device class specific requests D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078bc 0e03 MOVLW 0x3 +0078be d940 RCALL 0x7b40 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3789,8 +3789,8 @@ Address Value Disassembly Source // process the request. In this case, the default behavior will be to D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // perform protocol STALL on EP0. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //-------------------------------------------------------------------------- D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078f0 ef54 GOTO 0x74a8 USBCtrlEPServiceComplete(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078f2 f03a +0078c0 ef3c GOTO 0x7478 USBCtrlEPServiceComplete(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078c2 f03a }//end USBCtrlTrfSetupHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3816,58 +3816,58 @@ Address Value Disassembly Source *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c static void USBCtrlTrfOutHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078f4 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078f6 0105 MOVLB 0x5 -0078f8 5dd0 SUBWF 0xd0,0x0,0x1 -0078fa e102 BNZ 0x7900 +0078c4 0e02 MOVLW 0x2 if(controlTransferState == CTRL_TRF_RX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078c6 0105 MOVLB 0x5 +0078c8 5dd0 SUBWF 0xd0,0x0,0x1 +0078ca e102 BNZ 0x78d0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078fc efc1 GOTO 0x7582 USBCtrlTrfRxService(); //Copies the newly received data into the appropriate buffer and configures EP0 OUT for next transaction. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0078fe f03a +0078cc efa9 GOTO 0x7552 USBCtrlTrfRxService(); //Copies the newly received data into the appropriate buffer and configures EP0 OUT for next transaction. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078ce f03a } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c else //In this case the last OUT transaction must have been a status stage of a CTRL_TRF_TX (... <-- this last OUT just occurred as the status stage) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If the status stage is complete, this means we are done with the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //control transfer. Go back to the idle "WAIT_SETUP" state. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007900 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078d0 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Prepare EP0 OUT for the next SETUP transaction, however, it may have D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //already been prepared if ping-pong buffering was enabled on EP0 OUT, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //and the last control transfer was of direction: device to host, see D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //USBCtrlEPServiceComplete(). If it was already prepared, do not want D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //to do anything to the BDT. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007902 51e3 MOVF 0xe3,0x0,0x1 if(BothEP0OutUOWNsSet == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007904 e104 BNZ 0x790e +0078d2 51e3 MOVF 0xe3,0x0,0x1 if(BothEP0OutUOWNsSet == FALSE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078d4 e104 BNZ 0x78de { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007906 d92b RCALL 0x7b5e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b5e d910 RCALL 0x7d80 -007ca8 c5c1 MOVFF 0x5c1,0xfe9 -007caa ffe9 -007cac c5c2 MOVFF 0x5c2,0xfea -007cae ffea -007cb0 0012 RETURN 0x0 -007b60 d8b4 RCALL 0x7cca pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007cca d860 RCALL 0x7d8c -007ccc 0e30 MOVLW 0x30 -007cce 6eee MOVWF 0xee,0x0 -007cd0 0e04 MOVLW 0x4 -007cd2 6eed MOVWF 0xed,0x0 -007cd4 0012 RETURN 0x0 -007d8c 0e02 MOVLW 0x2 -007d8e 26e9 ADDWF 0xe9,0x1,0x0 -007d90 0e00 MOVLW 0x0 -007d92 22ea ADDWFC 0xea,0x1,0x0 -007d94 0012 RETURN 0x0 -007908 0e8c MOVLW 0x8c pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00790a 6eef MOVWF 0xef,0x0 -007b62 ef54 GOTO 0x7ca8 -007b64 f03e +0078d6 d92b RCALL 0x7b2e pBDTEntryEP0OutNext->CNT = USB_EP0_BUFF_SIZE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b2e d910 RCALL 0x7d50 +007c78 c5c1 MOVFF 0x5c1,0xfe9 +007c7a ffe9 +007c7c c5c2 MOVFF 0x5c2,0xfea +007c7e ffea +007c80 0012 RETURN 0x0 +007b30 d8b4 RCALL 0x7c9a pBDTEntryEP0OutNext->ADR = ConvertToPhysicalAddress(&SetupPkt); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007c9a d860 RCALL 0x7d5c +007c9c 0e30 MOVLW 0x30 +007c9e 6eee MOVWF 0xee,0x0 +007ca0 0e04 MOVLW 0x4 +007ca2 6eed MOVWF 0xed,0x0 +007ca4 0012 RETURN 0x0 +007d5c 0e02 MOVLW 0x2 +007d5e 26e9 ADDWF 0xe9,0x1,0x0 +007d60 0e00 MOVLW 0x0 +007d62 22ea ADDWFC 0xea,0x1,0x0 +007d64 0012 RETURN 0x0 +0078d8 0e8c MOVLW 0x8c pBDTEntryEP0OutNext->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED)|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078da 6eef MOVWF 0xef,0x0 +007b32 ef3c GOTO 0x7c78 +007b34 f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00790c 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078dc 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00790e 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078de 6be3 CLRF 0xe3,0x1 BothEP0OutUOWNsSet = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007910 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078e0 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBCtrlTrfInHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -3892,133 +3892,133 @@ Address Value Disassembly Source * usb9.h and its function is to specifically service this D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * event. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007912 da10 RCALL 0x7d34 static void USBCtrlTrfInHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b8c cfd9 MOVFF 0xfd9,0xfe6 -007b8e ffe6 -007b90 cfe1 MOVFF 0xfe1,0xfd9 -007b92 ffd9 -007b94 0012 RETURN 0x0 -007d34 df2b RCALL 0x7b8c -007d36 52e6 MOVF 0xe6,0x1,0x0 -007d38 0012 RETURN 0x0 +0078e2 da10 RCALL 0x7d04 static void USBCtrlTrfInHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b5c cfd9 MOVFF 0xfd9,0xfe6 +007b5e ffe6 +007b60 cfe1 MOVFF 0xfe1,0xfd9 +007b62 ffd9 +007b64 0012 RETURN 0x0 +007d04 df2b RCALL 0x7b5c +007d06 52e6 MOVF 0xe6,0x1,0x0 +007d08 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BYTE lastDTS; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007914 d936 RCALL 0x7b82 lastDTS = pBDTEntryIn[0]->STAT.DTS; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007916 50ef MOVF 0xef,0x0,0x0 -007918 0b40 ANDLW 0x40 -00791a e001 BZ 0x791e -00791c 0e01 MOVLW 0x1 -00791e 6edf MOVWF 0xdf,0x0 +0078e4 d936 RCALL 0x7b52 lastDTS = pBDTEntryIn[0]->STAT.DTS; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078e6 50ef MOVF 0xef,0x0,0x0 +0078e8 0b40 ANDLW 0x40 +0078ea e001 BZ 0x78ee +0078ec 0e01 MOVLW 0x1 +0078ee 6edf MOVWF 0xdf,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //switch to the next ping pong buffer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007920 0105 MOVLB 0x5 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007922 75c9 BTG 0xc9,0x2,0x1 +0078f0 0105 MOVLB 0x5 ((BYTE_VAL*)&pBDTEntryIn[0])->Val ^= USB_NEXT_EP0_IN_PING_PONG; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078f2 75c9 BTG 0xc9,0x2,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Must check if in ADR_PENDING_STATE. If so, we need to update the address D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //now, since the IN status stage of the (set address) control transfer has D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //evidently completed successfully. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007924 0e08 MOVLW 0x8 if(USBDeviceState == ADR_PENDING_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007926 5dbc SUBWF 0xbc,0x0,0x1 -007928 e10b BNZ 0x7940 +0078f4 0e08 MOVLW 0x8 if(USBDeviceState == ADR_PENDING_STATE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078f6 5dbc SUBWF 0xbc,0x0,0x1 +0078f8 e10b BNZ 0x7910 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00792a c432 MOVFF 0x432,0xf38 U1ADDR = SetupPkt.bDevADR.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00792c ff38 -00792e 010f MOVLB 0xf if(U1ADDR != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007930 5138 MOVF 0x38,0x0,0x1 -007932 e003 BZ 0x793a +0078fa c432 MOVFF 0x432,0xf38 U1ADDR = SetupPkt.bDevADR.Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0078fc ff38 +0078fe 010f MOVLB 0xf if(U1ADDR != 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007900 5138 MOVF 0x38,0x0,0x1 +007902 e003 BZ 0x790a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007934 0105 MOVLB 0x5 USBDeviceState=ADDRESS_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007936 0e10 MOVLW 0x10 +007904 0105 MOVLB 0x5 USBDeviceState=ADDRESS_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007906 0e10 MOVLW 0x10 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007938 d002 BRA 0x793e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007908 d002 BRA 0x790e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00793a 0105 MOVLB 0x5 USBDeviceState=DEFAULT_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00793c 0e04 MOVLW 0x4 -00793e 6fbc MOVWF 0xbc,0x1 +00790a 0105 MOVLB 0x5 USBDeviceState=DEFAULT_STATE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00790c 0e04 MOVLW 0x4 +00790e 6fbc MOVWF 0xbc,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007940 05d0 DECF 0xd0,0x0,0x1 if(controlTransferState == CTRL_TRF_TX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007942 e113 BNZ 0x796a +007910 05d0 DECF 0xd0,0x0,0x1 if(controlTransferState == CTRL_TRF_TX) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007912 e113 BNZ 0x793a { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007944 d91e RCALL 0x7b82 pBDTEntryIn[0]->ADR = ConvertToPhysicalAddress(CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007946 d938 RCALL 0x7bb8 -007bb8 d8e9 RCALL 0x7d8c -007bba 0e38 MOVLW 0x38 -007bbc 6eee MOVWF 0xee,0x0 -007bbe 0e04 MOVLW 0x4 -007bc0 6eed MOVWF 0xed,0x0 -007bc2 0012 RETURN 0x0 -007948 dddc RCALL 0x7502 USBCtrlTrfTxService(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007914 d91e RCALL 0x7b52 pBDTEntryIn[0]->ADR = ConvertToPhysicalAddress(CtrlTrfData); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007916 d938 RCALL 0x7b88 +007b88 d8e9 RCALL 0x7d5c +007b8a 0e38 MOVLW 0x38 +007b8c 6eee MOVWF 0xee,0x0 +007b8e 0e04 MOVLW 0x4 +007b90 6eed MOVWF 0xed,0x0 +007b92 0012 RETURN 0x0 +007918 dddc RCALL 0x74d2 USBCtrlTrfTxService(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if we have already sent a short packet. If so, configure D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the endpoint to STALL in response to any further IN tokens (in the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //case that the host erroneously tries to receive more data than it D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //should). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00794a 0e02 MOVLW 0x2 if(shortPacketStatus == SHORT_PKT_SENT) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00794c 0105 MOVLB 0x5 -00794e 5dcf SUBWF 0xcf,0x0,0x1 -007950 e103 BNZ 0x7958 +00791a 0e02 MOVLW 0x2 if(shortPacketStatus == SHORT_PKT_SENT) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00791c 0105 MOVLB 0x5 +00791e 5dcf SUBWF 0xcf,0x0,0x1 +007920 e103 BNZ 0x7928 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // If a short packet has been sent, don't want to send any more, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // stall next time if host is still trying to read. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007952 d917 RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007954 0e84 MOVLW 0x84 -007b82 c5c9 MOVFF 0x5c9,0xfe9 -007b84 ffe9 -007b86 c5ca MOVFF 0x5ca,0xfea -007b88 ffea -007b8a 0012 RETURN 0x0 +007922 d917 RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007924 0e84 MOVLW 0x84 +007b52 c5c9 MOVFF 0x5c9,0xfe9 +007b54 ffe9 +007b56 c5ca MOVFF 0x5ca,0xfea +007b58 ffea +007b5a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007956 d007 BRA 0x7966 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007926 d007 BRA 0x7936 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007958 50df MOVF 0xdf,0x0,0x0 if(lastDTS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00795a e103 BNZ 0x7962 +007928 50df MOVF 0xdf,0x0,0x0 if(lastDTS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00792a e103 BNZ 0x7932 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00795c d912 RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00795e 0ec8 MOVLW 0xc8 +00792c d912 RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT1|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00792e 0ec8 MOVLW 0xc8 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007960 d002 BRA 0x7966 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007930 d002 BRA 0x7936 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007962 d90f RCALL 0x7b82 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007964 0e88 MOVLW 0x88 -007966 6eef MOVWF 0xef,0x0 +007932 d90f RCALL 0x7b52 pBDTEntryIn[0]->STAT.Val = _USIE|_DAT0|(_DTSEN & _DTS_CHECKING_ENABLED); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007934 0e88 MOVLW 0x88 +007936 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if(...)else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007968 d00f BRA 0x7988 else // must have been a CTRL_TRF_RX status stage IN packet (... <-- this last IN just occurred as the status stage) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007938 d00f BRA 0x7958 else // must have been a CTRL_TRF_RX status stage IN packet (... <-- this last IN just occurred as the status stage) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //if someone is still expecting data from the control transfer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // then make sure to terminate that request and let them know that D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // they are done D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00796a afd8 BTFSS 0xd8,0x7,0x1 if(outPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00796c d00c BRA 0x7986 +00793a afd8 BTFSS 0xd8,0x7,0x1 if(outPipes[0].info.bits.busy == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00793c d00c BRA 0x7956 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00796e 51db MOVF 0xdb,0x0,0x1 if(outPipes[0].pFunc != NULL) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007970 11dc IORWF 0xdc,0x0,0x1 -007972 e007 BZ 0x7982 +00793e 51db MOVF 0xdb,0x0,0x1 if(outPipes[0].pFunc != NULL) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007940 11dc IORWF 0xdc,0x0,0x1 +007942 e007 BZ 0x7952 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007974 d005 BRA 0x7980 outPipes[0].pFunc(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007976 c5dc MOVFF 0x5dc,0xffa -007978 fffa -00797a 0105 MOVLB 0x5 -00797c 51db MOVF 0xdb,0x0,0x1 -00797e 6ef9 MOVWF 0xf9,0x0 -007980 dffa RCALL 0x7976 +007944 d005 BRA 0x7950 outPipes[0].pFunc(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007946 c5dc MOVFF 0x5dc,0xffa +007948 fffa +00794a 0105 MOVLB 0x5 +00794c 51db MOVF 0xdb,0x0,0x1 +00794e 6ef9 MOVWF 0xf9,0x0 +007950 dffa RCALL 0x7946 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007982 0105 MOVLB 0x5 outPipes[0].info.bits.busy = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007984 9fd8 BCF 0xd8,0x7,0x1 +007952 0105 MOVLB 0x5 outPipes[0].info.bits.busy = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007954 9fd8 BCF 0xd8,0x7,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007986 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007956 6bd0 CLRF 0xd0,0x1 controlTransferState = WAIT_SETUP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Don't need to arm EP0 OUT here. It was already armed by the last that D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //got processed by the USBCtrlTrfRxService() handler. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007988 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00798a d105 BRA 0x7b96 +007958 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00795a d105 BRA 0x7b66 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -4039,121 +4039,121 @@ Address Value Disassembly Source *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c static void USBCheckStdRequest(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00798c 0104 MOVLB 0x4 if(SetupPkt.RequestType != USB_SETUP_TYPE_STANDARD_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -00798e 5130 MOVF 0x30,0x0,0x1 -007990 0b60 ANDLW 0x60 -007992 42e8 RRNCF 0xe8,0x1,0x0 -007994 42e8 RRNCF 0xe8,0x1,0x0 -007996 42e8 RRNCF 0xe8,0x1,0x0 -007998 42e8 RRNCF 0xe8,0x1,0x0 -00799a 42e8 RRNCF 0xe8,0x1,0x0 -00799c 0900 IORLW 0x0 +00795c 0104 MOVLB 0x4 if(SetupPkt.RequestType != USB_SETUP_TYPE_STANDARD_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +00795e 5130 MOVF 0x30,0x0,0x1 +007960 0b60 ANDLW 0x60 +007962 42e8 RRNCF 0xe8,0x1,0x0 +007964 42e8 RRNCF 0xe8,0x1,0x0 +007966 42e8 RRNCF 0xe8,0x1,0x0 +007968 42e8 RRNCF 0xe8,0x1,0x0 +00796a 42e8 RRNCF 0xe8,0x1,0x0 +00796c 0900 IORLW 0x0 +00796e e001 BZ 0x7972 +007970 0012 RETURN 0x0 + D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007972 5131 MOVF 0x31,0x0,0x1 switch(SetupPkt.bRequest) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007974 0a0c XORLW 0xc +007976 e045 BZ 0x7a02 +007978 0a0b XORLW 0xb +00797a e03f BZ 0x79fa +00797c 0a0c XORLW 0xc +00797e e031 BZ 0x79e2 +007980 0a01 XORLW 0x1 +007982 e022 BZ 0x79c8 +007984 0a0b XORLW 0xb +007986 e01e BZ 0x79c4 +007988 0a02 XORLW 0x2 +00798a e01c BZ 0x79c4 +00798c 0a03 XORLW 0x3 +00798e e018 BZ 0x79c0 +007990 0a08 XORLW 0x8 +007992 e010 BZ 0x79b4 +007994 0a01 XORLW 0x1 +007996 e00c BZ 0x79b0 +007998 0a0f XORLW 0xf +00799a e008 BZ 0x79ac +00799c 0a03 XORLW 0x3 00799e e001 BZ 0x79a2 0079a0 0012 RETURN 0x0 - D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079a2 5131 MOVF 0x31,0x0,0x1 switch(SetupPkt.bRequest) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079a4 0a0c XORLW 0xc -0079a6 e045 BZ 0x7a32 -0079a8 0a0b XORLW 0xb -0079aa e03f BZ 0x7a2a -0079ac 0a0c XORLW 0xc -0079ae e031 BZ 0x7a12 -0079b0 0a01 XORLW 0x1 -0079b2 e022 BZ 0x79f8 -0079b4 0a0b XORLW 0xb -0079b6 e01e BZ 0x79f4 -0079b8 0a02 XORLW 0x2 -0079ba e01c BZ 0x79f4 -0079bc 0a03 XORLW 0x3 -0079be e018 BZ 0x79f0 -0079c0 0a08 XORLW 0x8 -0079c2 e010 BZ 0x79e4 -0079c4 0a01 XORLW 0x1 -0079c6 e00c BZ 0x79e0 -0079c8 0a0f XORLW 0xf -0079ca e008 BZ 0x79dc -0079cc 0a03 XORLW 0x3 -0079ce e001 BZ 0x79d2 -0079d0 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SET_ADDRESS: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079d2 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; // This will generate a zero length packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079d4 8fd3 BSF 0xd3,0x7,0x1 -0079d6 0e08 MOVLW 0x8 USBDeviceState = ADR_PENDING_STATE; // Update state only D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079d8 6fbc MOVWF 0xbc,0x1 +0079a2 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; // This will generate a zero length packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079a4 8fd3 BSF 0xd3,0x7,0x1 +0079a6 0e08 MOVLW 0x8 USBDeviceState = ADR_PENDING_STATE; // Update state only D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079a8 6fbc MOVWF 0xbc,0x1 /* See USBCtrlTrfInHandler() for the next step */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079da 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079aa 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_GET_DESCRIPTOR: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079dc ef61 GOTO 0x76c2 USBStdGetDscHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079de f03b +0079ac ef49 GOTO 0x7692 USBStdGetDscHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079ae f03b break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SET_CONFIGURATION: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079e0 ef25 GOTO 0x764a USBStdSetCfgHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079e2 f03b +0079b0 ef0d GOTO 0x761a USBStdSetCfgHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079b2 f03b break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_GET_CONFIGURATION: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079e4 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&USBActiveConfiguration; // Set Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079e6 0ebd MOVLW 0xbd -0079e8 6fd1 MOVWF 0xd1,0x1 -0079ea 0e05 MOVLW 0x5 -0079ec 6fd2 MOVWF 0xd2,0x1 +0079b4 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&USBActiveConfiguration; // Set Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079b6 0ebd MOVLW 0xbd +0079b8 6fd1 MOVWF 0xd1,0x1 +0079ba 0e05 MOVLW 0x5 +0079bc 6fd2 MOVWF 0xd2,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; // Set memory type D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c inPipes[0].wCount.v[0] = 1; // Set data count D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079ee d00c BRA 0x7a08 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079be d00c BRA 0x79d8 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_GET_STATUS: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079f0 efb4 GOTO 0x7768 USBStdGetStatusHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079f2 f03b +0079c0 ef9c GOTO 0x7738 USBStdGetStatusHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079c2 f03b break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_CLEAR_FEATURE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SET_FEATURE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079f4 ef1a GOTO 0x7a34 USBStdFeatureReqHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079f6 f03d +0079c4 ef02 GOTO 0x7a04 USBStdFeatureReqHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079c6 f03d break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_GET_INTERFACE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079f8 5134 MOVF 0x34,0x0,0x1 inPipes[0].pSrc.bRam = (BYTE*)&USBAlternateInterface[SetupPkt.bIntfID]; // Set source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -0079fa 0105 MOVLB 0x5 -0079fc 6fd1 MOVWF 0xd1,0x1 -0079fe 6bd2 CLRF 0xd2,0x1 -007a00 0ebe MOVLW 0xbe -007a02 27d1 ADDWF 0xd1,0x1,0x1 -007a04 0e05 MOVLW 0x5 -007a06 23d2 ADDWFC 0xd2,0x1,0x1 -007a08 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; // Set memory type D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a0a 0e01 MOVLW 0x1 inPipes[0].wCount.v[0] = 1; // Set data count D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a0c 6fd4 MOVWF 0xd4,0x1 -007a0e 8fd3 BSF 0xd3,0x7,0x1 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a10 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079c8 5134 MOVF 0x34,0x0,0x1 inPipes[0].pSrc.bRam = (BYTE*)&USBAlternateInterface[SetupPkt.bIntfID]; // Set source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079ca 0105 MOVLB 0x5 +0079cc 6fd1 MOVWF 0xd1,0x1 +0079ce 6bd2 CLRF 0xd2,0x1 +0079d0 0ebe MOVLW 0xbe +0079d2 27d1 ADDWF 0xd1,0x1,0x1 +0079d4 0e05 MOVLW 0x5 +0079d6 23d2 ADDWFC 0xd2,0x1,0x1 +0079d8 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; // Set memory type D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079da 0e01 MOVLW 0x1 inPipes[0].wCount.v[0] = 1; // Set data count D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079dc 6fd4 MOVWF 0xd4,0x1 +0079de 8fd3 BSF 0xd3,0x7,0x1 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079e0 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SET_INTERFACE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a12 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a14 8fd3 BSF 0xd3,0x7,0x1 -007a16 0104 MOVLB 0x4 USBAlternateInterface[SetupPkt.bIntfID] = SetupPkt.bAltID; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a18 5134 MOVF 0x34,0x0,0x1 -007a1a 6aea CLRF 0xea,0x0 -007a1c 0fbe ADDLW 0xbe -007a1e 6ee9 MOVWF 0xe9,0x0 -007a20 0e05 MOVLW 0x5 -007a22 22ea ADDWFC 0xea,0x1,0x0 -007a24 c432 MOVFF 0x432,0xfef -007a26 ffef -007a28 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079e2 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079e4 8fd3 BSF 0xd3,0x7,0x1 +0079e6 0104 MOVLB 0x4 USBAlternateInterface[SetupPkt.bIntfID] = SetupPkt.bAltID; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079e8 5134 MOVF 0x34,0x0,0x1 +0079ea 6aea CLRF 0xea,0x0 +0079ec 0fbe ADDLW 0xbe +0079ee 6ee9 MOVWF 0xe9,0x0 +0079f0 0e05 MOVLW 0x5 +0079f2 22ea ADDWFC 0xea,0x1,0x0 +0079f4 c432 MOVFF 0x432,0xfef +0079f6 ffef +0079f8 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SET_DESCRIPTOR: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a2a d906 RCALL 0x7c38 USB_SET_DESCRIPTOR_HANDLER(EVENT_SET_DESCRIPTOR,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a2c 0e02 MOVLW 0x2 -007a2e efb8 GOTO 0x7b70 -007a30 f03d -007c38 0e00 MOVLW 0x0 -007c3a 6ee6 MOVWF 0xe6,0x0 -007c3c 6ae6 CLRF 0xe6,0x0 -007c3e 6ee6 MOVWF 0xe6,0x0 -007c40 6ae6 CLRF 0xe6,0x0 -007c42 0012 RETURN 0x0 +0079fa d906 RCALL 0x7c08 USB_SET_DESCRIPTOR_HANDLER(EVENT_SET_DESCRIPTOR,0,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +0079fc 0e02 MOVLW 0x2 +0079fe efa0 GOTO 0x7b40 +007a00 f03d +007c08 0e00 MOVLW 0x0 +007c0a 6ee6 MOVWF 0xe6,0x0 +007c0c 6ae6 CLRF 0xe6,0x0 +007c0e 6ee6 MOVWF 0xe6,0x0 +007c10 6ae6 CLRF 0xe6,0x0 +007c12 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c case USB_REQUEST_SYNCH_FRAME: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c default: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end switch D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a32 0012 RETURN 0x0 }//end USBCheckStdRequest D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a02 0012 RETURN 0x0 }//end USBCheckStdRequest D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * Function: void USBStdFeatureReqHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -4174,9 +4174,9 @@ Address Value Disassembly Source * use by the USB stack, when processing SET/CLEAR D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c * feature requests. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a34 d8ab RCALL 0x7b8c static void USBStdFeatureReqHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a36 0e05 MOVLW 0x5 -007a38 26e1 ADDWF 0xe1,0x1,0x0 +007a04 d8ab RCALL 0x7b5c static void USBStdFeatureReqHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a06 0e05 MOVLW 0x5 +007a08 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c BDT_ENTRY *p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c EP_STATUS current_ep_data; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -4221,275 +4221,275 @@ Address Value Disassembly Source #endif //#ifdef USB_SUPPORT_OTG D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if the host sent a valid SET or CLEAR feature (remote wakeup) request. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a3a 0104 MOVLB 0x4 if((SetupPkt.bFeature == USB_FEATURE_DEVICE_REMOTE_WAKEUP)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a3c 0532 DECF 0x32,0x0,0x1 -007a3e e110 BNZ 0x7a60 (SetupPkt.Recipient == USB_SETUP_RECIPIENT_DEVICE_BITFIELD)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a40 5130 MOVF 0x30,0x0,0x1 -007a42 0b1f ANDLW 0x1f -007a44 0900 IORLW 0x0 -007a46 e10c BNZ 0x7a60 +007a0a 0104 MOVLB 0x4 if((SetupPkt.bFeature == USB_FEATURE_DEVICE_REMOTE_WAKEUP)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a0c 0532 DECF 0x32,0x0,0x1 +007a0e e110 BNZ 0x7a30 (SetupPkt.Recipient == USB_SETUP_RECIPIENT_DEVICE_BITFIELD)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a10 5130 MOVF 0x30,0x0,0x1 +007a12 0b1f ANDLW 0x1f +007a14 0900 IORLW 0x0 +007a16 e10c BNZ 0x7a30 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a48 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a4a 8fd3 BSF 0xd3,0x7,0x1 -007a4c 0e03 MOVLW 0x3 if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a4e 0104 MOVLB 0x4 -007a50 5d31 SUBWF 0x31,0x0,0x1 -007a52 e104 BNZ 0x7a5c -007a54 0105 MOVLB 0x5 RemoteWakeup = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a56 0e01 MOVLW 0x1 -007a58 6fdf MOVWF 0xdf,0x1 -007a5a d002 BRA 0x7a60 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a5c 0105 MOVLB 0x5 RemoteWakeup = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a5e 6bdf CLRF 0xdf,0x1 +007a18 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a1a 8fd3 BSF 0xd3,0x7,0x1 +007a1c 0e03 MOVLW 0x3 if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a1e 0104 MOVLB 0x4 +007a20 5d31 SUBWF 0x31,0x0,0x1 +007a22 e104 BNZ 0x7a2c +007a24 0105 MOVLB 0x5 RemoteWakeup = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a26 0e01 MOVLW 0x1 +007a28 6fdf MOVWF 0xdf,0x1 +007a2a d002 BRA 0x7a30 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a2c 0105 MOVLB 0x5 RemoteWakeup = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a2e 6bdf CLRF 0xdf,0x1 }//end if D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if the host sent a valid SET or CLEAR endpoint halt request. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a60 0104 MOVLB 0x4 if((SetupPkt.bFeature == USB_FEATURE_ENDPOINT_HALT)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a62 5132 MOVF 0x32,0x0,0x1 -007a64 e001 BZ 0x7a68 (SetupPkt.Recipient == USB_SETUP_RECIPIENT_ENDPOINT_BITFIELD)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a66 d074 BRA 0x7b50 -007a68 5130 MOVF 0x30,0x0,0x1 -007a6a 0b1f ANDLW 0x1f -007a6c 0802 SUBLW 0x2 -007a6e e170 BNZ 0x7b50 -007a70 5134 MOVF 0x34,0x0,0x1 (SetupPkt.EPNum != 0u) && (SetupPkt.EPNum <= USB_MAX_EP_NUMBER)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a72 0b0f ANDLW 0xf -007a74 0900 IORLW 0x0 -007a76 e06c BZ 0x7b50 -007a78 5134 MOVF 0x34,0x0,0x1 -007a7a 0b0f ANDLW 0xf -007a7c 0802 SUBLW 0x2 -007a7e e368 BNC 0x7b50 -007a80 0e20 MOVLW 0x20 (USBDeviceState == CONFIGURED_STATE)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a82 0105 MOVLB 0x5 -007a84 5dbc SUBWF 0xbc,0x0,0x1 -007a86 e164 BNZ 0x7b50 +007a30 0104 MOVLB 0x4 if((SetupPkt.bFeature == USB_FEATURE_ENDPOINT_HALT)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a32 5132 MOVF 0x32,0x0,0x1 +007a34 e001 BZ 0x7a38 (SetupPkt.Recipient == USB_SETUP_RECIPIENT_ENDPOINT_BITFIELD)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a36 d074 BRA 0x7b20 +007a38 5130 MOVF 0x30,0x0,0x1 +007a3a 0b1f ANDLW 0x1f +007a3c 0802 SUBLW 0x2 +007a3e e170 BNZ 0x7b20 +007a40 5134 MOVF 0x34,0x0,0x1 (SetupPkt.EPNum != 0u) && (SetupPkt.EPNum <= USB_MAX_EP_NUMBER)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a42 0b0f ANDLW 0xf +007a44 0900 IORLW 0x0 +007a46 e06c BZ 0x7b20 +007a48 5134 MOVF 0x34,0x0,0x1 +007a4a 0b0f ANDLW 0xf +007a4c 0802 SUBLW 0x2 +007a4e e368 BNC 0x7b20 +007a50 0e20 MOVLW 0x20 (USBDeviceState == CONFIGURED_STATE)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a52 0105 MOVLB 0x5 +007a54 5dbc SUBWF 0xbc,0x0,0x1 +007a56 e164 BNZ 0x7b20 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //The request was valid. Take control of the control transfer and D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //perform the host requested action. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a88 8fd3 BSF 0xd3,0x7,0x1 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a58 8fd3 BSF 0xd3,0x7,0x1 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Fetch a pointer to the BDT that the host wants to SET/CLEAR halt on. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a8a 0104 MOVLB 0x4 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a8c bf34 BTFSC 0x34,0x7,0x1 -007a8e d004 BRA 0x7a98 +007a5a 0104 MOVLB 0x4 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a5c bf34 BTFSC 0x34,0x7,0x1 +007a5e d004 BRA 0x7a68 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a90 d940 RCALL 0x7d12 p = (BDT_ENTRY*)pBDTEntryOut[SetupPkt.EPNum]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a92 d8cc RCALL 0x7c2c -007a94 d8d7 RCALL 0x7c44 current_ep_data.Val = ep_data_out[SetupPkt.EPNum].Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a60 d940 RCALL 0x7ce2 p = (BDT_ENTRY*)pBDTEntryOut[SetupPkt.EPNum]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a62 d8cc RCALL 0x7bfc +007a64 d8d7 RCALL 0x7c14 current_ep_data.Val = ep_data_out[SetupPkt.EPNum].Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a96 d003 BRA 0x7a9e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a66 d003 BRA 0x7a6e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a98 d941 RCALL 0x7d1c p = (BDT_ENTRY*)pBDTEntryIn[SetupPkt.EPNum]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a9a d8c8 RCALL 0x7c2c -007c2c 22ea ADDWFC 0xea,0x1,0x0 -007c2e cfee MOVFF 0xfee,0xfde -007c30 ffde -007c32 cfed MOVFF 0xfed,0xfdd -007c34 ffdd -007c36 0012 RETURN 0x0 -007a9c d8d7 RCALL 0x7c4c current_ep_data.Val = ep_data_in[SetupPkt.EPNum].Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007a9e 22ea ADDWFC 0xea,0x1,0x0 -007aa0 0e02 MOVLW 0x2 -007aa2 cfef MOVFF 0xfef,0xfdb -007aa4 ffdb +007a68 d941 RCALL 0x7cec p = (BDT_ENTRY*)pBDTEntryIn[SetupPkt.EPNum]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a6a d8c8 RCALL 0x7bfc +007bfc 22ea ADDWFC 0xea,0x1,0x0 +007bfe cfee MOVFF 0xfee,0xfde +007c00 ffde +007c02 cfed MOVFF 0xfed,0xfdd +007c04 ffdd +007c06 0012 RETURN 0x0 +007a6c d8d7 RCALL 0x7c1c current_ep_data.Val = ep_data_in[SetupPkt.EPNum].Val; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a6e 22ea ADDWFC 0xea,0x1,0x0 +007a70 0e02 MOVLW 0x2 +007a72 cfef MOVFF 0xfef,0xfdb +007a74 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //If ping pong buffering is enabled on the requested endpoint, need D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //to point to the one that is the active BDT entry which the SIE will D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //use for the next attempted transaction on that EP number. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if (USB_PING_PONG_MODE == USB_PING_PONG__ALL_BUT_EP0) || (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aa6 d8f9 RCALL 0x7c9a if(current_ep_data.bits.ping_pong_state == 0u) //Check if even D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aa8 0b01 ANDLW 0x1 -007aaa e103 BNZ 0x7ab2 -007c9a 50d9 MOVF 0xd9,0x0,0x0 -007c9c 0f02 ADDLW 0x2 -007c9e 6ee9 MOVWF 0xe9,0x0 -007ca0 cfda MOVFF 0xfda,0xfea -007ca2 ffea -007ca4 50ef MOVF 0xef,0x0,0x0 -007ca6 0012 RETURN 0x0 +007a76 d8f9 RCALL 0x7c6a if(current_ep_data.bits.ping_pong_state == 0u) //Check if even D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a78 0b01 ANDLW 0x1 +007a7a e103 BNZ 0x7a82 +007c6a 50d9 MOVF 0xd9,0x0,0x0 +007c6c 0f02 ADDLW 0x2 +007c6e 6ee9 MOVWF 0xe9,0x0 +007c70 cfda MOVFF 0xfda,0xfea +007c72 ffea +007c74 50ef MOVF 0xef,0x0,0x0 +007c76 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aac 0e00 MOVLW 0x0 USBHALPingPongSetToEven(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aae 94df BCF 0xdf,0x2,0x0 +007a7c 0e00 MOVLW 0x0 USBHALPingPongSetToEven(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a7e 94df BCF 0xdf,0x2,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ab0 d001 BRA 0x7ab4 else //else must have been odd D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a80 d001 BRA 0x7a84 else //else must have been odd D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ab2 84df BSF 0xdf,0x2,0x0 USBHALPingPongSetToOdd(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a82 84df BSF 0xdf,0x2,0x0 USBHALPingPongSetToOdd(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Update the BDT pointers with the new, next entry based on the feature D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // request D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ab4 bf34 BTFSC 0x34,0x7,0x1 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ab6 d002 BRA 0x7abc +007a84 bf34 BTFSC 0x34,0x7,0x1 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a86 d002 BRA 0x7a8c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ab8 d92c RCALL 0x7d12 pBDTEntryOut[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b9e 5134 MOVF 0x34,0x0,0x1 -007ba0 0b0f ANDLW 0xf -007ba2 6ee9 MOVWF 0xe9,0x0 -007ba4 6aea CLRF 0xea,0x0 -007ba6 90d8 BCF 0xd8,0x0,0x0 -007ba8 36e9 RLCF 0xe9,0x1,0x0 -007baa 36ea RLCF 0xea,0x1,0x0 -007bac 0012 RETURN 0x0 -007d12 df45 RCALL 0x7b9e -007d14 0ec3 MOVLW 0xc3 -007d16 26e9 ADDWF 0xe9,0x1,0x0 -007d18 0e05 MOVLW 0x5 -007d1a 0012 RETURN 0x0 +007a88 d92c RCALL 0x7ce2 pBDTEntryOut[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b6e 5134 MOVF 0x34,0x0,0x1 +007b70 0b0f ANDLW 0xf +007b72 6ee9 MOVWF 0xe9,0x0 +007b74 6aea CLRF 0xea,0x0 +007b76 90d8 BCF 0xd8,0x0,0x0 +007b78 36e9 RLCF 0xe9,0x1,0x0 +007b7a 36ea RLCF 0xea,0x1,0x0 +007b7c 0012 RETURN 0x0 +007ce2 df45 RCALL 0x7b6e +007ce4 0ec3 MOVLW 0xc3 +007ce6 26e9 ADDWF 0xe9,0x1,0x0 +007ce8 0e05 MOVLW 0x5 +007cea 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aba d001 BRA 0x7abe else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a8a d001 BRA 0x7a8e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007abc d92f RCALL 0x7d1c pBDTEntryIn[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007abe 22ea ADDWFC 0xea,0x1,0x0 -007ac0 cfde MOVFF 0xfde,0xfee -007ac2 ffee -007ac4 cfdd MOVFF 0xfdd,0xfed -007ac6 ffed -007d1c df40 RCALL 0x7b9e -007d1e 0ec9 MOVLW 0xc9 -007d20 26e9 ADDWF 0xe9,0x1,0x0 -007d22 0e05 MOVLW 0x5 -007d24 0012 RETURN 0x0 +007a8c d92f RCALL 0x7cec pBDTEntryIn[SetupPkt.EPNum] = (volatile BDT_ENTRY *)p; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a8e 22ea ADDWFC 0xea,0x1,0x0 +007a90 cfde MOVFF 0xfde,0xfee +007a92 ffee +007a94 cfdd MOVFF 0xfdd,0xfed +007a96 ffed +007cec df40 RCALL 0x7b6e +007cee 0ec9 MOVLW 0xc9 +007cf0 26e9 ADDWF 0xe9,0x1,0x0 +007cf2 0e05 MOVLW 0x5 +007cf4 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if it was a SET_FEATURE endpoint halt request D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ac8 0e03 MOVLW 0x3 if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aca 5d31 SUBWF 0x31,0x0,0x1 -007acc e10c BNZ 0x7ae6 +007a98 0e03 MOVLW 0x3 if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007a9a 5d31 SUBWF 0x31,0x0,0x1 +007a9c e10c BNZ 0x7ab6 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ace d92e RCALL 0x7d2c if(p->STAT.UOWN == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ad0 e007 BZ 0x7ae0 +007a9e d92e RCALL 0x7cfc if(p->STAT.UOWN == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aa0 e007 BZ 0x7ab0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Mark that we are terminating this transfer and that the user D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c // needs to be notified later D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ad2 bf34 BTFSC 0x34,0x7,0x1 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ad4 d002 BRA 0x7ada +007aa2 bf34 BTFSC 0x34,0x7,0x1 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aa4 d002 BRA 0x7aaa { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ad6 d8b6 RCALL 0x7c44 ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aa6 d8b6 RCALL 0x7c14 ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ad8 d001 BRA 0x7adc else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aa8 d001 BRA 0x7aac else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ada d8b8 RCALL 0x7c4c ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007adc 22ea ADDWFC 0xea,0x1,0x0 -007ade 82ef BSF 0xef,0x1,0x0 +007aaa d8b8 RCALL 0x7c1c ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aac 22ea ADDWFC 0xea,0x1,0x0 +007aae 82ef BSF 0xef,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Then STALL the endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ae0 0e84 MOVLW 0x84 p->STAT.Val |= _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ae2 d959 RCALL 0x7d96 +007ab0 0e84 MOVLW 0x84 p->STAT.Val |= _USIE|_BSTALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ab2 d959 RCALL 0x7d66 }//if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ae4 d035 BRA 0x7b50 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ab4 d035 BRA 0x7b20 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Else the request must have been a CLEAR_FEATURE endpoint halt. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #if (USB_PING_PONG_MODE == USB_PING_PONG__ALL_BUT_EP0) || (USB_PING_PONG_MODE == USB_PING_PONG__FULL_PING_PONG) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //toggle over the to the non-active BDT D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ae6 74df BTG 0xdf,0x2,0x0 USBAdvancePingPongBuffer(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ab6 74df BTG 0xdf,0x2,0x0 USBAdvancePingPongBuffer(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007ae8 d921 RCALL 0x7d2c if(p->STAT.UOWN == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aea e006 BZ 0x7af8 +007ab8 d921 RCALL 0x7cfc if(p->STAT.UOWN == 1u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aba e006 BZ 0x7ac8 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear UOWN and set DTS state so it will be correct the next time D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //the application firmware uses USBTransferOnePacket() on the EP. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aec d845 RCALL 0x7b78 p->STAT.Val &= (~_USIE); //Clear UOWN bit D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007aee 9eef BCF 0xef,0x7,0x0 -007af0 d843 RCALL 0x7b78 p->STAT.Val |= _DAT1; //Set DTS to DATA1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007af2 8cef BSF 0xef,0x6,0x0 -007af4 d8f4 RCALL 0x7cde USB_TRANSFER_TERMINATED_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(p)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007cde 0e02 MOVLW 0x2 -007ce0 6ee6 MOVWF 0xe6,0x0 -007ce2 6ae6 CLRF 0xe6,0x0 -007ce4 cfde MOVFF 0xfde,0xfe6 -007ce6 ffe6 -007ce8 cfdd MOVFF 0xfdd,0xfe6 -007cea ffe6 -007cec 0e05 MOVLW 0x5 -007cee efb8 GOTO 0x7b70 -007cf0 f03d +007abc d845 RCALL 0x7b48 p->STAT.Val &= (~_USIE); //Clear UOWN bit D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007abe 9eef BCF 0xef,0x7,0x0 +007ac0 d843 RCALL 0x7b48 p->STAT.Val |= _DAT1; //Set DTS to DATA1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ac2 8cef BSF 0xef,0x6,0x0 +007ac4 d8f4 RCALL 0x7cae USB_TRANSFER_TERMINATED_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(p)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007cae 0e02 MOVLW 0x2 +007cb0 6ee6 MOVWF 0xe6,0x0 +007cb2 6ae6 CLRF 0xe6,0x0 +007cb4 cfde MOVFF 0xfde,0xfe6 +007cb6 ffe6 +007cb8 cfdd MOVFF 0xfdd,0xfe6 +007cba ffe6 +007cbc 0e05 MOVLW 0x5 +007cbe efa0 GOTO 0x7b40 +007cc0 f03d } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007af6 d002 BRA 0x7afc else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ac6 d002 BRA 0x7acc else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //UOWN already clear, but still need to set DTS to DATA1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007af8 d83f RCALL 0x7b78 p->STAT.Val |= _DAT1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007afa 8cef BSF 0xef,0x6,0x0 +007ac8 d83f RCALL 0x7b48 p->STAT.Val |= _DAT1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aca 8cef BSF 0xef,0x6,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //toggle back to the active BDT (the one the SIE is currently looking at D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //and will use for the next successful transaction to take place on the EP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007afc 74df BTG 0xdf,0x2,0x0 USBAdvancePingPongBuffer(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007acc 74df BTG 0xdf,0x2,0x0 USBAdvancePingPongBuffer(&p); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if we are currently terminating, or have previously terminated D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //a transaction on the given endpoint. If so, need to clear UOWN, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //set DTS to the proper state, and call the application callback D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //function. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007afe d8cd RCALL 0x7c9a if((current_ep_data.bits.transfer_terminated != 0u) || (p->STAT.UOWN == 1u)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b00 0b02 ANDLW 0x2 -007b02 e102 BNZ 0x7b08 -007b04 d913 RCALL 0x7d2c -007b06 e00d BZ 0x7b22 -007d2c df25 RCALL 0x7b78 -007d2e 50ef MOVF 0xef,0x0,0x0 -007d30 0b80 ANDLW 0x80 -007d32 0012 RETURN 0x0 +007ace d8cd RCALL 0x7c6a if((current_ep_data.bits.transfer_terminated != 0u) || (p->STAT.UOWN == 1u)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ad0 0b02 ANDLW 0x2 +007ad2 e102 BNZ 0x7ad8 +007ad4 d913 RCALL 0x7cfc +007ad6 e00d BZ 0x7af2 +007cfc df25 RCALL 0x7b48 +007cfe 50ef MOVF 0xef,0x0,0x0 +007d00 0b80 ANDLW 0x80 +007d02 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b08 0104 MOVLB 0x4 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b0a bf34 BTFSC 0x34,0x7,0x1 -007b0c d002 BRA 0x7b12 +007ad8 0104 MOVLB 0x4 if(SetupPkt.EPDir == OUT_FROM_HOST) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ada bf34 BTFSC 0x34,0x7,0x1 +007adc d002 BRA 0x7ae2 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b0e d89a RCALL 0x7c44 ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007c44 5134 MOVF 0x34,0x0,0x1 -007c46 0b0f ANDLW 0xf -007c48 efb2 GOTO 0x7d64 -007c4a f03e -007d64 6aea CLRF 0xea,0x0 -007d66 0fe7 ADDLW 0xe7 -007d68 6ee9 MOVWF 0xe9,0x0 -007d6a 0e05 MOVLW 0x5 -007d6c 0012 RETURN 0x0 +007ade d89a RCALL 0x7c14 ep_data_out[SetupPkt.EPNum].bits.transfer_terminated = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007c14 5134 MOVF 0x34,0x0,0x1 +007c16 0b0f ANDLW 0xf +007c18 ef9a GOTO 0x7d34 +007c1a f03e +007d34 6aea CLRF 0xea,0x0 +007d36 0fe7 ADDLW 0xe7 +007d38 6ee9 MOVWF 0xe9,0x0 +007d3a 0e05 MOVLW 0x5 +007d3c 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b10 d001 BRA 0x7b14 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ae0 d001 BRA 0x7ae4 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b12 d89c RCALL 0x7c4c ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b14 22ea ADDWFC 0xea,0x1,0x0 -007b16 92ef BCF 0xef,0x1,0x0 -007c4c 5134 MOVF 0x34,0x0,0x1 -007c4e 0b0f ANDLW 0xf -007c50 efb7 GOTO 0x7d6e -007c52 f03e -007d6e 6aea CLRF 0xea,0x0 -007d70 0fe4 ADDLW 0xe4 -007d72 6ee9 MOVWF 0xe9,0x0 -007d74 0e05 MOVLW 0x5 -007d76 0012 RETURN 0x0 +007ae2 d89c RCALL 0x7c1c ep_data_in[SetupPkt.EPNum].bits.transfer_terminated = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007ae4 22ea ADDWFC 0xea,0x1,0x0 +007ae6 92ef BCF 0xef,0x1,0x0 +007c1c 5134 MOVF 0x34,0x0,0x1 +007c1e 0b0f ANDLW 0xf +007c20 ef9f GOTO 0x7d3e +007c22 f03e +007d3e 6aea CLRF 0xea,0x0 +007d40 0fe4 ADDLW 0xe4 +007d42 6ee9 MOVWF 0xe9,0x0 +007d44 0e05 MOVLW 0x5 +007d46 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //clear UOWN, clear DTS to DATA0, and finally remove the STALL condition D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b18 0e3b MOVLW 0x3b p->STAT.Val &= ~(_USIE | _DAT1 | _BSTALL); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b1a 6e4e MOVWF 0x4e,0x0 -007b1c d92d RCALL 0x7d78 +007ae8 0e3b MOVLW 0x3b p->STAT.Val &= ~(_USIE | _DAT1 | _BSTALL); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007aea 6e4e MOVWF 0x4e,0x0 +007aec d92d RCALL 0x7d48 //Call the application event handler callback function, so it can D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //decide if the endpoint should get re-armed again or not. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b1e d8df RCALL 0x7cde USB_TRANSFER_TERMINATED_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(p)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b70 6ee6 MOVWF 0xe6,0x0 -007b72 6ae6 CLRF 0xe6,0x0 -007b74 efab GOTO 0x7d56 -007b76 f03e +007aee d8df RCALL 0x7cae USB_TRANSFER_TERMINATED_HANDLER(EVENT_TRANSFER_TERMINATED,p,sizeof(p)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b40 6ee6 MOVWF 0xe6,0x0 +007b42 6ae6 CLRF 0xe6,0x0 +007b44 ef93 GOTO 0x7d26 +007b46 f03e } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b20 d002 BRA 0x7b26 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007af0 d002 BRA 0x7af6 else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //clear UOWN, clear DTS to DATA0, and finally remove the STALL condition D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b22 0e3b MOVLW 0x3b p->STAT.Val &= ~(_USIE | _DAT1 | _BSTALL); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b24 d929 RCALL 0x7d78 -007b78 cfde MOVFF 0xfde,0xfe9 -007b7a ffe9 -007b7c cfdd MOVFF 0xfdd,0xfea -007b7e ffea -007b80 0012 RETURN 0x0 -007d78 deff RCALL 0x7b78 -007d7a 50e8 MOVF 0xe8,0x0,0x0 -007d7c 16ef ANDWF 0xef,0x1,0x0 -007d7e 0012 RETURN 0x0 +007af2 0e3b MOVLW 0x3b p->STAT.Val &= ~(_USIE | _DAT1 | _BSTALL); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007af4 d929 RCALL 0x7d48 +007b48 cfde MOVFF 0xfde,0xfe9 +007b4a ffe9 +007b4c cfdd MOVFF 0xfdd,0xfea +007b4e ffea +007b50 0012 RETURN 0x0 +007d48 deff RCALL 0x7b48 +007d4a 50e8 MOVF 0xe8,0x0,0x0 +007d4c 16ef ANDWF 0xef,0x1,0x0 +007d4e 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else //else we must not be using ping-pong buffering on the requested endpoint D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Check if we need to call the user transfer terminated event callback function. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -4537,43 +4537,43 @@ Address Value Disassembly Source pUEP = (DWORD*)(&U1EP0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c pUEP += (SetupPkt.EPNum*4); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c #else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b26 0104 MOVLB 0x4 pUEP = (unsigned char*)(&U1EP0+SetupPkt.EPNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b28 5134 MOVF 0x34,0x0,0x1 -007b2a 0b0f ANDLW 0xf -007b2c 6a4f CLRF 0x4f,0x0 -007b2e 0f26 ADDLW 0x26 -007b30 6e4e MOVWF 0x4e,0x0 -007b32 0e0f MOVLW 0xf -007b34 224f ADDWFC 0x4f,0x1,0x0 -007b36 0e03 MOVLW 0x3 -007b38 c04e MOVFF 0x4e,0xfdb -007b3a ffdb -007b3c 0e04 MOVLW 0x4 -007b3e c04f MOVFF 0x4f,0xfdb -007b40 ffdb +007af6 0104 MOVLB 0x4 pUEP = (unsigned char*)(&U1EP0+SetupPkt.EPNum); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007af8 5134 MOVF 0x34,0x0,0x1 +007afa 0b0f ANDLW 0xf +007afc 6a4f CLRF 0x4f,0x0 +007afe 0f26 ADDLW 0x26 +007b00 6e4e MOVWF 0x4e,0x0 +007b02 0e0f MOVLW 0xf +007b04 224f ADDWFC 0x4f,0x1,0x0 +007b06 0e03 MOVLW 0x3 +007b08 c04e MOVFF 0x4e,0xfdb +007b0a ffdb +007b0c 0e04 MOVLW 0x4 +007b0e c04f MOVFF 0x4f,0xfdb +007b10 ffdb #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c //Clear the STALL bit in the UEP register D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b42 0e03 MOVLW 0x3 *pUEP &= ~UEP_STALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b44 cfdb MOVFF 0xfdb,0xfe9 -007b46 ffe9 -007b48 0e04 MOVLW 0x4 -007b4a cfdb MOVFF 0xfdb,0xfea -007b4c ffea -007b4e 90ef BCF 0xef,0x0,0x0 +007b12 0e03 MOVLW 0x3 *pUEP &= ~UEP_STALL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b14 cfdb MOVFF 0xfdb,0xfe9 +007b16 ffe9 +007b18 0e04 MOVLW 0x4 +007b1a cfdb MOVFF 0xfdb,0xfea +007b1c ffea +007b1e 90ef BCF 0xef,0x0,0x0 }//end if(SetupPkt.bRequest == USB_REQUEST_SET_FEATURE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c }//end if (lots of checks for set/clear endpoint halt) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b50 0e05 MOVLW 0x5 }//end USBStdFeatureReqHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c -007b52 5ce1 SUBWF 0xe1,0x0,0x0 -007b54 e202 BC 0x7b5a -007b56 6ae1 CLRF 0xe1,0x0 -007b58 52e5 MOVF 0xe5,0x1,0x0 -007b5a 6ee1 MOVWF 0xe1,0x0 -007b5c d01c BRA 0x7b96 -007b96 52e5 MOVF 0xe5,0x1,0x0 -007b98 cfe7 MOVFF 0xfe7,0xfd9 -007b9a ffd9 -007b9c 0012 RETURN 0x0 +007b20 0e05 MOVLW 0x5 }//end USBStdFeatureReqHandler D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c +007b22 5ce1 SUBWF 0xe1,0x0,0x0 +007b24 e202 BC 0x7b2a +007b26 6ae1 CLRF 0xe1,0x0 +007b28 52e5 MOVF 0xe5,0x1,0x0 +007b2a 6ee1 MOVWF 0xe1,0x0 +007b2c d01c BRA 0x7b66 +007b66 52e5 MOVF 0xe5,0x1,0x0 +007b68 cfe7 MOVFF 0xfe7,0xfd9 +007b6a ffd9 +007b6c 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c /** EOF USBDevice.c *****************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\usb_device.c @@ -4847,107 +4847,107 @@ Address Value Disassembly Source /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * If request recipient is not an interface then return D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008670 0104 MOVLB 0x4 if(SetupPkt.Recipient != USB_SETUP_RECIPIENT_INTERFACE_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008672 5130 MOVF 0x30,0x0,0x1 -008674 0b1f ANDLW 0x1f -008676 0801 SUBLW 0x1 -008678 e001 BZ 0x867c -00867a 0012 RETURN 0x0 +008640 0104 MOVLB 0x4 if(SetupPkt.Recipient != USB_SETUP_RECIPIENT_INTERFACE_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008642 5130 MOVF 0x30,0x0,0x1 +008644 0b1f ANDLW 0x1f +008646 0801 SUBLW 0x1 +008648 e001 BZ 0x864c +00864a 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * If request type is not class-specific then return D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00867c 5130 MOVF 0x30,0x0,0x1 if(SetupPkt.RequestType != USB_SETUP_TYPE_CLASS_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00867e 0b60 ANDLW 0x60 -008680 42e8 RRNCF 0xe8,0x1,0x0 -008682 42e8 RRNCF 0xe8,0x1,0x0 -008684 42e8 RRNCF 0xe8,0x1,0x0 -008686 42e8 RRNCF 0xe8,0x1,0x0 -008688 42e8 RRNCF 0xe8,0x1,0x0 -00868a 0801 SUBLW 0x1 -00868c e001 BZ 0x8690 -00868e 0012 RETURN 0x0 +00864c 5130 MOVF 0x30,0x0,0x1 if(SetupPkt.RequestType != USB_SETUP_TYPE_CLASS_BITFIELD) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00864e 0b60 ANDLW 0x60 +008650 42e8 RRNCF 0xe8,0x1,0x0 +008652 42e8 RRNCF 0xe8,0x1,0x0 +008654 42e8 RRNCF 0xe8,0x1,0x0 +008656 42e8 RRNCF 0xe8,0x1,0x0 +008658 42e8 RRNCF 0xe8,0x1,0x0 +00865a 0801 SUBLW 0x1 +00865c e001 BZ 0x8660 +00865e 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Interface ID must match interface numbers associated with D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * CDC class, else return D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008690 5134 MOVF 0x34,0x0,0x1 if((SetupPkt.bIntfID != CDC_COMM_INTF_ID)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008692 e003 BZ 0x869a (SetupPkt.bIntfID != CDC_DATA_INTF_ID)) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008694 0534 DECF 0x34,0x0,0x1 -008696 e001 BZ 0x869a -008698 0012 RETURN 0x0 +008660 5134 MOVF 0x34,0x0,0x1 if((SetupPkt.bIntfID != CDC_COMM_INTF_ID)&& D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008662 e003 BZ 0x866a (SetupPkt.bIntfID != CDC_DATA_INTF_ID)) return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008664 0534 DECF 0x34,0x0,0x1 +008666 e001 BZ 0x866a +008668 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00869a 5131 MOVF 0x31,0x0,0x1 switch(SetupPkt.bRequest) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00869c 0a22 XORLW 0x22 -00869e e031 BZ 0x8702 -0086a0 0a03 XORLW 0x3 -0086a2 e024 BZ 0x86ec -0086a4 0a01 XORLW 0x1 -0086a6 e015 BZ 0x86d2 -0086a8 0a21 XORLW 0x21 -0086aa e00d BZ 0x86c6 -0086ac 0a01 XORLW 0x1 -0086ae e001 BZ 0x86b2 -0086b0 0012 RETURN 0x0 +00866a 5131 MOVF 0x31,0x0,0x1 switch(SetupPkt.bRequest) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00866c 0a22 XORLW 0x22 +00866e e031 BZ 0x86d2 +008670 0a03 XORLW 0x3 +008672 e024 BZ 0x86bc +008674 0a01 XORLW 0x1 +008676 e015 BZ 0x86a2 +008678 0a21 XORLW 0x21 +00867a e00d BZ 0x8696 +00867c 0a01 XORLW 0x1 +00867e e001 BZ 0x8682 +008680 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c //****** These commands are required ******// D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case SEND_ENCAPSULATED_COMMAND: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c //send the packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086b2 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&dummy_encapsulated_cmd_response; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086b4 0eb4 MOVLW 0xb4 -0086b6 6fd1 MOVWF 0xd1,0x1 -0086b8 0e05 MOVLW 0x5 -0086ba 6fd2 MOVWF 0xd2,0x1 -0086bc 0e08 MOVLW 0x8 inPipes[0].wCount.Val = dummy_length; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086be 6fd4 MOVWF 0xd4,0x1 -0086c0 6bd5 CLRF 0xd5,0x1 -0086c2 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008682 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&dummy_encapsulated_cmd_response; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008684 0eb4 MOVLW 0xb4 +008686 6fd1 MOVWF 0xd1,0x1 +008688 0e05 MOVLW 0x5 +00868a 6fd2 MOVWF 0xd2,0x1 +00868c 0e08 MOVLW 0x8 inPipes[0].wCount.Val = dummy_length; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00868e 6fd4 MOVWF 0xd4,0x1 +008690 6bd5 CLRF 0xd5,0x1 +008692 81d3 BSF 0xd3,0x0,0x1 inPipes[0].info.bits.ctrl_trf_mem = USB_EP0_RAM; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086c4 d021 BRA 0x8708 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008694 d021 BRA 0x86d8 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case GET_ENCAPSULATED_RESPONSE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c // Populate dummy_encapsulated_cmd_response first. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086c6 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&dummy_encapsulated_cmd_response; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086c8 0eb4 MOVLW 0xb4 -0086ca 6fd1 MOVWF 0xd1,0x1 -0086cc 0e05 MOVLW 0x5 -0086ce 6fd2 MOVWF 0xd2,0x1 +008696 0105 MOVLB 0x5 inPipes[0].pSrc.bRam = (BYTE*)&dummy_encapsulated_cmd_response; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008698 0eb4 MOVLW 0xb4 +00869a 6fd1 MOVWF 0xd1,0x1 +00869c 0e05 MOVLW 0x5 +00869e 6fd2 MOVWF 0xd2,0x1 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086d0 d01b BRA 0x8708 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086a0 d01b BRA 0x86d8 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c //****** End of required commands ******// D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #if defined(USB_CDC_SUPPORT_ABSTRACT_CONTROL_MANAGEMENT_CAPABILITIES_D1) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case SET_LINE_CODING: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086d2 c436 MOVFF 0x436,0x5d9 outPipes[0].wCount.Val = SetupPkt.wLength; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086d4 f5d9 -0086d6 c437 MOVFF 0x437,0x5da -0086d8 f5da -0086da 0105 MOVLB 0x5 outPipes[0].pDst.bRam = (BYTE*)LINE_CODING_TARGET; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086dc 0e94 MOVLW 0x94 -0086de 6fd6 MOVWF 0xd6,0x1 -0086e0 0e05 MOVLW 0x5 -0086e2 6fd7 MOVWF 0xd7,0x1 -0086e4 6bdb CLRF 0xdb,0x1 outPipes[0].pFunc = LINE_CODING_PFUNC; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086e6 6bdc CLRF 0xdc,0x1 -0086e8 8fd8 BSF 0xd8,0x7,0x1 outPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086ea 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086a2 c436 MOVFF 0x436,0x5d9 outPipes[0].wCount.Val = SetupPkt.wLength; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086a4 f5d9 +0086a6 c437 MOVFF 0x437,0x5da +0086a8 f5da +0086aa 0105 MOVLB 0x5 outPipes[0].pDst.bRam = (BYTE*)LINE_CODING_TARGET; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086ac 0e94 MOVLW 0x94 +0086ae 6fd6 MOVWF 0xd6,0x1 +0086b0 0e05 MOVLW 0x5 +0086b2 6fd7 MOVWF 0xd7,0x1 +0086b4 6bdb CLRF 0xdb,0x1 outPipes[0].pFunc = LINE_CODING_PFUNC; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086b6 6bdc CLRF 0xdc,0x1 +0086b8 8fd8 BSF 0xd8,0x7,0x1 outPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086ba 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case GET_LINE_CODING: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086ec 0105 MOVLB 0x5 USBEP0SendRAMPtr( D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0086ee 0e94 MOVLW 0x94 -0086f0 6fd1 MOVWF 0xd1,0x1 -0086f2 0e05 MOVLW 0x5 -0086f4 6fd2 MOVWF 0xd2,0x1 -0086f6 0e07 MOVLW 0x7 -0086f8 6fd4 MOVWF 0xd4,0x1 -0086fa 6bd5 CLRF 0xd5,0x1 -0086fc 0ec1 MOVLW 0xc1 -0086fe 6fd3 MOVWF 0xd3,0x1 -008700 0012 RETURN 0x0 (BYTE*)&line_coding, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086bc 0105 MOVLB 0x5 USBEP0SendRAMPtr( D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086be 0e94 MOVLW 0x94 +0086c0 6fd1 MOVWF 0xd1,0x1 +0086c2 0e05 MOVLW 0x5 +0086c4 6fd2 MOVWF 0xd2,0x1 +0086c6 0e07 MOVLW 0x7 +0086c8 6fd4 MOVWF 0xd4,0x1 +0086ca 6bd5 CLRF 0xd5,0x1 +0086cc 0ec1 MOVLW 0xc1 +0086ce 6fd3 MOVWF 0xd3,0x1 +0086d0 0012 RETURN 0x0 (BYTE*)&line_coding, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c LINE_CODING_LENGTH, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USB_EP0_INCLUDE_ZERO); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008702 c432 MOVFF 0x432,0x5af break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008704 f5af +0086d2 c432 MOVFF 0x432,0x5af break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086d4 f5af D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case SET_CONTROL_LINE_STATE: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c control_signal_bitmap._byte = (BYTE)SetupPkt.W_Value.v[0]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -4982,9 +4982,9 @@ Address Value Disassembly Source UART_DTR = (USB_CDC_DTR_ACTIVE_LEVEL ^ 1); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008706 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008708 8fd3 BSF 0xd3,0x7,0x1 -00870a 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086d6 0105 MOVLB 0x5 inPipes[0].info.bits.busy = 1; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086d8 8fd3 BSF 0xd3,0x7,0x1 +0086da 0012 RETURN 0x0 break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #if defined(USB_CDC_SUPPORT_ABSTRACT_CONTROL_MANAGEMENT_CAPABILITIES_D2) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5049,18 +5049,18 @@ Address Value Disassembly Source void CDCInitEP(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c //Abstract line coding information D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00870c 0105 MOVLB 0x5 line_coding.dwDTERate.Val = 19200; // baud rate D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00870e 6b94 CLRF 0x94,0x1 -008710 0e4b MOVLW 0x4b -008712 6f95 MOVWF 0x95,0x1 -008714 6b96 CLRF 0x96,0x1 -008716 6b97 CLRF 0x97,0x1 -008718 6b98 CLRF 0x98,0x1 line_coding.bCharFormat = 0x00; // 1 stop bit D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00871a 6b99 CLRF 0x99,0x1 line_coding.bParityType = 0x00; // None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00871c 0e08 MOVLW 0x8 line_coding.bDataBits = 0x08; // 5,6,7,8, or 16 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00871e 6f9a MOVWF 0x9a,0x1 +0086dc 0105 MOVLB 0x5 line_coding.dwDTERate.Val = 19200; // baud rate D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086de 6b94 CLRF 0x94,0x1 +0086e0 0e4b MOVLW 0x4b +0086e2 6f95 MOVWF 0x95,0x1 +0086e4 6b96 CLRF 0x96,0x1 +0086e6 6b97 CLRF 0x97,0x1 +0086e8 6b98 CLRF 0x98,0x1 line_coding.bCharFormat = 0x00; // 1 stop bit D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086ea 6b99 CLRF 0x99,0x1 line_coding.bParityType = 0x00; // None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086ec 0e08 MOVLW 0x8 line_coding.bDataBits = 0x08; // 5,6,7,8, or 16 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086ee 6f9a MOVWF 0x9a,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008720 6ba3 CLRF 0xa3,0x1 cdc_rx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086f0 6ba3 CLRF 0xa3,0x1 cdc_rx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Do not have to init Cnt of IN pipes here. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5073,27 +5073,27 @@ Address Value Disassembly Source * be known right before the data is D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * sent. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008722 0e1a MOVLW 0x1a USBEnableEndpoint(CDC_COMM_EP,USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008724 6ee6 MOVWF 0xe6,0x0 -008726 0e01 MOVLW 0x1 -008728 6ee6 MOVWF 0xe6,0x0 -00872a ec43 CALL 0x7286,0x0 -00872c f039 -00872e 52e5 MOVF 0xe5,0x1,0x0 -008730 52e5 MOVF 0xe5,0x1,0x0 -008732 0e1e MOVLW 0x1e USBEnableEndpoint(CDC_DATA_EP,USB_IN_ENABLED|USB_OUT_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008734 6ee6 MOVWF 0xe6,0x0 -008736 0e02 MOVLW 0x2 -008738 6ee6 MOVWF 0xe6,0x0 -00873a ec43 CALL 0x7286,0x0 -00873c f039 -00873e 52e5 MOVF 0xe5,0x1,0x0 -008740 52e5 MOVF 0xe5,0x1,0x0 +0086f2 0e1a MOVLW 0x1a USBEnableEndpoint(CDC_COMM_EP,USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0086f4 6ee6 MOVWF 0xe6,0x0 +0086f6 0e01 MOVLW 0x1 +0086f8 6ee6 MOVWF 0xe6,0x0 +0086fa ec2b CALL 0x7256,0x0 +0086fc f039 +0086fe 52e5 MOVF 0xe5,0x1,0x0 +008700 52e5 MOVF 0xe5,0x1,0x0 +008702 0e1e MOVLW 0x1e USBEnableEndpoint(CDC_DATA_EP,USB_IN_ENABLED|USB_OUT_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008704 6ee6 MOVWF 0xe6,0x0 +008706 0e02 MOVLW 0x2 +008708 6ee6 MOVWF 0xe6,0x0 +00870a ec2b CALL 0x7256,0x0 +00870c f039 +00870e 52e5 MOVF 0xe5,0x1,0x0 +008710 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008742 d91c RCALL 0x897c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008744 0105 MOVLB 0x5 CDCDataInHandle = NULL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008746 6bad CLRF 0xad,0x1 -008748 6bae CLRF 0xae,0x1 +008712 d91c RCALL 0x894c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008714 0105 MOVLB 0x5 CDCDataInHandle = NULL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008716 6bad CLRF 0xad,0x1 +008718 6bae CLRF 0xae,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #if defined(USB_CDC_SUPPORT_DSR_REPORTING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c CDCNotificationInHandle = NULL; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5120,8 +5120,8 @@ Address Value Disassembly Source mInitCTSPin(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #endif D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00874a 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00874c 0012 RETURN 0x0 }//end CDCInitEP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00871a 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00871c 0012 RETURN 0x0 }//end CDCInitEP D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5198,61 +5198,61 @@ Address Value Disassembly Source size - the size of the data that is pointed to by pdata D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c **********************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00874e d941 RCALL 0x89d2 BOOL USBCDCEventHandler(USB_EVENT event, void *pdata, WORD size) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00871e d941 RCALL 0x89a2 BOOL USBCDCEventHandler(USB_EVENT event, void *pdata, WORD size) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008750 d965 RCALL 0x8a1c switch( (INT)event ) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008752 0e05 MOVLW 0x5 -008754 1842 XORWF 0x42,0x0,0x0 -008756 e101 BNZ 0x875a -008758 5043 MOVF 0x43,0x0,0x0 -00875a e002 BZ 0x8760 -008a1c 0efd MOVLW 0xfd -008a1e cfdb MOVFF 0xfdb,0x42 -008a20 f042 -008a22 0efe MOVLW 0xfe -008a24 cfdb MOVFF 0xfdb,0x43 -008a26 f043 -008a28 0012 RETURN 0x0 +008720 d965 RCALL 0x89ec switch( (INT)event ) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008722 0e05 MOVLW 0x5 +008724 1842 XORWF 0x42,0x0,0x0 +008726 e101 BNZ 0x872a +008728 5043 MOVF 0x43,0x0,0x0 +00872a e002 BZ 0x8730 +0089ec 0efd MOVLW 0xfd +0089ee cfdb MOVFF 0xfdb,0x42 +0089f0 f042 +0089f2 0efe MOVLW 0xfe +0089f4 cfdb MOVFF 0xfdb,0x43 +0089f6 f043 +0089f8 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c case EVENT_TRANSFER_TERMINATED: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008760 d948 RCALL 0x89f2 if(pdata == CDCDataOutHandle) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008762 0105 MOVLB 0x5 -008764 51ab MOVF 0xab,0x0,0x1 -008766 184e XORWF 0x4e,0x0,0x0 -008768 e104 BNZ 0x8772 -00876a 51ac MOVF 0xac,0x0,0x1 -00876c 184f XORWF 0x4f,0x0,0x0 -00876e e101 BNZ 0x8772 -0089f2 0efb MOVLW 0xfb -0089f4 cfdb MOVFF 0xfdb,0x4e -0089f6 f04e -0089f8 0efc MOVLW 0xfc -0089fa cfdb MOVFF 0xfdb,0x4f -0089fc f04f -0089fe 0012 RETURN 0x0 +008730 d948 RCALL 0x89c2 if(pdata == CDCDataOutHandle) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008732 0105 MOVLB 0x5 +008734 51ab MOVF 0xab,0x0,0x1 +008736 184e XORWF 0x4e,0x0,0x0 +008738 e104 BNZ 0x8742 +00873a 51ac MOVF 0xac,0x0,0x1 +00873c 184f XORWF 0x4f,0x0,0x0 +00873e e101 BNZ 0x8742 +0089c2 0efb MOVLW 0xfb +0089c4 cfdb MOVFF 0xfdb,0x4e +0089c6 f04e +0089c8 0efc MOVLW 0xfc +0089ca cfdb MOVFF 0xfdb,0x4f +0089cc f04f +0089ce 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008770 d905 RCALL 0x897c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008740 d905 RCALL 0x894c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008772 d93f RCALL 0x89f2 if(pdata == CDCDataInHandle) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008774 0105 MOVLB 0x5 -008776 51ad MOVF 0xad,0x0,0x1 -008778 184e XORWF 0x4e,0x0,0x0 -00877a e105 BNZ 0x8786 -00877c 51ae MOVF 0xae,0x0,0x1 -00877e 184f XORWF 0x4f,0x0,0x0 -008780 e102 BNZ 0x8786 +008742 d93f RCALL 0x89c2 if(pdata == CDCDataInHandle) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008744 0105 MOVLB 0x5 +008746 51ad MOVF 0xad,0x0,0x1 +008748 184e XORWF 0x4e,0x0,0x0 +00874a e105 BNZ 0x8756 +00874c 51ae MOVF 0xae,0x0,0x1 +00874e 184f XORWF 0x4f,0x0,0x0 +008750 e102 BNZ 0x8756 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c //flush all of the data in the CDC buffer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008782 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008784 6ba9 CLRF 0xa9,0x1 cdc_tx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008752 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008754 6ba9 CLRF 0xa9,0x1 cdc_tx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c break; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c default: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00875c 0e00 MOVLW 0x0 return FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00875e d014 BRA 0x8788 +00872c 0e00 MOVLW 0x0 return FALSE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00872e d014 BRA 0x8758 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008786 0e01 MOVLW 0x1 return TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008788 d129 BRA 0x89dc } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008756 0e01 MOVLW 0x1 return TRUE; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008758 d129 BRA 0x89ac } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /********************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5293,116 +5293,116 @@ Address Value Disassembly Source len - The number of BYTEs expected. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c **********************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00878a d923 RCALL 0x89d2 BYTE getsUSBUSART(char *buffer, BYTE len) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00875a d923 RCALL 0x89a2 BYTE getsUSBUSART(char *buffer, BYTE len) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00878c 0105 MOVLB 0x5 cdc_rx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00878e 6ba3 CLRF 0xa3,0x1 +00875c 0105 MOVLB 0x5 cdc_rx_len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00875e 6ba3 CLRF 0xa3,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008790 51ab MOVF 0xab,0x0,0x1 if(!USBHandleBusy(CDCDataOutHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008792 11ac IORWF 0xac,0x0,0x1 -008794 e102 BNZ 0x879a -008796 0e00 MOVLW 0x0 -008798 d005 BRA 0x87a4 -00879a d932 RCALL 0x8a00 -00879c 50ef MOVF 0xef,0x0,0x0 -00879e 0b80 ANDLW 0x80 -0087a0 e001 BZ 0x87a4 -0087a2 0e01 MOVLW 0x1 -0087a4 0900 IORLW 0x0 -0087a6 e12d BNZ 0x8802 +008760 51ab MOVF 0xab,0x0,0x1 if(!USBHandleBusy(CDCDataOutHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008762 11ac IORWF 0xac,0x0,0x1 +008764 e102 BNZ 0x876a +008766 0e00 MOVLW 0x0 +008768 d005 BRA 0x8774 +00876a d932 RCALL 0x89d0 +00876c 50ef MOVF 0xef,0x0,0x0 +00876e 0b80 ANDLW 0x80 +008770 e001 BZ 0x8774 +008772 0e01 MOVLW 0x1 +008774 0900 IORLW 0x0 +008776 e12d BNZ 0x87d2 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Adjust the expected number of BYTEs to equal D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * the actual number of BYTEs received. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087a8 0efc MOVLW 0xfc if(len > USBHandleGetLength(CDCDataOutHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087aa cfdb MOVFF 0xfdb,0x4e -0087ac f04e -0087ae d928 RCALL 0x8a00 -0087b0 52ee MOVF 0xee,0x1,0x0 -0087b2 50ef MOVF 0xef,0x0,0x0 -0087b4 80d8 BSF 0xd8,0x0,0x0 -0087b6 544e SUBFWB 0x4e,0x0,0x0 -0087b8 e205 BC 0x87c4 -0087ba d922 RCALL 0x8a00 len = USBHandleGetLength(CDCDataOutHandle); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087bc 52ee MOVF 0xee,0x1,0x0 -0087be 0efc MOVLW 0xfc -0087c0 cfef MOVFF 0xfef,0xfdb -0087c2 ffdb -008a00 c5ab MOVFF 0x5ab,0xfe9 -008a02 ffe9 -008a04 c5ac MOVFF 0x5ac,0xfea -008a06 ffea -008a08 0012 RETURN 0x0 +008778 0efc MOVLW 0xfc if(len > USBHandleGetLength(CDCDataOutHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00877a cfdb MOVFF 0xfdb,0x4e +00877c f04e +00877e d928 RCALL 0x89d0 +008780 52ee MOVF 0xee,0x1,0x0 +008782 50ef MOVF 0xef,0x0,0x0 +008784 80d8 BSF 0xd8,0x0,0x0 +008786 544e SUBFWB 0x4e,0x0,0x0 +008788 e205 BC 0x8794 +00878a d922 RCALL 0x89d0 len = USBHandleGetLength(CDCDataOutHandle); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00878c 52ee MOVF 0xee,0x1,0x0 +00878e 0efc MOVLW 0xfc +008790 cfef MOVFF 0xfef,0xfdb +008792 ffdb +0089d0 c5ab MOVFF 0x5ab,0xfe9 +0089d2 ffe9 +0089d4 c5ac MOVFF 0x5ac,0xfea +0089d6 ffea +0089d8 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Copy data from dual-ram buffer to user's buffer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087c4 6ba3 CLRF 0xa3,0x1 for(cdc_rx_len = 0; cdc_rx_len < len; cdc_rx_len++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087c6 0efc MOVLW 0xfc -0087c8 50db MOVF 0xdb,0x0,0x0 -0087ca 5da3 SUBWF 0xa3,0x0,0x1 -0087cc e219 BC 0x8800 -0087fc 2ba3 INCF 0xa3,0x1,0x1 -0087fe d7e3 BRA 0x87c6 -0087ce 51a3 MOVF 0xa3,0x0,0x1 buffer[cdc_rx_len] = cdc_data_rx[cdc_rx_len]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0087d0 6aea CLRF 0xea,0x0 -0087d2 0f54 ADDLW 0x54 -0087d4 6ee9 MOVWF 0xe9,0x0 -0087d6 0e05 MOVLW 0x5 -0087d8 22ea ADDWFC 0xea,0x1,0x0 -0087da 50ef MOVF 0xef,0x0,0x0 -0087dc 6ee6 MOVWF 0xe6,0x0 -0087de 51a3 MOVF 0xa3,0x0,0x1 -0087e0 6ee7 MOVWF 0xe7,0x0 -0087e2 0efd MOVLW 0xfd -0087e4 cfdb MOVFF 0xfdb,0xfe9 -0087e6 ffe9 -0087e8 0efe MOVLW 0xfe -0087ea cfdb MOVFF 0xfdb,0xfea -0087ec ffea -0087ee 50e7 MOVF 0xe7,0x0,0x0 -0087f0 26e9 ADDWF 0xe9,0x1,0x0 -0087f2 0e00 MOVLW 0x0 -0087f4 22ea ADDWFC 0xea,0x1,0x0 -0087f6 52e5 MOVF 0xe5,0x1,0x0 -0087f8 50e7 MOVF 0xe7,0x0,0x0 -0087fa 6eef MOVWF 0xef,0x0 +008794 6ba3 CLRF 0xa3,0x1 for(cdc_rx_len = 0; cdc_rx_len < len; cdc_rx_len++) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008796 0efc MOVLW 0xfc +008798 50db MOVF 0xdb,0x0,0x0 +00879a 5da3 SUBWF 0xa3,0x0,0x1 +00879c e219 BC 0x87d0 +0087cc 2ba3 INCF 0xa3,0x1,0x1 +0087ce d7e3 BRA 0x8796 +00879e 51a3 MOVF 0xa3,0x0,0x1 buffer[cdc_rx_len] = cdc_data_rx[cdc_rx_len]; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087a0 6aea CLRF 0xea,0x0 +0087a2 0f54 ADDLW 0x54 +0087a4 6ee9 MOVWF 0xe9,0x0 +0087a6 0e05 MOVLW 0x5 +0087a8 22ea ADDWFC 0xea,0x1,0x0 +0087aa 50ef MOVF 0xef,0x0,0x0 +0087ac 6ee6 MOVWF 0xe6,0x0 +0087ae 51a3 MOVF 0xa3,0x0,0x1 +0087b0 6ee7 MOVWF 0xe7,0x0 +0087b2 0efd MOVLW 0xfd +0087b4 cfdb MOVFF 0xfdb,0xfe9 +0087b6 ffe9 +0087b8 0efe MOVLW 0xfe +0087ba cfdb MOVFF 0xfdb,0xfea +0087bc ffea +0087be 50e7 MOVF 0xe7,0x0,0x0 +0087c0 26e9 ADDWF 0xe9,0x1,0x0 +0087c2 0e00 MOVLW 0x0 +0087c4 22ea ADDWFC 0xea,0x1,0x0 +0087c6 52e5 MOVF 0xe5,0x1,0x0 +0087c8 50e7 MOVF 0xe7,0x0,0x0 +0087ca 6eef MOVWF 0xef,0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Prepare dual-ram buffer for next OUT transaction D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008800 d8bd RCALL 0x897c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00897c 0e40 MOVLW 0x40 -00897e 6ee6 MOVWF 0xe6,0x0 -008980 0e54 MOVLW 0x54 -008982 6ee6 MOVWF 0xe6,0x0 -008984 0e05 MOVLW 0x5 -008986 6ee6 MOVWF 0xe6,0x0 -008988 6ae6 CLRF 0xe6,0x0 -00898a d83f RCALL 0x8a0a -00898c cff3 MOVFF 0xff3,0x5ab -00898e f5ab -008990 cff4 MOVFF 0xff4,0x5ac -008992 f5ac -008994 0012 RETURN 0x0 -008a0a 0e02 MOVLW 0x2 -008a0c 6ee6 MOVWF 0xe6,0x0 -008a0e ec67 CALL 0x72ce,0x0 -008a10 f039 -008a12 6e4e MOVWF 0x4e,0x0 -008a14 0e05 MOVLW 0x5 -008a16 5ee1 SUBWF 0xe1,0x1,0x0 -008a18 504e MOVF 0x4e,0x0,0x0 -008a1a 0012 RETURN 0x0 +0087d0 d8bd RCALL 0x894c CDCDataOutHandle = USBRxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_rx,sizeof(cdc_data_rx)); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00894c 0e40 MOVLW 0x40 +00894e 6ee6 MOVWF 0xe6,0x0 +008950 0e54 MOVLW 0x54 +008952 6ee6 MOVWF 0xe6,0x0 +008954 0e05 MOVLW 0x5 +008956 6ee6 MOVWF 0xe6,0x0 +008958 6ae6 CLRF 0xe6,0x0 +00895a d83f RCALL 0x89da +00895c cff3 MOVFF 0xff3,0x5ab +00895e f5ab +008960 cff4 MOVFF 0xff4,0x5ac +008962 f5ac +008964 0012 RETURN 0x0 +0089da 0e02 MOVLW 0x2 +0089dc 6ee6 MOVWF 0xe6,0x0 +0089de ec4f CALL 0x729e,0x0 +0089e0 f039 +0089e2 6e4e MOVWF 0x4e,0x0 +0089e4 0e05 MOVLW 0x5 +0089e6 5ee1 SUBWF 0xe1,0x1,0x0 +0089e8 504e MOVF 0x4e,0x0,0x0 +0089ea 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c }//end if D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008802 0105 MOVLB 0x5 return cdc_rx_len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008804 51a3 MOVF 0xa3,0x0,0x1 +0087d2 0105 MOVLB 0x5 return cdc_rx_len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087d4 51a3 MOVF 0xa3,0x0,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008806 d0ea BRA 0x89dc }//end getsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087d6 d0ea BRA 0x89ac }//end getsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5444,7 +5444,7 @@ Address Value Disassembly Source BYTE length - the number of bytes to be transfered (must be less than 255). D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008808 d8e4 RCALL 0x89d2 void putUSBUSART(char *data, BYTE length) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087d8 d8e4 RCALL 0x89a2 void putUSBUSART(char *data, BYTE length) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * User should have checked that cdc_trf_state is in CDC_TX_READY state D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5470,20 +5470,20 @@ Address Value Disassembly Source * Use a state machine instead. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBMaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00880a 0105 MOVLB 0x5 if(cdc_trf_state == CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00880c 51a4 MOVF 0xa4,0x0,0x1 -00880e e107 BNZ 0x881e +0087da 0105 MOVLB 0x5 if(cdc_trf_state == CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087dc 51a4 MOVF 0xa4,0x0,0x1 +0087de e107 BNZ 0x87ee { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008810 d8e9 RCALL 0x89e4 mUSBUSARTTxRam((BYTE*)data, length); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008812 0efc MOVLW 0xfc -008814 cfdb MOVFF 0xfdb,0x5a9 -008816 f5a9 -008818 0e01 MOVLW 0x1 -00881a 6faa MOVWF 0xaa,0x1 -00881c 6fa4 MOVWF 0xa4,0x1 +0087e0 d8e9 RCALL 0x89b4 mUSBUSARTTxRam((BYTE*)data, length); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087e2 0efc MOVLW 0xfc +0087e4 cfdb MOVFF 0xfdb,0x5a9 +0087e6 f5a9 +0087e8 0e01 MOVLW 0x1 +0087ea 6faa MOVWF 0xaa,0x1 +0087ec 6fa4 MOVWF 0xa4,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00881e d0de BRA 0x89dc }//end putUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087ee d0de BRA 0x89ac }//end putUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5525,10 +5525,10 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008820 d904 RCALL 0x8a2a void putsUSBUSART(char *data) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008a2a dfd3 RCALL 0x89d2 -008a2c 0e03 MOVLW 0x3 -008a2e 26e1 ADDWF 0xe1,0x1,0x0 +0087f0 d904 RCALL 0x89fa void putsUSBUSART(char *data) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0089fa dfd3 RCALL 0x89a2 +0089fc 0e03 MOVLW 0x3 +0089fe 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c BYTE len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c char *pData; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5557,10 +5557,10 @@ Address Value Disassembly Source * Use a state machine instead. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBMaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008822 e117 BNZ 0x8852 if(cdc_trf_state != CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008a30 0105 MOVLB 0x5 -008a32 51a4 MOVF 0xa4,0x0,0x1 -008a34 0012 RETURN 0x0 +0087f2 e117 BNZ 0x8822 if(cdc_trf_state != CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008a00 0105 MOVLB 0x5 +008a02 51a4 MOVF 0xa4,0x0,0x1 +008a04 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5570,33 +5570,33 @@ Address Value Disassembly Source * While loop counts the number of BYTEs to send including the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * null character. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008824 d8c0 RCALL 0x89a6 len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0089a6 6adf CLRF 0xdf,0x0 -0089a8 d839 RCALL 0x8a1c pData = data; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0089aa 52de MOVF 0xde,0x1,0x0 -0089ac c042 MOVFF 0x42,0xfde -0089ae ffde -0089b0 c043 MOVFF 0x43,0xfdd -0089b2 ffdd -0089b4 52dd MOVF 0xdd,0x1,0x0 -0089b6 0012 RETURN 0x0 +0087f4 d8c0 RCALL 0x8976 len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008976 6adf CLRF 0xdf,0x0 +008978 d839 RCALL 0x89ec pData = data; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00897a 52de MOVF 0xde,0x1,0x0 +00897c c042 MOVFF 0x42,0xfde +00897e ffde +008980 c043 MOVFF 0x43,0xfdd +008982 ffdd +008984 52dd MOVF 0xdd,0x1,0x0 +008986 0012 RETURN 0x0 do D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008826 2adf INCF 0xdf,0x1,0x0 len++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008828 0eff MOVLW 0xff if(len == 255u) break; // Break loop once max len is reached. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00882a 5cdf SUBWF 0xdf,0x0,0x0 -00882c e00b BZ 0x8844 -00882e 0e01 MOVLW 0x1 }while(*pData++); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008830 cfdb MOVFF 0xfdb,0xfe9 -008832 ffe9 -008834 2adb INCF 0xdb,0x1,0x0 -008836 0e02 MOVLW 0x2 -008838 cfdb MOVFF 0xfdb,0xfea -00883a ffea -00883c e301 BNC 0x8840 -00883e 2adb INCF 0xdb,0x1,0x0 -008840 50ef MOVF 0xef,0x0,0x0 -008842 e1f1 BNZ 0x8826 +0087f6 2adf INCF 0xdf,0x1,0x0 len++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087f8 0eff MOVLW 0xff if(len == 255u) break; // Break loop once max len is reached. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0087fa 5cdf SUBWF 0xdf,0x0,0x0 +0087fc e00b BZ 0x8814 +0087fe 0e01 MOVLW 0x1 }while(*pData++); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008800 cfdb MOVFF 0xfdb,0xfe9 +008802 ffe9 +008804 2adb INCF 0xdb,0x1,0x0 +008806 0e02 MOVLW 0x2 +008808 cfdb MOVFF 0xfdb,0xfea +00880a ffea +00880c e301 BNC 0x8810 +00880e 2adb INCF 0xdb,0x1,0x0 +008810 50ef MOVF 0xef,0x0,0x0 +008812 e1f1 BNZ 0x87f6 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Second piece of information (length of data to send) is ready. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5604,21 +5604,21 @@ Address Value Disassembly Source * The actual transfer process will be handled by CDCTxService(), D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * which should be called once per Main Program loop. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008844 d8cf RCALL 0x89e4 mUSBUSARTTxRam((BYTE*)data, len); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008846 cfdf MOVFF 0xfdf,0x5a9 -008848 f5a9 -00884a 0105 MOVLB 0x5 -00884c 0e01 MOVLW 0x1 -00884e 6faa MOVWF 0xaa,0x1 -008850 6fa4 MOVWF 0xa4,0x1 +008814 d8cf RCALL 0x89b4 mUSBUSARTTxRam((BYTE*)data, len); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008816 cfdf MOVFF 0xfdf,0x5a9 +008818 f5a9 +00881a 0105 MOVLB 0x5 +00881c 0e01 MOVLW 0x1 +00881e 6faa MOVWF 0xaa,0x1 +008820 6fa4 MOVWF 0xa4,0x1 USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008852 0e03 MOVLW 0x3 }//end putsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008854 5ce1 SUBWF 0xe1,0x0,0x0 -008856 e202 BC 0x885c -008858 6ae1 CLRF 0xe1,0x0 -00885a 52e5 MOVF 0xe5,0x1,0x0 -00885c 6ee1 MOVWF 0xe1,0x0 -00885e d0be BRA 0x89dc +008822 0e03 MOVLW 0x3 }//end putsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008824 5ce1 SUBWF 0xe1,0x0,0x0 +008826 e202 BC 0x882c +008828 6ae1 CLRF 0xe1,0x0 +00882a 52e5 MOVF 0xe5,0x1,0x0 +00882c 6ee1 MOVWF 0xe1,0x0 +00882e d0be BRA 0x89ac D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5660,7 +5660,7 @@ Address Value Disassembly Source will be transferred to the host. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c **************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008860 d8e4 RCALL 0x8a2a void putrsUSBUSART(const ROM char *data) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008830 d8e4 RCALL 0x89fa void putrsUSBUSART(const ROM char *data) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c BYTE len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c const ROM char *pData; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5689,7 +5689,7 @@ Address Value Disassembly Source * Use a state machine instead. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBMaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008862 e118 BNZ 0x8894 if(cdc_trf_state != CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008832 e118 BNZ 0x8864 if(cdc_trf_state != CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5699,26 +5699,26 @@ Address Value Disassembly Source * While loop counts the number of BYTEs to send including the D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * null character. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008864 d8a0 RCALL 0x89a6 len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008834 d8a0 RCALL 0x8976 len = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c pData = data; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c do D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008866 2adf INCF 0xdf,0x1,0x0 len++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008868 0eff MOVLW 0xff if(len == 255u) break; // Break loop once max len is reached. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00886a 5cdf SUBWF 0xdf,0x0,0x0 -00886c e00c BZ 0x8886 -00886e 0e01 MOVLW 0x1 }while(*pData++); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008870 cfdb MOVFF 0xfdb,0xff6 -008872 fff6 -008874 2adb INCF 0xdb,0x1,0x0 -008876 0e02 MOVLW 0x2 -008878 cfdb MOVFF 0xfdb,0xff7 -00887a fff7 -00887c e301 BNC 0x8880 -00887e 2adb INCF 0xdb,0x1,0x0 -008880 0008 TBLRD -008882 50f5 MOVF 0xf5,0x0,0x0 -008884 e1f0 BNZ 0x8866 +008836 2adf INCF 0xdf,0x1,0x0 len++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008838 0eff MOVLW 0xff if(len == 255u) break; // Break loop once max len is reached. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00883a 5cdf SUBWF 0xdf,0x0,0x0 +00883c e00c BZ 0x8856 +00883e 0e01 MOVLW 0x1 }while(*pData++); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008840 cfdb MOVFF 0xfdb,0xff6 +008842 fff6 +008844 2adb INCF 0xdb,0x1,0x0 +008846 0e02 MOVLW 0x2 +008848 cfdb MOVFF 0xfdb,0xff7 +00884a fff7 +00884c e301 BNC 0x8850 +00884e 2adb INCF 0xdb,0x1,0x0 +008850 0008 TBLRD +008852 50f5 MOVF 0xf5,0x0,0x0 +008854 e1f0 BNZ 0x8836 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Second piece of information (length of data to send) is ready. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5727,29 +5727,29 @@ Address Value Disassembly Source * which should be called once per Main Program loop. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008886 d8ae RCALL 0x89e4 mUSBUSARTTxRom((ROM BYTE*)data,len); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008888 cfdf MOVFF 0xfdf,0x5a9 -00888a f5a9 -00888c 0105 MOVLB 0x5 -00888e 6baa CLRF 0xaa,0x1 -008890 0e01 MOVLW 0x1 -008892 6fa4 MOVWF 0xa4,0x1 -0089e4 0efd MOVLW 0xfd -0089e6 cfdb MOVFF 0xfdb,0x5a5 -0089e8 f5a5 -0089ea 0efe MOVLW 0xfe -0089ec cfdb MOVFF 0xfdb,0x5a6 -0089ee f5a6 -0089f0 0012 RETURN 0x0 +008856 d8ae RCALL 0x89b4 mUSBUSARTTxRom((ROM BYTE*)data,len); // See cdc.h D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008858 cfdf MOVFF 0xfdf,0x5a9 +00885a f5a9 +00885c 0105 MOVLB 0x5 +00885e 6baa CLRF 0xaa,0x1 +008860 0e01 MOVLW 0x1 +008862 6fa4 MOVWF 0xa4,0x1 +0089b4 0efd MOVLW 0xfd +0089b6 cfdb MOVFF 0xfdb,0x5a5 +0089b8 f5a5 +0089ba 0efe MOVLW 0xfe +0089bc cfdb MOVFF 0xfdb,0x5a6 +0089be f5a6 +0089c0 0012 RETURN 0x0 USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008894 0e03 MOVLW 0x3 }//end putrsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008896 5ce1 SUBWF 0xe1,0x0,0x0 -008898 e202 BC 0x889e -00889a 6ae1 CLRF 0xe1,0x0 -00889c 52e5 MOVF 0xe5,0x1,0x0 -00889e 6ee1 MOVWF 0xe1,0x0 -0088a0 d09d BRA 0x89dc +008864 0e03 MOVLW 0x3 }//end putrsUSBUSART D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008866 5ce1 SUBWF 0xe1,0x0,0x0 +008868 e202 BC 0x886e +00886a 6ae1 CLRF 0xe1,0x0 +00886c 52e5 MOVF 0xe5,0x1,0x0 +00886e 6ee1 MOVWF 0xe1,0x0 +008870 d09d BRA 0x89ac D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /************************************************************************ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c Function: D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5802,14 +5802,14 @@ Address Value Disassembly Source None D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c ************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088a2 d897 RCALL 0x89d2 void CDCTxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088a4 0e02 MOVLW 0x2 -0088a6 26e1 ADDWF 0xe1,0x1,0x0 -0089d2 cfd9 MOVFF 0xfd9,0xfe6 -0089d4 ffe6 -0089d6 cfe1 MOVFF 0xfe1,0xfd9 -0089d8 ffd9 -0089da 0012 RETURN 0x0 +008872 d897 RCALL 0x89a2 void CDCTxService(void) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008874 0e02 MOVLW 0x2 +008876 26e1 ADDWF 0xe1,0x1,0x0 +0089a2 cfd9 MOVFF 0xfd9,0xfe6 +0089a4 ffe6 +0089a6 cfe1 MOVFF 0xfe1,0xfd9 +0089a8 ffd9 +0089aa 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c BYTE byte_to_send; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5818,22 +5818,22 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c CDCNotificationHandler(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088a8 0105 MOVLB 0x5 if(USBHandleBusy(CDCDataInHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088aa 51ad MOVF 0xad,0x0,0x1 -0088ac 11ae IORWF 0xae,0x0,0x1 -0088ae e102 BNZ 0x88b4 -0088b0 0e00 MOVLW 0x0 -0088b2 d008 BRA 0x88c4 -0088b4 c5ad MOVFF 0x5ad,0xfe9 -0088b6 ffe9 -0088b8 c5ae MOVFF 0x5ae,0xfea -0088ba ffea -0088bc 50ef MOVF 0xef,0x0,0x0 -0088be 0b80 ANDLW 0x80 -0088c0 e001 BZ 0x88c4 -0088c2 0e01 MOVLW 0x1 -0088c4 0900 IORLW 0x0 -0088c6 e153 BNZ 0x896e +008878 0105 MOVLB 0x5 if(USBHandleBusy(CDCDataInHandle)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00887a 51ad MOVF 0xad,0x0,0x1 +00887c 11ae IORWF 0xae,0x0,0x1 +00887e e102 BNZ 0x8884 +008880 0e00 MOVLW 0x0 +008882 d008 BRA 0x8894 +008884 c5ad MOVFF 0x5ad,0xfe9 +008886 ffe9 +008888 c5ae MOVFF 0x5ae,0xfea +00888a ffea +00888c 50ef MOVF 0xef,0x0,0x0 +00888e 0b80 ANDLW 0x80 +008890 e001 BZ 0x8894 +008892 0e01 MOVLW 0x1 +008894 0900 IORLW 0x0 +008896 e153 BNZ 0x893e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5844,16 +5844,16 @@ Address Value Disassembly Source * By having this stage, user can always check cdc_trf_state, D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * and not having to call mCDCUsartTxIsBusy() directly. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088c8 0e03 MOVLW 0x3 if(cdc_trf_state == CDC_TX_COMPLETING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088ca 5da4 SUBWF 0xa4,0x0,0x1 -0088cc e101 BNZ 0x88d0 -0088ce 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008898 0e03 MOVLW 0x3 if(cdc_trf_state == CDC_TX_COMPLETING) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00889a 5da4 SUBWF 0xa4,0x0,0x1 +00889c e101 BNZ 0x88a0 +00889e 6ba4 CLRF 0xa4,0x1 cdc_trf_state = CDC_TX_READY; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * If CDC_TX_READY state, nothing to do, just return. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088d0 51a4 MOVF 0xa4,0x0,0x1 if(cdc_trf_state == CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088d2 e04d BZ 0x896e +0088a0 51a4 MOVF 0xa4,0x0,0x1 if(cdc_trf_state == CDC_TX_READY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088a2 e04d BZ 0x893e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c return; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5862,107 +5862,107 @@ Address Value Disassembly Source /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * If CDC_TX_BUSY_ZLP state, send zero length packet D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088d4 0e02 MOVLW 0x2 if(cdc_trf_state == CDC_TX_BUSY_ZLP) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088d6 5da4 SUBWF 0xa4,0x0,0x1 -0088d8 e109 BNZ 0x88ec +0088a4 0e02 MOVLW 0x2 if(cdc_trf_state == CDC_TX_BUSY_ZLP) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088a6 5da4 SUBWF 0xa4,0x0,0x1 +0088a8 e109 BNZ 0x88bc { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088da 6ae6 CLRF 0xe6,0x0 CDCDataInHandle = USBTxOnePacket(CDC_DATA_EP,NULL,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088dc 0e00 MOVLW 0x0 -0088de 6ee6 MOVWF 0xe6,0x0 -0088e0 6ae6 CLRF 0xe6,0x0 -0088e2 d859 RCALL 0x8996 -008996 0e01 MOVLW 0x1 -008998 6ee6 MOVWF 0xe6,0x0 -00899a d837 RCALL 0x8a0a -00899c cff3 MOVFF 0xff3,0x5ad -00899e f5ad -0089a0 cff4 MOVFF 0xff4,0x5ae -0089a2 f5ae -0089a4 0012 RETURN 0x0 +0088aa 6ae6 CLRF 0xe6,0x0 CDCDataInHandle = USBTxOnePacket(CDC_DATA_EP,NULL,0); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088ac 0e00 MOVLW 0x0 +0088ae 6ee6 MOVWF 0xe6,0x0 +0088b0 6ae6 CLRF 0xe6,0x0 +0088b2 d859 RCALL 0x8966 +008966 0e01 MOVLW 0x1 +008968 6ee6 MOVWF 0xe6,0x0 +00896a d837 RCALL 0x89da +00896c cff3 MOVFF 0xff3,0x5ad +00896e f5ad +008970 cff4 MOVFF 0xff4,0x5ae +008972 f5ae +008974 0012 RETURN 0x0 //CDC_DATA_BD_IN.CNT = 0; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088e4 0105 MOVLB 0x5 cdc_trf_state = CDC_TX_COMPLETING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088e6 0e03 MOVLW 0x3 -0088e8 6fa4 MOVWF 0xa4,0x1 +0088b4 0105 MOVLB 0x5 cdc_trf_state = CDC_TX_COMPLETING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088b6 0e03 MOVLW 0x3 +0088b8 6fa4 MOVWF 0xa4,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088ea d041 BRA 0x896e else if(cdc_trf_state == CDC_TX_BUSY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088ec 05a4 DECF 0xa4,0x0,0x1 -0088ee e13f BNZ 0x896e +0088ba d041 BRA 0x893e else if(cdc_trf_state == CDC_TX_BUSY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088bc 05a4 DECF 0xa4,0x0,0x1 +0088be e13f BNZ 0x893e { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * First, have to figure out how many byte of data to send. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088f0 0e40 MOVLW 0x40 if(cdc_tx_len > sizeof(cdc_data_tx)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0088f2 6e4e MOVWF 0x4e,0x0 -0088f4 6a4f CLRF 0x4f,0x0 -0088f6 51a9 MOVF 0xa9,0x0,0x1 -0088f8 5c4e SUBWF 0x4e,0x0,0x0 -0088fa 0e00 MOVLW 0x0 -0088fc 584f SUBWFB 0x4f,0x0,0x0 -0088fe e203 BC 0x8906 -008900 0e40 MOVLW 0x40 byte_to_send = sizeof(cdc_data_tx); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008902 6edf MOVWF 0xdf,0x0 -008904 d002 BRA 0x890a else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008906 c5a9 MOVFF 0x5a9,0xfdf byte_to_send = cdc_tx_len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008908 ffdf +0088c0 0e40 MOVLW 0x40 if(cdc_tx_len > sizeof(cdc_data_tx)) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088c2 6e4e MOVWF 0x4e,0x0 +0088c4 6a4f CLRF 0x4f,0x0 +0088c6 51a9 MOVF 0xa9,0x0,0x1 +0088c8 5c4e SUBWF 0x4e,0x0,0x0 +0088ca 0e00 MOVLW 0x0 +0088cc 584f SUBWFB 0x4f,0x0,0x0 +0088ce e203 BC 0x88d6 +0088d0 0e40 MOVLW 0x40 byte_to_send = sizeof(cdc_data_tx); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088d2 6edf MOVWF 0xdf,0x0 +0088d4 d002 BRA 0x88da else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088d6 c5a9 MOVFF 0x5a9,0xfdf byte_to_send = cdc_tx_len; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088d8 ffdf D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c /* D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * Subtract the number of bytes just about to be sent from the total. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00890a 50df MOVF 0xdf,0x0,0x0 cdc_tx_len = cdc_tx_len - byte_to_send; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00890c 5da9 SUBWF 0xa9,0x0,0x1 -00890e 6fa9 MOVWF 0xa9,0x1 +0088da 50df MOVF 0xdf,0x0,0x0 cdc_tx_len = cdc_tx_len - byte_to_send; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088dc 5da9 SUBWF 0xa9,0x0,0x1 +0088de 6fa9 MOVWF 0xa9,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008910 0e14 MOVLW 0x14 pCDCDst.bRam = (BYTE*)&cdc_data_tx; // Set destination pointer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008912 6fa7 MOVWF 0xa7,0x1 -008914 0e05 MOVLW 0x5 -008916 6fa8 MOVWF 0xa8,0x1 +0088e0 0e14 MOVLW 0x14 pCDCDst.bRam = (BYTE*)&cdc_data_tx; // Set destination pointer D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088e2 6fa7 MOVWF 0xa7,0x1 +0088e4 0e05 MOVLW 0x5 +0088e6 6fa8 MOVWF 0xa8,0x1 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008918 0e01 MOVLW 0x1 i = byte_to_send; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00891a cfdf MOVFF 0xfdf,0xfdb -00891c ffdb -00891e 51aa MOVF 0xaa,0x0,0x1 if(cdc_mem_type == USB_EP0_ROM) // Determine type of memory source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008920 e10b BNZ 0x8938 +0088e8 0e01 MOVLW 0x1 i = byte_to_send; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088ea cfdf MOVFF 0xfdf,0xfdb +0088ec ffdb +0088ee 51aa MOVF 0xaa,0x0,0x1 if(cdc_mem_type == USB_EP0_ROM) // Determine type of memory source D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088f0 e10b BNZ 0x8908 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008922 0e01 MOVLW 0x1 while(i) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008924 50db MOVF 0xdb,0x0,0x0 -008926 e012 BZ 0x894c -008936 d7f5 BRA 0x8922 +0088f2 0e01 MOVLW 0x1 while(i) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088f4 50db MOVF 0xdb,0x0,0x0 +0088f6 e012 BZ 0x891c +008906 d7f5 BRA 0x88f2 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008928 c5a5 MOVFF 0x5a5,0xff6 *pCDCDst.bRam = *pCDCSrc.bRom; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00892a fff6 -00892c c5a6 MOVFF 0x5a6,0xff7 -00892e fff7 -008930 0008 TBLRD -008932 50f5 MOVF 0xf5,0x0,0x0 -008934 d841 RCALL 0x89b8 -0089b8 c5a7 MOVFF 0x5a7,0xfe9 -0089ba ffe9 -0089bc c5a8 MOVFF 0x5a8,0xfea -0089be ffea -0089c0 6eef MOVWF 0xef,0x0 -0089c2 2ba7 INCF 0xa7,0x1,0x1 pCDCDst.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0089c4 0e00 MOVLW 0x0 -0089c6 23a8 ADDWFC 0xa8,0x1,0x1 -0089c8 2ba5 INCF 0xa5,0x1,0x1 pCDCSrc.bRom++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0089ca 23a6 ADDWFC 0xa6,0x1,0x1 -0089cc 0e01 MOVLW 0x1 i--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -0089ce 06db DECF 0xdb,0x1,0x0 -0089d0 0012 RETURN 0x0 +0088f8 c5a5 MOVFF 0x5a5,0xff6 *pCDCDst.bRam = *pCDCSrc.bRom; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +0088fa fff6 +0088fc c5a6 MOVFF 0x5a6,0xff7 +0088fe fff7 +008900 0008 TBLRD +008902 50f5 MOVF 0xf5,0x0,0x0 +008904 d841 RCALL 0x8988 +008988 c5a7 MOVFF 0x5a7,0xfe9 +00898a ffe9 +00898c c5a8 MOVFF 0x5a8,0xfea +00898e ffea +008990 6eef MOVWF 0xef,0x0 +008992 2ba7 INCF 0xa7,0x1,0x1 pCDCDst.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008994 0e00 MOVLW 0x0 +008996 23a8 ADDWFC 0xa8,0x1,0x1 +008998 2ba5 INCF 0xa5,0x1,0x1 pCDCSrc.bRom++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00899a 23a6 ADDWFC 0xa6,0x1,0x1 +00899c 0e01 MOVLW 0x1 i--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00899e 06db DECF 0xdb,0x1,0x0 +0089a0 0012 RETURN 0x0 }//end while(byte_to_send) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c } D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c else // _RAM D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008938 0e01 MOVLW 0x1 while(i) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00893a 50db MOVF 0xdb,0x0,0x0 -00893c e007 BZ 0x894c -00894a d7f6 BRA 0x8938 +008908 0e01 MOVLW 0x1 while(i) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00890a 50db MOVF 0xdb,0x0,0x0 +00890c e007 BZ 0x891c +00891a d7f6 BRA 0x8908 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00893e c5a5 MOVFF 0x5a5,0xfe9 *pCDCDst.bRam = *pCDCSrc.bRam; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008940 ffe9 -008942 c5a6 MOVFF 0x5a6,0xfea -008944 ffea -008946 50ef MOVF 0xef,0x0,0x0 -008948 d837 RCALL 0x89b8 +00890e c5a5 MOVFF 0x5a5,0xfe9 *pCDCDst.bRam = *pCDCSrc.bRam; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008910 ffe9 +008912 c5a6 MOVFF 0x5a6,0xfea +008914 ffea +008916 50ef MOVF 0xef,0x0,0x0 +008918 d837 RCALL 0x8988 pCDCDst.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c pCDCSrc.bRam++; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c i--; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -5973,40 +5973,40 @@ Address Value Disassembly Source * Lastly, determine if a zero length packet state is necessary. D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c * See explanation in USB Specification 2.0: Section 5.8.3 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c */ D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00894c 0105 MOVLB 0x5 if(cdc_tx_len == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00894e 51a9 MOVF 0xa9,0x0,0x1 -008950 e107 BNZ 0x8960 +00891c 0105 MOVLB 0x5 if(cdc_tx_len == 0u) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00891e 51a9 MOVF 0xa9,0x0,0x1 +008920 e107 BNZ 0x8930 { D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008952 0e40 MOVLW 0x40 if(byte_to_send == CDC_DATA_IN_EP_SIZE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008954 5cdf SUBWF 0xdf,0x0,0x0 -008956 e102 BNZ 0x895c -008958 0e02 MOVLW 0x2 cdc_trf_state = CDC_TX_BUSY_ZLP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00895a d001 BRA 0x895e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00895c 0e03 MOVLW 0x3 cdc_trf_state = CDC_TX_COMPLETING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00895e 6fa4 MOVWF 0xa4,0x1 +008922 0e40 MOVLW 0x40 if(byte_to_send == CDC_DATA_IN_EP_SIZE) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008924 5cdf SUBWF 0xdf,0x0,0x0 +008926 e102 BNZ 0x892c +008928 0e02 MOVLW 0x2 cdc_trf_state = CDC_TX_BUSY_ZLP; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00892a d001 BRA 0x892e else D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00892c 0e03 MOVLW 0x3 cdc_trf_state = CDC_TX_COMPLETING; D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +00892e 6fa4 MOVWF 0xa4,0x1 }//end if(cdc_tx_len...) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008960 cfdf MOVFF 0xfdf,0xfe6 CDCDataInHandle = USBTxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_tx,byte_to_send); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008962 ffe6 -008964 0e14 MOVLW 0x14 -008966 6ee6 MOVWF 0xe6,0x0 -008968 0e05 MOVLW 0x5 -00896a 6ee6 MOVWF 0xe6,0x0 -00896c d814 RCALL 0x8996 +008930 cfdf MOVFF 0xfdf,0xfe6 CDCDataInHandle = USBTxOnePacket(CDC_DATA_EP,(BYTE*)&cdc_data_tx,byte_to_send); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008932 ffe6 +008934 0e14 MOVLW 0x14 +008936 6ee6 MOVWF 0xe6,0x0 +008938 0e05 MOVLW 0x5 +00893a 6ee6 MOVWF 0xe6,0x0 +00893c d814 RCALL 0x8966 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c }//end if(cdc_tx_sate == CDC_TX_BUSY) D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -00896e 0e02 MOVLW 0x2 }//end CDCTxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c -008970 5ce1 SUBWF 0xe1,0x0,0x0 -008972 e202 BC 0x8978 -008974 6ae1 CLRF 0xe1,0x0 -008976 52e5 MOVF 0xe5,0x1,0x0 -008978 6ee1 MOVWF 0xe1,0x0 -00897a d030 BRA 0x89dc -0089dc 52e5 MOVF 0xe5,0x1,0x0 -0089de cfe7 MOVFF 0xfe7,0xfd9 -0089e0 ffd9 -0089e2 0012 RETURN 0x0 +00893e 0e02 MOVLW 0x2 }//end CDCTxService D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c +008940 5ce1 SUBWF 0xe1,0x0,0x0 +008942 e202 BC 0x8948 +008944 6ae1 CLRF 0xe1,0x0 +008946 52e5 MOVF 0xe5,0x1,0x0 +008948 6ee1 MOVWF 0xe1,0x0 +00894a d030 BRA 0x89ac +0089ac 52e5 MOVF 0xe5,0x1,0x0 +0089ae cfe7 MOVFF 0xfe7,0xfd9 +0089b0 ffd9 +0089b2 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c #endif //USB_USE_CDC D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c D:\Projects\EggBot1-GH\EBB_firmware\Microchip\USB\CDC Device Driver\usb_function_cdc.c @@ -8754,7 +8754,7 @@ Address Value Disassembly Source 001a0c 0e01 MOVLW 0x1 AnalogConfigure(RA0_CUR_ADJ_ADC_CHANNEL,1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 001a0e 6ee6 MOVWF 0xe6,0x0 001a10 6ae6 CLRF 0xe6,0x0 -001a12 ec26 CALL 0x5c4c,0x0 +001a12 ec13 CALL 0x5c26,0x0 001a14 f02e 001a16 52e5 MOVF 0xe5,0x1,0x0 001a18 52e5 MOVF 0xe5,0x1,0x0 @@ -8763,7 +8763,7 @@ Address Value Disassembly Source 001a1c 6ee6 MOVWF 0xe6,0x0 001a1e 0e0b MOVLW 0xb 001a20 6ee6 MOVWF 0xe6,0x0 -001a22 ec26 CALL 0x5c4c,0x0 +001a22 ec13 CALL 0x5c26,0x0 001a24 f02e 001a26 52e5 MOVF 0xe5,0x1,0x0 001a28 52e5 MOVF 0xe5,0x1,0x0 @@ -10199,7 +10199,7 @@ Address Value Disassembly Source 003d58 6a46 CLRF 0x46,0x0 003d5a 6a47 CLRF 0x47,0x0 003d5c 6a48 CLRF 0x48,0x0 -003d5e efe0 GOTO 0x83c0 +003d5e efc8 GOTO 0x8390 003d60 f041 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c // We will use the SEState move parameter to hold a bitfield. This bitfield D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -10671,7 +10671,7 @@ Address Value Disassembly Source // Print the final values used by the ISR for this move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00226e ecf4 CALL 0x43e8,0x0 ebb_print((far rom char *)"R1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002270 f021 -0043e8 0e86 MOVLW 0x86 +0043e8 0e56 MOVLW 0x56 0043ea 6e4e MOVWF 0x4e,0x0 0043ec 0e8b MOVLW 0x8b 0043ee ec59 CALL 0x38b2,0x0 @@ -10682,7 +10682,7 @@ Address Value Disassembly Source 0043f4 f01e 002276 ec77 CALL 0x42ee,0x0 ebb_print((far rom char *)" S1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002278 f021 -0042ee 0e81 MOVLW 0x81 +0042ee 0e51 MOVLW 0x51 0042f0 6e4e MOVWF 0x4e,0x0 0042f2 0e8b MOVLW 0x8b 0042f4 ec59 CALL 0x38b2,0x0 @@ -10697,7 +10697,7 @@ Address Value Disassembly Source 004306 ffe6 004308 ef1e GOTO 0x3a3c 00430a f01d -00227a 0e7c MOVLW 0x7c ebb_print((far rom char *)" A1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +00227a 0e4c MOVLW 0x4c ebb_print((far rom char *)" A1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00227c 6e4e MOVWF 0x4e,0x0 00227e 0e8b MOVLW 0x8b 002280 ec59 CALL 0x38b2,0x0 @@ -10712,7 +10712,7 @@ Address Value Disassembly Source 002292 ffe6 002294 ec1b CALL 0x4036,0x0 002296 f020 -002298 0e77 MOVLW 0x77 ebb_print((far rom char *)" J1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002298 0e47 MOVLW 0x47 ebb_print((far rom char *)" J1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00229a 6e4e MOVWF 0x4e,0x0 00229c 0e8b MOVLW 0x8b 00229e ec59 CALL 0x38b2,0x0 @@ -10729,7 +10729,7 @@ Address Value Disassembly Source 0022b4 f020 0022b6 ecfb CALL 0x43f6,0x0 ebb_print((far rom char *)" R2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0022b8 f021 -0043f6 0e72 MOVLW 0x72 +0043f6 0e42 MOVLW 0x42 0043f8 6e4e MOVWF 0x4e,0x0 0043fa 0e8b MOVLW 0x8b 0043fc ec59 CALL 0x38b2,0x0 @@ -10740,7 +10740,7 @@ Address Value Disassembly Source 004402 f01e 0022be ec86 CALL 0x430c,0x0 ebb_print((far rom char *)" S2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0022c0 f021 -00430c 0e6d MOVLW 0x6d +00430c 0e3d MOVLW 0x3d 00430e 6e4e MOVWF 0x4e,0x0 004310 0e8b MOVLW 0x8b 004312 ec59 CALL 0x38b2,0x0 @@ -10755,7 +10755,7 @@ Address Value Disassembly Source 004324 ffe6 004326 ef1e GOTO 0x3a3c 004328 f01d -0022c2 0e68 MOVLW 0x68 ebb_print((far rom char *)" A2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0022c2 0e38 MOVLW 0x38 ebb_print((far rom char *)" A2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0022c4 6e4e MOVWF 0x4e,0x0 0022c6 0e8b MOVLW 0x8b 0022c8 ec59 CALL 0x38b2,0x0 @@ -10770,7 +10770,7 @@ Address Value Disassembly Source 0022da ffe6 0022dc ec1b CALL 0x4036,0x0 0022de f020 -0022e0 0e63 MOVLW 0x63 ebb_print((far rom char *)" J2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0022e0 0e33 MOVLW 0x33 ebb_print((far rom char *)" J2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0022e2 6e4e MOVWF 0x4e,0x0 0022e4 0e8b MOVLW 0x8b 0022e6 ec59 CALL 0x38b2,0x0 @@ -10785,7 +10785,7 @@ Address Value Disassembly Source 0022f8 ffe6 0022fa ec1b CALL 0x4036,0x0 0022fc f020 -0022fe 0e5e MOVLW 0x5e ebb_print((far rom char *)" SE="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0022fe 0e2e MOVLW 0x2e ebb_print((far rom char *)" SE="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002300 6e4e MOVWF 0x4e,0x0 002302 0e8b MOVLW 0x8b 002304 ec59 CALL 0x38b2,0x0 @@ -11206,7 +11206,7 @@ Address Value Disassembly Source 002514 aa09 BTFSS 0x9,0x5,0x0 if(bittst(TestMode, TEST_MODE_DEBUG_COMMAND_NUM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002516 d039 BRA 0x258a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -002518 0e58 MOVLW 0x58 ebb_print((far rom char *)"Freq="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002518 0e28 MOVLW 0x28 ebb_print((far rom char *)"Freq="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00251a 6e4e MOVWF 0x4e,0x0 00251c 0e8b MOVLW 0x8b 00251e ec59 CALL 0x38b2,0x0 @@ -11217,7 +11217,7 @@ Address Value Disassembly Source 002528 f04f 00252a ec0e CALL 0x3a1c,0x0 00252c f01d -00252e 0e4f MOVLW 0x4f ebb_print((far rom char *)" Dest_X="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +00252e 0e1f MOVLW 0x1f ebb_print((far rom char *)" Dest_X="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002530 6e4e MOVWF 0x4e,0x0 002532 0e8b MOVLW 0x8b 002534 ec59 CALL 0x38b2,0x0 @@ -11226,7 +11226,7 @@ Address Value Disassembly Source 00253a 0f02 ADDLW 0x2 00253c ec45 CALL 0x428a,0x0 00253e f021 -002540 0e46 MOVLW 0x46 ebb_print((far rom char *)" Dest_Y="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002540 0e16 MOVLW 0x16 ebb_print((far rom char *)" Dest_Y="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002542 6e4e MOVWF 0x4e,0x0 002544 0e8b MOVLW 0x8b 002546 ec59 CALL 0x38b2,0x0 @@ -11235,7 +11235,7 @@ Address Value Disassembly Source 00254c 0f06 ADDLW 0x6 00254e ec45 CALL 0x428a,0x0 002550 f021 -002552 0e3b MOVLW 0x3b ebb_print((far rom char *)" Center_X="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002552 0e0b MOVLW 0xb ebb_print((far rom char *)" Center_X="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002554 6e4e MOVWF 0x4e,0x0 002556 0e8b MOVLW 0x8b 002558 ec59 CALL 0x38b2,0x0 @@ -11244,7 +11244,7 @@ Address Value Disassembly Source 00255e 0f0a ADDLW 0xa 002560 ec45 CALL 0x428a,0x0 002562 f021 -002564 0e30 MOVLW 0x30 ebb_print((far rom char *)" Center_Y="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002564 0e00 MOVLW 0x0 ebb_print((far rom char *)" Center_Y="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002566 6e4e MOVWF 0x4e,0x0 002568 0e8b MOVLW 0x8b 00256a ec59 CALL 0x38b2,0x0 @@ -11253,9 +11253,9 @@ Address Value Disassembly Source 002570 0f0e ADDLW 0xe 002572 ec45 CALL 0x428a,0x0 002574 f021 -002576 0e24 MOVLW 0x24 ebb_print((far rom char *)" Direction="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002576 0ef4 MOVLW 0xf4 ebb_print((far rom char *)" Direction="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002578 6e4e MOVWF 0x4e,0x0 -00257a 0e8b MOVLW 0x8b +00257a 0e8a MOVLW 0x8a 00257c ec59 CALL 0x38b2,0x0 00257e f01c 002580 0e12 MOVLW 0x12 ebb_print_int(direction); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -11266,9 +11266,9 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c #if 1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -00258a 0e02 MOVLW 0x2 ebb_print((far rom char *)"CM command disabled in this build"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +00258a 0ed2 MOVLW 0xd2 ebb_print((far rom char *)"CM command disabled in this build"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00258c 6e4e MOVWF 0x4e,0x0 -00258e 0e8b MOVLW 0x8b +00258e 0e8a MOVLW 0x8a 002590 ec39 CALL 0x4272,0x0 002592 f021 print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -11777,7 +11777,7 @@ Address Value Disassembly Source 003efa 6846 SETF 0x46,0x0 003efc 6847 SETF 0x47,0x0 003efe 6848 SETF 0x48,0x0 -003f00 ec8a CALL 0x9714,0x0 +003f00 ec71 CALL 0x96e2,0x0 003f02 f04b 003f04 503c MOVF 0x3c,0x0,0x0 003f06 0012 RETURN 0x0 @@ -11894,7 +11894,7 @@ Address Value Disassembly Source 0026a4 aa09 BTFSS 0x9,0x5,0x0 if(bittst(TestMode, TEST_MODE_DEBUG_COMMAND_NUM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0026a6 d01b BRA 0x26de { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -0026a8 0efc MOVLW 0xfc ebb_print((far rom char *)"Rate="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0026a8 0ecc MOVLW 0xcc ebb_print((far rom char *)"Rate="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0026aa 6e4e MOVWF 0x4e,0x0 0026ac 0e8a MOVLW 0x8a 0026ae ec59 CALL 0x38b2,0x0 @@ -11909,7 +11909,7 @@ Address Value Disassembly Source 0026c0 ffe6 0026c2 ec1e CALL 0x3a3c,0x0 0026c4 f01d -0026c6 0e81 MOVLW 0x81 ebb_print((far rom char *)" S1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0026c6 0e51 MOVLW 0x51 ebb_print((far rom char *)" S1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0026c8 6e4e MOVWF 0x4e,0x0 0026ca 0e8b MOVLW 0x8b 0026cc ec59 CALL 0x38b2,0x0 @@ -11926,15 +11926,15 @@ Address Value Disassembly Source 003ce4 ffe6 003ce6 ef1b GOTO 0x4036 003ce8 f020 -004036 ec0d CALL 0x8e1a,0x0 -004038 f047 +004036 ecf5 CALL 0x8dea,0x0 +004038 f046 00403a 52e5 MOVF 0xe5,0x1,0x0 00403c d1a8 BRA 0x438e 00438e 52e5 MOVF 0xe5,0x1,0x0 004390 52e5 MOVF 0xe5,0x1,0x0 004392 52e5 MOVF 0xe5,0x1,0x0 004394 0012 RETURN 0x0 -0026d4 0e6d MOVLW 0x6d ebb_print((far rom char *)" S2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0026d4 0e3d MOVLW 0x3d ebb_print((far rom char *)" S2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0026d6 6e4e MOVWF 0x4e,0x0 0026d8 0e8b MOVLW 0x8b 0026da ec95 CALL 0x432a,0x0 @@ -11970,7 +11970,7 @@ Address Value Disassembly Source 0026f0 f01e 0026f2 e106 BNZ 0x2700 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -0026f4 0edc MOVLW 0xdc ebb_print((far rom char *)"!0 Err: StepRate invalid value."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0026f4 0eac MOVLW 0xac ebb_print((far rom char *)"!0 Err: StepRate invalid value."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0026f6 6e4e MOVWF 0x4e,0x0 0026f8 0e8a MOVLW 0x8a 0026fa ec39 CALL 0x4272,0x0 @@ -12079,8 +12079,8 @@ Address Value Disassembly Source 002760 f01f 003b0e ecdb CALL 0x43b6,0x0 003b10 f021 -003b12 ec05 CALL 0x820a,0x0 -003b14 f041 +003b12 eced CALL 0x81da,0x0 +003b14 f040 003b16 db0f RCALL 0x4136 003b18 0eac MOVLW 0xac 003b1a 6e46 MOVWF 0x46,0x0 @@ -12090,10 +12090,10 @@ Address Value Disassembly Source 003b22 6e48 MOVWF 0x48,0x0 003b24 0e47 MOVLW 0x47 003b26 6e49 MOVWF 0x49,0x0 -003b28 ec73 CALL 0x82e6,0x0 +003b28 ec5b CALL 0x82b6,0x0 003b2a f041 -003b2c ef14 GOTO 0x8428 -003b2e f042 +003b2c effc GOTO 0x83f8 +003b2e f041 003e52 c040 MOVFF 0x40,0x130 003e54 f130 003e56 c041 MOVFF 0x41,0x131 @@ -12138,13 +12138,13 @@ Address Value Disassembly Source 00276c f020 00276e ec33 CALL 0x3a66,0x0 002770 f01d -003a66 ec07 CALL 0x820e,0x0 -003a68 f041 +003a66 ecef CALL 0x81de,0x0 +003a68 f040 003a6a db65 RCALL 0x4136 003a6c ecdb CALL 0x43b6,0x0 003a6e f021 003a70 dafb RCALL 0x4068 -003a72 ec73 CALL 0x82e6,0x0 +003a72 ec5b CALL 0x82b6,0x0 003a74 f041 003a76 efb1 GOTO 0x4162 003a78 f020 @@ -12161,13 +12161,13 @@ Address Value Disassembly Source 002774 f020 002776 eced CALL 0x39da,0x0 002778 f01c -0039da ec07 CALL 0x820e,0x0 -0039dc f041 +0039da ecef CALL 0x81de,0x0 +0039dc f040 0039de dbab RCALL 0x4136 0039e0 db6e RCALL 0x40be 0039e2 c051 MOVFF 0x51,0x49 0039e4 f049 -0039e6 ec20 CALL 0x8240,0x0 +0039e6 ec08 CALL 0x8210,0x0 0039e8 f041 0039ea dbf8 RCALL 0x41dc 0040be d98b RCALL 0x43d6 @@ -12210,7 +12210,7 @@ Address Value Disassembly Source 0039fa 6e51 MOVWF 0x51,0x0 0039fc db60 RCALL 0x40be 0039fe 6e49 MOVWF 0x49,0x0 -003a00 ec73 CALL 0x82e6,0x0 +003a00 ec5b CALL 0x82b6,0x0 003a02 f041 003a04 dbeb RCALL 0x41dc D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -12223,7 +12223,7 @@ Address Value Disassembly Source 003a0e 6e48 MOVWF 0x48,0x0 003a10 0e3f MOVLW 0x3f 003a12 dbc4 RCALL 0x419c -003a14 ec54 CALL 0x84a8,0x0 +003a14 ec3c CALL 0x8478,0x0 003a16 f042 003a18 0a01 XORLW 0x1 003a1a 0012 RETURN 0x0 @@ -12244,7 +12244,7 @@ Address Value Disassembly Source 003b36 6a48 CLRF 0x48,0x0 003b38 0e4f MOVLW 0x4f 003b3a db30 RCALL 0x419c -003b3c ec4b CALL 0x8496,0x0 +003b3c ec33 CALL 0x8466,0x0 003b3e f042 003b40 0a01 XORLW 0x1 003b42 0012 RETURN 0x0 @@ -12272,8 +12272,8 @@ Address Value Disassembly Source 003d96 f044 003d98 52dd MOVF 0xdd,0x1,0x0 003d9a 52dd MOVF 0xdd,0x1,0x0 -003d9c ef14 GOTO 0x8428 -003d9e f042 +003d9c effc GOTO 0x83f8 +003d9e f041 003e64 c040 MOVFF 0x40,0x134 003e66 f134 003e68 c041 MOVFF 0x41,0x135 @@ -12543,7 +12543,7 @@ Address Value Disassembly Source 00288c aa09 BTFSS 0x9,0x5,0x0 if(bittst(TestMode, TEST_MODE_DEBUG_COMMAND_NUM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 00288e d01b BRA 0x28c6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -002890 0ed2 MOVLW 0xd2 ebb_print((far rom char *)"Duration="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002890 0ea2 MOVLW 0xa2 ebb_print((far rom char *)"Duration="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002892 6e4e MOVWF 0x4e,0x0 002894 0e8a MOVLW 0x8a 002896 ec59 CALL 0x38b2,0x0 @@ -12558,14 +12558,14 @@ Address Value Disassembly Source 0028a8 ffe6 0028aa ec1e CALL 0x3a3c,0x0 0028ac f01d -0028ae 0ecc MOVLW 0xcc ebb_print((far rom char *)" SA1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0028ae 0e9c MOVLW 0x9c ebb_print((far rom char *)" SA1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0028b0 6e4e MOVWF 0x4e,0x0 0028b2 0e8a MOVLW 0x8a 0028b4 ec59 CALL 0x38b2,0x0 0028b6 f01c 0028b8 ec6b CALL 0x3cd6,0x0 ebb_print_int(gSteps1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0028ba f01e -0028bc 0ec6 MOVLW 0xc6 ebb_print((far rom char *)" SA2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0028bc 0e96 MOVLW 0x96 ebb_print((far rom char *)" SA2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0028be 6e4e MOVWF 0x4e,0x0 0028c0 0e8a MOVLW 0x8a 0028c2 ec95 CALL 0x432a,0x0 @@ -12655,7 +12655,7 @@ Address Value Disassembly Source 00293e 6a48 CLRF 0x48,0x0 002940 ec3b CALL 0x3e76,0x0 002942 f01f -002944 ec8a CALL 0x9714,0x0 +002944 ec71 CALL 0x96e2,0x0 002946 f04b 002948 c03c MOVFF 0x3c,0x12b 00294a f12b @@ -12720,12 +12720,12 @@ Address Value Disassembly Source 00298c f01f 00298e ec34 CALL 0x4068,0x0 002990 f020 -002992 ec20 CALL 0x8240,0x0 +002992 ec08 CALL 0x8210,0x0 002994 f041 002996 ecb1 CALL 0x4162,0x0 002998 f020 -004068 ec05 CALL 0x820a,0x0 -00406a f041 +004068 eced CALL 0x81da,0x0 +00406a f040 00406c c041 MOVFF 0x41,0x52 00406e f052 004070 c042 MOVFF 0x42,0x53 @@ -12783,8 +12783,8 @@ Address Value Disassembly Source 0029a4 f020 0029a6 ec5d CALL 0x3aba,0x0 0029a8 f01d -003aba ec07 CALL 0x820e,0x0 -003abc f041 +003aba ecef CALL 0x81de,0x0 +003abc f040 003abe 0e00 MOVLW 0x0 003ac0 cfdf MOVFF 0xfdf,0x46 003ac2 f046 @@ -12797,10 +12797,10 @@ Address Value Disassembly Source 003ad0 0e03 MOVLW 0x3 003ad2 cfdb MOVFF 0xfdb,0x49 003ad4 f049 -003ad6 ec73 CALL 0x82e6,0x0 +003ad6 ec5b CALL 0x82b6,0x0 003ad8 f041 -003ada ec14 CALL 0x8428,0x0 -003adc f042 +003ada ecfc CALL 0x83f8,0x0 +003adc f041 003ade c040 MOVFF 0x40,0x1c9 003ae0 f1c9 003ae2 c041 MOVFF 0x41,0x1ca @@ -12835,7 +12835,7 @@ Address Value Disassembly Source 0029ac 51c2 MOVF 0xc2,0x0,0x1 if (gLimitChecks) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0029ae e004 BZ 0x29b8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -0029b0 0ea2 MOVLW 0xa2 ebb_print((far rom char *)"!0 Err: step rate too high."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0029b0 0e72 MOVLW 0x72 ebb_print((far rom char *)"!0 Err: step rate too high."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0029b2 6e4e MOVWF 0x4e,0x0 0029b4 0e8a MOVLW 0x8a print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -12854,7 +12854,7 @@ Address Value Disassembly Source 0029c8 51c2 MOVF 0xc2,0x0,0x1 if (gLimitChecks) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0029ca e004 BZ 0x29d4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -0029cc 0e7e MOVLW 0x7e ebb_print((far rom char *)"!0 Err: step rate too slow."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +0029cc 0e4e MOVLW 0x4e ebb_print((far rom char *)"!0 Err: step rate too slow."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 0029ce 6e4e MOVWF 0x4e,0x0 0029d0 0e8a MOVLW 0x8a print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -12925,7 +12925,7 @@ Address Value Disassembly Source 002a10 51c2 MOVF 0xc2,0x0,0x1 if (gLimitChecks) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002a12 e004 BZ 0x2a1c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -002a14 0e5a MOVLW 0x5a ebb_print((far rom char *)"!0 Err: step rate too high."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002a14 0e2a MOVLW 0x2a ebb_print((far rom char *)"!0 Err: step rate too high."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002a16 6e4e MOVWF 0x4e,0x0 002a18 0e8a MOVLW 0x8a print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c @@ -12949,7 +12949,7 @@ Address Value Disassembly Source 002a2c 51c2 MOVF 0xc2,0x0,0x1 if (gLimitChecks) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002a2e e006 BZ 0x2a3c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c -002a30 0e36 MOVLW 0x36 ebb_print((far rom char *)"!0 Err: step rate too slow."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c +002a30 0e06 MOVLW 0x6 ebb_print((far rom char *)"!0 Err: step rate too slow."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 002a32 6e4e MOVWF 0x4e,0x0 002a34 0e8a MOVLW 0x8a 002a36 ec39 CALL 0x4272,0x0 @@ -13011,7 +13011,7 @@ Address Value Disassembly Source 0038ba 6ee6 MOVWF 0xe6,0x0 0038bc c050 MOVFF 0x50,0xfe6 0038be ffe6 -0038c0 ec9a CALL 0x8d34,0x0 +0038c0 ec82 CALL 0x8d04,0x0 0038c2 f046 0038c4 efc7 GOTO 0x438e 0038c6 f021 @@ -13885,7 +13885,7 @@ Address Value Disassembly Source 003f9e cfdd MOVFF 0xfdd,0xfe6 003fa0 ffe6 003fa2 0012 RETURN 0x0 -004250 ec9b CALL 0x7f36,0x0 +004250 ec83 CALL 0x7f06,0x0 004252 f03f 004254 6e4e MOVWF 0x4e,0x0 004256 0e08 MOVLW 0x8 @@ -14303,7 +14303,7 @@ Address Value Disassembly Source 002fb8 f021 002fba ec19 CALL 0x4232,0x0 002fbc f021 -003a3c ecf1 CALL 0x8de2,0x0 +003a3c ecd9 CALL 0x8db2,0x0 003a3e f046 003a40 52e5 MOVF 0xe5,0x1,0x0 003a42 efc7 GOTO 0x438e @@ -14439,7 +14439,7 @@ Address Value Disassembly Source 003048 6a4f CLRF 0x4f,0x0 00304a ec29 CALL 0x4052,0x0 00304c f020 -00304e ecb7 CALL 0x8d6e,0x0 +00304e ec9f CALL 0x8d3e,0x0 003050 f046 003052 6e52 MOVWF 0x52,0x0 003054 0e05 MOVLW 0x5 @@ -14450,7 +14450,7 @@ Address Value Disassembly Source 003d62 0e01 MOVLW 0x1 003d64 6ee6 MOVWF 0xe6,0x0 003d66 d28d BRA 0x4282 -004282 ec0d CALL 0x541a,0x0 +004282 ec0f CALL 0x541e,0x0 004284 f02a 004286 52e5 MOVF 0xe5,0x1,0x0 004288 0012 RETURN 0x0 @@ -14495,7 +14495,7 @@ Address Value Disassembly Source 00306e ec05 CALL 0x440a,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 003070 f022 003a22 6ae6 CLRF 0xe6,0x0 -003a24 ecef CALL 0x53de,0x0 +003a24 ecf1 CALL 0x53e2,0x0 003a26 f029 003a28 52e5 MOVF 0xe5,0x1,0x0 003a2a 52e5 MOVF 0xe5,0x1,0x0 @@ -14540,7 +14540,7 @@ Address Value Disassembly Source 00307c ec6f CALL 0x40de,0x0 00307e f020 0038a6 6ee6 MOVWF 0xe6,0x0 -0038a8 ec20 CALL 0x6640,0x0 +0038a8 ec11 CALL 0x6622,0x0 0038aa f033 0038ac 52e5 MOVF 0xe5,0x1,0x0 0038ae efc7 GOTO 0x438e @@ -14942,7 +14942,7 @@ Address Value Disassembly Source 003264 0e01 MOVLW 0x1 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb.c 003266 6ee6 MOVWF 0xe6,0x0 003268 6ee6 MOVWF 0xe6,0x0 -00326a ecef CALL 0x53de,0x0 +00326a ecf1 CALL 0x53e2,0x0 00326c f029 00326e 52e5 MOVF 0xe5,0x1,0x0 003270 52e5 MOVF 0xe5,0x1,0x0 @@ -16115,7 +16115,7 @@ Address Value Disassembly Source #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c void _reset (void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -001000 ef68 GOTO 0x98d0 _asm goto _startup _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +001000 ef4f GOTO 0x989e _asm goto _startup _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c 001002 f04c 001004 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16151,12 +16151,12 @@ Address Value Disassembly Source *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c void main(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009142 ecf5 CALL 0x47ea,0x0 fill_stack(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009144 f023 +009112 ecf5 CALL 0x47ea,0x0 fill_stack(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009114 f023 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009146 d805 RCALL 0x9152 InitializeSystem(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009116 d805 RCALL 0x9122 InitializeSystem(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009150 d7fb BRA 0x9148 while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009120 d7fb BRA 0x9118 while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #if defined(USB_INTERRUPT) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c if(USB_BUS_SENSE && (USBGetDeviceState() == DETACHED_STATE)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16166,8 +16166,8 @@ Address Value Disassembly Source #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #if defined(USB_POLLING) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Check bus status and service USB interrupts. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009148 ec96 CALL 0x712c,0x0 USBDeviceTasks(); // Interrupt or polling method. If using polling, must call D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00914a f038 +009118 ec7e CALL 0x70fc,0x0 USBDeviceTasks(); // Interrupt or polling method. If using polling, must call D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00911a f038 // this function periodically. This function will take care D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // of processing and responding to SETUP transactions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // (such as during the enumeration process when you first D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16182,8 +16182,8 @@ Address Value Disassembly Source #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Application-specific tasks. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Application related code may be added here, or in the ProcessIO() function. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00914c ec22 CALL 0x4a44,0x0 ProcessIO(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00914e f025 +00911c ec22 CALL 0x4a44,0x0 ProcessIO(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00911e f025 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16207,24 +16207,24 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009152 cfd9 MOVFF 0xfd9,0xfe6 static void InitializeSystem(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009154 ffe6 -009156 cfe1 MOVFF 0xfe1,0xfd9 -009158 ffd9 -00915a 0e02 MOVLW 0x2 -00915c 26e1 ADDWF 0xe1,0x1,0x0 +009122 cfd9 MOVFF 0xfd9,0xfe6 static void InitializeSystem(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009124 ffe6 +009126 cfe1 MOVFF 0xfe1,0xfd9 +009128 ffd9 +00912a 0e02 MOVLW 0x2 +00912c 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c unsigned int pll_startup_counter; //Used for software delay while PLL is starting up D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Configure all I/O pins to use digital input buffers. The PIC18F87J50 Family devices D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // use the ANCONx registers to control this, which is different from other devices which D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // use the ADCON1 register for this purpose. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00915e 010f MOVLB 0xf ANCON0 = 0xFF; // Default all pins to digital D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009160 6948 SETF 0x48,0x1 -009162 6949 SETF 0x49,0x1 ANCON1 = 0xFF; // Default all pins to digital D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00912e 010f MOVLB 0xf ANCON0 = 0xFF; // Default all pins to digital D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009130 6948 SETF 0x48,0x1 +009132 6949 SETF 0x49,0x1 ANCON1 = 0xFF; // Default all pins to digital D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009164 0e60 MOVLW 0x60 OSCCON = 0x60; // Clock switch to primary clock source. May not have been running D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009166 6ed3 MOVWF 0xd3,0x0 +009134 0e60 MOVLW 0x60 OSCCON = 0x60; // Clock switch to primary clock source. May not have been running D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009136 6ed3 MOVWF 0xd3,0x0 // from this if the bootloader is called from the application firmware. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // On the PIC18F46J50 Family of USB microcontrollers, the PLL will not power up and be enabled D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16234,22 +16234,22 @@ Address Value Disassembly Source // operation. On these devices, user firmware needs to manually set the OSCTUNE bit to D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // power up the PLL. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009168 8c9b BSF 0x9b,0x6,0x0 OSCTUNEbits.PLLEN = 1; // Enable the PLL and wait 2+ms until the PLL locks before enabling USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00916a 0e58 MOVLW 0x58 pll_startup_counter = 600; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00916c 6ede MOVWF 0xde,0x0 -00916e 0e02 MOVLW 0x2 -009170 6edd MOVWF 0xdd,0x0 -009172 cfdf MOVFF 0xfdf,0x4e while(pll_startup_counter--) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009174 f04e -009176 06df DECF 0xdf,0x1,0x0 -009178 0e01 MOVLW 0x1 -00917a cfdb MOVFF 0xfdb,0x4f -00917c f04f -00917e e201 BC 0x9182 -009180 06db DECF 0xdb,0x1,0x0 -009182 504e MOVF 0x4e,0x0,0x0 -009184 104f IORWF 0x4f,0x0,0x0 -009186 e1f5 BNZ 0x9172 +009138 8c9b BSF 0x9b,0x6,0x0 OSCTUNEbits.PLLEN = 1; // Enable the PLL and wait 2+ms until the PLL locks before enabling USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00913a 0e58 MOVLW 0x58 pll_startup_counter = 600; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00913c 6ede MOVWF 0xde,0x0 +00913e 0e02 MOVLW 0x2 +009140 6edd MOVWF 0xdd,0x0 +009142 cfdf MOVFF 0xfdf,0x4e while(pll_startup_counter--) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009144 f04e +009146 06df DECF 0xdf,0x1,0x0 +009148 0e01 MOVLW 0x1 +00914a cfdb MOVFF 0xfdb,0x4f +00914c f04f +00914e e201 BC 0x9152 +009150 06db DECF 0xdb,0x1,0x0 +009152 504e MOVF 0x4e,0x0,0x0 +009154 104f IORWF 0x4f,0x0,0x0 +009156 e1f5 BNZ 0x9142 ; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Device switches over automatically to PLL output after PLL is locked and ready. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16271,7 +16271,7 @@ Address Value Disassembly Source // sense feature by making sure "USE_USB_BUS_SENSE_IO" has been defined in the D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // HardwareProfile.h file. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #if defined(USE_USB_BUS_SENSE_IO) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009188 8e94 BSF 0x94,0x7,0x0 tris_usb_bus_sense = INPUT_PIN; // See HardwareProfile.h D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009158 8e94 BSF 0x94,0x7,0x0 tris_usb_bus_sense = INPUT_PIN; // See HardwareProfile.h D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // If the host PC sends a GetStatus (device) request, the firmware must respond D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16289,22 +16289,22 @@ Address Value Disassembly Source #if defined(USE_SELF_POWER_SENSE_IO) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c tris_self_power = INPUT_PIN; // See HardwareProfile.h D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00918a ec67 CALL 0x48ce,0x0 UserInit(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00918c f024 +00915a ec67 CALL 0x48ce,0x0 UserInit(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00915c f024 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00918e ec30 CALL 0x7060,0x0 USBDeviceInit(); // usb_device.c. Initializes USB module SFRs and firmware D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009190 f038 +00915e ec18 CALL 0x7030,0x0 USBDeviceInit(); // usb_device.c. Initializes USB module SFRs and firmware D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009160 f038 // variables to known states. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009192 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009194 5ce1 SUBWF 0xe1,0x0,0x0 -009196 e202 BC 0x919c -009198 6ae1 CLRF 0xe1,0x0 -00919a 52e5 MOVF 0xe5,0x1,0x0 -00919c 6ee1 MOVWF 0xe1,0x0 -00919e 52e5 MOVF 0xe5,0x1,0x0 -0091a0 cfe7 MOVFF 0xfe7,0xfd9 -0091a2 ffd9 -0091a4 0012 RETURN 0x0 +009162 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009164 5ce1 SUBWF 0xe1,0x0,0x0 +009166 e202 BC 0x916c +009168 6ae1 CLRF 0xe1,0x0 +00916a 52e5 MOVF 0xe5,0x1,0x0 +00916c 6ee1 MOVWF 0xe1,0x0 +00916e 52e5 MOVF 0xe5,0x1,0x0 +009170 cfe7 MOVFF 0xfe7,0xfd9 +009172 ffd9 +009174 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // ****************************************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // ************** USB Callback Functions **************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16360,7 +16360,7 @@ Address Value Disassembly Source #if defined(__C30__) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c USBSleepOnSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091a6 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009176 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCBWakeFromSuspend(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16393,7 +16393,7 @@ Address Value Disassembly Source // packets. In order to do this, the USB module must receive proper D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // clocking (IE: 48MHz clock must be available to SIE for full speed USB D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // operation). D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091a8 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009178 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCB_SOF_Handler(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16417,7 +16417,7 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // No need to clear UIRbits.SOFIF to 0 here. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Callback caller is already doing that. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091aa 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00917a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCBErrorHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16456,7 +16456,7 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Nevertheless, this callback function is provided, such as D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // for debugging purposes. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ac 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00917c 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCBCheckOtherReq(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16488,8 +16488,8 @@ Address Value Disassembly Source *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c void USBCBCheckOtherReq(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ae ef38 GOTO 0x8670 USBCheckCDCRequest(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091b0 f043 +00917e ef20 GOTO 0x8640 USBCheckCDCRequest(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009180 f043 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16514,7 +16514,7 @@ Address Value Disassembly Source void USBCBStdSetDscHandler(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Must claim session ownership if supporting this request D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091b2 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009182 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCBInitEP(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16538,8 +16538,8 @@ Address Value Disassembly Source *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c void USBCBInitEP(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091b4 ef86 GOTO 0x870c CDCInitEP(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091b6 f043 +009184 ef6e GOTO 0x86dc CDCInitEP(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009186 f043 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16642,23 +16642,23 @@ Address Value Disassembly Source // properties page for the USB device, power management tab, the D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // "Allow this device to bring the computer out of standby." check box D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // should be checked). D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091b8 0105 MOVLB 0x5 if (USBGetRemoteWakeupStatus() == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ba 05df DECF 0xdf,0x0,0x1 -0091bc e11e BNZ 0x91fa +009188 0105 MOVLB 0x5 if (USBGetRemoteWakeupStatus() == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00918a 05df DECF 0xdf,0x0,0x1 +00918c e11e BNZ 0x91ca { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Verify that the USB bus is in fact suspended, before we send D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // remote wakeup signaling. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091be 0105 MOVLB 0x5 if (USBIsBusSuspended() == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091c0 05e0 DECF 0xe0,0x0,0x1 -0091c2 e11b BNZ 0x91fa +00918e 0105 MOVLB 0x5 if (USBIsBusSuspended() == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009190 05e0 DECF 0xe0,0x0,0x1 +009192 e11b BNZ 0x91ca { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c USBMaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Clock switch to settings consistent with normal USB operation. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091c4 dff1 RCALL 0x91a8 USBCBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091c6 9265 BCF 0x65,0x1,0x0 USBSuspendControl = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091c8 0105 MOVLB 0x5 USBBusIsSuspended = FALSE; // So we don't execute this code again, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ca 6be0 CLRF 0xe0,0x1 +009194 dff1 RCALL 0x9178 USBCBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009196 9265 BCF 0x65,0x1,0x0 USBSuspendControl = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009198 0105 MOVLB 0x5 USBBusIsSuspended = FALSE; // So we don't execute this code again, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00919a 6be0 CLRF 0xe0,0x1 // until a new suspend condition is detected. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Section 7.1.7.7 of the USB 2.0 specifications indicates a USB D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16667,40 +16667,40 @@ Address Value Disassembly Source // gets met, is to add a 2ms+ blocking delay here (2ms plus at D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // least 3ms from bus idle to USBIsBusSuspended() == TRUE, yields D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // 5ms+ total delay since start of idle). D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091cc 0102 MOVLB 0x2 delay_count = 3600U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ce 0e10 MOVLW 0x10 -0091d0 6ffe MOVWF 0xfe,0x1 -0091d2 0e0e MOVLW 0xe -0091d4 6fff MOVWF 0xff,0x1 +00919c 0102 MOVLB 0x2 delay_count = 3600U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00919e 0e10 MOVLW 0x10 +0091a0 6ffe MOVWF 0xfe,0x1 +0091a2 0e0e MOVLW 0xe +0091a4 6fff MOVWF 0xff,0x1 do D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091d6 07fe DECF 0xfe,0x1,0x1 delay_count--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091d8 0e00 MOVLW 0x0 -0091da 5bff SUBWFB 0xff,0x1,0x1 -0091dc 51fe MOVF 0xfe,0x0,0x1 }while(delay_count); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091de 11ff IORWF 0xff,0x0,0x1 -0091e0 e1fa BNZ 0x91d6 +0091a6 07fe DECF 0xfe,0x1,0x1 delay_count--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091a8 0e00 MOVLW 0x0 +0091aa 5bff SUBWFB 0xff,0x1,0x1 +0091ac 51fe MOVF 0xfe,0x0,0x1 }while(delay_count); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091ae 11ff IORWF 0xff,0x0,0x1 +0091b0 e1fa BNZ 0x91a6 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Now drive the resume K-state signaling onto the USB bus. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091e2 8465 BSF 0x65,0x2,0x0 USBResumeControl = 1; // Start RESUME signaling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091e4 0e08 MOVLW 0x8 delay_count = 1800U; // Set RESUME line for 1-13 ms D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091e6 6ffe MOVWF 0xfe,0x1 -0091e8 0e07 MOVLW 0x7 -0091ea 6fff MOVWF 0xff,0x1 +0091b2 8465 BSF 0x65,0x2,0x0 USBResumeControl = 1; // Start RESUME signaling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091b4 0e08 MOVLW 0x8 delay_count = 1800U; // Set RESUME line for 1-13 ms D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091b6 6ffe MOVWF 0xfe,0x1 +0091b8 0e07 MOVLW 0x7 +0091ba 6fff MOVWF 0xff,0x1 do D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ec 07fe DECF 0xfe,0x1,0x1 delay_count--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091ee 0e00 MOVLW 0x0 -0091f0 5bff SUBWFB 0xff,0x1,0x1 -0091f2 51fe MOVF 0xfe,0x0,0x1 }while(delay_count); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091f4 11ff IORWF 0xff,0x0,0x1 -0091f6 e1fa BNZ 0x91ec -0091f8 9465 BCF 0x65,0x2,0x0 USBResumeControl = 0; // Finished driving resume signaling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091bc 07fe DECF 0xfe,0x1,0x1 delay_count--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091be 0e00 MOVLW 0x0 +0091c0 5bff SUBWFB 0xff,0x1,0x1 +0091c2 51fe MOVF 0xfe,0x0,0x1 }while(delay_count); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091c4 11ff IORWF 0xff,0x0,0x1 +0091c6 e1fa BNZ 0x91bc +0091c8 9465 BCF 0x65,0x2,0x0 USBResumeControl = 0; // Finished driving resume signaling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c USBUnmaskInterrupts(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091fa 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091ca 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /******************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Function: void USBCBEP0DataReceived(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16753,87 +16753,87 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c *******************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091fc cfd9 MOVFF 0xfd9,0xfe6 BOOL USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, WORD size) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -0091fe ffe6 -009200 cfe1 MOVFF 0xfe1,0xfd9 -009202 ffd9 +0091cc cfd9 MOVFF 0xfd9,0xfe6 BOOL USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, WORD size) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091ce ffe6 +0091d0 cfe1 MOVFF 0xfe1,0xfd9 +0091d2 ffd9 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009204 0efd MOVLW 0xfd switch(event) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009206 cfdb MOVFF 0xfdb,0x42 -009208 f042 -00920a 0efe MOVLW 0xfe -00920c cfdb MOVFF 0xfdb,0x43 -00920e f043 -009210 0e05 MOVLW 0x5 -009212 1842 XORWF 0x42,0x0,0x0 -009214 e101 BNZ 0x9218 -009216 5043 MOVF 0x43,0x0,0x0 -009218 e036 BZ 0x9286 -00921a 68e8 SETF 0xe8,0x0 -00921c 1842 XORWF 0x42,0x0,0x0 -00921e e102 BNZ 0x9224 -009220 0e7f MOVLW 0x7f -009222 1843 XORWF 0x43,0x0,0x0 -009224 e02f BZ 0x9284 -009226 0e03 MOVLW 0x3 -009228 1842 XORWF 0x42,0x0,0x0 -00922a e101 BNZ 0x922e -00922c 5043 MOVF 0x43,0x0,0x0 -00922e e028 BZ 0x9280 -009230 0e02 MOVLW 0x2 -009232 1842 XORWF 0x42,0x0,0x0 -009234 e101 BNZ 0x9238 -009236 5043 MOVF 0x43,0x0,0x0 -009238 e021 BZ 0x927c -00923a 0e01 MOVLW 0x1 -00923c 1842 XORWF 0x42,0x0,0x0 -00923e e101 BNZ 0x9242 -009240 5043 MOVF 0x43,0x0,0x0 -009242 e01a BZ 0x9278 -009244 0e74 MOVLW 0x74 -009246 1842 XORWF 0x42,0x0,0x0 -009248 e101 BNZ 0x924c -00924a 5043 MOVF 0x43,0x0,0x0 -00924c e013 BZ 0x9274 -00924e 0e75 MOVLW 0x75 -009250 1842 XORWF 0x42,0x0,0x0 -009252 e101 BNZ 0x9256 -009254 5043 MOVF 0x43,0x0,0x0 -009256 e00c BZ 0x9270 -009258 0e73 MOVLW 0x73 -00925a 1842 XORWF 0x42,0x0,0x0 -00925c e101 BNZ 0x9260 -00925e 5043 MOVF 0x43,0x0,0x0 -009260 e005 BZ 0x926c -009262 0e72 MOVLW 0x72 -009264 1842 XORWF 0x42,0x0,0x0 -009266 e10f BNZ 0x9286 -009268 5043 MOVF 0x43,0x0,0x0 -00926a d00d BRA 0x9286 +0091d4 0efd MOVLW 0xfd switch(event) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +0091d6 cfdb MOVFF 0xfdb,0x42 +0091d8 f042 +0091da 0efe MOVLW 0xfe +0091dc cfdb MOVFF 0xfdb,0x43 +0091de f043 +0091e0 0e05 MOVLW 0x5 +0091e2 1842 XORWF 0x42,0x0,0x0 +0091e4 e101 BNZ 0x91e8 +0091e6 5043 MOVF 0x43,0x0,0x0 +0091e8 e036 BZ 0x9256 +0091ea 68e8 SETF 0xe8,0x0 +0091ec 1842 XORWF 0x42,0x0,0x0 +0091ee e102 BNZ 0x91f4 +0091f0 0e7f MOVLW 0x7f +0091f2 1843 XORWF 0x43,0x0,0x0 +0091f4 e02f BZ 0x9254 +0091f6 0e03 MOVLW 0x3 +0091f8 1842 XORWF 0x42,0x0,0x0 +0091fa e101 BNZ 0x91fe +0091fc 5043 MOVF 0x43,0x0,0x0 +0091fe e028 BZ 0x9250 +009200 0e02 MOVLW 0x2 +009202 1842 XORWF 0x42,0x0,0x0 +009204 e101 BNZ 0x9208 +009206 5043 MOVF 0x43,0x0,0x0 +009208 e021 BZ 0x924c +00920a 0e01 MOVLW 0x1 +00920c 1842 XORWF 0x42,0x0,0x0 +00920e e101 BNZ 0x9212 +009210 5043 MOVF 0x43,0x0,0x0 +009212 e01a BZ 0x9248 +009214 0e74 MOVLW 0x74 +009216 1842 XORWF 0x42,0x0,0x0 +009218 e101 BNZ 0x921c +00921a 5043 MOVF 0x43,0x0,0x0 +00921c e013 BZ 0x9244 +00921e 0e75 MOVLW 0x75 +009220 1842 XORWF 0x42,0x0,0x0 +009222 e101 BNZ 0x9226 +009224 5043 MOVF 0x43,0x0,0x0 +009226 e00c BZ 0x9240 +009228 0e73 MOVLW 0x73 +00922a 1842 XORWF 0x42,0x0,0x0 +00922c e101 BNZ 0x9230 +00922e 5043 MOVF 0x43,0x0,0x0 +009230 e005 BZ 0x923c +009232 0e72 MOVLW 0x72 +009234 1842 XORWF 0x42,0x0,0x0 +009236 e10f BNZ 0x9256 +009238 5043 MOVF 0x43,0x0,0x0 +00923a d00d BRA 0x9256 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_TRANSFER: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Add application specific callback task or callback function here if desired. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_SOF: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00926c df9e RCALL 0x91aa USBCB_SOF_Handler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00926e d00b BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00923c df9e RCALL 0x917a USBCB_SOF_Handler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00923e d00b BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_SUSPEND: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009270 df9a RCALL 0x91a6 USBCBSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009272 d009 BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009240 df9a RCALL 0x9176 USBCBSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009242 d009 BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_RESUME: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009274 df99 RCALL 0x91a8 USBCBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009276 d007 BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009244 df99 RCALL 0x9178 USBCBWakeFromSuspend(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009246 d007 BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_CONFIGURED: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009278 df9d RCALL 0x91b4 USBCBInitEP(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00927a d005 BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009248 df9d RCALL 0x9184 USBCBInitEP(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00924a d005 BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_SET_DESCRIPTOR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00927c df9a RCALL 0x91b2 USBCBStdSetDscHandler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00927e d003 BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00924c df9a RCALL 0x9182 USBCBStdSetDscHandler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00924e d003 BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_EP0_REQUEST: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009280 df96 RCALL 0x91ae USBCBCheckOtherReq(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009282 d001 BRA 0x9286 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009250 df96 RCALL 0x917e USBCBCheckOtherReq(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009252 d001 BRA 0x9256 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_BUS_ERROR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009284 df93 RCALL 0x91ac USBCBErrorHandler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009254 df93 RCALL 0x917c USBCBErrorHandler(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c case EVENT_TRANSFER_TERMINATED: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c // Add application specific callback task or callback function here if desired. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c @@ -16848,11 +16848,11 @@ Address Value Disassembly Source default: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009286 0e01 MOVLW 0x1 return TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -009288 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c -00928a cfe7 MOVFF 0xfe7,0xfd9 -00928c ffd9 -00928e 0012 RETURN 0x0 +009256 0e01 MOVLW 0x1 return TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +009258 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c +00925a cfe7 MOVFF 0xfe7,0xfd9 +00925c ffd9 +00925e 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /** EOF main.c ***************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\main.c /********************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17031,119 +17031,119 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c * Put a call to this function inside the UserInit() call in UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c */ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007d9e d9f6 RCALL 0x818c void RCServo2_Init(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007da0 52e6 MOVF 0xe6,0x1,0x0 +007d6e d9f6 RCALL 0x815c void RCServo2_Init(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d70 52e6 MOVF 0xe6,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c unsigned char i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007da2 0100 MOVLB 0x0 gRC2msCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007da4 6b60 CLRF 0x60,0x1 -007da6 6b99 CLRF 0x99,0x1 gRC2Ptr = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d72 0100 MOVLB 0x0 gRC2msCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d74 6b60 CLRF 0x60,0x1 +007d76 6b99 CLRF 0x99,0x1 gRC2Ptr = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007da8 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007daa 0e08 MOVLW 0x8 -007dac 5cdf SUBWF 0xdf,0x0,0x0 -007dae e213 BC 0x7dd6 -007dd2 2adf INCF 0xdf,0x1,0x0 -007dd4 d7ea BRA 0x7daa +007d78 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d7a 0e08 MOVLW 0x8 +007d7c 5cdf SUBWF 0xdf,0x0,0x0 +007d7e e213 BC 0x7da6 +007da2 2adf INCF 0xdf,0x1,0x0 +007da4 d7ea BRA 0x7d7a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007db0 d9e7 RCALL 0x8180 gRC2Value[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007db2 0e61 MOVLW 0x61 -007db4 26e9 ADDWF 0xe9,0x1,0x0 -007db6 0e00 MOVLW 0x0 -007db8 da12 RCALL 0x81de -007dba d9c8 RCALL 0x814c gRC2RPn[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dbc 6aef CLRF 0xef,0x0 -007dbe d9e0 RCALL 0x8180 gRC2Target[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dc0 0e79 MOVLW 0x79 -007dc2 26e9 ADDWF 0xe9,0x1,0x0 -007dc4 0e00 MOVLW 0x0 -007dc6 da0b RCALL 0x81de -007dc8 d9db RCALL 0x8180 gRC2Rate[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dca 0e89 MOVLW 0x89 -007dcc 26e9 ADDWF 0xe9,0x1,0x0 -007dce 0e00 MOVLW 0x0 -007dd0 da06 RCALL 0x81de -008180 6aea CLRF 0xea,0x0 -008182 34df RLCF 0xdf,0x0,0x0 -008184 0bfe ANDLW 0xfe -008186 36ea RLCF 0xea,0x1,0x0 -008188 6ee9 MOVWF 0xe9,0x0 -00818a 0012 RETURN 0x0 +007d80 d9e7 RCALL 0x8150 gRC2Value[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d82 0e61 MOVLW 0x61 +007d84 26e9 ADDWF 0xe9,0x1,0x0 +007d86 0e00 MOVLW 0x0 +007d88 da12 RCALL 0x81ae +007d8a d9c8 RCALL 0x811c gRC2RPn[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d8c 6aef CLRF 0xef,0x0 +007d8e d9e0 RCALL 0x8150 gRC2Target[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d90 0e79 MOVLW 0x79 +007d92 26e9 ADDWF 0xe9,0x1,0x0 +007d94 0e00 MOVLW 0x0 +007d96 da0b RCALL 0x81ae +007d98 d9db RCALL 0x8150 gRC2Rate[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007d9a 0e89 MOVLW 0x89 +007d9c 26e9 ADDWF 0xe9,0x1,0x0 +007d9e 0e00 MOVLW 0x0 +007da0 da06 RCALL 0x81ae +008150 6aea CLRF 0xea,0x0 +008152 34df RLCF 0xdf,0x0,0x0 +008154 0bfe ANDLW 0xfe +008156 36ea RLCF 0xea,0x1,0x0 +008158 6ee9 MOVWF 0xe9,0x0 +00815a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Initialize the RPOR pointer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dd6 0100 MOVLB 0x0 gRC2RPORPtr = &RPOR0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dd8 0ec6 MOVLW 0xc6 -007dda 6f9c MOVWF 0x9c,0x1 -007ddc 0e0e MOVLW 0xe -007dde 6f9d MOVWF 0x9d,0x1 +007da6 0100 MOVLB 0x0 gRC2RPORPtr = &RPOR0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007da8 0ec6 MOVLW 0xc6 +007daa 6f9c MOVWF 0x9c,0x1 +007dac 0e0e MOVLW 0xe +007dae 6f9d MOVWF 0x9d,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Set up TIMER3 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007de0 0e3f MOVLW 0x3f T3CONbits.TMR3CS = 0b00; // Use Fosc/4 as input D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007de2 1479 ANDWF 0x79,0x0,0x0 -007de4 0900 IORLW 0x0 -007de6 6e79 MOVWF 0x79,0x0 -007de8 0ecf MOVLW 0xcf T3CONbits.T3CKPS = 0b00; // Prescale is 1:1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dea 1479 ANDWF 0x79,0x0,0x0 -007dec 0900 IORLW 0x0 -007dee 6e79 MOVWF 0x79,0x0 -007df0 8279 BSF 0x79,0x1,0x0 T3CONbits.RD16 = 1; // Enable 16 bit mode D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007df2 6a7b CLRF 0x7b,0x0 TMR3H = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007df4 6a7a CLRF 0x7a,0x0 TMR3L = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007df6 9079 BCF 0x79,0x0,0x0 T3CONbits.TMR3ON = 0; // Keep timer off for now D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007db0 0e3f MOVLW 0x3f T3CONbits.TMR3CS = 0b00; // Use Fosc/4 as input D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007db2 1479 ANDWF 0x79,0x0,0x0 +007db4 0900 IORLW 0x0 +007db6 6e79 MOVWF 0x79,0x0 +007db8 0ecf MOVLW 0xcf T3CONbits.T3CKPS = 0b00; // Prescale is 1:1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dba 1479 ANDWF 0x79,0x0,0x0 +007dbc 0900 IORLW 0x0 +007dbe 6e79 MOVWF 0x79,0x0 +007dc0 8279 BSF 0x79,0x1,0x0 T3CONbits.RD16 = 1; // Enable 16 bit mode D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dc2 6a7b CLRF 0x7b,0x0 TMR3H = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dc4 6a7a CLRF 0x7a,0x0 TMR3L = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dc6 9079 BCF 0x79,0x0,0x0 T3CONbits.TMR3ON = 0; // Keep timer off for now D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007df8 010f MOVLB 0xf TCLKCONbits.T3CCP1 = 1; // ECCP1 uses Timer1/2 and ECCP2 uses Timer3/4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dfa 8152 BSF 0x52,0x0,0x1 -007dfc 9352 BCF 0x52,0x1,0x1 TCLKCONbits.T3CCP2 = 0; // ECCP1 uses Timer1/2 and ECCP2 uses Timer3/4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dc8 010f MOVLB 0xf TCLKCONbits.T3CCP1 = 1; // ECCP1 uses Timer1/2 and ECCP2 uses Timer3/4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dca 8152 BSF 0x52,0x0,0x1 +007dcc 9352 BCF 0x52,0x1,0x1 TCLKCONbits.T3CCP2 = 0; // ECCP1 uses Timer1/2 and ECCP2 uses Timer3/4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007dfe 0ef0 MOVLW 0xf0 CCP2CONbits.CCP2M = 0b1001; // Set EECP2 as compare, clear output on match D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e00 14b4 ANDWF 0xb4,0x0,0x0 -007e02 0909 IORLW 0x9 -007e04 6eb4 MOVWF 0xb4,0x0 +007dce 0ef0 MOVLW 0xf0 CCP2CONbits.CCP2M = 0b1001; // Set EECP2 as compare, clear output on match D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dd0 14b4 ANDWF 0xb4,0x0,0x0 +007dd2 0909 IORLW 0x9 +007dd4 6eb4 MOVWF 0xb4,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // We start out with 8 slots because that is good for RC servos (3ms * 8 = 24ms) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e06 0100 MOVLB 0x0 gRC2Slots = INITAL_RC2_SLOTS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e08 0e08 MOVLW 0x8 -007e0a 6f9a MOVWF 0x9a,0x1 +007dd6 0100 MOVLB 0x0 gRC2Slots = INITAL_RC2_SLOTS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dd8 0e08 MOVLW 0x8 +007dda 6f9a MOVWF 0x9a,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // We start out with 3ms slot duration because it's good for RC servos D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e0c 0e03 MOVLW 0x3 gRC2SlotMS = 3; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e0e 6f9b MOVWF 0x9b,0x1 +007ddc 0e03 MOVLW 0x3 gRC2SlotMS = 3; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dde 6f9b MOVWF 0x9b,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Start with some reasonable default values for min and max D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e10 0ec6 MOVLW 0xc6 g_servo2_max = 15302; // max = down (SC,5,15302) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e12 6f9e MOVWF 0x9e,0x1 -007e14 0e3b MOVLW 0x3b -007e16 6f9f MOVWF 0x9f,0x1 -007e18 0e25 MOVLW 0x25 g_servo2_min = 22565; // min = up (SC,4,22565) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e1a 6fa0 MOVWF 0xa0,0x1 -007e1c 0e58 MOVLW 0x58 -007e1e 6fa1 MOVWF 0xa1,0x1 +007de0 0ec6 MOVLW 0xc6 g_servo2_max = 15302; // max = down (SC,5,15302) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007de2 6f9e MOVWF 0x9e,0x1 +007de4 0e3b MOVLW 0x3b +007de6 6f9f MOVWF 0x9f,0x1 +007de8 0e25 MOVLW 0x25 g_servo2_min = 22565; // min = up (SC,4,22565) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dea 6fa0 MOVWF 0xa0,0x1 +007dec 0e58 MOVLW 0x58 +007dee 6fa1 MOVWF 0xa1,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e20 0e04 MOVLW 0x4 g_servo2_RPn = DEFAULT_EBB_SERVO_RPN; // Always start out with RP4 as the output (just for this test version of code) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e22 6fa6 MOVWF 0xa6,0x1 +007df0 0e04 MOVLW 0x4 g_servo2_RPn = DEFAULT_EBB_SERVO_RPN; // Always start out with RP4 as the output (just for this test version of code) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007df2 6fa6 MOVWF 0xa6,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e24 0e90 MOVLW 0x90 g_servo2_rate_up = 400; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e26 6fa2 MOVWF 0xa2,0x1 -007e28 0e01 MOVLW 0x1 -007e2a 6fa3 MOVWF 0xa3,0x1 -007e2c 0e90 MOVLW 0x90 g_servo2_rate_down = 400; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e2e 6fa4 MOVWF 0xa4,0x1 -007e30 0e01 MOVLW 0x1 -007e32 6fa5 MOVWF 0xa5,0x1 -007e34 0e00 MOVLW 0x0 process_SP(PEN_UP, 0); // Start servo up D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e36 6ee6 MOVWF 0xe6,0x0 -007e38 6ae6 CLRF 0xe6,0x0 -007e3a 0e01 MOVLW 0x1 -007e3c 6ee6 MOVWF 0xe6,0x0 -007e3e ec7d CALL 0x2cfa,0x0 -007e40 f016 -007e42 52e5 MOVF 0xe5,0x1,0x0 -007e44 52e5 MOVF 0xe5,0x1,0x0 -007e46 52e5 MOVF 0xe5,0x1,0x0 -007e48 9689 BCF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e4a 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e4c d1a4 BRA 0x8196 +007df4 0e90 MOVLW 0x90 g_servo2_rate_up = 400; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007df6 6fa2 MOVWF 0xa2,0x1 +007df8 0e01 MOVLW 0x1 +007dfa 6fa3 MOVWF 0xa3,0x1 +007dfc 0e90 MOVLW 0x90 g_servo2_rate_down = 400; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007dfe 6fa4 MOVWF 0xa4,0x1 +007e00 0e01 MOVLW 0x1 +007e02 6fa5 MOVWF 0xa5,0x1 +007e04 0e00 MOVLW 0x0 process_SP(PEN_UP, 0); // Start servo up D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e06 6ee6 MOVWF 0xe6,0x0 +007e08 6ae6 CLRF 0xe6,0x0 +007e0a 0e01 MOVLW 0x1 +007e0c 6ee6 MOVWF 0xe6,0x0 +007e0e ec7d CALL 0x2cfa,0x0 +007e10 f016 +007e12 52e5 MOVF 0xe5,0x1,0x0 +007e14 52e5 MOVF 0xe5,0x1,0x0 +007e16 52e5 MOVF 0xe5,0x1,0x0 +007e18 9689 BCF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e1a 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e1c d1a4 BRA 0x8166 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Return the current channel that is associated with the PPS output pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // RPn. If there is no channel yet assigned for this RPn, then pick the D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17151,31 +17151,31 @@ Address Value Disassembly Source // (which is considered an error.) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Remember, channels are from 1 through 8 (Normally - can be increased with D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // SC,8 command). Channel 0 is the 'error' channel. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e4e d99e RCALL 0x818c UINT8 RCServo2_get_channel_from_RPn(UINT8 RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e50 52e6 MOVF 0xe6,0x1,0x0 -00818c cfd9 MOVFF 0xfd9,0xfe6 -00818e ffe6 -008190 cfe1 MOVFF 0xfe1,0xfd9 -008192 ffd9 -008194 0012 RETURN 0x0 +007e1e d99e RCALL 0x815c UINT8 RCServo2_get_channel_from_RPn(UINT8 RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e20 52e6 MOVF 0xe6,0x1,0x0 +00815c cfd9 MOVFF 0xfd9,0xfe6 +00815e ffe6 +008160 cfe1 MOVFF 0xfe1,0xfd9 +008162 ffd9 +008164 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Search through the existing channels, and see if our RPn is there D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e52 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e54 0e08 MOVLW 0x8 -007e56 5cdf SUBWF 0xdf,0x0,0x0 -007e58 e209 BC 0x7e6c -007e68 2adf INCF 0xdf,0x1,0x0 -007e6a d7f4 BRA 0x7e54 +007e22 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e24 0e08 MOVLW 0x8 +007e26 5cdf SUBWF 0xdf,0x0,0x0 +007e28 e209 BC 0x7e3c +007e38 2adf INCF 0xdf,0x1,0x0 +007e3a d7f4 BRA 0x7e24 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e5a d978 RCALL 0x814c if (gRC2RPn[i] == RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e5c cfef MOVFF 0xfef,0x4e -007e5e f04e -007e60 0efe MOVLW 0xfe -007e62 50db MOVF 0xdb,0x0,0x0 -007e64 5c4e SUBWF 0x4e,0x0,0x0 -007e66 e009 BZ 0x7e7a +007e2a d978 RCALL 0x811c if (gRC2RPn[i] == RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e2c cfef MOVFF 0xfef,0x4e +007e2e f04e +007e30 0efe MOVLW 0xfe +007e32 50db MOVF 0xdb,0x0,0x0 +007e34 5c4e SUBWF 0x4e,0x0,0x0 +007e36 e009 BZ 0x7e4a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Found it! Return the channel number D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c return (i + 1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17183,35 +17183,35 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // We have not found it, so we need to allocate a new channel for this RPn D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e6c 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e6e 0e08 MOVLW 0x8 -007e70 5cdf SUBWF 0xdf,0x0,0x0 -007e72 e207 BC 0x7e82 -007e7e 2adf INCF 0xdf,0x1,0x0 -007e80 d7f6 BRA 0x7e6e +007e3c 6adf CLRF 0xdf,0x0 for (i=0; i < MAX_RC2_SERVOS; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e3e 0e08 MOVLW 0x8 +007e40 5cdf SUBWF 0xdf,0x0,0x0 +007e42 e207 BC 0x7e52 +007e4e 2adf INCF 0xdf,0x1,0x0 +007e50 d7f6 BRA 0x7e3e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e74 d96b RCALL 0x814c if (gRC2RPn[i] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e76 50ef MOVF 0xef,0x0,0x0 -007e78 e102 BNZ 0x7e7e -00814c 50df MOVF 0xdf,0x0,0x0 -00814e d057 BRA 0x81fe -0081fe 6aea CLRF 0xea,0x0 -008200 0f71 ADDLW 0x71 -008202 6ee9 MOVWF 0xe9,0x0 -008204 0e00 MOVLW 0x0 -008206 22ea ADDWFC 0xea,0x1,0x0 -008208 0012 RETURN 0x0 +007e44 d96b RCALL 0x811c if (gRC2RPn[i] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e46 50ef MOVF 0xef,0x0,0x0 +007e48 e102 BNZ 0x7e4e +00811c 50df MOVF 0xdf,0x0,0x0 +00811e d057 BRA 0x81ce +0081ce 6aea CLRF 0xea,0x0 +0081d0 0f71 ADDLW 0x71 +0081d2 6ee9 MOVWF 0xe9,0x0 +0081d4 0e00 MOVLW 0x0 +0081d6 22ea ADDWFC 0xea,0x1,0x0 +0081d8 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Found one that's free! Return the channel number D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e7a 28df INCF 0xdf,0x0,0x0 return (i + 1u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e7c d003 BRA 0x7e84 +007e4a 28df INCF 0xdf,0x0,0x0 return (i + 1u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e4c d003 BRA 0x7e54 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // We do not have room for another channel, so return an error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e82 0e00 MOVLW 0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e84 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e86 d187 BRA 0x8196 +007e52 0e00 MOVLW 0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e54 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e56 d187 BRA 0x8166 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Servo method 2 enable command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // S2,,,, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17222,125 +17222,125 @@ Address Value Disassembly Source // is the rate to change (optional, defaults to 0 = instant) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // is the number of milliseconds to delay the start of the next command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // (optional, defaults to 0 = instant) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e88 d981 RCALL 0x818c void RCServo2_S2_command (void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e8a 0e07 MOVLW 0x7 -007e8c 26e1 ADDWF 0xe1,0x1,0x0 +007e58 d981 RCALL 0x815c void RCServo2_S2_command (void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e5a 0e07 MOVLW 0x7 +007e5c 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e8e 6ade CLRF 0xde,0x0 UINT16 Duration = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e90 6add CLRF 0xdd,0x0 -007e92 0e02 MOVLW 0x2 UINT8 Pin = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e94 6adb CLRF 0xdb,0x0 -007e96 0e03 MOVLW 0x3 UINT16 Rate = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007e98 6adb CLRF 0xdb,0x0 -007e9a 0e04 MOVLW 0x4 -007e9c 6adb CLRF 0xdb,0x0 -007e9e 0e05 MOVLW 0x5 UINT16 Delay = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ea0 6adb CLRF 0xdb,0x0 -007ea2 0e06 MOVLW 0x6 -007ea4 6adb CLRF 0xdb,0x0 +007e5e 6ade CLRF 0xde,0x0 UINT16 Duration = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e60 6add CLRF 0xdd,0x0 +007e62 0e02 MOVLW 0x2 UINT8 Pin = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e64 6adb CLRF 0xdb,0x0 +007e66 0e03 MOVLW 0x3 UINT16 Rate = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e68 6adb CLRF 0xdb,0x0 +007e6a 0e04 MOVLW 0x4 +007e6c 6adb CLRF 0xdb,0x0 +007e6e 0e05 MOVLW 0x5 UINT16 Delay = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e70 6adb CLRF 0xdb,0x0 +007e72 0e06 MOVLW 0x6 +007e74 6adb CLRF 0xdb,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Extract each of the values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ea6 0e01 MOVLW 0x1 extract_number (kUINT, &Duration, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ea8 6ee6 MOVWF 0xe6,0x0 -007eaa cfd9 MOVFF 0xfd9,0xfe6 -007eac ffe6 -007eae cfda MOVFF 0xfda,0xfe6 -007eb0 ffe6 -007eb2 0e03 MOVLW 0x3 -007eb4 d939 RCALL 0x8128 -007eb6 0f02 ADDLW 0x2 extract_number (kUCHAR, &Pin, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007eb8 d97a RCALL 0x81ae -007eba 0e01 MOVLW 0x1 -007ebc d935 RCALL 0x8128 -007ebe 0f03 ADDLW 0x3 extract_number (kUINT, &Rate, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ec0 d976 RCALL 0x81ae -007ec2 0e03 MOVLW 0x3 -007ec4 d931 RCALL 0x8128 -008128 d852 RCALL 0x81ce -007ec6 0f05 ADDLW 0x5 extract_number (kUINT, &Delay, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ec8 d972 RCALL 0x81ae -007eca 0e03 MOVLW 0x3 -007ecc d980 RCALL 0x81ce -00812a 0e01 MOVLW 0x1 -00812c 6ee6 MOVWF 0xe6,0x0 -00812e 50d9 MOVF 0xd9,0x0,0x0 -008130 0012 RETURN 0x0 -0081ae 6ee6 MOVWF 0xe6,0x0 -0081b0 0e00 MOVLW 0x0 -0081b2 20da ADDWFC 0xda,0x0,0x0 -0081b4 6ee6 MOVWF 0xe6,0x0 -0081b6 0012 RETURN 0x0 -0081ce 6ee6 MOVWF 0xe6,0x0 -0081d0 ec20 CALL 0x6640,0x0 -0081d2 f033 -0081d4 52e5 MOVF 0xe5,0x1,0x0 -0081d6 52e5 MOVF 0xe5,0x1,0x0 -0081d8 52e5 MOVF 0xe5,0x1,0x0 -0081da 52e5 MOVF 0xe5,0x1,0x0 -0081dc 0012 RETURN 0x0 +007e76 0e01 MOVLW 0x1 extract_number (kUINT, &Duration, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e78 6ee6 MOVWF 0xe6,0x0 +007e7a cfd9 MOVFF 0xfd9,0xfe6 +007e7c ffe6 +007e7e cfda MOVFF 0xfda,0xfe6 +007e80 ffe6 +007e82 0e03 MOVLW 0x3 +007e84 d939 RCALL 0x80f8 +007e86 0f02 ADDLW 0x2 extract_number (kUCHAR, &Pin, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e88 d97a RCALL 0x817e +007e8a 0e01 MOVLW 0x1 +007e8c d935 RCALL 0x80f8 +007e8e 0f03 ADDLW 0x3 extract_number (kUINT, &Rate, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e90 d976 RCALL 0x817e +007e92 0e03 MOVLW 0x3 +007e94 d931 RCALL 0x80f8 +0080f8 d852 RCALL 0x819e +007e96 0f05 ADDLW 0x5 extract_number (kUINT, &Delay, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007e98 d972 RCALL 0x817e +007e9a 0e03 MOVLW 0x3 +007e9c d980 RCALL 0x819e +0080fa 0e01 MOVLW 0x1 +0080fc 6ee6 MOVWF 0xe6,0x0 +0080fe 50d9 MOVF 0xd9,0x0,0x0 +008100 0012 RETURN 0x0 +00817e 6ee6 MOVWF 0xe6,0x0 +008180 0e00 MOVLW 0x0 +008182 20da ADDWFC 0xda,0x0,0x0 +008184 6ee6 MOVWF 0xe6,0x0 +008186 0012 RETURN 0x0 +00819e 6ee6 MOVWF 0xe6,0x0 +0081a0 ec11 CALL 0x6622,0x0 +0081a2 f033 +0081a4 52e5 MOVF 0xe5,0x1,0x0 +0081a6 52e5 MOVF 0xe5,0x1,0x0 +0081a8 52e5 MOVF 0xe5,0x1,0x0 +0081aa 52e5 MOVF 0xe5,0x1,0x0 +0081ac 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ece 6ae6 CLRF 0xe6,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ed0 6ae6 CLRF 0xe6,0x0 -007ed2 ecef CALL 0x53de,0x0 -007ed4 f029 -007ed6 52e5 MOVF 0xe5,0x1,0x0 -007ed8 52e5 MOVF 0xe5,0x1,0x0 +007e9e 6ae6 CLRF 0xe6,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007ea0 6ae6 CLRF 0xe6,0x0 +007ea2 ecf1 CALL 0x53e2,0x0 +007ea4 f029 +007ea6 52e5 MOVF 0xe5,0x1,0x0 +007ea8 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007eda 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007edc 5184 MOVF 0x84,0x0,0x1 -007ede e124 BNZ 0x7f28 +007eaa 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007eac 5184 MOVF 0x84,0x0,0x1 +007eae e124 BNZ 0x7ef8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ee0 0e02 MOVLW 0x2 if (Pin > 24u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ee2 50db MOVF 0xdb,0x0,0x0 -007ee4 0818 SUBLW 0x18 -007ee6 e202 BC 0x7eec +007eb0 0e02 MOVLW 0x2 if (Pin > 24u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007eb2 50db MOVF 0xdb,0x0,0x0 +007eb4 0818 SUBLW 0x18 +007eb6 e202 BC 0x7ebc { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007ee8 8d84 BSF 0x84,0x6,0x1 bitset (error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007eea d01e BRA 0x7f28 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007eb8 8d84 BSF 0x84,0x6,0x1 bitset (error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007eba d01e BRA 0x7ef8 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007eec 0e01 MOVLW 0x1 RCServo2_Move(Duration, Pin, Rate, Delay, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007eee 6ee6 MOVWF 0xe6,0x0 -007ef0 0e05 MOVLW 0x5 -007ef2 cfdb MOVFF 0xfdb,0xfe6 -007ef4 ffe6 -007ef6 0e06 MOVLW 0x6 -007ef8 cfdb MOVFF 0xfdb,0xfe6 -007efa ffe6 -007efc 0e03 MOVLW 0x3 -007efe cfdb MOVFF 0xfdb,0xfe6 -007f00 ffe6 -007f02 0e04 MOVLW 0x4 -007f04 cfdb MOVFF 0xfdb,0xfe6 -007f06 ffe6 -007f08 0e02 MOVLW 0x2 -007f0a cfdb MOVFF 0xfdb,0xfe6 -007f0c ffe6 -007f0e cfde MOVFF 0xfde,0xfe6 -007f10 ffe6 -007f12 cfdd MOVFF 0xfdd,0xfe6 -007f14 ffe6 -007f16 d80f RCALL 0x7f36 -007f18 6e4e MOVWF 0x4e,0x0 -007f1a 0e08 MOVLW 0x8 -007f1c 5ee1 SUBWF 0xe1,0x1,0x0 -007f1e 504e MOVF 0x4e,0x0,0x0 +007ebc 0e01 MOVLW 0x1 RCServo2_Move(Duration, Pin, Rate, Delay, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007ebe 6ee6 MOVWF 0xe6,0x0 +007ec0 0e05 MOVLW 0x5 +007ec2 cfdb MOVFF 0xfdb,0xfe6 +007ec4 ffe6 +007ec6 0e06 MOVLW 0x6 +007ec8 cfdb MOVFF 0xfdb,0xfe6 +007eca ffe6 +007ecc 0e03 MOVLW 0x3 +007ece cfdb MOVFF 0xfdb,0xfe6 +007ed0 ffe6 +007ed2 0e04 MOVLW 0x4 +007ed4 cfdb MOVFF 0xfdb,0xfe6 +007ed6 ffe6 +007ed8 0e02 MOVLW 0x2 +007eda cfdb MOVFF 0xfdb,0xfe6 +007edc ffe6 +007ede cfde MOVFF 0xfde,0xfe6 +007ee0 ffe6 +007ee2 cfdd MOVFF 0xfdd,0xfe6 +007ee4 ffe6 +007ee6 d80f RCALL 0x7f06 +007ee8 6e4e MOVWF 0x4e,0x0 +007eea 0e08 MOVLW 0x8 +007eec 5ee1 SUBWF 0xe1,0x1,0x0 +007eee 504e MOVF 0x4e,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f20 6ae6 CLRF 0xe6,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f22 ec0d CALL 0x541a,0x0 -007f24 f02a -007f26 52e5 MOVF 0xe5,0x1,0x0 -007f28 0e07 MOVLW 0x7 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f2a 5ce1 SUBWF 0xe1,0x0,0x0 -007f2c e202 BC 0x7f32 -007f2e 6ae1 CLRF 0xe1,0x0 -007f30 52e5 MOVF 0xe5,0x1,0x0 -007f32 6ee1 MOVWF 0xe1,0x0 -007f34 d130 BRA 0x8196 +007ef0 6ae6 CLRF 0xe6,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007ef2 ec0f CALL 0x541e,0x0 +007ef4 f02a +007ef6 52e5 MOVF 0xe5,0x1,0x0 +007ef8 0e07 MOVLW 0x7 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007efa 5ce1 SUBWF 0xe1,0x0,0x0 +007efc e202 BC 0x7f02 +007efe 6ae1 CLRF 0xe1,0x0 +007f00 52e5 MOVF 0xe5,0x1,0x0 +007f02 6ee1 MOVWF 0xe1,0x0 +007f04 d130 BRA 0x8166 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Function to set up an RC Servo move. Takes Duration, RPn, and Rate D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // and adds them to the motion control FIFO. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17362,9 +17362,9 @@ Address Value Disassembly Source // Another thing we do here is to make sure that the proper pin is an output, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // And, if this is the first time we're starting up the channel, make sure that D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // it starts out low. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f36 d92a RCALL 0x818c UINT8 RCServo2_Move( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f38 0e02 MOVLW 0x2 -007f3a 26e1 ADDWF 0xe1,0x1,0x0 +007f06 d92a RCALL 0x815c UINT8 RCServo2_Move( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f08 0e02 MOVLW 0x2 +007f0a 26e1 ADDWF 0xe1,0x1,0x0 UINT16 Position, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c UINT8 RPn, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c UINT16 Rate, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c @@ -17377,422 +17377,422 @@ Address Value Disassembly Source // Get the channel that's already assigned to the RPn, or assign a new one D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // if possible. If this returns zero, then do nothing as we're out of D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // channels. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f3c 0efc MOVLW 0xfc Channel = RCServo2_get_channel_from_RPn(RPn); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f3e cfdb MOVFF 0xfdb,0xfe6 -007f40 ffe6 -007f42 df85 RCALL 0x7e4e -007f44 52e5 MOVF 0xe5,0x1,0x0 -007f46 6ee7 MOVWF 0xe7,0x0 -007f48 0e01 MOVLW 0x1 -007f4a cfe7 MOVFF 0xfe7,0xfdb -007f4c ffdb +007f0c 0efc MOVLW 0xfc Channel = RCServo2_get_channel_from_RPn(RPn); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f0e cfdb MOVFF 0xfdb,0xfe6 +007f10 ffe6 +007f12 df85 RCALL 0x7e1e +007f14 52e5 MOVF 0xe5,0x1,0x0 +007f16 6ee7 MOVWF 0xe7,0x0 +007f18 0e01 MOVLW 0x1 +007f1a cfe7 MOVFF 0xfe7,0xfdb +007f1c ffdb D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Error out if there were no available channels left D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f4e 50db MOVF 0xdb,0x0,0x0 if (Channel == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f50 e102 BNZ 0x7f56 +007f1e 50db MOVF 0xdb,0x0,0x0 if (Channel == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f20 e102 BNZ 0x7f26 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f52 0e00 MOVLW 0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f54 d0c3 BRA 0x80dc +007f22 0e00 MOVLW 0x0 return 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f24 d0c3 BRA 0x80ac } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If Duration is zero, then caller wants to shut down this channel D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f56 d90b RCALL 0x816e if (0u == Position) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f58 e102 BNZ 0x7f5e -00816e 50d9 MOVF 0xd9,0x0,0x0 -008170 0ffd ADDLW 0xfd -008172 6ee9 MOVWF 0xe9,0x0 -008174 0eff MOVLW 0xff -008176 20da ADDWFC 0xda,0x0,0x0 -008178 6eea MOVWF 0xea,0x0 -00817a 50ee MOVF 0xee,0x0,0x0 -00817c 10ed IORWF 0xed,0x0,0x0 -00817e 0012 RETURN 0x0 +007f26 d90b RCALL 0x813e if (0u == Position) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f28 e102 BNZ 0x7f2e +00813e 50d9 MOVF 0xd9,0x0,0x0 +008140 0ffd ADDLW 0xfd +008142 6ee9 MOVWF 0xe9,0x0 +008144 0eff MOVLW 0xff +008146 20da ADDWFC 0xda,0x0,0x0 +008148 6eea MOVWF 0xea,0x0 +00814a 50ee MOVF 0xee,0x0,0x0 +00814c 10ed IORWF 0xed,0x0,0x0 +00814e 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Turn off the PPS routing to the pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f5a d8c9 RCALL 0x80ee *(gRC2RPORPtr + gRC2RPn[Channel - 1]) = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080ee d86c RCALL 0x81c8 -0080f0 50ef MOVF 0xef,0x0,0x0 -0080f2 0100 MOVLB 0x0 -0080f4 6aea CLRF 0xea,0x0 -0080f6 259c ADDWF 0x9c,0x0,0x1 -0080f8 6ee9 MOVWF 0xe9,0x0 -0080fa 519d MOVF 0x9d,0x0,0x1 -0080fc 22ea ADDWFC 0xea,0x1,0x0 -0080fe 6aef CLRF 0xef,0x0 -008100 d85b RCALL 0x81b8 gRC2Rate[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008102 0e89 MOVLW 0x89 -008104 26e9 ADDWF 0xe9,0x1,0x0 -008106 0e00 MOVLW 0x0 -008108 d86a RCALL 0x81de -00810a d856 RCALL 0x81b8 gRC2Target[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00810c 0e79 MOVLW 0x79 -00810e 26e9 ADDWF 0xe9,0x1,0x0 -008110 0e00 MOVLW 0x0 -008112 d865 RCALL 0x81de -008114 d859 RCALL 0x81c8 gRC2RPn[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008116 6aef CLRF 0xef,0x0 -0081c8 0e01 MOVLW 0x1 -0081ca 04db DECF 0xdb,0x0,0x0 -0081cc d018 BRA 0x81fe -008118 d86d RCALL 0x81f4 gRC2Value[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00811a efef GOTO 0x81de -00811c f040 -0081de 22ea ADDWFC 0xea,0x1,0x0 -0081e0 6aee CLRF 0xee,0x0 -0081e2 6aed CLRF 0xed,0x0 -0081e4 0012 RETURN 0x0 +007f2a d8c9 RCALL 0x80be *(gRC2RPORPtr + gRC2RPn[Channel - 1]) = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080be d86c RCALL 0x8198 +0080c0 50ef MOVF 0xef,0x0,0x0 +0080c2 0100 MOVLB 0x0 +0080c4 6aea CLRF 0xea,0x0 +0080c6 259c ADDWF 0x9c,0x0,0x1 +0080c8 6ee9 MOVWF 0xe9,0x0 +0080ca 519d MOVF 0x9d,0x0,0x1 +0080cc 22ea ADDWFC 0xea,0x1,0x0 +0080ce 6aef CLRF 0xef,0x0 +0080d0 d85b RCALL 0x8188 gRC2Rate[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080d2 0e89 MOVLW 0x89 +0080d4 26e9 ADDWF 0xe9,0x1,0x0 +0080d6 0e00 MOVLW 0x0 +0080d8 d86a RCALL 0x81ae +0080da d856 RCALL 0x8188 gRC2Target[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080dc 0e79 MOVLW 0x79 +0080de 26e9 ADDWF 0xe9,0x1,0x0 +0080e0 0e00 MOVLW 0x0 +0080e2 d865 RCALL 0x81ae +0080e4 d859 RCALL 0x8198 gRC2RPn[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080e6 6aef CLRF 0xef,0x0 +008198 0e01 MOVLW 0x1 +00819a 04db DECF 0xdb,0x0,0x0 +00819c d018 BRA 0x81ce +0080e8 d86d RCALL 0x81c4 gRC2Value[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080ea efd7 GOTO 0x81ae +0080ec f040 +0081ae 22ea ADDWFC 0xea,0x1,0x0 +0081b0 6aee CLRF 0xee,0x0 +0081b2 6aed CLRF 0xed,0x0 +0081b4 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f5c d0bd BRA 0x80d8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f2c d0bd BRA 0x80a8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If we have a valid channel, and RPn, then make the move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f5e 0e01 MOVLW 0x1 if ((Channel - 1) < gRC2Slots && RPn <= 24u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f60 04db DECF 0xdb,0x0,0x0 -007f62 6e4e MOVWF 0x4e,0x0 -007f64 0100 MOVLB 0x0 -007f66 519a MOVF 0x9a,0x0,0x1 -007f68 5c4e SUBWF 0x4e,0x0,0x0 -007f6a e301 BNC 0x7f6e -007f6c d0b5 BRA 0x80d8 -007f6e 0efc MOVLW 0xfc -007f70 50db MOVF 0xdb,0x0,0x0 -007f72 0818 SUBLW 0x18 -007f74 e201 BC 0x7f78 -007f76 d0b0 BRA 0x80d8 +007f2e 0e01 MOVLW 0x1 if ((Channel - 1) < gRC2Slots && RPn <= 24u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f30 04db DECF 0xdb,0x0,0x0 +007f32 6e4e MOVWF 0x4e,0x0 +007f34 0100 MOVLB 0x0 +007f36 519a MOVF 0x9a,0x0,0x1 +007f38 5c4e SUBWF 0x4e,0x0,0x0 +007f3a e301 BNC 0x7f3e +007f3c d0b5 BRA 0x80a8 +007f3e 0efc MOVLW 0xfc +007f40 50db MOVF 0xdb,0x0,0x0 +007f42 0818 SUBLW 0x18 +007f44 e201 BC 0x7f48 +007f46 d0b0 BRA 0x80a8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // As a special case, if the pin is the same as the pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // used for the solenoid, then turn off the solenoid function D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // so that we can output PWM on that pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f78 0efc MOVLW 0xfc if (RPn == PEN_UP_DOWN_RPN) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f7a 50db MOVF 0xdb,0x0,0x0 -007f7c 0807 SUBLW 0x7 -007f7e e102 BNZ 0x7f84 +007f48 0efc MOVLW 0xfc if (RPn == PEN_UP_DOWN_RPN) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f4a 50db MOVF 0xdb,0x0,0x0 +007f4c 0807 SUBLW 0x7 +007f4e e102 BNZ 0x7f54 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f80 0101 MOVLB 0x1 gUseSolenoid = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f82 6bc1 CLRF 0xc1,0x1 +007f50 0101 MOVLB 0x1 gUseSolenoid = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f52 6bc1 CLRF 0xc1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Is this the first time we've used this channel? D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f84 d8d6 RCALL 0x8132 if (gRC2Value[Channel - 1] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f86 e110 BNZ 0x7fa8 -008132 d860 RCALL 0x81f4 -008134 22ea ADDWFC 0xea,0x1,0x0 -008136 50ee MOVF 0xee,0x0,0x0 -008138 10ed IORWF 0xed,0x0,0x0 -00813a 0012 RETURN 0x0 -0081b8 0e01 MOVLW 0x1 -0081ba 04db DECF 0xdb,0x0,0x0 -0081bc 6ee9 MOVWF 0xe9,0x0 -0081be 6aea CLRF 0xea,0x0 -0081c0 90d8 BCF 0xd8,0x0,0x0 -0081c2 36e9 RLCF 0xe9,0x1,0x0 -0081c4 36ea RLCF 0xea,0x1,0x0 -0081c6 0012 RETURN 0x0 -0081f4 dfe1 RCALL 0x81b8 -0081f6 0e61 MOVLW 0x61 -0081f8 26e9 ADDWF 0xe9,0x1,0x0 -0081fa 0e00 MOVLW 0x0 -0081fc 0012 RETURN 0x0 +007f54 d8d6 RCALL 0x8102 if (gRC2Value[Channel - 1] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f56 e110 BNZ 0x7f78 +008102 d860 RCALL 0x81c4 +008104 22ea ADDWFC 0xea,0x1,0x0 +008106 50ee MOVF 0xee,0x0,0x0 +008108 10ed IORWF 0xed,0x0,0x0 +00810a 0012 RETURN 0x0 +008188 0e01 MOVLW 0x1 +00818a 04db DECF 0xdb,0x0,0x0 +00818c 6ee9 MOVWF 0xe9,0x0 +00818e 6aea CLRF 0xea,0x0 +008190 90d8 BCF 0xd8,0x0,0x0 +008192 36e9 RLCF 0xe9,0x1,0x0 +008194 36ea RLCF 0xea,0x1,0x0 +008196 0012 RETURN 0x0 +0081c4 dfe1 RCALL 0x8188 +0081c6 0e61 MOVLW 0x61 +0081c8 26e9 ADDWF 0xe9,0x1,0x0 +0081ca 0e00 MOVLW 0x0 +0081cc 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Make sure the pin is set as an output, or this won't do much good D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f88 6ae6 CLRF 0xe6,0x0 SetPinTRISFromRPn(RPn, OUTPUT_PIN); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f8a 0efc MOVLW 0xfc -007f8c cfdb MOVFF 0xfdb,0xfe6 -007f8e ffe6 -007f90 ec65 CALL 0x6aca,0x0 -007f92 f035 -007f94 52e5 MOVF 0xe5,0x1,0x0 -007f96 52e5 MOVF 0xe5,0x1,0x0 +007f58 6ae6 CLRF 0xe6,0x0 SetPinTRISFromRPn(RPn, OUTPUT_PIN); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f5a 0efc MOVLW 0xfc +007f5c cfdb MOVFF 0xfdb,0xfe6 +007f5e ffe6 +007f60 ec56 CALL 0x6aac,0x0 +007f62 f035 +007f64 52e5 MOVF 0xe5,0x1,0x0 +007f66 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // For v2.1.5, found bug where if a pin is HIGH when we start doing D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // RC output, the output is totally messed up. So make sure to set D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // the pin low first. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f98 6ae6 CLRF 0xe6,0x0 SetPinLATFromRPn(RPn, 0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007f9a 0efc MOVLW 0xfc -007f9c cfdb MOVFF 0xfdb,0xfe6 -007f9e ffe6 -007fa0 ec37 CALL 0x6a6e,0x0 -007fa2 f035 -007fa4 52e5 MOVF 0xe5,0x1,0x0 -007fa6 52e5 MOVF 0xe5,0x1,0x0 +007f68 6ae6 CLRF 0xe6,0x0 SetPinLATFromRPn(RPn, 0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f6a 0efc MOVLW 0xfc +007f6c cfdb MOVFF 0xfdb,0xfe6 +007f6e ffe6 +007f70 ec28 CALL 0x6a50,0x0 +007f72 f035 +007f74 52e5 MOVF 0xe5,0x1,0x0 +007f76 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fa8 0ef7 MOVLW 0xf7 if (AddToFIFO == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007faa 04db DECF 0xdb,0x0,0x0 -007fac e16a BNZ 0x8082 +007f78 0ef7 MOVLW 0xf7 if (AddToFIFO == TRUE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f7a 04db DECF 0xdb,0x0,0x0 +007f7c e16a BNZ 0x8052 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Wait until we have a free spot in the FIFO, and add our new D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // command in D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fae 5013 MOVF 0x13,0x0,0x0 while(gFIFOLength >= gCurrentFIFOLength) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fb0 5c0f SUBWF 0xf,0x0,0x0 -007fb2 e2fd BC 0x7fae +007f7e 5013 MOVF 0x13,0x0,0x0 while(gFIFOLength >= gCurrentFIFOLength) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f80 5c0f SUBWF 0xf,0x0,0x0 +007f82 e2fd BC 0x7f7e ; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If the pin we're controlling is B1 (the normal servo output) then D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // always make sure to turn power on and start the countdown timer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // for that servo port. (issue #144) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fb4 0efc MOVLW 0xfc if (RPn == 4u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fb6 50db MOVF 0xdb,0x0,0x0 -007fb8 0804 SUBLW 0x4 -007fba e101 BNZ 0x7fbe +007f84 0efc MOVLW 0xfc if (RPn == 4u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f86 50db MOVF 0xdb,0x0,0x0 +007f88 0804 SUBLW 0x4 +007f8a e101 BNZ 0x7f8e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fbc d8c9 RCALL 0x8150 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008150 8689 BSF 0x89,0x3,0x0 -008152 c4c2 MOVFF 0x4c2,0x4be gRCServoPoweroffCounterMS = gRCServoPoweroffCounterReloadMS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008154 f4be -008156 c4c3 MOVFF 0x4c3,0x4bf -008158 f4bf -00815a c4c4 MOVFF 0x4c4,0x4c0 -00815c f4c0 -00815e c4c5 MOVFF 0x4c5,0x4c1 -008160 f4c1 -008162 0012 RETURN 0x0 +007f8c d8c9 RCALL 0x8120 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008120 8689 BSF 0x89,0x3,0x0 +008122 c4c2 MOVFF 0x4c2,0x4be gRCServoPoweroffCounterMS = gRCServoPoweroffCounterReloadMS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008124 f4be +008126 c4c3 MOVFF 0x4c3,0x4bf +008128 f4bf +00812a c4c4 MOVFF 0x4c4,0x4c0 +00812c f4c0 +00812e c4c5 MOVFF 0x4c5,0x4c1 +008130 f4c1 +008132 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fbe bc09 BTFSC 0x9,0x6,0x0 if (!bittst(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fc0 d08b BRA 0x80d8 +007f8e bc09 BTFSC 0x9,0x6,0x0 if (!bittst(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f90 d08b BRA 0x80a8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Now copy the values over into the FIFO element D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fc2 d8d0 RCALL 0x8164 FIFOPtr[gFIFOIn].Command = COMMAND_SERVO_MOVE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fc4 0e02 MOVLW 0x2 -007fc6 6eef MOVWF 0xef,0x0 -008164 5010 MOVF 0x10,0x0,0x0 -008166 0d2f MULLW 0x2f -008168 0105 MOVLB 0x5 -00816a eff3 GOTO 0x81e6 -00816c f040 -007fc8 0ef8 MOVLW 0xf8 FIFOPtr[gFIFOIn].m.sm.DelayCounter = HIGH_ISR_TICKS_PER_MS * (UINT32)Delay; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -007fca cfdb MOVFF 0xfdb,0x4e -007fcc f04e -007fce 0ef9 MOVLW 0xf9 -007fd0 cfdb MOVFF 0xfdb,0x4f -007fd2 f04f -007fd4 6a50 CLRF 0x50,0x0 -007fd6 6a51 CLRF 0x51,0x0 -007fd8 0e19 MOVLW 0x19 -007fda 6e45 MOVWF 0x45,0x0 -007fdc 6a46 CLRF 0x46,0x0 -007fde 6a47 CLRF 0x47,0x0 -007fe0 6a48 CLRF 0x48,0x0 -007fe2 c04e MOVFF 0x4e,0x40 -007fe4 f040 -007fe6 c04f MOVFF 0x4f,0x41 -007fe8 f041 -007fea c050 MOVFF 0x50,0x42 -007fec f042 -007fee c051 MOVFF 0x51,0x43 -007ff0 f043 -007ff2 ec8a CALL 0x9714,0x0 -007ff4 f04b -007ff6 c03c MOVFF 0x3c,0x4e -007ff8 f04e -007ffa c03d MOVFF 0x3d,0x4f -007ffc f04f -007ffe c03e MOVFF 0x3e,0x50 -008000 f050 -008002 c03f MOVFF 0x3f,0x51 -008004 f051 -008006 d8ae RCALL 0x8164 -008008 52ee MOVF 0xee,0x1,0x0 -00800a 52ee MOVF 0xee,0x1,0x0 -00800c c03c MOVFF 0x3c,0xfee -00800e ffee -008010 c04f MOVFF 0x4f,0xfee -008012 ffee -008014 c050 MOVFF 0x50,0xfee -008016 ffee -008018 c051 MOVFF 0x51,0xfee -00801a ffee -00801c d880 RCALL 0x811e FIFOPtr[gFIFOIn].m.sm.ServoChannel = Channel; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00801e 0e29 MOVLW 0x29 -008020 26e9 ADDWF 0xe9,0x1,0x0 -008022 0e00 MOVLW 0x0 -008024 22ea ADDWFC 0xea,0x1,0x0 -008026 0e01 MOVLW 0x1 -008028 cfdb MOVFF 0xfdb,0xfef -00802a ffef -00802c d878 RCALL 0x811e FIFOPtr[gFIFOIn].m.sm.ServoRPn = RPn; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00802e 0e26 MOVLW 0x26 -008030 26e9 ADDWF 0xe9,0x1,0x0 -008032 0e00 MOVLW 0x0 -008034 22ea ADDWFC 0xea,0x1,0x0 -008036 0efc MOVLW 0xfc -008038 cfdb MOVFF 0xfdb,0xfef -00803a ffef -00803c d870 RCALL 0x811e FIFOPtr[gFIFOIn].m.sm.ServoPosition = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00803e 0e27 MOVLW 0x27 -008040 26e9 ADDWF 0xe9,0x1,0x0 -008042 0e00 MOVLW 0x0 -008044 d87b RCALL 0x813c -008046 d86b RCALL 0x811e FIFOPtr[gFIFOIn].m.sm.ServoRate = Rate; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008048 0e2a MOVLW 0x2a -00804a 26e9 ADDWF 0xe9,0x1,0x0 -00804c 0e00 MOVLW 0x0 -00804e d8a7 RCALL 0x819e -00819e 22ea ADDWFC 0xea,0x1,0x0 -0081a0 0efa MOVLW 0xfa -0081a2 cfdb MOVFF 0xfdb,0xfee -0081a4 ffee -0081a6 0efb MOVLW 0xfb -0081a8 cfdb MOVFF 0xfdb,0xfed -0081aa ffed -0081ac 0012 RETURN 0x0 +007f92 d8d0 RCALL 0x8134 FIFOPtr[gFIFOIn].Command = COMMAND_SERVO_MOVE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f94 0e02 MOVLW 0x2 +007f96 6eef MOVWF 0xef,0x0 +008134 5010 MOVF 0x10,0x0,0x0 +008136 0d2f MULLW 0x2f +008138 0105 MOVLB 0x5 +00813a efdb GOTO 0x81b6 +00813c f040 +007f98 0ef8 MOVLW 0xf8 FIFOPtr[gFIFOIn].m.sm.DelayCounter = HIGH_ISR_TICKS_PER_MS * (UINT32)Delay; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007f9a cfdb MOVFF 0xfdb,0x4e +007f9c f04e +007f9e 0ef9 MOVLW 0xf9 +007fa0 cfdb MOVFF 0xfdb,0x4f +007fa2 f04f +007fa4 6a50 CLRF 0x50,0x0 +007fa6 6a51 CLRF 0x51,0x0 +007fa8 0e19 MOVLW 0x19 +007faa 6e45 MOVWF 0x45,0x0 +007fac 6a46 CLRF 0x46,0x0 +007fae 6a47 CLRF 0x47,0x0 +007fb0 6a48 CLRF 0x48,0x0 +007fb2 c04e MOVFF 0x4e,0x40 +007fb4 f040 +007fb6 c04f MOVFF 0x4f,0x41 +007fb8 f041 +007fba c050 MOVFF 0x50,0x42 +007fbc f042 +007fbe c051 MOVFF 0x51,0x43 +007fc0 f043 +007fc2 ec71 CALL 0x96e2,0x0 +007fc4 f04b +007fc6 c03c MOVFF 0x3c,0x4e +007fc8 f04e +007fca c03d MOVFF 0x3d,0x4f +007fcc f04f +007fce c03e MOVFF 0x3e,0x50 +007fd0 f050 +007fd2 c03f MOVFF 0x3f,0x51 +007fd4 f051 +007fd6 d8ae RCALL 0x8134 +007fd8 52ee MOVF 0xee,0x1,0x0 +007fda 52ee MOVF 0xee,0x1,0x0 +007fdc c03c MOVFF 0x3c,0xfee +007fde ffee +007fe0 c04f MOVFF 0x4f,0xfee +007fe2 ffee +007fe4 c050 MOVFF 0x50,0xfee +007fe6 ffee +007fe8 c051 MOVFF 0x51,0xfee +007fea ffee +007fec d880 RCALL 0x80ee FIFOPtr[gFIFOIn].m.sm.ServoChannel = Channel; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007fee 0e29 MOVLW 0x29 +007ff0 26e9 ADDWF 0xe9,0x1,0x0 +007ff2 0e00 MOVLW 0x0 +007ff4 22ea ADDWFC 0xea,0x1,0x0 +007ff6 0e01 MOVLW 0x1 +007ff8 cfdb MOVFF 0xfdb,0xfef +007ffa ffef +007ffc d878 RCALL 0x80ee FIFOPtr[gFIFOIn].m.sm.ServoRPn = RPn; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +007ffe 0e26 MOVLW 0x26 +008000 26e9 ADDWF 0xe9,0x1,0x0 +008002 0e00 MOVLW 0x0 +008004 22ea ADDWFC 0xea,0x1,0x0 +008006 0efc MOVLW 0xfc +008008 cfdb MOVFF 0xfdb,0xfef +00800a ffef +00800c d870 RCALL 0x80ee FIFOPtr[gFIFOIn].m.sm.ServoPosition = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00800e 0e27 MOVLW 0x27 +008010 26e9 ADDWF 0xe9,0x1,0x0 +008012 0e00 MOVLW 0x0 +008014 d87b RCALL 0x810c +008016 d86b RCALL 0x80ee FIFOPtr[gFIFOIn].m.sm.ServoRate = Rate; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008018 0e2a MOVLW 0x2a +00801a 26e9 ADDWF 0xe9,0x1,0x0 +00801c 0e00 MOVLW 0x0 +00801e d8a7 RCALL 0x816e +00816e 22ea ADDWFC 0xea,0x1,0x0 +008170 0efa MOVLW 0xfa +008172 cfdb MOVFF 0xfdb,0xfee +008174 ffee +008176 0efb MOVLW 0xfb +008178 cfdb MOVFF 0xfdb,0xfed +00817a ffed +00817c 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Check that DelayCounter doesn't have a crazy high value (this was D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // being done in the ISR, now moved here for speed) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008050 d866 RCALL 0x811e if (FIFOPtr[gFIFOIn].m.sm.DelayCounter > HIGH_ISR_TICKS_PER_MS * (UINT32)0x10000) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008052 52ee MOVF 0xee,0x1,0x0 -008054 80d8 BSF 0xd8,0x0,0x0 -008056 0e00 MOVLW 0x0 -008058 54ee SUBFWB 0xee,0x0,0x0 -00805a 0e00 MOVLW 0x0 -00805c 54ee SUBFWB 0xee,0x0,0x0 -00805e 0e19 MOVLW 0x19 -008060 54ee SUBFWB 0xee,0x0,0x0 -008062 0e00 MOVLW 0x0 -008064 54ee SUBFWB 0xee,0x0,0x0 -008066 e206 BC 0x8074 +008020 d866 RCALL 0x80ee if (FIFOPtr[gFIFOIn].m.sm.DelayCounter > HIGH_ISR_TICKS_PER_MS * (UINT32)0x10000) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008022 52ee MOVF 0xee,0x1,0x0 +008024 80d8 BSF 0xd8,0x0,0x0 +008026 0e00 MOVLW 0x0 +008028 54ee SUBFWB 0xee,0x0,0x0 +00802a 0e00 MOVLW 0x0 +00802c 54ee SUBFWB 0xee,0x0,0x0 +00802e 0e19 MOVLW 0x19 +008030 54ee SUBFWB 0xee,0x0,0x0 +008032 0e00 MOVLW 0x0 +008034 54ee SUBFWB 0xee,0x0,0x0 +008036 e206 BC 0x8044 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Ideally we would throw an error to the user here, but since we're in D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // the helper function that's not so easy. So we just set the delay time D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // to zero and hope they notice that their delays aren't doing anything. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008068 d85a RCALL 0x811e FIFOPtr[gFIFOIn].m.sm.DelayCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00806a 52ee MOVF 0xee,0x1,0x0 -00806c 6aee CLRF 0xee,0x0 -00806e 6aee CLRF 0xee,0x0 -008070 6aee CLRF 0xee,0x0 -008072 6aee CLRF 0xee,0x0 -00811e 5010 MOVF 0x10,0x0,0x0 -008120 0d2f MULLW 0x2f -008122 d861 RCALL 0x81e6 -008124 52ee MOVF 0xee,0x1,0x0 -008126 0012 RETURN 0x0 -0081e6 51fa MOVF 0xfa,0x0,0x1 -0081e8 24f3 ADDWF 0xf3,0x0,0x0 -0081ea 6ee9 MOVWF 0xe9,0x0 -0081ec 51fb MOVF 0xfb,0x0,0x1 -0081ee 20f4 ADDWFC 0xf4,0x0,0x0 -0081f0 6eea MOVWF 0xea,0x0 -0081f2 0012 RETURN 0x0 +008038 d85a RCALL 0x80ee FIFOPtr[gFIFOIn].m.sm.DelayCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00803a 52ee MOVF 0xee,0x1,0x0 +00803c 6aee CLRF 0xee,0x0 +00803e 6aee CLRF 0xee,0x0 +008040 6aee CLRF 0xee,0x0 +008042 6aee CLRF 0xee,0x0 +0080ee 5010 MOVF 0x10,0x0,0x0 +0080f0 0d2f MULLW 0x2f +0080f2 d861 RCALL 0x81b6 +0080f4 52ee MOVF 0xee,0x1,0x0 +0080f6 0012 RETURN 0x0 +0081b6 51fa MOVF 0xfa,0x0,0x1 +0081b8 24f3 ADDWF 0xf3,0x0,0x0 +0081ba 6ee9 MOVWF 0xe9,0x0 +0081bc 51fb MOVF 0xfb,0x0,0x1 +0081be 20f4 ADDWFC 0xf4,0x0,0x0 +0081c0 6eea MOVWF 0xea,0x0 +0081c2 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008074 2a10 INCF 0x10,0x1,0x0 gFIFOIn++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008076 5013 MOVF 0x13,0x0,0x0 if (gFIFOIn >= gCurrentFIFOLength) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008078 5c10 SUBWF 0x10,0x0,0x0 -00807a e301 BNC 0x807e +008044 2a10 INCF 0x10,0x1,0x0 gFIFOIn++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008046 5013 MOVF 0x13,0x0,0x0 if (gFIFOIn >= gCurrentFIFOLength) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008048 5c10 SUBWF 0x10,0x0,0x0 +00804a e301 BNC 0x804e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00807c 6a10 CLRF 0x10,0x0 gFIFOIn = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00804c 6a10 CLRF 0x10,0x0 gFIFOIn = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00807e 2a0f INCF 0xf,0x1,0x0 gFIFOLength++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00804e 2a0f INCF 0xf,0x1,0x0 gFIFOLength++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008080 d02b BRA 0x80d8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008050 d02b BRA 0x80a8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // We need to 'do all the stuff' that the ISR does to cause the servo D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // move to begin, right here and now. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Check to see if we should change the state of the pen D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008082 a005 BTFSS 0x5,0x0,0x0 if (bittstzero(gUseRCPenServo)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008084 d029 BRA 0x80d8 +008052 a005 BTFSS 0x5,0x0,0x0 if (bittstzero(gUseRCPenServo)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008054 d029 BRA 0x80a8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If the pin we're controlling is B1 (the normal servo output) then D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // always make sure to turn power on and start the countdown timer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // for that servo port. (issue #144) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008086 0efc MOVLW 0xfc if (RPn == 4u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008088 50db MOVF 0xdb,0x0,0x0 -00808a 0804 SUBLW 0x4 -00808c e101 BNZ 0x8090 +008056 0efc MOVLW 0xfc if (RPn == 4u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008058 50db MOVF 0xdb,0x0,0x0 +00805a 0804 SUBLW 0x4 +00805c e101 BNZ 0x8060 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00808e d860 RCALL 0x8150 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00805e d860 RCALL 0x8120 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c gRCServoPoweroffCounterMS = gRCServoPoweroffCounterReloadMS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If the user is trying to turn off this channel's RC servo output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008090 d86e RCALL 0x816e if (0u == Position) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008092 e102 BNZ 0x8098 +008060 d86e RCALL 0x813e if (0u == Position) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008062 e102 BNZ 0x8068 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Turn off the PPS routing to the pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008094 d82c RCALL 0x80ee *(gRC2RPORPtr + gRC2RPn[Channel - 1]) = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008064 d82c RCALL 0x80be *(gRC2RPORPtr + gRC2RPn[Channel - 1]) = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Clear everything else out for this channel D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c gRC2Rate[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c gRC2Target[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c gRC2RPn[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c gRC2Value[Channel - 1] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008096 d012 BRA 0x80bc else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008066 d012 BRA 0x808c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // Otherwise, set all of the values that start this RC servo moving D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -008098 d88f RCALL 0x81b8 gRC2Rate[Channel - 1] = Rate; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -00809a 0e89 MOVLW 0x89 -00809c 26e9 ADDWF 0xe9,0x1,0x0 -00809e 0e00 MOVLW 0x0 -0080a0 d87e RCALL 0x819e -0080a2 d88a RCALL 0x81b8 gRC2Target[Channel - 1] = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080a4 0e79 MOVLW 0x79 -0080a6 26e9 ADDWF 0xe9,0x1,0x0 -0080a8 0e00 MOVLW 0x0 -0080aa d848 RCALL 0x813c -0080ac d88d RCALL 0x81c8 gRC2RPn[Channel - 1] = RPn; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080ae 0efc MOVLW 0xfc -0080b0 cfdb MOVFF 0xfdb,0xfef -0080b2 ffef -0080b4 d83e RCALL 0x8132 if (gRC2Value[Channel - 1] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080b6 e102 BNZ 0x80bc +008068 d88f RCALL 0x8188 gRC2Rate[Channel - 1] = Rate; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00806a 0e89 MOVLW 0x89 +00806c 26e9 ADDWF 0xe9,0x1,0x0 +00806e 0e00 MOVLW 0x0 +008070 d87e RCALL 0x816e +008072 d88a RCALL 0x8188 gRC2Target[Channel - 1] = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008074 0e79 MOVLW 0x79 +008076 26e9 ADDWF 0xe9,0x1,0x0 +008078 0e00 MOVLW 0x0 +00807a d848 RCALL 0x810c +00807c d88d RCALL 0x8198 gRC2RPn[Channel - 1] = RPn; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00807e 0efc MOVLW 0xfc +008080 cfdb MOVFF 0xfdb,0xfef +008082 ffef +008084 d83e RCALL 0x8102 if (gRC2Value[Channel - 1] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008086 e102 BNZ 0x808c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080b8 d89d RCALL 0x81f4 gRC2Value[Channel - 1] = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080ba d840 RCALL 0x813c -00813c 22ea ADDWFC 0xea,0x1,0x0 -00813e 0efd MOVLW 0xfd -008140 cfdb MOVFF 0xfdb,0xfee -008142 ffee -008144 0efe MOVLW 0xfe -008146 cfdb MOVFF 0xfdb,0xfed -008148 ffed -00814a 0012 RETURN 0x0 +008088 d89d RCALL 0x81c4 gRC2Value[Channel - 1] = Position; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00808a d840 RCALL 0x810c +00810c 22ea ADDWFC 0xea,0x1,0x0 +00810e 0efd MOVLW 0xfd +008110 cfdb MOVFF 0xfdb,0xfee +008112 ffee +008114 0efe MOVLW 0xfe +008116 cfdb MOVFF 0xfdb,0xfed +008118 ffed +00811a 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // If this servo is the pen servo (on g_servo2_RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080bc 0efc MOVLW 0xfc if (RPn == g_servo2_RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080be 50db MOVF 0xdb,0x0,0x0 -0080c0 0100 MOVLB 0x0 -0080c2 5da6 SUBWF 0xa6,0x0,0x1 -0080c4 e109 BNZ 0x80d8 +00808c 0efc MOVLW 0xfc if (RPn == g_servo2_RPn) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00808e 50db MOVF 0xdb,0x0,0x0 +008090 0100 MOVLB 0x0 +008092 5da6 SUBWF 0xa6,0x0,0x1 +008094 e109 BNZ 0x80a8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // For non-FIFO moves, we ONLY allow moving to g_servo2_min (i.e. up) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // and never down. In the ISR version of this code, we check to see D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // what our destination position is to decide to record going up D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c // or down. Here we just need to record going up. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080c6 0101 MOVLB 0x1 PenState = PEN_UP; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080c8 0e01 MOVLW 0x1 -0080ca 6fb9 MOVWF 0xb9,0x1 -0080cc 0101 MOVLB 0x1 SolenoidState = SOLENOID_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080ce 6bb6 CLRF 0xb6,0x1 -0080d0 0101 MOVLB 0x1 if (gUseSolenoid) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080d2 51c1 MOVF 0xc1,0x0,0x1 -0080d4 e001 BZ 0x80d8 +008096 0101 MOVLB 0x1 PenState = PEN_UP; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +008098 0e01 MOVLW 0x1 +00809a 6fb9 MOVWF 0xb9,0x1 +00809c 0101 MOVLB 0x1 SolenoidState = SOLENOID_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +00809e 6bb6 CLRF 0xb6,0x1 +0080a0 0101 MOVLB 0x1 if (gUseSolenoid) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080a2 51c1 MOVF 0xc1,0x0,0x1 +0080a4 e001 BZ 0x80a8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080d6 988a BCF 0x8a,0x4,0x0 PenUpDownIO = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080a6 988a BCF 0x8a,0x4,0x0 PenUpDownIO = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080d8 0e01 MOVLW 0x1 return Channel; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080da 50db MOVF 0xdb,0x0,0x0 -0080dc 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c -0080de 0e02 MOVLW 0x2 -0080e0 5ce1 SUBWF 0xe1,0x0,0x0 -0080e2 e202 BC 0x80e8 -0080e4 6ae1 CLRF 0xe1,0x0 -0080e6 52e5 MOVF 0xe5,0x1,0x0 -0080e8 6ee1 MOVWF 0xe1,0x0 -0080ea 504e MOVF 0x4e,0x0,0x0 -0080ec d054 BRA 0x8196 -008196 52e5 MOVF 0xe5,0x1,0x0 -008198 cfe7 MOVFF 0xfe7,0xfd9 -00819a ffd9 -00819c 0012 RETURN 0x0 +0080a8 0e01 MOVLW 0x1 return Channel; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080aa 50db MOVF 0xdb,0x0,0x0 +0080ac 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\RCServo2.c +0080ae 0e02 MOVLW 0x2 +0080b0 5ce1 SUBWF 0xe1,0x0,0x0 +0080b2 e202 BC 0x80b8 +0080b4 6ae1 CLRF 0xe1,0x0 +0080b6 52e5 MOVF 0xe5,0x1,0x0 +0080b8 6ee1 MOVWF 0xe1,0x0 +0080ba 504e MOVF 0x4e,0x0,0x0 +0080bc d054 BRA 0x8166 +008166 52e5 MOVF 0xe5,0x1,0x0 +008168 cfe7 MOVFF 0xfe7,0xfd9 +00816a ffd9 +00816c 0012 RETURN 0x0 /********************************************************************* D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c * D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c * UBW Firmware D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -17946,7 +17946,7 @@ Address Value Disassembly Source volatile UINT16 g_StepperDisableSecondCounter; // Counts milliseconds up to 1 s for stepper disable timeout D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c volatile UINT16 g_StepperDisableCountdownS; // After motion is done, counts down in seconds from g_StepperDisableTimeoutS to zero D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - const rom char st_version[] = {"EBBv13_and_above EB Firmware Version 3.0.1.1"}; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + const rom char st_version[] = {"EBBv13_and_above EB Firmware Version 3.0.2"}; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #pragma udata ISR_buf = 0x100 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c volatile unsigned int ISR_A_FIFO[16]; // Stores the most recent analog conversions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -18092,7 +18092,7 @@ Address Value Disassembly Source 004486 cff4 MOVFF 0xff4,0xfe4 004488 ffe4 00448a 52e6 MOVF 0xe6,0x1,0x0 -00448c ec50 CALL 0x6ea0,0x0 +00448c ec39 CALL 0x6e72,0x0 00448e f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -18121,23 +18121,23 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Turn off the PPS routing to the 'old' pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044a8 0100 MOVLB 0x0 *(gRC2RPORPtr + gRC2RPn[gRC2Ptr]) = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0044aa ec65 CALL 0x6cca,0x0 +0044aa ec51 CALL 0x6ca2,0x0 0044ac f036 0044ae 6aef CLRF 0xef,0x0 -006cca 5199 MOVF 0x99,0x0,0x1 -006ccc 6aea CLRF 0xea,0x0 -006cce 0f71 ADDLW 0x71 -006cd0 6ee9 MOVWF 0xe9,0x0 -006cd2 0e00 MOVLW 0x0 -006cd4 22ea ADDWFC 0xea,0x1,0x0 -006cd6 50ef MOVF 0xef,0x0,0x0 -006cd8 0100 MOVLB 0x0 -006cda 6aea CLRF 0xea,0x0 -006cdc 259c ADDWF 0x9c,0x0,0x1 -006cde 6ee9 MOVWF 0xe9,0x0 -006ce0 519d MOVF 0x9d,0x0,0x1 -006ce2 22ea ADDWFC 0xea,0x1,0x0 -006ce4 0012 RETURN 0x0 +006ca2 5199 MOVF 0x99,0x0,0x1 +006ca4 6aea CLRF 0xea,0x0 +006ca6 0f71 ADDLW 0x71 +006ca8 6ee9 MOVWF 0xe9,0x0 +006caa 0e00 MOVLW 0x0 +006cac 22ea ADDWFC 0xea,0x1,0x0 +006cae 50ef MOVF 0xef,0x0,0x0 +006cb0 0100 MOVLB 0x0 +006cb2 6aea CLRF 0xea,0x0 +006cb4 259c ADDWF 0x9c,0x0,0x1 +006cb6 6ee9 MOVWF 0xe9,0x0 +006cb8 519d MOVF 0x9d,0x0,0x1 +006cba 22ea ADDWFC 0xea,0x1,0x0 +006cbc 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Turn off TIMER3 for now D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044b0 9079 BCF 0x79,0x0,0x0 T3CONbits.TMR3ON = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -18160,7 +18160,7 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If the value is zero, we do nothing to this pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // otherwise, prime it for sending a pulse D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0044c6 ecea CALL 0x6fd4,0x0 if (gRC2Value[gRC2Ptr] != 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0044c6 ecd5 CALL 0x6faa,0x0 if (gRC2Value[gRC2Ptr] != 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044c8 f037 0044ca 22ea ADDWFC 0xea,0x1,0x0 0044cc 50ee MOVF 0xee,0x0,0x0 @@ -18171,7 +18171,7 @@ Address Value Disassembly Source // Now, to move 'slowly', we update gRC2Value[] by D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // seeing if we are at gRC2Target[] yet. If not, then D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // we add (or subtract) gRC2Rate[] to try and get there. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0044d4 ecd5 CALL 0x6faa,0x0 if (gRC2Target[gRC2Ptr] != gRC2Value[gRC2Ptr]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0044d4 ecbe CALL 0x6f7c,0x0 if (gRC2Target[gRC2Ptr] != gRC2Value[gRC2Ptr]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044d6 f037 0044d8 cfee MOVFF 0xfee,0x58 0044da f058 @@ -18191,7 +18191,7 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If the rate is zero, then we always move instantly D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // to the target. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0044f0 ec24 CALL 0x6e48,0x0 if (gRC2Rate[gRC2Ptr] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0044f0 ec0d CALL 0x6e1a,0x0 if (gRC2Rate[gRC2Ptr] == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044f2 f037 0044f4 22ea ADDWFC 0xea,0x1,0x0 0044f6 50ee MOVF 0xee,0x0,0x0 @@ -18204,7 +18204,7 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Otherwise, add gRC2Rate[] each time through until we D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // get to our desired pulse width. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0044fc ecd5 CALL 0x6faa,0x0 RC2Difference = (gRC2Target[gRC2Ptr] - gRC2Value[gRC2Ptr]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0044fc ecbe CALL 0x6f7c,0x0 RC2Difference = (gRC2Target[gRC2Ptr] - gRC2Value[gRC2Ptr]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0044fe f037 004500 0104 MOVLB 0x4 004502 50ee MOVF 0xee,0x0,0x0 @@ -18222,9 +18222,9 @@ Address Value Disassembly Source 00451a e21d BC 0x4556 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00451c 0100 MOVLB 0x0 if (RC2Difference > (INT16)gRC2Rate[gRC2Ptr]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00451e ec24 CALL 0x6e48,0x0 +00451e ec0d CALL 0x6e1a,0x0 004520 f037 -004522 ece4 CALL 0x6bc8,0x0 +004522 ecd0 CALL 0x6ba0,0x0 004524 f035 004526 0104 MOVLB 0x4 004528 5057 MOVF 0x57,0x0,0x0 @@ -18240,10 +18240,10 @@ Address Value Disassembly Source 00453c e20a BC 0x4552 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00453e 0100 MOVLB 0x0 gRC2Value[gRC2Ptr] += gRC2Rate[gRC2Ptr]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004540 ec24 CALL 0x6e48,0x0 +004540 ec0d CALL 0x6e1a,0x0 004542 f037 -004544 ec02 CALL 0x6e04,0x0 -004546 f037 +004544 ece9 CALL 0x6dd2,0x0 +004546 f036 004548 5056 MOVF 0x56,0x0,0x0 00454a 26ee ADDWF 0xee,0x1,0x0 00454c 5057 MOVF 0x57,0x0,0x0 @@ -18265,7 +18265,7 @@ Address Value Disassembly Source 004562 0e00 MOVLW 0x0 004564 2257 ADDWFC 0x57,0x1,0x0 004566 0100 MOVLB 0x0 -004568 ec24 CALL 0x6e48,0x0 +004568 ec0d CALL 0x6e1a,0x0 00456a f037 00456c 22ea ADDWFC 0xea,0x1,0x0 00456e cfee MOVFF 0xfee,0x58 @@ -18283,16 +18283,16 @@ Address Value Disassembly Source 004586 5057 MOVF 0x57,0x0,0x0 004588 5859 SUBWFB 0x59,0x0,0x0 00458a e209 BC 0x459e -006e48 de85 RCALL 0x6b54 -006e4a 0e89 MOVLW 0x89 -006e4c 26e9 ADDWF 0xe9,0x1,0x0 -006e4e 0e00 MOVLW 0x0 -006e50 0012 RETURN 0x0 +006e1a de8d RCALL 0x6b36 +006e1c 0e89 MOVLW 0x89 +006e1e 26e9 ADDWF 0xe9,0x1,0x0 +006e20 0e00 MOVLW 0x0 +006e22 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00458c ec24 CALL 0x6e48,0x0 gRC2Value[gRC2Ptr] -= gRC2Rate[gRC2Ptr]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00458c ec0d CALL 0x6e1a,0x0 gRC2Value[gRC2Ptr] -= gRC2Rate[gRC2Ptr]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00458e f037 -004590 ec02 CALL 0x6e04,0x0 -004592 f037 +004590 ece9 CALL 0x6dd2,0x0 +004592 f036 004594 5056 MOVF 0x56,0x0,0x0 004596 5eee SUBWF 0xee,0x1,0x0 004598 5057 MOVF 0x57,0x0,0x0 @@ -18300,40 +18300,40 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00459c d006 BRA 0x45aa else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00459e ecd5 CALL 0x6faa,0x0 gRC2Value[gRC2Ptr] = gRC2Target[gRC2Ptr]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00459e ecbe CALL 0x6f7c,0x0 gRC2Value[gRC2Ptr] = gRC2Target[gRC2Ptr]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0045a0 f037 0045a2 c056 MOVFF 0x56,0xfee 0045a4 ffee 0045a6 c057 MOVFF 0x57,0xfed 0045a8 ffed -006bc8 22ea ADDWFC 0xea,0x1,0x0 -006bca cfee MOVFF 0xfee,0x56 -006bcc f056 -006bce cfef MOVFF 0xfef,0x57 -006bd0 f057 -006bd2 0012 RETURN 0x0 -006e04 dee1 RCALL 0x6bc8 -006e06 d8e6 RCALL 0x6fd4 -006e08 22ea ADDWFC 0xea,0x1,0x0 -006e0a 0012 RETURN 0x0 -006faa ddd4 RCALL 0x6b54 -006fac 0e79 MOVLW 0x79 +006ba0 22ea ADDWFC 0xea,0x1,0x0 +006ba2 cfee MOVFF 0xfee,0x56 +006ba4 f056 +006ba6 cfef MOVFF 0xfef,0x57 +006ba8 f057 +006baa 0012 RETURN 0x0 +006dd2 dee6 RCALL 0x6ba0 +006dd4 d8ea RCALL 0x6faa +006dd6 22ea ADDWFC 0xea,0x1,0x0 +006dd8 0012 RETURN 0x0 +006f7c dddc RCALL 0x6b36 +006f7e 0e79 MOVLW 0x79 +006f80 26e9 ADDWF 0xe9,0x1,0x0 +006f82 0e00 MOVLW 0x0 +006f84 efe9 GOTO 0x6dd2 +006f86 f036 +006faa ddc5 RCALL 0x6b36 +006fac 0e61 MOVLW 0x61 006fae 26e9 ADDWF 0xe9,0x1,0x0 006fb0 0e00 MOVLW 0x0 -006fb2 ef02 GOTO 0x6e04 -006fb4 f037 -006fd4 ddbf RCALL 0x6b54 -006fd6 0e61 MOVLW 0x61 -006fd8 26e9 ADDWF 0xe9,0x1,0x0 -006fda 0e00 MOVLW 0x0 -006fdc 0012 RETURN 0x0 +006fb2 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Set up the PPS routing for the CCP2 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0045aa ec65 CALL 0x6cca,0x0 *(gRC2RPORPtr + gRC2RPn[gRC2Ptr]) = 18; // 18 = CCP2 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0045aa ec51 CALL 0x6ca2,0x0 *(gRC2RPORPtr + gRC2RPn[gRC2Ptr]) = 18; // 18 = CCP2 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0045ac f036 0045ae 0e12 MOVLW 0x12 0045b0 6eef MOVWF 0xef,0x0 @@ -18343,27 +18343,27 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Load up the new compare time D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0045b4 0100 MOVLB 0x0 CCPR2H = gRC2Value[gRC2Ptr] >> 8; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0045b6 ec75 CALL 0x6eea,0x0 +0045b6 ec5e CALL 0x6ebc,0x0 0045b8 f037 0045ba c057 MOVFF 0x57,0x56 0045bc f056 0045be 6a57 CLRF 0x57,0x0 0045c0 5056 MOVF 0x56,0x0,0x0 0045c2 6eb6 MOVWF 0xb6,0x0 -006eea d874 RCALL 0x6fd4 -006eec efe4 GOTO 0x6bc8 -006eee f035 -0045c4 ec75 CALL 0x6eea,0x0 CCPR2L = gRC2Value[gRC2Ptr] & 0xFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ebc d876 RCALL 0x6faa +006ebe efd0 GOTO 0x6ba0 +006ec0 f035 +0045c4 ec5e CALL 0x6ebc,0x0 CCPR2L = gRC2Value[gRC2Ptr] & 0xFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0045c6 f037 0045c8 5056 MOVF 0x56,0x0,0x0 0045ca 6eb5 MOVWF 0xb5,0x0 -006b54 5199 MOVF 0x99,0x0,0x1 -006b56 6ee9 MOVWF 0xe9,0x0 -006b58 6aea CLRF 0xea,0x0 -006b5a 90d8 BCF 0xd8,0x0,0x0 -006b5c 36e9 RLCF 0xe9,0x1,0x0 -006b5e 36ea RLCF 0xea,0x1,0x0 -006b60 0012 RETURN 0x0 +006b36 5199 MOVF 0x99,0x0,0x1 +006b38 6ee9 MOVWF 0xe9,0x0 +006b3a 6aea CLRF 0xea,0x0 +006b3c 90d8 BCF 0xd8,0x0,0x0 +006b3e 36e9 RLCF 0xe9,0x1,0x0 +006b40 36ea RLCF 0xea,0x1,0x0 +006b42 0012 RETURN 0x0 0045cc 0ef0 MOVLW 0xf0 CCP2CONbits.CCP2M = 0b0000; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0045ce 14b4 ANDWF 0xb4,0x0,0x0 0045d0 0900 IORLW 0x0 @@ -18725,7 +18725,7 @@ Address Value Disassembly Source 00474c 518c MOVF 0x8c,0x0,0x1 00474e 6ee9 MOVWF 0xe9,0x0 004750 6aea CLRF 0xea,0x0 -004752 ec39 CALL 0x6e72,0x0 +004752 ec22 CALL 0x6e44,0x0 004754 f037 004756 22ea ADDWFC 0xea,0x1,0x0 00473e 50c3 MOVF 0xc3,0x0,0x0 (unsigned int)ADRESL D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -18753,9 +18753,9 @@ Address Value Disassembly Source 004766 518c MOVF 0x8c,0x0,0x1 if (ISR_A_FIFO[A_cur_channel] < g_PowerMonitorThresholdADC) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004768 6ee9 MOVWF 0xe9,0x0 00476a 6aea CLRF 0xea,0x0 -00476c ec39 CALL 0x6e72,0x0 +00476c ec22 CALL 0x6e44,0x0 00476e f037 -004770 ece4 CALL 0x6bc8,0x0 +004770 ecd0 CALL 0x6ba0,0x0 004772 f035 004774 5192 MOVF 0x92,0x0,0x1 004776 5c56 SUBWF 0x56,0x0,0x0 @@ -18923,7 +18923,7 @@ Address Value Disassembly Source // Walk backwards in the stack RAM section looking of 0xEEs. When we stop D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // seeing them, then we know that's the highest value of the stack to this point. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Print that location out. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004868 ecf3 CALL 0x6fe6,0x0 void check_high_water(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004868 ecde CALL 0x6fbc,0x0 void check_high_water(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00486a f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 nib2; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -18958,7 +18958,7 @@ Address Value Disassembly Source 00489c 06db DECF 0xdb,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0048a0 ecc2 CALL 0x6d84,0x0 if ((UINT16)stackPtr > gStackHighWater) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0048a0 ecae CALL 0x6d5c,0x0 if ((UINT16)stackPtr > gStackHighWater) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0048a2 f036 0048a4 0104 MOVLB 0x4 0048a6 504e MOVF 0x4e,0x0,0x0 @@ -18966,13 +18966,13 @@ Address Value Disassembly Source 0048aa 504f MOVF 0x4f,0x0,0x0 0048ac 59ce SUBWFB 0xce,0x0,0x1 0048ae e206 BC 0x48bc -006d84 0e01 MOVLW 0x1 -006d86 cfdb MOVFF 0xfdb,0x4e -006d88 f04e -006d8a 0e02 MOVLW 0x2 -006d8c cfdb MOVFF 0xfdb,0x4f -006d8e f04f -006d90 0012 RETURN 0x0 +006d5c 0e01 MOVLW 0x1 +006d5e cfdb MOVFF 0xfdb,0x4e +006d60 f04e +006d62 0e02 MOVLW 0x2 +006d64 cfdb MOVFF 0xfdb,0x4f +006d66 f04f +006d68 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0048b0 0e01 MOVLW 0x1 gStackHighWater = (UINT16)stackPtr; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0048b2 cfdb MOVFF 0xfdb,0x4cd @@ -18989,13 +18989,13 @@ Address Value Disassembly Source 0048c4 6ae1 CLRF 0xe1,0x0 0048c6 52e5 MOVF 0xe5,0x1,0x0 0048c8 6ee1 MOVWF 0xe1,0x0 -0048ca efb6 GOTO 0x6b6c +0048ca efa7 GOTO 0x6b4e 0048cc f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /////// D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0048ce ec05 CALL 0x700a,0x0 void UserInit(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0048d0 f038 +0048ce ecec CALL 0x6fd8,0x0 void UserInit(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0048d0 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT16 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19070,7 +19070,7 @@ Address Value Disassembly Source // Clear out the FIFO data D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004922 6ade CLRF 0xde,0x0 for (i = 0; i < 16u; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004924 6add CLRF 0xdd,0x0 -004926 ec78 CALL 0x6cf0,0x0 +004926 ec64 CALL 0x6cc8,0x0 004928 f036 00492a 0e10 MOVLW 0x10 00492c 5c4e SUBWF 0x4e,0x0,0x0 @@ -19083,7 +19083,7 @@ Address Value Disassembly Source 004956 2adb INCF 0xdb,0x1,0x0 004958 d7e6 BRA 0x4926 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004934 ec7d CALL 0x6cfa,0x0 ISR_A_FIFO[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004934 ec69 CALL 0x6cd2,0x0 ISR_A_FIFO[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004936 f036 004938 0e01 MOVLW 0x1 00493a 90d8 BCF 0xd8,0x0,0x0 @@ -19108,47 +19108,47 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004964 6ade CLRF 0xde,0x0 for (i=0; i < kTX_BUF_SIZE; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004966 6add CLRF 0xdd,0x0 -004968 ec8c CALL 0x6f18,0x0 +004968 ec79 CALL 0x6ef2,0x0 00496a f037 00496c e20a BC 0x4982 00497c e3f5 BNC 0x4968 00497e 2adb INCF 0xdb,0x1,0x0 004980 d7f3 BRA 0x4968 -006f18 deeb RCALL 0x6cf0 -006f1a 0e40 MOVLW 0x40 -006f1c 5c4e SUBWF 0x4e,0x0,0x0 -006f1e 0e00 MOVLW 0x0 -006f20 584f SUBWFB 0x4f,0x0,0x0 -006f22 0012 RETURN 0x0 +006ef2 deea RCALL 0x6cc8 +006ef4 0e40 MOVLW 0x40 +006ef6 5c4e SUBWF 0x4e,0x0,0x0 +006ef8 0e00 MOVLW 0x0 +006efa 584f SUBWFB 0x4f,0x0,0x0 +006efc 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00496e ec7d CALL 0x6cfa,0x0 g_TX_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00496e ec69 CALL 0x6cd2,0x0 g_TX_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004970 f036 004972 0e00 MOVLW 0x0 004974 26e9 ADDWF 0xe9,0x1,0x0 004976 0e02 MOVLW 0x2 -004978 ecec CALL 0x6dd8,0x0 +004978 ecd8 CALL 0x6db0,0x0 00497a f036 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004982 6ade CLRF 0xde,0x0 for (i=0; i < kRX_COMMAND_BUF_SIZE; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004984 6add CLRF 0xdd,0x0 -004986 ec8c CALL 0x6f18,0x0 +004986 ec79 CALL 0x6ef2,0x0 004988 f037 00498a e20a BC 0x49a0 00499a e3f5 BNC 0x4986 00499c 2adb INCF 0xdb,0x1,0x0 00499e d7f3 BRA 0x4986 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00498c ec7d CALL 0x6cfa,0x0 g_RX_command_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00498c ec69 CALL 0x6cd2,0x0 g_RX_command_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00498e f036 004990 0e40 MOVLW 0x40 004992 26e9 ADDWF 0xe9,0x1,0x0 004994 0e02 MOVLW 0x2 -004996 ecec CALL 0x6dd8,0x0 +004996 ecd8 CALL 0x6db0,0x0 004998 f036 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049a0 6ade CLRF 0xde,0x0 for (i=0; i < kRX_BUF_SIZE; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049a2 6add CLRF 0xdd,0x0 -0049a4 ec78 CALL 0x6cf0,0x0 +0049a4 ec64 CALL 0x6cc8,0x0 0049a6 f036 0049a8 0e00 MOVLW 0x0 0049aa 5c4e SUBWF 0x4e,0x0,0x0 @@ -19158,19 +19158,19 @@ Address Value Disassembly Source 0049c0 e3f1 BNC 0x49a4 0049c2 2adb INCF 0xdb,0x1,0x0 0049c4 d7ef BRA 0x49a4 -006ddc 2adf INCF 0xdf,0x1,0x0 -006dde 0e01 MOVLW 0x1 -006de0 0012 RETURN 0x0 +006db4 2adf INCF 0xdf,0x1,0x0 +006db6 0e01 MOVLW 0x1 +006db8 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0049b2 ec7d CALL 0x6cfa,0x0 g_RX_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0049b2 ec69 CALL 0x6cd2,0x0 g_RX_buf[i] = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049b4 f036 0049b6 0e00 MOVLW 0x0 0049b8 26e9 ADDWF 0xe9,0x1,0x0 0049ba 0e03 MOVLW 0x3 -0049bc ecec CALL 0x6dd8,0x0 +0049bc ecd8 CALL 0x6db0,0x0 0049be f036 -006dd8 22ea ADDWFC 0xea,0x1,0x0 -006dda 6aef CLRF 0xef,0x0 +006db0 22ea ADDWFC 0xea,0x1,0x0 +006db2 6aef CLRF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // And the USART TX and RX buffer management D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19208,7 +19208,7 @@ Address Value Disassembly Source 0049e6 ecb9 CALL 0x1972,0x0 EBB_Init(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049e8 f00c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0049ea eccf CALL 0x7d9e,0x0 RCServo2_Init(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0049ea ecb7 CALL 0x7d6e,0x0 RCServo2_Init(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049ec f03e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Turn on the Timer4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19216,7 +19216,7 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If there's a name in FLASH for us, copy it over to the USB Device D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // descriptor before we enumerate D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0049f0 ec4b CALL 0x6496,0x0 populateDeviceStringWithName(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0049f0 ec3e CALL 0x647c,0x0 populateDeviceStringWithName(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0049f2 f032 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Zero out limit switch variables D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19277,7 +19277,7 @@ Address Value Disassembly Source 004a3a 6ae1 CLRF 0xe1,0x0 004a3c 52e5 MOVF 0xe5,0x1,0x0 004a3e 6ee1 MOVWF 0xe1,0x0 -004a40 efb6 GOTO 0x6b6c +004a40 efa7 GOTO 0x6b4e 004a42 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19305,7 +19305,7 @@ Address Value Disassembly Source * D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c * Note: None D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c *****************************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004a44 ecb1 CALL 0x6b62,0x0 void ProcessIO(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004a44 eca2 CALL 0x6b44,0x0 void ProcessIO(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004a46 f035 004a48 0e05 MOVLW 0x5 004a4a 26e1 ADDWF 0xe1,0x1,0x0 @@ -19321,18 +19321,18 @@ Address Value Disassembly Source // this binary command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BYTE i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004a4c ecc9 CALL 0x6d92,0x0 BOOL done = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004a4c ecb5 CALL 0x6d6a,0x0 BOOL done = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004a4e f036 -006d92 0e01 MOVLW 0x1 -006d94 6adb CLRF 0xdb,0x0 -006d96 0e02 MOVLW 0x2 unsigned char rx_bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006d98 6adb CLRF 0xdb,0x0 -006d9a 0e03 MOVLW 0x3 unsigned char byte_cnt = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006d9c 6adb CLRF 0xdb,0x0 -006d9e 0012 RETURN 0x0 +006d6a 0e01 MOVLW 0x1 +006d6c 6adb CLRF 0xdb,0x0 +006d6e 0e02 MOVLW 0x2 unsigned char rx_bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d70 6adb CLRF 0xdb,0x0 +006d72 0e03 MOVLW 0x3 unsigned char byte_cnt = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d74 6adb CLRF 0xdb,0x0 +006d76 0012 RETURN 0x0 unsigned char tst_char; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004a50 ecc9 CALL 0x6992,0x0 BlinkUSBStatus(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004a50 ecba CALL 0x6974,0x0 BlinkUSBStatus(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004a52 f034 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check for any new I packets (from T command) ready to go out D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19343,7 +19343,7 @@ Address Value Disassembly Source 004a6e d7f2 BRA 0x4a54 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Spit out an I packet first D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004a5c ecdf CALL 0x5dbe,0x0 parse_I_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004a5c eccc CALL 0x5d98,0x0 parse_I_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004a5e f02e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Then update our I packet FIFO stuff D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19365,7 +19365,7 @@ Address Value Disassembly Source 004a88 d7f3 BRA 0x4a70 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Spit out an A packet first D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004a76 ecfc CALL 0x5df8,0x0 parse_A_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004a76 ece9 CALL 0x5dd2,0x0 parse_A_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004a78 f02e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Then update our A packet FIFO stuff D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19411,9 +19411,9 @@ Address Value Disassembly Source 004ab0 6ee6 MOVWF 0xe6,0x0 004ab2 0e02 MOVLW 0x2 004ab4 6ee6 MOVWF 0xe6,0x0 -004ab6 ecc5 CALL 0x878a,0x0 +004ab6 ecad CALL 0x875a,0x0 004ab8 f043 -004aba ecfb CALL 0x6ff6,0x0 +004aba ece2 CALL 0x6fc4,0x0 004abc f037 004abe 6ee7 MOVWF 0xe7,0x0 004ac0 0e02 MOVLW 0x2 @@ -19431,7 +19431,7 @@ Address Value Disassembly Source 004ad4 50db MOVF 0xdb,0x0,0x0 004ad6 6ef3 MOVWF 0xf3,0x0 004ad8 0e03 MOVLW 0x3 -004ada ec82 CALL 0x6d04,0x0 +004ada ec6e CALL 0x6cdc,0x0 004adc f036 004ade e301 BNC 0x4ae2 004ae0 d0ae BRA 0x4c3e @@ -19439,25 +19439,25 @@ Address Value Disassembly Source 004c3a 2adb INCF 0xdb,0x1,0x0 004c3c d74a BRA 0x4ad2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ae2 ecb2 CALL 0x6d64,0x0 tst_char = g_RX_command_buf[byte_cnt]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ae2 ec9e CALL 0x6d3c,0x0 tst_char = g_RX_command_buf[byte_cnt]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004ae4 f036 004ae6 0e04 MOVLW 0x4 004ae8 cfef MOVFF 0xfef,0xfdb 004aea ffdb -006d64 0e03 MOVLW 0x3 -006d66 50db MOVF 0xdb,0x0,0x0 -006d68 6aea CLRF 0xea,0x0 -006d6a 0f40 ADDLW 0x40 -006d6c 6ee9 MOVWF 0xe9,0x0 -006d6e 0e02 MOVLW 0x2 -006d70 22ea ADDWFC 0xea,0x1,0x0 -006d72 0012 RETURN 0x0 +006d3c 0e03 MOVLW 0x3 +006d3e 50db MOVF 0xdb,0x0,0x0 +006d40 6aea CLRF 0xea,0x0 +006d42 0f40 ADDLW 0x40 +006d44 6ee9 MOVWF 0xe9,0x0 +006d46 0e02 MOVLW 0x2 +006d48 22ea ADDWFC 0xea,0x1,0x0 +006d4a 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004aec 0104 MOVLB 0x4 if (binary_bytes_left) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004aee 51ec MOVF 0xec,0x0,0x1 004af0 e014 BZ 0x4b1a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004af2 ec6d CALL 0x6eda,0x0 g_RX_buf[g_RX_buf_in] = tst_char; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004af2 ec56 CALL 0x6eac,0x0 g_RX_buf[g_RX_buf_in] = tst_char; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004af4 f037 004af6 0e04 MOVLW 0x4 004af8 cfdb MOVFF 0xfdb,0xfef @@ -19520,11 +19520,11 @@ Address Value Disassembly Source 004b48 e00f BZ 0x4b68 004b66 d7ef BRA 0x4b46 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004b4a ecb2 CALL 0x6d64,0x0 g_RX_buf[g_RX_buf_in] = g_RX_command_buf[byte_cnt]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004b4a ec9e CALL 0x6d3c,0x0 g_RX_buf[g_RX_buf_in] = g_RX_command_buf[byte_cnt]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004b4c f036 004b4e 50ef MOVF 0xef,0x0,0x0 004b50 6ee6 MOVWF 0xe6,0x0 -004b52 ec6d CALL 0x6eda,0x0 +004b52 ec56 CALL 0x6eac,0x0 004b54 f037 004b56 52e5 MOVF 0xe5,0x1,0x0 004b58 50e7 MOVF 0xe7,0x0,0x0 @@ -19545,15 +19545,15 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004b72 908b BCF 0x8b,0x0,0x0 LATCbits.LATC0 = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004b74 ecd0 CALL 0x6da0,0x0 g_RX_buf_in = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004b74 ecbc CALL 0x6d78,0x0 g_RX_buf_in = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004b76 f036 -006da0 0104 MOVLB 0x4 -006da2 6bb7 CLRF 0xb7,0x1 -006da4 6bb8 CLRF 0xb8,0x1 g_RX_buf_out = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006da6 0104 MOVLB 0x4 first_byte = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006da8 0e01 MOVLW 0x1 -006daa 6feb MOVWF 0xeb,0x1 -006dac 0012 RETURN 0x0 +006d78 0104 MOVLB 0x4 +006d7a 6bb7 CLRF 0xb7,0x1 +006d7c 6bb8 CLRF 0xb8,0x1 g_RX_buf_out = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d7e 0104 MOVLB 0x4 first_byte = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d80 0e01 MOVLW 0x1 +006d82 6feb MOVWF 0xeb,0x1 +006d84 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19564,7 +19564,7 @@ Address Value Disassembly Source 004b7c 0e04 MOVLW 0x4 Write1USART(tst_char); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004b7e cfdb MOVFF 0xfdb,0xfe6 004b80 ffe6 -004b82 ec2c CALL 0x9858,0x0 +004b82 ec13 CALL 0x9826,0x0 004b84 f04c 004b86 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19594,7 +19594,7 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004baa 0e01 MOVLW 0x1 in_cr = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bac 6fe7 MOVWF 0xe7,0x1 -004bae ec6d CALL 0x6eda,0x0 g_RX_buf[g_RX_buf_in] = kCR; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004bae ec56 CALL 0x6eac,0x0 g_RX_buf[g_RX_buf_in] = kCR; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bb0 f037 004bb2 0e0d MOVLW 0xd 004bb4 6eef MOVWF 0xef,0x0 @@ -19615,7 +19615,7 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bc0 908b BCF 0x8b,0x0,0x0 LATCbits.LATC0 = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004bc2 ecd0 CALL 0x6da0,0x0 g_RX_buf_in = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004bc2 ecbc CALL 0x6d78,0x0 g_RX_buf_in = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bc4 f036 g_RX_buf_out = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c first_byte = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19633,13 +19633,13 @@ Address Value Disassembly Source // Handle the backspace thing D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bd8 07b7 DECF 0xb7,0x1,0x1 g_RX_buf_in--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bda 51b7 MOVF 0xb7,0x0,0x1 g_RX_buf[g_RX_buf_in] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004bdc eca0 CALL 0x6b40,0x0 +004bdc ec91 CALL 0x6b22,0x0 004bde f035 004be0 6aef CLRF 0xef,0x0 -004be2 0e31 MOVLW 0x31 ebb_print((far rom char *)" \b"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004be2 0e01 MOVLW 0x1 ebb_print((far rom char *)" \b"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004be4 6e4e MOVWF 0x4e,0x0 004be6 0e8d MOVLW 0x8d -004be8 ec93 CALL 0x6b26,0x0 +004be8 ec84 CALL 0x6b08,0x0 004bea f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004bec d018 BRA 0x4c1e else if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19654,26 +19654,26 @@ Address Value Disassembly Source 004bfe 0e20 MOVLW 0x20 tst_char >= 32u D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c00 6ef3 MOVWF 0xf3,0x0 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c02 0e04 MOVLW 0x4 -004c04 ec82 CALL 0x6d04,0x0 +004c04 ec6e CALL 0x6cdc,0x0 004c06 f036 004c08 e30a BNC 0x4c1e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Only add a byte if it is not a CR or LF D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c0a ec6d CALL 0x6eda,0x0 g_RX_buf[g_RX_buf_in] = tst_char; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c0a ec56 CALL 0x6eac,0x0 g_RX_buf[g_RX_buf_in] = tst_char; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c0c f037 004c0e 0e04 MOVLW 0x4 004c10 cfdb MOVFF 0xfdb,0xfef 004c12 ffef -006b40 6aea CLRF 0xea,0x0 -006b42 0f00 ADDLW 0x0 -006b44 6ee9 MOVWF 0xe9,0x0 -006b46 0e03 MOVLW 0x3 -006b48 22ea ADDWFC 0xea,0x1,0x0 -006b4a 0012 RETURN 0x0 -006eda 0104 MOVLB 0x4 -006edc 51b7 MOVF 0xb7,0x0,0x1 -006ede efa0 GOTO 0x6b40 -006ee0 f035 +006b22 6aea CLRF 0xea,0x0 +006b24 0f00 ADDLW 0x0 +006b26 6ee9 MOVWF 0xe9,0x0 +006b28 0e03 MOVLW 0x3 +006b2a 22ea ADDWFC 0xea,0x1,0x0 +006b2c 0012 RETURN 0x0 +006eac 0104 MOVLB 0x4 +006eae 51b7 MOVF 0xb7,0x0,0x1 +006eb0 ef91 GOTO 0x6b22 +006eb2 f035 004c14 0104 MOVLB 0x4 in_cr = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c16 6be7 CLRF 0xe7,0x1 004c18 6beb CLRF 0xeb,0x1 first_byte = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19708,10 +19708,10 @@ Address Value Disassembly Source 004c44 a184 BTFSS 0x84,0x0,0x1 if (bittstzero(error_byte)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c46 d005 BRA 0x4c52 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c48 0e2d MOVLW 0x2d ebb_print((far rom char *)"!0 "); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c48 0efd MOVLW 0xfd ebb_print((far rom char *)"!0 "); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c4a 6e4e MOVWF 0x4e,0x0 -004c4c 0e8d MOVLW 0x8d -004c4e ec21 CALL 0x6e42,0x0 +004c4c 0e8c MOVLW 0x8c +004c4e ec0a CALL 0x6e14,0x0 004c50 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19720,10 +19720,10 @@ Address Value Disassembly Source 004c56 d005 BRA 0x4c62 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Unused as of yet D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c58 0e10 MOVLW 0x10 ebb_print((far rom char *)"!1 Err: Can't step that fast"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c58 0ee0 MOVLW 0xe0 ebb_print((far rom char *)"!1 Err: Can't step that fast"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c5a 6e4e MOVWF 0x4e,0x0 -004c5c 0e8d MOVLW 0x8d -004c5e ec21 CALL 0x6e42,0x0 +004c5c 0e8c MOVLW 0x8c +004c5e ec0a CALL 0x6e14,0x0 004c60 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19731,10 +19731,10 @@ Address Value Disassembly Source 004c64 a584 BTFSS 0x84,0x2,0x1 004c66 d005 BRA 0x4c72 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c68 0ef6 MOVLW 0xf6 ebb_print((far rom char *)"!2 Err: TX Buffer overrun"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c68 0ec6 MOVLW 0xc6 ebb_print((far rom char *)"!2 Err: TX Buffer overrun"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c6a 6e4e MOVWF 0x4e,0x0 004c6c 0e8c MOVLW 0x8c -004c6e ec21 CALL 0x6e42,0x0 +004c6e ec0a CALL 0x6e14,0x0 004c70 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19742,10 +19742,10 @@ Address Value Disassembly Source 004c74 a784 BTFSS 0x84,0x3,0x1 004c76 d005 BRA 0x4c82 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c78 0edc MOVLW 0xdc ebb_print((far rom char *)"!3 Err: RX Buffer overrun"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c78 0eac MOVLW 0xac ebb_print((far rom char *)"!3 Err: RX Buffer overrun"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c7a 6e4e MOVWF 0x4e,0x0 004c7c 0e8c MOVLW 0x8c -004c7e ec21 CALL 0x6e42,0x0 +004c7e ec0a CALL 0x6e14,0x0 004c80 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19753,10 +19753,10 @@ Address Value Disassembly Source 004c84 a984 BTFSS 0x84,0x4,0x1 004c86 d005 BRA 0x4c92 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c88 0ebf MOVLW 0xbf ebb_print((far rom char *)"!4 Err: Missing parameter(s)"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c88 0e8f MOVLW 0x8f ebb_print((far rom char *)"!4 Err: Missing parameter(s)"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c8a 6e4e MOVWF 0x4e,0x0 004c8c 0e8c MOVLW 0x8c -004c8e ec21 CALL 0x6e42,0x0 +004c8e ec0a CALL 0x6e14,0x0 004c90 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19769,10 +19769,10 @@ Address Value Disassembly Source 004c94 ad84 BTFSS 0x84,0x6,0x1 if (bittst(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c96 d005 BRA 0x4ca2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004c98 0e9f MOVLW 0x9f ebb_print((far rom char *)"!6 Err: Invalid parameter value"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004c98 0e6f MOVLW 0x6f ebb_print((far rom char *)"!6 Err: Invalid parameter value"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004c9a 6e4e MOVWF 0x4e,0x0 004c9c 0e8c MOVLW 0x8c -004c9e ec21 CALL 0x6e42,0x0 +004c9e ec0a CALL 0x6e14,0x0 004ca0 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19780,10 +19780,10 @@ Address Value Disassembly Source 004ca4 af84 BTFSS 0x84,0x7,0x1 004ca6 d005 BRA 0x4cb2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ca8 0e87 MOVLW 0x87 ebb_print((far rom char *)"!7 Err: Extra parameter"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ca8 0e57 MOVLW 0x57 ebb_print((far rom char *)"!7 Err: Extra parameter"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004caa 6e4e MOVWF 0x4e,0x0 004cac 0e8c MOVLW 0x8c -004cae ec21 CALL 0x6e42,0x0 +004cae ec0a CALL 0x6e14,0x0 004cb0 f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19801,10 +19801,10 @@ Address Value Disassembly Source 004cc0 51cb MOVF 0xcb,0x0,0x1 004cc2 e112 BNZ 0x4ce8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004cc4 0e68 MOVLW 0x68 ebb_print((far rom char *)"Limit switch triggered. PortB="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004cc4 0e38 MOVLW 0x38 ebb_print((far rom char *)"Limit switch triggered. PortB="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004cc6 6e4e MOVWF 0x4e,0x0 004cc8 0e8c MOVLW 0x8c -004cca ec93 CALL 0x6b26,0x0 +004cca ec84 CALL 0x6b08,0x0 004ccc f035 // We want 2 characters of hex D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004cce 0e02 MOVLW 0x2 ebb_print_hex(gLimitSwitchPortB, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19812,9 +19812,9 @@ Address Value Disassembly Source 004cd2 c4c9 MOVFF 0x4c9,0x4e 004cd4 f04e 004cd6 6a4f CLRF 0x4f,0x0 -004cd8 ecbf CALL 0x6b7e,0x0 +004cd8 ecab CALL 0x6b56,0x0 004cda f035 -004cdc ec9d CALL 0x6b3a,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004cdc ec8e CALL 0x6b1c,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004cde f035 004ce0 0104 MOVLB 0x4 gLimitSwitchReplyPrinted = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004ce2 0e01 MOVLW 0x1 @@ -19839,13 +19839,13 @@ Address Value Disassembly Source 004cfc 6ae1 CLRF 0xe1,0x0 004cfe 52e5 MOVF 0xe5,0x1,0x0 004d00 6ee1 MOVWF 0xe1,0x0 -004d02 efb6 GOTO 0x6b6c +004d02 efa7 GOTO 0x6b4e 004d04 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This is our replacement for the standard putc routine D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This enables ebb_print() and all related functions to print to D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // the USB output (i.e. to the PC) buffer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d06 ec50 CALL 0x6ea0,0x0 int ebb_putc(char c) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004d06 ec39 CALL 0x6e72,0x0 int ebb_putc(char c) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d08 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d0a c4b5 MOVFF 0x4b5,0xfdf BYTE OldPtr = g_TX_buf_in; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19854,7 +19854,7 @@ Address Value Disassembly Source // Check to see if adding this byte will cause us to be full D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d0e 2adf INCF 0xdf,0x1,0x0 OldPtr++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d10 0e40 MOVLW 0x40 if (kTX_BUF_SIZE == OldPtr) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d12 ecf3 CALL 0x6be6,0x0 +004d12 ecdf CALL 0x6bbe,0x0 004d14 f035 004d16 e101 BNZ 0x4d1a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19907,12 +19907,12 @@ Address Value Disassembly Source 004d5a c04f MOVFF 0x4f,0xff4 004d5c fff4 004d5e 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d60 efb6 GOTO 0x6b6c +004d60 efa7 GOTO 0x6b4e 004d62 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // In this function, we check to see if we have anything to transmit. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If so then we schedule the data for sending. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d64 ec50 CALL 0x6ea0,0x0 void check_and_send_TX_data(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004d64 ec39 CALL 0x6e72,0x0 void check_and_send_TX_data(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d66 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c char temp; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19932,10 +19932,10 @@ Address Value Disassembly Source 004d74 e005 BZ 0x4d80 004d7e d7f8 BRA 0x4d70 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d76 ec51 CALL 0x88a2,0x0 CDCTxService(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004d76 ec39 CALL 0x8872,0x0 CDCTxService(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d78 f044 #if defined(USB_POLLING) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004d7a ec96 CALL 0x712c,0x0 USBDeviceTasks(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004d7a ec7e CALL 0x70fc,0x0 USBDeviceTasks(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d7c f038 #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19951,25 +19951,25 @@ Address Value Disassembly Source // Since IN is beyond OUT, only need one chunk D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d8a 51b6 MOVF 0xb6,0x0,0x1 temp = g_TX_buf_in - g_TX_buf_out; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d8c 5db5 SUBWF 0xb5,0x0,0x1 -004d8e ec26 CALL 0x6c4c,0x0 -006c4c 6edf +004d8e ec12 CALL 0x6c24,0x0 +006c24 6edf 004d90 f036 WORD2 0x36 putUSBUSART((char *)&g_TX_buf[g_TX_buf_out], temp); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006c4e cfdf MOVFF 0xfdf,0xfe6 -006c50 ffe6 -006c52 51b6 MOVF 0xb6,0x0,0x1 -006c54 6a4f CLRF 0x4f,0x0 -006c56 0f00 ADDLW 0x0 -006c58 6e4e MOVWF 0x4e,0x0 -006c5a 0e02 MOVLW 0x2 -006c5c 224f ADDWFC 0x4f,0x1,0x0 -006c5e c04e MOVFF 0x4e,0xfe6 -006c60 ffe6 -006c62 c04f MOVFF 0x4f,0xfe6 -006c64 ffe6 -006c66 ec04 CALL 0x8808,0x0 -006c68 f044 -006c6a effb GOTO 0x6ff6 -006c6c f037 +006c26 cfdf MOVFF 0xfdf,0xfe6 +006c28 ffe6 +006c2a 51b6 MOVF 0xb6,0x0,0x1 +006c2c 6a4f CLRF 0x4f,0x0 +006c2e 0f00 ADDLW 0x0 +006c30 6e4e MOVWF 0x4e,0x0 +006c32 0e02 MOVLW 0x2 +006c34 224f ADDWFC 0x4f,0x1,0x0 +006c36 c04e MOVFF 0x4e,0xfe6 +006c38 ffe6 +006c3a c04f MOVFF 0x4f,0xfe6 +006c3c ffe6 +006c3e ecec CALL 0x87d8,0x0 +006c40 f043 +006c42 efe2 GOTO 0x6fc4 +006c44 f037 // Now that we've scheduled the data for sending, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // update the pointer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d92 c4b5 MOVFF 0x4b5,0x4b6 g_TX_buf_out = g_TX_buf_in; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -19983,18 +19983,18 @@ Address Value Disassembly Source 004d98 0e40 MOVLW 0x40 temp = kTX_BUF_SIZE - g_TX_buf_out; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004d9a 80d8 BSF 0xd8,0x0,0x0 004d9c 55b6 SUBFWB 0xb6,0x0,0x1 -004d9e ec26 CALL 0x6c4c,0x0 +004d9e ec12 CALL 0x6c24,0x0 004da0 f036 putUSBUSART((char *)&g_TX_buf[g_TX_buf_out], temp); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now that we've scheduled the data for sending, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // update the pointer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004da2 0104 MOVLB 0x4 g_TX_buf_out = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004da4 6bb6 CLRF 0xb6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004da6 ec51 CALL 0x88a2,0x0 CDCTxService(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004da6 ec39 CALL 0x8872,0x0 CDCTxService(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004da8 f044 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004daa 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004dac efb6 GOTO 0x6b6c +004dac efa7 GOTO 0x6b4e 004dae f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Look at the new packet, see what command it is, and D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -20006,7 +20006,7 @@ Address Value Disassembly Source // New for v3.0.0: if gCommandChecksumRequired is true, then look at the end D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // of the command packet for the checksum, and if it is not there or not D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // correct, error out. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004db0 ecb1 CALL 0x6b62,0x0 void parse_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004db0 eca2 CALL 0x6b44,0x0 void parse_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004db2 f035 004db4 0e09 MOVLW 0x9 004db6 26e1 ADDWF 0xe1,0x1,0x0 @@ -20033,7 +20033,7 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004dd8 51cc MOVF 0xcc,0x0,0x1 if (gCommandChecksumRequired) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004dda e101 BNZ 0x4dde -004ddc d08a BRA 0x4ef2 +004ddc d08c BRA 0x4ef6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004dde 0e06 MOVLW 0x6 checksumOK = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004de0 6adb CLRF 0xdb,0x0 @@ -20055,7 +20055,7 @@ Address Value Disassembly Source 004df4 68db SETF 0xdb,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004df6 ec92 CALL 0x6f24,0x0 while ((g_RX_buf[checksum_ptr] != ',') && (checksum_len < 5u) && (checksum_ptr != g_RX_buf_out)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004df6 ec7f CALL 0x6efe,0x0 while ((g_RX_buf[checksum_ptr] != ',') && (checksum_len < 5u) && (checksum_ptr != g_RX_buf_out)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004df8 f037 004dfa e016 BZ 0x4e28 004dfc 0e05 MOVLW 0x5 @@ -20070,12 +20070,12 @@ Address Value Disassembly Source 004e0e 5db8 SUBWF 0xb8,0x0,0x1 004e10 e00b BZ 0x4e28 004e26 d7e7 BRA 0x4df6 -006f24 0e04 MOVLW 0x4 -006f26 50db MOVF 0xdb,0x0,0x0 -006f28 de0b RCALL 0x6b40 -006f2a 50ef MOVF 0xef,0x0,0x0 -006f2c 082c SUBLW 0x2c -006f2e 0012 RETURN 0x0 +006efe 0e04 MOVLW 0x4 +006f00 50db MOVF 0xdb,0x0,0x0 +006f02 de0f RCALL 0x6b22 +006f04 50ef MOVF 0xef,0x0,0x0 +006f06 082c SUBLW 0x2c +006f08 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e12 0e04 MOVLW 0x4 if (checksum_ptr != 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e14 50db MOVF 0xdb,0x0,0x0 @@ -20095,9 +20095,9 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If checksum_ptr isn't on a comma then there is no checksum for sure D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // so let checksumOK stay FALSE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004e28 ec92 CALL 0x6f24,0x0 if (g_RX_buf[checksum_ptr] == ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004e28 ec7f CALL 0x6efe,0x0 if (g_RX_buf[checksum_ptr] == ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e2a f037 -004e2c e159 BNZ 0x4ee0 +004e2c e15b BNZ 0x4ee4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Last parameter found, hopefully it's a checksum. Read it in. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // We have to play some games with the buffer index values here D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -20115,7 +20115,7 @@ Address Value Disassembly Source 004e3a 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &checksum_cmd, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e3c 50d9 MOVF 0xd9,0x0,0x0 004e3e 0f02 ADDLW 0x2 -004e40 ecfb CALL 0x6df6,0x0 +004e40 ece2 CALL 0x6dc4,0x0 004e42 f036 004e44 0e07 MOVLW 0x7 g_RX_buf_out = old_rx_buf_out; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e46 cfdb MOVFF 0xfdb,0x4b8 @@ -20136,7 +20136,7 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e5e 0e08 MOVLW 0x8 checksum_calc += g_RX_buf[i]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004e60 50db MOVF 0xdb,0x0,0x0 -004e62 eca0 CALL 0x6b40,0x0 +004e62 ec91 CALL 0x6b22,0x0 004e64 f035 004e66 0e03 MOVLW 0x3 004e68 cfdb MOVFF 0xfdb,0xfe7 @@ -20189,572 +20189,574 @@ Address Value Disassembly Source // before the checksum. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004eb6 0e04 MOVLW 0x4 g_RX_buf[checksum_ptr] = kCR; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004eb8 50db MOVF 0xdb,0x0,0x0 -004eba eca0 CALL 0x6b40,0x0 +004eba ec91 CALL 0x6b22,0x0 004ebc f035 004ebe 0e0d MOVLW 0xd 004ec0 6eef MOVWF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ec2 d017 BRA 0x4ef2 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ec2 d019 BRA 0x4ef6 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ec4 0e42 MOVLW 0x42 ebb_print((far rom char *)"!8 Err: Checksum incorrect, expected "); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ec4 0e12 MOVLW 0x12 ebb_print((far rom char *)"!8 Err: Checksum incorrect, expected "); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 004ec6 6e4e MOVWF 0x4e,0x0 004ec8 0e8c MOVLW 0x8c -004eca ec93 CALL 0x6b26,0x0 +004eca ec84 CALL 0x6b08,0x0 004ecc f035 004ece 0e03 MOVLW 0x3 ebb_print_uint(checksum_calc); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ed0 ec98 CALL 0x6d30,0x0 +004ed0 ec84 CALL 0x6d08,0x0 004ed2 f036 -004ed4 ec2c CALL 0x7058,0x0 -004ed6 f038 -004ed8 ecf1 CALL 0x8de2,0x0 -004eda f046 -004edc 52e5 MOVF 0xe5,0x1,0x0 +004ed4 c04e MOVFF 0x4e,0xfe6 +004ed6 ffe6 +004ed8 eced CALL 0x6dda,0x0 +004eda f036 +004edc ecd9 CALL 0x8db2,0x0 +004ede f046 +004ee0 52e5 MOVF 0xe5,0x1,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ede d005 BRA 0x4eea else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ee2 d005 BRA 0x4eee else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ee0 0e19 MOVLW 0x19 ebb_print((far rom char *)"!8 Err: Checksum not found but required."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ee2 6e4e MOVWF 0x4e,0x0 -004ee4 0e8c MOVLW 0x8c -004ee6 ec40 CALL 0x6e80,0x0 -004ee8 f037 -004eea ecfb CALL 0x6ff6,0x0 +004ee4 0ee9 MOVLW 0xe9 ebb_print((far rom char *)"!8 Err: Checksum not found but required."); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ee6 6e4e MOVWF 0x4e,0x0 +004ee8 0e8b MOVLW 0x8b +004eea ec29 CALL 0x6e52,0x0 004eec f037 -006e80 6e4f MOVWF 0x4f,0x0 -006e82 6a50 CLRF 0x50,0x0 -006e84 c04e MOVFF 0x4e,0xfe6 -006e86 ffe6 -006e88 6ee6 MOVWF 0xe6,0x0 -006e8a c050 MOVFF 0x50,0xfe6 -006e8c ffe6 -006e8e ef9a GOTO 0x8d34 -006e90 f046 -004eee ec9d CALL 0x6b3a,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ef0 f035 +004eee ece2 CALL 0x6fc4,0x0 +004ef0 f037 +006e52 6e4f MOVWF 0x4f,0x0 +006e54 6a50 CLRF 0x50,0x0 +006e56 c04e MOVFF 0x4e,0xfe6 +006e58 ffe6 +006e5a 6ee6 MOVWF 0xe6,0x0 +006e5c c050 MOVFF 0x50,0xfe6 +006e5e ffe6 +006e60 ef82 GOTO 0x8d04 +006e62 f046 +004ef2 ec8e CALL 0x6b1c,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ef4 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ef2 0e06 MOVLW 0x6 if (checksumOK) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004ef4 50db MOVF 0xdb,0x0,0x0 -004ef6 e101 BNZ 0x4efa -004ef8 d268 BRA 0x53ca +004ef6 0e06 MOVLW 0x6 if (checksumOK) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004ef8 50db MOVF 0xdb,0x0,0x0 +004efa e101 BNZ 0x4efe +004efc d268 BRA 0x53ce { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Always grab the first character (which is the first byte of the command) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004efa 0104 MOVLB 0x4 gCommand_Char1 = toupper(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004efc ec14 CALL 0x7028,0x0 -004efe f038 -004f00 ecba CALL 0x6d74,0x0 -004f02 f036 -004f04 cff3 MOVFF 0xff3,0x4c7 -004f06 f4c7 -006d74 50ef MOVF 0xef,0x0,0x0 -006d76 6ee6 MOVWF 0xe6,0x0 -006d78 6ae6 CLRF 0xe6,0x0 -006d7a ec43 CALL 0x9886,0x0 -006d7c f04c -006d7e 52e5 MOVF 0xe5,0x1,0x0 -006d80 52e5 MOVF 0xe5,0x1,0x0 -006d82 0012 RETURN 0x0 -004f08 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f0a eccd CALL 0x6b9a,0x0 -004f0c f035 -004f0e e104 BNZ 0x4f18 -004f10 0e01 MOVLW 0x1 -004f12 184f XORWF 0x4f,0x0,0x0 -004f14 e101 BNZ 0x4f18 -004f16 6bb8 CLRF 0xb8,0x1 -004f18 51c7 MOVF 0xc7,0x0,0x1 command = gCommand_Char1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f1a 6ede MOVWF 0xde,0x0 -004f1c 6add CLRF 0xdd,0x0 +004efe 0104 MOVLB 0x4 gCommand_Char1 = toupper(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f00 ec00 CALL 0x7000,0x0 +004f02 f038 +004f04 eca6 CALL 0x6d4c,0x0 +004f06 f036 +004f08 cff3 MOVFF 0xff3,0x4c7 +004f0a f4c7 +006d4c 50ef MOVF 0xef,0x0,0x0 +006d4e 6ee6 MOVWF 0xe6,0x0 +006d50 6ae6 CLRF 0xe6,0x0 +006d52 ec2a CALL 0x9854,0x0 +006d54 f04c +006d56 52e5 MOVF 0xe5,0x1,0x0 +006d58 52e5 MOVF 0xe5,0x1,0x0 +006d5a 0012 RETURN 0x0 +004f0c 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f0e ecb4 CALL 0x6b68,0x0 +004f10 f035 +004f12 e104 BNZ 0x4f1c +004f14 0e01 MOVLW 0x1 +004f16 184f XORWF 0x4f,0x0,0x0 +004f18 e101 BNZ 0x4f1c +004f1a 6bb8 CLRF 0xb8,0x1 +004f1c 51c7 MOVF 0xc7,0x0,0x1 command = gCommand_Char1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f1e 6ede MOVWF 0xde,0x0 +004f20 6add CLRF 0xdd,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Only grab second one if it is not a comma D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f1e ecff CALL 0x6dfe,0x0 if (g_RX_buf[g_RX_buf_out] != (BYTE)',' && g_RX_buf[g_RX_buf_out] != kCR && g_RX_buf[g_RX_buf_out] != kLF) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f20 f036 -004f22 082c SUBLW 0x2c -004f24 e023 BZ 0x4f6c -004f26 ecff CALL 0x6dfe,0x0 -004f28 f036 -004f2a 080d SUBLW 0xd -004f2c e01f BZ 0x4f6c -004f2e ecff CALL 0x6dfe,0x0 -004f30 f036 -004f32 080a SUBLW 0xa -004f34 e01b BZ 0x4f6c +004f22 ece6 CALL 0x6dcc,0x0 if (g_RX_buf[g_RX_buf_out] != (BYTE)',' && g_RX_buf[g_RX_buf_out] != kCR && g_RX_buf[g_RX_buf_out] != kLF) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f24 f036 +004f26 082c SUBLW 0x2c +004f28 e023 BZ 0x4f70 +004f2a ece6 CALL 0x6dcc,0x0 +004f2c f036 +004f2e 080d SUBLW 0xd +004f30 e01f BZ 0x4f70 +004f32 ece6 CALL 0x6dcc,0x0 +004f34 f036 +004f36 080a SUBLW 0xa +004f38 e01b BZ 0x4f70 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f36 ec14 CALL 0x7028,0x0 gCommand_Char2 = toupper(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f38 f038 -004f3a ecba CALL 0x6d74,0x0 -004f3c f036 -004f3e cff3 MOVFF 0xff3,0x4c8 -004f40 f4c8 -007028 51b8 MOVF 0xb8,0x0,0x1 -00702a efa0 GOTO 0x6b40 -00702c f035 -004f42 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f44 eccd CALL 0x6b9a,0x0 -004f46 f035 -004f48 e104 BNZ 0x4f52 -004f4a 0e01 MOVLW 0x1 -004f4c 184f XORWF 0x4f,0x0,0x0 -004f4e e101 BNZ 0x4f52 -004f50 6bb8 CLRF 0xb8,0x1 -004f52 c4c7 MOVFF 0x4c7,0x51 command = ((unsigned int)(gCommand_Char1) << 8) + gCommand_Char2; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f54 f051 -004f56 6a50 CLRF 0x50,0x0 -004f58 51c8 MOVF 0xc8,0x0,0x1 -004f5a 0100 MOVLB 0x0 -004f5c 2450 ADDWF 0x50,0x0,0x0 -004f5e 6e4e MOVWF 0x4e,0x0 -004f60 0e00 MOVLW 0x0 -004f62 2051 ADDWFC 0x51,0x0,0x0 -004f64 6e4f MOVWF 0x4f,0x0 -004f66 c04e MOVFF 0x4e,0xfde -004f68 ffde -004f6a 6edd MOVWF 0xdd,0x0 +004f3a ec00 CALL 0x7000,0x0 gCommand_Char2 = toupper(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f3c f038 +004f3e eca6 CALL 0x6d4c,0x0 +004f40 f036 +004f42 cff3 MOVFF 0xff3,0x4c8 +004f44 f4c8 +007000 51b8 MOVF 0xb8,0x0,0x1 +007002 ef91 GOTO 0x6b22 +007004 f035 +004f46 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f48 ecb4 CALL 0x6b68,0x0 +004f4a f035 +004f4c e104 BNZ 0x4f56 +004f4e 0e01 MOVLW 0x1 +004f50 184f XORWF 0x4f,0x0,0x0 +004f52 e101 BNZ 0x4f56 +004f54 6bb8 CLRF 0xb8,0x1 +004f56 c4c7 MOVFF 0x4c7,0x51 command = ((unsigned int)(gCommand_Char1) << 8) + gCommand_Char2; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f58 f051 +004f5a 6a50 CLRF 0x50,0x0 +004f5c 51c8 MOVF 0xc8,0x0,0x1 +004f5e 0100 MOVLB 0x0 +004f60 2450 ADDWF 0x50,0x0,0x0 +004f62 6e4e MOVWF 0x4e,0x0 +004f64 0e00 MOVLW 0x0 +004f66 2051 ADDWFC 0x51,0x0,0x0 +004f68 6e4f MOVWF 0x4f,0x0 +004f6a c04e MOVFF 0x4e,0xfde +004f6c ffde +004f6e 6edd MOVWF 0xdd,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now 'command' is equal to one or two bytes of our command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f6c 0e00 MOVLW 0x0 switch (command) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -004f6e cfdf MOVFF 0xfdf,0x42 -004f70 f042 -004f72 0e01 MOVLW 0x1 -004f74 cfdb MOVFF 0xfdb,0x43 -004f76 f043 -004f78 0e52 MOVLW 0x52 -004f7a 1842 XORWF 0x42,0x0,0x0 -004f7c e102 BNZ 0x4f82 -004f7e 0e54 MOVLW 0x54 -004f80 1843 XORWF 0x43,0x0,0x0 -004f82 e101 BNZ 0x4f86 -004f84 d1f1 BRA 0x5368 -004f86 0e55 MOVLW 0x55 -004f88 1842 XORWF 0x42,0x0,0x0 -004f8a e102 BNZ 0x4f90 -004f8c 0e51 MOVLW 0x51 -004f8e 1843 XORWF 0x43,0x0,0x0 -004f90 e101 BNZ 0x4f94 -004f92 d1e8 BRA 0x5364 -004f94 0e4d MOVLW 0x4d -004f96 1842 XORWF 0x42,0x0,0x0 -004f98 e102 BNZ 0x4f9e -004f9a 0e48 MOVLW 0x48 -004f9c 1843 XORWF 0x43,0x0,0x0 -004f9e e101 BNZ 0x4fa2 -004fa0 d1de BRA 0x535e -004fa2 0e52 MOVLW 0x52 -004fa4 1842 XORWF 0x42,0x0,0x0 -004fa6 e102 BNZ 0x4fac -004fa8 0e53 MOVLW 0x53 -004faa 1843 XORWF 0x43,0x0,0x0 -004fac e101 BNZ 0x4fb0 -004fae d1d4 BRA 0x5358 -004fb0 0e52 MOVLW 0x52 -004fb2 1842 XORWF 0x42,0x0,0x0 -004fb4 e102 BNZ 0x4fba -004fb6 0e51 MOVLW 0x51 -004fb8 1843 XORWF 0x43,0x0,0x0 -004fba e101 BNZ 0x4fbe -004fbc d1ca BRA 0x5352 -004fbe 0e42 MOVLW 0x42 -004fc0 1842 XORWF 0x42,0x0,0x0 -004fc2 e102 BNZ 0x4fc8 -004fc4 0e52 MOVLW 0x52 -004fc6 1843 XORWF 0x43,0x0,0x0 -004fc8 e101 BNZ 0x4fcc -004fca d1c0 BRA 0x534c -004fcc 0e54 MOVLW 0x54 -004fce 1842 XORWF 0x42,0x0,0x0 -004fd0 e102 BNZ 0x4fd6 -004fd2 0e51 MOVLW 0x51 -004fd4 1843 XORWF 0x43,0x0,0x0 -004fd6 e101 BNZ 0x4fda -004fd8 d1b6 BRA 0x5346 -004fda 0e54 MOVLW 0x54 -004fdc 1842 XORWF 0x42,0x0,0x0 -004fde e102 BNZ 0x4fe4 -004fe0 0e53 MOVLW 0x53 -004fe2 1843 XORWF 0x43,0x0,0x0 -004fe4 e101 BNZ 0x4fe8 -004fe6 d1ac BRA 0x5340 -004fe8 0e53 MOVLW 0x53 -004fea 1842 XORWF 0x42,0x0,0x0 -004fec e102 BNZ 0x4ff2 -004fee 0e43 MOVLW 0x43 -004ff0 1843 XORWF 0x43,0x0,0x0 -004ff2 e101 BNZ 0x4ff6 -004ff4 d1a2 BRA 0x533a -004ff6 0e53 MOVLW 0x53 -004ff8 1842 XORWF 0x42,0x0,0x0 -004ffa e102 BNZ 0x5000 -004ffc 0e51 MOVLW 0x51 -004ffe 1843 XORWF 0x43,0x0,0x0 -005000 e101 BNZ 0x5004 -005002 d198 BRA 0x5334 -005004 0e4d MOVLW 0x4d -005006 1842 XORWF 0x42,0x0,0x0 -005008 e102 BNZ 0x500e -00500a 0e58 MOVLW 0x58 -00500c 1843 XORWF 0x43,0x0,0x0 -00500e e101 BNZ 0x5012 -005010 d18e BRA 0x532e -005012 0e53 MOVLW 0x53 -005014 1842 XORWF 0x42,0x0,0x0 -005016 e102 BNZ 0x501c -005018 0e45 MOVLW 0x45 -00501a 1843 XORWF 0x43,0x0,0x0 -00501c e101 BNZ 0x5020 -00501e d184 BRA 0x5328 -005020 0e43 MOVLW 0x43 -005022 1842 XORWF 0x42,0x0,0x0 -005024 e102 BNZ 0x502a -005026 0e41 MOVLW 0x41 -005028 1843 XORWF 0x43,0x0,0x0 -00502a e101 BNZ 0x502e -00502c d17a BRA 0x5322 -00502e 0e4d MOVLW 0x4d -005030 1842 XORWF 0x42,0x0,0x0 -005032 e102 BNZ 0x5038 -005034 0e51 MOVLW 0x51 -005036 1843 XORWF 0x43,0x0,0x0 -005038 e101 BNZ 0x503c -00503a d170 BRA 0x531c -00503c 0e32 MOVLW 0x32 -00503e 1842 XORWF 0x42,0x0,0x0 -005040 e102 BNZ 0x5046 -005042 0e53 MOVLW 0x53 -005044 1843 XORWF 0x43,0x0,0x0 -005046 e101 BNZ 0x504a -005048 d166 BRA 0x5316 -00504a 0e45 MOVLW 0x45 -00504c 1842 XORWF 0x42,0x0,0x0 -00504e e102 BNZ 0x5054 -005050 0e53 MOVLW 0x53 -005052 1843 XORWF 0x43,0x0,0x0 -005054 e101 BNZ 0x5058 -005056 d15c BRA 0x5310 -005058 0e47 MOVLW 0x47 -00505a 1842 XORWF 0x42,0x0,0x0 -00505c e102 BNZ 0x5062 -00505e 0e51 MOVLW 0x51 -005060 1843 XORWF 0x43,0x0,0x0 -005062 e101 BNZ 0x5066 -005064 d152 BRA 0x530a -005066 0e43 MOVLW 0x43 -005068 1842 XORWF 0x42,0x0,0x0 -00506a e102 BNZ 0x5070 -00506c 0e51 MOVLW 0x51 -00506e 1843 XORWF 0x43,0x0,0x0 -005070 e101 BNZ 0x5074 -005072 d148 BRA 0x5304 -005074 0e4b MOVLW 0x4b -005076 1842 XORWF 0x42,0x0,0x0 -005078 e102 BNZ 0x507e -00507a 0e43 MOVLW 0x43 -00507c 1843 XORWF 0x43,0x0,0x0 -00507e e101 BNZ 0x5082 -005080 d13e BRA 0x52fe -005082 0e4c MOVLW 0x4c -005084 1842 XORWF 0x42,0x0,0x0 -005086 e102 BNZ 0x508c -005088 0e42 MOVLW 0x42 -00508a 1843 XORWF 0x43,0x0,0x0 -00508c e101 BNZ 0x5090 -00508e d134 BRA 0x52f8 -005090 0e44 MOVLW 0x44 -005092 1842 XORWF 0x42,0x0,0x0 -005094 e102 BNZ 0x509a -005096 0e4e MOVLW 0x4e -005098 1843 XORWF 0x43,0x0,0x0 -00509a e101 BNZ 0x509e -00509c d12a BRA 0x52f2 -00509e 0e49 MOVLW 0x49 -0050a0 1842 XORWF 0x42,0x0,0x0 -0050a2 e102 BNZ 0x50a8 -0050a4 0e4e MOVLW 0x4e -0050a6 1843 XORWF 0x43,0x0,0x0 -0050a8 e101 BNZ 0x50ac -0050aa d120 BRA 0x52ec -0050ac 0e42 MOVLW 0x42 -0050ae 1842 XORWF 0x42,0x0,0x0 -0050b0 e102 BNZ 0x50b6 -0050b2 0e51 MOVLW 0x51 -0050b4 1843 XORWF 0x43,0x0,0x0 -0050b6 e101 BNZ 0x50ba -0050b8 d116 BRA 0x52e6 -0050ba 0e4c MOVLW 0x4c -0050bc 1842 XORWF 0x42,0x0,0x0 -0050be e102 BNZ 0x50c4 -0050c0 0e51 MOVLW 0x51 -0050c2 1843 XORWF 0x43,0x0,0x0 -0050c4 e101 BNZ 0x50c8 -0050c6 d10c BRA 0x52e0 -0050c8 0e4c MOVLW 0x4c -0050ca 1842 XORWF 0x42,0x0,0x0 -0050cc e102 BNZ 0x50d2 -0050ce 0e53 MOVLW 0x53 -0050d0 1843 XORWF 0x43,0x0,0x0 -0050d2 e101 BNZ 0x50d6 -0050d4 d102 BRA 0x52da -0050d6 0e4e MOVLW 0x4e -0050d8 1842 XORWF 0x42,0x0,0x0 -0050da e102 BNZ 0x50e0 -0050dc 0e51 MOVLW 0x51 -0050de 1843 XORWF 0x43,0x0,0x0 -0050e0 e101 BNZ 0x50e4 -0050e2 d0f8 BRA 0x52d4 -0050e4 0e4e MOVLW 0x4e -0050e6 1842 XORWF 0x42,0x0,0x0 -0050e8 e102 BNZ 0x50ee -0050ea 0e53 MOVLW 0x53 -0050ec 1843 XORWF 0x43,0x0,0x0 -0050ee e101 BNZ 0x50f2 -0050f0 d0ee BRA 0x52ce -0050f2 0e43 MOVLW 0x43 -0050f4 1842 XORWF 0x42,0x0,0x0 -0050f6 e102 BNZ 0x50fc -0050f8 0e53 MOVLW 0x53 -0050fa 1843 XORWF 0x43,0x0,0x0 -0050fc e101 BNZ 0x5100 -0050fe d0e4 BRA 0x52c8 -005100 0e4d MOVLW 0x4d -005102 1842 XORWF 0x42,0x0,0x0 -005104 e102 BNZ 0x510a -005106 0e45 MOVLW 0x45 -005108 1843 XORWF 0x43,0x0,0x0 -00510a e101 BNZ 0x510e -00510c d0da BRA 0x52c2 -00510e 0e45 MOVLW 0x45 -005110 1842 XORWF 0x42,0x0,0x0 -005112 e102 BNZ 0x5118 -005114 0e51 MOVLW 0x51 -005116 1843 XORWF 0x43,0x0,0x0 -005118 e101 BNZ 0x511c -00511a d0d0 BRA 0x52bc -00511c 0e50 MOVLW 0x50 -00511e 1842 XORWF 0x42,0x0,0x0 -005120 e102 BNZ 0x5126 -005122 0e51 MOVLW 0x51 -005124 1843 XORWF 0x43,0x0,0x0 -005126 e101 BNZ 0x512a -005128 d0c6 BRA 0x52b6 -00512a 0e50 MOVLW 0x50 -00512c 1842 XORWF 0x42,0x0,0x0 -00512e e102 BNZ 0x5134 -005130 0e54 MOVLW 0x54 -005132 1843 XORWF 0x43,0x0,0x0 -005134 e101 BNZ 0x5138 -005136 d0bc BRA 0x52b0 -005138 0e50 MOVLW 0x50 -00513a 1842 XORWF 0x42,0x0,0x0 -00513c e102 BNZ 0x5142 -00513e 0e53 MOVLW 0x53 -005140 1843 XORWF 0x43,0x0,0x0 -005142 e101 BNZ 0x5146 -005144 d0b2 BRA 0x52aa -005146 0e4d MOVLW 0x4d -005148 1842 XORWF 0x42,0x0,0x0 -00514a e102 BNZ 0x5150 -00514c 0e53 MOVLW 0x53 -00514e 1843 XORWF 0x43,0x0,0x0 -005150 e101 BNZ 0x5154 -005152 d0a8 BRA 0x52a4 -005154 0e57 MOVLW 0x57 -005156 1842 XORWF 0x42,0x0,0x0 -005158 e102 BNZ 0x515e -00515a 0e4d MOVLW 0x4d -00515c 1843 XORWF 0x43,0x0,0x0 -00515e e101 BNZ 0x5162 -005160 d09e BRA 0x529e -005162 0e52 MOVLW 0x52 -005164 1842 XORWF 0x42,0x0,0x0 -005166 e102 BNZ 0x516c -005168 0e4d MOVLW 0x4d -00516a 1843 XORWF 0x43,0x0,0x0 -00516c e101 BNZ 0x5170 -00516e d094 BRA 0x5298 -005170 0e44 MOVLW 0x44 -005172 1842 XORWF 0x42,0x0,0x0 -005174 e102 BNZ 0x517a -005176 0e50 MOVLW 0x50 -005178 1843 XORWF 0x43,0x0,0x0 -00517a e101 BNZ 0x517e -00517c d08a BRA 0x5292 -00517e 0e4f MOVLW 0x4f -005180 1842 XORWF 0x42,0x0,0x0 -005182 e102 BNZ 0x5188 -005184 0e50 MOVLW 0x50 -005186 1843 XORWF 0x43,0x0,0x0 -005188 e101 BNZ 0x518c -00518a d080 BRA 0x528c -00518c 0e49 MOVLW 0x49 -00518e 1842 XORWF 0x42,0x0,0x0 -005190 e102 BNZ 0x5196 -005192 0e50 MOVLW 0x50 -005194 1843 XORWF 0x43,0x0,0x0 -005196 e101 BNZ 0x519a -005198 d076 BRA 0x5286 -00519a 0e41 MOVLW 0x41 -00519c 1842 XORWF 0x42,0x0,0x0 -00519e e101 BNZ 0x51a2 -0051a0 5043 MOVF 0x43,0x0,0x0 -0051a2 e06e BZ 0x5280 -0051a4 0e56 MOVLW 0x56 -0051a6 1842 XORWF 0x42,0x0,0x0 -0051a8 e101 BNZ 0x51ac -0051aa 5043 MOVF 0x43,0x0,0x0 -0051ac e066 BZ 0x527a -0051ae 0e49 MOVLW 0x49 -0051b0 1842 XORWF 0x42,0x0,0x0 -0051b2 e101 BNZ 0x51b6 -0051b4 5043 MOVF 0x43,0x0,0x0 -0051b6 e05e BZ 0x5274 -0051b8 0e4f MOVLW 0x4f -0051ba 1842 XORWF 0x42,0x0,0x0 -0051bc e101 BNZ 0x51c0 -0051be 5043 MOVF 0x43,0x0,0x0 -0051c0 e056 BZ 0x526e -0051c2 0e55 MOVLW 0x55 -0051c4 1842 XORWF 0x42,0x0,0x0 -0051c6 e102 BNZ 0x51cc -0051c8 0e43 MOVLW 0x43 -0051ca 1843 XORWF 0x43,0x0,0x0 -0051cc e04e BZ 0x526a -0051ce 0e43 MOVLW 0x43 -0051d0 1842 XORWF 0x42,0x0,0x0 -0051d2 e101 BNZ 0x51d6 -0051d4 5043 MOVF 0x43,0x0,0x0 -0051d6 e046 BZ 0x5264 -0051d8 0e52 MOVLW 0x52 -0051da 1842 XORWF 0x42,0x0,0x0 -0051dc e101 BNZ 0x51e0 -0051de 5043 MOVF 0x43,0x0,0x0 -0051e0 e03f BZ 0x5260 -0051e2 0e4d MOVLW 0x4d -0051e4 1842 XORWF 0x42,0x0,0x0 -0051e6 e102 BNZ 0x51ec -0051e8 0e4c MOVLW 0x4c -0051ea 1843 XORWF 0x43,0x0,0x0 -0051ec e036 BZ 0x525a -0051ee 0e33 MOVLW 0x33 -0051f0 1842 XORWF 0x42,0x0,0x0 -0051f2 e102 BNZ 0x51f8 -0051f4 0e54 MOVLW 0x54 -0051f6 1843 XORWF 0x43,0x0,0x0 -0051f8 e02d BZ 0x5254 -0051fa 0e44 MOVLW 0x44 -0051fc 1842 XORWF 0x42,0x0,0x0 -0051fe e102 BNZ 0x5204 -005200 0e54 MOVLW 0x54 -005202 1843 XORWF 0x43,0x0,0x0 -005204 e024 BZ 0x524e -005206 0e33 MOVLW 0x33 -005208 1842 XORWF 0x42,0x0,0x0 -00520a e102 BNZ 0x5210 -00520c 0e4c MOVLW 0x4c -00520e 1843 XORWF 0x43,0x0,0x0 -005210 e01b BZ 0x5248 -005212 0e54 MOVLW 0x54 -005214 1842 XORWF 0x42,0x0,0x0 -005216 e102 BNZ 0x521c -005218 0e4c MOVLW 0x4c -00521a 1843 XORWF 0x43,0x0,0x0 -00521c e012 BZ 0x5242 -00521e 0e4d MOVLW 0x4d -005220 1842 XORWF 0x42,0x0,0x0 -005222 e102 BNZ 0x5228 -005224 0e43 MOVLW 0x43 -005226 1843 XORWF 0x43,0x0,0x0 -005228 e009 BZ 0x523c +004f70 0e00 MOVLW 0x0 switch (command) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +004f72 cfdf MOVFF 0xfdf,0x42 +004f74 f042 +004f76 0e01 MOVLW 0x1 +004f78 cfdb MOVFF 0xfdb,0x43 +004f7a f043 +004f7c 0e52 MOVLW 0x52 +004f7e 1842 XORWF 0x42,0x0,0x0 +004f80 e102 BNZ 0x4f86 +004f82 0e54 MOVLW 0x54 +004f84 1843 XORWF 0x43,0x0,0x0 +004f86 e101 BNZ 0x4f8a +004f88 d1f1 BRA 0x536c +004f8a 0e55 MOVLW 0x55 +004f8c 1842 XORWF 0x42,0x0,0x0 +004f8e e102 BNZ 0x4f94 +004f90 0e51 MOVLW 0x51 +004f92 1843 XORWF 0x43,0x0,0x0 +004f94 e101 BNZ 0x4f98 +004f96 d1e8 BRA 0x5368 +004f98 0e4d MOVLW 0x4d +004f9a 1842 XORWF 0x42,0x0,0x0 +004f9c e102 BNZ 0x4fa2 +004f9e 0e48 MOVLW 0x48 +004fa0 1843 XORWF 0x43,0x0,0x0 +004fa2 e101 BNZ 0x4fa6 +004fa4 d1de BRA 0x5362 +004fa6 0e52 MOVLW 0x52 +004fa8 1842 XORWF 0x42,0x0,0x0 +004faa e102 BNZ 0x4fb0 +004fac 0e53 MOVLW 0x53 +004fae 1843 XORWF 0x43,0x0,0x0 +004fb0 e101 BNZ 0x4fb4 +004fb2 d1d4 BRA 0x535c +004fb4 0e52 MOVLW 0x52 +004fb6 1842 XORWF 0x42,0x0,0x0 +004fb8 e102 BNZ 0x4fbe +004fba 0e51 MOVLW 0x51 +004fbc 1843 XORWF 0x43,0x0,0x0 +004fbe e101 BNZ 0x4fc2 +004fc0 d1ca BRA 0x5356 +004fc2 0e42 MOVLW 0x42 +004fc4 1842 XORWF 0x42,0x0,0x0 +004fc6 e102 BNZ 0x4fcc +004fc8 0e52 MOVLW 0x52 +004fca 1843 XORWF 0x43,0x0,0x0 +004fcc e101 BNZ 0x4fd0 +004fce d1c0 BRA 0x5350 +004fd0 0e54 MOVLW 0x54 +004fd2 1842 XORWF 0x42,0x0,0x0 +004fd4 e102 BNZ 0x4fda +004fd6 0e51 MOVLW 0x51 +004fd8 1843 XORWF 0x43,0x0,0x0 +004fda e101 BNZ 0x4fde +004fdc d1b6 BRA 0x534a +004fde 0e54 MOVLW 0x54 +004fe0 1842 XORWF 0x42,0x0,0x0 +004fe2 e102 BNZ 0x4fe8 +004fe4 0e53 MOVLW 0x53 +004fe6 1843 XORWF 0x43,0x0,0x0 +004fe8 e101 BNZ 0x4fec +004fea d1ac BRA 0x5344 +004fec 0e53 MOVLW 0x53 +004fee 1842 XORWF 0x42,0x0,0x0 +004ff0 e102 BNZ 0x4ff6 +004ff2 0e43 MOVLW 0x43 +004ff4 1843 XORWF 0x43,0x0,0x0 +004ff6 e101 BNZ 0x4ffa +004ff8 d1a2 BRA 0x533e +004ffa 0e53 MOVLW 0x53 +004ffc 1842 XORWF 0x42,0x0,0x0 +004ffe e102 BNZ 0x5004 +005000 0e51 MOVLW 0x51 +005002 1843 XORWF 0x43,0x0,0x0 +005004 e101 BNZ 0x5008 +005006 d198 BRA 0x5338 +005008 0e4d MOVLW 0x4d +00500a 1842 XORWF 0x42,0x0,0x0 +00500c e102 BNZ 0x5012 +00500e 0e58 MOVLW 0x58 +005010 1843 XORWF 0x43,0x0,0x0 +005012 e101 BNZ 0x5016 +005014 d18e BRA 0x5332 +005016 0e53 MOVLW 0x53 +005018 1842 XORWF 0x42,0x0,0x0 +00501a e102 BNZ 0x5020 +00501c 0e45 MOVLW 0x45 +00501e 1843 XORWF 0x43,0x0,0x0 +005020 e101 BNZ 0x5024 +005022 d184 BRA 0x532c +005024 0e43 MOVLW 0x43 +005026 1842 XORWF 0x42,0x0,0x0 +005028 e102 BNZ 0x502e +00502a 0e41 MOVLW 0x41 +00502c 1843 XORWF 0x43,0x0,0x0 +00502e e101 BNZ 0x5032 +005030 d17a BRA 0x5326 +005032 0e4d MOVLW 0x4d +005034 1842 XORWF 0x42,0x0,0x0 +005036 e102 BNZ 0x503c +005038 0e51 MOVLW 0x51 +00503a 1843 XORWF 0x43,0x0,0x0 +00503c e101 BNZ 0x5040 +00503e d170 BRA 0x5320 +005040 0e32 MOVLW 0x32 +005042 1842 XORWF 0x42,0x0,0x0 +005044 e102 BNZ 0x504a +005046 0e53 MOVLW 0x53 +005048 1843 XORWF 0x43,0x0,0x0 +00504a e101 BNZ 0x504e +00504c d166 BRA 0x531a +00504e 0e45 MOVLW 0x45 +005050 1842 XORWF 0x42,0x0,0x0 +005052 e102 BNZ 0x5058 +005054 0e53 MOVLW 0x53 +005056 1843 XORWF 0x43,0x0,0x0 +005058 e101 BNZ 0x505c +00505a d15c BRA 0x5314 +00505c 0e47 MOVLW 0x47 +00505e 1842 XORWF 0x42,0x0,0x0 +005060 e102 BNZ 0x5066 +005062 0e51 MOVLW 0x51 +005064 1843 XORWF 0x43,0x0,0x0 +005066 e101 BNZ 0x506a +005068 d152 BRA 0x530e +00506a 0e43 MOVLW 0x43 +00506c 1842 XORWF 0x42,0x0,0x0 +00506e e102 BNZ 0x5074 +005070 0e51 MOVLW 0x51 +005072 1843 XORWF 0x43,0x0,0x0 +005074 e101 BNZ 0x5078 +005076 d148 BRA 0x5308 +005078 0e4b MOVLW 0x4b +00507a 1842 XORWF 0x42,0x0,0x0 +00507c e102 BNZ 0x5082 +00507e 0e43 MOVLW 0x43 +005080 1843 XORWF 0x43,0x0,0x0 +005082 e101 BNZ 0x5086 +005084 d13e BRA 0x5302 +005086 0e4c MOVLW 0x4c +005088 1842 XORWF 0x42,0x0,0x0 +00508a e102 BNZ 0x5090 +00508c 0e42 MOVLW 0x42 +00508e 1843 XORWF 0x43,0x0,0x0 +005090 e101 BNZ 0x5094 +005092 d134 BRA 0x52fc +005094 0e44 MOVLW 0x44 +005096 1842 XORWF 0x42,0x0,0x0 +005098 e102 BNZ 0x509e +00509a 0e4e MOVLW 0x4e +00509c 1843 XORWF 0x43,0x0,0x0 +00509e e101 BNZ 0x50a2 +0050a0 d12a BRA 0x52f6 +0050a2 0e49 MOVLW 0x49 +0050a4 1842 XORWF 0x42,0x0,0x0 +0050a6 e102 BNZ 0x50ac +0050a8 0e4e MOVLW 0x4e +0050aa 1843 XORWF 0x43,0x0,0x0 +0050ac e101 BNZ 0x50b0 +0050ae d120 BRA 0x52f0 +0050b0 0e42 MOVLW 0x42 +0050b2 1842 XORWF 0x42,0x0,0x0 +0050b4 e102 BNZ 0x50ba +0050b6 0e51 MOVLW 0x51 +0050b8 1843 XORWF 0x43,0x0,0x0 +0050ba e101 BNZ 0x50be +0050bc d116 BRA 0x52ea +0050be 0e4c MOVLW 0x4c +0050c0 1842 XORWF 0x42,0x0,0x0 +0050c2 e102 BNZ 0x50c8 +0050c4 0e51 MOVLW 0x51 +0050c6 1843 XORWF 0x43,0x0,0x0 +0050c8 e101 BNZ 0x50cc +0050ca d10c BRA 0x52e4 +0050cc 0e4c MOVLW 0x4c +0050ce 1842 XORWF 0x42,0x0,0x0 +0050d0 e102 BNZ 0x50d6 +0050d2 0e53 MOVLW 0x53 +0050d4 1843 XORWF 0x43,0x0,0x0 +0050d6 e101 BNZ 0x50da +0050d8 d102 BRA 0x52de +0050da 0e4e MOVLW 0x4e +0050dc 1842 XORWF 0x42,0x0,0x0 +0050de e102 BNZ 0x50e4 +0050e0 0e51 MOVLW 0x51 +0050e2 1843 XORWF 0x43,0x0,0x0 +0050e4 e101 BNZ 0x50e8 +0050e6 d0f8 BRA 0x52d8 +0050e8 0e4e MOVLW 0x4e +0050ea 1842 XORWF 0x42,0x0,0x0 +0050ec e102 BNZ 0x50f2 +0050ee 0e53 MOVLW 0x53 +0050f0 1843 XORWF 0x43,0x0,0x0 +0050f2 e101 BNZ 0x50f6 +0050f4 d0ee BRA 0x52d2 +0050f6 0e43 MOVLW 0x43 +0050f8 1842 XORWF 0x42,0x0,0x0 +0050fa e102 BNZ 0x5100 +0050fc 0e53 MOVLW 0x53 +0050fe 1843 XORWF 0x43,0x0,0x0 +005100 e101 BNZ 0x5104 +005102 d0e4 BRA 0x52cc +005104 0e4d MOVLW 0x4d +005106 1842 XORWF 0x42,0x0,0x0 +005108 e102 BNZ 0x510e +00510a 0e45 MOVLW 0x45 +00510c 1843 XORWF 0x43,0x0,0x0 +00510e e101 BNZ 0x5112 +005110 d0da BRA 0x52c6 +005112 0e45 MOVLW 0x45 +005114 1842 XORWF 0x42,0x0,0x0 +005116 e102 BNZ 0x511c +005118 0e51 MOVLW 0x51 +00511a 1843 XORWF 0x43,0x0,0x0 +00511c e101 BNZ 0x5120 +00511e d0d0 BRA 0x52c0 +005120 0e50 MOVLW 0x50 +005122 1842 XORWF 0x42,0x0,0x0 +005124 e102 BNZ 0x512a +005126 0e51 MOVLW 0x51 +005128 1843 XORWF 0x43,0x0,0x0 +00512a e101 BNZ 0x512e +00512c d0c6 BRA 0x52ba +00512e 0e50 MOVLW 0x50 +005130 1842 XORWF 0x42,0x0,0x0 +005132 e102 BNZ 0x5138 +005134 0e54 MOVLW 0x54 +005136 1843 XORWF 0x43,0x0,0x0 +005138 e101 BNZ 0x513c +00513a d0bc BRA 0x52b4 +00513c 0e50 MOVLW 0x50 +00513e 1842 XORWF 0x42,0x0,0x0 +005140 e102 BNZ 0x5146 +005142 0e53 MOVLW 0x53 +005144 1843 XORWF 0x43,0x0,0x0 +005146 e101 BNZ 0x514a +005148 d0b2 BRA 0x52ae +00514a 0e4d MOVLW 0x4d +00514c 1842 XORWF 0x42,0x0,0x0 +00514e e102 BNZ 0x5154 +005150 0e53 MOVLW 0x53 +005152 1843 XORWF 0x43,0x0,0x0 +005154 e101 BNZ 0x5158 +005156 d0a8 BRA 0x52a8 +005158 0e57 MOVLW 0x57 +00515a 1842 XORWF 0x42,0x0,0x0 +00515c e102 BNZ 0x5162 +00515e 0e4d MOVLW 0x4d +005160 1843 XORWF 0x43,0x0,0x0 +005162 e101 BNZ 0x5166 +005164 d09e BRA 0x52a2 +005166 0e52 MOVLW 0x52 +005168 1842 XORWF 0x42,0x0,0x0 +00516a e102 BNZ 0x5170 +00516c 0e4d MOVLW 0x4d +00516e 1843 XORWF 0x43,0x0,0x0 +005170 e101 BNZ 0x5174 +005172 d094 BRA 0x529c +005174 0e44 MOVLW 0x44 +005176 1842 XORWF 0x42,0x0,0x0 +005178 e102 BNZ 0x517e +00517a 0e50 MOVLW 0x50 +00517c 1843 XORWF 0x43,0x0,0x0 +00517e e101 BNZ 0x5182 +005180 d08a BRA 0x5296 +005182 0e4f MOVLW 0x4f +005184 1842 XORWF 0x42,0x0,0x0 +005186 e102 BNZ 0x518c +005188 0e50 MOVLW 0x50 +00518a 1843 XORWF 0x43,0x0,0x0 +00518c e101 BNZ 0x5190 +00518e d080 BRA 0x5290 +005190 0e49 MOVLW 0x49 +005192 1842 XORWF 0x42,0x0,0x0 +005194 e102 BNZ 0x519a +005196 0e50 MOVLW 0x50 +005198 1843 XORWF 0x43,0x0,0x0 +00519a e101 BNZ 0x519e +00519c d076 BRA 0x528a +00519e 0e41 MOVLW 0x41 +0051a0 1842 XORWF 0x42,0x0,0x0 +0051a2 e101 BNZ 0x51a6 +0051a4 5043 MOVF 0x43,0x0,0x0 +0051a6 e06e BZ 0x5284 +0051a8 0e56 MOVLW 0x56 +0051aa 1842 XORWF 0x42,0x0,0x0 +0051ac e101 BNZ 0x51b0 +0051ae 5043 MOVF 0x43,0x0,0x0 +0051b0 e066 BZ 0x527e +0051b2 0e49 MOVLW 0x49 +0051b4 1842 XORWF 0x42,0x0,0x0 +0051b6 e101 BNZ 0x51ba +0051b8 5043 MOVF 0x43,0x0,0x0 +0051ba e05e BZ 0x5278 +0051bc 0e4f MOVLW 0x4f +0051be 1842 XORWF 0x42,0x0,0x0 +0051c0 e101 BNZ 0x51c4 +0051c2 5043 MOVF 0x43,0x0,0x0 +0051c4 e056 BZ 0x5272 +0051c6 0e55 MOVLW 0x55 +0051c8 1842 XORWF 0x42,0x0,0x0 +0051ca e102 BNZ 0x51d0 +0051cc 0e43 MOVLW 0x43 +0051ce 1843 XORWF 0x43,0x0,0x0 +0051d0 e04e BZ 0x526e +0051d2 0e43 MOVLW 0x43 +0051d4 1842 XORWF 0x42,0x0,0x0 +0051d6 e101 BNZ 0x51da +0051d8 5043 MOVF 0x43,0x0,0x0 +0051da e046 BZ 0x5268 +0051dc 0e52 MOVLW 0x52 +0051de 1842 XORWF 0x42,0x0,0x0 +0051e0 e101 BNZ 0x51e4 +0051e2 5043 MOVF 0x43,0x0,0x0 +0051e4 e03f BZ 0x5264 +0051e6 0e4d MOVLW 0x4d +0051e8 1842 XORWF 0x42,0x0,0x0 +0051ea e102 BNZ 0x51f0 +0051ec 0e4c MOVLW 0x4c +0051ee 1843 XORWF 0x43,0x0,0x0 +0051f0 e036 BZ 0x525e +0051f2 0e33 MOVLW 0x33 +0051f4 1842 XORWF 0x42,0x0,0x0 +0051f6 e102 BNZ 0x51fc +0051f8 0e54 MOVLW 0x54 +0051fa 1843 XORWF 0x43,0x0,0x0 +0051fc e02d BZ 0x5258 +0051fe 0e44 MOVLW 0x44 +005200 1842 XORWF 0x42,0x0,0x0 +005202 e102 BNZ 0x5208 +005204 0e54 MOVLW 0x54 +005206 1843 XORWF 0x43,0x0,0x0 +005208 e024 BZ 0x5252 +00520a 0e33 MOVLW 0x33 +00520c 1842 XORWF 0x42,0x0,0x0 +00520e e102 BNZ 0x5214 +005210 0e4c MOVLW 0x4c +005212 1843 XORWF 0x43,0x0,0x0 +005214 e01b BZ 0x524c +005216 0e54 MOVLW 0x54 +005218 1842 XORWF 0x42,0x0,0x0 +00521a e102 BNZ 0x5220 +00521c 0e4c MOVLW 0x4c +00521e 1843 XORWF 0x43,0x0,0x0 +005220 e012 BZ 0x5246 +005222 0e4d MOVLW 0x4d +005224 1842 XORWF 0x42,0x0,0x0 +005226 e102 BNZ 0x522c +005228 0e43 MOVLW 0x43 +00522a 1843 XORWF 0x43,0x0,0x0 +00522c e009 BZ 0x5240 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('C' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CM for circle move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00523c ecb8 CALL 0x2370,0x0 parse_CM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00523e f011 -005240 d0b2 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005240 ecb8 CALL 0x2370,0x0 parse_CM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005242 f011 +005244 d0b2 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('L' * 256) + 'T': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Low Level Timed Move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005242 ec4f CALL 0x1e9e,0x0 parse_LT_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005244 f00f -005246 d0af BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005246 ec4f CALL 0x1e9e,0x0 parse_LT_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005248 f00f +00524a d0af BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('L' * 256) + '3': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Low Level 3rd derivative (jerk) move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005248 ec82 CALL 0x1d04,0x0 parse_L3_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00524a f00e -00524c d0ac BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00524c ec82 CALL 0x1d04,0x0 parse_L3_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00524e f00e +005250 d0ac BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('T' * 256) + 'D': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Low Level 3rd derivative (jerk) move for S-Curves D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00524e ecbe CALL 0x1d7c,0x0 parse_TD_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005250 f00e -005252 d0a9 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005252 ecbe CALL 0x1d7c,0x0 parse_TD_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005254 f00e +005256 d0a9 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('T' * 256) + '3': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Timed 3rd derivative (jerk) move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005254 ec39 CALL 0x1e72,0x0 parse_T3_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005256 f00f -005258 d0a6 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005258 ec39 CALL 0x1e72,0x0 parse_T3_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00525a f00f +00525c d0a6 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('L' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Low Level Move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00525a ec49 CALL 0x1c92,0x0 parse_LM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00525c f00e -00525e d0a3 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00525e ec49 CALL 0x1c92,0x0 parse_LM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005260 f00e +005262 d0a3 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'R': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Reset command (resets everything to power-on state) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005260 d8ff RCALL 0x5460 parse_R_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005262 d0a1 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005264 d8ff RCALL 0x5464 parse_R_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005266 d0a1 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'C': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Configure command (configure ports for Input or Output) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005264 ecf9 CALL 0x5bf2,0x0 parse_C_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005266 f02d -005268 d09e BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005268 ece6 CALL 0x5bcc,0x0 parse_C_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00526a f02d +00526c d09e BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('C' * 256) + 'U': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // For configuring UBW D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00526a d901 RCALL 0x546e parse_CU_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00526c d09c BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00526e d901 RCALL 0x5472 parse_CU_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005270 d09c BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'O': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Output command (tell the ports to output something) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00526e eca9 CALL 0x5d52,0x0 parse_O_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005270 f02e -005272 d099 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005272 ec96 CALL 0x5d2c,0x0 parse_O_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005274 f02e +005276 d099 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'I': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Input command (return the current status of the ports) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005274 ecdf CALL 0x5dbe,0x0 parse_I_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005276 f02e -005278 d096 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005278 eccc CALL 0x5d98,0x0 parse_I_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00527a f02e +00527c d096 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'V': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Version command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00527a ecf5 CALL 0x5dea,0x0 parse_V_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00527c f02e -00527e d093 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00527e ece2 CALL 0x5dc4,0x0 parse_V_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005280 f02e +005282 d093 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'A': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Analog command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005280 ecfc CALL 0x5df8,0x0 parse_A_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005282 f02e -005284 d090 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005284 ece9 CALL 0x5dd2,0x0 parse_A_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005286 f02e +005288 d090 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #if PC_PG_T_COMMANDS_ENABLED D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case 'T': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -20767,37 +20769,37 @@ Address Value Disassembly Source case ('P' * 256) + 'I': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PI for reading a single pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005286 ec34 CALL 0x6068,0x0 parse_PI_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005288 f030 -00528a d08d BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00528a ec25 CALL 0x604a,0x0 parse_PI_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00528c f030 +00528e d08d BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('P' * 256) + 'O': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PO for setting a single pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00528c eca9 CALL 0x6152,0x0 parse_PO_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00528e f030 -005290 d08a BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005290 ec9a CALL 0x6134,0x0 parse_PO_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005292 f030 +005294 d08a BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('P' * 256) + 'D': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PD for setting a pin's direction D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005292 ec98 CALL 0x5f30,0x0 parse_PD_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005294 f02f -005296 d087 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005296 ec89 CALL 0x5f12,0x0 parse_PD_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005298 f02f +00529a d087 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('M' * 256) + 'R': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // MR for Memory Read D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005298 ec79 CALL 0x5ef2,0x0 parse_MR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00529a f02f -00529c d084 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00529c ec6a CALL 0x5ed4,0x0 parse_MR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00529e f02f +0052a0 d084 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('M' * 256) + 'W': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // MW for Memory Write D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00529e ec5e CALL 0x5ebc,0x0 parse_MW_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052a0 f02f -0052a2 d081 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052a2 ec4f CALL 0x5e9e,0x0 parse_MW_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052a4 f02f +0052a6 d081 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #if PC_PG_T_COMMANDS_ENABLED D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('P' * 256) + 'C': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -20816,308 +20818,313 @@ Address Value Disassembly Source case ('S' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SM for stepper motor D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052a4 eca4 CALL 0x2348,0x0 parse_SM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052a6 f011 -0052a8 d07e BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052a8 eca4 CALL 0x2348,0x0 parse_SM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052aa f011 +0052ac d07e BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'P': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SP for set pen D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052aa ec42 CALL 0x2c84,0x0 parse_SP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052ac f016 -0052ae d07b BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052ae ec42 CALL 0x2c84,0x0 parse_SP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052b0 f016 +0052b2 d07b BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('T' * 256) + 'P': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // TP for toggle pen D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052b0 ec1c CALL 0x2c38,0x0 parse_TP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052b2 f016 -0052b4 d078 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052b4 ec1c CALL 0x2c38,0x0 parse_TP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052b6 f016 +0052b8 d078 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'P': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QP for query pen D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052b6 ec9c CALL 0x2b38,0x0 parse_QP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052b8 f015 -0052ba d075 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052ba ec9c CALL 0x2b38,0x0 parse_QP_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052bc f015 +0052be d075 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'E': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QE for Query motor Enable and resolution D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052bc ecb4 CALL 0x2b68,0x0 parse_QE_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052be f015 -0052c0 d072 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052c0 ecb4 CALL 0x2b68,0x0 parse_QE_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052c2 f015 +0052c4 d072 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('E' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // EM for enable motors D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052c2 ecf9 CALL 0x2df2,0x0 parse_EM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052c4 f016 -0052c6 d06f BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052c6 ecf9 CALL 0x2df2,0x0 parse_EM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052c8 f016 +0052ca d06f BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'C': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SC for stepper mode configure D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052c8 ec88 CALL 0x1b10,0x0 parse_SC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052ca f00d -0052cc d06c BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052cc ec88 CALL 0x1b10,0x0 parse_SC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052ce f00d +0052d0 d06c BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'N': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SN for Clear Node count D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052ce ec59 CALL 0x2eb2,0x0 parse_SN_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052d0 f017 -0052d2 d069 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052d2 ec59 CALL 0x2eb2,0x0 parse_SN_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052d4 f017 +0052d6 d069 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'N': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QN for Query Node count D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052d4 ec7a CALL 0x2ef4,0x0 parse_QN_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052d6 f017 -0052d8 d066 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052d8 ec7a CALL 0x2ef4,0x0 parse_QN_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052da f017 +0052dc d066 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'L': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SL for Set Layer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052da ec8c CALL 0x2f18,0x0 parse_SL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052dc f017 -0052de d063 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052de ec8c CALL 0x2f18,0x0 parse_SL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052e0 f017 +0052e2 d063 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'L': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QL for Query Layer count D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052e0 ecac CALL 0x2f58,0x0 parse_QL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052e2 f017 -0052e4 d060 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052e4 ecac CALL 0x2f58,0x0 parse_QL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052e6 f017 +0052e8 d060 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'B': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QL for Query Button (program) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052e6 ecd3 CALL 0x2fa6,0x0 parse_QB_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052e8 f017 -0052ea d05d BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052ea ecd3 CALL 0x2fa6,0x0 parse_QB_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052ec f017 +0052ee d05d BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('N' * 256) + 'I': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // NI for Node count Increment D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052ec ec37 CALL 0x2e6e,0x0 parse_NI_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052ee f017 -0052f0 d05a BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052f0 ec37 CALL 0x2e6e,0x0 parse_NI_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052f2 f017 +0052f4 d05a BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('N' * 256) + 'D': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // ND Node count Decrement D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052f2 ec4a CALL 0x2e94,0x0 parse_ND_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052f4 f017 -0052f6 d057 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052f6 ec4a CALL 0x2e94,0x0 parse_ND_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052f8 f017 +0052fa d057 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('B' * 256) + 'L': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // BL for Boot Load D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052f8 ec5d CALL 0x62ba,0x0 parse_BL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052fa f031 -0052fc d054 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052fc ec4e CALL 0x629c,0x0 parse_BL_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0052fe f031 +005300 d054 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('C' * 256) + 'K': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CL for Check D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0052fe ecaf CALL 0x635e,0x0 parse_CK_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005300 f031 -005302 d051 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005302 eca0 CALL 0x6340,0x0 parse_CK_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005304 f031 +005306 d051 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'C': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QC for Query Current D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005304 ece7 CALL 0x2fce,0x0 parse_QC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005306 f017 -005308 d04e BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005308 ece7 CALL 0x2fce,0x0 parse_QC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00530a f017 +00530c d04e BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'G': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QG for Query General D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00530a ec00 CALL 0x3000,0x0 parse_QG_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00530c f018 -00530e d04b BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00530e ec00 CALL 0x3000,0x0 parse_QG_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005310 f018 +005312 d04b BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'E': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SE for Set Engraver D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005310 ec33 CALL 0x3066,0x0 parse_SE_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005312 f018 -005314 d048 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005314 ec33 CALL 0x3066,0x0 parse_SE_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005316 f018 +005318 d048 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + '2': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // S2 for RC Servo method 2 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005316 ec44 CALL 0x7e88,0x0 RCServo2_S2_command(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005318 f03f -00531a d045 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00531a ec2c CALL 0x7e58,0x0 RCServo2_S2_command(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00531c f03f +00531e d045 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QM for Query Motor D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00531c ec2b CALL 0x3256,0x0 parse_QM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00531e f019 -005320 d042 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005320 ec2b CALL 0x3256,0x0 parse_QM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005322 f019 +005324 d042 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('A' * 256) + 'C': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // AC for Analog Configure D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005322 ec8f CALL 0x5d1e,0x0 parse_AC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005324 f02e -005326 d03f BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005326 ec7c CALL 0x5cf8,0x0 parse_AC_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005328 f02e +00532a d03f BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('E' * 256) + 'S': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // ES for E-Stop D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005328 ec4d CALL 0x2a9a,0x0 parse_ES_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00532a f015 -00532c d03c BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00532c ec4d CALL 0x2a9a,0x0 parse_ES_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00532e f015 +005330 d03c BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('X' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // XM for X motor move D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00532e ec1b CALL 0x2836,0x0 parse_XM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005330 f014 -005332 d039 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005332 ec1b CALL 0x2836,0x0 parse_XM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005334 f014 +005336 d039 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'S': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QP for Query Step position D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005334 ec6c CALL 0x32d8,0x0 parse_QS_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005336 f019 -005338 d036 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005338 ec6c CALL 0x32d8,0x0 parse_QS_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00533a f019 +00533c d036 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('C' * 256) + 'S': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CS for Clear Step position D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00533a eca8 CALL 0x3350,0x0 parse_CS_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00533c f019 -00533e d033 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00533e eca8 CALL 0x3350,0x0 parse_CS_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005340 f019 +005342 d033 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'T': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // ST for Set Tag D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005340 ec8e CALL 0x651c,0x0 parse_ST_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005342 f032 -005344 d030 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005344 ec81 CALL 0x6502,0x0 parse_ST_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005346 f032 +005348 d030 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'T': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QT for Query Tag D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005346 ecc3 CALL 0x6586,0x0 parse_QT_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005348 f032 -00534a d02d BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00534a ecb5 CALL 0x656a,0x0 parse_QT_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00534c f032 +00534e d02d BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('R' * 256) + 'B': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // RB for ReBoot D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00534c ec65 CALL 0x62ca,0x0 parse_RB_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00534e f031 -005350 d02a BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005350 ec56 CALL 0x62ac,0x0 parse_RB_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005352 f031 +005354 d02a BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'R': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QR is for Query RC Servo power state D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005352 ec6c CALL 0x62d8,0x0 parse_QR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005354 f031 -005356 d027 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005356 ec5d CALL 0x62ba,0x0 parse_QR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005358 f031 +00535a d027 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('S' * 256) + 'R': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SR is for Set RC Servo power timeout D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005358 ec7c CALL 0x62f8,0x0 parse_SR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00535a f031 -00535c d024 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00535c ec6d CALL 0x62da,0x0 parse_SR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00535e f031 +005360 d024 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('H' * 256) + 'M': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // HM is for Home Motor D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00535e ecd3 CALL 0x25a6,0x0 parse_HM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005360 f012 -005362 d021 BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005362 ecd3 CALL 0x25a6,0x0 parse_HM_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005364 f012 +005366 d021 BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('Q' * 256) + 'U': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU is for General Query D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005364 dbae RCALL 0x5ac2 parse_QU_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005366 d01f BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005368 dbae RCALL 0x5ac6 parse_QU_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00536a d01f BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case ('T' * 256) + 'R': D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005368 ec40 CALL 0x2680,0x0 parse_TR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00536a f013 -00536c d01c BRA 0x53a6 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00536c ec40 CALL 0x2680,0x0 parse_TR_packet(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00536e f013 +005370 d01c BRA 0x53aa break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c default: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00522a 0104 MOVLB 0x4 if (0u == gCommand_Char2) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00522c 51c8 MOVF 0xc8,0x0,0x1 -00522e e001 BZ 0x5232 -005230 d09e BRA 0x536e +00522e 0104 MOVLB 0x4 if (0u == gCommand_Char2) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005230 51c8 MOVF 0xc8,0x0,0x1 +005232 e001 BZ 0x5236 +005234 d09e BRA 0x5372 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Send back 'unknown command' error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005232 ec78 CALL 0x6ef0,0x0 ebb_print((far rom char *)"!8 Err: Unknown command '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005234 f037 -006ef0 0eff MOVLW 0xff -006ef2 6e4e MOVWF 0x4e,0x0 -006ef4 0e8b MOVLW 0x8b -006ef6 de17 RCALL 0x6b26 -006ef8 efa1 GOTO 0x6d42 ebb_print_char(gCommand_Char1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006efa f036 -005236 ec7e CALL 0x6efc,0x0 ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005236 ec61 CALL 0x6ec2,0x0 ebb_print((far rom char *)"!8 Err: Unknown command '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 005238 f037 -006efc 0e3a MOVLW 0x3a -006efe de3a RCALL 0x6b74 -006f00 0e02 MOVLW 0x2 ebb_print_hex(gCommand_Char1, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006f02 6ee6 MOVWF 0xe6,0x0 -006f04 c4c7 MOVFF 0x4c7,0x4e -006f06 f04e -006f08 0012 RETURN 0x0 +006ec2 0ecf MOVLW 0xcf +006ec4 6e4e MOVWF 0x4e,0x0 +006ec6 0e8b MOVLW 0x8b +006ec8 de1f RCALL 0x6b08 +006eca ef8d GOTO 0x6d1a ebb_print_char(gCommand_Char1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ecc f036 +00523a ec67 CALL 0x6ece,0x0 ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00523c f037 +006ece 0e3a MOVLW 0x3a +006ed0 de5e RCALL 0x6b8e +006ed2 0e02 MOVLW 0x2 ebb_print_hex(gCommand_Char1, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ed4 6ee6 MOVWF 0xe6,0x0 +006ed6 c4c7 MOVFF 0x4c7,0x4e +006ed8 f04e +006eda 0012 RETURN 0x0 ebb_print_char(0x27); // the ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00523a d0ad BRA 0x5396 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00523e d0ad BRA 0x539a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Send back 'unknown command' error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00536e ec78 CALL 0x6ef0,0x0 ebb_print((far rom char *)"!8 Err: Unknown command '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005370 f037 +005372 ec61 CALL 0x6ec2,0x0 ebb_print((far rom char *)"!8 Err: Unknown command '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005374 f037 ebb_print_char(gCommand_Char1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005372 c4c8 MOVFF 0x4c8,0xfe6 ebb_print_char(gCommand_Char2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005374 ffe6 -005376 dcc7 RCALL 0x4d06 -005378 52e5 MOVF 0xe5,0x1,0x0 -00537a ec7e CALL 0x6efc,0x0 ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00537c f037 -00537e ecc6 CALL 0x6f8c,0x0 ebb_print_hex(gCommand_Char1, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005376 c4c8 MOVFF 0x4c8,0xfe6 ebb_print_char(gCommand_Char2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005378 ffe6 +00537a dcc5 RCALL 0x4d06 +00537c 52e5 MOVF 0xe5,0x1,0x0 +00537e ec67 CALL 0x6ece,0x0 ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 005380 f037 -005382 c4c7 MOVFF 0x4c7,0xfe6 -005384 ffe6 -005386 ec06 CALL 0x6e0c,0x0 -005388 f037 -00538a ec98 CALL 0x6f30,0x0 -00538c f037 -006f30 ecb7 CALL 0x8d6e,0x0 -006f32 f046 -006f34 6e52 MOVWF 0x52,0x0 -006f36 0e05 MOVLW 0x5 -006f38 5ee1 SUBWF 0xe1,0x1,0x0 -006f3a 5052 MOVF 0x52,0x0,0x0 -006f3c 0012 RETURN 0x0 -00538e 0e02 MOVLW 0x2 ebb_print_hex(gCommand_Char2, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005390 6ee6 MOVWF 0xe6,0x0 -005392 c4c8 MOVFF 0x4c8,0x4e -005394 f04e -005396 6a4f CLRF 0x4f,0x0 -005398 ecbf CALL 0x6b7e,0x0 -00539a f035 -00539c 0e27 MOVLW 0x27 ebb_print_char(0x27); // the ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00539e ecba CALL 0x6b74,0x0 -0053a0 f035 - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053a2 ec9d CALL 0x6b3a,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006b8e 6ee6 MOVWF 0xe6,0x0 +006b90 ec83 CALL 0x4d06,0x0 +006b92 f026 +006b94 52e5 MOVF 0xe5,0x1,0x0 +006b96 0012 RETURN 0x0 +005382 ec75 CALL 0x6eea,0x0 ebb_print_hex(gCommand_Char1, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005384 f037 +005386 c4c7 MOVFF 0x4c7,0xfe6 +005388 ffe6 +00538a eced CALL 0x6dda,0x0 +00538c f036 +00538e ec85 CALL 0x6f0a,0x0 +005390 f037 +006f0a ec9f CALL 0x8d3e,0x0 +006f0c f046 +006f0e 6e52 MOVWF 0x52,0x0 +006f10 0e05 MOVLW 0x5 +006f12 5ee1 SUBWF 0xe1,0x1,0x0 +006f14 5052 MOVF 0x52,0x0,0x0 +006f16 0012 RETURN 0x0 +005392 0e02 MOVLW 0x2 ebb_print_hex(gCommand_Char2, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005394 6ee6 MOVWF 0xe6,0x0 +005396 c4c8 MOVFF 0x4c8,0x4e +005398 f04e +00539a 6a4f CLRF 0x4f,0x0 +00539c ecab CALL 0x6b56,0x0 +00539e f035 +0053a0 0e27 MOVLW 0x27 ebb_print_char(0x27); // the ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053a2 ecc7 CALL 0x6b8e,0x0 0053a4 f035 + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053a6 ec8e CALL 0x6b1c,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053a8 f035 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -21127,42 +21134,42 @@ Address Value Disassembly Source // the command parsing routine didn't eat. This would be an error and needs D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // to be reported. (Ignore for Reset command because FIFO pointers get cleared.) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053a6 0104 MOVLB 0x4 (g_RX_buf[g_RX_buf_out] != kCR && 0u == error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053a8 ecff CALL 0x6dfe,0x0 -0053aa f036 -0053ac 080d SUBLW 0xd -0053ae e00d BZ 0x53ca -0053b0 5184 MOVF 0x84,0x0,0x1 -0053b2 e10b BNZ 0x53ca +0053aa 0104 MOVLB 0x4 (g_RX_buf[g_RX_buf_out] != kCR && 0u == error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053ac ece6 CALL 0x6dcc,0x0 +0053ae f036 +0053b0 080d SUBLW 0xd +0053b2 e00d BZ 0x53ce +0053b4 5184 MOVF 0x84,0x0,0x1 +0053b6 e10b BNZ 0x53ce && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053b4 0e52 MOVLW 0x52 ('R' != command) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053b6 6e4e MOVWF 0x4e,0x0 -0053b8 6a4f CLRF 0x4f,0x0 -0053ba 50df MOVF 0xdf,0x0,0x0 -0053bc 184e XORWF 0x4e,0x0,0x0 -0053be e103 BNZ 0x53c6 -0053c0 52de MOVF 0xde,0x1,0x0 -0053c2 50dd MOVF 0xdd,0x0,0x0 -0053c4 184f XORWF 0x4f,0x0,0x0 -0053c6 e001 BZ 0x53ca ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053b8 0e52 MOVLW 0x52 ('R' != command) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053ba 6e4e MOVWF 0x4e,0x0 +0053bc 6a4f CLRF 0x4f,0x0 +0053be 50df MOVF 0xdf,0x0,0x0 +0053c0 184e XORWF 0x4e,0x0,0x0 +0053c2 e103 BNZ 0x53ca +0053c4 52de MOVF 0xde,0x1,0x0 +0053c6 50dd MOVF 0xdd,0x0,0x0 +0053c8 184f XORWF 0x4f,0x0,0x0 +0053ca e001 BZ 0x53ce ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053c8 8f84 BSF 0x84,0x7,0x1 bitset(error_byte, kERROR_BYTE_EXTRA_CHARACTERS); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053cc 8f84 BSF 0x84,0x7,0x1 bitset(error_byte, kERROR_BYTE_EXTRA_CHARACTERS); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clean up by skipping over any bytes we haven't eaten D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This is safe since we parse each packet as we get a D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // (i.e. g_RX_buf_in doesn't move while we are in this routine) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053ca c4b7 MOVFF 0x4b7,0x4b8 g_RX_buf_out = g_RX_buf_in; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053cc f4b8 -0053ce 0e09 MOVLW 0x9 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053d0 5ce1 SUBWF 0xe1,0x0,0x0 -0053d2 e202 BC 0x53d8 -0053d4 6ae1 CLRF 0xe1,0x0 -0053d6 52e5 MOVF 0xe5,0x1,0x0 -0053d8 6ee1 MOVWF 0xe1,0x0 -0053da efb6 GOTO 0x6b6c -0053dc f035 +0053ce c4b7 MOVFF 0x4b7,0x4b8 g_RX_buf_out = g_RX_buf_in; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053d0 f4b8 +0053d2 0e09 MOVLW 0x9 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053d4 5ce1 SUBWF 0xe1,0x0,0x0 +0053d6 e202 BC 0x53dc +0053d8 6ae1 CLRF 0xe1,0x0 +0053da 52e5 MOVF 0xe5,0x1,0x0 +0053dc 6ee1 MOVWF 0xe1,0x0 +0053de efa7 GOTO 0x6b4e +0053e0 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This function will print out the two character command that was just parsed D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // if the New line ending mode is set (CU,10,1). Every time a command is sent D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -21173,50 +21180,50 @@ Address Value Disassembly Source // print_comma = true : if command printed, also print comma after D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // print_comma = false : if command printed, do not print comma after D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If Legacy line ending mode is turned on this function will not print anything D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053de ec50 CALL 0x6ea0,0x0 void print_command(BOOL print_always, BOOL print_comma) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053e0 f037 +0053e2 ec39 CALL 0x6e72,0x0 void print_command(BOOL print_always, BOOL print_comma) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053e4 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053e2 0e2c MOVLW 0x2c char comma = ','; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053e4 6edf MOVWF 0xdf,0x0 +0053e6 0e2c MOVLW 0x2c char comma = ','; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053e8 6edf MOVWF 0xdf,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053e6 0e01 MOVLW 0x1 if (bittstzero(gStandardizedCommandFormat) || print_always) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053e8 0101 MOVLB 0x1 -0053ea 15c3 ANDWF 0xc3,0x0,0x1 -0053ec e103 BNZ 0x53f4 -0053ee 0efe MOVLW 0xfe -0053f0 50db MOVF 0xdb,0x0,0x0 -0053f2 e010 BZ 0x5414 +0053ea 0e01 MOVLW 0x1 if (bittstzero(gStandardizedCommandFormat) || print_always) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053ec 0101 MOVLB 0x1 +0053ee 15c3 ANDWF 0xc3,0x0,0x1 +0053f0 e103 BNZ 0x53f8 +0053f2 0efe MOVLW 0xfe +0053f4 50db MOVF 0xdb,0x0,0x0 +0053f6 e010 BZ 0x5418 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053f4 eca1 CALL 0x6d42,0x0 ebb_putc(gCommand_Char1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053f6 f036 -006d42 c4c7 MOVFF 0x4c7,0xfe6 -006d44 ffe6 -006d46 ec83 CALL 0x4d06,0x0 -006d48 f026 -006d4a 52e5 MOVF 0xe5,0x1,0x0 -006d4c 0012 RETURN 0x0 -0053f8 0104 MOVLB 0x4 if (gCommand_Char2 != 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053fa 51c8 MOVF 0xc8,0x0,0x1 -0053fc e004 BZ 0x5406 +0053f8 ec8d CALL 0x6d1a,0x0 ebb_putc(gCommand_Char1); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053fa f036 +006d1a c4c7 MOVFF 0x4c7,0xfe6 +006d1c ffe6 +006d1e ec83 CALL 0x4d06,0x0 +006d20 f026 +006d22 52e5 MOVF 0xe5,0x1,0x0 +006d24 0012 RETURN 0x0 +0053fc 0104 MOVLB 0x4 if (gCommand_Char2 != 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0053fe 51c8 MOVF 0xc8,0x0,0x1 +005400 e004 BZ 0x540a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0053fe c4c8 MOVFF 0x4c8,0xfe6 ebb_putc(gCommand_Char2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005400 ffe6 -005402 dc81 RCALL 0x4d06 -005404 52e5 MOVF 0xe5,0x1,0x0 +005402 c4c8 MOVFF 0x4c8,0xfe6 ebb_putc(gCommand_Char2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005404 ffe6 +005406 dc7f RCALL 0x4d06 +005408 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005406 0efd MOVLW 0xfd if (print_comma) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005408 50db MOVF 0xdb,0x0,0x0 -00540a e004 BZ 0x5414 +00540a 0efd MOVLW 0xfd if (print_comma) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00540c 50db MOVF 0xdb,0x0,0x0 +00540e e004 BZ 0x5418 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00540c cfdf MOVFF 0xfdf,0xfe6 ebb_putc(comma); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00540e ffe6 -005410 dc7a RCALL 0x4d06 -005412 52e5 MOVF 0xe5,0x1,0x0 +005410 cfdf MOVFF 0xfdf,0xfe6 ebb_putc(comma); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005412 ffe6 +005414 dc78 RCALL 0x4d06 +005416 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005414 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005416 efb6 GOTO 0x6b6c -005418 f035 +005418 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00541a efa7 GOTO 0x6b4e +00541c f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This function prints out the common endings needed on text lines sent back D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // to the PC. It operates in two modes, Legacy and New. Legacy mode is used D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -21231,64 +21238,64 @@ Address Value Disassembly Source // = LE_REV : Print "\n\r" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // New Mode: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Regardless of the value of , always print "\n" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00541a ecb1 CALL 0x6b62,0x0 void print_line_ending(tLineEnding le_type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00541c f035 +00541e eca2 CALL 0x6b44,0x0 void print_line_ending(tLineEnding le_type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005420 f035 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00541e 0101 MOVLB 0x1 if (bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005420 a1c3 BTFSS 0xc3,0x0,0x1 -005422 d004 BRA 0x542c +005422 0101 MOVLB 0x1 if (bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005424 a1c3 BTFSS 0xc3,0x0,0x1 +005426 d004 BRA 0x5430 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005424 0efd MOVLW 0xfd ebb_print((far rom char *)"\n"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005426 6e4e MOVWF 0x4e,0x0 -005428 0e8b MOVLW 0x8b +005428 0ecd MOVLW 0xcd ebb_print((far rom char *)"\n"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00542a 6e4e MOVWF 0x4e,0x0 +00542c 0e8b MOVLW 0x8b } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00542a d016 BRA 0x5458 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00542e d016 BRA 0x545c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00542c 0104 MOVLB 0x4 if ((g_ack_enable) && (le_type == kLE_OK_NORM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00542e 51bd MOVF 0xbd,0x0,0x1 -005430 e008 BZ 0x5442 -005432 0efe MOVLW 0xfe -005434 50db MOVF 0xdb,0x0,0x0 -005436 e105 BNZ 0x5442 +005430 0104 MOVLB 0x4 if ((g_ack_enable) && (le_type == kLE_OK_NORM)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005432 51bd MOVF 0xbd,0x0,0x1 +005434 e008 BZ 0x5446 +005436 0efe MOVLW 0xfe +005438 50db MOVF 0xdb,0x0,0x0 +00543a e105 BNZ 0x5446 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005438 0efa MOVLW 0xfa ebb_print((far rom char *)"OK"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00543a 6e4e MOVWF 0x4e,0x0 -00543c 0e8b MOVLW 0x8b -00543e ec93 CALL 0x6b26,0x0 -005440 f035 +00543c 0eca MOVLW 0xca ebb_print((far rom char *)"OK"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00543e 6e4e MOVWF 0x4e,0x0 +005440 0e8b MOVLW 0x8b +005442 ec84 CALL 0x6b08,0x0 +005444 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005442 0efe MOVLW 0xfe if (le_type == kLE_REV) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005444 50db MOVF 0xdb,0x0,0x0 -005446 0802 SUBLW 0x2 -005448 e104 BNZ 0x5452 +005446 0efe MOVLW 0xfe if (le_type == kLE_REV) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005448 50db MOVF 0xdb,0x0,0x0 +00544a 0802 SUBLW 0x2 +00544c e104 BNZ 0x5456 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00544a 0ef7 MOVLW 0xf7 ebb_print((far rom char *)"\n\r"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00544c 6e4e MOVWF 0x4e,0x0 -00544e 0e8b MOVLW 0x8b +00544e 0ec7 MOVLW 0xc7 ebb_print((far rom char *)"\n\r"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005450 6e4e MOVWF 0x4e,0x0 +005452 0e8b MOVLW 0x8b } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005450 d003 BRA 0x5458 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005454 d003 BRA 0x545c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // le_type == kLE_NORM D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005452 0ef4 MOVLW 0xf4 ebb_print((far rom char *)"\r\n"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005454 6e4e MOVWF 0x4e,0x0 -005456 0e8b MOVLW 0x8b -005458 ec93 CALL 0x6b26,0x0 -00545a f035 +005456 0ec4 MOVLW 0xc4 ebb_print((far rom char *)"\r\n"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005458 6e4e MOVWF 0x4e,0x0 +00545a 0e8b MOVLW 0x8b +00545c ec84 CALL 0x6b08,0x0 +00545e f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00545c efb6 GOTO 0x6b6c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00545e f035 +005460 efa7 GOTO 0x6b4e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005462 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Return all I/Os to their default power-on values D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_R_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005460 ec09 CALL 0x7012,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005462 f038 -005464 ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005466 f035 -005468 dc7d RCALL 0x4d64 check_and_send_TX_data(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00546a ef67 GOTO 0x48ce UserInit(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00546c f024 +005464 ecf0 CALL 0x6fe0,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005466 f037 +005468 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00546a f035 +00546c dc7b RCALL 0x4d64 check_and_send_TX_data(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00546e ef67 GOTO 0x48ce UserInit(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005470 f024 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU is "Configure UBW" and controls system-wide configuration values D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -21315,661 +21322,661 @@ Address Value Disassembly Source // 256 {1|0} 1=don't add any moves to FIFO, 0=(default) add moves to FIFO (used for testing of parse functions) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 257 {1|0} turns on or off RC7 as indicator of parsing any command (when high) - defaults to off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00546e cfd9 MOVFF 0xfd9,0xfe6 void parse_CU_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005470 ffe6 -005472 cfe1 MOVFF 0xfe1,0xfd9 -005474 ffd9 -005476 0e04 MOVLW 0x4 -005478 26e1 ADDWF 0xe1,0x1,0x0 +005472 cfd9 MOVFF 0xfd9,0xfe6 void parse_CU_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005474 ffe6 +005476 cfe1 MOVFF 0xfe1,0xfd9 +005478 ffd9 +00547a 0e04 MOVLW 0x4 +00547c 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT16 parameter_number; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c INT16 paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00547a 6ae6 CLRF 0xe6,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00547c 6ae6 CLRF 0xe6,0x0 -00547e dfaf RCALL 0x53de -005480 52e5 MOVF 0xe5,0x1,0x0 -005482 52e5 MOVF 0xe5,0x1,0x0 +00547e 6ae6 CLRF 0xe6,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005480 6ae6 CLRF 0xe6,0x0 +005482 dfaf RCALL 0x53e2 +005484 52e5 MOVF 0xe5,0x1,0x0 +005486 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005484 6ae6 CLRF 0xe6,0x0 extract_number(kUINT, ¶meter_number, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005486 cfd9 MOVFF 0xfd9,0xfe6 -005488 ffe6 -00548a cfda MOVFF 0xfda,0xfe6 +005488 6ae6 CLRF 0xe6,0x0 extract_number(kUINT, ¶meter_number, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00548a cfd9 MOVFF 0xfd9,0xfe6 00548c ffe6 -00548e 0e03 MOVLW 0x3 -005490 6ee6 MOVWF 0xe6,0x0 -005492 ec20 CALL 0x6640,0x0 -005494 f033 -005496 52e5 MOVF 0xe5,0x1,0x0 -005498 52e5 MOVF 0xe5,0x1,0x0 +00548e cfda MOVFF 0xfda,0xfe6 +005490 ffe6 +005492 0e03 MOVLW 0x3 +005494 6ee6 MOVWF 0xe6,0x0 +005496 ec11 CALL 0x6622,0x0 +005498 f033 00549a 52e5 MOVF 0xe5,0x1,0x0 00549c 52e5 MOVF 0xe5,0x1,0x0 -00549e 6ae6 CLRF 0xe6,0x0 extract_number(kINT, ¶mater_value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054a0 50d9 MOVF 0xd9,0x0,0x0 -0054a2 0f02 ADDLW 0x2 -0054a4 6ee6 MOVWF 0xe6,0x0 -0054a6 0e00 MOVLW 0x0 -0054a8 20da ADDWFC 0xda,0x0,0x0 -0054aa 6ee6 MOVWF 0xe6,0x0 -0054ac 0e02 MOVLW 0x2 +00549e 52e5 MOVF 0xe5,0x1,0x0 +0054a0 52e5 MOVF 0xe5,0x1,0x0 +0054a2 6ae6 CLRF 0xe6,0x0 extract_number(kINT, ¶mater_value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0054a4 50d9 MOVF 0xd9,0x0,0x0 +0054a6 0f02 ADDLW 0x2 +0054a8 6ee6 MOVWF 0xe6,0x0 +0054aa 0e00 MOVLW 0x0 +0054ac 20da ADDWFC 0xda,0x0,0x0 0054ae 6ee6 MOVWF 0xe6,0x0 -0054b0 ec20 CALL 0x6640,0x0 -0054b2 f033 -0054b4 52e5 MOVF 0xe5,0x1,0x0 -0054b6 52e5 MOVF 0xe5,0x1,0x0 +0054b0 0e02 MOVLW 0x2 +0054b2 6ee6 MOVWF 0xe6,0x0 +0054b4 ec11 CALL 0x6622,0x0 +0054b6 f033 0054b8 52e5 MOVF 0xe5,0x1,0x0 0054ba 52e5 MOVF 0xe5,0x1,0x0 +0054bc 52e5 MOVF 0xe5,0x1,0x0 +0054be 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054bc 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054be 5184 MOVF 0x84,0x0,0x1 -0054c0 e001 BZ 0x54c4 +0054c0 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0054c2 5184 MOVF 0x84,0x0,0x1 +0054c4 e001 BZ 0x54c8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054c2 d2f5 BRA 0x5aae return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0054c6 d2f5 BRA 0x5ab2 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,1,1 or CU,1,0 to turn on/off "OK" at end of command reply D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054c4 0e01 MOVLW 0x1 if (1u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054c6 6e4e MOVWF 0x4e,0x0 -0054c8 6a4f CLRF 0x4f,0x0 -0054ca 50df MOVF 0xdf,0x0,0x0 -0054cc 184e XORWF 0x4e,0x0,0x0 -0054ce e103 BNZ 0x54d6 -0054d0 52de MOVF 0xde,0x1,0x0 -0054d2 50dd MOVF 0xdd,0x0,0x0 -0054d4 184f XORWF 0x4f,0x0,0x0 -0054d6 e11a BNZ 0x550c +0054c8 0e01 MOVLW 0x1 if (1u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0054ca 6e4e MOVWF 0x4e,0x0 +0054cc 6a4f CLRF 0x4f,0x0 +0054ce 50df MOVF 0xdf,0x0,0x0 +0054d0 184e XORWF 0x4e,0x0,0x0 +0054d2 e103 BNZ 0x54da +0054d4 52de MOVF 0xde,0x1,0x0 +0054d6 50dd MOVF 0xdd,0x0,0x0 +0054d8 184f XORWF 0x4f,0x0,0x0 +0054da e11a BNZ 0x5510 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054d8 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value || 1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054da 0f02 ADDLW 0x2 -0054dc 6ee9 MOVWF 0xe9,0x0 -0054de cfda MOVFF 0xfda,0xfea -0054e0 ffea -0054e2 50ee MOVF 0xee,0x0,0x0 -0054e4 10ed IORWF 0xed,0x0,0x0 -0054e6 e00b BZ 0x54fe -0054e8 0e01 MOVLW 0x1 -0054ea 6e4e MOVWF 0x4e,0x0 -0054ec 6a4f CLRF 0x4f,0x0 -0054ee 0e02 MOVLW 0x2 -0054f0 50db MOVF 0xdb,0x0,0x0 -0054f2 184e XORWF 0x4e,0x0,0x0 -0054f4 e103 BNZ 0x54fc -0054f6 0e03 MOVLW 0x3 -0054f8 50db MOVF 0xdb,0x0,0x0 -0054fa 184f XORWF 0x4f,0x0,0x0 -0054fc e104 BNZ 0x5506 +0054dc 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value || 1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0054de 0f02 ADDLW 0x2 +0054e0 6ee9 MOVWF 0xe9,0x0 +0054e2 cfda MOVFF 0xfda,0xfea +0054e4 ffea +0054e6 50ee MOVF 0xee,0x0,0x0 +0054e8 10ed IORWF 0xed,0x0,0x0 +0054ea e00b BZ 0x5502 +0054ec 0e01 MOVLW 0x1 +0054ee 6e4e MOVWF 0x4e,0x0 +0054f0 6a4f CLRF 0x4f,0x0 +0054f2 0e02 MOVLW 0x2 +0054f4 50db MOVF 0xdb,0x0,0x0 +0054f6 184e XORWF 0x4e,0x0,0x0 +0054f8 e103 BNZ 0x5500 +0054fa 0e03 MOVLW 0x3 +0054fc 50db MOVF 0xdb,0x0,0x0 +0054fe 184f XORWF 0x4f,0x0,0x0 +005500 e104 BNZ 0x550a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0054fe 0e02 MOVLW 0x2 g_ack_enable = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005500 cfdb MOVFF 0xfdb,0x4bd -005502 f4bd +005502 0e02 MOVLW 0x2 g_ack_enable = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005504 cfdb MOVFF 0xfdb,0x4bd +005506 f4bd } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005504 d002 BRA 0x550a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005508 d002 BRA 0x550e else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005506 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005508 8d84 BSF 0x84,0x6,0x1 +00550a 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00550c 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,2,1 or CU,2,0 to turn on/off parameter limit checks D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00550a d2ce BRA 0x5aa8 else if (2u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00550c 0e02 MOVLW 0x2 -00550e 6e4e MOVWF 0x4e,0x0 -005510 6a4f CLRF 0x4f,0x0 -005512 50df MOVF 0xdf,0x0,0x0 -005514 184e XORWF 0x4e,0x0,0x0 -005516 e103 BNZ 0x551e -005518 52de MOVF 0xde,0x1,0x0 -00551a 50dd MOVF 0xdd,0x0,0x0 -00551c 184f XORWF 0x4f,0x0,0x0 -00551e e11a BNZ 0x5554 +00550e d2ce BRA 0x5aac else if (2u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005510 0e02 MOVLW 0x2 +005512 6e4e MOVWF 0x4e,0x0 +005514 6a4f CLRF 0x4f,0x0 +005516 50df MOVF 0xdf,0x0,0x0 +005518 184e XORWF 0x4e,0x0,0x0 +00551a e103 BNZ 0x5522 +00551c 52de MOVF 0xde,0x1,0x0 +00551e 50dd MOVF 0xdd,0x0,0x0 +005520 184f XORWF 0x4f,0x0,0x0 +005522 e11a BNZ 0x5558 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005520 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value || 1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005522 0f02 ADDLW 0x2 -005524 6ee9 MOVWF 0xe9,0x0 -005526 cfda MOVFF 0xfda,0xfea -005528 ffea -00552a 50ee MOVF 0xee,0x0,0x0 -00552c 10ed IORWF 0xed,0x0,0x0 -00552e e00b BZ 0x5546 -005530 0e01 MOVLW 0x1 -005532 6e4e MOVWF 0x4e,0x0 -005534 6a4f CLRF 0x4f,0x0 -005536 0e02 MOVLW 0x2 -005538 50db MOVF 0xdb,0x0,0x0 -00553a 184e XORWF 0x4e,0x0,0x0 -00553c e103 BNZ 0x5544 -00553e 0e03 MOVLW 0x3 -005540 50db MOVF 0xdb,0x0,0x0 -005542 184f XORWF 0x4f,0x0,0x0 -005544 e104 BNZ 0x554e +005524 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value || 1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005526 0f02 ADDLW 0x2 +005528 6ee9 MOVWF 0xe9,0x0 +00552a cfda MOVFF 0xfda,0xfea +00552c ffea +00552e 50ee MOVF 0xee,0x0,0x0 +005530 10ed IORWF 0xed,0x0,0x0 +005532 e00b BZ 0x554a +005534 0e01 MOVLW 0x1 +005536 6e4e MOVWF 0x4e,0x0 +005538 6a4f CLRF 0x4f,0x0 +00553a 0e02 MOVLW 0x2 +00553c 50db MOVF 0xdb,0x0,0x0 +00553e 184e XORWF 0x4e,0x0,0x0 +005540 e103 BNZ 0x5548 +005542 0e03 MOVLW 0x3 +005544 50db MOVF 0xdb,0x0,0x0 +005546 184f XORWF 0x4f,0x0,0x0 +005548 e104 BNZ 0x5552 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005546 0e02 MOVLW 0x2 gLimitChecks = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005548 cfdb MOVFF 0xfdb,0x1c2 -00554a f1c2 +00554a 0e02 MOVLW 0x2 gLimitChecks = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00554c cfdb MOVFF 0xfdb,0x1c2 +00554e f1c2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00554c d002 BRA 0x5552 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005550 d002 BRA 0x5556 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00554e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005550 8d84 BSF 0x84,0x6,0x1 +005552 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005554 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,3,1 or CU,3,0 to turn on/off red LED FIFO empty indicator D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005552 d2aa BRA 0x5aa8 else if (3u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005554 0e03 MOVLW 0x3 -005556 6e4e MOVWF 0x4e,0x0 -005558 6a4f CLRF 0x4f,0x0 -00555a 50df MOVF 0xdf,0x0,0x0 -00555c 184e XORWF 0x4e,0x0,0x0 -00555e e103 BNZ 0x5566 -005560 52de MOVF 0xde,0x1,0x0 -005562 50dd MOVF 0xdd,0x0,0x0 -005564 184f XORWF 0x4f,0x0,0x0 -005566 e11c BNZ 0x55a0 +005556 d2aa BRA 0x5aac else if (3u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005558 0e03 MOVLW 0x3 +00555a 6e4e MOVWF 0x4e,0x0 +00555c 6a4f CLRF 0x4f,0x0 +00555e 50df MOVF 0xdf,0x0,0x0 +005560 184e XORWF 0x4e,0x0,0x0 +005562 e103 BNZ 0x556a +005564 52de MOVF 0xde,0x1,0x0 +005566 50dd MOVF 0xdd,0x0,0x0 +005568 184f XORWF 0x4f,0x0,0x0 +00556a e11c BNZ 0x55a4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005568 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00556a 0f02 ADDLW 0x2 -00556c 6ee9 MOVWF 0xe9,0x0 -00556e cfda MOVFF 0xfda,0xfea -005570 ffea -005572 50ee MOVF 0xee,0x0,0x0 -005574 10ed IORWF 0xed,0x0,0x0 -005576 e103 BNZ 0x557e +00556c 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00556e 0f02 ADDLW 0x2 +005570 6ee9 MOVWF 0xe9,0x0 +005572 cfda MOVFF 0xfda,0xfea +005574 ffea +005576 50ee MOVF 0xee,0x0,0x0 +005578 10ed IORWF 0xed,0x0,0x0 +00557a e103 BNZ 0x5582 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005578 9006 BCF 0x6,0x0,0x0 bitclrzero(gRedLEDEmptyFIFO); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00557a 948c BCF 0x8c,0x2,0x0 mLED_2_Off() D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00557c 9006 BCF 0x6,0x0,0x0 bitclrzero(gRedLEDEmptyFIFO); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00557e 948c BCF 0x8c,0x2,0x0 mLED_2_Off() D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00557c d010 BRA 0x559e else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00557e 0e01 MOVLW 0x1 -005580 6e4e MOVWF 0x4e,0x0 -005582 6a4f CLRF 0x4f,0x0 -005584 0e02 MOVLW 0x2 -005586 50db MOVF 0xdb,0x0,0x0 -005588 184e XORWF 0x4e,0x0,0x0 -00558a e103 BNZ 0x5592 -00558c 0e03 MOVLW 0x3 -00558e 50db MOVF 0xdb,0x0,0x0 -005590 184f XORWF 0x4f,0x0,0x0 -005592 e103 BNZ 0x559a +005580 d010 BRA 0x55a2 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005582 0e01 MOVLW 0x1 +005584 6e4e MOVWF 0x4e,0x0 +005586 6a4f CLRF 0x4f,0x0 +005588 0e02 MOVLW 0x2 +00558a 50db MOVF 0xdb,0x0,0x0 +00558c 184e XORWF 0x4e,0x0,0x0 +00558e e103 BNZ 0x5596 +005590 0e03 MOVLW 0x3 +005592 50db MOVF 0xdb,0x0,0x0 +005594 184f XORWF 0x4f,0x0,0x0 +005596 e103 BNZ 0x559e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005594 8006 BSF 0x6,0x0,0x0 bitsetzero(gRedLEDEmptyFIFO); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005596 948c BCF 0x8c,0x2,0x0 mLED_2_Off() D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005598 8006 BSF 0x6,0x0,0x0 bitsetzero(gRedLEDEmptyFIFO); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00559a 948c BCF 0x8c,0x2,0x0 mLED_2_Off() D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005598 d002 BRA 0x559e else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00559c d002 BRA 0x55a2 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00559a 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00559c 8d84 BSF 0x84,0x6,0x1 +00559e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055a0 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,4, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00559e d284 BRA 0x5aa8 else if (4u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055a0 0e04 MOVLW 0x4 -0055a2 6e4e MOVWF 0x4e,0x0 -0055a4 6a4f CLRF 0x4f,0x0 -0055a6 50df MOVF 0xdf,0x0,0x0 -0055a8 184e XORWF 0x4e,0x0,0x0 -0055aa e103 BNZ 0x55b2 -0055ac 52de MOVF 0xde,0x1,0x0 -0055ae 50dd MOVF 0xdd,0x0,0x0 -0055b0 184f XORWF 0x4f,0x0,0x0 -0055b2 e11d BNZ 0x55ee +0055a2 d284 BRA 0x5aac else if (4u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055a4 0e04 MOVLW 0x4 +0055a6 6e4e MOVWF 0x4e,0x0 +0055a8 6a4f CLRF 0x4f,0x0 +0055aa 50df MOVF 0xdf,0x0,0x0 +0055ac 184e XORWF 0x4e,0x0,0x0 +0055ae e103 BNZ 0x55b6 +0055b0 52de MOVF 0xde,0x1,0x0 +0055b2 50dd MOVF 0xdd,0x0,0x0 +0055b4 184f XORWF 0x4f,0x0,0x0 +0055b6 e11d BNZ 0x55f2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055b4 0e02 MOVLW 0x2 if (paramater_value > (INT16)COMMAND_FIFO_MAX_LENGTH) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055b6 cfdb MOVFF 0xfdb,0x4e -0055b8 f04e -0055ba 0e03 MOVLW 0x3 -0055bc cfdb MOVFF 0xfdb,0x4f -0055be f04f -0055c0 344f RLCF 0x4f,0x0,0x0 -0055c2 e204 BC 0x55cc -0055c4 504e MOVF 0x4e,0x0,0x0 -0055c6 0820 SUBLW 0x20 -0055c8 0e00 MOVLW 0x0 -0055ca 544f SUBFWB 0x4f,0x0,0x0 -0055cc e207 BC 0x55dc +0055b8 0e02 MOVLW 0x2 if (paramater_value > (INT16)COMMAND_FIFO_MAX_LENGTH) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055ba cfdb MOVFF 0xfdb,0x4e +0055bc f04e +0055be 0e03 MOVLW 0x3 +0055c0 cfdb MOVFF 0xfdb,0x4f +0055c2 f04f +0055c4 344f RLCF 0x4f,0x0,0x0 +0055c6 e204 BC 0x55d0 +0055c8 504e MOVF 0x4e,0x0,0x0 +0055ca 0820 SUBLW 0x20 +0055cc 0e00 MOVLW 0x0 +0055ce 544f SUBFWB 0x4f,0x0,0x0 +0055d0 e207 BC 0x55e0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055ce 0e20 MOVLW 0x20 paramater_value = COMMAND_FIFO_MAX_LENGTH; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055d0 6ef3 MOVWF 0xf3,0x0 -0055d2 0e02 MOVLW 0x2 -0055d4 cff3 MOVFF 0xff3,0xfdb -0055d6 ffdb -0055d8 0e03 MOVLW 0x3 -0055da 6adb CLRF 0xdb,0x0 +0055d2 0e20 MOVLW 0x20 paramater_value = COMMAND_FIFO_MAX_LENGTH; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055d4 6ef3 MOVWF 0xf3,0x0 +0055d6 0e02 MOVLW 0x2 +0055d8 cff3 MOVFF 0xff3,0xfdb +0055da ffdb +0055dc 0e03 MOVLW 0x3 +0055de 6adb CLRF 0xdb,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Spin here until we're certain the FIFO is empty and there are no D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // command executing. We want the ISR to be completely idle while we D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // change this value. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055dc ece3 CALL 0x31c6,0x0 while (process_QM()) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055de f018 -0055e0 0900 IORLW 0x0 -0055e2 e001 BZ 0x55e6 -0055e4 d7fb BRA 0x55dc +0055e0 ece3 CALL 0x31c6,0x0 while (process_QM()) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055e2 f018 +0055e4 0900 IORLW 0x0 +0055e6 e001 BZ 0x55ea +0055e8 d7fb BRA 0x55e0 ; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055e6 0e02 MOVLW 0x2 gCurrentFIFOLength = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055e8 50db MOVF 0xdb,0x0,0x0 -0055ea 6e13 MOVWF 0x13,0x0 +0055ea 0e02 MOVLW 0x2 gCurrentFIFOLength = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055ec 50db MOVF 0xdb,0x0,0x0 +0055ee 6e13 MOVWF 0x13,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,10,1 or CU,10,0 to turn on/off standardized line ending D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055ec d25d BRA 0x5aa8 else if (10u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0055ee 0e0a MOVLW 0xa -0055f0 6e4e MOVWF 0x4e,0x0 -0055f2 6a4f CLRF 0x4f,0x0 -0055f4 50df MOVF 0xdf,0x0,0x0 -0055f6 184e XORWF 0x4e,0x0,0x0 -0055f8 e103 BNZ 0x5600 -0055fa 52de MOVF 0xde,0x1,0x0 -0055fc 50dd MOVF 0xdd,0x0,0x0 -0055fe 184f XORWF 0x4f,0x0,0x0 -005600 e11c BNZ 0x563a +0055f0 d25d BRA 0x5aac else if (10u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0055f2 0e0a MOVLW 0xa +0055f4 6e4e MOVWF 0x4e,0x0 +0055f6 6a4f CLRF 0x4f,0x0 +0055f8 50df MOVF 0xdf,0x0,0x0 +0055fa 184e XORWF 0x4e,0x0,0x0 +0055fc e103 BNZ 0x5604 +0055fe 52de MOVF 0xde,0x1,0x0 +005600 50dd MOVF 0xdd,0x0,0x0 +005602 184f XORWF 0x4f,0x0,0x0 +005604 e11c BNZ 0x563e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005602 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005604 0f02 ADDLW 0x2 -005606 6ee9 MOVWF 0xe9,0x0 -005608 cfda MOVFF 0xfda,0xfea -00560a ffea -00560c 50ee MOVF 0xee,0x0,0x0 -00560e 10ed IORWF 0xed,0x0,0x0 -005610 e103 BNZ 0x5618 +005606 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005608 0f02 ADDLW 0x2 +00560a 6ee9 MOVWF 0xe9,0x0 +00560c cfda MOVFF 0xfda,0xfea +00560e ffea +005610 50ee MOVF 0xee,0x0,0x0 +005612 10ed IORWF 0xed,0x0,0x0 +005614 e103 BNZ 0x561c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005612 0101 MOVLB 0x1 bitclrzero(gStandardizedCommandFormat); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005614 91c3 BCF 0xc3,0x0,0x1 +005616 0101 MOVLB 0x1 bitclrzero(gStandardizedCommandFormat); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005618 91c3 BCF 0xc3,0x0,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005616 d010 BRA 0x5638 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005618 0e01 MOVLW 0x1 -00561a 6e4e MOVWF 0x4e,0x0 -00561c 6a4f CLRF 0x4f,0x0 -00561e 0e02 MOVLW 0x2 -005620 50db MOVF 0xdb,0x0,0x0 -005622 184e XORWF 0x4e,0x0,0x0 -005624 e103 BNZ 0x562c -005626 0e03 MOVLW 0x3 -005628 50db MOVF 0xdb,0x0,0x0 -00562a 184f XORWF 0x4f,0x0,0x0 -00562c e103 BNZ 0x5634 +00561a d010 BRA 0x563c else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00561c 0e01 MOVLW 0x1 +00561e 6e4e MOVWF 0x4e,0x0 +005620 6a4f CLRF 0x4f,0x0 +005622 0e02 MOVLW 0x2 +005624 50db MOVF 0xdb,0x0,0x0 +005626 184e XORWF 0x4e,0x0,0x0 +005628 e103 BNZ 0x5630 +00562a 0e03 MOVLW 0x3 +00562c 50db MOVF 0xdb,0x0,0x0 +00562e 184f XORWF 0x4f,0x0,0x0 +005630 e103 BNZ 0x5638 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00562e 0101 MOVLB 0x1 bitsetzero(gStandardizedCommandFormat); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005630 81c3 BSF 0xc3,0x0,0x1 +005632 0101 MOVLB 0x1 bitsetzero(gStandardizedCommandFormat); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005634 81c3 BSF 0xc3,0x0,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005632 d002 BRA 0x5638 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005636 d002 BRA 0x563c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005634 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005636 8d84 BSF 0x84,0x6,0x1 +005638 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00563a 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,50,1 or CU,50,0 to turn on/off automatic motor enable D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005638 d237 BRA 0x5aa8 else if (50u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00563a 0e32 MOVLW 0x32 -00563c 6e4e MOVWF 0x4e,0x0 -00563e 6a4f CLRF 0x4f,0x0 -005640 50df MOVF 0xdf,0x0,0x0 -005642 184e XORWF 0x4e,0x0,0x0 -005644 e103 BNZ 0x564c -005646 52de MOVF 0xde,0x1,0x0 -005648 50dd MOVF 0xdd,0x0,0x0 -00564a 184f XORWF 0x4f,0x0,0x0 -00564c e10f BNZ 0x566c +00563c d237 BRA 0x5aac else if (50u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00563e 0e32 MOVLW 0x32 +005640 6e4e MOVWF 0x4e,0x0 +005642 6a4f CLRF 0x4f,0x0 +005644 50df MOVF 0xdf,0x0,0x0 +005646 184e XORWF 0x4e,0x0,0x0 +005648 e103 BNZ 0x5650 +00564a 52de MOVF 0xde,0x1,0x0 +00564c 50dd MOVF 0xdd,0x0,0x0 +00564e 184f XORWF 0x4f,0x0,0x0 +005650 e10f BNZ 0x5670 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00564e 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005650 0f02 ADDLW 0x2 -005652 6ee9 MOVWF 0xe9,0x0 -005654 cfda MOVFF 0xfda,0xfea -005656 ffea -005658 50ee MOVF 0xee,0x0,0x0 -00565a 10ed IORWF 0xed,0x0,0x0 -00565c e103 BNZ 0x5664 +005652 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005654 0f02 ADDLW 0x2 +005656 6ee9 MOVWF 0xe9,0x0 +005658 cfda MOVFF 0xfda,0xfea +00565a ffea +00565c 50ee MOVF 0xee,0x0,0x0 +00565e 10ed IORWF 0xed,0x0,0x0 +005660 e103 BNZ 0x5668 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00565e 0104 MOVLB 0x4 gAutomaticMotorEnable = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005660 6bc6 CLRF 0xc6,0x1 +005662 0104 MOVLB 0x4 gAutomaticMotorEnable = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005664 6bc6 CLRF 0xc6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005662 d003 BRA 0x566a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005666 d003 BRA 0x566e else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005664 0104 MOVLB 0x4 gAutomaticMotorEnable = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005666 0e01 MOVLW 0x1 -005668 6fc6 MOVWF 0xc6,0x1 +005668 0104 MOVLB 0x4 gAutomaticMotorEnable = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00566a 0e01 MOVLW 0x1 +00566c 6fc6 MOVWF 0xc6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,51, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00566a d21e BRA 0x5aa8 else if (51u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00566c 0e33 MOVLW 0x33 -00566e 6e4e MOVWF 0x4e,0x0 -005670 6a4f CLRF 0x4f,0x0 -005672 50df MOVF 0xdf,0x0,0x0 -005674 184e XORWF 0x4e,0x0,0x0 -005676 e103 BNZ 0x567e -005678 52de MOVF 0xde,0x1,0x0 -00567a 50dd MOVF 0xdd,0x0,0x0 -00567c 184f XORWF 0x4f,0x0,0x0 -00567e e111 BNZ 0x56a2 +00566e d21e BRA 0x5aac else if (51u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005670 0e33 MOVLW 0x33 +005672 6e4e MOVWF 0x4e,0x0 +005674 6a4f CLRF 0x4f,0x0 +005676 50df MOVF 0xdf,0x0,0x0 +005678 184e XORWF 0x4e,0x0,0x0 +00567a e103 BNZ 0x5682 +00567c 52de MOVF 0xde,0x1,0x0 +00567e 50dd MOVF 0xdd,0x0,0x0 +005680 184f XORWF 0x4f,0x0,0x0 +005682 e111 BNZ 0x56a6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005680 0eff MOVLW 0xff gLimitSwitchMask = (paramater_value & 0xFF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005682 6ee7 MOVWF 0xe7,0x0 -005684 0e02 MOVLW 0x2 -005686 cfdb MOVFF 0xfdb,0x4e -005688 f04e -00568a 0e03 MOVLW 0x3 -00568c cfdb MOVFF 0xfdb,0x4f -00568e f04f -005690 50e7 MOVF 0xe7,0x0,0x0 -005692 164e ANDWF 0x4e,0x1,0x0 -005694 6a4f CLRF 0x4f,0x0 -005696 504e MOVF 0x4e,0x0,0x0 -005698 6e0c MOVWF 0xc,0x0 -00569a 500c MOVF 0xc,0x0,0x0 if (gLimitSwitchMask == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00569c e101 BNZ 0x56a0 +005684 0eff MOVLW 0xff gLimitSwitchMask = (paramater_value & 0xFF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005686 6ee7 MOVWF 0xe7,0x0 +005688 0e02 MOVLW 0x2 +00568a cfdb MOVFF 0xfdb,0x4e +00568c f04e +00568e 0e03 MOVLW 0x3 +005690 cfdb MOVFF 0xfdb,0x4f +005692 f04f +005694 50e7 MOVF 0xe7,0x0,0x0 +005696 164e ANDWF 0x4e,0x1,0x0 +005698 6a4f CLRF 0x4f,0x0 +00569a 504e MOVF 0x4e,0x0,0x0 +00569c 6e0c MOVWF 0xc,0x0 +00569e 500c MOVF 0xc,0x0,0x0 if (gLimitSwitchMask == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056a0 e101 BNZ 0x56a4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00569e 900e BCF 0xe,0x0,0x0 bitclrzero(gLimitSwitchTriggered); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056a2 900e BCF 0xe,0x0,0x0 bitclrzero(gLimitSwitchTriggered); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,52, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056a0 d203 BRA 0x5aa8 else if (52u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056a2 0e34 MOVLW 0x34 -0056a4 6e4e MOVWF 0x4e,0x0 -0056a6 6a4f CLRF 0x4f,0x0 -0056a8 50df MOVF 0xdf,0x0,0x0 -0056aa 184e XORWF 0x4e,0x0,0x0 -0056ac e103 BNZ 0x56b4 -0056ae 52de MOVF 0xde,0x1,0x0 -0056b0 50dd MOVF 0xdd,0x0,0x0 -0056b2 184f XORWF 0x4f,0x0,0x0 -0056b4 e10e BNZ 0x56d2 +0056a4 d203 BRA 0x5aac else if (52u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056a6 0e34 MOVLW 0x34 +0056a8 6e4e MOVWF 0x4e,0x0 +0056aa 6a4f CLRF 0x4f,0x0 +0056ac 50df MOVF 0xdf,0x0,0x0 +0056ae 184e XORWF 0x4e,0x0,0x0 +0056b0 e103 BNZ 0x56b8 +0056b2 52de MOVF 0xde,0x1,0x0 +0056b4 50dd MOVF 0xdd,0x0,0x0 +0056b6 184f XORWF 0x4f,0x0,0x0 +0056b8 e10e BNZ 0x56d6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056b6 0eff MOVLW 0xff gLimitSwitchTarget = (paramater_value & 0xFF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056b8 6ee7 MOVWF 0xe7,0x0 -0056ba 0e02 MOVLW 0x2 -0056bc cfdb MOVFF 0xfdb,0x4e -0056be f04e -0056c0 0e03 MOVLW 0x3 -0056c2 cfdb MOVFF 0xfdb,0x4f -0056c4 f04f -0056c6 50e7 MOVF 0xe7,0x0,0x0 -0056c8 164e ANDWF 0x4e,0x1,0x0 -0056ca 6a4f CLRF 0x4f,0x0 -0056cc 504e MOVF 0x4e,0x0,0x0 -0056ce 6e0d MOVWF 0xd,0x0 +0056ba 0eff MOVLW 0xff gLimitSwitchTarget = (paramater_value & 0xFF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056bc 6ee7 MOVWF 0xe7,0x0 +0056be 0e02 MOVLW 0x2 +0056c0 cfdb MOVFF 0xfdb,0x4e +0056c2 f04e +0056c4 0e03 MOVLW 0x3 +0056c6 cfdb MOVFF 0xfdb,0x4f +0056c8 f04f +0056ca 50e7 MOVF 0xe7,0x0,0x0 +0056cc 164e ANDWF 0x4e,0x1,0x0 +0056ce 6a4f CLRF 0x4f,0x0 +0056d0 504e MOVF 0x4e,0x0,0x0 +0056d2 6e0d MOVWF 0xd,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,53,1 turns on the sending of "Limit switch trigger" replies D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056d0 d1eb BRA 0x5aa8 else if (53u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056d2 0e35 MOVLW 0x35 -0056d4 6e4e MOVWF 0x4e,0x0 -0056d6 6a4f CLRF 0x4f,0x0 -0056d8 50df MOVF 0xdf,0x0,0x0 -0056da 184e XORWF 0x4e,0x0,0x0 -0056dc e103 BNZ 0x56e4 -0056de 52de MOVF 0xde,0x1,0x0 -0056e0 50dd MOVF 0xdd,0x0,0x0 -0056e2 184f XORWF 0x4f,0x0,0x0 -0056e4 e114 BNZ 0x570e +0056d4 d1eb BRA 0x5aac else if (53u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056d6 0e35 MOVLW 0x35 +0056d8 6e4e MOVWF 0x4e,0x0 +0056da 6a4f CLRF 0x4f,0x0 +0056dc 50df MOVF 0xdf,0x0,0x0 +0056de 184e XORWF 0x4e,0x0,0x0 +0056e0 e103 BNZ 0x56e8 +0056e2 52de MOVF 0xde,0x1,0x0 +0056e4 50dd MOVF 0xdd,0x0,0x0 +0056e6 184f XORWF 0x4f,0x0,0x0 +0056e8 e114 BNZ 0x5712 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056e6 0e01 MOVLW 0x1 if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056e8 6e4e MOVWF 0x4e,0x0 -0056ea 6a4f CLRF 0x4f,0x0 -0056ec 0e02 MOVLW 0x2 -0056ee 50db MOVF 0xdb,0x0,0x0 -0056f0 184e XORWF 0x4e,0x0,0x0 -0056f2 e103 BNZ 0x56fa -0056f4 0e03 MOVLW 0x3 -0056f6 50db MOVF 0xdb,0x0,0x0 -0056f8 184f XORWF 0x4f,0x0,0x0 -0056fa e104 BNZ 0x5704 +0056ea 0e01 MOVLW 0x1 if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0056ec 6e4e MOVWF 0x4e,0x0 +0056ee 6a4f CLRF 0x4f,0x0 +0056f0 0e02 MOVLW 0x2 +0056f2 50db MOVF 0xdb,0x0,0x0 +0056f4 184e XORWF 0x4e,0x0,0x0 +0056f6 e103 BNZ 0x56fe +0056f8 0e03 MOVLW 0x3 +0056fa 50db MOVF 0xdb,0x0,0x0 +0056fc 184f XORWF 0x4f,0x0,0x0 +0056fe e104 BNZ 0x5708 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056fc 0104 MOVLB 0x4 gLimitSwitchReplies = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0056fe 0e01 MOVLW 0x1 -005700 6fca MOVWF 0xca,0x1 +005700 0104 MOVLB 0x4 gLimitSwitchReplies = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005702 0e01 MOVLW 0x1 +005704 6fca MOVWF 0xca,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005702 d004 BRA 0x570c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005706 d004 BRA 0x5710 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005704 0104 MOVLB 0x4 gLimitSwitchReplies = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005706 6bca CLRF 0xca,0x1 -005708 0104 MOVLB 0x4 gLimitSwitchReplyPrinted = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00570a 6bcb CLRF 0xcb,0x1 +005708 0104 MOVLB 0x4 gLimitSwitchReplies = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00570a 6bca CLRF 0xca,0x1 +00570c 0104 MOVLB 0x4 gLimitSwitchReplyPrinted = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00570e 6bcb CLRF 0xcb,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,54,1 turns on command checksums D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00570c d1cd BRA 0x5aa8 else if (54u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00570e 0e36 MOVLW 0x36 -005710 6e4e MOVWF 0x4e,0x0 -005712 6a4f CLRF 0x4f,0x0 -005714 50df MOVF 0xdf,0x0,0x0 -005716 184e XORWF 0x4e,0x0,0x0 -005718 e103 BNZ 0x5720 -00571a 52de MOVF 0xde,0x1,0x0 -00571c 50dd MOVF 0xdd,0x0,0x0 -00571e 184f XORWF 0x4f,0x0,0x0 -005720 e112 BNZ 0x5746 +005710 d1cd BRA 0x5aac else if (54u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005712 0e36 MOVLW 0x36 +005714 6e4e MOVWF 0x4e,0x0 +005716 6a4f CLRF 0x4f,0x0 +005718 50df MOVF 0xdf,0x0,0x0 +00571a 184e XORWF 0x4e,0x0,0x0 +00571c e103 BNZ 0x5724 +00571e 52de MOVF 0xde,0x1,0x0 +005720 50dd MOVF 0xdd,0x0,0x0 +005722 184f XORWF 0x4f,0x0,0x0 +005724 e112 BNZ 0x574a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005722 0e01 MOVLW 0x1 if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005724 6e4e MOVWF 0x4e,0x0 -005726 6a4f CLRF 0x4f,0x0 -005728 0e02 MOVLW 0x2 -00572a 50db MOVF 0xdb,0x0,0x0 -00572c 184e XORWF 0x4e,0x0,0x0 -00572e e103 BNZ 0x5736 -005730 0e03 MOVLW 0x3 -005732 50db MOVF 0xdb,0x0,0x0 -005734 184f XORWF 0x4f,0x0,0x0 -005736 e104 BNZ 0x5740 +005726 0e01 MOVLW 0x1 if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005728 6e4e MOVWF 0x4e,0x0 +00572a 6a4f CLRF 0x4f,0x0 +00572c 0e02 MOVLW 0x2 +00572e 50db MOVF 0xdb,0x0,0x0 +005730 184e XORWF 0x4e,0x0,0x0 +005732 e103 BNZ 0x573a +005734 0e03 MOVLW 0x3 +005736 50db MOVF 0xdb,0x0,0x0 +005738 184f XORWF 0x4f,0x0,0x0 +00573a e104 BNZ 0x5744 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005738 0104 MOVLB 0x4 gCommandChecksumRequired = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00573a 0e01 MOVLW 0x1 -00573c 6fcc MOVWF 0xcc,0x1 +00573c 0104 MOVLB 0x4 gCommandChecksumRequired = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00573e 0e01 MOVLW 0x1 +005740 6fcc MOVWF 0xcc,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00573e d002 BRA 0x5744 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005742 d002 BRA 0x5748 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005740 0104 MOVLB 0x4 gCommandChecksumRequired = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005742 6bcc CLRF 0xcc,0x1 +005744 0104 MOVLB 0x4 gCommandChecksumRequired = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005746 6bcc CLRF 0xcc,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,60, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005744 d1b1 BRA 0x5aa8 else if (60u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005746 0e3c MOVLW 0x3c -005748 6e4e MOVWF 0x4e,0x0 -00574a 6a4f CLRF 0x4f,0x0 -00574c 50df MOVF 0xdf,0x0,0x0 -00574e 184e XORWF 0x4e,0x0,0x0 -005750 e103 BNZ 0x5758 -005752 52de MOVF 0xde,0x1,0x0 -005754 50dd MOVF 0xdd,0x0,0x0 -005756 184f XORWF 0x4f,0x0,0x0 -005758 e10d BNZ 0x5774 +005748 d1b1 BRA 0x5aac else if (60u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00574a 0e3c MOVLW 0x3c +00574c 6e4e MOVWF 0x4e,0x0 +00574e 6a4f CLRF 0x4f,0x0 +005750 50df MOVF 0xdf,0x0,0x0 +005752 184e XORWF 0x4e,0x0,0x0 +005754 e103 BNZ 0x575c +005756 52de MOVF 0xde,0x1,0x0 +005758 50dd MOVF 0xdd,0x0,0x0 +00575a 184f XORWF 0x4f,0x0,0x0 +00575c e10d BNZ 0x5778 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00575a 0e02 MOVLW 0x2 g_PowerMonitorThresholdADC = (paramater_value & 0x03FF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00575c cfdb MOVFF 0xfdb,0x492 -00575e f492 -005760 0e03 MOVLW 0x3 -005762 cfdb MOVFF 0xfdb,0x493 -005764 f493 -005766 0eff MOVLW 0xff -005768 0104 MOVLB 0x4 -00576a 1792 ANDWF 0x92,0x1,0x1 -00576c 0e03 MOVLW 0x3 -00576e 0104 MOVLB 0x4 -005770 1793 ANDWF 0x93,0x1,0x1 +00575e 0e02 MOVLW 0x2 g_PowerMonitorThresholdADC = (paramater_value & 0x03FF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005760 cfdb MOVFF 0xfdb,0x492 +005762 f492 +005764 0e03 MOVLW 0x3 +005766 cfdb MOVFF 0xfdb,0x493 +005768 f493 +00576a 0eff MOVLW 0xff +00576c 0104 MOVLB 0x4 +00576e 1792 ANDWF 0x92,0x1,0x1 +005770 0e03 MOVLW 0x3 +005772 0104 MOVLB 0x4 +005774 1793 ANDWF 0x93,0x1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,61, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005772 d19a BRA 0x5aa8 else if (61u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005774 0e3d MOVLW 0x3d -005776 6e4e MOVWF 0x4e,0x0 -005778 6a4f CLRF 0x4f,0x0 -00577a 50df MOVF 0xdf,0x0,0x0 -00577c 184e XORWF 0x4e,0x0,0x0 -00577e e103 BNZ 0x5786 -005780 52de MOVF 0xde,0x1,0x0 -005782 50dd MOVF 0xdd,0x0,0x0 -005784 184f XORWF 0x4f,0x0,0x0 -005786 e137 BNZ 0x57f6 +005776 d19a BRA 0x5aac else if (61u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005778 0e3d MOVLW 0x3d +00577a 6e4e MOVWF 0x4e,0x0 +00577c 6a4f CLRF 0x4f,0x0 +00577e 50df MOVF 0xdf,0x0,0x0 +005780 184e XORWF 0x4e,0x0,0x0 +005782 e103 BNZ 0x578a +005784 52de MOVF 0xde,0x1,0x0 +005786 50dd MOVF 0xdd,0x0,0x0 +005788 184f XORWF 0x4f,0x0,0x0 +00578a e137 BNZ 0x57fa { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005788 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00578a 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00578c 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00578e 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00578c 0e02 MOVLW 0x2 g_StepperDisableTimeoutS = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00578e cfdb MOVFF 0xfdb,0x496 -005790 f496 -005792 0e03 MOVLW 0x3 -005794 cfdb MOVFF 0xfdb,0x497 -005796 f497 +005790 0e02 MOVLW 0x2 g_StepperDisableTimeoutS = paramater_value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005792 cfdb MOVFF 0xfdb,0x496 +005794 f496 +005796 0e03 MOVLW 0x3 +005798 cfdb MOVFF 0xfdb,0x497 +00579a f497 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005798 0104 MOVLB 0x4 if (g_StepperDisableTimeoutS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00579a 5196 MOVF 0x96,0x0,0x1 -00579c 1197 IORWF 0x97,0x0,0x1 -00579e e109 BNZ 0x57b2 +00579c 0104 MOVLB 0x4 if (g_StepperDisableTimeoutS == 0u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00579e 5196 MOVF 0x96,0x0,0x1 +0057a0 1197 IORWF 0x97,0x0,0x1 +0057a2 e109 BNZ 0x57b6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Turn feature completely off no matter what state we're in D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057a0 0104 MOVLB 0x4 g_StepperDisableState = kSTEPPER_TIMEOUT_DISABLED; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057a2 6b95 CLRF 0x95,0x1 -0057a4 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057a6 6b98 CLRF 0x98,0x1 -0057a8 6b99 CLRF 0x99,0x1 -0057aa 0104 MOVLB 0x4 g_StepperDisableCountdownS = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057ac 6b9a CLRF 0x9a,0x1 -0057ae 6b9b CLRF 0x9b,0x1 +0057a4 0104 MOVLB 0x4 g_StepperDisableState = kSTEPPER_TIMEOUT_DISABLED; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057a6 6b95 CLRF 0x95,0x1 +0057a8 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057aa 6b98 CLRF 0x98,0x1 +0057ac 6b99 CLRF 0x99,0x1 +0057ae 0104 MOVLB 0x4 g_StepperDisableCountdownS = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057b0 6b9a CLRF 0x9a,0x1 +0057b2 6b9b CLRF 0x9b,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057b0 d01f BRA 0x57f0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057b4 d01f BRA 0x57f4 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // User wants feature enabled with new timeout. Do different things D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // based on current state. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057b2 0104 MOVLB 0x4 switch (g_StepperDisableState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057b4 5195 MOVF 0x95,0x0,0x1 -0057b6 0a03 XORLW 0x3 -0057b8 e014 BZ 0x57e2 -0057ba 0a02 XORLW 0x2 -0057bc e00f BZ 0x57dc -0057be 0a01 XORLW 0x1 -0057c0 e00d BZ 0x57dc -0057c2 0a02 XORLW 0x2 -0057c4 e001 BZ 0x57c8 -0057c6 d00a BRA 0x57dc +0057b6 0104 MOVLB 0x4 switch (g_StepperDisableState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057b8 5195 MOVF 0x95,0x0,0x1 +0057ba 0a03 XORLW 0x3 +0057bc e014 BZ 0x57e6 +0057be 0a02 XORLW 0x2 +0057c0 e00f BZ 0x57e0 +0057c2 0a01 XORLW 0x1 +0057c4 e00d BZ 0x57e0 +0057c6 0a02 XORLW 0x2 +0057c8 e001 BZ 0x57cc +0057ca d00a BRA 0x57e0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kSTEPPER_TIMEOUT_TIMING: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Always start over with new timeout value D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057c8 c496 MOVFF 0x496,0x49a g_StepperDisableCountdownS = g_StepperDisableTimeoutS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057ca f49a -0057cc c497 MOVFF 0x497,0x49b -0057ce f49b -0057d0 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 1000u; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057d2 0ee8 MOVLW 0xe8 -0057d4 6f98 MOVWF 0x98,0x1 -0057d6 0e03 MOVLW 0x3 -0057d8 6f99 MOVWF 0x99,0x1 -0057da d00a BRA 0x57f0 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057cc c496 MOVFF 0x496,0x49a g_StepperDisableCountdownS = g_StepperDisableTimeoutS; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057ce f49a +0057d0 c497 MOVFF 0x497,0x49b +0057d2 f49b +0057d4 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 1000u; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057d6 0ee8 MOVLW 0xe8 +0057d8 6f98 MOVWF 0x98,0x1 +0057da 0e03 MOVLW 0x3 +0057dc 6f99 MOVWF 0x99,0x1 +0057de d00a BRA 0x57f4 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c default: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kSTEPPER_TIMEOUT_PRIMED: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kSTEPPER_TIMEOUT_DISABLED: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057dc 0104 MOVLB 0x4 g_StepperDisableState = kSTEPPER_TIMEOUT_PRIMED; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057de 0e01 MOVLW 0x1 -0057e0 6f95 MOVWF 0x95,0x1 +0057e0 0104 MOVLB 0x4 g_StepperDisableState = kSTEPPER_TIMEOUT_PRIMED; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057e2 0e01 MOVLW 0x1 +0057e4 6f95 MOVWF 0x95,0x1 // Note intentional fall-through D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kSTEPPER_TIMEOUT_FIRED: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057e2 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057e4 6b98 CLRF 0x98,0x1 -0057e6 6b99 CLRF 0x99,0x1 -0057e8 0104 MOVLB 0x4 g_StepperDisableCountdownS = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057ea 6b9a CLRF 0x9a,0x1 -0057ec 6b9b CLRF 0x9b,0x1 -0057ee d000 BRA 0x57f0 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057e6 0104 MOVLB 0x4 g_StepperDisableSecondCounter = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057e8 6b98 CLRF 0x98,0x1 +0057ea 6b99 CLRF 0x99,0x1 +0057ec 0104 MOVLB 0x4 g_StepperDisableCountdownS = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057ee 6b9a CLRF 0x9a,0x1 +0057f0 6b9b CLRF 0x9b,0x1 +0057f2 d000 BRA 0x57f4 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057f0 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; // Turn low priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057f2 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; // Turn high priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057f4 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; // Turn low priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057f6 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; // Turn high priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,250,1 or CU,250,0 to turn on/off GPIO ISR timing debug D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057f4 d159 BRA 0x5aa8 else if (250u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0057f6 0efa MOVLW 0xfa -0057f8 6e4e MOVWF 0x4e,0x0 -0057fa 6a4f CLRF 0x4f,0x0 -0057fc 50df MOVF 0xdf,0x0,0x0 -0057fe 184e XORWF 0x4e,0x0,0x0 -005800 e103 BNZ 0x5808 -005802 52de MOVF 0xde,0x1,0x0 -005804 50dd MOVF 0xdd,0x0,0x0 -005806 184f XORWF 0x4f,0x0,0x0 -005808 e11e BNZ 0x5846 +0057f8 d159 BRA 0x5aac else if (250u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0057fa 0efa MOVLW 0xfa +0057fc 6e4e MOVWF 0x4e,0x0 +0057fe 6a4f CLRF 0x4f,0x0 +005800 50df MOVF 0xdf,0x0,0x0 +005802 184e XORWF 0x4e,0x0,0x0 +005804 e103 BNZ 0x580c +005806 52de MOVF 0xde,0x1,0x0 +005808 50dd MOVF 0xdd,0x0,0x0 +00580a 184f XORWF 0x4f,0x0,0x0 +00580c e11e BNZ 0x584a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00580a 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00580c 0f02 ADDLW 0x2 -00580e 6ee9 MOVWF 0xe9,0x0 -005810 cfda MOVFF 0xfda,0xfea -005812 ffea -005814 50ee MOVF 0xee,0x0,0x0 -005816 10ed IORWF 0xed,0x0,0x0 -005818 e102 BNZ 0x581e +00580e 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005810 0f02 ADDLW 0x2 +005812 6ee9 MOVWF 0xe9,0x0 +005814 cfda MOVFF 0xfda,0xfea +005816 ffea +005818 50ee MOVF 0xee,0x0,0x0 +00581a 10ed IORWF 0xed,0x0,0x0 +00581c e102 BNZ 0x5822 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00581a 9209 BCF 0x9,0x1,0x0 bitclr(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00581e 9209 BCF 0x9,0x1,0x0 bitclr(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00581c d013 BRA 0x5844 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00581e 0e01 MOVLW 0x1 -005820 6e4e MOVWF 0x4e,0x0 -005822 6a4f CLRF 0x4f,0x0 -005824 0e02 MOVLW 0x2 -005826 50db MOVF 0xdb,0x0,0x0 -005828 184e XORWF 0x4e,0x0,0x0 -00582a e103 BNZ 0x5832 -00582c 0e03 MOVLW 0x3 -00582e 50db MOVF 0xdb,0x0,0x0 -005830 184f XORWF 0x4f,0x0,0x0 -005832 e106 BNZ 0x5840 +005820 d013 BRA 0x5848 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005822 0e01 MOVLW 0x1 +005824 6e4e MOVWF 0x4e,0x0 +005826 6a4f CLRF 0x4f,0x0 +005828 0e02 MOVLW 0x2 +00582a 50db MOVF 0xdb,0x0,0x0 +00582c 184e XORWF 0x4e,0x0,0x0 +00582e e103 BNZ 0x5836 +005830 0e03 MOVLW 0x3 +005832 50db MOVF 0xdb,0x0,0x0 +005834 184f XORWF 0x4f,0x0,0x0 +005836 e106 BNZ 0x5844 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005834 8209 BSF 0x9,0x1,0x0 bitset(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005836 9295 BCF 0x95,0x1,0x0 TRISDbits.TRISD1 = 0; // D1 high when in ISR D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005838 9095 BCF 0x95,0x0,0x0 TRISDbits.TRISD0 = 0; // D0 high when loading next command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00583a 9292 BCF 0x92,0x1,0x0 TRISAbits.TRISA1 = 0; // A1 when FIFO empty D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00583c 9692 BCF 0x92,0x3,0x0 TRISAbits.TRISA3 = 0; // A3 when servo is moving D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005838 8209 BSF 0x9,0x1,0x0 bitset(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00583a 9295 BCF 0x95,0x1,0x0 TRISDbits.TRISD1 = 0; // D1 high when in ISR D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00583c 9095 BCF 0x95,0x0,0x0 TRISDbits.TRISD0 = 0; // D0 high when loading next command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00583e 9292 BCF 0x92,0x1,0x0 TRISAbits.TRISA1 = 0; // A1 when FIFO empty D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005840 9692 BCF 0x92,0x3,0x0 TRISAbits.TRISA3 = 0; // A3 when servo is moving D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00583e d002 BRA 0x5844 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005842 d002 BRA 0x5848 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005840 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005842 8d84 BSF 0x84,0x6,0x1 +005844 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005846 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,251,1 or CU,251,0 to turn on/off ISR end of move values printing (On RC6) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005844 d131 BRA 0x5aa8 else if (251u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005846 0efb MOVLW 0xfb -005848 6e4e MOVWF 0x4e,0x0 -00584a 6a4f CLRF 0x4f,0x0 -00584c 50df MOVF 0xdf,0x0,0x0 -00584e 184e XORWF 0x4e,0x0,0x0 -005850 e103 BNZ 0x5858 -005852 52de MOVF 0xde,0x1,0x0 -005854 50dd MOVF 0xdd,0x0,0x0 -005856 184f XORWF 0x4f,0x0,0x0 -005858 e12b BNZ 0x58b0 +005848 d131 BRA 0x5aac else if (251u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00584a 0efb MOVLW 0xfb +00584c 6e4e MOVWF 0x4e,0x0 +00584e 6a4f CLRF 0x4f,0x0 +005850 50df MOVF 0xdf,0x0,0x0 +005852 184e XORWF 0x4e,0x0,0x0 +005854 e103 BNZ 0x585c +005856 52de MOVF 0xde,0x1,0x0 +005858 50dd MOVF 0xdd,0x0,0x0 +00585a 184f XORWF 0x4f,0x0,0x0 +00585c e12b BNZ 0x58b4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00585a 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00585c 0f02 ADDLW 0x2 -00585e 6ee9 MOVWF 0xe9,0x0 -005860 cfda MOVFF 0xfda,0xfea -005862 ffea -005864 50ee MOVF 0xee,0x0,0x0 -005866 10ed IORWF 0xed,0x0,0x0 -005868 e103 BNZ 0x5870 +00585e 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005860 0f02 ADDLW 0x2 +005862 6ee9 MOVWF 0xe9,0x0 +005864 cfda MOVFF 0xfda,0xfea +005866 ffea +005868 50ee MOVF 0xee,0x0,0x0 +00586a 10ed IORWF 0xed,0x0,0x0 +00586c e103 BNZ 0x5874 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00586a 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00586c 9409 BCF 0x9,0x2,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00586e 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005870 9409 BCF 0x9,0x2,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00586e d01f BRA 0x58ae else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005870 0e01 MOVLW 0x1 -005872 6e4e MOVWF 0x4e,0x0 -005874 6a4f CLRF 0x4f,0x0 -005876 0e02 MOVLW 0x2 -005878 50db MOVF 0xdb,0x0,0x0 -00587a 184e XORWF 0x4e,0x0,0x0 -00587c e103 BNZ 0x5884 -00587e 0e03 MOVLW 0x3 -005880 50db MOVF 0xdb,0x0,0x0 -005882 184f XORWF 0x4f,0x0,0x0 -005884 e112 BNZ 0x58aa +005872 d01f BRA 0x58b2 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005874 0e01 MOVLW 0x1 +005876 6e4e MOVWF 0x4e,0x0 +005878 6a4f CLRF 0x4f,0x0 +00587a 0e02 MOVLW 0x2 +00587c 50db MOVF 0xdb,0x0,0x0 +00587e 184e XORWF 0x4e,0x0,0x0 +005880 e103 BNZ 0x5888 +005882 0e03 MOVLW 0x3 +005884 50db MOVF 0xdb,0x0,0x0 +005886 184f XORWF 0x4f,0x0,0x0 +005888 e112 BNZ 0x58ae { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005886 8409 BSF 0x9,0x2,0x0 bitset(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005888 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00588a 8409 BSF 0x9,0x2,0x0 bitset(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00588c 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c baud1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_IDLE_CLK_LOW & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_16_BIT_RATE & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_WAKEUP_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_AUTO_OFF D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00588a 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00588c 6ee6 MOVWF 0xe6,0x0 -00588e ec57 CALL 0x98ae,0x0 -005890 f04c -005892 52e5 MOVF 0xe5,0x1,0x0 +00588e 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005890 6ee6 MOVWF 0xe6,0x0 +005892 ec3e CALL 0x987c,0x0 +005894 f04c +005896 52e5 MOVF 0xe5,0x1,0x0 Open1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_TX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_RX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -21977,73 +21984,73 @@ Address Value Disassembly Source USART_EIGHT_BIT & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_CONT_RX & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_BRGH_HIGH & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00589a 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00589c 6ee6 MOVWF 0xe6,0x0 -005894 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005896 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005898 6ae6 CLRF 0xe6,0x0 -00589e ec51 CALL 0x96a2,0x0 -0058a0 f04b -0058a2 52e5 MOVF 0xe5,0x1,0x0 -0058a4 52e5 MOVF 0xe5,0x1,0x0 +00589e 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058a0 6ee6 MOVWF 0xe6,0x0 +005898 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00589a 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00589c 6ae6 CLRF 0xe6,0x0 +0058a2 ec38 CALL 0x9670,0x0 +0058a4 f04b 0058a6 52e5 MOVF 0xe5,0x1,0x0 +0058a8 52e5 MOVF 0xe5,0x1,0x0 +0058aa 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058a8 d002 BRA 0x58ae else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058ac d002 BRA 0x58b2 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058aa 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058ac 8d84 BSF 0x84,0x6,0x1 +0058ae 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058b0 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,252,1 or CU,252,0 to turn on/off every ISR tick values printing (on RC6) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058ae d0fc BRA 0x5aa8 else if (252u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058b0 0efc MOVLW 0xfc -0058b2 6e4e MOVWF 0x4e,0x0 -0058b4 6a4f CLRF 0x4f,0x0 -0058b6 50df MOVF 0xdf,0x0,0x0 -0058b8 184e XORWF 0x4e,0x0,0x0 -0058ba e103 BNZ 0x58c2 -0058bc 52de MOVF 0xde,0x1,0x0 -0058be 50dd MOVF 0xdd,0x0,0x0 -0058c0 184f XORWF 0x4f,0x0,0x0 -0058c2 e12b BNZ 0x591a +0058b2 d0fc BRA 0x5aac else if (252u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058b4 0efc MOVLW 0xfc +0058b6 6e4e MOVWF 0x4e,0x0 +0058b8 6a4f CLRF 0x4f,0x0 +0058ba 50df MOVF 0xdf,0x0,0x0 +0058bc 184e XORWF 0x4e,0x0,0x0 +0058be e103 BNZ 0x58c6 +0058c0 52de MOVF 0xde,0x1,0x0 +0058c2 50dd MOVF 0xdd,0x0,0x0 +0058c4 184f XORWF 0x4f,0x0,0x0 +0058c6 e12b BNZ 0x591e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058c4 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058c6 0f02 ADDLW 0x2 -0058c8 6ee9 MOVWF 0xe9,0x0 -0058ca cfda MOVFF 0xfda,0xfea -0058cc ffea -0058ce 50ee MOVF 0xee,0x0,0x0 -0058d0 10ed IORWF 0xed,0x0,0x0 -0058d2 e103 BNZ 0x58da +0058c8 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058ca 0f02 ADDLW 0x2 +0058cc 6ee9 MOVWF 0xe9,0x0 +0058ce cfda MOVFF 0xfda,0xfea +0058d0 ffea +0058d2 50ee MOVF 0xee,0x0,0x0 +0058d4 10ed IORWF 0xed,0x0,0x0 +0058d6 e103 BNZ 0x58de { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058d4 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058d6 9409 BCF 0x9,0x2,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058d8 9609 BCF 0x9,0x3,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058da 9409 BCF 0x9,0x2,0x0 bitclr(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058d8 d01f BRA 0x5918 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058da 0e01 MOVLW 0x1 -0058dc 6e4e MOVWF 0x4e,0x0 -0058de 6a4f CLRF 0x4f,0x0 -0058e0 0e02 MOVLW 0x2 -0058e2 50db MOVF 0xdb,0x0,0x0 -0058e4 184e XORWF 0x4e,0x0,0x0 -0058e6 e103 BNZ 0x58ee -0058e8 0e03 MOVLW 0x3 -0058ea 50db MOVF 0xdb,0x0,0x0 -0058ec 184f XORWF 0x4f,0x0,0x0 -0058ee e112 BNZ 0x5914 +0058dc d01f BRA 0x591c else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058de 0e01 MOVLW 0x1 +0058e0 6e4e MOVWF 0x4e,0x0 +0058e2 6a4f CLRF 0x4f,0x0 +0058e4 0e02 MOVLW 0x2 +0058e6 50db MOVF 0xdb,0x0,0x0 +0058e8 184e XORWF 0x4e,0x0,0x0 +0058ea e103 BNZ 0x58f2 +0058ec 0e03 MOVLW 0x3 +0058ee 50db MOVF 0xdb,0x0,0x0 +0058f0 184f XORWF 0x4f,0x0,0x0 +0058f2 e112 BNZ 0x5918 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058f0 8609 BSF 0x9,0x3,0x0 bitset(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058f2 8409 BSF 0x9,0x2,0x0 bitset(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058f4 8609 BSF 0x9,0x3,0x0 bitset(TestMode, TEST_MODE_USART_ISR_FULL_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058f6 8409 BSF 0x9,0x2,0x0 bitset(TestMode, TEST_MODE_USART_ISR_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c baud1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_IDLE_CLK_LOW & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_16_BIT_RATE & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_WAKEUP_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_AUTO_OFF D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058f4 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0058f6 6ee6 MOVWF 0xe6,0x0 -0058f8 ec57 CALL 0x98ae,0x0 -0058fa f04c -0058fc 52e5 MOVF 0xe5,0x1,0x0 +0058f8 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0058fa 6ee6 MOVWF 0xe6,0x0 +0058fc ec3e CALL 0x987c,0x0 +0058fe f04c +005900 52e5 MOVF 0xe5,0x1,0x0 Open1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_TX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_RX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22051,71 +22058,71 @@ Address Value Disassembly Source USART_EIGHT_BIT & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_CONT_RX & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_BRGH_HIGH & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005904 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005906 6ee6 MOVWF 0xe6,0x0 -0058fe 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005900 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005902 6ae6 CLRF 0xe6,0x0 -005908 ec51 CALL 0x96a2,0x0 -00590a f04b -00590c 52e5 MOVF 0xe5,0x1,0x0 -00590e 52e5 MOVF 0xe5,0x1,0x0 +005908 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00590a 6ee6 MOVWF 0xe6,0x0 +005902 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005904 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005906 6ae6 CLRF 0xe6,0x0 +00590c ec38 CALL 0x9670,0x0 +00590e f04b 005910 52e5 MOVF 0xe5,0x1,0x0 +005912 52e5 MOVF 0xe5,0x1,0x0 +005914 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005912 d002 BRA 0x5918 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005916 d002 BRA 0x591c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005914 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005916 8d84 BSF 0x84,0x6,0x1 +005918 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00591a 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,253,1 or CU,253,0 to turn on/off move command extra debug printing (on RC6) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005918 d0c7 BRA 0x5aa8 else if (253u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00591a 0efd MOVLW 0xfd -00591c 6e4e MOVWF 0x4e,0x0 -00591e 6a4f CLRF 0x4f,0x0 -005920 50df MOVF 0xdf,0x0,0x0 -005922 184e XORWF 0x4e,0x0,0x0 -005924 e103 BNZ 0x592c -005926 52de MOVF 0xde,0x1,0x0 -005928 50dd MOVF 0xdd,0x0,0x0 -00592a 184f XORWF 0x4f,0x0,0x0 -00592c e129 BNZ 0x5980 +00591c d0c7 BRA 0x5aac else if (253u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00591e 0efd MOVLW 0xfd +005920 6e4e MOVWF 0x4e,0x0 +005922 6a4f CLRF 0x4f,0x0 +005924 50df MOVF 0xdf,0x0,0x0 +005926 184e XORWF 0x4e,0x0,0x0 +005928 e103 BNZ 0x5930 +00592a 52de MOVF 0xde,0x1,0x0 +00592c 50dd MOVF 0xdd,0x0,0x0 +00592e 184f XORWF 0x4f,0x0,0x0 +005930 e129 BNZ 0x5984 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00592e 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005930 0f02 ADDLW 0x2 -005932 6ee9 MOVWF 0xe9,0x0 -005934 cfda MOVFF 0xfda,0xfea -005936 ffea -005938 50ee MOVF 0xee,0x0,0x0 -00593a 10ed IORWF 0xed,0x0,0x0 -00593c e102 BNZ 0x5942 +005932 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005934 0f02 ADDLW 0x2 +005936 6ee9 MOVWF 0xe9,0x0 +005938 cfda MOVFF 0xfda,0xfea +00593a ffea +00593c 50ee MOVF 0xee,0x0,0x0 +00593e 10ed IORWF 0xed,0x0,0x0 +005940 e102 BNZ 0x5946 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00593e 9809 BCF 0x9,0x4,0x0 bitclr(TestMode, TEST_MODE_USART_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005942 9809 BCF 0x9,0x4,0x0 bitclr(TestMode, TEST_MODE_USART_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005940 d01e BRA 0x597e else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005942 0e01 MOVLW 0x1 -005944 6e4e MOVWF 0x4e,0x0 -005946 6a4f CLRF 0x4f,0x0 -005948 0e02 MOVLW 0x2 -00594a 50db MOVF 0xdb,0x0,0x0 -00594c 184e XORWF 0x4e,0x0,0x0 -00594e e103 BNZ 0x5956 -005950 0e03 MOVLW 0x3 -005952 50db MOVF 0xdb,0x0,0x0 -005954 184f XORWF 0x4f,0x0,0x0 -005956 e111 BNZ 0x597a +005944 d01e BRA 0x5982 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005946 0e01 MOVLW 0x1 +005948 6e4e MOVWF 0x4e,0x0 +00594a 6a4f CLRF 0x4f,0x0 +00594c 0e02 MOVLW 0x2 +00594e 50db MOVF 0xdb,0x0,0x0 +005950 184e XORWF 0x4e,0x0,0x0 +005952 e103 BNZ 0x595a +005954 0e03 MOVLW 0x3 +005956 50db MOVF 0xdb,0x0,0x0 +005958 184f XORWF 0x4f,0x0,0x0 +00595a e111 BNZ 0x597e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005958 8809 BSF 0x9,0x4,0x0 bitset(TestMode, TEST_MODE_USART_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00595c 8809 BSF 0x9,0x4,0x0 bitset(TestMode, TEST_MODE_USART_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c baud1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_IDLE_CLK_LOW & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_16_BIT_RATE & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_WAKEUP_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c BAUD_AUTO_OFF D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00595a 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00595c 6ee6 MOVWF 0xe6,0x0 -00595e ec57 CALL 0x98ae,0x0 -005960 f04c -005962 52e5 MOVF 0xe5,0x1,0x0 +00595e 0eec MOVLW 0xec ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005960 6ee6 MOVWF 0xe6,0x0 +005962 ec3e CALL 0x987c,0x0 +005964 f04c +005966 52e5 MOVF 0xe5,0x1,0x0 Open1USART( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_TX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_RX_INT_OFF & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22123,47 +22130,45 @@ Address Value Disassembly Source USART_EIGHT_BIT & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_CONT_RX & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USART_BRGH_HIGH & D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00596a 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00596c 6ee6 MOVWF 0xe6,0x0 -005964 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005966 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005968 6ae6 CLRF 0xe6,0x0 -00596e ec51 CALL 0x96a2,0x0 -005970 f04b -005972 52e5 MOVF 0xe5,0x1,0x0 -005974 52e5 MOVF 0xe5,0x1,0x0 +00596e 0e1c MOVLW 0x1c USART_ADDEN_OFF, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005970 6ee6 MOVWF 0xe6,0x0 +005968 0e02 MOVLW 0x2 2 // At 48 MHz, this creates 4 Mbaud output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00596a 6ee6 MOVWF 0xe6,0x0 ); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00596c 6ae6 CLRF 0xe6,0x0 +005972 ec38 CALL 0x9670,0x0 +005974 f04b 005976 52e5 MOVF 0xe5,0x1,0x0 +005978 52e5 MOVF 0xe5,0x1,0x0 +00597a 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005978 d002 BRA 0x597e else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00597c d002 BRA 0x5982 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00597a 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00597c 8d84 BSF 0x84,0x6,0x1 +00597e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005980 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,254 turns on 'lock up mode' for measuring true ISR timing by cycling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // I/O pin on and off as fast as possible, then breaks in that I/O toggle D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // can be seen for the ISR and measured. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00597e d094 BRA 0x5aa8 else if (254u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005980 0efe MOVLW 0xfe -005982 6e4e MOVWF 0x4e,0x0 -005984 6a4f CLRF 0x4f,0x0 -005986 50df MOVF 0xdf,0x0,0x0 -005988 184e XORWF 0x4e,0x0,0x0 -00598a e103 BNZ 0x5992 -00598c 52de MOVF 0xde,0x1,0x0 -00598e 50dd MOVF 0xdd,0x0,0x0 -005990 184f XORWF 0x4f,0x0,0x0 -005992 e11a BNZ 0x59c8 +005982 d094 BRA 0x5aac else if (254u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005984 0efe MOVLW 0xfe +005986 6e4e MOVWF 0x4e,0x0 +005988 6a4f CLRF 0x4f,0x0 +00598a 50df MOVF 0xdf,0x0,0x0 +00598c 184e XORWF 0x4e,0x0,0x0 +00598e e103 BNZ 0x5996 +005990 52de MOVF 0xde,0x1,0x0 +005992 50dd MOVF 0xdd,0x0,0x0 +005994 184f XORWF 0x4f,0x0,0x0 +005996 e11a BNZ 0x59cc { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005994 8209 BSF 0x9,0x1,0x0 bitset(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005996 9295 BCF 0x95,0x1,0x0 TRISDbits.TRISD1 = 0; // D1 high when in ISR D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005998 9095 BCF 0x95,0x0,0x0 TRISDbits.TRISD0 = 0; // D0 high when loading next command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00599a 9292 BCF 0x92,0x1,0x0 TRISAbits.TRISA1 = 0; // A1 when FIFO empty D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059c4 d7eb BRA 0x599c while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005998 8209 BSF 0x9,0x1,0x0 bitset(TestMode, TEST_MODE_GPIO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00599a 9295 BCF 0x95,0x1,0x0 TRISDbits.TRISD1 = 0; // D1 high when in ISR D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00599c 9095 BCF 0x95,0x0,0x0 TRISDbits.TRISD0 = 0; // D0 high when loading next command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00599e 9292 BCF 0x92,0x1,0x0 TRISAbits.TRISA1 = 0; // A1 when FIFO empty D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059c8 d7eb BRA 0x59a0 while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c _asm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00599c 908c BCF 0x8c,0x0,0x0 BCF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00599e 808c BSF 0x8c,0x0,0x0 BSF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0059a0 908c BCF 0x8c,0x0,0x0 BCF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0059a2 808c BSF 0x8c,0x0,0x0 BSF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0059a4 908c BCF 0x8c,0x0,0x0 BCF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22182,171 +22187,173 @@ Address Value Disassembly Source 0059be 808c BSF 0x8c,0x0,0x0 BSF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0059c0 908c BCF 0x8c,0x0,0x0 BCF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0059c2 808c BSF 0x8c,0x0,0x0 BSF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059c4 908c BCF 0x8c,0x0,0x0 BCF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059c6 808c BSF 0x8c,0x0,0x0 BSF 0x8c,0x0,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,255,1 or CU,255,0 to turn on/off command parsing debug printing on USB D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059c6 d070 BRA 0x5aa8 else if (255u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059c8 684e SETF 0x4e,0x0 -0059ca 6a4f CLRF 0x4f,0x0 -0059cc 50df MOVF 0xdf,0x0,0x0 -0059ce 184e XORWF 0x4e,0x0,0x0 -0059d0 e103 BNZ 0x59d8 -0059d2 52de MOVF 0xde,0x1,0x0 -0059d4 50dd MOVF 0xdd,0x0,0x0 -0059d6 184f XORWF 0x4f,0x0,0x0 -0059d8 e11a BNZ 0x5a0e +0059ca d070 BRA 0x5aac else if (255u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059cc 684e SETF 0x4e,0x0 +0059ce 6a4f CLRF 0x4f,0x0 +0059d0 50df MOVF 0xdf,0x0,0x0 +0059d2 184e XORWF 0x4e,0x0,0x0 +0059d4 e103 BNZ 0x59dc +0059d6 52de MOVF 0xde,0x1,0x0 +0059d8 50dd MOVF 0xdd,0x0,0x0 +0059da 184f XORWF 0x4f,0x0,0x0 +0059dc e11a BNZ 0x5a12 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059da 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059dc 0f02 ADDLW 0x2 -0059de 6ee9 MOVWF 0xe9,0x0 -0059e0 cfda MOVFF 0xfda,0xfea -0059e2 ffea -0059e4 50ee MOVF 0xee,0x0,0x0 -0059e6 10ed IORWF 0xed,0x0,0x0 -0059e8 e102 BNZ 0x59ee +0059de 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059e0 0f02 ADDLW 0x2 +0059e2 6ee9 MOVWF 0xe9,0x0 +0059e4 cfda MOVFF 0xfda,0xfea +0059e6 ffea +0059e8 50ee MOVF 0xee,0x0,0x0 +0059ea 10ed IORWF 0xed,0x0,0x0 +0059ec e102 BNZ 0x59f2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059ea 9a09 BCF 0x9,0x5,0x0 bitclr(TestMode, TEST_MODE_DEBUG_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059ee 9a09 BCF 0x9,0x5,0x0 bitclr(TestMode, TEST_MODE_DEBUG_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059ec d00f BRA 0x5a0c else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0059ee 0e01 MOVLW 0x1 -0059f0 6e4e MOVWF 0x4e,0x0 -0059f2 6a4f CLRF 0x4f,0x0 -0059f4 0e02 MOVLW 0x2 -0059f6 50db MOVF 0xdb,0x0,0x0 -0059f8 184e XORWF 0x4e,0x0,0x0 -0059fa e103 BNZ 0x5a02 -0059fc 0e03 MOVLW 0x3 -0059fe 50db MOVF 0xdb,0x0,0x0 -005a00 184f XORWF 0x4f,0x0,0x0 -005a02 e102 BNZ 0x5a08 +0059f0 d00f BRA 0x5a10 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0059f2 0e01 MOVLW 0x1 +0059f4 6e4e MOVWF 0x4e,0x0 +0059f6 6a4f CLRF 0x4f,0x0 +0059f8 0e02 MOVLW 0x2 +0059fa 50db MOVF 0xdb,0x0,0x0 +0059fc 184e XORWF 0x4e,0x0,0x0 +0059fe e103 BNZ 0x5a06 +005a00 0e03 MOVLW 0x3 +005a02 50db MOVF 0xdb,0x0,0x0 +005a04 184f XORWF 0x4f,0x0,0x0 +005a06 e102 BNZ 0x5a0c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a04 8a09 BSF 0x9,0x5,0x0 bitset(TestMode, TEST_MODE_DEBUG_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a08 8a09 BSF 0x9,0x5,0x0 bitset(TestMode, TEST_MODE_DEBUG_COMMAND_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a06 d002 BRA 0x5a0c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a0a d002 BRA 0x5a10 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a08 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a0a 8d84 BSF 0x84,0x6,0x1 +005a0c 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a0e 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,256,1 or CU,256,0 to turn on/off sending parsed commands to FIFO D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a0c d04d BRA 0x5aa8 else if (256u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a0e 6a4e CLRF 0x4e,0x0 -005a10 0e01 MOVLW 0x1 -005a12 6e4f MOVWF 0x4f,0x0 -005a14 50df MOVF 0xdf,0x0,0x0 -005a16 184e XORWF 0x4e,0x0,0x0 -005a18 e103 BNZ 0x5a20 -005a1a 52de MOVF 0xde,0x1,0x0 -005a1c 50dd MOVF 0xdd,0x0,0x0 -005a1e 184f XORWF 0x4f,0x0,0x0 -005a20 e11a BNZ 0x5a56 +005a10 d04d BRA 0x5aac else if (256u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a12 6a4e CLRF 0x4e,0x0 +005a14 0e01 MOVLW 0x1 +005a16 6e4f MOVWF 0x4f,0x0 +005a18 50df MOVF 0xdf,0x0,0x0 +005a1a 184e XORWF 0x4e,0x0,0x0 +005a1c e103 BNZ 0x5a24 +005a1e 52de MOVF 0xde,0x1,0x0 +005a20 50dd MOVF 0xdd,0x0,0x0 +005a22 184f XORWF 0x4f,0x0,0x0 +005a24 e11a BNZ 0x5a5a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a22 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a24 0f02 ADDLW 0x2 -005a26 6ee9 MOVWF 0xe9,0x0 -005a28 cfda MOVFF 0xfda,0xfea -005a2a ffea -005a2c 50ee MOVF 0xee,0x0,0x0 -005a2e 10ed IORWF 0xed,0x0,0x0 -005a30 e102 BNZ 0x5a36 +005a26 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a28 0f02 ADDLW 0x2 +005a2a 6ee9 MOVWF 0xe9,0x0 +005a2c cfda MOVFF 0xfda,0xfea +005a2e ffea +005a30 50ee MOVF 0xee,0x0,0x0 +005a32 10ed IORWF 0xed,0x0,0x0 +005a34 e102 BNZ 0x5a3a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a32 9c09 BCF 0x9,0x6,0x0 bitclr(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a36 9c09 BCF 0x9,0x6,0x0 bitclr(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a34 d00f BRA 0x5a54 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a36 0e01 MOVLW 0x1 -005a38 6e4e MOVWF 0x4e,0x0 -005a3a 6a4f CLRF 0x4f,0x0 -005a3c 0e02 MOVLW 0x2 -005a3e 50db MOVF 0xdb,0x0,0x0 -005a40 184e XORWF 0x4e,0x0,0x0 -005a42 e103 BNZ 0x5a4a -005a44 0e03 MOVLW 0x3 -005a46 50db MOVF 0xdb,0x0,0x0 -005a48 184f XORWF 0x4f,0x0,0x0 -005a4a e102 BNZ 0x5a50 +005a38 d00f BRA 0x5a58 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a3a 0e01 MOVLW 0x1 +005a3c 6e4e MOVWF 0x4e,0x0 +005a3e 6a4f CLRF 0x4f,0x0 +005a40 0e02 MOVLW 0x2 +005a42 50db MOVF 0xdb,0x0,0x0 +005a44 184e XORWF 0x4e,0x0,0x0 +005a46 e103 BNZ 0x5a4e +005a48 0e03 MOVLW 0x3 +005a4a 50db MOVF 0xdb,0x0,0x0 +005a4c 184f XORWF 0x4f,0x0,0x0 +005a4e e102 BNZ 0x5a54 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a4c 8c09 BSF 0x9,0x6,0x0 bitset(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a50 8c09 BSF 0x9,0x6,0x0 bitset(TestMode, TEST_MODE_DEBUG_BLOCK_FIFO_NUM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a4e d002 BRA 0x5a54 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a52 d002 BRA 0x5a58 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a50 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a52 8d84 BSF 0x84,0x6,0x1 +005a54 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a56 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,257,1 or CU,257,0 to turn on/off RC0 as indicator of command is parsing D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a54 d029 BRA 0x5aa8 else if (257u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a56 0e01 MOVLW 0x1 -005a58 6e4e MOVWF 0x4e,0x0 +005a58 d029 BRA 0x5aac else if (257u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 005a5a 0e01 MOVLW 0x1 -005a5c 6e4f MOVWF 0x4f,0x0 -005a5e 50df MOVF 0xdf,0x0,0x0 -005a60 184e XORWF 0x4e,0x0,0x0 -005a62 e103 BNZ 0x5a6a -005a64 52de MOVF 0xde,0x1,0x0 -005a66 50dd MOVF 0xdd,0x0,0x0 -005a68 184f XORWF 0x4f,0x0,0x0 -005a6a e11c BNZ 0x5aa4 +005a5c 6e4e MOVWF 0x4e,0x0 +005a5e 0e01 MOVLW 0x1 +005a60 6e4f MOVWF 0x4f,0x0 +005a62 50df MOVF 0xdf,0x0,0x0 +005a64 184e XORWF 0x4e,0x0,0x0 +005a66 e103 BNZ 0x5a6e +005a68 52de MOVF 0xde,0x1,0x0 +005a6a 50dd MOVF 0xdd,0x0,0x0 +005a6c 184f XORWF 0x4f,0x0,0x0 +005a6e e11c BNZ 0x5aa8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a6c 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a6e 0f02 ADDLW 0x2 -005a70 6ee9 MOVWF 0xe9,0x0 -005a72 cfda MOVFF 0xfda,0xfea -005a74 ffea -005a76 50ee MOVF 0xee,0x0,0x0 -005a78 10ed IORWF 0xed,0x0,0x0 -005a7a e103 BNZ 0x5a82 +005a70 50d9 MOVF 0xd9,0x0,0x0 if (0 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a72 0f02 ADDLW 0x2 +005a74 6ee9 MOVWF 0xe9,0x0 +005a76 cfda MOVFF 0xfda,0xfea +005a78 ffea +005a7a 50ee MOVF 0xee,0x0,0x0 +005a7c 10ed IORWF 0xed,0x0,0x0 +005a7e e103 BNZ 0x5a86 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a7c 9009 BCF 0x9,0x0,0x0 bitclrzero(TestMode); // TEST_MODE_PARSING_COMMAND_NUM D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a7e 8094 BSF 0x94,0x0,0x0 TRISCbits.TRISC0 = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a80 9009 BCF 0x9,0x0,0x0 bitclrzero(TestMode); // TEST_MODE_PARSING_COMMAND_NUM D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a82 8094 BSF 0x94,0x0,0x0 TRISCbits.TRISC0 = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a80 d010 BRA 0x5aa2 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a82 0e01 MOVLW 0x1 -005a84 6e4e MOVWF 0x4e,0x0 -005a86 6a4f CLRF 0x4f,0x0 -005a88 0e02 MOVLW 0x2 -005a8a 50db MOVF 0xdb,0x0,0x0 -005a8c 184e XORWF 0x4e,0x0,0x0 -005a8e e103 BNZ 0x5a96 -005a90 0e03 MOVLW 0x3 -005a92 50db MOVF 0xdb,0x0,0x0 -005a94 184f XORWF 0x4f,0x0,0x0 -005a96 e103 BNZ 0x5a9e +005a84 d010 BRA 0x5aa6 else if (1 == paramater_value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a86 0e01 MOVLW 0x1 +005a88 6e4e MOVWF 0x4e,0x0 +005a8a 6a4f CLRF 0x4f,0x0 +005a8c 0e02 MOVLW 0x2 +005a8e 50db MOVF 0xdb,0x0,0x0 +005a90 184e XORWF 0x4e,0x0,0x0 +005a92 e103 BNZ 0x5a9a +005a94 0e03 MOVLW 0x3 +005a96 50db MOVF 0xdb,0x0,0x0 +005a98 184f XORWF 0x4f,0x0,0x0 +005a9a e103 BNZ 0x5aa2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a98 8009 BSF 0x9,0x0,0x0 bitsetzero(TestMode); // TEST_MODE_PARSING_COMMAND_NUM D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a9a 9094 BCF 0x94,0x0,0x0 TRISCbits.TRISC0 = 0; // C0 high when parsing command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a9c 8009 BSF 0x9,0x0,0x0 bitsetzero(TestMode); // TEST_MODE_PARSING_COMMAND_NUM D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005a9e 9094 BCF 0x94,0x0,0x0 TRISCbits.TRISC0 = 0; // C0 high when parsing command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a9c d002 BRA 0x5aa2 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aa0 d002 BRA 0x5aa6 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005a9e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aa0 8d84 BSF 0x84,0x6,0x1 +005aa2 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aa4 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aa2 d002 BRA 0x5aa8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aa6 d002 BRA 0x5aac else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // parameter_number is not understood D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aa4 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aa6 8d84 BSF 0x84,0x6,0x1 +005aa8 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aaa 8d84 BSF 0x84,0x6,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aa8 6ae6 CLRF 0xe6,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aaa dcb7 RCALL 0x541a -005aac 52e5 MOVF 0xe5,0x1,0x0 -005aae 0e04 MOVLW 0x4 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ab0 5ce1 SUBWF 0xe1,0x0,0x0 -005ab2 e202 BC 0x5ab8 -005ab4 6ae1 CLRF 0xe1,0x0 -005ab6 52e5 MOVF 0xe5,0x1,0x0 -005ab8 6ee1 MOVWF 0xe1,0x0 +005aac 6ae6 CLRF 0xe6,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aae dcb7 RCALL 0x541e +005ab0 52e5 MOVF 0xe5,0x1,0x0 +005ab2 0e04 MOVLW 0x4 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ab4 5ce1 SUBWF 0xe1,0x0,0x0 +005ab6 e202 BC 0x5abc +005ab8 6ae1 CLRF 0xe1,0x0 005aba 52e5 MOVF 0xe5,0x1,0x0 -005abc cfe7 MOVFF 0xfe7,0xfd9 -005abe ffd9 -005ac0 0012 RETURN 0x0 +005abc 6ee1 MOVWF 0xe1,0x0 +005abe 52e5 MOVF 0xe5,0x1,0x0 +005ac0 cfe7 MOVFF 0xfe7,0xfd9 +005ac2 ffd9 +005ac4 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU is "Query Utility" and provides a simple mechanism for the PC reading D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // certain values from the EBB. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "QU," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Returns: Some value(s), dependant on what parameter_number is. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - // D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + // D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 1 QU,1,XX where XX is a value from 00 to FF, representing the contents of D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // the PortB pins at the time of the last limit switch trigger D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 2 QU,2,ddd to read back the maximum supported FIFO length for this version D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22358,238 +22365,204 @@ Address Value Disassembly Source // 61 QU,61,dddddd prints out current value of g_StepperDisableTimeoutS D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 200 QU,200,dddddddddd,dddddddddd prints out the current value of acc_union[0] and acc_union[1] (the accumulators) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ac2 ec50 CALL 0x6ea0,0x0 void parse_QU_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ac4 f037 +005ac6 ec39 CALL 0x6e72,0x0 void parse_QU_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ac8 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 parameter_number; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ac6 ec63 CALL 0x6ec6,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ac8 f037 +005aca ec4c CALL 0x6e98,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005acc f037 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aca 0e01 MOVLW 0x1 extract_number(kUCHAR, ¶meter_number, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005acc ec99 CALL 0x6b32,0x0 -005ace f035 +005ace 0e01 MOVLW 0x1 extract_number(kUCHAR, ¶meter_number, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ad0 ec87 CALL 0x6b0e,0x0 +005ad2 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ad0 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ad2 5184 MOVF 0x84,0x0,0x1 -005ad4 e001 BZ 0x5ad8 -005ad6 d08a BRA 0x5bec +005ad4 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ad6 5184 MOVF 0x84,0x0,0x1 +005ad8 e176 BNZ 0x5bc6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU,1 to read back current value of gLimitSwitchPortB D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Returns "QU,1,XX" where XX is two digit hex value from 00 to FF D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ad8 04df DECF 0xdf,0x0,0x0 if (1u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ada e108 BNZ 0x5aec +005ada 04df DECF 0xdf,0x0,0x0 if (1u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005adc e106 BNZ 0x5aea { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005adc ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ade f036 -006b74 6ee6 MOVWF 0xe6,0x0 ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b76 ec83 CALL 0x4d06,0x0 -006b78 f026 -006b7a 52e5 MOVF 0xe5,0x1,0x0 -006b7c 0012 RETURN 0x0 -005ae0 0e02 MOVLW 0x2 ebb_print_hex(gLimitSwitchPortB, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ae2 6ee6 MOVWF 0xe6,0x0 -005ae4 c4c9 MOVFF 0x4c9,0x4e -005ae6 f04e -005ae8 6a4f CLRF 0x4f,0x0 +005ade 0e02 MOVLW 0x2 ebb_print_hex(gLimitSwitchPortB, 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ae0 6ee6 MOVWF 0xe6,0x0 +005ae2 c4c9 MOVFF 0x4c9,0x4e +005ae4 f04e +005ae6 6a4f CLRF 0x4f,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU,2 to read back the maximum supported FIFO length for this version D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Returns "QU,2,ddd" where ddd is one to three digit decimal value from 0 to 255 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aea d01e BRA 0x5b28 else if (2u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005aec 0e02 MOVLW 0x2 -005aee ecf3 CALL 0x6be6,0x0 -005af0 f035 -005af2 e108 BNZ 0x5b04 +005ae8 d018 BRA 0x5b1a else if (2u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005aea 0e02 MOVLW 0x2 +005aec ecdf CALL 0x6bbe,0x0 +005aee f035 +005af0 e106 BNZ 0x5afe { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005af4 ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005af6 f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005af8 0e20 MOVLW 0x20 ebb_print_uint(COMMAND_FIFO_MAX_LENGTH); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005afa 6ee6 MOVWF 0xe6,0x0 -005afc 6ae6 CLRF 0xe6,0x0 -005afe 6ae6 CLRF 0xe6,0x0 -005b00 6ae6 CLRF 0xe6,0x0 +005af2 0e20 MOVLW 0x20 ebb_print_uint(COMMAND_FIFO_MAX_LENGTH); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005af4 6ee6 MOVWF 0xe6,0x0 +005af6 6ae6 CLRF 0xe6,0x0 +005af8 6ae6 CLRF 0xe6,0x0 +005afa 6ae6 CLRF 0xe6,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU,3 to read back the current FIFO length D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Returns "QU,3,ddd" where ddd is one to three digit decimal value from 0 to 255 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b02 d04c BRA 0x5b9c else if (3u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b04 0e03 MOVLW 0x3 -005b06 ecf3 CALL 0x6be6,0x0 -005b08 f035 -005b0a e104 BNZ 0x5b14 +005afc d03e BRA 0x5b7a else if (3u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005afe 0e03 MOVLW 0x3 +005b00 ecdf CALL 0x6bbe,0x0 +005b02 f035 +005b04 e102 BNZ 0x5b0a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b0c ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b0e f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b10 5013 MOVF 0x13,0x0,0x0 ebb_print_uint(gCurrentFIFOLength); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b06 5013 MOVF 0x13,0x0,0x0 ebb_print_uint(gCurrentFIFOLength); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QU,4 prints out current stack high water value D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b12 d026 BRA 0x5b60 else if (4u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b14 0e04 MOVLW 0x4 -005b16 ecf3 CALL 0x6be6,0x0 -005b18 f035 -005b1a e109 BNZ 0x5b2e +005b08 d020 BRA 0x5b4a else if (4u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b0a 0e04 MOVLW 0x4 +005b0c ecdf CALL 0x6bbe,0x0 +005b0e f035 +005b10 e107 BNZ 0x5b20 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b1c ec34 CALL 0x4868,0x0 check_high_water(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b1e f024 -005b20 ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b22 f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b24 ecd7 CALL 0x6dae,0x0 ebb_print_hex(gStackHighWater, 3); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b26 f036 -005b28 ecbf CALL 0x6b7e,0x0 -005b2a f035 -006dae 0e03 MOVLW 0x3 -006db0 6ee6 MOVWF 0xe6,0x0 -006db2 c4cd MOVFF 0x4cd,0x4e -006db4 f04e -006db6 c4ce MOVFF 0x4ce,0x4f -006db8 f04f -006dba 0012 RETURN 0x0 +005b12 ec34 CALL 0x4868,0x0 check_high_water(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b14 f024 +005b16 ecc3 CALL 0x6d86,0x0 ebb_print_hex(gStackHighWater, 3); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b18 f036 +005b1a ecab CALL 0x6b56,0x0 +005b1c f035 +006d86 0e03 MOVLW 0x3 +006d88 6ee6 MOVWF 0xe6,0x0 +006d8a c4cd MOVFF 0x4cd,0x4e +006d8c f04e +006d8e c4ce MOVFF 0x4ce,0x4f +006d90 f04f +006d92 0012 RETURN 0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,5 prints out current stack high water value and resets it to zero D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b2c d059 BRA 0x5be0 else if (5u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b2e 0e05 MOVLW 0x5 -005b30 ecf3 CALL 0x6be6,0x0 -005b32 f035 -005b34 e10e BNZ 0x5b52 +005b1e d04d BRA 0x5bba else if (5u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b20 0e05 MOVLW 0x5 +005b22 ecdf CALL 0x6bbe,0x0 +005b24 f035 +005b26 e10c BNZ 0x5b40 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b36 ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b38 f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b3a ecd7 CALL 0x6dae,0x0 ebb_print_hex(gStackHighWater, 3); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b3c f036 -005b3e ecbf CALL 0x6b7e,0x0 -005b40 f035 -006b7e 6a50 CLRF 0x50,0x0 -006b80 6a51 CLRF 0x51,0x0 -006b82 da6a RCALL 0x7058 -006b84 ef98 GOTO 0x6f30 -006b86 f037 -005b42 ec9d CALL 0x6b3a,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b44 f035 -005b46 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b48 0104 MOVLB 0x4 gStackHighWater = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b4a 6bcd CLRF 0xcd,0x1 -005b4c 6bce CLRF 0xce,0x1 -005b4e 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; // Turn low priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b28 ecc3 CALL 0x6d86,0x0 ebb_print_hex(gStackHighWater, 3); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b2a f036 +005b2c ecab CALL 0x6b56,0x0 +005b2e f035 +006b56 da48 RCALL 0x6fe8 +006b58 d940 RCALL 0x6dda +006b5a ef85 GOTO 0x6f0a +006b5c f037 +006fe8 6a50 CLRF 0x50,0x0 +006fea 6a51 CLRF 0x51,0x0 +006fec c04e MOVFF 0x4e,0xfe6 +006fee ffe6 +006ff0 0012 RETURN 0x0 +005b30 ec8e CALL 0x6b1c,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b32 f035 +005b34 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b36 0104 MOVLB 0x4 gStackHighWater = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b38 6bcd CLRF 0xcd,0x1 +005b3a 6bce CLRF 0xce,0x1 +005b3c 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; // Turn low priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // CU,6 prints out the number of commands currently waiting in the FIFO D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b50 d04b BRA 0x5be8 else if (6u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b52 0e06 MOVLW 0x6 -005b54 ecf3 CALL 0x6be6,0x0 -005b56 f035 -005b58 e106 BNZ 0x5b66 +005b3e d041 BRA 0x5bc2 else if (6u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b40 0e06 MOVLW 0x6 +005b42 ecdf CALL 0x6bbe,0x0 +005b44 f035 +005b46 e104 BNZ 0x5b50 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b5a ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b5c f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b5e 500f MOVF 0xf,0x0,0x0 ebb_print_uint(gFIFOLength); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b60 ec1c CALL 0x6c38,0x0 -005b62 f036 +005b48 500f MOVF 0xf,0x0,0x0 ebb_print_uint(gFIFOLength); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b4a ec08 CALL 0x6c10,0x0 +005b4c f036 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 60 QU,60,dddd prints out current value of g_PowerMonitorThresholdADC D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b64 d019 BRA 0x5b98 else if (60u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b66 0e3c MOVLW 0x3c -005b68 ecf3 CALL 0x6be6,0x0 -005b6a f035 -005b6c e107 BNZ 0x5b7c +005b4e d013 BRA 0x5b76 else if (60u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b50 0e3c MOVLW 0x3c +005b52 ecdf CALL 0x6bbe,0x0 +005b54 f035 +005b56 e105 BNZ 0x5b62 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b6e ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b70 f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b72 c492 MOVFF 0x492,0x4e ebb_print_uint(g_PowerMonitorThresholdADC); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b74 f04e -005b76 c493 MOVFF 0x493,0x4f -005b78 f04f +005b58 c492 MOVFF 0x492,0x4e ebb_print_uint(g_PowerMonitorThresholdADC); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b5a f04e +005b5c c493 MOVFF 0x493,0x4f +005b5e f04f print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 61 QU,61,dddddd prints out current value of g_StepperDisableTimeoutS D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b7a d00a BRA 0x5b90 else if (61u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b7c 0e3d MOVLW 0x3d -005b7e ecf3 CALL 0x6be6,0x0 -005b80 f035 -005b82 e10f BNZ 0x5ba2 +005b60 d008 BRA 0x5b72 else if (61u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b62 0e3d MOVLW 0x3d +005b64 ecdf CALL 0x6bbe,0x0 +005b66 f035 +005b68 e10b BNZ 0x5b80 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b84 ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b86 f036 - ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b88 c496 MOVFF 0x496,0x4e ebb_print_uint(g_StepperDisableTimeoutS); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005b8a f04e -005b8c c497 MOVFF 0x497,0x4f -005b8e f04f -005b90 6a50 CLRF 0x50,0x0 -005b92 6a51 CLRF 0x51,0x0 -005b94 c04e MOVFF 0x4e,0xfe6 -005b96 ffe6 -005b98 ec06 CALL 0x6e0c,0x0 -005b9a f037 -005b9c ece6 CALL 0x6fcc,0x0 -005b9e f037 +005b6a c496 MOVFF 0x496,0x4e ebb_print_uint(g_StepperDisableTimeoutS); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b6c f04e +005b6e c497 MOVFF 0x497,0x4f +005b70 f04f +005b72 ecf4 CALL 0x6fe8,0x0 +005b74 f037 +005b76 eced CALL 0x6dda,0x0 +005b78 f036 +005b7a ecd1 CALL 0x6fa2,0x0 +005b7c f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // 200 QU,200,dddddddddd,dddddddddd prints out the current value of acc_union[0] and acc_union[1] (the accumulators) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ba0 d01f BRA 0x5be0 else if (200u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ba2 0ec8 MOVLW 0xc8 -005ba4 ecf3 CALL 0x6be6,0x0 -005ba6 f035 -005ba8 e11e BNZ 0x5be6 +005b7e d01d BRA 0x5bba else if (200u == parameter_number) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b80 0ec8 MOVLW 0xc8 +005b82 ecdf CALL 0x6bbe,0x0 +005b84 f035 +005b86 e11c BNZ 0x5bc0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005baa ecf6 CALL 0x6dec,0x0 ebb_print_uint(parameter_number); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bac f036 -006dec ded2 RCALL 0x6b92 -006dee d8ff RCALL 0x6fee -006df0 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006df2 efba GOTO 0x6b74 -006df4 f035 -005bae 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bb0 c01e MOVFF 0x1e,0xfe6 ebb_print_uint(acc_union[0].value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b88 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b8a c01e MOVFF 0x1e,0xfe6 ebb_print_uint(acc_union[0].value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005b8c ffe6 +005b8e c01f MOVFF 0x1f,0xfe6 +005b90 ffe6 +005b92 c020 MOVFF 0x20,0xfe6 +005b94 ffe6 +005b96 c021 MOVFF 0x21,0xfe6 +005b98 ffe6 +005b9a ecd1 CALL 0x6fa2,0x0 +005b9c f037 +005b9e 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ba0 ecc7 CALL 0x6b8e,0x0 +005ba2 f035 +005ba4 c022 MOVFF 0x22,0xfe6 ebb_print_uint(acc_union[1].value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ba6 ffe6 +005ba8 c023 MOVFF 0x23,0xfe6 +005baa ffe6 +005bac c024 MOVFF 0x24,0xfe6 +005bae ffe6 +005bb0 c025 MOVFF 0x25,0xfe6 005bb2 ffe6 -005bb4 c01f MOVFF 0x1f,0xfe6 -005bb6 ffe6 -005bb8 c020 MOVFF 0x20,0xfe6 -005bba ffe6 -005bbc c021 MOVFF 0x21,0xfe6 -005bbe ffe6 -005bc0 ece6 CALL 0x6fcc,0x0 -005bc2 f037 -005bc4 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bc6 ecba CALL 0x6b74,0x0 -005bc8 f035 -005bca c022 MOVFF 0x22,0xfe6 ebb_print_uint(acc_union[1].value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bcc ffe6 -005bce c023 MOVFF 0x23,0xfe6 -005bd0 ffe6 -005bd2 c024 MOVFF 0x24,0xfe6 -005bd4 ffe6 -005bd6 c025 MOVFF 0x25,0xfe6 -005bd8 ffe6 -005bda ece6 CALL 0x6fcc,0x0 -005bdc f037 -005bde 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; // Turn high priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005be0 ec9d CALL 0x6b3a,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005be2 f035 +005bb4 ecd1 CALL 0x6fa2,0x0 +005bb6 f037 +005bb8 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; // Turn high priority interrupts on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bba ec8e CALL 0x6b1c,0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bbc f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005be4 d001 BRA 0x5be8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bbe d001 BRA 0x5bc2 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // parameter_number is not understood D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005be6 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bc0 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005be8 ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bea f035 -005bec 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bee efb6 GOTO 0x6b6c -005bf0 f035 +005bc2 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bc4 f035 +005bc6 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bc8 efa7 GOTO 0x6b4e +005bca f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #if PC_PG_T_COMMANDS_ENABLED D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "T" Packet D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22665,206 +22638,206 @@ Address Value Disassembly Source // D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // NOTE: it is up to the user to tell the proper port direction bits to be D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // inputs for the analog channels they wish to use. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bf2 ecb1 CALL 0x6b62,0x0 void parse_C_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bf4 f035 -005bf6 0e05 MOVLW 0x5 -005bf8 ec0d CALL 0x6e1a,0x0 +005bcc eca2 CALL 0x6b44,0x0 void parse_C_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bce f035 +005bd0 0e05 MOVLW 0x5 +005bd2 ecf4 CALL 0x6de8,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char PA, PB, PC, PD, PE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bfa f037 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bd4 f036 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Extract each of the four values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bfc 0e01 MOVLW 0x1 extract_number(kUCHAR, &PA, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005bfe ecca CALL 0x6f94,0x0 -005c00 f037 -005c02 ecce CALL 0x6f9c,0x0 extract_number(kUCHAR, &PB, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c04 f037 +005bd6 0e01 MOVLW 0x1 extract_number(kUCHAR, &PA, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bd8 ecb3 CALL 0x6f66,0x0 +005bda f037 +005bdc ecb7 CALL 0x6f6e,0x0 extract_number(kUCHAR, &PB, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bde f037 extract_number(kUCHAR, &PC, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c06 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &PD, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c08 50d9 MOVF 0xd9,0x0,0x0 -005c0a 0f03 ADDLW 0x3 -005c0c ecfb CALL 0x6df6,0x0 -005c0e f036 -005c10 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &PE, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c12 50d9 MOVF 0xd9,0x0,0x0 -005c14 0f04 ADDLW 0x4 -005c16 ec1e CALL 0x703c,0x0 -005c18 f038 +005be0 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &PD, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005be2 50d9 MOVF 0xd9,0x0,0x0 +005be4 0f03 ADDLW 0x3 +005be6 ece2 CALL 0x6dc4,0x0 +005be8 f036 +005bea 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &PE, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bec 50d9 MOVF 0xd9,0x0,0x0 +005bee 0f04 ADDLW 0x4 +005bf0 ec0a CALL 0x7014,0x0 +005bf2 f038 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c1a e110 BNZ 0x5c3c if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bf4 e110 BNZ 0x5c16 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now write those values to the data direction registers. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c1c 50df MOVF 0xdf,0x0,0x0 TRISA = PA; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c1e 6e92 MOVWF 0x92,0x0 -005c20 0e01 MOVLW 0x1 TRISB = PB; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c22 50db MOVF 0xdb,0x0,0x0 -005c24 6e93 MOVWF 0x93,0x0 -005c26 0e02 MOVLW 0x2 TRISC = PC; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c28 50db MOVF 0xdb,0x0,0x0 -005c2a 6e94 MOVWF 0x94,0x0 -005c2c 0e03 MOVLW 0x3 TRISD = PD; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c2e 50db MOVF 0xdb,0x0,0x0 -005c30 6e95 MOVWF 0x95,0x0 -005c32 0e04 MOVLW 0x4 TRISE = PE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c34 50db MOVF 0xdb,0x0,0x0 -005c36 6e96 MOVWF 0x96,0x0 +005bf6 50df MOVF 0xdf,0x0,0x0 TRISA = PA; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bf8 6e92 MOVWF 0x92,0x0 +005bfa 0e01 MOVLW 0x1 TRISB = PB; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005bfc 50db MOVF 0xdb,0x0,0x0 +005bfe 6e93 MOVWF 0x93,0x0 +005c00 0e02 MOVLW 0x2 TRISC = PC; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c02 50db MOVF 0xdb,0x0,0x0 +005c04 6e94 MOVWF 0x94,0x0 +005c06 0e03 MOVLW 0x3 TRISD = PD; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c08 50db MOVF 0xdb,0x0,0x0 +005c0a 6e95 MOVWF 0x95,0x0 +005c0c 0e04 MOVLW 0x4 TRISE = PE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c0e 50db MOVF 0xdb,0x0,0x0 +005c10 6e96 MOVWF 0x96,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c38 ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c3a f035 -005c3c 0e05 MOVLW 0x5 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c3e 5ce1 SUBWF 0xe1,0x0,0x0 -005c40 e202 BC 0x5c46 -005c42 6ae1 CLRF 0xe1,0x0 -005c44 52e5 MOVF 0xe5,0x1,0x0 -005c46 6ee1 MOVWF 0xe1,0x0 -005c48 efb6 GOTO 0x6b6c -005c4a f035 +005c12 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c14 f035 +005c16 0e05 MOVLW 0x5 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c18 5ce1 SUBWF 0xe1,0x0,0x0 +005c1a e202 BC 0x5c20 +005c1c 6ae1 CLRF 0xe1,0x0 +005c1e 52e5 MOVF 0xe5,0x1,0x0 +005c20 6ee1 MOVWF 0xe1,0x0 +005c22 efa7 GOTO 0x6b4e +005c24 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This function turns on or off an analog channel D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // It is called from other pieces of code, not the user D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c4c ecb1 CALL 0x6b62,0x0 void AnalogConfigure(unsigned char Channel, unsigned char Enable) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c4e f035 +005c26 eca2 CALL 0x6b44,0x0 void AnalogConfigure(unsigned char Channel, unsigned char Enable) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c28 f035 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c50 0efe MOVLW 0xfe if (Channel > 16u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c52 50db MOVF 0xdb,0x0,0x0 -005c54 0810 SUBLW 0x10 -005c56 e205 BC 0x5c62 +005c2a 0efe MOVLW 0xfe if (Channel > 16u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c2c 50db MOVF 0xdb,0x0,0x0 +005c2e 0810 SUBLW 0x10 +005c30 e205 BC 0x5c3c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c58 0e10 MOVLW 0x10 Channel = 16; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c5a 6ef3 MOVWF 0xf3,0x0 -005c5c 0efe MOVLW 0xfe -005c5e cff3 MOVFF 0xff3,0xfdb -005c60 ffdb +005c32 0e10 MOVLW 0x10 Channel = 16; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c34 6ef3 MOVWF 0xf3,0x0 +005c36 0efe MOVLW 0xfe +005c38 cff3 MOVFF 0xff3,0xfdb +005c3a ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c62 0efd MOVLW 0xfd if (Enable) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c64 50db MOVF 0xdb,0x0,0x0 -005c66 e02b BZ 0x5cbe +005c3c 0efd MOVLW 0xfd if (Enable) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c3e 50db MOVF 0xdb,0x0,0x0 +005c40 e02b BZ 0x5c98 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c68 0efe MOVLW 0xfe AnalogEnabledChannels |= ((unsigned int)0x0001 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c6a 50db MOVF 0xdb,0x0,0x0 -005c6c ec76 CALL 0x98ec,0x0 -005c6e f04c -005c70 50f3 MOVF 0xf3,0x0,0x0 -005c72 0104 MOVLB 0x4 -005c74 138e IORWF 0x8e,0x1,0x1 -005c76 50f4 MOVF 0xf4,0x0,0x0 -005c78 138f IORWF 0x8f,0x1,0x1 +005c42 0efe MOVLW 0xfe AnalogEnabledChannels |= ((unsigned int)0x0001 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c44 50db MOVF 0xdb,0x0,0x0 +005c46 ec5d CALL 0x98ba,0x0 +005c48 f04c +005c4a 50f3 MOVF 0xf3,0x0,0x0 +005c4c 0104 MOVLB 0x4 +005c4e 138e IORWF 0x8e,0x1,0x1 +005c50 50f4 MOVF 0xf4,0x0,0x0 +005c52 138f IORWF 0x8f,0x1,0x1 // Make sure to turn this analog input on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c7a 0e08 MOVLW 0x8 if (Channel < 8u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c7c 6ef3 MOVWF 0xf3,0x0 -005c7e 0efe MOVLW 0xfe -005c80 ec82 CALL 0x6d04,0x0 -005c82 f036 -005c84 e20d BC 0x5ca0 +005c54 0e08 MOVLW 0x8 if (Channel < 8u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c56 6ef3 MOVWF 0xf3,0x0 +005c58 0efe MOVLW 0xfe +005c5a ec6e CALL 0x6cdc,0x0 +005c5c f036 +005c5e e20d BC 0x5c7a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clear the right bit in ANCON0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c86 0e01 MOVLW 0x1 ANCON0 &= ~(1 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c88 6ef3 MOVWF 0xf3,0x0 -005c8a 0efe MOVLW 0xfe -005c8c 50db MOVF 0xdb,0x0,0x0 -005c8e e003 BZ 0x5c96 -005c90 ece0 CALL 0x6bc0,0x0 -005c92 f035 -005c94 e1fd BNZ 0x5c90 -005c96 50f3 MOVF 0xf3,0x0,0x0 -005c98 1cf3 COMF 0xf3,0x0,0x0 -005c9a 010f MOVLB 0xf -005c9c 1748 ANDWF 0x48,0x1,0x1 +005c60 0e01 MOVLW 0x1 ANCON0 &= ~(1 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c62 6ef3 MOVWF 0xf3,0x0 +005c64 0efe MOVLW 0xfe +005c66 50db MOVF 0xdb,0x0,0x0 +005c68 e003 BZ 0x5c70 +005c6a eccc CALL 0x6b98,0x0 +005c6c f035 +005c6e e1fd BNZ 0x5c6a +005c70 50f3 MOVF 0xf3,0x0,0x0 +005c72 1cf3 COMF 0xf3,0x0,0x0 +005c74 010f MOVLB 0xf +005c76 1748 ANDWF 0x48,0x1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005c9e d03d BRA 0x5d1a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c78 d03d BRA 0x5cf4 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ca0 0efe MOVLW 0xfe if (Channel <= 12u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ca2 50db MOVF 0xdb,0x0,0x0 -005ca4 080c SUBLW 0xc -005ca6 e339 BNC 0x5d1a +005c7a 0efe MOVLW 0xfe if (Channel <= 12u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c7c 50db MOVF 0xdb,0x0,0x0 +005c7e 080c SUBLW 0xc +005c80 e339 BNC 0x5cf4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clear the right bit in ANCON1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ca8 ecde CALL 0x6dbc,0x0 ANCON1 &= ~(1 << (Channel-8)); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005caa f036 -005cac e004 BZ 0x5cb6 -005cae 46e8 RLNCF 0xe8,0x1,0x0 -005cb0 0bfe ANDLW 0xfe -005cb2 064e DECF 0x4e,0x1,0x0 -005cb4 e1fc BNZ 0x5cae -005cb6 1ce8 COMF 0xe8,0x0,0x0 -005cb8 010f MOVLB 0xf -005cba 1749 ANDWF 0x49,0x1,0x1 -006dbc 0efe MOVLW 0xfe -006dbe 50db MOVF 0xdb,0x0,0x0 -006dc0 0ff8 ADDLW 0xf8 -006dc2 6e4e MOVWF 0x4e,0x0 -006dc4 0e01 MOVLW 0x1 -006dc6 524e MOVF 0x4e,0x1,0x0 -006dc8 0012 RETURN 0x0 +005c82 ecca CALL 0x6d94,0x0 ANCON1 &= ~(1 << (Channel-8)); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c84 f036 +005c86 e004 BZ 0x5c90 +005c88 46e8 RLNCF 0xe8,0x1,0x0 +005c8a 0bfe ANDLW 0xfe +005c8c 064e DECF 0x4e,0x1,0x0 +005c8e e1fc BNZ 0x5c88 +005c90 1ce8 COMF 0xe8,0x0,0x0 +005c92 010f MOVLB 0xf +005c94 1749 ANDWF 0x49,0x1,0x1 +006d94 0efe MOVLW 0xfe +006d96 50db MOVF 0xdb,0x0,0x0 +006d98 0ff8 ADDLW 0xf8 +006d9a 6e4e MOVWF 0x4e,0x0 +006d9c 0e01 MOVLW 0x1 +006d9e 524e MOVF 0x4e,0x1,0x0 +006da0 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cbc d02e BRA 0x5d1a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c96 d02e BRA 0x5cf4 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cbe 0efe MOVLW 0xfe AnalogEnabledChannels &= ~((unsigned int)0x0001 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cc0 50db MOVF 0xdb,0x0,0x0 -005cc2 ec76 CALL 0x98ec,0x0 -005cc4 f04c -005cc6 cff3 MOVFF 0xff3,0x4e -005cc8 f04e -005cca cff4 MOVFF 0xff4,0x4f -005ccc f04f -005cce 1e4e COMF 0x4e,0x1,0x0 -005cd0 1e4f COMF 0x4f,0x1,0x0 -005cd2 504e MOVF 0x4e,0x0,0x0 -005cd4 0104 MOVLB 0x4 -005cd6 178e ANDWF 0x8e,0x1,0x1 -005cd8 504f MOVF 0x4f,0x0,0x0 -005cda 178f ANDWF 0x8f,0x1,0x1 +005c98 0efe MOVLW 0xfe AnalogEnabledChannels &= ~((unsigned int)0x0001 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005c9a 50db MOVF 0xdb,0x0,0x0 +005c9c ec5d CALL 0x98ba,0x0 +005c9e f04c +005ca0 cff3 MOVFF 0xff3,0x4e +005ca2 f04e +005ca4 cff4 MOVFF 0xff4,0x4f +005ca6 f04f +005ca8 1e4e COMF 0x4e,0x1,0x0 +005caa 1e4f COMF 0x4f,0x1,0x0 +005cac 504e MOVF 0x4e,0x0,0x0 +005cae 0104 MOVLB 0x4 +005cb0 178e ANDWF 0x8e,0x1,0x1 +005cb2 504f MOVF 0x4f,0x0,0x0 +005cb4 178f ANDWF 0x8f,0x1,0x1 // Make sure to turn this analog input off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cdc 0e08 MOVLW 0x8 if (Channel < 8u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cde 6ef3 MOVWF 0xf3,0x0 -005ce0 0efe MOVLW 0xfe -005ce2 ec82 CALL 0x6d04,0x0 -005ce4 f036 -005ce6 e20c BC 0x5d00 +005cb6 0e08 MOVLW 0x8 if (Channel < 8u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cb8 6ef3 MOVWF 0xf3,0x0 +005cba 0efe MOVLW 0xfe +005cbc ec6e CALL 0x6cdc,0x0 +005cbe f036 +005cc0 e20c BC 0x5cda { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Set the right bit in ANCON0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ce8 0e01 MOVLW 0x1 ANCON0 |= (1 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cea 6ef3 MOVWF 0xf3,0x0 -005cec 0efe MOVLW 0xfe -005cee 50db MOVF 0xdb,0x0,0x0 -005cf0 e003 BZ 0x5cf8 -005cf2 ece0 CALL 0x6bc0,0x0 -005cf4 f035 -005cf6 e1fd BNZ 0x5cf2 -005cf8 50f3 MOVF 0xf3,0x0,0x0 -005cfa 010f MOVLB 0xf -005cfc 1348 IORWF 0x48,0x1,0x1 +005cc2 0e01 MOVLW 0x1 ANCON0 |= (1 << Channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cc4 6ef3 MOVWF 0xf3,0x0 +005cc6 0efe MOVLW 0xfe +005cc8 50db MOVF 0xdb,0x0,0x0 +005cca e003 BZ 0x5cd2 +005ccc eccc CALL 0x6b98,0x0 +005cce f035 +005cd0 e1fd BNZ 0x5ccc +005cd2 50f3 MOVF 0xf3,0x0,0x0 +005cd4 010f MOVLB 0xf +005cd6 1348 IORWF 0x48,0x1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005cfe d00d BRA 0x5d1a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cd8 d00d BRA 0x5cf4 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d00 0efe MOVLW 0xfe if (Channel <= 12u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d02 50db MOVF 0xdb,0x0,0x0 -005d04 080c SUBLW 0xc -005d06 e309 BNC 0x5d1a +005cda 0efe MOVLW 0xfe if (Channel <= 12u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cdc 50db MOVF 0xdb,0x0,0x0 +005cde 080c SUBLW 0xc +005ce0 e309 BNC 0x5cf4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Set the right bit in ANCON1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d08 ecde CALL 0x6dbc,0x0 ANCON1 |= (1 << (Channel-8)); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d0a f036 -005d0c e004 BZ 0x5d16 -005d0e 46e8 RLNCF 0xe8,0x1,0x0 -005d10 0bfe ANDLW 0xfe -005d12 064e DECF 0x4e,0x1,0x0 -005d14 e1fc BNZ 0x5d0e -005d16 010f MOVLB 0xf -005d18 1349 IORWF 0x49,0x1,0x1 +005ce2 ecca CALL 0x6d94,0x0 ANCON1 |= (1 << (Channel-8)); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ce4 f036 +005ce6 e004 BZ 0x5cf0 +005ce8 46e8 RLNCF 0xe8,0x1,0x0 +005cea 0bfe ANDLW 0xfe +005cec 064e DECF 0x4e,0x1,0x0 +005cee e1fc BNZ 0x5ce8 +005cf0 010f MOVLB 0xf +005cf2 1349 IORWF 0x49,0x1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d1a efb6 GOTO 0x6b6c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d1c f035 +005cf4 efa7 GOTO 0x6b4e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cf6 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Analog Configure D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "AC,," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -22874,222 +22847,208 @@ Address Value Disassembly Source // To turn off a particular analog channel, use the AC command to disable it. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Once enabled, that channel will be converted at the normal ADC conversion D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // rate and will show up in A packets. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d1e ec22 CALL 0x7044,0x0 void parse_AC_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d20 f038 -007044 dd8e RCALL 0x6b62 -007046 0e02 MOVLW 0x2 -007048 dee8 RCALL 0x6e1a +005cf8 ec0e CALL 0x701c,0x0 void parse_AC_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cfa f038 +00701c dd93 RCALL 0x6b44 +00701e 0e02 MOVLW 0x2 +007020 dee3 RCALL 0x6de8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char Channel, Enable; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Extract each of the two values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d22 ecca CALL 0x6f94,0x0 extract_number(kUCHAR, &Channel, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d24 f037 -00704a 0e01 MOVLW 0x1 -00704c 0012 RETURN 0x0 -005d26 0f01 ADDLW 0x1 extract_number(kUCHAR, &Enable, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d28 ec1e CALL 0x703c,0x0 -005d2a f038 +005cfc ecb3 CALL 0x6f66,0x0 extract_number(kUCHAR, &Channel, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005cfe f037 +007022 0e01 MOVLW 0x1 +007024 0012 RETURN 0x0 +005d00 0f01 ADDLW 0x1 extract_number(kUCHAR, &Enable, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d02 ec0a CALL 0x7014,0x0 +005d04 f038 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d2c e10a BNZ 0x5d42 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d06 e10a BNZ 0x5d1c if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d2e 0e01 MOVLW 0x1 AnalogConfigure(Channel, Enable); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d30 cfdb MOVFF 0xfdb,0xfe6 -005d32 ffe6 -005d34 cfdf MOVFF 0xfdf,0xfe6 -005d36 ffe6 -005d38 df89 RCALL 0x5c4c -005d3a 52e5 MOVF 0xe5,0x1,0x0 -005d3c 52e5 MOVF 0xe5,0x1,0x0 +005d08 0e01 MOVLW 0x1 AnalogConfigure(Channel, Enable); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d0a cfdb MOVFF 0xfdb,0xfe6 +005d0c ffe6 +005d0e cfdf MOVFF 0xfdf,0xfe6 +005d10 ffe6 +005d12 df89 RCALL 0x5c26 +005d14 52e5 MOVF 0xe5,0x1,0x0 +005d16 52e5 MOVF 0xe5,0x1,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d3e ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d40 f035 -005d42 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d44 5ce1 SUBWF 0xe1,0x0,0x0 -005d46 e202 BC 0x5d4c -005d48 6ae1 CLRF 0xe1,0x0 -005d4a 52e5 MOVF 0xe5,0x1,0x0 -005d4c 6ee1 MOVWF 0xe1,0x0 -005d4e efb6 GOTO 0x6b6c -005d50 f035 +005d18 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d1a f035 +005d1c 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d1e 5ce1 SUBWF 0xe1,0x0,0x0 +005d20 e202 BC 0x5d26 +005d22 6ae1 CLRF 0xe1,0x0 +005d24 52e5 MOVF 0xe5,0x1,0x0 +005d26 6ee1 MOVWF 0xe1,0x0 +005d28 efa7 GOTO 0x6b4e +005d2a f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Outputs values to the ports pins that are set up as outputs. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Example "O,121,224,002" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d52 ec22 CALL 0x7044,0x0 void parse_O_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d54 f038 -006e1a 26e1 ADDWF 0xe1,0x1,0x0 +005d2c ec0e CALL 0x701c,0x0 void parse_O_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d2e f038 +006de8 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ExtractReturnType RetVal; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b4c d982 RCALL 0x6e52 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e1c 6ae6 CLRF 0xe6,0x0 -006e1e 6ae6 CLRF 0xe6,0x0 -006e20 efa6 GOTO 0x6b4c -006e22 f035 +006b2e d97a RCALL 0x6e24 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006dea 6ae6 CLRF 0xe6,0x0 +006dec 6ae6 CLRF 0xe6,0x0 +006dee ef97 GOTO 0x6b2e +006df0 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Extract each of the values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d56 ec99 CALL 0x6b32,0x0 RetVal = extract_number(kUCHAR, &Value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d58 f035 -005d5a ec37 CALL 0x6c6e,0x0 -005d5c f036 -006b4e 6ae6 CLRF 0xe6,0x0 -006b50 efbc GOTO 0x6f78 -006b52 f037 -005d5e e127 BNZ 0x5dae if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d60 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d62 50db MOVF 0xdb,0x0,0x0 -005d64 e102 BNZ 0x5d6a +005d30 ec87 CALL 0x6b0e,0x0 RetVal = extract_number(kUCHAR, &Value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d32 f035 +005d34 ec23 CALL 0x6c46,0x0 +005d36 f036 +006b30 6ae6 CLRF 0xe6,0x0 +006b32 efa9 GOTO 0x6f52 +006b34 f037 +005d38 e127 BNZ 0x5d88 if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d3a 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d3c 50db MOVF 0xdb,0x0,0x0 +005d3e e102 BNZ 0x5d44 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d66 50df MOVF 0xdf,0x0,0x0 LATA = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d68 6e89 MOVWF 0x89,0x0 +005d40 50df MOVF 0xdf,0x0,0x0 LATA = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d42 6e89 MOVWF 0x89,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d6a ec18 CALL 0x6e30,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d6c f037 -005d6e e11f BNZ 0x5dae if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d70 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d72 50db MOVF 0xdb,0x0,0x0 -005d74 e102 BNZ 0x5d7a +005d44 ec01 CALL 0x6e02,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d46 f037 +005d48 e11f BNZ 0x5d88 if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d4a 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d4c 50db MOVF 0xdb,0x0,0x0 +005d4e e102 BNZ 0x5d54 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d76 50df MOVF 0xdf,0x0,0x0 LATB = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d78 6e8a MOVWF 0x8a,0x0 +005d50 50df MOVF 0xdf,0x0,0x0 LATB = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d52 6e8a MOVWF 0x8a,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d7a ec18 CALL 0x6e30,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d7c f037 -005d7e e117 BNZ 0x5dae if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d80 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d82 50db MOVF 0xdb,0x0,0x0 -005d84 e102 BNZ 0x5d8a +005d54 ec01 CALL 0x6e02,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d56 f037 +005d58 e117 BNZ 0x5d88 if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d5a 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d5c 50db MOVF 0xdb,0x0,0x0 +005d5e e102 BNZ 0x5d64 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d86 50df MOVF 0xdf,0x0,0x0 LATC = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d88 6e8b MOVWF 0x8b,0x0 +005d60 50df MOVF 0xdf,0x0,0x0 LATC = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d62 6e8b MOVWF 0x8b,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d8a ec18 CALL 0x6e30,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d8c f037 -005d8e e10f BNZ 0x5dae if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d90 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d92 50db MOVF 0xdb,0x0,0x0 -005d94 e102 BNZ 0x5d9a +005d64 ec01 CALL 0x6e02,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d66 f037 +005d68 e10f BNZ 0x5d88 if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d6a 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d6c 50db MOVF 0xdb,0x0,0x0 +005d6e e102 BNZ 0x5d74 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d96 50df MOVF 0xdf,0x0,0x0 LATD = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d98 6e8c MOVWF 0x8c,0x0 +005d70 50df MOVF 0xdf,0x0,0x0 LATD = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d72 6e8c MOVWF 0x8c,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d9a ec18 CALL 0x6e30,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005d9c f037 -006c6e 6ee7 MOVWF 0xe7,0x0 -006c70 0e01 MOVLW 0x1 -006c72 cfe7 MOVFF 0xfe7,0xfdb -006c74 ffdb -006cc4 6ee6 MOVWF 0xe6,0x0 -006cc6 efbc GOTO 0x6f78 -006cc8 f037 -006e30 0e01 MOVLW 0x1 -006e32 df48 RCALL 0x6cc4 -006e34 de7e RCALL 0x6b32 -006e36 ef37 GOTO 0x6c6e -006e38 f036 -006f78 cfd9 MOVFF 0xfd9,0xfe6 -006f7a ffe6 -006f7c cfda MOVFF 0xfda,0xfe6 -006f7e ffe6 -006f80 0012 RETURN 0x0 -005d9e e107 BNZ 0x5dae if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006c76 0104 MOVLB 0x4 -006c78 5184 MOVF 0x84,0x0,0x1 -006c7a 0012 RETURN 0x0 -005da0 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005da2 50db MOVF 0xdb,0x0,0x0 -005da4 e102 BNZ 0x5daa +005d74 ec01 CALL 0x6e02,0x0 RetVal = extract_number(kUCHAR, &Value, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d76 f037 +006c46 6ee7 MOVWF 0xe7,0x0 +006c48 0e01 MOVLW 0x1 +006c4a cfe7 MOVFF 0xfe7,0xfdb +006c4c ffdb +006c9c 6ee6 MOVWF 0xe6,0x0 +006c9e efa9 GOTO 0x6f52 +006ca0 f037 +006e02 0e01 MOVLW 0x1 +006e04 df4b RCALL 0x6c9c +006e06 de83 RCALL 0x6b0e +006e08 ef23 GOTO 0x6c46 +006e0a f036 +006f52 cfd9 MOVFF 0xfd9,0xfe6 +006f54 ffe6 +006f56 cfda MOVFF 0xfda,0xfe6 +006f58 ffe6 +006f5a 0012 RETURN 0x0 +005d78 e107 BNZ 0x5d88 if (error_byte) return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006c4e 0104 MOVLB 0x4 +006c50 5184 MOVF 0x84,0x0,0x1 +006c52 0012 RETURN 0x0 +005d7a 0e01 MOVLW 0x1 if (kEXTRACT_OK == RetVal) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d7c 50db MOVF 0xdb,0x0,0x0 +005d7e e102 BNZ 0x5d84 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005da6 50df MOVF 0xdf,0x0,0x0 LATE = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005da8 6e8d MOVWF 0x8d,0x0 +005d80 50df MOVF 0xdf,0x0,0x0 LATE = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d82 6e8d MOVWF 0x8d,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005daa ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dac f035 -005dae 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005db0 5ce1 SUBWF 0xe1,0x0,0x0 -005db2 e202 BC 0x5db8 -005db4 6ae1 CLRF 0xe1,0x0 -005db6 52e5 MOVF 0xe5,0x1,0x0 -005db8 6ee1 MOVWF 0xe1,0x0 -005dba efb6 GOTO 0x6b6c -005dbc f035 +005d84 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d86 f035 +005d88 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d8a 5ce1 SUBWF 0xe1,0x0,0x0 +005d8c e202 BC 0x5d92 +005d8e 6ae1 CLRF 0xe1,0x0 +005d90 52e5 MOVF 0xe5,0x1,0x0 +005d92 6ee1 MOVWF 0xe1,0x0 +005d94 efa7 GOTO 0x6b4e +005d96 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Read in the five I/O ports (A,B,C,D,E) and creates D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // a packet to send back with all of values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Example: "I,143,221,010,008,179" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_I_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dbe 0e01 MOVLW 0x1 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dc0 6ee6 MOVWF 0xe6,0x0 -005dc2 6ee6 MOVWF 0xe6,0x0 -005dc4 ec29 CALL 0x6e52,0x0 -005dc6 f037 +005d98 0e01 MOVLW 0x1 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005d9a 6ee6 MOVWF 0xe6,0x0 +005d9c 6ee6 MOVWF 0xe6,0x0 +005d9e ec12 CALL 0x6e24,0x0 +005da0 f037 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dc8 5080 MOVF 0x80,0x0,0x0 ebb_print_uint(PORTA); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dca ec1d CALL 0x6e3a,0x0 -005dcc f037 +005da2 5080 MOVF 0x80,0x0,0x0 ebb_print_uint(PORTA); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005da4 ec06 CALL 0x6e0c,0x0 +005da6 f037 ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dce 5081 MOVF 0x81,0x0,0x0 ebb_print_uint(PORTB); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dd0 ec1d CALL 0x6e3a,0x0 -005dd2 f037 +005da8 5081 MOVF 0x81,0x0,0x0 ebb_print_uint(PORTB); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005daa ec06 CALL 0x6e0c,0x0 +005dac f037 ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dd4 5082 MOVF 0x82,0x0,0x0 ebb_print_uint(PORTC); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dd6 ec1d CALL 0x6e3a,0x0 -005dd8 f037 +005dae 5082 MOVF 0x82,0x0,0x0 ebb_print_uint(PORTC); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005db0 ec06 CALL 0x6e0c,0x0 +005db2 f037 ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dda 5083 MOVF 0x83,0x0,0x0 ebb_print_uint(PORTD); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ddc ec1d CALL 0x6e3a,0x0 -005dde f037 -006b2c d96f RCALL 0x6e0c -006b2e efe6 GOTO 0x6fcc -006b30 f037 -006e0c c04f MOVFF 0x4f,0xfe6 -006e0e ffe6 -006e10 c050 MOVFF 0x50,0xfe6 -006e12 ffe6 -006e14 c051 MOVFF 0x51,0xfe6 -006e16 ffe6 -006e18 0012 RETURN 0x0 -006e3a d8ef RCALL 0x701a -006fcc ecf1 CALL 0x8de2,0x0 -006fce f046 -006fd0 ef12 GOTO 0x6e24 -006fd2 f037 -00701a de0e RCALL 0x6c38 -00701c ef96 GOTO 0x6b2c -00701e f035 -006e3c 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e3e efba GOTO 0x6b74 -006e40 f035 -005de0 5084 MOVF 0x84,0x0,0x0 ebb_print_uint(PORTE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005de2 ec0d CALL 0x701a,0x0 -005de4 f038 -005de6 ef9d GOTO 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005de8 f035 +005db4 5083 MOVF 0x83,0x0,0x0 ebb_print_uint(PORTD); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005db6 ec06 CALL 0x6e0c,0x0 +005db8 f037 +006e0c d8f2 RCALL 0x6ff2 +006ff2 de0e RCALL 0x6c10 +006ff4 ef8b GOTO 0x6b16 +006ff6 f035 +006e0e 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e10 efc7 GOTO 0x6b8e +006e12 f035 +005dba 5084 MOVF 0x84,0x0,0x0 ebb_print_uint(PORTE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dbc ecf9 CALL 0x6ff2,0x0 +005dbe f037 +005dc0 ef8e GOTO 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dc2 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // All we do here is just print out our version number D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_V_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dea ec73 CALL 0x6ce6,0x0 print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dec f036 +005dc4 ec5f CALL 0x6cbe,0x0 print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dc6 f036 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dee 0ec8 MOVLW 0xc8 ebb_print((far rom char *)st_version); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005df0 6e4e MOVWF 0x4e,0x0 -005df2 0e94 MOVLW 0x94 -005df4 ef21 GOTO 0x6e42 -005df6 f037 -006e42 de71 RCALL 0x6b26 -006e44 ef9d GOTO 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e46 f035 +005dc8 0e98 MOVLW 0x98 ebb_print((far rom char *)st_version); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dca 6e4e MOVWF 0x4e,0x0 +005dcc 0e94 MOVLW 0x94 +005dce ef0a GOTO 0x6e14 +005dd0 f037 +006e14 de79 RCALL 0x6b08 +006e16 ef8e GOTO 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e18 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // A is for read Analog inputs D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -23098,178 +23057,182 @@ Address Value Disassembly Source // Returned packet will look like D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "A,2:421,5:891,9:3921" if channels 2, 5 and 9 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // are enabled. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005df8 ecf3 CALL 0x6fe6,0x0 void parse_A_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dfa f037 +005dd2 ecde CALL 0x6fbc,0x0 void parse_A_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dd4 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dfc 6adf CLRF 0xdf,0x0 char channel = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005dfe 0e01 MOVLW 0x1 unsigned int ChannelBit = 0x0001; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e00 6ef3 MOVWF 0xf3,0x0 -005e02 6edb MOVWF 0xdb,0x0 -005e04 0e02 MOVLW 0x2 -005e06 6adb CLRF 0xdb,0x0 +005dd6 6adf CLRF 0xdf,0x0 char channel = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dd8 0e01 MOVLW 0x1 unsigned int ChannelBit = 0x0001; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dda 6ef3 MOVWF 0xf3,0x0 +005ddc 6edb MOVWF 0xdb,0x0 +005dde 0e02 MOVLW 0x2 +005de0 6adb CLRF 0xdb,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e08 6ae6 CLRF 0xe6,0x0 print_command(TRUE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e0a 0e01 MOVLW 0x1 -005e0c 6ee6 MOVWF 0xe6,0x0 -005e0e ec29 CALL 0x6e52,0x0 -005e10 f037 +005de2 6ae6 CLRF 0xe6,0x0 print_command(TRUE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005de4 0e01 MOVLW 0x1 +005de6 6ee6 MOVWF 0xe6,0x0 +005de8 ec12 CALL 0x6e24,0x0 +005dea f037 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Sit and spin, waiting for one set of analog conversions to complete D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e12 bc9d BTFSC 0x9d,0x6,0x0 while (PIE1bits.ADIE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e14 d7fe BRA 0x5e12 +005dec bc9d BTFSC 0x9d,0x6,0x0 while (PIE1bits.ADIE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005dee d7fe BRA 0x5dec D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now print each analog value D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e16 6adf CLRF 0xdf,0x0 for (channel = 0; channel < 16; channel++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e18 cfdf MOVFF 0xfdf,0x4e -005e1a f04e -005e1c 0e10 MOVLW 0x10 -005e1e 6ee7 MOVWF 0xe7,0x0 -005e20 184e XORWF 0x4e,0x0,0x0 -005e22 aee8 BTFSS 0xe8,0x7,0x0 -005e24 d002 BRA 0x5e2a -005e26 34e7 RLCF 0xe7,0x0,0x0 -005e28 d002 BRA 0x5e2e -005e2a 50e7 MOVF 0xe7,0x0,0x0 -005e2c 5c4e SUBWF 0x4e,0x0,0x0 -005e2e e23b BC 0x5ea6 -005ea2 2adf INCF 0xdf,0x1,0x0 -005ea4 d7b9 BRA 0x5e18 +005df0 6adf CLRF 0xdf,0x0 for (channel = 0; channel < 16; channel++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005df2 cfdf MOVFF 0xfdf,0x4e +005df4 f04e +005df6 0e10 MOVLW 0x10 +005df8 6ee7 MOVWF 0xe7,0x0 +005dfa 184e XORWF 0x4e,0x0,0x0 +005dfc aee8 BTFSS 0xe8,0x7,0x0 +005dfe d002 BRA 0x5e04 +005e00 34e7 RLCF 0xe7,0x0,0x0 +005e02 d002 BRA 0x5e08 +005e04 50e7 MOVF 0xe7,0x0,0x0 +005e06 5c4e SUBWF 0x4e,0x0,0x0 +005e08 e23f BC 0x5e88 +005e84 2adf INCF 0xdf,0x1,0x0 +005e86 d7b5 BRA 0x5df2 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e30 0e01 MOVLW 0x1 if (ChannelBit & AnalogEnabledChannels) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e32 50db MOVF 0xdb,0x0,0x0 -005e34 0104 MOVLB 0x4 -005e36 158e ANDWF 0x8e,0x0,0x1 -005e38 0100 MOVLB 0x0 -005e3a 6e4e MOVWF 0x4e,0x0 -005e3c 0e02 MOVLW 0x2 -005e3e 50db MOVF 0xdb,0x0,0x0 -005e40 0104 MOVLB 0x4 -005e42 158f ANDWF 0x8f,0x0,0x1 -005e44 0100 MOVLB 0x0 -005e46 6e4f MOVWF 0x4f,0x0 -005e48 504e MOVF 0x4e,0x0,0x0 -005e4a 104f IORWF 0x4f,0x0,0x0 -005e4c e01f BZ 0x5e8c +005e0a 0e01 MOVLW 0x1 if (ChannelBit & AnalogEnabledChannels) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e0c 50db MOVF 0xdb,0x0,0x0 +005e0e 0104 MOVLB 0x4 +005e10 158e ANDWF 0x8e,0x0,0x1 +005e12 0100 MOVLB 0x0 +005e14 6e4e MOVWF 0x4e,0x0 +005e16 0e02 MOVLW 0x2 +005e18 50db MOVF 0xdb,0x0,0x0 +005e1a 0104 MOVLB 0x4 +005e1c 158f ANDWF 0x8f,0x0,0x1 +005e1e 0100 MOVLB 0x0 +005e20 6e4f MOVWF 0x4f,0x0 +005e22 504e MOVF 0x4e,0x0,0x0 +005e24 104f IORWF 0x4f,0x0,0x0 +005e26 e023 BZ 0x5e6e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e4e 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e50 ecba CALL 0x6b74,0x0 -005e52 f035 -005e54 ecc9 CALL 0x6b92,0x0 ebb_print_uint(channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e56 f035 -005e58 ae4e BTFSS 0x4e,0x7,0x0 -005e5a d003 BRA 0x5e62 -005e5c 684f SETF 0x4f,0x0 -005e5e 6850 SETF 0x50,0x0 -005e60 6851 SETF 0x51,0x0 -005e62 ecf7 CALL 0x6fee,0x0 -005e64 f037 -005e66 0e3a MOVLW 0x3a ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e68 ecba CALL 0x6b74,0x0 -005e6a f035 -005e6c cfdf MOVFF 0xfdf,0xfe9 ebb_print_uint(ISR_A_FIFO[channel]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e6e ffe9 -005e70 6aea CLRF 0xea,0x0 -005e72 bee9 BTFSC 0xe9,0x7,0x0 -005e74 68ea SETF 0xea,0x0 -005e76 ec39 CALL 0x6e72,0x0 -005e78 f037 -005e7a 22ea ADDWFC 0xea,0x1,0x0 -005e7c cfee MOVFF 0xfee,0x4e -005e7e f04e -005e80 cfef MOVFF 0xfef,0x4f -005e82 f04f -005e84 6a50 CLRF 0x50,0x0 -005e86 6a51 CLRF 0x51,0x0 -005e88 ecf7 CALL 0x6fee,0x0 -005e8a f037 -006e72 90d8 BCF 0xd8,0x0,0x0 -006e74 36e9 RLCF 0xe9,0x1,0x0 -006e76 36ea RLCF 0xea,0x1,0x0 -006e78 0e00 MOVLW 0x0 -006e7a 26e9 ADDWF 0xe9,0x1,0x0 -006e7c 0e01 MOVLW 0x1 -006e7e 0012 RETURN 0x0 +005e28 0e2c MOVLW 0x2c ebb_print_char(','); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e2a ecc7 CALL 0x6b8e,0x0 +005e2c f035 +005e2e cfdf MOVFF 0xfdf,0x4e ebb_print_uint(channel); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e30 f04e +005e32 ec75 CALL 0x6eea,0x0 +005e34 f037 +005e36 ae4e BTFSS 0x4e,0x7,0x0 +005e38 d003 BRA 0x5e40 +005e3a 684f SETF 0x4f,0x0 +005e3c 6850 SETF 0x50,0x0 +005e3e 6851 SETF 0x51,0x0 +005e40 c04e MOVFF 0x4e,0xfe6 +005e42 ffe6 +005e44 ec8b CALL 0x6b16,0x0 +005e46 f035 +005e48 0e3a MOVLW 0x3a ebb_print_char(':'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e4a ecc7 CALL 0x6b8e,0x0 +005e4c f035 +005e4e cfdf MOVFF 0xfdf,0xfe9 ebb_print_uint(ISR_A_FIFO[channel]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e50 ffe9 +005e52 6aea CLRF 0xea,0x0 +005e54 bee9 BTFSC 0xe9,0x7,0x0 +005e56 68ea SETF 0xea,0x0 +005e58 ec22 CALL 0x6e44,0x0 +005e5a f037 +005e5c 22ea ADDWFC 0xea,0x1,0x0 +005e5e cfee MOVFF 0xfee,0x4e +005e60 f04e +005e62 cfef MOVFF 0xfef,0x4f +005e64 f04f +005e66 ecf4 CALL 0x6fe8,0x0 +005e68 f037 +005e6a ec8b CALL 0x6b16,0x0 +005e6c f035 +006e44 90d8 BCF 0xd8,0x0,0x0 +006e46 36e9 RLCF 0xe9,0x1,0x0 +006e48 36ea RLCF 0xea,0x1,0x0 +006e4a 0e00 MOVLW 0x0 +006e4c 26e9 ADDWF 0xe9,0x1,0x0 +006e4e 0e01 MOVLW 0x1 +006e50 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e8c ecc2 CALL 0x6d84,0x0 ChannelBit = ChannelBit << 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005e8e f036 -005e90 90d8 BCF 0xd8,0x0,0x0 -005e92 364e RLCF 0x4e,0x1,0x0 -005e94 364f RLCF 0x4f,0x1,0x0 -005e96 0e01 MOVLW 0x1 -005e98 c04e MOVFF 0x4e,0xfdb -005e9a ffdb -005e9c 0e02 MOVLW 0x2 -005e9e c04f MOVFF 0x4f,0xfdb -005ea0 ffdb +005e6e ecae CALL 0x6d5c,0x0 ChannelBit = ChannelBit << 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e70 f036 +005e72 90d8 BCF 0xd8,0x0,0x0 +005e74 364e RLCF 0x4e,0x1,0x0 +005e76 364f RLCF 0x4f,0x1,0x0 +005e78 0e01 MOVLW 0x1 +005e7a c04e MOVFF 0x4e,0xfdb +005e7c ffdb +005e7e 0e02 MOVLW 0x2 +005e80 c04f MOVFF 0x4f,0xfdb +005e82 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Add \r\n (for line ending legacy mode : note this is backwards from how D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // the rest of the code does legacy line endings) or just \n for new line D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // ending mode. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ea6 0e02 MOVLW 0x2 print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ea8 ecb7 CALL 0x6f6e,0x0 -005eaa f037 -005eac 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005eae 5ce1 SUBWF 0xe1,0x0,0x0 -005eb0 e202 BC 0x5eb6 -005eb2 6ae1 CLRF 0xe1,0x0 -005eb4 52e5 MOVF 0xe5,0x1,0x0 -005eb6 6ee1 MOVWF 0xe1,0x0 -005eb8 efb6 GOTO 0x6b6c -005eba f035 +005e88 0e02 MOVLW 0x2 print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e8a eca4 CALL 0x6f48,0x0 +005e8c f037 +005e8e 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005e90 5ce1 SUBWF 0xe1,0x0,0x0 +005e92 e202 BC 0x5e98 +005e94 6ae1 CLRF 0xe1,0x0 +005e96 52e5 MOVF 0xe5,0x1,0x0 +005e98 6ee1 MOVWF 0xe1,0x0 +005e9a efa7 GOTO 0x6b4e +005e9c f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // MW is for Memory Write D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "MW,," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is a decimal value between 0 and 4096 indicating the RAM address to write to D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is a decimal value between 0 and 255 that is the value to write D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ebc ecef CALL 0x6fde,0x0 void parse_MW_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ebe f037 +005e9e ecda CALL 0x6fb4,0x0 void parse_MW_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ea0 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned int location; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ec0 0e03 MOVLW 0x3 extract_number(kUINT, &location, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ec2 ecca CALL 0x6f94,0x0 -005ec4 f037 -005ec6 0f02 ADDLW 0x2 extract_number(kUCHAR, &value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ec8 ec1e CALL 0x703c,0x0 -005eca f038 +005ea2 0e03 MOVLW 0x3 extract_number(kUINT, &location, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ea4 ecb3 CALL 0x6f66,0x0 +005ea6 f037 +005ea8 0f02 ADDLW 0x2 extract_number(kUCHAR, &value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eaa ec0a CALL 0x7014,0x0 +005eac f038 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ecc e10a BNZ 0x5ee2 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eae e10a BNZ 0x5ec4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Limit check the address and write the byte in D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ece ec9f CALL 0x6f3e,0x0 if (location < 4096u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ed0 f037 -005ed2 e205 BC 0x5ede -006f3e ded8 RCALL 0x6cf0 -006f40 0e00 MOVLW 0x0 -006f42 5c4e SUBWF 0x4e,0x0,0x0 -006f44 0e10 MOVLW 0x10 -006f46 584f SUBWFB 0x4f,0x0,0x0 -006f48 0012 RETURN 0x0 +005eb0 ec8c CALL 0x6f18,0x0 if (location < 4096u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eb2 f037 +005eb4 e205 BC 0x5ec0 +006f18 ded7 RCALL 0x6cc8 +006f1a 0e00 MOVLW 0x0 +006f1c 5c4e SUBWF 0x4e,0x0,0x0 +006f1e 0e10 MOVLW 0x10 +006f20 584f SUBWFB 0x4f,0x0,0x0 +006f22 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ed4 ec7d CALL 0x6cfa,0x0 *((unsigned char *)location) = value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ed6 f036 -005ed8 0e02 MOVLW 0x2 -005eda cfdb MOVFF 0xfdb,0xfef -005edc ffef +005eb6 ec69 CALL 0x6cd2,0x0 *((unsigned char *)location) = value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eb8 f036 +005eba 0e02 MOVLW 0x2 +005ebc cfdb MOVFF 0xfdb,0xfef +005ebe ffef } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ede ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ee0 f035 -005ee2 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ee4 5ce1 SUBWF 0xe1,0x0,0x0 -005ee6 e202 BC 0x5eec -005ee8 6ae1 CLRF 0xe1,0x0 -005eea 52e5 MOVF 0xe5,0x1,0x0 -005eec 6ee1 MOVWF 0xe1,0x0 -005eee efb6 GOTO 0x6b6c -005ef0 f035 +005ec0 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ec2 f035 +005ec4 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ec6 5ce1 SUBWF 0xe1,0x0,0x0 +005ec8 e202 BC 0x5ece +005eca 6ae1 CLRF 0xe1,0x0 +005ecc 52e5 MOVF 0xe5,0x1,0x0 +005ece 6ee1 MOVWF 0xe1,0x0 +005ed0 efa7 GOTO 0x6b4e +005ed2 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // MR is for Memory Read D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -23277,73 +23240,73 @@ Address Value Disassembly Source // is a decimal value between 0 and 4096 indicating the RAM address to read from D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // The UBW will then send a "MR," packet back to the PC D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // where is the byte value read from the address D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ef2 ecf3 CALL 0x6fe6,0x0 void parse_MR_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ef4 f037 +005ed4 ecde CALL 0x6fbc,0x0 void parse_MR_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ed6 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned int location; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ef6 ec63 CALL 0x6ec6,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ef8 f037 +005ed8 ec4c CALL 0x6e98,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eda f037 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005efa 0e03 MOVLW 0x3 extract_number(kUINT, &location, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005efc ec99 CALL 0x6b32,0x0 -005efe f035 +005edc 0e03 MOVLW 0x3 extract_number(kUINT, &location, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ede ec87 CALL 0x6b0e,0x0 +005ee0 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f00 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f02 5184 MOVF 0x84,0x0,0x1 -005f04 e10d BNZ 0x5f20 +005ee2 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ee4 5184 MOVF 0x84,0x0,0x1 +005ee6 e10d BNZ 0x5f02 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Limit check the address and write the byte in D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f06 ec9f CALL 0x6f3e,0x0 if (location < 4096u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f08 f037 -005f0a e205 BC 0x5f16 -006cf0 cfde MOVFF 0xfde,0x4e -006cf2 f04e -006cf4 cfdd MOVFF 0xfdd,0x4f -006cf6 f04f -006cf8 0012 RETURN 0x0 +005ee8 ec8c CALL 0x6f18,0x0 if (location < 4096u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005eea f037 +005eec e205 BC 0x5ef8 +006cc8 cfde MOVFF 0xfde,0x4e +006cca f04e +006ccc cfdd MOVFF 0xfdd,0x4f +006cce f04f +006cd0 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f0c ec7d CALL 0x6cfa,0x0 value = *((unsigned char *)location); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f0e f036 -005f10 0e02 MOVLW 0x2 -005f12 cfef MOVFF 0xfef,0xfdb -005f14 ffdb -006cfa cfde MOVFF 0xfde,0xfe9 -006cfc ffe9 -006cfe cfdd MOVFF 0xfdd,0xfea -006d00 ffea -006d02 0012 RETURN 0x0 +005eee ec69 CALL 0x6cd2,0x0 value = *((unsigned char *)location); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ef0 f036 +005ef2 0e02 MOVLW 0x2 +005ef4 cfef MOVFF 0xfef,0xfdb +005ef6 ffdb +006cd2 cfde MOVFF 0xfde,0xfe9 +006cd4 ffe9 +006cd6 cfdd MOVFF 0xfdd,0xfea +006cd8 ffea +006cda 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now send back the MR packet D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f16 0e02 MOVLW 0x2 ebb_print_uint(value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f18 ec98 CALL 0x6d30,0x0 -005f1a f036 -005f1c ec15 CALL 0x6e2a,0x0 -005f1e f037 +005ef8 0e02 MOVLW 0x2 ebb_print_uint(value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005efa ec84 CALL 0x6d08,0x0 +005efc f036 +005efe ecfc CALL 0x6df8,0x0 +005f00 f036 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f20 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f22 5ce1 SUBWF 0xe1,0x0,0x0 -005f24 e202 BC 0x5f2a -005f26 6ae1 CLRF 0xe1,0x0 -005f28 52e5 MOVF 0xe5,0x1,0x0 -005f2a 6ee1 MOVWF 0xe1,0x0 -005f2c efb6 GOTO 0x6b6c -005f2e f035 +005f02 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f04 5ce1 SUBWF 0xe1,0x0,0x0 +005f06 e202 BC 0x5f0c +005f08 6ae1 CLRF 0xe1,0x0 +005f0a 52e5 MOVF 0xe5,0x1,0x0 +005f0c 6ee1 MOVWF 0xe1,0x0 +005f0e efa7 GOTO 0x6b4e +005f10 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PD is for Pin Direction D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "PD,,," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is "A", "B", "C" and indicates the port D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is a number between 0 and 7 and indicates which pin to change direction on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is "1" for input, "0" for output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f30 ec17 CALL 0x702e,0x0 void parse_PD_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f32 f038 -00702e dfd7 RCALL 0x6fde +005f12 ec03 CALL 0x7006,0x0 void parse_PD_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f14 f038 +007006 dfd6 RCALL 0x6fb4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char port; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char pin; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -23351,215 +23314,215 @@ Address Value Disassembly Source D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -007030 0e05 MOVLW 0x5 extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -007032 dfb0 RCALL 0x6f94 -007034 dfb3 RCALL 0x6f9c extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +007008 0e05 MOVLW 0x5 extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00700a dfad RCALL 0x6f66 +00700c dfb0 RCALL 0x6f6e extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c extract_number(kUCHAR, &direction, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f34 e001 BZ 0x5f38 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f36 d090 BRA 0x6058 -007036 0104 MOVLB 0x4 -007038 5184 MOVF 0x84,0x0,0x1 -00703a 0012 RETURN 0x0 +005f16 e001 BZ 0x5f1a if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f18 d090 BRA 0x603a +00700e 0104 MOVLB 0x4 +007010 5184 MOVF 0x84,0x0,0x1 +007012 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Limit check the parameters D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f38 0e02 MOVLW 0x2 if (direction > 1u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f3a 50db MOVF 0xdb,0x0,0x0 -005f3c 0801 SUBLW 0x1 -005f3e e201 BC 0x5f42 -005f40 d087 BRA 0x6050 +005f1a 0e02 MOVLW 0x2 if (direction > 1u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f1c 50db MOVF 0xdb,0x0,0x0 +005f1e 0801 SUBLW 0x1 +005f20 e201 BC 0x5f24 +005f22 d087 BRA 0x6032 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f42 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f44 50db MOVF 0xdb,0x0,0x0 -005f46 0807 SUBLW 0x7 -005f48 e201 BC 0x5f4c -005f4a d082 BRA 0x6050 +005f24 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f26 50db MOVF 0xdb,0x0,0x0 +005f28 0807 SUBLW 0x7 +005f2a e201 BC 0x5f2e +005f2c d082 BRA 0x6032 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f4c 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f4e ecf3 CALL 0x6be6,0x0 -005f50 f035 -005f52 e116 BNZ 0x5f80 +005f2e 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f30 ecdf CALL 0x6bbe,0x0 +005f32 f035 +005f34 e116 BNZ 0x5f62 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f54 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f56 50db MOVF 0xdb,0x0,0x0 -005f58 e10a BNZ 0x5f6e +005f36 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f38 50db MOVF 0xdb,0x0,0x0 +005f3a e10a BNZ 0x5f50 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f5a ecef CALL 0x6bde,0x0 bitclr(TRISA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f5c f035 -005f5e e003 BZ 0x5f66 -005f60 ece0 CALL 0x6bc0,0x0 -005f62 f035 -005f64 e1fd BNZ 0x5f60 -005f66 50f3 MOVF 0xf3,0x0,0x0 -005f68 1cf3 COMF 0xf3,0x0,0x0 -005f6a 1692 ANDWF 0x92,0x1,0x0 +005f3c ecdb CALL 0x6bb6,0x0 bitclr(TRISA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f3e f035 +005f40 e003 BZ 0x5f48 +005f42 eccc CALL 0x6b98,0x0 +005f44 f035 +005f46 e1fd BNZ 0x5f42 +005f48 50f3 MOVF 0xf3,0x0,0x0 +005f4a 1cf3 COMF 0xf3,0x0,0x0 +005f4c 1692 ANDWF 0x92,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f6c d073 BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f4e d073 BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f6e ecef CALL 0x6bde,0x0 bitset(TRISA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f70 f035 -005f72 e003 BZ 0x5f7a -005f74 ece0 CALL 0x6bc0,0x0 -005f76 f035 -005f78 e1fd BNZ 0x5f74 -005f7a 50f3 MOVF 0xf3,0x0,0x0 -005f7c 1292 IORWF 0x92,0x1,0x0 +005f50 ecdb CALL 0x6bb6,0x0 bitset(TRISA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f52 f035 +005f54 e003 BZ 0x5f5c +005f56 eccc CALL 0x6b98,0x0 +005f58 f035 +005f5a e1fd BNZ 0x5f56 +005f5c 50f3 MOVF 0xf3,0x0,0x0 +005f5e 1292 IORWF 0x92,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f7e d06a BRA 0x6054 else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f80 0e42 MOVLW 0x42 -005f82 ecf3 CALL 0x6be6,0x0 -005f84 f035 -005f86 e116 BNZ 0x5fb4 +005f60 d06a BRA 0x6036 else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f62 0e42 MOVLW 0x42 +005f64 ecdf CALL 0x6bbe,0x0 +005f66 f035 +005f68 e116 BNZ 0x5f96 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f88 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f8a 50db MOVF 0xdb,0x0,0x0 -005f8c e10a BNZ 0x5fa2 +005f6a 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f6c 50db MOVF 0xdb,0x0,0x0 +005f6e e10a BNZ 0x5f84 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f8e ecef CALL 0x6bde,0x0 bitclr(TRISB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005f90 f035 -005f92 e003 BZ 0x5f9a -005f94 ece0 CALL 0x6bc0,0x0 -005f96 f035 -005f98 e1fd BNZ 0x5f94 -005f9a 50f3 MOVF 0xf3,0x0,0x0 -005f9c 1cf3 COMF 0xf3,0x0,0x0 -005f9e 1693 ANDWF 0x93,0x1,0x0 +005f70 ecdb CALL 0x6bb6,0x0 bitclr(TRISB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f72 f035 +005f74 e003 BZ 0x5f7c +005f76 eccc CALL 0x6b98,0x0 +005f78 f035 +005f7a e1fd BNZ 0x5f76 +005f7c 50f3 MOVF 0xf3,0x0,0x0 +005f7e 1cf3 COMF 0xf3,0x0,0x0 +005f80 1693 ANDWF 0x93,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fa0 d059 BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f82 d059 BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fa2 ecef CALL 0x6bde,0x0 bitset(TRISB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fa4 f035 -005fa6 e003 BZ 0x5fae -005fa8 ece0 CALL 0x6bc0,0x0 -005faa f035 -005fac e1fd BNZ 0x5fa8 -005fae 50f3 MOVF 0xf3,0x0,0x0 -005fb0 1293 IORWF 0x93,0x1,0x0 +005f84 ecdb CALL 0x6bb6,0x0 bitset(TRISB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f86 f035 +005f88 e003 BZ 0x5f90 +005f8a eccc CALL 0x6b98,0x0 +005f8c f035 +005f8e e1fd BNZ 0x5f8a +005f90 50f3 MOVF 0xf3,0x0,0x0 +005f92 1293 IORWF 0x93,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fb2 d050 BRA 0x6054 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fb4 0e43 MOVLW 0x43 -005fb6 ecf3 CALL 0x6be6,0x0 -005fb8 f035 -005fba e116 BNZ 0x5fe8 +005f94 d050 BRA 0x6036 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005f96 0e43 MOVLW 0x43 +005f98 ecdf CALL 0x6bbe,0x0 +005f9a f035 +005f9c e116 BNZ 0x5fca { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fbc 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fbe 50db MOVF 0xdb,0x0,0x0 -005fc0 e10a BNZ 0x5fd6 +005f9e 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fa0 50db MOVF 0xdb,0x0,0x0 +005fa2 e10a BNZ 0x5fb8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fc2 ecef CALL 0x6bde,0x0 bitclr(TRISC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fc4 f035 -005fc6 e003 BZ 0x5fce -005fc8 ece0 CALL 0x6bc0,0x0 -005fca f035 -005fcc e1fd BNZ 0x5fc8 -005fce 50f3 MOVF 0xf3,0x0,0x0 -005fd0 1cf3 COMF 0xf3,0x0,0x0 -005fd2 1694 ANDWF 0x94,0x1,0x0 +005fa4 ecdb CALL 0x6bb6,0x0 bitclr(TRISC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fa6 f035 +005fa8 e003 BZ 0x5fb0 +005faa eccc CALL 0x6b98,0x0 +005fac f035 +005fae e1fd BNZ 0x5faa +005fb0 50f3 MOVF 0xf3,0x0,0x0 +005fb2 1cf3 COMF 0xf3,0x0,0x0 +005fb4 1694 ANDWF 0x94,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fd4 d03f BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fb6 d03f BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fd6 ecef CALL 0x6bde,0x0 bitset(TRISC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fd8 f035 -005fda e003 BZ 0x5fe2 -005fdc ece0 CALL 0x6bc0,0x0 -005fde f035 -005fe0 e1fd BNZ 0x5fdc -005fe2 50f3 MOVF 0xf3,0x0,0x0 -005fe4 1294 IORWF 0x94,0x1,0x0 +005fb8 ecdb CALL 0x6bb6,0x0 bitset(TRISC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fba f035 +005fbc e003 BZ 0x5fc4 +005fbe eccc CALL 0x6b98,0x0 +005fc0 f035 +005fc2 e1fd BNZ 0x5fbe +005fc4 50f3 MOVF 0xf3,0x0,0x0 +005fc6 1294 IORWF 0x94,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fe6 d036 BRA 0x6054 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005fe8 0e44 MOVLW 0x44 -005fea ecf3 CALL 0x6be6,0x0 -005fec f035 -005fee e116 BNZ 0x601c +005fc8 d036 BRA 0x6036 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fca 0e44 MOVLW 0x44 +005fcc ecdf CALL 0x6bbe,0x0 +005fce f035 +005fd0 e116 BNZ 0x5ffe { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ff0 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ff2 50db MOVF 0xdb,0x0,0x0 -005ff4 e10a BNZ 0x600a +005fd2 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fd4 50db MOVF 0xdb,0x0,0x0 +005fd6 e10a BNZ 0x5fec { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ff6 ecef CALL 0x6bde,0x0 bitclr(TRISD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -005ff8 f035 -005ffa e003 BZ 0x6002 -005ffc ece0 CALL 0x6bc0,0x0 -005ffe f035 -006000 e1fd BNZ 0x5ffc -006002 50f3 MOVF 0xf3,0x0,0x0 -006004 1cf3 COMF 0xf3,0x0,0x0 -006006 1695 ANDWF 0x95,0x1,0x0 +005fd8 ecdb CALL 0x6bb6,0x0 bitclr(TRISD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fda f035 +005fdc e003 BZ 0x5fe4 +005fde eccc CALL 0x6b98,0x0 +005fe0 f035 +005fe2 e1fd BNZ 0x5fde +005fe4 50f3 MOVF 0xf3,0x0,0x0 +005fe6 1cf3 COMF 0xf3,0x0,0x0 +005fe8 1695 ANDWF 0x95,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006008 d025 BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fea d025 BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00600a ecef CALL 0x6bde,0x0 bitset(TRISD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00600c f035 -00600e e003 BZ 0x6016 -006010 ece0 CALL 0x6bc0,0x0 -006012 f035 -006014 e1fd BNZ 0x6010 -006016 50f3 MOVF 0xf3,0x0,0x0 -006018 1295 IORWF 0x95,0x1,0x0 +005fec ecdb CALL 0x6bb6,0x0 bitset(TRISD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005fee f035 +005ff0 e003 BZ 0x5ff8 +005ff2 eccc CALL 0x6b98,0x0 +005ff4 f035 +005ff6 e1fd BNZ 0x5ff2 +005ff8 50f3 MOVF 0xf3,0x0,0x0 +005ffa 1295 IORWF 0x95,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00601a d01c BRA 0x6054 else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00601c 0e45 MOVLW 0x45 -00601e ecf3 CALL 0x6be6,0x0 -006020 f035 -006022 e116 BNZ 0x6050 +005ffc d01c BRA 0x6036 else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +005ffe 0e45 MOVLW 0x45 +006000 ecdf CALL 0x6bbe,0x0 +006002 f035 +006004 e116 BNZ 0x6032 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006024 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006026 50db MOVF 0xdb,0x0,0x0 -006028 e10a BNZ 0x603e +006006 0e02 MOVLW 0x2 if (0u == direction) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006008 50db MOVF 0xdb,0x0,0x0 +00600a e10a BNZ 0x6020 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00602a ecef CALL 0x6bde,0x0 bitclr(TRISE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00602c f035 -00602e e003 BZ 0x6036 -006030 ece0 CALL 0x6bc0,0x0 -006032 f035 -006034 e1fd BNZ 0x6030 -006036 50f3 MOVF 0xf3,0x0,0x0 -006038 1cf3 COMF 0xf3,0x0,0x0 -00603a 1696 ANDWF 0x96,0x1,0x0 +00600c ecdb CALL 0x6bb6,0x0 bitclr(TRISE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00600e f035 +006010 e003 BZ 0x6018 +006012 eccc CALL 0x6b98,0x0 +006014 f035 +006016 e1fd BNZ 0x6012 +006018 50f3 MOVF 0xf3,0x0,0x0 +00601a 1cf3 COMF 0xf3,0x0,0x0 +00601c 1696 ANDWF 0x96,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00603c d00b BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00601e d00b BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00603e ecef CALL 0x6bde,0x0 bitset(TRISE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006040 f035 -006042 e003 BZ 0x604a -006044 ece0 CALL 0x6bc0,0x0 -006046 f035 -006048 e1fd BNZ 0x6044 -00604a 50f3 MOVF 0xf3,0x0,0x0 -00604c 1296 IORWF 0x96,0x1,0x0 +006020 ecdb CALL 0x6bb6,0x0 bitset(TRISE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006022 f035 +006024 e003 BZ 0x602c +006026 eccc CALL 0x6b98,0x0 +006028 f035 +00602a e1fd BNZ 0x6026 +00602c 50f3 MOVF 0xf3,0x0,0x0 +00602e 1296 IORWF 0x96,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00604e d002 BRA 0x6054 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006030 d002 BRA 0x6036 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006050 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006052 d002 BRA 0x6058 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006032 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006034 d002 BRA 0x603a return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006054 ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006056 f035 -006058 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00605a 5ce1 SUBWF 0xe1,0x0,0x0 -00605c e202 BC 0x6062 -00605e 6ae1 CLRF 0xe1,0x0 -006060 52e5 MOVF 0xe5,0x1,0x0 -006062 6ee1 MOVWF 0xe1,0x0 -006064 efb6 GOTO 0x6b6c -006066 f035 +006036 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006038 f035 +00603a 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00603c 5ce1 SUBWF 0xe1,0x0,0x0 +00603e e202 BC 0x6044 +006040 6ae1 CLRF 0xe1,0x0 +006042 52e5 MOVF 0xe5,0x1,0x0 +006044 6ee1 MOVWF 0xe1,0x0 +006046 efa7 GOTO 0x6b4e +006048 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PI is for Pin Input D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "PI,," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -23568,425 +23531,425 @@ Address Value Disassembly Source // The command returns a "PI," packet, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // where is the value (0 or 1 for digital) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // value for that pin. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006068 ecf3 CALL 0x6fe6,0x0 void parse_PI_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00606a f037 -006fe6 ddbd RCALL 0x6b62 -006fe8 0e03 MOVLW 0x3 -006fea 26e1 ADDWF 0xe1,0x1,0x0 -006fec 0012 RETURN 0x0 +00604a ecde CALL 0x6fbc,0x0 void parse_PI_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00604c f037 +006fbc ddc3 RCALL 0x6b44 +006fbe 0e03 MOVLW 0x3 +006fc0 26e1 ADDWF 0xe1,0x1,0x0 +006fc2 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 port; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 pin; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00606c 0e02 MOVLW 0x2 UINT8 value = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00606e 6adb CLRF 0xdb,0x0 +00604e 0e02 MOVLW 0x2 UINT8 value = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006050 6adb CLRF 0xdb,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006070 ec63 CALL 0x6ec6,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006072 f037 -006ec6 0e01 MOVLW 0x1 -006ec8 6ee6 MOVWF 0xe6,0x0 -006eca 6ee6 MOVWF 0xe6,0x0 -006ecc efa6 GOTO 0x6b4c -006ece f035 +006052 ec4c CALL 0x6e98,0x0 print_command(TRUE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006054 f037 +006e98 0e01 MOVLW 0x1 +006e9a 6ee6 MOVWF 0xe6,0x0 +006e9c 6ee6 MOVWF 0xe6,0x0 +006e9e ef97 GOTO 0x6b2e +006ea0 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006074 0e05 MOVLW 0x5 extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006076 ecca CALL 0x6f94,0x0 -006078 f037 -00607a 0f01 ADDLW 0x1 extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00607c ec1e CALL 0x703c,0x0 -00607e f038 -00703c dedc RCALL 0x6df6 +006056 0e05 MOVLW 0x5 extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006058 ecb3 CALL 0x6f66,0x0 +00605a f037 +00605c 0f01 ADDLW 0x1 extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00605e ec0a CALL 0x7014,0x0 +006060 f038 +007014 ded7 RCALL 0x6dc4 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006080 e160 BNZ 0x6142 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00703e 0104 MOVLB 0x4 -007040 5184 MOVF 0x84,0x0,0x1 -007042 0012 RETURN 0x0 +006062 e160 BNZ 0x6124 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +007016 0104 MOVLB 0x4 +007018 5184 MOVF 0x84,0x0,0x1 +00701a 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Limit check the parameters D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006082 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006084 50db MOVF 0xdb,0x0,0x0 -006086 0807 SUBLW 0x7 -006088 e350 BNC 0x612a +006064 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006066 50db MOVF 0xdb,0x0,0x0 +006068 0807 SUBLW 0x7 +00606a e350 BNC 0x610c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Then test the bit in question based upon port D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00608a 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00608c ecf3 CALL 0x6be6,0x0 -00608e f035 -006090 e10a BNZ 0x60a6 +00606c 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00606e ecdf CALL 0x6bbe,0x0 +006070 f035 +006072 e10a BNZ 0x6088 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006092 ecef CALL 0x6bde,0x0 value = bittst(PORTA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006094 f035 -006096 e003 BZ 0x609e -006098 ece0 CALL 0x6bc0,0x0 -00609a f035 -00609c e1fd BNZ 0x6098 -00609e 50f3 MOVF 0xf3,0x0,0x0 -0060a0 1480 ANDWF 0x80,0x0,0x0 -0060a2 e039 BZ 0x6116 +006074 ecdb CALL 0x6bb6,0x0 value = bittst(PORTA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006076 f035 +006078 e003 BZ 0x6080 +00607a eccc CALL 0x6b98,0x0 +00607c f035 +00607e e1fd BNZ 0x607a +006080 50f3 MOVF 0xf3,0x0,0x0 +006082 1480 ANDWF 0x80,0x0,0x0 +006084 e039 BZ 0x60f8 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060a4 d029 BRA 0x60f8 else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060a6 0e42 MOVLW 0x42 -0060a8 ecf3 CALL 0x6be6,0x0 -0060aa f035 -0060ac e10a BNZ 0x60c2 +006086 d029 BRA 0x60da else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006088 0e42 MOVLW 0x42 +00608a ecdf CALL 0x6bbe,0x0 +00608c f035 +00608e e10a BNZ 0x60a4 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060ae ecef CALL 0x6bde,0x0 value = bittst(PORTB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060b0 f035 -0060b2 e003 BZ 0x60ba -0060b4 ece0 CALL 0x6bc0,0x0 -0060b6 f035 -0060b8 e1fd BNZ 0x60b4 -0060ba 50f3 MOVF 0xf3,0x0,0x0 -0060bc 1481 ANDWF 0x81,0x0,0x0 -0060be e11c BNZ 0x60f8 -0060c0 d02a BRA 0x6116 +006090 ecdb CALL 0x6bb6,0x0 value = bittst(PORTB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006092 f035 +006094 e003 BZ 0x609c +006096 eccc CALL 0x6b98,0x0 +006098 f035 +00609a e1fd BNZ 0x6096 +00609c 50f3 MOVF 0xf3,0x0,0x0 +00609e 1481 ANDWF 0x81,0x0,0x0 +0060a0 e11c BNZ 0x60da +0060a2 d02a BRA 0x60f8 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060c2 0e43 MOVLW 0x43 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060c4 ecf3 CALL 0x6be6,0x0 -0060c6 f035 -0060c8 e10a BNZ 0x60de +0060a4 0e43 MOVLW 0x43 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060a6 ecdf CALL 0x6bbe,0x0 +0060a8 f035 +0060aa e10a BNZ 0x60c0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060ca ecef CALL 0x6bde,0x0 value = bittst(PORTC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060cc f035 -0060ce e003 BZ 0x60d6 -0060d0 ece0 CALL 0x6bc0,0x0 -0060d2 f035 -0060d4 e1fd BNZ 0x60d0 -0060d6 50f3 MOVF 0xf3,0x0,0x0 -0060d8 1482 ANDWF 0x82,0x0,0x0 -0060da e10e BNZ 0x60f8 -0060dc d01c BRA 0x6116 +0060ac ecdb CALL 0x6bb6,0x0 value = bittst(PORTC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060ae f035 +0060b0 e003 BZ 0x60b8 +0060b2 eccc CALL 0x6b98,0x0 +0060b4 f035 +0060b6 e1fd BNZ 0x60b2 +0060b8 50f3 MOVF 0xf3,0x0,0x0 +0060ba 1482 ANDWF 0x82,0x0,0x0 +0060bc e10e BNZ 0x60da +0060be d01c BRA 0x60f8 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060de 0e44 MOVLW 0x44 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060e0 ecf3 CALL 0x6be6,0x0 +0060c0 0e44 MOVLW 0x44 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060c2 ecdf CALL 0x6bbe,0x0 +0060c4 f035 +0060c6 e10b BNZ 0x60de + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060c8 ecdb CALL 0x6bb6,0x0 value = bittst(PORTD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060ca f035 +0060cc e003 BZ 0x60d4 +0060ce eccc CALL 0x6b98,0x0 +0060d0 f035 +0060d2 e1fd BNZ 0x60ce +0060d4 50f3 MOVF 0xf3,0x0,0x0 +0060d6 1483 ANDWF 0x83,0x0,0x0 +0060d8 e00f BZ 0x60f8 +0060da 0e01 MOVLW 0x1 + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060dc d010 BRA 0x60fe else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060de 0e45 MOVLW 0x45 +0060e0 ecdf CALL 0x6bbe,0x0 0060e2 f035 -0060e4 e10b BNZ 0x60fc +0060e4 e113 BNZ 0x610c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060e6 ecef CALL 0x6bde,0x0 value = bittst(PORTD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0060e6 ecdb CALL 0x6bb6,0x0 value = bittst(PORTE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 0060e8 f035 0060ea e003 BZ 0x60f2 -0060ec ece0 CALL 0x6bc0,0x0 +0060ec eccc CALL 0x6b98,0x0 0060ee f035 0060f0 e1fd BNZ 0x60ec 0060f2 50f3 MOVF 0xf3,0x0,0x0 -0060f4 1483 ANDWF 0x83,0x0,0x0 -0060f6 e00f BZ 0x6116 -0060f8 0e01 MOVLW 0x1 - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060fa d010 BRA 0x611c else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0060fc 0e45 MOVLW 0x45 -0060fe ecf3 CALL 0x6be6,0x0 -006100 f035 -006102 e113 BNZ 0x612a - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006104 ecef CALL 0x6bde,0x0 value = bittst(PORTE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006106 f035 -006108 e003 BZ 0x6110 -00610a ece0 CALL 0x6bc0,0x0 -00610c f035 -00610e e1fd BNZ 0x610a -006110 50f3 MOVF 0xf3,0x0,0x0 -006112 1484 ANDWF 0x84,0x0,0x0 -006114 e102 BNZ 0x611a -006116 0e00 MOVLW 0x0 -006118 d001 BRA 0x611c -00611a 0e01 MOVLW 0x1 -00611c 6ee7 MOVWF 0xe7,0x0 -00611e 0e02 MOVLW 0x2 -006120 cfe7 MOVFF 0xfe7,0xfdb -006122 ffdb +0060f4 1484 ANDWF 0x84,0x0,0x0 +0060f6 e102 BNZ 0x60fc +0060f8 0e00 MOVLW 0x0 +0060fa d001 BRA 0x60fe +0060fc 0e01 MOVLW 0x1 +0060fe 6ee7 MOVWF 0xe7,0x0 +006100 0e02 MOVLW 0x2 +006102 cfe7 MOVFF 0xfe7,0xfdb +006104 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00612a 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00612c d00a BRA 0x6142 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00610c 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00610e d00a BRA 0x6124 return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Convert to just a binary 1 or 0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006124 50db MOVF 0xdb,0x0,0x0 if (value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006126 e008 BZ 0x6138 -006128 d002 BRA 0x612e +006106 50db MOVF 0xdb,0x0,0x0 if (value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006108 e008 BZ 0x611a +00610a d002 BRA 0x6110 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00612e 0e01 MOVLW 0x1 value = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006130 6ef3 MOVWF 0xf3,0x0 -006132 0e02 MOVLW 0x2 -006134 cff3 MOVFF 0xff3,0xfdb -006136 ffdb +006110 0e01 MOVLW 0x1 value = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006112 6ef3 MOVWF 0xf3,0x0 +006114 0e02 MOVLW 0x2 +006116 cff3 MOVFF 0xff3,0xfdb +006118 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now send back our response D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006138 0e02 MOVLW 0x2 ebb_print_uint(value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00613a ec98 CALL 0x6d30,0x0 -00613c f036 -00613e ec15 CALL 0x6e2a,0x0 -006140 f037 -006d30 cfdb MOVFF 0xfdb,0x4e -006d32 f04e -006d34 efc6 GOTO 0x6f8c -006d36 f037 -006f8c 6a4f CLRF 0x4f,0x0 -006f8e 6a50 CLRF 0x50,0x0 -006f90 6a51 CLRF 0x51,0x0 -006f92 0012 RETURN 0x0 +00611a 0e02 MOVLW 0x2 ebb_print_uint(value); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00611c ec84 CALL 0x6d08,0x0 +00611e f036 +006120 ecfc CALL 0x6df8,0x0 +006122 f036 +006d08 cfdb MOVFF 0xfdb,0x4e +006d0a f04e +006d0c ef75 GOTO 0x6eea +006d0e f037 +006eea 6a4f CLRF 0x4f,0x0 +006eec 6a50 CLRF 0x50,0x0 +006eee 6a51 CLRF 0x51,0x0 +006ef0 0012 RETURN 0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006142 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006144 5ce1 SUBWF 0xe1,0x0,0x0 -006146 e202 BC 0x614c -006148 6ae1 CLRF 0xe1,0x0 -00614a 52e5 MOVF 0xe5,0x1,0x0 -00614c 6ee1 MOVWF 0xe1,0x0 -00614e efb6 GOTO 0x6b6c -006150 f035 +006124 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006126 5ce1 SUBWF 0xe1,0x0,0x0 +006128 e202 BC 0x612e +00612a 6ae1 CLRF 0xe1,0x0 +00612c 52e5 MOVF 0xe5,0x1,0x0 +00612e 6ee1 MOVWF 0xe1,0x0 +006130 efa7 GOTO 0x6b4e +006132 f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PO is for Pin Output D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "PO,,," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is "A", "B", "C" and indicates the port D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is a number between 0 and 7 and indicates which pin to write out the value to D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is "1" or "0" and indicates the state to change the pin to D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006152 ec17 CALL 0x702e,0x0 void parse_PO_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006154 f038 -006fde ddc1 RCALL 0x6b62 -006fe0 0e03 MOVLW 0x3 -006fe2 ef0d GOTO 0x6e1a +006134 ec03 CALL 0x7006,0x0 void parse_PO_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006136 f038 +006fb4 ddc7 RCALL 0x6b44 +006fb6 0e03 MOVLW 0x3 +006fb8 eff4 GOTO 0x6de8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char port; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char pin; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006fe4 f037 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006fba f036 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006f94 ddce RCALL 0x6b32 extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006f96 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006f98 50d9 MOVF 0xd9,0x0,0x0 -006f9a 0012 RETURN 0x0 -006f9c 0f01 ADDLW 0x1 -006f9e df2b RCALL 0x6df6 -006fa0 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006fa2 50d9 MOVF 0xd9,0x0,0x0 -006fa4 0f02 ADDLW 0x2 -006fa6 effb GOTO 0x6df6 -006fa8 f036 +006f66 ddd3 RCALL 0x6b0e extract_number(kUCASE_ASCII_CHAR, &port, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006f68 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &pin, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006f6a 50d9 MOVF 0xd9,0x0,0x0 +006f6c 0012 RETURN 0x0 +006f6e 0f01 ADDLW 0x1 +006f70 df29 RCALL 0x6dc4 +006f72 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006f74 50d9 MOVF 0xd9,0x0,0x0 +006f76 0f02 ADDLW 0x2 +006f78 efe2 GOTO 0x6dc4 +006f7a f036 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006156 e001 BZ 0x615a if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006158 d090 BRA 0x627a +006138 e001 BZ 0x613c if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00613a d090 BRA 0x625c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Limit check the parameters D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00615a 0e02 MOVLW 0x2 if (value > 1u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00615c 50db MOVF 0xdb,0x0,0x0 -00615e 0801 SUBLW 0x1 -006160 e201 BC 0x6164 -006162 d087 BRA 0x6272 +00613c 0e02 MOVLW 0x2 if (value > 1u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00613e 50db MOVF 0xdb,0x0,0x0 +006140 0801 SUBLW 0x1 +006142 e201 BC 0x6146 +006144 d087 BRA 0x6254 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006164 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006166 50db MOVF 0xdb,0x0,0x0 -006168 0807 SUBLW 0x7 -00616a e201 BC 0x616e -00616c d082 BRA 0x6272 +006146 0e01 MOVLW 0x1 if (pin > 7u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006148 50db MOVF 0xdb,0x0,0x0 +00614a 0807 SUBLW 0x7 +00614c e201 BC 0x6150 +00614e d082 BRA 0x6254 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00616e 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006170 ecf3 CALL 0x6be6,0x0 -006172 f035 -006174 e116 BNZ 0x61a2 +006150 0e41 MOVLW 0x41 if ('A' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006152 ecdf CALL 0x6bbe,0x0 +006154 f035 +006156 e116 BNZ 0x6184 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006176 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006178 50db MOVF 0xdb,0x0,0x0 -00617a e10a BNZ 0x6190 +006158 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00615a 50db MOVF 0xdb,0x0,0x0 +00615c e10a BNZ 0x6172 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00617c ecef CALL 0x6bde,0x0 bitclr(LATA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00617e f035 -006180 e003 BZ 0x6188 -006182 ece0 CALL 0x6bc0,0x0 -006184 f035 -006186 e1fd BNZ 0x6182 -006188 50f3 MOVF 0xf3,0x0,0x0 -00618a 1cf3 COMF 0xf3,0x0,0x0 -00618c 1689 ANDWF 0x89,0x1,0x0 +00615e ecdb CALL 0x6bb6,0x0 bitclr(LATA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006160 f035 +006162 e003 BZ 0x616a +006164 eccc CALL 0x6b98,0x0 +006166 f035 +006168 e1fd BNZ 0x6164 +00616a 50f3 MOVF 0xf3,0x0,0x0 +00616c 1cf3 COMF 0xf3,0x0,0x0 +00616e 1689 ANDWF 0x89,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00618e d073 BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006170 d073 BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006190 ecef CALL 0x6bde,0x0 bitset(LATA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006192 f035 -006194 e003 BZ 0x619c -006196 ece0 CALL 0x6bc0,0x0 -006198 f035 -00619a e1fd BNZ 0x6196 -00619c 50f3 MOVF 0xf3,0x0,0x0 -00619e 1289 IORWF 0x89,0x1,0x0 +006172 ecdb CALL 0x6bb6,0x0 bitset(LATA, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006174 f035 +006176 e003 BZ 0x617e +006178 eccc CALL 0x6b98,0x0 +00617a f035 +00617c e1fd BNZ 0x6178 +00617e 50f3 MOVF 0xf3,0x0,0x0 +006180 1289 IORWF 0x89,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061a0 d06a BRA 0x6276 else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061a2 0e42 MOVLW 0x42 -0061a4 ecf3 CALL 0x6be6,0x0 -0061a6 f035 -0061a8 e116 BNZ 0x61d6 +006182 d06a BRA 0x6258 else if ('B' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006184 0e42 MOVLW 0x42 +006186 ecdf CALL 0x6bbe,0x0 +006188 f035 +00618a e116 BNZ 0x61b8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061aa 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061ac 50db MOVF 0xdb,0x0,0x0 -0061ae e10a BNZ 0x61c4 +00618c 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00618e 50db MOVF 0xdb,0x0,0x0 +006190 e10a BNZ 0x61a6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061b0 ecef CALL 0x6bde,0x0 bitclr(LATB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061b2 f035 -0061b4 e003 BZ 0x61bc -0061b6 ece0 CALL 0x6bc0,0x0 -0061b8 f035 -0061ba e1fd BNZ 0x61b6 -0061bc 50f3 MOVF 0xf3,0x0,0x0 -0061be 1cf3 COMF 0xf3,0x0,0x0 -0061c0 168a ANDWF 0x8a,0x1,0x0 +006192 ecdb CALL 0x6bb6,0x0 bitclr(LATB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006194 f035 +006196 e003 BZ 0x619e +006198 eccc CALL 0x6b98,0x0 +00619a f035 +00619c e1fd BNZ 0x6198 +00619e 50f3 MOVF 0xf3,0x0,0x0 +0061a0 1cf3 COMF 0xf3,0x0,0x0 +0061a2 168a ANDWF 0x8a,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061c2 d059 BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061a4 d059 BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061c4 ecef CALL 0x6bde,0x0 bitset(LATB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061c6 f035 -0061c8 e003 BZ 0x61d0 -0061ca ece0 CALL 0x6bc0,0x0 -0061cc f035 -0061ce e1fd BNZ 0x61ca -0061d0 50f3 MOVF 0xf3,0x0,0x0 -0061d2 128a IORWF 0x8a,0x1,0x0 +0061a6 ecdb CALL 0x6bb6,0x0 bitset(LATB, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061a8 f035 +0061aa e003 BZ 0x61b2 +0061ac eccc CALL 0x6b98,0x0 +0061ae f035 +0061b0 e1fd BNZ 0x61ac +0061b2 50f3 MOVF 0xf3,0x0,0x0 +0061b4 128a IORWF 0x8a,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061d4 d050 BRA 0x6276 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061d6 0e43 MOVLW 0x43 -0061d8 ecf3 CALL 0x6be6,0x0 -0061da f035 -0061dc e116 BNZ 0x620a +0061b6 d050 BRA 0x6258 else if ('C' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061b8 0e43 MOVLW 0x43 +0061ba ecdf CALL 0x6bbe,0x0 +0061bc f035 +0061be e116 BNZ 0x61ec { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061de 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061e0 50db MOVF 0xdb,0x0,0x0 -0061e2 e10a BNZ 0x61f8 +0061c0 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061c2 50db MOVF 0xdb,0x0,0x0 +0061c4 e10a BNZ 0x61da { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061e4 ecef CALL 0x6bde,0x0 bitclr(LATC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061e6 f035 -0061e8 e003 BZ 0x61f0 -0061ea ece0 CALL 0x6bc0,0x0 -0061ec f035 -0061ee e1fd BNZ 0x61ea -0061f0 50f3 MOVF 0xf3,0x0,0x0 -0061f2 1cf3 COMF 0xf3,0x0,0x0 -0061f4 168b ANDWF 0x8b,0x1,0x0 +0061c6 ecdb CALL 0x6bb6,0x0 bitclr(LATC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061c8 f035 +0061ca e003 BZ 0x61d2 +0061cc eccc CALL 0x6b98,0x0 +0061ce f035 +0061d0 e1fd BNZ 0x61cc +0061d2 50f3 MOVF 0xf3,0x0,0x0 +0061d4 1cf3 COMF 0xf3,0x0,0x0 +0061d6 168b ANDWF 0x8b,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061f6 d03f BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061d8 d03f BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061f8 ecef CALL 0x6bde,0x0 bitset(LATC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0061fa f035 -0061fc e003 BZ 0x6204 -0061fe ece0 CALL 0x6bc0,0x0 -006200 f035 -006202 e1fd BNZ 0x61fe -006204 50f3 MOVF 0xf3,0x0,0x0 -006206 128b IORWF 0x8b,0x1,0x0 +0061da ecdb CALL 0x6bb6,0x0 bitset(LATC, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061dc f035 +0061de e003 BZ 0x61e6 +0061e0 eccc CALL 0x6b98,0x0 +0061e2 f035 +0061e4 e1fd BNZ 0x61e0 +0061e6 50f3 MOVF 0xf3,0x0,0x0 +0061e8 128b IORWF 0x8b,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006208 d036 BRA 0x6276 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00620a 0e44 MOVLW 0x44 -00620c ecf3 CALL 0x6be6,0x0 -00620e f035 -006210 e116 BNZ 0x623e +0061ea d036 BRA 0x6258 else if ('D' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061ec 0e44 MOVLW 0x44 +0061ee ecdf CALL 0x6bbe,0x0 +0061f0 f035 +0061f2 e116 BNZ 0x6220 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006212 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006214 50db MOVF 0xdb,0x0,0x0 -006216 e10a BNZ 0x622c +0061f4 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061f6 50db MOVF 0xdb,0x0,0x0 +0061f8 e10a BNZ 0x620e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006218 ecef CALL 0x6bde,0x0 bitclr(LATD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00621a f035 -00621c e003 BZ 0x6224 -00621e ece0 CALL 0x6bc0,0x0 -006220 f035 -006222 e1fd BNZ 0x621e -006224 50f3 MOVF 0xf3,0x0,0x0 -006226 1cf3 COMF 0xf3,0x0,0x0 -006228 168c ANDWF 0x8c,0x1,0x0 +0061fa ecdb CALL 0x6bb6,0x0 bitclr(LATD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0061fc f035 +0061fe e003 BZ 0x6206 +006200 eccc CALL 0x6b98,0x0 +006202 f035 +006204 e1fd BNZ 0x6200 +006206 50f3 MOVF 0xf3,0x0,0x0 +006208 1cf3 COMF 0xf3,0x0,0x0 +00620a 168c ANDWF 0x8c,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00622a d025 BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00620c d025 BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00622c ecef CALL 0x6bde,0x0 bitset(LATD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00622e f035 -006230 e003 BZ 0x6238 -006232 ece0 CALL 0x6bc0,0x0 -006234 f035 -006236 e1fd BNZ 0x6232 -006238 50f3 MOVF 0xf3,0x0,0x0 -00623a 128c IORWF 0x8c,0x1,0x0 +00620e ecdb CALL 0x6bb6,0x0 bitset(LATD, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006210 f035 +006212 e003 BZ 0x621a +006214 eccc CALL 0x6b98,0x0 +006216 f035 +006218 e1fd BNZ 0x6214 +00621a 50f3 MOVF 0xf3,0x0,0x0 +00621c 128c IORWF 0x8c,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00623c d01c BRA 0x6276 else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00623e 0e45 MOVLW 0x45 -006240 ecf3 CALL 0x6be6,0x0 -006242 f035 -006244 e116 BNZ 0x6272 -006be6 6e4e MOVWF 0x4e,0x0 -006be8 50df MOVF 0xdf,0x0,0x0 -006bea 5c4e SUBWF 0x4e,0x0,0x0 -006bec 0012 RETURN 0x0 +00621e d01c BRA 0x6258 else if ('E' == port) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006220 0e45 MOVLW 0x45 +006222 ecdf CALL 0x6bbe,0x0 +006224 f035 +006226 e116 BNZ 0x6254 +006bbe 6e4e MOVWF 0x4e,0x0 +006bc0 50df MOVF 0xdf,0x0,0x0 +006bc2 5c4e SUBWF 0x4e,0x0,0x0 +006bc4 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006246 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006248 50db MOVF 0xdb,0x0,0x0 -00624a e10a BNZ 0x6260 +006228 0e02 MOVLW 0x2 if (0u == value) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00622a 50db MOVF 0xdb,0x0,0x0 +00622c e10a BNZ 0x6242 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00624c ecef CALL 0x6bde,0x0 bitclr(LATE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00624e f035 -006250 e003 BZ 0x6258 -006252 ece0 CALL 0x6bc0,0x0 -006254 f035 -006256 e1fd BNZ 0x6252 -006258 50f3 MOVF 0xf3,0x0,0x0 -00625a 1cf3 COMF 0xf3,0x0,0x0 -00625c 168d ANDWF 0x8d,0x1,0x0 +00622e ecdb CALL 0x6bb6,0x0 bitclr(LATE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006230 f035 +006232 e003 BZ 0x623a +006234 eccc CALL 0x6b98,0x0 +006236 f035 +006238 e1fd BNZ 0x6234 +00623a 50f3 MOVF 0xf3,0x0,0x0 +00623c 1cf3 COMF 0xf3,0x0,0x0 +00623e 168d ANDWF 0x8d,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00625e d00b BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006240 d00b BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006260 ecef CALL 0x6bde,0x0 bitset(LATE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006262 f035 -006264 e003 BZ 0x626c -006266 ece0 CALL 0x6bc0,0x0 -006268 f035 -00626a e1fd BNZ 0x6266 -00626c 50f3 MOVF 0xf3,0x0,0x0 -00626e 128d IORWF 0x8d,0x1,0x0 -006bc0 90d8 BCF 0xd8,0x0,0x0 -006bc2 36f3 RLCF 0xf3,0x1,0x0 -006bc4 06e8 DECF 0xe8,0x1,0x0 -006bc6 0012 RETURN 0x0 -006bde 0e01 MOVLW 0x1 -006be0 6ef3 MOVWF 0xf3,0x0 -006be2 50db MOVF 0xdb,0x0,0x0 -006be4 0012 RETURN 0x0 +006242 ecdb CALL 0x6bb6,0x0 bitset(LATE, pin); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006244 f035 +006246 e003 BZ 0x624e +006248 eccc CALL 0x6b98,0x0 +00624a f035 +00624c e1fd BNZ 0x6248 +00624e 50f3 MOVF 0xf3,0x0,0x0 +006250 128d IORWF 0x8d,0x1,0x0 +006b98 90d8 BCF 0xd8,0x0,0x0 +006b9a 36f3 RLCF 0xf3,0x1,0x0 +006b9c 06e8 DECF 0xe8,0x1,0x0 +006b9e 0012 RETURN 0x0 +006bb6 0e01 MOVLW 0x1 +006bb8 6ef3 MOVWF 0xf3,0x0 +006bba 50db MOVF 0xdb,0x0,0x0 +006bbc 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006270 d002 BRA 0x6276 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006252 d002 BRA 0x6258 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006272 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006274 d002 BRA 0x627a return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006254 8d84 BSF 0x84,0x6,0x1 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006256 d002 BRA 0x625c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006276 ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006278 f035 -00627a 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00627c 5ce1 SUBWF 0xe1,0x0,0x0 -00627e e202 BC 0x6284 -006280 6ae1 CLRF 0xe1,0x0 -006282 52e5 MOVF 0xe5,0x1,0x0 -006284 6ee1 MOVWF 0xe1,0x0 -006286 efb6 GOTO 0x6b6c -006288 f035 +006258 ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00625a f035 +00625c 0e03 MOVLW 0x3 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00625e 5ce1 SUBWF 0xe1,0x0,0x0 +006260 e202 BC 0x6266 +006262 6ae1 CLRF 0xe1,0x0 +006264 52e5 MOVF 0xe5,0x1,0x0 +006266 6ee1 MOVWF 0xe1,0x0 +006268 efa7 GOTO 0x6b4e +00626a f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #if PC_PG_T_COMMANDS_ENABLED D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // PC Pulse Configure D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24079,74 +24042,74 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c #endif D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00628a cfd9 MOVFF 0xfd9,0xfe6 void LongDelay(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00628c ffe6 -00628e cfe1 MOVFF 0xfe1,0xfd9 -006290 ffd9 -006292 52e6 MOVF 0xe6,0x1,0x0 +00626c cfd9 MOVFF 0xfd9,0xfe6 void LongDelay(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00626e ffe6 +006270 cfe1 MOVFF 0xfe1,0xfd9 +006272 ffd9 +006274 52e6 MOVF 0xe6,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // A basic for() loop decrementing a 16 bit number would be simpler, but seems to take more code space for D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // a given delay. So do this instead: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006294 6adf CLRF 0xdf,0x0 for(i = 0; i < 0xFF; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006296 0eff MOVLW 0xff -006298 5cdf SUBWF 0xdf,0x0,0x0 -00629a e20a BC 0x62b0 -0062ac 2adf INCF 0xdf,0x1,0x0 -0062ae d7f3 BRA 0x6296 +006276 6adf CLRF 0xdf,0x0 for(i = 0; i < 0xFF; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006278 0eff MOVLW 0xff +00627a 5cdf SUBWF 0xdf,0x0,0x0 +00627c e20a BC 0x6292 +00628e 2adf INCF 0xdf,0x1,0x0 +006290 d7f3 BRA 0x6278 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00629c 68e8 SETF 0xe8,0x0 WREG = 0xFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00629e 50e8 MOVF 0xe8,0x0,0x0 while(WREG) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062a0 e005 BZ 0x62ac -0062aa d7f9 BRA 0x629e +00627e 68e8 SETF 0xe8,0x0 WREG = 0xFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006280 50e8 MOVF 0xe8,0x0,0x0 while(WREG) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006282 e005 BZ 0x628e +00628c d7f9 BRA 0x6280 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062a2 06e8 DECF 0xe8,0x1,0x0 WREG--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006284 06e8 DECF 0xe8,0x1,0x0 WREG--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c _asm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062a4 d000 BRA 0x62a6 bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062a6 d000 BRA 0x62a8 bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062a8 d000 BRA 0x62aa bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006286 d000 BRA 0x6288 bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006288 d000 BRA 0x628a bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00628a d000 BRA 0x628c bra 0 // Equivalent to bra $+2, which takes half as much code as 2 nop instructions D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Delay is ~59.8ms at 48MHz. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062b0 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062b2 52e5 MOVF 0xe5,0x1,0x0 -0062b4 cfe7 MOVFF 0xfe7,0xfd9 -0062b6 ffd9 -0062b8 0012 RETURN 0x0 +006292 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006294 52e5 MOVF 0xe5,0x1,0x0 +006296 cfe7 MOVFF 0xfe7,0xfd9 +006298 ffd9 +00629a 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // BL command : simply jump to the bootloader D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Example: "BL" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_BL_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // First, kill interrupts though D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062ba 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062bc 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00629c 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00629e 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062be 9265 BCF 0x65,0x1,0x0 UCONbits.SUSPND = 0; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062c0 6a65 CLRF 0x65,0x0 UCON = 0x00; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062a0 9265 BCF 0x65,0x1,0x0 UCONbits.SUSPND = 0; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062a2 6a65 CLRF 0x65,0x0 UCON = 0x00; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // And wait awhile for the USB cable capacitance to discharge down to disconnected (SE0) state. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Otherwise host might not realize we disconnected/reconnected when we do the reset. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062c2 dfe3 RCALL 0x628a LongDelay(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062c4 ef0f GOTO 0x1e _asm goto 0x00001E _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062c6 f000 -0062c8 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062a4 dfe3 RCALL 0x626c LongDelay(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062a6 ef0f GOTO 0x1e _asm goto 0x00001E _endasm D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062a8 f000 +0062aa 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // RB ReBoot command : simply jump to the reset vector D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Example: "RB" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_RB_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // First, kill interrupts though D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062ca 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062cc 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062ac 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIEH = 0; // Turn high priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062ae 9cf2 BCF 0xf2,0x6,0x0 INTCONbits.GIEL = 0; // Turn low priority interrupts off D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062ce 9265 BCF 0x65,0x1,0x0 UCONbits.SUSPND = 0; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062d0 6a65 CLRF 0x65,0x0 UCON = 0x00; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062b0 9265 BCF 0x65,0x1,0x0 UCONbits.SUSPND = 0; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062b2 6a65 CLRF 0x65,0x0 UCON = 0x00; // Disable USB module D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // And wait awhile for the USB cable capacitance to discharge down to disconnected (SE0) state. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Otherwise host might not realize we disconnected/reconnected when we do the reset. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062d2 dfdb RCALL 0x628a LongDelay(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062d4 00ff RESET Reset(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062d6 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062b4 dfdb RCALL 0x626c LongDelay(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062b6 00ff RESET Reset(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062b8 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QR Query RC Servo power state command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Example: "RR" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24155,29 +24118,29 @@ Address Value Disassembly Source // 1 = power to RC servo on D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void parse_QR_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062d8 ec73 CALL 0x6ce6,0x0 print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062da f036 +0062ba ec5f CALL 0x6cbe,0x0 print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062bc f036 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062dc 5080 MOVF 0x80,0x0,0x0 ebb_print_uint(RCServoPowerIO_PORT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062de 0b08 ANDLW 0x8 -0062e0 e001 BZ 0x62e4 -0062e2 0e01 MOVLW 0x1 -0062e4 ec0d CALL 0x701a,0x0 -0062e6 f038 -006c38 6e4e MOVWF 0x4e,0x0 -006c3a d9a8 RCALL 0x6f8c -006c3c 6ee6 MOVWF 0xe6,0x0 -006c3e 0012 RETURN 0x0 -0062e8 0101 MOVLB 0x1 if (!bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062ea b1c3 BTFSC 0xc3,0x0,0x1 -0062ec d003 BRA 0x62f4 +0062be 5080 MOVF 0x80,0x0,0x0 ebb_print_uint(RCServoPowerIO_PORT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062c0 0b08 ANDLW 0x8 +0062c2 e001 BZ 0x62c6 +0062c4 0e01 MOVLW 0x1 +0062c6 ecf9 CALL 0x6ff2,0x0 +0062c8 f037 +006c10 6e4e MOVWF 0x4e,0x0 +006c12 d96b RCALL 0x6eea +006c14 6ee6 MOVWF 0xe6,0x0 +006c16 0012 RETURN 0x0 +0062ca 0101 MOVLB 0x1 if (!bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062cc b1c3 BTFSC 0xc3,0x0,0x1 +0062ce d003 BRA 0x62d6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062ee 0e02 MOVLW 0x2 print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062f0 ecb7 CALL 0x6f6e,0x0 -0062f2 f037 +0062d0 0e02 MOVLW 0x2 print_line_ending(kLE_REV); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062d2 eca4 CALL 0x6f48,0x0 +0062d4 f037 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062f4 efea GOTO 0x6bd4 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062f6 f035 +0062d6 efd6 GOTO 0x6bac print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062d8 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // SR Set RC Servo power timeout D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24191,94 +24154,94 @@ Address Value Disassembly Source // is an optional parameter of either 0 or 1. It will D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // immediately affect the servo's power state, where 0 turns it off and 1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // turns it on. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062f8 ecb1 CALL 0x6b62,0x0 void parse_SR_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0062fa f035 -0062fc 0e06 MOVLW 0x6 -0062fe ec0d CALL 0x6e1a,0x0 +0062da eca2 CALL 0x6b44,0x0 void parse_SR_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062dc f035 +0062de 0e06 MOVLW 0x6 +0062e0 ecf4 CALL 0x6de8,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned long Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 State; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ExtractReturnType GotState; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006300 f037 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062e2 f036 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006302 0e07 MOVLW 0x7 extract_number(kULONG, &Value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006304 ec99 CALL 0x6b32,0x0 -006306 f035 -006308 0e01 MOVLW 0x1 GotState = extract_number(kUCHAR, &State, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00630a 6ee6 MOVWF 0xe6,0x0 -00630c 50d9 MOVF 0xd9,0x0,0x0 -00630e 0f04 ADDLW 0x4 -006310 ecfb CALL 0x6df6,0x0 -006312 f036 -006314 6ee7 MOVWF 0xe7,0x0 -006316 0e05 MOVLW 0x5 -006318 cfe7 MOVFF 0xfe7,0xfdb -00631a ffdb -006b88 6ee6 MOVWF 0xe6,0x0 -006b8a 0e00 MOVLW 0x0 -006b8c 20da ADDWFC 0xda,0x0,0x0 -006b8e 6ee6 MOVWF 0xe6,0x0 -006b90 0012 RETURN 0x0 -006df6 dec8 RCALL 0x6b88 -006df8 0e01 MOVLW 0x1 -006dfa ef99 GOTO 0x6b32 -006dfc f035 +0062e4 0e07 MOVLW 0x7 extract_number(kULONG, &Value, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062e6 ec87 CALL 0x6b0e,0x0 +0062e8 f035 +0062ea 0e01 MOVLW 0x1 GotState = extract_number(kUCHAR, &State, kOPTIONAL); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0062ec 6ee6 MOVWF 0xe6,0x0 +0062ee 50d9 MOVF 0xd9,0x0,0x0 +0062f0 0f04 ADDLW 0x4 +0062f2 ece2 CALL 0x6dc4,0x0 +0062f4 f036 +0062f6 6ee7 MOVWF 0xe7,0x0 +0062f8 0e05 MOVLW 0x5 +0062fa cfe7 MOVFF 0xfe7,0xfdb +0062fc ffdb +006b5e 6ee6 MOVWF 0xe6,0x0 +006b60 0e00 MOVLW 0x0 +006b62 20da ADDWFC 0xda,0x0,0x0 +006b64 6ee6 MOVWF 0xe6,0x0 +006b66 0012 RETURN 0x0 +006dc4 decc RCALL 0x6b5e +006dc6 0e01 MOVLW 0x1 +006dc8 ef87 GOTO 0x6b0e +006dca f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Bail if we got a conversion error D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00631c 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00631e 5184 MOVF 0x84,0x0,0x1 -006320 e116 BNZ 0x634e +0062fe 0104 MOVLB 0x4 if (error_byte) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006300 5184 MOVF 0x84,0x0,0x1 +006302 e116 BNZ 0x6330 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006322 cfdf MOVFF 0xfdf,0x4c2 gRCServoPoweroffCounterReloadMS = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006324 f4c2 -006326 0e01 MOVLW 0x1 -006328 cfdb MOVFF 0xfdb,0x4c3 -00632a f4c3 -00632c 0e02 MOVLW 0x2 -00632e cfdb MOVFF 0xfdb,0x4c4 -006330 f4c4 -006332 0e03 MOVLW 0x3 -006334 cfdb MOVFF 0xfdb,0x4c5 -006336 f4c5 +006304 cfdf MOVFF 0xfdf,0x4c2 gRCServoPoweroffCounterReloadMS = Value; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006306 f4c2 +006308 0e01 MOVLW 0x1 +00630a cfdb MOVFF 0xfdb,0x4c3 +00630c f4c3 +00630e 0e02 MOVLW 0x2 +006310 cfdb MOVFF 0xfdb,0x4c4 +006312 f4c4 +006314 0e03 MOVLW 0x3 +006316 cfdb MOVFF 0xfdb,0x4c5 +006318 f4c5 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check to see if is there D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006338 0e05 MOVLW 0x5 if (GotState == kEXTRACT_OK) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00633a 50db MOVF 0xdb,0x0,0x0 -00633c e106 BNZ 0x634a +00631a 0e05 MOVLW 0x5 if (GotState == kEXTRACT_OK) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00631c 50db MOVF 0xdb,0x0,0x0 +00631e e106 BNZ 0x632c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Yup, so set new power state D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00633e 0e04 MOVLW 0x4 if (State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006340 50db MOVF 0xdb,0x0,0x0 -006342 e002 BZ 0x6348 +006320 0e04 MOVLW 0x4 if (State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006322 50db MOVF 0xdb,0x0,0x0 +006324 e002 BZ 0x632a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006344 8689 BSF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006326 8689 BSF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_ON; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006346 d001 BRA 0x634a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006328 d001 BRA 0x632c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006348 9689 BCF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00632a 9689 BCF 0x89,0x3,0x0 RCServoPowerIO = RCSERVO_POWER_OFF; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00634a ecea CALL 0x6bd4,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00634c f035 -00634e 0e06 MOVLW 0x6 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006350 5ce1 SUBWF 0xe1,0x0,0x0 -006352 e202 BC 0x6358 -006354 6ae1 CLRF 0xe1,0x0 -006356 52e5 MOVF 0xe5,0x1,0x0 -006358 6ee1 MOVWF 0xe1,0x0 -00635a efb6 GOTO 0x6b6c -00635c f035 +00632c ecd6 CALL 0x6bac,0x0 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00632e f035 +006330 0e06 MOVLW 0x6 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006332 5ce1 SUBWF 0xe1,0x0,0x0 +006334 e202 BC 0x633a +006336 6ae1 CLRF 0xe1,0x0 +006338 52e5 MOVF 0xe5,0x1,0x0 +00633a 6ee1 MOVWF 0xe1,0x0 +00633c efa7 GOTO 0x6b4e +00633e f035 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Just used for testing/debugging the packet parsing routines D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00635e ecb1 CALL 0x6b62,0x0 void parse_CK_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006360 f035 -006362 0e10 MOVLW 0x10 -006364 26e1 ADDWF 0xe1,0x1,0x0 +006340 eca2 CALL 0x6b44,0x0 void parse_CK_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006342 f035 +006344 0e10 MOVLW 0x10 +006346 26e1 ADDWF 0xe1,0x1,0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char UByte; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c signed char SByte; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24289,257 +24252,246 @@ Address Value Disassembly Source unsigned char UChar; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char UCaseChar; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006366 ec09 CALL 0x7012,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006368 f038 -00636a dbe7 RCALL 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006348 ecf0 CALL 0x6fe0,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00634a f037 +00634c dbe7 RCALL 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00636c 6ae6 CLRF 0xe6,0x0 extract_number(kCHAR, &SByte, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00636e 50d9 MOVF 0xd9,0x0,0x0 -006370 0f01 ADDLW 0x1 -006372 ecc4 CALL 0x6b88,0x0 -006374 f035 -006376 6ae6 CLRF 0xe6,0x0 -006378 d963 RCALL 0x6640 -00637a ec12 CALL 0x6e24,0x0 -00637c f037 -00637e 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &UByte, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006380 ecbc CALL 0x6f78,0x0 -006382 f037 -006384 0e01 MOVLW 0x1 -006386 ecca CALL 0x6f94,0x0 -006388 f037 -00638a 0f04 ADDLW 0x4 extract_number(kINT, &SInt, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00638c ecc4 CALL 0x6b88,0x0 -00638e f035 -006390 0e02 MOVLW 0x2 -006392 ecca CALL 0x6f94,0x0 +00634e 6ae6 CLRF 0xe6,0x0 extract_number(kCHAR, &SByte, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006350 50d9 MOVF 0xd9,0x0,0x0 +006352 0f01 ADDLW 0x1 +006354 ecaf CALL 0x6b5e,0x0 +006356 f035 +006358 6ae6 CLRF 0xe6,0x0 +00635a d963 RCALL 0x6622 +00635c ecf9 CALL 0x6df2,0x0 +00635e f036 +006360 6ae6 CLRF 0xe6,0x0 extract_number(kUCHAR, &UByte, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006362 eca9 CALL 0x6f52,0x0 +006364 f037 +006366 0e01 MOVLW 0x1 +006368 ecb3 CALL 0x6f66,0x0 +00636a f037 +00636c 0f04 ADDLW 0x4 extract_number(kINT, &SInt, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00636e ecaf CALL 0x6b5e,0x0 +006370 f035 +006372 0e02 MOVLW 0x2 +006374 ecb3 CALL 0x6f66,0x0 +006376 f037 +006378 0f02 ADDLW 0x2 extract_number(kUINT, &UInt, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00637a dbf1 RCALL 0x6b5e +00637c 0e03 MOVLW 0x3 +00637e ecb3 CALL 0x6f66,0x0 +006380 f037 +006382 0f0a ADDLW 0xa extract_number(kLONG, &SLong, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006384 dbec RCALL 0x6b5e +006386 0e06 MOVLW 0x6 +006388 ecb3 CALL 0x6f66,0x0 +00638a f037 +00638c 0f06 ADDLW 0x6 extract_number(kULONG, &ULong, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00638e dbe7 RCALL 0x6b5e +006390 0e07 MOVLW 0x7 +006392 ecb3 CALL 0x6f66,0x0 006394 f037 -006396 0f02 ADDLW 0x2 extract_number(kUINT, &UInt, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006398 ecc4 CALL 0x6b88,0x0 -00639a f035 -00639c 0e03 MOVLW 0x3 -00639e ecca CALL 0x6f94,0x0 -0063a0 f037 -0063a2 0f0a ADDLW 0xa extract_number(kLONG, &SLong, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063a4 dbf1 RCALL 0x6b88 -0063a6 0e06 MOVLW 0x6 -0063a8 ecca CALL 0x6f94,0x0 -0063aa f037 -0063ac 0f06 ADDLW 0x6 extract_number(kULONG, &ULong, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063ae dbec RCALL 0x6b88 -0063b0 0e07 MOVLW 0x7 -0063b2 ecca CALL 0x6f94,0x0 -0063b4 f037 -0063b6 0f0e ADDLW 0xe extract_number(kASCII_CHAR, &UChar, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063b8 dbe7 RCALL 0x6b88 -0063ba 0e04 MOVLW 0x4 -0063bc ecca CALL 0x6f94,0x0 -0063be f037 -0063c0 0f0f ADDLW 0xf extract_number(kUCASE_ASCII_CHAR, &UCaseChar, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063c2 dbe2 RCALL 0x6b88 -0063c4 0e05 MOVLW 0x5 -0063c6 dbb5 RCALL 0x6b32 -006b32 6ee6 MOVWF 0xe6,0x0 -006b34 dd85 RCALL 0x6640 -006b36 ef12 GOTO 0x6e24 -006b38 f037 -006e24 d8e8 RCALL 0x6ff6 -006e26 52e5 MOVF 0xe5,0x1,0x0 -006e28 0012 RETURN 0x0 -006ff6 52e5 MOVF 0xe5,0x1,0x0 -006ff8 52e5 MOVF 0xe5,0x1,0x0 -006ffa 52e5 MOVF 0xe5,0x1,0x0 -006ffc 0012 RETURN 0x0 +006396 0f0e ADDLW 0xe extract_number(kASCII_CHAR, &UChar, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006398 dbe2 RCALL 0x6b5e +00639a 0e04 MOVLW 0x4 +00639c ecb3 CALL 0x6f66,0x0 +00639e f037 +0063a0 0f0f ADDLW 0xf extract_number(kUCASE_ASCII_CHAR, &UCaseChar, kREQUIRED); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063a2 dbdd RCALL 0x6b5e +0063a4 0e05 MOVLW 0x5 +0063a6 dbb3 RCALL 0x6b0e +006b0e 6ee6 MOVWF 0xe6,0x0 +006b10 dd88 RCALL 0x6622 +006b12 eff9 GOTO 0x6df2 +006b14 f036 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063c8 0eec MOVLW 0xec ebb_print((rom char far *)"Param1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063ca 6e4e MOVWF 0x4e,0x0 -0063cc 0e8b MOVLW 0x8b -0063ce dbab RCALL 0x6b26 -0063d0 0e01 MOVLW 0x1 ebb_print_int(SByte); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063d2 ec98 CALL 0x6d30,0x0 -0063d4 f036 -0063d6 ae4e BTFSS 0x4e,0x7,0x0 -0063d8 d003 BRA 0x63e0 -0063da 684f SETF 0x4f,0x0 -0063dc 6850 SETF 0x50,0x0 -0063de 6851 SETF 0x51,0x0 -0063e0 ecdb CALL 0x6fb6,0x0 -0063e2 f037 -006fb6 d850 RCALL 0x7058 -006fb8 ef27 GOTO 0x704e -006fba f038 -007058 c04e MOVFF 0x4e,0xfe6 -00705a ffe6 -00705c ef06 GOTO 0x6e0c -00705e f037 +0063a8 0ebc MOVLW 0xbc ebb_print((rom char far *)"Param1="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063aa 6e4e MOVWF 0x4e,0x0 +0063ac 0e8b MOVLW 0x8b +0063ae dbac RCALL 0x6b08 +0063b0 0e01 MOVLW 0x1 ebb_print_int(SByte); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063b2 ec84 CALL 0x6d08,0x0 +0063b4 f036 +0063b6 ae4e BTFSS 0x4e,0x7,0x0 +0063b8 d003 BRA 0x63c0 +0063ba 684f SETF 0x4f,0x0 +0063bc 6850 SETF 0x50,0x0 +0063be 6851 SETF 0x51,0x0 +0063c0 ecc4 CALL 0x6f88,0x0 +0063c2 f037 +006f88 c04e MOVFF 0x4e,0xfe6 +006f8a ffe6 +006f8c df26 RCALL 0x6dda +006f8e ef13 GOTO 0x7026 +006f90 f038 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063e4 0ee4 MOVLW 0xe4 ebb_print((rom char far *)"Param2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063e6 6e4e MOVWF 0x4e,0x0 -0063e8 0e8b MOVLW 0x8b -0063ea db9d RCALL 0x6b26 -0063ec dbd2 RCALL 0x6b92 ebb_print_uint(UByte); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063ee ec15 CALL 0x6e2a,0x0 -0063f0 f037 -006b92 cfdf MOVFF 0xfdf,0x4e -006b94 f04e -006b96 efc6 GOTO 0x6f8c -006b98 f037 +0063c4 0eb4 MOVLW 0xb4 ebb_print((rom char far *)"Param2="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063c6 6e4e MOVWF 0x4e,0x0 +0063c8 0e8b MOVLW 0x8b +0063ca db9e RCALL 0x6b08 +0063cc cfdf MOVFF 0xfdf,0x4e ebb_print_uint(UByte); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063ce f04e +0063d0 ec75 CALL 0x6eea,0x0 +0063d2 f037 +0063d4 ecfc CALL 0x6df8,0x0 +0063d6 f036 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063f2 0edc MOVLW 0xdc ebb_print((rom char far *)"Param3="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063f4 6e4e MOVWF 0x4e,0x0 -0063f6 0e8b MOVLW 0x8b -0063f8 db96 RCALL 0x6b26 -0063fa 0e04 MOVLW 0x4 ebb_print_int(SInt); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0063fc cfdb MOVFF 0xfdb,0x4e -0063fe f04e -006400 0e05 MOVLW 0x5 -006402 cfdb MOVFF 0xfdb,0x4f -006404 f04f -006406 6a50 CLRF 0x50,0x0 -006408 6a51 CLRF 0x51,0x0 -00640a ae4f BTFSS 0x4f,0x7,0x0 -00640c d002 BRA 0x6412 -00640e 6850 SETF 0x50,0x0 -006410 6851 SETF 0x51,0x0 -006412 ecdb CALL 0x6fb6,0x0 -006414 f037 +0063d8 0eac MOVLW 0xac ebb_print((rom char far *)"Param3="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063da 6e4e MOVWF 0x4e,0x0 +0063dc 0e8b MOVLW 0x8b +0063de db94 RCALL 0x6b08 +0063e0 0e04 MOVLW 0x4 ebb_print_int(SInt); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063e2 cfdb MOVFF 0xfdb,0x4e +0063e4 f04e +0063e6 0e05 MOVLW 0x5 +0063e8 cfdb MOVFF 0xfdb,0x4f +0063ea f04f +0063ec 6a50 CLRF 0x50,0x0 +0063ee 6a51 CLRF 0x51,0x0 +0063f0 ae4f BTFSS 0x4f,0x7,0x0 +0063f2 d002 BRA 0x63f8 +0063f4 6850 SETF 0x50,0x0 +0063f6 6851 SETF 0x51,0x0 +0063f8 ecc4 CALL 0x6f88,0x0 +0063fa f037 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006416 0ed4 MOVLW 0xd4 ebb_print((rom char far *)"Param4="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006418 6e4e MOVWF 0x4e,0x0 -00641a 0e8b MOVLW 0x8b -00641c db84 RCALL 0x6b26 -00641e 0e02 MOVLW 0x2 ebb_print_uint(UInt); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006420 cfdb MOVFF 0xfdb,0x4e -006422 f04e -006424 0e03 MOVLW 0x3 -006426 cfdb MOVFF 0xfdb,0x4f -006428 f04f -00642a 6a50 CLRF 0x50,0x0 -00642c 6a51 CLRF 0x51,0x0 -00642e ec15 CALL 0x6e2a,0x0 -006430 f037 +0063fc 0ea4 MOVLW 0xa4 ebb_print((rom char far *)"Param4="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0063fe 6e4e MOVWF 0x4e,0x0 +006400 0e8b MOVLW 0x8b +006402 db82 RCALL 0x6b08 +006404 0e02 MOVLW 0x2 ebb_print_uint(UInt); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006406 cfdb MOVFF 0xfdb,0x4e +006408 f04e +00640a 0e03 MOVLW 0x3 +00640c cfdb MOVFF 0xfdb,0x4f +00640e f04f +006410 6a50 CLRF 0x50,0x0 +006412 6a51 CLRF 0x51,0x0 +006414 ecfc CALL 0x6df8,0x0 +006416 f036 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006432 0ecc MOVLW 0xcc ebb_print((rom char far *)"Param5="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006434 6e4e MOVWF 0x4e,0x0 -006436 0e8b MOVLW 0x8b -006438 db76 RCALL 0x6b26 -00643a 50d9 MOVF 0xd9,0x0,0x0 ebb_print_int(SLong); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00643c 0f0a ADDLW 0xa -00643e dbb4 RCALL 0x6ba8 -006440 ec27 CALL 0x704e,0x0 -006442 f038 -00704e ec0d CALL 0x8e1a,0x0 -007050 f047 -007052 dee8 RCALL 0x6e24 -007054 ef9d GOTO 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -007056 f035 -006444 ec68 CALL 0x6ed0,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006418 0e9c MOVLW 0x9c ebb_print((rom char far *)"Param5="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00641a 6e4e MOVWF 0x4e,0x0 +00641c 0e8b MOVLW 0x8b +00641e db74 RCALL 0x6b08 +006420 50d9 MOVF 0xd9,0x0,0x0 ebb_print_int(SLong); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006422 0f0a ADDLW 0xa +006424 dba8 RCALL 0x6b76 +006426 ec13 CALL 0x7026,0x0 +006428 f038 +007026 ecf5 CALL 0x8dea,0x0 +007028 f046 +00702a dee3 RCALL 0x6df2 +00702c ef8e GOTO 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00702e f035 +00642a ec51 CALL 0x6ea2,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00642c f037 +00642e 50d9 MOVF 0xd9,0x0,0x0 ebb_print_uint(ULong); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006430 0f06 ADDLW 0x6 +006432 dba1 RCALL 0x6b76 +006434 ecd1 CALL 0x6fa2,0x0 +006436 f037 +006438 db71 RCALL 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00643a 0e8c MOVLW 0x8c ebb_print((rom char far *)"Param7="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00643c 6e4e MOVWF 0x4e,0x0 +00643e 0e8b MOVLW 0x8b +006440 db63 RCALL 0x6b08 +006442 0e0e MOVLW 0xe ebb_print_char(UChar); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006444 ec6e CALL 0x6edc,0x0 006446 f037 -006448 50d9 MOVF 0xd9,0x0,0x0 ebb_print_uint(ULong); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00644a 0f06 ADDLW 0x6 -00644c dbad RCALL 0x6ba8 -00644e ece6 CALL 0x6fcc,0x0 -006450 f037 -006452 db73 RCALL 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006454 0ebc MOVLW 0xbc ebb_print((rom char far *)"Param7="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006456 6e4e MOVWF 0x4e,0x0 -006458 0e8b MOVLW 0x8b -00645a db65 RCALL 0x6b26 -00645c 0e0e MOVLW 0xe ebb_print_char(UChar); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00645e ec85 CALL 0x6f0a,0x0 +006edc cfdb MOVFF 0xfdb,0xfe6 +006ede ffe6 +006ee0 ec83 CALL 0x4d06,0x0 +006ee2 f026 +006ee4 52e5 MOVF 0xe5,0x1,0x0 +006ee6 ef8e GOTO 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ee8 f035 +006448 0e84 MOVLW 0x84 ebb_print((rom char far *)"Param8="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00644a 6e4e MOVWF 0x4e,0x0 +00644c 0e8b MOVLW 0x8b +00644e db5c RCALL 0x6b08 +006450 0e0f MOVLW 0xf ebb_print_char(UCaseChar); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006452 ec6e CALL 0x6edc,0x0 +006454 f037 + print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006456 ec51 CALL 0x6ea2,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006458 f037 +00645a 0e08 MOVLW 0x8 ebb_print_hex(ULong, 8); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00645c 6ee6 MOVWF 0xe6,0x0 +00645e ec17 CALL 0x6e2e,0x0 006460 f037 -006f0a cfdb MOVFF 0xfdb,0xfe6 -006f0c ffe6 -006f0e ec83 CALL 0x4d06,0x0 -006f10 f026 -006f12 52e5 MOVF 0xe5,0x1,0x0 -006f14 ef9d GOTO 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006f16 f035 -006462 0eb4 MOVLW 0xb4 ebb_print((rom char far *)"Param8="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006464 6e4e MOVWF 0x4e,0x0 -006466 0e8b MOVLW 0x8b -006468 db5e RCALL 0x6b26 -00646a 0e0f MOVLW 0xf ebb_print_char(UCaseChar); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00646c ec85 CALL 0x6f0a,0x0 -00646e f037 +006e2e 50d9 MOVF 0xd9,0x0,0x0 +006e30 0f06 ADDLW 0x6 +006e32 dea1 RCALL 0x6b76 +006e34 ec9f CALL 0x8d3e,0x0 +006e36 f046 +006e38 6e4e MOVWF 0x4e,0x0 +006e3a 0e05 MOVLW 0x5 +006e3c 5ee1 SUBWF 0xe1,0x1,0x0 +006e3e 504e MOVF 0x4e,0x0,0x0 +006e40 ef8e GOTO 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e42 f035 +006462 ec51 CALL 0x6ea2,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006464 f037 +006ea2 0e94 MOVLW 0x94 +006ea4 6e4e MOVWF 0x4e,0x0 +006ea6 0e8b MOVLW 0x8b +006ea8 ef84 GOTO 0x6b08 +006eaa f035 +006466 6ae6 CLRF 0xe6,0x0 ebb_print_hex(ULong, 0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006468 ec17 CALL 0x6e2e,0x0 +00646a f037 +006b76 6ee9 MOVWF 0xe9,0x0 +006b78 cfda MOVFF 0xfda,0xfea +006b7a ffea +006b7c cfee MOVFF 0xfee,0xfe6 +006b7e ffe6 +006b80 cfee MOVFF 0xfee,0xfe6 +006b82 ffe6 +006b84 cfee MOVFF 0xfee,0xfe6 +006b86 ffe6 +006b88 cfef MOVFF 0xfef,0xfe6 +006b8a ffe6 +006b8c 0012 RETURN 0x0 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006470 ec68 CALL 0x6ed0,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006472 f037 -006474 0e08 MOVLW 0x8 ebb_print_hex(ULong, 8); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006476 6ee6 MOVWF 0xe6,0x0 -006478 ec2e CALL 0x6e5c,0x0 -00647a f037 -006e5c 50d9 MOVF 0xd9,0x0,0x0 -006e5e 0f06 ADDLW 0x6 -006e60 dea3 RCALL 0x6ba8 -006e62 ecb7 CALL 0x8d6e,0x0 -006e64 f046 -006e66 6e4e MOVWF 0x4e,0x0 -006e68 0e05 MOVLW 0x5 -006e6a 5ee1 SUBWF 0xe1,0x1,0x0 -006e6c 504e MOVF 0x4e,0x0,0x0 -006e6e ef9d GOTO 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e70 f035 -00647c ec68 CALL 0x6ed0,0x0 ebb_print((rom char far *)"Param6="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00646c db9f RCALL 0x6bac print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00646e 0e10 MOVLW 0x10 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006470 5ce1 SUBWF 0xe1,0x0,0x0 +006472 e202 BC 0x6478 +006474 6ae1 CLRF 0xe1,0x0 +006476 52e5 MOVF 0xe5,0x1,0x0 +006478 6ee1 MOVWF 0xe1,0x0 +00647a d369 BRA 0x6b4e + D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00647c ec39 CALL 0x6e72,0x0 void populateDeviceStringWithName(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 00647e f037 -006ed0 0ec4 MOVLW 0xc4 -006ed2 6e4e MOVWF 0x4e,0x0 -006ed4 0e8b MOVLW 0x8b -006ed6 ef93 GOTO 0x6b26 -006ed8 f035 -006480 6ae6 CLRF 0xe6,0x0 ebb_print_hex(ULong, 0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006482 ec2e CALL 0x6e5c,0x0 -006484 f037 -006ba8 6ee9 MOVWF 0xe9,0x0 -006baa cfda MOVFF 0xfda,0xfea -006bac ffea -006bae cfee MOVFF 0xfee,0xfe6 -006bb0 ffe6 -006bb2 cfee MOVFF 0xfee,0xfe6 -006bb4 ffe6 -006bb6 cfee MOVFF 0xfee,0xfe6 -006bb8 ffe6 -006bba cfef MOVFF 0xfef,0xfe6 -006bbc ffe6 -006bbe 0012 RETURN 0x0 - print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006486 dba6 RCALL 0x6bd4 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006488 0e10 MOVLW 0x10 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00648a 5ce1 SUBWF 0xe1,0x0,0x0 -00648c e202 BC 0x6492 -00648e 6ae1 CLRF 0xe1,0x0 -006490 52e5 MOVF 0xe5,0x1,0x0 -006492 6ee1 MOVWF 0xe1,0x0 -006494 d36b BRA 0x6b6c - D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006496 ec50 CALL 0x6ea0,0x0 void populateDeviceStringWithName(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006498 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c extern BYTE * USB_SD_Ptr[]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clear out our name array D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00649a 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00649c 0e11 MOVLW 0x11 -00649e 5cdf SUBWF 0xdf,0x0,0x0 -0064a0 e204 BC 0x64aa -0064a6 2adf INCF 0xdf,0x1,0x0 -0064a8 d7f9 BRA 0x649c +006480 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006482 0e11 MOVLW 0x11 +006484 5cdf SUBWF 0xdf,0x0,0x0 +006486 e204 BC 0x6490 +00648c 2adf INCF 0xdf,0x1,0x0 +00648e d7f9 BRA 0x6482 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064a2 dbba RCALL 0x6c18 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064a4 6aef CLRF 0xef,0x0 +006488 dbb3 RCALL 0x6bf0 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00648a 6aef CLRF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // We always read 16, knowing that any unused bytes will be set to zero D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064aa eca5 CALL 0x6f4a,0x0 ReadFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064ac f037 -006f4a de61 RCALL 0x6c0e -006f4c ec08 CALL 0x9610,0x0 -006f4e f04b -006f50 efad GOTO 0x6d5a -006f52 f036 +006490 ec92 CALL 0x6f24,0x0 ReadFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006492 f037 +006f24 de60 RCALL 0x6be6 +006f26 ecef CALL 0x95de,0x0 +006f28 f04a +006f2a ef99 GOTO 0x6d32 +006f2c f036 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // The EEB's name is now in the 'name' local variable as a straight string D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // of bytes. We need to move it to the proper locations in the sd002 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24553,59 +24505,59 @@ Address Value Disassembly Source // into a known offset from the beginning of the structure. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // As of 2.5.5, we now not only update the Product string, but also the D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // serial number string. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064ae 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064b0 0e10 MOVLW 0x10 -0064b2 5cdf SUBWF 0xdf,0x0,0x0 -0064b4 e221 BC 0x64f8 -0064f4 2adf INCF 0xdf,0x1,0x0 -0064f6 d7dc BRA 0x64b0 +006494 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006496 0e10 MOVLW 0x10 +006498 5cdf SUBWF 0xdf,0x0,0x0 +00649a e221 BC 0x64de +0064da 2adf INCF 0xdf,0x1,0x0 +0064dc d7dc BRA 0x6496 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Only copy over valid ASCII characters. On the first invalid D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // one, bail out. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064b6 dbb0 RCALL 0x6c18 if (gDeviceStringName[i] <= 128u && gDeviceStringName[i] >= 32u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064b8 50ef MOVF 0xef,0x0,0x0 -0064ba 0880 SUBLW 0x80 -0064bc e31d BNC 0x64f8 -0064be dbac RCALL 0x6c18 -0064c0 cfef MOVFF 0xfef,0x4e -0064c2 f04e -0064c4 0e20 MOVLW 0x20 -0064c6 5c4e SUBWF 0x4e,0x0,0x0 -0064c8 e317 BNC 0x64f8 +00649c dba9 RCALL 0x6bf0 if (gDeviceStringName[i] <= 128u && gDeviceStringName[i] >= 32u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00649e 50ef MOVF 0xef,0x0,0x0 +0064a0 0880 SUBLW 0x80 +0064a2 e31d BNC 0x64de +0064a4 dba5 RCALL 0x6bf0 +0064a6 cfef MOVFF 0xfef,0x4e +0064a8 f04e +0064aa 0e20 MOVLW 0x20 +0064ac 5c4e SUBWF 0x4e,0x0,0x0 +0064ae e317 BNC 0x64de { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064ca dba6 RCALL 0x6c18 *(USB_SD_Ptr[2] + 24 + (i*2)) = gDeviceStringName[i]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064cc 50ef MOVF 0xef,0x0,0x0 -0064ce 6ee6 MOVWF 0xe6,0x0 -0064d0 0e18 MOVLW 0x18 -0064d2 0102 MOVLB 0x2 -0064d4 6a4f CLRF 0x4f,0x0 -0064d6 25fa ADDWF 0xfa,0x0,0x1 -0064d8 6e4e MOVWF 0x4e,0x0 -0064da 51fb MOVF 0xfb,0x0,0x1 -0064dc ec8c CALL 0x6d18,0x0 -0064de f036 -006d18 224f ADDWFC 0x4f,0x1,0x0 -006d1a 50df MOVF 0xdf,0x0,0x0 -006d1c 24e8 ADDWF 0xe8,0x0,0x0 -006d1e 244e ADDWF 0x4e,0x0,0x0 -006d20 6ee9 MOVWF 0xe9,0x0 -006d22 0e00 MOVLW 0x0 -006d24 204f ADDWFC 0x4f,0x0,0x0 -006d26 6eea MOVWF 0xea,0x0 -006d28 52e5 MOVF 0xe5,0x1,0x0 -006d2a 50e7 MOVF 0xe7,0x0,0x0 -006d2c 6eef MOVWF 0xef,0x0 -006d2e 0012 RETURN 0x0 -0064e0 db9b RCALL 0x6c18 *(USB_SD_Ptr[3] + 2 + (i*2)) = gDeviceStringName[i]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064e2 50ef MOVF 0xef,0x0,0x0 -0064e4 6ee6 MOVWF 0xe6,0x0 -0064e6 0e02 MOVLW 0x2 -0064e8 6a4f CLRF 0x4f,0x0 -0064ea 25fc ADDWF 0xfc,0x0,0x1 -0064ec 6e4e MOVWF 0x4e,0x0 -0064ee 51fd MOVF 0xfd,0x0,0x1 -0064f0 ec8c CALL 0x6d18,0x0 -0064f2 f036 +0064b0 db9f RCALL 0x6bf0 *(USB_SD_Ptr[2] + 24 + (i*2)) = gDeviceStringName[i]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0064b2 50ef MOVF 0xef,0x0,0x0 +0064b4 6ee6 MOVWF 0xe6,0x0 +0064b6 0e18 MOVLW 0x18 +0064b8 0102 MOVLB 0x2 +0064ba 6a4f CLRF 0x4f,0x0 +0064bc 25fa ADDWF 0xfa,0x0,0x1 +0064be 6e4e MOVWF 0x4e,0x0 +0064c0 51fb MOVF 0xfb,0x0,0x1 +0064c2 ec78 CALL 0x6cf0,0x0 +0064c4 f036 +006cf0 224f ADDWFC 0x4f,0x1,0x0 +006cf2 50df MOVF 0xdf,0x0,0x0 +006cf4 24e8 ADDWF 0xe8,0x0,0x0 +006cf6 244e ADDWF 0x4e,0x0,0x0 +006cf8 6ee9 MOVWF 0xe9,0x0 +006cfa 0e00 MOVLW 0x0 +006cfc 204f ADDWFC 0x4f,0x0,0x0 +006cfe 6eea MOVWF 0xea,0x0 +006d00 52e5 MOVF 0xe5,0x1,0x0 +006d02 50e7 MOVF 0xe7,0x0,0x0 +006d04 6eef MOVWF 0xef,0x0 +006d06 0012 RETURN 0x0 +0064c6 db94 RCALL 0x6bf0 *(USB_SD_Ptr[3] + 2 + (i*2)) = gDeviceStringName[i]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0064c8 50ef MOVF 0xef,0x0,0x0 +0064ca 6ee6 MOVWF 0xe6,0x0 +0064cc 0e02 MOVLW 0x2 +0064ce 6a4f CLRF 0x4f,0x0 +0064d0 25fc ADDWF 0xfc,0x0,0x1 +0064d2 6e4e MOVWF 0x4e,0x0 +0064d4 51fd MOVF 0xfd,0x0,0x1 +0064d6 ec78 CALL 0x6cf0,0x0 +0064d8 f036 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24614,109 +24566,108 @@ Address Value Disassembly Source } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now update the string descriptor lengths based on how many characters D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // we copied over from Flash D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064f8 50df MOVF 0xdf,0x0,0x0 *(USB_SD_Ptr[2]) = 24 + (i * 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0064fa 24e8 ADDWF 0xe8,0x0,0x0 -0064fc 0f18 ADDLW 0x18 -0064fe c2fa MOVFF 0x2fa,0xfe9 -006500 ffe9 -006502 c2fb MOVFF 0x2fb,0xfea -006504 ffea -006506 6eef MOVWF 0xef,0x0 -006508 50df MOVF 0xdf,0x0,0x0 *(USB_SD_Ptr[3]) = 2 + (i * 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00650a 24e8 ADDWF 0xe8,0x0,0x0 -00650c 0f02 ADDLW 0x2 -00650e c2fc MOVFF 0x2fc,0xfe9 -006510 ffe9 -006512 c2fd MOVFF 0x2fd,0xfea -006514 ffea -006516 6eef MOVWF 0xef,0x0 -006518 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00651a d328 BRA 0x6b6c +0064de 50df MOVF 0xdf,0x0,0x0 *(USB_SD_Ptr[2]) = 24 + (i * 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0064e0 24e8 ADDWF 0xe8,0x0,0x0 +0064e2 0f18 ADDLW 0x18 +0064e4 c2fa MOVFF 0x2fa,0xfe9 +0064e6 ffe9 +0064e8 c2fb MOVFF 0x2fb,0xfea +0064ea ffea +0064ec 6eef MOVWF 0xef,0x0 +0064ee 50df MOVF 0xdf,0x0,0x0 *(USB_SD_Ptr[3]) = 2 + (i * 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0064f0 24e8 ADDWF 0xe8,0x0,0x0 +0064f2 0f02 ADDLW 0x2 +0064f4 c2fc MOVFF 0x2fc,0xfe9 +0064f6 ffe9 +0064f8 c2fd MOVFF 0x2fd,0xfea +0064fa ffea +0064fc 6eef MOVWF 0xef,0x0 +0064fe 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006500 d326 BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // ST command : Set Tag D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "ST," D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is a 0 to 16 character ASCII string. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // This string gets saved in FLASH, and is returned by the "QT" command, as D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // well as being appended to the USB name that shows up in the OS D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00651c ec05 CALL 0x700a,0x0 void parse_ST_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00651e f038 +006502 ecec CALL 0x6fd8,0x0 void parse_ST_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006504 f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006520 6adf CLRF 0xdf,0x0 UINT8 bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006506 6adf CLRF 0xdf,0x0 UINT8 bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006522 ec09 CALL 0x7012,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006524 f038 -007012 6ae6 CLRF 0xe6,0x0 -007014 6ae6 CLRF 0xe6,0x0 -007016 ef29 GOTO 0x6e52 -007018 f037 +006508 ecf0 CALL 0x6fe0,0x0 print_command(FALSE, FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00650a f037 +006fe0 6ae6 CLRF 0xe6,0x0 +006fe2 6ae6 CLRF 0xe6,0x0 +006fe4 ef12 GOTO 0x6e24 +006fe6 f037 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clear out our name array D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006526 0e01 MOVLW 0x1 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006528 6adb CLRF 0xdb,0x0 -00652a 0e11 MOVLW 0x11 -00652c 6ef3 MOVWF 0xf3,0x0 -00652e 0e01 MOVLW 0x1 -006530 dbe9 RCALL 0x6d04 -006532 e20b BC 0x654a -006544 0e01 MOVLW 0x1 -006546 2adb INCF 0xdb,0x1,0x0 -006548 d7f0 BRA 0x652a +00650c 0e01 MOVLW 0x1 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00650e 6adb CLRF 0xdb,0x0 +006510 0e11 MOVLW 0x11 +006512 6ef3 MOVWF 0xf3,0x0 +006514 0e01 MOVLW 0x1 +006516 dbe2 RCALL 0x6cdc +006518 e20b BC 0x6530 +00652a 0e01 MOVLW 0x1 +00652c 2adb INCF 0xdb,0x1,0x0 +00652e d7f0 BRA 0x6510 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006534 0e01 MOVLW 0x1 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006536 50db MOVF 0xdb,0x0,0x0 -006538 6aea CLRF 0xea,0x0 -00653a 0fd5 ADDLW 0xd5 -00653c 6ee9 MOVWF 0xe9,0x0 -00653e 0e04 MOVLW 0x4 -006540 22ea ADDWFC 0xea,0x1,0x0 -006542 6aef CLRF 0xef,0x0 +00651a 0e01 MOVLW 0x1 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00651c 50db MOVF 0xdb,0x0,0x0 +00651e 6aea CLRF 0xea,0x0 +006520 0fd5 ADDLW 0xd5 +006522 6ee9 MOVWF 0xe9,0x0 +006524 0e04 MOVLW 0x4 +006526 22ea ADDWFC 0xea,0x1,0x0 +006528 6aef CLRF 0xef,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00654a 0e10 MOVLW 0x10 bytes = extract_string(gDeviceStringName, FLASH_NAME_LENGTH); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00654c 6ee6 MOVWF 0xe6,0x0 -00654e ecc1 CALL 0x6f82,0x0 -006550 f037 -006552 d839 RCALL 0x65c6 -006554 ecfb CALL 0x6ff6,0x0 -006556 f037 -006558 6edf MOVWF 0xdf,0x0 +006530 0e10 MOVLW 0x10 bytes = extract_string(gDeviceStringName, FLASH_NAME_LENGTH); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006532 6ee6 MOVWF 0xe6,0x0 +006534 ecae CALL 0x6f5c,0x0 +006536 f037 +006538 d838 RCALL 0x65aa +00653a ece2 CALL 0x6fc4,0x0 +00653c f037 +00653e 6edf MOVWF 0xdf,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // We have reserved FLASH addresses 0xF800 to 0xFBFF (1024 bytes) for D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // storing persistent variables like the EEB's name. Note that no wear-leveling D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // is done, so it's not a good idea to change these values more than 10K times. :-) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00655a 68e6 SETF 0xe6,0x0 EraseFlash(FLASH_NAME_ADDRESS, FLASH_NAME_ADDRESS + 0x3FF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00655c 0efb MOVLW 0xfb -00655e 6ee6 MOVWF 0xe6,0x0 -006560 6ae6 CLRF 0xe6,0x0 -006562 ecaa CALL 0x6f54,0x0 -006564 f037 -006566 ece8 CALL 0x93d0,0x0 -006568 f049 -00656a ecad CALL 0x6d5a,0x0 -00656c f036 -006f54 6ae6 CLRF 0xe6,0x0 -006f56 6ae6 CLRF 0xe6,0x0 -006f58 0ef8 MOVLW 0xf8 -006f5a 6ee6 MOVWF 0xe6,0x0 -006f5c 6ae6 CLRF 0xe6,0x0 -006f5e 6ae6 CLRF 0xe6,0x0 -006f60 0012 RETURN 0x0 +006540 68e6 SETF 0xe6,0x0 EraseFlash(FLASH_NAME_ADDRESS, FLASH_NAME_ADDRESS + 0x3FF); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006542 0efb MOVLW 0xfb +006544 6ee6 MOVWF 0xe6,0x0 +006546 6ae6 CLRF 0xe6,0x0 +006548 ec97 CALL 0x6f2e,0x0 +00654a f037 +00654c ecd0 CALL 0x93a0,0x0 +00654e f049 +006550 dbf0 RCALL 0x6d32 +006f2e 6ae6 CLRF 0xe6,0x0 +006f30 6ae6 CLRF 0xe6,0x0 +006f32 0ef8 MOVLW 0xf8 +006f34 6ee6 MOVWF 0xe6,0x0 +006f36 6ae6 CLRF 0xe6,0x0 +006f38 6ae6 CLRF 0xe6,0x0 +006f3a 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00656e db4f RCALL 0x6c0e WriteBytesFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006570 ecb2 CALL 0x8f64,0x0 -006572 f047 -006574 dbf2 RCALL 0x6d5a +006552 db49 RCALL 0x6be6 WriteBytesFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006554 ec9a CALL 0x8f34,0x0 +006556 f047 +006558 dbec RCALL 0x6d32 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006576 db2e RCALL 0x6bd4 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006578 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00657a 5ce1 SUBWF 0xe1,0x0,0x0 -00657c e202 BC 0x6582 -00657e 6ae1 CLRF 0xe1,0x0 -006580 52e5 MOVF 0xe5,0x1,0x0 -006582 6ee1 MOVWF 0xe1,0x0 -006584 d2f3 BRA 0x6b6c +00655a db28 RCALL 0x6bac print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00655c 0e02 MOVLW 0x2 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00655e 5ce1 SUBWF 0xe1,0x0,0x0 +006560 e202 BC 0x6566 +006562 6ae1 CLRF 0xe1,0x0 +006564 52e5 MOVF 0xe5,0x1,0x0 +006566 6ee1 MOVWF 0xe1,0x0 +006568 d2f2 BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // QT command : Query Tag D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // "QT" D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24725,215 +24676,214 @@ Address Value Disassembly Source /// TODO: Optimize this by simply pointing ebb_print() at the string in FLASH? D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /// We could save 16 bytes of RAM that way and make the code simpler. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006586 ec50 CALL 0x6ea0,0x0 void parse_QT_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006588 f037 +00656a ec39 CALL 0x6e72,0x0 void parse_QT_packet(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00656c f037 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00658a dbad RCALL 0x6ce6 print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ce6 0e01 MOVLW 0x1 -006ce8 6ee6 MOVWF 0xe6,0x0 -006cea 6ae6 CLRF 0xe6,0x0 -006cec ef29 GOTO 0x6e52 -006cee f037 -006e52 ecef CALL 0x53de,0x0 -006e54 f029 -006e56 52e5 MOVF 0xe5,0x1,0x0 -006e58 52e5 MOVF 0xe5,0x1,0x0 -006e5a 0012 RETURN 0x0 +00656e dba7 RCALL 0x6cbe print_command(FALSE, TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006cbe 0e01 MOVLW 0x1 +006cc0 6ee6 MOVWF 0xe6,0x0 +006cc2 6ae6 CLRF 0xe6,0x0 +006cc4 ef12 GOTO 0x6e24 +006cc6 f037 +006e24 ecf1 CALL 0x53e2,0x0 +006e26 f029 +006e28 52e5 MOVF 0xe5,0x1,0x0 +006e2a 52e5 MOVF 0xe5,0x1,0x0 +006e2c 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Clear out our name array D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00658c 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00658e 0e11 MOVLW 0x11 -006590 5cdf SUBWF 0xdf,0x0,0x0 -006592 e204 BC 0x659c -006598 2adf INCF 0xdf,0x1,0x0 -00659a d7f9 BRA 0x658e +006570 6adf CLRF 0xdf,0x0 for (i=0; i < FLASH_NAME_LENGTH+1; i++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006572 0e11 MOVLW 0x11 +006574 5cdf SUBWF 0xdf,0x0,0x0 +006576 e204 BC 0x6580 +00657c 2adf INCF 0xdf,0x1,0x0 +00657e d7f9 BRA 0x6572 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006594 db41 RCALL 0x6c18 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006596 6aef CLRF 0xef,0x0 -006c18 50df MOVF 0xdf,0x0,0x0 -006c1a 6aea CLRF 0xea,0x0 -006c1c 0fd5 ADDLW 0xd5 -006c1e 6ee9 MOVWF 0xe9,0x0 -006c20 0e04 MOVLW 0x4 -006c22 22ea ADDWFC 0xea,0x1,0x0 -006c24 0012 RETURN 0x0 +006578 db3b RCALL 0x6bf0 gDeviceStringName[i] = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00657a 6aef CLRF 0xef,0x0 +006bf0 50df MOVF 0xdf,0x0,0x0 +006bf2 6aea CLRF 0xea,0x0 +006bf4 0fd5 ADDLW 0xd5 +006bf6 6ee9 MOVWF 0xe9,0x0 +006bf8 0e04 MOVLW 0x4 +006bfa 22ea ADDWFC 0xea,0x1,0x0 +006bfc 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // We always read 16, knowing that any unused bytes will be set to zero D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00659c eca5 CALL 0x6f4a,0x0 ReadFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00659e f037 -006c0e d9b9 RCALL 0x6f82 -006c10 0e10 MOVLW 0x10 -006c12 6ee6 MOVWF 0xe6,0x0 -006c14 efaa GOTO 0x6f54 -006c16 f037 -006d5a 6e4e MOVWF 0x4e,0x0 -006d5c 0e08 MOVLW 0x8 -006d5e 5ee1 SUBWF 0xe1,0x1,0x0 -006d60 504e MOVF 0x4e,0x0,0x0 -006d62 0012 RETURN 0x0 -006f82 0ed5 MOVLW 0xd5 -006f84 6ee6 MOVWF 0xe6,0x0 -006f86 0e04 MOVLW 0x4 -006f88 6ee6 MOVWF 0xe6,0x0 -006f8a 0012 RETURN 0x0 +006580 ec92 CALL 0x6f24,0x0 ReadFlash(FLASH_NAME_ADDRESS, FLASH_NAME_LENGTH, gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006582 f037 +006be6 d9ba RCALL 0x6f5c +006be8 0e10 MOVLW 0x10 +006bea 6ee6 MOVWF 0xe6,0x0 +006bec ef97 GOTO 0x6f2e +006bee f037 +006d32 6e4e MOVWF 0x4e,0x0 +006d34 0e08 MOVLW 0x8 +006d36 5ee1 SUBWF 0xe1,0x1,0x0 +006d38 504e MOVF 0x4e,0x0,0x0 +006d3a 0012 RETURN 0x0 +006f5c 0ed5 MOVLW 0xd5 +006f5e 6ee6 MOVWF 0xe6,0x0 +006f60 0e04 MOVLW 0x4 +006f62 6ee6 MOVWF 0xe6,0x0 +006f64 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Only print it out if the first character is printable ASCII D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065a0 0e80 MOVLW 0x80 if (gDeviceStringName[0] < 128u && gDeviceStringName[0] > 32u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065a2 0104 MOVLB 0x4 -0065a4 5dd5 SUBWF 0xd5,0x0,0x1 -0065a6 e209 BC 0x65ba -0065a8 51d5 MOVF 0xd5,0x0,0x1 -0065aa 0820 SUBLW 0x20 -0065ac e206 BC 0x65ba +006584 0e80 MOVLW 0x80 if (gDeviceStringName[0] < 128u && gDeviceStringName[0] > 32u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006586 0104 MOVLB 0x4 +006588 5dd5 SUBWF 0xd5,0x0,0x1 +00658a e209 BC 0x659e +00658c 51d5 MOVF 0xd5,0x0,0x1 +00658e 0820 SUBLW 0x20 +006590 e206 BC 0x659e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ae ecc1 CALL 0x6f82,0x0 ebb_print_ram((char *)gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065b0 f037 -0065b2 ecab CALL 0x8d56,0x0 -0065b4 f046 -0065b6 52e5 MOVF 0xe5,0x1,0x0 -0065b8 52e5 MOVF 0xe5,0x1,0x0 +006592 ecae CALL 0x6f5c,0x0 ebb_print_ram((char *)gDeviceStringName); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006594 f037 +006596 ec93 CALL 0x8d26,0x0 +006598 f046 +00659a 52e5 MOVF 0xe5,0x1,0x0 +00659c 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ba 0101 MOVLB 0x1 if (!bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065bc a1c3 BTFSS 0xc3,0x0,0x1 +00659e 0101 MOVLB 0x1 if (!bittstzero(gStandardizedCommandFormat)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065a0 a1c3 BTFSS 0xc3,0x0,0x1 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065be dabd RCALL 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065a2 dabc RCALL 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065c0 db09 RCALL 0x6bd4 print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006bd4 6ae6 CLRF 0xe6,0x0 -006bd6 ec0d CALL 0x541a,0x0 -006bd8 f02a -006bda 52e5 MOVF 0xe5,0x1,0x0 -006bdc 0012 RETURN 0x0 -0065c2 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065c4 d2d3 BRA 0x6b6c +0065a4 db03 RCALL 0x6bac print_line_ending(kLE_OK_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006bac 6ae6 CLRF 0xe6,0x0 +006bae ec0f CALL 0x541e,0x0 +006bb0 f02a +006bb2 52e5 MOVF 0xe5,0x1,0x0 +006bb4 0012 RETURN 0x0 +0065a6 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065a8 d2d2 BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Look at the string in g_RX_buf[] D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Copy over all bytes from g_RX_buf_out into ReturnValue until you hit D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // a comma or a CR or you've copied over MaxBytes characters. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Return the number of bytes copied. Advance g_RX_buf_out as you go. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065c6 ec50 CALL 0x6ea0,0x0 UINT8 extract_string ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065c8 f037 -006b62 cfd9 MOVFF 0xfd9,0xfe6 -006b64 ffe6 -006b66 cfe1 MOVFF 0xfe1,0xfd9 -006b68 ffd9 -006b6a 0012 RETURN 0x0 -006ea0 de60 RCALL 0x6b62 -006ea2 52e6 MOVF 0xe6,0x1,0x0 -006ea4 0012 RETURN 0x0 +0065aa ec39 CALL 0x6e72,0x0 UINT8 extract_string ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065ac f037 +006b44 cfd9 MOVFF 0xfd9,0xfe6 +006b46 ffe6 +006b48 cfe1 MOVFF 0xfe1,0xfd9 +006b4a ffd9 +006b4c 0012 RETURN 0x0 +006e72 de68 RCALL 0x6b44 +006e74 52e6 MOVF 0xe6,0x1,0x0 +006e76 0012 RETURN 0x0 unsigned char * ReturnValue, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c UINT8 MaxBytes D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ca 6adf CLRF 0xdf,0x0 UINT8 bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065ae 6adf CLRF 0xdf,0x0 UINT8 bytes = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Always terminate the string D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065cc db57 RCALL 0x6c7c *ReturnValue = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ce 6aef CLRF 0xef,0x0 +0065b0 db51 RCALL 0x6c54 *ReturnValue = 0x00; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065b2 6aef CLRF 0xef,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check to see if we're already at the end D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065d0 ecff CALL 0x6ffe,0x0 if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065d2 f037 -0065d4 e102 BNZ 0x65da -006ffe 0e0d MOVLW 0xd -007000 6e4e MOVWF 0x4e,0x0 -007002 0104 MOVLB 0x4 -007004 defc RCALL 0x6dfe -007006 5c4e SUBWF 0x4e,0x0,0x0 -007008 0012 RETURN 0x0 +0065b4 ece6 CALL 0x6fcc,0x0 if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065b6 f037 +0065b8 e102 BNZ 0x65be +006fcc 0e0d MOVLW 0xd +006fce 6e4e MOVWF 0x4e,0x0 +006fd0 0104 MOVLB 0x4 +006fd2 defc RCALL 0x6dcc +006fd4 5c4e SUBWF 0x4e,0x0,0x0 +006fd6 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065d6 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065d8 d006 BRA 0x65e6 return(0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065ba 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065bc d006 BRA 0x65ca return(0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check for comma where ptr points D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065da ecff CALL 0x6dfe,0x0 if (g_RX_buf[g_RX_buf_out] != ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065dc f036 -0065de 082c SUBLW 0x2c -0065e0 e004 BZ 0x65ea +0065be ece6 CALL 0x6dcc,0x0 if (g_RX_buf[g_RX_buf_out] != ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065c0 f036 +0065c2 082c SUBLW 0x2c +0065c4 e004 BZ 0x65ce { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065e2 ecde CALL 0x6fbc,0x0 ebb_print((rom char far *)"!5 Err: Need comma next, found: '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065e4 f037 -006fbc 0e92 MOVLW 0x92 -006fbe 6e4e MOVWF 0x4e,0x0 -006fc0 0e8b MOVLW 0x8b -006fc2 ddb1 RCALL 0x6b26 -006e92 de70 RCALL 0x6b74 ebb_print_char(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006fc4 0104 MOVLB 0x4 -006fc6 df1b RCALL 0x6dfe -006fc8 ef49 GOTO 0x6e92 -006fca f037 -006e94 0e27 MOVLW 0x27 ebb_print_char(0x27); // The ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e96 de6e RCALL 0x6b74 -006e98 de50 RCALL 0x6b3a print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e9a 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PRINTED_ERROR); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006e9c 8b84 BSF 0x84,0x5,0x1 -006e9e 0012 RETURN 0x0 -0065e6 0e00 MOVLW 0x0 return(0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065e8 d029 BRA 0x663c +0065c6 ecc9 CALL 0x6f92,0x0 ebb_print((rom char far *)"!5 Err: Need comma next, found: '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065c8 f037 +006f92 0e62 MOVLW 0x62 +006f94 6e4e MOVWF 0x4e,0x0 +006f96 0e8b MOVLW 0x8b +006f98 ddb7 RCALL 0x6b08 +006e64 de94 RCALL 0x6b8e ebb_print_char(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006f9a 0104 MOVLB 0x4 +006f9c df17 RCALL 0x6dcc +006f9e ef32 GOTO 0x6e64 +006fa0 f037 +006e66 0e27 MOVLW 0x27 ebb_print_char(0x27); // The ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e68 de92 RCALL 0x6b8e +006e6a de58 RCALL 0x6b1c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e6c 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PRINTED_ERROR); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006e6e 8b84 BSF 0x84,0x5,0x1 +006e70 0012 RETURN 0x0 +0065ca 0e00 MOVLW 0x0 return(0); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065cc d028 BRA 0x661e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ea dad7 RCALL 0x6b9a advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065ec e104 BNZ 0x65f6 -0065ee 0e01 MOVLW 0x1 -0065f0 184f XORWF 0x4f,0x0,0x0 -0065f2 e101 BNZ 0x65f6 -0065f4 6bb8 CLRF 0xb8,0x1 +0065ce dacc RCALL 0x6b68 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065d0 e104 BNZ 0x65da +0065d2 0e01 MOVLW 0x1 +0065d4 184f XORWF 0x4f,0x0,0x0 +0065d6 e101 BNZ 0x65da +0065d8 6bb8 CLRF 0xb8,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00663a d7dd BRA 0x65f6 while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00661c d7de BRA 0x65da while(1) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check to see if we're already at the end D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065f6 0e0d MOVLW 0xd if (kCR == g_RX_buf[g_RX_buf_out] || (BYTE)',' == g_RX_buf[g_RX_buf_out] || bytes >= MaxBytes) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0065f8 ec10 CALL 0x7020,0x0 -0065fa f038 -0065fc e00a BZ 0x6612 -0065fe 0e2c MOVLW 0x2c -006600 6e4f MOVWF 0x4f,0x0 -006602 ecff CALL 0x6dfe,0x0 -006604 f036 -006606 5c4f SUBWF 0x4f,0x0,0x0 -006608 e004 BZ 0x6612 -00660a 0efc MOVLW 0xfc -00660c 50db MOVF 0xdb,0x0,0x0 -00660e 5cdf SUBWF 0xdf,0x0,0x0 -006610 e302 BNC 0x6616 +0065da 0e0d MOVLW 0xd if (kCR == g_RX_buf[g_RX_buf_out] || (BYTE)',' == g_RX_buf[g_RX_buf_out] || bytes >= MaxBytes) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065dc ecfc CALL 0x6ff8,0x0 +0065de f037 +0065e0 e009 BZ 0x65f4 +0065e2 0e2c MOVLW 0x2c +0065e4 6e4f MOVWF 0x4f,0x0 +0065e6 dbf2 RCALL 0x6dcc +0065e8 5c4f SUBWF 0x4f,0x0,0x0 +0065ea e004 BZ 0x65f4 +0065ec 0efc MOVLW 0xfc +0065ee 50db MOVF 0xdb,0x0,0x0 +0065f0 5cdf SUBWF 0xdf,0x0,0x0 +0065f2 e302 BNC 0x65f8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006612 50df MOVF 0xdf,0x0,0x0 return (bytes); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006614 d013 BRA 0x663c +0065f4 50df MOVF 0xdf,0x0,0x0 return (bytes); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065f6 d013 BRA 0x661e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Copy over a byte D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006616 dbf3 RCALL 0x6dfe *ReturnValue = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006618 6ee6 MOVWF 0xe6,0x0 -00661a db30 RCALL 0x6c7c -00661c 52e5 MOVF 0xe5,0x1,0x0 -00661e 50e7 MOVF 0xe7,0x0,0x0 -006620 6eef MOVWF 0xef,0x0 +0065f8 dbe9 RCALL 0x6dcc *ReturnValue = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0065fa 6ee6 MOVWF 0xe6,0x0 +0065fc db2b RCALL 0x6c54 +0065fe 52e5 MOVF 0xe5,0x1,0x0 +006600 50e7 MOVF 0xe7,0x0,0x0 +006602 6eef MOVWF 0xef,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006622 dabb RCALL 0x6b9a advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006624 e104 BNZ 0x662e -006626 0e01 MOVLW 0x1 -006628 184f XORWF 0x4f,0x0,0x0 -00662a e101 BNZ 0x662e -00662c 6bb8 CLRF 0xb8,0x1 +006604 dab1 RCALL 0x6b68 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006606 e104 BNZ 0x6610 +006608 0e01 MOVLW 0x1 +00660a 184f XORWF 0x4f,0x0,0x0 +00660c e101 BNZ 0x6610 +00660e 6bb8 CLRF 0xb8,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Count this one D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00662e 2adf INCF 0xdf,0x1,0x0 bytes++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006630 0efd MOVLW 0xfd ReturnValue++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006632 2adb INCF 0xdb,0x1,0x0 -006634 0efe MOVLW 0xfe -006636 e3df BNC 0x65f6 -006638 2adb INCF 0xdb,0x1,0x0 +006610 2adf INCF 0xdf,0x1,0x0 bytes++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006612 0efd MOVLW 0xfd ReturnValue++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006614 2adb INCF 0xdb,0x1,0x0 +006616 0efe MOVLW 0xfe +006618 e3e0 BNC 0x65da +00661a 2adb INCF 0xdb,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return(bytes); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00663c 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00663e d296 BRA 0x6b6c +00661e 52e5 MOVF 0xe5,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006620 d296 BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Look at the string pointed to by g_RX_buf[g_RX_buf_out] D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24944,9 +24894,9 @@ Address Value Disassembly Source // unsigned long accumulator. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Advance the pointer to the byte after the last number D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // and return. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006640 da90 RCALL 0x6b62 ExtractReturnType extract_number( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006642 0e09 MOVLW 0x9 -006644 26e1 ADDWF 0xe1,0x1,0x0 +006622 da90 RCALL 0x6b44 ExtractReturnType extract_number( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006624 0e09 MOVLW 0x9 +006626 26e1 ADDWF 0xe1,0x1,0x0 ExtractType Type, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void * ReturnValue, D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char Required D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -24954,427 +24904,427 @@ Address Value Disassembly Source { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned long ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c signed long Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006646 0e08 MOVLW 0x8 BOOL Negative = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006648 6adb CLRF 0xdb,0x0 +006628 0e08 MOVLW 0x8 BOOL Negative = FALSE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00662a 6adb CLRF 0xdb,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check to see if we're already at the end D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00664a ecff CALL 0x6ffe,0x0 if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00664c f037 -00664e e105 BNZ 0x665a +00662c ece6 CALL 0x6fcc,0x0 if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00662e f037 +006630 e105 BNZ 0x663c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006650 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006652 50db MOVF 0xdb,0x0,0x0 -006654 e11a BNZ 0x668a +006632 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006634 50db MOVF 0xdb,0x0,0x0 +006636 e11a BNZ 0x666c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006656 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006638 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006658 d018 BRA 0x668a return(kEXTRACT_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00663a d018 BRA 0x666c return(kEXTRACT_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check for comma where ptr points D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00665a dbd1 RCALL 0x6dfe if (g_RX_buf[g_RX_buf_out] != ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00665c 082c SUBLW 0x2c -00665e e007 BZ 0x666e -006dfe d914 RCALL 0x7028 -006e00 50ef MOVF 0xef,0x0,0x0 -006e02 0012 RETURN 0x0 +00663c dbc7 RCALL 0x6dcc if (g_RX_buf[g_RX_buf_out] != ',') D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00663e 082c SUBLW 0x2c +006640 e007 BZ 0x6650 +006dcc d919 RCALL 0x7000 +006dce 50ef MOVF 0xef,0x0,0x0 +006dd0 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006660 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006662 50db MOVF 0xdb,0x0,0x0 -006664 e102 BNZ 0x666a +006642 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006644 50db MOVF 0xdb,0x0,0x0 +006646 e102 BNZ 0x664c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006666 ecde CALL 0x6fbc,0x0 ebb_print((rom char far *)"!5 Err: Need comma next, found: '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006668 f037 +006648 ecc9 CALL 0x6f92,0x0 ebb_print((rom char far *)"!5 Err: Need comma next, found: '"); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00664a f037 ebb_print_char(g_RX_buf[g_RX_buf_out]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ebb_print_char(0x27); // The ' character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset (error_byte, kERROR_BYTE_PRINTED_ERROR); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00666a 0e02 MOVLW 0x2 return(kEXTRACT_COMMA_MISSING); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00666c d11a BRA 0x68a2 +00664c 0e02 MOVLW 0x2 return(kEXTRACT_COMMA_MISSING); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00664e d11a BRA 0x6884 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00666e da95 RCALL 0x6b9a advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006670 e104 BNZ 0x667a -006672 0e01 MOVLW 0x1 -006674 184f XORWF 0x4f,0x0,0x0 -006676 e101 BNZ 0x667a -006678 6bb8 CLRF 0xb8,0x1 +006650 da8b RCALL 0x6b68 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006652 e104 BNZ 0x665c +006654 0e01 MOVLW 0x1 +006656 184f XORWF 0x4f,0x0,0x0 +006658 e101 BNZ 0x665c +00665a 6bb8 CLRF 0xb8,0x1 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Check for end of command D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00667a 0e0d MOVLW 0xd if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00667c ec10 CALL 0x7020,0x0 -00667e f038 -006680 e106 BNZ 0x668e +00665c 0e0d MOVLW 0xd if (kCR == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00665e ecfc CALL 0x6ff8,0x0 +006660 f037 +006662 e106 BNZ 0x6670 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006682 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006684 50db MOVF 0xdb,0x0,0x0 -006686 e101 BNZ 0x668a +006664 0efb MOVLW 0xfb if (0u == Required) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006666 50db MOVF 0xdb,0x0,0x0 +006668 e101 BNZ 0x666c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006688 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00666a 8984 BSF 0x84,0x4,0x1 bitset(error_byte, kERROR_BYTE_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00668a 0e03 MOVLW 0x3 return(kEXTRACT_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00668c d10a BRA 0x68a2 +00666c 0e03 MOVLW 0x3 return(kEXTRACT_MISSING_PARAMETER); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00666e d10a BRA 0x6884 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Now check for a sign character if we're not looking for ASCII chars D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00668e 0e2d MOVLW 0x2d ('-' == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006690 ec10 CALL 0x7020,0x0 -006692 f038 -007020 6e4e MOVWF 0x4e,0x0 -007022 deed RCALL 0x6dfe -007024 5c4e SUBWF 0x4e,0x0,0x0 -007026 0012 RETURN 0x0 +006670 0e2d MOVLW 0x2d ('-' == g_RX_buf[g_RX_buf_out]) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006672 ecfc CALL 0x6ff8,0x0 +006674 f037 +006ff8 6e4e MOVWF 0x4e,0x0 +006ffa dee8 RCALL 0x6dcc +006ffc 5c4e SUBWF 0x4e,0x0,0x0 +006ffe 0012 RETURN 0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006696 0e04 MOVLW 0x4 (kASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006698 db4f RCALL 0x6d38 +006678 0e04 MOVLW 0x4 (kASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00667a db4a RCALL 0x6d10 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00669c 0e05 MOVLW 0x5 (kUCASE_ASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00669e 6e50 MOVWF 0x50,0x0 -0066a0 0efe MOVLW 0xfe -0066a2 50db MOVF 0xdb,0x0,0x0 -0066a4 5c50 SUBWF 0x50,0x0,0x0 -00669a e01d BZ 0x66d6 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066a6 e017 BZ 0x66d6 -006694 e120 BNZ 0x66d6 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00667e 0e05 MOVLW 0x5 (kUCASE_ASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006680 6e50 MOVWF 0x50,0x0 +006682 0efe MOVLW 0xfe +006684 50db MOVF 0xdb,0x0,0x0 +006686 5c50 SUBWF 0x50,0x0,0x0 +00667c e01d BZ 0x66b8 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006688 e017 BZ 0x66b8 +006676 e120 BNZ 0x66b8 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // It's an error if we see a negative sign on an unsigned value D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066a8 0efe MOVLW 0xfe (kUCHAR == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066aa 04db DECF 0xdb,0x0,0x0 +00668a 0efe MOVLW 0xfe (kUCHAR == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00668c 04db DECF 0xdb,0x0,0x0 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066b0 0e03 MOVLW 0x3 (kUINT == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066b2 db2d RCALL 0x6d0e -0066ac e101 BNZ 0x66b0 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066ae d0c0 BRA 0x6830 -0066b4 e101 BNZ 0x66b8 -0066b6 d0bc BRA 0x6830 -0066b8 0e07 MOVLW 0x7 (kULONG == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066ba db3e RCALL 0x6d38 -0066bc e101 BNZ 0x66c0 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066be d0b8 BRA 0x6830 +006692 0e03 MOVLW 0x3 (kUINT == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006694 db28 RCALL 0x6ce6 +00668e e101 BNZ 0x6692 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006690 d0c0 BRA 0x6812 +006696 e101 BNZ 0x669a +006698 d0bc BRA 0x6812 +00669a 0e07 MOVLW 0x7 (kULONG == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00669c db39 RCALL 0x6d10 +00669e e101 BNZ 0x66a2 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066a0 d0b8 BRA 0x6812 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return(kEXTRACT_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066c0 0e01 MOVLW 0x1 Negative = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066c2 6ef3 MOVWF 0xf3,0x0 -0066c4 0e08 MOVLW 0x8 -0066c6 cff3 MOVFF 0xff3,0xfdb -0066c8 ffdb +0066a2 0e01 MOVLW 0x1 Negative = TRUE; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066a4 6ef3 MOVWF 0xf3,0x0 +0066a6 0e08 MOVLW 0x8 +0066a8 cff3 MOVFF 0xff3,0xfdb +0066aa ffdb // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066ca da67 RCALL 0x6b9a advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066cc e104 BNZ 0x66d6 -0066ce 0e01 MOVLW 0x1 -0066d0 184f XORWF 0x4f,0x0,0x0 -0066d2 e101 BNZ 0x66d6 -0066d4 6bb8 CLRF 0xb8,0x1 +0066ac da5d RCALL 0x6b68 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066ae e104 BNZ 0x66b8 +0066b0 0e01 MOVLW 0x1 +0066b2 184f XORWF 0x4f,0x0,0x0 +0066b4 e101 BNZ 0x66b8 +0066b6 6bb8 CLRF 0xb8,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If we need to get a digit, go do that D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066d6 0e04 MOVLW 0x4 (kASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066d8 db1a RCALL 0x6d0e +0066b8 0e04 MOVLW 0x4 (kASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066ba db15 RCALL 0x6ce6 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066dc 0e05 MOVLW 0x5 (kUCASE_ASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066de db2c RCALL 0x6d38 -0066da e009 BZ 0x66ee ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066e0 e006 BZ 0x66ee +0066be 0e05 MOVLW 0x5 (kUCASE_ASCII_CHAR != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066c0 db27 RCALL 0x6d10 +0066bc e009 BZ 0x66d0 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066c2 e006 BZ 0x66d0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066e2 0e0a MOVLW 0xa extract_digit(&ULAccumulator, 10); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066e4 daef RCALL 0x6cc4 -0066e6 d8e6 RCALL 0x68b4 -0066e8 ecfb CALL 0x6ff6,0x0 -0066ea f037 +0066c4 0e0a MOVLW 0xa extract_digit(&ULAccumulator, 10); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066c6 daea RCALL 0x6c9c +0066c8 d8e6 RCALL 0x6896 +0066ca ece2 CALL 0x6fc4,0x0 +0066cc f037 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066ec d031 BRA 0x6750 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066ce d031 BRA 0x6732 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Otherwise just copy the byte D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066ee ec14 CALL 0x7028,0x0 ULAccumulator = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066f0 f038 -0066f2 cfef MOVFF 0xfef,0x4e -0066f4 f04e -0066f6 0e00 MOVLW 0x0 -0066f8 c04e MOVFF 0x4e,0xfdf -0066fa ffdf -0066fc db4a RCALL 0x6d92 +0066d0 ec00 CALL 0x7000,0x0 ULAccumulator = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066d2 f038 +0066d4 cfef MOVFF 0xfef,0x4e +0066d6 f04e +0066d8 0e00 MOVLW 0x0 +0066da c04e MOVFF 0x4e,0xfdf +0066dc ffdf +0066de db45 RCALL 0x6d6a D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Force uppercase if that's what type we have D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0066fe 0e05 MOVLW 0x5 if (kUCASE_ASCII_CHAR == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006700 db06 RCALL 0x6d0e -006702 e11f BNZ 0x6742 +0066e0 0e05 MOVLW 0x5 if (kUCASE_ASCII_CHAR == Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066e2 db01 RCALL 0x6ce6 +0066e4 e11f BNZ 0x6724 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006704 0e00 MOVLW 0x0 ULAccumulator = toupper(ULAccumulator); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006706 cfdf MOVFF 0xfdf,0xfe6 -006708 ffe6 -00670a 0e01 MOVLW 0x1 -00670c cfdb MOVFF 0xfdb,0xfe6 -00670e ffe6 -006710 ec43 CALL 0x9886,0x0 -006712 f04c -006714 52e5 MOVF 0xe5,0x1,0x0 -006716 52e5 MOVF 0xe5,0x1,0x0 -006718 cff3 MOVFF 0xff3,0x4e -00671a f04e -00671c cff4 MOVFF 0xff4,0x4f -00671e f04f -006720 6a50 CLRF 0x50,0x0 -006722 6a51 CLRF 0x51,0x0 -006724 ae4f BTFSS 0x4f,0x7,0x0 -006726 d002 BRA 0x672c -006728 6850 SETF 0x50,0x0 -00672a 6851 SETF 0x51,0x0 -00672c c04e MOVFF 0x4e,0xfdf -00672e ffdf -006730 0e01 MOVLW 0x1 -006732 c04f MOVFF 0x4f,0xfdb -006734 ffdb -006736 0e02 MOVLW 0x2 -006738 c050 MOVFF 0x50,0xfdb -00673a ffdb -00673c 0e03 MOVLW 0x3 -00673e c051 MOVFF 0x51,0xfdb -006740 ffdb +0066e6 0e00 MOVLW 0x0 ULAccumulator = toupper(ULAccumulator); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0066e8 cfdf MOVFF 0xfdf,0xfe6 +0066ea ffe6 +0066ec 0e01 MOVLW 0x1 +0066ee cfdb MOVFF 0xfdb,0xfe6 +0066f0 ffe6 +0066f2 ec2a CALL 0x9854,0x0 +0066f4 f04c +0066f6 52e5 MOVF 0xe5,0x1,0x0 +0066f8 52e5 MOVF 0xe5,0x1,0x0 +0066fa cff3 MOVFF 0xff3,0x4e +0066fc f04e +0066fe cff4 MOVFF 0xff4,0x4f +006700 f04f +006702 6a50 CLRF 0x50,0x0 +006704 6a51 CLRF 0x51,0x0 +006706 ae4f BTFSS 0x4f,0x7,0x0 +006708 d002 BRA 0x670e +00670a 6850 SETF 0x50,0x0 +00670c 6851 SETF 0x51,0x0 +00670e c04e MOVFF 0x4e,0xfdf +006710 ffdf +006712 0e01 MOVLW 0x1 +006714 c04f MOVFF 0x4f,0xfdb +006716 ffdb +006718 0e02 MOVLW 0x2 +00671a c050 MOVFF 0x50,0xfdb +00671c ffdb +00671e 0e03 MOVLW 0x3 +006720 c051 MOVFF 0x51,0xfdb +006722 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006742 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006744 da2a RCALL 0x6b9a -006746 e104 BNZ 0x6750 -006748 0e01 MOVLW 0x1 -00674a 184f XORWF 0x4f,0x0,0x0 -00674c e101 BNZ 0x6750 -00674e 6bb8 CLRF 0xb8,0x1 +006724 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006726 da20 RCALL 0x6b68 +006728 e104 BNZ 0x6732 +00672a 0e01 MOVLW 0x1 +00672c 184f XORWF 0x4f,0x0,0x0 +00672e e101 BNZ 0x6732 +006730 6bb8 CLRF 0xb8,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Range check absolute values D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006750 0e08 MOVLW 0x8 if (Negative) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006752 50db MOVF 0xdb,0x0,0x0 -006754 e040 BZ 0x67d6 +006732 0e08 MOVLW 0x8 if (Negative) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006734 50db MOVF 0xdb,0x0,0x0 +006736 e040 BZ 0x67b8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006756 0efe MOVLW 0xfe kCHAR == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006758 50db MOVF 0xdb,0x0,0x0 +006738 0efe MOVLW 0xfe kCHAR == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00673a 50db MOVF 0xdb,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00675c da52 RCALL 0x6c02 (ULAccumulator > (unsigned long)128) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00675e 0e80 MOVLW 0x80 -006760 da6f RCALL 0x6c40 -006762 0e00 MOVLW 0x0 -006764 54ee SUBFWB 0xee,0x0,0x0 -00675a e106 BNZ 0x6768 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006766 e312 BNC 0x678c +00673e da4d RCALL 0x6bda (ULAccumulator > (unsigned long)128) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006740 0e80 MOVLW 0x80 +006742 da6a RCALL 0x6c18 +006744 0e00 MOVLW 0x0 +006746 54ee SUBFWB 0xee,0x0,0x0 +00673c e106 BNZ 0x674a ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006748 e312 BNC 0x676e || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006768 0e02 MOVLW 0x2 kINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00676a dad1 RCALL 0x6d0e +00674a 0e02 MOVLW 0x2 kINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00674c dacc RCALL 0x6ce6 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00676e da49 RCALL 0x6c02 (ULAccumulator > (unsigned long)32768) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006770 0e00 MOVLW 0x0 -006772 54ee SUBFWB 0xee,0x0,0x0 -006774 0e80 MOVLW 0x80 -006776 da64 RCALL 0x6c40 -00676c e106 BNZ 0x677a ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006778 e309 BNC 0x678c +006750 da44 RCALL 0x6bda (ULAccumulator > (unsigned long)32768) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006752 0e00 MOVLW 0x0 +006754 54ee SUBFWB 0xee,0x0,0x0 +006756 0e80 MOVLW 0x80 +006758 da5f RCALL 0x6c18 +00674e e106 BNZ 0x675c ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00675a e309 BNC 0x676e || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00677a 0e06 MOVLW 0x6 kLONG == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00677c dadd RCALL 0x6d38 +00675c 0e06 MOVLW 0x6 kLONG == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00675e dad8 RCALL 0x6d10 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006780 da40 RCALL 0x6c02 (ULAccumulator > (unsigned long)0x80000000L) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006782 0e00 MOVLW 0x0 -006784 da5d RCALL 0x6c40 -006786 0e80 MOVLW 0x80 -006788 54ee SUBFWB 0xee,0x0,0x0 -00677e e108 BNZ 0x6790 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00678a e202 BC 0x6790 +006762 da3b RCALL 0x6bda (ULAccumulator > (unsigned long)0x80000000L) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006764 0e00 MOVLW 0x0 +006766 da58 RCALL 0x6c18 +006768 0e80 MOVLW 0x80 +00676a 54ee SUBFWB 0xee,0x0,0x0 +006760 e108 BNZ 0x6772 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00676c e202 BC 0x6772 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00678c 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00678e d050 BRA 0x6830 return(kEXTRACT_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00676e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006770 d050 BRA 0x6812 return(kEXTRACT_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006790 da7c RCALL 0x6c8a Accumulator = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006c8a cfd9 MOVFF 0xfd9,0xfe9 -006c8c ffe9 -006c8e cfda MOVFF 0xfda,0xfea -006c90 ffea -006c92 0e04 MOVLW 0x4 -006c94 cfee MOVFF 0xfee,0xfdb -006c96 ffdb -006c98 0e05 MOVLW 0x5 -006c9a cfee MOVFF 0xfee,0xfdb -006c9c ffdb -006c9e 0e06 MOVLW 0x6 -006ca0 cfee MOVFF 0xfee,0xfdb -006ca2 ffdb -006ca4 0e07 MOVLW 0x7 -006ca6 cfee MOVFF 0xfee,0xfdb -006ca8 ffdb -006caa 0012 RETURN 0x0 +006772 da77 RCALL 0x6c62 Accumulator = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006c62 cfd9 MOVFF 0xfd9,0xfe9 +006c64 ffe9 +006c66 cfda MOVFF 0xfda,0xfea +006c68 ffea +006c6a 0e04 MOVLW 0x4 +006c6c cfee MOVFF 0xfee,0xfdb +006c6e ffdb +006c70 0e05 MOVLW 0x5 +006c72 cfee MOVFF 0xfee,0xfdb +006c74 ffdb +006c76 0e06 MOVLW 0x6 +006c78 cfee MOVFF 0xfee,0xfdb +006c7a ffdb +006c7c 0e07 MOVLW 0x7 +006c7e cfee MOVFF 0xfee,0xfdb +006c80 ffdb +006c82 0012 RETURN 0x0 // Then apply the negative if that's the right thing to do D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006792 0e08 MOVLW 0x8 if (Negative) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006794 50db MOVF 0xdb,0x0,0x0 -006796 e053 BZ 0x683e +006774 0e08 MOVLW 0x8 if (Negative) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006776 50db MOVF 0xdb,0x0,0x0 +006778 e053 BZ 0x6820 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006798 0e04 MOVLW 0x4 Accumulator = -Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00679a cfdb MOVFF 0xfdb,0x40 -00679c f040 -00679e 0e05 MOVLW 0x5 -0067a0 cfdb MOVFF 0xfdb,0x41 -0067a2 f041 -0067a4 0e06 MOVLW 0x6 -0067a6 cfdb MOVFF 0xfdb,0x42 -0067a8 f042 -0067aa 0e07 MOVLW 0x7 -0067ac cfdb MOVFF 0xfdb,0x43 -0067ae f043 -0067b0 6845 SETF 0x45,0x0 -0067b2 6846 SETF 0x46,0x0 -0067b4 6847 SETF 0x47,0x0 -0067b6 6848 SETF 0x48,0x0 -0067b8 ec8a CALL 0x9714,0x0 -0067ba f04b -0067bc 0e04 MOVLW 0x4 -0067be c03c MOVFF 0x3c,0xfdb -0067c0 ffdb -0067c2 0e05 MOVLW 0x5 -0067c4 c03d MOVFF 0x3d,0xfdb -0067c6 ffdb -0067c8 0e06 MOVLW 0x6 -0067ca c03e MOVFF 0x3e,0xfdb -0067cc ffdb -0067ce 0e07 MOVLW 0x7 -0067d0 c03f MOVFF 0x3f,0xfdb -0067d2 ffdb +00677a 0e04 MOVLW 0x4 Accumulator = -Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00677c cfdb MOVFF 0xfdb,0x40 +00677e f040 +006780 0e05 MOVLW 0x5 +006782 cfdb MOVFF 0xfdb,0x41 +006784 f041 +006786 0e06 MOVLW 0x6 +006788 cfdb MOVFF 0xfdb,0x42 +00678a f042 +00678c 0e07 MOVLW 0x7 +00678e cfdb MOVFF 0xfdb,0x43 +006790 f043 +006792 6845 SETF 0x45,0x0 +006794 6846 SETF 0x46,0x0 +006796 6847 SETF 0x47,0x0 +006798 6848 SETF 0x48,0x0 +00679a ec71 CALL 0x96e2,0x0 +00679c f04b +00679e 0e04 MOVLW 0x4 +0067a0 c03c MOVFF 0x3c,0xfdb +0067a2 ffdb +0067a4 0e05 MOVLW 0x5 +0067a6 c03d MOVFF 0x3d,0xfdb +0067a8 ffdb +0067aa 0e06 MOVLW 0x6 +0067ac c03e MOVFF 0x3e,0xfdb +0067ae ffdb +0067b0 0e07 MOVLW 0x7 +0067b2 c03f MOVFF 0x3f,0xfdb +0067b4 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067d4 d034 BRA 0x683e else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067b6 d034 BRA 0x6820 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067d6 0efe MOVLW 0xfe kCHAR == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067d8 50db MOVF 0xdb,0x0,0x0 +0067b8 0efe MOVLW 0xfe kCHAR == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067ba 50db MOVF 0xdb,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067dc da12 RCALL 0x6c02 (ULAccumulator > (unsigned long)127) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067de 0e7f MOVLW 0x7f -0067e0 54ee SUBFWB 0xee,0x0,0x0 -0067e2 0e00 MOVLW 0x0 -0067e4 da2d RCALL 0x6c40 -0067da e106 BNZ 0x67e8 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067e6 e323 BNC 0x682e +0067be da0d RCALL 0x6bda (ULAccumulator > (unsigned long)127) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067c0 0e7f MOVLW 0x7f +0067c2 54ee SUBFWB 0xee,0x0,0x0 +0067c4 0e00 MOVLW 0x0 +0067c6 da28 RCALL 0x6c18 +0067bc e106 BNZ 0x67ca ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067c8 e323 BNC 0x6810 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c kUCHAR == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067e8 0efe MOVLW 0xfe && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067ea 04db DECF 0xdb,0x0,0x0 -0067ee db79 RCALL 0x6ee2 (ULAccumulator > (unsigned long)255) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067f0 0e00 MOVLW 0x0 -0067f2 da26 RCALL 0x6c40 -0067ec e104 BNZ 0x67f6 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067f4 e31c BNC 0x682e +0067ca 0efe MOVLW 0xfe && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067cc 04db DECF 0xdb,0x0,0x0 +0067d0 db71 RCALL 0x6eb4 (ULAccumulator > (unsigned long)255) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067d2 0e00 MOVLW 0x0 +0067d4 da21 RCALL 0x6c18 +0067ce e104 BNZ 0x67d8 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067d6 e31c BNC 0x6810 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067f6 0e02 MOVLW 0x2 kINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067f8 da8a RCALL 0x6d0e +0067d8 0e02 MOVLW 0x2 kINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067da da85 RCALL 0x6ce6 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067fc db72 RCALL 0x6ee2 (ULAccumulator > (unsigned long)32767) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0067fe 0e7f MOVLW 0x7f -006800 da1f RCALL 0x6c40 -0067fa e104 BNZ 0x6804 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006802 e315 BNC 0x682e +0067de db6a RCALL 0x6eb4 (ULAccumulator > (unsigned long)32767) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067e0 0e7f MOVLW 0x7f +0067e2 da1a RCALL 0x6c18 +0067dc e104 BNZ 0x67e6 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067e4 e315 BNC 0x6810 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006804 0e03 MOVLW 0x3 kUINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006806 da98 RCALL 0x6d38 -006d38 6e4f MOVWF 0x4f,0x0 -006d3a 0efe MOVLW 0xfe -006d3c 50db MOVF 0xdb,0x0,0x0 -006d3e 5c4f SUBWF 0x4f,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006d40 0012 RETURN 0x0 -00680a db6b RCALL 0x6ee2 (ULAccumulator > (unsigned long)65535) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00680c 0eff MOVLW 0xff -00680e da18 RCALL 0x6c40 -006c40 54ee SUBFWB 0xee,0x0,0x0 -006c42 0e00 MOVLW 0x0 -006c44 54ee SUBFWB 0xee,0x0,0x0 -006c46 0e00 MOVLW 0x0 -006c48 54ee SUBFWB 0xee,0x0,0x0 -006c4a 0012 RETURN 0x0 -006808 e104 BNZ 0x6812 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006810 e30e BNC 0x682e +0067e6 0e03 MOVLW 0x3 kUINT == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067e8 da93 RCALL 0x6d10 +006d10 6e4f MOVWF 0x4f,0x0 +006d12 0efe MOVLW 0xfe +006d14 50db MOVF 0xdb,0x0,0x0 +006d16 5c4f SUBWF 0x4f,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d18 0012 RETURN 0x0 +0067ec db63 RCALL 0x6eb4 (ULAccumulator > (unsigned long)65535) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067ee 0eff MOVLW 0xff +0067f0 da13 RCALL 0x6c18 +006c18 54ee SUBFWB 0xee,0x0,0x0 +006c1a 0e00 MOVLW 0x0 +006c1c 54ee SUBFWB 0xee,0x0,0x0 +006c1e 0e00 MOVLW 0x0 +006c20 54ee SUBFWB 0xee,0x0,0x0 +006c22 0012 RETURN 0x0 +0067ea e104 BNZ 0x67f4 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067f2 e30e BNC 0x6810 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006812 0e06 MOVLW 0x6 kLONG == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006814 6e50 MOVWF 0x50,0x0 -006816 0efe MOVLW 0xfe -006818 50db MOVF 0xdb,0x0,0x0 -00681a 5c50 SUBWF 0x50,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00681e db61 RCALL 0x6ee2 (ULAccumulator > (unsigned long)0x7FFFFFFFL) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006820 0eff MOVLW 0xff -006822 54ee SUBFWB 0xee,0x0,0x0 -006824 0eff MOVLW 0xff -006826 54ee SUBFWB 0xee,0x0,0x0 -006828 0e7f MOVLW 0x7f -00682a 54ee SUBFWB 0xee,0x0,0x0 -006c02 cfd9 MOVFF 0xfd9,0xfe9 -006c04 ffe9 -006c06 cfda MOVFF 0xfda,0xfea -006c08 ffea -006c0a 80d8 BSF 0xd8,0x0,0x0 -006c0c 0012 RETURN 0x0 -006ee2 de8f RCALL 0x6c02 -006ee4 0eff MOVLW 0xff -006ee6 54ee SUBFWB 0xee,0x0,0x0 -006ee8 0012 RETURN 0x0 -00681c e10c BNZ 0x6836 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00682c e204 BC 0x6836 +0067f4 0e06 MOVLW 0x6 kLONG == Type D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0067f6 6e50 MOVWF 0x50,0x0 +0067f8 0efe MOVLW 0xfe +0067fa 50db MOVF 0xdb,0x0,0x0 +0067fc 5c50 SUBWF 0x50,0x0,0x0 && D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006800 db59 RCALL 0x6eb4 (ULAccumulator > (unsigned long)0x7FFFFFFFL) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006802 0eff MOVLW 0xff +006804 54ee SUBFWB 0xee,0x0,0x0 +006806 0eff MOVLW 0xff +006808 54ee SUBFWB 0xee,0x0,0x0 +00680a 0e7f MOVLW 0x7f +00680c 54ee SUBFWB 0xee,0x0,0x0 +006bda cfd9 MOVFF 0xfd9,0xfe9 +006bdc ffe9 +006bde cfda MOVFF 0xfda,0xfea +006be0 ffea +006be2 80d8 BSF 0xd8,0x0,0x0 +006be4 0012 RETURN 0x0 +006eb4 de92 RCALL 0x6bda +006eb6 0eff MOVLW 0xff +006eb8 54ee SUBFWB 0xee,0x0,0x0 +006eba 0012 RETURN 0x0 +0067fe e10c BNZ 0x6818 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00680e e204 BC 0x6818 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00682e 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006830 8d84 BSF 0x84,0x6,0x1 -006832 0e01 MOVLW 0x1 return(kEXTRACT_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006834 d036 BRA 0x68a2 +006810 0104 MOVLB 0x4 bitset(error_byte, kERROR_BYTE_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006812 8d84 BSF 0x84,0x6,0x1 +006814 0e01 MOVLW 0x1 return(kEXTRACT_PARAMETER_OUTSIDE_LIMIT); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006816 d036 BRA 0x6884 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006836 0e07 MOVLW 0x7 if (kULONG != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006838 da6a RCALL 0x6d0e -00683a e001 BZ 0x683e -006d0e 6e4e MOVWF 0x4e,0x0 -006d10 0efe MOVLW 0xfe -006d12 50db MOVF 0xdb,0x0,0x0 -006d14 5c4e SUBWF 0x4e,0x0,0x0 -006d16 0012 RETURN 0x0 +006818 0e07 MOVLW 0x7 if (kULONG != Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00681a da65 RCALL 0x6ce6 +00681c e001 BZ 0x6820 +006ce6 6e4e MOVWF 0x4e,0x0 +006ce8 0efe MOVLW 0xfe +006cea 50db MOVF 0xdb,0x0,0x0 +006cec 5c4e SUBWF 0x4e,0x0,0x0 +006cee 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00683c da26 RCALL 0x6c8a Accumulator = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00681e da21 RCALL 0x6c62 Accumulator = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // If all went well, then copy the result D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00683e 0efe MOVLW 0xfe switch (Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006840 50db MOVF 0xdb,0x0,0x0 -006842 0a07 XORLW 0x7 -006844 e021 BZ 0x6888 -006846 0a01 XORLW 0x1 -006848 e017 BZ 0x6878 -00684a 0a05 XORLW 0x5 -00684c e011 BZ 0x6870 -00684e 0a01 XORLW 0x1 -006850 e00f BZ 0x6870 -006852 0a03 XORLW 0x3 -006854 e008 BZ 0x6866 -006856 0a05 XORLW 0x5 -006858 e006 BZ 0x6866 -00685a 0a01 XORLW 0x1 -00685c e004 BZ 0x6866 -00685e 0a05 XORLW 0x5 -006860 e002 BZ 0x6866 +006820 0efe MOVLW 0xfe switch (Type) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006822 50db MOVF 0xdb,0x0,0x0 +006824 0a07 XORLW 0x7 +006826 e021 BZ 0x686a +006828 0a01 XORLW 0x1 +00682a e017 BZ 0x685a +00682c 0a05 XORLW 0x5 +00682e e011 BZ 0x6852 +006830 0a01 XORLW 0x1 +006832 e00f BZ 0x6852 +006834 0a03 XORLW 0x3 +006836 e008 BZ 0x6848 +006838 0a05 XORLW 0x5 +00683a e006 BZ 0x6848 +00683c 0a01 XORLW 0x1 +00683e e004 BZ 0x6848 +006840 0a05 XORLW 0x5 +006842 e002 BZ 0x6848 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kCHAR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c *(signed char *)ReturnValue = (signed char)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -25382,69 +25332,69 @@ Address Value Disassembly Source case kUCHAR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kASCII_CHAR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kUCASE_ASCII_CHAR: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006866 da27 RCALL 0x6cb6 *(unsigned char *)ReturnValue = (unsigned char)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006868 0e04 MOVLW 0x4 -00686a cfdb MOVFF 0xfdb,0xfef -00686c ffef -00686e d018 BRA 0x68a0 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006848 da22 RCALL 0x6c8e *(unsigned char *)ReturnValue = (unsigned char)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00684a 0e04 MOVLW 0x4 +00684c cfdb MOVFF 0xfdb,0xfef +00684e ffef +006850 d018 BRA 0x6882 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kINT: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c *(signed int *)ReturnValue = (signed int)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kUINT: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006870 db78 RCALL 0x6f62 *(unsigned int *)ReturnValue = (unsigned int)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006872 cfdb MOVFF 0xfdb,0xfed -006874 ffed -006f62 dea9 RCALL 0x6cb6 -006f64 0e04 MOVLW 0x4 -006f66 cfdb MOVFF 0xfdb,0xfee -006f68 ffee -006f6a 0e05 MOVLW 0x5 -006f6c 0012 RETURN 0x0 -006876 d014 BRA 0x68a0 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006852 db74 RCALL 0x6f3c *(unsigned int *)ReturnValue = (unsigned int)Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006854 cfdb MOVFF 0xfdb,0xfed +006856 ffed +006f3c dea8 RCALL 0x6c8e +006f3e 0e04 MOVLW 0x4 +006f40 cfdb MOVFF 0xfdb,0xfee +006f42 ffee +006f44 0e05 MOVLW 0x5 +006f46 0012 RETURN 0x0 +006858 d014 BRA 0x6882 break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kLONG: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006878 db74 RCALL 0x6f62 *(signed long *)ReturnValue = Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00687a cfdb MOVFF 0xfdb,0xfee -00687c ffee -00687e 0e06 MOVLW 0x6 -006880 cfdb MOVFF 0xfdb,0xfee -006882 ffee -006884 0e07 MOVLW 0x7 -006cb6 0efc MOVLW 0xfc -006cb8 cfdb MOVFF 0xfdb,0xfe9 -006cba ffe9 -006cbc 0efd MOVLW 0xfd -006cbe cfdb MOVFF 0xfdb,0xfea -006cc0 ffea -006cc2 0012 RETURN 0x0 -006886 d00a BRA 0x689c break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00685a db70 RCALL 0x6f3c *(signed long *)ReturnValue = Accumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00685c cfdb MOVFF 0xfdb,0xfee +00685e ffee +006860 0e06 MOVLW 0x6 +006862 cfdb MOVFF 0xfdb,0xfee +006864 ffee +006866 0e07 MOVLW 0x7 +006c8e 0efc MOVLW 0xfc +006c90 cfdb MOVFF 0xfdb,0xfe9 +006c92 ffe9 +006c94 0efd MOVLW 0xfd +006c96 cfdb MOVFF 0xfdb,0xfea +006c98 ffea +006c9a 0012 RETURN 0x0 +006868 d00a BRA 0x687e break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c case kULONG: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006888 da16 RCALL 0x6cb6 *(unsigned long *)ReturnValue = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00688a cfdf MOVFF 0xfdf,0xfee -00688c ffee -00688e 0e01 MOVLW 0x1 -006890 cfdb MOVFF 0xfdb,0xfee -006892 ffee -006894 0e02 MOVLW 0x2 -006896 cfdb MOVFF 0xfdb,0xfee -006898 ffee -00689a 0e03 MOVLW 0x3 -00689c cfdb MOVFF 0xfdb,0xfee -00689e ffee +00686a da11 RCALL 0x6c8e *(unsigned long *)ReturnValue = ULAccumulator; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00686c cfdf MOVFF 0xfdf,0xfee +00686e ffee +006870 0e01 MOVLW 0x1 +006872 cfdb MOVFF 0xfdb,0xfee +006874 ffee +006876 0e02 MOVLW 0x2 +006878 cfdb MOVFF 0xfdb,0xfee +00687a ffee +00687c 0e03 MOVLW 0x3 +00687e cfdb MOVFF 0xfdb,0xfee +006880 ffee break; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c default: D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006862 0e04 MOVLW 0x4 return(kEXTRACT_INVALID_TYPE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006864 d01e BRA 0x68a2 +006844 0e04 MOVLW 0x4 return(kEXTRACT_INVALID_TYPE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006846 d01e BRA 0x6884 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068a0 0e00 MOVLW 0x0 return(kEXTRACT_OK); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068a2 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068a4 0e09 MOVLW 0x9 -0068a6 5ce1 SUBWF 0xe1,0x0,0x0 -0068a8 e202 BC 0x68ae -0068aa 6ae1 CLRF 0xe1,0x0 -0068ac 52e5 MOVF 0xe5,0x1,0x0 -0068ae 6ee1 MOVWF 0xe1,0x0 -0068b0 504e MOVF 0x4e,0x0,0x0 -0068b2 d15c BRA 0x6b6c +006882 0e00 MOVLW 0x0 return(kEXTRACT_OK); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006884 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006886 0e09 MOVLW 0x9 +006888 5ce1 SUBWF 0xe1,0x0,0x0 +00688a e202 BC 0x6890 +00688c 6ae1 CLRF 0xe1,0x0 +00688e 52e5 MOVF 0xe5,0x1,0x0 +006890 6ee1 MOVWF 0xe1,0x0 +006892 504e MOVF 0x4e,0x0,0x0 +006894 d15c BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Loop 'digits' number of times, looking at the D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // byte in input_buffer index *ptr, and if it is D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -25452,175 +25402,194 @@ Address Value Disassembly Source // powers of ten as well. If you hit a non-numerical D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // char, then return FALSE, otherwise return TRUE. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // Store result as you go in *acc. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068b4 dbaa RCALL 0x700a signed char extract_digit(unsigned long * acc, unsigned char digits) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00700a ddab RCALL 0x6b62 -00700c 0e02 MOVLW 0x2 -00700e 26e1 ADDWF 0xe1,0x1,0x0 -007010 0012 RETURN 0x0 +006896 dba0 RCALL 0x6fd8 signed char extract_digit(unsigned long * acc, unsigned char digits) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006fd8 ddb5 RCALL 0x6b44 +006fda 0e02 MOVLW 0x2 +006fdc 26e1 ADDWF 0xe1,0x1,0x0 +006fde 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char val; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c unsigned char digit_cnt; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068b6 d9e2 RCALL 0x6c7c *acc = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068b8 6aee CLRF 0xee,0x0 -0068ba 6aee CLRF 0xee,0x0 -0068bc 6aee CLRF 0xee,0x0 -0068be 6aee CLRF 0xee,0x0 +006898 d9dd RCALL 0x6c54 *acc = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00689a 6aee CLRF 0xee,0x0 +00689c 6aee CLRF 0xee,0x0 +00689e 6aee CLRF 0xee,0x0 +0068a0 6aee CLRF 0xee,0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068c0 0e01 MOVLW 0x1 for (digit_cnt = 0; digit_cnt < digits; digit_cnt++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068c2 6adb CLRF 0xdb,0x0 -0068c4 0efc MOVLW 0xfc -0068c6 50db MOVF 0xdb,0x0,0x0 -0068c8 6ef3 MOVWF 0xf3,0x0 -0068ca 0e01 MOVLW 0x1 -0068cc da1b RCALL 0x6d04 -0068ce e24e BC 0x696c -006966 0e01 MOVLW 0x1 -006968 2adb INCF 0xdb,0x1,0x0 -00696a d7ac BRA 0x68c4 -006d04 cfdb MOVFF 0xfdb,0xff4 -006d06 fff4 -006d08 50f3 MOVF 0xf3,0x0,0x0 -006d0a 5cf4 SUBWF 0xf4,0x0,0x0 -006d0c 0012 RETURN 0x0 +0068a2 0e01 MOVLW 0x1 for (digit_cnt = 0; digit_cnt < digits; digit_cnt++) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0068a4 6adb CLRF 0xdb,0x0 +0068a6 0efc MOVLW 0xfc +0068a8 50db MOVF 0xdb,0x0,0x0 +0068aa 6ef3 MOVWF 0xf3,0x0 +0068ac 0e01 MOVLW 0x1 +0068ae da16 RCALL 0x6cdc +0068b0 e24e BC 0x694e +006948 0e01 MOVLW 0x1 +00694a 2adb INCF 0xdb,0x1,0x0 +00694c d7ac BRA 0x68a6 +006cdc cfdb MOVFF 0xfdb,0xff4 +006cde fff4 +006ce0 50f3 MOVF 0xf3,0x0,0x0 +006ce2 5cf4 SUBWF 0xf4,0x0,0x0 +006ce4 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068d0 0104 MOVLB 0x4 val = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068d2 dbaa RCALL 0x7028 -0068d4 cfef MOVFF 0xfef,0xfdf -0068d6 ffdf -0068d8 0e30 MOVLW 0x30 if ((val >= 48u) && (val <= 57u)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068da 5cdf SUBWF 0xdf,0x0,0x0 -0068dc e342 BNC 0x6962 -0068de 50df MOVF 0xdf,0x0,0x0 -0068e0 0839 SUBLW 0x39 -0068e2 e33f BNC 0x6962 +0068b2 0104 MOVLB 0x4 val = g_RX_buf[g_RX_buf_out]; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0068b4 dba5 RCALL 0x7000 +0068b6 cfef MOVFF 0xfef,0xfdf +0068b8 ffdf +0068ba 0e30 MOVLW 0x30 if ((val >= 48u) && (val <= 57u)) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0068bc 5cdf SUBWF 0xdf,0x0,0x0 +0068be e342 BNC 0x6944 +0068c0 50df MOVF 0xdf,0x0,0x0 +0068c2 0839 SUBLW 0x39 +0068c4 e33f BNC 0x6944 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068e4 d9cb RCALL 0x6c7c *acc = (*acc * 10) + (val - 48); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0068e6 cfee MOVFF 0xfee,0x4e -0068e8 f04e -0068ea cfee MOVFF 0xfee,0x4f -0068ec f04f -0068ee cfee MOVFF 0xfee,0x50 -0068f0 f050 -0068f2 cfef MOVFF 0xfef,0x51 -0068f4 f051 -0068f6 0e0a MOVLW 0xa -0068f8 6e45 MOVWF 0x45,0x0 -0068fa 6a46 CLRF 0x46,0x0 -0068fc 6a47 CLRF 0x47,0x0 -0068fe 6a48 CLRF 0x48,0x0 -006900 c04e MOVFF 0x4e,0x40 -006902 f040 -006904 c04f MOVFF 0x4f,0x41 -006906 f041 -006908 c050 MOVFF 0x50,0x42 -00690a f042 -00690c c051 MOVFF 0x51,0x43 -00690e f043 -006910 ec8a CALL 0x9714,0x0 -006912 f04b -006914 c03c MOVFF 0x3c,0x4e -006916 f04e -006918 c03d MOVFF 0x3d,0x4f -00691a f04f -00691c c03e MOVFF 0x3e,0x50 -00691e f050 -006920 c03f MOVFF 0x3f,0x51 -006922 f051 -006924 0e30 MOVLW 0x30 -006926 5cdf SUBWF 0xdf,0x0,0x0 -006928 6e52 MOVWF 0x52,0x0 -00692a 6a53 CLRF 0x53,0x0 -00692c 6a54 CLRF 0x54,0x0 -00692e 6a55 CLRF 0x55,0x0 -006930 50e8 MOVF 0xe8,0x0,0x0 -006932 264e ADDWF 0x4e,0x1,0x0 -006934 5053 MOVF 0x53,0x0,0x0 -006936 224f ADDWFC 0x4f,0x1,0x0 -006938 5054 MOVF 0x54,0x0,0x0 -00693a 2250 ADDWFC 0x50,0x1,0x0 -00693c 5055 MOVF 0x55,0x0,0x0 -00693e 2251 ADDWFC 0x51,0x1,0x0 -006940 d99d RCALL 0x6c7c -006942 c04e MOVFF 0x4e,0xfee -006944 ffee -006946 c04f MOVFF 0x4f,0xfee -006948 ffee -00694a c050 MOVFF 0x50,0xfee -00694c ffee -00694e c051 MOVFF 0x51,0xfee -006950 ffee -006c7c 0efd MOVLW 0xfd -006c7e cfdb MOVFF 0xfdb,0xfe9 -006c80 ffe9 -006c82 0efe MOVLW 0xfe -006c84 cfdb MOVFF 0xfdb,0xfea -006c86 ffea -006c88 0012 RETURN 0x0 +0068c6 d9c6 RCALL 0x6c54 *acc = (*acc * 10) + (val - 48); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0068c8 cfee MOVFF 0xfee,0x4e +0068ca f04e +0068cc cfee MOVFF 0xfee,0x4f +0068ce f04f +0068d0 cfee MOVFF 0xfee,0x50 +0068d2 f050 +0068d4 cfef MOVFF 0xfef,0x51 +0068d6 f051 +0068d8 0e0a MOVLW 0xa +0068da 6e45 MOVWF 0x45,0x0 +0068dc 6a46 CLRF 0x46,0x0 +0068de 6a47 CLRF 0x47,0x0 +0068e0 6a48 CLRF 0x48,0x0 +0068e2 c04e MOVFF 0x4e,0x40 +0068e4 f040 +0068e6 c04f MOVFF 0x4f,0x41 +0068e8 f041 +0068ea c050 MOVFF 0x50,0x42 +0068ec f042 +0068ee c051 MOVFF 0x51,0x43 +0068f0 f043 +0068f2 ec71 CALL 0x96e2,0x0 +0068f4 f04b +0068f6 c03c MOVFF 0x3c,0x4e +0068f8 f04e +0068fa c03d MOVFF 0x3d,0x4f +0068fc f04f +0068fe c03e MOVFF 0x3e,0x50 +006900 f050 +006902 c03f MOVFF 0x3f,0x51 +006904 f051 +006906 0e30 MOVLW 0x30 +006908 5cdf SUBWF 0xdf,0x0,0x0 +00690a 6e52 MOVWF 0x52,0x0 +00690c 6a53 CLRF 0x53,0x0 +00690e 6a54 CLRF 0x54,0x0 +006910 6a55 CLRF 0x55,0x0 +006912 50e8 MOVF 0xe8,0x0,0x0 +006914 264e ADDWF 0x4e,0x1,0x0 +006916 5053 MOVF 0x53,0x0,0x0 +006918 224f ADDWFC 0x4f,0x1,0x0 +00691a 5054 MOVF 0x54,0x0,0x0 +00691c 2250 ADDWFC 0x50,0x1,0x0 +00691e 5055 MOVF 0x55,0x0,0x0 +006920 2251 ADDWFC 0x51,0x1,0x0 +006922 d998 RCALL 0x6c54 +006924 c04e MOVFF 0x4e,0xfee +006926 ffee +006928 c04f MOVFF 0x4f,0xfee +00692a ffee +00692c c050 MOVFF 0x50,0xfee +00692e ffee +006930 c051 MOVFF 0x51,0xfee +006932 ffee +006c54 0efd MOVLW 0xfd +006c56 cfdb MOVFF 0xfdb,0xfe9 +006c58 ffe9 +006c5a 0efe MOVLW 0xfe +006c5c cfdb MOVFF 0xfdb,0xfea +006c5e ffea +006c60 0012 RETURN 0x0 // Move to the next character D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006952 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006954 d922 RCALL 0x6b9a -006956 e107 BNZ 0x6966 -006958 0e01 MOVLW 0x1 -00695a 184f XORWF 0x4f,0x0,0x0 -00695c e104 BNZ 0x6966 -00695e 6bb8 CLRF 0xb8,0x1 -006b9a 2bb8 INCF 0xb8,0x1,0x1 -006b9c 51b8 MOVF 0xb8,0x0,0x1 -006b9e 6e4e MOVWF 0x4e,0x0 -006ba0 6a4f CLRF 0x4f,0x0 -006ba2 0e00 MOVLW 0x0 -006ba4 184e XORWF 0x4e,0x0,0x0 -006ba6 0012 RETURN 0x0 +006934 0104 MOVLB 0x4 advance_RX_buf_out(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006936 d918 RCALL 0x6b68 +006938 e107 BNZ 0x6948 +00693a 0e01 MOVLW 0x1 +00693c 184f XORWF 0x4f,0x0,0x0 +00693e e104 BNZ 0x6948 +006940 6bb8 CLRF 0xb8,0x1 +006b68 2bb8 INCF 0xb8,0x1,0x1 +006b6a 51b8 MOVF 0xb8,0x0,0x1 +006b6c 6e4e MOVWF 0x4e,0x0 +006b6e 6a4f CLRF 0x4f,0x0 +006b70 0e00 MOVLW 0x0 +006b72 184e XORWF 0x4e,0x0,0x0 +006b74 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006960 d002 BRA 0x6966 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006942 d002 BRA 0x6948 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006962 0e00 MOVLW 0x0 return(FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006964 d004 BRA 0x696e +006944 0e00 MOVLW 0x0 return(FALSE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006946 d004 BRA 0x6950 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00696c 0e01 MOVLW 0x1 return(TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00696e 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006970 0e02 MOVLW 0x2 -006972 5ce1 SUBWF 0xe1,0x0,0x0 -006974 e202 BC 0x697a -006976 6ae1 CLRF 0xe1,0x0 -006978 52e5 MOVF 0xe5,0x1,0x0 -00697a 6ee1 MOVWF 0xe1,0x0 -00697c 504e MOVF 0x4e,0x0,0x0 -00697e d0f6 BRA 0x6b6c +00694e 0e01 MOVLW 0x1 return(TRUE); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006950 6e4e MOVWF 0x4e,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006952 0e02 MOVLW 0x2 +006954 5ce1 SUBWF 0xe1,0x0,0x0 +006956 e202 BC 0x695c +006958 6ae1 CLRF 0xe1,0x0 +00695a 52e5 MOVF 0xe5,0x1,0x0 +00695c 6ee1 MOVWF 0xe1,0x0 +00695e 504e MOVF 0x4e,0x0,0x0 +006960 d0f6 BRA 0x6b4e D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // For debugging, this command will spit out a bunch of values. D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c void print_status(void) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006980 0e8a MOVLW 0x8a ebb_print((far rom char*)"Status="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006982 6e4e MOVWF 0x4e,0x0 -006984 0e8b MOVLW 0x8b -006986 d8cf RCALL 0x6b26 -006b26 d9ac RCALL 0x6e80 -006b28 effb GOTO 0x6ff6 -006b2a f037 -006988 c47e MOVFF 0x47e,0x4e ebb_print_uint(ISR_D_FIFO_length); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00698a f04e -00698c daff RCALL 0x6f8c -00698e ef15 GOTO 0x6e2a -006990 f037 -006e2a d8e1 RCALL 0x6fee -006fee c04e MOVFF 0x4e,0xfe6 -006ff0 ffe6 -006ff2 ef96 GOTO 0x6b2c -006ff4 f035 -006b3a 0e01 MOVLW 0x1 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b3c efb7 GOTO 0x6f6e -006b3e f037 -006e2c ef9d GOTO 0x6b3a -006e2e f035 -006f6e 6ee6 MOVWF 0xe6,0x0 -006f70 ec0d CALL 0x541a,0x0 -006f72 f02a -006f74 52e5 MOVF 0xe5,0x1,0x0 -006f76 0012 RETURN 0x0 +006962 0e5a MOVLW 0x5a ebb_print((far rom char*)"Status="); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006964 6e4e MOVWF 0x4e,0x0 +006966 0e8b MOVLW 0x8b +006968 d8cf RCALL 0x6b08 +006b08 d9a4 RCALL 0x6e52 +006b0a efe2 GOTO 0x6fc4 +006b0c f037 +00696a c47e MOVFF 0x47e,0x4e ebb_print_uint(ISR_D_FIFO_length); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00696c f04e +00696e dabd RCALL 0x6eea +006970 effc GOTO 0x6df8 +006972 f036 +006b16 d961 RCALL 0x6dda +006b18 efd1 GOTO 0x6fa2 +006b1a f037 +006dda c04f MOVFF 0x4f,0xfe6 +006ddc ffe6 +006dde c050 MOVFF 0x50,0xfe6 +006de0 ffe6 +006de2 c051 MOVFF 0x51,0xfe6 +006de4 ffe6 +006de6 0012 RETURN 0x0 +006df2 d8e8 RCALL 0x6fc4 +006df4 52e5 MOVF 0xe5,0x1,0x0 +006df6 0012 RETURN 0x0 +006df8 c04e MOVFF 0x4e,0xfe6 +006dfa ffe6 +006dfc de8c RCALL 0x6b16 +006fa2 ecd9 CALL 0x8db2,0x0 +006fa4 f046 +006fa6 eff9 GOTO 0x6df2 +006fa8 f036 +006fc4 52e5 MOVF 0xe5,0x1,0x0 +006fc6 52e5 MOVF 0xe5,0x1,0x0 +006fc8 52e5 MOVF 0xe5,0x1,0x0 +006fca 0012 RETURN 0x0 +006b1c 0e01 MOVLW 0x1 print_line_ending(kLE_NORM); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006b1e efa4 GOTO 0x6f48 +006b20 f037 +006dfe ef8e GOTO 0x6b1c +006e00 f035 +006f48 6ee6 MOVWF 0xe6,0x0 +006f4a ec0f CALL 0x541e,0x0 +006f4c f02a +006f4e 52e5 MOVF 0xe5,0x1,0x0 +006f50 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /****************************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -25647,167 +25616,167 @@ Address Value Disassembly Source static unsigned char LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006992 0105 MOVLB 0x5 USBDeviceState == DETACHED_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006994 51bc MOVF 0xbc,0x0,0x1 +006974 0105 MOVLB 0x5 USBDeviceState == DETACHED_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006976 51bc MOVF 0xbc,0x0,0x1 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006998 0e01 MOVLW 0x1 1u == USBSuspendControl D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -00699a 6e4e MOVWF 0x4e,0x0 -00699c 5065 MOVF 0x65,0x0,0x0 -00699e 0b02 ANDLW 0x2 -0069a0 e001 BZ 0x69a4 -0069a2 0e01 MOVLW 0x1 -006996 e008 BZ 0x69a8 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069a4 5c4e SUBWF 0x4e,0x0,0x0 -0069a6 e117 BNZ 0x69d6 +00697a 0e01 MOVLW 0x1 1u == USBSuspendControl D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00697c 6e4e MOVWF 0x4e,0x0 +00697e 5065 MOVF 0x65,0x0,0x0 +006980 0b02 ANDLW 0x2 +006982 e001 BZ 0x6986 +006984 0e01 MOVLW 0x1 +006978 e008 BZ 0x698a ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006986 5c4e SUBWF 0x4e,0x0,0x0 +006988 e117 BNZ 0x69b8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069a8 d9d2 RCALL 0x6d4e LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069aa e10b BNZ 0x69c2 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00698a d9cd RCALL 0x6d26 LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +00698c e10b BNZ 0x69a4 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ac 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ae 11ee IORWF 0xee,0x0,0x1 -0069b0 e111 BNZ 0x69d4 +00698e 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006990 11ee IORWF 0xee,0x0,0x1 +006992 e111 BNZ 0x69b6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069b2 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069b4 0ea0 MOVLW 0xa0 LEDCount = 4000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069b6 6fed MOVWF 0xed,0x1 -0069b8 0e0f MOVLW 0xf -0069ba 6fee MOVWF 0xee,0x1 -0069bc 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069be 6fef MOVWF 0xef,0x1 +006994 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006996 0ea0 MOVLW 0xa0 LEDCount = 4000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006998 6fed MOVWF 0xed,0x1 +00699a 0e0f MOVLW 0xf +00699c 6fee MOVWF 0xee,0x1 +00699e 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069a0 6fef MOVWF 0xef,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069c0 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069a2 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069c2 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069c4 11ee IORWF 0xee,0x0,0x1 -0069c6 e152 BNZ 0x6a6c +0069a4 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069a6 11ee IORWF 0xee,0x0,0x1 +0069a8 e152 BNZ 0x6a4e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069c8 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ca 0ea0 MOVLW 0xa0 LEDCount = 4000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069cc 6fed MOVWF 0xed,0x1 -0069ce 0e0f MOVLW 0xf -0069d0 6fee MOVWF 0xee,0x1 -0069d2 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069aa 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ac 0ea0 MOVLW 0xa0 LEDCount = 4000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ae 6fed MOVWF 0xed,0x1 +0069b0 0e0f MOVLW 0xf +0069b2 6fee MOVWF 0xee,0x1 +0069b4 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069d4 0012 RETURN 0x0 else if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069b6 0012 RETURN 0x0 else if ( D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c USBDeviceState == ATTACHED_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069d6 05bc DECF 0xbc,0x0,0x1 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069da 0e02 MOVLW 0x2 USBDeviceState == POWERED_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069d8 e009 BZ 0x69ec || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069dc 5dbc SUBWF 0xbc,0x0,0x1 -0069de e006 BZ 0x69ec -0069e0 0e04 MOVLW 0x4 USBDeviceState == DEFAULT_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069e2 5dbc SUBWF 0xbc,0x0,0x1 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069e4 e003 BZ 0x69ec -0069e6 0e10 MOVLW 0x10 USBDeviceState == ADDRESS_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069e8 5dbc SUBWF 0xbc,0x0,0x1 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ea e117 BNZ 0x6a1a +0069b8 05bc DECF 0xbc,0x0,0x1 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069bc 0e02 MOVLW 0x2 USBDeviceState == POWERED_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ba e009 BZ 0x69ce || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069be 5dbc SUBWF 0xbc,0x0,0x1 +0069c0 e006 BZ 0x69ce +0069c2 0e04 MOVLW 0x4 USBDeviceState == DEFAULT_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069c4 5dbc SUBWF 0xbc,0x0,0x1 || D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069c6 e003 BZ 0x69ce +0069c8 0e10 MOVLW 0x10 USBDeviceState == ADDRESS_STATE D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ca 5dbc SUBWF 0xbc,0x0,0x1 ) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069cc e117 BNZ 0x69fc { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ec d9b0 RCALL 0x6d4e LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069ee e10b BNZ 0x6a06 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ce d9ab RCALL 0x6d26 LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069d0 e10b BNZ 0x69e8 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069f0 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069f2 11ee IORWF 0xee,0x0,0x1 -0069f4 e111 BNZ 0x6a18 +0069d2 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069d4 11ee IORWF 0xee,0x0,0x1 +0069d6 e111 BNZ 0x69fa { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069f6 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069f8 0e20 MOVLW 0x20 LEDCount = 20000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -0069fa 6fed MOVWF 0xed,0x1 -0069fc 0e4e MOVLW 0x4e -0069fe 6fee MOVWF 0xee,0x1 -006a00 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a02 6fef MOVWF 0xef,0x1 +0069d8 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069da 0e20 MOVLW 0x20 LEDCount = 20000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069dc 6fed MOVWF 0xed,0x1 +0069de 0e4e MOVLW 0x4e +0069e0 6fee MOVWF 0xee,0x1 +0069e2 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069e4 6fef MOVWF 0xef,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a04 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069e6 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069e8 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ea 11ee IORWF 0xee,0x0,0x1 +0069ec e130 BNZ 0x6a4e + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069ee 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069f0 0e20 MOVLW 0x20 LEDCount = 20000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069f2 6fed MOVWF 0xed,0x1 +0069f4 0e4e MOVLW 0x4e +0069f6 6fee MOVWF 0xee,0x1 +0069f8 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069fa 0012 RETURN 0x0 else if (USBDeviceState == CONFIGURED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +0069fc 0e20 MOVLW 0x20 +0069fe 5dbc SUBWF 0xbc,0x0,0x1 +006a00 e126 BNZ 0x6a4e + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a02 d991 RCALL 0x6d26 LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d26 0104 MOVLB 0x4 +006d28 07ed DECF 0xed,0x1,0x1 +006d2a 0e00 MOVLW 0x0 +006d2c 5bee SUBWFB 0xee,0x1,0x1 +006a04 e107 BNZ 0x6a14 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006d2e 51ef MOVF 0xef,0x0,0x1 +006d30 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 006a06 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c 006a08 11ee IORWF 0xee,0x0,0x1 -006a0a e130 BNZ 0x6a6c +006a0a e121 BNZ 0x6a4e { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a0c 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a0e 0e20 MOVLW 0x20 LEDCount = 20000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a10 6fed MOVWF 0xed,0x1 -006a12 0e4e MOVLW 0x4e -006a14 6fee MOVWF 0xee,0x1 -006a16 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a0c 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a0e d9d5 RCALL 0x6dba LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a10 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a12 d015 BRA 0x6a3e else if (1u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a14 05ef DECF 0xef,0x0,0x1 +006a16 e107 BNZ 0x6a26 + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a18 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a1a 11ee IORWF 0xee,0x0,0x1 +006a1c e118 BNZ 0x6a4e + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a1e 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a20 d9cc RCALL 0x6dba LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a22 0e02 MOVLW 0x2 LEDState = 2; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a24 d00c BRA 0x6a3e else if (2u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a26 0e02 MOVLW 0x2 +006a28 5def SUBWF 0xef,0x0,0x1 +006a2a e10b BNZ 0x6a42 + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a2c 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a2e 11ee IORWF 0xee,0x0,0x1 +006a30 e10e BNZ 0x6a4e + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a32 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a34 0ea0 MOVLW 0xa0 LEDCount = 100000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a36 6fed MOVWF 0xed,0x1 +006a38 0e86 MOVLW 0x86 +006a3a 6fee MOVWF 0xee,0x1 +006a3c 0e03 MOVLW 0x3 LEDState = 3; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a3e 6fef MOVWF 0xef,0x1 + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a40 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a42 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a44 11ee IORWF 0xee,0x0,0x1 +006a46 e103 BNZ 0x6a4e + { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a48 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a4a d9b7 RCALL 0x6dba LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006dba 0e10 MOVLW 0x10 +006dbc 6fed MOVWF 0xed,0x1 +006dbe 0e27 MOVLW 0x27 +006dc0 6fee MOVWF 0xee,0x1 +006dc2 0012 RETURN 0x0 +006a4c 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a18 0012 RETURN 0x0 else if (USBDeviceState == CONFIGURED_STATE) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a1a 0e20 MOVLW 0x20 -006a1c 5dbc SUBWF 0xbc,0x0,0x1 -006a1e e126 BNZ 0x6a6c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a20 d996 RCALL 0x6d4e LEDCount--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006d4e 0104 MOVLB 0x4 -006d50 07ed DECF 0xed,0x1,0x1 -006d52 0e00 MOVLW 0x0 -006d54 5bee SUBWFB 0xee,0x1,0x1 -006a22 e107 BNZ 0x6a32 if (0u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006d56 51ef MOVF 0xef,0x0,0x1 -006d58 0012 RETURN 0x0 - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a24 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a26 11ee IORWF 0xee,0x0,0x1 -006a28 e121 BNZ 0x6a6c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a2a 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a2c d9da RCALL 0x6de2 LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a2e 0e01 MOVLW 0x1 LEDState = 1; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a30 d015 BRA 0x6a5c else if (1u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a32 05ef DECF 0xef,0x0,0x1 -006a34 e107 BNZ 0x6a44 - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a36 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a38 11ee IORWF 0xee,0x0,0x1 -006a3a e118 BNZ 0x6a6c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a3c 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a3e d9d1 RCALL 0x6de2 LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a40 0e02 MOVLW 0x2 LEDState = 2; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a42 d00c BRA 0x6a5c else if (2u == LEDState) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a44 0e02 MOVLW 0x2 -006a46 5def SUBWF 0xef,0x0,0x1 -006a48 e10b BNZ 0x6a60 - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a4a 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a4c 11ee IORWF 0xee,0x0,0x1 -006a4e e10e BNZ 0x6a6c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a50 868c BSF 0x8c,0x3,0x0 mLED_1_On(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a52 0ea0 MOVLW 0xa0 LEDCount = 100000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a54 6fed MOVWF 0xed,0x1 -006a56 0e86 MOVLW 0x86 -006a58 6fee MOVWF 0xee,0x1 -006a5a 0e03 MOVLW 0x3 LEDState = 3; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a5c 6fef MOVWF 0xef,0x1 - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a5e 0012 RETURN 0x0 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a60 51ed MOVF 0xed,0x0,0x1 if (0u == LEDCount) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a62 11ee IORWF 0xee,0x0,0x1 -006a64 e103 BNZ 0x6a6c - { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a66 968c BCF 0x8c,0x3,0x0 mLED_1_Off(); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a68 d9bc RCALL 0x6de2 LEDCount = 10000U; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006de2 0e10 MOVLW 0x10 -006de4 6fed MOVWF 0xed,0x1 -006de6 0e27 MOVLW 0x27 -006de8 6fee MOVWF 0xee,0x1 -006dea 0012 RETURN 0x0 -006a6a 6bef CLRF 0xef,0x1 LEDState = 0; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c - } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a6c 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a4e 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c volatile near unsigned char * rom RPnTRISPort[25] = { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c &TRISA, // RP0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c @@ -25894,169 +25863,169 @@ Address Value Disassembly Source }; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // From RPn (Pin) number, set LAT value for that pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a6e d879 RCALL 0x6b62 void SetPinLATFromRPn(char Pin, char State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a50 d879 RCALL 0x6b44 void SetPinLATFromRPn(char Pin, char State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a70 d9ac RCALL 0x6dca if (Pin > 25) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a72 aee8 BTFSS 0xe8,0x7,0x0 -006a74 d002 BRA 0x6a7a -006a76 344e RLCF 0x4e,0x0,0x0 -006a78 d003 BRA 0x6a80 -006a7a 50e7 MOVF 0xe7,0x0,0x0 -006a7c 80d8 BSF 0xd8,0x0,0x0 -006a7e 544e SUBFWB 0x4e,0x0,0x0 -006a80 e323 BNC 0x6ac8 -006dca 0efe MOVLW 0xfe -006dcc cfdb MOVFF 0xfdb,0x4e -006dce f04e -006dd0 0e19 MOVLW 0x19 -006dd2 6ee7 MOVWF 0xe7,0x0 -006dd4 184e XORWF 0x4e,0x0,0x0 -006dd6 0012 RETURN 0x0 +006a52 d9a7 RCALL 0x6da2 if (Pin > 25) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a54 aee8 BTFSS 0xe8,0x7,0x0 +006a56 d002 BRA 0x6a5c +006a58 344e RLCF 0x4e,0x0,0x0 +006a5a d003 BRA 0x6a62 +006a5c 50e7 MOVF 0xe7,0x0,0x0 +006a5e 80d8 BSF 0xd8,0x0,0x0 +006a60 544e SUBFWB 0x4e,0x0,0x0 +006a62 e323 BNC 0x6aaa +006da2 0efe MOVLW 0xfe +006da4 cfdb MOVFF 0xfdb,0x4e +006da6 f04e +006da8 0e19 MOVLW 0x19 +006daa 6ee7 MOVWF 0xe7,0x0 +006dac 184e XORWF 0x4e,0x0,0x0 +006dae 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a82 0efd MOVLW 0xfd if (State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a84 50db MOVF 0xdb,0x0,0x0 -006a86 e010 BZ 0x6aa8 +006a64 0efd MOVLW 0xfd if (State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a66 50db MOVF 0xdb,0x0,0x0 +006a68 e010 BZ 0x6a8a { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a88 d911 RCALL 0x6cac bitset(*RPnLATPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006a8a bef6 BTFSC 0xf6,0x7,0x0 -006a8c 68f7 SETF 0xf7,0x0 -006a8e d8af RCALL 0x6bee -006a90 e004 BZ 0x6a9a -006a92 46e8 RLNCF 0xe8,0x1,0x0 -006a94 0bfe ANDLW 0xfe -006a96 064f DECF 0x4f,0x1,0x0 -006a98 e1fc BNZ 0x6a92 -006a9a 6e4e MOVWF 0x4e,0x0 -006a9c d907 RCALL 0x6cac -006a9e bef6 BTFSC 0xf6,0x7,0x0 -006aa0 68f7 SETF 0xf7,0x0 -006aa2 da01 RCALL 0x6ea6 -006aa4 12ef IORWF 0xef,0x1,0x0 -006ea6 90d8 BCF 0xd8,0x0,0x0 -006ea8 36f6 RLCF 0xf6,0x1,0x0 -006eaa 36f7 RLCF 0xf7,0x1,0x0 -006eac 0e27 MOVLW 0x27 -006eae 26f6 ADDWF 0xf6,0x1,0x0 -006eb0 0e95 MOVLW 0x95 -006eb2 ef13 GOTO 0x6c26 -006eb4 f036 +006a6a d90c RCALL 0x6c84 bitset(*RPnLATPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a6c bef6 BTFSC 0xf6,0x7,0x0 +006a6e 68f7 SETF 0xf7,0x0 +006a70 d8aa RCALL 0x6bc6 +006a72 e004 BZ 0x6a7c +006a74 46e8 RLNCF 0xe8,0x1,0x0 +006a76 0bfe ANDLW 0xfe +006a78 064f DECF 0x4f,0x1,0x0 +006a7a e1fc BNZ 0x6a74 +006a7c 6e4e MOVWF 0x4e,0x0 +006a7e d902 RCALL 0x6c84 +006a80 bef6 BTFSC 0xf6,0x7,0x0 +006a82 68f7 SETF 0xf7,0x0 +006a84 d9f9 RCALL 0x6e78 +006a86 12ef IORWF 0xef,0x1,0x0 +006e78 90d8 BCF 0xd8,0x0,0x0 +006e7a 36f6 RLCF 0xf6,0x1,0x0 +006e7c 36f7 RLCF 0xf7,0x1,0x0 +006e7e 0ef5 MOVLW 0xf5 +006e80 26f6 ADDWF 0xf6,0x1,0x0 +006e82 0e94 MOVLW 0x94 +006e84 efff GOTO 0x6bfe +006e86 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006aa6 d010 BRA 0x6ac8 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a88 d010 BRA 0x6aaa else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006aa8 d901 RCALL 0x6cac bitclr(*RPnLATPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006aaa bef6 BTFSC 0xf6,0x7,0x0 -006aac 68f7 SETF 0xf7,0x0 -006aae d89f RCALL 0x6bee -006ab0 e004 BZ 0x6aba -006ab2 46e8 RLNCF 0xe8,0x1,0x0 -006ab4 0bfe ANDLW 0xfe -006ab6 064f DECF 0x4f,0x1,0x0 -006ab8 e1fc BNZ 0x6ab2 -006aba 1ce8 COMF 0xe8,0x0,0x0 -006abc 6e4e MOVWF 0x4e,0x0 -006abe d8f6 RCALL 0x6cac -006ac0 bef6 BTFSC 0xf6,0x7,0x0 -006ac2 68f7 SETF 0xf7,0x0 -006ac4 d9f0 RCALL 0x6ea6 -006ac6 16ef ANDWF 0xef,0x1,0x0 +006a8a d8fc RCALL 0x6c84 bitclr(*RPnLATPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006a8c bef6 BTFSC 0xf6,0x7,0x0 +006a8e 68f7 SETF 0xf7,0x0 +006a90 d89a RCALL 0x6bc6 +006a92 e004 BZ 0x6a9c +006a94 46e8 RLNCF 0xe8,0x1,0x0 +006a96 0bfe ANDLW 0xfe +006a98 064f DECF 0x4f,0x1,0x0 +006a9a e1fc BNZ 0x6a94 +006a9c 1ce8 COMF 0xe8,0x0,0x0 +006a9e 6e4e MOVWF 0x4e,0x0 +006aa0 d8f1 RCALL 0x6c84 +006aa2 bef6 BTFSC 0xf6,0x7,0x0 +006aa4 68f7 SETF 0xf7,0x0 +006aa6 d9e8 RCALL 0x6e78 +006aa8 16ef ANDWF 0xef,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ac8 d051 BRA 0x6b6c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006aaa d051 BRA 0x6b4e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c // From RPn (Pin) number, set TRIS value for that pin D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006aca d84b RCALL 0x6b62 void SetPinTRISFromRPn(char Pin, char State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006aac d84b RCALL 0x6b44 void SetPinTRISFromRPn(char Pin, char State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006acc d97e RCALL 0x6dca if (Pin > 25) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ace aee8 BTFSS 0xe8,0x7,0x0 -006ad0 d002 BRA 0x6ad6 -006ad2 344e RLCF 0x4e,0x0,0x0 -006ad4 d003 BRA 0x6adc -006ad6 50e7 MOVF 0xe7,0x0,0x0 -006ad8 80d8 BSF 0xd8,0x0,0x0 -006ada 544e SUBFWB 0x4e,0x0,0x0 -006adc e323 BNC 0x6b24 +006aae d979 RCALL 0x6da2 if (Pin > 25) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ab0 aee8 BTFSS 0xe8,0x7,0x0 +006ab2 d002 BRA 0x6ab8 +006ab4 344e RLCF 0x4e,0x0,0x0 +006ab6 d003 BRA 0x6abe +006ab8 50e7 MOVF 0xe7,0x0,0x0 +006aba 80d8 BSF 0xd8,0x0,0x0 +006abc 544e SUBFWB 0x4e,0x0,0x0 +006abe e323 BNC 0x6b06 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c return; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ade 0efd MOVLW 0xfd if (OUTPUT_PIN == State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ae0 50db MOVF 0xdb,0x0,0x0 -006ae2 e111 BNZ 0x6b06 +006ac0 0efd MOVLW 0xfd if (OUTPUT_PIN == State) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ac2 50db MOVF 0xdb,0x0,0x0 +006ac4 e111 BNZ 0x6ae8 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ae4 d8e3 RCALL 0x6cac bitclr (*RPnTRISPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006ae6 bef6 BTFSC 0xf6,0x7,0x0 -006ae8 68f7 SETF 0xf7,0x0 -006aea d881 RCALL 0x6bee -006aec e004 BZ 0x6af6 -006aee 46e8 RLNCF 0xe8,0x1,0x0 -006af0 0bfe ANDLW 0xfe -006af2 064f DECF 0x4f,0x1,0x0 -006af4 e1fc BNZ 0x6aee -006af6 1ce8 COMF 0xe8,0x0,0x0 -006af8 6e4e MOVWF 0x4e,0x0 -006afa d8d8 RCALL 0x6cac -006afc bef6 BTFSC 0xf6,0x7,0x0 -006afe 68f7 SETF 0xf7,0x0 -006b00 d9da RCALL 0x6eb6 -006b02 16ef ANDWF 0xef,0x1,0x0 -006eb6 90d8 BCF 0xd8,0x0,0x0 -006eb8 36f6 RLCF 0xf6,0x1,0x0 -006eba 36f7 RLCF 0xf7,0x1,0x0 -006ebc 0ef5 MOVLW 0xf5 -006ebe 26f6 ADDWF 0xf6,0x1,0x0 -006ec0 0e94 MOVLW 0x94 -006ec2 ef13 GOTO 0x6c26 -006ec4 f036 +006ac6 d8de RCALL 0x6c84 bitclr (*RPnTRISPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ac8 bef6 BTFSC 0xf6,0x7,0x0 +006aca 68f7 SETF 0xf7,0x0 +006acc d87c RCALL 0x6bc6 +006ace e004 BZ 0x6ad8 +006ad0 46e8 RLNCF 0xe8,0x1,0x0 +006ad2 0bfe ANDLW 0xfe +006ad4 064f DECF 0x4f,0x1,0x0 +006ad6 e1fc BNZ 0x6ad0 +006ad8 1ce8 COMF 0xe8,0x0,0x0 +006ada 6e4e MOVWF 0x4e,0x0 +006adc d8d3 RCALL 0x6c84 +006ade bef6 BTFSC 0xf6,0x7,0x0 +006ae0 68f7 SETF 0xf7,0x0 +006ae2 d9d2 RCALL 0x6e88 +006ae4 16ef ANDWF 0xef,0x1,0x0 +006e88 90d8 BCF 0xd8,0x0,0x0 +006e8a 36f6 RLCF 0xf6,0x1,0x0 +006e8c 36f7 RLCF 0xf7,0x1,0x0 +006e8e 0ec3 MOVLW 0xc3 +006e90 26f6 ADDWF 0xf6,0x1,0x0 +006e92 0e94 MOVLW 0x94 +006e94 efff GOTO 0x6bfe +006e96 f035 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b04 d00f BRA 0x6b24 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006ae6 d00f BRA 0x6b06 else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b06 d8d2 RCALL 0x6cac bitset (*RPnTRISPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b08 bef6 BTFSC 0xf6,0x7,0x0 -006b0a 68f7 SETF 0xf7,0x0 -006b0c d870 RCALL 0x6bee -006b0e e004 BZ 0x6b18 -006b10 46e8 RLNCF 0xe8,0x1,0x0 -006b12 0bfe ANDLW 0xfe -006b14 064f DECF 0x4f,0x1,0x0 -006b16 e1fc BNZ 0x6b10 -006b18 6e4e MOVWF 0x4e,0x0 -006b1a d8c8 RCALL 0x6cac -006b1c bef6 BTFSC 0xf6,0x7,0x0 -006b1e 68f7 SETF 0xf7,0x0 -006b20 d9ca RCALL 0x6eb6 -006b22 12ef IORWF 0xef,0x1,0x0 -006bee 0e59 MOVLW 0x59 -006bf0 26f6 ADDWF 0xf6,0x1,0x0 -006bf2 0e95 MOVLW 0x95 -006bf4 22f7 ADDWFC 0xf7,0x1,0x0 -006bf6 0008 TBLRD -006bf8 50f5 MOVF 0xf5,0x0,0x0 -006bfa 6e4f MOVWF 0x4f,0x0 -006bfc 0e01 MOVLW 0x1 -006bfe 524f MOVF 0x4f,0x1,0x0 -006c00 0012 RETURN 0x0 -006c26 22f7 ADDWFC 0xf7,0x1,0x0 -006c28 0009 TBLRDPOSTINC -006c2a cff5 MOVFF 0xff5,0xfe9 -006c2c ffe9 -006c2e 0008 TBLRD -006c30 cff5 MOVFF 0xff5,0xfea -006c32 ffea -006c34 504e MOVF 0x4e,0x0,0x0 -006c36 0012 RETURN 0x0 -006cac 0efe MOVLW 0xfe -006cae cfdb MOVFF 0xfdb,0xff6 -006cb0 fff6 -006cb2 6af7 CLRF 0xf7,0x0 -006cb4 0012 RETURN 0x0 +006ae8 d8cd RCALL 0x6c84 bitset (*RPnTRISPort[Pin], RPnBit[Pin]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006aea bef6 BTFSC 0xf6,0x7,0x0 +006aec 68f7 SETF 0xf7,0x0 +006aee d86b RCALL 0x6bc6 +006af0 e004 BZ 0x6afa +006af2 46e8 RLNCF 0xe8,0x1,0x0 +006af4 0bfe ANDLW 0xfe +006af6 064f DECF 0x4f,0x1,0x0 +006af8 e1fc BNZ 0x6af2 +006afa 6e4e MOVWF 0x4e,0x0 +006afc d8c3 RCALL 0x6c84 +006afe bef6 BTFSC 0xf6,0x7,0x0 +006b00 68f7 SETF 0xf7,0x0 +006b02 d9c2 RCALL 0x6e88 +006b04 12ef IORWF 0xef,0x1,0x0 +006bc6 0e27 MOVLW 0x27 +006bc8 26f6 ADDWF 0xf6,0x1,0x0 +006bca 0e95 MOVLW 0x95 +006bcc 22f7 ADDWFC 0xf7,0x1,0x0 +006bce 0008 TBLRD +006bd0 50f5 MOVF 0xf5,0x0,0x0 +006bd2 6e4f MOVWF 0x4f,0x0 +006bd4 0e01 MOVLW 0x1 +006bd6 524f MOVF 0x4f,0x1,0x0 +006bd8 0012 RETURN 0x0 +006bfe 22f7 ADDWFC 0xf7,0x1,0x0 +006c00 0009 TBLRDPOSTINC +006c02 cff5 MOVFF 0xff5,0xfe9 +006c04 ffe9 +006c06 0008 TBLRD +006c08 cff5 MOVFF 0xff5,0xfea +006c0a ffea +006c0c 504e MOVF 0x4e,0x0,0x0 +006c0e 0012 RETURN 0x0 +006c84 0efe MOVLW 0xfe +006c86 cfdb MOVFF 0xfdb,0xff6 +006c88 fff6 +006c8a 6af7 CLRF 0xf7,0x0 +006c8c 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b24 d023 BRA 0x6b6c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c -006b6c 52e5 MOVF 0xe5,0x1,0x0 -006b6e cfe7 MOVFF 0xfe7,0xfd9 -006b70 ffd9 -006b72 0012 RETURN 0x0 +006b06 d023 BRA 0x6b4e } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c +006b4e 52e5 MOVF 0xe5,0x1,0x0 +006b50 cfe7 MOVFF 0xfe7,0xfd9 +006b52 ffd9 +006b54 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /** EOF user.c ***************************************************************/ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\UBW.c /******************************************************************** D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\usb_descriptors.c @@ -26415,332 +26384,332 @@ Address Value Disassembly Source static UINT8 i; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c /* Print a simple string */ D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d34 d8dd RCALL 0x8ef0 void ebb_print(far rom char * print_str) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d04 d8dd RCALL 0x8ec0 void ebb_print(far rom char * print_str) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d36 d8d0 RCALL 0x8ed8 while (*print_str != 0x00) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d38 e00d BZ 0x8d54 -008d52 d7f1 BRA 0x8d36 -008ed8 0efc MOVLW 0xfc -008eda cfdb MOVFF 0xfdb,0xff6 -008edc fff6 -008ede 0efd MOVLW 0xfd -008ee0 cfdb MOVFF 0xfdb,0xff7 -008ee2 fff7 -008ee4 0efe MOVLW 0xfe -008ee6 cfdb MOVFF 0xfdb,0xff8 -008ee8 fff8 -008eea 0008 TBLRD -008eec 50f5 MOVF 0xf5,0x0,0x0 -008eee 0012 RETURN 0x0 +008d06 d8d0 RCALL 0x8ea8 while (*print_str != 0x00) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d08 e00d BZ 0x8d24 +008d22 d7f1 BRA 0x8d06 +008ea8 0efc MOVLW 0xfc +008eaa cfdb MOVFF 0xfdb,0xff6 +008eac fff6 +008eae 0efd MOVLW 0xfd +008eb0 cfdb MOVFF 0xfdb,0xff7 +008eb2 fff7 +008eb4 0efe MOVLW 0xfe +008eb6 cfdb MOVFF 0xfdb,0xff8 +008eb8 fff8 +008eba 0008 TBLRD +008ebc 50f5 MOVF 0xf5,0x0,0x0 +008ebe 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d3a d8ce RCALL 0x8ed8 ebb_putc((char)*print_str); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d3c d8f3 RCALL 0x8f24 -008d3e 50d9 MOVF 0xd9,0x0,0x0 print_str++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d40 0ffc ADDLW 0xfc -008d42 6ee9 MOVWF 0xe9,0x0 -008d44 0eff MOVLW 0xff -008d46 20da ADDWFC 0xda,0x0,0x0 -008d48 6eea MOVWF 0xea,0x0 -008d4a 2aee INCF 0xee,0x1,0x0 -008d4c 0e00 MOVLW 0x0 -008d4e 22ee ADDWFC 0xee,0x1,0x0 -008d50 22ee ADDWFC 0xee,0x1,0x0 +008d0a d8ce RCALL 0x8ea8 ebb_putc((char)*print_str); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d0c d8f3 RCALL 0x8ef4 +008d0e 50d9 MOVF 0xd9,0x0,0x0 print_str++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d10 0ffc ADDLW 0xfc +008d12 6ee9 MOVWF 0xe9,0x0 +008d14 0eff MOVLW 0xff +008d16 20da ADDWFC 0xda,0x0,0x0 +008d18 6eea MOVWF 0xea,0x0 +008d1a 2aee INCF 0xee,0x1,0x0 +008d1c 0e00 MOVLW 0x0 +008d1e 22ee ADDWFC 0xee,0x1,0x0 +008d20 22ee ADDWFC 0xee,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d54 d0f7 BRA 0x8f44 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d24 d0f7 BRA 0x8f14 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d56 d8cc RCALL 0x8ef0 void ebb_print_ram(char * print_str) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d26 d8cc RCALL 0x8ec0 void ebb_print_ram(char * print_str) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d58 d8d6 RCALL 0x8f06 while (*print_str != 0x00) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d5a e008 BZ 0x8d6c -008d6a d7f6 BRA 0x8d58 -008f06 0efd MOVLW 0xfd -008f08 cfdb MOVFF 0xfdb,0xfe9 -008f0a ffe9 -008f0c 0efe MOVLW 0xfe -008f0e cfdb MOVFF 0xfdb,0xfea -008f10 ffea -008f12 50ef MOVF 0xef,0x0,0x0 -008f14 0012 RETURN 0x0 +008d28 d8d6 RCALL 0x8ed6 while (*print_str != 0x00) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d2a e008 BZ 0x8d3c +008d3a d7f6 BRA 0x8d28 +008ed6 0efd MOVLW 0xfd +008ed8 cfdb MOVFF 0xfdb,0xfe9 +008eda ffe9 +008edc 0efe MOVLW 0xfe +008ede cfdb MOVFF 0xfdb,0xfea +008ee0 ffea +008ee2 50ef MOVF 0xef,0x0,0x0 +008ee4 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d5c d8d4 RCALL 0x8f06 ebb_putc(*print_str); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d5e d8e2 RCALL 0x8f24 -008d60 0efd MOVLW 0xfd print_str++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d62 2adb INCF 0xdb,0x1,0x0 -008d64 0efe MOVLW 0xfe -008d66 e3f8 BNC 0x8d58 -008d68 2adb INCF 0xdb,0x1,0x0 +008d2c d8d4 RCALL 0x8ed6 ebb_putc(*print_str); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d2e d8e2 RCALL 0x8ef4 +008d30 0efd MOVLW 0xfd print_str++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d32 2adb INCF 0xdb,0x1,0x0 +008d34 0efe MOVLW 0xfe +008d36 e3f8 BNC 0x8d28 +008d38 2adb INCF 0xdb,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d6c d0eb BRA 0x8f44 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d3c d0eb BRA 0x8f14 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c // Print out as a hex value, zero-padded to digits D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d6e d8ee RCALL 0x8f4c void ebb_print_hex(UINT32 data, UINT8 length) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008f4c dfd1 RCALL 0x8ef0 +008d3e d8ee RCALL 0x8f1c void ebb_print_hex(UINT32 data, UINT8 length) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008f1c dfd1 RCALL 0x8ec0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008f4e 0101 MOVLB 0x1 gOutputStr[EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 1] = 0x00; // Always add string terminator D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008f50 6bfc CLRF 0xfc,0x1 -008f52 0e0a MOVLW 0xa gPos = (EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008f54 6ffd MOVWF 0xfd,0x1 -008f56 0012 RETURN 0x0 +008f1e 0101 MOVLB 0x1 gOutputStr[EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 1] = 0x00; // Always add string terminator D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008f20 6bfc CLRF 0xfc,0x1 +008f22 0e0a MOVLW 0xa gPos = (EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008f24 6ffd MOVWF 0xfd,0x1 +008f26 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c do D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d70 0e0f MOVLW 0xf i = data & 0x0000000F; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d72 6e4e MOVWF 0x4e,0x0 -008d74 6a4f CLRF 0x4f,0x0 -008d76 6a50 CLRF 0x50,0x0 -008d78 50d9 MOVF 0xd9,0x0,0x0 -008d7a d8bf RCALL 0x8efa -008d7c 50ee MOVF 0xee,0x0,0x0 -008d7e 164e ANDWF 0x4e,0x1,0x0 -008d80 50ee MOVF 0xee,0x0,0x0 -008d82 164f ANDWF 0x4f,0x1,0x0 -008d84 50ee MOVF 0xee,0x0,0x0 -008d86 1650 ANDWF 0x50,0x1,0x0 -008d88 50ee MOVF 0xee,0x0,0x0 -008d8a c04e MOVFF 0x4e,0x1fe -008d8c f1fe +008d40 0e0f MOVLW 0xf i = data & 0x0000000F; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d42 6e4e MOVWF 0x4e,0x0 +008d44 6a4f CLRF 0x4f,0x0 +008d46 6a50 CLRF 0x50,0x0 +008d48 50d9 MOVF 0xd9,0x0,0x0 +008d4a d8bf RCALL 0x8eca +008d4c 50ee MOVF 0xee,0x0,0x0 +008d4e 164e ANDWF 0x4e,0x1,0x0 +008d50 50ee MOVF 0xee,0x0,0x0 +008d52 164f ANDWF 0x4f,0x1,0x0 +008d54 50ee MOVF 0xee,0x0,0x0 +008d56 1650 ANDWF 0x50,0x1,0x0 +008d58 50ee MOVF 0xee,0x0,0x0 +008d5a c04e MOVFF 0x4e,0x1fe +008d5c f1fe D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d8e 504e MOVF 0x4e,0x0,0x0 if (i <= 0x09u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d90 0809 SUBLW 0x9 -008d92 e302 BNC 0x8d98 +008d5e 504e MOVF 0x4e,0x0,0x0 if (i <= 0x09u) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d60 0809 SUBLW 0x9 +008d62 e302 BNC 0x8d68 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d94 0e30 MOVLW 0x30 gOutputStr[gPos] = i + '0'; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d64 0e30 MOVLW 0x30 gOutputStr[gPos] = i + '0'; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d96 d001 BRA 0x8d9a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d66 d001 BRA 0x8d6a else D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d98 0e37 MOVLW 0x37 gOutputStr[gPos] = i + ('A' - 0x0A); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d9a 25fe ADDWF 0xfe,0x0,0x1 -008d9c d8c8 RCALL 0x8f2e -008f2e 6ee6 MOVWF 0xe6,0x0 -008f30 51fd MOVF 0xfd,0x0,0x1 -008f32 6aea CLRF 0xea,0x0 -008f34 0ff1 ADDLW 0xf1 -008f36 6ee9 MOVWF 0xe9,0x0 -008f38 0e01 MOVLW 0x1 -008f3a 22ea ADDWFC 0xea,0x1,0x0 -008f3c 52e5 MOVF 0xe5,0x1,0x0 -008f3e 50e7 MOVF 0xe7,0x0,0x0 -008f40 6eef MOVWF 0xef,0x0 -008f42 0012 RETURN 0x0 +008d68 0e37 MOVLW 0x37 gOutputStr[gPos] = i + ('A' - 0x0A); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d6a 25fe ADDWF 0xfe,0x0,0x1 +008d6c d8c8 RCALL 0x8efe +008efe 6ee6 MOVWF 0xe6,0x0 +008f00 51fd MOVF 0xfd,0x0,0x1 +008f02 6aea CLRF 0xea,0x0 +008f04 0ff1 ADDLW 0xf1 +008f06 6ee9 MOVWF 0xe9,0x0 +008f08 0e01 MOVLW 0x1 +008f0a 22ea ADDWFC 0xea,0x1,0x0 +008f0c 52e5 MOVF 0xe5,0x1,0x0 +008f0e 50e7 MOVF 0xe7,0x0,0x0 +008f10 6eef MOVWF 0xef,0x0 +008f12 0012 RETURN 0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008d9e d873 RCALL 0x8e86 data = data >> 4; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008da0 0e04 MOVLW 0x4 -008da2 90d8 BCF 0xd8,0x0,0x0 -008da4 3251 RRCF 0x51,0x1,0x0 -008da6 3250 RRCF 0x50,0x1,0x0 -008da8 324f RRCF 0x4f,0x1,0x0 -008daa 324e RRCF 0x4e,0x1,0x0 -008dac 06e8 DECF 0xe8,0x1,0x0 -008dae e1f9 BNZ 0x8da2 -008db0 0efb MOVLW 0xfb -008db2 c04e MOVFF 0x4e,0xfdb -008db4 ffdb -008db6 0efc MOVLW 0xfc -008db8 c04f MOVFF 0x4f,0xfdb -008dba ffdb -008dbc 0efd MOVLW 0xfd -008dbe c050 MOVFF 0x50,0xfdb -008dc0 ffdb -008dc2 0efe MOVLW 0xfe -008dc4 c051 MOVFF 0x51,0xfdb -008dc6 ffdb -008dc8 0101 MOVLB 0x1 gPos--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dca 07fd DECF 0xfd,0x1,0x1 -008dcc 0efa MOVLW 0xfa if (length) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dce 50db MOVF 0xdb,0x0,0x0 -008dd0 e002 BZ 0x8dd6 +008d6e d873 RCALL 0x8e56 data = data >> 4; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d70 0e04 MOVLW 0x4 +008d72 90d8 BCF 0xd8,0x0,0x0 +008d74 3251 RRCF 0x51,0x1,0x0 +008d76 3250 RRCF 0x50,0x1,0x0 +008d78 324f RRCF 0x4f,0x1,0x0 +008d7a 324e RRCF 0x4e,0x1,0x0 +008d7c 06e8 DECF 0xe8,0x1,0x0 +008d7e e1f9 BNZ 0x8d72 +008d80 0efb MOVLW 0xfb +008d82 c04e MOVFF 0x4e,0xfdb +008d84 ffdb +008d86 0efc MOVLW 0xfc +008d88 c04f MOVFF 0x4f,0xfdb +008d8a ffdb +008d8c 0efd MOVLW 0xfd +008d8e c050 MOVFF 0x50,0xfdb +008d90 ffdb +008d92 0efe MOVLW 0xfe +008d94 c051 MOVFF 0x51,0xfdb +008d96 ffdb +008d98 0101 MOVLB 0x1 gPos--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d9a 07fd DECF 0xfd,0x1,0x1 +008d9c 0efa MOVLW 0xfa if (length) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008d9e 50db MOVF 0xdb,0x0,0x0 +008da0 e002 BZ 0x8da6 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dd2 0efa MOVLW 0xfa length--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dd4 06db DECF 0xdb,0x1,0x0 +008da2 0efa MOVLW 0xfa length--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008da4 06db DECF 0xdb,0x1,0x0 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dd6 d8c0 RCALL 0x8f58 while (data != 0u || length != 0u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dd8 e1cb BNZ 0x8d70 -008dda 0efa MOVLW 0xfa -008ddc 50db MOVF 0xdb,0x0,0x0 -008dde e1c8 BNZ 0x8d70 -008f58 df96 RCALL 0x8e86 -008f5a 504e MOVF 0x4e,0x0,0x0 -008f5c 104f IORWF 0x4f,0x0,0x0 -008f5e 1050 IORWF 0x50,0x0,0x0 -008f60 1051 IORWF 0x51,0x0,0x0 -008f62 0012 RETURN 0x0 +008da6 d8c0 RCALL 0x8f28 while (data != 0u || length != 0u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008da8 e1cb BNZ 0x8d40 +008daa 0efa MOVLW 0xfa +008dac 50db MOVF 0xdb,0x0,0x0 +008dae e1c8 BNZ 0x8d40 +008f28 df96 RCALL 0x8e56 +008f2a 504e MOVF 0x4e,0x0,0x0 +008f2c 104f IORWF 0x4f,0x0,0x0 +008f2e 1050 IORWF 0x50,0x0,0x0 +008f30 1051 IORWF 0x51,0x0,0x0 +008f32 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008de0 d06c BRA 0x8eba gPos++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008eba 2bfd INCF 0xfd,0x1,0x1 +008db0 d06c BRA 0x8e8a gPos++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e8a 2bfd INCF 0xfd,0x1,0x1 // gPos now points to the beginning of where we need to print from D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008ebc 51fd MOVF 0xfd,0x0,0x1 ebb_print_ram(&gOutputStr[gPos]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008ebe 6a4f CLRF 0x4f,0x0 -008ec0 0ff1 ADDLW 0xf1 -008ec2 6e4e MOVWF 0x4e,0x0 -008ec4 0e01 MOVLW 0x1 -008ec6 224f ADDWFC 0x4f,0x1,0x0 -008ec8 c04e MOVFF 0x4e,0xfe6 -008eca ffe6 -008ecc c04f MOVFF 0x4f,0xfe6 -008ece ffe6 -008ed0 df42 RCALL 0x8d56 -008ed2 52e5 MOVF 0xe5,0x1,0x0 -008ed4 52e5 MOVF 0xe5,0x1,0x0 -008ed6 d036 BRA 0x8f44 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008f44 52e5 MOVF 0xe5,0x1,0x0 -008f46 cfe7 MOVFF 0xfe7,0xfd9 -008f48 ffd9 -008f4a 0012 RETURN 0x0 +008e8c 51fd MOVF 0xfd,0x0,0x1 ebb_print_ram(&gOutputStr[gPos]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e8e 6a4f CLRF 0x4f,0x0 +008e90 0ff1 ADDLW 0xf1 +008e92 6e4e MOVWF 0x4e,0x0 +008e94 0e01 MOVLW 0x1 +008e96 224f ADDWFC 0x4f,0x1,0x0 +008e98 c04e MOVFF 0x4e,0xfe6 +008e9a ffe6 +008e9c c04f MOVFF 0x4f,0xfe6 +008e9e ffe6 +008ea0 df42 RCALL 0x8d26 +008ea2 52e5 MOVF 0xe5,0x1,0x0 +008ea4 52e5 MOVF 0xe5,0x1,0x0 +008ea6 d036 BRA 0x8f14 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008f14 52e5 MOVF 0xe5,0x1,0x0 +008f16 cfe7 MOVFF 0xfe7,0xfd9 +008f18 ffd9 +008f1a 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c // Print out as an unsigned integer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008de2 d8b4 RCALL 0x8f4c void ebb_print_uint(UINT32 data) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008db2 d8b4 RCALL 0x8f1c void ebb_print_uint(UINT32 data) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c gOutputStr[EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 1] = 0x00; // Always add string terminator D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c gPos = (EBB_PRINT_MAX_OUTPUT_LENGTH_CHARS - 2); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c do D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008de4 d85d RCALL 0x8ea0 i = data % 10; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008de6 d897 RCALL 0x8f16 -008de8 c03c MOVFF 0x3c,0x1fe -008dea f1fe -008f16 0e0a MOVLW 0xa -008f18 6e45 MOVWF 0x45,0x0 -008f1a 6a46 CLRF 0x46,0x0 -008f1c 6a47 CLRF 0x47,0x0 -008f1e 6a48 CLRF 0x48,0x0 -008f20 efee GOTO 0x97dc -008f22 f04b +008db4 d85d RCALL 0x8e70 i = data % 10; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008db6 d897 RCALL 0x8ee6 +008db8 c03c MOVFF 0x3c,0x1fe +008dba f1fe +008ee6 0e0a MOVLW 0xa +008ee8 6e45 MOVWF 0x45,0x0 +008eea 6a46 CLRF 0x46,0x0 +008eec 6a47 CLRF 0x47,0x0 +008eee 6a48 CLRF 0x48,0x0 +008ef0 efd5 GOTO 0x97aa +008ef2 f04b D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dec 0e30 MOVLW 0x30 gOutputStr[gPos] = i + '0'; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008dee 0101 MOVLB 0x1 -008df0 243c ADDWF 0x3c,0x0,0x0 -008df2 d89d RCALL 0x8f2e +008dbc 0e30 MOVLW 0x30 gOutputStr[gPos] = i + '0'; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008dbe 0101 MOVLB 0x1 +008dc0 243c ADDWF 0x3c,0x0,0x0 +008dc2 d89d RCALL 0x8efe D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008df4 d855 RCALL 0x8ea0 data = data / 10; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008df6 d88f RCALL 0x8f16 -008df8 0efb MOVLW 0xfb -008dfa c040 MOVFF 0x40,0xfdb -008dfc ffdb -008dfe 0efc MOVLW 0xfc -008e00 c041 MOVFF 0x41,0xfdb -008e02 ffdb -008e04 0efd MOVLW 0xfd -008e06 c042 MOVFF 0x42,0xfdb -008e08 ffdb -008e0a 0efe MOVLW 0xfe -008e0c c043 MOVFF 0x43,0xfdb -008e0e ffdb -008ea0 0efb MOVLW 0xfb -008ea2 cfdb MOVFF 0xfdb,0x40 -008ea4 f040 -008ea6 0efc MOVLW 0xfc -008ea8 cfdb MOVFF 0xfdb,0x41 -008eaa f041 -008eac 0efd MOVLW 0xfd -008eae cfdb MOVFF 0xfdb,0x42 -008eb0 f042 -008eb2 0efe MOVLW 0xfe -008eb4 cfdb MOVFF 0xfdb,0x43 -008eb6 f043 -008eb8 0012 RETURN 0x0 -008e10 0101 MOVLB 0x1 gPos--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e12 07fd DECF 0xfd,0x1,0x1 +008dc4 d855 RCALL 0x8e70 data = data / 10; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008dc6 d88f RCALL 0x8ee6 +008dc8 0efb MOVLW 0xfb +008dca c040 MOVFF 0x40,0xfdb +008dcc ffdb +008dce 0efc MOVLW 0xfc +008dd0 c041 MOVFF 0x41,0xfdb +008dd2 ffdb +008dd4 0efd MOVLW 0xfd +008dd6 c042 MOVFF 0x42,0xfdb +008dd8 ffdb +008dda 0efe MOVLW 0xfe +008ddc c043 MOVFF 0x43,0xfdb +008dde ffdb +008e70 0efb MOVLW 0xfb +008e72 cfdb MOVFF 0xfdb,0x40 +008e74 f040 +008e76 0efc MOVLW 0xfc +008e78 cfdb MOVFF 0xfdb,0x41 +008e7a f041 +008e7c 0efd MOVLW 0xfd +008e7e cfdb MOVFF 0xfdb,0x42 +008e80 f042 +008e82 0efe MOVLW 0xfe +008e84 cfdb MOVFF 0xfdb,0x43 +008e86 f043 +008e88 0012 RETURN 0x0 +008de0 0101 MOVLB 0x1 gPos--; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008de2 07fd DECF 0xfd,0x1,0x1 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e14 d8a1 RCALL 0x8f58 while (data != 0u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e16 e1e6 BNZ 0x8de4 -008e86 0efb MOVLW 0xfb -008e88 cfdb MOVFF 0xfdb,0x4e -008e8a f04e -008e8c 0efc MOVLW 0xfc -008e8e cfdb MOVFF 0xfdb,0x4f -008e90 f04f -008e92 0efd MOVLW 0xfd -008e94 cfdb MOVFF 0xfdb,0x50 -008e96 f050 -008e98 0efe MOVLW 0xfe -008e9a cfdb MOVFF 0xfdb,0x51 -008e9c f051 -008e9e 0012 RETURN 0x0 +008de4 d8a1 RCALL 0x8f28 while (data != 0u); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008de6 e1e6 BNZ 0x8db4 +008e56 0efb MOVLW 0xfb +008e58 cfdb MOVFF 0xfdb,0x4e +008e5a f04e +008e5c 0efc MOVLW 0xfc +008e5e cfdb MOVFF 0xfdb,0x4f +008e60 f04f +008e62 0efd MOVLW 0xfd +008e64 cfdb MOVFF 0xfdb,0x50 +008e66 f050 +008e68 0efe MOVLW 0xfe +008e6a cfdb MOVFF 0xfdb,0x51 +008e6c f051 +008e6e 0012 RETURN 0x0 D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e18 d050 BRA 0x8eba gPos++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008de8 d050 BRA 0x8e8a gPos++; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c // gPos now points to the beginning of where we need to print from D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c ebb_print_ram(&gOutputStr[gPos]); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c // Print out as a signed integer D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e1a d86a RCALL 0x8ef0 void ebb_print_int(INT32 data) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008ef0 cfd9 MOVFF 0xfd9,0xfe6 -008ef2 ffe6 -008ef4 cfe1 MOVFF 0xfe1,0xfd9 -008ef6 ffd9 -008ef8 0012 RETURN 0x0 +008dea d86a RCALL 0x8ec0 void ebb_print_int(INT32 data) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008ec0 cfd9 MOVFF 0xfd9,0xfe6 +008ec2 ffe6 +008ec4 cfe1 MOVFF 0xfe1,0xfd9 +008ec6 ffd9 +008ec8 0012 RETURN 0x0 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c // Handle negative sign D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e1c 50e1 MOVF 0xe1,0x0,0x0 if (data < 0) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e1e d86d RCALL 0x8efa -008e20 90d8 BCF 0xd8,0x0,0x0 -008e22 0e03 MOVLW 0x3 -008e24 50eb MOVF 0xeb,0x0,0x0 -008e26 0a00 XORLW 0x0 -008e28 e608 BN 0x8e3a -008e2a 0e00 MOVLW 0x0 -008e2c 5cee SUBWF 0xee,0x0,0x0 -008e2e 0e00 MOVLW 0x0 -008e30 58ee SUBWFB 0xee,0x0,0x0 -008e32 0e00 MOVLW 0x0 -008e34 58ee SUBWFB 0xee,0x0,0x0 -008e36 0e00 MOVLW 0x0 -008e38 58ee SUBWFB 0xee,0x0,0x0 -008e3a e215 BC 0x8e66 +008dec 50e1 MOVF 0xe1,0x0,0x0 if (data < 0) D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008dee d86d RCALL 0x8eca +008df0 90d8 BCF 0xd8,0x0,0x0 +008df2 0e03 MOVLW 0x3 +008df4 50eb MOVF 0xeb,0x0,0x0 +008df6 0a00 XORLW 0x0 +008df8 e608 BN 0x8e0a +008dfa 0e00 MOVLW 0x0 +008dfc 5cee SUBWF 0xee,0x0,0x0 +008dfe 0e00 MOVLW 0x0 +008e00 58ee SUBWFB 0xee,0x0,0x0 +008e02 0e00 MOVLW 0x0 +008e04 58ee SUBWFB 0xee,0x0,0x0 +008e06 0e00 MOVLW 0x0 +008e08 58ee SUBWFB 0xee,0x0,0x0 +008e0a e215 BC 0x8e36 { D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e3c 0e2d MOVLW 0x2d ebb_print_char('-'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e3e d872 RCALL 0x8f24 -008f24 6ee6 MOVWF 0xe6,0x0 -008f26 ec83 CALL 0x4d06,0x0 -008f28 f026 -008f2a 52e5 MOVF 0xe5,0x1,0x0 -008f2c 0012 RETURN 0x0 -008e40 d82f RCALL 0x8ea0 data = -data; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e42 6845 SETF 0x45,0x0 -008e44 6846 SETF 0x46,0x0 -008e46 6847 SETF 0x47,0x0 -008e48 6848 SETF 0x48,0x0 -008e4a ec8a CALL 0x9714,0x0 -008e4c f04b -008e4e 0efb MOVLW 0xfb -008e50 c03c MOVFF 0x3c,0xfdb -008e52 ffdb -008e54 0efc MOVLW 0xfc -008e56 c03d MOVFF 0x3d,0xfdb -008e58 ffdb -008e5a 0efd MOVLW 0xfd -008e5c c03e MOVFF 0x3e,0xfdb -008e5e ffdb -008e60 0efe MOVLW 0xfe -008e62 c03f MOVFF 0x3f,0xfdb -008e64 ffdb +008e0c 0e2d MOVLW 0x2d ebb_print_char('-'); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e0e d872 RCALL 0x8ef4 +008ef4 6ee6 MOVWF 0xe6,0x0 +008ef6 ec83 CALL 0x4d06,0x0 +008ef8 f026 +008efa 52e5 MOVF 0xe5,0x1,0x0 +008efc 0012 RETURN 0x0 +008e10 d82f RCALL 0x8e70 data = -data; D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e12 6845 SETF 0x45,0x0 +008e14 6846 SETF 0x46,0x0 +008e16 6847 SETF 0x47,0x0 +008e18 6848 SETF 0x48,0x0 +008e1a ec71 CALL 0x96e2,0x0 +008e1c f04b +008e1e 0efb MOVLW 0xfb +008e20 c03c MOVFF 0x3c,0xfdb +008e22 ffdb +008e24 0efc MOVLW 0xfc +008e26 c03d MOVFF 0x3d,0xfdb +008e28 ffdb +008e2a 0efd MOVLW 0xfd +008e2c c03e MOVFF 0x3e,0xfdb +008e2e ffdb +008e30 0efe MOVLW 0xfe +008e32 c03f MOVFF 0x3f,0xfdb +008e34 ffdb } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e66 50d9 MOVF 0xd9,0x0,0x0 ebb_print_uint(data); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c -008e68 d848 RCALL 0x8efa -008e6a cfee MOVFF 0xfee,0xfe6 -008e6c ffe6 -008e6e cfee MOVFF 0xfee,0xfe6 -008e70 ffe6 -008e72 cfee MOVFF 0xfee,0xfe6 -008e74 ffe6 -008e76 cfef MOVFF 0xfef,0xfe6 -008e78 ffe6 -008e7a dfb3 RCALL 0x8de2 -008e7c 52e5 MOVF 0xe5,0x1,0x0 -008e7e 52e5 MOVF 0xe5,0x1,0x0 -008e80 52e5 MOVF 0xe5,0x1,0x0 -008e82 52e5 MOVF 0xe5,0x1,0x0 -008efa 0ffb ADDLW 0xfb -008efc 6ee9 MOVWF 0xe9,0x0 -008efe 0eff MOVLW 0xff -008f00 20da ADDWFC 0xda,0x0,0x0 -008f02 6eea MOVWF 0xea,0x0 -008f04 0012 RETURN 0x0 -008e84 d05f BRA 0x8f44 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e36 50d9 MOVF 0xd9,0x0,0x0 ebb_print_uint(data); D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c +008e38 d848 RCALL 0x8eca +008e3a cfee MOVFF 0xfee,0xfe6 +008e3c ffe6 +008e3e cfee MOVFF 0xfee,0xfe6 +008e40 ffe6 +008e42 cfee MOVFF 0xfee,0xfe6 +008e44 ffe6 +008e46 cfef MOVFF 0xfef,0xfe6 +008e48 ffe6 +008e4a dfb3 RCALL 0x8db2 +008e4c 52e5 MOVF 0xe5,0x1,0x0 +008e4e 52e5 MOVF 0xe5,0x1,0x0 +008e50 52e5 MOVF 0xe5,0x1,0x0 +008e52 52e5 MOVF 0xe5,0x1,0x0 +008eca 0ffb ADDLW 0xfb +008ecc 6ee9 MOVWF 0xe9,0x0 +008ece 0eff MOVLW 0xff +008ed0 20da ADDWFC 0xda,0x0,0x0 +008ed2 6eea MOVWF 0xea,0x0 +008ed4 0012 RETURN 0x0 +008e54 d05f BRA 0x8f14 } D:\Projects\EggBot1-GH\EBB_firmware\app.X\source\ebb_print.c #include source\squareroot.s LIST C:\MCC18\mpasm\p18F46J50.inc C:\MCC18\mpasm\p18F46J50.inc @@ -26892,171 +26861,171 @@ Address Value Disassembly Source ; Sqrt(ARGA3:ARGA2:ARGA1:ARGA0) = PRODH:PRODL source\squareroot.s CODE source\squareroot.s Sqrt source\squareroot.s -009290 cfd9 MOVFF 0xfd9,0xfe6 movff 0xfd9, 0xfe6 source\squareroot.s -009292 ffe6 -009294 cfe1 MOVFF 0xfe1,0xfd9 movff 0xfe1, 0xfd9 source\squareroot.s -009296 ffd9 -009298 0105 MOVLB 0x5 movlb 5 ; All our RAM is in bank 5 source\squareroot.s -00929a 0efb MOVLW 0xfb movlw 0xFB ; load -1 into W source\squareroot.s -00929c cfdb MOVFF 0xfdb,0x500 movff PLUSW2, ARGA0 ; And offset FSR1 by W and store in ARGA3 source\squareroot.s -00929e f500 -0092a0 0efc MOVLW 0xfc movlw 0xFC ; load -2 into W and do the same for the source\squareroot.s -0092a2 cfdb MOVFF 0xfdb,0x501 movff PLUSW2, ARGA1 ; other bytes in the input parameter source\squareroot.s -0092a4 f501 -0092a6 0efd MOVLW 0xfd movlw 0xFD source\squareroot.s -0092a8 cfdb MOVFF 0xfdb,0x502 movff PLUSW2, ARGA2 source\squareroot.s -0092aa f502 -0092ac 0efe MOVLW 0xfe movlw 0xFE source\squareroot.s -0092ae cfdb MOVFF 0xfdb,0x503 movff PLUSW2, ARGA3 source\squareroot.s -0092b0 f503 -0092b2 6703 TSTFSZ 0x3,0x1 tstfsz ARGA3, BANKED ; determine if the number is 16-bit source\squareroot.s -0092b4 d025 BRA 0x9300 bra Sqrt32 ; or 32-bit and call the best function source\squareroot.s -0092b6 6702 TSTFSZ 0x2,0x1 tstfsz ARGA2, BANKED source\squareroot.s -0092b8 d023 BRA 0x9300 bra Sqrt32 source\squareroot.s +009260 cfd9 MOVFF 0xfd9,0xfe6 movff 0xfd9, 0xfe6 source\squareroot.s +009262 ffe6 +009264 cfe1 MOVFF 0xfe1,0xfd9 movff 0xfe1, 0xfd9 source\squareroot.s +009266 ffd9 +009268 0105 MOVLB 0x5 movlb 5 ; All our RAM is in bank 5 source\squareroot.s +00926a 0efb MOVLW 0xfb movlw 0xFB ; load -1 into W source\squareroot.s +00926c cfdb MOVFF 0xfdb,0x500 movff PLUSW2, ARGA0 ; And offset FSR1 by W and store in ARGA3 source\squareroot.s +00926e f500 +009270 0efc MOVLW 0xfc movlw 0xFC ; load -2 into W and do the same for the source\squareroot.s +009272 cfdb MOVFF 0xfdb,0x501 movff PLUSW2, ARGA1 ; other bytes in the input parameter source\squareroot.s +009274 f501 +009276 0efd MOVLW 0xfd movlw 0xFD source\squareroot.s +009278 cfdb MOVFF 0xfdb,0x502 movff PLUSW2, ARGA2 source\squareroot.s +00927a f502 +00927c 0efe MOVLW 0xfe movlw 0xFE source\squareroot.s +00927e cfdb MOVFF 0xfdb,0x503 movff PLUSW2, ARGA3 source\squareroot.s +009280 f503 +009282 6703 TSTFSZ 0x3,0x1 tstfsz ARGA3, BANKED ; determine if the number is 16-bit source\squareroot.s +009284 d025 BRA 0x92d0 bra Sqrt32 ; or 32-bit and call the best function source\squareroot.s +009286 6702 TSTFSZ 0x2,0x1 tstfsz ARGA2, BANKED source\squareroot.s +009288 d023 BRA 0x92d0 bra Sqrt32 source\squareroot.s ; Fallthrough to Sqrt16 source\squareroot.s source\squareroot.s ; ******************************************************************* source\squareroot.s ; ******************** Square Root ********************************** source\squareroot.s ; Sqrt16(ARGA1:ARGA0) = PRODL source\squareroot.s Sqrt16 source\squareroot.s -0092ba 6b12 CLRF 0x12,0x1 clrf TEMP0, BANKED ; clear the temp solution source\squareroot.s -0092bc 0e80 MOVLW 0x80 movlw 0x80 ; setup the first bit source\squareroot.s -0092be 6f10 MOVWF 0x10,0x1 movwf BITLOC0, BANKED source\squareroot.s -0092c0 6f0b MOVWF 0xb,0x1 movwf RES0, BANKED source\squareroot.s -0092c2 510b MOVF 0xb,0x0,0x1 Square8 movf RES0, W, BANKED ; square the guess source\squareroot.s -0092c4 030b MULWF 0xb,0x1 mulwf RES0, BANKED source\squareroot.s -0092c6 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS ; ARGA - PROD test source\squareroot.s -0092c8 5d00 SUBWF 0x0,0x0,0x1 subwf ARGA0, W, BANKED source\squareroot.s -0092ca 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS source\squareroot.s -0092cc 5901 SUBWFB 0x1,0x0,0x1 subwfb ARGA1, W, BANKED source\squareroot.s -0092ce b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS source\squareroot.s -0092d0 d008 BRA 0x92e2 bra NextBit ; if positive then next bit source\squareroot.s +00928a 6b12 CLRF 0x12,0x1 clrf TEMP0, BANKED ; clear the temp solution source\squareroot.s +00928c 0e80 MOVLW 0x80 movlw 0x80 ; setup the first bit source\squareroot.s +00928e 6f10 MOVWF 0x10,0x1 movwf BITLOC0, BANKED source\squareroot.s +009290 6f0b MOVWF 0xb,0x1 movwf RES0, BANKED source\squareroot.s +009292 510b MOVF 0xb,0x0,0x1 Square8 movf RES0, W, BANKED ; square the guess source\squareroot.s +009294 030b MULWF 0xb,0x1 mulwf RES0, BANKED source\squareroot.s +009296 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS ; ARGA - PROD test source\squareroot.s +009298 5d00 SUBWF 0x0,0x0,0x1 subwf ARGA0, W, BANKED source\squareroot.s +00929a 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS source\squareroot.s +00929c 5901 SUBWFB 0x1,0x0,0x1 subwfb ARGA1, W, BANKED source\squareroot.s +00929e b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS source\squareroot.s +0092a0 d008 BRA 0x92b2 bra NextBit ; if positive then next bit source\squareroot.s ; if negative then rotate right source\squareroot.s -0092d2 c512 MOVFF 0x512,0x50b movff TEMP0, RES0 ; move last good value back into RES0 source\squareroot.s -0092d4 f50b -0092d6 4310 RRNCF 0x10,0x1,0x1 rrncf BITLOC0, F, BANKED ; then rotote the bit and put it source\squareroot.s -0092d8 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED ; back into RES0 source\squareroot.s -0092da 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s -0092dc bf10 BTFSC 0x10,0x7,0x1 btfsc BITLOC0, 7, BANKED ; if last value was tested then get source\squareroot.s -0092de d009 BRA 0x92f2 bra Done ; out source\squareroot.s -0092e0 d7f0 BRA 0x92c2 bra Square8 ; elso go back for another test source\squareroot.s -0092e2 c50b MOVFF 0x50b,0x512 NextBit movff RES0, TEMP0 ; copy the last good approximation source\squareroot.s -0092e4 f512 -0092e6 4310 RRNCF 0x10,0x1,0x1 rrncf BITLOC0, F, BANKED ; rotate the bit location register source\squareroot.s -0092e8 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s -0092ea 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s -0092ec bf10 BTFSC 0x10,0x7,0x1 btfsc BITLOC0, 7, BANKED ; if last value was tested then get source\squareroot.s -0092ee d001 BRA 0x92f2 bra Done ; out source\squareroot.s -0092f0 d7e8 BRA 0x92c2 bra Square8 source\squareroot.s -0092f2 c512 MOVFF 0x512,0xff3 Done movff TEMP0,PRODL ; put the final result in PRODL source\squareroot.s -0092f4 fff3 -0092f6 6af4 CLRF 0xf4,0x0 clrf PRODH, ACCESS ; clear out upper byte to be nice source\squareroot.s -0092f8 52e5 MOVF 0xe5,0x1,0x0 movf 0xe5, 0x1, 0x0 source\squareroot.s -0092fa cfe7 MOVFF 0xfe7,0xfd9 movff 0xfe7, 0xfd9 source\squareroot.s -0092fc ffd9 -0092fe 0012 RETURN 0x0 return source\squareroot.s +0092a2 c512 MOVFF 0x512,0x50b movff TEMP0, RES0 ; move last good value back into RES0 source\squareroot.s +0092a4 f50b +0092a6 4310 RRNCF 0x10,0x1,0x1 rrncf BITLOC0, F, BANKED ; then rotote the bit and put it source\squareroot.s +0092a8 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED ; back into RES0 source\squareroot.s +0092aa 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s +0092ac bf10 BTFSC 0x10,0x7,0x1 btfsc BITLOC0, 7, BANKED ; if last value was tested then get source\squareroot.s +0092ae d009 BRA 0x92c2 bra Done ; out source\squareroot.s +0092b0 d7f0 BRA 0x9292 bra Square8 ; elso go back for another test source\squareroot.s +0092b2 c50b MOVFF 0x50b,0x512 NextBit movff RES0, TEMP0 ; copy the last good approximation source\squareroot.s +0092b4 f512 +0092b6 4310 RRNCF 0x10,0x1,0x1 rrncf BITLOC0, F, BANKED ; rotate the bit location register source\squareroot.s +0092b8 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s +0092ba 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s +0092bc bf10 BTFSC 0x10,0x7,0x1 btfsc BITLOC0, 7, BANKED ; if last value was tested then get source\squareroot.s +0092be d001 BRA 0x92c2 bra Done ; out source\squareroot.s +0092c0 d7e8 BRA 0x9292 bra Square8 source\squareroot.s +0092c2 c512 MOVFF 0x512,0xff3 Done movff TEMP0,PRODL ; put the final result in PRODL source\squareroot.s +0092c4 fff3 +0092c6 6af4 CLRF 0xf4,0x0 clrf PRODH, ACCESS ; clear out upper byte to be nice source\squareroot.s +0092c8 52e5 MOVF 0xe5,0x1,0x0 movf 0xe5, 0x1, 0x0 source\squareroot.s +0092ca cfe7 MOVFF 0xfe7,0xfd9 movff 0xfe7, 0xfd9 source\squareroot.s +0092cc ffd9 +0092ce 0012 RETURN 0x0 return source\squareroot.s source\squareroot.s ; ******************************************************************* source\squareroot.s ; ******************** Square Root ********************************** source\squareroot.s ; Sqrt32(ARGA3:ARGA2:ARGA1:ARGA0) = PRODH:PRODL source\squareroot.s Sqrt32 source\squareroot.s -009300 6b12 CLRF 0x12,0x1 clrf TEMP0, BANKED ; clear the temp solution source\squareroot.s -009302 6b13 CLRF 0x13,0x1 clrf TEMP1, BANKED source\squareroot.s -009304 6b10 CLRF 0x10,0x1 clrf BITLOC0, BANKED ; setup the first bit source\squareroot.s -009306 6b0b CLRF 0xb,0x1 clrf RES0, BANKED source\squareroot.s -009308 0e80 MOVLW 0x80 movlw 0x80 source\squareroot.s -00930a 6f11 MOVWF 0x11,0x1 movwf BITLOC1, BANKED ; BitLoc = 0x8000 source\squareroot.s -00930c 6f0a MOVWF 0xa,0x1 movwf RES1, BANKED ; RES = 0x8000 source\squareroot.s -00930e c50b MOVFF 0x50b,0x505 Squar16 movff RES0, ARG1L ; square the guess source\squareroot.s -009310 f505 -009312 c50a MOVFF 0x50a,0x504 movff RES1, ARG1H source\squareroot.s -009314 f504 -009316 ecbb CALL 0x9376,0x0 call Sq16 source\squareroot.s -009318 f049 -00931a 510c MOVF 0xc,0x0,0x1 movf SQRES0, W, BANKED ; ARGA - PROD test source\squareroot.s -00931c 5d00 SUBWF 0x0,0x0,0x1 subwf ARGA0, W, BANKED source\squareroot.s -00931e 510d MOVF 0xd,0x0,0x1 movf SQRES1, W, BANKED source\squareroot.s -009320 5901 SUBWFB 0x1,0x0,0x1 subwfb ARGA1, W, BANKED source\squareroot.s -009322 510e MOVF 0xe,0x0,0x1 movf SQRES2, W, BANKED source\squareroot.s -009324 5902 SUBWFB 0x2,0x0,0x1 subwfb ARGA2, W, BANKED source\squareroot.s -009326 510f MOVF 0xf,0x0,0x1 movf SQRES3, W, BANKED source\squareroot.s -009328 5903 SUBWFB 0x3,0x0,0x1 subwfb ARGA3, W, BANKED source\squareroot.s -00932a b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS source\squareroot.s -00932c d00e BRA 0x934a bra NxtBt16 ; if positive then next bit source\squareroot.s +0092d0 6b12 CLRF 0x12,0x1 clrf TEMP0, BANKED ; clear the temp solution source\squareroot.s +0092d2 6b13 CLRF 0x13,0x1 clrf TEMP1, BANKED source\squareroot.s +0092d4 6b10 CLRF 0x10,0x1 clrf BITLOC0, BANKED ; setup the first bit source\squareroot.s +0092d6 6b0b CLRF 0xb,0x1 clrf RES0, BANKED source\squareroot.s +0092d8 0e80 MOVLW 0x80 movlw 0x80 source\squareroot.s +0092da 6f11 MOVWF 0x11,0x1 movwf BITLOC1, BANKED ; BitLoc = 0x8000 source\squareroot.s +0092dc 6f0a MOVWF 0xa,0x1 movwf RES1, BANKED ; RES = 0x8000 source\squareroot.s +0092de c50b MOVFF 0x50b,0x505 Squar16 movff RES0, ARG1L ; square the guess source\squareroot.s +0092e0 f505 +0092e2 c50a MOVFF 0x50a,0x504 movff RES1, ARG1H source\squareroot.s +0092e4 f504 +0092e6 eca3 CALL 0x9346,0x0 call Sq16 source\squareroot.s +0092e8 f049 +0092ea 510c MOVF 0xc,0x0,0x1 movf SQRES0, W, BANKED ; ARGA - PROD test source\squareroot.s +0092ec 5d00 SUBWF 0x0,0x0,0x1 subwf ARGA0, W, BANKED source\squareroot.s +0092ee 510d MOVF 0xd,0x0,0x1 movf SQRES1, W, BANKED source\squareroot.s +0092f0 5901 SUBWFB 0x1,0x0,0x1 subwfb ARGA1, W, BANKED source\squareroot.s +0092f2 510e MOVF 0xe,0x0,0x1 movf SQRES2, W, BANKED source\squareroot.s +0092f4 5902 SUBWFB 0x2,0x0,0x1 subwfb ARGA2, W, BANKED source\squareroot.s +0092f6 510f MOVF 0xf,0x0,0x1 movf SQRES3, W, BANKED source\squareroot.s +0092f8 5903 SUBWFB 0x3,0x0,0x1 subwfb ARGA3, W, BANKED source\squareroot.s +0092fa b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS source\squareroot.s +0092fc d00e BRA 0x931a bra NxtBt16 ; if positive then next bit source\squareroot.s ; if negative then rotate right source\squareroot.s -00932e 0f00 ADDLW 0x0 addlw 0x00 ; clear carry source\squareroot.s -009330 c512 MOVFF 0x512,0x50b movff TEMP0, RES0 ; move last good value back into RES0 source\squareroot.s -009332 f50b -009334 c513 MOVFF 0x513,0x50a movff TEMP1, RES1 source\squareroot.s -009336 f50a -009338 3311 RRCF 0x11,0x1,0x1 rrcf BITLOC1, F, BANKED ; then rotote the bit and put it source\squareroot.s -00933a 3310 RRCF 0x10,0x1,0x1 rrcf BITLOC0, F, BANKED source\squareroot.s -00933c 5111 MOVF 0x11,0x0,0x1 movf BITLOC1, W, BANKED ; back into RES1:RES0 source\squareroot.s -00933e 130a IORWF 0xa,0x1,0x1 iorwf RES1, F, BANKED source\squareroot.s -009340 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s -009342 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s -009344 b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS ; if last value was tested then get source\squareroot.s -009346 d00f BRA 0x9366 bra Done32 ; out source\squareroot.s -009348 d7e2 BRA 0x930e bra Squar16 ; elso go back for another test source\squareroot.s -00934a 0f00 ADDLW 0x0 NxtBt16 addlw 0x00 ; clear carry source\squareroot.s -00934c c50b MOVFF 0x50b,0x512 movff RES0, TEMP0 ; copy the last good approximation source\squareroot.s -00934e f512 -009350 c50a MOVFF 0x50a,0x513 movff RES1, TEMP1 source\squareroot.s -009352 f513 -009354 3311 RRCF 0x11,0x1,0x1 rrcf BITLOC1, F, BANKED ; rotate the bit location register source\squareroot.s -009356 3310 RRCF 0x10,0x1,0x1 rrcf BITLOC0, F, BANKED source\squareroot.s -009358 5111 MOVF 0x11,0x0,0x1 movf BITLOC1, W, BANKED ; and put back into RES1:RES0 source\squareroot.s -00935a 130a IORWF 0xa,0x1,0x1 iorwf RES1, F, BANKED source\squareroot.s -00935c 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s -00935e 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s -009360 b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS ; if last value was tested then get source\squareroot.s -009362 d001 BRA 0x9366 bra Done32 ; out source\squareroot.s -009364 d7d4 BRA 0x930e bra Squar16 source\squareroot.s -009366 c512 MOVFF 0x512,0xff3 Done32 movff TEMP0,PRODL ; put the final result in PRODL:PRODH source\squareroot.s -009368 fff3 -00936a c513 MOVFF 0x513,0xff4 movff TEMP1,PRODH source\squareroot.s -00936c fff4 -00936e 52e5 MOVF 0xe5,0x1,0x0 movf 0xe5, 0x1, 0x0 source\squareroot.s -009370 cfe7 MOVFF 0xfe7,0xfd9 movff 0xfe7, 0xfd9 source\squareroot.s -009372 ffd9 -009374 0012 RETURN 0x0 return source\squareroot.s +0092fe 0f00 ADDLW 0x0 addlw 0x00 ; clear carry source\squareroot.s +009300 c512 MOVFF 0x512,0x50b movff TEMP0, RES0 ; move last good value back into RES0 source\squareroot.s +009302 f50b +009304 c513 MOVFF 0x513,0x50a movff TEMP1, RES1 source\squareroot.s +009306 f50a +009308 3311 RRCF 0x11,0x1,0x1 rrcf BITLOC1, F, BANKED ; then rotote the bit and put it source\squareroot.s +00930a 3310 RRCF 0x10,0x1,0x1 rrcf BITLOC0, F, BANKED source\squareroot.s +00930c 5111 MOVF 0x11,0x0,0x1 movf BITLOC1, W, BANKED ; back into RES1:RES0 source\squareroot.s +00930e 130a IORWF 0xa,0x1,0x1 iorwf RES1, F, BANKED source\squareroot.s +009310 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s +009312 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s +009314 b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS ; if last value was tested then get source\squareroot.s +009316 d00f BRA 0x9336 bra Done32 ; out source\squareroot.s +009318 d7e2 BRA 0x92de bra Squar16 ; elso go back for another test source\squareroot.s +00931a 0f00 ADDLW 0x0 NxtBt16 addlw 0x00 ; clear carry source\squareroot.s +00931c c50b MOVFF 0x50b,0x512 movff RES0, TEMP0 ; copy the last good approximation source\squareroot.s +00931e f512 +009320 c50a MOVFF 0x50a,0x513 movff RES1, TEMP1 source\squareroot.s +009322 f513 +009324 3311 RRCF 0x11,0x1,0x1 rrcf BITLOC1, F, BANKED ; rotate the bit location register source\squareroot.s +009326 3310 RRCF 0x10,0x1,0x1 rrcf BITLOC0, F, BANKED source\squareroot.s +009328 5111 MOVF 0x11,0x0,0x1 movf BITLOC1, W, BANKED ; and put back into RES1:RES0 source\squareroot.s +00932a 130a IORWF 0xa,0x1,0x1 iorwf RES1, F, BANKED source\squareroot.s +00932c 5110 MOVF 0x10,0x0,0x1 movf BITLOC0, W, BANKED source\squareroot.s +00932e 130b IORWF 0xb,0x1,0x1 iorwf RES0, F, BANKED source\squareroot.s +009330 b0d8 BTFSC 0xd8,0x0,0x0 btfsc STATUS, C, ACCESS ; if last value was tested then get source\squareroot.s +009332 d001 BRA 0x9336 bra Done32 ; out source\squareroot.s +009334 d7d4 BRA 0x92de bra Squar16 source\squareroot.s +009336 c512 MOVFF 0x512,0xff3 Done32 movff TEMP0,PRODL ; put the final result in PRODL:PRODH source\squareroot.s +009338 fff3 +00933a c513 MOVFF 0x513,0xff4 movff TEMP1,PRODH source\squareroot.s +00933c fff4 +00933e 52e5 MOVF 0xe5,0x1,0x0 movf 0xe5, 0x1, 0x0 source\squareroot.s +009340 cfe7 MOVFF 0xfe7,0xfd9 movff 0xfe7, 0xfd9 source\squareroot.s +009342 ffd9 +009344 0012 RETURN 0x0 return source\squareroot.s source\squareroot.s ; ******************************************************************* source\squareroot.s ; *********** 16 X 16 Unsigned Square ***************************** source\squareroot.s ; SQRES3:SQRES0 = ARG1H:ARG1L ^2 source\squareroot.s -009376 5105 MOVF 0x5,0x0,0x1 Sq16 movf ARG1L, W, BANKED source\squareroot.s -009378 0305 MULWF 0x5,0x1 mulwf ARG1L ; ARG1L * ARG2L -> source\squareroot.s +009346 5105 MOVF 0x5,0x0,0x1 Sq16 movf ARG1L, W, BANKED source\squareroot.s +009348 0305 MULWF 0x5,0x1 mulwf ARG1L ; ARG1L * ARG2L -> source\squareroot.s ; PRODH:PRODL source\squareroot.s -00937a cff4 MOVFF 0xff4,0x50d movff PRODH, SQRES1 source\squareroot.s -00937c f50d -00937e cff3 MOVFF 0xff3,0x50c movff PRODL, SQRES0 source\squareroot.s -009380 f50c -009382 5104 MOVF 0x4,0x0,0x1 movf ARG1H, W, BANKED source\squareroot.s -009384 0304 MULWF 0x4,0x1 mulwf ARG1H ; ARG1H * ARG2H -> source\squareroot.s +00934a cff4 MOVFF 0xff4,0x50d movff PRODH, SQRES1 source\squareroot.s +00934c f50d +00934e cff3 MOVFF 0xff3,0x50c movff PRODL, SQRES0 source\squareroot.s +009350 f50c +009352 5104 MOVF 0x4,0x0,0x1 movf ARG1H, W, BANKED source\squareroot.s +009354 0304 MULWF 0x4,0x1 mulwf ARG1H ; ARG1H * ARG2H -> source\squareroot.s ; PRODH:PRODL source\squareroot.s -009386 cff4 MOVFF 0xff4,0x50f movff PRODH, SQRES3 source\squareroot.s -009388 f50f -00938a cff3 MOVFF 0xff3,0x50e movff PRODL, SQRES2 source\squareroot.s -00938c f50e -00938e 5105 MOVF 0x5,0x0,0x1 movf ARG1L, W, BANKED source\squareroot.s -009390 0304 MULWF 0x4,0x1 mulwf ARG1H ; ARG1L * ARG2H -> source\squareroot.s +009356 cff4 MOVFF 0xff4,0x50f movff PRODH, SQRES3 source\squareroot.s +009358 f50f +00935a cff3 MOVFF 0xff3,0x50e movff PRODL, SQRES2 source\squareroot.s +00935c f50e +00935e 5105 MOVF 0x5,0x0,0x1 movf ARG1L, W, BANKED source\squareroot.s +009360 0304 MULWF 0x4,0x1 mulwf ARG1H ; ARG1L * ARG2H -> source\squareroot.s ; PRODH:PRODL source\squareroot.s -009392 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS source\squareroot.s -009394 270d ADDWF 0xd,0x1,0x1 addwf SQRES1, F, BANKED ; Add cross source\squareroot.s -009396 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS ; products source\squareroot.s -009398 230e ADDWFC 0xe,0x1,0x1 addwfc SQRES2, F, BANKED source\squareroot.s -00939a 6ae8 CLRF 0xe8,0x0 clrf WREG, ACCESS source\squareroot.s -00939c 230f ADDWFC 0xf,0x1,0x1 addwfc SQRES3, F, BANKED source\squareroot.s -00939e 5104 MOVF 0x4,0x0,0x1 movf ARG1H, W, BANKED source\squareroot.s -0093a0 0305 MULWF 0x5,0x1 mulwf ARG1L ; ARG1H * ARG2L -> source\squareroot.s +009362 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS source\squareroot.s +009364 270d ADDWF 0xd,0x1,0x1 addwf SQRES1, F, BANKED ; Add cross source\squareroot.s +009366 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS ; products source\squareroot.s +009368 230e ADDWFC 0xe,0x1,0x1 addwfc SQRES2, F, BANKED source\squareroot.s +00936a 6ae8 CLRF 0xe8,0x0 clrf WREG, ACCESS source\squareroot.s +00936c 230f ADDWFC 0xf,0x1,0x1 addwfc SQRES3, F, BANKED source\squareroot.s +00936e 5104 MOVF 0x4,0x0,0x1 movf ARG1H, W, BANKED source\squareroot.s +009370 0305 MULWF 0x5,0x1 mulwf ARG1L ; ARG1H * ARG2L -> source\squareroot.s ; PRODH:PRODL source\squareroot.s -0093a2 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS source\squareroot.s -0093a4 270d ADDWF 0xd,0x1,0x1 addwf SQRES1, F, BANKED ; Add cross source\squareroot.s -0093a6 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS ; products source\squareroot.s -0093a8 230e ADDWFC 0xe,0x1,0x1 addwfc SQRES2, F, BANKED source\squareroot.s -0093aa 6ae8 CLRF 0xe8,0x0 clrf WREG, ACCESS source\squareroot.s -0093ac 230f ADDWFC 0xf,0x1,0x1 addwfc SQRES3, F, BANKED source\squareroot.s -0093ae 0012 RETURN 0x0 return source\squareroot.s +009372 50f3 MOVF 0xf3,0x0,0x0 movf PRODL, W, ACCESS source\squareroot.s +009374 270d ADDWF 0xd,0x1,0x1 addwf SQRES1, F, BANKED ; Add cross source\squareroot.s +009376 50f4 MOVF 0xf4,0x0,0x0 movf PRODH, W, ACCESS ; products source\squareroot.s +009378 230e ADDWFC 0xe,0x1,0x1 addwfc SQRES2, F, BANKED source\squareroot.s +00937a 6ae8 CLRF 0xe8,0x0 clrf WREG, ACCESS source\squareroot.s +00937c 230f ADDWFC 0xf,0x1,0x1 addwfc SQRES3, F, BANKED source\squareroot.s +00937e 0012 RETURN 0x0 return source\squareroot.s source\squareroot.s ; ******************************************************************* source\squareroot.s GLOBAL Sqrt source\squareroot.s diff --git a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.unified.hex b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.unified.hex index 5d67e3a..9e92152 100644 --- a/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.unified.hex +++ b/EBB_firmware/app.X/dist/EBBv13_with_bootloader/production/app.X.production.unified.hex @@ -225,11 +225,11 @@ :100DF0004C0D4C0D750D790DAD0D0E09C00EF36E39 :100E000000EE00F00E0E01D81200EA6002D0EE6A89 :0E0E1000FCD7F350E9601200EE6AFCD7000038 -:0610000068EF4CF0120045 +:061000004FEF4CF012005E :0610080028EF08F01200C1 :0610180036EF22F0120089 -:10102A00030084990000E704000009000000829987 -:10103A000000FA0500000200000004990000800286 +:10102A00030052990000E7040000090000005099EB +:10103A000000FA05000002000000D29800008002B9 :10104A0000007E000000DACFE4FFE9CFE4FFEACF38 :10105A00E4FFF3CFE4FFF4CFE4FFE652F294D6CFF5 :10106A00C4F18A0E0101C425D66E09B28C820080B1 @@ -386,8 +386,8 @@ :1019DA00DF2AD0D70101856B0101866B0101876B74 :1019EA00886B896B8A6B0101AD6BAE6B0101AC6BC5 :1019FA000101AF6B0101B06BB16B0690096A92806D -:101A0A009F9C010EE66EE66A26EC2EF0E552E55240 -:101A1A00010EE66E0B0EE66E26EC2EF0E552E5524E +:101A0A009F9C010EE66EE66A13EC2EF0E552E55253 +:101A1A00010EE66E0B0EE66E13EC2EF0E552E55261 :101A2A008D8496948D829692898C929C8D809690C4 :101A3A008B8294928C9C959C8C9E959E8C98959862 :101A4A008C9A959A949E828E0000000000000000F5 @@ -521,15 +521,15 @@ :10224A0044F1EEC145F1EFC146F1F0C147F1FE0E8E :10225A00DB5003E00101070E02D00101060E296FCF :10226A0009AA5AD0F4EC21F01BEC20F077EC21F00B -:10227A007C0E4E6E8B0E59EC1CF048C1E6FF49C12C -:10228A00E6FF4AC1E6FF4BC1E6FF1BEC20F0770EE2 +:10227A004C0E4E6E8B0E59EC1CF048C1E6FF49C15C +:10228A00E6FF4AC1E6FF4BC1E6FF1BEC20F0470E12 :10229A004E6E8B0E59EC1CF040C1E6FF41C1E6FFC1 :1022AA0042C1E6FF43C1E6FF1BEC20F0FBEC21F044 -:1022BA001BEC20F086EC21F0680E4E6E8B0E59EC6A +:1022BA001BEC20F086EC21F0380E4E6E8B0E59EC9A :1022CA001CF04CC1E6FF4DC1E6FF4EC1E6FF4FC10F -:1022DA00E6FF1BEC20F0630E4E6E8B0E59EC1CF0E1 +:1022DA00E6FF1BEC20F0330E4E6E8B0E59EC1CF011 :1022EA0044C1E6FF45C1E6FF46C1E6FF47C1E6FF36 -:1022FA001BEC20F05E0E4E6E8B0E59EC1CF02FC1BB +:1022FA001BEC20F02E0E4E6E8B0E59EC1CF02FC1EB :10230A004EF04F6A506A516A2FC1E6FFA2EC21F0E3 :10231A001BEC20F056EC1DF009BC0AD013500F5CE0 :10232A00FDE20EB005D079EC1CF001E3106A0F2A29 @@ -562,15 +562,15 @@ :1024DA0041F00F0EDBCF42F0100EDBCF43F0110EAE :1024EA00DFEC1EF002E6FEEC1DF008E3D9500E0FF9 :1024FA0038EC1EF002E61AEC1EF002E20401848DAA -:10250A000401845144E10EB042D009AA39D0580ED0 +:10250A000401845144E10EB042D009AA39D0280E00 :10251A004E6E8B0E59EC1CF0DECF4EF0DDCF4FF035 -:10252A000EEC1DF04F0E4E6E8B0E59EC1CF0D9506E -:10253A00020F45EC21F0460E4E6E8B0E59EC1CF044 -:10254A00D950060F45EC21F03B0E4E6E8B0E59EC1E -:10255A001CF0D9500A0F45EC21F0300E4E6E8B0E4E -:10256A0059EC1CF0D9500E0F45EC21F0240E4E6E9A -:10257A008B0E59EC1CF0120EACEC20F056EC1DF050 -:10258A00020E4E6E8B0E39EC21F049EC1DF0250E31 +:10252A000EEC1DF01F0E4E6E8B0E59EC1CF0D9509E +:10253A00020F45EC21F0160E4E6E8B0E59EC1CF074 +:10254A00D950060F45EC21F00B0E4E6E8B0E59EC4E +:10255A001CF0D9500A0F45EC21F0000E4E6E8B0E7E +:10256A0059EC1CF0D9500E0F45EC21F0F40E4E6ECA +:10257A008A0E59EC1CF0120EACEC20F056EC1DF051 +:10258A00D20E4E6E8A0E39EC21F049EC1DF0250E62 :10259A00E15C02E2E16AE55247EF1DF016EC21F038 :1025AA00010EDF6E12EC20F0010EE66ED90EE66E19 :1025BA00010EC1EC21F0E66EE90EE66E010EC1ECE9 @@ -587,12 +587,12 @@ :10266A00E76F3F50EC21E86FC3EC1FF014D849EC38 :10267A001DF040EF1EF012EC20F0E66AD50EE66E71 :10268A00010E05EC20F0E50EE66E010EFEEC1FF0E1 -:10269A0002D849EF1DF0FBEC20F009AA1BD0FC0E72 +:10269A0002D849EF1DF0FBEC20F009AA1BD0CC0EA2 :1026AA004E6E8A0E59EC1CF0C9C1E6FFCAC1E6FF9C -:1026BA00CBC1E6FFCCC1E6FF1EEC1DF0810E4E6ECB -:1026CA008B0E59EC1CF06BEC1EF06D0E4E6E8B0EE1 +:1026BA00CBC1E6FFCCC1E6FF1EEC1DF0510E4E6EFB +:1026CA008B0E59EC1CF06BEC1EF03D0E4E6E8B0E11 :1026DA0095EC21F00EB0A3D0D880A80E010174ECBD -:1026EA001FF003E3DAEC1EF006E1DC0E4E6E8A0EF2 +:1026EA001FF003E3DAEC1EF006E1AC0E4E6E8A0E22 :1026FA0039EC21F094D0D0EC1EF004E1D5EC1EF0B8 :10270A0001E18DD0CDC12FF120EC1FF002E18D90B7 :10271A008B920101800ED81502E0B4EC1EF0800EF7 @@ -618,10 +618,10 @@ :10285A00D76FDC51EE20D86FC8EC1FF0EE50D95D6F :10286A00E56FEE50DA59E66FEE50DB59E76FEE503E :10287A00DC59E86F02D849EF1DF0FBEC20F00EB0EE -:10288A0000D109AA1BD0D20E4E6E8A0E59EC1CF04A +:10288A0000D109AA1BD0A20E4E6E8A0E59EC1CF07A :10289A00C5C1E6FFC6C1E6FFC7C1E6FFC8C1E6FF7C -:1028AA001EEC1DF0CC0E4E6E8A0E59EC1CF06BEC31 -:1028BA001EF0C60E4E6E8A0E95EC21F00101C25131 +:1028AA001EEC1DF09C0E4E6E8A0E59EC1CF06BEC61 +:1028BA001EF0960E4E6E8A0E95EC21F00101C25161 :1028CA0010E0C551C611C711C81102E10401848D77 :1028DA00EBEC1EF002E20401848D0401845101E054 :1028EA00D0D0CDC12FF10101D0EC1EF031E1D5ECF1 @@ -629,22 +629,22 @@ :10290A00860EC659010EC759000EC85907E3A00E14 :10291A00C56F860EC66F010EC76FC86BC5C12BF196 :10292A00C6C12CF1C7C12DF1C8C12EF1190E456ED1 -:10293A00466A476A486A3BEC1FF08AEC4BF03CC097 +:10293A00466A476A486A3BEC1FF071EC4BF03CC0B0 :10294A002BF13DC02CF13EC02DF13FC02EF18DD0B0 :10295A0020EC1FF002E18D908B920101800ED815B8 :10296A0002E0B4EC1EF0800EE81502E0BCEC1EF0AA :10297A000A0E4E6ED70E4F6EA30E506E4C0E516E4F -:10298A003BEC1FF034EC20F020EC41F0B1EC20F0ED +:10298A003BEC1FF034EC20F008EC41F0B1EC20F005 :10299A000101D0EC1EF027E092EC20F05DEC1DF076 -:1029AA000BE2C25104E0A20E4E6E8A0E3FD0C96BF2 +:1029AA000BE2C25104E0720E4E6E8A0E3FD0C96B22 :1029BA00CA6BCB6B800ECC6FDAEC1EF00BE1C25106 -:1029CA0004E07E0E4E6E8A0E31D0010EC96FCA6BBC +:1029CA0004E04E0E4E6E8A0E31D0010EC96FCA6BEC :1029DA00CB6BCC6BC9C130F1CAC131F1CBC132F179 :1029EA00CCC133F105D00101306B316B326B336BE3 :1029FA000FEC21F00101D5EC1EF029E089EC20F062 -:102A0A005DEC1DF00BE2C25104E05A0E4E6E8A0EC6 +:102A0A005DEC1DF00BE2C25104E02A0E4E6E8A0EF6 :102A1A000DD0C96BCA6BCB6B800ECC6FDAEC1EF093 -:102A2A000DE1C25106E0360E4E6E8A0E39EC21F0E7 +:102A2A000DE1C25106E0060E4E6E8A0E39EC21F017 :102A3A0028D0010EC96FCA6BCB6BCC6BC9C134F1FC :102A4A00CAC135F1CBC136F1CCC137F105D001018C :102A5A00346B356B366B376B90EC1EF00101A1ECD1 @@ -742,7 +742,7 @@ :10301A00DF10DF6E07A003D0200EDF10DF6E040181 :10302A00945104E0400EDF10DF6E946B0EA003D0C3 :10303A00800EDF10DF6E020EE66EDFCF4EF04F6AB3 -:10304A0029EC20F0B7EC46F0526E050EE15E5250C4 +:10304A0029EC20F09FEC46F0526E050EE15E5250DC :10305A00B1EC1EF007B0079040EF1EF0F7EC20F03D :10306A00030EDB6A05EC22F063EC1FF068EC1FF03C :10307A00030F6FEC20F00401845101E098D0D4ECE6 @@ -776,7 +776,7 @@ :10323A004E104F10E552E7104E6E040EE15C02E2AA :10324A00E16AE552E16E4E503DEF21F0F7EC20F0D5 :10325A00030EDB6AB3DF63EC1FF0010EE66EE66E67 -:10326A00EFEC29F0E552E552040EDBA002D0E5ECC2 +:10326A00F1EC29F0E552E552040EDBA002D0E5ECC0 :10327A001EF0040EDBA203D0010ED2EC1FF0040EE6 :10328A00DBA403D0DE52010EDD6E040EDBA602D0F3 :10329A00010EDF6EDFCF4EF04F6A0EEC1DF042ECEE @@ -875,9 +875,9 @@ :10386A0004E3ADA2FED7F6D803D0ADA2FED7A1D805 :10387A0092D904E3ADA2FED7EDD803D0ADA2FED70C :10388A0098D8AE6E040EE15C02E2E16AE552FAD023 -:10389A0052EC20F0CFDB080E1F0B1200E66E20EC74 +:10389A0052EC20F0CFDB080E1F0B1200E66E11EC83 :1038AA0033F0E552C7EF21F04F6E506A4EC0E6FF83 -:1038BA00E66E50C0E6FF9AEC46F0C7EF21F0EDDB6A +:1038BA00E66E50C0E6FF82EC46F0C7EF21F0EDDB82 :1038CA00DFCF80F1010EDBCF81F1020EDBCF82F177 :1038DA00030EDBCF83F1010183390F0B73EF20F065 :1038EA0011502F0D4BEF20F01050F0EC21F029C1B0 @@ -895,29 +895,29 @@ :1039AA00EEFF56C1EEFF57C1EEFF102A1350105C0E :1039BA001200410E01018425F60F1200010EDB6A86 :1039CA00020EDB6A030EDB6A35DB080E1F0B1200E0 -:1039DA0007EC41F0ABDB6EDB51C049F020EC41F063 +:1039DA00EFEC40F0ABDB6EDB51C049F008EC41F094 :1039EA00F8DBAC0E4E6EC50E4F6EA70E506E470E2C -:1039FA00516E60DB496E73EC41F0EBDB1BDB466A10 -:103A0A00476A800E486E3F0EC4DB54EC42F0010A4E -:103A1A0012001ADB1BEF20F0E66AEFEC29F0E55200 +:1039FA00516E60DB496E5BEC41F0EBDB1BDB466A28 +:103A0A00476A800E486E3F0EC4DB3CEC42F0010A66 +:103A1A0012001ADB1BEF20F0E66AF1EC29F0E552FE :103A2A00E5521200D8904E364F3650365136E806D7 -:103A3A001200F1EC46F0E552C7EF21F0DACFEAFFC7 +:103A3A001200D9EC46F0E552C7EF21F0DACFEAFFDF :103A4A00EECFE6FFEECFE6FFEECFE6FFEFCFE6FFE3 -:103A5A001BEF20F0300E01018425120007EC41F023 -:103A6A0065DBDBEC21F0FBDA73EC41F0B1EF20F01F +:103A5A001BEF20F0300E010184251200EFEC40F03C +:103A6A0065DBDBEC21F0FBDA5BEC41F0B1EF20F037 :103A7A00EE20516EB5EC21F0EBEC21F0D890EB5032 :103A8A00000A1200E16EF4D3E66AF6D3D9CFE6FF54 :103A9A00E1CFD9FF1200CEDA4E504F10501051101C :103AAA001200020EE66EE8D3E926000EEA221200A0 -:103ABA0007EC41F0000EDFCF46F0010EDBCF47F0F6 -:103ACA00020EDBCF48F0030EDBCF49F073EC41F076 -:103ADA0014EC42F040C0C9F141C0CAF142C0CBF176 +:103ABA00EFEC40F0000EDFCF46F0010EDBCF47F00F +:103ACA00020EDBCF48F0030EDBCF49F05BEC41F08E +:103ADA00FCEC41F040C0C9F141C0CAF142C0CBF18F :103AEA0043C0CCF1D880000E01014054000E41546D :103AFA00000E4254800E43541200E66E000EDA2085 -:103B0A00E66E1200DBEC21F005EC41F00FDBAC0EA7 -:103B1A00466EC50E476EA70E486E470E496E73EC89 -:103B2A0041F014EF42F086DA466A476A486A4F0E55 -:103B3A0030DB4BEC42F0010A1200EE52EE52EECFAD +:103B0A00E66E1200DBEC21F0EDEC40F00FDBAC0EC0 +:103B1A00466EC50E476EA70E486E470E496E5BECA1 +:103B2A0041F0FCEF41F086DA466A476A486A4F0E6E +:103B3A0030DB33EC42F0010A1200EE52EE52EECFC5 :103B4A0087F1EECF88F1EECF89F1EFCF8AF112003B :103B5A0010502F0D4BEF20F00A50E96EEA6AD89008 :103B6A00E936EA361200AE6E0F0E8315B7D2AE6E84 @@ -951,11 +951,11 @@ :103D2A003EF1E8C13FF1120030C1E6FF31C1E6FFC2 :103D3A0032C1E6FF33C1E6FF120034C1E6FF35C1E6 :103D4A00E6FF36C1E6FF37C1E6FF1200456E466A56 -:103D5A00476A486AE0EF41F0010EE66E8DD2800EA6 +:103D5A00476A486AC8EF41F0010EE66E8DD2800EBE :103D6A0001012A112A6F000E0101FFEF20F0200E37 :103D7A0001012A112A6F000E010107EF21F0DECF9F :103D8A0041F0DECF42F0DECF43F0DDCF44F0DD522A -:103D9A00DD5214EF42F0D551D611D711D8111200C5 +:103D9A00DD52FCEF41F0D551D611D711D8111200DE :103DAA00E551E611E711E8111200C951CA11CB1108 :103DBA00CC111200DBCF44F04434000E4418120038 :103DCA00010EF36E030EF3CFDBFF1200D880030E51 @@ -977,7 +977,7 @@ :103ECA00E7CFDBFF1200010EE66ED9501200046E36 :103EDA0096809482958C958E9588958A1200C955FC :103EEA00610ECA55000ECB55000ECC55120045681E -:103EFA004668476848688AEC4BF03C501200010E4D +:103EFA0046684768486871EC4BF03C501200010E66 :103F0A00DB50EA6A580FE96E010EEA22120086892E :103F1A009807000E995B9A5B9B5B1200F36E010E89 :103F2A00F3CFDBFF020EDB6A1200010EDBCFA2F039 @@ -996,11 +996,11 @@ :103FFA001FF0C2D9E66ECD0EE66E010E1AEF22F060 :10400A00E66E060E4BDCE66A1200E9D912DD6AD9C1 :10401A00EDD90FDD76D956EF1DF094EC0CF013DADA -:10402A00E66AC90EE66E010E1AEF22F00DEC47F0B1 +:10402A00E66AC90EE66E010E1AEF22F0F5EC46F0CA :10403A00E552A8D1CBD9EECF4EF0EECF4FF0EECF6E :10404A0050F0EFCF51F01200506A516A4EC0E6FFAD -:10405A00A2EF21F052DD060E21DCE66A120005EC21 -:10406A0041F041C052F042C053F043C054F044C042 +:10405A00A2EF21F052DD060E21DCE66A1200EDEC39 +:10406A0040F041C052F042C053F043C054F044C043 :10407A0055F041C046F042C047F043C048F044C042 :10408A0049F084D19CD9010E53EF1CF0FA51F32464 :10409A00E96EFB51F420EA6E1200536A546A556ABB @@ -1030,19 +1030,19 @@ :10421A00E823120077DD0101486B496B4A6B4B6B4F :10422A00120034DCE652120004DC0101120094DCB4 :10423A00890EE926000EEA2212008EDC790EE926A2 -:10424A00000EEA2212009BEC3FF04E6E080EE15E71 +:10424A00000EEA22120083EC3FF04E6E080EE15E89 :10425A004E50120081DCAFEF1FF0A1DCEE50ED10E2 :10426A001200D1DC49EF1DF059EC1CF056EF1DF09D -:10427A00E552E7CFD9FF12000DEC2AF0E552120001 +:10427A00E552E7CFD9FF12000FEC2AF0E5521200FF :10428A00E96E23EF1DF075EC1CF0EFCF85F1D1D864 :10429A00060E0ADCEECF8CF1EECF8DF1EECF8EF169 :1042AA00EFCF8FF1C6D8060E59EC1DF0040E59EC6B :1042BA001DF075EF1EF0B5DF94EC0CF0C4D8BDD834 :1042CA00D50EE66E010E9CDEC7D0DD0EE66E010E3F :1042DA0097DEE10EE66E010E05EF20F0A2DF9DDE0D -:1042EA00ACD8BAD0810E4E6E8B0E59EC1CF038C188 +:1042EA00ACD8BAD0510E4E6E8B0E59EC1CF038C1B8 :1042FA00E6FF39C1E6FF3AC1E6FF3BC1E6FF1EEF22 -:10430A001DF06D0E4E6E8B0E59EC1CF03CC1E6FF93 +:10430A001DF03D0E4E6E8B0E59EC1CF03CC1E6FFC3 :10431A003DC1E6FF3EC1E6FF3FC1E6FF1EEF1DF0CD :10432A0059EC1CF0E5C1E6FFE6C1E6FFE7C1E6FF8E :10433A00E8C1E6FF7BDE56EF1DF04FC0E6FF50C036 @@ -1055,8 +1055,8 @@ :1043AA00DBCF4EF04F6A50DE19EF21F0C9C140F061 :1043BA00CAC141F0CBC142F0CCC143F0120043D88C :1043CA0023EF1EF080DD010F6FEF20F0D9CFE9FF58 -:1043DA00DACFEAFF12002F0D05014BEF20F0860E0F -:1043EA004E6E8B0E59EC1CF099EF1EF0720E4E6E4B +:1043DA00DACFEAFF12002F0D05014BEF20F0560E3F +:1043EA004E6E8B0E59EC1CF099EF1EF0420E4E6E7B :1043FA008B0E59EC1CF0A2EF1EF02CDED9501200E5 :10440A0041DE61DDC0EF20F014D81E0E59EF1DF019 :10441A0010D8160E59EF1DF0EE52260E59EF1DF068 @@ -1066,26 +1066,26 @@ :10445A00010ECFDDD7EF1FF0D90EE66E010E05EF84 :10446A0020F0D8CFE4FFE0CFE4FFE46EDACFE4FF38 :10447A00E9CFE4FFEACFE4FFF3CFE4FFF4CFE4FFB0 -:10448A00E65250EC37F0A4A645D1A4960001602B61 +:10448A00E65239EC37F0A4A645D1A4960001602B78 :10449A0000019B510001605D01E29FD0606B000149 -:1044AA0065EC36F0EF6A79907B6A7A6A0001992B9B -:1044BA0000019A510001995D01E3996BEAEC37F02A -:1044CA00EA22EE50ED1001E188D0D5EC37F0EECFBC +:1044AA0051EC36F0EF6A79907B6A7A6A0001992BAF +:1044BA0000019A510001995D01E3996BD5EC37F03F +:1044CA00EA22EE50ED1001E188D0BEEC37F0EECFD3 :1044DA0058F0EFCF59F05850561802E15950571872 -:1044EA005FE009B2898624EC37F0EA22EE50ED103B -:1044FA0051E0D5EC37F00401EE50565CCF6FEE5028 +:1044EA005FE009B289860DEC37F0EA22EE50ED1052 +:1044FA0051E0BEEC37F00401EE50565CCF6FEE503F :10450A005758D06FE83422E2CF510008000ED05538 -:10451A001DE2000124EC37F0E4EC35F004015750B9 +:10451A001DE200010DEC37F0D0EC35F004015750E4 :10452A00D019E8AE02D0D03504D0CF51565CD05164 -:10453A0057580AE2000124EC37F002EC37F05650E3 +:10453A0057580AE200010DEC37F0E9EC36F0565014 :10454A00EE265750ED222CD0000124D0CFC456F0CD -:10455A00D0C457F0566C571E000E5722000124ECA7 +:10455A00D0C457F0566C571E000E572200010DECBE :10456A0037F0EA22EECF58F0EFCF59F059505718EA :10457A00E8AE02D0573404D05650585C57505958B8 -:10458A0009E224EC37F002EC37F05650EE5E575051 -:10459A00ED5A06D0D5EC37F056C0EEFF57C0EDFF06 -:1045AA0065EC36F0120EEF6EF29E000175EC37F0F4 -:1045BA0057C056F0576A5650B66E75EC37F05650DB +:10458A0009E20DEC37F0E9EC36F05650EE5E575082 +:10459A00ED5A06D0BEEC37F056C0EEFF57C0EDFF1D +:1045AA0051EC36F0120EEF6EF29E00015EEC37F01F +:1045BA0057C056F0576A5650B66E5EEC37F05650F2 :1045CA00B56EF00EB4140009B46EF00EB4140909F5 :1045DA00B46E7980F28E09B289960401000ED880F1 :1045EA007A55000E7B552EE2882B000E89237A51CC @@ -1110,9 +1110,9 @@ :10471A00030E996F9EAC4FD09E9CC1AC07D0C19C32 :10472A00010E0401906F916B8C6B2AD0C450586EA5 :10473A00596E586AC35000015810566E59C057F046 -:10474A0004018C51E96EEA6A39EC37F0EA2256C064 +:10474A0004018C51E96EEA6A22EC37F0EA2256C07B :10475A00EEFF57C0EDFF0B0E8C5D0EE18C51E96E3A -:10476A00EA6A39EC37F0E4EC35F09251565C935131 +:10476A00EA6A22EC37F0D0EC35F09251565C93515C :10477A00575802E2010E946FD890903791378C2BDC :10478A00100E8C5D0EE290518E15566E91518F155A :10479A00576E5650571005E18C2BD89090379137A9 @@ -1127,1306 +1127,1302 @@ :10482A00D9CFE9FFDACFEAFFBF0ED880EE540E0ED9 :10483A00ED540BE3DECFE9FFDDCFEAFFEE0EEF6EBC :10484A00DF2A010E01E3DB2AEBD7020EE15C02E26A -:10485A00E16AE552E16EE552E7CFD9FF1200F3ECC7 +:10485A00E16AE552E16EE552E7CFD9FF1200DEECDC :10486A0037F0BF0EF36E010EF3CFDBFF0E0EF36EC1 :10487A00020EF3CFDBFFF28C010EDBCFE9FF020E53 :10488A00DBCFEAFFEF50EE0806E1010EDB06020E6F -:10489A00F3E2DB06F1D7C2EC36F004014E50CD5DEF +:10489A00F3E2DB06F1D7AEEC36F004014E50CD5D03 :1048AA004F50CE5906E2010EDBCFCDF4020EDBCF1C :1048BA00CEF4F28C030EE15C02E2E16AE552E16EAB -:1048CA00B6EF35F005EC38F0896A926804018E6B10 +:1048CA00A7EF35F0ECEC37F0896A926804018E6B39 :1048DA008F6B8A6A93688B6A94688C968C94959687 :1048EA009594928E010EBD6F846B826B816B836B84 :1048FA007D6B7C6B7E6B7A6B7B6B7F6B806B886B63 :10490A00896B8A6B8B6B8C6B76827680769C769AB7 -:10491A0076887696FA0E776EDE6ADD6A78EC36F07D -:10492A00100E4E5C000E4F5813E27DEC36F0010E6D +:10491A0076887696FA0E776EDE6ADD6A64EC36F091 +:10492A00100E4E5C000E4F5813E269EC36F0010E81 :10493A00D890E936EA36E806FBE1000EE926010ED0 :10494A00EA22EE6AED6ADF2A010EE8E3DB2AE6D7FD -:10495A000401B76BB86BB56BB66BDE6ADD6A8CECBB -:10496A0037F00AE27DEC36F0000EE926020EECEC96 -:10497A0036F0F5E3DB2AF3D7DE6ADD6A8CEC37F032 -:10498A000AE27DEC36F0400EE926020EECEC36F037 -:10499A00F5E3DB2AF3D7DE6ADD6A78EC36F0000E3F -:1049AA004E5C010E4F580AE27DEC36F0000EE92605 -:1049BA00030EECEC36F0F1E3DB2AEFD70401B96B16 +:10495A000401B76BB86BB56BB66BDE6ADD6A79ECCE +:10496A0037F00AE269EC36F0000EE926020ED8ECBE +:10497A0036F0F5E3DB2AF3D7DE6ADD6A79EC37F045 +:10498A000AE269EC36F0400EE926020ED8EC36F05F +:10499A00F5E3DB2AF3D7DE6ADD6A64EC36F0000E53 +:1049AA004E5C010E4F580AE269EC36F0000EE92619 +:1049BA00030ED8EC36F0F1E3DB2AEFD70401B96B2A :1049CA00BA6BBB6BBC6B856B866B876B0F01498FB0 :1049DA00BE0EC16ED08E7694A386A596B9EC0CF065 -:1049EA00CFEC3EF076844BEC32F00401C96BCA6B13 +:1049EA00B7EC3EF076843EEC32F00401C96BCA6B38 :1049FA00CB6BCC6B0E6ABE6BBF6BC06BC16B600EB0 :104A0A00C26FEA0EC36FC46BC56B010EC66FCD6B66 :104A1A00CE6B926B936B966B976B986B996B9A6B49 :104A2A009B6B956B946BF28EF28C020EE15C02E248 -:104A3A00E16AE552E16EB6EF35F0B1EC35F0050EFC -:104A4A00E126C9EC36F0C9EC34F004017E510008C5 -:104A5A000AE2DFEC2EF004017D2B030E7D5D01E1FD -:104A6A007D6B7E07F2D7835100080AE2FCEC2EF038 +:104A3A00E16AE552E16EA7EF35F0A2EC35F0050E1A +:104A4A00E126B5EC36F0BAEC34F004017E510008E8 +:104A5A000AE2CCEC2EF004017D2B030E7D5D01E110 +:104A6A007D6B7E07F2D7835100080AE2E9EC2EF04B :104A7A000401822B030E825D01E1826B8307F3D767 :104A8A00200E0501E76EBC19E8AE02D0E73402D069 :104A9A00E750BC5D01E22AD16550020B01E026D144 -:104AAA00400EE66E400EE66E020EE66EC5EC43F070 -:104ABA00FBEC37F0E76E020EE7CFDBFFDB500008B6 +:104AAA00400EE66E400EE66E020EE66EADEC43F088 +:104ABA00E2EC37F0E76E020EE7CFDBFFDB500008CF :104ACA0001E3B8D0030EDB6A020EDB50F36E030E6D -:104ADA0082EC36F001E3AED0B2EC36F0040EEFCF42 -:104AEA00DBFF0401EC5114E06DEC37F0040EDBCF70 +:104ADA006EEC36F001E3AED09EEC36F0040EEFCF6A +:104AEA00DBFF0401EC5114E056EC37F0040EDBCF87 :104AFA00EFFFB72B030EDB2A0401EC07EC5137E179 :104B0A0009B08B80ADEC19F009A02FD08B902DD075 :104B1A00EB512DE0040EDB50590829E1EB6B1C0E1A :104B2A00EC6F020EDBCFE6FF030EDB50E552E75CCB :104B3A004E6E1C0E4E5C1BE3030EDB2AEC510FE09B -:104B4A00B2EC36F0EF50E66E6DEC37F0E552E75016 +:104B4A009EEC36F0EF50E66E56EC37F0E552E75041 :104B5A00EF6EB72B030EDB2A0401EC07EFD709B07F -:104B6A008B80ADEC19F009B08B90D0EC36F009A827 -:104B7A0006D0040EDBCFE6FF2CEC4CF0E552040124 +:104B6A008B80ADEC19F009B08B90BCEC36F009A83B +:104B7A0006D0040EDBCFE6FF13EC4CF0E55204013D :104B8A00EC5155E1E7511BE10D0E4E6E040EDB5060 :104B9A004E5C06E00A0E4F6E040EDB504F5C0FE1CE -:104BAA00010EE76F6DEC37F00D0EEF6EB72B09B003 -:104BBA008B80F9D809B08B90D0EC36F02BD0040E4C +:104BAA00010EE76F56EC37F00D0EEF6EB72B09B01A +:104BBA008B80F9D809B08B90BCEC36F02BD0040E60 :104BCA00DB5008080FE10401B75100080BE2B707F0 -:104BDA00B751A0EC35F0EF6A310E4E6E8D0E93ECA4 +:104BDA00B75191EC35F0EF6A010E4E6E8D0E84ECF2 :104BEA0035F018D0040EDB500D0814E0040EDB502B -:104BFA000A0810E0200EF36E040E82EC36F00AE387 -:104C0A006DEC37F0040EDBCFEFFF0401E76BEB6BC3 +:104BFA000A0810E0200EF36E040E6EEC36F00AE39B +:104C0A0056EC37F0040EDBCFEFFF0401E76BEB6BDA :104C1A000401B72B0401B7514E6E4F6A000E4E18AD :104C2A0006E1010E4F1803E18487B76BB86B030ED8 -:104C3A00DB2A4AD70401845139E084A105D02D0E1C -:104C4A004E6E8D0E21EC37F0040184A305D0100EB0 -:104C5A004E6E8D0E21EC37F0040184A505D0F60EB8 -:104C6A004E6E8C0E21EC37F0040184A705D0DC0EC1 -:104C7A004E6E8C0E21EC37F0040184A905D0BF0ECC -:104C8A004E6E8C0E21EC37F0040184AD05D09F0ED8 -:104C9A004E6E8C0E21EC37F0040184AF05D0870EDE -:104CAA004E6E8C0E21EC37F00401846BCA511DE064 -:104CBA00010E0E1414E0CB5112E1680E4E6E8C0EEA -:104CCA0093EC35F0020EE66EC9C44EF04F6ABFECA3 -:104CDA0035F09DEC35F00401010ECB6F06D0010EC4 +:104C3A00DB2A4AD70401845139E084A105D0FD0E4C +:104C4A004E6E8C0E0AEC37F0040184A305D0E00EF8 +:104C5A004E6E8C0E0AEC37F0040184A505D0C60E00 +:104C6A004E6E8C0E0AEC37F0040184A705D0AC0E08 +:104C7A004E6E8C0E0AEC37F0040184A905D08F0E13 +:104C8A004E6E8C0E0AEC37F0040184AD05D06F0E1F +:104C9A004E6E8C0E0AEC37F0040184AF05D0570E25 +:104CAA004E6E8C0E0AEC37F00401846BCA511DE07B +:104CBA00010E0E1414E0CB5112E1380E4E6E8C0E1A +:104CCA0084EC35F0020EE66EC9C44EF04F6AABECC6 +:104CDA0035F08EEC35F00401010ECB6F06D0010ED3 :104CEA000E1403E1CB5101E0CB6B37D8050EE15C22 -:104CFA0002E2E16AE552E16EB6EF35F050EC37F0C8 -:104D0A00B5C4DFFFDF2A400EF3EC35F001E1DF6ABC +:104CFA0002E2E16AE552E16EA7EF35F039EC37F0EE +:104D0A00B5C4DFFFDF2A400EDFEC35F001E1DF6AD0 :104D1A000401B651DF5C01E120D80401B551EA6A09 :104D2A00000FE96E020EEA22FE0EDBCFEFFFB52B73 :104D3A00400EB55D01E1B56BB651B55D01E1848503 :104D4A00FE0EDBCF4EF04F6A4EBE4F684EC0F3FFE9 -:104D5A004FC0F4FFE552B6EF35F050EC37F00401DE -:104D6A00B551B65D1DE00501A45105E051EC44F0D2 -:104D7A0096EC38F0F8D70401B651D880B55507E259 -:104D8A00B651B55D26EC36F0B5C4B6F407D0400E80 -:104D9A00D880B65526EC36F00401B66B51EC44F0D7 -:104DAA00E552B6EF35F0B1EC35F0090EE126DE6AD0 +:104D5A004FC0F4FFE552A7EF35F039EC37F0040104 +:104D6A00B551B65D1DE00501A45105E039EC44F0EA +:104D7A007EEC38F0F8D70401B651D880B55507E271 +:104D8A00B651B55D12EC36F0B5C4B6F407D0400E94 +:104D9A00D880B65512EC36F00401B66B39EC44F003 +:104DAA00E552A7EF35F0A2EC35F0090EE126DE6AEE :104DBA00DD6A020EDB6A030EDB6A050EDB6A010E90 :104DCA00F36E060EF3CFDBFF0401C76BC86BCC5141 -:104DDA0001E18AD0060EDB6A040EB7C4DBFFDB50A2 -:104DEA0003E0040EDB0602D0040EDB6892EC37F017 +:104DDA0001E18CD0060EDB6A040EB7C4DBFFDB50A0 +:104DEA0003E0040EDB0602D0040EDB687FEC37F02A :104DFA0016E0050EF36EDBCFF4FFE850F45C0FE229 :104E0A00040EDB50B85D0BE0040EDB5003E0040E29 -:104E1A00DB0602D0040EDB68050EDB2AE7D792EC2C -:104E2A0037F059E1070EB8C4DBFF040EDBCFB8F444 -:104E3A00E66AD950020FFBEC36F0070EDBCFB8F466 +:104E1A00DB0602D0040EDB68050EDB2AE7D77FEC3F +:104E2A0037F05BE1070EB8C4DBFF040EDBCFB8F442 +:104E3A00E66AD950020FE2EC36F0070EDBCFB8F47F :104E4A00080EB8C4DBFF040EDB50F36E080EDB500D -:104E5A00F35C19E0080EDB50A0EC35F0030EDBCF53 +:104E5A00F35C19E0080EDB5091EC35F0030EDBCF62 :104E6A00E7FFEF50E726030EE7CFDBFF080EDB2A4A :104E7A00DB504E6E4F6AE850E6E1010E4F18E3E14F :104E8A00080EDB6AE0D7030EDB1C010FE76E030E88 :104E9A00E7CFDBFF020EDB50F36E030EDB50F35C51 :104EAA000CE1010EF36E060EF3CFDBFF040EDB50AE -:104EBA00A0EC35F00D0EEF6E17D0420E4E6E8C0E32 -:104ECA0093EC35F0030E98EC36F02CEC38F0F1EC5C -:104EDA0046F0E55205D0190E4E6E8C0E40EC37F0B6 -:104EEA00FBEC37F09DEC35F0060EDB5001E168D2A1 -:104EFA00040114EC38F0BAEC36F0F3CFC7F404012D -:104F0A00CDEC35F004E1010E4F1801E1B86BC75141 -:104F1A00DE6EDD6AFFEC36F02C0823E0FFEC36F09B -:104F2A000D081FE0FFEC36F00A081BE014EC38F01D -:104F3A00BAEC36F0F3CFC8F40401CDEC35F004E155 -:104F4A00010E4F1801E1B86BC7C451F0506AC8513D -:104F5A00000150244E6E000E51204F6E4EC0DEFFEF -:104F6A00DD6E000EDFCF42F0010EDBCF43F0520EB2 -:104F7A00421802E1540E431801E1F1D1550E4218CC -:104F8A0002E1510E431801E1E8D14D0E421802E147 -:104F9A00480E431801E1DED1520E421802E1530EC7 -:104FAA00431801E1D4D1520E421802E1510E4318BE -:104FBA0001E1CAD1420E421802E1520E431801E140 -:104FCA00C0D1540E421802E1510E431801E1B6D184 -:104FDA00540E421802E1530E431801E1ACD1530EAC -:104FEA00421802E1430E431801E1A2D1530E4218BE -:104FFA0002E1510E431801E198D14D0E421802E127 -:10500A00580E431801E18ED1530E421802E1450EA3 -:10501A00431801E184D1430E421802E1410E4318BC -:10502A0001E17AD14D0E421802E1510E431801E115 -:10503A0070D1320E421802E1530E431801E166D1D3 -:10504A00450E421802E1530E431801E15CD1470EA6 -:10505A00421802E1510E431801E152D1430E42189F -:10506A0002E1510E431801E148D14B0E421802E108 -:10507A00430E431801E13ED14C0E421802E1420EA2 -:10508A00431801E134D1440E421802E14E0E43188E -:10509A0001E12AD1490E421802E14E0E431801E1FC -:1050AA0020D1420E421802E1510E431801E116D1F5 -:1050BA004C0E421802E1510E431801E10CD14C0E7C -:1050CA00421802E1530E431801E102D14E0E421872 -:1050DA0002E1510E431801E1F8D04E0E421802E1E6 -:1050EA00530E431801E1EED0430E421802E1530E6B -:1050FA00431801E1E4D04D0E421802E1450E43186F -:10510A0001E1DAD0450E421802E1510E431801E1DD -:10511A00D0D0500E421802E1510E431801E1C6D018 -:10512A00500E421802E1540E431801E1BCD0500E51 -:10513A00421802E1530E431801E1B2D04D0E421853 -:10514A0002E1530E431801E1A8D0570E421802E1BA -:10515A004D0E431801E19ED0520E421802E14D0E47 -:10516A00431801E194D0440E421802E1500E43184C -:10517A0001E18AD04F0E421802E1500E431801E1B4 -:10518A0080D0490E421802E1500E431801E176D050 -:10519A00410E421801E143506EE0560E421801E1F9 -:1051AA00435066E0490E421801E143505EE04F0E5B -:1051BA00421801E1435056E0550E421802E1430EEF -:1051CA0043184EE0430E421801E1435046E0520EA6 -:1051DA00421801E143503FE04D0E421802E14C0EE5 -:1051EA00431836E0330E421802E1540E43182DE0FC -:1051FA00440E421802E1540E431824E0330E4218BA -:10520A0002E14C0E43181BE0540E421802E14C0E08 -:10521A00431812E04D0E421802E1430E431809E00A -:10522A000401C85101E09ED078EC37F07EEC37F0EB -:10523A00ADD0B8EC11F0B2D04FEC0FF0AFD082EC99 -:10524A000EF0ACD0BEEC0EF0A9D039EC0FF0A6D01F -:10525A0049EC0EF0A3D0FFD8A1D0F9EC2DF09ED0E6 -:10526A0001D99CD0A9EC2EF099D0DFEC2EF096D083 -:10527A00F5EC2EF093D0FCEC2EF090D034EC30F01C -:10528A008DD0A9EC30F08AD098EC2FF087D079EC49 -:10529A002FF084D05EEC2FF081D0A4EC11F07ED0F8 -:1052AA0042EC16F07BD01CEC16F078D09CEC15F092 -:1052BA0075D0B4EC15F072D0F9EC16F06FD088EC1A -:1052CA000DF06CD059EC17F069D07AEC17F066D073 -:1052DA008CEC17F063D0ACEC17F060D0D3EC17F07D -:1052EA005DD037EC17F05AD04AEC17F057D05DEC86 -:1052FA0031F054D0AFEC31F051D0E7EC17F04ED08A -:10530A0000EC18F04BD033EC18F048D044EC3FF0E6 -:10531A0045D02BEC19F042D08FEC2EF03FD04DEC5B -:10532A0015F03CD01BEC14F039D06CEC19F036D0E7 -:10533A00A8EC19F033D08EEC32F030D0C3EC32F056 -:10534A002DD065EC31F02AD06CEC31F027D07CEC12 -:10535A0031F024D0D3EC12F021D0AEDB1FD040ECD8 -:10536A0013F01CD078EC37F0C8C4E6FFC7DCE5526E -:10537A007EEC37F0C6EC37F0C7C4E6FF06EC37F030 -:10538A0098EC37F0020EE66EC8C44EF04F6ABFECD6 -:10539A0035F0270EBAEC35F09DEC35F00401FFEC40 -:1053AA0036F00D080DE084510BE1520E4E6E4F6A35 -:1053BA00DF504E1803E1DE52DD504F1801E0848FB2 -:1053CA00B7C4B8F4090EE15C02E2E16AE552E16EA3 -:1053DA00B6EF35F050EC37F02C0EDF6E010E0101FE -:1053EA00C31503E1FE0EDB5010E0A1EC36F0040118 -:1053FA00C85104E0C8C4E6FF81DCE552FD0EDB506B -:10540A0004E0DFCFE6FF7ADCE552E552B6EF35F08D -:10541A00B1EC35F00101C3A104D0FD0E4E6E8B0E26 -:10542A0016D00401BD5108E0FE0EDB5005E1FA0E6C -:10543A004E6E8B0E93EC35F0FE0EDB50020804E143 -:10544A00F70E4E6E8B0E03D0F40E4E6E8B0E93EC4F -:10545A0035F0B6EF35F009EC38F0EAEC35F07DDCE2 -:10546A0067EF24F0D9CFE6FFE1CFD9FF040EE1269A -:10547A00E66AE66AAFDFE552E552E66AD9CFE6FFA9 -:10548A00DACFE6FF030EE66E20EC33F0E552E55282 -:10549A00E552E552E66AD950020FE66E000EDA20AE -:1054AA00E66E020EE66E20EC33F0E552E552E55266 -:1054BA00E5520401845101E0F5D2010E4E6E4F6AA5 -:1054CA00DF504E1803E1DE52DD504F181AE1D95071 -:1054DA00020FE96EDACFEAFFEE50ED100BE0010E93 -:1054EA004E6E4F6A020EDB504E1803E1030EDB507C -:1054FA004F1804E1020EDBCFBDF402D00401848D03 -:10550A00CED2020E4E6E4F6ADF504E1803E1DE52C3 -:10551A00DD504F181AE1D950020FE96EDACFEAFFCF -:10552A00EE50ED100BE0010E4E6E4F6A020EDB508C -:10553A004E1803E1030EDB504F1804E1020EDBCFD5 -:10554A00C2F102D00401848DAAD2030E4E6E4F6AB4 -:10555A00DF504E1803E1DE52DD504F181CE1D950DE -:10556A00020FE96EDACFEAFFEE50ED1003E1069082 -:10557A008C9410D0010E4E6E4F6A020EDB504E18FC -:10558A0003E1030EDB504F1803E106808C9402D02E -:10559A000401848D84D2040E4E6E4F6ADF504E1879 -:1055AA0003E1DE52DD504F181DE1020EDBCF4EF053 -:1055BA00030EDBCF4FF04F3404E24E502008000EAA -:1055CA004F5407E2200EF36E020EF3CFDBFF030EF9 -:1055DA00DB6AE3EC18F0000901E0FBD7020EDB50AE -:1055EA00136E5DD20A0E4E6E4F6ADF504E1803E1FB -:1055FA00DE52DD504F181CE1D950020FE96EDACFA6 -:10560A00EAFFEE50ED1003E10101C39110D0010E43 -:10561A004E6E4F6A020EDB504E1803E1030EDB504A -:10562A004F1803E10101C38102D00401848D37D2EE -:10563A00320E4E6E4F6ADF504E1803E1DE52DD50D5 -:10564A004F180FE1D950020FE96EDACFEAFFEE5098 -:10565A00ED1003E10401C66B03D00401010EC66F0D -:10566A001ED2330E4E6E4F6ADF504E1803E1DE52E1 -:10567A00DD504F1811E1FF0EE76E020EDBCF4EF040 -:10568A00030EDBCF4FF0E7504E164F6A4E500C6EAA -:10569A000C5001E10E9003D2340E4E6E4F6ADF5069 -:1056AA004E1803E1DE52DD504F180EE1FF0EE76E91 -:1056BA00020EDBCF4EF0030EDBCF4FF0E7504E1653 -:1056CA004F6A4E500D6EEBD1350E4E6E4F6ADF505B -:1056DA004E1803E1DE52DD504F1814E1010E4E6EF2 -:1056EA004F6A020EDB504E1803E1030EDB504F18CF -:1056FA0004E10401010ECA6F04D00401CA6B04015B -:10570A00CB6BCDD1360E4E6E4F6ADF504E1803E189 -:10571A00DE52DD504F1812E1010E4E6E4F6A020E34 -:10572A00DB504E1803E1030EDB504F1804E104016D -:10573A00010ECC6F02D00401CC6BB1D13C0E4E6E7F -:10574A004F6ADF504E1803E1DE52DD504F180DE16B -:10575A00020EDBCF92F4030EDBCF93F4FF0E0401AB -:10576A009217030E040193179AD13D0E4E6E4F6A9B -:10577A00DF504E1803E1DE52DD504F1837E1F29E3A -:10578A00F29C020EDBCF96F4030EDBCF97F40401F2 -:10579A009651971109E10401956B0401986B996B75 -:1057AA0004019A6B9B6B1FD004019551030A14E004 -:1057BA00020A0FE0010A0DE0020A01E00AD096C4CB -:1057CA009AF497C49BF40401E80E986F030E996F3C -:1057DA000AD00401010E956F0401986B996B0401BC -:1057EA009A6B9B6B00D0F28CF28E59D1FA0E4E6EE8 -:1057FA004F6ADF504E1803E1DE52DD504F181EE1AA -:10580A00D950020FE96EDACFEAFFEE50ED1002E14D -:10581A00099213D0010E4E6E4F6A020EDB504E18DB -:10582A0003E1030EDB504F1806E109829592959029 -:10583A009292929602D00401848D31D1FB0E4E6E63 -:10584A004F6ADF504E1803E1DE52DD504F182BE14C -:10585A00D950020FE96EDACFEAFFEE50ED1003E1FC -:10586A00099609941FD0010E4E6E4F6A020EDB5044 -:10587A004E1803E1030EDB504F1812E10984099612 -:10588A00EC0EE66E57EC4CF0E552020EE66EE66A56 -:10589A001C0EE66E51EC4BF0E552E552E55202D091 -:1058AA000401848DFCD0FC0E4E6E4F6ADF504E18F8 -:1058BA0003E1DE52DD504F182BE1D950020FE96E99 -:1058CA00DACFEAFFEE50ED1003E1099609941FD0F2 -:1058DA00010E4E6E4F6A020EDB504E1803E1030EA4 -:1058EA00DB504F1812E109860984EC0EE66E57EC7C -:1058FA004CF0E552020EE66EE66A1C0EE66E51ECBC -:10590A004BF0E552E552E55202D00401848DC7D02E -:10591A00FD0E4E6E4F6ADF504E1803E1DE52DD5027 -:10592A004F1829E1D950020FE96EDACFEAFFEE509B -:10593A00ED1002E109981ED0010E4E6E4F6A020E5A -:10594A00DB504E1803E1030EDB504F1811E10988B2 -:10595A00EC0EE66E57EC4CF0E552020EE66EE66A85 -:10596A001C0EE66E51EC4BF0E552E552E55202D0C0 -:10597A000401848D94D0FE0E4E6E4F6ADF504E188D -:10598A0003E1DE52DD504F181AE109829592959093 -:10599A0092928C908C808C908C808C908C808C9045 +:104EBA0091EC35F00D0EEF6E19D0120E4E6E8C0E6F +:104ECA0084EC35F0030E84EC36F04EC0E6FFEDECD0 +:104EDA0036F0D9EC46F0E55205D0E90E4E6E8B0E4F +:104EEA0029EC37F0E2EC37F08EEC35F0060EDB50A9 +:104EFA0001E168D2040100EC38F0A6EC36F0F3CFF9 +:104F0A00C7F40401B4EC35F004E1010E4F1801E1D5 +:104F1A00B86BC751DE6EDD6AE6EC36F02C0823E08A +:104F2A00E6EC36F00D081FE0E6EC36F00A081BE066 +:104F3A0000EC38F0A6EC36F0F3CFC8F40401B4EC78 +:104F4A0035F004E1010E4F1801E1B86BC7C451F006 +:104F5A00506AC851000150244E6E000E51204F6E07 +:104F6A004EC0DEFFDD6E000EDFCF42F0010EDBCF5A +:104F7A0043F0520E421802E1540E431801E1F1D1F6 +:104F8A00550E421802E1510E431801E1E8D14D0EC7 +:104F9A00421802E1480E431801E1DED1520E4218CE +:104FAA0002E1530E431801E1D4D1520E421802E134 +:104FBA00510E431801E1CAD1420E421802E1520EC3 +:104FCA00431801E1C0D1540E421802E1510E4318B0 +:104FDA0001E1B6D1540E421802E1530E431801E121 +:104FEA00ACD1530E421802E1430E431801E1A2D19B +:104FFA00530E421802E1510E431801E198D14D0EA9 +:10500A00421802E1580E431801E18ED1530E42189C +:10501A0002E1450E431801E184D1430E421802E130 +:10502A00410E431801E17AD14D0E421802E1510EA8 +:10503A00431801E170D1320E421802E1530E4318AF +:10504A0001E166D1450E421802E1530E431801E10F +:10505A005CD1470E421802E1510E431801E152D1C8 +:10506A00430E421802E1510E431801E148D14B0E9A +:10507A00421802E1430E431801E13ED14C0E421898 +:10508A0002E1420E431801E134D1440E421802E112 +:10509A004E0E431801E12AD1490E421802E14E0E82 +:1050AA00431801E120D1420E421802E1510E431881 +:1050BA0001E116D14C0E421802E1510E431801E1EA +:1050CA000CD14C0E421802E1530E431801E102D1F1 +:1050DA004E0E421802E1510E431801E1F8D04E0E6D +:1050EA00421802E1530E431801E1EED0430E421872 +:1050FA0002E1530E431801E1E4D04D0E421802E1D9 +:10510A00450E431801E1DAD0450E421802E1510E6C +:10511A00431801E1D0D0500E421802E1510E431853 +:10512A0001E1C6D0500E421802E1540E431801E1C3 +:10513A00BCD0500E421802E1530E431801E1B2D01E +:10514A004D0E421802E1530E431801E1A8D0570E42 +:10515A00421802E14D0E431801E19ED0520E421848 +:10516A0002E14D0E431801E194D0440E421802E1C7 +:10517A00500E431801E18AD04F0E421802E1500E38 +:10518A00431801E180D0490E421802E1500E43183B +:10519A0001E176D0410E421801E143506EE0560E0D +:1051AA00421801E1435066E0490E421801E14350BA +:1051BA005EE04F0E421801E1435056E0550E421888 +:1051CA0002E1430E43184EE0430E421801E14350F8 +:1051DA0046E0520E421801E143503FE04D0E42189C +:1051EA0002E14C0E431836E0330E421802E1540E27 +:1051FA0043182DE0440E421802E1540E431824E0ED +:10520A00330E421802E14C0E43181BE0540E4218AA +:10521A0002E14C0E431812E04D0E421802E1430E11 +:10522A00431809E00401C85101E09ED061EC37F04F +:10523A0067EC37F0ADD0B8EC11F0B2D04FEC0FF00C +:10524A00AFD082EC0EF0ACD0BEEC0EF0A9D039ECA7 +:10525A000FF0A6D049EC0EF0A3D0FFD8A1D0E6EC0F +:10526A002DF09ED001D99CD096EC2EF099D0CCECA2 +:10527A002EF096D0E2EC2EF093D0E9EC2EF090D0FE +:10528A0025EC30F08DD09AEC30F08AD089EC2FF0F2 +:10529A0087D06AEC2FF084D04FEC2FF081D0A4ECA9 +:1052AA0011F07ED042EC16F07BD01CEC16F078D0D0 +:1052BA009CEC15F075D0B4EC15F072D0F9EC16F040 +:1052CA006FD088EC0DF06CD059EC17F069D07AECFD +:1052DA0017F066D08CEC17F063D0ACEC17F060D006 +:1052EA00D3EC17F05DD037EC17F05AD04AEC17F030 +:1052FA0057D04EEC31F054D0A0EC31F051D0E7EC5D +:10530A0017F04ED000EC18F04BD033EC18F048D020 +:10531A002CEC3FF045D02BEC19F042D07CEC2EF06F +:10532A003FD04DEC15F03CD01BEC14F039D06CECAE +:10533A0019F036D0A8EC19F033D081EC32F030D025 +:10534A00B5EC32F02DD056EC31F02AD05DEC31F0CC +:10535A0027D06DEC31F024D0D3EC12F021D0AEDBA3 +:10536A001FD040EC13F01CD061EC37F0C8C4E6FF44 +:10537A00C5DCE55267EC37F075EC37F0C7C4E6FFD9 +:10538A00EDEC36F085EC37F0020EE66EC8C44EF04E +:10539A004F6AABEC35F0270EC7EC35F08EEC35F0E2 +:1053AA000401E6EC36F00D080DE084510BE1520ED3 +:1053BA004E6E4F6ADF504E1803E1DE52DD504F1831 +:1053CA0001E0848FB7C4B8F4090EE15C02E2E16A35 +:1053DA00E552E16EA7EF35F039EC37F02C0EDF6EAF +:1053EA00010E0101C31503E1FE0EDB5010E08DEC46 +:1053FA0036F00401C85104E0C8C4E6FF7FDCE55278 +:10540A00FD0EDB5004E0DFCFE6FF78DCE552E55223 +:10541A00A7EF35F0A2EC35F00101C3A104D0CD0EFF +:10542A004E6E8B0E16D00401BD5108E0FE0EDB5005 +:10543A0005E1CA0E4E6E8B0E84EC35F0FE0EDB5083 +:10544A00020804E1C70E4E6E8B0E03D0C40E4E6ED8 +:10545A008B0E84EC35F0A7EF35F0F0EC37F0D6EC94 +:10546A0035F07BDC67EF24F0D9CFE6FFE1CFD9FF37 +:10547A00040EE126E66AE66AAFDFE552E552E66A1D +:10548A00D9CFE6FFDACFE6FF030EE66E11EC33F072 +:10549A00E552E552E552E552E66AD950020FE66E48 +:1054AA00000EDA20E66E020EE66E11EC33F0E552DB +:1054BA00E552E552E5520401845101E0F5D2010EAC +:1054CA004E6E4F6ADF504E1803E1DE52DD504F1820 +:1054DA001AE1D950020FE96EDACFEAFFEE50ED1069 +:1054EA000BE0010E4E6E4F6A020EDB504E1803E1BE +:1054FA00030EDB504F1804E1020EDBCFBDF402D0DD +:10550A000401848DCED2020E4E6E4F6ADF504E18C1 +:10551A0003E1DE52DD504F181AE1D950020FE96E4D +:10552A00DACFEAFFEE50ED100BE0010E4E6E4F6A35 +:10553A00020EDB504E1803E1030EDB504F1804E154 +:10554A00020EDBCFC2F102D00401848DAAD2030E6F +:10555A004E6E4F6ADF504E1803E1DE52DD504F188F +:10556A001CE1D950020FE96EDACFEAFFEE50ED10D6 +:10557A0003E106908C9410D0010E4E6E4F6A020E13 +:10558A00DB504E1803E1030EDB504F1803E106808F +:10559A008C9402D00401848D84D2040E4E6E4F6A1C +:1055AA00DF504E1803E1DE52DD504F181DE1020EA6 +:1055BA00DBCF4EF0030EDBCF4FF04F3404E24E50F8 +:1055CA002008000E4F5407E2200EF36E020EF3CFAE +:1055DA00DBFF030EDB6AE3EC18F0000901E0FBD7FE +:1055EA00020EDB50136E5DD20A0E4E6E4F6ADF500A +:1055FA004E1803E1DE52DD504F181CE1D950020F5C +:10560A00E96EDACFEAFFEE50ED1003E10101C39132 +:10561A0010D0010E4E6E4F6A020EDB504E1803E197 +:10562A00030EDB504F1803E10101C38102D00401CC +:10563A00848D37D2320E4E6E4F6ADF504E1803E118 +:10564A00DE52DD504F180FE1D950020FE96EDACF62 +:10565A00EAFFEE50ED1003E10401C66B03D004012A +:10566A00010EC66F1ED2330E4E6E4F6ADF504E18B1 +:10567A0003E1DE52DD504F1811E1FF0EE76E020E14 +:10568A00DBCF4EF0030EDBCF4FF0E7504E164F6ADA +:10569A004E500C6E0C5001E10E9003D2340E4E6E39 +:1056AA004F6ADF504E1803E1DE52DD504F180EE10B +:1056BA00FF0EE76E020EDBCF4EF0030EDBCF4FF08C +:1056CA00E7504E164F6A4E500D6EEBD1350E4E6EA8 +:1056DA004F6ADF504E1803E1DE52DD504F1814E1D5 +:1056EA00010E4E6E4F6A020EDB504E1803E1030E96 +:1056FA00DB504F1804E10401010ECA6F04D0040103 +:10570A00CA6B0401CB6BCDD1360E4E6E4F6ADF5099 +:10571A004E1803E1DE52DD504F1812E1010E4E6EB3 +:10572A004F6A020EDB504E1803E1030EDB504F188E +:10573A0004E10401010ECC6F02D00401CC6BB1D19B +:10574A003C0E4E6E4F6ADF504E1803E1DE52DD50BA +:10575A004F180DE1020EDBCF92F4030EDBCF93F468 +:10576A00FF0E04019217030E040193179AD13D0EFE +:10577A004E6E4F6ADF504E1803E1DE52DD504F186D +:10578A0037E1F29EF29C020EDBCF96F4030EDBCFDA +:10579A0097F404019651971109E10401956B0401EC +:1057AA00986B996B04019A6B9B6B1FD004019551FE +:1057BA00030A14E0020A0FE0010A0DE0020A01E0FE +:1057CA000AD096C49AF497C49BF40401E80E986F21 +:1057DA00030E996F0AD00401010E956F0401986BAC +:1057EA00996B04019A6B9B6B00D0F28CF28E59D1A3 +:1057FA00FA0E4E6E4F6ADF504E1803E1DE52DD504C +:10580A004F181EE1D950020FE96EDACFEAFFEE50C7 +:10581A00ED1002E1099213D0010E4E6E4F6A020E8C +:10582A00DB504E1803E1030EDB504F1806E10982E4 +:10583A00959295909292929602D00401848D31D1DC +:10584A00FB0E4E6E4F6ADF504E1803E1DE52DD50FA +:10585A004F182BE1D950020FE96EDACFEAFFEE506A +:10586A00ED1003E1099609941FD0010E4E6E4F6A9E +:10587A00020EDB504E1803E1030EDB504F1812E103 +:10588A0009840996EC0EE66E3EEC4CF0E552020EE7 +:10589A00E66EE66A1C0EE66E38EC4BF0E552E5520F +:1058AA00E55202D00401848DFCD0FC0E4E6E4F6A84 +:1058BA00DF504E1803E1DE52DD504F182BE1D9506C +:1058CA00020FE96EDACFEAFFEE50ED1003E1099616 +:1058DA0009941FD0010E4E6E4F6A020EDB504E180D +:1058EA0003E1030EDB504F1812E109860984EC0E1E +:1058FA00E66E3EEC4CF0E552020EE66EE66A1C0ECF +:10590A00E66E38EC4BF0E552E552E55202D004015E +:10591A00848DC7D0FD0E4E6E4F6ADF504E1803E1DC +:10592A00DE52DD504F1829E1D950020FE96EDACF65 +:10593A00EAFFEE50ED1002E109981ED0010E4E6EFC +:10594A004F6A020EDB504E1803E1030EDB504F186C +:10595A0011E10988EC0EE66E3EEC4CF0E552020EBF +:10596A00E66EE66A1C0EE66E38EC4BF0E552E5523E +:10597A00E55202D00401848D94D0FE0E4E6E4F6A19 +:10598A00DF504E1803E1DE52DD504F181AE109824A +:10599A009592959092928C908C808C908C808C9021 :1059AA008C808C908C808C908C808C908C808C904D -:1059BA008C808C908C808C908C80EBD770D04E68C9 -:1059CA004F6ADF504E1803E1DE52DD504F181AE1DC -:1059DA00D950020FE96EDACFEAFFEE50ED1002E17C -:1059EA00099A0FD0010E4E6E4F6A020EDB504E1806 -:1059FA0003E1030EDB504F1802E1098A02D00401C9 -:105A0A00848D4DD04E6A010E4F6EDF504E1803E161 -:105A1A00DE52DD504F181AE1D950020FE96EDACF83 -:105A2A00EAFFEE50ED1002E1099C0FD0010E4E6E16 -:105A3A004F6A020EDB504E1803E1030EDB504F187B -:105A4A0002E1098C02D00401848D29D0010E4E6E28 -:105A5A00010E4F6EDF504E1803E1DE52DD504F1833 -:105A6A001CE1D950020FE96EDACFEAFFEE50ED10D1 -:105A7A0003E10990948010D0010E4E6E4F6A020E17 -:105A8A00DB504E1803E1030EDB504F1803E1098087 -:105A9A00949002D00401848D02D00401848DE66AB8 -:105AAA00B7DCE552040EE15C02E2E16AE552E16E1E -:105ABA00E552E7CFD9FF120050EC37F063EC37F02C -:105ACA00010E99EC35F00401845101E08AD0DF041B -:105ADA0008E1F6EC36F0020EE66EC9C44EF04F6AE3 -:105AEA001ED0020EF3EC35F008E1F6EC36F0200E8B -:105AFA00E66EE66AE66AE66A4CD0030EF3EC35F027 -:105B0A0004E1F6EC36F0135026D0040EF3EC35F02F -:105B1A0009E134EC24F0F6EC36F0D7EC36F0BFECC1 -:105B2A0035F059D0050EF3EC35F00EE1F6EC36F00F -:105B3A00D7EC36F0BFEC35F09DEC35F0F29C040161 -:105B4A00CD6BCE6BF28C4BD0060EF3EC35F006E142 -:105B5A00F6EC36F00F501CEC36F019D03C0EF3EC94 -:105B6A0035F007E1F6EC36F092C44EF093C44FF0EC -:105B7A000AD03D0EF3EC35F00FE1F6EC36F096C4A0 -:105B8A004EF097C44FF0506A516A4EC0E6FF06ECD9 -:105B9A0037F0E6EC37F01FD0C80EF3EC35F01EE113 -:105BAA00F6EC36F0F29E1EC0E6FF1FC0E6FF20C0EC -:105BBA00E6FF21C0E6FFE6EC37F02C0EBAEC35F032 -:105BCA0022C0E6FF23C0E6FF24C0E6FF25C0E6FFA9 -:105BDA00E6EC37F0F28E9DEC35F001D0848DEAECDC -:105BEA0035F0E552B6EF35F0B1EC35F0050E0DECB7 -:105BFA0037F0010ECAEC37F0CEEC37F0E66AD9502E -:105C0A00030FFBEC36F0E66AD950040F1EEC38F0AD -:105C1A0010E1DF50926E010EDB50936E020EDB50E4 -:105C2A00946E030EDB50956E040EDB50966EEAEC12 -:105C3A0035F0050EE15C02E2E16AE552E16EB6EF8B -:105C4A0035F0B1EC35F0FE0EDB50100805E2100E0F -:105C5A00F36EFE0EF3CFDBFFFD0EDB502BE0FE0EE4 -:105C6A00DB5076EC4CF0F35004018E13F4508F1392 -:105C7A00080EF36EFE0E82EC36F00DE2010EF36EA4 -:105C8A00FE0EDB5003E0E0EC35F0FDE1F350F31CCF -:105C9A000F0148173DD0FE0EDB500C0839E3DEEC4D -:105CAA0036F004E0E846FE0B4E06FCE1E81C0F0164 -:105CBA0049172ED0FE0EDB5076EC4CF0F3CF4EF0A7 -:105CCA00F4CF4FF04E1E4F1E4E5004018E174F5008 -:105CDA008F17080EF36EFE0E82EC36F00CE2010E00 -:105CEA00F36EFE0EDB5003E0E0EC35F0FDE1F3501D -:105CFA000F0148130DD0FE0EDB500C0809E3DEEC51 -:105D0A0036F004E0E846FE0B4E06FCE10F014913AB -:105D1A00B6EF35F022EC38F0CAEC37F0010F1EEC82 -:105D2A0038F00AE1010EDBCFE6FFDFCFE6FF89DFBD -:105D3A00E552E552EAEC35F0020EE15C02E2E16A74 -:105D4A00E552E16EB6EF35F022EC38F099EC35F019 -:105D5A0037EC36F027E1010EDB5002E1DF50896EA5 -:105D6A0018EC37F01FE1010EDB5002E1DF508A6EBA -:105D7A0018EC37F017E1010EDB5002E1DF508B6EB1 -:105D8A0018EC37F00FE1010EDB5002E1DF508C6EA8 -:105D9A0018EC37F007E1010EDB5002E1DF508D6E9F -:105DAA00EAEC35F0020EE15C02E2E16AE552E16EEC -:105DBA00B6EF35F0010EE66EE66E29EC37F080504C -:105DCA001DEC37F081501DEC37F082501DEC37F096 -:105DDA0083501DEC37F084500DEC38F09DEF35F010 -:105DEA0073EC36F0C80E4E6E940E21EF37F0F3ECDA -:105DFA0037F0DF6A010EF36EDB6E020EDB6AE66ACB -:105E0A00010EE66E29EC37F09DBCFED7DF6ADFCFC4 -:105E1A004EF0100EE76E4E18E8AE02D0E73402D00C -:105E2A00E7504E5C3BE2010EDB5004018E15000187 -:105E3A004E6E020EDB5004018F1500014F6E4E505C -:105E4A004F101FE02C0EBAEC35F0C9EC35F04EAE0F -:105E5A0003D04F6850685168F7EC37F03A0EBAEC45 -:105E6A0035F0DFCFE9FFEA6AE9BEEA6839EC37F0D4 -:105E7A00EA22EECF4EF0EFCF4FF0506A516AF7ECBC -:105E8A0037F0C2EC36F0D8904E364F36010E4EC07F -:105E9A00DBFF020E4FC0DBFFDF2AB9D7020EB7ECD9 -:105EAA0037F0030EE15C02E2E16AE552E16EB6EF19 -:105EBA0035F0EFEC37F0030ECAEC37F0020F1EECA8 -:105ECA0038F00AE19FEC37F005E27DEC36F0020E7D -:105EDA00DBCFEFFFEAEC35F0030EE15C02E2E16AA8 -:105EEA00E552E16EB6EF35F0F3EC37F063EC37F0DC -:105EFA00030E99EC35F0040184510DE19FEC37F063 -:105F0A0005E27DEC36F0020EEFCFDBFF020E98ECD5 -:105F1A0036F015EC37F0030EE15C02E2E16AE55275 -:105F2A00E16EB6EF35F017EC38F001E090D0020ED2 -:105F3A00DB50010801E287D0010EDB50070801E2BD -:105F4A0082D0410EF3EC35F016E1020EDB500AE185 -:105F5A00EFEC35F003E0E0EC35F0FDE1F350F31C33 -:105F6A00921673D0EFEC35F003E0E0EC35F0FDE18A -:105F7A00F35092126AD0420EF3EC35F016E1020E9B -:105F8A00DB500AE1EFEC35F003E0E0EC35F0FDE13F -:105F9A00F350F31C931659D0EFEC35F003E0E0EC24 -:105FAA0035F0FDE1F350931250D0430EF3EC35F087 -:105FBA0016E1020EDB500AE1EFEC35F003E0E0EC0B -:105FCA0035F0FDE1F350F31C94163FD0EFEC35F0B9 -:105FDA0003E0E0EC35F0FDE1F350941236D0440EC4 -:105FEA00F3EC35F016E1020EDB500AE1EFEC35F086 -:105FFA0003E0E0EC35F0FDE1F350F31C951625D0F3 -:10600A00EFEC35F003E0E0EC35F0FDE1F3509512EA -:10601A001CD0450EF3EC35F016E1020EDB500AE116 -:10602A00EFEC35F003E0E0EC35F0FDE1F350F31C62 -:10603A0096160BD0EFEC35F003E0E0EC35F0FDE11D -:10604A00F350961202D0848D02D0EAEC35F0030E9A -:10605A00E15C02E2E16AE552E16EB6EF35F0F3EC9B -:10606A0037F0020EDB6A63EC37F0050ECAEC37F044 -:10607A00010F1EEC38F060E1010EDB50070850E317 -:10608A00410EF3EC35F00AE1EFEC35F003E0E0EC19 -:10609A0035F0FDE1F350801439E029D0420EF3ECDB -:1060AA0035F00AE1EFEC35F003E0E0EC35F0FDE124 -:1060BA00F35081141CE12AD0430EF3EC35F00AE1C7 -:1060CA00EFEC35F003E0E0EC35F0FDE1F35082143B -:1060DA000EE11CD0440EF3EC35F00BE1EFEC35F099 -:1060EA0003E0E0EC35F0FDE1F35083140FE0010E1C -:1060FA0010D0450EF3EC35F013E1EFEC35F003E088 -:10610A00E0EC35F0FDE1F350841402E1000E01D019 -:10611A00010EE76E020EE7CFDBFFDB5008E002D08C -:10612A00848D0AD0010EF36E020EF3CFDBFF020E4E -:10613A0098EC36F015EC37F0030EE15C02E2E16A06 -:10614A00E552E16EB6EF35F017EC38F001E090D089 -:10615A00020EDB50010801E287D0010EDB5007086E -:10616A0001E282D0410EF3EC35F016E1020EDB506B -:10617A000AE1EFEC35F003E0E0EC35F0FDE1F35035 -:10618A00F31C891673D0EFEC35F003E0E0EC35F040 -:10619A00FDE1F35089126AD0420EF3EC35F016E1B4 -:1061AA00020EDB500AE1EFEC35F003E0E0EC35F0EB -:1061BA00FDE1F350F31C8A1659D0EFEC35F003E0F9 -:1061CA00E0EC35F0FDE1F3508A1250D0430EF3ECC7 -:1061DA0035F016E1020EDB500AE1EFEC35F003E090 -:1061EA00E0EC35F0FDE1F350F31C8B163FD0EFECF9 -:1061FA0035F003E0E0EC35F0FDE1F3508B1236D0D8 -:10620A00440EF3EC35F016E1020EDB500AE1EFEC36 -:10621A0035F003E0E0EC35F0FDE1F350F31C8C16A9 -:10622A0025D0EFEC35F003E0E0EC35F0FDE1F3507A -:10623A008C121CD0450EF3EC35F016E1020EDB5041 -:10624A000AE1EFEC35F003E0E0EC35F0FDE1F35064 -:10625A00F31C8D160BD0EFEC35F003E0E0EC35F0D3 -:10626A00FDE1F3508D1202D0848D02D0EAEC35F0B4 -:10627A00030EE15C02E2E16AE552E16EB6EF35F047 -:10628A00D9CFE6FFE1CFD9FFE652DF6AFF0EDF5C26 -:10629A000AE2E868E85005E0E80600D000D000D03D -:1062AA00F9D7DF2AF3D7E552E552E7CFD9FF120033 -:1062BA00F29EF29C6592656AE3DF0FEF00F012002E -:1062CA00F29EF29C6592656ADBDFFF00120073ECB6 -:1062DA0036F08050080B01E0010E0DEC38F0010198 -:1062EA00C3B103D0020EB7EC37F0EAEF35F0B1ECE8 -:1062FA0035F0060E0DEC37F0070E99EC35F0010E6D -:10630A00E66ED950040FFBEC36F0E76E050EE7CFC8 -:10631A00DBFF0401845116E1DFCFC2F4010EDBCFAB -:10632A00C3F4020EDBCFC4F4030EDBCFC5F4050EB3 -:10633A00DB5006E1040EDB5002E0898601D0899623 -:10634A00EAEC35F0060EE15C02E2E16AE552E16E42 -:10635A00B6EF35F0B1EC35F0100EE12609EC38F065 -:10636A00E7DBE66AD950010FC4EC35F0E66A63D977 -:10637A0012EC37F0E66ABCEC37F0010ECAEC37F0E3 -:10638A00040FC4EC35F0020ECAEC37F0020FC4EC6D -:10639A0035F0030ECAEC37F00A0FF1DB060ECAEC31 -:1063AA0037F0060FECDB070ECAEC37F00E0FE7DB0F -:1063BA00040ECAEC37F00F0FE2DB050EB5DBEC0E6C -:1063CA004E6E8B0EABDB010E98EC36F04EAE03D060 -:1063DA004F6850685168DBEC37F0E40E4E6E8B0E56 -:1063EA009DDBD2DB15EC37F0DC0E4E6E8B0E96DBA6 -:1063FA00040EDBCF4EF0050EDBCF4FF0506A516A28 -:10640A004FAE02D050685168DBEC37F0D40E4E6EB6 -:10641A008B0E84DB020EDBCF4EF0030EDBCF4FF088 -:10642A00506A516A15EC37F0CC0E4E6E8B0E76DB45 -:10643A00D9500A0FB4DB27EC38F068EC37F0D950A2 -:10644A00060FADDBE6EC37F073DBBC0E4E6E8B0E3F -:10645A0065DB0E0E85EC37F0B40E4E6E8B0E5EDBEE -:10646A000F0E85EC37F068EC37F0080EE66E2EEC6E -:10647A0037F068EC37F0E66A2EEC37F0A6DB100E40 -:10648A00E15C02E2E16AE552E16E6BD350EC37F06F -:10649A00DF6A110EDF5C04E2BADBEF6ADF2AF9D7A2 -:1064AA00A5EC37F0DF6A100EDF5C21E2B0DBEF50BB -:1064BA0080081DE3ACDBEFCF4EF0200E4E5C17E3F5 -:1064CA00A6DBEF50E66E180E02014F6AFA254E6EF1 -:1064DA00FB518CEC36F09BDBEF50E66E020E4F6AF6 -:1064EA00FC254E6EFD518CEC36F0DF2ADCD7DF50EE -:1064FA00E824180FFAC2E9FFFBC2EAFFEF6EDF5089 -:10650A00E824020FFCC2E9FFFDC2EAFFEF6EE55282 -:10651A0028D305EC38F0DF6A09EC38F0010EDB6AA3 -:10652A00110EF36E010EE9DB0BE2010EDB50EA6A93 -:10653A00D50FE96E040EEA22EF6A010EDB2AF0D7C4 -:10654A00100EE66EC1EC37F039D8FBEC37F0DF6E8F -:10655A00E668FB0EE66EE66AAAEC37F0E8EC49F06C -:10656A00ADEC36F04FDBB2EC47F0F2DB2EDB020E7D -:10657A00E15C02E2E16AE552E16EF3D250EC37F0F7 -:10658A00ADDBDF6A110EDF5C04E241DBEF6ADF2A72 -:10659A00F9D7A5EC37F0800E0401D55D09E2D55193 -:1065AA00200806E2C1EC37F0ABEC46F0E552E552C2 -:1065BA000101C3A1BDDA09DBE552D3D250EC37F0B1 -:1065CA00DF6A57DBEF6AFFEC37F002E1848906D015 -:1065DA00FFEC36F02C0804E0DEEC37F0000E29D090 -:1065EA00D7DA04E1010E4F1801E1B86B0D0E10EC79 -:1065FA0038F00AE02C0E4F6EFFEC36F04F5C04E0E8 -:10660A00FC0EDB50DF5C02E3DF5013D0F3DBE66EF7 -:10661A0030DBE552E750EF6EBBDA04E1010E4F18AA -:10662A0001E1B86BDF2AFD0EDB2AFE0EDFE3DB2A6F -:10663A00DDD7E55296D290DA090EE126080EDB6A1A -:10664A00FFEC37F005E1FB0EDB501AE1848918D024 -:10665A00D1DB2C0807E0FB0EDB5002E1DEEC37F061 -:10666A00020E1AD195DA04E1010E4F1801E1B86B56 -:10667A000D0E10EC38F006E1FB0EDB5001E18489C7 -:10668A00030E0AD12D0E10EC38F020E1040E4FDB78 -:10669A001DE0050E506EFE0EDB50505C17E0FE0E3C -:1066AA00DB0401E1C0D0030E2DDB01E1BCD0070EF3 -:1066BA003EDB01E1B8D0010EF36E080EF3CFDBFF2B -:1066CA0067DA04E1010E4F1801E1B86B040E1ADB18 -:1066DA0009E0050E2CDB06E00A0EEFDAE6D8FBEC41 -:1066EA0037F031D014EC38F0EFCF4EF0000E4EC038 -:1066FA00DFFF4ADB050E06DB1FE1000EDFCFE6FFF8 -:10670A00010EDBCFE6FF43EC4CF0E552E552F3CF46 -:10671A004EF0F4CF4FF0506A516A4FAE02D0506833 -:10672A0051684EC0DFFF010E4FC0DBFF020E50C0A2 -:10673A00DBFF030E51C0DBFF04012ADA04E1010E7C -:10674A004F1801E1B86B080EDB5040E0FE0EDB503B -:10675A0006E152DA800E6FDA000EEE5412E3020EF0 -:10676A00D1DA06E149DA000EEE54800E64DA09E362 -:10677A00060EDDDA08E140DA000E5DDA800EEE542C -:10678A0002E2040150D07CDA080EDB5053E0040E1A -:10679A00DBCF40F0050EDBCF41F0060EDBCF42F037 -:1067AA00070EDBCF43F045684668476848688AECBD -:1067BA004BF0040E3CC0DBFF050E3DC0DBFF060EAE -:1067CA003EC0DBFF070E3FC0DBFF34D0FE0EDB50BE -:1067DA0006E112DA7F0EEE54000E2DDA23E3FE0EE6 -:1067EA00DB0404E179DB000E26DA1CE3020E8ADA06 -:1067FA0004E172DB7F0E1FDA15E3030E98DA04E177 -:10680A006BDBFF0E18DA0EE3060E506EFE0EDB503F -:10681A00505C0CE161DBFF0EEE54FF0EEE547F0E6E -:10682A00EE5404E20401848D010E36D0070E6ADAB2 -:10683A0001E026DAFE0EDB50070A21E0010A17E022 -:10684A00050A11E0010A0FE0030A08E0050A06E05A -:10685A00010A04E0050A02E0040E1ED027DA040E3B -:10686A00DBCFEFFF18D078DBDBCFEDFF14D074DB82 -:10687A00DBCFEEFF060EDBCFEEFF070E0AD016DAED -:10688A00DFCFEEFF010EDBCFEEFF020EDBCFEEFF16 -:10689A00030EDBCFEEFF000E4E6E090EE15C02E244 -:1068AA00E16AE552E16E4E505CD1AADBE2D9EE6AAA -:1068BA00EE6AEE6AEE6A010EDB6AFC0EDB50F36EDC -:1068CA00010E1BDA4EE20401AADBEFCFDFFF300E26 -:1068DA00DF5C42E3DF5039083FE3CBD9EECF4EF01D -:1068EA00EECF4FF0EECF50F0EFCF51F00A0E456EDB -:1068FA00466A476A486A4EC040F04FC041F050C0ED -:10690A0042F051C043F08AEC4BF03CC04EF03DC01F -:10691A004FF03EC050F03FC051F0300EDF5C526E77 -:10692A00536A546A556AE8504E2653504F225450BF -:10693A005022555051229DD94EC0EEFF4FC0EEFF56 -:10694A0050C0EEFF51C0EEFF040122D907E1010E4B -:10695A004F1804E1B86B02D0000E04D0010EDB2AF6 -:10696A00ACD7010E4E6E020EE15C02E2E16AE5521C -:10697A00E16E4E50F6D08A0E4E6E8B0ECFD87EC484 -:10698A004EF0FFDA15EF37F00501BC5108E0010EB1 -:10699A004E6E6550020B01E0010E4E5C17E1D2D932 -:1069AA000BE1ED51EE1111E18C86A00EED6F0F0E89 -:1069BA00EE6F010EEF6F1200ED51EE1152E18C965F -:1069CA00A00EED6F0F0EEE6FEF6B1200BC0509E023 -:1069DA00020EBC5D06E0040EBC5D03E0100EBC5D59 -:1069EA0017E1B0D90BE1ED51EE1111E18C86200EC1 -:1069FA00ED6F4E0EEE6F010EEF6F1200ED51EE11BC -:106A0A0030E18C96200EED6F4E0EEE6FEF6B12009A -:106A1A00200EBC5D26E196D907E1ED51EE1121E188 -:106A2A008C86DAD9010E15D0EF0507E1ED51EE118A -:106A3A0018E18C96D1D9020E0CD0020EEF5D0BE153 -:106A4A00ED51EE110EE18C86A00EED6F860EEE6F03 -:106A5A00030EEF6F1200ED51EE1103E18C96BCD9D3 -:106A6A00EF6B120079D8ACD9E8AE02D04E3403D01D -:106A7A00E750D8804E5423E3FD0EDB5010E011D9C5 -:106A8A00F6BEF768AFD804E0E846FE0B4F06FCE115 -:106A9A004E6E07D9F6BEF76801DAEF1210D001D9A7 -:106AAA00F6BEF7689FD804E0E846FE0B4F06FCE105 -:106ABA00E81C4E6EF6D8F6BEF768F0D9EF1651D03C -:106ACA004BD87ED9E8AE02D04E3403D0E750D880F6 -:106ADA004E5423E3FD0EDB5011E1E3D8F6BEF7680E -:106AEA0081D804E0E846FE0B4F06FCE1E81C4E6E36 -:106AFA00D8D8F6BEF768DAD9EF160FD0D2D8F6BED4 -:106B0A00F76870D804E0E846FE0B4F06FCE14E6ECB -:106B1A00C8D8F6BEF768CAD9EF1223D0ACD9FBEFB2 -:106B2A0037F06FD9E6EF37F0E66E85DD12EF37F012 -:106B3A00010EB7EF37F0EA6A000FE96E030EEA2298 -:106B4A00120082D9E66ABCEF37F09951E96EEA6A17 -:106B5A00D890E936EA361200D9CFE6FFE1CFD9FF5D -:106B6A001200E552E7CFD9FF1200E66E83EC26F059 -:106B7A00E5521200506A516A6ADA98EF37F0E66E07 -:106B8A00000EDA20E66E1200DFCF4EF0C6EF37F0C5 -:106B9A00B82BB8514E6E4F6A000E4E181200E96EAD -:106BAA00DACFEAFFEECFE6FFEECFE6FFEECFE6FF63 -:106BBA00EFCFE6FF1200D890F336E8061200EA2279 -:106BCA00EECF56F0EFCF57F01200E66A0DEC2AF03E -:106BDA00E5521200010EF36EDB5012004E6EDF50CA -:106BEA004E5C1200590EF626950EF7220800F55053 -:106BFA004F6E010E4F521200D9CFE9FFDACFEAFFEA -:106C0A00D8801200B9D9100EE66EAAEF37F0DF501D -:106C1A00EA6AD50FE96E040EEA221200F722090089 -:106C2A00F5CFE9FF0800F5CFEAFF4E5012004E6E8D -:106C3A00A8D9E66E1200EE54000EEE54000EEE5481 -:106C4A001200DF6EDFCFE6FFB6514F6A000F4E6EBD -:106C5A00020E4F224EC0E6FF4FC0E6FF04EC44F09E -:106C6A00FBEF37F0E76E010EE7CFDBFF040184513B -:106C7A001200FD0EDBCFE9FFFE0EDBCFEAFF1200AA -:106C8A00D9CFE9FFDACFEAFF040EEECFDBFF050E1C -:106C9A00EECFDBFF060EEECFDBFF070EEECFDBFFFC -:106CAA001200FE0EDBCFF6FFF76A1200FC0EDBCFF6 -:106CBA00E9FFFD0EDBCFEAFF1200E66EBCEF37F00C -:106CCA009951EA6A710FE96E000EEA22EF5000014B -:106CDA00EA6A9C25E96E9D51EA221200010EE66ECF -:106CEA00E66A29EF37F0DECF4EF0DDCF4FF0120023 -:106CFA00DECFE9FFDDCFEAFF1200DBCFF4FFF3506E -:106D0A00F45C12004E6EFE0EDB504E5C12004F22F7 -:106D1A00DF50E8244E24E96E000E4F20EA6EE55259 -:106D2A00E750EF6E1200DBCF4EF0C6EF37F04F6E32 -:106D3A00FE0EDB504F5C1200C7C4E6FF83EC26F060 -:106D4A00E55212000401ED07000EEE5BEF5112004E -:106D5A004E6E080EE15E4E501200030EDB50EA6AD8 -:106D6A00400FE96E020EEA221200EF50E66EE66A62 -:106D7A0043EC4CF0E552E5521200010EDBCF4EF027 -:106D8A00020EDBCF4FF01200010EDB6A020EDB6A45 -:106D9A00030EDB6A12000401B76BB86B0401010E23 -:106DAA00EB6F1200030EE66ECDC44EF0CEC44FF068 -:106DBA001200FE0EDB50F80F4E6E010E4E521200FC -:106DCA00FE0EDBCF4EF0190EE76E4E181200EA22C5 -:106DDA00EF6ADF2A010E1200100EED6F270EEE6F1A -:106DEA001200D2DEFFD82C0EBAEF35F0C8DE010E43 -:106DFA0099EF35F014D9EF501200E1DEE6D8EA2215 -:106E0A0012004FC0E6FF50C0E6FF51C0E6FF120075 -:106E1A00E126E66AE66AA6EF35F0E8D8E5521200FE -:106E2A00E1D89DEF35F0010E48DF7EDE37EF36F010 -:106E3A00EFD82C0EBAEF35F071DE9DEF35F085DE16 -:106E4A00890EE926000E1200EFEC29F0E552E55210 -:106E5A001200D950060FA3DEB7EC46F04E6E050EAF -:106E6A00E15E4E509DEF35F0D890E936EA36000ED5 -:106E7A00E926010E12004F6E506A4EC0E6FFE66E1A -:106E8A0050C0E6FF9AEF46F070DE270E6EDE50DE47 -:106E9A000401848B120060DEE6521200D890F636A6 -:106EAA00F736270EF626950E13EF36F0D890F636FB -:106EBA00F736F50EF626940E13EF36F0010EE66E4F -:106ECA00E66EA6EF35F0C40E4E6E8B0E93EF35F0DC -:106EDA000401B751A0EF35F08FDEFF0EEE54120019 -:106EEA0074D8E4EF35F0FF0E4E6E8B0E17DEA1EF6D -:106EFA0036F03A0E3ADE020EE66EC7C44EF01200C3 -:106F0A00DBCFE6FF83EC26F0E5529DEF35F0EBDEB2 -:106F1A00400E4E5C000E4F581200040EDB500BDE82 -:106F2A00EF502C081200B7EC46F0526E050EE15EE7 -:106F3A0052501200D8DE000E4E5C100E4F5812004E -:106F4A0061DE08EC4BF0ADEF36F0E66AE66AF80E61 -:106F5A00E66EE66AE66A1200A9DE040EDBCFEEFFF1 -:106F6A00050E1200E66E0DEC2AF0E5521200D9CF9A -:106F7A00E6FFDACFE6FF1200D50EE66E040EE66EE5 -:106F8A0012004F6A506A516A1200CEDDE66AD95081 -:106F9A001200010F2BDFE66AD950020FFBEF36F021 -:106FAA00D4DD790EE926000E02EF37F050D827EF2C -:106FBA0038F0920E4E6E8B0EB1DD04011BDF49EFE5 -:106FCA0037F0F1EC46F012EF37F0BFDD610EE9263B -:106FDA00000E1200C1DD030E0DEF37F0BDDD030E0A -:106FEA00E12612004EC0E6FF96EF35F0E552E55273 -:106FFA00E55212000D0E4E6E0401FCDE4E5C1200CC -:10700A00ABDD020EE1261200E66AE66A29EF37F0E6 -:10701A000EDE96EF35F04E6EEDDE4E5C1200B85184 -:10702A00A0EF35F0D7DF050EB0DFB3DF04018451DE -:10703A001200DCDE0401845112008EDD020EE8DE4D -:10704A00010E12000DEC47F0E8DE9DEF35F04EC060 -:10705A00E6FF06EF37F09AEC3EF0A098636A626AA0 -:10706A000F01266B79EC3EF00F0138EC3EF0DF6A37 -:10707A00DF504E6E4F6A0C0E4E5C000E4F5810E2F7 -:10708A00DF50040DF3CFE9FFF4CFEAFF000EE92643 -:10709A00040EEA22EE6AEE6AEE6AEE6ADF2AE8D7A0 -:1070AA00658C0F01386B6598659C62A607D062965D -:1070BA000501D36BD86BD96BDA6BF7D70501010ED3 -:1070CA00EC6FED6FEE6BEF6BE06BDF6A030EDF5C6C -:1070DA0011E2EA6ADF349DEC3EF0EA22EE6AED6ADA -:1070EA00EA6ADF34A4EC3EF0EA22EE6AED6AF9ECD1 -:1070FA003DF0ECD70501080EC96F040ECA6F0F01E7 -:10710A00160E266F0401300E026F040E036F400E36 -:10711A00016F840E006F0501BD6BBC6BE552CBEFAE -:10712A003DF09AEC3EF082BE06D0656A0F01366BDE -:10713A000501BC6B6FD00501BC510CE1656A0F01FA -:10714A00366B38EC3EF065B602D06586FCD7050191 -:10715A00010EBC6FBC050AE165BA08D0626A0F016C -:10716A00366B368136890501020EBC6F6250040BFC -:10717A0006E00F013651040B02E0629447DB65B268 -:10718A0049D06250010B09E00F013651010B05E0AD -:10719A0062DF0501040EBC6F62906250100B06E0BC -:1071AA000F013651100B02E026DB629862AC10D058 -:1071BA000F0136AD05D03FEC3EF0730EB8EC3DF052 -:1071CA00629C0501EA5101E0EA07EA5101E1F4D8BB -:1071DA006250200B05E00F013651200B01E0FADA6C -:1071EA006250020B0CE00F013651020B08E03FEC33 -:1071FA003EF0E6687F0EE66EABEC3EF0636A040E84 -:10720A000501E76EBC19E8AE02D0E73402D0E750B8 -:10721A00BC5D02E2A1982FD00F0136A72BD0DF6AFE -:10722A00040EDF5C27E262A625D064CFE1F50501F2 -:10723A00E151780BE842E842E842E26F6296E1B532 -:10724A0004D0E251B2EC3EF003D0E251B7EC3EF08A -:10725A00EA22EF70E25102E1E6DA0AD0000EE66EA7 -:10726A00E66AE10EE66E050EE66E720EB8EC3DF0C9 -:10727A00DF2AD6D7A198E552CBEF3DF06BEC3EF072 -:10728A00FD0EDBA403D0E66A30EC3EF0FD0EDBA275 -:10729A0004D0010EE66E30EC3EF0FE0EDB504F6A73 -:1072AA00260F4E6E0F0E2AEC3EF0BCEC3DF0FD0EA2 -:1072BA00DBCFEFFF020EE15C02E2E16AE552E16E2A -:1072CA00CBEF3DF06BEC3EF0FD0EDB5003E0B3EC90 -:1072DA003DF002D0EAEC3DF016EC3EF0D9CFE9FFE2 -:1072EA00DACFEAFFEE50ED1003E1F36AF46A28D030 -:1072FA00BCEC3DF0C6EC3EF0FB0EDBCFEEFFFC0E25 -:10730A00DBCFEDFFBCEC3DF0EE52FA0EDBCFEFFF28 -:10731A00400EBCEC3EF0880ECBEC3EF0FD0EDB508E -:10732A0003E0B3EC3DF002D0EAEC3DF0EA22EF7460 -:10733A00DECF4EF0DDCF4FF04EC0F3FF4FC0F4FF6B -:10734A00020EE15C02E2E16AE552E16ECBEF3DF04A -:10735A006BEC3EF0FE0EDB5003E182EC3EF009D00E -:10736A00EFEC3DF059EC3EF0EFEC3DF0010F59EC3B -:10737A003EF0020EE15C02E2E16AE552E16ECBEF19 -:10738A003DF0C6EC3DF065A816D093EC3EF0400EF9 -:10739A00EE16EE6AEE6AEE6A93EC3EF0EE7CDEDB07 -:1073AA00EA22EF74400E4E6E93EC3EF04E50EF160A -:1073BA0093EC3EF0EF7CEAD30501EC5122E1010E99 -:1073CA00EC6FED511EE1010EED6F020ED05D07E18B -:1073DA00D3DBEE52EF6AD0DBC80EEF6E1200D00597 -:1073EA0010E1E36BDFDBEE52400EEF6EDBDB65ECA8 -:1073FA003EF0D8DB840EEF6E010EE36FABDB800E3E -:10740A00EF6E12000501EE6BEF6B020ED05D06E126 -:10741A00C0EC3EF0CCDB54EC3EF010D0D451040169 -:10742A00365D0501D5510401375904E236C4D4F555 -:10743A0037C4D5F561D8A0DBBADB9EDBC80EEF6E88 -:10744A0012006BEC3EF0000EDE6E040EDD6EC2DB47 -:10745A00040DF4CF4FF0D9CFE9FFDACFEAFFF350AA -:10746A00EE264F50ED2283DBEF9EFD0EDB5002E14C -:10747A00ACDB01D073DBEA22DECFEEFFDDCFEDFF1E -:10748A0076DBEF9C74DB040EE926000EEA22EF8C11 -:10749A00020EE15C02E2E16AE552E16E77D3659899 -:1074AA000501D3BF0DD0D8AF09D0020ED06FEF516E -:1074BA0001E1A8DF0501ED6BEC6B120082EF3EF0F3 -:1074CA00040130AF0DD00501010ED06FEE5101E17C -:1074DA0099DF0501ED6BEC6BEB510DE1E1EF39F052 -:1074EA000501020ED06F36DB840EEF6EED6BEC6B8E -:1074FA00EB5101E161DF12009AEC3EF0400EDF6EC3 -:10750A000501D45D000ED5590AE2D4C5DFFFCF517B -:10751A0002E1010E03D0CF0502E1020ECF6FDF5068 -:10752A004F6AE850D45DD46F4F50D559D56F24DBDC -:10753A00EE52DFCFEFFF380EDD6F040EDE6FD3B1F0 -:10754A000DD0DF5017E0D1C5F6FFD2C5F7FFD12B1A -:10755A00000ED2230800F55057DBF3D7DF500AE0BC -:10756A00D1C5E9FFD2C5EAFFD12B000ED223EF50D5 -:10757A004BDBF4D7E5520AD3A9DB14DBEE52EFCF8B -:10758A00DFFFDFCF4EF04E500501D95D000EDA590C -:10759A0002E2D9C5DFFFDF504E6E4F6AE850D95D6F -:1075AA00D96F4F50DA59DA6F010EDB6ADF50F36E8A -:1075BA00010EDBCFF4FFF350F45C16E2010EDB5050 -:1075CA00EA6A380FE96E040EEA22EF50E66ED6C573 -:1075DA00E9FFD7C5EAFFD62B000ED723E552E750BD -:1075EA00EF6E010EDB2AE2D7000ED880D955000EC5 -:1075FA00DA550DE2C0DBDBDAD5DAEF50400B03E1F6 -:10760A004EDBC80E02D04BDB880EEF6E12D0A2DA28 -:10761A00840EEF6EDB51DC1107E005D0DCC5FAFF02 -:10762A000501DB51F96EFADF0501D89FEB5101E143 -:10763A00C3DE020EE15C02E2E16AE552E16EA6D225 -:10764A0074DB0501D38F50DB300EE66EE66AE66A1C -:10765A00000EE66E040EB1DA658CDF6A030EDF5C9B -:10766A0002E2C2DAFBD7010EE66EE66AE66ABE0EEF -:10767A00E66E050EA2DA659C0501080EC96F040EB6 -:10768A00CA6F000EBF6F040EC06FBFC5C1F5C26FCF -:10769A0032C4BDF5BD5102E1100E0BD0010EE66EEB -:1076AA00E66ABD0EE66E050EE66E010E5CDA0501AF -:1076BA00200EBC6FE5526AD2800E0401305D4EE1A5 -:1076CA000501C00ED36F04013351030A25E0010AF4 -:1076DA0009E0030A41E10501840ED16F970ED26FCA -:1076EA00120E34D03251F66EF76AD890F636F73663 -:1076FA00D90EF626970EF7220900F5CFD1F50A0022 -:10770A00F5CFD2F5020E0501BCDAF5CFD4F5030E9A -:10771A00B8DAF5CFD5F51200040E325D1AE205018A -:10772A00D38104013251E96EEA6AD890E936EA3621 -:10773A00F60EE926020EEA22EECFD1F5EDCFD2F50A -:10774A00D1C5E9FFD2C5EAFFEF500501D46FD56B69 -:10775A0012000501D36B12000501D36B1200B6DAD1 -:10776A000401386B396B30511F0B020A11E0030A0E -:10777A000CE0010A1EE10501D38F040138810501DD -:10778A00DF0517E10401388314D00501D38F11D026 -:10779A000501D38F040134BF02D0B6DA01D0B9DAB9 -:1077AA0040DABFDA06E0E3D9EF50040B02E0010E3B -:1077BA00386F0501D3AF07D0380ED16F040ED26FE0 -:1077CA00D381020ED46F020EE15C02E2E16AE55255 -:1077DA00E16EDCD10F0126A10CD0E4D9EF5080086C -:1077EA0007E1CAD9EF50840803E1DCD98C0EEF6EA9 -:1077FA002691629A12000F01368562986582050108 -:10780A00010EE06F14DA750EB8EF3DF00501E06B7A -:10781A000EDA740EA8D965920F01369562A402D0C9 -:10782A006294FCD7120081DA05012D0EEA6FFD0E73 -:10783A00E11539E17E0EE115E8407F0B040DF3CF27 -:10784A00BFF5F4CFC0F5000EBF27040EC023BFC595 -:10785A00C1F5C0C5C2F5C175A5D9EF503C0BE842C8 -:10786A00E8420D081EE1DF6A080EDF5C16E29AD9CB -:10787A00020EE926000EC2D9EF50E66EDF50EA6A20 -:10788A00300FE96E040EEA22E552E750EF6E8AD90C -:10789A0078DAEE2AEF22DF2AE7D784D911DA0AD872 -:1078AA0007D023D805D0FD0EE115040801E12CD834 -:1078BA00E5526CD10501CF6BEB6BEE6BEF6BE36BB3 -:1078CA00D06B5AD9EF9EC97557D9EF9EC975E7D9BA -:1078DA00EF9ED36BD46BD56BD86BD96BDA6B51D85F -:1078EA00A6D9030E40D954EF3AF0020E0501D05D35 -:1078FA0002E1C1EF3AF0D06BE35104E12BD98C0ECF -:10790A00EF6E1200E36B120010DA36D9EF50400B1B -:10791A0001E0010EDF6E0501C975080EBC5D0BE1C1 -:10792A0032C438FF0F01385103E00501100E02D0AE -:10793A000501040EBC6FD00513E11ED938D9DCDD70 -:10794A00020E0501CF5D03E117D9840E07D0DF507F -:10795A0003E112D9C80E02D00FD9880EEF6E0FD0EC -:10796A00D8AF0CD0DB51DC1107E005D0DCC5FAFF3B -:10797A000501DB51F96EFADF0501D89FD06BE5529C -:10798A0005D104013051600BE842E842E842E8427E -:10799A00E842000901E0120031510C0A45E00B0AE5 -:1079AA003FE00C0A31E0010A22E00B0A1EE0020A5B -:1079BA001CE0030A18E0080A10E0010A0CE00F0AAA -:1079CA0008E0030A01E012000501D38F080EBC6F1C -:1079DA00120061EF3BF025EF3BF00501BD0ED16FC0 -:1079EA00050ED26F0CD0B4EF3BF01AEF3DF03451D4 -:1079FA000501D16FD26BBE0ED127050ED223D381DA -:107A0A00010ED46FD38F12000501D38F04013451B4 -:107A1A00EA6ABE0FE96E050EEA2232C4EFFF1200CF -:107A2A0006D9020EB8EF3DF01200ABD8050EE126DA -:107A3A000401320510E130511F0B00090CE1050168 -:107A4A00D38F030E0401315D04E10501010EDF6FDE -:107A5A0002D00501DF6B0401325101E074D03051CC -:107A6A001F0B020870E134510F0B00096CE034510E -:107A7A000F0B020868E3200E0501BC5D64E1D38F99 -:107A8A00040134BF04D040D9CCD8D7D803D041D9C7 -:107A9A00C8D8D7D8EA22020EEFCFDBFFF9D8010BFC -:107AAA0003E1000EDF9401D0DF8434BF02D02CD969 -:107ABA0001D02FD9EA22DECFEEFFDDCFEDFF030E94 -:107ACA00315D0CE12ED907E034BF02D0B6D801D01F -:107ADA00B8D8EA22EF82840E59D935D0DF7421D979 -:107AEA0006E045D8EF9E43D8EF8CF4D802D03FD8B1 -:107AFA00EF8CDF74CDD8020B02E113D90DE004013B -:107B0A0034BF02D09AD801D09CD8EA22EF923B0E19 -:107B1A004E6E2DD9DFD802D03B0E29D9040134513B -:107B2A000F0B4F6A260F4E6E0F0E4F22030E4EC0DA -:107B3A00DBFF040E4FC0DBFF030EDBCFE9FF040EB1 -:107B4A00DBCFEAFFEF90050EE15C02E2E16AE55263 -:107B5A00E16E1CD010D9B4D854EF3EF0FE0EEA6A9A -:107B6A00DB349DEF3EF0E66EE66AABEF3EF0DECF29 -:107B7A00E9FFDDCFEAFF1200C9C5E9FFCAC5EAFF7E -:107B8A001200D9CFE6FFE1CFD9FF1200E552E7CFC5 -:107B9A00D9FF120034510F0BE96EEA6AD890E93620 -:107BAA00EA361200BFC5E9FFC0C5EAFF1200E9D8EC -:107BBA00380EEE6E040EED6E1200E66E12EC4CF00C -:107BCA004E6E050EE15E4E501200FE0EEA6ADB347E -:107BDA00A4EF3EF0FD0EDB50E824506EFE0EDB50A3 -:107BEA00040DF35050241200DF50BCD8EA22EF6A89 -:107BFA00DF50B3D8EA22EF6ADF2A1200EA22EE50F7 -:107C0A00EFCFEAFFE96E1200E66EDDC5E9FFDEC5D9 -:107C1A00EAFFDD2B000EDE23E552E750EF6EDF06AA -:107C2A001200EA22EECFDEFFEDCFDDFF1200000EDA -:107C3A00E66EE66AE66EE66A120034510F0BB2EFA0 -:107C4A003EF034510F0BB7EF3EF04F224EC0DEFF2D -:107C5A004FC0DDFF1200FE0EDBCFE6FF26EC3AF046 -:107C6A00E552E5521200160E396F9F0E376F7B0EE2 -:107C7A00366F1200010EE66EE66A000EE66EE66ADE -:107C8A001200F76AD125F66ED251F72208001200C7 -:107C9A00D950020FE96EDACFEAFFEF501200C1C5E0 -:107CAA00E9FFC2C5EAFF1200040DF3CF4EF0F4CF8C -:107CBA004FF0000E4E26040EC8DF840ECBEF3EF0C6 -:107CCA0060D8300EEE6E040EED6E12005ADF020E10 -:107CDA00E1261200020EE66EE66ADECFE6FFDDCF8F -:107CEA00E6FF050EB8EF3DF0020EE66EE66AE66ABA -:107CFA00270EE66E0F0EE2EF3DF02CDF8C0EEF6ED4 -:107D0A003BDF840EEF6E120045DFC30EE926050E37 -:107D1A00120040DFC90EE926050E12001FDF03EF2D -:107D2A003EF025DFEF50800B12002BDFE6521200E7 -:107D3A00FE0BEA36E96EC90EE926050E1200FE0BA5 -:107D4A00EA36E96EC30EE926050E1200FEEC48F08B -:107D5A004E6E060EE15E4E501200EA6AE70FE96EB9 -:107D6A00050E1200EA6AE40FE96E050E1200FFDE44 -:107D7A00E850EF16120093DFEE52400EEF6E54EF0A -:107D8A003EF0020EE926000EEA221200F0DEE8506A -:107D9A00EF121200F6D9E6520001606B996BDF6AA6 -:107DAA00080EDF5C13E2E7D9610EE926000E12DA4B -:107DBA00C8D9EF6AE0D9790EE926000E0BDADBD9C9 -:107DCA00890EE926000E06DADF2AEAD70001C60E76 -:107DDA009C6F0E0E9D6F3F0E79140009796ECF0EBF -:107DEA0079140009796E79827B6A7A6A79900F012F -:107DFA0052815293F00EB4140909B46E0001080EB0 -:107E0A009A6F030E9B6FC60E9E6F3B0E9F6F250ED9 -:107E1A00A06F580EA16F040EA66F900EA26F010EEE -:107E2A00A36F900EA46F010EA56F000EE66EE66AB0 -:107E3A00010EE66E7DEC16F0E552E552E5528996A2 -:107E4A00E552A4D19ED9E652DF6A080EDF5C09E248 -:107E5A0078D9EFCF4EF0FE0EDB504E5C09E0DF2AF8 -:107E6A00F4D7DF6A080EDF5C07E26BD9EF5002E154 -:107E7A00DF2803D0DF2AF6D7000EE55287D181D951 -:107E8A00070EE126DE6ADD6A020EDB6A030EDB6A92 -:107E9A00040EDB6A050EDB6A060EDB6A010EE66E6D -:107EAA00D9CFE6FFDACFE6FF030E39D9020F7AD926 -:107EBA00010E35D9030F76D9030E31D9050F72D9C0 -:107ECA00030E80D9E66AE66AEFEC29F0E552E5523C -:107EDA000401845124E1020EDB50180802E2848D69 -:107EEA001ED0010EE66E050EDBCFE6FF060EDBCFD7 -:107EFA00E6FF030EDBCFE6FF040EDBCFE6FF020E42 -:107F0A00DBCFE6FFDECFE6FFDDCFE6FF0FD84E6E12 -:107F1A00080EE15E4E50E66A0DEC2AF0E552070EB5 -:107F2A00E15C02E2E16AE552E16E30D12AD9020E41 -:107F3A00E126FC0EDBCFE6FF85DFE552E76E010E98 -:107F4A00E7CFDBFFDB5002E1000EC3D00BD902E121 -:107F5A00C9D8BDD0010EDB044E6E00019A514E5CA9 -:107F6A0001E3B5D0FC0EDB50180801E2B0D0FC0EDC -:107F7A00DB50070802E10101C16BD6D810E1E66ABD -:107F8A00FC0EDBCFE6FF65EC35F0E552E552E66A1A -:107F9A00FC0EDBCFE6FF37EC35F0E552E552F70E83 -:107FAA00DB046AE113500F5CFDE2FC0EDB500408AF -:107FBA0001E1C9D809BC8BD0D0D8020EEF6EF80EF9 -:107FCA00DBCF4EF0F90EDBCF4FF0506A516A190E33 -:107FDA00456E466A476A486A4EC040F04FC041F053 -:107FEA0050C042F051C043F08AEC4BF03CC04EF016 -:107FFA003DC04FF03EC050F03FC051F0AED8EE52F7 -:10800A00EE523CC0EEFF4FC0EEFF50C0EEFF51C033 -:10801A00EEFF80D8290EE926000EEA22010EDBCFF8 -:10802A00EFFF78D8260EE926000EEA22FC0EDBCFF7 -:10803A00EFFF70D8270EE926000E7BD86BD82A0EE0 -:10804A00E926000EA7D866D8EE52D880000EEE5464 -:10805A00000EEE54190EEE54000EEE5406E25AD8F3 -:10806A00EE52EE6AEE6AEE6AEE6A102A1350105C5D -:10807A0001E3106A0F2A2BD005A029D0FC0EDB5091 -:10808A00040801E160D86ED802E12CD812D08FD84A -:10809A00890EE926000E7ED88AD8790EE926000EC6 -:1080AA0048D88DD8FC0EDBCFEFFF3ED802E19DD831 -:1080BA0040D8FC0EDB500001A65D09E10101010E6A -:1080CA00B96F0101B66B0101C15101E08A98010E35 -:1080DA00DB504E6E020EE15C02E2E16AE552E16EAD -:1080EA004E5054D06CD8EF500001EA6A9C25E96ED4 -:1080FA009D51EA22EF6A5BD8890EE926000E6AD8FA -:10810A0056D8790EE926000E65D859D8EF6A6DD887 -:10811A00EFEF40F010502F0D61D8EE52120052D8F6 -:10812A00010EE66ED950120060D8EA22EE50ED1028 -:10813A001200EA22FD0EDBCFEEFFFE0EDBCFEDFFD3 -:10814A001200DF5057D08986C2C4BEF4C3C4BFF43C -:10815A00C4C4C0F4C5C4C1F4120010502F0D0501E7 -:10816A00F3EF40F0D950FD0FE96EFF0EDA20EA6E08 -:10817A00EE50ED101200EA6ADF34FE0BEA36E96EC1 -:10818A001200D9CFE6FFE1CFD9FF1200E552E7CFBF -:10819A00D9FF1200EA22FA0EDBCFEEFFFB0EDBCF8D -:1081AA00EDFF1200E66E000EDA20E66E1200010EF6 -:1081BA00DB04E96EEA6AD890E936EA361200010E63 -:1081CA00DB0418D0E66E20EC33F0E552E552E552B6 -:1081DA00E5521200EA22EE6AED6A1200FA51F3241D -:1081EA00E96EFB51F420EA6E1200E1DF610EE92626 -:1081FA00000E1200EA6A710FE96E000EEA221200FE -:10820A003B9E0CD03B9E43AE09D0406C411E421EA1 -:10821A00431EE86A4122422243223B8E43C03DF07C -:10822A0042C03CF041C04DF040C04CF09E0E3E6E44 -:10823A003F6ACEEF42F03B6A0AEC43F022EC43F08D -:10824A003BB6B2EF42F03BA205D03BBAB2EF42F0E6 -:10825A00B9EF42F03BBAC5EF42F03BA005D03BB8BC -:10826A00B2EF42F0C5EF42F03BB8B9EF42F03F6AD5 -:10827A007F0E44243E6EE86A3F2249503E5EE86A19 -:10828A003F5A1A0E4A6E446A4C6A4D6A3C6A3D6A03 -:10829A004650415E4750425A4850435A000E445A8B -:1082AA0009E7465041264750422248504322000ED1 -:1082BA00442201D04C8AD89041364236433644365D -:1082CA00D8904C364D363C363D364A2EE1D743508F -:1082DA0042104110D8A44C8ACEEF42F03B6A0AEC15 -:1082EA0043F022EC43F03BB6B2EF42F03BA205D09A -:1082FA003BB8B2EF42F0B9EF42F03BAA05D03BB02F -:10830A00B2EF42F0B9EF42F03BB002D03BA802D044 -:10831A00C5EF42F03F6A495044243E6EE86A3F2264 -:10832A007E0E3E5EE86A3F5A4C6A4D6A3C6A3D6A76 -:10833A0048504302F4CF3DF0F3CF3CF0475043029C -:10834A00F3504D26F4503C22000E3D224850420282 -:10835A00F3504D26F4503C22000E3D224650430273 -:10836A00F3504C26F4504D22000E3C223D22475039 -:10837A004202F3504C26F4504D22000E3C223D227C -:10838A0048504102F3504C26F4504D22000E3C2234 -:10839A003D2246504202F4504C26000E4D223C2209 -:1083AA003D2247504102F4504C26000E4D223C22F9 -:1083BA003D22CEEF42F03A6AE86A48AEEDEF41F06C -:1083CA00456C461E471E481E4622472248223A1E30 -:1083DA0043AEF8EF41F0406C411E421E431E41225B -:1083EA00422243223A1EEEEC4BF043BE0FEF42F01C -:1083FA003AAE000C406C411E421E431EE86A4122FE -:10840A00422243223C6C3D1E3E1E3F1E3D223E221E -:10841A003F22000C3ABEFFEF41F03B88FF0C3B6A5B -:10842A000AEC43F03BB61EEF42F03BA20FD03BB43E -:10843A0007D07F0E436EFF0E426E416E406E25D00E -:10844A00800E436E01D0436A000EF6D73BB0FBD7CD -:10845A00406A9F0E4460EBD77E0E4464F4D79E0EAA -:10846A00445C07E0D8904332423241324032442AD7 -:10847A00F6D73BA40AD0406C411E421E431EE86A4E -:10848A0041224222432243AEDED712005DEC42F083 -:10849A003BB6000C3BB0000C3BB4000C010C5DEC8D -:1084AA0042F03BB6000C3BB0000C3BA4000C010CA4 -:1084BA003B6A0AEC43F022EC43F03BB612003BAEB7 -:1084CA0008D03BA004D03BA802D03B8012003B90CE -:1084DA0012004950445C0BE14850435C08E14750A4 -:1084EA00425C05E14650415C02E13B801200D8A0A3 -:1084FA0002D03B8E10D0445049C044F0496E4350DC -:10850A0048C043F0486E425047C042F0476E41505F -:10851A0046C041F0466E4950445C10E0FF0F09E046 -:10852A003B903BB403D03BAE3B8412003BAE3B9442 -:10853A001200492AD8904832473246324650415EA4 -:10854A004750425A4850435A43BEEAD7D890413618 -:10855A0042364336442EF8D7C8D77F0E446EFF0EF4 -:10856A00436E426E416E12007F0E3BBEFF0E446E9A -:10857A0002D07F0E446E800E436E426A416AF3D780 -:10858A003BAE04D0800E446E436AF7D7446A436A0E -:10859A00F4D73D503C104D104C10F8E03FBEF0D7D8 -:1085AA003DBE0CD03E503F10EBE0D8904C364D36D5 -:1085BA003C363D363E06D8A03F06F2D73F50D4E1BE -:1085CA003E28D2E04CAE11D07F0E4C1402E14DA0F1 -:1085DA000CD04D2AE86A3C223D2207E3D8803D327E -:1085EA003C324D323E2A3E28BFE03E50C9E04DC0E3 -:1085FA0041F03CC042F03D34436E3E30446E43325B -:10860A00449E3BBE448EB8EF42F04336443602E302 -:10861A003B843B7E06E13B80446A436A426A416A84 -:10862A001200442803E0D88043321200D890433223 -:10863A0002E13B8212003B8612004836493602E3C9 -:10864A003B8C3B7E06E13B88496A486A476A466A30 -:10865A001200492803E0D88048321200D8904832E4 -:10866A00EAE13B8A1200040130511F0B010801E0C4 -:10867A0012003051600BE842E842E842E842E84220 -:10868A00010801E01200345103E0340501E0120050 -:10869A003151220A31E0030A24E0010A15E0210AD5 -:1086AA000DE0010A01E012000501B40ED16F050EBA -:1086BA00D26F080ED46FD56BD38121D00501B40EC9 -:1086CA00D16F050ED26F1BD036C4D9F537C4DAF58F -:1086DA000501940ED66F050ED76FDB6BDC6BD88F56 -:1086EA0012000501940ED16F050ED26F070ED46FDA -:1086FA00D56BC10ED36F120032C4AFF50501D38F0B -:10870A0012000501946B4B0E956F966B976B986BE5 -:10871A00996B080E9A6FA36B1A0EE66E010EE66E3F -:10872A0043EC39F0E552E5521E0EE66E020EE66E95 -:10873A0043EC39F0E552E5521CD90501AD6BAE6B3D -:10874A00A46B120041D965D9050E421801E14350C4 -:10875A0002E0000E14D048D90501AB514E1804E1CD -:10876A00AC514F1801E105D93FD90501AD514E1859 -:10877A0005E1AE514F1802E1A46BA96B010E29D194 -:10878A0023D90501A36BAB51AC1102E1000E05D050 -:10879A0032D9EF50800B01E0010E00092DE1FC0EE9 -:1087AA00DBCF4EF028D9EE52EF50D8804E5405E276 -:1087BA0022D9EE52FC0EEFCFDBFFA36BFC0EDB508F -:1087CA00A35D19E2A351EA6A540FE96E050EEA2283 -:1087DA00EF50E66EA351E76EFD0EDBCFE9FFFE0E0A -:1087EA00DBCFEAFFE750E926000EEA22E552E7501E -:1087FA00EF6EA32BE3D7BDD80501A351EAD0E4D885 -:10880A000501A45107E1E9D8FC0EDBCFA9F5010E59 -:10881A00AA6FA46FDED004D917E1C0D8DF2AFF0EF1 -:10882A00DF5C0BE0010EDBCFE9FFDB2A020EDBCFB8 -:10883A00EAFF01E3DB2AEF50F1E1CFD8DFCFA9F558 -:10884A000501010EAA6FA46F030EE15C02E2E16A60 -:10885A00E552E16EBED0E4D818E1A0D8DF2AFF0EB7 -:10886A00DF5C0CE0010EDBCFF6FFDB2A020EDBCF6A -:10887A00F7FF01E3DB2A0800F550F0E1AED8DFCFBD -:10888A00A9F50501AA6B010EA46F030EE15C02E2D1 -:10889A00E16AE552E16E9DD097D8020EE126050104 -:1088AA00AD51AE1102E1000E08D0ADC5E9FFAEC56B -:1088BA00EAFFEF50800B01E0010E000953E1030EBD -:1088CA00A45D01E1A46BA4514DE0020EA45D09E18F -:1088DA00E66A000EE66EE66A59D80501030EA46F31 -:1088EA0041D0A4053FE1400E4E6E4F6AA9514E5C3D -:1088FA00000E4F5803E2400EDF6E02D0A9C5DFFF1B -:10890A00DF50A95DA96F140EA76F050EA86F010E9F -:10891A00DFCFDBFFAA510BE1010EDB5012E0A5C548 -:10892A00F6FFA6C5F7FF0800F55041D8F5D7010EA6 -:10893A00DB5007E0A5C5E9FFA6C5EAFFEF5037D827 -:10894A00F6D70501A95107E1400EDF5C02E1020EEC -:10895A0001D0030EA46FDFCFE6FF140EE66E050EFC -:10896A00E66E14D8020EE15C02E2E16AE552E16EBB -:10897A0030D0400EE66E540EE66E050EE66EE66ADE -:10898A003FD8F3CFABF5F4CFACF51200010EE66E8B -:10899A0037D8F3CFADF5F4CFAEF51200DF6A39D888 -:1089AA00DE5242C0DEFF43C0DDFFDD521200A7C522 -:1089BA00E9FFA8C5EAFFEF6EA72B000EA823A52B97 -:1089CA00A623010EDB061200D9CFE6FFE1CFD9FFBD -:1089DA001200E552E7CFD9FF1200FD0EDBCFA5F555 -:1089EA00FE0EDBCFA6F51200FB0EDBCF4EF0FC0E1F -:1089FA00DBCF4FF01200ABC5E9FFACC5EAFF1200AE -:108A0A00020EE66E67EC39F04E6E050EE15E4E50D0 -:108A1A001200FD0EDBCF42F0FE0EDBCF43F0120058 -:108A2A00D3DF030EE1260501A451120021302045AF -:108A3A0072723A203C61786973323E2073746570B1 -:108A4A00207261746520746F6F20736C6F772E00CB -:108A5A002130204572723A203C61786973323E2097 -:108A6A0073746570207261746520746F6F20686911 -:108A7A0067682E002130204572723A203C6178697D -:108A8A0073313E2073746570207261746520746F4F -:108A9A006F20736C6F772E002130204572723A2056 -:108AAA003C61786973313E20737465702072617419 -:108ABA006520746F6F20686967682E002053413201 -:108ACA003D00205341313D004475726174696F6EF7 -:108ADA003D002130204572723A205374657052610C -:108AEA00746520696E76616C69642076616C75655F -:108AFA002E00526174653D00434D20636F6D6D61B8 -:108B0A006E642064697361626C656420696E2074A6 -:108B1A00686973206275696C6400204469726563D0 -:108B2A0074696F6E3D002043656E7465725F593DCE -:108B3A00002043656E7465725F583D00204465737A -:108B4A00745F593D0020446573745F583D00467256 -:108B5A0065713D002053453D00204A323D002041C9 -:108B6A00323D002053323D002052323D00204A312E -:108B7A003D002041313D002053313D0052313D003E -:108B8A005374617475733D002135204572723A2021 -:108B9A004E65656420636F6D6D61206E6578742C17 -:108BAA0020666F756E643A202700506172616D38D5 -:108BBA003D00506172616D373D00506172616D36E2 -:108BCA003D00506172616D353D00506172616D34D6 -:108BDA003D00506172616D333D00506172616D32CA -:108BEA003D00506172616D313D000D0A000A0D00B1 -:108BFA004F4B000A002138204572723A20556E6B9D -:108C0A006E6F776E20636F6D6D616E642027002131 -:108C1A0038204572723A20436865636B73756D201C -:108C2A006E6F7420666F756E64206275742072654B -:108C3A007175697265642E002138204572723A2076 -:108C4A00436865636B73756D20696E636F727265D5 -:108C5A0063742C20657870656374656420004C69C0 -:108C6A006D697420737769746368207472696767C1 -:108C7A00657265642E20506F7274423D0021372060 -:108C8A004572723A20457874726120706172616D22 -:108C9A0065746572002136204572723A20496E76F3 -:108CAA00616C696420706172616D657465722076A9 -:108CBA00616C7565002134204572723A204D6973E2 -:108CCA0073696E6720706172616D6574657228736D -:108CDA0029002133204572723A2052582042756683 -:108CEA00666572206F76657272756E002132204554 -:108CFA0072723A20545820427566666572206F7601 -:108D0A00657272756E002131204572723A20436194 -:108D1A006E277420737465702074686174206661AC -:108D2A0073740021302000200800DDD8D0D80DE06F -:108D3A00CED8F3D8D950FC0FE96EFF0EDA20EA6ECE -:108D4A00EE2A000EEE22EE22F1D7F7D0CCD8D6D8F2 -:108D5A0008E0D4D8E2D8FD0EDB2AFE0EF8E3DB2ABF -:108D6A00F6D7EBD0EED80F0E4E6E4F6A506AD95036 -:108D7A00BFD8EE504E16EE504F16EE505016EE502B -:108D8A004EC0FEF14E50090802E3300E01D0370EF4 -:108D9A00FE25C8D873D8040ED890513250324F32BB -:108DAA004E32E806F9E1FB0E4EC0DBFFFC0E4FC067 -:108DBA00DBFFFD0E50C0DBFFFE0E51C0DBFF0101E1 -:108DCA00FD07FA0EDB5002E0FA0EDB06C0D8CBE153 -:108DDA00FA0EDB50C8E16CD0B4D85DD897D83CC045 -:108DEA00FEF1300E01013C249DD855D88FD8FB0ED8 -:108DFA0040C0DBFFFC0E41C0DBFFFD0E42C0DBFFC3 -:108E0A00FE0E43C0DBFF0101FD07A1D8E6E150D009 -:108E1A006AD8E1506DD8D890030EEB50000A08E6E4 -:108E2A00000EEE5C000EEE58000EEE58000EEE58E4 -:108E3A0015E22D0E72D82FD84568466847684868EB -:108E4A008AEC4BF0FB0E3CC0DBFFFC0E3DC0DBFFA7 -:108E5A00FD0E3EC0DBFFFE0E3FC0DBFFD95048D8F7 -:108E6A00EECFE6FFEECFE6FFEECFE6FFEFCFE6FF6F -:108E7A00B3DFE552E552E552E5525FD0FB0EDBCF98 -:108E8A004EF0FC0EDBCF4FF0FD0EDBCF50F0FE0EA6 -:108E9A00DBCF51F01200FB0EDBCF40F0FC0EDBCF34 -:108EAA0041F0FD0EDBCF42F0FE0EDBCF43F01200A5 -:108EBA00FD2BFD514F6AF10F4E6E010E4F224EC02F -:108ECA00E6FF4FC0E6FF42DFE552E55236D0FC0E20 -:108EDA00DBCFF6FFFD0EDBCFF7FFFE0EDBCFF8FF91 -:108EEA000800F5501200D9CFE6FFE1CFD9FF1200F2 -:108EFA00FB0FE96EFF0EDA20EA6E1200FD0EDBCFE1 -:108F0A00E9FFFE0EDBCFEAFFEF5012000A0E456EB4 -:108F1A00466A476A486AEEEF4BF0E66E83EC26F043 -:108F2A00E5521200E66EFD51EA6AF10FE96E010E92 -:108F3A00EA22E552E750EF6E1200E552E7CFD9FF79 -:108F4A001200D1DF0101FC6B0A0EFD6F120096DFE1 -:108F5A004E504F10501051101200D9CFE6FFDACF01 -:108F6A00E6FFE1CFD9FFE2CFDAFF060EE12402E302 -:108F7A00E168E652E16EDF6A010EDB6AD950FA0F48 -:108F8A00E96EFF0EDA20EA6E020EEECFDBFF030E69 -:108F9A00EECFDBFF040EEECFDBFF050EEECFDBFFDD -:108FAA00D950FA0FE96EFF0EDA20EA6E060EE76E66 -:108FBA00D890030EEB32020EEB32010EEB32EF3297 -:108FCA00E706F6E1D950FA0FE96EFF0EDA20EA6EEB -:108FDA00060EE76ED890EF36010EEB36020EEB3630 -:108FEA00030EEB36E706F6E1D950FA0FE96EFF0EEB -:108FFA00DA20EA6E400EEE26000EEE22000EEE2277 -:10900A00000EEE22FA0EDBCF52F0FB0EDBCF53F04E -:10901A00FC0EDBCF54F0FD0EDBCF55F0D950020F1A -:10902A00E96E000EDA20EA6EEE50525C4E6EEE5099 -:10903A0053584F6EEE505458506EEE505558516E6C -:10904A004E50DF6ED950F80FE96EFF0EDA20EA6E45 -:10905A00EE50ED1065E0040EDB50F86E030EDB50A7 -:10906A00F76E020EDB50F66EDF50DF0600091AE0DB -:10907A00F60EDBCFE9FFDB2AF70EDBCFEAFF01E3CF -:10908A00DB2AEF50F56E0D00F80EDB06DBCF4EF053 -:10909A00F90E01E2DB06DBCF4FF04E504F1001E133 -:1090AA0001D0E2D7040EDB50F86E030EDB50F76EE8 -:1090BA00020EDB50F66EA684F2AE04D0F29EDE52A9 -:1090CA00010EDD6E550EA76EAA0EA76EA682A69495 -:1090DA00010EDB5003E0F28E010EDB6A400EDF6EFA -:1090EA00400E4E6E4F6A506A516AD950020FE96EAD -:1090FA00000EDA20EA6EEE504E26EE504F22EE5067 -:10910A005022EE505122020E4EC0DBFF030E4FC01A -:10911A00DBFF040E50C0DBFF050E51C0DBFF92D708 -:10912A00060EE15C02E2E16AE552E16EE552E5CF44 -:10913A00DAFFE7CFD9FF1200F5EC23F005D896EC59 -:10914A0038F022EC25F0FBD7D9CFE6FFE1CFD9FFE3 -:10915A00020EE1260F0148694969600ED36E9B8CA5 -:10916A00580EDE6E020EDD6EDFCF4EF0DF06010E08 -:10917A00DBCF4FF001E2DB064E504F10F5E1948E43 -:10918A0067EC24F030EC38F0020EE15C02E2E16AAE -:10919A00E552E16EE552E7CFD9FF12001200120044 -:1091AA001200120038EF43F0120086EF43F0050177 -:1091BA00DF051EE10501E0051BE1F1DF659205010E -:1091CA00E06B0201100EFE6F0E0EFF6FFE07000E1F -:1091DA00FF5BFE51FF11FAE16584080EFE6F070E70 -:1091EA00FF6FFE07000EFF5BFE51FF11FAE1659467 -:1091FA001200D9CFE6FFE1CFD9FFFD0EDBCF42F057 -:10920A00FE0EDBCF43F0050E421801E1435036E073 -:10921A00E868421802E17F0E43182FE0030E421855 -:10922A0001E1435028E0020E421801E1435021E0D7 -:10923A00010E421801E143501AE0740E421801E18E -:10924A00435013E0750E421801E143500CE0730ECF -:10925A00421801E1435005E0720E42180FE14350F3 -:10926A000DD09EDF0BD09ADF09D099DF07D09DDFA2 -:10927A0005D09ADF03D096DF01D093DF010EE552C5 -:10928A00E7CFD9FF1200D9CFE6FFE1CFD9FF050119 -:10929A00FB0EDBCF00F5FC0EDBCF01F5FD0EDBCFBD -:1092AA0002F5FE0EDBCF03F5036725D0026723D054 -:1092BA00126B800E106F0B6F0B510B03F350005D96 -:1092CA00F4500159D8B008D012C50BF5104310510B -:1092DA000B1310BF09D0F0D70BC512F5104310516C -:1092EA000B1310BF01D0E8D712C5F3FFF46AE55299 -:1092FA00E7CFD9FF1200126B136B106B0B6B800E4A -:10930A00116F0A6F0BC505F50AC504F5BBEC49F0E8 -:10931A000C51005D0D5101590E5102590F5103595B -:10932A00D8B00ED0000F12C50BF513C50AF51133CC -:10933A00103311510A1310510B13D8B00FD0E2D7C2 -:10934A00000F0BC512F50AC513F51133103311516D -:10935A000A1310510B13D8B001D0D4D712C5F3FF9A -:10936A0013C5F4FFE552E7CFD9FF120005510503F3 -:10937A00F4CF0DF5F3CF0CF504510403F4CF0FF538 -:10938A00F3CF0EF505510403F3500D27F4500E23C5 -:10939A00E86A0F2304510503F3500D27F4500E23F6 -:1093AA00E86A0F231200C00EF36E00EE00F00E0EF4 -:1093BA0001D81200EA6002D0EE6AFCD7F350E960E5 -:1093CA001200EE6AFCD7D9CFE6FFDACFE6FFE1CF8B -:1093DA00D9FFE2CFDAFFE652E652E652E652E65209 -:1093EA00DF6AD950FA0FE96EFF0EDA20EA6E010E33 -:1093FA00EECFDBFF020EEECFDBFF030EEECFDBFF7D -:10940A00040EEECFDBFFF60EDBCF4EF0F70EDBCF0E -:10941A004FF0F80EDBCF50F0F90EDBCF51F048D801 -:10942A004E50EE5C4F50EE585050EE585150EE5898 -:10943A0033E2030EDB50F86E020EDB50F76E010EBC -:10944A00DB50F66EA684A688F2AE03D0F29E010E19 -:10945A00DF6E550EA76EAA0EA76EA682DF5001E038 -:10946A00F28E4E6A040E4F6E506A516A21D8EE503F -:10947A004E26EE504F22EE505022EE505122010E4F -:10948A004EC0DBFF020E4FC0DBFF030E50C0DBFFF6 -:10949A00040E51C0DBFFB7D7050EE15C02E2E16AB8 -:1094AA00E552E16EE552E5CFDAFFE7CFD9FF1200C8 -:1094BA00D950010FE96E000EDA20EA6E1200454219 -:1094CA00427631335F616E645F61626F7665204513 -:1094DA0042204669726D77617265205665727369BA -:1094EA006F6E20332E302E312E3100920F920F9252 -:1094FA000F930F930F930F930F930F930F930F9352 -:10950A000F940F940F940F940F940F940F940F9439 -:10951A000F950F950F950F950F950F950F890F8939 -:10952A000F890F8A0F8A0F8A0F8A0F8A0F8A0F8A6A -:10953A000F8A0F8B0F8B0F8B0F8B0F8B0F8B0F8B52 -:10954A000F8B0F8C0F8C0F8C0F8C0F8C0F8C0F00C6 -:10955A0001050001020304050607000102030405D0 -:10956A0006070203040506072A0EF66E100EF76EAA -:10957A00000EF86E05010900F550F56F0900F55067 -:10958A00F66F03E1F56701D03DD00900F550F06FA1 -:10959A000900F550F16F0900F550F26F0900090052 -:1095AA00F550E96E0900F550EA6E09000900090054 -:1095BA00F550F36F0900F550F46F09000900F6CF72 -:1095CA00F7F5F7CFF8F5F8CFF9F5F0C5F6FFF1C5DD -:1095DA00F7FFF2C5F8FF0501F35302E1F45307E080 -:1095EA000900F550EE6EF307F8E2F407F9D7F7C56C -:1095FA00F6FFF8C5F7FFF9C5F8FF0501F507000EF4 -:10960A00F65BBFD71200D9CFE6FFDACFE6FFE1CF8C -:10961A00D9FFE2CFDAFFE652E652E652E652D9CF56 -:10962A00E9FFDACFEAFFFA0EDBCFEEFFFB0EDBCF64 -:10963A00EEFFFC0EDBCFEEFFFD0EDBCFEEFF020EE0 -:10964A00DB50F86E010EDB50F76EDF50F66EF80E47 -:10965A00DBCF4EF0DB06F90EDBCF4FF001E2DB0683 -:10966A004E504F100DE00900F60EDBCFE9FFDB2A62 -:10967A00F70EDBCFEAFF01E3DB2AF5CFEFFFE7D7EF -:10968A00040EE15C02E2E16AE552E16EE552E5CFE1 -:10969A00DAFFE7CFD9FF1200D9CFE6FFDACFE6FF2C -:1096AA00E1CFD9FFE2CFDAFFAD6AAC6AFD0EDBB0DB -:1096BA00AD88DBA202D0AD8CAC8CDBB4AD8EDBA660 -:1096CA0002D0AC8801D0AC8ADBB8AD84DBBAAC86F8 -:1096DA00DBAC02D09D8A01D09D9ADBAE02D09D8878 -:1096EA0001D09D98FB0EDB50B06EFC0EDBCF4FF025 -:1096FA004FC04EF04F6A4E507F6EAD8AAC8EE55227 -:10970A00E5CFDAFFE7CFD9FF120040504502F3CF89 -:10971A003CF0F4CF3DF04602F3503D26000EF42013 -:10972A003E6E40504702F3503E26000EF4203F6E34 -:10973A0040504802F3503F2641504502F3503D261F -:10974A00F4503E22000E3F2241504602F3503E267C -:10975A00F4503F2241504702F3503F2642504502FF -:10976A00F3503E26F4503F2242504602F3503F2621 -:10977A0043504502F3503F26120012010002020034 -:10978A000040D80492FD820101020301090243004C -:10979A00020100C03209040000010202010005248E -:1097AA000010010424020205240600010524010018 -:1097BA00010705810308000209040100020A0000EA -:1097CA0000070502024000000705820240000096D9 -:0197DA0097F7 -:1097DC003F6A3E6A3D6A3C6A200EE76ED89040367E -:1097EC004136423643363C363D363E363F364550A2 -:1097FC003C5C46503D5847503E5848503F5809E352 -:10980C0045503C5E46503D5A47503E5A48503F5A90 -:10981C00402AE72EE4D71200FE0EE3CFE9FFFF0E3D -:10982C00E3CFEAFFE9CFF3FFEACFF4FFFB0EE350FF -:10983C0003E1FC0EE35009E0FB0EE30602E2FC0E32 -:10984C00E306FD0EE350EE6EF1D71200D9CFE6FF22 -:10985C00DACFE6FFE1CFD9FFE2CFDAFFADAC04D02F -:10986C00AD900501FCB3AD80FD0EDB50AE6EE55244 -:10987C00E5CFDAFFE7CFD9FF1200FF0EE124E96E46 -:10988C00FF0EE220EA6EEDCFF4FFEFCFF3FFF466AC -:10989C0007D0600EF36404D07B0EF36001D0F39A12 -:1098AC001200D9CFE6FFDACFE6FFE1CFD9FFE2CF46 -:1098BC00DAFFFD0EDB507E6EE552E5CFDAFFE7CF27 -:1098CC00D9FF12001EEE00F02EEE00F0F86A3B9C61 -:1098DC00B9EC4AF081EC4CF0A1EC48F0FBD712004B -:1098EC00F36AF46AF32A0F0B05E0D890F336F436DA -:1098FC00E804FBE1120012000403090418035300EE -:10990C00630068006D0061006C007A004800610023 -:10991C007500730038034500690042006F00740045 -:10992C0042006F006100720064002C0020002000D7 -:10993C00200020002000200020002000200020001B -:10994C002000200020002000200020002203200006 -:10995C0020002000200020002000200020002000FB -:10996C002000200020002000200020002000800289 -:10997C0084029C02D40200060000000001000000DA -:01998C0000DA +:1059BA008C808C908C808C908C808C908C80EBD797 +:1059CA0070D04E684F6ADF504E1803E1DE52DD5048 +:1059DA004F181AE1D950020FE96EDACFEAFFEE50FA +:1059EA00ED1002E1099A0FD0010E4E6E4F6A020EB7 +:1059FA00DB504E1803E1030EDB504F1802E1098A0F +:105A0A0002D00401848D4DD04E6A010E4F6EDF50D4 +:105A1A004E1803E1DE52DD504F181AE1D950020F39 +:105A2A00E96EDACFEAFFEE50ED1002E1099C0FD0E1 +:105A3A00010E4E6E4F6A020EDB504E1803E1030E42 +:105A4A00DB504F1802E1098C02D00401848D29D061 +:105A5A00010E4E6E010E4F6EDF504E1803E1DE52FC +:105A6A00DD504F181CE1D950020FE96EDACFEAFF78 +:105A7A00EE50ED1003E10990948010D0010E4E6EA5 +:105A8A004F6A020EDB504E1803E1030EDB504F182B +:105A9A0003E10980949002D00401848D02D00401AC +:105AAA00848DE66AB7DCE552040EE15C02E2E16A43 +:105ABA00E552E16EE552E7CFD9FF120039EC37F033 +:105ACA004CEC37F0010E87EC35F00401845176E195 +:105ADA00DF0406E1020EE66EC9C44EF04F6A18D022 +:105AEA00020EDFEC35F006E1200EE66EE66AE66AA3 +:105AFA00E66A3ED0030EDFEC35F002E1135020D007 +:105B0A00040EDFEC35F007E134EC24F0C3EC36F098 +:105B1A00ABEC35F04DD0050EDFEC35F00CE1C3EC03 +:105B2A0036F0ABEC35F08EEC35F0F29C0401CD6B1F +:105B3A00CE6BF28C41D0060EDFEC35F004E10F504B +:105B4A0008EC36F013D03C0EDFEC35F005E192C4D8 +:105B5A004EF093C44FF008D03D0EDFEC35F00BE168 +:105B6A0096C44EF097C44FF0F4EC37F0EDEC36F0F3 +:105B7A00D1EC37F01DD0C80EDFEC35F01CE1F29EF7 +:105B8A001EC0E6FF1FC0E6FF20C0E6FF21C0E6FFF9 +:105B9A00D1EC37F02C0EC7EC35F022C0E6FF23C05B +:105BAA00E6FF24C0E6FF25C0E6FFD1EC37F0F28E0F +:105BBA008EEC35F001D0848DD6EC35F0E552A7EFA6 +:105BCA0035F0A2EC35F0050EF4EC36F0010EB3EC2C +:105BDA0037F0B7EC37F0E66AD950030FE2EC36F04B +:105BEA00E66AD950040F0AEC38F010E1DF50926EE1 +:105BFA00010EDB50936E020EDB50946E030EDB50E7 +:105C0A00956E040EDB50966ED6EC35F0050EE15C0F +:105C1A0002E2E16AE552E16EA7EF35F0A2EC35F057 +:105C2A00FE0EDB50100805E2100EF36EFE0EF3CFE7 +:105C3A00DBFFFD0EDB502BE0FE0EDB505DEC4CF083 +:105C4A00F35004018E13F4508F13080EF36EFE0EF8 +:105C5A006EEC36F00DE2010EF36EFE0EDB5003E041 +:105C6A00CCEC35F0FDE1F350F31C0F0148173DD0A1 +:105C7A00FE0EDB500C0839E3CAEC36F004E0E846C5 +:105C8A00FE0B4E06FCE1E81C0F0149172ED0FE0E52 +:105C9A00DB505DEC4CF0F3CF4EF0F4CF4FF04E1EDC +:105CAA004F1E4E5004018E174F508F17080EF36E79 +:105CBA00FE0E6EEC36F00CE2010EF36EFE0EDB50B9 +:105CCA0003E0CCEC35F0FDE1F3500F0148130DD0A1 +:105CDA00FE0EDB500C0809E3CAEC36F004E0E84695 +:105CEA00FE0B4E06FCE10F014913A7EF35F00EEC4F +:105CFA0038F0B3EC37F0010F0AEC38F00AE1010E84 +:105D0A00DBCFE6FFDFCFE6FF89DFE552E552D6ECCF +:105D1A0035F0020EE15C02E2E16AE552E16EA7EFBC +:105D2A0035F00EEC38F087EC35F023EC36F027E14D +:105D3A00010EDB5002E1DF50896E01EC37F01FE102 +:105D4A00010EDB5002E1DF508A6E01EC37F017E1F9 +:105D5A00010EDB5002E1DF508B6E01EC37F00FE1F0 +:105D6A00010EDB5002E1DF508C6E01EC37F007E1E7 +:105D7A00010EDB5002E1DF508D6ED6EC35F0020EDB +:105D8A00E15C02E2E16AE552E16EA7EF35F0010E4D +:105D9A00E66EE66E12EC37F0805006EC37F0815072 +:105DAA0006EC37F0825006EC37F0835006EC37F0F9 +:105DBA008450F9EC37F08EEF35F05FEC36F0980E40 +:105DCA004E6E940E0AEF37F0DEEC37F0DF6A010E02 +:105DDA00F36EDB6E020EDB6AE66A010EE66E12EC09 +:105DEA0037F09DBCFED7DF6ADFCF4EF0100EE76EAC +:105DFA004E18E8AE02D0E73402D0E7504E5C3FE2DC +:105E0A00010EDB5004018E1500014E6E020EDB50AE +:105E1A0004018F1500014F6E4E504F1023E02C0ED7 +:105E2A00C7EC35F0DFCF4EF075EC37F04EAE03D04D +:105E3A004F68506851684EC0E6FF8BEC35F03A0E59 +:105E4A00C7EC35F0DFCFE9FFEA6AE9BEEA6822EC7F +:105E5A0037F0EA22EECF4EF0EFCF4FF0F4EC37F006 +:105E6A008BEC35F0AEEC36F0D8904E364F36010E4C +:105E7A004EC0DBFF020E4FC0DBFFDF2AB5D7020E92 +:105E8A00A4EC37F0030EE15C02E2E16AE552E16E4E +:105E9A00A7EF35F0DAEC37F0030EB3EC37F0020F68 +:105EAA000AEC38F00AE18CEC37F005E269EC36F0DE +:105EBA00020EDBCFEFFFD6EC35F0030EE15C02E217 +:105ECA00E16AE552E16EA7EF35F0DEEC37F04CEC13 +:105EDA0037F0030E87EC35F0040184510DE18CECA8 +:105EEA0037F005E269EC36F0020EEFCFDBFF020E67 +:105EFA0084EC36F0FCEC36F0030EE15C02E2E16A77 +:105F0A00E552E16EA7EF35F003EC38F001E090D0EE +:105F1A00020EDB50010801E287D0010EDB500708B0 +:105F2A0001E282D0410EDFEC35F016E1020EDB50C1 +:105F3A000AE1DBEC35F003E0CCEC35F0FDE1F3509F +:105F4A00F31C921673D0DBEC35F003E0CCEC35F0A1 +:105F5A00FDE1F35092126AD0420EDFEC35F016E101 +:105F6A00020EDB500AE1DBEC35F003E0CCEC35F055 +:105F7A00FDE1F350F31C931659D0DBEC35F003E046 +:105F8A00CCEC35F0FDE1F350931250D0430EDFEC28 +:105F9A0035F016E1020EDB500AE1DBEC35F003E0E6 +:105FAA00CCEC35F0FDE1F350F31C94163FD0DBEC5A +:105FBA0035F003E0CCEC35F0FDE1F350941236D025 +:105FCA00440EDFEC35F016E1020EDB500AE1DBECA1 +:105FDA0035F003E0CCEC35F0FDE1F350F31C9516F7 +:105FEA0025D0DBEC35F003E0CCEC35F0FDE1F350E5 +:105FFA0095121CD0450EDFEC35F016E1020EDB508F +:10600A000AE1DBEC35F003E0CCEC35F0FDE1F350CE +:10601A00F31C96160BD0DBEC35F003E0CCEC35F034 +:10602A00FDE1F350961202D0848D02D0D6EC35F001 +:10603A00030EE15C02E2E16AE552E16EA7EF35F098 +:10604A00DEEC37F0020EDB6A4CEC37F0050EB3ECEF +:10605A0037F0010F0AEC38F060E1010EDB50070857 +:10606A0050E3410EDFEC35F00AE1DBEC35F003E0FA +:10607A00CCEC35F0FDE1F350801439E029D0420E22 +:10608A00DFEC35F00AE1DBEC35F003E0CCEC35F07F +:10609A00FDE1F35081141CE12AD0430EDFEC35F008 +:1060AA000AE1DBEC35F003E0CCEC35F0FDE1F3502E +:1060BA0082140EE11CD0440EDFEC35F00BE1DBEC70 +:1060CA0035F003E0CCEC35F0FDE1F35083140FE03A +:1060DA00010E10D0450EDFEC35F013E1DBEC35F0A4 +:1060EA0003E0CCEC35F0FDE1F350841402E1000E3C +:1060FA0001D0010EE76E020EE7CFDBFFDB5008E0AE +:10610A0002D0848D0AD0010EF36E020EF3CFDBFFAC +:10611A00020E84EC36F0FCEC36F0030EE15C02E28F +:10612A00E16AE552E16EA7EF35F003EC38F001E0E1 +:10613A0090D0020EDB50010801E287D0010EDB503D +:10614A00070801E282D0410EDFEC35F016E1020EBB +:10615A00DB500AE1DBEC35F003E0CCEC35F0FDE195 +:10616A00F350F31C891673D0DBEC35F003E0CCEC6A +:10617A0035F0FDE1F35089126AD0420EDFEC35F0BA +:10618A0016E1020EDB500AE1DBEC35F003E0CCEC61 +:10619A0035F0FDE1F350F31C8A1659D0DBEC35F0EB +:1061AA0003E0CCEC35F0FDE1F3508A1250D0430EF7 +:1061BA00DFEC35F016E1020EDB500AE1DBEC35F0DC +:1061CA0003E0CCEC35F0FDE1F350F31C8B163FD025 +:1061DA00DBEC35F003E0CCEC35F0FDE1F3508B124B +:1061EA0036D0440EDFEC35F016E1020EDB500AE140 +:1061FA00DBEC35F003E0CCEC35F0FDE1F350F31CB9 +:10620A008C1625D0DBEC35F003E0CCEC35F0FDE163 +:10621A00F3508C121CD0450EDFEC35F016E1020E5D +:10622A00DB500AE1DBEC35F003E0CCEC35F0FDE1C4 +:10623A00F350F31C8D160BD0DBEC35F003E0CCECFD +:10624A0035F0FDE1F3508D1202D0848D02D0D6ECE8 +:10625A0035F0030EE15C02E2E16AE552E16EA7EF76 +:10626A0035F0D9CFE6FFE1CFD9FFE652DF6AFF0E5C +:10627A00DF5C0AE2E868E85005E0E80600D000D0F2 +:10628A0000D0F9D7DF2AF3D7E552E552E7CFD9FF95 +:10629A001200F29EF29C6592656AE3DF0FEF00F04E +:1062AA001200F29EF29C6592656ADBDFFF00120023 +:1062BA005FEC36F08050080B01E0010EF9EC37F084 +:1062CA000101C3B103D0020EA4EC37F0D6EF35F0CA +:1062DA00A2EC35F0060EF4EC36F0070E87EC35F03A +:1062EA00010EE66ED950040FE2EC36F0E76E050EA9 +:1062FA00E7CFDBFF0401845116E1DFCFC2F4010EC0 +:10630A00DBCFC3F4020EDBCFC4F4030EDBCFC5F43C +:10631A00050EDB5006E1040EDB5002E0898601D04F +:10632A008996D6EC35F0060EE15C02E2E16AE552A6 +:10633A00E16EA7EF35F0A2EC35F0100EE126F0EC95 +:10634A0037F0E7DBE66AD950010FAFEC35F0E66AC1 +:10635A0063D9F9EC36F0E66AA9EC37F0010EB3EC32 +:10636A0037F0040FAFEC35F0020EB3EC37F0020F42 +:10637A00F1DB030EB3EC37F00A0FECDB060EB3ECDD +:10638A0037F0060FE7DB070EB3EC37F00E0FE2DB50 +:10639A00040EB3EC37F00F0FDDDB050EB3DBBC0EDA +:1063AA004E6E8B0EACDB010E84EC36F04EAE03D093 +:1063BA004F6850685168C4EC37F0B40E4E6E8B0EBD +:1063CA009EDBDFCF4EF075EC37F0FCEC36F0AC0E0E +:1063DA004E6E8B0E94DB040EDBCF4EF0050EDBCF38 +:1063EA004FF0506A516A4FAE02D050685168C4ECFF +:1063FA0037F0A40E4E6E8B0E82DB020EDBCF4EF010 +:10640A00030EDBCF4FF0506A516AFCEC36F09C0E5B +:10641A004E6E8B0E74DBD9500A0FA8DB13EC38F0E2 +:10642A0051EC37F0D950060FA1DBD1EC37F071DB14 +:10643A008C0E4E6E8B0E63DB0E0E6EEC37F0840EF6 +:10644A004E6E8B0E5CDB0F0E6EEC37F051EC37F0B4 +:10645A00080EE66E17EC37F051EC37F0E66A17ECE7 +:10646A0037F09FDB100EE15C02E2E16AE552E16E71 +:10647A0069D339EC37F0DF6A110EDF5C04E2B3DB73 +:10648A00EF6ADF2AF9D792EC37F0DF6A100EDF5C89 +:10649A0021E2A9DBEF5080081DE3A5DBEFCF4EF028 +:1064AA00200E4E5C17E39FDBEF50E66E180E0201DA +:1064BA004F6AFA254E6EFB5178EC36F094DBEF50BA +:1064CA00E66E020E4F6AFC254E6EFD5178EC36F0F0 +:1064DA00DF2ADCD7DF50E824180FFAC2E9FFFBC233 +:1064EA00EAFFEF6EDF50E824020FFCC2E9FFFDC2AB +:1064FA00EAFFEF6EE55226D3ECEC37F0DF6AF0ECF8 +:10650A0037F0010EDB6A110EF36E010EE2DB0BE2CD +:10651A00010EDB50EA6AD50FE96E040EEA22EF6A31 +:10652A00010EDB2AF0D7100EE66EAEEC37F038D843 +:10653A00E2EC37F0DF6EE668FB0EE66EE66A97EC91 +:10654A0037F0D0EC49F0F0DB49DB9AEC47F0ECDBB2 +:10655A0028DB020EE15C02E2E16AE552E16EF2D268 +:10656A0039EC37F0A7DBDF6A110EDF5C04E23BDBB4 +:10657A00EF6ADF2AF9D792EC37F0800E0401D55D75 +:10658A0009E2D551200806E2AEEC37F093EC46F06A +:10659A00E552E5520101C3A1BCDA03DBE552D2D2CE +:1065AA0039EC37F0DF6A51DBEF6AE6EC37F002E1EB +:1065BA00848906D0E6EC36F02C0804E0C9EC37F002 +:1065CA00000E28D0CCDA04E1010E4F1801E1B86BB5 +:1065DA000D0EFCEC37F009E02C0E4F6EF2DB4F5C2F +:1065EA0004E0FC0EDB50DF5C02E3DF5013D0E9DB92 +:1065FA00E66E2BDBE552E750EF6EB1DA04E1010EED +:10660A004F1801E1B86BDF2AFD0EDB2AFE0EE0E32C +:10661A00DB2ADED7E55296D290DA090EE126080E79 +:10662A00DB6AE6EC37F005E1FB0EDB501AE1848900 +:10663A0018D0C7DB2C0807E0FB0EDB5002E1C9ECDF +:10664A0037F0020E1AD18BDA04E1010E4F1801E17C +:10665A00B86B0D0EFCEC37F006E1FB0EDB5001E1E6 +:10666A008489030E0AD12D0EFCEC37F020E1040ECA +:10667A004ADB1DE0050E506EFE0EDB50505C17E043 +:10668A00FE0EDB0401E1C0D0030E28DB01E1BCD021 +:10669A00070E39DB01E1B8D0010EF36E080EF3CF15 +:1066AA00DBFF5DDA04E1010E4F1801E1B86B040E5D +:1066BA0015DB09E0050E27DB06E00A0EEADAE6D862 +:1066CA00E2EC37F031D000EC38F0EFCF4EF0000EAC +:1066DA004EC0DFFF45DB050E01DB1FE1000EDFCFF9 +:1066EA00E6FF010EDBCFE6FF2AEC4CF0E552E5525D +:1066FA00F3CF4EF0F4CF4FF0506A516A4FAE02D04A +:10670A00506851684EC0DFFF010E4FC0DBFF020E1A +:10671A0050C0DBFF030E51C0DBFF040120DA04E1A5 +:10672A00010E4F1801E1B86B080EDB5040E0FE0E77 +:10673A00DB5006E14DDA800E6ADA000EEE5412E3FF +:10674A00020ECCDA06E144DA000EEE54800E5FDA6D +:10675A0009E3060ED8DA08E13BDA000E58DA800EB1 +:10676A00EE5402E2040150D077DA080EDB5053E00F +:10677A00040EDBCF40F0050EDBCF41F0060EDBCF77 +:10678A0042F0070EDBCF43F0456846684768486821 +:10679A0071EC4BF0040E3CC0DBFF050E3DC0DBFF85 +:1067AA00060E3EC0DBFF070E3FC0DBFF34D0FE0EF5 +:1067BA00DB5006E10DDA7F0EEE54000E28DA23E3F1 +:1067CA00FE0EDB0404E171DB000E21DA1CE3020E8B +:1067DA0085DA04E16ADB7F0E1ADA15E3030E93DA2F +:1067EA0004E163DBFF0E13DA0EE3060E506EFE0EB3 +:1067FA00DB50505C0CE159DBFF0EEE54FF0EEE54F9 +:10680A007F0EEE5404E20401848D010E36D0070E89 +:10681A0065DA01E021DAFE0EDB50070A21E0010AFF +:10682A0017E0050A11E0010A0FE0030A08E0050A69 +:10683A0006E0010A04E0050A02E0040E1ED022DA8C +:10684A00040EDBCFEFFF18D074DBDBCFEDFF14D0E3 +:10685A0070DBDBCFEEFF060EDBCFEEFF070E0AD0B2 +:10686A0011DADFCFEEFF010EDBCFEEFF020EDBCF38 +:10687A00EEFF030EDBCFEEFF000E4E6E090EE15C5B +:10688A0002E2E16AE552E16E4E505CD1A0DBDDD94D +:10689A00EE6AEE6AEE6AEE6A010EDB6AFC0EDB5005 +:1068AA00F36E010E16DA4EE20401A5DBEFCFDFFF2D +:1068BA00300EDF5C42E3DF5039083FE3C6D9EECF42 +:1068CA004EF0EECF4FF0EECF50F0EFCF51F00A0E70 +:1068DA00456E466A476A486A4EC040F04FC041F06A +:1068EA0050C042F051C043F071EC4BF03CC04EF046 +:1068FA003DC04FF03EC050F03FC051F0300EDF5C5B +:10690A00526E536A546A556AE8504E2653504F22C3 +:10691A00545050225550512298D94EC0EEFF4FC0C4 +:10692A00EEFF50C0EEFF51C0EEFF040118D907E197 +:10693A00010E4F1804E1B86B02D0000E04D0010E0C +:10694A00DB2AACD7010E4E6E020EE15C02E2E16A6E +:10695A00E552E16E4E50F6D05A0E4E6E8B0ECFD8DF +:10696A007EC44EF0BDDAFCEF36F00501BC5108E0FA +:10697A00010E4E6E6550020B01E0010E4E5C17E1EE +:10698A00CDD90BE1ED51EE1111E18C86A00EED6F20 +:10699A000F0EEE6F010EEF6F1200ED51EE1152E184 +:1069AA008C96A00EED6F0F0EEE6FEF6B1200BC050A +:1069BA0009E0020EBC5D06E0040EBC5D03E0100EA9 +:1069CA00BC5D17E1ABD90BE1ED51EE1111E18C86FB +:1069DA00200EED6F4E0EEE6F010EEF6F1200ED51AD +:1069EA00EE1130E18C96200EED6F4E0EEE6FEF6BCE +:1069FA001200200EBC5D26E191D907E1ED51EE119E +:106A0A0021E18C86D5D9010E15D0EF0507E1ED51AC +:106A1A00EE1118E18C96CCD9020E0CD0020EEF5D65 +:106A2A000BE1ED51EE110EE18C86A00EED6F860E94 +:106A3A00EE6F030EEF6F1200ED51EE1103E18C962B +:106A4A00B7D9EF6B120079D8A7D9E8AE02D04E3485 +:106A5A0003D0E750D8804E5423E3FD0EDB5010E0FC +:106A6A000CD9F6BEF768AAD804E0E846FE0B4F0632 +:106A7A00FCE14E6E02D9F6BEF768F9D9EF1210D0D2 +:106A8A00FCD8F6BEF7689AD804E0E846FE0B4F0633 +:106A9A00FCE1E81C4E6EF1D8F6BEF768E8D9EF16AD +:106AAA0051D04BD879D9E8AE02D04E3403D0E75052 +:106ABA00D8804E5423E3FD0EDB5011E1DED8F6BE3A +:106ACA00F7687CD804E0E846FE0B4F06FCE1E81CB8 +:106ADA004E6ED3D8F6BEF768D2D9EF160FD0CDD8FE +:106AEA00F6BEF7686BD804E0E846FE0B4F06FCE1F9 +:106AFA004E6EC3D8F6BEF768C2D9EF1223D0A4D916 +:106B0A00E2EF37F0E66E88DDF9EF36F061D9D1EFC2 +:106B1A0037F0010EA4EF37F0EA6A000FE96E030EB0 +:106B2A00EA2212007AD9E66AA9EF37F09951E96E9A +:106B3A00EA6AD890E936EA361200D9CFE6FFE1CF01 +:106B4A00D9FF1200E552E7CFD9FF120048DA40D93F +:106B5A0085EF37F0E66E000EDA20E66E1200B82BEB +:106B6A00B8514E6E4F6A000E4E181200E96EDACF17 +:106B7A00EAFFEECFE6FFEECFE6FFEECFE6FFEFCF7E +:106B8A00E6FF1200E66E83EC26F0E5521200D8907A +:106B9A00F336E8061200EA22EECF56F0EFCF57F0AE +:106BAA001200E66A0FEC2AF0E5521200010EF36EAB +:106BBA00DB5012004E6EDF504E5C1200270EF62696 +:106BCA00950EF7220800F5504F6E010E4F52120033 +:106BDA00D9CFE9FFDACFEAFFD8801200BAD9100E6E +:106BEA00E66E97EF37F0DF50EA6AD50FE96E040ECA +:106BFA00EA221200F7220900F5CFE9FF0800F5CFD3 +:106C0A00EAFF4E5012004E6E6BD9E66E1200EE5439 +:106C1A00000EEE54000EEE541200DF6EDFCFE6FFD8 +:106C2A00B6514F6A000F4E6E020E4F224EC0E6FF5B +:106C3A004FC0E6FFECEC43F0E2EF37F0E76E010EEF +:106C4A00E7CFDBFF040184511200FD0EDBCFE9FF21 +:106C5A00FE0EDBCFEAFF1200D9CFE9FFDACFEAFF57 +:106C6A00040EEECFDBFF050EEECFDBFF060EEECFF6 +:106C7A00DBFF070EEECFDBFF1200FE0EDBCFF6FFC7 +:106C8A00F76A1200FC0EDBCFE9FFFD0EDBCFEAFF4D +:106C9A001200E66EA9EF37F09951EA6A710FE96EB0 +:106CAA00000EEA22EF500001EA6A9C25E96E9D5126 +:106CBA00EA221200010EE66EE66A12EF37F0DECF24 +:106CCA004EF0DDCF4FF01200DECFE9FFDDCFEAFF55 +:106CDA001200DBCFF4FFF350F45C12004E6EFE0E8E +:106CEA00DB504E5C12004F22DF50E8244E24E96E3E +:106CFA00000E4F20EA6EE552E750EF6E1200DBCF2E +:106D0A004EF075EF37F04F6EFE0EDB504F5C1200FF +:106D1A00C7C4E6FF83EC26F0E55212000401ED0732 +:106D2A00000EEE5BEF5112004E6E080EE15E4E5001 +:106D3A001200030EDB50EA6A400FE96E020EEA22E5 +:106D4A001200EF50E66EE66A2AEC4CF0E552E55284 +:106D5A001200010EDBCF4EF0020EDBCF4FF0120015 +:106D6A00010EDB6A020EDB6A030EDB6A1200040103 +:106D7A00B76BB86B0401010EEB6F1200030EE66EDF +:106D8A00CDC44EF0CEC44FF01200FE0EDB50F80F09 +:106D9A004E6E010E4E521200FE0EDBCF4EF0190E51 +:106DAA00E76E4E181200EA22EF6ADF2A010E12007D +:106DBA00100EED6F270EEE6F1200CCDE010E87EF7C +:106DCA0035F019D9EF501200E6DEEAD8EA221200AD +:106DDA004FC0E6FF50C0E6FF51C0E6FF1200E126B1 +:106DEA00E66AE66A97EF35F0E8D8E55212004EC037 +:106DFA00E6FF8CDE8EEF35F0010E4BDF83DE23EFEC +:106E0A0036F0F2D82C0EC7EF35F079DE8EEF35F07A +:106E1A008DDE890EE926000E1200F1EC29F0E5520A +:106E2A00E5521200D950060FA1DE9FEC46F04E6ED5 +:106E3A00050EE15E4E508EEF35F0D890E936EA360F +:106E4A00000EE926010E12004F6E506A4EC0E6FF90 +:106E5A00E66E50C0E6FF82EF46F094DE270E92DE21 +:106E6A0058DE0401848B120068DEE6521200D890C4 +:106E7A00F636F736F50EF626940EFFEF35F0D89073 +:106E8A00F636F736C30EF626940EFFEF35F0010EEE +:106E9A00E66EE66E97EF35F0940E4E6E8B0E84EF2B +:106EAA0035F00401B75191EF35F092DEFF0EEE5442 +:106EBA00120076D8D0EF35F0CF0E4E6E8B0E1FDE55 +:106ECA008DEF36F03A0E5EDE020EE66EC7C44EF065 +:106EDA001200DBCFE6FF83EC26F0E5528EEF35F0A9 +:106EEA004F6A506A516A1200EADE400E4E5C000E8A +:106EFA004F581200040EDB500FDEEF502C08120020 +:106F0A009FEC46F0526E050EE15E52501200D7DE3B +:106F1A00000E4E5C100E4F58120060DEEFEC4AF085 +:106F2A0099EF36F0E66AE66AF80EE66EE66AE66A0F +:106F3A001200A8DE040EDBCFEEFF050E1200E66E8D +:106F4A000FEC2AF0E5521200D9CFE6FFDACFE6FFBE +:106F5A001200D50EE66E040EE66E1200D3DDE66A66 +:106F6A00D9501200010F29DFE66AD950020FE2EF69 +:106F7A0036F0DCDD790EE926000EE9EF36F04EC078 +:106F8A00E6FF26DF13EF38F0620E4E6E8B0EB7DD8A +:106F9A00040117DF32EF37F0D9EC46F0F9EF36F09B +:106FAA00C5DD610EE926000E1200C7DD030EF4EFFF +:106FBA0036F0C3DD030EE1261200E552E552E55232 +:106FCA0012000D0E4E6E0401FCDE4E5C1200B5DDA1 +:106FDA00020EE1261200E66AE66A12EF37F0506AFC +:106FEA00516A4EC0E6FF12000EDE8BEF35F04E6E90 +:106FFA00E8DE4E5C1200B85191EF35F0D6DF050E8F +:10700A00ADDFB0DF040184511200D7DE04018451E0 +:10701A00120093DD020EE3DE010E1200F5EC46F0DB +:10702A00E3DE8EEF35F082EC3EF0A098636A626A86 +:10703A000F01266B61EC3EF00F0120EC3EF0DF6A97 +:10704A00DF504E6E4F6A0C0E4E5C000E4F5810E227 +:10705A00DF50040DF3CFE9FFF4CFEAFF000EE92673 +:10706A00040EEA22EE6AEE6AEE6AEE6ADF2AE8D7D0 +:10707A00658C0F01386B6598659C62A607D062968D +:10708A000501D36BD86BD96BDA6BF7D70501010E03 +:10709A00EC6FED6FEE6BEF6BE06BDF6A030EDF5C9C +:1070AA0011E2EA6ADF3485EC3EF0EA22EE6AED6A22 +:1070BA00EA6ADF348CEC3EF0EA22EE6AED6AE1EC31 +:1070CA003DF0ECD70501080EC96F040ECA6F0F0117 +:1070DA00160E266F0401300E026F040E036F400E67 +:1070EA00016F840E006F0501BD6BBC6BE552B3EFF7 +:1070FA003DF082EC3EF082BE06D0656A0F01366B27 +:10710A000501BC6B6FD00501BC510CE1656A0F012A +:10711A00366B20EC3EF065B602D06586FCD70501D9 +:10712A00010EBC6FBC050AE165BA08D0626A0F019C +:10713A00366B368136890501020EBC6F6250040B2C +:10714A0006E00F013651040B02E0629447DB65B298 +:10715A0049D06250010B09E00F013651010B05E0DD +:10716A0062DF0501040EBC6F62906250100B06E0EC +:10717A000F013651100B02E026DB629862AC10D088 +:10718A000F0136AD05D027EC3EF0730EA0EC3DF0B2 +:10719A00629C0501EA5101E0EA07EA5101E1F4D8EB +:1071AA006250200B05E00F013651200B01E0FADA9C +:1071BA006250020B0CE00F013651020B08E027EC7B +:1071CA003EF0E6687F0EE66E93EC3EF0636A040ECC +:1071DA000501E76EBC19E8AE02D0E73402D0E750E9 +:1071EA00BC5D02E2A1982FD00F0136A72BD0DF6A2F +:1071FA00040EDF5C27E262A625D064CFE1F5050123 +:10720A00E151780BE842E842E842E26F6296E1B562 +:10721A0004D0E2519AEC3EF003D0E2519FEC3EF0EA +:10722A00EA22EF70E25102E1E6DA0AD0000EE66ED7 +:10723A00E66AE10EE66E050EE66E720EA0EC3DF011 +:10724A00DF2AD6D7A198E552B3EF3DF053EC3EF0D2 +:10725A00FD0EDBA403D0E66A18EC3EF0FD0EDBA2BD +:10726A0004D0010EE66E18EC3EF0FE0EDB504F6ABB +:10727A00260F4E6E0F0E12EC3EF0A4EC3DF0FD0E02 +:10728A00DBCFEFFF020EE15C02E2E16AE552E16E5A +:10729A00B3EF3DF053EC3EF0FD0EDB5003E09BEC08 +:1072AA003DF002D0D2EC3DF0FEEC3DF0D9CFE9FF43 +:1072BA00DACFEAFFEE50ED1003E1F36AF46A28D060 +:1072CA00A4EC3DF0AEEC3EF0FB0EDBCFEEFFFC0E85 +:1072DA00DBCFEDFFA4EC3DF0EE52FA0EDBCFEFFF71 +:1072EA00400EA4EC3EF0880EB3EC3EF0FD0EDB50EF +:1072FA0003E09BEC3DF002D0D2EC3DF0EA22EF74C1 +:10730A00DECF4EF0DDCF4FF04EC0F3FF4FC0F4FF9B +:10731A00020EE15C02E2E16AE552E16EB3EF3DF092 +:10732A0053EC3EF0FE0EDB5003E16AEC3EF009D06E +:10733A00D7EC3DF041EC3EF0D7EC3DF0010F41ECCB +:10734A003EF0020EE15C02E2E16AE552E16EB3EF61 +:10735A003DF0AEEC3DF065A816D07BEC3EF0400E59 +:10736A00EE16EE6AEE6AEE6A7BEC3EF0EE7CDEDB4F +:10737A00EA22EF74400E4E6E7BEC3EF04E50EF1652 +:10738A007BEC3EF0EF7CEAD30501EC5122E1010EE1 +:10739A00EC6FED511EE1010EED6F020ED05D07E1BB +:1073AA00D3DBEE52EF6AD0DBC80EEF6E1200D005C7 +:1073BA0010E1E36BDFDBEE52400EEF6EDBDB4DECF0 +:1073CA003EF0D8DB840EEF6E010EE36FABDB800E6E +:1073DA00EF6E12000501EE6BEF6B020ED05D06E157 +:1073EA00A8EC3EF0CCDB3CEC3EF010D0D4510401CA +:1073FA00365D0501D5510401375904E236C4D4F586 +:10740A0037C4D5F561D8A0DBBADB9EDBC80EEF6EB8 +:10741A00120053EC3EF0000EDE6E040EDD6EC2DB8F +:10742A00040DF4CF4FF0D9CFE9FFDACFEAFFF350DA +:10743A00EE264F50ED2283DBEF9EFD0EDB5002E17C +:10744A00ACDB01D073DBEA22DECFEEFFDDCFEDFF4E +:10745A0076DBEF9C74DB040EE926000EEA22EF8C41 +:10746A00020EE15C02E2E16AE552E16E77D36598C9 +:10747A000501D3BF0DD0D8AF09D0020ED06FEF519E +:10748A0001E1A8DF0501ED6BEC6B12006AEF3EF03B +:10749A00040130AF0DD00501010ED06FEE5101E1AC +:1074AA0099DF0501ED6BEC6BEB510DE1C9EF39F09A +:1074BA000501020ED06F36DB840EEF6EED6BEC6BBE +:1074CA00EB5101E161DF120082EC3EF0400EDF6E0B +:1074DA000501D45D000ED5590AE2D4C5DFFFCF51AC +:1074EA0002E1010E03D0CF0502E1020ECF6FDF5099 +:1074FA004F6AE850D45DD46F4F50D559D56F24DB0D +:10750A00EE52DFCFEFFF380EDD6F040EDE6FD3B120 +:10751A000DD0DF5017E0D1C5F6FFD2C5F7FFD12B4A +:10752A00000ED2230800F55057DBF3D7DF500AE0EC +:10753A00D1C5E9FFD2C5EAFFD12B000ED223EF5005 +:10754A004BDBF4D7E5520AD3A9DB14DBEE52EFCFBB +:10755A00DFFFDFCF4EF04E500501D95D000EDA593C +:10756A0002E2D9C5DFFFDF504E6E4F6AE850D95D9F +:10757A00D96F4F50DA59DA6F010EDB6ADF50F36EBA +:10758A00010EDBCFF4FFF350F45C16E2010EDB5080 +:10759A00EA6A380FE96E040EEA22EF50E66ED6C5A3 +:1075AA00E9FFD7C5EAFFD62B000ED723E552E750ED +:1075BA00EF6E010EDB2AE2D7000ED880D955000EF5 +:1075CA00DA550DE2C0DBDBDAD5DAEF50400B03E126 +:1075DA004EDBC80E02D04BDB880EEF6E12D0A2DA59 +:1075EA00840EEF6EDB51DC1107E005D0DCC5FAFF33 +:1075FA000501DB51F96EFADF0501D89FEB5101E174 +:10760A00C3DE020EE15C02E2E16AE552E16EA6D255 +:10761A0074DB0501D38F50DB300EE66EE66AE66A4C +:10762A00000EE66E040EB1DA658CDF6A030EDF5CCB +:10763A0002E2C2DAFBD7010EE66EE66AE66ABE0E1F +:10764A00E66E050EA2DA659C0501080EC96F040EE6 +:10765A00CA6F000EBF6F040EC06FBFC5C1F5C26FFF +:10766A0032C4BDF5BD5102E1100E0BD0010EE66E1B +:10767A00E66ABD0EE66E050EE66E010E5CDA0501DF +:10768A00200EBC6FE5526AD2800E0401305D4EE1D5 +:10769A000501C00ED36F04013351030A25E0010A24 +:1076AA0009E0030A41E10501520ED16F970ED26F2C +:1076BA00120E34D03251F66EF76AD890F636F73693 +:1076CA00A70EF626970EF7220900F5CFD1F50A0084 +:1076DA00F5CFD2F5020E0501BCDAF5CFD4F5030ECB +:1076EA00B8DAF5CFD5F51200040E325D1AE20501BB +:1076FA00D38104013251E96EEA6AD890E936EA3652 +:10770A00F60EE926020EEA22EECFD1F5EDCFD2F53A +:10771A00D1C5E9FFD2C5EAFFEF500501D46FD56B99 +:10772A0012000501D36B12000501D36B1200B6DA01 +:10773A000401386B396B30511F0B020A11E0030A3E +:10774A000CE0010A1EE10501D38F0401388105010D +:10775A00DF0517E10401388314D00501D38F11D056 +:10776A000501D38F040134BF02D0B6DA01D0B9DAE9 +:10777A0040DABFDA06E0E3D9EF50040B02E0010E6B +:10778A00386F0501D3AF07D0380ED16F040ED26F10 +:10779A00D381020ED46F020EE15C02E2E16AE55285 +:1077AA00E16EDCD10F0126A10CD0E4D9EF5080089C +:1077BA0007E1CAD9EF50840803E1DCD98C0EEF6ED9 +:1077CA002691629A12000F01368562986582050138 +:1077DA00010EE06F14DA750EA0EF3DF00501E06BC3 +:1077EA000EDA740EA8D965920F01369562A402D0FA +:1077FA006294FCD7120081DA05012D0EEA6FFD0EA4 +:10780A00E11539E17E0EE115E8407F0B040DF3CF57 +:10781A00BFF5F4CFC0F5000EBF27040EC023BFC5C5 +:10782A00C1F5C0C5C2F5C175A5D9EF503C0BE842F8 +:10783A00E8420D081EE1DF6A080EDF5C16E29AD9FB +:10784A00020EE926000EC2D9EF50E66EDF50EA6A50 +:10785A00300FE96E040EEA22E552E750EF6E8AD93C +:10786A0078DAEE2AEF22DF2AE7D784D911DA0AD8A2 +:10787A0007D023D805D0FD0EE115040801E12CD864 +:10788A00E5526CD10501CF6BEB6BEE6BEF6BE36BE3 +:10789A00D06B5AD9EF9EC97557D9EF9EC975E7D9EA +:1078AA00EF9ED36BD46BD56BD86BD96BDA6B51D88F +:1078BA00A6D9030E40D93CEF3AF0020E0501D05D7D +:1078CA0002E1A9EF3AF0D06BE35104E12BD98C0E17 +:1078DA00EF6E1200E36B120010DA36D9EF50400B4C +:1078EA0001E0010EDF6E0501C975080EBC5D0BE1F2 +:1078FA0032C438FF0F01385103E00501100E02D0DF +:10790A000501040EBC6FD00513E11ED938D9DCDDA0 +:10791A00020E0501CF5D03E117D9840E07D0DF50AF +:10792A0003E112D9C80E02D00FD9880EEF6E0FD01C +:10793A00D8AF0CD0DB51DC1107E005D0DCC5FAFF6B +:10794A000501DB51F96EFADF0501D89FD06BE552CC +:10795A0005D104013051600BE842E842E842E842AE +:10796A00E842000901E0120031510C0A45E00B0A15 +:10797A003FE00C0A31E0010A22E00B0A1EE0020A8B +:10798A001CE0030A18E0080A10E0010A0CE00F0ADA +:10799A0008E0030A01E012000501D38F080EBC6F4C +:1079AA00120049EF3BF00DEF3BF00501BD0ED16F20 +:1079BA00050ED26F0CD09CEF3BF002EF3DF0345134 +:1079CA000501D16FD26BBE0ED127050ED223D3810A +:1079DA00010ED46FD38F12000501D38F04013451E5 +:1079EA00EA6ABE0FE96E050EEA2232C4EFFF120000 +:1079FA0006D9020EA0EF3DF01200ABD8050EE12623 +:107A0A000401320510E130511F0B00090CE1050198 +:107A1A00D38F030E0401315D04E10501010EDF6F0E +:107A2A0002D00501DF6B0401325101E074D03051FC +:107A3A001F0B020870E134510F0B00096CE034513E +:107A4A000F0B020868E3200E0501BC5D64E1D38FC9 +:107A5A00040134BF04D040D9CCD8D7D803D041D9F7 +:107A6A00C8D8D7D8EA22020EEFCFDBFFF9D8010B2C +:107A7A0003E1000EDF9401D0DF8434BF02D02CD999 +:107A8A0001D02FD9EA22DECFEEFFDDCFEDFF030EC4 +:107A9A00315D0CE12ED907E034BF02D0B6D801D04F +:107AAA00B8D8EA22EF82840E59D935D0DF7421D9A9 +:107ABA0006E045D8EF9E43D8EF8CF4D802D03FD8E1 +:107ACA00EF8CDF74CDD8020B02E113D90DE004016B +:107ADA0034BF02D09AD801D09CD8EA22EF923B0E4A +:107AEA004E6E2DD9DFD802D03B0E29D9040134516C +:107AFA000F0B4F6A260F4E6E0F0E4F22030E4EC00B +:107B0A00DBFF040E4FC0DBFF030EDBCFE9FF040EE1 +:107B1A00DBCFEAFFEF90050EE15C02E2E16AE55293 +:107B2A00E16E1CD010D9B4D83CEF3EF0FE0EEA6AE2 +:107B3A00DB3485EF3EF0E66EE66A93EF3EF0DECF89 +:107B4A00E9FFDDCFEAFF1200C9C5E9FFCAC5EAFFAE +:107B5A001200D9CFE6FFE1CFD9FF1200E552E7CFF5 +:107B6A00D9FF120034510F0BE96EEA6AD890E93650 +:107B7A00EA361200BFC5E9FFC0C5EAFF1200E9D81C +:107B8A00380EEE6E040EED6E1200E66EF9EC4BF056 +:107B9A004E6E050EE15E4E501200FE0EEA6ADB34AE +:107BAA008CEF3EF0FD0EDB50E824506EFE0EDB50EB +:107BBA00040DF35050241200DF50BCD8EA22EF6AB9 +:107BCA00DF50B3D8EA22EF6ADF2A1200EA22EE5027 +:107BDA00EFCFEAFFE96E1200E66EDDC5E9FFDEC50A +:107BEA00EAFFDD2B000EDE23E552E750EF6EDF06DB +:107BFA001200EA22EECFDEFFEDCFDDFF1200000E0B +:107C0A00E66EE66AE66EE66A120034510F0B9AEFE8 +:107C1A003EF034510F0B9FEF3EF04F224EC0DEFF75 +:107C2A004FC0DDFF1200FE0EDBCFE6FF0EEC3AF08E +:107C3A00E552E5521200160E396F9F0E376F7B0E12 +:107C4A00366F1200010EE66EE66A000EE66EE66A0E +:107C5A001200F76AD125F66ED251F72208001200F7 +:107C6A00D950020FE96EDACFEAFFEF501200C1C510 +:107C7A00E9FFC2C5EAFF1200040DF3CF4EF0F4CFBC +:107C8A004FF0000E4E26040EC8DF840EB3EF3EF00E +:107C9A0060D8300EEE6E040EED6E12005ADF020E40 +:107CAA00E1261200020EE66EE66ADECFE6FFDDCFBF +:107CBA00E6FF050EA0EF3DF0020EE66EE66AE66A02 +:107CCA00270EE66E0F0ECAEF3DF02CDF8C0EEF6E1C +:107CDA003BDF840EEF6E120045DFC30EE926050E68 +:107CEA00120040DFC90EE926050E12001FDFEBEF76 +:107CFA003DF025DFEF50800B12002BDFE652120019 +:107D0A00FE0BEA36E96EC90EE926050E1200FE0BD5 +:107D1A00EA36E96EC30EE926050E1200E6EC48F0D3 +:107D2A004E6E060EE15E4E501200EA6AE70FE96EE9 +:107D3A00050E1200EA6AE40FE96E050E1200FFDE74 +:107D4A00E850EF16120093DFEE52400EEF6E3CEF52 +:107D5A003EF0020EE926000EEA221200F0DEE8509A +:107D6A00EF121200F6D9E6520001606B996BDF6AD6 +:107D7A00080EDF5C13E2E7D9610EE926000E12DA7B +:107D8A00C8D9EF6AE0D9790EE926000E0BDADBD9F9 +:107D9A00890EE926000E06DADF2AEAD70001C60EA6 +:107DAA009C6F0E0E9D6F3F0E79140009796ECF0EEF +:107DBA0079140009796E79827B6A7A6A79900F015F +:107DCA0052815293F00EB4140909B46E0001080EE0 +:107DDA009A6F030E9B6FC60E9E6F3B0E9F6F250E0A +:107DEA00A06F580EA16F040EA66F900EA26F010E1F +:107DFA00A36F900EA46F010EA56F000EE66EE66AE1 +:107E0A00010EE66E7DEC16F0E552E552E5528996D2 +:107E1A00E552A4D19ED9E652DF6A080EDF5C09E278 +:107E2A0078D9EFCF4EF0FE0EDB504E5C09E0DF2A28 +:107E3A00F4D7DF6A080EDF5C07E26BD9EF5002E184 +:107E4A00DF2803D0DF2AF6D7000EE55287D181D981 +:107E5A00070EE126DE6ADD6A020EDB6A030EDB6AC2 +:107E6A00040EDB6A050EDB6A060EDB6A010EE66E9D +:107E7A00D9CFE6FFDACFE6FF030E39D9020F7AD956 +:107E8A00010E35D9030F76D9030E31D9050F72D9F0 +:107E9A00030E80D9E66AE66AF1EC29F0E552E5526A +:107EAA000401845124E1020EDB50180802E2848D99 +:107EBA001ED0010EE66E050EDBCFE6FF060EDBCF07 +:107ECA00E6FF030EDBCFE6FF040EDBCFE6FF020E72 +:107EDA00DBCFE6FFDECFE6FFDDCFE6FF0FD84E6E43 +:107EEA00080EE15E4E50E66A0FEC2AF0E552070EE4 +:107EFA00E15C02E2E16AE552E16E30D12AD9020E72 +:107F0A00E126FC0EDBCFE6FF85DFE552E76E010EC8 +:107F1A00E7CFDBFFDB5002E1000EC3D00BD902E151 +:107F2A00C9D8BDD0010EDB044E6E00019A514E5CD9 +:107F3A0001E3B5D0FC0EDB50180801E2B0D0FC0E0C +:107F4A00DB50070802E10101C16BD6D810E1E66AED +:107F5A00FC0EDBCFE6FF56EC35F0E552E552E66A59 +:107F6A00FC0EDBCFE6FF28EC35F0E552E552F70EC2 +:107F7A00DB046AE113500F5CFDE2FC0EDB500408DF +:107F8A0001E1C9D809BC8BD0D0D8020EEF6EF80E29 +:107F9A00DBCF4EF0F90EDBCF4FF0506A516A190E63 +:107FAA00456E466A476A486A4EC040F04FC041F083 +:107FBA0050C042F051C043F071EC4BF03CC04EF05F +:107FCA003DC04FF03EC050F03FC051F0AED8EE5227 +:107FDA00EE523CC0EEFF4FC0EEFF50C0EEFF51C064 +:107FEA00EEFF80D8290EE926000EEA22010EDBCF29 +:107FFA00EFFF78D8260EE926000EEA22FC0EDBCF28 +:10800A00EFFF70D8270EE926000E7BD86BD82A0E10 +:10801A00E926000EA7D866D8EE52D880000EEE5494 +:10802A00000EEE54190EEE54000EEE5406E25AD823 +:10803A00EE52EE6AEE6AEE6AEE6A102A1350105C8D +:10804A0001E3106A0F2A2BD005A029D0FC0EDB50C1 +:10805A00040801E160D86ED802E12CD812D08FD87A +:10806A00890EE926000E7ED88AD8790EE926000EF6 +:10807A0048D88DD8FC0EDBCFEFFF3ED802E19DD861 +:10808A0040D8FC0EDB500001A65D09E10101010E9A +:10809A00B96F0101B66B0101C15101E08A98010E65 +:1080AA00DB504E6E020EE15C02E2E16AE552E16EDD +:1080BA004E5054D06CD8EF500001EA6A9C25E96E04 +:1080CA009D51EA22EF6A5BD8890EE926000E6AD82A +:1080DA0056D8790EE926000E65D859D8EF6A6DD8B8 +:1080EA00D7EF40F010502F0D61D8EE52120052D83F +:1080FA00010EE66ED950120060D8EA22EE50ED1059 +:10810A001200EA22FD0EDBCFEEFFFE0EDBCFEDFF03 +:10811A001200DF5057D08986C2C4BEF4C3C4BFF46C +:10812A00C4C4C0F4C5C4C1F4120010502F0D050117 +:10813A00DBEF40F0D950FD0FE96EFF0EDA20EA6E50 +:10814A00EE50ED101200EA6ADF34FE0BEA36E96EF1 +:10815A001200D9CFE6FFE1CFD9FF1200E552E7CFEF +:10816A00D9FF1200EA22FA0EDBCFEEFFFB0EDBCFBD +:10817A00EDFF1200E66E000EDA20E66E1200010E26 +:10818A00DB04E96EEA6AD890E936EA361200010E93 +:10819A00DB0418D0E66E11EC33F0E552E552E552F5 +:1081AA00E5521200EA22EE6AED6A1200FA51F3244D +:1081BA00E96EFB51F420EA6E1200E1DF610EE92656 +:1081CA00000E1200EA6A710FE96E000EEA2212002E +:1081DA003B9E0CD03B9E43AE09D0406C411E421ED2 +:1081EA00431EE86A4122422243223B8E43C03DF0AD +:1081FA0042C03CF041C04DF040C04CF09E0E3E6E75 +:10820A003F6AB6EF42F03B6AF2EC42F00AEC43F006 +:10821A003BB69AEF42F03BA205D03BBA9AEF42F046 +:10822A00A1EF42F03BBAADEF42F03BA005D03BB81C +:10823A009AEF42F0ADEF42F03BB8A1EF42F03F6A4D +:10824A007F0E44243E6EE86A3F2249503E5EE86A49 +:10825A003F5A1A0E4A6E446A4C6A4D6A3C6A3D6A33 +:10826A004650415E4750425A4850435A000E445ABB +:10827A0009E7465041264750422248504322000E01 +:10828A00442201D04C8AD89041364236433644368D +:10829A00D8904C364D363C363D364A2EE1D74350BF +:1082AA0042104110D8A44C8AB6EF42F03B6AF2EC75 +:1082BA0042F00AEC43F03BB69AEF42F03BA205D0FB +:1082CA003BB89AEF42F0A1EF42F03BAA05D03BB08F +:1082DA009AEF42F0A1EF42F03BB002D03BA802D0A5 +:1082EA00ADEF42F03F6A495044243E6EE86A3F22AD +:1082FA007E0E3E5EE86A3F5A4C6A4D6A3C6A3D6AA7 +:10830A0048504302F4CF3DF0F3CF3CF047504302CC +:10831A00F3504D26F4503C22000E3D2248504202B2 +:10832A00F3504D26F4503C22000E3D2246504302A3 +:10833A00F3504C26F4504D22000E3C223D22475069 +:10834A004202F3504C26F4504D22000E3C223D22AC +:10835A0048504102F3504C26F4504D22000E3C2264 +:10836A003D2246504202F4504C26000E4D223C2239 +:10837A003D2247504102F4504C26000E4D223C2229 +:10838A003D22B6EF42F03A6AE86A48AED5EF41F0CC +:10839A00456C461E471E481E4622472248223A1E60 +:1083AA0043AEE0EF41F0406C411E421E431E4122A3 +:1083BA00422243223A1ED5EC4BF043BEF7EF41F07E +:1083CA003AAE000C406C411E421E431EE86A41222E +:1083DA00422243223C6C3D1E3E1E3F1E3D223E224F +:1083EA003F22000C3ABEE7EF41F03B88FF0C3B6AA4 +:1083FA00F2EC42F03BB606EF42F03BA20FD03BB4A0 +:10840A0007D07F0E436EFF0E426E416E406E25D03E +:10841A00800E436E01D0436A000EF6D73BB0FBD7FD +:10842A00406A9F0E4460EBD77E0E4464F4D79E0EDA +:10843A00445C07E0D8904332423241324032442A07 +:10844A00F6D73BA40AD0406C411E421E431EE86A7E +:10845A0041224222432243AEDED7120045EC42F0CB +:10846A003BB6000C3BB0000C3BB4000C010C45ECD5 +:10847A0042F03BB6000C3BB0000C3BA4000C010CD4 +:10848A003B6AF2EC42F00AEC43F03BB612003BAE18 +:10849A0008D03BA004D03BA802D03B8012003B90FE +:1084AA0012004950445C0BE14850435C08E14750D4 +:1084BA00425C05E14650415C02E13B801200D8A0D3 +:1084CA0002D03B8E10D0445049C044F0496E43500C +:1084DA0048C043F0486E425047C042F0476E415090 +:1084EA0046C041F0466E4950445C10E0FF0F09E077 +:1084FA003B903BB403D03BAE3B8412003BAE3B9473 +:10850A001200492AD8904832473246324650415ED4 +:10851A004750425A4850435A43BEEAD7D890413648 +:10852A0042364336442EF8D7C8D77F0E446EFF0E24 +:10853A00436E426E416E12007F0E3BBEFF0E446ECA +:10854A0002D07F0E446E800E436E426A416AF3D7B0 +:10855A003BAE04D0800E446E436AF7D7446A436A3E +:10856A00F4D73D503C104D104C10F8E03FBEF0D708 +:10857A003DBE0CD03E503F10EBE0D8904C364D3605 +:10858A003C363D363E06D8A03F06F2D73F50D4E1EE +:10859A003E28D2E04CAE11D07F0E4C1402E14DA021 +:1085AA000CD04D2AE86A3C223D2207E3D8803D32AE +:1085BA003C324D323E2A3E28BFE03E50C9E04DC013 +:1085CA0041F03CC042F03D34436E3E30446E43328B +:1085DA00449E3BBE448EA0EF42F04336443602E34B +:1085EA003B843B7E06E13B80446A436A426A416AB5 +:1085FA001200442803E0D88043321200D890433254 +:10860A0002E13B8212003B8612004836493602E3F9 +:10861A003B8C3B7E06E13B88496A486A476A466A60 +:10862A001200492803E0D88048321200D890483214 +:10863A00EAE13B8A1200040130511F0B010801E0F4 +:10864A0012003051600BE842E842E842E842E84250 +:10865A00010801E01200345103E0340501E0120080 +:10866A003151220A31E0030A24E0010A15E0210A05 +:10867A000DE0010A01E012000501B40ED16F050EEA +:10868A00D26F080ED46FD56BD38121D00501B40EF9 +:10869A00D16F050ED26F1BD036C4D9F537C4DAF5BF +:1086AA000501940ED66F050ED76FDB6BDC6BD88F86 +:1086BA0012000501940ED16F050ED26F070ED46F0A +:1086CA00D56BC10ED36F120032C4AFF50501D38F3B +:1086DA0012000501946B4B0E956F966B976B986B16 +:1086EA00996B080E9A6FA36B1A0EE66E010EE66E70 +:1086FA002BEC39F0E552E5521E0EE66E020EE66EDE +:10870A002BEC39F0E552E5521CD90501AD6BAE6B85 +:10871A00A46B120041D965D9050E421801E14350F4 +:10872A0002E0000E14D048D90501AB514E1804E1FD +:10873A00AC514F1801E105D93FD90501AD514E1889 +:10874A0005E1AE514F1802E1A46BA96B010E29D1C4 +:10875A0023D90501A36BAB51AC1102E1000E05D080 +:10876A0032D9EF50800B01E0010E00092DE1FC0E19 +:10877A00DBCF4EF028D9EE52EF50D8804E5405E2A6 +:10878A0022D9EE52FC0EEFCFDBFFA36BFC0EDB50BF +:10879A00A35D19E2A351EA6A540FE96E050EEA22B3 +:1087AA00EF50E66EA351E76EFD0EDBCFE9FFFE0E3A +:1087BA00DBCFEAFFE750E926000EEA22E552E7504E +:1087CA00EF6EA32BE3D7BDD80501A351EAD0E4D8B5 +:1087DA000501A45107E1E9D8FC0EDBCFA9F5010E8A +:1087EA00AA6FA46FDED004D917E1C0D8DF2AFF0E22 +:1087FA00DF5C0BE0010EDBCFE9FFDB2A020EDBCFE9 +:10880A00EAFF01E3DB2AEF50F1E1CFD8DFCFA9F588 +:10881A000501010EAA6FA46F030EE15C02E2E16A90 +:10882A00E552E16EBED0E4D818E1A0D8DF2AFF0EE7 +:10883A00DF5C0CE0010EDBCFF6FFDB2A020EDBCF9A +:10884A00F7FF01E3DB2A0800F550F0E1AED8DFCFED +:10885A00A9F50501AA6B010EA46F030EE15C02E201 +:10886A00E16AE552E16E9DD097D8020EE126050134 +:10887A00AD51AE1102E1000E08D0ADC5E9FFAEC59B +:10888A00EAFFEF50800B01E0010E000953E1030EED +:10889A00A45D01E1A46BA4514DE0020EA45D09E1BF +:1088AA00E66A000EE66EE66A59D80501030EA46F61 +:1088BA0041D0A4053FE1400E4E6E4F6AA9514E5C6D +:1088CA00000E4F5803E2400EDF6E02D0A9C5DFFF4B +:1088DA00DF50A95DA96F140EA76F050EA86F010ED0 +:1088EA00DFCFDBFFAA510BE1010EDB5012E0A5C579 +:1088FA00F6FFA6C5F7FF0800F55041D8F5D7010ED7 +:10890A00DB5007E0A5C5E9FFA6C5EAFFEF5037D857 +:10891A00F6D70501A95107E1400EDF5C02E1020E1C +:10892A0001D0030EA46FDFCFE6FF140EE66E050E2C +:10893A00E66E14D8020EE15C02E2E16AE552E16EEB +:10894A0030D0400EE66E540EE66E050EE66EE66A0E +:10895A003FD8F3CFABF5F4CFACF51200010EE66EBB +:10896A0037D8F3CFADF5F4CFAEF51200DF6A39D8B8 +:10897A00DE5242C0DEFF43C0DDFFDD521200A7C552 +:10898A00E9FFA8C5EAFFEF6EA72B000EA823A52BC7 +:10899A00A623010EDB061200D9CFE6FFE1CFD9FFED +:1089AA001200E552E7CFD9FF1200FD0EDBCFA5F585 +:1089BA00FE0EDBCFA6F51200FB0EDBCF4EF0FC0E4F +:1089CA00DBCF4FF01200ABC5E9FFACC5EAFF1200DE +:1089DA00020EE66E4FEC39F04E6E050EE15E4E5019 +:1089EA001200FD0EDBCF42F0FE0EDBCF43F0120089 +:1089FA00D3DF030EE1260501A451120021302045E0 +:108A0A0072723A203C61786973323E2073746570E1 +:108A1A00207261746520746F6F20736C6F772E00FB +:108A2A002130204572723A203C61786973323E20C7 +:108A3A0073746570207261746520746F6F20686941 +:108A4A0067682E002130204572723A203C617869AD +:108A5A0073313E2073746570207261746520746F7F +:108A6A006F20736C6F772E002130204572723A2086 +:108A7A003C61786973313E20737465702072617449 +:108A8A006520746F6F20686967682E002053413231 +:108A9A003D00205341313D004475726174696F6E27 +:108AAA003D002130204572723A205374657052613C +:108ABA00746520696E76616C69642076616C75658F +:108ACA002E00526174653D00434D20636F6D6D61E8 +:108ADA006E642064697361626C656420696E2074D7 +:108AEA00686973206275696C640020446972656301 +:108AFA0074696F6E3D002043656E7465725F593DFF +:108B0A00002043656E7465725F583D0020446573AA +:108B1A00745F593D0020446573745F583D00467286 +:108B2A0065713D002053453D00204A323D002041F9 +:108B3A00323D002053323D002052323D00204A315E +:108B4A003D002041313D002053313D0052313D006E +:108B5A005374617475733D002135204572723A2051 +:108B6A004E65656420636F6D6D61206E6578742C47 +:108B7A0020666F756E643A202700506172616D3805 +:108B8A003D00506172616D373D00506172616D3612 +:108B9A003D00506172616D353D00506172616D3406 +:108BAA003D00506172616D333D00506172616D32FA +:108BBA003D00506172616D313D000D0A000A0D00E1 +:108BCA004F4B000A002138204572723A20556E6BCD +:108BDA006E6F776E20636F6D6D616E642027002162 +:108BEA0038204572723A20436865636B73756D204D +:108BFA006E6F7420666F756E64206275742072657C +:108C0A007175697265642E002138204572723A20A6 +:108C1A00436865636B73756D20696E636F72726505 +:108C2A0063742C20657870656374656420004C69F0 +:108C3A006D697420737769746368207472696767F1 +:108C4A00657265642E20506F7274423D0021372090 +:108C5A004572723A20457874726120706172616D52 +:108C6A0065746572002136204572723A20496E7623 +:108C7A00616C696420706172616D657465722076D9 +:108C8A00616C7565002134204572723A204D697312 +:108C9A0073696E6720706172616D6574657228739D +:108CAA0029002133204572723A20525820427566B3 +:108CBA00666572206F76657272756E002132204584 +:108CCA0072723A20545820427566666572206F7631 +:108CDA00657272756E002131204572723A204361C5 +:108CEA006E277420737465702074686174206661DD +:108CFA0073740021302000200800DDD8D0D80DE0A0 +:108D0A00CED8F3D8D950FC0FE96EFF0EDA20EA6EFE +:108D1A00EE2A000EEE22EE22F1D7F7D0CCD8D6D822 +:108D2A0008E0D4D8E2D8FD0EDB2AFE0EF8E3DB2AEF +:108D3A00F6D7EBD0EED80F0E4E6E4F6A506AD95066 +:108D4A00BFD8EE504E16EE504F16EE505016EE505B +:108D5A004EC0FEF14E50090802E3300E01D0370E24 +:108D6A00FE25C8D873D8040ED890513250324F32EB +:108D7A004E32E806F9E1FB0E4EC0DBFFFC0E4FC097 +:108D8A00DBFFFD0E50C0DBFFFE0E51C0DBFF010111 +:108D9A00FD07FA0EDB5002E0FA0EDB06C0D8CBE183 +:108DAA00FA0EDB50C8E16CD0B4D85DD897D83CC075 +:108DBA00FEF1300E01013C249DD855D88FD8FB0E08 +:108DCA0040C0DBFFFC0E41C0DBFFFD0E42C0DBFFF3 +:108DDA00FE0E43C0DBFF0101FD07A1D8E6E150D03A +:108DEA006AD8E1506DD8D890030EEB50000A08E615 +:108DFA00000EEE5C000EEE58000EEE58000EEE5815 +:108E0A0015E22D0E72D82FD845684668476848681B +:108E1A0071EC4BF0FB0E3CC0DBFFFC0E3DC0DBFFF0 +:108E2A00FD0E3EC0DBFFFE0E3FC0DBFFD95048D827 +:108E3A00EECFE6FFEECFE6FFEECFE6FFEFCFE6FF9F +:108E4A00B3DFE552E552E552E5525FD0FB0EDBCFC8 +:108E5A004EF0FC0EDBCF4FF0FD0EDBCF50F0FE0ED6 +:108E6A00DBCF51F01200FB0EDBCF40F0FC0EDBCF64 +:108E7A0041F0FD0EDBCF42F0FE0EDBCF43F01200D5 +:108E8A00FD2BFD514F6AF10F4E6E010E4F224EC05F +:108E9A00E6FF4FC0E6FF42DFE552E55236D0FC0E50 +:108EAA00DBCFF6FFFD0EDBCFF7FFFE0EDBCFF8FFC1 +:108EBA000800F5501200D9CFE6FFE1CFD9FF120022 +:108ECA00FB0FE96EFF0EDA20EA6E1200FD0EDBCF11 +:108EDA00E9FFFE0EDBCFEAFFEF5012000A0E456EE5 +:108EEA00466A476A486AD5EF4BF0E66E83EC26F08D +:108EFA00E5521200E66EFD51EA6AF10FE96E010EC3 +:108F0A00EA22E552E750EF6E1200E552E7CFD9FFA9 +:108F1A001200D1DF0101FC6B0A0EFD6F120096DF11 +:108F2A004E504F10501051101200D9CFE6FFDACF31 +:108F3A00E6FFE1CFD9FFE2CFDAFF060EE12402E332 +:108F4A00E168E652E16EDF6A010EDB6AD950FA0F78 +:108F5A00E96EFF0EDA20EA6E020EEECFDBFF030E99 +:108F6A00EECFDBFF040EEECFDBFF050EEECFDBFF0D +:108F7A00D950FA0FE96EFF0EDA20EA6E060EE76E96 +:108F8A00D890030EEB32020EEB32010EEB32EF32C7 +:108F9A00E706F6E1D950FA0FE96EFF0EDA20EA6E1B +:108FAA00060EE76ED890EF36010EEB36020EEB3660 +:108FBA00030EEB36E706F6E1D950FA0FE96EFF0E1B +:108FCA00DA20EA6E400EEE26000EEE22000EEE22A7 +:108FDA00000EEE22FA0EDBCF52F0FB0EDBCF53F07F +:108FEA00FC0EDBCF54F0FD0EDBCF55F0D950020F4B +:108FFA00E96E000EDA20EA6EEE50525C4E6EEE50CA +:10900A0053584F6EEE505458506EEE505558516E9C +:10901A004E50DF6ED950F80FE96EFF0EDA20EA6E75 +:10902A00EE50ED1065E0040EDB50F86E030EDB50D7 +:10903A00F76E020EDB50F66EDF50DF0600091AE00B +:10904A00F60EDBCFE9FFDB2AF70EDBCFEAFF01E3FF +:10905A00DB2AEF50F56E0D00F80EDB06DBCF4EF083 +:10906A00F90E01E2DB06DBCF4FF04E504F1001E163 +:10907A0001D0E2D7040EDB50F86E030EDB50F76E18 +:10908A00020EDB50F66EA684F2AE04D0F29EDE52D9 +:10909A00010EDD6E550EA76EAA0EA76EA682A694C5 +:1090AA00010EDB5003E0F28E010EDB6A400EDF6E2A +:1090BA00400E4E6E4F6A506A516AD950020FE96EDD +:1090CA00000EDA20EA6EEE504E26EE504F22EE5097 +:1090DA005022EE505122020E4EC0DBFF030E4FC04B +:1090EA00DBFF040E50C0DBFF050E51C0DBFF92D739 +:1090FA00060EE15C02E2E16AE552E16EE552E5CF75 +:10910A00DAFFE7CFD9FF1200F5EC23F005D87EECA1 +:10911A0038F022EC25F0FBD7D9CFE6FFE1CFD9FF13 +:10912A00020EE1260F0148694969600ED36E9B8CD5 +:10913A00580EDE6E020EDD6EDFCF4EF0DF06010E38 +:10914A00DBCF4FF001E2DB064E504F10F5E1948E73 +:10915A0067EC24F018EC38F0020EE15C02E2E16AF6 +:10916A00E552E16EE552E7CFD9FF12001200120074 +:10917A001200120020EF43F012006EEF43F00501D7 +:10918A00DF051EE10501E0051BE1F1DF659205013E +:10919A00E06B0201100EFE6F0E0EFF6FFE07000E4F +:1091AA00FF5BFE51FF11FAE16584080EFE6F070EA0 +:1091BA00FF6FFE07000EFF5BFE51FF11FAE1659497 +:1091CA001200D9CFE6FFE1CFD9FFFD0EDBCF42F087 +:1091DA00FE0EDBCF43F0050E421801E1435036E0A4 +:1091EA00E868421802E17F0E43182FE0030E421886 +:1091FA0001E1435028E0020E421801E1435021E008 +:10920A00010E421801E143501AE0740E421801E1BE +:10921A00435013E0750E421801E143500CE0730EFF +:10922A00421801E1435005E0720E42180FE1435023 +:10923A000DD09EDF0BD09ADF09D099DF07D09DDFD2 +:10924A0005D09ADF03D096DF01D093DF010EE552F5 +:10925A00E7CFD9FF1200D9CFE6FFE1CFD9FF050149 +:10926A00FB0EDBCF00F5FC0EDBCF01F5FD0EDBCFED +:10927A0002F5FE0EDBCF03F5036725D0026723D084 +:10928A00126B800E106F0B6F0B510B03F350005DC6 +:10929A00F4500159D8B008D012C50BF5104310513B +:1092AA000B1310BF09D0F0D70BC512F5104310519C +:1092BA000B1310BF01D0E8D712C5F3FFF46AE552C9 +:1092CA00E7CFD9FF1200126B136B106B0B6B800E7A +:1092DA00116F0A6F0BC505F50AC504F5A3EC49F031 +:1092EA000C51005D0D5101590E5102590F5103598C +:1092FA00D8B00ED0000F12C50BF513C50AF51133FD +:10930A00103311510A1310510B13D8B00FD0E2D7F2 +:10931A00000F0BC512F50AC513F51133103311519D +:10932A000A1310510B13D8B001D0D4D712C5F3FFCA +:10933A0013C5F4FFE552E7CFD9FF12000551050323 +:10934A00F4CF0DF5F3CF0CF504510403F4CF0FF568 +:10935A00F3CF0EF505510403F3500D27F4500E23F5 +:10936A00E86A0F2304510503F3500D27F4500E2326 +:10937A00E86A0F231200C00EF36E00EE00F00E0E24 +:10938A0001D81200EA6002D0EE6AFCD7F350E96015 +:10939A001200EE6AFCD7D9CFE6FFDACFE6FFE1CFBB +:1093AA00D9FFE2CFDAFFE652E652E652E652E65239 +:1093BA00DF6AD950FA0FE96EFF0EDA20EA6E010E63 +:1093CA00EECFDBFF020EEECFDBFF030EEECFDBFFAD +:1093DA00040EEECFDBFFF60EDBCF4EF0F70EDBCF3F +:1093EA004FF0F80EDBCF50F0F90EDBCF51F048D832 +:1093FA004E50EE5C4F50EE585050EE585150EE58C9 +:10940A0033E2030EDB50F86E020EDB50F76E010EEC +:10941A00DB50F66EA684A688F2AE03D0F29E010E49 +:10942A00DF6E550EA76EAA0EA76EA682DF5001E068 +:10943A00F28E4E6A040E4F6E506A516A21D8EE506F +:10944A004E26EE504F22EE505022EE505122010E7F +:10945A004EC0DBFF020E4FC0DBFF030E50C0DBFF26 +:10946A00040E51C0DBFFB7D7050EE15C02E2E16AE8 +:10947A00E552E16EE552E5CFDAFFE7CFD9FF1200F8 +:10948A00D950010FE96E000EDA20EA6E1200454249 +:10949A00427631335F616E645F61626F7665204543 +:1094AA0042204669726D77617265205665727369EA +:1094BA006F6E20332E302E3200920F920F920F933E +:1094CA000F930F930F930F930F930F930F930F9481 +:1094DA000F940F940F940F940F940F940F940F9569 +:1094EA000F950F950F950F950F950F890F890F8976 +:1094FA000F8A0F8A0F8A0F8A0F8A0F8A0F8A0F8A9A +:10950A000F8B0F8B0F8B0F8B0F8B0F8B0F8B0F8B81 +:10951A000F8C0F8C0F8C0F8C0F8C0F8C0F0001058A +:10952A0000010203040506070001020304050607F9 +:10953A000203040506072A0EF66E100EF76E000ED9 +:10954A00F86E05010900F550F56F0900F550F66F40 +:10955A0003E1F56701D03DD00900F550F06F09002D +:10956A00F550F16F0900F550F26F09000900F55046 +:10957A00E96E0900F550EA6E090009000900F55084 +:10958A00F36F0900F550F46F09000900F6CFF7F5FB +:10959A00F7CFF8F5F8CFF9F5F0C5F6FFF1C5F7FF03 +:1095AA00F2C5F8FF0501F35302E1F45307E009009D +:1095BA00F550EE6EF307F8E2F407F9D7F7C5F6FFB0 +:1095CA00F8C5F7FFF9C5F8FF0501F507000EF65BC8 +:1095DA00BFD71200D9CFE6FFDACFE6FFE1CFD9FF36 +:1095EA00E2CFDAFFE652E652E652E652D9CFE9FF77 +:1095FA00DACFEAFFFA0EDBCFEEFFFB0EDBCFEEFF90 +:10960A00FC0EDBCFEEFFFD0EDBCFEEFF020EDB50D2 +:10961A00F86E010EDB50F76EDF50F66EF80EDBCFF8 +:10962A004EF0DB06F90EDBCF4FF001E2DB064E50BF +:10963A004F100DE00900F60EDBCFE9FFDB2AF70E2B +:10964A00DBCFEAFF01E3DB2AF5CFEFFFE7D7040E12 +:10965A00E15C02E2E16AE552E16EE552E5CFDAFF4A +:10966A00E7CFD9FF1200D9CFE6FFDACFE6FFE1CF85 +:10967A00D9FFE2CFDAFFAD6AAC6AFD0EDBB0AD8886 +:10968A00DBA202D0AD8CAC8CDBB4AD8EDBA602D0F3 +:10969A00AC8801D0AC8ADBB8AD84DBBAAC86DBAC73 +:1096AA0002D09D8A01D09D9ADBAE02D09D8801D05E +:1096BA009D98FB0EDB50B06EFC0EDBCF4FF04FC017 +:1096CA004EF04F6A4E507F6EAD8AAC8EE552E5CFB2 +:1096DA00DAFFE7CFD9FF120040504502F3CF3CF042 +:1096EA00F4CF3DF04602F3503D26000EF4203E6EC4 +:1096FA0040504702F3503E26000EF4203F6E405081 +:10970A004802F3503F2641504502F3503D26F4509B +:10971A003E22000E3F2241504602F3503E26F450AC +:10972A003F2241504702F3503F2642504502F35030 +:10973A003E26F4503F2242504602F3503F26435001 +:10974A004502F3503F2612001201000202000040B7 +:10975A00D80492FD820101020301090243000201B9 +:10976A0000C03209040000010202010005240010B1 +:10977A000104240202052406000105240100010750 +:10978A0005810308000209040100020A000000071B +:0F979A00050202400000070582024000006497AC +:1097AA003F6A3E6A3D6A3C6A200EE76ED8904036B0 +:1097BA004136423643363C363D363E363F364550D4 +:1097CA003C5C46503D5847503E5848503F5809E384 +:1097DA0045503C5E46503D5A47503E5A48503F5AC3 +:1097EA00402AE72EE4D71200FE0EE3CFE9FFFF0E70 +:1097FA00E3CFEAFFE9CFF3FFEACFF4FFFB0EE35032 +:10980A0003E1FC0EE35009E0FB0EE30602E2FC0E64 +:10981A00E306FD0EE350EE6EF1D71200D9CFE6FF54 +:10982A00DACFE6FFE1CFD9FFE2CFDAFFADAC04D061 +:10983A00AD900501FCB3AD80FD0EDB50AE6EE55276 +:10984A00E5CFDAFFE7CFD9FF1200FF0EE124E96E78 +:10985A00FF0EE220EA6EEDCFF4FFEFCFF3FFF466DE +:10986A0007D0600EF36404D07B0EF36001D0F39A44 +:10987A001200D9CFE6FFDACFE6FFE1CFD9FFE2CF78 +:10988A00DAFFFD0EDB507E6EE552E5CFDAFFE7CF59 +:10989A00D9FF12001EEE00F02EEE00F0F86A3B9C93 +:1098AA00A0EC4AF068EC4CF089EC48F0FBD71200C7 +:1098BA00F36AF46AF32A0F0B05E0D890F336F4360C +:1098CA00E804FBE112001200040309041803530020 +:1098DA00630068006D0061006C007A004800610056 +:1098EA007500730038034500690042006F00740078 +:1098FA0042006F006100720064002C00200020000A +:10990A00200020002000200020002000200020004D +:10991A002000200020002000200020002203200038 +:10992A00200020002000200020002000200020002D +:10993A0020002000200020002000200020008002BB +:10994A0084029C02D402000600000000010000000C +:01995A00000C :08FFF800ACF70AFF63F801F009 :00000001FF diff --git a/EBB_firmware/app.X/nbproject/configurations.xml b/EBB_firmware/app.X/nbproject/configurations.xml index 0a59b3f..eb3e756 100644 --- a/EBB_firmware/app.X/nbproject/configurations.xml +++ b/EBB_firmware/app.X/nbproject/configurations.xml @@ -21,6 +21,11 @@ source/usb_config.h source/ebb_print.h + + Makefile + @@ -52,11 +57,6 @@ source/ebb_print.c source/squareroot.s - - Makefile - source diff --git a/EBB_firmware/app.X/source/UBW.c b/EBB_firmware/app.X/source/UBW.c index acaaf0b..989205e 100644 --- a/EBB_firmware/app.X/source/UBW.c +++ b/EBB_firmware/app.X/source/UBW.c @@ -151,7 +151,7 @@ volatile UINT16 g_StepperDisableTimeoutS; // Seconds of no motion before m volatile UINT16 g_StepperDisableSecondCounter; // Counts milliseconds up to 1 s for stepper disable timeout volatile UINT16 g_StepperDisableCountdownS; // After motion is done, counts down in seconds from g_StepperDisableTimeoutS to zero -const rom char st_version[] = {"EBBv13_and_above EB Firmware Version 3.0.1.1"}; +const rom char st_version[] = {"EBBv13_and_above EB Firmware Version 3.0.2"}; #pragma udata ISR_buf = 0x100 volatile unsigned int ISR_A_FIFO[16]; // Stores the most recent analog conversions @@ -2267,7 +2267,7 @@ void parse_CU_packet(void) // certain values from the EBB. // "QU," // Returns: Some value(s), dependant on what parameter_number is. -// +// // 1 QU,1,XX where XX is a value from 00 to FF, representing the contents of // the PortB pins at the time of the last limit switch trigger // 2 QU,2,ddd to read back the maximum supported FIFO length for this version @@ -2297,8 +2297,6 @@ void parse_QU_packet(void) // Returns "QU,1,XX" where XX is two digit hex value from 00 to FF if (1u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_hex(gLimitSwitchPortB, 2); print_line_ending(kLE_NORM); } @@ -2306,8 +2304,6 @@ void parse_QU_packet(void) // Returns "QU,2,ddd" where ddd is one to three digit decimal value from 0 to 255 else if (2u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_uint(COMMAND_FIFO_MAX_LENGTH); print_line_ending(kLE_NORM); } @@ -2315,8 +2311,6 @@ void parse_QU_packet(void) // Returns "QU,3,ddd" where ddd is one to three digit decimal value from 0 to 255 else if (3u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_uint(gCurrentFIFOLength); print_line_ending(kLE_NORM); } @@ -2324,16 +2318,12 @@ void parse_QU_packet(void) else if (4u == parameter_number) { check_high_water(); - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_hex(gStackHighWater, 3); print_line_ending(kLE_NORM); } // CU,5 prints out current stack high water value and resets it to zero else if (5u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_hex(gStackHighWater, 3); print_line_ending(kLE_NORM); INTCONbits.GIEL = 0; // Turn low priority interrupts off @@ -2343,32 +2333,24 @@ void parse_QU_packet(void) // CU,6 prints out the number of commands currently waiting in the FIFO else if (6u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_uint(gFIFOLength); print_line_ending(kLE_NORM); } // 60 QU,60,dddd prints out current value of g_PowerMonitorThresholdADC else if (60u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_uint(g_PowerMonitorThresholdADC); print_line_ending(kLE_NORM); } // 61 QU,61,dddddd prints out current value of g_StepperDisableTimeoutS else if (61u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); ebb_print_uint(g_StepperDisableTimeoutS); print_line_ending(kLE_NORM); } // 200 QU,200,dddddddddd,dddddddddd prints out the current value of acc_union[0] and acc_union[1] (the accumulators) else if (200u == parameter_number) { - ebb_print_uint(parameter_number); - ebb_print_char(','); INTCONbits.GIEH = 0; // Turn high priority interrupts off ebb_print_uint(acc_union[0].value); ebb_print_char(','); diff --git a/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.cof b/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.cof index 55b6bcf41807b12f0a5ea0ba79544746dda31211..dffc6949135b1358d9ef422389834f25945dc7a0 100644 GIT binary patch delta 21 dcmX^8m-X~tR(1y=cLv9amW}LN*%^=20RUe!2h9Kg delta 21 dcmX^8m-X~tR(1y=cZSWocpBNavNIm30{~;N2s;1( diff --git a/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.map b/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.map index b4d54a5..6c32b05 100644 --- a/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.map +++ b/EBB_firmware/bootloader.X/dist/46J50/production/bootloader.X.production.map @@ -1,5 +1,5 @@ MPLINK 5.00, LINKER -Linker Map File - Created Tue Apr 02 21:10:59 2024 +Linker Map File - Created Mon May 06 21:26:09 2024 Section Info Section Type Address Location Size(Bytes) diff --git a/docs/EBBReleaseNotes.html b/docs/EBBReleaseNotes.html index 4187ea1..bafd32d 100644 --- a/docs/EBBReleaseNotes.html +++ b/docs/EBBReleaseNotes.html @@ -465,6 +465,30 @@

    +

    3.0.1 — 04/02/23

    +

    +

    +

    + +

    3.0.2 — 05/06/24

    +

    +

      +
    • + Issue #228 Removed 'Param_Number' in replies to the QU command to simplify PC side parsing of replies. +
    • +
    +

    +


    diff --git a/docs/ebb.html b/docs/ebb.html index 139768f..cac0950 100644 --- a/docs/ebb.html +++ b/docs/ebb.html @@ -462,7 +462,7 @@

  1. Execution: Immediate
  2. Description: -

    This command zeroes out (i.e. clears) the global motor 1 step position and global motor 2 step position.

    +

    This command zeros out (i.e. clears) the global motor 1 step position and global motor 2 step position. It also zeros out both step accumulators.

    See the QS command for a description of the global step positions.

  3. @@ -2062,8 +2062,8 @@
      +
    • + Issue #223 Added a new TD command to create a faster way to execute two T3 commands back to back to create S-curves. +
    • +
    • + Issue #222 Added a new SP,2 and SP,3 commands to immediately raise the pen (without going through the FIFO). +
    • +
    • + Issue #221 Added a new QU,6 command to query the current number of moves in the FIFO (i.e. how 'full' the FIFO is). +
    • +