Word Clock
Pictures
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Video
Videos of some pattern tests of the word clock:
Source
Git repository of code and schematic: https://github.com/vsergeev/wclock
Description
My sister and I built our own clone of Doug’s Word Clock as a holiday gift for our parents. It was my sister’s idea, but we split the work between the frontend and the backend. My sister put her hard-earned biochem PhD student skills to use in the craftsmanship of the frontend (just kidding; honestly, this was arguably some of the most time-consuming and frustrating work in this project.) She constructed the clockface out of black foam, flat tissue paper, plastic grid, packing tape, hot glue, and a picture frame. This also involved meticulously exacto’ing out every letter from the foam with a stencil. It turned out pretty well, with only minor light bleeding between the letters in the assembled clock. She was also responsible for threading/connecting the LEDs and resistors in the plastic grid.
For the backend, I went with my own design based on an Atmel AVR ATtiny2313, Maxim DS1305 RTC, four STMicro STP08DP05 LED shift register drivers, and Cree C535A Cool White LEDs. The schematic, bill of materials, commented code, and a high-level description of the firmware are available below.
A Note about LEDs
The Cree LEDs I picked are very bright (more quantitatively, they’re rated 1400mcd typical at 20mA) compared to the average off-the-shelf 5mm LED. I chose to run them at half their standard current, 10mA instead of 20mA, which still produces light bright enough to saturate my camera with vertical white lines and, more importantly, to light up each letter in the clockface. We went for one LED per letter, but we put the LEDs in strings, varying from 2 to 4 LEDs per string, in order to share the 32 total pins available from the four LED drivers (8 per driver).
For those interested in using similar LED drivers, working out how many LEDs per string you can sustain, which is a function of the forward voltage and power supply voltage, was the main bit of calculation in this project and drove the choice of power supply. At 10mA, the LED forward voltage is about 3V, so we went with a 15V power supply to fit up to 4 LEDs per string with some headroom. This allowed us to share all 99 LEDs among the 32 available driver pins. Also, in the extreme case that all 32 LED strings are on, there is 32 * 15 volts * 10 milliamperes = 4.8 Watts of power dissipated, so a 15V,1A (15W) power supply is plenty.
You might notice some resistors in series with the LED strings in the schematic. These aren’t for current limiting – the current is set by the REXT pin of the LED drivers and the LED drivers act as a constant current sink. Instead, these resistors are there to absorb some of the left over voltage drop of the 15V power supply in the 2 to 4 LED string and LED driver voltage loop, so the LED drivers aren’t responsible for dissipating all of that voltage slack at 10mA as heat. In other words, the resistors take up some of the power dissipation burden, so that the LED drivers don’t have to.
Schematic
Download the EAGLE schematic here: wclock.sch
Bill of Materials
| Name | Digi-Key PN | Price x Qty |
|---|---|---|
| ATtiny2313 | ATTINY2313A-PU-ND | $2.58 x 1 |
| DS1305 | DS1305+-ND | $5.42 x 1 |
| 32.768kHz Crystal | 535-9032-ND | $0.25 x 1 |
| STP08DP05 LED Drivers | 497-6271-5-ND | $1.77 x 4 |
| 7805 Voltage Regulator | KA7805ETU-ND | $0.65 x 1 |
| Power Jack | CP-037A-ND | $0.91 x 1 |
| 15V 1A Power Supply | T992-P5P-ND | $10.80 x 1 |
| Cree C535A White LEDs | C535A-WJN-CS0V0151-ND | $0.19 x 99 |
| 220 ohm resistors | 30 | |
| 300 ohm resistors | 30 | |
| 2.2K ohm resistors | 4 | |
| 10K ohm resistors | 2 | |
| 10uF capacitors | 2 | |
| 0.1uF capacitors | 6 | |
| Total | ~$50.00 |
Code
I chose to write the firmware in AVR assembly for kicks (it was winter break after all). The microcontroller is asleep for most of the time, waking up only for interrupt 0, which is driven by the DS1305 RTC every minute, or for interrupt 1, which is triggered by a push button to reset the time to 12:00:00am (this is the time setting mechanism of the clock). The interrupt 0 handler reads the current time from the DS1305, rounds it down to 5 minutes intervals, does some math to index into an LED configuration table in flash, fetches the 32-bit LED configuration, and clocks it out to the four LED shift register drivers.
A small python script, gen_wclock_table.py, generates the LED configuration table based on the the LED string bit positions (arbitrarily) assigned across the four LED shift register drivers.
The firmware code is available in the git repository here: main.S, and is reproduced below. The entire firmware comes out to 1020 bytes, of which 576 bytes is the LED configuration table.
; Word Clock ; Idea from Doug's Word Clock - http://www.dougswordclock.com/ ; ; Hardware: ATTiny2313 + DS1305 RTC + 4x STP08DP05 LED Driver ; Vanya A. Sergeev - vsergeev at gmail dot com ; #define __AVR_ATtiny2313A__ #include <avr/io.h> ; I/O Definitions for LED Driver and RTC #define LED_PORT 0x018 #define LED_DDR 0x017 #define LED_LE 0 #define LED_CLK 1 #define LED_SDI 2 #define RTC_PORT 0x012 #define RTC_DDR 0x011 #define RTC_CE 6 #define RTC_INT 2 #define RTC_SW_INT 3 #define RTC_SPI_PORT 0x018 #define RTC_SPI_DDR 0x017 #define RTC_SPI_CLK 7 #define RTC_SPI_DO 6 #define RTC_SPI_DI 5 #define IO_USICR 0x00D #define IO_USISR 0x00E #define IO_USIDR 0x00F ;;; Vector table .org 0x0000 vectors: rjmp reset rjmp int0_isr rjmp int1_isr rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset ;;; Interrupt 0 Handler, driven by DS1305 RTC every minute. int0_isr: ; Acknowledge the interrupt by reading an alarm 0 register ldi r16, 0x0A rcall ds1305_reg_read ; Read in the current minute ldi r16, 0x01 rcall ds1305_reg_read ; Convert from BCD to binary, save in r17 andi r16, 0x7F rcall bcd_to_bin mov r17, r16 ; Read in the current hour ldi r16, 0x02 rcall ds1305_reg_read ; Convert from BCD to binary, save in r18 andi r16, 0x1F rcall bcd_to_bin mov r18, r16 ; Decrement hours by 1, to have an index 0-11 dec r18 ; Round minute down to five minutes, save in r19 clr r19 cpi r17, 5 brlo .convert_five_done .convert_five_loop: inc r19 subi r17, 5 cpi r17, 5 brsh .convert_five_loop .convert_five_done: ; Compute the address into the LED time table ; Initialize ZH:ZL = address of LED time table ldi r31, hi8(led_time_table) ldi r30, lo8(led_time_table) ; Table Offset = ((Hours * 12) + (Five Minutes)) << 2 ; Convert hour to a hour table offset (soft multiply r18 by 12) ; Clear destination r29:r28 clr r29 clr r28 ; Clear r16 and add r18, to set Z flag clr r16 add r16, r18 .multiply_by_12: breq .multiply_by_12_done adiw r28, 12 dec r16 rjmp .multiply_by_12 .multiply_by_12_done: ; Add minutes to get a hour-five minutes table offset clr r16 add r28, r19 adc r29, r16 ; Left shift twice to get a hour-five minutes-four byte table offset lsl r29 lsl r28 adc r29, r16 lsl r29 lsl r28 adc r29, r16 ; Add the table offset to our Z pointer add r30, r28 adc r31, r16 add r31, r29 ; Read the LED configuration from the table and update LEDs lpm r16, Z+ lpm r17, Z+ lpm r18, Z+ lpm r19, Z+ rcall led_update reti ;;; Interrupt 1 Handler, driven by time reset push button. int1_isr: ; Re-initialize the DS1305 RTC, resetting the time to 12am rcall ds1305_init ; Delay for debouncing rcall longdelay ; Update the display and reti rjmp int0_isr ;;; Reset Handler reset: ; Set up stack pointer ldi r16, lo8(RAMEND) out 0x3D, r16 ; Initialize GPIO DDR for LED Drivers sbi LED_DDR, LED_CLK sbi LED_DDR, LED_SDI sbi LED_DDR, LED_LE ; Initialize GPIO DDR for DS1305 RTC sbi RTC_DDR, RTC_CE cbi RTC_DDR, RTC_INT cbi RTC_DDR, RTC_SW_INT ; Enable internal pull-up for time reset pull-down switch sbi RTC_PORT, RTC_SW_INT ; Set up interrupts ; Set interrupt 0 as falling-edge, interrupt 1 as falling-edge, set ; sleep mode to idle, set sleep enable ldi r16, (1<<SE)|(1<<ISC01)|(1<<ISC11) sts MCUCR, r16 ; Enable interrupt 0 and interrupt 1 in general interrupt mask ldi r16, (1<<INT0)|(1<<INT1) sts GIMSK, r16 ; Disable analog comparator for power savings ldi r16, 0x80 sts ACSR, r16 ; Clear the LED driver port clr r16 out LED_PORT, r16 ; Initialize SPI IO for DS1305 RTC sbi RTC_SPI_DDR, RTC_SPI_CLK sbi RTC_SPI_DDR, RTC_SPI_DO cbi RTC_SPI_DDR, RTC_SPI_DI ;;; Wait to make sure everything else has powered up... ; The switching power supply I'm using has a slow start-up, and the AVR ; turns on before some of the other ICs... A reset supervisor might be ; more appropriate here. ; Delay for ~8s rcall longdelay rcall longdelay rcall longdelay rcall longdelay rcall longdelay ; Initialize LED state to off clr r16 clr r17 clr r18 clr r19 rcall led_update ; Initialize the DS1305 RTC rcall ds1305_init ; Setup the initial time LED state rcall int0_isr ; Enable interrupts sei ; Sleep sleep_loop: sleep rjmp sleep_loop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; DS1305 RTC Driver ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Initialize the DS1305 RTC ds1305_init: ; Enable oscillator and disable write protect ; Control register = 0x00 ldi r16, 0x8F ldi r17, 0x00 rcall ds1305_reg_write ; Set time to 12:00:00 am ; Hours = 12 am ldi r16, 0x82 ldi r17, 0b01010010 rcall ds1305_reg_write ; Minutes = 00 ldi r16, 0x81 ldi r17, 0x00 rcall ds1305_reg_write ; Seconds = 00 ldi r16, 0x80 ldi r17, 0x00 rcall ds1305_reg_write ; Set up alarm 0 for every minute ; Days = 0x80 ldi r16, 0x8A ldi r17, 0x80 rcall ds1305_reg_write ; Hours = 0x80 ldi r16, 0x89 ldi r17, 0x80 rcall ds1305_reg_write ; Minutes = 0x80 ldi r16, 0x88 ldi r17, 0x80 rcall ds1305_reg_write ; Seconds = 0x00 ldi r16, 0x87 ldi r17, 0x00 rcall ds1305_reg_write ; Enable the Alarm 0 interrupt ; Control register = (1<<INTCN)|(1<<AIE0) ldi r16, 0x8F ldi r17, 0b00000101 rcall ds1305_reg_write ret ;;; Read a DS1305 Register ;;; Address passed in r16, ;;; Data returned in r16. ds1305_reg_read: ; Chip select sbi RTC_PORT, RTC_CE ; Transmit address rcall spi_transfer ; Transmit dummy, read data into r16 ldi r16, 0xFF rcall spi_transfer ; Chip deselect cbi RTC_PORT, RTC_CE ret ;;; Write an DS1305 Register ;;; Address passed in r16, Data passed in r17 ds1305_reg_write: ; Chip select sbi RTC_PORT, RTC_CE ; Transmit address rcall spi_transfer ; Transmit data mov r16, r17 rcall spi_transfer ; Chip deselect cbi RTC_PORT, RTC_CE ret ;;; Shift out and in 8-bits through USI ;;; Data to shift out passed in r16, ;;; Data shifted in returned in r16. spi_transfer: ; Load the data into USI shift register out IO_USIDR, r16 ; Clear the current USI overflow status and counter ldi r16, (1<<USIOIF) out IO_USISR, r16 ; Select 3-wire mode, software clock, toggle clock ldi r16, 0b00011011 ; Wait for 8-bits to shift .clocking_wait: ; Toggle the clock, shifting a bit and incrementing the counter out IO_USICR, r16 nop nop nop nop ; Check if 8-bits have been shifted sbis IO_USISR, USIOIF rjmp .clocking_wait ; Copy the data shifted in to r16 in r16, IO_USIDR ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; LED Driver STP08DP05 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Update LED Driver Shift Registers ;;; Four bytes passed in r16, r17, r18, r19. led_update: ; Save r0 and r1 used by led_shift push r0 push r1 ; Shift out all four bytes rcall led_shift mov r16, r17 rcall led_shift mov r16, r18 rcall led_shift mov r16, r19 rcall led_shift ; Strobe LE sbi LED_PORT, LED_LE nop cbi LED_PORT, LED_LE ; Restore r0 and r1 pop r1 pop r0 ret ; Helper function for led_update to shift out a byte and strobe CLK ; Byte to be shifted passed in r16. ; r0 and r1 are clobbered. led_shift: ; Save data in r0 mov r0, r16 ; Initialize bit counter in r1 ldi r16, 0x08 mov r1, r16 .led_bit_loop: ; Shift next bit into carry lsl r0 ; Branch set up SDI accordingly brcc .led_bit_set0 ; Set SDI high .led_bit_set1: sbi LED_PORT, LED_SDI rjmp .led_clk_strobe ; Set SDI low .led_bit_set0: cbi LED_PORT, LED_SDI ; Strobe CLK .led_clk_strobe: sbi LED_PORT, LED_CLK cbi LED_PORT, LED_CLK dec r1 brne .led_bit_loop ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; Misc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Convert two-digit BCD number to binary ;;; BCD number passed in r16. ;;; Binary number returned in r16. bcd_to_bin: push r17 push r18 ; Save lower BCD digit in r17 mov r17, r16 andi r17, 0x0F ; Leave upper BCD digit in r16 lsr r16 lsr r16 lsr r16 lsr r16 breq .add_ten_done ; Loop adding 10 to the lower digit ldi r18, 10 .add_ten: add r17, r18 dec r16 brne .add_ten ; Move the converted BCD number back to r16 .add_ten_done: mov r16, r17 pop r18 pop r17 ret ; Long software delay longdelay: push r20 push r21 push r22 ldi r20, 0xff .loop0: ldi r21, 0xff .loop1: ldi r22, 0x05 .loop2: dec r22 brne .loop2 dec r21 brne .loop1 dec r20 brne .loop0 pop r22 pop r21 pop r20 ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; LED Time Table ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Generated with gen_wclock_table.py led_time_table: .word 0x00C0, 0x0120 ; 01:00:00 Offset: 0 .word 0x00C0, 0x412B ; 01:05:00 Offset: 4 .word 0x00C0, 0x092B ; 01:10:00 Offset: 8 .word 0x00C0, 0x0728 ; 01:15:00 Offset: 12 .word 0x00C0, 0x312B ; 01:20:00 Offset: 16 .word 0x00C0, 0x712B ; 01:25:00 Offset: 20 .word 0x00C0, 0x012C ; 01:30:00 Offset: 24 .word 0x00C0, 0x7153 ; 01:35:00 Offset: 28 .word 0x00C0, 0x3153 ; 01:40:00 Offset: 32 .word 0x00C0, 0x0750 ; 01:45:00 Offset: 36 .word 0x00C0, 0x0953 ; 01:50:00 Offset: 40 .word 0x00C0, 0x4153 ; 01:55:00 Offset: 44 .word 0x00C0, 0x0140 ; 02:00:00 Offset: 48 .word 0x00C0, 0x414B ; 02:05:00 Offset: 52 .word 0x00C0, 0x094B ; 02:10:00 Offset: 56 .word 0x00C0, 0x0748 ; 02:15:00 Offset: 60 .word 0x00C0, 0x314B ; 02:20:00 Offset: 64 .word 0x00C0, 0x714B ; 02:25:00 Offset: 68 .word 0x00C0, 0x014C ; 02:30:00 Offset: 72 .word 0x01C0, 0x7193 ; 02:35:00 Offset: 76 .word 0x01C0, 0x3193 ; 02:40:00 Offset: 80 .word 0x01C0, 0x0790 ; 02:45:00 Offset: 84 .word 0x01C0, 0x0993 ; 02:50:00 Offset: 88 .word 0x01C0, 0x4193 ; 02:55:00 Offset: 92 .word 0x01C0, 0x0180 ; 03:00:00 Offset: 96 .word 0x01C0, 0x418B ; 03:05:00 Offset: 100 .word 0x01C0, 0x098B ; 03:10:00 Offset: 104 .word 0x01C0, 0x0788 ; 03:15:00 Offset: 108 .word 0x01C0, 0x318B ; 03:20:00 Offset: 112 .word 0x01C0, 0x718B ; 03:25:00 Offset: 116 .word 0x01C0, 0x018C ; 03:30:00 Offset: 120 .word 0x04C0, 0x7113 ; 03:35:00 Offset: 124 .word 0x04C0, 0x3113 ; 03:40:00 Offset: 128 .word 0x04C0, 0x0710 ; 03:45:00 Offset: 132 .word 0x04C0, 0x0913 ; 03:50:00 Offset: 136 .word 0x04C0, 0x4113 ; 03:55:00 Offset: 140 .word 0x04C0, 0x0100 ; 04:00:00 Offset: 144 .word 0x04C0, 0x410B ; 04:05:00 Offset: 148 .word 0x04C0, 0x090B ; 04:10:00 Offset: 152 .word 0x04C0, 0x0708 ; 04:15:00 Offset: 156 .word 0x04C0, 0x310B ; 04:20:00 Offset: 160 .word 0x04C0, 0x710B ; 04:25:00 Offset: 164 .word 0x04C0, 0x010C ; 04:30:00 Offset: 168 .word 0x02C0, 0x7113 ; 04:35:00 Offset: 172 .word 0x02C0, 0x3113 ; 04:40:00 Offset: 176 .word 0x02C0, 0x0710 ; 04:45:00 Offset: 180 .word 0x02C0, 0x0913 ; 04:50:00 Offset: 184 .word 0x02C0, 0x4113 ; 04:55:00 Offset: 188 .word 0x02C0, 0x0100 ; 05:00:00 Offset: 192 .word 0x02C0, 0x410B ; 05:05:00 Offset: 196 .word 0x02C0, 0x090B ; 05:10:00 Offset: 200 .word 0x02C0, 0x0708 ; 05:15:00 Offset: 204 .word 0x02C0, 0x310B ; 05:20:00 Offset: 208 .word 0x02C0, 0x710B ; 05:25:00 Offset: 212 .word 0x02C0, 0x010C ; 05:30:00 Offset: 216 .word 0x08C0, 0x7113 ; 05:35:00 Offset: 220 .word 0x08C0, 0x3113 ; 05:40:00 Offset: 224 .word 0x08C0, 0x0710 ; 05:45:00 Offset: 228 .word 0x08C0, 0x0913 ; 05:50:00 Offset: 232 .word 0x08C0, 0x4113 ; 05:55:00 Offset: 236 .word 0x08C0, 0x0100 ; 06:00:00 Offset: 240 .word 0x08C0, 0x410B ; 06:05:00 Offset: 244 .word 0x08C0, 0x090B ; 06:10:00 Offset: 248 .word 0x08C0, 0x0708 ; 06:15:00 Offset: 252 .word 0x08C0, 0x310B ; 06:20:00 Offset: 256 .word 0x08C0, 0x710B ; 06:25:00 Offset: 260 .word 0x08C0, 0x010C ; 06:30:00 Offset: 264 .word 0x30C0, 0x7113 ; 06:35:00 Offset: 268 .word 0x30C0, 0x3113 ; 06:40:00 Offset: 272 .word 0x30C0, 0x0710 ; 06:45:00 Offset: 276 .word 0x30C0, 0x0913 ; 06:50:00 Offset: 280 .word 0x30C0, 0x4113 ; 06:55:00 Offset: 284 .word 0x30C0, 0x0100 ; 07:00:00 Offset: 288 .word 0x30C0, 0x410B ; 07:05:00 Offset: 292 .word 0x30C0, 0x090B ; 07:10:00 Offset: 296 .word 0x30C0, 0x0708 ; 07:15:00 Offset: 300 .word 0x30C0, 0x310B ; 07:20:00 Offset: 304 .word 0x30C0, 0x710B ; 07:25:00 Offset: 308 .word 0x30C0, 0x010C ; 07:30:00 Offset: 312 .word 0xC0C0, 0x7113 ; 07:35:00 Offset: 316 .word 0xC0C0, 0x3113 ; 07:40:00 Offset: 320 .word 0xC0C0, 0x0710 ; 07:45:00 Offset: 324 .word 0xC0C0, 0x0913 ; 07:50:00 Offset: 328 .word 0xC0C0, 0x4113 ; 07:55:00 Offset: 332 .word 0xC0C0, 0x0100 ; 08:00:00 Offset: 336 .word 0xC0C0, 0x410B ; 08:05:00 Offset: 340 .word 0xC0C0, 0x090B ; 08:10:00 Offset: 344 .word 0xC0C0, 0x0708 ; 08:15:00 Offset: 348 .word 0xC0C0, 0x310B ; 08:20:00 Offset: 352 .word 0xC0C0, 0x710B ; 08:25:00 Offset: 356 .word 0xC0C0, 0x010C ; 08:30:00 Offset: 360 .word 0x00C1, 0x7113 ; 08:35:00 Offset: 364 .word 0x00C1, 0x3113 ; 08:40:00 Offset: 368 .word 0x00C1, 0x0710 ; 08:45:00 Offset: 372 .word 0x00C1, 0x0913 ; 08:50:00 Offset: 376 .word 0x00C1, 0x4113 ; 08:55:00 Offset: 380 .word 0x00C1, 0x0100 ; 09:00:00 Offset: 384 .word 0x00C1, 0x410B ; 09:05:00 Offset: 388 .word 0x00C1, 0x090B ; 09:10:00 Offset: 392 .word 0x00C1, 0x0708 ; 09:15:00 Offset: 396 .word 0x00C1, 0x310B ; 09:20:00 Offset: 400 .word 0x00C1, 0x710B ; 09:25:00 Offset: 404 .word 0x00C1, 0x010C ; 09:30:00 Offset: 408 .word 0x00C2, 0x7113 ; 09:35:00 Offset: 412 .word 0x00C2, 0x3113 ; 09:40:00 Offset: 416 .word 0x00C2, 0x0710 ; 09:45:00 Offset: 420 .word 0x00C2, 0x0913 ; 09:50:00 Offset: 424 .word 0x00C2, 0x4113 ; 09:55:00 Offset: 428 .word 0x00C2, 0x0100 ; 10:00:00 Offset: 432 .word 0x00C2, 0x410B ; 10:05:00 Offset: 436 .word 0x00C2, 0x090B ; 10:10:00 Offset: 440 .word 0x00C2, 0x0708 ; 10:15:00 Offset: 444 .word 0x00C2, 0x310B ; 10:20:00 Offset: 448 .word 0x00C2, 0x710B ; 10:25:00 Offset: 452 .word 0x00C2, 0x010C ; 10:30:00 Offset: 456 .word 0x00CC, 0x7113 ; 10:35:00 Offset: 460 .word 0x00CC, 0x3113 ; 10:40:00 Offset: 464 .word 0x00CC, 0x0710 ; 10:45:00 Offset: 468 .word 0x00CC, 0x0913 ; 10:50:00 Offset: 472 .word 0x00CC, 0x4113 ; 10:55:00 Offset: 476 .word 0x00CC, 0x0100 ; 11:00:00 Offset: 480 .word 0x00CC, 0x410B ; 11:05:00 Offset: 484 .word 0x00CC, 0x090B ; 11:10:00 Offset: 488 .word 0x00CC, 0x0708 ; 11:15:00 Offset: 492 .word 0x00CC, 0x310B ; 11:20:00 Offset: 496 .word 0x00CC, 0x710B ; 11:25:00 Offset: 500 .word 0x00CC, 0x010C ; 11:30:00 Offset: 504 .word 0x00F0, 0x7113 ; 11:35:00 Offset: 508 .word 0x00F0, 0x3113 ; 11:40:00 Offset: 512 .word 0x00F0, 0x0710 ; 11:45:00 Offset: 516 .word 0x00F0, 0x0913 ; 11:50:00 Offset: 520 .word 0x00F0, 0x4113 ; 11:55:00 Offset: 524 .word 0x00F0, 0x0100 ; 12:00:00 Offset: 528 .word 0x00F0, 0x410B ; 12:05:00 Offset: 532 .word 0x00F0, 0x090B ; 12:10:00 Offset: 536 .word 0x00F0, 0x0708 ; 12:15:00 Offset: 540 .word 0x00F0, 0x310B ; 12:20:00 Offset: 544 .word 0x00F0, 0x710B ; 12:25:00 Offset: 548 .word 0x00F0, 0x010C ; 12:30:00 Offset: 552 .word 0x00C0, 0x7133 ; 12:35:00 Offset: 556 .word 0x00C0, 0x3133 ; 12:40:00 Offset: 560 .word 0x00C0, 0x0730 ; 12:45:00 Offset: 564 .word 0x00C0, 0x0933 ; 12:50:00 Offset: 568 .word 0x00C0, 0x4133 ; 12:55:00 Offset: 572
Comments
comments powered by Disqus















