diff --git a/lib/device/device.asm b/lib/device/device.asm new file mode 100644 index 0000000..64ac69f --- /dev/null +++ b/lib/device/device.asm @@ -0,0 +1,569 @@ +;-------------------------------------------------------- +; File Created by SDCC : free open source ISO C Compiler +; Version 4.5.2 #15451 (MINGW64) +;-------------------------------------------------------- + .module device + + .optsdcc -mmcs51 --model-large +;-------------------------------------------------------- +; Public variables in this module +;-------------------------------------------------------- + .globl _P0_0 + .globl _P0_1 + .globl _probe_device +;-------------------------------------------------------- +; special function registers +;-------------------------------------------------------- + .area RSEG (ABS,DATA) + .org 0x0000 +;-------------------------------------------------------- +; special function bits +;-------------------------------------------------------- + .area RSEG (ABS,DATA) + .org 0x0000 +_P0_1 = 0x0081 +_P0_0 = 0x0080 +;-------------------------------------------------------- +; overlayable register banks +;-------------------------------------------------------- + .area REG_BANK_0 (REL,OVR,DATA) + .ds 8 +;-------------------------------------------------------- +; internal ram data +;-------------------------------------------------------- + .area DSEG (DATA) +;-------------------------------------------------------- +; overlayable items in internal ram +;-------------------------------------------------------- +;-------------------------------------------------------- +; indirectly addressable internal ram data +;-------------------------------------------------------- + .area ISEG (DATA) +;-------------------------------------------------------- +; absolute internal ram data +;-------------------------------------------------------- + .area IABS (ABS,DATA) + .area IABS (ABS,DATA) +;-------------------------------------------------------- +; bit data +;-------------------------------------------------------- + .area BSEG (BIT) +;-------------------------------------------------------- +; paged external ram data +;-------------------------------------------------------- + .area PSEG (PAG,XDATA) +;-------------------------------------------------------- +; uninitialized external ram data +;-------------------------------------------------------- + .area XSEG (XDATA) +_rr: + .ds 40 +_b_ms_10000_4: + .ds 2 +_f_val_10000_14: + .ds 1 +_g_no_ack_10000_19: + .ds 1 +_g_val_10000_20: + .ds 1 +_h_no_ack_10000_24: + .ds 1 +;-------------------------------------------------------- +; absolute external ram data +;-------------------------------------------------------- + .area XABS (ABS,XDATA) +;-------------------------------------------------------- +; initialized external ram data +;-------------------------------------------------------- + .area XISEG (XDATA) + .area HOME (CODE) + .area GSINIT0 (CODE) + .area GSINIT1 (CODE) + .area GSINIT2 (CODE) + .area GSINIT3 (CODE) + .area GSINIT4 (CODE) + .area GSINIT5 (CODE) + .area GSINIT (CODE) + .area GSFINAL (CODE) + .area CSEG (CODE) +;-------------------------------------------------------- +; global & static initialisations +;-------------------------------------------------------- + .area HOME (CODE) + .area GSINIT (CODE) + .area GSFINAL (CODE) + .area GSINIT (CODE) +;-------------------------------------------------------- +; Home +;-------------------------------------------------------- + .area HOME (CODE) + .area HOME (CODE) +;-------------------------------------------------------- +; code +;-------------------------------------------------------- + .area CSEG (CODE) +;------------------------------------------------------------ +;Allocation info for local variables in function 'a' +;------------------------------------------------------------ +; ----------------------------------------- +; function a +; ----------------------------------------- +_a: + ar7 = 0x07 + ar6 = 0x06 + ar5 = 0x05 + ar4 = 0x04 + ar3 = 0x03 + ar2 = 0x02 + ar1 = 0x01 + ar0 = 0x00 + mov r7,#91 +00000$: + djnz r7,00000$ + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'b' +;------------------------------------------------------------ +;ms Allocated with name '_b_ms_10000_4' +;__ticks Allocated with name '_b___ticks_20000_6' +;------------------------------------------------------------ +; ----------------------------------------- +; function b +; ----------------------------------------- +_b: + mov r7,dph + mov a,dpl + mov dptr,#_b_ms_10000_4 + movx @dptr,a + mov a,r7 + inc dptr + movx @dptr,a + mov dptr,#_b_ms_10000_4 + movx a,@dptr + mov r6,a + inc dptr + movx a,@dptr + mov r7,a +00104$: + mov ar4,r6 + mov ar5,r7 + dec r6 + cjne r6,#0xff,00135$ + dec r7 +00135$: + mov dptr,#_b_ms_10000_4 + mov a,r6 + movx @dptr,a + mov a,r7 + inc dptr + movx @dptr,a + mov a,r4 + orl a,r5 + jz 00114$ + mov r4,#0xba + mov r5,#0x0a +00101$: + dec r4 + cjne r4,#0xff,00137$ + dec r5 +00137$: + mov a,r4 + orl a,r5 + jnz 00101$ + sjmp 00104$ +00114$: + mov dptr,#_b_ms_10000_4 + mov a,r6 + movx @dptr,a + mov a,r7 + inc dptr + movx @dptr,a + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'c' +;------------------------------------------------------------ +; ----------------------------------------- +; function c +; ----------------------------------------- +_c: +; assignBit + setb _P0_1 + lcall _a +; assignBit + setb _P0_0 + lcall _a + lcall _a + lcall _a +; assignBit + clr _P0_1 + lcall _a + lcall _a +; assignBit + clr _P0_0 + lcall _a + lcall _a + ljmp _a +;------------------------------------------------------------ +;Allocation info for local variables in function 'd' +;------------------------------------------------------------ +; ----------------------------------------- +; function d +; ----------------------------------------- +_d: + lcall _a + lcall _a +; assignBit + clr _P0_1 + lcall _a + lcall _a +; assignBit + setb _P0_0 + lcall _a + lcall _a +; assignBit + setb _P0_1 + lcall _a + lcall _a + ljmp _a +;------------------------------------------------------------ +;Allocation info for local variables in function 'e' +;------------------------------------------------------------ +;ret Allocated with name '_e_ret_10000_13' +;------------------------------------------------------------ +; ----------------------------------------- +; function e +; ----------------------------------------- +_e: +; assignBit + setb _P0_1 + lcall _a +; assignBit + setb _P0_0 + lcall _a + mov c,_P0_1 + clr a + rlc a + mov r7,a + push ar7 + lcall _a +; assignBit + clr _P0_0 + lcall _a + pop ar7 + mov dpl, r7 + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'f' +;------------------------------------------------------------ +;val Allocated with name '_f_val_10000_14' +;_i Allocated with name '_f__i_10000_15' +;------------------------------------------------------------ +; ----------------------------------------- +; function f +; ----------------------------------------- +_f: + mov a,dpl + mov dptr,#_f_val_10000_14 + movx @dptr,a + mov r7,#0x00 +00105$: + mov dptr,#_f_val_10000_14 + movx a,@dptr + rl a + anl a,#0x01 + jz 00102$ +; assignBit + setb _P0_1 + sjmp 00103$ +00102$: +; assignBit + clr _P0_1 +00103$: + push ar7 + lcall _a +; assignBit + setb _P0_0 + lcall _a + lcall _a +; assignBit + clr _P0_0 + lcall _a + pop ar7 + mov dptr,#_f_val_10000_14 + movx a,@dptr + add a,acc + movx @dptr,a + inc r7 + cjne r7,#0x08,00129$ +00129$: + jc 00105$ + ljmp _e +;------------------------------------------------------------ +;Allocation info for local variables in function 'g' +;------------------------------------------------------------ +;no_ack Allocated with name '_g_no_ack_10000_19' +;_i Allocated with name '_g__i_10000_20' +;val Allocated with name '_g_val_10000_20' +;------------------------------------------------------------ +; ----------------------------------------- +; function g +; ----------------------------------------- +_g: + mov a,dpl + mov dptr,#_g_no_ack_10000_19 + movx @dptr,a + mov dptr,#_g_val_10000_20 + clr a + movx @dptr,a + mov r7,a +00102$: + push ar7 + lcall _a +; assignBit + setb _P0_0 + mov dptr,#_g_val_10000_20 + movx a,@dptr + add a,acc + movx @dptr,a + movx a,@dptr + mov r6,a + mov c,_P0_1 + clr a + rlc a + orl a,r6 + movx @dptr,a + lcall _a + lcall _a +; assignBit + clr _P0_0 + lcall _a + pop ar7 + inc r7 + cjne r7,#0x08,00119$ +00119$: + jc 00102$ + mov dptr,#_g_no_ack_10000_19 +; assignBit + movx a,@dptr + add a,#0xff + mov _P0_1,c + lcall _a +; assignBit + setb _P0_0 + lcall _a + lcall _a +; assignBit + clr _P0_0 + lcall _a +; assignBit + setb _P0_1 + mov dptr,#_g_val_10000_20 + movx a,@dptr + mov dpl,a + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'h' +;------------------------------------------------------------ +;ret Allocated with name '_h_ret_10000_24' +;_i Allocated with name '_h__i_10000_24' +;no_ack Allocated with name '_h_no_ack_10000_24' +;------------------------------------------------------------ +; ----------------------------------------- +; function h +; ----------------------------------------- +_h: + lcall _c + mov dpl, #0xc9 + lcall _f + mov a,dpl + mov r7,a + jz 00102$ + lcall _d + mov dpl, #0x01 + ret +00102$: + mov dpl, #0x00 + push ar7 + lcall _g + mov r6, dpl + pop ar7 + mov dptr,#_rr + mov a,r6 + movx @dptr,a + cjne r6,#0x04,00147$ +00147$: + jc 00103$ + mov dptr,#_rr + movx a,@dptr + add a,#0xff - 0x23 + jnc 00119$ +00103$: + lcall _d + mov dpl, #0x01 + ret +00119$: + mov r6,#0x01 +00111$: + mov dptr,#_rr + movx a,@dptr + mov r5,a + clr c + mov a,r6 + subb a,r5 + jnc 00109$ + mov dptr,#_rr + movx a,@dptr + mov r5,a + mov r4,#0x00 + dec r5 + cjne r5,#0xff,00151$ + dec r4 +00151$: + mov ar2,r6 + mov r3,#0x00 + mov a,r2 + cjne a,ar5,00107$ + mov a,r3 + cjne a,ar4,00107$ + mov dptr,#_h_no_ack_10000_24 + mov a,#0x01 + movx @dptr,a + sjmp 00108$ +00107$: + mov dptr,#_h_no_ack_10000_24 + clr a + movx @dptr,a +00108$: + mov a,r6 + add a, #_rr + mov r4,a + clr a + addc a, #(_rr >> 8) + mov r5,a + mov dptr,#_h_no_ack_10000_24 + movx a,@dptr + mov dpl,a + push ar7 + push ar6 + push ar5 + push ar4 + lcall _g + mov r3, dpl + pop ar4 + pop ar5 + pop ar6 + pop ar7 + mov dpl,r4 + mov dph,r5 + mov a,r3 + movx @dptr,a + inc r6 + sjmp 00111$ +00109$: + push ar7 + lcall _d + pop ar7 + mov dpl, r7 + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'i' +;------------------------------------------------------------ +;n Allocated with name '_i_n_10000_33' +;------------------------------------------------------------ +; ----------------------------------------- +; function i +; ----------------------------------------- +_i: +; assignBit + setb _P0_1 +; assignBit + setb _P0_0 + lcall _a + mov r7,#0x03 +00103$: + mov ar6,r7 + dec r7 + mov a,r6 + jz 00105$ + push ar7 + lcall _c +; assignBit + clr _P0_1 + mov dptr,#0x0001 + lcall _b +; assignBit + setb _P0_1 + mov dpl, #0x00 + lcall _f + lcall _d + mov dptr,#0x0005 + lcall _b + lcall _h + mov a, dpl + pop ar7 + jnz 00102$ + mov dpl,a + ret +00102$: + mov dptr,#0x0005 + push ar7 + lcall _b + pop ar7 + sjmp 00103$ +00105$: + mov dpl, #0x01 + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'j' +;------------------------------------------------------------ +;ret Allocated with name '_j_ret_10000_37' +;------------------------------------------------------------ +; ----------------------------------------- +; function j +; ----------------------------------------- +_j: + lcall _c + mov dpl, #0xc8 + lcall _f + mov r7, dpl + mov dpl, #0x01 + push ar7 + lcall _f + mov r6, dpl + pop ar7 + mov a,r6 + orl ar7,a + push ar7 + lcall _d + pop ar7 + mov dpl, r7 + ret +;------------------------------------------------------------ +;Allocation info for local variables in function 'probe_device' +;------------------------------------------------------------ +;_i Allocated with name '_probe_device__i_10000_39' +;------------------------------------------------------------ +; ----------------------------------------- +; function probe_device +; ----------------------------------------- +_probe_device: + lcall _i + mov a, dpl + jnz 00101$ + mov dptr,#_rr + movx a,@dptr + mov r7,a + cjne r7,#0x04,00114$ + sjmp 00102$ +00114$: +00101$: + mov dpl, #0x01 + ret +00102$: + lcall _j + mov dpl, #0x00 + ret + .area CSEG (CODE) + .area CONST (CODE) + .area XINIT (CODE) + .area CABS (ABS,CODE) diff --git a/lib/device/device.h b/lib/device/device.h new file mode 100644 index 0000000..00ae970 --- /dev/null +++ b/lib/device/device.h @@ -0,0 +1,6 @@ +#ifndef DEVICE_H +#define DEVICE_H + +unsigned char probe_device(void); + +#endif \ No newline at end of file diff --git a/lib/device/readme.md b/lib/device/readme.md new file mode 100644 index 0000000..1b48471 --- /dev/null +++ b/lib/device/readme.md @@ -0,0 +1,9 @@ +# Build device.rel + +- open PlatrutmIO Core CLI +- cd lib/device +- sdcc -c device.c -mmcs51 --model-large --opt-code-speed --peep-return --fomit-frame-pointer --allow-unsafe-read +- rm *.lst +- rm *.rel +- rm *sym +- rm *.c diff --git a/src/camera.c b/src/camera.c index da011ab..100bd38 100644 --- a/src/camera.c +++ b/src/camera.c @@ -169,6 +169,7 @@ void camera_mode_detect(uint8_t init) { #endif } #else +#include void camera_mode_detect(uint8_t init) { uint8_t cycles = 4; uint8_t loss = 0; @@ -182,73 +183,79 @@ void camera_mode_detect(uint8_t init) { Set_720P60(IS_RX); video_format = VDO_FMT_720P60; I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); - } else if (camera_type == CAMERA_TYPE_RUNCAM_NANO_90) { - Init_TC3587(1); - if (camera_setting_reg_set[11] == 0) { - Set_540P90(0); - video_format = VDO_FMT_540P90; - } else if (camera_setting_reg_set[11] == 1) { - Set_540P90_crop(0); - video_format = VDO_FMT_540P90_CROP; - } else if (camera_setting_reg_set[11] == 2) { - Set_540P60(0); - video_format = VDO_FMT_540P60; - } else if (camera_setting_reg_set[11] == 3) { - Set_960x720P60(0); - video_format = VDO_FMT_960x720P60; - } - I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); - } else if (camera_type == CAMERA_TYPE_RUNCAM_MICRO_V1) { - Set_720P60(IS_RX); - Init_TC3587(0); - video_format = VDO_FMT_720P60; - I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); - } else if (camera_type == CAMERA_TYPE_RUNCAM_MICRO_V2 || camera_type == CAMERA_TYPE_RUNCAM_MICRO_V3) { - if (camera_setting_reg_set[11] == 3) { - Set_1080P30(IS_RX); - video_format = VDO_FMT_1080P30; - } else { - Set_720P60(IS_RX); - video_format = VDO_FMT_720P60; - } - Init_TC3587(0); - I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); } else { - while (cycles) { - if (video_format == VDO_FMT_720P50) { - Init_TC3587(0); - Set_720P50(IS_RX); - } else if (video_format == VDO_FMT_720P60) { - Init_TC3587(0); + if (probe_device()) { + I2C_Write16(ADDR_TC3587, 0x0004, 0x22f); + } else { + if (camera_type == CAMERA_TYPE_RUNCAM_NANO_90) { + Init_TC3587(1); + if (camera_setting_reg_set[11] == 0) { + Set_540P90(0); + video_format = VDO_FMT_540P90; + } else if (camera_setting_reg_set[11] == 1) { + Set_540P90_crop(0); + video_format = VDO_FMT_540P90_CROP; + } else if (camera_setting_reg_set[11] == 2) { + Set_540P60(0); + video_format = VDO_FMT_540P60; + } else if (camera_setting_reg_set[11] == 3) { + Set_960x720P60(0); + video_format = VDO_FMT_960x720P60; + } + I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); + } else if (camera_type == CAMERA_TYPE_RUNCAM_MICRO_V1) { Set_720P60(IS_RX); - } - WAIT(100); - - for (detect_tries = 0; detect_tries < 5; detect_tries++) { - status_reg = ReadReg(0, 0x02); - if ((status_reg >> 4) != 0) { - loss = 1; + Init_TC3587(0); + video_format = VDO_FMT_720P60; + I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); + } else if (camera_type == CAMERA_TYPE_RUNCAM_MICRO_V2 || camera_type == CAMERA_TYPE_RUNCAM_MICRO_V3) { + if (camera_setting_reg_set[11] == 3) { + Set_1080P30(IS_RX); + video_format = VDO_FMT_1080P30; + } else { + Set_720P60(IS_RX); + video_format = VDO_FMT_720P60; } - WAIT(5); - } + Init_TC3587(0); + I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); + } else { + while (cycles) { + if (video_format == VDO_FMT_720P50) { + Init_TC3587(0); + Set_720P50(IS_RX); + } else if (video_format == VDO_FMT_720P60) { + Init_TC3587(0); + Set_720P60(IS_RX); + } + WAIT(100); + + for (detect_tries = 0; detect_tries < 5; detect_tries++) { + status_reg = ReadReg(0, 0x02); + if ((status_reg >> 4) != 0) { + loss = 1; + } + WAIT(5); + } - if (loss == 0) { - camera_type = CAMERA_TYPE_OUTDATED; - break; - } + if (loss == 0) { + camera_type = CAMERA_TYPE_OUTDATED; + break; + } - video_format = (video_format == VDO_FMT_720P60) ? VDO_FMT_720P50 : VDO_FMT_720P60; + video_format = (video_format == VDO_FMT_720P60) ? VDO_FMT_720P50 : VDO_FMT_720P60; - loss = 0; - cycles--; - } + loss = 0; + cycles--; + } - if (cycles == 0) { - Set_720P60(0); - // WriteReg(0, 0x50, 0x01); // Do not output colorbar - video_format = VDO_FMT_720P60; - I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); - camera_type = CAMERA_TYPE_RESERVED; + if (cycles == 0) { + Set_720P60(0); + // WriteReg(0, 0x50, 0x01); // Do not output colorbar + video_format = VDO_FMT_720P60; + I2C_Write16(ADDR_TC3587, 0x0058, 0x00e0); + camera_type = CAMERA_TYPE_RESERVED; + } + } } } camera_ratio_detect(); diff --git a/src/device.rel b/src/device.rel new file mode 100644 index 0000000..ce8a35e --- /dev/null +++ b/src/device.rel @@ -0,0 +1,278 @@ +XH3 +H 1A areas 4 global symbols +M device +O -mmcs51 --model-large +S .__.ABS. Def000000 +S _P0_0 Def000080 +S _P0_1 Def000081 +A _CODE size 0 flags 0 addr 0 +A RSEG size 0 flags 8 addr 0 +A RSEG0 size 0 flags 8 addr 0 +A RSEG1 size 0 flags 8 addr 0 +A REG_BANK_0 size 8 flags 4 addr 0 +A DSEG size 0 flags 0 addr 0 +A ISEG size 0 flags 0 addr 0 +A IABS size 0 flags 8 addr 0 +A BSEG size 0 flags 80 addr 0 +A PSEG size 0 flags 50 addr 0 +A XSEG size 2E flags 40 addr 0 +A XABS size 0 flags 48 addr 0 +A XISEG size 0 flags 40 addr 0 +A HOME size 0 flags 20 addr 0 +A GSINIT0 size 0 flags 20 addr 0 +A GSINIT1 size 0 flags 20 addr 0 +A GSINIT2 size 0 flags 20 addr 0 +A GSINIT3 size 0 flags 20 addr 0 +A GSINIT4 size 0 flags 20 addr 0 +A GSINIT5 size 0 flags 20 addr 0 +A GSINIT size 0 flags 20 addr 0 +A GSFINAL size 0 flags 20 addr 0 +A CSEG size 262 flags 20 addr 0 +S _probe_device Def000246 +A CONST size 0 flags 20 addr 0 +A XINIT size 0 flags 20 addr 0 +A CABS size 0 flags 28 addr 0 +T 00 00 00 +R 00 00 00 02 +T 00 00 00 +R 00 00 00 03 +T 00 00 00 +R 00 00 00 04 +T 00 00 00 +R 00 00 00 0A +T 00 00 00 +R 00 00 00 0A +T 00 00 28 +R 00 00 00 0A +T 00 00 28 +R 00 00 00 0A +T 00 00 2A +R 00 00 00 0A +T 00 00 2A +R 00 00 00 0A +T 00 00 2B +R 00 00 00 0A +T 00 00 2B +R 00 00 00 0A +T 00 00 2C +R 00 00 00 0A +T 00 00 2C +R 00 00 00 0A +T 00 00 2D +R 00 00 00 0A +T 00 00 2D +R 00 00 00 0A +T 00 00 00 +R 00 00 00 16 +T 00 00 00 7F 5B +R 00 00 00 16 +T 00 00 02 +R 00 00 00 16 +T 00 00 02 DF FE 22 +R 00 00 00 16 +T 00 00 05 +R 00 00 00 16 +T 00 00 05 AF 83 E5 82 90 00 28 F0 EF A3 F0 90 +R 00 00 00 16 00 08 00 0A +T 00 00 11 00 28 E0 FE A3 E0 FF +R 00 00 00 16 00 03 00 0A +T 00 00 18 +R 00 00 00 16 +T 00 00 18 8E 04 8F 05 1E BE FF 01 1F +R 00 00 00 16 +T 00 00 21 +R 00 00 00 16 +T 00 00 21 90 00 28 EE F0 EF A3 F0 EC 4D 60 0F 7C +R 00 00 00 16 00 04 00 0A +T 00 00 2E BA 7D 0A +R 00 00 00 16 +T 00 00 31 +R 00 00 00 16 +T 00 00 31 1C BC FF 01 1D +R 00 00 00 16 +T 00 00 36 +R 00 00 00 16 +T 00 00 36 EC 4D 70 F7 80 DC +R 00 00 00 16 +T 00 00 3C +R 00 00 00 16 +T 00 00 3C 90 00 28 EE F0 EF A3 F0 22 +R 00 00 00 16 00 04 00 0A +T 00 00 45 +R 00 00 00 16 +T 00 00 45 D2 81 12 00 00 D2 80 12 00 00 12 +R 00 00 00 16 00 06 00 16 00 0B 00 16 +T 00 00 50 00 00 12 00 00 C2 81 12 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 58 00 00 12 00 00 C2 80 12 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 60 00 00 12 00 00 02 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 66 00 00 +R 00 00 00 16 00 03 00 16 +T 00 00 68 +R 00 00 00 16 +T 00 00 68 12 00 00 12 00 00 C2 81 12 +R 00 00 00 16 00 04 00 16 00 07 00 16 +T 00 00 71 00 00 12 00 00 D2 80 12 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 79 00 00 12 00 00 D2 81 12 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 81 00 00 12 00 00 02 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 00 87 00 00 +R 00 00 00 16 00 03 00 16 +T 00 00 89 +R 00 00 00 16 +T 00 00 89 D2 81 12 00 00 D2 80 12 00 00 A2 81 E4 +R 00 00 00 16 00 06 00 16 00 0B 00 16 +T 00 00 96 33 FF C0 07 12 00 00 C2 80 12 00 00 D0 +R 00 00 00 16 00 08 00 16 00 0D 00 16 +T 00 00 A3 07 8F 82 22 +R 00 00 00 16 +T 00 00 A7 +R 00 00 00 16 +T 00 00 A7 E5 82 90 00 2A F0 7F 00 +R 00 00 00 16 00 06 00 0A +T 00 00 AF +R 00 00 00 16 +T 00 00 AF 90 00 2A E0 23 54 01 60 04 D2 81 80 02 +R 00 00 00 16 00 04 00 0A +T 00 00 BC +R 00 00 00 16 +T 00 00 BC C2 81 +R 00 00 00 16 +T 00 00 BE +R 00 00 00 16 +T 00 00 BE C0 07 12 00 00 D2 80 12 00 00 12 +R 00 00 00 16 00 06 00 16 00 0B 00 16 +T 00 00 C9 00 00 C2 80 12 00 00 D0 07 90 +R 00 00 00 16 00 03 00 16 00 08 00 16 +T 00 00 D3 00 2A E0 25 E0 F0 0F BF 08 00 +R 00 00 00 16 00 03 00 0A +T 00 00 DD +R 00 00 00 16 +T 00 00 DD 40 D0 02 00 89 +R 00 00 00 16 00 06 00 16 +T 00 00 E2 +R 00 00 00 16 +T 00 00 E2 E5 82 90 00 2B F0 90 00 2C E4 F0 FF +R 00 00 00 16 00 06 00 0A 00 0A 00 0A +T 00 00 EE +R 00 00 00 16 +T 00 00 EE C0 07 12 00 00 D2 80 90 00 2C E0 25 E0 +R 00 00 00 16 00 06 00 16 00 0B 00 0A +T 00 00 FB F0 E0 FE A2 81 E4 33 4E F0 12 00 00 12 +R 00 00 00 16 00 0D 00 16 +T 00 01 08 00 00 C2 80 12 00 00 D0 07 0F BF 08 00 +R 00 00 00 16 00 03 00 16 00 08 00 16 +T 00 01 15 +R 00 00 00 16 +T 00 01 15 40 D7 90 00 2B E0 24 FF 92 81 12 00 00 +R 00 00 00 16 00 06 00 0A 00 0E 00 16 +T 00 01 22 D2 80 12 00 00 12 00 00 C2 80 12 +R 00 00 00 16 00 06 00 16 00 09 00 16 +T 00 01 2D 00 00 D2 81 90 00 2C E0 F5 82 22 +R 00 00 00 16 00 03 00 16 00 08 00 0A +T 00 01 38 +R 00 00 00 16 +T 00 01 38 12 00 45 75 82 C9 12 00 A7 E5 82 FF 60 +R 00 00 00 16 00 04 00 16 00 0A 00 16 +T 00 01 45 07 12 00 68 75 82 01 22 +R 00 00 00 16 00 05 00 16 +T 00 01 4D +R 00 00 00 16 +T 00 01 4D 75 82 00 C0 07 12 00 E2 AE 82 D0 07 90 +R 00 00 00 16 00 09 00 16 +T 00 01 5A 00 00 EE F0 BE 04 00 +R 00 00 00 16 00 03 00 0A +T 00 01 61 +R 00 00 00 16 +T 00 01 61 40 08 90 00 00 E0 24 DC 50 07 +R 00 00 00 16 00 06 00 0A +T 00 01 6B +R 00 00 00 16 +T 00 01 6B 12 00 68 75 82 01 22 +R 00 00 00 16 00 04 00 16 +T 00 01 72 +R 00 00 00 16 +T 00 01 72 7E 01 +R 00 00 00 16 +T 00 01 74 +R 00 00 00 16 +T 00 01 74 90 00 00 E0 FD C3 EE 9D 50 51 90 00 00 +R 00 00 00 16 00 04 00 0A 00 0E 00 0A +T 00 01 81 E0 FD 7C 00 1D BD FF 01 1C +R 00 00 00 16 +T 00 01 8A +R 00 00 00 16 +T 00 01 8A 8E 02 7B 00 EA B5 05 0C EB B5 04 08 90 +R 00 00 00 16 +T 00 01 97 00 2D 74 01 F0 80 05 +R 00 00 00 16 00 03 00 0A +T 00 01 9E +R 00 00 00 16 +T 00 01 9E 90 00 2D E4 F0 +R 00 00 00 16 00 04 00 0A +T 00 01 A3 +R 00 00 00 16 +T 00 01 A3 EE 24 00 00 00 FC E4 34 00 00 00 FD 90 +R 00 00 00 16 F1 01 05 00 0A F1 81 0B 00 0A +T 00 01 AC 00 2D E0 F5 82 C0 07 C0 06 C0 05 C0 04 +R 00 00 00 16 00 03 00 0A +T 00 01 B9 12 00 E2 AB 82 D0 04 D0 05 D0 06 D0 07 +R 00 00 00 16 00 04 00 16 +T 00 01 C6 8C 82 8D 83 EB F0 0E 80 A5 +R 00 00 00 16 +T 00 01 CF +R 00 00 00 16 +T 00 01 CF C0 07 12 00 68 D0 07 8F 82 22 +R 00 00 00 16 00 06 00 16 +T 00 01 D9 +R 00 00 00 16 +T 00 01 D9 D2 81 D2 80 12 00 00 7F 03 +R 00 00 00 16 00 08 00 16 +T 00 01 E2 +R 00 00 00 16 +T 00 01 E2 8F 06 1F EE 60 36 C0 07 12 00 45 C2 81 +R 00 00 00 16 00 0C 00 16 +T 00 01 EF 90 00 01 12 00 05 D2 81 75 82 00 12 +R 00 00 00 16 00 07 00 16 +T 00 01 FB 00 A7 12 00 68 90 00 05 12 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 02 04 00 05 12 01 38 E5 82 D0 07 70 03 F5 82 +R 00 00 00 16 00 03 00 16 00 06 00 16 +T 00 02 11 22 +R 00 00 00 16 +T 00 02 12 +R 00 00 00 16 +T 00 02 12 90 00 05 C0 07 12 00 05 D0 07 80 C4 +R 00 00 00 16 00 09 00 16 +T 00 02 1E +R 00 00 00 16 +T 00 02 1E 75 82 01 22 +R 00 00 00 16 +T 00 02 22 +R 00 00 00 16 +T 00 02 22 12 00 45 75 82 C8 12 00 A7 AF 82 75 82 +R 00 00 00 16 00 04 00 16 00 0A 00 16 +T 00 02 2F 01 C0 07 12 00 A7 AE 82 D0 07 EE 42 07 +R 00 00 00 16 00 07 00 16 +T 00 02 3C C0 07 12 00 68 D0 07 8F 82 22 +R 00 00 00 16 00 06 00 16 +T 00 02 46 +R 00 00 00 16 +T 00 02 46 12 01 D9 E5 82 70 0A 90 00 00 E0 FF BF +R 00 00 00 16 00 04 00 16 00 0B 00 0A +T 00 02 53 04 02 80 04 +R 00 00 00 16 +T 00 02 57 +R 00 00 00 16 +T 00 02 57 +R 00 00 00 16 +T 00 02 57 75 82 01 22 +R 00 00 00 16 +T 00 02 5B +R 00 00 00 16 +T 00 02 5B 12 02 22 75 82 00 22 +R 00 00 00 16 00 04 00 16