diff --git a/Operating_Instructions.txt b/Operating_Instructions.txt new file mode 100644 index 0000000..4db32c4 --- /dev/null +++ b/Operating_Instructions.txt @@ -0,0 +1,61 @@ +Instructions +============== + +Normal dialing +============== + +Just pull the dial round from the desired number to the fingerstop and release immediately. + +Dialing * and # +=============== + +for * pull the dial from "1" and hold on the fingerstop for 2 seconds until you hear a beep, release, and a tone for * will be generated. + +For # do the same but use "2". + +Redial +====== + +Pull the dial around from "3" and hold on the fingerstop for 2 seconds. Release when you hear the beep, and the last number will be redialed. + +Speed dials +=========== + +There are 7 speed dial locations. 0, 4, 5, 6, 7, 8, 9. Pull the dial around to the fingerstop and hold for 2 seconds, release when you hear the beep and the desired number will be dialed. + +Programming a speed dial +======================== + +Pull the number of the desired location around to the fingerstop and hold for 4 seconds, you will hear a quick rising-tone beep. Release the dial. + +You are now in programming mode. Now simply dial out the number you wish to store, releasing the dial immediately after each digit. You will hear a simple beep after digit. Once complete, hang up, the number is now saved. + +Up to 32 digits may be saved in each speed dial location. If you enter too many digits a warning beep sequence will sound. + +If you want to program another number without hanging up, just finish programming the last number, then select the next memory location to store by holding that digit against the finger stop. Allow the modes to cycle (single beep > rising beeps) until the rapidly rising beep tone is heard and release the dial. Program the number for this location as above. + +When doing this you will likely have your telephone exchange furiously beeping at you because you haven"t dialed a number. If annoying, you should dial a number known to be busy or with a recording, while programming. + +Hotline Feature +=============== + +The device can automatically dial a pre-programmed number when the receiver is taken off-hook. + +Program the desired hotline number into memory "0" as described above. + +Dial and hold the "1" digit against the finger stop for 4 seconds until a beep is heard. Release the dial. A series of slow ascending tones will sound, followed by one beep, indicating the hotdial feature is now active and set for one second delay from off-hook to dial. + +Repeat the process. Two beeps will be heard, indicating a two-second delay is active. Three and four second delays may be set in a similar fashion. + +After setting a four second delay, if the programming sequence is repeated, s slow descending series of tones will be heard. indicating the hotline feature is disabled. + +Hotline settings are saved in nonvolatile EEPROM memory. + + +Adjusting tone length +===================== +The length of each DTMF tone may be set, from the default of 100 milliseconds. Supported lengths are 50ms, 100ms, 150ms, and 200ms. + +Dial and hold the "2" digit against the finger stop for 4 seconds until a beep is heard. Release the dial. A sequence of beeps will play, indicating the set digit duration. One beep = 50ms, two beeps = 100ms, three beeps = 150ms, and four beeps = 200ms. The setting wraps back from 200ms to 50ms. + +The tone duration setting is saved in nonvolatile EEPROM memory. diff --git a/README.md b/README.md new file mode 100644 index 0000000..75c31d3 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +This code is a branch from Matthew Millman's excellent Pulse > DTMF converter project, which converts a rotary dial telephone to DTMF operation. + +I cleaned up a few operating anomalies and added adjustable DTMF tone length (saved in EEPROM) and a "hotline" mode that auto-dials the number stored in speed dial location zero whenever the phone is taken off-hook. + +The time between going off-hook and the start of dialing is adjustable and also saved in EEPROM. + +I updated the hardware design schematics to include a diode bridge for polarity protection, as the voltage regulator used is subject to damage if the telephone wiring is polarity reversed from the standard arrangement. + +I also added a zener diode to the circuit to assure sufficient voltage is available to the input of the voltage regulator for most telephones and loop currents. + +Without the zener diode, certain ATAs with low voltage/current or telephones with low internal network resistance would not develop enough voltage drop to power the unit reliably. + +Bugs fixed are the failure to return to normal dialing mode after speed dialing or playing the * or # tones. This made it impossible to use DTMF on a connected call after initial dialing. + +I also made it possible to save the * and # tones in speed dial and last number memories. diff --git a/WE_500_Step_by_Step_Installation b/WE_500_Step_by_Step_Installation new file mode 100644 index 0000000..ad9d864 --- /dev/null +++ b/WE_500_Step_by_Step_Installation @@ -0,0 +1,27 @@ +Here are step-by step instructions for a Western Electric 500 set or equivalent. +Reference the schematic of the phone in we_500_schematic.jpg from Github. + +First, connect the two sets of dial contacts to the circuit. + +- In the phone, find the two white wires coming from the telephone dial. +- Disconnect the white wire from the dial going to the terminal marked "GN" on the phone network. Leave other wires on "GN" connected. +- Connect the wire that went to "GN" to the wire leading to Pin 6 of the ATTINY85. +- Disconnect the other white wire from the dial going to the terminal marked "R" in the phone. +- Connect this white wire to the negative side of the converter circuit or "ground". +- Disconnect the blue wire from the telephone dial from terminal "F" in the phone. +- Connect the blue wire to the wire leading to Pin 7 of the ATTINY85. +- Disconnect the green wire from the terminal marked "RR" in the phone. +- Connect this green wire to the negative side of the converter circuit or "ground". + +Next, connect the circuit into the line connections of the phone AFTER the hookswitch: + +- Disconnect the slate-colored wired with white bands coming from the hook switch contacts from the terminal marked "F" (possibly "RR") in the phone. +- Connect this wire to the circuit wire going to one of the AC input points on the polarity guard diode bridge. This will be where an anode and cathode connection from two diodes meet. +- Disconnect the slate-colored wired with brown bands coming from the hook switch contacts from the terminal marked "C" in the phone. +- Connect this wire to the circuit wire going to the other AC input points on the polarity guard diode bridge. This will be where an anode and cathode connection from two diodes meet. +- Connect a wire from the negative or "ground" point of the circuit to the terminal marked "C" in the phone. +- Connect the wire leading to the anode of the 5.1 volt zener diode in the circuit to the terminal marked "RR" in the phone. + +That's it! The circuit should be active when you pick up the phone. You should hear clicks when dialing, followed by the corresponding DTMF tone. + +Verify that incoming calls ring the phone. diff --git a/attiny85_fuse_settings.txt b/attiny85_fuse_settings.txt new file mode 100644 index 0000000..02d90d9 --- /dev/null +++ b/attiny85_fuse_settings.txt @@ -0,0 +1,5 @@ +Correctly set fuse bytes: + +LFUSE: 0xFD +HFUSE: 0xDF +EFUSE: 0xFF \ No newline at end of file diff --git a/dtmf.c b/dtmf.c index bddc033..f7657a2 100644 --- a/dtmf.c +++ b/dtmf.c @@ -183,6 +183,18 @@ void dtmf_generate_tone(int8_t digit, uint16_t duration_ms) sleep_ms(duration_ms / 3); _g_stepwidth_a = 51; // G=784Hz sleep_ms(duration_ms / 3); + } + else if (digit == DIGIT_TUNE_ASC2) + { + _g_stepwidth_a = 85; // 1300Hz + _g_stepwidth_b = 0; + dtmf_enable_pwm(); + + sleep_ms(duration_ms / 6); + _g_stepwidth_a = 98; // 1500Hz + sleep_ms(duration_ms / 6); + _g_stepwidth_a = 111; // 1700Hz + sleep_ms(duration_ms / 6); } else if (digit == DIGIT_TUNE_DESC) { @@ -196,6 +208,18 @@ void dtmf_generate_tone(int8_t digit, uint16_t duration_ms) _g_stepwidth_a = 34; // C=523.25Hz sleep_ms(duration_ms / 3); } + else if (digit == DIGIT_TUNE_DESC2) + { + _g_stepwidth_a = 111; // 1700Hz + _g_stepwidth_b = 0; + dtmf_enable_pwm(); + + sleep_ms(duration_ms / 6); + _g_stepwidth_a = 98; // 1500Hz + sleep_ms(duration_ms / 6); + _g_stepwidth_a = 85; // 1300Hz + sleep_ms(duration_ms / 6); + } // Stop DTMF transmitting // Disable PWM output (compare match mode 0) and force it to 0 @@ -258,4 +282,4 @@ void sleep_ms(uint16_t msec) { sleep_mode(); } -} \ No newline at end of file +} diff --git a/dtmf.h b/dtmf.h index 5c2e669..b93b79e 100644 --- a/dtmf.h +++ b/dtmf.h @@ -28,6 +28,8 @@ #define DIGIT_BEEP_LOW -13 #define DIGIT_TUNE_ASC -11 #define DIGIT_TUNE_DESC -12 +#define DIGIT_TUNE_ASC2 -14 +#define DIGIT_TUNE_DESC2 -15 #define DIGIT_OFF -1 #define DIGIT_STAR 10 #define DIGIT_POUND 11 diff --git a/generic_schematic.jpg b/generic_schematic.jpg new file mode 100644 index 0000000..21abf40 Binary files /dev/null and b/generic_schematic.jpg differ diff --git a/main.c b/main.c index 436010d..516ebc0 100644 --- a/main.c +++ b/main.c @@ -14,6 +14,13 @@ // Cleaned up implementation, modified to work more like the // Rotatone commercial product. // +// Modified : Donald Froula 2019-07-31 +// http://projectmf.homelinux.com/pulsetotone +// Fixed not returning to normal dialing mode after * or # dialing or redial function. +// Added support for storing * and # in both redial and speed dial memories. +// Added hotline mode and EEPROM storage, shortened time to dial # and *. +// Added programmable digit length and hotdelay delay, EEPROM saved. +// // This code is distributed under the GNU Public License // which can be found at http://www.gnu.org/licenses/gpl.txt // @@ -52,7 +59,9 @@ #define SLEEP_64MS 0x00 #define SLEEP_128MS 0x01 -#define SLEEP_2S 0x02 +#define SLEEP_500MS 0x02 +#define SLEEP_1S 0x03 +#define SLEEP_2S 0x04 #define SPEED_DIAL_COUNT 8 // 8 Positions in total (Redail(3),4,5,6,7,8,9,0) #define SPEED_DIAL_REDIAL (SPEED_DIAL_COUNT - 1) @@ -61,6 +70,14 @@ #define L2_POUND 2 #define L2_REDIAL 3 +#define FEAT_HOTLINE 0 //Bit position, not value + +#define DTMF_DURATION_UNIT 50 //Base unit of DTMF duration in milliseconds + +#define FEAT_EE 511 //Storage for feature flag - last location in EEPROM +#define HOTLINE_DELAY_EE 510 //Storage for hotline delay +#define DTMF_DURATION_EE 509 //Storage for DTMF duration + typedef struct { uint8_t state; @@ -72,6 +89,12 @@ typedef struct int8_t dialed_digit; } runstate_t; +int8_t pending_digit = 0; //(DRF) Stores * or # for injecting into main loop after dialing so they are picked up by the redial and programming functions. +int8_t prev_state; //(DRF) Keeps track of the previous state whenever a state change occurs. +uint8_t feature_flags = 0; //(DRF) Feature flags +uint8_t hotline_delay = 1; //(DRF) Actual delay is 1000ms * this value, 1 second default +uint8_t dtmf_duration = 2; //(DRF) DTMF tone and space duration * 50 milliseconds (default 100ms) + static void init(void); static void process_dialed_digit(runstate_t *rs); static void dial_speed_dial_number(int8_t *speed_dial_digits, int8_t index); @@ -122,9 +145,40 @@ int main(void) for (uint8_t i = 0; i < SPEED_DIAL_SIZE; i++) rs->speed_dial_digits[i] = DIGIT_OFF; + + //(DRF)Retrieve feature flags + feature_flags = eeprom_read_byte((uint8_t*)FEAT_EE); + + //Initialize EEPROM location, if needed + if(feature_flags > (1 << FEAT_HOTLINE)){ + feature_flags = 0; + eeprom_write_byte((uint8_t*)FEAT_EE, feature_flags); + } + + //Retrieve hotline delay + hotline_delay = eeprom_read_byte((uint8_t*)HOTLINE_DELAY_EE); + + //Initialize EEPROM location, if needed + if((hotline_delay > 4) || (hotline_delay < 1)){ + hotline_delay = 1; + eeprom_write_byte((uint8_t*)HOTLINE_DELAY_EE, hotline_delay); + } + + //Retrieve DTMF duration + dtmf_duration = eeprom_read_byte((uint8_t*)DTMF_DURATION_EE); + + //Initialize EEPROM location, if needed + if((dtmf_duration > 4) || (dtmf_duration < 1)){ + dtmf_duration = 2; //* Initialize to 100ms + eeprom_write_byte((uint8_t*)DTMF_DURATION_EE, dtmf_duration); + } + + //(DRF)For Hotline operation, dial location zero on powerup if enabled + if(feature_flags & (1 << FEAT_HOTLINE)){sleep_ms(hotline_delay * 1000); dial_speed_dial_number(rs->speed_dial_digits, _g_speed_dial_loc[0]);} while (1) - { + { + rs->dial_pin_state = bit_is_set(PINB, PIN_DIAL); if (dial_pin_prev_state != rs->dial_pin_state) @@ -143,6 +197,7 @@ int main(void) { // Disable SF detection (should be already disabled) rs->flags = F_NONE; + // Check that we detect a valid digit if (rs->dialed_digit <= 0 || rs->dialed_digit > 10) @@ -177,7 +232,8 @@ int main(void) if (rs->dial_pin_state) { // Rotary dial at the rest position - // Reset all variables + // Reset all variablesrs->state + prev_state = rs->state; rs->state = STATE_DIAL; rs->flags = F_NONE; rs->dialed_digit = DIGIT_OFF; @@ -185,12 +241,15 @@ int main(void) } dial_pin_prev_state = rs->dial_pin_state; + + //(DRF) If a pending * or # digit has been saved, play it immediately after returning to normal dial mode + if(pending_digit){rs->dialed_digit = pending_digit; pending_digit = 0; process_dialed_digit(rs);} // Don't power down if special function detection is active if (rs->flags & F_DETECT_SPECIAL_L1) { // Put MCU to sleep - to be awoken either by pin interrupt or WDT - wdt_timer_start(SLEEP_2S); + wdt_timer_start(SLEEP_2S); start_sleep(); // Special function mode detected? @@ -198,6 +257,7 @@ int main(void) { // SF mode detected rs->flags &= ~F_WDT_AWAKE; + prev_state = rs->state; rs->state = STATE_SPECIAL_L1; rs->flags &= ~F_DETECT_SPECIAL_L1; rs->flags |= F_DETECT_SPECIAL_L2; @@ -216,6 +276,7 @@ int main(void) { // SF mode detected rs->flags &= ~F_WDT_AWAKE; + prev_state = rs->state; rs->state = STATE_SPECIAL_L2; rs->flags &= ~F_DETECT_SPECIAL_L2; @@ -240,7 +301,7 @@ static void process_dialed_digit(runstate_t *rs) { // Standard (no speed dial, no special function) mode // Generate DTMF code - dtmf_generate_tone(rs->dialed_digit, DTMF_DURATION_MS); + dtmf_generate_tone(rs->dialed_digit, dtmf_duration * DTMF_DURATION_UNIT); if (rs->speed_dial_digit_index < SPEED_DIAL_SIZE) { @@ -256,12 +317,14 @@ static void process_dialed_digit(runstate_t *rs) if (rs->dialed_digit == L2_STAR) { // SF 1-* - dtmf_generate_tone(DIGIT_STAR, DTMF_DURATION_MS); + //dtmf_generate_tone(DIGIT_STAR, dtmf_duration * DTMF_DURATION_UNIT); + pending_digit = DIGIT_STAR; //(DRF) Just push the tone to the pending_digit variable to be played immediately when returned to STATE_DIAL } else if (rs->dialed_digit == L2_POUND) { // SF 2-# - dtmf_generate_tone(DIGIT_POUND, DTMF_DURATION_MS); + //dtmf_generate_tone(DIGIT_POUND, dtmf_duration * DTMF_DURATION_UNIT); + pending_digit = DIGIT_POUND; //(DRF) Just push the tone to the pending_digit variable to be played immediately when returned to STATE_DIAL } else if (rs->dialed_digit == L2_REDIAL) { @@ -273,6 +336,9 @@ static void process_dialed_digit(runstate_t *rs) // Call speed dial number dial_speed_dial_number(rs->speed_dial_digits, _g_speed_dial_loc[rs->dialed_digit]); } + rs->state = prev_state; //(DRF) Return to the previous state after entering STATE_SPECIAL_L1. Allows normal dialing after using + //special functions, not possible before the fix. Also allows * and # to be programmed into speed dial, + //returning to programming mode if a * or # is dialed while programming. } else if (rs->state == STATE_SPECIAL_L2) { @@ -283,12 +349,54 @@ static void process_dialed_digit(runstate_t *rs) for (uint8_t i = 0; i < SPEED_DIAL_SIZE; i++) rs->speed_dial_digits[i] = DIGIT_OFF; - + prev_state = rs->state; rs->state = STATE_PROGRAM_SD; } + //Set Hotline flag and cycle through delays + else if(rs->dialed_digit == 1){ + if(feature_flags & (1 << FEAT_HOTLINE)){ //If feature is "on"... + hotline_delay += 1; //Increase the delay by one second + if(hotline_delay > 4){ + hotline_delay = 1; + feature_flags &= ~(1 << FEAT_HOTLINE); //Turn off the hotline feature if more than 4 seconds + dtmf_generate_tone(DIGIT_TUNE_DESC2, 800); + } + else{ + for(int i=1; i<=hotline_delay; i++){ //Beep out number of seconds set + dtmf_generate_tone(DIGIT_BEEP_LOW, 200); + sleep_ms(200); + } //Beep out number of seconds set + } + } + else { //If hotline feature is off + feature_flags |= (1 << FEAT_HOTLINE); //Turn it on + for(int i=1; i<=hotline_delay; i++){ + if(i == 1){dtmf_generate_tone(DIGIT_TUNE_ASC2, 800); sleep_ms(200);} + dtmf_generate_tone(DIGIT_BEEP_LOW, 200); + sleep_ms(200); + } //Beep out number of seconds set + } + eeprom_write_byte((uint8_t*)FEAT_EE,feature_flags); + eeprom_write_byte((uint8_t*)HOTLINE_DELAY_EE, hotline_delay); + prev_state = rs->state; + rs->state = STATE_DIAL; + } + //Cycle through DTMF duration settings in 50ms steps + else if(rs->dialed_digit == 2){ + dtmf_duration += 1; //Increase the duration by 50ms + if(dtmf_duration > 4){dtmf_duration = 1;} + for(int i=1; i<=dtmf_duration; i++){ //Beep out number of 50ms units set + dtmf_generate_tone(DIGIT_BEEP, 200); + sleep_ms(200); + } + eeprom_write_byte((uint8_t*)DTMF_DURATION_EE, dtmf_duration); + prev_state = rs->state; + rs->state = STATE_DIAL; + } else { - // Not a speed dial position. Revert back to ordinary dial + // Not a speed dial position. Revert back to ordinary dial + prev_state = rs->state; rs->state = STATE_DIAL; } } @@ -298,6 +406,7 @@ static void process_dialed_digit(runstate_t *rs) if (rs->speed_dial_digit_index >= SPEED_DIAL_SIZE) { // Exit speed dial mode + prev_state = rs->state; rs->state = STATE_DIAL; // Beep to indicate that we done dtmf_generate_tone(DIGIT_TUNE_DESC, 800); @@ -309,7 +418,7 @@ static void process_dialed_digit(runstate_t *rs) rs->speed_dial_digit_index++; // Generic beep - do not gererate DTMF code - dtmf_generate_tone(DIGIT_BEEP_LOW, DTMF_DURATION_MS); + dtmf_generate_tone(DIGIT_BEEP_LOW, dtmf_duration * DTMF_DURATION_UNIT); } // Write SD on every digit so user can hang up to save @@ -330,9 +439,9 @@ static void dial_speed_dial_number(int8_t *speed_dial_digits, int8_t index) // Skip dialing invalid digits if (speed_dial_digits[i] >= 0 && speed_dial_digits[i] <= DIGIT_POUND) { - dtmf_generate_tone(speed_dial_digits[i], DTMF_DURATION_MS); + dtmf_generate_tone(speed_dial_digits[i], dtmf_duration * DTMF_DURATION_UNIT); // Pause between DTMF tones - sleep_ms(DTMF_DURATION_MS); + sleep_ms(dtmf_duration * DTMF_DURATION_UNIT); } } } @@ -386,6 +495,11 @@ static void wdt_timer_start(uint8_t delay) case SLEEP_128MS: WDTCR = _BV(WDIE) | _BV(WDP1) | _BV(WDP0); break; + case SLEEP_500MS: + WDTCR = _BV(WDIE) | _BV(WDP0) | _BV(WDP2); // 500ms + case SLEEP_1S: + WDTCR = _BV(WDIE) | _BV(WDP1) | _BV(WDP2); // 1024ms + break; case SLEEP_2S: WDTCR = _BV(WDIE) | _BV(WDP0) | _BV(WDP1) | _BV(WDP2); // 2048ms break; @@ -440,4 +554,4 @@ ISR(BADISR_vect) ISR(WDT_vect) { _g_run_state.flags |= F_WDT_AWAKE; -} \ No newline at end of file +} diff --git a/rotarydial.hex b/rotarydial.hex index 31b1bd6..79fd4f7 100644 --- a/rotarydial.hex +++ b/rotarydial.hex @@ -1,116 +1,163 @@ -:100000000EC07EC092C026C025C0C6C023C022C07C -:1000100021C020C01FC01EC08AC01CC01BC011242C +:100000000EC05DC073C026C025C0EEC223C022C092 +:1000100021C020C01FC01EC07DC01CC01BC0112439 :100020001FBECFE5D2E0DEBFCDBF11E0A0E6B0E05D -:10003000EEE7F6E002C005900D92A230B107D9F7C5 -:1000400021E0A2E0B1E001C01D92A233B207E1F7C6 -:10005000A0D113C36BC0A895F89414BE91B5986154 -:1000600091BD813031F0823031F082E481BD7894ED -:10007000089583E4FBCF87E4F9CFA895F89414BEE4 -:1000800081B5886181BD11BC7894089585B7877E5C -:10009000806185BFF89485B7806285BF85B7846825 -:1000A00085BF8B7F85BF7894889585B78F7D85BF09 -:1000B00008950F931F93CF93DF938C01062E000CAE -:1000C000770B85E0660F771F8A95E1F760507040E7 -:1000D00040E250E0C801A0D2E801005E1F4F8991C4 -:1000E0008C3030F464E670E0F6D084E690E0CDD059 -:1000F000C017D107A1F7DF91CF911F910F910895FC -:100100001F921FB61F9211248F93809104018111B9 -:1001100007C010920301809127018F5F8093270110 -:100120008F911F901FBE1F901895189518958F934B -:100130008FB78F93EF93FF93E2E0F1E081818460CA -:100140008183FF91EF918F918FBF8F9118958AB521 -:1001500080688ABD8AB58F7B8ABD089582E089BF99 -:1001600083E08ABD81E083BF12BE19BCB89A1092A9 -:100170002F0110922C0110922E0110922D0110923D -:100180003101109230011092280110922901109231 -:100190002A0110922B0108950F920FB60F921F9211 -:1001A00011242F933F934F935F938F939F93AF931C -:1001B000BF93EF93FF9380912F0120912D013091F8 -:1001C0002E01820F932F911D90932E0180932D016C -:1001D000E0912D01F0912E01349633E0F695E795EC -:1001E0003A95E1F7EF770E2E000CFF0BEE57FF4F1D -:1001F000808190912C01992309F445C020912C0114 -:100200004091300150913101240F352F311D309331 -:10021000310120933001E0913001F09131013496A9 -:1002200093E0F695E7959A95E1F7EF770E2E000C9F -:10023000FF0BEE57FF4F9081890F96959695891B7E -:1002400089BD8091280190912901A0912A01B09146 -:100250002B010196A11DB11D8093280190932901C6 -:10026000A0932A01B0932B01FF91EF91BF91AF9121 -:100270009F918F915F914F913F912F911F900F9080 -:100280000FBE0F90189590E0D7CF109228011092D2 -:10029000290110922A0110922B0125B7277E25BF34 -:1002A0006FE070E094D1B0E0A0E04091280150915F -:1002B000290160912A0170912B0184179507A607E7 -:1002C000B70708F4089525B7206225BF889525B79C -:1002D0002F7D25BFEACFCF93DF93EB011BBE8C3080 -:1002E000F0F4E82FEE0FFF0BE659FF4F808180936B -:1002F0002F01818180932C012ADFCE01C6DF8AB5D0 -:100300008F778ABD8AB58F7B8ABDC09810922F01E6 -:1003100010922C0180E68BBFDF91CF910895863F2C -:1003200031F482E480932F0110922C01E5CF833FBA -:1003300011F481E2F7CF853FB1F482E280932F017F -:1003400010922C0104DFCE0163E070E051D1EB018B -:10035000CB019BDF8BE280932F01CE0196DF83E3FD -:1003600080932F01CACF843F51F683E380932F01FE -:1003700010922C01ECDECE0163E070E039D1EB018C -:10038000CB0183DF8BE280932F01CE017EDF82E2FF -:10039000E7CF90E896BD16BC88B3866088BB8BE03B -:1003A00080BD98B983E085BF80E68BBF86E085BBC2 -:1003B000789481E050DE6ADE60DED0DE10920201C9 -:1003C00081E08093040110920301109206011092C3 -:1003D0000501E7E0F1E08FEF819391E0E732F90763 -:1003E000D9F701E0D1E0CFEF13E026B3922F92705E -:1003F00021FB882780F980930401801709F4BEC08F -:10040000911122C0809103018160809303011092B9 -:10041000270180E020DE3ADE009104018091030193 -:1004200080FFB6C082E017DE31DE8091030182FFDB -:10043000DCCFD09302018A7F82608093030168EC55 -:1004400070E083EF48DFD1CF109203018091270144 -:100450009FEF980F9A3018F0C0932701DACF8A30B7 -:1004600011F41092270181E0F6DD10DE06DE8091A6 -:10047000020181111BC064E670E0809127012BDF2F -:1004800080910601803240F6E82FF0E0EE5FFE4FEB -:100490009091270195838F5F8093060140E250E0A1 -:1004A00060EE70E087E091E0C7D0B6CF8130F1F424 -:1004B000E091270164E670E08AE0E13029F0E23063 -:1004C00029F464E670E08BE006DFA6CF67E0E33056 -:1004D00049F00E2E000CFF0BE05AFF4F6081683090 -:1004E00008F09ACF87E091E0E4DD96CF8230D9F42E -:1004F000E09127010E2E000CFF0BE05AFF4F808188 -:1005000087FD0EC08093050110920601E7E0F1E03F -:10051000C19381E0E732F807D9F7109302017CCF4D -:100520001092020179CF833009F076CF80910601D5 -:100530008032B0F01092020160E273E084EFCBDE13 -:1005400060910501683008F067CF70E085E0660FC4 -:10055000771F8A95E1F76050704040E250E0A2CFEB -:10056000E82FF0E0EE5FFE4F9091270195838F5FBB -:100570008093060164E670E083EFE1CF992309F4EC -:100580004BCF1092020110920301C093270144CF78 -:1005900081FF11C082E05FDD79DD8091030182FF80 -:1005A00024CF92E090930201897F8093030168EC4D -:1005B00070E085EF47CF85B7877E806185BF85B7BF -:1005C000806285BF889585B78F7D85BF0ECF00245B -:1005D000552704C0080E591F880F991F009729F04E -:1005E00076956795B8F37105B9F7802D952F089525 -:1005F000AA1BBB1B51E107C0AA1FBB1FA617B70749 -:1006000010F0A61BB70B881F991F5A95A9F7809564 -:100610009095BC01CD010895DC01CB01FC01E1996D -:10062000FECF06C0FFBBEEBBE09A31960DB20D9235 -:1006300041505040B8F70895DC01A40FB51F415058 -:10064000504040F0CB01840F951F2E9105D04150B2 -:100650005040D8F70895262FE199FECF9FBB8EBB5F -:10066000E09A01970DB2021639F01CBA2DBB0FB6F5 -:0E067000F894E29AE19A0FBE0895F894FFCF35 -:10067E0000FFFFFF010203040506573D4F2E572EC4 -:10068E00602E4F32573260324F38573860384F3DF8 -:10069E00603D404346494C4F5255585B5E60636621 -:1006AE00686A6D6F7173757678797B7C7D7E7E7FDF -:1006BE007F7F7F7F7F7F7E7E7D7C7B797876757373 -:1006CE00716F6D6A686663605E5B5855524F4C4938 -:1006DE004643403C393633302D2A2724211F1C191E -:1006EE00171512100E0C0A09070604030201010069 -:1006FE0000000000000001010203040607090A0CB5 -:10070E000E10121517191C1F2124272A2D303336CF -:02071E00393C64 +:10003000E2E6F9E002C005900D92A430B107D9F7CD +:1000400011E0A4E0B1E001C01D92A733B107E1F7D0 +:10005000B5D185C455C0982FA895F89414BE81B524 +:10006000886181BD923081F0933028F4992341F06A +:10007000913081F407C0933049F0943059F408C0AE +:1000800082E407C083E405C085E481BD86E401C045 +:1000900087E481BD7894089585B7877E806185BFA8 +:1000A000F89485B7806285BF85B7846885BF8B7FEC +:1000B00085BF7894889585B78F7D85BF08951F92F9 +:1000C0000F920FB60F9211248F938091080188230D +:1000D00039F41092070180912B018F5F80932B01DF +:1000E0008F910F900FBE0F901F9018951F920F9237 +:1000F0000FB60F9211240F900FBE0F901F901895FE +:100100001F920F920FB60F9211240F900FBE0F90F7 +:100110001F9018951F920F920FB60F9211248F9374 +:10012000809107018460809307018F910F900FBE2B +:100130000F901F9018950F931F93CF93DF938C010F +:10014000683050F5772767FD709585E0660F771F5B +:100150008A95E1F760507040C80140E250E0B8D3A2 +:10016000C0E0D0E0F801EC0FFD1FE081EC3080F43E +:100170008091610090E062E370E084D3BC018E2F37 +:10018000CED28091610090E062E370E07BD3A0D298 +:100190002196C032D10531F7DF91CF911F910F9198 +:1001A00008950F931F93CF93DF93EC0188818823E9 +:1001B000C9F48091610090E062E370E063D3BC0118 +:1001C0008DA1ADD29C81903208F0F3C0FE01E90F01 +:1001D000F11D8DA185839F5F9C83CE01059660EE06 +:1001E00070E0E4C08130F9F4EDA1E13011F48AE06F +:1001F00003C0E23021F48BE08093040111C0E330AE +:1002000021F4CE01059667E00AC0FF27E7FDF095CF +:10021000EE59FF4F608167FD03C0CE0105968BDF6D +:1002200080912C011BC0823009F095C02DA1E22FD6 +:10023000FF27E7FDF095EE59FF4FE081E7FD10C085 +:10024000EB831C82FE0180E09FEF95838F5F3196E8 +:100250008032D9F7888180932C0183E08883A9C0FC +:10026000213009F051C09091050190FF24C0809188 +:1002700060008F5F80936000853018F401E010E02B +:1002800013C0209360009E7F9093050181EF60E290 +:1002900073E045D22FC083EF68EC70E040D288EC69 +:1002A00090E016D20F5F1F4F8091600090E08017A2 +:1002B00091078CF71FC091609093050101E010E059 +:1002C00013C00130110539F482EF60E273E027D2E8 +:1002D00088EC90E0FDD183EF68EC70E020D288ECF0 +:1002E00090E0F6D10F5F1F4F8091600090E0801783 +:1002F00091073CF78FEF91E06091050122D38EEFDB +:1003000091E06091600021C0223009F58091610088 +:100310008F5F80936100853018F081E080936100E9 +:1003200001E010E009C086EF68EC70E0F8D188ECDD +:1003300090E0CED10F5F1F4F60916100862F90E05B +:100340008017910784F78DEF91E0FBD2888180932D +:100350002C0118822EC0833061F59C81903238F0D8 +:1003600080932C01188284EF60E273E00FC0FE01DD +:10037000E90FF11D8DA185839F5F9C8380916100B2 +:1003800090E062E370E07ED2BC0183EFC8D16B8164 +:10039000683078F4772767FD709595E0660F771FD2 +:1003A0009A95E1F760507040CE01059640E250E02A +:1003B000A7D2DF91CF911F910F910895FF920F93D4 +:1003C0001F9390E896BD16BC88B3866088BB8BE00F +:1003D00080BD98B983E085BF80E68BBF86E085BB92 +:1003E000789481E038DE58DEA895F89414BE81B583 +:1003F000886181BD11BC7894D9D01092060181E04A +:10040000809308011092070110920A0110920901CD +:10041000EBE0F1E08FEF819391E0EB32F907D9F750 +:100420008FEF91E065D280930501823030F0109219 +:1004300005018FEF91E060E084D28EEF91E058D219 +:10044000809360008150843038F081E080936000B8 +:100450008EEF91E061E075D28DEF91E049D280930B +:1004600061008150843038F082E0809361008DEF2C +:1004700091E062E066D28091050180FF0BC080911F +:10048000600090E068EE73E0FDD122D18BE091E056 +:1004900060E051DE11E00FEF32E0F32E86B390E022 +:1004A00096958795817080930801181759F18823D4 +:1004B00041F48091070181608093070110922B0124 +:1004C0000AC01092070190912B01892F81508A3028 +:1004D00030F000932B0180E0BEDDDEDD1FC09A30DE +:1004E00011F410922B0181E0B6DDD6DDA895F894C9 +:1004F00014BE81B5886181BD11BC789486E091E01D +:1005000050DE0CC0112351F08091060180932C0124 +:10051000109206011092070100932B01109108011F +:1005200080910401882339F080932B0110920401FB +:1005300086E091E036DE8091070180FF14C084E000 +:100540008ADDAADD9091070192FFA8CF8091060174 +:1005500080932C0181E0809306019A7F92609093B2 +:10056000070183EF13C081FF15C084E074DD94DDC3 +:100570009091070192FF92CF8091060180932C0108 +:10058000F0920601997F9093070185EF68EC70E087 +:10059000C6D084CF85B7877E806185BF85B78062EE +:1005A00085BF889585B78F7D85BF78CF82E089BF6D +:1005B00083E08ABD81E083BF12BE19BCB89A109255 +:1005C00034011092310110923301109232011092D5 +:1005D00036011092350110922D0110922E011092C9 +:1005E0002F011092300108951F920F920FB60F92B3 +:1005F00011242F933F938F939F93AF93BF93EF93C8 +:10060000FF93809132019091330120913401820F48 +:10061000911D9093330180933201E0913201F0916A +:100620003301349693E0F695E7959A95E1F7FF2725 +:10063000E7FDF095EF77F070E459FF4F308180913E +:100640003101882311F4E0E01EC0809135019091C2 +:10065000360120913101820F911D909336018093D4 +:100660003501E0913501F0913601349683E0F6953D +:10067000E7958A95E1F7FF27E7FDF095EF77F070B2 +:10068000E459FF4FE0813E0FE695E6953E1B39BDEC +:1006900080912D0190912E01A0912F01B0913001F8 +:1006A0000196A11DB11D80932D0190932E01A09361 +:1006B0002F01B0933001FF91EF91BF91AF919F91C6 +:1006C0008F913F912F910F900FBE0F901F90189513 +:1006D00010922D0110922E0110922F0110923001D4 +:1006E00025B7277E25BF6FE070E0CCD09C0140E0AD +:1006F00050E007C085B7806285BF889585B78F7D3C +:1007000085BF80912D0190912E01A0912F01B09174 +:100710003001281739074A075B0760F708950F93E0 +:100720001F931BBE8C3078F4E82FFF27E7FDF09570 +:10073000EE0FFF1FE451FF4F8081809334018181D0 +:100740008093310107C0863F69F482E480933401CD +:10075000109231018AB580688ABD8AB58F7B8ABDC7 +:10076000CB017FC0833F11F481E2F0CF853FE1F4FC +:1007700082E280933401109231018AB580688ABD8B +:100780008AB58F7B8ABDCB0163E070E08DD0162FD8 +:10079000072F862F972F9CDF8BE280933401812FC8 +:1007A000902F96DF83E359C0823FE1F485E5809383 +:1007B0003401109231018AB580688ABD8AB58F7B79 +:1007C0008ABDCB0166E070E06FD0162F072F862F11 +:1007D000972F7EDF82E680933401812F902F78DF80 +:1007E0008FE63BC0843FE1F483E3809334011092B1 +:1007F00031018AB580688ABD8AB58F7B8ABDCB01FD +:1008000063E070E051D0162F072F862F972F60DFFF +:100810008BE280933401812F902F5ADF82E21DC03A +:10082000813F01F58FE680933401109231018AB542 +:1008300080688ABD8AB58F7B8ABDCB0166E070E097 +:1008400033D0162F072F862F972F42DF82E6809313 +:100850003401812F902F3CDF85E580933401812F77 +:10086000902F36DF8AB58F778ABD8AB58F7B8ABD98 +:10087000C098109234011092310180E68BBF1F9115 +:100880000F9108955527002480FF02C0060E571FC0 +:10089000660F771F6115710521F096958795009772 +:1008A00099F7952F802D0895AA1BBB1B51E107C016 +:1008B000AA1FBB1FA617B70710F0A61BB70B881FF0 +:1008C000991F5A95A9F780959095BC01CD0108957F +:1008D000DC01CB01FC01E199FECF06C0FFBBEEBB02 +:1008E000E09A31960DB20D9241505040B8F70895FC +:1008F000E199FECF9FBB8EBBE09A99278DB30895F7 +:10090000DC01A40FB51F4150504040F0CB01840FD3 +:10091000951F2E9105D041505040D8F70895262FAD +:10092000E199FECF9FBB8EBBE09A01970DB20216F4 +:1009300039F01CBA2DBB0FB6F894E29AE19A0FBEBB +:100940000895262FE199FECF1CBA9FBB8EBB2DBB0D +:100950000FB6F894E29AE19A0FBE01960895F894C2 +:02096000FFCFC7 +:10096200010200FFFFFF010203040506404346495E +:100972004C4F5255585B5E606366686A6D6F717367 +:10098200757678797B7C7D7E7E7F7F7F7F7F7F7FA0 +:100992007E7E7D7C7B7978767573716F6D6A686611 +:1009A20063605E5B5855524F4C494643403C393672 +:1009B20033302D2A2724211F1C19171512100E0C53 +:1009C2000A090706040302010100000000000000FA +:1009D20001010203040607090A0C0E101215171969 +:1009E2001C1F2124272A2D303336393C573D4F2EE8 +:1009F200572E602E4F32573260324F385738603898 +:040A02004F3D603DC7 :00000001FF diff --git a/rotarydial_nz.hex b/rotarydial_nz.hex index dd464e2..2ea11eb 100644 --- a/rotarydial_nz.hex +++ b/rotarydial_nz.hex @@ -1,117 +1,163 @@ -:100000000EC07EC092C026C025C0C6C023C022C07C -:1000100021C020C01FC01EC08AC01CC01BC011242C +:100000000EC05DC073C026C025C0F1C223C022C08F +:1000100021C020C01FC01EC07DC01CC01BC0112439 :100020001FBECFE5D2E0DEBFCDBF11E0A0E6B0E05D -:10003000E2E8F6E002C005900D92A230B107D9F7D0 -:1000400021E0A2E0B1E001C01D92A233B207E1F7C6 -:10005000A0D115C36BC0A895F89414BE91B5986152 -:1000600091BD813031F0823031F082E481BD7894ED -:10007000089583E4FBCF87E4F9CFA895F89414BEE4 -:1000800081B5886181BD11BC7894089585B7877E5C -:10009000806185BFF89485B7806285BF85B7846825 -:1000A00085BF8B7F85BF7894889585B78F7D85BF09 -:1000B00008950F931F93CF93DF938C01062E000CAE -:1000C000770B85E0660F771F8A95E1F760507040E7 -:1000D00040E250E0C801A2D2E801005E1F4F8991C2 -:1000E0008C3030F464E670E0F6D084E690E0CDD059 -:1000F000C017D107A1F7DF91CF911F910F910895FC -:100100001F921FB61F9211248F93809104018111B9 -:1001100007C010920301809127018F5F8093270110 -:100120008F911F901FBE1F901895189518958F934B -:100130008FB78F93EF93FF93E2E0F1E081818460CA -:100140008183FF91EF918F918FBF8F9118958AB521 -:1001500080688ABD8AB58F7B8ABD089582E089BF99 -:1001600083E08ABD81E083BF12BE19BCB89A1092A9 -:100170002F0110922C0110922E0110922D0110923D -:100180003101109230011092280110922901109231 -:100190002A0110922B0108950F920FB60F921F9211 -:1001A00011242F933F934F935F938F939F93AF931C -:1001B000BF93EF93FF9380912F0120912D013091F8 -:1001C0002E01820F932F911D90932E0180932D016C -:1001D000E0912D01F0912E01349633E0F695E795EC -:1001E0003A95E1F7EF770E2E000CFF0BEE57FF4F1D -:1001F000808190912C01992309F445C020912C0114 -:100200004091300150913101240F352F311D309331 -:10021000310120933001E0913001F09131013496A9 -:1002200093E0F695E7959A95E1F7EF770E2E000C9F -:10023000FF0BEE57FF4F9081890F96959695891B7E -:1002400089BD8091280190912901A0912A01B09146 -:100250002B010196A11DB11D8093280190932901C6 -:10026000A0932A01B0932B01FF91EF91BF91AF9121 -:100270009F918F915F914F913F912F911F900F9080 -:100280000FBE0F90189590E0D7CF109228011092D2 -:10029000290110922A0110922B0125B7277E25BF34 -:1002A0006FE070E096D1B0E0A0E04091280150915D -:1002B000290160912A0170912B0184179507A607E7 -:1002C000B70708F4089525B7206225BF889525B79C -:1002D0002F7D25BFEACFCF93DF93EB011BBE8C3080 -:1002E000F0F4E82FEE0FFF0BE659FF4F808180936B -:1002F0002F01818180932C012ADFCE01C6DF8AB5D0 -:100300008F778ABD8AB58F7B8ABDC09810922F01E6 -:1003100010922C0180E68BBFDF91CF910895863F2C -:1003200031F482E480932F0110922C01E5CF833FBA -:1003300011F481E2F7CF853FB1F482E280932F017F -:1003400010922C0104DFCE0163E070E053D1EB0189 -:10035000CB019BDF8BE280932F01CE0196DF83E3FD -:1003600080932F01CACF843F51F683E380932F01FE -:1003700010922C01ECDECE0163E070E03BD1EB018A -:10038000CB0183DF8BE280932F01CE017EDF82E2FF -:10039000E7CF90E896BD16BC88B3866088BB8BE03B -:1003A00080BD98B983E085BF80E68BBF86E085BBC2 -:1003B000789481E050DE6ADE60DED0DE10920201C9 -:1003C00081E08093040110920301109206011092C3 -:1003D0000501E7E0F1E08FEF819391E0E732F90763 -:1003E000D9F7FF24F394D1E0CFEF1AE003E026B36E -:1003F000922F927021FB882780F9809304018F153A -:1004000009F4BEC0911122C08091030181608093E4 -:1004100003011092270180E01EDE38DEF090040117 -:100420008091030180FFB6C082E015DE2FDE80914F -:10043000030182FFDCCFD09302018A7F8260809328 -:10044000030168EC70E083EF46DFD1CF1092030127 -:10045000809127019FEF980F9A3018F0C0932701E1 -:10046000DACF912F981B9093270181E0F4DD0EDE07 -:1004700004DE8091020181111BC064E670E080916E -:10048000270129DF80910601803240F6E82FF0E055 -:10049000EE5FFE4F9091270195838F5F8093060159 -:1004A00040E250E060EE70E087E091E0C7D0B6CF68 -:1004B0008130F1F4E091270164E670E08AE0E130F8 -:1004C00029F0E23029F464E670E08BE004DFA6CF87 -:1004D00067E0E33049F00E2E000CFF0BE05AFF4FAF -:1004E0006081683008F09ACF87E091E0E2DD96CF36 -:1004F0008230D9F4E09127010E2E000CFF0BE05A58 -:10050000FF4F808187FD0EC0809305011092060188 -:10051000E7E0F1E0C19381E0E732F807D9F7009313 -:1005200002017CCF1092020179CF833009F076CF9F -:10053000809106018032B0F01092020160E273E017 -:1005400084EFC9DE60910501683008F067CF70E084 -:1005500085E0660F771F8A95E1F76050704040E2B2 -:1005600050E0A2CFE82FF0E0EE5FFE4F9091270120 -:1005700095838F5F8093060164E670E083EFE1CF9F -:10058000992309F44BCF1092020110920301C093FA -:10059000270144CF81FF11C082E05DDD77DD8091CE -:1005A000030182FF24CF92E090930201897F809320 -:1005B000030168EC70E085EF47CF85B7877E8061E7 -:1005C00085BF85B7806285BF889585B78F7D85BFDC -:1005D0000ECF0024552704C0080E591F880F991FFD -:1005E000009729F076956795B8F37105B9F7802DD6 -:1005F000952F0895AA1BBB1B51E107C0AA1FBB1F63 -:10060000A617B70710F0A61BB70B881F991F5A959E -:10061000A9F780959095BC01CD010895DC01CB012F -:10062000FC01E199FECF06C0FFBBEEBBE09A31961C -:100630000DB20D9241505040B8F70895DC01A40F5F -:10064000B51F4150504040F0CB01840F951F2E91B3 -:1006500005D041505040D8F70895262FE199FECF9C -:100660009FBB8EBBE09A01970DB2021639F01CBAFF -:100670002DBB0FB6F894E29AE19A0FBE0895F89454 -:02068000FFCFAA -:1006820000FFFFFF010203040506573D4F2E572EC0 -:10069200602E4F32573260324F38573860384F3DF4 -:1006A200603D404346494C4F5255585B5E6063661D -:1006B200686A6D6F7173757678797B7C7D7E7E7FDB -:1006C2007F7F7F7F7F7F7E7E7D7C7B79787675736F -:1006D200716F6D6A686663605E5B5855524F4C4934 -:1006E2004643403C393633302D2A2724211F1C191A -:1006F200171512100E0C0A09070604030201010065 -:1007020000000000000001010203040607090A0CB0 -:100712000E10121517191C1F2124272A2D303336CB -:02072200393C60 +:10003000E8E6F9E002C005900D92A430B107D9F7C7 +:1000400011E0A4E0B1E001C01D92A733B107E1F7D0 +:10005000B5D188C455C0982FA895F89414BE81B521 +:10006000886181BD923081F0933028F4992341F06A +:10007000913081F407C0933049F0943059F408C0AE +:1000800082E407C083E405C085E481BD86E401C045 +:1000900087E481BD7894089585B7877E806185BFA8 +:1000A000F89485B7806285BF85B7846885BF8B7FEC +:1000B00085BF7894889585B78F7D85BF08951F92F9 +:1000C0000F920FB60F9211248F938091080188230D +:1000D00039F41092070180912B018F5F80932B01DF +:1000E0008F910F900FBE0F901F9018951F920F9237 +:1000F0000FB60F9211240F900FBE0F901F901895FE +:100100001F920F920FB60F9211240F900FBE0F90F7 +:100110001F9018951F920F920FB60F9211248F9374 +:10012000809107018460809307018F910F900FBE2B +:100130000F901F9018950F931F93CF93DF938C010F +:10014000683050F5772767FD709585E0660F771F5B +:100150008A95E1F760507040C80140E250E0BBD39F +:10016000C0E0D0E0F801EC0FFD1FE081EC3080F43E +:100170008091610090E062E370E087D3BC018E2F34 +:10018000D1D28091610090E062E370E07ED3A3D28F +:100190002196C032D10531F7DF91CF911F910F9198 +:1001A00008950F931F93CF93DF93EC0188818823E9 +:1001B000C9F48091610090E062E370E066D3BC0115 +:1001C0008DA1B0D29C81903208F0F3C0FE01E90FFE +:1001D000F11D8DA185839F5F9C83CE01059660EE06 +:1001E00070E0E4C08130F9F4EDA1E13011F48AE06F +:1001F00003C0E23021F48BE08093040111C0E330AE +:1002000021F4CE01059667E00AC0FF27E7FDF095CF +:10021000EE59FF4F608167FD03C0CE0105968BDF6D +:1002200080912C011BC0823009F095C02DA1E22FD6 +:10023000FF27E7FDF095EE59FF4FE081E7FD10C085 +:10024000EB831C82FE0180E09FEF95838F5F3196E8 +:100250008032D9F7888180932C0183E08883A9C0FC +:10026000213009F051C09091050190FF24C0809188 +:1002700060008F5F80936000853018F401E010E02B +:1002800013C0209360009E7F9093050181EF60E290 +:1002900073E048D22FC083EF68EC70E043D288EC63 +:1002A00090E019D20F5F1F4F8091600090E080179F +:1002B00091078CF71FC091609093050101E010E059 +:1002C00013C00130110539F482EF60E273E02AD2E5 +:1002D00088EC90E000D283EF68EC70E023D288ECE9 +:1002E00090E0F9D10F5F1F4F8091600090E0801780 +:1002F00091073CF78FEF91E06091050125D38EEFD8 +:1003000091E06091600021C0223009F58091610088 +:100310008F5F80936100853018F081E080936100E9 +:1003200001E010E009C086EF68EC70E0FBD188ECDA +:1003300090E0D1D10F5F1F4F60916100862F90E058 +:100340008017910784F78DEF91E0FED2888180932A +:100350002C0118822EC0833061F59C81903238F0D8 +:1003600080932C01188284EF60E273E00FC0FE01DD +:10037000E90FF11D8DA185839F5F9C8380916100B2 +:1003800090E062E370E081D2BC0183EFCBD16B815E +:10039000683078F4772767FD709595E0660F771FD2 +:1003A0009A95E1F760507040CE01059640E250E02A +:1003B000AAD2DF91CF911F910F910895EF92FF92F2 +:1003C0000F931F9390E896BD16BC88B3866088BBD8 +:1003D0008BE080BD98B983E085BF80E68BBF86E067 +:1003E00085BB789481E037DE57DEA895F89414BE7B +:1003F00081B5886181BD11BC7894DBD01092060173 +:1004000081E0809308011092070110920A01109276 +:100410000901EBE0F1E08FEF819391E0EB32F90716 +:10042000D9F78FEF91E067D280930501823030F0E9 +:10043000109205018FEF91E060E086D28EEF91E09F +:100440005AD2809360008150843038F081E08093EC +:1004500060008EEF91E061E077D28DEF91E04BD2BA +:10046000809361008150843038F082E08093610095 +:100470008DEF91E062E068D28091050180FF0BC0B2 +:100480008091600090E068EE73E0FFD124D18BE0B2 +:1004900091E060E050DE11E04AE0E42E0FEF32E040 +:1004A000F32E86B390E0969587958170809308012E +:1004B000181759F1882341F48091070181608093D6 +:1004C000070110922B010AC01092070190912B0195 +:1004D000892F81508A3030F000932B0180E0BBDD02 +:1004E000DBDD1FC08E2D891B80932B0181E0B3DDE6 +:1004F000D3DDA895F89414BE81B5886181BD11BC87 +:10050000789486E091E04DDE0CC0112351F080918B +:10051000060180932C0110920601109207010093AE +:100520002B011091080180910401882339F08093F8 +:100530002B011092040186E091E033DE80910701E7 +:1005400080FF14C084E087DDA7DD9091070192FF52 +:10055000A8CF8091060180932C0181E08093060151 +:100560009A7F92609093070183EF13C081FF15C0BB +:1005700084E071DD91DD9091070192FF92CF80912F +:10058000060180932C01F0920601997F9093070158 +:1005900085EF68EC70E0C6D084CF85B7877E806138 +:1005A00085BF85B7806285BF889585B78F7D85BFFC +:1005B00078CF82E089BF83E08ABD81E083BF12BE2D +:1005C00019BCB89A10923401109231011092330183 +:1005D00010923201109236011092350110922D01C5 +:1005E00010922E0110922F011092300108951F9247 +:1005F0000F920FB60F9211242F933F938F939F93D7 +:10060000AF93BF93EF93FF938091320190913301A9 +:1006100020913401820F911D909333018093320118 +:10062000E0913201F0913301349693E0F695E7952D +:100630009A95E1F7FF27E7FDF095EF77F070E45921 +:10064000FF4F308180913101882311F4E0E01EC01A +:10065000809135019091360120913101820F911DD9 +:100660009093360180933501E0913501F091360188 +:10067000349683E0F695E7958A95E1F7FF27E7FD45 +:10068000F095EF77F070E459FF4FE0813E0FE6956B +:10069000E6953E1B39BD80912D0190912E01A091D0 +:1006A0002F01B09130010196A11DB11D80932D0144 +:1006B00090932E01A0932F01B0933001FF91EF9101 +:1006C000BF91AF919F918F913F912F910F900FBE4E +:1006D0000F901F90189510922D0110922E011092DC +:1006E0002F011092300125B7277E25BF6FE070E003 +:1006F000CCD09C0140E050E007C085B7806285BF48 +:10070000889585B78F7D85BF80912D0190912E01B1 +:10071000A0912F01B0913001281739074A075B07D4 +:1007200060F708950F931F931BBE8C3078F4E82F69 +:10073000FF27E7FDF095EE0FFF1FE451FF4F80818B +:100740008093340181818093310107C0863F69F431 +:1007500082E480933401109231018AB580688ABDA9 +:100760008AB58F7B8ABDCB017FC0833F11F481E2C4 +:10077000F0CF853FE1F482E28093340110923101A1 +:100780008AB580688ABD8AB58F7B8ABDCB0163E05C +:1007900070E08DD0162F072F862F972F9CDF8BE2CE +:1007A00080933401812F902F96DF83E359C0823FDD +:1007B000E1F485E580933401109231018AB58068B7 +:1007C0008ABD8AB58F7B8ABDCB0166E070E06FD0B1 +:1007D000162F072F862F972F7EDF82E68093340116 +:1007E000812F902F78DF8FE63BC0843FE1F483E3D5 +:1007F00080933401109231018AB580688ABD8AB530 +:100800008F7B8ABDCB0163E070E051D0162F072F9C +:10081000862F972F60DF8BE280933401812F902FFA +:100820005ADF82E21DC0813F01F58FE680933401DB +:10083000109231018AB580688ABD8AB58F7B8ABDE6 +:10084000CB0166E070E033D0162F072F862F972F4D +:1008500042DF82E680933401812F902F3CDF85E5D3 +:1008600080933401812F902F36DF8AB58F778ABD30 +:100870008AB58F7B8ABDC0981092340110923101E5 +:1008800080E68BBF1F910F9108955527002480FFAC +:1008900002C0060E571F660F771F6115710521F004 +:1008A00096958795009799F7952F802D0895AA1B07 +:1008B000BB1B51E107C0AA1FBB1FA617B70710F04B +:1008C000A61BB70B881F991F5A95A9F7809590957D +:1008D000BC01CD010895DC01CB01FC01E199FECF03 +:1008E00006C0FFBBEEBBE09A31960DB20D924150AF +:1008F0005040B8F70895E199FECF9FBB8EBBE09AB8 +:1009000099278DB30895DC01A40FB51F41505040C5 +:1009100040F0CB01840F951F2E9105D041505040DF +:10092000D8F70895262FE199FECF9FBB8EBBE09AA2 +:1009300001970DB2021639F01CBA2DBB0FB6F89410 +:10094000E29AE19A0FBE0895262FE199FECF1CBAD4 +:100950009FBB8EBB2DBB0FB6F894E29AE19A0FBEF7 +:0809600001960895F894FFCF01 +:10096800010200FFFFFF0102030405064043464958 +:100978004C4F5255585B5E606366686A6D6F717361 +:10098800757678797B7C7D7E7E7F7F7F7F7F7F7F9A +:100998007E7E7D7C7B7978767573716F6D6A68660B +:1009A80063605E5B5855524F4C494643403C39366C +:1009B80033302D2A2724211F1C19171512100E0C4D +:1009C8000A090706040302010100000000000000F4 +:1009D80001010203040607090A0C0E101215171963 +:1009E8001C1F2124272A2D303336393C573D4F2EE2 +:1009F800572E602E4F32573260324F385738603892 +:040A08004F3D603DC1 :00000001FF diff --git a/we500_schematic.jpg b/we500_schematic.jpg new file mode 100644 index 0000000..422866a Binary files /dev/null and b/we500_schematic.jpg differ